fix 90615 企标年度制修订计划流程-导入的把新增的覆盖了,两个企标并不重复

This commit is contained in:
lijiarao
2024-10-15 16:56:11 +08:00
parent 1ad70febd5
commit 2d2500ed7e
@@ -1,7 +1,9 @@
package com.jero.modules.activiti.process.annualinit.service;
import com.google.common.collect.Lists;
import cn.hutool.core.collection.CollStreamUtil;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.jero.common.api.vo.Result;
import com.jero.common.exception.JeroBootException;
@@ -13,6 +15,9 @@ import com.jero.modules.activiti.process.annualinit.common.ProcessAnnualInitComm
import com.jero.modules.activiti.process.annualinit.entity.ProcessAnnualInitLink;
import com.jero.modules.activiti.process.annualinit.mapper.ProcessAnnualInitLinkMapper;
import com.jero.modules.activiti.process.annualinit.vo.ProcessAnnualInitLinkExcelVO;
import com.jero.modules.activiti.process.planchange.entity.ProcessPlanChangeLink;
import com.jero.modules.activiti.process.planchange.service.ProcessPlanChangeLinkService;
import com.jero.modules.activiti.process.planchange.service.ProcessPlanChangeService;
import com.jero.modules.laws.common.util.ImportUtil;
import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard;
import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService;
@@ -22,6 +27,7 @@ import org.apache.commons.lang3.StringUtils;
import org.jeecgframework.poi.excel.ExcelImportCheckUtil;
import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.entity.ImportParams;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -59,6 +65,8 @@ public class ProcessAnnualInitLinkService extends ServiceImpl<ProcessAnnualInitL
private ImportUtil importUtil;
@Resource
private ISysDepartService sysDepartService;
@Resource
private ProcessPlanChangeLinkService planChangeLinkService;
public IPage<ProcessAnnualInitLink> pageList(Page<ProcessAnnualInitLink> page, ProcessAnnualInitLink processAnnualInitLink, HttpServletRequest req) {
QueryWrapper<ProcessAnnualInitLink> queryWrapper = QueryGenerator.initQueryWrapper(processAnnualInitLink, req.getParameterMap());
@@ -100,6 +108,23 @@ public class ProcessAnnualInitLinkService extends ServiceImpl<ProcessAnnualInitL
}
public List<ProcessAnnualInitLinkExcelVO> importExcel(HttpServletRequest request) {
String processId = request.getParameter("businessId");
List<String> standardIdList = new ArrayList<>();
Integer type = 1;
if (StringUtils.isNotBlank(processId)){
LambdaQueryWrapper<ProcessAnnualInitLink> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(ProcessAnnualInitLink::getProcessId,processId);
List<ProcessAnnualInitLink> list = this.list(wrapper);
if (!list.isEmpty()){
standardIdList = list.stream().map(ProcessAnnualInitLink::getStandardId).collect(Collectors.toList());
}else {
type = 2;
LambdaQueryWrapper<ProcessPlanChangeLink> wrapper1 = new LambdaQueryWrapper<>();
wrapper1.eq(ProcessPlanChangeLink::getProcessId,processId);
List<ProcessPlanChangeLink> list1 = planChangeLinkService.list(wrapper1);
standardIdList = list1.stream().map(ProcessPlanChangeLink::getStandardId).collect(Collectors.toList());
}
}
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
@@ -132,10 +157,19 @@ public class ProcessAnnualInitLinkService extends ServiceImpl<ProcessAnnualInitL
if (CollectionUtils.isEmpty(excelList)) {
throw new JeroBootException("没有数据可导入");
}
StringBuilder msg = validateExcelData(excelList); // 校验数据
StringBuilder msg = validateExcelData(excelList,standardIdList); // 校验数据
if (StringUtils.isNotEmpty(msg.toString())) {
throw new JeroBootException(msg.toString());
}
if (StringUtils.isNotBlank(processId)){
if (type == 1){
List<ProcessAnnualInitLink> list = convertToProcessAnnualInitLink(processId,excelList);
this.saveBatch(list);
}else {
List<ProcessPlanChangeLink> list = convertToProcessPlanChangeLink(processId,excelList);
planChangeLinkService.saveBatch(list);
}
}
return excelList;
} catch (Exception e) {
log.error("文件导入失败:",e);
@@ -154,7 +188,61 @@ public class ProcessAnnualInitLinkService extends ServiceImpl<ProcessAnnualInitL
return null;
}
private StringBuilder validateExcelData(List<ProcessAnnualInitLinkExcelVO> excelList) {
private List<ProcessPlanChangeLink> convertToProcessPlanChangeLink(String processId, List<ProcessAnnualInitLinkExcelVO> excelList) {
List<ProcessPlanChangeLink> processPlanChangeLinklist=Lists.newArrayList();
for (ProcessAnnualInitLinkExcelVO processAnnualInitLinkExcelVO :excelList) {
processPlanChangeLinklist.add(convertFromProcessAnnualInitLinkExcelVO1(processId,processAnnualInitLinkExcelVO));
}
return processPlanChangeLinklist;
}
private ProcessPlanChangeLink convertFromProcessAnnualInitLinkExcelVO1(String processId, ProcessAnnualInitLinkExcelVO vo) {
ProcessPlanChangeLink processPlanChangeLink = new ProcessPlanChangeLink();
processPlanChangeLink.setProcessId(processId);
processPlanChangeLink.setRevisionType(vo.getRevisionType());
processPlanChangeLink.setStandardId(vo.getStandardId());
processPlanChangeLink.setStandardNumber(vo.getStandardNumber());
processPlanChangeLink.setStandardName(vo.getStandardName());
processPlanChangeLink.setMainDraftingUser(vo.getMainDraftingUser());
processPlanChangeLink.setEmail(vo.getEmail());
processPlanChangeLink.setDepartId(vo.getDepartId());
processPlanChangeLink.setProfessionalModule(vo.getProfessionalModule());
processPlanChangeLink.setDraftCompleteDate(DateUtil.parseDate(vo.getDraftCompleteDate()));
processPlanChangeLink.setPlanArchivingDate(DateUtil.parseDate(vo.getPlanArchivingDate()));
processPlanChangeLink.setHaveEnglishVersion(vo.getHaveEnglishVersion());
processPlanChangeLink.setCommittee(vo.getCommittee());
return processPlanChangeLink;
}
private List<ProcessAnnualInitLink> convertToProcessAnnualInitLink(String processId, List<ProcessAnnualInitLinkExcelVO> excelList) {
List<ProcessAnnualInitLink> processAnnualInitLinklist=Lists.newArrayList();
for (ProcessAnnualInitLinkExcelVO vo :excelList) {
processAnnualInitLinklist.add(convertFromProcessAnnualInitLinkExcelVO(processId,vo));
}
return processAnnualInitLinklist;
}
private ProcessAnnualInitLink convertFromProcessAnnualInitLinkExcelVO(String processId, ProcessAnnualInitLinkExcelVO vo) {
ProcessAnnualInitLink processAnnualInitLink = new ProcessAnnualInitLink();
processAnnualInitLink.setProcessId(processId);
processAnnualInitLink.setRevisionType(vo.getRevisionType());
processAnnualInitLink.setStandardId(vo.getStandardId());
processAnnualInitLink.setStandardNumber(vo.getStandardNumber());
processAnnualInitLink.setStandardName(vo.getStandardName());
processAnnualInitLink.setMainDraftingUser(vo.getMainDraftingUser());
processAnnualInitLink.setEmail(vo.getEmail());
processAnnualInitLink.setDepartId(vo.getDepartId());
processAnnualInitLink.setProfessionalModule(vo.getProfessionalModule());
processAnnualInitLink.setDraftCompleteDate(DateUtil.parseDate(vo.getDraftCompleteDate()));
processAnnualInitLink.setPlanArchivingDate(DateUtil.parseDate(vo.getPlanArchivingDate()));
processAnnualInitLink.setHaveEnglishVersion(vo.getHaveEnglishVersion());
processAnnualInitLink.setCommittee(vo.getCommittee());
return processAnnualInitLink;
}
private StringBuilder validateExcelData(List<ProcessAnnualInitLinkExcelVO> excelList, List<String> oldStandardIdList) {
StringBuilder msg = new StringBuilder();
//日期格式
String users = excelList.stream().map(ProcessAnnualInitLinkExcelVO::getMainDraftingUser).collect(Collectors.joining(","));
@@ -202,7 +290,11 @@ public class ProcessAnnualInitLinkService extends ServiceImpl<ProcessAnnualInitL
standardNumberList.add(standardNumber);
LawsEnterpriseStandard lawsEnterpriseStandard = enterpriseStandardService.queryByStandardNumber(standardNumber);
if (lawsEnterpriseStandard != null){
excelVO.setStandardId(lawsEnterpriseStandard.getId());
String standardId = lawsEnterpriseStandard.getId();
if (oldStandardIdList.contains(standardId)) {
msgSub.append("" + (i + 4) + "" + "企标编号已经存在;");
}
excelVO.setStandardId(standardId);
//使用当前年份的年代号
String[] split = standardNumber.split("-");
split[split.length-1] = String.valueOf(DateUtil.thisYear());
@@ -279,9 +371,6 @@ public class ProcessAnnualInitLinkService extends ServiceImpl<ProcessAnnualInitL
if (StringUtils.isNotBlank(committee)&&committee.length()>500){
msgSub.append("" + (i + 4) + "" + "所属技术委员会最大为500字符;");
}
if (msgSub.length() > 0) {
msg.append(msgSub).append("</br>");
}
}
return msg;
}