From 1e6862f986c8b24a3c846ab4989d02b35f4f225d Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Sun, 23 Apr 2023 09:03:40 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E7=83=9F=E5=8F=B0=EF=BC=9A=E4=B9=9D?= =?UTF-8?q?=E5=B0=8F=E5=9C=BA=E6=89=80=E5=B7=A1=E6=9F=A5=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF=E5=90=8D=E7=A7=B0=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/epmet/controller/IcEnterpriseController.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcEnterpriseController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcEnterpriseController.java index 7e11a2d995..2df8e63140 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcEnterpriseController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcEnterpriseController.java @@ -178,7 +178,7 @@ public class IcEnterpriseController implements ResultDataResolver { printWriter.write(JSON.toJSONString(result)); printWriter.close(); } catch (Exception e) { - log.error("企事业单位导出异常export exception", e); + log.error("九小场所巡查导出异常export exception", e); } finally { if (excelWriter != null) { excelWriter.finish(); @@ -223,7 +223,7 @@ public class IcEnterpriseController implements ResultDataResolver { 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"); + response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + URLEncoder.encode("九小场所巡查导入模版", "UTF-8") + ".xlsx"); InputStream is = this.getClass().getClassLoader().getResourceAsStream("excel/enterprise_patrol_import_tem.xlsx"); try { From 19f0c74add65958fc6886f5a190d17141fb1ad09 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Wed, 26 Apr 2023 16:53:42 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E9=83=A8=E9=97=A8=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=EF=BC=8C=E5=BE=AE=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/DepartmentController.java | 104 ++++++++++++++++- .../handler/DeptExcelImportListener.java | 110 ++++++++++++++++++ .../epmet/excel/yt/DeptImportExcelDTO.java | 72 ++++++++++++ .../service/CustomerDepartmentService.java | 2 + .../com/epmet/service/DepartmentService.java | 5 + .../impl/CustomerDepartmentServiceImpl.java | 14 ++- .../service/impl/DepartmentServiceImpl.java | 109 ++++++++++++++++- .../excel/yantai/yantai_dept_import_tem.xlsx | Bin 0 -> 8756 bytes 8 files changed, 408 insertions(+), 8 deletions(-) create mode 100644 epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/handler/DeptExcelImportListener.java create mode 100644 epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/yt/DeptImportExcelDTO.java create mode 100644 epmet-module/gov-org/gov-org-server/src/main/resources/excel/yantai/yantai_dept_import_tem.xlsx 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..5706b5b70a 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,56 @@ 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.form.*; import com.epmet.dto.result.*; +import com.epmet.feign.EpmetCommonServiceOpenFeignClient; 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; /** * 添加部门人员 @@ -198,6 +222,84 @@ 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.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("agencyId")String agencyId, @RequestPart("file") MultipartFile file) { + // 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..5446454862 --- /dev/null +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/handler/DeptExcelImportListener.java @@ -0,0 +1,110 @@ +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); + 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(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..fe5e320a13 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,7 @@ 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 +152,8 @@ 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 +570,83 @@ public class DepartmentServiceImpl implements DepartmentService { return resultDTO; } + @Async + @Override + public void execAsyncExcelImport(Path filePath, String importTaskId,String agencyId,String originalFilename) { + try { + CustomerAgencyEntity agencyEntity=customerAgencyDao.selectById(agencyId); + 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/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 0000000000000000000000000000000000000000..a3e51d0f545126d96d165eb6673b8c8248ea0079 GIT binary patch literal 8756 zcma)C1z40_x23zKkseaILAqO7IwYh!6{Wic2PB4)2I=nZZjkN{X^A`N{fhs)|8vjt z%)AqOpMBnS&e>~5bW+kv0HuwXCUuN~( zv&Afs5D*+t5D*xDH#4%gXL7f(PKjxig=WQ;xb%I%D6?Z{q)=g_^9_CpukAw2Za3E= zkM(J5!`Tb7 z0@)WlrMuaXe%6VmK`2}Z+5V2}O~@9O$(2`2V`KS|%(_g~Oi;)l_jQXtcerQO(BrQE zSlL;-4=7)GDFi*cpeKFcx6C-Ctz<5Mc*CVHn6<7Aw@v6YCtIA=I`h4AY-Dc^_H6a; z`sCo8iD`x5W~V5=eOqY{nsoylF%$6eM?TEQMO*{Y;#9jMg8L#KrPTLnke9kx zZ0n0J+eUPR@2VkHBZe=vn!(UyZrgxBmdee$(H8Kzqa1s6hY_3>2pQHm`rcc2$wr zh!15SR`vvGD{Mez;+y^&V%|@?#nM{Gfw#oyQHLkgwug)8MiWL1|gI z{rV`q5lQRU<4rj2(7IdyN+|zsfcD$K&Cb!v$=uY``DyYgIq7BL0ngD4 z3`;`EQ735@G< zRlL=lnYK^J{{+P)`J9uZiKaBIM(XYxu!v}ur0?~~XP}$rUhbCYYIaoeb=eO42W=#) z{^)Ov%AW z$+f?wIBJNfaRoF!$>zGeSTucsM#t9^Fv0u^i`>iX~{ca zRxvVP&e{U^_y?%kVgcDNfFoK~sbUjogJl>bNZ1sA@itnMPJ;|ne0y0AukFdpa1Y>s zEhbZjm{_8D8$ld8nQlEv++b|4mvAhk{~kgj?3afgc4D#`v}pcUWw#O-d&ps2fmPpt zQ_e6_f;@uLs;V)f4#K^i-sQbyjhHe3bQI5E^m7BL%NyP#}sAae6| z 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 literal 0 HcmV?d00001