From 9530f597dfa0146cdb9eeee2683c28c4e77bf5fd Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Tue, 19 Apr 2022 09:26:36 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E8=A7=A3=E5=86=B3"=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E5=AE=A2=E6=88=B7=E8=AE=AE=E9=A2=98=E9=A1=B9=E7=9B=AE=E7=9A=84?= =?UTF-8?q?=E5=88=86=E7=B1=BB=E4=BF=A1=E6=81=AF=E4=BB=A5=E5=8F=8A=E9=80=92?= =?UTF-8?q?=E5=BD=92=E6=9F=A5=E8=AF=A2=E4=BA=8C=E7=BA=A7=E5=88=86=E7=B1=BB?= =?UTF-8?q?=E4=BF=A1=E6=81=AF"=E7=9A=84=E7=B1=BB=E5=9E=8B=E8=BD=AC?= =?UTF-8?q?=E6=8D=A2=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/mapper/IssueProjectCategoryDictDao.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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, From d719d15f633bbf326a2fc963685ea66c64762a97 Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Tue, 19 Apr 2022 11:07:06 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9AimportTask?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E5=AF=B9=E5=BA=94=E7=9A=84=E5=B7=A5=E5=85=B7?= =?UTF-8?q?=E7=B1=BBImportTaskUtils=EF=BC=8C=E7=94=A8=E8=B5=B7=E6=9D=A5?= =?UTF-8?q?=E6=9B=B4=E6=B8=85=E7=88=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/epmet/utils/ImportTaskUtils.java | 51 +++++++++++++++++++ .../com/epmet/controller/IcNatController.java | 9 ++-- .../epmet/service/impl/IcNatServiceImpl.java | 24 ++++----- 3 files changed, 63 insertions(+), 21 deletions(-) create mode 100644 epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/utils/ImportTaskUtils.java 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-user/epmet-user-server/src/main/java/com/epmet/controller/IcNatController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcNatController.java index 17502c65e0..e65121e55d 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcNatController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcNatController.java @@ -28,6 +28,7 @@ import com.epmet.dto.result.NatListCommonExcelResultDTO; import com.epmet.dto.result.NatListResultDTO; import com.epmet.feign.EpmetCommonServiceOpenFeignClient; import com.epmet.service.IcNatService; +import com.epmet.utils.ImportTaskUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.io.IOUtils; @@ -221,12 +222,8 @@ public class IcNatController implements ResultDataResolver { } // 2.生成导入任务记录 - ImportTaskCommonFormDTO importTaskForm = new ImportTaskCommonFormDTO(); - importTaskForm.setOperatorId(userId); - importTaskForm.setBizType(ImportTaskConstants.BIZ_TYPE_IC_NAT); - importTaskForm.setOriginFileName(originalFilename); - - ImportTaskCommonResultDTO rstData = getResultDataOrThrowsException(commonServiceOpenFeignClient.createImportTask(importTaskForm), + ImportTaskCommonResultDTO rstData = getResultDataOrThrowsException( + ImportTaskUtils.createImportTask(originalFilename, ImportTaskConstants.BIZ_TYPE_IC_NAT), ServiceConstant.EPMET_COMMON_SERVICE, EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "excel导入核酸检测信息错误", diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcNatServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcNatServiceImpl.java index 5307df5cb1..2723d47b37 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcNatServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcNatServiceImpl.java @@ -40,6 +40,7 @@ import com.epmet.feign.OssFeignClient; import com.epmet.service.IcNatService; import com.epmet.service.IcNoticeService; 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; @@ -365,30 +366,23 @@ public class IcNatServiceImpl extends BaseServiceImpl imp } } - 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 { // 删除临时文件 From 4bc3710435fe304288c29ad4da808cc9c2e16195 Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Tue, 19 Apr 2022 17:19:33 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E6=94=B9=E9=80=A0=E3=80=90=E6=A0=B8?= =?UTF-8?q?=E9=85=B8=E6=A3=80=E6=B5=8B=E5=AF=BC=E5=85=A5=E3=80=91=E3=80=90?= =?UTF-8?q?=E5=B1=85=E6=B0=91=E4=BF=A1=E6=81=AF=E5=AF=BC=E5=85=A5=E3=80=91?= =?UTF-8?q?=E3=80=90=E7=96=AB=E8=8B=97=E6=8E=A5=E7=A7=8D=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=E3=80=91=E7=9A=84importTask=E4=BC=A0=E8=BE=93=EF=BC=8C?= =?UTF-8?q?=E5=B0=81=E8=A3=85=E4=BA=86=E5=B7=A5=E5=85=B7=E7=B1=BB=EF=BC=8C?= =?UTF-8?q?=E5=87=8F=E5=B0=91=E4=BB=A3=E7=A0=81=E3=80=82=E8=B0=83=E6=95=B4?= =?UTF-8?q?FileItem=E4=B8=B4=E6=97=B6=E6=96=87=E4=BB=B6=E7=9A=84=E4=B8=80?= =?UTF-8?q?=E4=BA=9B=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epmet/controller/IcVaccineController.java | 9 ++---- .../epmet/service/impl/IcNatServiceImpl.java | 23 ++++++++------ .../impl/IcResiUserImportServiceImpl.java | 5 +-- .../service/impl/IcVaccineServiceImpl.java | 31 ++++++++++--------- 4 files changed, 37 insertions(+), 31 deletions(-) diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcVaccineController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcVaccineController.java index 297c30ae15..166cdecf32 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcVaccineController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcVaccineController.java @@ -25,6 +25,7 @@ import com.epmet.dto.result.IcVaccineListResultDTO; import com.epmet.dto.result.ImportTaskCommonResultDTO; import com.epmet.feign.EpmetCommonServiceOpenFeignClient; import com.epmet.service.IcVaccineService; +import com.epmet.utils.ImportTaskUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.io.IOUtils; @@ -138,12 +139,8 @@ public class IcVaccineController implements ResultDataResolver { } // 2.生成导入任务记录 - ImportTaskCommonFormDTO importTaskForm = new ImportTaskCommonFormDTO(); - importTaskForm.setOperatorId(userId); - importTaskForm.setBizType(ImportTaskConstants.BIZ_TYPE_IC_VACCINE); - importTaskForm.setOriginFileName(originalFilename); - - ImportTaskCommonResultDTO rstData = getResultDataOrThrowsException(commonServiceOpenFeignClient.createImportTask(importTaskForm), + ImportTaskCommonResultDTO rstData = getResultDataOrThrowsException( + ImportTaskUtils.createImportTask(originalFilename, ImportTaskConstants.BIZ_TYPE_IC_VACCINE), ServiceConstant.EPMET_COMMON_SERVICE, EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "excel导入疫苗接种信息错误", diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcNatServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcNatServiceImpl.java index 2723d47b37..95a22ff271 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcNatServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcNatServiceImpl.java @@ -49,6 +49,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; @@ -329,7 +330,6 @@ public class IcNatServiceImpl 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(); @@ -341,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 @@ -358,10 +361,12 @@ 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(); + } finally { + log.error("【核酸检测导入】删除临时描述文件失败"); } } } 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..c680ea94b8 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; @@ -1244,8 +1245,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/IcVaccineServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcVaccineServiceImpl.java index ec33974bf8..350c361ac4 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,21 @@ public class IcVaccineServiceImpl extends BaseServiceImpl