From 5988f83f7a59f1d3d7b0799add3264296e7441a1 Mon Sep 17 00:00:00 2001 From: sunyuchao Date: Mon, 11 Apr 2022 17:33:42 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=20=E8=AF=B7=E6=B1=82=E6=96=B9=E5=BC=8F?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/epmet/controller/BackDoorController.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/controller/BackDoorController.java b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/controller/BackDoorController.java index 047ae55ce6..f5f762838b 100644 --- a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/controller/BackDoorController.java +++ b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/controller/BackDoorController.java @@ -44,7 +44,8 @@ public class BackDoorController { * @param customerId * @return */ - @GetMapping(value = "initpointrule") + //@GetMapping(value = "initpointrule") + @RequestMapping(value = "initpointrule", method = {RequestMethod.POST, RequestMethod.GET}) public Result initPointRule(@RequestParam(required = false) String customerId) { InitPointRuleResultDTO resultDTO = pointRuleService.initPointRule(customerId); return new Result().ok(resultDTO); From 3be65b0ff8f02cf76692df23961426c893598988 Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Mon, 11 Apr 2022 20:18:04 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E5=B1=85=E6=B0=91=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E5=AF=BC=E5=85=A5=EF=BC=8C=E5=A2=9E=E5=8A=A0=E4=BA=86OfficeXml?= =?UTF-8?q?FileException=E5=BC=82=E5=B8=B8=E7=9A=84=E5=88=A4=E6=96=AD?= =?UTF-8?q?=EF=BC=8C=E4=BB=A5=E9=98=B2=E6=9C=89=E7=94=A8=E6=88=B7=E4=B9=B1?= =?UTF-8?q?=E6=94=B9=E5=90=8E=E7=BC=80=E5=90=8D=E5=AF=BC=E8=87=B4excel?= =?UTF-8?q?=E5=AF=BC=E5=85=A5=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/epmet/controller/IcResiUserController.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java index 1f0a127b5f..0bfc2fa442 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java @@ -63,6 +63,7 @@ import org.apache.commons.io.FileUtils; import org.apache.commons.io.FilenameUtils; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.poi.poifs.filesystem.OfficeXmlFileException; import org.jetbrains.annotations.NotNull; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpHeaders; @@ -476,8 +477,15 @@ public class IcResiUserController implements ResultDataResolver { String errorMsg = ExceptionUtils.getThrowableErrorStackTrace(e); log.error("【导入居民信息失败】导入失败:{}", errorMsg); + String resultDesc; + if (e instanceof OfficeXmlFileException) { + resultDesc = "文件格式异常,请确保使用下载的模板文件"; + } else { + resultDesc = "系统异常,请查看系统日志"; + } + // 要将导入任务状态设置为结束但不成功。不报错即成功,没有返回值 - icResiUserImportService.finishImportTask(importTaskId, operatorId, ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL, "系统异常,请查看系统日志", null); + icResiUserImportService.finishImportTask(importTaskId, operatorId, ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL, resultDesc, null); } finally { try { if (importTempFileSavePath != null){ From 540692c2c84beb3c7d56b46749349fb187027adb Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Tue, 12 Apr 2022 12:50:17 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=9A=E5=B1=85?= =?UTF-8?q?=E6=B0=91=E4=BF=A1=E6=81=AF=E5=AF=BC=E5=85=A5=E6=A8=A1=E6=9D=BF?= =?UTF-8?q?=E4=B8=8B=E8=BD=BD=20=E4=BF=AE=E6=94=B9=EF=BC=9A=E5=B1=85?= =?UTF-8?q?=E6=B0=91=E4=BF=A1=E6=81=AF=E5=AF=BC=E5=85=A5=EF=BC=8C=E5=A6=82?= =?UTF-8?q?=E6=9E=9C=E6=9C=AA=E5=85=A8=E6=88=90=E5=8A=9F=EF=BC=8C=E9=82=A3?= =?UTF-8?q?=E4=B9=88=E4=BF=9D=E7=95=99=E4=B8=B4=E6=97=B6=E4=B8=8A=E4=BC=A0?= =?UTF-8?q?=E7=9A=84=E9=82=A3=E4=B8=AAexcel=E6=96=87=E4=BB=B6=EF=BC=8C?= =?UTF-8?q?=E4=BE=9B=E6=8E=92=E6=9F=A5=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/IcResiUserController.java | 53 +++++++++--------- .../service/IcResiUserImportService.java | 2 +- .../impl/IcResiUserImportServiceImpl.java | 9 ++- ..._excel.xls => ic_resi_import_template.xls} | Bin 4 files changed, 35 insertions(+), 29 deletions(-) rename epmet-user/epmet-user-server/src/main/resources/excel/{ic_resi_info_import_cid_for_easy_excel.xls => ic_resi_import_template.xls} (100%) diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java index 0bfc2fa442..f054e77608 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java @@ -72,6 +72,7 @@ import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; +import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.File; @@ -135,7 +136,7 @@ public class IcResiUserController implements ResultDataResolver { * 模板枚举 */ public enum IcUserTemplateEnums { - IC_RESI_IMPORT_TEMPLATE("excel/ic_resi_info_import_cid_for_easy_excel.xls", "居民信息导入模板.xls"), + IC_RESI_IMPORT_TEMPLATE("excel/ic_resi_import_template.xls", "居民信息导入模板.xls"), IC_RESI_EXPORT_TEMPLATE("excel/ic_resi_info_cid_for_easy_excel.xlsx", "居民信息导出模板.xlsx"); private String pathInApp; @@ -157,18 +158,13 @@ public class IcResiUserController implements ResultDataResolver { { // 初始化上传目录 - String home = System.getProperty("user.home"); - Path importDir = Paths.get(home, "epmet_files", "ic_user_import"); - if (Files.notExists(importDir)) { - try { - Files.createDirectories(importDir); - } catch (IOException e) { - log.error("创建数字赋能平台上传目录失败"); - } + try { + IC_RESI_UPLOAD_DIR = com.epmet.commons.tools.utils.FileUtils.getAndCreateDirUnderEpmetFilesDir("ic_user_import"); + } catch (IOException e) { + log.error("初始化居民信息上传目录失败:{}", ExceptionUtils.getErrorStackTrace(e)); } - IC_RESI_UPLOAD_DIR = importDir; - Path exportDir = Paths.get(home, "epmet_files", "ic_user_export"); + Path exportDir = Paths.get(System.getProperty("user.home"), "epmet_files", "ic_user_export"); if (Files.notExists(exportDir)) { try { Files.createDirectories(exportDir); @@ -469,10 +465,10 @@ public class IcResiUserController implements ResultDataResolver { // 三.异步执行导入 executorService.execute(() -> { - + boolean isAllSuccess = false; try { List formItemList = icResiUserService.listFormItems(customerId,IcFormCodeEnum.RESI_BASE_INFO.getCode()); - icResiUserImportService.importIcResiInfoFromExcel(importTaskId, formItemList, importTempFileSavePath.toString(), response, IC_RESI_UPLOAD_DIR); + isAllSuccess = icResiUserImportService.importIcResiInfoFromExcel(importTaskId, formItemList, importTempFileSavePath.toString(), response, IC_RESI_UPLOAD_DIR); } catch (Throwable e) { String errorMsg = ExceptionUtils.getThrowableErrorStackTrace(e); log.error("【导入居民信息失败】导入失败:{}", errorMsg); @@ -488,8 +484,13 @@ public class IcResiUserController implements ResultDataResolver { icResiUserImportService.finishImportTask(importTaskId, operatorId, ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL, resultDesc, null); } finally { try { + // 都导入成功了没问题,才删除 if (importTempFileSavePath != null){ - Files.delete(importTempFileSavePath); + if (isAllSuccess) { + Files.delete(importTempFileSavePath); + } else { + log.error("【导入居民信息】未完全成功,上传文件:{}", importTempFileSavePath); + } } } catch (IOException e) { log.error("【导入居民信息失败】清理上传的文件失败:{}", ExceptionUtils.getErrorStackTrace(e)); @@ -585,28 +586,30 @@ public class IcResiUserController implements ResultDataResolver { /** * 下载ic居民信息导入excel模板 - * @param loginUserInfo * @return */ @PostMapping("import/download-template") - public ResponseEntity downloadIcResiDownloadTemplate(@LoginUser TokenDto loginUserInfo) { - String customerId = loginUserInfo.getCustomerId(); - + public void downloadIcResiDownloadTemplate(HttpServletResponse response) { + InputStream is = null; + ServletOutputStream os = null; try { - File icResiImportTemplateFile = getIcResiTemplateFile(customerId, IcUserTemplateEnums.IC_RESI_IMPORT_TEMPLATE); + os = response.getOutputStream(); + + is = this.getClass().getClassLoader().getResourceAsStream(IcUserTemplateEnums.IC_RESI_IMPORT_TEMPLATE.getPathInApp()); - HttpHeaders headers = new HttpHeaders(); - headers.add("Access-Control-Expose-Headers", "Content-Disposition"); - headers.add("content-Type", "application/vnd.ms-excel"); - headers.add("Content-Disposition", "attachment;fileName=" + URLEncoder.encode(IcUserTemplateEnums.IC_RESI_IMPORT_TEMPLATE.getTemplateName(), "UTF-8")); + response.setHeader("Access-Control-Expose-Headers", "Content-Disposition"); + response.setHeader("content-Type", "application/vnd.ms-excel"); + response.setHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode(IcUserTemplateEnums.IC_RESI_IMPORT_TEMPLATE.getTemplateName(), "UTF-8")); - return new ResponseEntity<>(FileUtil.readBytes(icResiImportTemplateFile), headers, HttpStatus.OK); + IOUtils.copy(is, os); } catch (Exception e) { String errorStackTrace = ExceptionUtils.getErrorStackTrace(e); - log.error("下载IC居民信息导入模板失败:{}", errorStackTrace); throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "下载IC居民信息导入模板失败"); + } finally { + org.apache.poi.util.IOUtils.closeQuietly(is); + org.apache.poi.util.IOUtils.closeQuietly(os); } } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserImportService.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserImportService.java index 05fb431c32..f3451f3e13 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserImportService.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserImportService.java @@ -13,7 +13,7 @@ import java.util.List; */ public interface IcResiUserImportService { - void importIcResiInfoFromExcel(String importTaskId, List formItemList, String excelPathName, HttpServletResponse response, Path importTempPath); + boolean importIcResiInfoFromExcel(String importTaskId, List formItemList, String excelPathName, HttpServletResponse response, Path importTempPath); /** * 创建导入任务 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 44a6ee7a63..f17c6ad2d4 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 @@ -13,7 +13,6 @@ import com.epmet.bean.ResiImportChangedData; import com.epmet.commons.tools.constant.AppClientConstant; import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.constant.StrConstant; -import com.epmet.commons.tools.constant.ThreadLocalConstant; import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; import com.epmet.commons.tools.dto.result.OptionResultDTO; import com.epmet.commons.tools.exception.EpmetErrorCode; @@ -24,7 +23,6 @@ import com.epmet.commons.tools.feign.ResultDataResolver; import com.epmet.commons.tools.redis.RedisKeys; import com.epmet.commons.tools.redis.RedisUtils; import com.epmet.commons.tools.redis.common.CustomerStaffRedis; -import com.epmet.commons.tools.security.user.LoginUserUtil; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.EpmetRequestHolder; import com.epmet.commons.tools.utils.Result; @@ -211,9 +209,11 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res * @param formItemList item列表 * @param excelPathName excel缓存路径 * @param response 响应对象 + * @return */ @Override - public void importIcResiInfoFromExcel(String importTaskId, List formItemList, String excelPathName, HttpServletResponse response, Path importTempPath) { + public boolean importIcResiInfoFromExcel(String importTaskId, List formItemList, String excelPathName, HttpServletResponse response, Path importTempPath) { + boolean isAllSuccess = false; String app = EpmetRequestHolder.getHeader(AppClientConstant.APP); String client = EpmetRequestHolder.getHeader(AppClientConstant.CLIENT); @@ -276,6 +276,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res } finishImportTask(importTaskId, loginUserId, ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL,null, resultDescFilePath); } else { + isAllSuccess = true; finishImportTask(importTaskId, loginUserId, ImportTaskConstants.PROCESS_STATUS_FINISHED_SUCCESS,null, null); } @@ -298,6 +299,8 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res resiCategoryColumnNameAndLabel.remove(); itemIdAndOptionsCache.invalidateAll(); } + + return isAllSuccess; } /** diff --git a/epmet-user/epmet-user-server/src/main/resources/excel/ic_resi_info_import_cid_for_easy_excel.xls b/epmet-user/epmet-user-server/src/main/resources/excel/ic_resi_import_template.xls similarity index 100% rename from epmet-user/epmet-user-server/src/main/resources/excel/ic_resi_info_import_cid_for_easy_excel.xls rename to epmet-user/epmet-user-server/src/main/resources/excel/ic_resi_import_template.xls