diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/result/OptionResultDTO.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/result/OptionResultDTO.java index 95741eb813..4226c2acac 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/result/OptionResultDTO.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/result/OptionResultDTO.java @@ -20,4 +20,5 @@ public class OptionResultDTO implements Serializable { private String sysDictDataId; private List children; private Boolean usableFlag; + private String type; } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenProjectDataDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenProjectDataDao.xml index 51f9a0fcb6..f132877210 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenProjectDataDao.xml +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenProjectDataDao.xml @@ -394,61 +394,61 @@ diff --git a/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/utils/ImportTaskUtils.java b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/utils/ImportTaskUtils.java new file mode 100644 index 0000000000..80bf086374 --- /dev/null +++ b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/utils/ImportTaskUtils.java @@ -0,0 +1,51 @@ +package com.epmet.utils; + +import com.epmet.commons.tools.constant.AppClientConstant; +import com.epmet.commons.tools.feign.ResultDataResolver; +import com.epmet.commons.tools.utils.EpmetRequestHolder; +import com.epmet.commons.tools.utils.Result; +import com.epmet.commons.tools.utils.SpringContextUtils; +import com.epmet.dto.form.ImportTaskCommonFormDTO; +import com.epmet.dto.result.ImportTaskCommonResultDTO; +import com.epmet.feign.EpmetCommonServiceOpenFeignClient; + +/** + * 导入任务工具类,用于创建/完成导入工具 + */ +public class ImportTaskUtils implements ResultDataResolver { + + /** + * 创建导入任务,可能抛出8000异常,请考虑捕获异常 + * @param originFileName 上传的文件的名称 + * @param bizType 业务类型,见ImportTaskConstants常量 + * @return Result + */ + public static Result createImportTask(String originFileName, String bizType) { + ImportTaskCommonFormDTO form = new ImportTaskCommonFormDTO(); + form.setOriginFileName(originFileName); + form.setOperatorId(EpmetRequestHolder.getHeader(AppClientConstant.USER_ID)); + form.setBizType(bizType); + + return SpringContextUtils.getBean(EpmetCommonServiceOpenFeignClient.class).createImportTask(form); + } + + /** + * 结束导入任务 + * @param taskId 任务ID + * @param processStatus 处理状态 见ImportTaskConstants + * @param resultDescFilePath 结果描述文件的路径 + * @param resultDesc 结果简要描述文字 + * @return Result + */ + public static Result finishImportTask(String taskId, String processStatus, String resultDescFilePath, String resultDesc) { + ImportTaskCommonFormDTO form = new ImportTaskCommonFormDTO(); + form.setTaskId(taskId); + form.setOperatorId(EpmetRequestHolder.getHeader(AppClientConstant.USER_ID)); + form.setProcessStatus(processStatus); + form.setResultDescFilePath(resultDescFilePath); + form.setResultDesc(resultDesc); + + return SpringContextUtils.getBean(EpmetCommonServiceOpenFeignClient.class).finishImportTask(form); + } + +} \ No newline at end of file diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueProjectCategoryDictDao.xml b/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueProjectCategoryDictDao.xml index 6c38707498..f67db1aaa1 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueProjectCategoryDictDao.xml +++ b/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueProjectCategoryDictDao.xml @@ -41,7 +41,7 @@ ORDER BY sort ASC - SELECT ID, PID, diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java index 41519ad6ff..20e1d2d4ef 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java @@ -72,7 +72,6 @@ public class BuildingServiceImpl implements BuildingService { private IcBuildingUnitService icBuildingUnitService; @Resource private IcHouseDao icHouseDao; - @Resource private CustomerAgencyDao customerAgencyDao; @Resource diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcHouseServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcHouseServiceImpl.java index 527a5cf986..102dbc168f 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcHouseServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcHouseServiceImpl.java @@ -127,6 +127,7 @@ public class IcHouseServiceImpl extends BaseServiceImpl imp EasyExcel.read(filePath.toFile(), IcNatImportExcelData.class, listener).headRowNumber(2).sheet(0).doRead(); - Path errorDescFile = null; String errorDesFileUrl = null; List errorRows = listener.getErrorRows(); @@ -340,16 +341,19 @@ public class IcNatServiceImpl extends BaseServiceImpl imp errorRows.addAll(otherRows); // 生成并上传描述文件 + OutputStream os = null; + FileItem fileItem = null; if (errorRows.size() > 0) { try { // 文件生成 Path errorDescDir = FileUtils.getAndCreateDirUnderEpmetFilesDir("ic_nat", "import", "error_des"); - String fileName = UUID.randomUUID().toString().concat(".xlsx"); - errorDescFile = errorDescDir.resolve(fileName); + String timeMillis = String.valueOf(System.currentTimeMillis()); + String fileName = "icnat_import_error_".concat(timeMillis).concat(".xlsx"); - FileItemFactory factory = new DiskFileItemFactory(16, errorDescDir.toFile()); - FileItem fileItem = factory.createItem("file", ContentType.APPLICATION_OCTET_STREAM.toString(), true, fileName); - OutputStream os = fileItem.getOutputStream(); + fileItem = new DiskFileItemFactory(DiskFileItemFactory.DEFAULT_SIZE_THRESHOLD, errorDescDir.toFile()) + .createItem("file", ContentType.APPLICATION_OCTET_STREAM.toString(), false, fileName); + + os = fileItem.getOutputStream(); EasyExcel.write(os, IcNatImportExcelData.RowRemarkMessage.class).sheet("信息列表").doWrite(errorRows); // 文件上传oss @@ -357,38 +361,33 @@ public class IcNatServiceImpl extends BaseServiceImpl imp if (errorDesFileUploadResult.success()) { errorDesFileUrl = errorDesFileUploadResult.getData().getUrl(); } - } finally { - if (Files.exists(errorDescFile)) { - Files.delete(errorDescFile); + IOUtils.closeQuietly(os); + try { + fileItem.delete(); + } catch (Exception e){ + log.error("【核酸检测导入】删除临时描述文件失败:{}", ExceptionUtils.getErrorStackTrace(e)); } } } - ImportTaskCommonFormDTO importFinishTaskForm = new ImportTaskCommonFormDTO(); - importFinishTaskForm.setTaskId(importTaskId); - importFinishTaskForm.setProcessStatus(failed ? ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL : ImportTaskConstants.PROCESS_STATUS_FINISHED_SUCCESS); - importFinishTaskForm.setOperatorId(userId); - importFinishTaskForm.setResultDesc(""); - importFinishTaskForm.setResultDescFilePath(errorDesFileUrl); + // 完成导入 + Result result = ImportTaskUtils.finishImportTask(importTaskId, + failed ? ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL : ImportTaskConstants.PROCESS_STATUS_FINISHED_SUCCESS, + errorDesFileUrl, + ""); - Result result = commonServiceOpenFeignClient.finishImportTask(importFinishTaskForm); if (!result.success()) { - log.error("【核酸检测导入】finishImportTask失败"); + log.error("【核酸检测导入】导入记录状态修改为'finished_success'失败"); } } 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(userId); - importFinishTaskForm.setResultDesc("导入失败"); + Result result = ImportTaskUtils.finishImportTask(importTaskId, ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL, null, "导入失败"); - Result result = commonServiceOpenFeignClient.finishImportTask(importFinishTaskForm); if (!result.success()) { - log.error("【核酸检测导入】导入记录状态修改为'完成'失败"); + log.error("【核酸检测导入】导入记录状态修改为'finished_fail'失败"); } } finally { // 删除临时文件 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 ee23c3f7d1..07e97ea7b8 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 @@ -25,6 +25,7 @@ import com.epmet.commons.tools.redis.RedisUtils; import com.epmet.commons.tools.redis.common.CustomerStaffRedis; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.EpmetRequestHolder; +import com.epmet.commons.tools.utils.FileUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.constants.ImportTaskConstants; import com.epmet.dao.IcResiUserDao; @@ -458,6 +459,8 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res columnAndValues.put("IS_CJ", "0"); columnAndValues.put("IS_DB", "0"); columnAndValues.put("IS_MB", "0"); + columnAndValues.put("IS_TENANT", "0"); + columnAndValues.put("IS_FLOATING", "0"); } else { // 该居民已存在,要做更新操作,因为还没有读取子sheet,所以这些居民最新类别没有办法获取,先设置上旧的数据 columnAndValues.put("IS_ENSURE_HOUSE", existingResiMap.get("IS_ENSURE_HOUSE")); @@ -478,6 +481,8 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res columnAndValues.put("IS_CJ", existingResiMap.get("IS_CJ")); columnAndValues.put("IS_DB", existingResiMap.get("IS_DB")); columnAndValues.put("IS_MB", existingResiMap.get("IS_MB")); + columnAndValues.put("IS_TENANT", existingResiMap.get("IS_TENANT")); + columnAndValues.put("IS_FLOATING", existingResiMap.get("IS_FLOATING")); } columnAndValues.put("AGENCY_ID", currUserAgencyId); @@ -1244,8 +1249,8 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res // 文件名 String resultDescFileName = UUID.randomUUID().toString().concat(".xls"); - FileItemFactory factory = new DiskFileItemFactory(16, null); - FileItem fileItem = factory.createItem("file", ContentType.APPLICATION_OCTET_STREAM.toString(), true, resultDescFileName); + FileItem fileItem = new DiskFileItemFactory(DiskFileItemFactory.DEFAULT_SIZE_THRESHOLD, FileUtils.getAndCreateDirUnderEpmetFilesDir("temp").toFile()) + .createItem("file", ContentType.APPLICATION_OCTET_STREAM.toString(), false, resultDescFileName); OutputStream os = fileItem.getOutputStream(); Result uploadResult = null; try { 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 cf96262820..bf4e68bd1d 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 @@ -208,6 +208,19 @@ public class IcResiUserServiceImpl extends BaseServiceImpl wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(IcResiUserEntity::getHomeId, map.get("HOME_ID")); + wrapper.eq(IcResiUserEntity::getYhzgx, RelationshipEnum.SELF.getCode()); + List entityList = baseDao.selectList(wrapper); + if (CollectionUtils.isNotEmpty(entityList)) { + String errorMsg = "房屋下已存在户主"; + throw new EpmetException(EpmetErrorCode.ORG_ADD_FAILED.getCode(), errorMsg, errorMsg); + } + + } + //2022.04.19 end //查询组织信息 String agencyId = map.get("AGENCY_ID"); Result result = govOrgOpenFeignClient.getAgencyById(agencyId); @@ -325,6 +338,21 @@ public class IcResiUserServiceImpl extends BaseServiceImpl wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(IcResiUserEntity::getHomeId, entity.getHomeId()); + wrapper.eq(IcResiUserEntity::getYhzgx, RelationshipEnum.SELF.getCode()); + List entityList = baseDao.selectList(wrapper); + if (CollectionUtils.isNotEmpty(entityList)) { + String errorMsg = "房屋下已存在户主"; + throw new EpmetException(EpmetErrorCode.ORG_ADD_FAILED.getCode(), errorMsg, errorMsg); + } + } + } + //2022.04.19 end resiUserId = map.get("ID"); } } @@ -1036,14 +1064,7 @@ public class IcResiUserServiceImpl extends BaseServiceImpl houseResult = govOrgOpenFeignClient.get(user.getHomeId()); - if (!houseResult.success()) { - throw new RenException(houseResult.getCode(),houseResult.getMsg()); - } - result.setOwnerName(houseResult.getData().getOwnerName()); - + result.setOwnerName(""); //获取用户所在家庭里所有人员信息 LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(IcResiUserEntity::getHomeId, user.getHomeId()); @@ -1057,6 +1078,10 @@ public class IcResiUserServiceImpl extends BaseServiceImpl idCards = list.stream().map(m -> m.getIdCard()).distinct().collect(Collectors.toList()); - if (CollectionUtils.isNotEmpty(idCards)){ - Result> housesNameByIdCards = govOrgOpenFeignClient.getHousesNameByIdCards(idCards); - if (!housesNameByIdCards.success()){ + Set homeIds = list.stream().filter(m -> StringUtils.isNotBlank(m.getIdCard())).map(m -> m.getHomeId()).distinct().collect(Collectors.toSet()); + if (CollectionUtils.isNotEmpty(homeIds)){ + Result> houseInfoRes = govOrgOpenFeignClient.queryListHouseInfo(homeIds, formDTO.getCustomerId()); + if (!houseInfoRes.success()){ throw new EpmetException("查询居民所属房屋失败..."); } - if (CollectionUtils.isNotEmpty(housesNameByIdCards.getData())){ - list.forEach(l -> housesNameByIdCards.getData().stream().filter( h -> h.getIdCard().equals(l.getIdCard())).forEach(h -> l.setHouseName(h.getHouseName()))); + if (CollectionUtils.isNotEmpty(houseInfoRes.getData())){ + list.forEach(l -> houseInfoRes.getData().stream().filter( h -> h.getHomeId().equals(l.getHomeId())).forEach(h -> l.setHouseName(h.getAllName()))); } } PageInfo pageInfo = new PageInfo<>(list); diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcVaccineServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcVaccineServiceImpl.java index ec33974bf8..389e23ba04 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcVaccineServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcVaccineServiceImpl.java @@ -37,6 +37,7 @@ import com.epmet.feign.EpmetCommonServiceOpenFeignClient; import com.epmet.feign.OssFeignClient; import com.epmet.service.IcVaccineService; import com.epmet.service.UserService; +import com.epmet.utils.ImportTaskUtils; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import lombok.extern.slf4j.Slf4j; @@ -45,6 +46,7 @@ import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileItemFactory; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.http.entity.ContentType; +import org.apache.poi.util.IOUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; @@ -177,7 +179,6 @@ public class IcVaccineServiceImpl extends BaseServiceImpl errorRows = listener.getErrorRows(); @@ -189,16 +190,17 @@ public class IcVaccineServiceImpl extends BaseServiceImpl 0) { try { // 文件生成 Path errorDescDir = FileUtils.getAndCreateDirUnderEpmetFilesDir("ic_vaccine", "import", "error_des"); String fileName = UUID.randomUUID().toString().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(); + fileItem = new DiskFileItemFactory(DiskFileItemFactory.DEFAULT_SIZE_THRESHOLD, errorDescDir.toFile()) + .createItem("file", ContentType.APPLICATION_OCTET_STREAM.toString(), false, fileName); + os = fileItem.getOutputStream(); EasyExcel.write(os, IcNatImportExcelData.RowRemarkMessage.class).sheet("信息列表").doWrite(errorRows); // 文件上传oss @@ -208,20 +210,23 @@ public class IcVaccineServiceImpl extends BaseServiceImpl