diff --git a/doc/epmet-cloud.md b/doc/epmet-cloud.md index 28dfe7ff08..9017656602 100644 --- a/doc/epmet-cloud.md +++ b/doc/epmet-cloud.md @@ -13,4 +13,11 @@ PS:目前正在测试通过负载均衡器和本地环境变量实现动态修 ``` 如何安装本地jar到本地仓库: -mvn install:install-file -DgroupId=com.inspurcloud -DartifactId=oss -D version=1.1.8 -Dpackaging=jar -Dfile=inspur-cloud-oss-sdk-1.1.8.jar \ No newline at end of file +mvn install:install-file -DgroupId=com.inspurcloud -DartifactId=oss -D version=1.1.8 -Dpackaging=jar -Dfile=inspur-cloud-oss-sdk-1.1.8.jar + + +## 私有化部署 +##### 需要开放哪些域名 + +- epmet-cloud.elinkservice.cn 微信交互代理 +- dysmsapi.aliyuncs.com 阿里云短信 \ No newline at end of file diff --git a/epmet-admin/epmet-admin-server/src/main/resources/logback-spring.xml b/epmet-admin/epmet-admin-server/src/main/resources/logback-spring.xml index 3d27fa4d07..2b7d942e79 100644 --- a/epmet-admin/epmet-admin-server/src/main/resources/logback-spring.xml +++ b/epmet-admin/epmet-admin-server/src/main/resources/logback-spring.xml @@ -3,7 +3,8 @@ - + + diff --git a/epmet-auth/src/main/resources/logback-spring.xml b/epmet-auth/src/main/resources/logback-spring.xml index 3ddc774384..10e7129112 100644 --- a/epmet-auth/src/main/resources/logback-spring.xml +++ b/epmet-auth/src/main/resources/logback-spring.xml @@ -3,7 +3,8 @@ - + + diff --git a/epmet-gateway/src/main/resources/logback-spring.xml b/epmet-gateway/src/main/resources/logback-spring.xml index 1e050e9686..652ce500c4 100644 --- a/epmet-gateway/src/main/resources/logback-spring.xml +++ b/epmet-gateway/src/main/resources/logback-spring.xml @@ -3,7 +3,8 @@ - + + diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/logback-spring.xml b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/logback-spring.xml index c639482221..d1cb010d4f 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/logback-spring.xml +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/logback-spring.xml @@ -3,7 +3,8 @@ - + + diff --git a/epmet-module/data-report/data-report-server/src/main/resources/logback-spring.xml b/epmet-module/data-report/data-report-server/src/main/resources/logback-spring.xml index 86de057fc6..53c7e59c69 100644 --- a/epmet-module/data-report/data-report-server/src/main/resources/logback-spring.xml +++ b/epmet-module/data-report/data-report-server/src/main/resources/logback-spring.xml @@ -3,7 +3,8 @@ - + + diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/logback-spring.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/logback-spring.xml index 7d2b7648a3..c320f80c0d 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/logback-spring.xml +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/logback-spring.xml @@ -3,7 +3,8 @@ - + + diff --git a/epmet-module/epmet-activiti/epmet-activiti-server/src/main/resources/logback-spring.xml b/epmet-module/epmet-activiti/epmet-activiti-server/src/main/resources/logback-spring.xml index 280e9f4bb2..c639444cee 100644 --- a/epmet-module/epmet-activiti/epmet-activiti-server/src/main/resources/logback-spring.xml +++ b/epmet-module/epmet-activiti/epmet-activiti-server/src/main/resources/logback-spring.xml @@ -3,7 +3,8 @@ - + + diff --git a/epmet-module/epmet-common-service/common-service-server/src/main/resources/logback-spring.xml b/epmet-module/epmet-common-service/common-service-server/src/main/resources/logback-spring.xml index dbd4fe85bb..9102439017 100644 --- a/epmet-module/epmet-common-service/common-service-server/src/main/resources/logback-spring.xml +++ b/epmet-module/epmet-common-service/common-service-server/src/main/resources/logback-spring.xml @@ -3,7 +3,8 @@ - + + diff --git a/epmet-module/epmet-demo/epmet-demo-server/src/main/resources/logback-spring.xml b/epmet-module/epmet-demo/epmet-demo-server/src/main/resources/logback-spring.xml index 1b8b94ba78..4f79c1b027 100644 --- a/epmet-module/epmet-demo/epmet-demo-server/src/main/resources/logback-spring.xml +++ b/epmet-module/epmet-demo/epmet-demo-server/src/main/resources/logback-spring.xml @@ -3,7 +3,8 @@ - + + diff --git a/epmet-module/epmet-ext/epmet-ext-server/src/main/resources/logback-spring.xml b/epmet-module/epmet-ext/epmet-ext-server/src/main/resources/logback-spring.xml index 8f428f8d5f..aa0f9f0a7b 100644 --- a/epmet-module/epmet-ext/epmet-ext-server/src/main/resources/logback-spring.xml +++ b/epmet-module/epmet-ext/epmet-ext-server/src/main/resources/logback-spring.xml @@ -3,7 +3,8 @@ - + + diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/logback-spring.xml b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/logback-spring.xml index b03ee98c4c..2239f625db 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/logback-spring.xml +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/logback-spring.xml @@ -3,7 +3,8 @@ - + + diff --git a/epmet-module/epmet-job/epmet-job-server/src/main/resources/logback-spring.xml b/epmet-module/epmet-job/epmet-job-server/src/main/resources/logback-spring.xml index 36cbaf8d12..999b42342b 100644 --- a/epmet-module/epmet-job/epmet-job-server/src/main/resources/logback-spring.xml +++ b/epmet-module/epmet-job/epmet-job-server/src/main/resources/logback-spring.xml @@ -3,7 +3,8 @@ - + + diff --git a/epmet-module/epmet-message/epmet-message-server/src/main/resources/logback-spring.xml b/epmet-module/epmet-message/epmet-message-server/src/main/resources/logback-spring.xml index 338e0b9495..ddb20915c4 100644 --- a/epmet-module/epmet-message/epmet-message-server/src/main/resources/logback-spring.xml +++ b/epmet-module/epmet-message/epmet-message-server/src/main/resources/logback-spring.xml @@ -3,7 +3,8 @@ - + + diff --git a/epmet-module/epmet-oss/epmet-oss-server/src/main/resources/logback-spring.xml b/epmet-module/epmet-oss/epmet-oss-server/src/main/resources/logback-spring.xml index 8a71d1a810..d18ef07d28 100644 --- a/epmet-module/epmet-oss/epmet-oss-server/src/main/resources/logback-spring.xml +++ b/epmet-module/epmet-oss/epmet-oss-server/src/main/resources/logback-spring.xml @@ -3,7 +3,8 @@ - + + diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/resources/logback-spring.xml b/epmet-module/epmet-point/epmet-point-server/src/main/resources/logback-spring.xml index e279b43303..81366ebe09 100644 --- a/epmet-module/epmet-point/epmet-point-server/src/main/resources/logback-spring.xml +++ b/epmet-module/epmet-point/epmet-point-server/src/main/resources/logback-spring.xml @@ -3,7 +3,8 @@ - + + diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/resources/logback-spring.xml b/epmet-module/epmet-third/epmet-third-server/src/main/resources/logback-spring.xml index f8e2164fb7..70dde2e876 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/resources/logback-spring.xml +++ b/epmet-module/epmet-third/epmet-third-server/src/main/resources/logback-spring.xml @@ -3,7 +3,8 @@ - + + diff --git a/epmet-module/gov-access/gov-access-server/src/main/resources/logback-spring.xml b/epmet-module/gov-access/gov-access-server/src/main/resources/logback-spring.xml index 9070f33f63..521b890c6c 100644 --- a/epmet-module/gov-access/gov-access-server/src/main/resources/logback-spring.xml +++ b/epmet-module/gov-access/gov-access-server/src/main/resources/logback-spring.xml @@ -3,7 +3,8 @@ - + + diff --git a/epmet-module/gov-grid/gov-grid-server/src/main/resources/logback-spring.xml b/epmet-module/gov-grid/gov-grid-server/src/main/resources/logback-spring.xml index b54d66f380..d0e5f2b64c 100644 --- a/epmet-module/gov-grid/gov-grid-server/src/main/resources/logback-spring.xml +++ b/epmet-module/gov-grid/gov-grid-server/src/main/resources/logback-spring.xml @@ -3,7 +3,8 @@ - + + diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/resources/logback-spring.xml b/epmet-module/gov-issue/gov-issue-server/src/main/resources/logback-spring.xml index 26e92fef88..d31ef9d410 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/resources/logback-spring.xml +++ b/epmet-module/gov-issue/gov-issue-server/src/main/resources/logback-spring.xml @@ -3,7 +3,8 @@ - + + diff --git a/epmet-module/gov-mine/gov-mine-server/src/main/resources/logback-spring.xml b/epmet-module/gov-mine/gov-mine-server/src/main/resources/logback-spring.xml index 33466c3178..31d1a8af02 100644 --- a/epmet-module/gov-mine/gov-mine-server/src/main/resources/logback-spring.xml +++ b/epmet-module/gov-mine/gov-mine-server/src/main/resources/logback-spring.xml @@ -3,7 +3,8 @@ - + + diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/DepartmentController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/DepartmentController.java index da70a814b7..c3c22a644e 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/DepartmentController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/DepartmentController.java @@ -2,32 +2,60 @@ package com.epmet.controller; import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.annotation.RequirePermission; +import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.enums.RequirePermissionEnum; +import com.epmet.commons.tools.exception.EpmetErrorCode; +import com.epmet.commons.tools.exception.EpmetException; +import com.epmet.commons.tools.exception.ExceptionUtils; +import com.epmet.commons.tools.feign.ResultDataResolver; import com.epmet.commons.tools.security.dto.TokenDto; +import com.epmet.commons.tools.utils.EpmetRequestHolder; +import com.epmet.commons.tools.utils.FileUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; +import com.epmet.constants.ImportTaskConstants; +import com.epmet.dto.CustomerAgencyDTO; import com.epmet.dto.form.*; import com.epmet.dto.result.*; +import com.epmet.feign.EpmetCommonServiceOpenFeignClient; +import com.epmet.service.CustomerAgencyService; import com.epmet.service.CustomerStaffAgencyService; import com.epmet.service.DepartmentService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.io.IOUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpHeaders; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletResponse; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.net.URLEncoder; +import java.nio.file.Path; import java.util.List; +import java.util.UUID; /** * 部门 * * @author sun */ +@Slf4j @RestController @RequestMapping("department") -public class DepartmentController { +public class DepartmentController implements ResultDataResolver { @Autowired private DepartmentService departmentService; @Autowired private CustomerStaffAgencyService customerStaffAgencyService; + @Autowired + private EpmetCommonServiceOpenFeignClient commonServiceOpenFeignClient; + @Autowired + private CustomerAgencyService customerAgencyService; /** * 添加部门人员 @@ -198,6 +226,88 @@ public class DepartmentController { return new Result().ok(departmentService.notSyncDept(formDTO)); } + /** + * 部门导入模板,来源于烟台需求 + * @param response + * @throws IOException + */ + @RequestMapping(value = "yantai/download-tem", method = {RequestMethod.GET, RequestMethod.POST}) + public void downloadTemplate(HttpServletResponse response) throws IOException { + response.setCharacterEncoding("UTF-8"); + response.addHeader(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, "Content-Disposition"); + //response.setHeader(HttpHeaders.CONTENT_TYPE, "application/vnd.ms-excel"); + 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("excel/yantai/yantai_dept_import_tem.xlsx"); + try { + ServletOutputStream os = response.getOutputStream(); + IOUtils.copy(is, os); + } finally { + if (is != null) { + is.close(); + } + } + } + + /** + * 部门导入,来源于烟台需求 + * @param agencyId + * @param file + * @return + */ + @PostMapping("yantai/import") + public Result importExcel(@RequestParam(value = "agencyId",required = true)String agencyId, @RequestPart("file") MultipartFile file) { + CustomerAgencyDTO customerAgencyDTO=customerAgencyService.get(agencyId); + if (null == customerAgencyDTO) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "组织不存在,agencyId" + agencyId, "只有组织才可以导入部门"); + } + + // 1.暂存文件 + String originalFilename = file.getOriginalFilename(); + String extName = originalFilename.substring(originalFilename.lastIndexOf(".")); + + Path fileSavePath; + try { + Path importPath = FileUtils.getAndCreateDirUnderEpmetFilesDir("customer_dept", "import"); + fileSavePath = importPath.resolve(UUID.randomUUID().toString().concat(extName)); + } catch (IOException e) { + String errorMsg = ExceptionUtils.getErrorStackTrace(e); + log.error("【部门导入】创建临时存储文件失败:{}", errorMsg); + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "文件上传失败", "文件上传失败"); + } + + InputStream is = null; + FileOutputStream os = null; + + try { + is = file.getInputStream(); + os = new FileOutputStream(fileSavePath.toString()); + IOUtils.copy(is, os); + } catch (Exception e) { + log.error("method exception", e); + } finally { + org.apache.poi.util.IOUtils.closeQuietly(is); + org.apache.poi.util.IOUtils.closeQuietly(os); + } + + // 2.生成导入任务记录 + ImportTaskCommonFormDTO importTaskForm = new ImportTaskCommonFormDTO(); + importTaskForm.setOperatorId(EpmetRequestHolder.getLoginUserId()); + importTaskForm.setBizType(ImportTaskConstants.BIZ_TYPE_IC_ENTERPRISE); + importTaskForm.setOriginFileName(originalFilename); + + ImportTaskCommonResultDTO rstData = getResultDataOrThrowsException(commonServiceOpenFeignClient.createImportTask(importTaskForm), + ServiceConstant.EPMET_COMMON_SERVICE, + EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), + "excel导入部门错误", + "部门导入失败"); + // 3.执行导入 + departmentService.execAsyncExcelImport(fileSavePath, rstData.getTaskId(),agencyId,originalFilename); + return new Result(); + } + + } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/handler/DeptExcelImportListener.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/handler/DeptExcelImportListener.java new file mode 100644 index 0000000000..5419175bff --- /dev/null +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/handler/DeptExcelImportListener.java @@ -0,0 +1,112 @@ +package com.epmet.excel.handler; + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.read.listener.ReadListener; +import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.constant.StrConstant; +import com.epmet.commons.tools.exception.EpmetException; +import com.epmet.commons.tools.exception.ExceptionUtils; +import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.commons.tools.validator.ValidatorUtils; +import com.epmet.entity.CustomerAgencyEntity; +import com.epmet.entity.CustomerDepartmentEntity; +import com.epmet.excel.yt.DeptImportExcelDTO; +import com.epmet.service.CustomerDepartmentService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; + +import java.util.ArrayList; +import java.util.List; + +/** + * @Description + * @Author yzm + * @Date 2023/4/26 16:11 + */ +@Slf4j +public class DeptExcelImportListener implements ReadListener { + //最大条数阈值 + public static final int MAX_THRESHOLD = 200; + private String customerId; + private String staffId; + private CustomerAgencyEntity agencyEntity; + /** + * 当前操作用户 + */ + //要插入的数据 + private List insertDatas = new ArrayList<>(); + //错误项列表 + private List errorRows = new ArrayList<>(); + private CustomerDepartmentService departmentService; + public DeptExcelImportListener(String loginUserCustomerId, String loginUserId, CustomerAgencyEntity agencyEntity, CustomerDepartmentService departmentService) { + this.customerId = loginUserCustomerId; + this.staffId = loginUserId; + this.agencyEntity = agencyEntity; + this.departmentService = departmentService; + } + + @Override + public void invoke(DeptImportExcelDTO data, AnalysisContext analysisContext) { + try { + ValidatorUtils.validateEntity(data); + //当前组织下,是否存在该部门 + departmentService.checkUnqiueName(agencyEntity.getId(),data.getDepartmentName(),null); + CustomerDepartmentEntity entity = ConvertUtils.sourceToTarget(data, CustomerDepartmentEntity.class); + entity.setCustomerId(customerId); + entity.setAgencyId(agencyEntity.getId()); + entity.setCreatedBy(staffId); + entity.setUpdatedBy(staffId); + entity.setTotalUser(NumConstant.ZERO); + entity.setAreaCode(StringUtils.isNotBlank(agencyEntity.getAreaCode())?agencyEntity.getAreaCode(): StrConstant.EPMETY_STR); + entity.setDepartmentDuty(StrConstant.EPMETY_STR); + entity.setDeptType("duty"); + insertDatas.add(entity); + if (insertDatas.size() == MAX_THRESHOLD) { + execPersist(); + } + } catch (Exception e) { + String errorMsg = null; + if(e instanceof EpmetException){ + errorMsg=((EpmetException) e).getMsg(); + }else { + errorMsg = "未知错误"; + log.error("【部门导入】出错:{}", ExceptionUtils.getErrorStackTrace(e)); + } + DeptImportExcelDTO.ErrorRow errorRow = ConvertUtils.sourceToTarget(data,DeptImportExcelDTO.ErrorRow.class); + errorRow.setErrorInfo(errorMsg); + errorRows.add(errorRow); + } + } + + @Override + public void doAfterAllAnalysed(AnalysisContext context) { + // 最后几条达不到阈值,这里必须再调用一次 + execPersist(); + } + + /** + * 执行持久化 + */ + private void execPersist() { + try { + if (CollectionUtils.isNotEmpty(insertDatas)) { + departmentService.insertBatch(insertDatas); + } + + } finally { + insertDatas.clear(); + } + } + + /** + * 获取错误行 + * + * @return + */ + public List getErrorRows() { + return errorRows; + } + +} + diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/yt/DeptImportExcelDTO.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/yt/DeptImportExcelDTO.java new file mode 100644 index 0000000000..302fe9afd7 --- /dev/null +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/yt/DeptImportExcelDTO.java @@ -0,0 +1,72 @@ +package com.epmet.excel.yt; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import lombok.Data; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.NotBlank; + +/** + * @Description + * @Author yzm + * @Date 2023/4/26 15:59 + */ +@Data +public class DeptImportExcelDTO { + /** + * 部门名称 + */ + @NotBlank(message = "部门名称不能为空") + @Length(max = 50, message = "部门名称不能超过50个字") + @ExcelProperty(value = "*部门名称") + private String departmentName; + + /** + * 组织编码 + */ + @ExcelProperty(value = "组织编码") + private String code; + /** + * 负责人 + */ + @ExcelProperty(value = "联系人") + private String contacts; + /** + * 联系电话 + */ + @ExcelProperty(value = "联系电话") + private String mobile; + + @Data + public static class ErrorRow { + @ColumnWidth(50) + @ExcelProperty(value = "*部门名称") + private String departmentName; + + /** + * 组织编码 + */ + @ColumnWidth(20) + @ExcelProperty(value = "组织编码") + private String code; + /** + * 负责人 + */ + @ColumnWidth(20) + @ExcelProperty(value = "联系人") + private String contacts; + + /** + * 联系电话 + */ + @ColumnWidth(20) + @ExcelProperty(value = "联系电话") + private String mobile; + + @ColumnWidth(50) + @ExcelProperty("错误信息") + private String errorInfo; + } +} + diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerDepartmentService.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerDepartmentService.java index bcb0267e38..0cdcf1373d 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerDepartmentService.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerDepartmentService.java @@ -102,4 +102,6 @@ public interface CustomerDepartmentService extends BaseService countQuery=new LambdaQueryWrapper<>(); + countQuery.eq(CustomerDepartmentEntity::getAgencyId,agencyId) + .eq(CustomerDepartmentEntity::getDepartmentName,departmentName) + .ne(StringUtils.isNotBlank(deptId),CustomerDepartmentEntity::getId,deptId); + if(baseDao.selectCount(countQuery)>0){ + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),"部门名称已存在","部门名称已存在"); + } + } } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/DepartmentServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/DepartmentServiceImpl.java index 5aad1c9b59..c518e45d14 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/DepartmentServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/DepartmentServiceImpl.java @@ -17,19 +17,21 @@ package com.epmet.service.impl; +import com.alibaba.excel.EasyExcel; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 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.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.EpmetException; +import com.epmet.commons.tools.exception.ExceptionUtils; import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.redis.common.CustomerStaffRedis; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.security.user.LoginUserUtil; -import com.epmet.commons.tools.utils.ConvertUtils; -import com.epmet.commons.tools.utils.Result; +import com.epmet.commons.tools.utils.*; import com.epmet.constant.CustomerDepartmentConstant; +import com.epmet.constants.ImportTaskConstants; import com.epmet.dao.CustomerAgencyDao; import com.epmet.dao.CustomerDepartmentDao; import com.epmet.dao.CustomerStaffDepartmentDao; @@ -38,20 +40,29 @@ import com.epmet.dto.*; import com.epmet.dto.form.*; import com.epmet.dto.result.*; import com.epmet.entity.*; -import com.epmet.feign.EpmetHeartOpenFeignClient; -import com.epmet.feign.EpmetUserFeignClient; -import com.epmet.feign.EpmetUserOpenFeignClient; -import com.epmet.feign.GovProjectOpenFeignClient; +import com.epmet.excel.handler.DeptExcelImportListener; +import com.epmet.excel.yt.DeptImportExcelDTO; +import com.epmet.feign.*; import com.epmet.service.*; import com.epmet.util.ModuleConstant; +import org.apache.commons.fileupload.FileItem; +import org.apache.commons.fileupload.FileItemFactory; +import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.lang3.StringUtils; +import org.apache.http.entity.ContentType; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; +import org.springframework.web.multipart.commons.CommonsMultipartFile; +import java.io.IOException; +import java.io.OutputStream; +import java.nio.file.Files; +import java.nio.file.Path; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -93,6 +104,11 @@ public class DepartmentServiceImpl implements DepartmentService { private EpmetHeartOpenFeignClient epmetHeartOpenFeignClient; @Autowired private GovProjectOpenFeignClient govProjectOpenFeignClient; + @Autowired + private EpmetCommonServiceOpenFeignClient commonServiceOpenFeignClient; + @Autowired + private OssFeignClient ossFeignClient; + /** * @param formDTO @@ -103,6 +119,8 @@ public class DepartmentServiceImpl implements DepartmentService { @Override @Transactional(rollbackFor = Exception.class) public Result addDepartment(AddDepartmentFormDTO formDTO) { + //同一组织下部门名称唯一 + SpringContextUtils.getBean(CustomerDepartmentService.class).checkUnqiueName(formDTO.getAgencyId(),formDTO.getDepartmentName(),null); Result result = new Result(); AddDepartmentResultDTO addDepartmentResultDTO = new AddDepartmentResultDTO(); CustomerDepartmentEntity entity = ConvertUtils.sourceToTarget(formDTO, CustomerDepartmentEntity.class); @@ -135,6 +153,9 @@ public class DepartmentServiceImpl implements DepartmentService { @Override @Transactional(rollbackFor = Exception.class) public Result editDepartment(EditDepartmentFormDTO formDTO) { + CustomerDepartmentEntity origin=customerDepartmentDao.selectById(formDTO.getDepartmentId()); + //同一组织下部门名称唯一 + SpringContextUtils.getBean(CustomerDepartmentService.class).checkUnqiueName(origin.getAgencyId(),formDTO.getDepartmentName(),formDTO.getDepartmentId()); Result result = new Result(); CustomerDepartmentEntity entity = ConvertUtils.sourceToTarget(formDTO, CustomerDepartmentEntity.class); entity.setId(formDTO.getDepartmentId()); @@ -551,5 +572,83 @@ public class DepartmentServiceImpl implements DepartmentService { return resultDTO; } + @Async + @Override + public void execAsyncExcelImport(Path filePath, String importTaskId,String agencyId,String originalFilename) { + CustomerAgencyEntity agencyEntity = customerAgencyDao.selectById(agencyId); + try { + DeptExcelImportListener listener = new DeptExcelImportListener(EpmetRequestHolder.getLoginUserCustomerId(), + EpmetRequestHolder.getLoginUserId(), + agencyEntity, + SpringContextUtils.getBean(CustomerDepartmentService.class)); + EasyExcel.read(filePath.toFile(), DeptImportExcelDTO.class, listener).headRowNumber(1).sheet(0).doRead(); + + Path errorDescFile = null; + String errorDesFileUrl = null; + List errorRows = listener.getErrorRows(); + + boolean failed = errorRows.size() > 0; + if (failed) { + // 生成并上传错误文件 + try { + // 文件生成 + Path errorDescDir = FileUtils.getAndCreateDirUnderEpmetFilesDir("customer_dept", "import", "error_des"); + String fileName = originalFilename.concat(DateUtils.format(new Date(),DateUtils.DATE_TIME_NO_SPLIT)).concat(".xlsx"); + errorDescFile = errorDescDir.resolve(fileName); + + FileItemFactory factory = new DiskFileItemFactory(16, errorDescDir.toFile()); + FileItem fileItem = factory.createItem("file", ContentType.APPLICATION_OCTET_STREAM.toString(), true, fileName); + OutputStream os = fileItem.getOutputStream(); + + EasyExcel.write(os, DeptImportExcelDTO.ErrorRow.class).sheet("导入失败列表").doWrite(errorRows); + + // 文件上传oss + Result errorDesFileUploadResult = ossFeignClient.uploadImportTaskDescFile(new CommonsMultipartFile(fileItem)); + if (errorDesFileUploadResult.success()) { + errorDesFileUrl = errorDesFileUploadResult.getData().getUrl(); + } + } finally { + if (Files.exists(errorDescFile)) { + Files.delete(errorDescFile); + } + } + } + + ImportTaskCommonFormDTO importFinishTaskForm = new ImportTaskCommonFormDTO(); + importFinishTaskForm.setTaskId(importTaskId); + importFinishTaskForm.setProcessStatus(failed ? ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL : ImportTaskConstants.PROCESS_STATUS_FINISHED_SUCCESS); + importFinishTaskForm.setOperatorId(EpmetRequestHolder.getLoginUserId()); + importFinishTaskForm.setResultDesc(""); + importFinishTaskForm.setResultDescFilePath(errorDesFileUrl); + + Result result = commonServiceOpenFeignClient.finishImportTask(importFinishTaskForm); + if (!result.success()) { + log.error("【部门导入】finishImportTask失败"); + } + } catch (Exception e) { + String errorMsg = ExceptionUtils.getErrorStackTrace(e); + log.error("【部门导入】出错:{}", errorMsg); + + ImportTaskCommonFormDTO importFinishTaskForm = new ImportTaskCommonFormDTO(); + importFinishTaskForm.setTaskId(importTaskId); + importFinishTaskForm.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL); + importFinishTaskForm.setOperatorId(EpmetRequestHolder.getLoginUserId()); + importFinishTaskForm.setResultDesc("导入失败"); + Result result = commonServiceOpenFeignClient.finishImportTask(importFinishTaskForm); + if (!result.success()) { + log.error("【部门导入】导入记录状态修改为'完成'失败"); + } + } finally { + // 删除临时文件 + if (Files.exists(filePath)) { + try { + Files.delete(filePath); + } catch (IOException e) { + log.error("method exception", e); + } + } + } + } + } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java index 10b1be7d14..9e9e0fa801 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java @@ -272,10 +272,10 @@ public class HouseServiceImpl implements HouseService, ResultDataResolver { houseChangeRecordCollect(formDTO.getId(), formDTO.getCustomerId(), icHouseDTO); icHouseDao.updateById(entity); - IcHouseDTO houseDTO = icHouseService.get(formDTO.getId()); + // IcHouseDTO houseDTO = icHouseService.get(formDTO.getId()); //删除房屋缓存 - icHouseRedis.delHouseInfo(formDTO.getId(), houseDTO.getCustomerId()); + icHouseRedis.delHouseInfo(formDTO.getId(), formDTO.getCustomerId()); } /** diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/excel/yantai/yantai_dept_import_tem.xlsx b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/yantai/yantai_dept_import_tem.xlsx new file mode 100644 index 0000000000..a3e51d0f54 Binary files /dev/null and b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/yantai/yantai_dept_import_tem.xlsx differ diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/logback-spring.xml b/epmet-module/gov-org/gov-org-server/src/main/resources/logback-spring.xml index f366605fba..5371a1f541 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/resources/logback-spring.xml +++ b/epmet-module/gov-org/gov-org-server/src/main/resources/logback-spring.xml @@ -3,7 +3,8 @@ - + + diff --git a/epmet-module/gov-project/gov-project-server/src/main/resources/logback-spring.xml b/epmet-module/gov-project/gov-project-server/src/main/resources/logback-spring.xml index a1e8c5f1b0..ad19a235ae 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/resources/logback-spring.xml +++ b/epmet-module/gov-project/gov-project-server/src/main/resources/logback-spring.xml @@ -3,7 +3,8 @@ - + + diff --git a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/GuideDTO.java b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/GuideDTO.java index f5fe57d143..db7177a3fa 100644 --- a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/GuideDTO.java +++ b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/GuideDTO.java @@ -66,6 +66,7 @@ public class GuideDTO implements Serializable { /** * 所有上级组织ID,英文:隔开 + * orgId的orgIdPath */ private String pids; diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/GuideServiceImpl.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/GuideServiceImpl.java index eadca17c92..b02baa9609 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/GuideServiceImpl.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/GuideServiceImpl.java @@ -25,23 +25,24 @@ import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.constant.StrConstant; import com.epmet.commons.tools.dto.form.PageFormDTO; import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; +import com.epmet.commons.tools.enums.OrgTypeEnum; import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.RenException; 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.security.dto.TokenDto; import com.epmet.commons.tools.utils.ConvertUtils; -import com.epmet.commons.tools.utils.Result; +import com.epmet.commons.tools.utils.PidUtils; import com.epmet.commons.tools.utils.SpringContextUtils; -import com.epmet.constant.OrgInfoConstant; import com.epmet.dao.GuideDao; import com.epmet.dto.GuideDTO; import com.epmet.dto.form.*; import com.epmet.dto.result.GuideDetailResultDTO; import com.epmet.dto.result.GuideListResultDTO; -import com.epmet.dto.result.OrgResultDTO; import com.epmet.entity.*; -import com.epmet.feign.GovOrgOpenFeignClient; import com.epmet.service.*; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; @@ -66,8 +67,6 @@ import java.util.stream.Collectors; @Service public class GuideServiceImpl extends BaseServiceImpl implements GuideService { - @Resource - private GovOrgOpenFeignClient govOrgOpenFeignClient; @Resource private GuideModuleService guideModuleService; @Resource @@ -184,7 +183,7 @@ public class GuideServiceImpl extends BaseServiceImpl imp orgFormDTO.setOrgId(formDTO.getOrgId()); orgFormDTO.setOrgType(formDTO.getOrgType()); //获取组织的pId和pIds - Result result = govOrgOpenFeignClient.getAgencyInfo(orgFormDTO); + /*Result result = govOrgOpenFeignClient.getAgencyInfo(orgFormDTO); if (!result.success() || null == result.getData()) { throw new RenException(result.getCode(), result.getMsg()); } @@ -193,7 +192,16 @@ public class GuideServiceImpl extends BaseServiceImpl imp } else { guideDTO.setPid(result.getData().getAgencyId()); } - guideDTO.setPids(result.getData().getPids().concat(":").concat(result.getData().getAgencyId())); + guideDTO.setPids(result.getData().getPids().concat(":").concat(result.getData().getAgencyId()));*/ + if(OrgTypeEnum.GRID.getCode().equals(formDTO.getOrgType())){ + GridInfoCache gridInfoCache=CustomerOrgRedis.getGridInfo(formDTO.getOrgId()); + guideDTO.setPid(gridInfoCache.getPid()); + guideDTO.setPids(gridInfoCache.getPids().concat(StrConstant.COLON).concat(gridInfoCache.getId())); + }else{ + AgencyInfoCache agencyInfoCache=CustomerOrgRedis.getAgencyInfo(formDTO.getOrgId()); + guideDTO.setPid(agencyInfoCache.getPid()); + guideDTO.setPids(PidUtils.convertPid2OrgIdPath(agencyInfoCache.getId(),agencyInfoCache.getPids())); + } insert(guideDTO); //保存办事指南内容模块 if (CollectionUtils.isNotEmpty(formDTO.getModuleList())) { @@ -273,7 +281,7 @@ public class GuideServiceImpl extends BaseServiceImpl imp orgFormDTO.setOrgType(formDTO.getOrgType()); guideDTO.setOrgName(formDTO.getOrgName()); //获取组织的pId和pIds - Result result = govOrgOpenFeignClient.getAgencyInfo(orgFormDTO); + /*Result result = govOrgOpenFeignClient.getAgencyInfo(orgFormDTO); if (!result.success() || null == result.getData()) { throw new RenException(result.getCode(), result.getMsg()); } @@ -282,7 +290,17 @@ public class GuideServiceImpl extends BaseServiceImpl imp } else { guideDTO.setPid(result.getData().getAgencyId()); } - guideDTO.setPids(result.getData().getPids().concat(":").concat(result.getData().getAgencyId())); + guideDTO.setPids(result.getData().getPids().concat(":").concat(result.getData().getAgencyId()));*/ + + if(OrgTypeEnum.GRID.getCode().equals(formDTO.getOrgType())){ + GridInfoCache gridInfoCache=CustomerOrgRedis.getGridInfo(formDTO.getOrgId()); + guideDTO.setPid(gridInfoCache.getPid()); + guideDTO.setPids(gridInfoCache.getPids().concat(StrConstant.COLON).concat(gridInfoCache.getId())); + }else{ + AgencyInfoCache agencyInfoCache=CustomerOrgRedis.getAgencyInfo(formDTO.getOrgId()); + guideDTO.setPid(agencyInfoCache.getPid()); + guideDTO.setPids(PidUtils.convertPid2OrgIdPath(agencyInfoCache.getId(),agencyInfoCache.getPids())); + } update(guideDTO); //保存办事指南内容模块 if (CollectionUtils.isNotEmpty(formDTO.getModuleList())) { diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/resources/logback-spring.xml b/epmet-module/gov-voice/gov-voice-server/src/main/resources/logback-spring.xml index 6c230be6bf..c26e31a513 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/resources/logback-spring.xml +++ b/epmet-module/gov-voice/gov-voice-server/src/main/resources/logback-spring.xml @@ -3,7 +3,8 @@ - + + diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleContentDao.xml b/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleContentDao.xml index 52007cee9e..9a7b45fc31 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleContentDao.xml +++ b/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleContentDao.xml @@ -11,7 +11,7 @@ article_content ac WHERE ac.DEL_FLAG = '0' - AND ac.ID = #{articleId} + AND ac.ARTICLE_ID = #{articleId} \ No newline at end of file diff --git a/epmet-module/open-data-worker/open-data-worker-server/src/main/resources/logback-spring.xml b/epmet-module/open-data-worker/open-data-worker-server/src/main/resources/logback-spring.xml index 36ddc6f222..03c538fdc0 100644 --- a/epmet-module/open-data-worker/open-data-worker-server/src/main/resources/logback-spring.xml +++ b/epmet-module/open-data-worker/open-data-worker-server/src/main/resources/logback-spring.xml @@ -3,7 +3,8 @@ - + + diff --git a/epmet-module/oper-access/oper-access-server/src/main/resources/logback-spring.xml b/epmet-module/oper-access/oper-access-server/src/main/resources/logback-spring.xml index e22bb16a66..080c035973 100644 --- a/epmet-module/oper-access/oper-access-server/src/main/resources/logback-spring.xml +++ b/epmet-module/oper-access/oper-access-server/src/main/resources/logback-spring.xml @@ -3,7 +3,8 @@ - + + diff --git a/epmet-module/oper-crm/oper-crm-server/src/main/resources/logback-spring.xml b/epmet-module/oper-crm/oper-crm-server/src/main/resources/logback-spring.xml index b670ba07bf..5a0f538ff1 100644 --- a/epmet-module/oper-crm/oper-crm-server/src/main/resources/logback-spring.xml +++ b/epmet-module/oper-crm/oper-crm-server/src/main/resources/logback-spring.xml @@ -3,7 +3,8 @@ - + + diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/resources/logback-spring.xml b/epmet-module/oper-customize/oper-customize-server/src/main/resources/logback-spring.xml index cedd663d22..40a734010f 100644 --- a/epmet-module/oper-customize/oper-customize-server/src/main/resources/logback-spring.xml +++ b/epmet-module/oper-customize/oper-customize-server/src/main/resources/logback-spring.xml @@ -3,7 +3,8 @@ - + + diff --git a/epmet-module/resi-group/resi-group-server/src/main/resources/logback-spring.xml b/epmet-module/resi-group/resi-group-server/src/main/resources/logback-spring.xml index 6a517afaff..bbc34e798a 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/resources/logback-spring.xml +++ b/epmet-module/resi-group/resi-group-server/src/main/resources/logback-spring.xml @@ -3,7 +3,8 @@ - + + diff --git a/epmet-module/resi-guide/resi-guide-server/src/main/resources/logback-spring.xml b/epmet-module/resi-guide/resi-guide-server/src/main/resources/logback-spring.xml index 126316c645..a42f347111 100644 --- a/epmet-module/resi-guide/resi-guide-server/src/main/resources/logback-spring.xml +++ b/epmet-module/resi-guide/resi-guide-server/src/main/resources/logback-spring.xml @@ -3,7 +3,8 @@ - + + diff --git a/epmet-module/resi-hall/resi-hall-server/src/main/resources/logback-spring.xml b/epmet-module/resi-hall/resi-hall-server/src/main/resources/logback-spring.xml index a5db66cb09..049506c162 100644 --- a/epmet-module/resi-hall/resi-hall-server/src/main/resources/logback-spring.xml +++ b/epmet-module/resi-hall/resi-hall-server/src/main/resources/logback-spring.xml @@ -3,7 +3,8 @@ - + + diff --git a/epmet-module/resi-home/resi-home-server/src/main/resources/logback-spring.xml b/epmet-module/resi-home/resi-home-server/src/main/resources/logback-spring.xml index 0b5eedfde0..490067bb31 100644 --- a/epmet-module/resi-home/resi-home-server/src/main/resources/logback-spring.xml +++ b/epmet-module/resi-home/resi-home-server/src/main/resources/logback-spring.xml @@ -3,7 +3,8 @@ - + + diff --git a/epmet-module/resi-mine/resi-mine-server/src/main/resources/logback-spring.xml b/epmet-module/resi-mine/resi-mine-server/src/main/resources/logback-spring.xml index f797654dbd..a0c67122f7 100644 --- a/epmet-module/resi-mine/resi-mine-server/src/main/resources/logback-spring.xml +++ b/epmet-module/resi-mine/resi-mine-server/src/main/resources/logback-spring.xml @@ -3,7 +3,8 @@ - + + diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/resources/logback-spring.xml b/epmet-module/resi-partymember/resi-partymember-server/src/main/resources/logback-spring.xml index b8b3161188..1bc47d8520 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/resources/logback-spring.xml +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/resources/logback-spring.xml @@ -3,7 +3,8 @@ - + + diff --git a/epmet-module/resi-voice/resi-voice-server/src/main/resources/logback-spring.xml b/epmet-module/resi-voice/resi-voice-server/src/main/resources/logback-spring.xml index 408ee874df..a69c72cdd0 100644 --- a/epmet-module/resi-voice/resi-voice-server/src/main/resources/logback-spring.xml +++ b/epmet-module/resi-voice/resi-voice-server/src/main/resources/logback-spring.xml @@ -3,7 +3,8 @@ - + + diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/CollectListFormDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/CollectListFormDTO.java index 99957503cf..8e0a581428 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/CollectListFormDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/CollectListFormDTO.java @@ -29,6 +29,15 @@ public class CollectListFormDTO extends PageFormDTO { */ private String domicilePlace; + /** + * 审核状态:0待审核 1审核不通过 2审核通过 + */ + private String checkState; + /** + * 户主姓名 + */ + private String houseHolderName; + private String userId; private String customerId; diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/CollectHouseInfoResultDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/CollectHouseInfoResultDTO.java index 6e9fa340ee..8677b71c5a 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/CollectHouseInfoResultDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/CollectHouseInfoResultDTO.java @@ -3,7 +3,6 @@ package com.epmet.dto.result; import lombok.Data; import java.io.Serializable; -import java.util.List; /** * @Author wgf @@ -54,4 +53,6 @@ public class CollectHouseInfoResultDTO implements Serializable { * 房主姓名 */ private String ownerName; + + } diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/CollectListExcelResultDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/CollectListExcelResultDTO.java index 04a34bb814..0b4dc12e1a 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/CollectListExcelResultDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/CollectListExcelResultDTO.java @@ -17,6 +17,10 @@ import java.util.List; public class CollectListExcelResultDTO implements Serializable { private static final long serialVersionUID = -5659769436514116680L; + + @Excel(name = "所属网格",width = 30, needMerge = true) + private String gridName; + /** * 户主姓名 */ diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/CollectListResultDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/CollectListResultDTO.java index 9851be6340..44edef865e 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/CollectListResultDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/CollectListResultDTO.java @@ -1,6 +1,5 @@ package com.epmet.dto.result; -import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Data; import java.io.Serializable; @@ -26,7 +25,8 @@ public class CollectListResultDTO implements Serializable { // 组织Id private String agencyId; - + private String gridId; + private String gridName; /** * 居住地址 */ @@ -113,7 +113,21 @@ public class CollectListResultDTO implements Serializable { * 与户主关系 */ private String relationship; - + /** + * 来源于字典表 + * 暂不清楚:0 + * 本人:1 + * 配偶:2 + * 子女:3 + * 父母:4 + * 岳父母或公婆:5 + * 祖父母:6 + * 媳婿:7 + * 孙子女:8 + * 兄弟姐妹:9 + * 其他:10 + */ + private String relationShipName; /** * 人脸照片 */ diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/remote/EpmetUserRemoteService.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/remote/EpmetUserRemoteService.java new file mode 100644 index 0000000000..29758a6edf --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/remote/EpmetUserRemoteService.java @@ -0,0 +1,35 @@ +package com.epmet.remote; + +import com.epmet.commons.tools.constant.ServiceConstant; +import com.epmet.commons.tools.feign.ResultDataResolver; +import com.epmet.commons.tools.utils.EpmetRequestHolder; +import com.epmet.dto.form.LoginUserDetailsFormDTO; +import com.epmet.dto.result.LoginUserDetailsResultDTO; +import com.epmet.feign.EpmetUserOpenFeignClient; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * epmet用户远程服务工具 + */ +@Component +public class EpmetUserRemoteService implements ResultDataResolver { + + @Autowired + private EpmetUserOpenFeignClient epmetUserOpenFeignClient; + + /** + * 查询当前登录用户信息 + * @return + */ + public LoginUserDetailsResultDTO getLoginUserDetails() { + // 不传组织id,则基于当前组织查询 + LoginUserDetailsFormDTO loinUserForm = new LoginUserDetailsFormDTO(); + loinUserForm.setApp(EpmetRequestHolder.getLoginUserApp()); + loinUserForm.setClient(EpmetRequestHolder.getLoginUserClient()); + loinUserForm.setUserId(EpmetRequestHolder.getLoginUserId()); + LoginUserDetailsResultDTO loginUserDetailsResultDTO = getResultDataOrThrowsException(epmetUserOpenFeignClient.getLoginUserDetails(loinUserForm), ServiceConstant.GOV_ORG_SERVER, + null, null, "查询当前工作人员所属组织信息失败"); + return loginUserDetailsResultDTO; + } +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiCollectController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiCollectController.java index d508f670e8..944e2721cd 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiCollectController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiCollectController.java @@ -8,10 +8,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.security.dto.TokenDto; -import com.epmet.commons.tools.utils.ConvertUtils; -import com.epmet.commons.tools.utils.ExcelUtils; -import com.epmet.commons.tools.utils.IdCardRegexUtils; -import com.epmet.commons.tools.utils.Result; +import com.epmet.commons.tools.utils.*; import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.dto.form.*; import com.epmet.dto.result.*; @@ -25,6 +22,7 @@ import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletResponse; import java.util.ArrayList; +import java.util.Date; import java.util.List; @@ -121,8 +119,8 @@ public class IcResiCollectController { resultDTO.setListP(children); list.add(resultDTO); }); - - ExcelUtils.exportExcelToTarget(response, null, list, CollectListExcelResultDTO.class); + String fileName="信息采集"+ DateUtils.format(new Date(),DateUtils.DATE_PATTERN); + ExcelUtils.exportExcelToTarget(response, fileName, list, CollectListExcelResultDTO.class); } /** diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiUserDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiUserDao.java index a3a2f9d40d..4ea378aaaf 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiUserDao.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiUserDao.java @@ -63,6 +63,17 @@ public interface IcResiUserDao extends BaseDao { **/ void upTable(@Param("tableName") String tableName, @Param("id") String id, @Param("map") Map map); + /** + * @description: 选择性更新(只更新不为null的) + * @param tableName: + * @param id: + * @param map: + * @return + * @author: WangXianZhang + * @date: 2023/4/23 9:03 PM + */ + void updateTableSelective(@Param("tableName") String tableName, @Param("id") String id, @Param("map") Map map); + List> selectListResiMap(@Param("customerId") String customerId, @Param("formCode") String formCode, @Param("conditions") List conditions, diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiCollectServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiCollectServiceImpl.java index bfecfa4671..47971cdf45 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiCollectServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiCollectServiceImpl.java @@ -5,14 +5,17 @@ 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.DictTypeEnum; import com.epmet.commons.tools.enums.RelationshipEnum; 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.CustomerIcHouseRedis; 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.redis.common.bean.HouseInfoCache; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.PidUtils; @@ -27,7 +30,7 @@ import com.epmet.entity.IcResiCollectEntity; import com.epmet.entity.IcResiMemberEntity; import com.epmet.entity.IcResiUserEntity; import com.epmet.entity.IcUserChangeRecordEntity; -import com.epmet.feign.EpmetUserOpenFeignClient; +import com.epmet.feign.EpmetAdminOpenFeignClient; import com.epmet.feign.GovOrgFeignClient; import com.epmet.feign.GovOrgOpenFeignClient; import com.epmet.service.IcResiCollectService; @@ -43,6 +46,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.function.Function; @@ -62,19 +66,15 @@ public class IcResiCollectServiceImpl extends BaseServiceImpl collectList = baseDao.getCollectList(formDTO); result.setList(collectList); } + result.getList().forEach(collectDTO->{ + GridInfoCache gridInfoCache=CustomerOrgRedis.getGridInfo(collectDTO.getGridId()); + if(null!=gridInfoCache){ + collectDTO.setGridName(gridInfoCache.getGridNamePath()); + } + }); return result; } @@ -149,7 +155,18 @@ public class IcResiCollectServiceImpl extends BaseServiceImpl list = baseDao.getCollectList(formDTO); if (CollectionUtils.isNotEmpty(list)) { - return list.get(NumConstant.ZERO); + CollectListResultDTO resultDTO=list.get(NumConstant.ZERO); + GridInfoCache gridInfoCache=CustomerOrgRedis.getGridInfo(resultDTO.getGridId()); + if(null!=gridInfoCache){ + resultDTO.setGridName(gridInfoCache.getGridNamePath()); + } + Result> relationShipRes=adminOpenFeignClient.dictMap(DictTypeEnum.RELATIONSHIP.getCode()); + for(CollectListResultDTO.CollectListMemberResultDTO member:resultDTO.getList()){ + if(StringUtils.isNotBlank(member.getRelationship())&&relationShipRes.success()&&relationShipRes.getData().containsKey(member.getRelationship())){ + member.setRelationShipName(relationShipRes.getData().get(member.getRelationship())); + } + } + return resultDTO; } return null; } @@ -421,6 +438,7 @@ public class IcResiCollectServiceImpl extends BaseServiceImpl resultDTOResult = govOrgFeignClient.getHouseInfoToCollect(getHouseInfoToCollectFormDTO); IcHouseInfoCollectResultDTO icHouseInfoCollectResultDTO = resultDTOResult.getData(); - + if(null==icHouseInfoCollectResultDTO){ + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),"房屋不存在","房屋不存在,请先新建同名房屋"); + } // 新增房屋后需要collect更新上房屋ID // log icResiCollectEntity.setHomeId(icHouseInfoCollectResultDTO.getId()); @@ -462,7 +482,9 @@ public class IcResiCollectServiceImpl extends BaseServiceImpl wrapper = new LambdaQueryWrapper<>(); wrapper.eq(IcResiUserEntity::getHomeId, icResiCollectEntity.getHomeId()); - wrapper.eq(IcResiUserEntity::getYhzgx, RelationshipEnum.SELF.getCode()); + wrapper.eq(IcResiUserEntity::getYhzgx, RelationshipEnum.SELF.getCode()) + .ne(IcResiUserEntity::getIdCard,icResiCollectMemDetailDTO.getIdNum()); List entityList = icResiUserDao.selectList(wrapper); if (CollectionUtils.isNotEmpty(entityList)) { - String errorMsg = "房屋下已存在户主"; - throw new EpmetException(EpmetErrorCode.ORG_ADD_FAILED.getCode(), errorMsg, errorMsg); + String errorMsg = "当前房屋下已存在户主"; + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), errorMsg, errorMsg); } } - AgencyInfoCache agencyInfoCache = CustomerOrgRedis.getAgencyInfo(icResiCollectEntity.getAgencyId()); - if (null == agencyInfoCache) { - throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "所属组织查询异常,agencyId:" + icResiCollectEntity.getAgencyId(), "所属组织查询异常"); - } - // userEntity.setPids(icResiCollectEntity.getPids() + ":" + icResiCollectEntity.getAgencyId()); // ic_resi_user表的组织的pids 含agencyId本身 - userEntity.setPids(PidUtils.convertPid2OrgIdPath(icResiCollectEntity.getAgencyId(), agencyInfoCache.getPids())); - userEntity.setAgencyId(icResiCollectEntity.getAgencyId()); - userEntity.setGridId(icResiCollectEntity.getGridId()); - userEntity.setVillageId(icResiCollectEntity.getVillageId()); - userEntity.setBuildId(icResiCollectEntity.getBuildId()); - userEntity.setUnitId(icResiCollectEntity.getUnitId()); - userEntity.setHomeId(icResiCollectEntity.getHomeId()); - userEntity.setName(icResiCollectMemDetailDTO.getName()); - userEntity.setMobile(icResiCollectMemDetailDTO.getMobile()); - userEntity.setIdCard(icResiCollectMemDetailDTO.getIdNum()); - userEntity.setYhzgx(icResiCollectMemDetailDTO.getRelationship()); - userEntity.setGzdw(icResiCollectMemDetailDTO.getWorkPlace()); - userEntity.setRemarks(icResiCollectMemDetailDTO.getRemark()); - userEntity.setHjszd(icResiCollectMemDetailDTO.getDomicilePlace()); - icResiUserDao.updateById(userEntity); - // 判断是否需要更新记录 if(isUpdateLog){ //变更记录表 IcUserChangeRecordEntity changeRecordEntity = new IcUserChangeRecordEntity(); changeRecordEntity.setCustomerId(icResiCollectEntity.getCustomerId()); changeRecordEntity.setOperatorId(formDTO.getUserId()); - changeRecordEntity.setIcUserId(userEntity.getId()); + changeRecordEntity.setIcUserId(existedUserEntity.getId()); changeRecordEntity.setOperatorName(formDTO.getRealName()); - changeRecordEntity.setIcUserName(userEntity.getName()); - changeRecordEntity.setType("update"); - changeRecordEntity.setTypeName("修改"); + changeRecordEntity.setIcUserName(existedUserEntity.getName()); + changeRecordEntity.setType("transfer"); + changeRecordEntity.setTypeName("调动"); changeRecordEntity.setBeforeChangeName("-"); + HouseInfoCache originHouseInfoCache= CustomerIcHouseRedis.getHouseInfo(icResiCollectEntity.getCustomerId(),existedUserEntity.getHomeId()); + if(null!=originHouseInfoCache){ + changeRecordEntity.setBeforeChangeName(originHouseInfoCache.getGridName().concat(StrConstant.HYPHEN).concat(originHouseInfoCache.getAllName())); + } changeRecordEntity.setAfterChangeName("-"); + HouseInfoCache newHouseInfoCache = CustomerIcHouseRedis.getHouseInfo(icResiCollectEntity.getCustomerId(), icResiCollectEntity.getHomeId()); + if (null != newHouseInfoCache) { + //信息采集时居民自己填写的房屋 以他填写的为准!!!!!! + changeRecordEntity.setAfterChangeName(newHouseInfoCache.getGridName().concat(StrConstant.HYPHEN).concat(newHouseInfoCache.getAllName())); + } changeRecordEntity.setChangeTime(new java.util.Date()); + changeRecordEntity.setReason("来源于信息采集:更新居民所属房屋信息"); icUserChangeRecordService.insert(changeRecordEntity); } + AgencyInfoCache agencyInfoCache = CustomerOrgRedis.getAgencyInfo(icResiCollectEntity.getAgencyId()); + if (null == agencyInfoCache) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "所属组织查询异常,agencyId:" + icResiCollectEntity.getAgencyId(), "所属组织查询异常"); + } + // userEntity.setPids(icResiCollectEntity.getPids() + ":" + icResiCollectEntity.getAgencyId()); // ic_resi_user表的组织的pids 含agencyId本身 + existedUserEntity.setPids(PidUtils.convertPid2OrgIdPath(icResiCollectEntity.getAgencyId(), agencyInfoCache.getPids())); + // 组织Id + existedUserEntity.setAgencyId(icResiCollectEntity.getAgencyId()); + // 网格id + existedUserEntity.setGridId(icResiCollectEntity.getGridId()); + // 小区id + existedUserEntity.setVillageId(icResiCollectEntity.getVillageId()); + // 楼栋id + existedUserEntity.setBuildId(icResiCollectEntity.getBuildId()); + // 单元id + existedUserEntity.setUnitId(icResiCollectEntity.getUnitId()); + // 房屋id + existedUserEntity.setHomeId(icResiCollectEntity.getHomeId()); + // 姓名 + existedUserEntity.setName(icResiCollectMemDetailDTO.getName()); + // 手机号 + existedUserEntity.setMobile(icResiCollectMemDetailDTO.getMobile()); + // 身份证号 + existedUserEntity.setIdCard(icResiCollectMemDetailDTO.getIdNum()); + // 与户主关系 + existedUserEntity.setYhzgx(icResiCollectMemDetailDTO.getRelationship()); + // 工作单位 + existedUserEntity.setGzdw(icResiCollectMemDetailDTO.getWorkPlace()); + // 备注 + existedUserEntity.setRemarks(icResiCollectMemDetailDTO.getRemark()); + // 户籍所在地 + existedUserEntity.setHjszd(icResiCollectMemDetailDTO.getDomicilePlace()); + icResiUserDao.updateById(existedUserEntity); } /** @@ -542,49 +590,65 @@ public class IcResiCollectServiceImpl extends BaseServiceImpl wrapper = new LambdaQueryWrapper<>(); wrapper.eq(IcResiUserEntity::getHomeId, icResiCollectEntity.getHomeId()); - wrapper.eq(IcResiUserEntity::getYhzgx, RelationshipEnum.SELF.getCode()); + wrapper.eq(IcResiUserEntity::getYhzgx, RelationshipEnum.SELF.getCode()) + .ne(IcResiUserEntity::getIdCard,icResiCollectMemDetailDTO.getIdNum()); List entityList = icResiUserDao.selectList(wrapper); + // 已经存在户主了,当前成员填写的也是户主... 暂不处理 if (CollectionUtils.isNotEmpty(entityList)) { - String errorMsg = "房屋下已存在户主"; - throw new EpmetException(EpmetErrorCode.ORG_ADD_FAILED.getCode(), errorMsg, errorMsg); + String errorMsg = "当前房屋下已存在户主"; + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), errorMsg, errorMsg); } } // 新增人员 - IcResiUserEntity userEntity = new IcResiUserEntity(); + IcResiUserEntity insertUserEntity = new IcResiUserEntity(); AgencyInfoCache agencyInfoCache = CustomerOrgRedis.getAgencyInfo(icResiCollectEntity.getAgencyId()); if (null == agencyInfoCache) { throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "所属组织查询异常,agencyId:" + icResiCollectEntity.getAgencyId(), "所属组织查询异常"); } + // 组织的pids 含agencyId本身 // userEntity.setPids(icResiCollectEntity.getPids() + ":" + icResiCollectEntity.getAgencyId()); // ic_resi_user表的组织的pids 含agencyId本身 !!! - userEntity.setPids(PidUtils.convertPid2OrgIdPath(icResiCollectEntity.getAgencyId(), agencyInfoCache.getPids())); - userEntity.setAgencyId(icResiCollectEntity.getAgencyId()); - userEntity.setGridId(icResiCollectEntity.getGridId()); - userEntity.setVillageId(icResiCollectEntity.getVillageId()); - userEntity.setBuildId(icResiCollectEntity.getBuildId()); - userEntity.setUnitId(icResiCollectEntity.getUnitId()); - userEntity.setHomeId(icResiCollectEntity.getHomeId()); - userEntity.setName(icResiCollectMemDetailDTO.getName()); - userEntity.setMobile(icResiCollectMemDetailDTO.getMobile()); - userEntity.setIdCard(icResiCollectMemDetailDTO.getIdNum()); - userEntity.setYhzgx(icResiCollectMemDetailDTO.getRelationship()); - userEntity.setGzdw(icResiCollectMemDetailDTO.getWorkPlace()); - userEntity.setRemarks(icResiCollectMemDetailDTO.getRemark()); - userEntity.setCustomerId(icResiCollectMemDetailDTO.getCustomerId()); - userEntity.setHjszd(icResiCollectMemDetailDTO.getDomicilePlace()); - icResiUserDao.insert(userEntity); + insertUserEntity.setPids(PidUtils.convertPid2OrgIdPath(icResiCollectEntity.getAgencyId(), agencyInfoCache.getPids())); + // 网格所属组织id + insertUserEntity.setAgencyId(icResiCollectEntity.getAgencyId()); + // 网格id + insertUserEntity.setGridId(icResiCollectEntity.getGridId()); + // 小区id + insertUserEntity.setVillageId(icResiCollectEntity.getVillageId()); + // 楼栋id + insertUserEntity.setBuildId(icResiCollectEntity.getBuildId()); + //单元id + insertUserEntity.setUnitId(icResiCollectEntity.getUnitId()); + //房屋id + insertUserEntity.setHomeId(icResiCollectEntity.getHomeId()); + //姓名 + insertUserEntity.setName(icResiCollectMemDetailDTO.getName()); + //手机号 + insertUserEntity.setMobile(icResiCollectMemDetailDTO.getMobile()); + insertUserEntity.setIdCard(icResiCollectMemDetailDTO.getIdNum()); + //与户主关系 + insertUserEntity.setYhzgx(icResiCollectMemDetailDTO.getRelationship()); + //工作单位 + insertUserEntity.setGzdw(icResiCollectMemDetailDTO.getWorkPlace()); + // 备注 + insertUserEntity.setRemarks(icResiCollectMemDetailDTO.getRemark()); + insertUserEntity.setCustomerId(icResiCollectMemDetailDTO.getCustomerId()); + // 户籍所在地 + insertUserEntity.setHjszd(icResiCollectMemDetailDTO.getDomicilePlace()); + icResiUserDao.insert(insertUserEntity); //变更记录表 IcUserChangeRecordEntity changeRecordEntity = new IcUserChangeRecordEntity(); changeRecordEntity.setCustomerId(icResiCollectEntity.getCustomerId()); changeRecordEntity.setOperatorId(formDTO.getUserId()); - changeRecordEntity.setIcUserId(userEntity.getId()); + changeRecordEntity.setIcUserId(insertUserEntity.getId()); changeRecordEntity.setOperatorName(formDTO.getRealName()); - changeRecordEntity.setIcUserName(userEntity.getName()); + changeRecordEntity.setIcUserName(insertUserEntity.getName()); changeRecordEntity.setType("add"); changeRecordEntity.setTypeName("新增"); changeRecordEntity.setBeforeChangeName("-"); changeRecordEntity.setAfterChangeName("-"); + changeRecordEntity.setReason("来源于信息采集"); changeRecordEntity.setChangeTime(new java.util.Date()); icUserChangeRecordService.insert(changeRecordEntity); @@ -602,11 +666,21 @@ public class IcResiCollectServiceImpl extends BaseServiceImpl queryOriginUserByHomeId(String homeId,String customerId) { LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.eq(IcResiUserEntity::getHomeId, homeId); query.eq(IcResiUserEntity::getCustomerId, customerId); List originUserList = icResiUserDao.selectList(query); + if(CollectionUtils.isEmpty(originUserList)){ + return new HashMap<>(); + } Map memMap = originUserList.stream().collect(Collectors.toMap(IcResiUserEntity::getIdCard, Function.identity())); return memMap; } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java index 05e7b81853..e0b5c91837 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java @@ -547,7 +547,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res if (existingResiMap != null) { // 修改居民信息 - icResiUserDao.upTable(tableName, existingResiMap.get("ID"), columnAndValues); + icResiUserDao.updateTableSelective(tableName, existingResiMap.get("ID"), columnAndValues); // 任意组织维度一个发生变化,则放到调动居民缓存中 ResiImportChangedData transferData; @@ -747,7 +747,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res if (CollectionUtils.isNotEmpty(subInfos)) { Map subInfo = subInfos.get(0); // 附加信息存在,更新附加表内容 - icResiUserDao.upTable(targetTableName, subInfo.get("ID").toString(), columnAndValues); + icResiUserDao.updateTableSelective(targetTableName, subInfo.get("ID").toString(), columnAndValues); } else { // 新增附加表信息 columnAndValues.put("CREATED_BY", currentUserId); @@ -1577,7 +1577,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res private void updateMainTableResiTypeFlag(IcResiUserTableEnum icResiUserTableEnum, String resiUserId) { HashMap map = new HashMap<>(); map.put(icResiUserTableEnum.getMainTableFlagColumnName(), true); - icResiUserDao.upTable(IcResiUserTableEnum.IC_RESI_USER.getTableName(), resiUserId, map); + icResiUserDao.updateTableSelective(IcResiUserTableEnum.IC_RESI_USER.getTableName(), resiUserId, map); } /** diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java index 14b38364dd..13d5a1bc4f 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java @@ -332,7 +332,8 @@ public class IcResiUserServiceImpl extends BaseServiceImpl wrapper = new LambdaQueryWrapper<>(); wrapper.eq(IcResiUserEntity::getHomeId, map.get("HOME_ID")); - wrapper.eq(IcResiUserEntity::getYhzgx, RelationshipEnum.SELF.getCode()); + wrapper.eq(IcResiUserEntity::getYhzgx, RelationshipEnum.SELF.getCode()) + .eq(IcResiUserEntity::getStatus,NumConstant.ZERO_STR); List entityList = baseDao.selectList(wrapper); if (CollectionUtils.isNotEmpty(entityList)) { String errorMsg = "房屋下已存在户主"; @@ -601,7 +602,8 @@ public class IcResiUserServiceImpl extends BaseServiceImpl wrapper = new LambdaQueryWrapper<>(); wrapper.eq(IcResiUserEntity::getHomeId, entity.getHomeId()); - wrapper.eq(IcResiUserEntity::getYhzgx, RelationshipEnum.SELF.getCode()); + wrapper.eq(IcResiUserEntity::getYhzgx, RelationshipEnum.SELF.getCode()) + .eq(IcResiUserEntity::getStatus,NumConstant.ZERO_STR); List entityList = baseDao.selectList(wrapper); if (CollectionUtils.isNotEmpty(entityList)) { String errorMsg = "房屋下已存在户主"; @@ -712,7 +714,7 @@ public class IcResiUserServiceImpl extends BaseServiceImpl", resiUserId)); } //2022-1-18 信息修改判断基础信息表人员网格、小区、楼栋、单元、房屋维度数据以及十八类的类别数据是否变化,相应生成变更记录和变更明细数据 sun start - icUserChangeRecord(tokenDto, entity, map); + icUserChangeRecord(entity, map); //2022-1-18 sun end //2.更新主表数据 if (map.size() > NumConstant.ONE) { @@ -793,10 +795,16 @@ public class IcResiUserServiceImpl extends BaseServiceImpl map) { + * @description: 生成居民变更记录 + * @param null: + * @return + * @author: sun + */ + public void icUserChangeRecord(IcResiUserEntity entity, LinkedHashMap map) { + // prepare + String customerId = EpmetRequestHolder.getLoginUserCustomerId(); + String staffId = EpmetRequestHolder.getLoginUserId(); + java.util.Date date = new java.util.Date(); //1.判断维度数据是否修改【网格、小区、楼栋、单元、房间有变化则先走人员调动逻辑】 if ((map.containsKey("GRID_ID") && !entity.getGridId().equals(map.get("GRID_ID"))) || (map.containsKey("VILLAGE_ID") && !entity.getVillageId().equals(map.get("VILLAGE_ID"))) @@ -813,13 +821,13 @@ public class IcResiUserServiceImpl extends BaseServiceImpl> categoryListResult = operCustomizeOpenFeignClient.getCategoryList(sfdto); if (!categoryListResult.success()) { throw new RenException("居民信息修改,获取客户居民类别预警配置表数据失败"); @@ -844,7 +852,7 @@ public class IcResiUserServiceImpl extends BaseServiceImpl NumConstant.ZERO) { //变更记录 - CustomerStaffInfoCacheResult staffInfoCache = CustomerStaffRedis.getStaffInfo(tokenDto.getCustomerId(), tokenDto.getUserId()); - changeRecordEntity.setCustomerId(tokenDto.getCustomerId()); - changeRecordEntity.setOperatorId(tokenDto.getUserId()); + CustomerStaffInfoCacheResult staffInfoCache = CustomerStaffRedis.getStaffInfo(customerId, staffId); + changeRecordEntity.setCustomerId(customerId); + changeRecordEntity.setOperatorId(staffId); changeRecordEntity.setIcUserId(entity.getId()); changeRecordEntity.setOperatorName(staffInfoCache.getRealName()); changeRecordEntity.setIcUserName(map.containsKey("NAME") ? map.get("NAME") : entity.getName()); @@ -2768,7 +2776,8 @@ public class IcResiUserServiceImpl extends BaseServiceImpl wrapper = new LambdaQueryWrapper<>(); wrapper.eq(IcResiUserEntity::getHomeId, dto.getHomeId()); - wrapper.eq(IcResiUserEntity::getYhzgx, RelationshipEnum.SELF.getCode()); + wrapper.eq(IcResiUserEntity::getYhzgx, RelationshipEnum.SELF.getCode()) + .eq(IcResiUserEntity::getStatus,NumConstant.ZERO_STR); List entityList = baseDao.selectList(wrapper); if (CollectionUtils.isNotEmpty(entityList)) { String errorMsg = "房屋下已存在户主"; @@ -2790,7 +2799,8 @@ public class IcResiUserServiceImpl extends BaseServiceImpl wrapper = new LambdaQueryWrapper<>(); wrapper.eq(IcResiUserEntity::getHomeId, dto.getHomeId()); - wrapper.eq(IcResiUserEntity::getYhzgx, RelationshipEnum.SELF.getCode()); + wrapper.eq(IcResiUserEntity::getYhzgx, RelationshipEnum.SELF.getCode()) + .eq(IcResiUserEntity::getStatus,NumConstant.ZERO_STR); List entityList = baseDao.selectList(wrapper); if (CollectionUtils.isNotEmpty(entityList)) { String errorMsg = "房屋下已存在户主"; @@ -2840,7 +2850,8 @@ public class IcResiUserServiceImpl extends BaseServiceImpl wrapper = new LambdaQueryWrapper<>(); wrapper.eq(IcResiUserEntity::getHomeId, user.getHomeId()); - wrapper.eq(IcResiUserEntity::getYhzgx, RelationshipEnum.SELF.getCode()); + wrapper.eq(IcResiUserEntity::getYhzgx, RelationshipEnum.SELF.getCode()) + .eq(IcResiUserEntity::getStatus,NumConstant.ZERO_STR); List entityList = baseDao.selectList(wrapper); if (CollectionUtils.isNotEmpty(entityList)) { String errorMsg = "房屋下已存在户主"; @@ -2872,7 +2883,8 @@ public class IcResiUserServiceImpl extends BaseServiceImpl wrapper = new LambdaQueryWrapper<>(); wrapper.eq(IcResiUserEntity::getHomeId, houseInfo.getHouseId()); - wrapper.eq(IcResiUserEntity::getYhzgx, RelationshipEnum.SELF.getCode()); + wrapper.eq(IcResiUserEntity::getYhzgx, RelationshipEnum.SELF.getCode()) + .eq(IcResiUserEntity::getStatus,NumConstant.ZERO_STR); List entityList = baseDao.selectList(wrapper); if (CollectionUtils.isNotEmpty(entityList)) { String errorMsg = "房屋下已存在户主"; diff --git a/epmet-user/epmet-user-server/src/main/resources/logback-spring.xml b/epmet-user/epmet-user-server/src/main/resources/logback-spring.xml index 899eed6c7a..a3b40f72e6 100644 --- a/epmet-user/epmet-user-server/src/main/resources/logback-spring.xml +++ b/epmet-user/epmet-user-server/src/main/resources/logback-spring.xml @@ -3,7 +3,8 @@ - + + diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiCollectDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiCollectDao.xml index 35090d4a12..ea43232174 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiCollectDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiCollectDao.xml @@ -19,6 +19,7 @@ + @@ -32,6 +33,7 @@ c.HOME_ID as homeId, c.CHECK_STATE as checkState, c.AGENCY_ID as agencyId, + c.GRID_ID as gridId, #{domicilePlace} as domicile_place FROM ic_resi_collect c left join ic_resi_member m on(c.id=m.IC_RESI_COLLECT_ID and m.del_flag='0') @@ -54,6 +56,12 @@ AND m.DOMICILE_PLACE LIKE CONCAT('%',#{domicilePlace},'%') + + AND c.CHECK_STATE = #{checkState} + + + AND c.HOUSE_HOLDER_NAME like concat('%', #{houseHolderName},'%') + ORDER BY c.CREATED_TIME DESC select * from ic_resi_user where del_flag='0' and id=#{icResiUserId} and customer_id=#{customerId}