|
@@ -1,20 +1,29 @@
|
|
|
package com.rongwei.bscommon.sys.service.impl;
|
|
|
|
|
|
+import cn.hutool.core.bean.BeanUtil;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.rongwei.bscommon.sys.dao.QcsMdfFormDao;
|
|
|
-import com.rongwei.bscommon.sys.service.QcsMainCostService;
|
|
|
-import com.rongwei.bscommon.sys.service.QcsMdfDetailService;
|
|
|
-import com.rongwei.bscommon.sys.service.QcsMdfFormService;
|
|
|
-import com.rongwei.bscommon.sys.service.QcsMdfRowService;
|
|
|
+import com.rongwei.bscommon.sys.dao.SlaveDao;
|
|
|
+import com.rongwei.bscommon.sys.service.*;
|
|
|
+import com.rongwei.bscommon.sys.utils.ExcelUtils;
|
|
|
+import com.rongwei.bscommon.sys.utils.StringUtil;
|
|
|
import com.rongwei.bsentity.domain.*;
|
|
|
+import com.rongwei.bsentity.vo.ImportMdfVo;
|
|
|
+import com.rongwei.rwadmincommon.system.domain.SysUserDo;
|
|
|
import com.rongwei.rwcommon.base.R;
|
|
|
import com.rongwei.rwcommon.utils.SecurityUtil;
|
|
|
import com.rongwei.rwcommon.utils.StringUtils;
|
|
|
+import org.apache.poi.ss.usermodel.Row;
|
|
|
+import org.apache.poi.ss.usermodel.Sheet;
|
|
|
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
|
|
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 java.io.IOException;
|
|
|
import java.math.BigDecimal;
|
|
|
+import java.math.RoundingMode;
|
|
|
import java.text.DecimalFormat;
|
|
|
import java.text.SimpleDateFormat;
|
|
|
import java.util.*;
|
|
@@ -27,11 +36,15 @@ public class QcsMdfFormServiceImpl extends ServiceImpl<QcsMdfFormDao, QcsMdfForm
|
|
|
@Autowired
|
|
|
QcsMdfFormService qcsMdfFormService;
|
|
|
@Autowired
|
|
|
+ QcsMdfSectionService qcsMdfSectionService;
|
|
|
+ @Autowired
|
|
|
QcsMainCostService qcsMainCostService;
|
|
|
@Autowired
|
|
|
QcsMdfRowService qcsMdfRowService;
|
|
|
@Autowired
|
|
|
QcsMdfDetailService qcsMdfDetailService;
|
|
|
+ @Autowired
|
|
|
+ SlaveDao slaveDao;
|
|
|
|
|
|
DecimalFormat df = new DecimalFormat("0.##");
|
|
|
|
|
@@ -178,4 +191,440 @@ public class QcsMdfFormServiceImpl extends ServiceImpl<QcsMdfFormDao, QcsMdfForm
|
|
|
return R.error();
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ //修改单导入
|
|
|
+ @Override
|
|
|
+ public R importMdfForm(MultipartFile file, String unitId) throws IOException {
|
|
|
+ StringBuilder allStrBuilder = new StringBuilder();
|
|
|
+ List<QcsPartNoDo> allPartnos = slaveDao.getAllPartnos();//工号及图号信息
|
|
|
+ List<SysUserDo> sysUserDos = qcsMdfFormDao.getAllUsers();//人员信息
|
|
|
+ List<Map<String, String>> unitMap = qcsMdfFormDao.getUnitMap();//基地信息
|
|
|
+ String deptName = "";
|
|
|
+ List<Map<String, String>> unitList = unitMap.stream()
|
|
|
+ .filter(umap -> {
|
|
|
+ // 设置你的筛选条件
|
|
|
+ String id = umap.get("ID");
|
|
|
+ return id.equals(unitId);
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ if (unitList.size() > 0) {
|
|
|
+ deptName = unitList.get(0).get("FULLNAME");
|
|
|
+ }
|
|
|
+
|
|
|
+ List<ImportMdfVo> importMdfVos = new ArrayList<>();
|
|
|
+ List<QcsMdfFormDo> qcsMdfFormDoList = new ArrayList<>();
|
|
|
+ List<QcsMdfSectionDo> qcsMdfSectionDoList = new ArrayList<>();
|
|
|
+ List<QcsMdfRowDo> qcsMdfRowDoList = new ArrayList<>();
|
|
|
+ List<QcsMdfDetailDo> qcsMdfDetailDoList = new ArrayList<>();
|
|
|
+ List<String> formids = new ArrayList<>();
|
|
|
+
|
|
|
+ Sheet sheet = new XSSFWorkbook(file.getInputStream()).getSheetAt(0);
|
|
|
+ int lastRowNum = sheet.getLastRowNum();
|
|
|
+ String ropJson = "{\"dataSource\":\"导入\"}";
|
|
|
+ for (int i = 2; i <= lastRowNum; i++) {
|
|
|
+ Row row = sheet.getRow(i);
|
|
|
+ if (ExcelUtils.isRowEmpty(row)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ StringBuilder stringBuilder = new StringBuilder();
|
|
|
+ ImportMdfVo importMdfVo = new ImportMdfVo();
|
|
|
+
|
|
|
+ //项目工号
|
|
|
+ String procode = row.getCell(0).toString().replaceAll("\\s+", "");
|
|
|
+ List<QcsPartNoDo> codeParts = new ArrayList<>();
|
|
|
+ ;
|
|
|
+ if (StringUtils.isEmpty(procode)) {
|
|
|
+ stringBuilder.append("项目工号不能为空,");
|
|
|
+ } else if (procode.equals("小计")) {
|
|
|
+ break;
|
|
|
+ } else {
|
|
|
+ if (StringUtil.isScience(procode)) {
|
|
|
+ BigDecimal formatProjectCode = new BigDecimal(procode);
|
|
|
+ procode = formatProjectCode.setScale(0, BigDecimal.ROUND_HALF_UP).toPlainString();
|
|
|
+ }
|
|
|
+
|
|
|
+ String finalProcode = procode;
|
|
|
+ codeParts = allPartnos.stream().filter(c -> c.getDlprojid().equals(finalProcode)).collect(Collectors.toList());
|
|
|
+ if (codeParts.size() == 0) {
|
|
|
+ stringBuilder.append("项目工号" + procode + "不存在,");
|
|
|
+ } else {
|
|
|
+ importMdfVo.setProjectdlprojid(procode);
|
|
|
+ importMdfVo.setProjectid(codeParts.get(0).getDtserialid());
|
|
|
+ importMdfVo.setProjectdlprojname(codeParts.get(0).getDlprojname());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ importMdfVo.setSourcename(row.getCell(2).toString().replaceAll("\\s+", ""));//修改原因
|
|
|
+ importMdfVo.setNumbername(row.getCell(3).toString().replaceAll("\\s+", ""));//专业
|
|
|
+
|
|
|
+ //修改单编号
|
|
|
+ String lossno = row.getCell(4).toString().replaceAll("\\s+", "");
|
|
|
+ if (StringUtils.isNotEmpty(lossno)) {
|
|
|
+ if (StringUtil.isScience(lossno)) {
|
|
|
+ BigDecimal formatProjectCode = new BigDecimal(lossno);
|
|
|
+ lossno = formatProjectCode.setScale(0, BigDecimal.ROUND_HALF_UP).toPlainString();
|
|
|
+ }
|
|
|
+ importMdfVo.setSourcenumbercode(lossno);
|
|
|
+ } else {
|
|
|
+ stringBuilder.append("修改单编号不能为空,");
|
|
|
+ }
|
|
|
+
|
|
|
+ //整改编号
|
|
|
+ String rectifycode = row.getCell(5).toString().replaceAll("\\s+", "");
|
|
|
+ if (StringUtils.isNotEmpty(rectifycode)) {
|
|
|
+ if (StringUtil.isScience(rectifycode)) {
|
|
|
+ BigDecimal formatProjectCode = new BigDecimal(rectifycode);
|
|
|
+ rectifycode = formatProjectCode.setScale(0, BigDecimal.ROUND_HALF_UP).toPlainString();
|
|
|
+ }
|
|
|
+ importMdfVo.setRectifycode(rectifycode);
|
|
|
+ }
|
|
|
+
|
|
|
+ //项目总工
|
|
|
+ String managename = row.getCell(6).toString().replaceAll("\\s+", "");
|
|
|
+ if (StringUtils.isNotEmpty(managename)) {
|
|
|
+ if (StringUtil.isScience(managename)) {
|
|
|
+ BigDecimal formatProjectCode = new BigDecimal(managename);
|
|
|
+ managename = formatProjectCode.setScale(0, BigDecimal.ROUND_HALF_UP).toPlainString();
|
|
|
+ }
|
|
|
+
|
|
|
+ String finalManagename = managename;
|
|
|
+ SysUserDo sysUserDo = sysUserDos.stream().filter(u -> u.getName().equals(finalManagename)).findFirst().orElse(null);
|
|
|
+ if (sysUserDo != null) {
|
|
|
+ importMdfVo.setManageadminid(sysUserDo.getId());
|
|
|
+ importMdfVo.setManageadminnickname(managename);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ importMdfVo.setProducename(row.getCell(7).toString().replaceAll("\\s+", ""));//项目生产阶段
|
|
|
+
|
|
|
+ //错误源头图号
|
|
|
+ String partno = row.getCell(8).toString().replaceAll("\\s+", "");
|
|
|
+ if (StringUtils.isNotEmpty(partno)) {
|
|
|
+ if (StringUtil.isScience(partno)) {
|
|
|
+ BigDecimal formatProjectCode = new BigDecimal(partno);
|
|
|
+ partno = formatProjectCode.setScale(0, BigDecimal.ROUND_HALF_UP).toPlainString();
|
|
|
+ }
|
|
|
+ String finalPartno = partno;
|
|
|
+ List<QcsPartNoDo> partNos = codeParts.stream().filter(p -> p.getDtdrawingno().equals(finalPartno)).collect(Collectors.toList());
|
|
|
+ if (partNos.size() == 0) {
|
|
|
+ stringBuilder.append("错误源头图号" + partno + "与项目工号" + procode + "不匹配,");
|
|
|
+ } else {
|
|
|
+ importMdfVo.setErrordesignid(partNos.get(0).getPartnoid());
|
|
|
+ importMdfVo.setErrordesigndtdrawingno(partno);
|
|
|
+ importMdfVo.setErrordesigndtpartname(partNos.get(0).getDtpartname());
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ stringBuilder.append("错误源头图号不能为空,");
|
|
|
+ }
|
|
|
+
|
|
|
+ //设计人
|
|
|
+ String dtdesigner = row.getCell(10).toString().replaceAll("\\s+", "");
|
|
|
+ if (StringUtils.isNotEmpty(dtdesigner)) {
|
|
|
+ if (StringUtil.isScience(dtdesigner)) {
|
|
|
+ BigDecimal formatProjectCode = new BigDecimal(dtdesigner);
|
|
|
+ dtdesigner = formatProjectCode.setScale(0, BigDecimal.ROUND_HALF_UP).toPlainString();
|
|
|
+ }
|
|
|
+
|
|
|
+ String finaldtdesigner = dtdesigner;
|
|
|
+ SysUserDo sysUserDo = sysUserDos.stream().filter(u -> u.getName().equals(finaldtdesigner)).findFirst().orElse(null);
|
|
|
+ if (sysUserDo != null) {
|
|
|
+ importMdfVo.setDtdesigneruseradminid(sysUserDo.getId());
|
|
|
+ importMdfVo.setDtdesigner(dtdesigner);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //校对人
|
|
|
+ String dtwhocollate = row.getCell(11).toString().replaceAll("\\s+", "");
|
|
|
+ if (StringUtils.isNotEmpty(dtwhocollate)) {
|
|
|
+ if (StringUtil.isScience(dtwhocollate)) {
|
|
|
+ BigDecimal formatProjectCode = new BigDecimal(dtwhocollate);
|
|
|
+ dtwhocollate = formatProjectCode.setScale(0, BigDecimal.ROUND_HALF_UP).toPlainString();
|
|
|
+ }
|
|
|
+
|
|
|
+ String finaldtwhocollate = dtwhocollate;
|
|
|
+ SysUserDo sysUserDo = sysUserDos.stream().filter(u -> u.getName().equals(finaldtwhocollate)).findFirst().orElse(null);
|
|
|
+ if (sysUserDo != null) {
|
|
|
+ importMdfVo.setDtwhocollateuseradminid(sysUserDo.getId());
|
|
|
+ importMdfVo.setDtwhocollate(dtwhocollate);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //审核人
|
|
|
+ String dtwhoapprove = row.getCell(12).toString().replaceAll("\\s+", "");
|
|
|
+ if (StringUtils.isNotEmpty(dtwhoapprove)) {
|
|
|
+ if (StringUtil.isScience(dtwhoapprove)) {
|
|
|
+ BigDecimal formatProjectCode = new BigDecimal(dtwhoapprove);
|
|
|
+ dtwhoapprove = formatProjectCode.setScale(0, BigDecimal.ROUND_HALF_UP).toPlainString();
|
|
|
+ }
|
|
|
+
|
|
|
+ String finaldtwhoapprove = dtwhoapprove;
|
|
|
+ SysUserDo sysUserDo = sysUserDos.stream().filter(u -> u.getName().equals(finaldtwhoapprove)).findFirst().orElse(null);
|
|
|
+ if (sysUserDo != null) {
|
|
|
+ importMdfVo.setDtwhoapproveuseradminid(sysUserDo.getId());
|
|
|
+ importMdfVo.setDtwhoapprove(dtwhoapprove);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //修改责任方
|
|
|
+ String modifyby = row.getCell(13).toString().replaceAll("\\s+", "");
|
|
|
+ if (StringUtils.isNotEmpty(modifyby)) {
|
|
|
+ List<Map<String, String>> mapList = unitMap.stream()
|
|
|
+ .filter(umap -> {
|
|
|
+ String fullname = umap.get("FULLNAME");
|
|
|
+ return fullname.equals(modifyby);
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ if (mapList.size() > 0) {
|
|
|
+ importMdfVo.setModifyby(modifyby);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ importMdfVo.setErrorroutine(row.getCell(14).toString().replaceAll("\\s+", ""));//常规错误
|
|
|
+ importMdfVo.setErroragain(row.getCell(15).toString().replaceAll("\\s+", ""));//二过错误
|
|
|
+ importMdfVo.setErrorhard(row.getCell(16).toString().replaceAll("\\s+", ""));//较难发现错误
|
|
|
+
|
|
|
+ //校对表错误
|
|
|
+ String errortable = row.getCell(17).toString().replaceAll("\\s+", "");
|
|
|
+ if (errortable.equals("是")) {
|
|
|
+ importMdfVo.setErrortable("1");
|
|
|
+ } else {
|
|
|
+ importMdfVo.setErrortable("0");
|
|
|
+ }
|
|
|
+
|
|
|
+ //修改图号(任务单部件)
|
|
|
+ String taskdesign = row.getCell(18).toString().replaceAll("\\s+", "");
|
|
|
+ if (StringUtils.isNotEmpty(taskdesign)) {
|
|
|
+ if (StringUtil.isScience(taskdesign)) {
|
|
|
+ BigDecimal formatProjectCode = new BigDecimal(taskdesign);
|
|
|
+ taskdesign = formatProjectCode.setScale(0, BigDecimal.ROUND_HALF_UP).toPlainString();
|
|
|
+ }
|
|
|
+ String finaltaskdesign = taskdesign;
|
|
|
+ List<QcsPartNoDo> taskdesigns = codeParts.stream().filter(p -> p.getDtdrawingno().equals(finaltaskdesign)).collect(Collectors.toList());
|
|
|
+ if (taskdesigns.size() == 0) {
|
|
|
+ stringBuilder.append("修改图号(任务单部件)" + taskdesign + "与项目工号" + procode + "不匹配,");
|
|
|
+ } else {
|
|
|
+ importMdfVo.setTaskdesignid(taskdesigns.get(0).getPartnoid());
|
|
|
+ importMdfVo.setTaskdesigndtdrawingno(taskdesign);
|
|
|
+ importMdfVo.setTaskdesigndtpartname(taskdesigns.get(0).getDtpartname());
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ stringBuilder.append("修改图号(任务单部件)不能为空,");
|
|
|
+ }
|
|
|
+
|
|
|
+ //修改图号(次级部件)
|
|
|
+ String xgth = row.getCell(20).toString().replaceAll("\\s+", "");
|
|
|
+ if (StringUtils.isNotEmpty(xgth)) {
|
|
|
+ if (StringUtil.isScience(xgth)) {
|
|
|
+ BigDecimal formatProjectCode = new BigDecimal(xgth);
|
|
|
+ xgth = formatProjectCode.setScale(0, BigDecimal.ROUND_HALF_UP).toPlainString();
|
|
|
+ }
|
|
|
+ importMdfVo.setMinordesigndtdrawingno(xgth);
|
|
|
+ }
|
|
|
+
|
|
|
+ //修改图名(次级部件)
|
|
|
+ String xgtm = row.getCell(21).toString().replaceAll("\\s+", "");
|
|
|
+ if (StringUtils.isNotEmpty(xgtm)) {
|
|
|
+ if (StringUtil.isScience(xgtm)) {
|
|
|
+ BigDecimal formatProjectCode = new BigDecimal(xgtm);
|
|
|
+ xgtm = formatProjectCode.setScale(0, BigDecimal.ROUND_HALF_UP).toPlainString();
|
|
|
+ }
|
|
|
+ importMdfVo.setMinordesigndtpartname(xgtm);
|
|
|
+ }
|
|
|
+
|
|
|
+ //修改内容
|
|
|
+ String content = row.getCell(22).toString().replaceAll("\\s+", "");
|
|
|
+ if (StringUtils.isNotEmpty(content)) {
|
|
|
+ if (StringUtil.isScience(content)) {
|
|
|
+ BigDecimal formatProjectCode = new BigDecimal(content);
|
|
|
+ content = formatProjectCode.setScale(0, BigDecimal.ROUND_HALF_UP).toPlainString();
|
|
|
+ }
|
|
|
+ importMdfVo.setContent(content);
|
|
|
+ }
|
|
|
+
|
|
|
+ //人工
|
|
|
+ String mandayStr = row.getCell(23).toString().replaceAll("\\s+", "");
|
|
|
+ if (mandayStr != null && StringUtils.isNotEmpty(mandayStr)) {
|
|
|
+ String toAmount = convertToTwoDecimalPlaces(mandayStr);
|
|
|
+ if (toAmount.equals("金额要为数字,")) {
|
|
|
+ stringBuilder.append(toAmount);
|
|
|
+ } else {
|
|
|
+ importMdfVo.setManday(new BigDecimal(toAmount));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //材料
|
|
|
+ String materStr = row.getCell(24).toString().replaceAll("\\s+", "");
|
|
|
+ if (materStr != null && StringUtils.isNotEmpty(materStr)) {
|
|
|
+ String toAmount = convertToTwoDecimalPlaces(materStr);
|
|
|
+ if (toAmount.equals("金额要为数字,")) {
|
|
|
+ stringBuilder.append(toAmount);
|
|
|
+ } else {
|
|
|
+ importMdfVo.setMater(new BigDecimal(toAmount));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //设备
|
|
|
+ String equipStr = row.getCell(25).toString().replaceAll("\\s+", "");
|
|
|
+ if (equipStr != null && StringUtils.isNotEmpty(equipStr)) {
|
|
|
+ String toAmount = convertToTwoDecimalPlaces(equipStr);
|
|
|
+ if (toAmount.equals("金额要为数字,")) {
|
|
|
+ stringBuilder.append(toAmount);
|
|
|
+ } else {
|
|
|
+ importMdfVo.setEquip(new BigDecimal(toAmount));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //其他
|
|
|
+ String otherStr = row.getCell(26).toString().replaceAll("\\s+", "");
|
|
|
+ if (otherStr != null && StringUtils.isNotEmpty(otherStr)) {
|
|
|
+ String toAmount = convertToTwoDecimalPlaces(otherStr);
|
|
|
+ if (toAmount.equals("金额要为数字,")) {
|
|
|
+ stringBuilder.append(toAmount);
|
|
|
+ } else {
|
|
|
+ importMdfVo.setOther(new BigDecimal(toAmount));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (StringUtils.isNotBlank(stringBuilder.toString())) {
|
|
|
+ allStrBuilder.append("第").append(i + 1).append("行").append(stringBuilder.deleteCharAt(stringBuilder.length() - 1)).append("<br>");
|
|
|
+ } else {
|
|
|
+ importMdfVos.add(importMdfVo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ String errMsg = allStrBuilder.toString();
|
|
|
+ if (StringUtils.isNotBlank(errMsg)) {
|
|
|
+ return R.error(errMsg);
|
|
|
+ } else {
|
|
|
+ if (importMdfVos.size() > 0) {
|
|
|
+ String finalDeptName = deptName;
|
|
|
+ String finalDeptName1 = deptName;
|
|
|
+ //项目工号+修改单编号 分组
|
|
|
+ Map<ImportMdfVo, List<ImportMdfVo>> formList = importMdfVos.stream().collect(Collectors.groupingBy(
|
|
|
+ ps -> new ImportMdfVo(ps.getProjectdlprojid(), ps.getSourcenumbercode())
|
|
|
+ ));
|
|
|
+ formList.forEach((fm, flist) -> {
|
|
|
+ //修改单分组
|
|
|
+ Map<ImportMdfVo, List<ImportMdfVo>> formListMap = flist.stream().collect(Collectors.groupingBy(
|
|
|
+ f -> new ImportMdfVo(f.getSourcename(), f.getNumbername(), f.getRectifycode(), f.getManageadminnickname(), f.getProducename())
|
|
|
+ ));
|
|
|
+ if (formListMap.size() > 1) {
|
|
|
+ allStrBuilder.append("项目工号" + fm.getProjectdlprojid() + "修改单编号" + fm.getSourcenumbercode() + "有" + formListMap.size() + "行数据重复,请检查");
|
|
|
+ } else {
|
|
|
+ String formid = SecurityUtil.getUUID();
|
|
|
+ //错误源头图号分组
|
|
|
+ Map<String, List<ImportMdfVo>> secListMap = flist.stream().collect(Collectors.groupingBy(s -> s.getErrordesigndtdrawingno()));
|
|
|
+ secListMap.forEach((sno, slist) -> {
|
|
|
+ String sectionid = SecurityUtil.getUUID();
|
|
|
+ //序号分组
|
|
|
+ Map<ImportMdfVo, List<ImportMdfVo>> mdfVoListMap = slist.stream().collect(Collectors.groupingBy(
|
|
|
+ p -> new ImportMdfVo(p.getDtdesigner(), p.getDtwhocollate(), p.getDtwhoapprove(), p.getModifyby(), p.getErrorroutine(), p.getErroragain(), p.getErrorhard(), p.getErrortable())
|
|
|
+ ));
|
|
|
+ if (mdfVoListMap.size() > 1) {
|
|
|
+ allStrBuilder.append("项目工号" + fm.getProjectdlprojid() + "修改单编号" + fm.getSourcenumbercode() + "错误源头图号" + sno + "有" + mdfVoListMap.size() + "行数据重复,请检查");
|
|
|
+ } else {
|
|
|
+ //修改图号(任务单部件)分组
|
|
|
+ Map<String, List<ImportMdfVo>> rowListMap = flist.stream().collect(Collectors.groupingBy(s -> s.getTaskdesigndtdrawingno()));
|
|
|
+ rowListMap.forEach((rno, rlist) -> {
|
|
|
+ //排号分组
|
|
|
+ Map<ImportMdfVo, List<ImportMdfVo>> mdfVos = rlist.stream().collect(Collectors.groupingBy(
|
|
|
+ m -> new ImportMdfVo(m.getMinordesigndtdrawingno(), m.getMinordesigndtpartname(), m.getContent(), m.getManday(), m.getMater(), m.getEquip(), m.getOther())
|
|
|
+ ));
|
|
|
+ if (mdfVos.size() > 1) {
|
|
|
+ allStrBuilder.append("项目工号" + fm.getProjectdlprojid() + "修改单编号" + fm.getSourcenumbercode() + "错误源头图号" + sno + "修改图号(任务单部件)" + rno + "有" + mdfVos.size() + "行数据重复,请检查");
|
|
|
+ } else {
|
|
|
+ String rowid = SecurityUtil.getUUID();
|
|
|
+ QcsMdfRowDo qcsMdfRowDo = BeanUtil.toBean(rlist.get(0), QcsMdfRowDo.class);
|
|
|
+ qcsMdfRowDo.setId(rowid);
|
|
|
+ qcsMdfRowDo.setFormid(formid);
|
|
|
+ qcsMdfRowDo.setSectionid(sectionid);
|
|
|
+ qcsMdfRowDo.setRoption(ropJson);
|
|
|
+ qcsMdfRowDoList.add(qcsMdfRowDo);
|
|
|
+
|
|
|
+ QcsMdfDetailDo qcsMdfDetailDo = BeanUtil.toBean(rlist.get(0), QcsMdfDetailDo.class);
|
|
|
+ qcsMdfDetailDo.setId(SecurityUtil.getUUID());
|
|
|
+ qcsMdfDetailDo.setRowid(rowid);
|
|
|
+ qcsMdfDetailDo.setFormid(formid);
|
|
|
+ qcsMdfDetailDo.setSectionid(sectionid);
|
|
|
+ qcsMdfDetailDo.setRoption(ropJson);
|
|
|
+ qcsMdfDetailDo.setDeptid(unitId);
|
|
|
+ qcsMdfDetailDo.setDeptname(finalDeptName);
|
|
|
+ if (rlist.get(0).getProducename().equals("未下料")) {
|
|
|
+ qcsMdfDetailDo.setManday(null);
|
|
|
+ qcsMdfDetailDo.setMater(null);
|
|
|
+ qcsMdfDetailDo.setEquip(null);
|
|
|
+ qcsMdfDetailDo.setOther(null);
|
|
|
+ } else {
|
|
|
+ BigDecimal total = sumTotal(qcsMdfDetailDo);
|
|
|
+ qcsMdfDetailDo.setTotalamount(total);
|
|
|
+ qcsMdfDetailDo.setActamount(total);
|
|
|
+ }
|
|
|
+ qcsMdfDetailDoList.add(qcsMdfDetailDo);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ if (StringUtils.isBlank(allStrBuilder.toString())) {
|
|
|
+ QcsMdfSectionDo qcsMdfSectionDo = BeanUtil.toBean(slist.get(0), QcsMdfSectionDo.class);
|
|
|
+ qcsMdfSectionDo.setId(sectionid);
|
|
|
+ qcsMdfSectionDo.setFormid(formid);
|
|
|
+ qcsMdfSectionDo.setRoption(ropJson);
|
|
|
+ qcsMdfSectionDoList.add(qcsMdfSectionDo);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ if (StringUtils.isBlank(allStrBuilder.toString())) {
|
|
|
+ QcsMdfFormDo qcsMdfFormDo = BeanUtil.toBean(flist.get(0), QcsMdfFormDo.class);
|
|
|
+ qcsMdfFormDo.setId(formid);
|
|
|
+ qcsMdfFormDo.setRoption(ropJson);
|
|
|
+ qcsMdfFormDo.setBaseid(unitId);
|
|
|
+ qcsMdfFormDo.setBasename(finalDeptName1);
|
|
|
+ qcsMdfFormDo.setDatasource("质量成本系统");
|
|
|
+ qcsMdfFormDoList.add(qcsMdfFormDo);
|
|
|
+ formids.add(formid);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ return R.error("没有要导入的数据,请确认");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (StringUtils.isNotBlank(allStrBuilder.toString())) {
|
|
|
+ return R.error(allStrBuilder.toString());
|
|
|
+ } else {
|
|
|
+ Boolean bool1 = qcsMdfFormService.saveBatch(qcsMdfFormDoList);
|
|
|
+ Boolean bool2 = qcsMdfSectionService.saveBatch(qcsMdfSectionDoList);
|
|
|
+ Boolean bool3 = qcsMdfRowService.saveBatch(qcsMdfRowDoList);
|
|
|
+ Boolean bool4 = qcsMdfDetailService.saveBatch(qcsMdfDetailDoList);
|
|
|
+ if (bool1 && bool2 && bool3 && bool4) {
|
|
|
+ for (String fid : formids) {
|
|
|
+ Map<String, String> aMap = new HashMap<>();
|
|
|
+ aMap.put("formId", fid);
|
|
|
+ aMap.put("saveType", "");
|
|
|
+ aMap.put("deptId", "");
|
|
|
+ afterSave(aMap);
|
|
|
+ }
|
|
|
+
|
|
|
+ return R.ok();
|
|
|
+ } else {
|
|
|
+ return R.error("数据导入异常");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public String convertToTwoDecimalPlaces(String input) {
|
|
|
+ try {
|
|
|
+ // 尝试转换为BigDecimal
|
|
|
+ BigDecimal number = new BigDecimal(input.trim());
|
|
|
+ // 设置保留2位小数,使用四舍五入模式
|
|
|
+ number = number.setScale(2, RoundingMode.HALF_UP);
|
|
|
+ return number.toString();
|
|
|
+ } catch (NumberFormatException e) {
|
|
|
+ // 转换失败,返回null或抛出异常,取决于你的需求
|
|
|
+ return "金额要为数字,";
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private BigDecimal sumTotal(QcsMdfDetailDo mdfDetailDo) {
|
|
|
+ return (mdfDetailDo.getManday() == null ? BigDecimal.valueOf(0) : mdfDetailDo.getManday()).add((mdfDetailDo.getMater() == null ? BigDecimal.valueOf(0) : mdfDetailDo.getMater())).add((mdfDetailDo.getEquip() == null ? BigDecimal.valueOf(0) : mdfDetailDo.getEquip())).add((mdfDetailDo.getOther() == null ? BigDecimal.valueOf(0) : mdfDetailDo.getOther()));
|
|
|
+ }
|
|
|
}
|