Browse Source

重点场所巡查列表导出

master
yinzuomei 3 years ago
parent
commit
35589acd82
  1. 64
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/EnterprisePageFormDTO.java
  2. 9
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/EnterpriseDetailDTO.java
  3. 96
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcEnterpriseController.java
  4. 17
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcEnterpriseDao.java
  5. 7
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/IcEnterpriseEntity.java
  6. 94
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/EnterpriseExportExcelDTO.java
  7. 14
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcEnterpriseService.java
  8. 61
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcEnterpriseServiceImpl.java
  9. 57
      epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcEnterpriseDao.xml
  10. 11
      epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcEnterprisePatrolAttachmentDao.xml

64
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/EnterprisePageFormDTO.java

@ -0,0 +1,64 @@
package com.epmet.dto.form;
import lombok.Data;
import java.io.Serializable;
/**
* 企事业单位
*/
@Data
public class EnterprisePageFormDTO implements Serializable {
/**
* 场所区域
*/
private String gridId;
/**
* 场所类型
*/
private String placeType;
/**
* 场所名称
*/
private String placeOrgName;
/**
* 规模
*/
private String scale;
/**
* 联系电话
*/
private String mobile;
/**
* 巡查结果0:合格 1:不合格
*/
private String result;
/**
* 隐患明细
*/
private String detailed;
private Integer pageNo = 1;
private Integer pageSize = 20;
/**
* 列表查询默认分页
* 导出不分页
*/
private Boolean pageFlag;
//tokenDto.customerId
private String customerId;
//tokenDto.userId
private String currentStaffId;
/**
* 当前登录用户的所属组织id
*/
private String staffAgencyId;
}

9
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/EnterpriseDetailDTO.java

