Browse Source

Merge remote-tracking branch 'origin/yantai_zhengwu_master' into dev

master
yinzuomei 2 years ago
parent
commit
650bea6c69
  1. 104
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/DepartmentController.java
  2. 4
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcEnterpriseController.java
  3. 110
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/handler/DeptExcelImportListener.java
  4. 72
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/yt/DeptImportExcelDTO.java
  5. 2
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerDepartmentService.java
  6. 5
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/DepartmentService.java
  7. 14
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerDepartmentServiceImpl.java
  8. 109
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/DepartmentServiceImpl.java
  9. BIN
      epmet-module/gov-org/gov-org-server/src/main/resources/excel/yantai/yantai_dept_import_tem.xlsx

104
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.LoginUser;
import com.epmet.commons.tools.annotation.RequirePermission; 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.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.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.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.constants.ImportTaskConstants;
import com.epmet.dto.form.*; import com.epmet.dto.form.*;
import com.epmet.dto.result.*; import com.epmet.dto.result.*;
import com.epmet.feign.EpmetCommonServiceOpenFeignClient;
import com.epmet.service.CustomerStaffAgencyService; import com.epmet.service.CustomerStaffAgencyService;
import com.epmet.service.DepartmentService; 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.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.web.bind.annotation.*; 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.List;
import java.util.UUID;
/** /**
* 部门 * 部门
* *
* @author sun * @author sun
*/ */
@Slf4j
@RestController @RestController
@RequestMapping("department") @RequestMapping("department")
public class DepartmentController { public class DepartmentController implements ResultDataResolver {
@Autowired @Autowired
private DepartmentService departmentService; private DepartmentService departmentService;
@Autowired @Autowired
private CustomerStaffAgencyService customerStaffAgencyService; private CustomerStaffAgencyService customerStaffAgencyService;
@Autowired
private EpmetCommonServiceOpenFeignClient commonServiceOpenFeignClient;
/** /**
* 添加部门人员 * 添加部门人员
@ -198,6 +222,84 @@ public class DepartmentController {
return new Result<CheckStaffInfoResultDTO>().ok(departmentService.notSyncDept(formDTO)); return new Result<CheckStaffInfoResultDTO>().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();
}
} }

4
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.write(JSON.toJSONString(result));
printWriter.close(); printWriter.close();
} catch (Exception e) { } catch (Exception e) {
log.error("企事业单位导出异常export exception", e); log.error("九小场所巡查导出异常export exception", e);
} finally { } finally {
if (excelWriter != null) { if (excelWriter != null) {
excelWriter.finish(); excelWriter.finish();
@ -223,7 +223,7 @@ public class IcEnterpriseController implements ResultDataResolver {
response.addHeader(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, "Content-Disposition"); 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.ms-excel");
response.setHeader(HttpHeaders.CONTENT_TYPE, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); 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"); InputStream is = this.getClass().getClassLoader().getResourceAsStream("excel/enterprise_patrol_import_tem.xlsx");
try { try {

110
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<DeptImportExcelDTO> {
//最大条数阈值
public static final int MAX_THRESHOLD = 200;
private String customerId;
private String staffId;
private CustomerAgencyEntity agencyEntity;
/**
* 当前操作用户
*/
//要插入的数据
private List<CustomerDepartmentEntity> insertDatas = new ArrayList<>();
//错误项列表
private List<DeptImportExcelDTO.ErrorRow> 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<DeptImportExcelDTO.ErrorRow> getErrorRows() {
return errorRows;
}
}

72
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;
}
}

2
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerDepartmentService.java

@ -102,4 +102,6 @@ public interface CustomerDepartmentService extends BaseService<CustomerDepartmen
* @return void * @return void
*/ */
void updateDepartment(String staffId); void updateDepartment(String staffId);
void checkUnqiueName(String agencyId, String departmentName, String deptId);
} }

5
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/DepartmentService.java

