From 52bce7e426bf9e3d9bba80ca5031e391c5a882fd Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Mon, 20 Feb 2023 15:01:34 +0800 Subject: [PATCH 01/16] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=8B=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epmet/excel/IcPartyUnitImportExcel.java | 33 ++++++++++--------- .../excel/IcPartyUnitImportFailedExcel.java | 20 ++++++++++- .../service/impl/IcPartyUnitServiceImpl.java | 18 +++++----- 3 files changed, 45 insertions(+), 26 deletions(-) diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/IcPartyUnitImportExcel.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/IcPartyUnitImportExcel.java index 13e8f27c6a..0644af0d69 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/IcPartyUnitImportExcel.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/IcPartyUnitImportExcel.java @@ -30,33 +30,34 @@ import lombok.Data; @Data public class IcPartyUnitImportExcel extends ExcelVerifyInfo { - @Excel(name = "单位名称") + @Excel(name = "单位名称*") private String unitName; - @Excel(name = "分类") + @Excel(name = "分类*") private String type; - @Excel(name = "服务事项") - private String serviceMatter; + // @Excel(name = "服务事项") + // private String serviceMatter; - @Excel(name = "联系人") + @Excel(name = "联系人*") private String contact; - @Excel(name = "联系电话") + @Excel(name = "联系电话*") private String contactMobile; - @Excel(name = "在职党员") + @Excel(name = "在职党员*") private Integer memberCount; - @Excel(name = "地址") - private String address; - - @Excel(name = "中心位置经度") - private String longitude; - - @Excel(name = "中心位置纬度") - private String latitude; - @Excel(name = "备注") private String remark; + + @Excel(name = "详细地址*") + private String address; + + // + // @Excel(name = "中心位置经度") + // private String longitude; + // + // @Excel(name = "中心位置纬度") + // private String latitude; } \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/IcPartyUnitImportFailedExcel.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/IcPartyUnitImportFailedExcel.java index 2cd7e44e2a..fe47433803 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/IcPartyUnitImportFailedExcel.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/IcPartyUnitImportFailedExcel.java @@ -30,9 +30,27 @@ import lombok.Data; @Data public class IcPartyUnitImportFailedExcel extends ExcelVerifyInfo { - @Excel(name = "单位名称", width = 40) + @Excel(name = "单位名称*", width = 40) private String unitName; + @Excel(name = "分类*",width = 20) + private String type; + + @Excel(name = "联系人*",width = 20) + private String contact; + + @Excel(name = "联系电话*",width = 20) + private String contactMobile; + + @Excel(name = "在职党员*",width = 10) + private Integer memberCount; + + @Excel(name = "备注",width = 30) + private String remark; + + @Excel(name = "详细地址*",width = 50) + private String address; + @Excel(name = "错误信息", width = 50) private String errorInfo; } \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcPartyUnitServiceImpl.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcPartyUnitServiceImpl.java index f430f2b711..326212a645 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcPartyUnitServiceImpl.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcPartyUnitServiceImpl.java @@ -450,7 +450,7 @@ public class IcPartyUnitServiceImpl extends BaseServiceImpl matters = Arrays.asList(obj.getServiceMatter().split(StrConstant.COLON)); matters.forEach(item -> { if (null == categoryMap.get(item)) { @@ -461,7 +461,7 @@ public class IcPartyUnitServiceImpl extends BaseServiceImpl%s", obj.getRowNum())); - } else if (StringUtils.isBlank(obj.getLatitude())) { + } /*else if (StringUtils.isBlank(obj.getLatitude())) { IcPartyUnitImportFailedExcel failed = ConvertUtils.sourceToTarget(obj, IcPartyUnitImportFailedExcel.class); failed.setErrorInfo("中心位置纬度为空"); fileList.add(failed); @@ -494,7 +494,7 @@ public class IcPartyUnitServiceImpl extends BaseServiceImpl%s", obj.getRowNum())); - } + }*/ } if (CollectionUtils.isNotEmpty(result)) { @@ -505,14 +505,14 @@ public class IcPartyUnitServiceImpl extends BaseServiceImpl Date: Mon, 20 Feb 2023 16:06:19 +0800 Subject: [PATCH 02/16] =?UTF-8?q?=E8=81=94=E5=BB=BA=E5=8D=95=E4=BD=8D?= =?UTF-8?q?=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/IcPartyUnitController.java | 93 +++-- .../epmet/excel/IcPartyUnitImportExcel.java | 80 ++++- .../IcPartyUnitExcelImportListener.java | 132 +++++++ .../com/epmet/service/IcPartyUnitService.java | 22 +- .../service/impl/IcPartyUnitServiceImpl.java | 333 ++++++------------ 5 files changed, 358 insertions(+), 302 deletions(-) create mode 100644 epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/handler/IcPartyUnitExcelImportListener.java diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcPartyUnitController.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcPartyUnitController.java index e1578a2d78..dca2669ab8 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcPartyUnitController.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcPartyUnitController.java @@ -8,16 +8,16 @@ import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.aop.NoRepeatSubmit; import com.epmet.commons.tools.constant.AppClientConstant; import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.constant.StrConstant; import com.epmet.commons.tools.dto.result.OptionDataResultDTO; +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.feign.ResultDataResolver; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.security.dto.TokenDto; -import com.epmet.commons.tools.utils.ConvertUtils; -import com.epmet.commons.tools.utils.DateUtils; -import com.epmet.commons.tools.utils.ExcelUtils; -import com.epmet.commons.tools.utils.Result; +import com.epmet.commons.tools.utils.*; import com.epmet.commons.tools.utils.poi.excel.handler.FreezeAndFilter; import com.epmet.commons.tools.validator.AssertUtils; import com.epmet.commons.tools.validator.ValidatorUtils; @@ -34,7 +34,6 @@ import com.epmet.feign.EpmetCommonServiceOpenFeignClient; import com.epmet.service.IcPartyUnitService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.io.FilenameUtils; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -46,12 +45,14 @@ import javax.annotation.Resource; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; 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.Date; import java.util.List; -import java.util.concurrent.CompletableFuture; +import java.util.UUID; import java.util.stream.Collectors; @@ -64,7 +65,7 @@ import java.util.stream.Collectors; @Slf4j @RestController @RequestMapping("icpartyunit") -public class IcPartyUnitController { +public class IcPartyUnitController implements ResultDataResolver { @Autowired private IcPartyUnitService icPartyUnitService; @@ -192,37 +193,48 @@ public class IcPartyUnitController { */ @PostMapping("import") public Result importData(@LoginUser TokenDto tokenDto, HttpServletRequest multipartRequest, HttpServletResponse response, @RequestPart("file") MultipartFile file) throws IOException { + // 1.暂存文件 + String originalFilename = file.getOriginalFilename(); + String extName = originalFilename.substring(originalFilename.lastIndexOf(".")); - if (file.isEmpty()) { - throw new RenException("请上传文件"); + Path fileSavePath; + try { + Path importPath = FileUtils.getAndCreateDirUnderEpmetFilesDir("ic_party_unit", "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(), "文件上传失败", "文件上传失败"); } - String originalFilename = file.getOriginalFilename(); - // 校验文件类型 - String extension = FilenameUtils.getExtension(originalFilename); - if (!"xls".equals(extension) && !"xlsx".equals(extension)) { - throw new RenException("文件类型不匹配"); + 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); } - //1.查询当前工作人员是否有再导入的党员先锋数据,有则不允许导入,没有则进行新的导入 + // 2.生成导入任务记录 ImportTaskCommonFormDTO importTaskForm = new ImportTaskCommonFormDTO(); - importTaskForm.setOriginFileName(file.getOriginalFilename()); importTaskForm.setOperatorId(tokenDto.getUserId()); importTaskForm.setBizType(ImportTaskConstants.BIZ_TYPE_PARTY_UNIT); - Result result = commonServiceOpenFeignClient.createImportTask(importTaskForm); - if (!result.success()) { - throw new RenException(result.getInternalMsg()); - } + importTaskForm.setOriginFileName(originalFilename); - // 异步执行导入 - CompletableFuture.runAsync(() -> { - try { - Thread.sleep(1000L); - } catch (InterruptedException e) { - log.error("method exception", e); - } - submitResiImportTask(tokenDto, response, file, result.getData().getTaskId()); - }); + ImportTaskCommonResultDTO rstData = getResultDataOrThrowsException(commonServiceOpenFeignClient.createImportTask(importTaskForm), + ServiceConstant.EPMET_COMMON_SERVICE, + EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), + "excel行程上报导入错误", + "行程上报导入失败"); + + // 3.执行导入 + icPartyUnitService.execAsyncExcelImport(fileSavePath, rstData.getTaskId(),tokenDto.getCustomerId(),tokenDto.getUserId()); return new Result(); } @@ -297,27 +309,6 @@ public class IcPartyUnitController { return new Result(); } - private void submitResiImportTask(TokenDto tokenDto, HttpServletResponse response, MultipartFile file, String importTaskId) { - - try { - icPartyUnitService.importData(tokenDto, response, file, importTaskId); - } catch (Throwable e) { - String errorMsg = ExceptionUtils.getThrowableErrorStackTrace(e); - log.error("【导入联建单位信息失败】导入失败:{}", errorMsg); - - ImportTaskCommonFormDTO importTaskForm = new ImportTaskCommonFormDTO(); - importTaskForm.setOperatorId(tokenDto.getUserId()); - importTaskForm.setBizType(ImportTaskConstants.BIZ_TYPE_PARTY_UNIT); - importTaskForm.setTaskId(importTaskId); - importTaskForm.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL); - importTaskForm.setResultDesc("联建单位信息导入失败,请查看系统日志"); - Result result = commonServiceOpenFeignClient.finishImportTask(importTaskForm); - if (!result.success()) { - throw new RenException(result.getInternalMsg()); - } - } - } - /** * Desc: 获取联建单位名字 * @param formDTO diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/IcPartyUnitImportExcel.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/IcPartyUnitImportExcel.java index 0644af0d69..b1fd6d7dff 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/IcPartyUnitImportExcel.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/IcPartyUnitImportExcel.java @@ -17,9 +17,14 @@ package com.epmet.excel; -import cn.afterturn.easypoi.excel.annotation.Excel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; import com.epmet.commons.tools.utils.ExcelVerifyInfo; import lombok.Data; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; /** * 联建单位 @@ -30,34 +35,73 @@ import lombok.Data; @Data public class IcPartyUnitImportExcel extends ExcelVerifyInfo { - @Excel(name = "单位名称*") + @NotBlank(message = "单位名称必填") + @Length(max = 50,message = "单位名称最多输入50字") + @ExcelProperty(value = "单位名称*") private String unitName; - @Excel(name = "分类*") - private String type; - - // @Excel(name = "服务事项") - // private String serviceMatter; + @NotBlank(message = "分类必填") + @ExcelProperty(value = "分类*") + private String typeName; - @Excel(name = "联系人*") + @Length(max = 30,message = "联系人最多输入30字") + @NotBlank(message = "联系人必填") + @ExcelProperty(value = "联系人*") private String contact; - @Excel(name = "联系电话*") + + @Length(max = 30,message = "联系电话最多输入30字") + @NotBlank(message = "联系电话必填") + @ExcelProperty(value = "联系电话*") private String contactMobile; - @Excel(name = "在职党员*") + + @NotNull(message = "在职党员必填") + @ExcelProperty(value = "在职党员*") private Integer memberCount; - @Excel(name = "备注") + @Length(max = 500,message = "备注最多输入50字") + @ExcelProperty(value = "备注") private String remark; - @Excel(name = "详细地址*") + + @Length(max = 250,message = "详细地址最多输入250字") + @NotBlank(message = "详细地址必填") + @ExcelProperty(value = "详细地址*") private String address; - // - // @Excel(name = "中心位置经度") - // private String longitude; - // - // @Excel(name = "中心位置纬度") - // private String latitude; + @Data + public static class ErrorRow { + @ColumnWidth(40) + @ExcelProperty("单位名称*") + private String unitName; + + @ColumnWidth(20) + @ExcelProperty("分类*") + private String type; + + @ColumnWidth(20) + @ExcelProperty("联系人*") + private String contact; + + @ColumnWidth(20) + @ExcelProperty("联系电话*") + private String contactMobile; + + @ColumnWidth(10) + @ExcelProperty("在职党员*") + private Integer memberCount; + + @ColumnWidth(30) + @ExcelProperty("备注") + private String remark; + + @ColumnWidth(50) + @ExcelProperty("详细地址*") + private String address; + + @ColumnWidth(50) + @ExcelProperty("错误信息") + private String errorInfo; + } } \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/handler/IcPartyUnitExcelImportListener.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/handler/IcPartyUnitExcelImportListener.java new file mode 100644 index 0000000000..612d77840c --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/handler/IcPartyUnitExcelImportListener.java @@ -0,0 +1,132 @@ +package com.epmet.excel.handler; + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.read.listener.ReadListener; +import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; +import com.epmet.commons.tools.exception.ExceptionUtils; +import com.epmet.commons.tools.exception.ValidateException; +import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.commons.tools.validator.ValidatorUtils; +import com.epmet.entity.IcPartyUnitEntity; +import com.epmet.excel.IcPartyUnitImportExcel; +import com.epmet.service.impl.IcPartyUnitServiceImpl; +import lombok.extern.slf4j.Slf4j; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.concurrent.atomic.AtomicBoolean; + +/** + * @Description + * @Author yzm + * @Date 2023/2/20 15:36 + */ +@Slf4j +public class IcPartyUnitExcelImportListener implements ReadListener { + /** + * 最大条数阈值 + */ + public static final int MAX_THRESHOLD = 200; + /** + * 当前操作用户 + */ + private CustomerStaffInfoCacheResult staffInfo; + private String customerId; + /** + * 数据 + */ + private List datas = new ArrayList<>(); + + /** + * 错误项列表 + */ + private List errorRows = new ArrayList<>(); + private IcPartyUnitServiceImpl icPartyUnitService; + //字典表数据 + private Map partyUnitTypeMap; + + public IcPartyUnitExcelImportListener(String customerId, CustomerStaffInfoCacheResult staffInfo, IcPartyUnitServiceImpl icPartyUnitService,Map partyUnitTypeMap) { + this.customerId=customerId; + this.staffInfo = staffInfo; + this.icPartyUnitService = icPartyUnitService; + this.partyUnitTypeMap=partyUnitTypeMap; + } + + + @Override + public void invoke(IcPartyUnitImportExcel data, AnalysisContext context) { + try { + // 先校验数据 + ValidatorUtils.validateEntity(data); + AtomicBoolean bl = new AtomicBoolean(false); + StringBuffer errMsg = new StringBuffer(""); + //先对一下字段值填写是否正确做判断 + if (!partyUnitTypeMap.containsKey(data.getTypeName())) { + errMsg.append("‘返回方式’值填写错误;"); + bl.set(true); + } + //错误数据记录到错误文件 + if (bl.get()) { + IcPartyUnitImportExcel.ErrorRow errorRow = ConvertUtils.sourceToTarget(data,IcPartyUnitImportExcel.ErrorRow.class); + errorRow.setErrorInfo(errMsg.toString()); + errorRows.add(errorRow); + return; + } + + IcPartyUnitEntity e = ConvertUtils.sourceToTarget(data, IcPartyUnitEntity.class); + if (partyUnitTypeMap.containsKey(data.getTypeName())) { + e.setType(partyUnitTypeMap.get(data.getTypeName())); + } + e.setCustomerId(customerId); + e.setAgencyId(staffInfo.getAgencyId()); + e.setPids(staffInfo.getAgencyPIds()); + datas.add(e); + + if (datas.size() == MAX_THRESHOLD) { + execPersist(); + } + } catch (Exception e) { + String errorMsg = null; + if (e instanceof ValidateException) { + errorMsg = ((ValidateException) e).getMsg(); + } else { + errorMsg = "未知错误"; + log.error("【联建单位导入】出错:{}", ExceptionUtils.getErrorStackTrace(e)); + } + + IcPartyUnitImportExcel.ErrorRow errorRow = ConvertUtils.sourceToTarget(data,IcPartyUnitImportExcel.ErrorRow.class); + errorRow.setErrorInfo(errorMsg); + errorRows.add(errorRow); + } + } + + @Override + public void doAfterAllAnalysed(AnalysisContext analysisContext) { + // 最后几条达不到阈值,这里必须再调用一次 + execPersist(); + } + + + /** + * 执行持久化 + */ + private void execPersist() { + try { + if (datas != null && datas.size() > 0) { + icPartyUnitService.batchPersist(datas); + } + } finally { + datas.clear(); + } + } + + /** + * 获取错误行 + * @return + */ + public List getErrorRows() { + return errorRows; + } +} + diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcPartyUnitService.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcPartyUnitService.java index 3ea2e48394..a0995baa76 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcPartyUnitService.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcPartyUnitService.java @@ -14,10 +14,8 @@ import com.epmet.dto.result.PartyUnitDistributionResultDTO; import com.epmet.dto.result.PartyUnitListResultDTO; import com.epmet.dto.result.demand.OptionDTO; import com.epmet.entity.IcPartyUnitEntity; -import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; +import java.nio.file.Path; import java.util.List; /** @@ -107,18 +105,6 @@ public interface IcPartyUnitService extends BaseService { */ List options(IcPartyUnitDTO dto); - /** - * 导入数据 - * - * @Param tokenDto - * @Param response - * @Param file - * @Return - * @Author zhaoqifeng - * @Date 2021/11/29 11:01 - */ - void importData(TokenDto tokenDto, HttpServletResponse response, MultipartFile file, String taskId) throws IOException; - /** * @Description 按类型统计单位数量 * @Param formDTO @@ -187,4 +173,10 @@ public interface IcPartyUnitService extends BaseService { * @return */ List getUnitNames(List unitIds); + + /** + * 执行Excel导入 + * @param filePath + */ + void execAsyncExcelImport(Path filePath, String importTaskId,String customerId,String userId); } diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcPartyUnitServiceImpl.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcPartyUnitServiceImpl.java index 326212a645..eeb056f07f 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcPartyUnitServiceImpl.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcPartyUnitServiceImpl.java @@ -17,12 +17,11 @@ package com.epmet.service.impl; -import cn.afterturn.easypoi.excel.ExcelExportUtil; -import cn.afterturn.easypoi.excel.entity.ExportParams; -import cn.afterturn.easypoi.excel.entity.result.ExcelImportResult; +import com.alibaba.excel.EasyExcel; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; import com.epmet.commons.rocketmq.messages.ServerSatisfactionCalFormDTO; import com.epmet.commons.tools.constant.FieldConstant; @@ -33,11 +32,9 @@ import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; import com.epmet.commons.tools.dto.result.DictListResultDTO; import com.epmet.commons.tools.dto.result.OptionDataResultDTO; import com.epmet.commons.tools.enums.DictTypeEnum; -import com.epmet.commons.tools.enums.PartyUnitTypeEnum; 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.page.PageData; import com.epmet.commons.tools.redis.common.CustomerOrgRedis; import com.epmet.commons.tools.redis.common.CustomerStaffRedis; @@ -45,7 +42,7 @@ import com.epmet.commons.tools.redis.common.bean.AgencyInfoCache; 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.ExcelPoiUtils; +import com.epmet.commons.tools.utils.FileUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.constant.UserDemandConstant; import com.epmet.constants.ImportTaskConstants; @@ -59,7 +56,7 @@ import com.epmet.dto.result.demand.ServiceStatDTO; import com.epmet.entity.IcCommunitySelfOrganizationEntity; import com.epmet.entity.IcPartyUnitEntity; import com.epmet.excel.IcPartyUnitImportExcel; -import com.epmet.excel.IcPartyUnitImportFailedExcel; +import com.epmet.excel.handler.IcPartyUnitExcelImportListener; import com.epmet.feign.*; import com.epmet.service.IcCommunitySelfOrganizationService; import com.epmet.service.IcPartyUnitService; @@ -75,18 +72,17 @@ 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.apache.poi.ss.usermodel.Workbook; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.commons.CommonsMultipartFile; import javax.annotation.Resource; -import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.OutputStream; import java.math.BigDecimal; +import java.nio.file.Files; +import java.nio.file.Path; import java.util.*; import java.util.stream.Collectors; @@ -380,214 +376,6 @@ public class IcPartyUnitServiceImpl extends BaseServiceImpl fileList = new ArrayList<>(); - - ExcelImportResult importResult = ExcelPoiUtils.importExcelMore(file, 0, 1, IcPartyUnitImportExcel.class); - List failList = importResult.getFailList(); - //存放错误数据行号 - if (!org.springframework.util.CollectionUtils.isEmpty(failList)) { - for (IcPartyUnitImportExcel entity : failList) { - //打印失败的行 和失败的信息 - log.warn("第{}行,{}", entity.getRowNum(), entity.getErrorMsg()); - IcPartyUnitImportFailedExcel failed = ConvertUtils.sourceToTarget(entity, IcPartyUnitImportFailedExcel.class); - failed.setErrorInfo(entity.getErrorMsg()); - fileList.add(failed); - } - } - List result = importResult.getList(); - - CustomerStaffInfoCacheResult staffInfoCache = CustomerStaffRedis.getStaffInfo(tokenDto.getCustomerId(), tokenDto.getUserId()); - if (null == staffInfoCache) { - throw new EpmetException(8000, "获取用户缓存失败"); - } - List serviceItemList = icServiceItemDictService.queryDictList(tokenDto.getCustomerId()); - Map categoryMap = serviceItemList.stream().collect(Collectors.toMap(OptionDTO::getValue, OptionDTO::getLabel)); - //1.数据校验 - Iterator iterator = result.iterator(); - while (iterator.hasNext()) { - IcPartyUnitImportExcel obj = iterator.next(); - //单位名称不能为空,不可重复 - if (StringUtils.isBlank(obj.getUnitName())) { - IcPartyUnitImportFailedExcel failed = ConvertUtils.sourceToTarget(obj, IcPartyUnitImportFailedExcel.class); - failed.setErrorInfo("单位名称为空"); - fileList.add(failed); - log.warn(String.format("单位名称为空,行号->%s", obj.getRowNum())); - iterator.remove(); - } else { - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(IcPartyUnitEntity::getAgencyId, staffInfoCache.getAgencyId()); - wrapper.eq(IcPartyUnitEntity::getUnitName, obj.getUnitName()); - List list = baseDao.selectList(wrapper); - if (CollectionUtils.isNotEmpty(list)) { - IcPartyUnitImportFailedExcel failed = ConvertUtils.sourceToTarget(obj, IcPartyUnitImportFailedExcel.class); - failed.setErrorInfo("单位名称已存在"); - fileList.add(failed); - log.warn(String.format("单位名称已存在,行号->%s", obj.getRowNum())); - iterator.remove(); - } - } - //分类校验 - if (StringUtils.isBlank(obj.getType()) || null == PartyUnitTypeEnum.getCode(obj.getType())) { - IcPartyUnitImportFailedExcel failed = ConvertUtils.sourceToTarget(obj, IcPartyUnitImportFailedExcel.class); - failed.setErrorInfo("分类名不存在"); - fileList.add(failed); - log.warn(String.format("分类名不存在,行号->%s", obj.getRowNum())); - iterator.remove(); - } - //服务事项校验 - /*if (StringUtils.isNotBlank(obj.getServiceMatter())) { - List matters = Arrays.asList(obj.getServiceMatter().split(StrConstant.COLON)); - matters.forEach(item -> { - if (null == categoryMap.get(item)) { - IcPartyUnitImportFailedExcel failed = ConvertUtils.sourceToTarget(obj, IcPartyUnitImportFailedExcel.class); - failed.setErrorInfo("服务事项不存在"); - fileList.add(failed); - log.warn(String.format("服务事项不存在,行号->%s", obj.getRowNum())); - iterator.remove(); - } - }); - }*/ - //联系人 联系电话 在职党员 地址 中心位置经度 中心位置纬度 校验 - if (StringUtils.isBlank(obj.getContact())) { - IcPartyUnitImportFailedExcel failed = ConvertUtils.sourceToTarget(obj, IcPartyUnitImportFailedExcel.class); - failed.setErrorInfo("联系人为空"); - fileList.add(failed); - log.warn(String.format("联系人为空,行号->%s", obj.getRowNum())); - iterator.remove(); - } else if (StringUtils.isBlank(obj.getContactMobile())) { - IcPartyUnitImportFailedExcel failed = ConvertUtils.sourceToTarget(obj, IcPartyUnitImportFailedExcel.class); - failed.setErrorInfo("联系电话为空"); - fileList.add(failed); - log.warn(String.format("联系电话为空,行号->%s", obj.getRowNum())); - } else if (StringUtils.isBlank(obj.getAddress())) { - IcPartyUnitImportFailedExcel failed = ConvertUtils.sourceToTarget(obj, IcPartyUnitImportFailedExcel.class); - failed.setErrorInfo("地址为空"); - fileList.add(failed); - log.warn(String.format("地址为空,行号->%s", obj.getRowNum())); - } else if (null == obj.getMemberCount()) { - IcPartyUnitImportFailedExcel failed = ConvertUtils.sourceToTarget(obj, IcPartyUnitImportFailedExcel.class); - failed.setErrorInfo("在职党员为空"); - fileList.add(failed); - log.warn(String.format("在职党员为空,行号->%s", obj.getRowNum())); - } /*else if (StringUtils.isBlank(obj.getLatitude())) { - IcPartyUnitImportFailedExcel failed = ConvertUtils.sourceToTarget(obj, IcPartyUnitImportFailedExcel.class); - failed.setErrorInfo("中心位置纬度为空"); - fileList.add(failed); - log.warn(String.format("中心位置纬度为空,行号->%s", obj.getRowNum())); - } else if (StringUtils.isBlank(obj.getLongitude())) { - IcPartyUnitImportFailedExcel failed = ConvertUtils.sourceToTarget(obj, IcPartyUnitImportFailedExcel.class); - failed.setErrorInfo("中心位置经度为空"); - fileList.add(failed); - log.warn(String.format("中心位置经度为空,行号->%s", obj.getRowNum())); - }*/ - - } - if (CollectionUtils.isNotEmpty(result)) { - List list = result.stream().map(item -> { - IcPartyUnitEntity entity = new IcPartyUnitEntity(); - entity.setCustomerId(tokenDto.getCustomerId()); - entity.setAgencyId(staffInfoCache.getAgencyId()); - entity.setPids(staffInfoCache.getAgencyPIds()); - entity.setUnitName(item.getUnitName()); - entity.setType(PartyUnitTypeEnum.getCode(item.getType())); - // if (StringUtils.isNotBlank(item.getServiceMatter())) { - // entity.setServiceMatter(getServiceMatter(categoryMap, item.getServiceMatter())); - // } - entity.setContact(item.getContact()); - entity.setContactMobile(item.getContactMobile()); - entity.setAddress(item.getAddress()); - // entity.setLatitude(item.getLatitude()); - // entity.setLongitude(item.getLongitude()); - entity.setMemberCount(item.getMemberCount()); - entity.setRemark(item.getRemark()); - return entity; - }).collect(Collectors.toList()); - - insertBatch(list); - } - - String str = String.format("共%s条,成功导入%s条。", fileList.size() + result.size(), fileList.size() + result.size() - fileList.size()); - if (fileList.size() > NumConstant.ZERO) { - List numList = fileList.stream().map(IcPartyUnitImportFailedExcel::getRowNum).sorted().collect(Collectors.toList()); - String subList = numList.stream().map(String::valueOf).collect(Collectors.joining("、")); - log.warn(str + "第" + subList + "行未成功!"); - } - - //错误数据生成文件,修改导入任务状态 - erroeImport(fileList, taskId, tokenDto.getUserId()); - } - - private void erroeImport(List fileList, String importTaskId, String staffId) throws IOException { - String url = ""; - //1.有错误数据则生成错误数据存放文件传到阿里云服务 - if (CollectionUtils.isNotEmpty(fileList)) { - Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams("导入失败的数据列表", "导入失败的数据列表"), - IcPartyUnitImportFailedExcel.class, fileList); - // 文件名 - String resultDescFileName = UUID.randomUUID().toString().concat(".xlsx"); - FileItemFactory factory = new DiskFileItemFactory(16, null); - FileItem fileItem = factory.createItem("file", ContentType.APPLICATION_OCTET_STREAM.toString(), true, resultDescFileName); - OutputStream os = fileItem.getOutputStream(); - Result uploadResult = null; - try { - workbook.write(os); - uploadResult = ossFeignClient.uploadImportTaskDescFile(new CommonsMultipartFile(fileItem)); - } catch (Exception e) { - String errormsg = ExceptionUtils.getErrorStackTrace(e); - log.error("【联建单位信息导入】上传错误描述文件:{}", errormsg); - } finally { - try { - os.close(); - } catch (IOException e) { - String errormsg = ExceptionUtils.getErrorStackTrace(e); - log.error("【联建单位信息导入】上传错误描述文件关闭输出流:{}", errormsg); - } - try { - fileItem.delete(); - } catch (Exception e) { - String errormsg = ExceptionUtils.getErrorStackTrace(e); - log.error("【联建单位信息导入】上传错误描述文件删除临时文件:{}", errormsg); - } - } - - if (uploadResult == null || !uploadResult.success()) { - log.error("【联建单位信息导入】调用OSS上传结果描述文件失败"); - } else { - url = uploadResult.getData().getUrl(); - } - } - //2.更新导入任务数据 - ImportTaskCommonFormDTO importTaskForm = new ImportTaskCommonFormDTO(); - importTaskForm.setOperatorId(staffId); - importTaskForm.setBizType(ImportTaskConstants.BIZ_TYPE_PARTY_UNIT); - importTaskForm.setTaskId(importTaskId); - importTaskForm.setResultDescFilePath(url); - importTaskForm.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_FINISHED_SUCCESS); - if (CollectionUtils.isNotEmpty(fileList)) { - importTaskForm.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL); - importTaskForm.setResultDesc("联建单位导入存在错误数据"); - } - Result result = commonServiceOpenFeignClient.finishImportTask(importTaskForm); - if (!result.success()) { - throw new RenException(result.getInternalMsg()); - } - } - /** * @param formDTO * @Description 按类型统计单位数量 @@ -798,4 +586,113 @@ public class IcPartyUnitServiceImpl extends BaseServiceImpl> partyUnitTypeMap = epmetAdminOpenFeignClient.dictMap(DictTypeEnum.PARTY_UNIT_TYPE.getCode()); + Map tMap = partyUnitTypeMap.getData().entrySet().stream().collect(Collectors.toMap(entry -> entry.getValue(), entry -> entry.getKey())); + + IcPartyUnitExcelImportListener listener = new IcPartyUnitExcelImportListener(customerId,staffInfo, this,tMap); + + EasyExcel.read(filePath.toFile(), IcPartyUnitImportExcel.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("ic_party_unit", "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(); + + EasyExcel.write(os, IcPartyUnitImportExcel.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(userId); + 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(userId); + 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); + } + } + } + } + + private CustomerStaffInfoCacheResult queryCurrentStaff(String customerId, String userId) { + CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(customerId, userId); + if (null == staffInfo) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "查询工作人员缓存信息异常", EpmetErrorCode.SERVER_ERROR.getMsg()); + } + return staffInfo; + } + + /** + * 批量持久化 + * @param entities + */ + public void batchPersist(List entities) { + entities.forEach(e -> { + String id = IdWorker.getIdStr(e); + e.setId(id); + baseDao.insert(e); + }); + } } From ce5df14431da5aff5080e05252de8e4358b63998 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Mon, 20 Feb 2023 16:10:37 +0800 Subject: [PATCH 03/16] =?UTF-8?q?=E8=81=94=E5=BB=BA=E5=8D=95=E4=BD=8D?= =?UTF-8?q?=E5=88=86=E7=B1=BB=EF=BC=8C=20=E5=8F=AF=E7=A9=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/db/migration/V0.0.30__icpartyunit.sql | 1 + 1 file changed, 1 insertion(+) create mode 100644 epmet-module/epmet-heart/epmet-heart-server/src/main/resources/db/migration/V0.0.30__icpartyunit.sql diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/db/migration/V0.0.30__icpartyunit.sql b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/db/migration/V0.0.30__icpartyunit.sql new file mode 100644 index 0000000000..1256f76295 --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/db/migration/V0.0.30__icpartyunit.sql @@ -0,0 +1 @@ +alter table ic_party_unit MODIFY COLUMN `TYPE` varchar(32) NULL COMMENT '分类 【字典表】:02.20因烟台导入需求改为不必填'; From 10fa229d9b0df57c72531f0f5b4ad189d855c164 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Mon, 20 Feb 2023 16:20:30 +0800 Subject: [PATCH 04/16] =?UTF-8?q?=E8=81=94=E5=BB=BA=E5=8D=95=E4=BD=8D?= =?UTF-8?q?=E5=90=8D=E7=A7=B0=E5=B7=B2=E5=AD=98=E5=9C=A8=EF=BC=8Cexceltish?= =?UTF-8?q?i?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IcPartyUnitExcelImportListener.java | 7 +++++++ .../service/impl/IcPartyUnitServiceImpl.java | 20 +++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/handler/IcPartyUnitExcelImportListener.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/handler/IcPartyUnitExcelImportListener.java index 612d77840c..eb823af8e4 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/handler/IcPartyUnitExcelImportListener.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/handler/IcPartyUnitExcelImportListener.java @@ -73,6 +73,13 @@ public class IcPartyUnitExcelImportListener implements ReadListener wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(IcPartyUnitEntity::getAgencyId, agencyId) + .eq(IcPartyUnitEntity::getUnitName, unitName) + .ne(StringUtils.isNotBlank(id),IcPartyUnitEntity::getId,id); + List list = baseDao.selectList(wrapper); + if (CollectionUtils.isNotEmpty(list)) { + return true; + } + return false; + } } From 86c9181c513683421243b0966974943e3bc108fd Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Mon, 20 Feb 2023 17:01:49 +0800 Subject: [PATCH 05/16] zhushi --- .../main/java/com/epmet/controller/IcPartyUnitController.java | 4 ++-- .../java/com/epmet/service/impl/IcPartyUnitServiceImpl.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcPartyUnitController.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcPartyUnitController.java index dca2669ab8..f986fa328d 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcPartyUnitController.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcPartyUnitController.java @@ -230,8 +230,8 @@ public class IcPartyUnitController implements ResultDataResolver { ImportTaskCommonResultDTO rstData = getResultDataOrThrowsException(commonServiceOpenFeignClient.createImportTask(importTaskForm), ServiceConstant.EPMET_COMMON_SERVICE, EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), - "excel行程上报导入错误", - "行程上报导入失败"); + "联建单位导入错误", + "联建单位导入失败"); // 3.执行导入 icPartyUnitService.execAsyncExcelImport(fileSavePath, rstData.getTaskId(),tokenDto.getCustomerId(),tokenDto.getUserId()); diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcPartyUnitServiceImpl.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcPartyUnitServiceImpl.java index 92db4d937f..ffbdd291b4 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcPartyUnitServiceImpl.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcPartyUnitServiceImpl.java @@ -600,7 +600,7 @@ public class IcPartyUnitServiceImpl extends BaseServiceImpl> partyUnitTypeMap = epmetAdminOpenFeignClient.dictMap(DictTypeEnum.PARTY_UNIT_TYPE.getCode()); Map tMap = partyUnitTypeMap.getData().entrySet().stream().collect(Collectors.toMap(entry -> entry.getValue(), entry -> entry.getKey())); @@ -676,7 +676,7 @@ public class IcPartyUnitServiceImpl extends BaseServiceImpl Date: Mon, 20 Feb 2023 17:15:47 +0800 Subject: [PATCH 06/16] /epmetuser/changeWelfare/save --- .../src/main/java/com/epmet/dto/ChangeWelfareDTO.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/ChangeWelfareDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/ChangeWelfareDTO.java index 7ee639d7dc..ef8ec9ae08 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/ChangeWelfareDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/ChangeWelfareDTO.java @@ -1,9 +1,11 @@ package com.epmet.dto; +import com.epmet.commons.tools.validator.group.AddGroup; import com.epmet.commons.tools.validator.group.CustomerClientShowGroup; import lombok.Data; import org.hibernate.validator.constraints.Length; +import javax.validation.constraints.NotBlank; import java.io.Serializable; import java.util.Date; @@ -27,6 +29,7 @@ public class ChangeWelfareDTO implements Serializable { /** * epmet用户主键 */ + @NotBlank(message = "userId不能为空",groups = AddGroup.class) private String userId; /** From b83ace2edbc3101ff3572fd260b914f871160fc5 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Mon, 20 Feb 2023 17:17:13 +0800 Subject: [PATCH 07/16] =?UTF-8?q?=E8=81=94=E5=BB=BA=E6=B4=BB=E5=8A=A8?= =?UTF-8?q?=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/IcPartyActivityController.java | 96 ++--- .../excel/IcPartyActivityImportExcel.java | 71 ++-- .../IcPartyActivityImportListener.java | 111 ++++++ .../epmet/service/IcPartyActivityService.java | 21 +- .../impl/IcPartyActivityServiceImpl.java | 377 ++++++------------ .../templates/icpartyactivity_import_tem.xlsx | Bin 9091 -> 9088 bytes 6 files changed, 324 insertions(+), 352 deletions(-) create mode 100644 epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/handler/IcPartyActivityImportListener.java diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcPartyActivityController.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcPartyActivityController.java index 2dce5600b5..7e428aa6a0 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcPartyActivityController.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcPartyActivityController.java @@ -23,14 +23,14 @@ import com.alibaba.excel.write.metadata.WriteSheet; import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.aop.NoRepeatSubmit; import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.constant.ServiceConstant; +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.feign.ResultDataResolver; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.security.dto.TokenDto; -import com.epmet.commons.tools.utils.ConvertUtils; -import com.epmet.commons.tools.utils.DateUtils; -import com.epmet.commons.tools.utils.ExcelUtils; -import com.epmet.commons.tools.utils.Result; +import com.epmet.commons.tools.utils.*; import com.epmet.commons.tools.utils.poi.excel.handler.FreezeAndFilter; import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.commons.tools.validator.group.AddGroup; @@ -46,7 +46,6 @@ import com.epmet.feign.EpmetCommonServiceOpenFeignClient; import com.epmet.service.IcPartyActivityService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.io.FilenameUtils; import org.apache.commons.io.IOUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpHeaders; @@ -56,12 +55,14 @@ import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; 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.Date; import java.util.List; -import java.util.concurrent.CompletableFuture; +import java.util.UUID; /** @@ -73,7 +74,7 @@ import java.util.concurrent.CompletableFuture; @Slf4j @RestController @RequestMapping("icpartyactivity") -public class IcPartyActivityController { +public class IcPartyActivityController implements ResultDataResolver { @Autowired private IcPartyActivityService icPartyActivityService; @@ -163,58 +164,49 @@ public class IcPartyActivityController { */ @PostMapping("import") public Result importData(@LoginUser TokenDto tokenDto, HttpServletResponse response, @RequestPart("file") MultipartFile file) throws IOException { - if (file.isEmpty()) { - throw new RenException("请上传文件"); + // 1.暂存文件 + String originalFilename = file.getOriginalFilename(); + String extName = originalFilename.substring(originalFilename.lastIndexOf(".")); + + Path fileSavePath; + try { + Path importPath = FileUtils.getAndCreateDirUnderEpmetFilesDir("ic_party_activity", "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(), "文件上传失败", "文件上传失败"); } - String originalFilename = file.getOriginalFilename(); - // 校验文件类型 - String extension = FilenameUtils.getExtension(originalFilename); - if (!"xls".equals(extension) && !"xlsx".equals(extension)) { - throw new RenException("文件类型不匹配"); + 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); } - //1.查询当前工作人员是否有再导入的党员先锋数据,有则不允许导入,没有则进行新的导入 + // 2.生成导入任务记录 ImportTaskCommonFormDTO importTaskForm = new ImportTaskCommonFormDTO(); - importTaskForm.setOriginFileName(file.getOriginalFilename()); importTaskForm.setOperatorId(tokenDto.getUserId()); - importTaskForm.setBizType(ImportTaskConstants.BIZ_TYPE_PARTY_UNIT); - Result result = commonServiceOpenFeignClient.createImportTask(importTaskForm); - if (!result.success()) { - throw new RenException(result.getInternalMsg()); - } + importTaskForm.setBizType(ImportTaskConstants.BIZ_TYPE_PARTY_ACTIVITY); + importTaskForm.setOriginFileName(originalFilename); - // 异步执行导入 - CompletableFuture.runAsync(() -> { - try { - Thread.sleep(1000L); - } catch (InterruptedException e) { - log.error("method exception", e); - } - submitResiImportTask(tokenDto, response, file, result.getData().getTaskId()); - }); - return new Result(); - } + ImportTaskCommonResultDTO rstData = getResultDataOrThrowsException(commonServiceOpenFeignClient.createImportTask(importTaskForm), + ServiceConstant.EPMET_COMMON_SERVICE, + EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), + "联建活动导入错误", + "联建活动导入失败"); - private void submitResiImportTask(TokenDto tokenDto, HttpServletResponse response, MultipartFile file, String importTaskId) { - - try { - icPartyActivityService.importData(tokenDto, response, file, importTaskId); - } catch (Throwable e) { - String errorMsg = ExceptionUtils.getThrowableErrorStackTrace(e); - log.error("【导入联建活动信息失败】导入失败:{}", errorMsg); - - ImportTaskCommonFormDTO importTaskForm = new ImportTaskCommonFormDTO(); - importTaskForm.setOperatorId(tokenDto.getUserId()); - importTaskForm.setBizType(ImportTaskConstants.BIZ_TYPE_PARTY_ACTIVITY); - importTaskForm.setTaskId(importTaskId); - importTaskForm.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL); - importTaskForm.setResultDesc("联建活动信息导入失败,请查看系统日志"); - Result result = commonServiceOpenFeignClient.finishImportTask(importTaskForm); - if (!result.success()) { - throw new RenException(result.getInternalMsg()); - } - } + // 3.执行导入 + icPartyActivityService.execAsyncExcelImport(fileSavePath, rstData.getTaskId(),tokenDto.getCustomerId(),tokenDto.getUserId()); + return new Result(); } /** diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/IcPartyActivityImportExcel.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/IcPartyActivityImportExcel.java index 6a2d4116ef..6998d20078 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/IcPartyActivityImportExcel.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/IcPartyActivityImportExcel.java @@ -17,9 +17,16 @@ package com.epmet.excel; -import cn.afterturn.easypoi.excel.annotation.Excel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; import com.epmet.commons.tools.utils.ExcelVerifyInfo; +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.util.Date; /** * 联建活动 @@ -28,39 +35,57 @@ import lombok.Data; * @since v1.0.0 2021-11-19 */ @Data -public class IcPartyActivityImportExcel extends ExcelVerifyInfo { - - @Excel(name = "单位名称") - private String unitName; +public class IcPartyActivityImportExcel extends ExcelVerifyInfo { - @Excel(name = "服务事项") - private String serviceMatter; - - @Excel(name = "活动标题") + @NotBlank(message = "活动标题必填") + @Length(max = 50, message = "活动标题最多输入50字") + @ExcelProperty(value = "活动标题*") private String title; - @Excel(name = "活动目标") + @NotBlank(message = "活动目标必填") + @Length(max = 100, message = "活动目标最多输入100字") + @ExcelProperty(value = "活动目标*") private String target; - @Excel(name = "活动内容") - private String content; + @NotNull(message = "服务人数必填") + @ExcelProperty(value = "服务人数*") + private Integer peopleCount; - @Excel(name = "活动地址") + @NotNull(message = "活动时间不能为空") + @ExcelProperty("活动时间*") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date activityTime; + + @NotBlank(message = "详细地址") + @Length(max = 250, message = "详细地址最多输入250字") + @ExcelProperty(value = "详细地址*") private String address; - @Excel(name = "活动地址经度") - private String longitude; - @Excel(name = "活动地址纬度") - private String latitude; + @Data + public static class ErrorRow { + @ColumnWidth(38) + @ExcelProperty(value = "活动标题*") + private String title; - @Excel(name = "服务人数") - private Integer peopleCount; + @ColumnWidth(40) + @ExcelProperty(value = "活动目标*") + private String target; + + @ColumnWidth(10) + @ExcelProperty(value = "服务人数*") + private Integer peopleCount; - @Excel(name = "活动时间") - private String activityTime; + @ColumnWidth(25) + @ExcelProperty("活动时间*") + private Date activityTime; - @Excel(name = "活动结果") - private String result; + @ColumnWidth(40) + @ExcelProperty(value = "详细地址*") + private String address; + @ColumnWidth(60) + @ExcelProperty("错误信息") + private String errorInfo; + } } \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/handler/IcPartyActivityImportListener.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/handler/IcPartyActivityImportListener.java new file mode 100644 index 0000000000..26e1d9d2a3 --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/handler/IcPartyActivityImportListener.java @@ -0,0 +1,111 @@ +package com.epmet.excel.handler; + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.read.listener.ReadListener; +import com.epmet.commons.tools.constant.StrConstant; +import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; +import com.epmet.commons.tools.exception.ExceptionUtils; +import com.epmet.commons.tools.exception.ValidateException; +import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.commons.tools.validator.ValidatorUtils; +import com.epmet.entity.IcPartyActivityEntity; +import com.epmet.excel.IcPartyActivityImportExcel; +import com.epmet.service.impl.IcPartyActivityServiceImpl; +import lombok.extern.slf4j.Slf4j; + +import java.util.ArrayList; +import java.util.List; + +/** + * @Description + * @Author yzm + * @Date 2023/2/20 15:36 + */ +@Slf4j +public class IcPartyActivityImportListener implements ReadListener { + /** + * 最大条数阈值 + */ + public static final int MAX_THRESHOLD = 200; + /** + * 当前操作用户 + */ + private CustomerStaffInfoCacheResult staffInfo; + private String customerId; + /** + * 数据 + */ + private List datas = new ArrayList<>(); + + /** + * 错误项列表 + */ + private List errorRows = new ArrayList<>(); + private IcPartyActivityServiceImpl icPartyActivityService; + + public IcPartyActivityImportListener(String customerId, CustomerStaffInfoCacheResult staffInfo, IcPartyActivityServiceImpl icPartyActivityService) { + this.customerId=customerId; + this.staffInfo = staffInfo; + this.icPartyActivityService = icPartyActivityService; + } + + + @Override + public void invoke(IcPartyActivityImportExcel data, AnalysisContext context) { + try { + // 先校验数据 + ValidatorUtils.validateEntity(data); + IcPartyActivityEntity e = ConvertUtils.sourceToTarget(data, IcPartyActivityEntity.class); + e.setCustomerId(customerId); + e.setAgencyId(staffInfo.getAgencyId()); + e.setPids(staffInfo.getAgencyPIds()); + e.setContent(StrConstant.EPMETY_STR); + datas.add(e); + + if (datas.size() == MAX_THRESHOLD) { + execPersist(); + } + } catch (Exception e) { + String errorMsg = null; + if (e instanceof ValidateException) { + errorMsg = ((ValidateException) e).getMsg(); + } else { + errorMsg = "未知错误"; + log.error("【联建活动导入】出错:{}", ExceptionUtils.getErrorStackTrace(e)); + } + + IcPartyActivityImportExcel.ErrorRow errorRow = ConvertUtils.sourceToTarget(data,IcPartyActivityImportExcel.ErrorRow.class); + errorRow.setErrorInfo(errorMsg); + errorRows.add(errorRow); + } + } + + @Override + public void doAfterAllAnalysed(AnalysisContext analysisContext) { + // 最后几条达不到阈值,这里必须再调用一次 + execPersist(); + } + + + /** + * 执行持久化 + */ + private void execPersist() { + try { + if (datas != null && datas.size() > 0) { + icPartyActivityService.batchPersist(datas); + } + } finally { + datas.clear(); + } + } + + /** + * 获取错误行 + * @return + */ + public List getErrorRows() { + return errorRows; + } +} + diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcPartyActivityService.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcPartyActivityService.java index 6fe8225b11..22c559aace 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcPartyActivityService.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcPartyActivityService.java @@ -24,10 +24,8 @@ import com.epmet.dto.IcPartyActivityDTO; import com.epmet.dto.form.PartyActivityFormDTO; import com.epmet.dto.result.demand.OptionDTO; import com.epmet.entity.IcPartyActivityEntity; -import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; +import java.nio.file.Path; import java.util.List; /** @@ -88,17 +86,6 @@ public interface IcPartyActivityService extends BaseService option = icPartyUnitService.option(unitDTO).stream().collect(Collectors.toMap(OptionDTO::getValue, OptionDTO::getLabel)); dtoList.forEach(dto -> { - //联建单位ID与单位名匹配 - List unitIds = Arrays.asList(dto.getUnitId().split(StrConstant.COMMA)); - // List unitNames = unitIds.stream().map(option::get).collect(Collectors.toList()); - // if(CollectionUtils.isEmpty(unitNames)){ - List unitNames=icPartyUnitService.getUnitNames(unitIds); - // } - dto.setUnitIdList(unitIds); - dto.setUnitName(StringUtils.join(unitNames, StrConstant.COMMA)); - dto.setUnitNameList(unitNames); + if(StringUtils.isNotBlank(dto.getUnitId())){ + //联建单位ID与单位名匹配 + List unitIds = Arrays.asList(dto.getUnitId().split(StrConstant.COMMA)); + // List unitNames = unitIds.stream().map(option::get).collect(Collectors.toList()); + // if(CollectionUtils.isEmpty(unitNames)){ + List unitNames=icPartyUnitService.getUnitNames(unitIds); + // } + dto.setUnitIdList(unitIds); + dto.setUnitName(StringUtils.join(unitNames, StrConstant.COMMA)); + dto.setUnitNameList(unitNames); + } if (StringUtils.isNotEmpty(dto.getGridId())) { GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(dto.getGridId()); if (null != gridInfo) { @@ -283,248 +279,6 @@ public class IcPartyActivityServiceImpl extends BaseServiceImpl fileList = new ArrayList<>(); - ExcelImportResult importResult = ExcelPoiUtils.importExcelMore(file, 0, 1, IcPartyActivityImportExcel.class); - List failList = importResult.getFailList(); - //存放错误数据行号 - if (!org.springframework.util.CollectionUtils.isEmpty(failList)) { - for (IcPartyActivityImportExcel entity : failList) { - //打印失败的行 和失败的信息 - log.warn("第{}行,{}", entity.getRowNum(), entity.getErrorMsg()); - IcPartyActivityImportFailedExcel failed = ConvertUtils.sourceToTarget(entity, IcPartyActivityImportFailedExcel.class); - failed.setErrorInfo(entity.getErrorMsg()); - fileList.add(failed); - } - } - List result = importResult.getList(); - - CustomerStaffInfoCacheResult staffInfoCache = CustomerStaffRedis.getStaffInfo(tokenDto.getCustomerId(), tokenDto.getUserId()); - //获取服务事项 - List serviceItemList = icServiceItemDictService.queryDictList(tokenDto.getCustomerId()); - Map categoryMap = serviceItemList.stream().collect(Collectors.toMap(OptionDTO::getValue, OptionDTO::getLabel)); - //获取联建单位 - IcPartyUnitDTO unitDTO = new IcPartyUnitDTO(); - unitDTO.setAgencyId(staffInfoCache.getAgencyId()); - Map option = icPartyUnitService.option(unitDTO).stream().collect(Collectors.toMap(OptionDTO::getLabel, OptionDTO::getValue)); - - //1.数据校验 - Iterator iterator = result.iterator(); - while (iterator.hasNext()) { - IcPartyActivityImportExcel obj = iterator.next(); - //单位名称校验 - if (StringUtils.isBlank(obj.getUnitName())) { - IcPartyActivityImportFailedExcel failed = ConvertUtils.sourceToTarget(obj, IcPartyActivityImportFailedExcel.class); - failed.setErrorInfo("单位名称为空"); - fileList.add(failed); - log.warn(String.format("单位名称为空,行号->%s", obj.getRowNum())); - iterator.remove(); - } else { - List unitList = Arrays.asList(obj.getUnitName().split(StrConstant.COMMA)); - unitList.forEach(unit -> { - if (null == option.get(unit)) { - IcPartyActivityImportFailedExcel failed = ConvertUtils.sourceToTarget(obj, IcPartyActivityImportFailedExcel.class); - failed.setErrorInfo("单位名称不存在"); - fileList.add(failed); - log.warn(String.format("单位名称不存在,行号->%s", obj.getRowNum())); - iterator.remove(); - } - }); - } - //服务事项校验 - if (StringUtils.isBlank(obj.getServiceMatter())) { - IcPartyActivityImportFailedExcel failed = ConvertUtils.sourceToTarget(obj, IcPartyActivityImportFailedExcel.class); - failed.setErrorInfo("服务事项为空"); - fileList.add(failed); - log.warn(String.format("服务事项为空,行号->%s", obj.getRowNum())); - iterator.remove(); - } else { - List serviceList = Arrays.asList(obj.getServiceMatter().split(StrConstant.SEMICOLON)); - serviceList.forEach(service -> { - if (null == categoryMap.get(service)) { - IcPartyActivityImportFailedExcel failed = ConvertUtils.sourceToTarget(obj, IcPartyActivityImportFailedExcel.class); - failed.setErrorInfo("服务事项不存在"); - fileList.add(failed); - log.warn(String.format("服务事项不存在,行号->%s", obj.getRowNum())); - iterator.remove(); - } - }); - - } - //活动标题 活动目标 活动内容 活动时间 活动地址 活动地址经度 活动地址纬度 活动结果 - if (StringUtils.isBlank(obj.getTitle())) { - IcPartyActivityImportFailedExcel failed = ConvertUtils.sourceToTarget(obj, IcPartyActivityImportFailedExcel.class); - failed.setErrorInfo("活动标题为空"); - fileList.add(failed); - log.warn(String.format("活动标题为空,行号->%s", obj.getRowNum())); - iterator.remove(); - } else if (StringUtils.isBlank(obj.getTarget())) { - IcPartyActivityImportFailedExcel failed = ConvertUtils.sourceToTarget(obj, IcPartyActivityImportFailedExcel.class); - failed.setErrorInfo("活动目标为空"); - fileList.add(failed); - log.warn(String.format("活动目标为空,行号->%s", obj.getRowNum())); - } else if (StringUtils.isBlank(obj.getContent())) { - IcPartyActivityImportFailedExcel failed = ConvertUtils.sourceToTarget(obj, IcPartyActivityImportFailedExcel.class); - failed.setErrorInfo("活动内容为空"); - fileList.add(failed); - log.warn(String.format("活动内容为空,行号->%s", obj.getRowNum())); - } else if (StringUtils.isBlank(obj.getActivityTime())) { - IcPartyActivityImportFailedExcel failed = ConvertUtils.sourceToTarget(obj, IcPartyActivityImportFailedExcel.class); - failed.setErrorInfo("活动时间为空"); - fileList.add(failed); - log.warn(String.format("活动时间为空,行号->%s", obj.getRowNum())); - } else if (StringUtils.isBlank(obj.getAddress())) { - IcPartyActivityImportFailedExcel failed = ConvertUtils.sourceToTarget(obj, IcPartyActivityImportFailedExcel.class); - failed.setErrorInfo("活动地址为空"); - fileList.add(failed); - log.warn(String.format("活动地址为空,行号->%s", obj.getRowNum())); - } else if (StringUtils.isBlank(obj.getLatitude())) { - IcPartyActivityImportFailedExcel failed = ConvertUtils.sourceToTarget(obj, IcPartyActivityImportFailedExcel.class); - failed.setErrorInfo("活动地址纬度为空"); - fileList.add(failed); - log.warn(String.format("活动地址纬度为空,行号->%s", obj.getRowNum())); - } else if (StringUtils.isBlank(obj.getLongitude())) { - IcPartyActivityImportFailedExcel failed = ConvertUtils.sourceToTarget(obj, IcPartyActivityImportFailedExcel.class); - failed.setErrorInfo("活动地址经度为空"); - fileList.add(failed); - log.warn(String.format("活动地址经度为空,行号->%s", obj.getRowNum())); - } else if (StringUtils.isBlank(obj.getResult())) { - IcPartyActivityImportFailedExcel failed = ConvertUtils.sourceToTarget(obj, IcPartyActivityImportFailedExcel.class); - failed.setErrorInfo("活动结果为空"); - fileList.add(failed); - log.warn(String.format("活动结果为空,行号->%s", obj.getRowNum())); - } - } - if (CollectionUtils.isNotEmpty(result)) { - result.forEach(item -> { - IcPartyActivityEntity entity = new IcPartyActivityEntity(); - entity.setCustomerId(tokenDto.getCustomerId()); - entity.setAgencyId(staffInfoCache.getAgencyId()); - entity.setPids(staffInfoCache.getAgencyPIds()); - entity.setTitle(item.getTitle()); - entity.setTarget(item.getTarget()); - entity.setContent(item.getContent()); - entity.setPeopleCount(item.getPeopleCount()); - entity.setActivityTime(DateUtils.parse(item.getActivityTime(), DateUtils.DATE_TIME_PATTERN)); - entity.setAddress(item.getAddress()); - entity.setLatitude(item.getLatitude()); - entity.setLongitude(item.getLongitude()); - entity.setResult(item.getResult()); - insert(entity); - - //保存活动与单位关系 - icActivityUnitRelationService.deleteByActivity(entity.getId()); - AtomicInteger i = new AtomicInteger(NumConstant.ONE); - List unitRelationList = Arrays.stream(item.getUnitName().split(StrConstant.COMMA)).map(unit -> { - IcActivityUnitRelationEntity relation = new IcActivityUnitRelationEntity(); - relation.setCustomerId(entity.getCustomerId()); - relation.setAgencyId(entity.getAgencyId()); - relation.setPids(entity.getPids()); - relation.setActivityId(entity.getId()); - relation.setUnitId(option.get(unit)); - relation.setSort(i.getAndIncrement()); - return relation; - }).collect(Collectors.toList()); - icActivityUnitRelationService.insertBatch(unitRelationList); - - //保存活动与服务关系 - icActivityServiceRelationService.deleteByActivity(entity.getId()); - AtomicInteger j = new AtomicInteger(NumConstant.ONE); - List serviceRelationList = Arrays.stream(item.getServiceMatter().split(StrConstant.SEMICOLON)).map(service -> { - IcActivityServiceRelationEntity relation = new IcActivityServiceRelationEntity(); - relation.setCustomerId(entity.getCustomerId()); - relation.setAgencyId(entity.getAgencyId()); - relation.setPids(entity.getPids()); - relation.setActivityId(entity.getId()); - relation.setServiceMatter(categoryMap.get(service)); - relation.setSort(j.getAndIncrement()); - return relation; - }).collect(Collectors.toList()); - icActivityServiceRelationService.insertBatch(serviceRelationList); - }); - } - String str = String.format("共%s条,成功导入%s条。", fileList.size() + result.size(), fileList.size() + result.size() - fileList.size()); - - if (fileList.size() > NumConstant.ZERO) { - List numList = fileList.stream().map(IcPartyActivityImportFailedExcel::getRowNum).sorted().collect(Collectors.toList()); - String subList = numList.stream().map(String::valueOf).collect(Collectors.joining("、")); - log.warn(str + "第" + subList + "行未成功!"); - } - - //错误数据生成文件,修改导入任务状态 - erroeImport(fileList, taskId, tokenDto.getUserId()); - } - - private void erroeImport(List fileList, String importTaskId, String staffId) throws IOException { - String url = ""; - //1.有错误数据则生成错误数据存放文件传到阿里云服务 - if (CollectionUtils.isNotEmpty(fileList)) { - Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams("导入失败的数据列表", "导入失败的数据列表"), - IcPartyActivityImportFailedExcel.class, fileList); - // 文件名 - String resultDescFileName = UUID.randomUUID().toString().concat(".xlsx"); - FileItemFactory factory = new DiskFileItemFactory(16, null); - FileItem fileItem = factory.createItem("file", ContentType.APPLICATION_OCTET_STREAM.toString(), true, resultDescFileName); - OutputStream os = fileItem.getOutputStream(); - Result uploadResult = null; - try { - workbook.write(os); - uploadResult = ossFeignClient.uploadImportTaskDescFile(new CommonsMultipartFile(fileItem)); - } catch (Exception e) { - String errormsg = ExceptionUtils.getErrorStackTrace(e); - log.error("【联建活动信息导入】上传错误描述文件:{}", errormsg); - } finally { - try { - os.close(); - } catch (IOException e) { - String errormsg = ExceptionUtils.getErrorStackTrace(e); - log.error("【联建活动信息导入】上传错误描述文件关闭输出流:{}", errormsg); - } - try { - fileItem.delete(); - } catch (Exception e) { - String errormsg = ExceptionUtils.getErrorStackTrace(e); - log.error("【联建活动信息导入】上传错误描述文件删除临时文件:{}", errormsg); - } - } - - if (uploadResult == null || !uploadResult.success()) { - log.error("【联建活动信息导入】调用OSS上传结果描述文件失败"); - } else { - url = uploadResult.getData().getUrl(); - } - } - //2.更新导入任务数据 - ImportTaskCommonFormDTO importTaskForm = new ImportTaskCommonFormDTO(); - importTaskForm.setOperatorId(staffId); - importTaskForm.setBizType(ImportTaskConstants.BIZ_TYPE_PARTY_ACTIVITY); - importTaskForm.setTaskId(importTaskId); - importTaskForm.setResultDescFilePath(url); - importTaskForm.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_FINISHED_SUCCESS); - if (CollectionUtils.isNotEmpty(fileList)) { - importTaskForm.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL); - importTaskForm.setResultDesc("联建活动导入存在错误数据"); - } - Result result = commonServiceOpenFeignClient.finishImportTask(importTaskForm); - if (!result.success()) { - throw new RenException(result.getInternalMsg()); - } - } - /** * 联建活动统计 * @@ -656,4 +410,101 @@ public class IcPartyActivityServiceImpl extends BaseServiceImpl errorRows = listener.getErrorRows(); + + boolean failed = errorRows.size() > 0; + if (failed) { + // 生成并上传错误文件 + try { + // 文件生成 + Path errorDescDir = FileUtils.getAndCreateDirUnderEpmetFilesDir("ic_party_activity", "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(); + + EasyExcel.write(os, IcPartyActivityImportExcel.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(userId); + 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(userId); + 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); + } + } + } + } + + /** + * 批量持久化 + * @param entities + */ + public void batchPersist(List entities) { + entities.forEach(e -> { + String id = IdWorker.getIdStr(e); + e.setId(id); + baseDao.insert(e); + }); + } } diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/templates/icpartyactivity_import_tem.xlsx b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/templates/icpartyactivity_import_tem.xlsx index 1d04c7c15d9349ff3e64e60391b15e6d6dcc760a..c7ef327c10ebf733cd261e809a102ac14ff3dc61 100644 GIT binary patch delta 1547 zcmV+m2K4!ZM}SALlK}<7WA_70lb8W4e-@~$B$WVlMI|JHKXP`nhmS|{i>Tlh2N8OxMlMX4Y` z4Hz^}kB?$rQC@1e)@23S=3qQWQik#>K^to;im~AvkjwPZ(JKyVBNNKn?`FbMIF*MgSj&xTGJIc08}%I&m^ zJ7x>si-UV>^1)cwbx=>b7%qQ^@0V9M-Ku`B+FNlzX)HM98kjA0+PugZkLvbz1v7T( z&b-P&oHyy$$Lr_YdyIc84%FrDK4~C4mxT7Y_sZSm;xb#HG$PT&Cy^hXW#ojCGfK!q zJNTf#P1Zli-S~eHBa)FBolfaA91-_`w99??8`5vH`~tH93ZQF!ERzBN0QLowxdb17 zRNHRbFbsVkuzwJQzSg%SO&i21+N8w>Y(TN=vm(>6P}%Y%C2szHloY!OQWSl$EQ&ll zB#$(|eW@kcfi^-lIZdO45@@(8M6=21?_ZCX*OVB`nu1ByKu-5y=!PkT5pNDGjvACsW3bDAt+A?J zG0W&;?kDi1)^iM2X{{#u#LV;4D#7SVS)U$K^ zil)S2dk2TexD`8Cf|L#zRrD|9xJYMr7iluSo=mS?u6Rgx{NE>j^!jC{bH0MFZbp2NDl+IzF`_h_hjGt|Vr{FR6voKP5GL z3B`phBfJpC?j=e;qlEi59tfldfDnqOJ`~q3gl1P!hGaezJvv0=dWcTP(P;V_jtB1~ z$NGG7T;C3VpF5`U;kfqPr>>9hQIA9G{P3Kv7IUpSf_Ki1+J6JzFhFmAa0AMQLWYr{ zf6LqplFlZmAnriCVEo)L#-Me#Napbl6~Yf5_aP5fJb0w19?Rf?bqpTasmJOZV|42A zaPBc4JYuYPC>zsw0gl7aLq*vv>npl<{mf~Qyblb*54~&I2EH@B5se`dN+g^_Zu&aN zI&7?JeIM7#;$;pk#RnA^uwRKASE-ckH>mB(pFMh`yJy3Tz4#B194%d@ z0RRBa1(Sgo8h_=K&r8EF6vyv^|3k=8aB1fcMB45k^z1?ZfY`>i&?Yr68|ulE!o-uv z1ShBm@iccB9ya`M*3SJGrmgO{lc2aq2)yrm;eGjp#A+NTF={ahk>EBqYX(M)d%}-+ zVB`HgcXbORP?Y;L7M$7mgaK|i%S#r3Li#KR8;44z+kb?B7qWyxO{9$L%At@6RXUXc zfmAZ;L&%s)Vp2DZO_I=vW8{e@S2o_jsL7+FCfoVW9Sb7Il6vjx4Ng&u#@b&U6UXvI zEF@BTnl@w>igX26RZG^p9KTF-o_$?5VyPjq-^D^%){w;{^Rn~qS4~O|pf3ZPS zPowiT?F<$g#K-INWOSZ&``P{39|A%2ckFxuv*H=91p&*Gksm+-Gn3LEGXYnV1|X9K z!ejRXOp~4m0ily7B02$XlVKt@0hN=OB0vG(li4CX0eO=a xBOx51Yke$}0ssK^1pojT000000000103ZMW0Hp+zy#yMQZ6go{V;=wj000ml%S8YH delta 1560 zcmV+z2Iu*JM}tSOlK};+Sw)vflb8W4f2b5$Nh$&Aib_Znf!JC0w2g=z%Ql3t;sPwW z2Dd_711D)iD_F1`|37d3jGWD$WfeSuv1P4t6h{OFpm;4xwa(Gaavq+dz&fS`t7-)~ zYQdseaeS0(#hn$ z8+_2;B^w^(cKpAI>6DUWkGKOAeeT2GP<#Wj1G51NY*O1$n*sm;Oa_y^1RsA@+m6~W z5Ph%If3W<%xe%5uh_Gs*sFhl2)$6lyCd67NPHjVW|Gr~8$%0s|c!`NUbLO0xQvq0l2#v{U zWo^5NW5X+`nTb>j4W5)r*UW$7tKP?^)xZj$RLgjhB(u0?qM-p{p|8PEWhppp6hG9^ z*Z`tIGK>68C0a9}Jr!5s6`FOZb>MSCaT88PymWfOuNGV@qe>fbRmXwarOJ6cKhs(B z3!qn;RWto~Xm1d>MR7YJg?;vN2SQ+9aJsIGy4FOz=~rL~ZNdYB0NV`_@uPAJl(>WdXeyHvXh<#;| zN*3Kxq7GJy2EM@&Bp!d}bb7vrAUXBwxRO{2pQIMf^pw=>DJTk6(rGlCAf&O+5K| z>*;UHp7rUt4&3kD7~T>dhtB)iJ1?%5T6F~Psk4WF2EJkbe#3vwcQOhYCywzgb6=fw zF+R`jhi1a*SeHk%1kJy9=R61g0=MkSTF{bAc z+slaCF(SsEjE%uE-r>_=i=a7MWP|3l>v&FQ{!aPCaI->pTegSqOz%Zwh=dXeCz11q z4)-R!Sk?MY@01_KPef=sex?CCnz(_MO4;EBeP8*rt>1JPdHf$({Rfa9vy2Dl5DLJT zRH{b-003YFlYJN(f6bJ^N&_(vhVO#!5ONf3wpEHqHa!SEd(a1n+t^*$O=>1B>ZvEi ziU$#?U@g^yc&ZhOht|GLcWd9mY^(JZb{GQl=O5-90->eTC`1jRAyCrA`J981ke;dp zvg+c)gYxDMMqs$C@K8zN;xhrb#Maj+fI+rbf{T4)YP*Dhf9H#cLr&F%v^U2}N8H#_ zR|(X#;1%$NFi}Vfj#DHN44O?qFH z7)FVe)7-ZQoTCO0EqMVGMm-fOjdb18pN-h-`Y;K z#R_8Si~^~2Nh*@XAj39R!%52a&o>;$t+%9iIe&RrSu)2rd+b}pO!9SZ;@0zYG)nFV zndDo(Z~JrJ9%hm6`~7t`zKA=6_^Fv8K4O0e_5-uu8LkBZ&XbNGKmj(B&mS`ZT9X4H zlLf3 Date: Mon, 20 Feb 2023 17:18:11 +0800 Subject: [PATCH 08/16] =?UTF-8?q?=E8=81=94=E5=BB=BA=E6=B4=BB=E5=8A=A8?= =?UTF-8?q?=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../templates/icpartyactivity_import_tem.xlsx | Bin 9088 -> 9051 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/templates/icpartyactivity_import_tem.xlsx b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/templates/icpartyactivity_import_tem.xlsx index c7ef327c10ebf733cd261e809a102ac14ff3dc61..a21f2da6ccbfdcf1c9256336eaddcfcf5ccfec61 100644 GIT binary patch delta 4244 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 V0Hp+zzyunTMI#UfV;=wj0047>)ujLc From f8ade32067c7b2de5fb16de1463aa37698fcc7bf Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Tue, 21 Feb 2023 09:54:59 +0800 Subject: [PATCH 09/16] =?UTF-8?q?=E7=A6=8F=E5=88=A9=E4=BA=BA=E5=91=98?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/epmet/service/impl/ChangeWelfareServiceImpl.java | 9 ++++++--- .../src/main/resources/mapper/ChangeWelfareDao.xml | 6 +++--- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/ChangeWelfareServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/ChangeWelfareServiceImpl.java index 9fd94f7a7f..1e6e5f6e01 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/ChangeWelfareServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/ChangeWelfareServiceImpl.java @@ -3,7 +3,6 @@ package com.epmet.service.impl; import cn.afterturn.easypoi.excel.ExcelExportUtil; import cn.afterturn.easypoi.excel.entity.ExportParams; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; import com.epmet.commons.tools.constant.FieldConstant; import com.epmet.commons.tools.constant.NumConstant; @@ -38,6 +37,8 @@ import com.epmet.feign.EpmetCommonServiceOpenFeignClient; import com.epmet.feign.OssFeignClient; import com.epmet.redis.ChangeWelfareRedis; import com.epmet.service.ChangeWelfareService; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.fileupload.FileItem; @@ -96,9 +97,11 @@ public class ChangeWelfareServiceImpl extends BaseServiceImpl page(Map params) { params.put("customerId", loginUserUtil.getLoginUserCustomerId()); - IPage page = getPage(params); + // IPage page = getPage(params); + PageHelper.startPage((Integer) params.get("page"), (Integer) params.get("limit")); List list = baseDao.getWelfareList(params); - return new PageData<>(list, page.getTotal()); + PageInfo pageInfo = new PageInfo<>(list); + return new PageData<>(list, pageInfo.getTotal()); } @Override diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/ChangeWelfareDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/ChangeWelfareDao.xml index 6953f24a98..c163416934 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/ChangeWelfareDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/ChangeWelfareDao.xml @@ -56,13 +56,13 @@ AND w.GRID_ID = #{gridId} - AND w.NAME = #{name} + AND w.NAME like concat('%', #{name},'%') - AND w.ID_CARD = #{idCard} + AND w.ID_CARD like concat('%', #{idCard},'%') - AND w.MOBILE = #{mobile} + AND w.MOBILE like concat('%', #{mobile},'%') AND w.JOIN_DATE >= #{startTime} From e820c536fa8abf4493eb4cec4b4686e3ffbf47f5 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Tue, 21 Feb 2023 10:08:33 +0800 Subject: [PATCH 10/16] =?UTF-8?q?=E7=A6=8F=E5=88=A9=E4=BA=BA=E5=91=98?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/epmet/service/impl/ChangeWelfareServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/ChangeWelfareServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/ChangeWelfareServiceImpl.java index 1e6e5f6e01..85ff254bc4 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/ChangeWelfareServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/ChangeWelfareServiceImpl.java @@ -98,7 +98,7 @@ public class ChangeWelfareServiceImpl extends BaseServiceImpl page(Map params) { params.put("customerId", loginUserUtil.getLoginUserCustomerId()); // IPage page = getPage(params); - PageHelper.startPage((Integer) params.get("page"), (Integer) params.get("limit")); + PageHelper.startPage(Integer.valueOf((String) params.get("page")), Integer.valueOf((String) params.get("limit"))); List list = baseDao.getWelfareList(params); PageInfo pageInfo = new PageInfo<>(list); return new PageData<>(list, pageInfo.getTotal()); From 6cb92e429160f7376edc6bfe504a0ff2f0e00a27 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Tue, 21 Feb 2023 10:09:34 +0800 Subject: [PATCH 11/16] ) --- .../src/main/resources/mapper/ChangeWelfareDao.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/ChangeWelfareDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/ChangeWelfareDao.xml index c163416934..f45370a95f 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/ChangeWelfareDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/ChangeWelfareDao.xml @@ -56,7 +56,7 @@ AND w.GRID_ID = #{gridId} - AND w.NAME like concat('%', #{name},'%') + AND w.NAME like concat('%', #{name},'%') AND w.ID_CARD like concat('%', #{idCard},'%') From 58bf5a27340d09c0eef89bd21839310ef036c3a0 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Tue, 21 Feb 2023 10:43:30 +0800 Subject: [PATCH 12/16] page --- .../src/main/java/com/epmet/dto/ChangeWelfareDTO.java | 2 ++ .../java/com/epmet/controller/ChangeWelfareController.java | 4 ++-- .../src/main/resources/mapper/ChangeWelfareDao.xml | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/ChangeWelfareDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/ChangeWelfareDTO.java index ef8ec9ae08..f04be7b82e 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/ChangeWelfareDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/ChangeWelfareDTO.java @@ -70,6 +70,7 @@ public class ChangeWelfareDTO implements Serializable { /** * 加入原因 */ + @Length(max = 250,message = "添加原因最多输入250字",groups = AddUserShowGroup.class) private String joinReason; /** @@ -80,6 +81,7 @@ public class ChangeWelfareDTO implements Serializable { /** * 移除原因 */ + @Length(max = 250,message = "移除原因最多输入250字",groups = AddUserShowGroup.class) private String removeReason; /** diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/ChangeWelfareController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/ChangeWelfareController.java index 671c4c8681..c3ea057e9b 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/ChangeWelfareController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/ChangeWelfareController.java @@ -70,7 +70,7 @@ public class ChangeWelfareController { @PostMapping("save") public Result save(@RequestBody ChangeWelfareDTO dto){ //效验数据 - ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class); + ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class,ChangeWelfareDTO.AddUserShowGroup.class); return changeWelfareService.save(dto); } @@ -78,7 +78,7 @@ public class ChangeWelfareController { @PostMapping("update") public Result update(@RequestBody ChangeWelfareDTO dto){ //效验数据 - ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class); + ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class,ChangeWelfareDTO.AddUserShowGroup.class); changeWelfareService.update(dto); return new Result(); } diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/ChangeWelfareDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/ChangeWelfareDao.xml index f45370a95f..9c4a45bc10 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/ChangeWelfareDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/ChangeWelfareDao.xml @@ -73,7 +73,7 @@ AND w.CATEGORY_NAME like concat('%',#{categoryName},'%') - + AND w.GRANT_FLAG = #{grantFlag} order by w.CREATED_TIME desc From 2d1777f8fc3f5c322f0f7a476a73c2f762874418 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Tue, 21 Feb 2023 11:04:04 +0800 Subject: [PATCH 13/16] RemoveWelfareShowGroup --- .../src/main/java/com/epmet/dto/ChangeWelfareDTO.java | 5 ++++- .../java/com/epmet/controller/ChangeWelfareController.java | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/ChangeWelfareDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/ChangeWelfareDTO.java index f04be7b82e..e3fbf74e1f 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/ChangeWelfareDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/ChangeWelfareDTO.java @@ -21,9 +21,12 @@ public class ChangeWelfareDTO implements Serializable { private static final long serialVersionUID = 1L; public interface AddUserShowGroup extends CustomerClientShowGroup {} + + public interface RemoveWelfareShowGroup extends CustomerClientShowGroup {} /** * 主键 */ + @NotBlank(message = "id不能为空",groups = RemoveWelfareShowGroup.class) private String id; /** @@ -81,7 +84,7 @@ public class ChangeWelfareDTO implements Serializable { /** * 移除原因 */ - @Length(max = 250,message = "移除原因最多输入250字",groups = AddUserShowGroup.class) + @Length(max = 250,message = "移除原因最多输入250字",groups = RemoveWelfareShowGroup.class) private String removeReason; /** diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/ChangeWelfareController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/ChangeWelfareController.java index c3ea057e9b..730347fabc 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/ChangeWelfareController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/ChangeWelfareController.java @@ -108,6 +108,7 @@ public class ChangeWelfareController { @NoRepeatSubmit @PostMapping("removeWelfare") public Result removeWelfare(@RequestBody ChangeWelfareDTO dto){ + ValidatorUtils.validateEntity(dto,ChangeWelfareDTO.RemoveWelfareShowGroup.class); return changeWelfareService.removeWelfare(dto); } From 44e912aba00c86c0148b8f7aa63e33b80c7ca954 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Tue, 21 Feb 2023 13:10:11 +0800 Subject: [PATCH 14/16] =?UTF-8?q?/data/aggregator/epmetuser/stafflistbyrea?= =?UTF-8?q?lname=E5=A2=9E=E5=8A=A0=E5=85=A5=E5=8F=82mobile?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dataaggre/dto/epmetuser/form/ListStaffFormDTO.java | 5 +++++ .../epmet/dataaggre/dao/epmetuser/CustomerStaffDao.java | 4 +++- .../service/epmetuser/impl/EpmetUserServiceImpl.java | 2 +- .../main/resources/mapper/epmetuser/CustomerStaffDao.xml | 7 ++++++- 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/form/ListStaffFormDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/form/ListStaffFormDTO.java index e7569b16d1..4a2bd9687d 100644 --- a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/form/ListStaffFormDTO.java +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/form/ListStaffFormDTO.java @@ -25,4 +25,9 @@ public class ListStaffFormDTO implements Serializable { private String customerId; public interface Staff extends CustomerClientShowGroup {} + /** + * 手机号 + * 可以不填 + */ + private String mobile; } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/CustomerStaffDao.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/CustomerStaffDao.java index 2319248c83..c6f991e732 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/CustomerStaffDao.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/CustomerStaffDao.java @@ -53,7 +53,9 @@ public interface CustomerStaffDao extends BaseDao { * @Description 模糊查询用户、角色信息 * @author sun */ - List selectByRealName(@Param("customerId") String customerId, @Param("realName") String realName); + List selectByRealName(@Param("customerId") String customerId, + @Param("realName") String realName, + @Param("mobile") String mobile); /** * @Description 分页查询排好序的工作人员Id列表 diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java index d81bb9b1e7..34e0b45ad2 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java @@ -537,7 +537,7 @@ public class EpmetUserServiceImpl implements EpmetUserService { @Override public List listStaff(ListStaffFormDTO formDTO) { //1.模糊查询用户、角色信息 - List resultList = customerStaffDao.selectByRealName(formDTO.getCustomerId(), formDTO.getRealName()); + List resultList = customerStaffDao.selectByRealName(formDTO.getCustomerId(), formDTO.getRealName(),formDTO.getMobile()); if (null == resultList || resultList.size() < NumConstant.ONE) { return new ArrayList<>(); } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/CustomerStaffDao.xml b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/CustomerStaffDao.xml index 2ee923a736..fe3eb13354 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/CustomerStaffDao.xml +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/CustomerStaffDao.xml @@ -49,7 +49,12 @@ WHERE del_flag = '0' AND customer_id = #{customerId} - AND real_name LIKE CONCAT('%', #{realName}, '%') + + AND real_name LIKE CONCAT('%', #{realName}, '%') + + + and MOBILE LIKE CONCAT('%', #{mobile}, '%') + From d1aeedeba31b44e8739569379a93cd5276704e7b Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Tue, 21 Feb 2023 15:01:27 +0800 Subject: [PATCH 16/16] test --- .../templates/icpartyactivity_import_tem.xlsx | Bin 9051 -> 9049 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/templates/icpartyactivity_import_tem.xlsx b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/templates/icpartyactivity_import_tem.xlsx index a21f2da6ccbfdcf1c9256336eaddcfcf5ccfec61..143cdaa637a7013aed8475a160f06aa52c6c1931 100644 GIT binary patch delta 1089 zcmV-H1it&*M%hNNlK};6)1#eAlb8W5f2IL8QL`sEF%hHj*0i&`L|RB&W%1+-c=R=V zE8}ZeU>Diw!Q=G*=bL{fP3Bu!de5LuQK=M#0YM%pUWr1jQ*@gz{4?Yk%amYcr65Hu z7&On0j}l%}UTL`2RSnt}U_3`shVnW^8*6KdvEdt#%mmJ%oVcpAWY(2>jcdjqf7u#v zM93+YV3}Z+;ST86BN6S8f{)1hNtZo9a113#P}blu2=R~Cf|lmbhF+OCWntUe?X-(K zWeYxtqkC(L(bzOi(8PTVmp{b!%d4AyRliW(tvH}85u9=j%vL&UUu1$Ob$7dx8M}06 zUKJqD+wAM(_4DmL!M_y;>T?e?I}n~rLWkUY_8i#nw+LlLJ2fn6{6YX^w-bT^#@9fWlh1PY9Oc2VCci_ z{kv(W^pmLoEJ1|E71Yc`s)YtmN~LRNajQ46X*ICI2h}pplH@k7nP_N0 znCMF|R9OlROU1V}G&X=}kjx@~Q-6up^l1CyBD_Mg4r}fC98p|`lL0RspYf{&*UG5U zMqJf#pmtv6eSCjXXU)%mUTId%^wYMzM&K5UTMH@dvoE(N1oj1|>$<3GO~ji6i=zgm zcQM$-)>u_9nPqe~^%Hp1@oZWM?4lbz(NN}eo=!fc6z$&Qw}8$Z{S(X9KYu_1w@{!| zC~*>4EA`|Yzo02`*xtb*GH%5V79b@8XQ-loKF8HOn_T@}Ek~J46c3q>|NE>fFP=wD z3MkoD+J%yTL}9C(-qYUpU3H&9Y$}VCM$ru=YHOuv;4ADvVn9yEE)iD}QSnP^;e<{} z&Gw;+fH*?s8~ZF#<4BhKet#X3`IZc!c-?acfM!#zI)axAdx+N_zkzQUmN&RzWJ4jt zc+kIP?x{#8Hz*bEK;{7j>%ka<*4-?b#yeC4KX`mR_ef7Y7QqAS7*H^>Q;+32#^}@o zb?>S<<}n^TVyw8=XJ|poHt>z)Wwb7B64u3_gH>Whbud zrBb%vphPQww(>@IHHH^<_8+rR2NxItq?2hMKmiPssvk1}Fq7UNlLc(kqn%2Vb|6#% z{*%ifKmk^h3?VQ9Sd%>=HUfVflbswKlaV1R0X~zwAwdCxll~z(0Z)@TA~peblW-zH z0l1T~B0K?ilkOrR9O`Bob#?*(0Hy^102lxO000000096X0001^1e3r78k0pM5C%LS H00000rfTsM(VyCSo++ns#=VNDFDJES`J;kG_U) zWqb__>>?XIc%1(KeDlww$$TSA?-{fyDwU!zAjkv7D^aLbif;3Te}X(?nG&q56r`vH zgXY=cLBeawD-GAWszKWVjOR$oP+q5KZEa04Hhc||nZP-e6PJ~i%(_yqaLxE5e_H{L z2sy?QEECK!+yVW1B%&=+@DW)*>9Pk1j-dnz${HL7A^!1N(9-hh*v)h|?cD-I}21gBgBvz5-;7n$Hm-QBKa#$LHI zFAET7ZT9u?`uX;r;NOY^^|=QcJP6Mvp+oMSau=UpP_;u~6CaBqdJ&ew1Xp2~re&u`G%_JS2}azdO{D>_Ho$nw+LlLJ2fn6{6YZ^w-bz zJoA3(FI;?fz zb3}0!PDZ?Rdd9C7Tq~nW8*x>~f!cYMxAE;soi#rLdZAf0(~rCM5`kMRZX=|yPrlrN z5ZGs&uIr+%H4$%m7Do+AZ(^{^ow2H3G0W&;?kDh|3ur;lv1>N zkKY11bM#Lv+x!3t+(Lm;p~OjGqtv5w{DP*$VS5LM$hZ}ISb~%YoS};T`5YJb+3e!) zdX-IFqIk@7{6Az}d+|JIQb5Ue(k_+!BMMvP^p*~`@2dL@Vq00HG>NV#Q9CO|17Bee z5(9ENb&0r=h>BlQe+wscN@{ipRRqKdD&N>Ai5f?;-1n-?acfEIJDI)axA zdx+N_zkzQUmN&Rz;C%aoaXjeXGWS%Zvn!MecOdrx1?#~WW`oxKBALf~R0HolKAwA| zryk4Tfpv@+*{R3s9Ak3ofx36q9P^lt9x+xt=rgpSWn1{h^j0*6NGLIH61gGjpv17T zs`c&ID2tabbOs+lz_Jt9^-?K2Y*3<=KU;gFyBgyQyZ8@~9RsIss9WHzGCxc$01-KmodwuOd7Fc$4fR zAsmQE{dac)005>1000;O0000000031AOHXWqy&?{1R54lO9ci10000H01*HO1ONa& I9{>OV05-M_k^lez