@ -1,15 +1,19 @@
package com.epmet.dto.result;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 场所详情
*/
@Data
public class EnterpriseDetailDTO implements Serializable {
private String enterpriseId;
/**
* 网格Id场所区域
*/
@ -95,4 +99,9 @@ public class EnterpriseDetailDTO implements Serializable {
*/
private String latestResult;
/**
* 最新检查时间
*/
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date latestPatrolTime;
}

96
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcEnterpriseController.java

@ -1,15 +1,30 @@
package com.epmet.controller;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.fastjson.JSON;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.commons.tools.utils.ExcelUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.utils.poi.excel.handler.FreezeAndFilter;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dto.form.EnterpriseFormDTO;
import com.epmet.dto.form.EnterprisePageFormDTO;
import com.epmet.dto.form.EnterprisePatrolFormDTO;
import com.epmet.dto.result.EnterpriseDetailDTO;
import com.epmet.dto.result.EnterprisePatrolResultDTO;
import com.epmet.excel.EnterpriseExportExcelDTO;
import com.epmet.service.IcEnterpriseService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.io.IOUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
@ -19,8 +34,11 @@ import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.net.URLEncoder;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -30,6 +48,7 @@ import java.util.Map;
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-06-17
*/
@Slf4j
@RestController
@RequestMapping("enterprise")
public class IcEnterpriseController {
@ -53,6 +72,67 @@ public class IcEnterpriseController {
return new Result().ok(map);
}
/**
* 企事业单位列表查询
* @param tokenDto
* @param formDTO
* @return
*/
@PostMapping("list")
public Result<PageData<EnterpriseDetailDTO>> list(@LoginUser TokenDto tokenDto, @RequestBody EnterprisePageFormDTO formDTO){
formDTO.setCustomerId(tokenDto.getCustomerId());
formDTO.setCurrentStaffId(tokenDto.getUserId());
formDTO.setPageFlag(true);
return new Result<PageData<EnterpriseDetailDTO>>().ok(icEnterpriseService.list(formDTO));
}
/**
* 企事业单位列表导出
* @param tokenDto
* @param formDTO
* @param response
* @return
* @throws IOException
*/
@PostMapping("export")
public void exportEnterprise(@LoginUser TokenDto tokenDto, @RequestBody EnterprisePageFormDTO formDTO, HttpServletResponse response) throws IOException {
formDTO.setCustomerId(tokenDto.getCustomerId());
formDTO.setCurrentStaffId(tokenDto.getUserId());
formDTO.setPageFlag(false);
ExcelWriter excelWriter = null;
formDTO.setPageNo(NumConstant.ONE);
formDTO.setPageSize(NumConstant.TEN_THOUSAND);
try {
String fileName = "企事业单位" + DateUtils.format(new Date()) + ".xlsx";
excelWriter = EasyExcel.write(ExcelUtils.getOutputStreamForExcel(fileName, response), EnterpriseExportExcelDTO.class).build();
WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").registerWriteHandler(new FreezeAndFilter()).build();
PageData<EnterpriseDetailDTO> data = null;
List<EnterpriseExportExcelDTO> list = null;
do {
data = icEnterpriseService.list(formDTO);
list = ConvertUtils.sourceToTarget(data.getList(), EnterpriseExportExcelDTO.class);
formDTO.setPageNo(formDTO.getPageNo() + NumConstant.ONE);
excelWriter.write(list, writeSheet);
} while (CollectionUtils.isNotEmpty(list) && list.size() == formDTO.getPageSize());
} catch (EpmetException e) {
response.reset();
response.setCharacterEncoding("UTF-8");
response.setHeader("content-type", "application/json; charset=UTF-8");
PrintWriter printWriter = response.getWriter();
Result<Object> result = new Result<>().error(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), e.getMsg());
printWriter.write(JSON.toJSONString(result));
printWriter.close();
} catch (Exception e) {
log.error("企事业单位导出异常export exception", e);
} finally {
if (excelWriter != null) {
excelWriter.finish();
}
}
}
/**
* 场所详情
*
@ -65,10 +145,20 @@ public class IcEnterpriseController {
return new Result<EnterpriseDetailDTO>().ok(icEnterpriseService.queryEnterpriseDetail(tokenDto.getCustomerId(), enterpriseId));
}
/**
* 下载社区自组织导入模板
* 企事业单位-删除场所
*
* @param enterpriseId
* @return
*/
@PostMapping("delete/{enterpriseId}")
public Result delete(@PathVariable("enterpriseId") String enterpriseId) {
icEnterpriseService.delete(enterpriseId);
return new Result();
}
/**
* 企事业单位导入模板
* @param response
* @throws IOException
*/
@ -80,7 +170,7 @@ public class IcEnterpriseController {
response.setHeader(HttpHeaders.CONTENT_TYPE, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + URLEncoder.encode("企事业单位导入模板", "UTF-8") + ".xlsx");
InputStream is = this.getClass().getClassLoader().getResourceAsStream("templates/enterprise_patrol.xlsx");
InputStream is = this.getClass().getClassLoader().getResourceAsStream("excel/enterprise_patrol_import_tem.xlsx");
try {
ServletOutputStream os = response.getOutputStream();
IOUtils.copy(is, os);

17
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcEnterpriseDao.java

@ -1,8 +1,14 @@
package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.form.EnterprisePageFormDTO;
import com.epmet.dto.result.EnterpriseDetailDTO;
import com.epmet.entity.IcEnterpriseEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
import java.util.List;
/**
* 企事业单位表
@ -13,4 +19,15 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface IcEnterpriseDao extends BaseDao<IcEnterpriseEntity> {
int updateLatestPatrol(@Param("enterpriseId") String enterpriseId,
@Param("updatedTime")Date updatedTime,
@Param("result")String result,
@Param("userId")String userId);
/**
* 企事业单位列表
* @param formDTO
* @return
*/
List<EnterpriseDetailDTO> selectList(EnterprisePageFormDTO formDTO);
}

7
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/IcEnterpriseEntity.java

@ -5,6 +5,8 @@ import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
/**
* 企事业单位表
*
@ -92,4 +94,9 @@ public class IcEnterpriseEntity extends BaseEpmetEntity {
* 最新巡查结果0:合格 1:不合格
*/
private String latestResult;
/**
* 最新检查时间
*/
private Date latestPatrolTime;
}

94
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/EnterpriseExportExcelDTO.java

@ -0,0 +1,94 @@
package com.epmet.excel;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import lombok.Data;
/**
* 企事业单位导出excel
*/
@Data
public class EnterpriseExportExcelDTO {
/**
* 场所类型来源于ic_coverage_category_dict
*/
@ExcelIgnore
private String placeType;
/**
* 场所类型名称
*/
@ExcelProperty(value = "场所类型")
@ColumnWidth(25)
private String placeTypeName;
/**
* 网格所属的组织Id
*/
@ExcelIgnore
private String agencyId;
@ExcelProperty(value = "所属组织")
@ColumnWidth(25)
private String agencyName;
/**
* 网格Id场所区域
*/
@ExcelIgnore
private String gridId;
@ExcelProperty(value = "场所区域")
@ColumnWidth(25)
private String gridName;
/**
* 场所名称
*/
@ExcelProperty(value = "场所名称")
@ColumnWidth(25)
private String placeOrgName;
/**
* 场所地址
*/
@ExcelProperty(value = "场所地址")
@ColumnWidth(30)
private String address;
/**
* 字典value,场所规模
* 0:10人以下
* 1:10-20人
* 2:21-40人
* 3:41-100人
* 4:100人以上
*/
@ExcelIgnore
private String scale;
/**
* 规模名称
*/
@ExcelProperty(value = "规模")
@ColumnWidth(15)
private String scaleName;
/**
* 场所负责人
*/
@ExcelProperty(value = "负责人")
@ColumnWidth(20)
private String personInCharge;
/**
* 负责人电话
*/
@ExcelProperty(value = "联系电话")
@ColumnWidth(20)
private String mobile;
}

14
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcEnterpriseService.java

@ -3,6 +3,7 @@ package com.epmet.service;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData;
import com.epmet.dto.form.EnterpriseFormDTO;
import com.epmet.dto.form.EnterprisePageFormDTO;
import com.epmet.dto.form.EnterprisePatrolFormDTO;
import com.epmet.dto.result.EnterpriseDetailDTO;
import com.epmet.dto.result.EnterprisePatrolResultDTO;
@ -50,4 +51,17 @@ public interface IcEnterpriseService extends BaseService<IcEnterpriseEntity> {
*/
EnterpriseDetailDTO queryEnterpriseDetail(String customerId, String enterpriseId);
/**
* 企事业单位-删除
* @param enterpriseId
* @return
*/
void delete(String enterpriseId);
/**
* 企事业单位列表
* @param formDTO
* @return
*/
PageData<EnterpriseDetailDTO> list(EnterprisePageFormDTO formDTO);
}

61
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcEnterpriseServiceImpl.java

@ -3,6 +3,7 @@ package com.epmet.service.impl;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult;
import com.epmet.commons.tools.enums.CommonOperateTypeEnum;
import com.epmet.commons.tools.enums.CoveragePlaceTypeEnum;
import com.epmet.commons.tools.enums.DictTypeEnum;
@ -10,6 +11,7 @@ import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.redis.common.CustomerOrgRedis;
import com.epmet.commons.tools.redis.common.CustomerStaffRedis;
import com.epmet.commons.tools.redis.common.bean.AgencyInfoCache;
import com.epmet.commons.tools.redis.common.bean.GridInfoCache;
import com.epmet.commons.tools.utils.ConvertUtils;
@ -19,6 +21,7 @@ import com.epmet.dao.IcEnterpriseDao;
import com.epmet.dao.IcEnterprisePatrolAttachmentDao;
import com.epmet.dao.IcEnterprisePatrolRecordDao;
import com.epmet.dto.form.EnterpriseFormDTO;
import com.epmet.dto.form.EnterprisePageFormDTO;
import com.epmet.dto.form.EnterprisePatrolFormDTO;
import com.epmet.dto.result.EnterpriseDetailDTO;
import com.epmet.dto.result.EnterprisePatrolResultDTO;
@ -27,6 +30,8 @@ import com.epmet.entity.IcEnterprisePatrolAttachmentEntity;
import com.epmet.entity.IcEnterprisePatrolRecordEntity;
import com.epmet.feign.EpmetAdminOpenFeignClient;
import com.epmet.service.IcEnterpriseService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang3.StringUtils;
@ -90,7 +95,9 @@ public class IcEnterpriseServiceImpl extends BaseServiceImpl<IcEnterpriseDao, Ic
@Override
public String addOrUpdatePatrol(EnterprisePatrolFormDTO formDTO) {
IcEnterprisePatrolRecordEntity patrolRecordEntity=ConvertUtils.sourceToTarget(formDTO,IcEnterprisePatrolRecordEntity.class);
if(StringUtils.isBlank(formDTO.getEnterpriseId())){
//校验名称唯一
// todo
if(StringUtils.isBlank(formDTO.getPatrolId())){
enterprisePatrolRecordDao.insert(patrolRecordEntity);
}else{
patrolRecordEntity.setId(formDTO.getPatrolId());
@ -110,6 +117,8 @@ public class IcEnterpriseServiceImpl extends BaseServiceImpl<IcEnterpriseDao, Ic
enterprisePatrolAttachmentDao.insert(att);
sort++;
}
// 更新主表的最新结果和最新检查时间
baseDao.updateLatestPatrol(formDTO.getEnterpriseId(),patrolRecordEntity.getUpdatedTime(),patrolRecordEntity.getResult(),formDTO.getUserId());
return patrolRecordEntity.getId();
}
@ -169,5 +178,55 @@ public class IcEnterpriseServiceImpl extends BaseServiceImpl<IcEnterpriseDao, Ic
return resultDto;
}
/**
* 企事业单位-删除
*
* @param enterpriseId
* @return
*/
@Transactional(rollbackFor = Exception.class)
@Override
public void delete(String enterpriseId) {
//要删除的记录的agencyId要与当前登录用户的agencyId一致
//ToDo
baseDao.deleteById(enterpriseId);
}
/**
* 企事业单位列表
*
* @param formDTO
* @return
*/
@Override
public PageData<EnterpriseDetailDTO> list(EnterprisePageFormDTO formDTO) {
//查询当前登录用的所属组织
CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(formDTO.getCustomerId(), formDTO.getCurrentStaffId());
if (null == staffInfo || StringUtils.isBlank(staffInfo.getAgencyId())) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "查询工作人员信息异常", "查询工作人员信息异常");
}
//本组织及下级
formDTO.setStaffAgencyId(staffInfo.getAgencyId());
PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize(), formDTO.getPageFlag());
List<EnterpriseDetailDTO> list = baseDao.selectList(formDTO);
PageInfo<EnterpriseDetailDTO> pageInfo = new PageInfo<>(list);
if (!org.springframework.util.CollectionUtils.isEmpty(list)) {
//规模名称
Result<Map<String, String>> dictMapRes = adminOpenFeignClient.dictMap(DictTypeEnum.SCALE.getCode());
Map<String, String> dictMap = dictMapRes.success() && MapUtils.isNotEmpty(dictMapRes.getData()) ? dictMapRes.getData() : new HashMap<>();
for (EnterpriseDetailDTO detailDTO : list) {
GridInfoCache gridInfoCache = CustomerOrgRedis.getGridInfo(detailDTO.getGridId());
if (null != gridInfoCache) {
detailDTO.setGridName(gridInfoCache.getGridName());
detailDTO.setAgencyName(gridInfoCache.getAgencyName());
}
String placeTypeName = coverageCategoryDictDao.selectCategoryName(formDTO.getCustomerId(), CoveragePlaceTypeEnum.ENTERPRISE_PATROL.getCode(), detailDTO.getPlaceType());
detailDTO.setPlaceTypeName(placeTypeName);
detailDTO.setScaleName(dictMap.containsKey(detailDTO.getScale()) ? dictMap.get(detailDTO.getScale()) : StrConstant.EPMETY_STR);
}
}
return new PageData<>(list, pageInfo.getTotal());
}
}