@ -22,6 +22,7 @@ import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.form.*; import com.epmet.dto.form.*;
import com.epmet.dto.result.*; import com.epmet.dto.result.*;
import java.nio.file.Path;
import java.util.List; import java.util.List;
/** /**
@ -107,4 +108,8 @@ public interface DepartmentService {
CheckStaffInfoResultDTO syncDept(CheckStaffInfoFormDTO formDTO); CheckStaffInfoResultDTO syncDept(CheckStaffInfoFormDTO formDTO);
CheckStaffInfoResultDTO notSyncDept(CheckStaffInfoFormDTO formDTO); CheckStaffInfoResultDTO notSyncDept(CheckStaffInfoFormDTO formDTO);
void execAsyncExcelImport(Path fileSavePath, String taskId, String agencyId,String originalFilename);
} }

14
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerDepartmentServiceImpl.java

@ -17,11 +17,14 @@
package com.epmet.service.impl; package com.epmet.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.FieldConstant; import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.constant.NumConstant;
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.page.PageData;
import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.dao.CustomerDepartmentDao; import com.epmet.dao.CustomerDepartmentDao;
@ -118,6 +121,15 @@ public class CustomerDepartmentServiceImpl extends BaseServiceImpl<CustomerDepar
baseDao.deleteStaffDep(staffId); baseDao.deleteStaffDep(staffId);
} }
} }
@Override
public void checkUnqiueName(String agencyId, String departmentName, String deptId) {
LambdaQueryWrapper<CustomerDepartmentEntity> 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(),"部门名称已存在","部门名称已存在");
}
}
} }

109
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; package com.epmet.service.impl;
import com.alibaba.excel.EasyExcel;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.StrConstant; import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult;
import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException; 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.exception.RenException;
import com.epmet.commons.tools.redis.common.CustomerStaffRedis; import com.epmet.commons.tools.redis.common.CustomerStaffRedis;
import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.security.user.LoginUserUtil; import com.epmet.commons.tools.security.user.LoginUserUtil;
import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.*;
import com.epmet.commons.tools.utils.Result;
import com.epmet.constant.CustomerDepartmentConstant; import com.epmet.constant.CustomerDepartmentConstant;
import com.epmet.constants.ImportTaskConstants;
import com.epmet.dao.CustomerAgencyDao; import com.epmet.dao.CustomerAgencyDao;
import com.epmet.dao.CustomerDepartmentDao; import com.epmet.dao.CustomerDepartmentDao;
import com.epmet.dao.CustomerStaffDepartmentDao; import com.epmet.dao.CustomerStaffDepartmentDao;
@ -38,20 +40,29 @@ import com.epmet.dto.*;
import com.epmet.dto.form.*; import com.epmet.dto.form.*;
import com.epmet.dto.result.*; import com.epmet.dto.result.*;
import com.epmet.entity.*; import com.epmet.entity.*;
import com.epmet.feign.EpmetHeartOpenFeignClient; import com.epmet.excel.handler.DeptExcelImportListener;
import com.epmet.feign.EpmetUserFeignClient; import com.epmet.excel.yt.DeptImportExcelDTO;
import com.epmet.feign.EpmetUserOpenFeignClient; import com.epmet.feign.*;
import com.epmet.feign.GovProjectOpenFeignClient;
import com.epmet.service.*; import com.epmet.service.*;
import com.epmet.util.ModuleConstant; 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.commons.lang3.StringUtils;
import org.apache.http.entity.ContentType;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; 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.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@ -93,6 +104,11 @@ public class DepartmentServiceImpl implements DepartmentService {
private EpmetHeartOpenFeignClient epmetHeartOpenFeignClient; private EpmetHeartOpenFeignClient epmetHeartOpenFeignClient;
@Autowired @Autowired
private GovProjectOpenFeignClient govProjectOpenFeignClient; private GovProjectOpenFeignClient govProjectOpenFeignClient;
@Autowired
private EpmetCommonServiceOpenFeignClient commonServiceOpenFeignClient;
@Autowired
private OssFeignClient ossFeignClient;
/** /**
* @param formDTO * @param formDTO
@ -103,6 +119,7 @@ public class DepartmentServiceImpl implements DepartmentService {
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result<AddDepartmentResultDTO> addDepartment(AddDepartmentFormDTO formDTO) { public Result<AddDepartmentResultDTO> addDepartment(AddDepartmentFormDTO formDTO) {
SpringContextUtils.getBean(CustomerDepartmentService.class).checkUnqiueName(formDTO.getAgencyId(),formDTO.getDepartmentName(),null);
Result<AddDepartmentResultDTO> result = new Result<AddDepartmentResultDTO>(); Result<AddDepartmentResultDTO> result = new Result<AddDepartmentResultDTO>();
AddDepartmentResultDTO addDepartmentResultDTO = new AddDepartmentResultDTO(); AddDepartmentResultDTO addDepartmentResultDTO = new AddDepartmentResultDTO();
CustomerDepartmentEntity entity = ConvertUtils.sourceToTarget(formDTO, CustomerDepartmentEntity.class); CustomerDepartmentEntity entity = ConvertUtils.sourceToTarget(formDTO, CustomerDepartmentEntity.class);
@ -135,6 +152,8 @@ public class DepartmentServiceImpl implements DepartmentService {
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result editDepartment(EditDepartmentFormDTO formDTO) { 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(); Result result = new Result();
CustomerDepartmentEntity entity = ConvertUtils.sourceToTarget(formDTO, CustomerDepartmentEntity.class); CustomerDepartmentEntity entity = ConvertUtils.sourceToTarget(formDTO, CustomerDepartmentEntity.class);
entity.setId(formDTO.getDepartmentId()); entity.setId(formDTO.getDepartmentId());
@ -551,5 +570,83 @@ public class DepartmentServiceImpl implements DepartmentService {
return resultDTO; 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<DeptImportExcelDTO.ErrorRow> 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<UploadImgResultDTO> 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);
}
}
}
}
} }

BIN
epmet-module/gov-org/gov-org-server/src/main/resources/excel/yantai/yantai_dept_import_tem.xlsx

Binary file not shown.
Loading…
Cancel
Save