57
epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcEnterpriseDao.xml

@ -27,5 +27,62 @@
<result property="updatedTime" column="UPDATED_TIME"/>
</resultMap>
<update id="updateLatestPatrol" parameterType="map" >
update ic_enterprise
set LATEST_RESULT = #{result},
UPDATED_BY = #{userId},
UPDATED_TIME=NOW(),
LATEST_PATROL_TIME = #{updatedTime}
WHERE ID = #{enterpriseId}
</update>
<select id="selectList" parameterType="com.epmet.dto.form.EnterprisePageFormDTO" resultType="com.epmet.dto.result.EnterpriseDetailDTO">
SELECT DISTINCT
ie.ID,
ie.GRID_ID,
ie.AGENCY_ID,
ie.AGENCY_PIDS,
ie.PLACE_TYPE,
ie.PLACE_ORG_NAME,
ie.ADDRESS,
ie.LONGITUDE,
ie.LATITUDE,
ie.SCALE,
ie.PERSON_IN_CHARGE,
ie.MOBILE,
ie.SOURCE_TYPE,
ie.LATEST_RESULT,
ie.LATEST_PATROL_TIME
FROM
ic_enterprise ie
LEFT JOIN ic_enterprise_patrol_record r ON ( ie.id = r.ENTERPRISE_ID AND r.DEL_FLAG = '0' )
WHERE
ie.DEL_FLAG = '0'
AND (
ie.AGENCY_ID = #{staffAgencyId}
OR ie.AGENCY_PIDS LIKE concat( '%', #{staffAgencyId}, '%' )
)
<if test='null != gridId and "" != gridId'>
AND ie.GRID_ID = #{gridId}
</if>
<if test='null != placeType and "" != placeType'>
AND ie.PLACE_TYPE = #{placeType}
</if>
<if test='null != placeOrgName and "" != placeOrgName'>
AND ie.PLACE_ORG_NAME LIKE concat( '%', #{placeOrgName}, '%' )
</if>
<if test='null != scale and "" != scale'>
AND ie.SCALE = #{scale}
</if>
<if test='null != mobile and "" != mobile'>
AND ie.MOBILE LIKE concat( '%', #{mobile}, '%' )
</if>
<if test='null != result and "" != result'>
AND ie.LATEST_RESULT = #{result}
</if>
<if test='null != detailed and "" != detailed'>
AND r.DETAILED LIKE concat( '%', #{detailed}, '%' )
</if>
order by ie.CREATED_TIME desc
</select>
</mapper>

11
epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcEnterprisePatrolAttachmentDao.xml

@ -23,13 +23,10 @@
<result property="updatedTime" column="UPDATED_TIME"/>
</resultMap>
<update id="deleteByPatrolId" parameterType="java.lang.String">
update ic_enterprise_patrol_attachment
set del_flag='1',
UPDATED_TIME=now(),
UPDATED_BY={staffId}
where PATROL_ID=#{patrolId}
</update>
<delete id="deleteByPatrolId" parameterType="java.lang.String">
delete from ic_enterprise_patrol_attachment
where PATROL_ID = #{patrolId}
</delete>
<select id="selectAtt" parameterType="java.lang.String" resultType="java.lang.String">
select a.ATTACHMENT_URL from ic_enterprise_patrol_attachment a

Loading…
Cancel
Save