浏览代码

Merge remote-tracking branch 'origin/mode-min-unit' into mode-min-unit

fangpy 1 年之前
父节点
当前提交
74f3d9ae66

+ 9 - 0
bs-common/src/main/java/com/rongwei/safecommon/utils/CXCommonUtils.java

@@ -31,6 +31,7 @@ import org.springframework.web.multipart.MultipartFile;
 import javax.annotation.PostConstruct;
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
+import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.util.*;
 import java.util.function.BooleanSupplier;
@@ -366,4 +367,12 @@ public class CXCommonUtils {
             }
         }
     }
+
+    /**
+     * 去除小数点后面多余的0,输入BigDecimal,输出String
+     */
+    public static String removeExtraZerosAndDecimal(BigDecimal bd) {
+        bd = bd.stripTrailingZeros();
+        return bd.toPlainString();
+    }
 }

+ 9 - 3
bs-common/src/main/java/com/rongwei/safecommon/utils/SaveConstans.java

@@ -866,9 +866,15 @@ public class SaveConstans {
     /**
      * 在制品类型
      */
-    public static class  WorkInProgressType{
-        public static final String PASS="合格在制品";
-        public static final String REJECTS="不良在制品";
+    public static class WorkInProgressType {
+        /**
+         * 合格在制品
+         */
+        public static final String PASS = "合格在制品";
+        /**
+         * 不良在制品
+         */
+        public static final String REJECTS = "不良在制品";
 
     }
 

+ 5 - 0
cx-aps/cx-aps-common/pom.xml

@@ -55,6 +55,11 @@
             <version>1.0-SNAPSHOT</version>
             <scope>compile</scope>
         </dependency>
+        <dependency>
+            <groupId>com.rongwei</groupId>
+            <artifactId>wf-common</artifactId>
+            <version>1.1-SNAPSHOT</version>
+        </dependency>
 
         <dependency>
             <groupId>com.google.zxing</groupId>

+ 3 - 0
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/ReportCheckService.java

@@ -1,5 +1,6 @@
 package com.rongwei.bscommon.sys.service;
 
+import com.rongwei.bsentity.domain.ApsProductionOrderDo;
 import com.rongwei.rwcommon.base.R;
 
 /**
@@ -11,4 +12,6 @@ import com.rongwei.rwcommon.base.R;
 public interface ReportCheckService {
 
     R updateRelevantInformation(String id);
+
+    void goBackWf(String processOperationEquId, String blankId, ApsProductionOrderDo productionOrderDo);
 }

+ 15 - 8
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsBlankOrderServiceImpl.java

@@ -105,11 +105,9 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
     private ApsProcessOperationBackupService apsProcessOperationBackupService;
     @Autowired
     private ApsProcessOperationProcessEquBackupService apsProcessOperationProcessEquBackupService;
+    @Autowired
+    private ReportCheckService reportCheckService;
 
-    public static String removeExtraZerosAndDecimal(BigDecimal bd) {
-        bd = bd.stripTrailingZeros();
-        return bd.toPlainString();
-    }
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -1937,6 +1935,15 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
                     if (!r.getCode().equals("200")) {
                         throw new CustomException(r.getMsg());
                     }
+
+                    //撤回订单
+                    //被撤回的作业明细
+                    ApsProcessOperationProcessEquDo apsProcessOperationProcessEquDo = apsProcessOperationProcessEquService.getById(processoperationequid);
+                    //被撤回的坯料计划
+                    ApsBlankOrderDo changeBlankOrder = apsBlankOrderService.getById(apsProcessOperationProcessEquDo.getBlankid());
+                    //被撤回的订单信息
+                    ApsProductionOrderDo apsProductionOrderDo = apsProductionOrderService.getById(changeBlankOrder.getProductionorderid());
+                    reportCheckService.goBackWf(processoperationequid, apsProcessOperationProcessEquDo.getBlankid(), apsProductionOrderDo);
                 }
 
 
@@ -2375,9 +2382,9 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
                     String outputResult = "";
                     outputResult += (alloy + alloystatus + newProductType + " ");
                     //获取长宽高
-                    String thickness = ObjectUtil.isNotEmpty(apsProcessOutputProductDo.getThickness()) ? removeExtraZerosAndDecimal(apsProcessOutputProductDo.getThickness()) : "";
-                    String prowidth = ObjectUtil.isNotEmpty(apsProcessOutputProductDo.getProwidth()) ? removeExtraZerosAndDecimal(apsProcessOutputProductDo.getProwidth()) : "";
-                    String prolength = ObjectUtil.isNotEmpty(apsProcessOutputProductDo.getProlength()) ? removeExtraZerosAndDecimal(apsProcessOutputProductDo.getProlength()) : "";
+                    String thickness = ObjectUtil.isNotEmpty(apsProcessOutputProductDo.getThickness()) ? CXCommonUtils.removeExtraZerosAndDecimal(apsProcessOutputProductDo.getThickness()) : "";
+                    String prowidth = ObjectUtil.isNotEmpty(apsProcessOutputProductDo.getProwidth()) ? CXCommonUtils.removeExtraZerosAndDecimal(apsProcessOutputProductDo.getProwidth()) : "";
+                    String prolength = ObjectUtil.isNotEmpty(apsProcessOutputProductDo.getProlength()) ? CXCommonUtils.removeExtraZerosAndDecimal(apsProcessOutputProductDo.getProlength()) : "";
                     outputResult += ("厚" + thickness + "*宽" + prowidth);
                     if (ObjectUtil.isNotEmpty(prolength)) {
                         outputResult += ("*长" + prolength);
@@ -2442,7 +2449,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
                 String[] s = outputresult.split(" ");
                 String res = s[0] + " " + s[1];
                 if (ObjectUtil.isNotEmpty(item.getOutputonerollweigth()) && ObjectUtil.isNotEmpty(item.getPlanoutputrollcount())) {
-                    res = res + " " + removeExtraZerosAndDecimal(item.getOutputonerollweigth()) + "吨 * " + item.getPlanoutputrollcount() + "卷 = " + removeExtraZerosAndDecimal(item.getPlanoutputonerollweight());
+                    res = res + " " + CXCommonUtils.removeExtraZerosAndDecimal(item.getOutputonerollweigth()) + "吨 * " + item.getPlanoutputrollcount() + "卷 = " + CXCommonUtils.removeExtraZerosAndDecimal(item.getPlanoutputonerollweight());
                 }
                 return res;
             }).sorted(String::compareTo).collect(Collectors.toList());

+ 52 - 7
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsProcessOperationServiceImpl.java

@@ -313,8 +313,6 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                             apsProcessOperationOutMaterDo.setProwidth(wval);
                             BigDecimal lval = changeSize(outMaterDo.getProlength(), apsProcessOperationOutMaterDo.getLengthrule(), apsProcessOperationOutMaterDo.getLengthchange(), apsProcessOperationOutMaterDo.getProlength());
                             apsProcessOperationOutMaterDo.setProlength(lval);
-//                            apsProcessOperationOutMaterDo.setRipcutnum(1);
-//                            apsProcessOperationOutMaterDo.setCrosscutnum(1);
                             apsProcessOperationOutMaterDo.setOutval(1);
                             apsProcessOperationOutMaterDo.setPlanrollnum(apsProcessOperationDo.getPlanprocessrall());
                             //输入单卷重*输出宽度/输入宽度
@@ -351,6 +349,8 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                             }
                             apsProcessOperationOutMaterDo.setOutmaterrequest(outputMeter);
                             apsProcessOperationOutMaterDo.setPlanmoverollnum(apsProcessOperationDo.getPlanprocessrall() - apsProcessOperationOutMaterDo.getPlanprodrollnum());
+                            apsProcessOperationOutMaterDo.setProdleaveoutroll(apsProcessOperationOutMaterDo.getPlanprodrollnum());
+                            apsProcessOperationOutMaterDo.setMoveleaveoutroll(apsProcessOperationOutMaterDo.getPlanrollnum() - apsProcessOperationOutMaterDo.getPlanprodrollnum());
                             previousProcessVo.setApsProcessOperationOutMaterDo(apsProcessOperationOutMaterDo);
 
 
@@ -508,6 +508,8 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                             apsProcessOperationOutMaterDo.setOutputfinishproduct(outputfinishproduct);
                         }
                         apsProcessOperationOutMaterDo.setOutmaterrequest(outputMeter);
+                        apsProcessOperationOutMaterDo.setProdleaveoutroll(apsProcessOperationOutMaterDo.getPlanprodrollnum());
+                        apsProcessOperationOutMaterDo.setMoveleaveoutroll(apsProcessOperationOutMaterDo.getPlanrollnum() - apsProcessOperationOutMaterDo.getPlanprodrollnum());
 
                         previousProcessVo.setApsProcessOperationOutMaterDo(apsProcessOperationOutMaterDo);
 
@@ -797,6 +799,9 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                             processOperationOutMaterDo.setMainid(processId);
                             processOperationOutMaterDo.setBlankid(blanckdata.getStr("ID"));
                             processOperationOutMaterDo.setPlanmoverollnum(processOperationOutMaterDo.getPlanrollnum() - processOperationOutMaterDo.getPlanprodrollnum() - processOperationOutMaterDo.getPlanstockrollnum());
+                            processOperationOutMaterDo.setProdleaveoutroll(processOperationOutMaterDo.getPlanprodrollnum() - processOperationOutMaterDo.getProdoutroll() - processOperationOutMaterDo.getProdcancelroll());
+                            processOperationOutMaterDo.setMoveleaveoutroll(processOperationOutMaterDo.getPlanmoverollnum() - processOperationOutMaterDo.getMoveoutroll() - processOperationOutMaterDo.getMovecancelroll());
+                            processOperationOutMaterDo.setStockleaveoutroll(processOperationOutMaterDo.getPlanstockrollnum() - processOperationOutMaterDo.getStockoutroll() - processOperationOutMaterDo.getStockcancelroll());
                             apsProcessOperationOutMaterDoList.add(processOperationOutMaterDo);
                         }
                         previousProcessVo.setApsProcessOperationOutMaterDos(apsProcessOperationOutMaterDoList);
@@ -931,6 +936,9 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                         planoutputList.add(outputMeter + "*" + blanckdata.getInt("ROLLNUM") + "卷");
                         processOperationOutMaterDo.setMainid(processId);
                         processOperationOutMaterDo.setBlankid(blanckdata.getStr("ID"));
+                        processOperationOutMaterDo.setProdleaveoutroll(processOperationOutMaterDo.getPlanprodrollnum() - processOperationOutMaterDo.getProdoutroll() - processOperationOutMaterDo.getProdcancelroll());
+                        processOperationOutMaterDo.setMoveleaveoutroll(processOperationOutMaterDo.getPlanmoverollnum() - processOperationOutMaterDo.getMoveoutroll() - processOperationOutMaterDo.getMovecancelroll());
+                        processOperationOutMaterDo.setStockleaveoutroll(processOperationOutMaterDo.getPlanstockrollnum() - processOperationOutMaterDo.getStockoutroll() - processOperationOutMaterDo.getStockcancelroll());
                         apsProcessOperationOutMaterDoList.add(processOperationOutMaterDo);
                     }
                     previousProcessVo.setApsProcessOperationOutMaterDos(apsProcessOperationOutMaterDoList);
@@ -1333,6 +1341,9 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                         }
                         apsProcessOperationOutMaterDo1.setOutputfinishproduct(outputfinishproduct);
                         apsProcessOperationOutMaterDo1.setPlanmoverollnum(apsProcessOperationOutMaterDo1.getPlanrollnum() - apsProcessOperationOutMaterDo1.getPlanprodrollnum() - apsProcessOperationOutMaterDo1.getPlanstockrollnum());
+                        apsProcessOperationOutMaterDo1.setProdleaveoutroll(apsProcessOperationOutMaterDo1.getPlanprodrollnum() - apsProcessOperationOutMaterDo1.getProdoutroll() - apsProcessOperationOutMaterDo1.getProdcancelroll());
+                        apsProcessOperationOutMaterDo1.setMoveleaveoutroll(apsProcessOperationOutMaterDo1.getPlanmoverollnum() - apsProcessOperationOutMaterDo1.getMoveoutroll() - apsProcessOperationOutMaterDo1.getMovecancelroll());
+                        apsProcessOperationOutMaterDo1.setStockleaveoutroll(apsProcessOperationOutMaterDo1.getPlanstockrollnum() - apsProcessOperationOutMaterDo1.getStockoutroll() - apsProcessOperationOutMaterDo1.getStockcancelroll());
 
                         apsProcessOperationOutMaterDoNewList.add(apsProcessOperationOutMaterDo1);
                         if (StringUtils.isNotBlank(apsProcessOperationDo.getNextprocessid())) {
@@ -1352,7 +1363,6 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                         }
                     }
                     apsProcessOperationDo.setPlanoutput(planoutsb.toString());
-                    apsProcessOperationDo.setInputunqualifiedroll(apsProcessOperationOutMaterDo.getFailrollnum());
 
                     apsProcessOperationDoList.add(apsProcessOperationDo);
                 }
@@ -1494,9 +1504,9 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
         if (!equSaveList.isEmpty()) {
             apsProcessOperationProcessEquService.saveOrUpdateBatch(equSaveList, 100);
         }
-        apsProcessOperationBackupDos.stream().map(ApsProcessOperationBackupDo::getBlankid).forEach(data->{
+        apsProcessOperationBackupDos.stream().map(ApsProcessOperationBackupDo::getBlankid).forEach(data -> {
             // 更新坯料交货期
-            apsBlankOrderService.updateBlankDeliveryDate(null,data);
+            apsBlankOrderService.updateBlankDeliveryDate(null, data);
         });
 
         return R.ok();
@@ -1648,6 +1658,9 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
             }
             apsProcessOperationOutMaterDo.setOutmaterrequest(outputMeter);
             apsProcessOperationOutMaterDo.setPlanmoverollnum(apsProcessOperationOutMaterDo.getPlanrollnum() - apsProcessOperationOutMaterDo.getPlanprodrollnum() - apsProcessOperationOutMaterDo.getPlanstockrollnum());
+            apsProcessOperationOutMaterDo.setProdleaveoutroll(apsProcessOperationOutMaterDo.getPlanprodrollnum() - apsProcessOperationOutMaterDo.getProdoutroll() - apsProcessOperationOutMaterDo.getProdcancelroll());
+            apsProcessOperationOutMaterDo.setMoveleaveoutroll(apsProcessOperationOutMaterDo.getPlanmoverollnum() - apsProcessOperationOutMaterDo.getMoveoutroll() - apsProcessOperationOutMaterDo.getMovecancelroll());
+            apsProcessOperationOutMaterDo.setStockleaveoutroll(apsProcessOperationOutMaterDo.getPlanstockrollnum() - apsProcessOperationOutMaterDo.getStockoutroll() - apsProcessOperationOutMaterDo.getStockcancelroll());
 
             apsProcessOperationOutMaterDoNewList.add(apsProcessOperationOutMaterDo);
             if (StringUtils.isNotBlank(apsProcessOperationDo.getNextprocessid())) {
@@ -1823,7 +1836,9 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
 
             //本道工序作业
             ApsProcessOperationDo apsProcessOperationDo = cancelProcessOperationVo.getApsprocessoperationdo();
-            apsProcessOperationDo.setCancelroll(apsProcessOperationDo.getCancelroll() + curcancelroll);
+            if (cancelProcessOperationVo.getSetcancelroll()) {
+                apsProcessOperationDo.setCancelroll(apsProcessOperationDo.getCancelroll() + curcancelroll);
+            }
             apsProcessOperationDo.setLeavewaitworkroll(apsProcessOperationDo.getPlanprocessrall() - apsProcessOperationDo.getStartingroll() - apsProcessOperationDo.getInputunqualifiedroll() - apsProcessOperationDo.getCancelroll());
             Integer leaveWaitJobRoll = apsProcessOperationDo.getPlanprocessrall() - apsProcessOperationDo.getReportroll() - apsProcessOperationDo.getInputunqualifiedroll() - apsProcessOperationDo.getCancelroll();
             apsProcessOperationDo.setLeavewaitjobroll(leaveWaitJobRoll);
@@ -1892,7 +1907,6 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                         if (curMoveCancelRoll > 0) {
                             CancelProcessOperationVo cancelProcessOperationVo1 = new CancelProcessOperationVo();
                             cancelProcessOperationVo1.setCraftrouteid(craftrouteid);
-                            cancelProcessOperationVo1.setApsprocessoperationdo(processOperationDo);
                             if (processOperationDo.getLeavewaitworkroll() >= curMoveCancelRoll) {
                                 cancelroll = curMoveCancelRoll;
                                 cancelProcessOperationVo1.setCurcancelroll(cancelroll);
@@ -1900,6 +1914,9 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                                 cancelroll = processOperationDo.getLeavewaitworkroll();
                                 cancelProcessOperationVo1.setCurcancelroll(cancelroll);
                             }
+                            processOperationDo.setInputunqualifiedroll(getInputCancelRoll(apsProcessOperationDo.getPlanprocessrall(), apsProcessOperationDo.getCancelroll(), apsProcessOperationOutMaterDo));
+                            cancelProcessOperationVo1.setApsprocessoperationdo(processOperationDo);
+                            cancelProcessOperationVo1.setSetcancelroll(cancelProcessOperationVo.getSetcancelroll());
                             cancelProcessOperation(cancelProcessOperationVo1);
                         } else {
                             break;
@@ -2012,6 +2029,34 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
         }
     }
 
+    //获取输入已取消卷数
+    private Integer getInputCancelRoll(Integer planPrecessRoll, Integer cancelRoll, ApsProcessOperationOutMaterDo outMaterDo) {
+        Integer inputCancelRoll = 0;
+        if (outMaterDo.getOutcancelroll() + outMaterDo.getFailrollnum() > outMaterDo.getPlanstockrollnum()) {
+            if (outMaterDo.getPlanstockrollnum() == 0 && outMaterDo.getPlanprodrollnum() == 0) {//没有计划备料卷数和计划成品卷数
+                inputCancelRoll = outMaterDo.getFailrollnum() + outMaterDo.getOutcancelroll();
+            } else if (outMaterDo.getPlanstockrollnum() > 0 && outMaterDo.getPlanprodrollnum() == 0) {//有计划备料卷数,无计划成品卷数
+                inputCancelRoll = outMaterDo.getFailrollnum() + outMaterDo.getOutcancelroll() - outMaterDo.getPlanstockrollnum();
+            } else if (outMaterDo.getPlanstockrollnum() == 0 && outMaterDo.getPlanprodrollnum() > 0) {//无计划备料卷数,有计划成品卷数
+                Integer tempRoll = planPrecessRoll - cancelRoll - outMaterDo.getFailrollnum();
+                if (tempRoll < outMaterDo.getPlanprodrollnum()) {
+                    inputCancelRoll = planPrecessRoll - outMaterDo.getPlanprodrollnum();
+                } else {
+                    inputCancelRoll = outMaterDo.getOutcancelroll() + outMaterDo.getFailrollnum();
+                }
+            } else {//有计划备料卷数,有计划成品卷数
+                Integer tempRoll = planPrecessRoll - cancelRoll - outMaterDo.getFailrollnum();
+                if (tempRoll < outMaterDo.getPlanprodrollnum()) {
+                    inputCancelRoll = planPrecessRoll - outMaterDo.getPlanprodrollnum() - outMaterDo.getPlanstockrollnum();
+                } else {
+                    inputCancelRoll = outMaterDo.getOutcancelroll() + outMaterDo.getFailrollnum() - outMaterDo.getPlanstockrollnum();
+                }
+            }
+        }
+
+        return inputCancelRoll;
+    }
+
     /*
     工艺步骤管理/输入物料描述
      */

+ 1 - 1
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsProductDetailServiceImpl.java

@@ -541,7 +541,7 @@ public class ApsProductDetailServiceImpl extends ServiceImpl<ApsProductDetailDao
                         //拼接输出成品的输出物料规格字段
                         apsProcessOutputProductDo.setOutmaterspecification(alloy + alloyStatus + productType + " " + apsProcessOutputProductDo.getProductname().split(" ")[1]);
                         //拼接输出成品的输出成品字段
-                        apsProcessOutputProductDo.setOutputresult(apsProcessOutputProductDo.getOutmaterspecification() + " " + vo.getOutputonerollweigth() + "吨 * " + vo.getPlanoutputorderroll() + "卷");
+                        apsProcessOutputProductDo.setOutputresult(apsProcessOutputProductDo.getOutmaterspecification() + " " + CXCommonUtils.removeExtraZerosAndDecimal(vo.getOutputonerollweigth()) + "吨 * " + vo.getPlanoutputorderroll() + "卷");
 
                         apsProcessOutputProductService.updateById(apsProcessOutputProductDo);
                         needUpdateBlankIds.add(vo.getBlankId());

+ 7 - 5
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsProductionOrderServiceImpl.java

@@ -334,10 +334,12 @@ public class ApsProductionOrderServiceImpl extends ServiceImpl<ApsProductionOrde
 
         if (req.getIsNeedPublish()) {
             //=============发布排程================
-            List<String> blankIds = apsBlankOrderDoList.stream().map(ApsBlankOrderDo::getId).collect(Collectors.toList());
-            R publish = apsBlankOrderService.publish(blankIds);
-            if (!publish.getCode().equals("200")) {
-                throw new RuntimeException(publish.getMsg());
+            List<String> blankIds = apsBlankOrderDoList.stream().filter(item -> item.getProductstatus().equals(SaveConstans.ProductionStatus.TO_BE_PUBLISHED)).map(ApsBlankOrderDo::getId).collect(Collectors.toList());
+            if (ObjectUtil.isNotEmpty(blankIds)) {
+                R publish = apsBlankOrderService.publish(blankIds);
+                if (!publish.getCode().equals("200")) {
+                    throw new RuntimeException(publish.getMsg());
+                }
             }
         }
 
@@ -762,7 +764,7 @@ public class ApsProductionOrderServiceImpl extends ServiceImpl<ApsProductionOrde
         ApsProductionOrderDo nowApsProductionOrderDo = this.getById(req.getOrderId());
 
         //如果 评审状态 不一致
-        if(!oldApsProductionOrderDo.getAuditstatus().equals(nowApsProductionOrderDo.getAuditstatus())){
+        if (!oldApsProductionOrderDo.getAuditstatus().equals(nowApsProductionOrderDo.getAuditstatus())) {
             return R.error("该订单已被其他人提交,不能保存或提交");
         }
 

+ 511 - 152
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ReportCheckServiceImpl.java

@@ -2,28 +2,37 @@ package com.rongwei.bscommon.sys.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.rongwei.bscommon.sys.dao.ApsBlankOrderDao;
-import com.rongwei.bscommon.sys.dao.ApsProcessOperationOutMaterDao;
+import com.rongwei.bscommon.sys.service.ApsBlankOrderService;
 import com.rongwei.bscommon.sys.service.ApsReportRecordsService;
 import com.rongwei.bscommon.sys.service.ReportCheckService;
 import com.rongwei.bsentity.domain.*;
+import com.rongwei.bsentity.vo.CancelProcessOperationVo;
 import com.rongwei.bsentity.vo.CommonUpdateProductionStatusReq;
-import com.rongwei.bsentity.vo.ProcessIdRelationVo;
 import com.rongwei.rwcommon.base.BaseDo;
 import com.rongwei.rwcommon.base.R;
+import com.rongwei.rwcommon.base.exception.CustomException;
+import com.rongwei.wfentity.sys.RunTaskDo;
+import com.rongwei.wfentity.sys.vo.RunTaskVo;
+import com.rongwei.wfserver.wfcommon.core.service.impl.WorkFlowServiceImpl;
+import com.rongwei.wfserver.wfcommon.sys.service.RunTaskService;
 import jodd.util.StringUtil;
 import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.*;
+import java.util.function.BiConsumer;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
+import static com.rongwei.safecommon.utils.SaveConstans.JobStatus.JOBSTATUS_TO_BE_END;
 import static com.rongwei.safecommon.utils.SaveConstans.WorkInProgressStatus.*;
+import static com.rongwei.safecommon.utils.SaveConstans.WorkInProgressType.PASS;
+import static com.rongwei.safecommon.utils.SaveConstans.WorkInProgressType.REJECTS;
 
 /**
  * ReportCheckServiceImpl class
@@ -40,7 +49,6 @@ public class ReportCheckServiceImpl implements ReportCheckService {
     public static final String PENDING_PLAN_REVIEW = "待计划评审";
     public static final String VERIFIED = "已检验";
     public static final String COMPLETED = "已完工";
-    public static final String REJECTS = "不良在制品";
     public static final String SEMIFINISHED_PRODUCTS = "半成品备料";
     public static final String WORK_IN_PROCESS = "在制品";
     private final Logger log = LoggerFactory.getLogger(this.getClass().getName());
@@ -51,8 +59,6 @@ public class ReportCheckServiceImpl implements ReportCheckService {
     @Autowired
     private ApsProcessOperationServiceImpl apsProcessOperationService;
     @Autowired
-    private ApsBlankOrderDao apsBlankOrderDao;
-    @Autowired
     private ApsProductionOrderServiceImpl apsProductionOrderService;
     @Autowired
     private ApsWorkInProgressInventoryServiceImpl apsWorkInProgressInventoryService;
@@ -61,7 +67,11 @@ public class ReportCheckServiceImpl implements ReportCheckService {
     @Autowired
     private ApsProcessOperationProcessEquServiceImpl apsProcessOperationProcessEquService;
     @Autowired
-    private ApsProcessOperationOutMaterDao apsProcessOperationOutMaterDao;
+    private ApsBlankOrderService apsBlankOrderService;
+    @Autowired
+    private WorkFlowServiceImpl workFlowService;
+    @Autowired
+    private RunTaskService runTaskService;
 
     /**
      * 保存检验结果后更新相关信息
@@ -83,205 +93,554 @@ public class ReportCheckServiceImpl implements ReportCheckService {
             log.error("无法根据ID:{}获取到报工记录", id);
             return R.error("无法获取到报工记录");
         }
-//        if (VERIFIED.equals(reportRecordsDo.getCheckstatus())) {
-//            log.error("当前报工记录已检验无法再次检验");
-//            return R.error("当前报工记录已检验无法再次检验");
-//        }
-        // 获取当前报工记录对应的工序作业记录
-        ApsProcessOperationProcessEquDo currentProcessOperationEqu = apsProcessOperationProcessEquService.getById(reportRecordsDo.getProcessequid());
-        if (currentProcessOperationEqu == null) {
-            log.error("无法找到当前报工记录对应的工序作业信息");
-            return R.error("无法找到当前报工记录对应的工序作业信息");
+        // 获取该工序生成的物料输出信息
+        List<ApsReportOutputDo> reportOutputDos = apsReportOutputService.list(new LambdaQueryWrapper<ApsReportOutputDo>()
+                .eq(ApsReportOutputDo::getMainid, id)
+                .eq(BaseDo::getDeleted, NO_DELETED));
+        if (reportOutputDos.isEmpty()) {
+            log.error("无法根据ID:{}获取到输出物料信息", id);
+            return R.error("无法获取到输出物料信息");
+        }
+        // 获取工序作业信息
+        String currentProcessOperationId = reportRecordsDo.getProcessoperationid();
+        if (StringUtils.isBlank(currentProcessOperationId)) {
+            log.error("当前报工记录:{}无法获取到对应的工序作业信息!", id);
+            return R.error("无法获取到工序作业信息,请联系系统管理员!");
         }
-        String processOperationEquId = currentProcessOperationEqu.getId();
         // 获取工序作业主表信息
         ApsProcessOperationDo currentProcessOperationMainDo = apsProcessOperationService.getOne(new LambdaQueryWrapper<ApsProcessOperationDo>()
-                .eq(ApsProcessOperationDo::getId, reportRecordsDo.getProcessoperationid()).eq(BaseDo::getDeleted, NO_DELETED));
+                .eq(ApsProcessOperationDo::getId, currentProcessOperationId)
+                .eq(BaseDo::getDeleted, NO_DELETED));
         if (currentProcessOperationMainDo == null) {
             log.error("无法根据ID:{}获取到工序作业信息", id);
-            return R.error("无法获取到工序作业信息");
+            return R.error("无法获取到工序作业信息,请联系系统管理员!");
         }
-        if (StringUtils.isBlank(currentProcessOperationMainDo.getBlankid())) {
-            log.error("无法根据工序获取到生产订单信息");
-            return R.error("无法获取到生产订单信息");
+        // 获取工序作业明细信息
+        ApsProcessOperationProcessEquDo currentProcessOperationEqu = apsProcessOperationProcessEquService.getById(reportRecordsDo.getProcessequid());
+        if (currentProcessOperationEqu == null) {
+            log.error("无法找到当前报工记录对应的工序作业信息");
+            return R.error("无法找到当前报工记录对应的工序作业信息");
         }
-        // 前道工序作业ID
-        String previousprocessid = currentProcessOperationMainDo.getPreviousprocessid();
         // 获取工序作业对应的输出物料信息
-        ApsProcessOperationOutMaterDo operationOutMaterDoList = apsProcessOperationOutMaterService.getOne(new LambdaQueryWrapper<ApsProcessOperationOutMaterDo>()
-                .eq(ApsProcessOperationOutMaterDo::getMainid, currentProcessOperationMainDo.getId())
-                .eq(BaseDo::getDeleted, NO_DELETED), false);
-        if (operationOutMaterDoList == null) {
-            log.error("无法根据工序作业ID:{}获取对应的输出物料信息", currentProcessOperationMainDo.getId());
+        List<ApsProcessOperationOutMaterDo> operationOutMaterDoList = apsProcessOperationOutMaterService.list(new LambdaQueryWrapper<ApsProcessOperationOutMaterDo>()
+                .eq(ApsProcessOperationOutMaterDo::getMainid, currentProcessOperationId)
+                .eq(BaseDo::getDeleted, NO_DELETED));
+        if (operationOutMaterDoList.isEmpty()) {
+            log.error("无法根据工序作业ID:{}获取对应的输出物料信息", currentProcessOperationId);
             return R.error("无法获取到对应的输出物料信息");
         }
-        // 获取该工序生成的物料输出信息
-        List<ApsReportOutputDo> reportOutputDos = apsReportOutputService.list(new LambdaQueryWrapper<ApsReportOutputDo>()
-//                .eq(ApsReportOutputDo::getCheckstatus,"待检验")
-                .eq(ApsReportOutputDo::getMainid, id)
-                .eq(BaseDo::getDeleted, NO_DELETED));
-        if (reportOutputDos.isEmpty()) {
-            log.error("无法根据ID:{}获取到输出物料信息", id);
-            return R.error("无法获取到输出物料信息");
+        // 工序作业明细ID
+        String processOperationEquId = currentProcessOperationEqu.getId();
+        // 前道工序作业ID
+        String previousprocessid = currentProcessOperationMainDo.getPreviousprocessid();
+        // 坯料计划ID
+        String blankId = currentProcessOperationMainDo.getBlankid();
+        if (StringUtils.isBlank(blankId)) {
+            log.error("无法根据工序获取到生产订单信息");
+            return R.error("无法获取到生产订单信息");
         }
-        //获取批量计划
-        ApsBlankOrderDo blankOrderDo = apsBlankOrderDao.selectById(currentProcessOperationMainDo.getBlankid());
+        // 获取坯料计划
+        ApsBlankOrderDo blankOrderDo = apsBlankOrderService.getBaseMapper().selectById(blankId);
         if (blankOrderDo == null) {
-            log.error("无法根据ID:{}找到对应的订单信息", currentProcessOperationMainDo.getBlankid());
-            return R.error("无法获取订单信息");
+            log.error("无法根据ID:{}找到对应的坯料计划信息", blankId);
+            return R.error("无法获取到坯料计划信息");
         }
-        if (StringUtils.isBlank(blankOrderDo.getProductionorderid())) {
+        // 获取订单记录
+        String productionOrderId = blankOrderDo.getProductionorderid();
+        if (StringUtils.isBlank(productionOrderId)) {
             log.error("坯料计划对应的订单ID为空");
             return R.error("无法通过坯料计划找到订单信息");
         }
         // 获取订单信息
-        ApsProductionOrderDo productionOrderDo = apsProductionOrderService.getById(blankOrderDo.getProductionorderid());
+        ApsProductionOrderDo productionOrderDo = apsProductionOrderService.getById(productionOrderId);
         if (productionOrderDo == null) {
-            log.error("无法根据ID:{},获取到订单信息", blankOrderDo.getProductionorderid());
+            log.error("无法根据ID:{},获取到订单信息", productionOrderId);
             return R.error("无法找到订单信息");
         }
-
-        // 获取检验不合格批次的数量
-        List<ApsReportOutputDo> unqualificationOutPutList = reportOutputDos.stream()
-                .filter(info -> NO.equals(info.getQualified()))
-                .collect(Collectors.toList());
-        // 检验合格的数量信息
-        List<ApsReportOutputDo> qualifiedOutPutList = reportOutputDos.stream()
-                .filter(info -> YES.equals(info.getQualified()))
-                .collect(Collectors.toList());
-        if (unqualificationOutPutList.isEmpty() && qualifiedOutPutList.isEmpty()) {
-            log.debug("暂无检验的数据");
-            return R.ok("暂无需要检验的数据");
-        }
-        // modify at [ 2024-06-28 11:44:04 ] by xh: 修改获取下一个工序作业的逻辑
-        /**
-         * 当前报工记录的输出物料ID和下一个工序作业的输入物料匹配 找到需要更新待加工料卷批次号的工序作业明细信息
-         */
-        String nextProcessId = currentProcessOperationMainDo.getNextprocessid();
-        // 输出物料ID
-        List<String> outputMaterialId = reportOutputDos.stream().map(ApsReportOutputDo::getOutputid).distinct().collect(Collectors.toList());
-        // 获取当前工序对应的后道工序信息
-        List<ApsProcessOperationDo> nextProcessOperationDos = new ArrayList<>();
-        // 当前工序作业的下一个工序作业ID
-        List<String> nextProcessIds = new ArrayList<>();
-        if (StringUtils.isNotBlank(nextProcessId)) {
-            // 找到可以更新待加工料卷批次号的工序作业信息
-            nextProcessOperationDos = apsProcessOperationService.list(new LambdaQueryWrapper<ApsProcessOperationDo>()
-                    .in(ApsProcessOperationDo::getId, Arrays.asList(nextProcessId.split(",")))
-                    .in(ApsProcessOperationDo::getPlaninputid, outputMaterialId)
-                    .eq(BaseDo::getDeleted, NO_DELETED));
-            nextProcessIds.addAll(nextProcessOperationDos.stream().map(ApsProcessOperationDo::getId).collect(Collectors.toList()));
-        }
-
         // 获取当前报工作业对应的在制品信息
         List<ApsWorkInProgressInventoryDo> apsWorkInProgressInventoryDos = apsWorkInProgressInventoryService.list(new LambdaQueryWrapper<ApsWorkInProgressInventoryDo>()
                 .eq(ApsWorkInProgressInventoryDo::getWorkreportrecordid, id).eq(BaseDo::getDeleted, NO_DELETED));
+        if (apsWorkInProgressInventoryDos.isEmpty()) {
+            log.error("无法获取到当前工序对应的在制品信息");
+            return R.error("无法获取在制品信息");
+        }
+        // 更新当前工序作业和作业明细的已检验卷数
+        currentProcessOperationMainDo.setCheckoutroll(currentProcessOperationMainDo.getCheckoutroll() + reportOutputDos.size());
+        apsProcessOperationService.updateById(currentProcessOperationMainDo);
+        currentProcessOperationEqu.setCheckoutroll(currentProcessOperationEqu.getCheckoutroll() + reportOutputDos.size());
+        currentProcessOperationEqu.setWorkstatus(JOBSTATUS_TO_BE_END);
+        currentProcessOperationEqu.setBachmaterialprocess("");
+        apsProcessOperationProcessEquService.updateById(currentProcessOperationEqu);
+        // 更新 更新该报工检验记录所有输出物料 以及待加工料卷批次号
+        updateProcessOutputMater(apsWorkInProgressInventoryDos, reportOutputDos,
+                operationOutMaterDoList,
+                currentProcessOperationMainDo,
+                currentProcessOperationEqu);
+        // 更新报工输出物料 检验状态
+        apsReportOutputService.update(new LambdaUpdateWrapper<ApsReportOutputDo>()
+                .in(ApsReportOutputDo::getId, reportOutputDos.stream().map(ApsReportOutputDo::getId).collect(Collectors.toList()))
+                .set(ApsReportOutputDo::getCheckstatus, VERIFIED));
+        if (reportOutputDos.stream().anyMatch(info -> NO.equals(info.getQualified())) && "已发布计划".equals(productionOrderDo.getAuditstatus())) {
+            goBackWf(processOperationEquId, blankId, productionOrderDo);
+        }
+        apsReportRecordsService.update(new LambdaUpdateWrapper<ApsReportRecordsDo>().eq(ApsReportRecordsDo::getId, id)
+                .set(ApsReportRecordsDo::getCheckstatus, VERIFIED)
+                .set(ApsReportRecordsDo::getNeedcheckbatchnumber, ""));
+        return R.ok();
+        /*******************************************以下为旧逻辑*****************************************/
+        // 获取检验不合格批次的数量
+//        List<ApsReportOutputDo> unqualificationOutPutList = reportOutputDos.stream()
+//                .filter(info -> NO.equals(info.getQualified()))
+//                .collect(Collectors.toList());
+//        // 检验合格的数量信息
+//        List<ApsReportOutputDo> qualifiedOutPutList = reportOutputDos.stream()
+//                .filter(info -> YES.equals(info.getQualified()))
+//                .collect(Collectors.toList());
+//        if (unqualificationOutPutList.isEmpty() && qualifiedOutPutList.isEmpty()) {
+//            log.debug("暂无检验的数据");
+//            return R.ok("暂无需要检验的数据");
+//        }
+//        // modify at [ 2024-06-28 11:44:04 ] by xh: 修改获取下一个工序作业的逻辑
+//        /**
+//         * 当前报工记录的输出物料ID和下一个工序作业的输入物料匹配 找到需要更新待加工料卷批次号的工序作业明细信息
+//         */
+//        String nextProcessId = currentProcessOperationMainDo.getNextprocessid();
+//        // 输出物料ID
+//        List<String> outputMaterialId = reportOutputDos.stream().map(ApsReportOutputDo::getOutputid).distinct().collect(Collectors.toList());
+//        // 获取当前工序对应的后道工序信息
+//        List<ApsProcessOperationDo> nextProcessOperationDos = new ArrayList<>();
+//        // 当前工序作业的下一个工序作业ID
+//        List<String> nextProcessIds = new ArrayList<>();
+//        if (StringUtils.isNotBlank(nextProcessId)) {
+//            // 找到可以更新待加工料卷批次号的工序作业信息
+//            nextProcessOperationDos = apsProcessOperationService.list(new LambdaQueryWrapper<ApsProcessOperationDo>()
+//                    .in(ApsProcessOperationDo::getId, Arrays.asList(nextProcessId.split(",")))
+//                    .in(ApsProcessOperationDo::getPlaninputid, outputMaterialId)
+//                    .eq(BaseDo::getDeleted, NO_DELETED));
+//            nextProcessIds.addAll(nextProcessOperationDos.stream().map(ApsProcessOperationDo::getId).collect(Collectors.toList()));
+//        }
+
 
         /******************************开始数据处理逻辑***************************************/
         // 更新合格不合格数量
-        int unqualifiedQuantity = unqualificationOutPutList.size();
+//        int unqualifiedQuantity = unqualificationOutPutList.size();
         // 更新合格数量
-        int qualifiedQuantity = qualifiedOutPutList.size();
+//        int qualifiedQuantity = qualifiedOutPutList.size();
         // 更新已检验卷数
-        int inspectQuantity = reportOutputDos.size();
+//        int inspectQuantity = reportOutputDos.size();
         /***********************更新 工序作业输出物料的  输出已检验卷数 输出不合格卷数 输出合格卷数****************************************/
-        Map<String, List<ApsReportOutputDo>> collect = reportOutputDos.stream().collect(Collectors.groupingBy(ApsReportOutputDo::getOutputid));
-        collect.forEach((k, v) -> {
-            // 不合格卷数
-            long unqualifiedQty = v.stream().filter(info -> NO.equals(info.getQualified())).count();
-            // 合格卷数
-            long passingQty = v.stream().filter(info -> YES.equals(info.getQualified())).count();
-            log.debug("更新输出物料ID:{},不合格卷数:{},合格卷数:{},已检验卷数:{}", k, unqualifiedQty, passingQty, v.size());
-            apsProcessOperationOutMaterDao.reportCheckUpdateAboutVolumesNum(k, unqualifiedQty, passingQty, v.size());
-        });
+//        Map<String, List<ApsReportOutputDo>> collect = reportOutputDos.stream().collect(Collectors.groupingBy(ApsReportOutputDo::getOutputid));
+//        collect.forEach((k, v) -> {
+//            // 不合格卷数
+//            long unqualifiedQty = v.stream().filter(info -> NO.equals(info.getQualified())).count();
+//            // 合格卷数
+//            long passingQty = v.stream().filter(info -> YES.equals(info.getQualified())).count();
+//            log.debug("更新输出物料ID:{},不合格卷数:{},合格卷数:{},已检验卷数:{}", k, unqualifiedQty, passingQty, v.size());
+//            apsProcessOperationOutMaterDao.reportCheckUpdateAboutVolumesNum(k, unqualifiedQty, passingQty, v.size());
+//        });
         /*********************** 工序作业输出物料 更新结束****************************************/
         // 订单信息
         //currentProductionOrderDoDispose(productionOrderDo, unqualificationOutPutList);
-        log.debug("开始更新在制品库存信息");
+//        log.debug("开始更新在制品库存信息");
         // 在制品
-        updateArticlesProcessData(unqualificationOutPutList, qualifiedOutPutList, reportRecordsDo,
-                apsWorkInProgressInventoryDos, nextProcessOperationDos, currentProcessOperationMainDo,
-                operationOutMaterDoList);
+//        updateArticlesProcessData(unqualificationOutPutList, qualifiedOutPutList, reportRecordsDo,
+//                apsWorkInProgressInventoryDos, nextProcessOperationDos, currentProcessOperationMainDo,
+//                operationOutMaterDoList);
         // 获取所有待加工的批次号信息
-        String toBeProcessedBatchNum = apsWorkInProgressInventoryDos.stream().filter(info -> WAIT_WORK.equals(info.getWorkinprocessstatus()))
-                .map(ApsWorkInProgressInventoryDo::getBatchnumber).collect(Collectors.joining(","));
+//        String toBeProcessedBatchNum = apsWorkInProgressInventoryDos.stream().filter(info -> WAIT_WORK.equals(info.getWorkinprocessstatus()))
+//                .map(ApsWorkInProgressInventoryDo::getBatchnumber).collect(Collectors.joining(","));
 //        if (!qualifiedOutPutList.isEmpty()) {
 //            // 获取后道工序的数据
 //            nextProcessDispose(nextProcessOperationDo, qualifiedOutPutList);
 //        }
 
         /**********************执行数据更新操作*************************/
-        if (!nextProcessIds.isEmpty() && StringUtils.isNotBlank(toBeProcessedBatchNum)) {
-            log.debug("开始增加后道工序作业:{}的待加工批次号:{}", nextProcessIds, toBeProcessedBatchNum);
-            //更新后续工序的待加工批次号信息
-            apsProcessOperationService.updateBachmaterialprocessByIds(nextProcessIds, toBeProcessedBatchNum,
-                    unqualifiedQuantity);
-            apsProcessOperationProcessEquService.updateBachmaterialprocessByIds(nextProcessIds, toBeProcessedBatchNum,
-                    currentProcessOperationEqu.getNextprocessesids());
-        }
+//        if (!nextProcessIds.isEmpty() && StringUtils.isNotBlank(toBeProcessedBatchNum)) {
+//            log.debug("开始增加后道工序作业:{}的待加工批次号:{}", nextProcessIds, toBeProcessedBatchNum);
+//            //更新后续工序的待加工批次号信息
+//            apsProcessOperationService.updateBachmaterialprocessByIds(nextProcessIds, toBeProcessedBatchNum,
+//                    unqualifiedQuantity);
+//            apsProcessOperationProcessEquService.updateBachmaterialprocessByIds(nextProcessIds, toBeProcessedBatchNum,
+//                    currentProcessOperationEqu.getNextprocessesids());
+//        }
         /***************************存在不合格批次信息时 更新更新报工记录对应订单的订单评审状态=待计划评审, 订单调整日期=今天*************************************/
-        if (unqualifiedQuantity > 0) {
-            LambdaUpdateWrapper<ApsProductionOrderDo> lambdaUpdateWrapper = Wrappers.lambdaUpdate();
-            lambdaUpdateWrapper.eq(ApsProductionOrderDo::getId,productionOrderDo.getId());
-            lambdaUpdateWrapper.set(ApsProductionOrderDo::getAuditstatus,"待提交");
-            lambdaUpdateWrapper.set(ApsProductionOrderDo::getChangedate,new Date());
-            apsProductionOrderService.update(lambdaUpdateWrapper);
-        }
+//        if (unqualifiedQuantity > 0) {
+//            LambdaUpdateWrapper<ApsProductionOrderDo> lambdaUpdateWrapper = Wrappers.lambdaUpdate();
+//            lambdaUpdateWrapper.eq(ApsProductionOrderDo::getId, productionOrderDo.getId());
+//            lambdaUpdateWrapper.set(ApsProductionOrderDo::getAuditstatus, "待提交");
+//            lambdaUpdateWrapper.set(ApsProductionOrderDo::getChangedate, new Date());
+//            apsProductionOrderService.update(lambdaUpdateWrapper);
+//        }
         /************************更新工序*******************************/
         // 更新工序主表的 已检验卷数,不合格卷数,合格卷数 , 完工状态,作业状态,生产状态
-        log.debug("开始更新工序作业");
-        apsProcessOperationService.updateAboutCheckBatchNum(currentProcessOperationMainDo.getId(), inspectQuantity,
-                qualifiedQuantity, unqualifiedQuantity);
-
-        log.debug("开始更新工序作业明细");
-        // 更新工序作业明细表的输出已检验卷数,不合格卷数,合格卷数完工状态,作业状态,生产状态
-        apsProcessOperationProcessEquService.updateAboutCheckBatchNum(processOperationEquId, inspectQuantity,
-                qualifiedQuantity, unqualifiedQuantity, previousprocessid, currentProcessOperationMainDo.getId());
+//        log.debug("开始更新工序作业");
+//        apsProcessOperationService.updateAboutCheckBatchNum(currentProcessOperationMainDo.getId(), inspectQuantity,
+//                qualifiedQuantity, unqualifiedQuantity);
+//
+//        log.debug("开始更新工序作业明细");
+//        // 更新工序作业明细表的输出已检验卷数,不合格卷数,合格卷数完工状态,作业状态,生产状态
+//        apsProcessOperationProcessEquService.updateAboutCheckBatchNum(processOperationEquId, inspectQuantity,
+//                qualifiedQuantity, unqualifiedQuantity, previousprocessid, currentProcessOperationMainDo.getId());
 
         /***************更新在制品信息****************************/
-        List<ApsWorkInProgressInventoryDo> updateList = apsWorkInProgressInventoryDos.stream()
-                .filter(info -> NO_DELETED.equals(info.getDeleted())).collect(Collectors.toList());
-        if (!updateList.isEmpty()) {
-            log.debug("更新在制品信息");
-            apsWorkInProgressInventoryService.updateWorkinprocessstatus(apsWorkInProgressInventoryDos);
-        }
+//        List<ApsWorkInProgressInventoryDo> updateList = apsWorkInProgressInventoryDos.stream()
+//                .filter(info -> NO_DELETED.equals(info.getDeleted())).collect(Collectors.toList());
+//        if (!updateList.isEmpty()) {
+//            log.debug("更新在制品信息");
+//            apsWorkInProgressInventoryService.updateWorkinprocessstatus(apsWorkInProgressInventoryDos);
+//        }
         /********************************更新当前报工记录的待检验批次号*************************************/
 //        apsReportRecordsService.update(new LambdaUpdateWrapper<ApsReportRecordsDo>().eq(ApsReportRecordsDo::getId, id)
 //                .set(ApsReportRecordsDo::getCheckstatus, VERIFIED)
 //                .set(ApsReportRecordsDo::getNeedcheckbatchnumber, ""));
         /******************************如果本次检验中存在不合格的批次 则更新后续所有工序作业的状态***************************/
-        if (unqualifiedQuantity != 0 && !nextProcessIds.isEmpty()) {
-            ApsProcessOperationDo apsProcessOperationDo = apsProcessOperationService.getById(currentProcessOperationMainDo.getId());
-            /**
-             *且当前工序作业已完成 则更新后续所有
-             *工序作业明细和工序作业的 相关信息
-             *(工序作业明细) 完工状态 实际完工时间
-             *(工序作业) 完工状态 作业状态 生产状态 实际完工时间
-             */
-            if (COMPLETED.equals(apsProcessOperationDo.getClosestatus())) {
-                // 获取当前工序
-                List<ProcessIdRelationVo> allNextProcessOperationById = apsProcessOperationService.getAllNextProcessOperationById(nextProcessIds);
-                apsProcessOperationProcessEquService.updateAboutStateByProcessId(allNextProcessOperationById);
-            }
-        }
-        // 更新坯料计划的作业状态
+//        if (unqualifiedQuantity != 0 && !nextProcessIds.isEmpty()) {
+//            ApsProcessOperationDo apsProcessOperationDo = apsProcessOperationService.getById(currentProcessOperationMainDo.getId());
+//            /**
+//             *且当前工序作业已完成 则更新后续所有
+//             *工序作业明细和工序作业的 相关信息
+//             *(工序作业明细) 完工状态 实际完工时间
+//             *(工序作业) 完工状态 作业状态 生产状态 实际完工时间
+//             */
+//            if (COMPLETED.equals(apsProcessOperationDo.getClosestatus())) {
+//                // 获取当前工序
+//                List<ProcessIdRelationVo> allNextProcessOperationById = apsProcessOperationService.getAllNextProcessOperationById(nextProcessIds);
+//                apsProcessOperationProcessEquService.updateAboutStateByProcessId(allNextProcessOperationById);
+//            }
+//        }
+//        return R.ok();
+    }
 
+    /**
+     * 撤回
+     */
+    public void goBackWf(String processOperationEquId, String blankId, ApsProductionOrderDo productionOrderDo) {
         CommonUpdateProductionStatusReq req = new CommonUpdateProductionStatusReq();
         req.setProcessOperationEquId(processOperationEquId);
-        req.setProcessOperationId(currentProcessOperationMainDo.getId());
-        req.setOrderId(productionOrderDo.getId());
-        req.setBlankId(blankOrderDo.getId());
+//        req.setProcessOperationId(currentProcessOperationMainDo.getId());
+//        req.setOrderId(productionOrderDo.getId());
+//        req.setBlankId(blankId);
         // 更新
         apsProcessOperationProcessEquService.updateProductionStatus(req);
-        apsReportOutputService.update(new LambdaUpdateWrapper<ApsReportOutputDo>()
-                .in(ApsReportOutputDo::getId, reportOutputDos.stream().map(ApsReportOutputDo::getId).collect(Collectors.toList()))
-                .set(ApsReportOutputDo::getCheckstatus, VERIFIED));
-        reportRecordsDo.setCheckstatus(VERIFIED);
-        apsReportRecordsService.update(new LambdaUpdateWrapper<ApsReportRecordsDo>()
-                .set(ApsReportRecordsDo::getCheckstatus, VERIFIED)
-                .set(ApsReportRecordsDo::getNeedcheckbatchnumber, null)
-                .eq(ApsReportRecordsDo::getId, id));
-        return R.ok();
+        // 备份
+        apsProductionOrderService.saveHistoryInfo(productionOrderDo.getId());
+        // modify at [ 2024-08-08 11:09:33 ] by xh: 项目经理因需求原因不在执行如下逻辑直接结束
+        if (true){
+            return;
+        }
+        // 坯料计划撤回发布
+        apsBlankOrderService.publishCancel(Arrays.asList(blankId));
+        productionOrderDo.setAuditstatus("待排程");
+        productionOrderDo.setChangedate(new Date());
+        productionOrderDo.setIsback("是");
+        productionOrderDo.setChangecomment("");
+        apsProductionOrderService.update(new LambdaUpdateWrapper<ApsProductionOrderDo>()
+                .eq(ApsProductionOrderDo::getId, productionOrderDo.getId())
+                .set(ApsProductionOrderDo::getChangedate, new Date())
+                .set(ApsProductionOrderDo::getIsback, "是")
+                .set(ApsProductionOrderDo::getChangecomment, null));
+
+        String processinstid = productionOrderDo.getProcessinstid();
+        RunTaskDo runTaskDo = runTaskService.getOne(new LambdaQueryWrapper<RunTaskDo>().eq(BaseDo::getDeleted, "0")
+                .eq(RunTaskDo::getProcessinstid, processinstid)
+                .in(RunTaskDo::getTaskstatus, "10", "20")
+                .orderByDesc(BaseDo::getCreatedate), false);
+        RunTaskVo runTaskVo = new RunTaskVo();
+        BeanUtils.copyProperties(runTaskDo, runTaskVo);
+        runTaskVo.setProcessInstId(processinstid);
+        runTaskVo.setBusinesstableid(productionOrderDo.getId());
+        runTaskVo.setProcesstitle("订单评审");
+        runTaskVo.setProcessdefid("order_review");
+        runTaskVo.setAuditoperation("10");
+        runTaskVo.setTaskstatusname("待处理");
+        try {
+            workFlowService.runTask(runTaskVo, true);
+        } catch (Exception e) {
+            log.error("流程更新失败");
+            throw new RuntimeException(e);
+        }
+    }
+
+    /**
+     * 更新工序作业对应的输出物料信息
+     *
+     * @param apsWorkInProgressInventoryDos 在制品信息
+     * @param reportOutputDos               报工输出物料信息
+     * @param operationOutMaterDoList
+     */
+    public void updateProcessOutputMater(List<ApsWorkInProgressInventoryDo> apsWorkInProgressInventoryDos,
+                                         List<ApsReportOutputDo> reportOutputDos,
+                                         List<ApsProcessOperationOutMaterDo> operationOutMaterDoList,
+                                         ApsProcessOperationDo currentProcessOperationMainDo,
+                                         ApsProcessOperationProcessEquDo currentProcessOperationEqu) {
+        log.info("开始更新工序作业的输出物料和在制品相关信息");
+        // 需要作为待加工料卷批次号的批次号
+        Map<String, List<String>> toBeProcessedDataMap = new HashMap<>();
+
+        // 循环报工输出物料信息
+        reportOutputDos.forEach(reportOutputDo -> {
+            String outputid = reportOutputDo.getOutputid();
+            // 获取报工记录对应的输出物料
+            ApsProcessOperationOutMaterDo apsProcessOperationOutMaterDo = operationOutMaterDoList.stream()
+                    .filter(materDo -> materDo.getId().equals(outputid)).findFirst().orElse(null);
+            // 报工记录对应的
+            ApsWorkInProgressInventoryDo apsWorkInProgressInventoryDo = apsWorkInProgressInventoryDos.stream()
+                    .filter(inventory -> reportOutputDo.getOutputnumber().equals(inventory.getBatchnumber()))
+                    .findFirst().orElse(null);
+            if (apsProcessOperationOutMaterDo == null) {
+                log.error("报工记录:{}无法找到对应的输出物料信息", reportOutputDo.getId());
+                throw new CustomException("无法找到对应的输出物料信息");
+            }
+            if (apsWorkInProgressInventoryDo == null) {
+                log.error("报工记录:{}无法找到对应的在制品信息", reportOutputDo.getId());
+                throw new CustomException("无法找到对应的在制品信息");
+            }
+            log.debug("开始更新在制品: {}和输出物料相关信息: {}", apsWorkInProgressInventoryDo.getId(), apsProcessOperationOutMaterDo.getId());
+            // 已检验卷数加+1
+            apsProcessOperationOutMaterDo.setInspectrollnum(apsProcessOperationOutMaterDo.getInspectrollnum() + 1);
+            log.debug("当前检验输出成品:{}校验合格:{}", outputid, reportOutputDo.getQualified());
+            // 不合格
+            if (NO.equals(reportOutputDo.getQualified())) {
+                currentProcessOperationMainDo.setOutputunqualifiednum(currentProcessOperationMainDo.getOutputunqualifiednum() + 1);
+                apsProcessOperationOutMaterDo.setFailrollnum(apsProcessOperationOutMaterDo.getFailrollnum() + 1);
+                apsWorkInProgressInventoryDo.setWorkinprocessstatus(WAITING);
+                apsWorkInProgressInventoryDo.setWorkinprocesstype(REJECTS);
+            } else {
+                currentProcessOperationMainDo.setOutputqualifiednum(currentProcessOperationMainDo.getOutputqualifiednum() + 1);
+                apsProcessOperationOutMaterDo.setGoodrollnum(apsProcessOperationOutMaterDo.getGoodrollnum() + 1);
+                apsWorkInProgressInventoryDo.setWorkinprocesstype(PASS);
+                if (apsProcessOperationOutMaterDo.getProdleaveoutroll() > 0) {
+                    log.debug("更新状态为待入库");
+                    /**
+                     * 输出物料批次号对应在制品的在制品状态=待入库,
+                     * 成品输出卷数加1
+                     * 成品剩余需输出卷数减1
+                     */
+                    apsWorkInProgressInventoryDo.setWorkinprocessstatus(TO_BE_PUT_INTO_STORAGE);
+                    apsProcessOperationOutMaterDo.setProdoutroll(apsProcessOperationOutMaterDo.getProdoutroll() + 1);
+                    apsProcessOperationOutMaterDo.setProdleaveoutroll(apsProcessOperationOutMaterDo.getProdleaveoutroll() - 1);
+                } else if (apsProcessOperationOutMaterDo.getProdleaveoutroll() == 0 && apsProcessOperationOutMaterDo.getMoveleaveoutroll() > 0) {
+                    log.debug("更新状态为待加工");
+                    /**
+                     * 输出物料批次号对应在制品的在制品状态=待加工
+                     * 流转输出卷数加1
+                     * 流转剩余需输出卷数减1
+                     */
+                    apsWorkInProgressInventoryDo.setWorkinprocessstatus(WAIT_WORK);
+                    toBeProcessedDataMap.computeIfAbsent(outputid, k -> new ArrayList<>()).add(reportOutputDo.getOutputnumber());
+                    apsProcessOperationOutMaterDo.setMoveoutroll(apsProcessOperationOutMaterDo.getMoveoutroll() + 1);
+                    apsProcessOperationOutMaterDo.setMoveleaveoutroll(apsProcessOperationOutMaterDo.getMoveleaveoutroll() - 1);
+                } else {
+                    log.debug("更新状态为备料中");
+                    /**
+                     * 输出物料批次号对应在制品的在制品状态=备料中
+                     * 备料输出卷数加1
+                     * 备料剩余需输出卷数减1
+                     */
+                    apsWorkInProgressInventoryDo.setWorkinprocessstatus(WAITING);
+                    apsProcessOperationOutMaterDo.setStockoutroll(apsProcessOperationOutMaterDo.getStockoutroll() + 1);
+                    apsProcessOperationOutMaterDo.setStockleaveoutroll(apsProcessOperationOutMaterDo.getStockleaveoutroll() - 1);
+                }
+            }
+        });
+        log.debug("需要向下一节点流转的批次号:{}", toBeProcessedDataMap);
+        // 当前工序的下一个工序作业信息
+        String nextprocessid = currentProcessOperationMainDo.getNextprocessid();
+        log.debug("当前工序的下一个工序:{}", nextprocessid);
+        // 当前工序存在下一个工序且 存在代加工的在制品信息时
+        if (!toBeProcessedDataMap.isEmpty() && StringUtils.isNotBlank(nextprocessid)) {
+            log.debug("更新剩余代报工卷数和待开工卷数");
+            List<ApsProcessOperationDo> nextProcessOperations = apsProcessOperationService.list(new LambdaQueryWrapper<ApsProcessOperationDo>()
+                    .in(ApsProcessOperationDo::getId, Arrays.asList(nextprocessid.split(",")))
+                    .in(ApsProcessOperationDo::getPlaninputid, toBeProcessedDataMap.keySet())
+                    .eq(BaseDo::getDeleted, NO_DELETED));
+            if (nextProcessOperations.isEmpty()) {
+                log.error("无法获取对应输出物料:{}的工序作业信息", toBeProcessedDataMap.keySet());
+                throw new CustomException("未找到下一个工序作业信息!");
+            }
+            String nextProcessesIds = currentProcessOperationEqu.getNextprocessesids();
+            if (StringUtils.isBlank(nextProcessesIds)) {
+                log.error("当前工序作业明细需要流转的下一个工序作业明细为空");
+                throw new CustomException("无法找到下一个工序作业明细");
+            }
+            List<ApsProcessOperationProcessEquDo> nextProcessOperationProcessEquDos = apsProcessOperationProcessEquService.list(new LambdaQueryWrapper<ApsProcessOperationProcessEquDo>()
+                    .in(ApsProcessOperationProcessEquDo::getId, Arrays.asList(nextProcessesIds.split(",")))
+                    .eq(BaseDo::getDeleted, NO_DELETED));
+            List<ApsProcessOperationDo> updateProcessData = new ArrayList<>();
+            List<ApsProcessOperationProcessEquDo> updateProcessEquData = new ArrayList<>();
+            ApsProcessOperationDo apsProcessOperationDo;
+            ApsProcessOperationProcessEquDo apsProcessOperationProcessEquDo;
+            for (ApsProcessOperationDo data : nextProcessOperations) {
+                if (toBeProcessedDataMap.containsKey(data.getPlaninputid())) {
+                    String oldNums = data.getBachmaterialprocess();
+                    List<String> strings = toBeProcessedDataMap.get(data.getPlaninputid());
+                    apsProcessOperationDo = new ApsProcessOperationDo();
+                    // 更新ID
+                    apsProcessOperationDo.setId(data.getId());
+                    apsProcessOperationDo.setBachmaterialprocess(strAppendListConvertStr(oldNums, strings));
+                    // 更新剩余待报工卷数
+                    apsProcessOperationDo.setLeavewaitjobroll(data.getLeavewaitjobroll() + strings.size());
+                    // 更新剩余待开工卷数
+                    apsProcessOperationDo.setLeavewaitworkroll(data.getLeavewaitworkroll() + strings.size());
+                    apsProcessOperationDo.setModifydate(new Date());
+                    apsProcessOperationDo.setBachmaterialprocess(strAppendListConvertStr(data.getBachmaterialprocess(), strings));
+                    updateProcessData.add(apsProcessOperationDo);
+                    for (ApsProcessOperationProcessEquDo equ : nextProcessOperationProcessEquDos) {
+                        if (data.getId().equals(equ.getProcessid())) {
+                            apsProcessOperationProcessEquDo = new ApsProcessOperationProcessEquDo();
+                            apsProcessOperationProcessEquDo.setId(equ.getId());
+                            apsProcessOperationProcessEquDo.setBachmaterialprocess(strAppendListConvertStr(equ.getBachmaterialprocess(), strings));
+                            apsProcessOperationProcessEquDo.setModifydate(new Date());
+                            updateProcessEquData.add(apsProcessOperationProcessEquDo);
+                        }
+                    }
+                }
+            }
+            // 保存工序作业明细信息
+            if (!updateProcessData.isEmpty()) {
+                log.debug("开始更新工序作业信息");
+                apsProcessOperationService.saveOrUpdateBatch(updateProcessData);
+            }
+            if (!updateProcessEquData.isEmpty()) {
+                log.debug("开始更新工序作业明细信息");
+                apsProcessOperationProcessEquService.saveOrUpdateBatch(updateProcessEquData);
+            }
+        }
+
+        log.info("开始更新在制品和工序作业输出物料信息");
+        // 保存在制品
+        apsWorkInProgressInventoryService.saveOrUpdateBatch(apsWorkInProgressInventoryDos);
+        // 保存工序作业输出物料
+        apsProcessOperationOutMaterService.saveOrUpdateBatch(operationOutMaterDoList);
+
+        int unqualifiedCount = (int) reportOutputDos.stream().filter(info -> NO.equals(info.getQualified())).count();
+        if (unqualifiedCount > 0) {
+            CancelProcessOperationVo cancelProcessOperationVo = new CancelProcessOperationVo();
+            cancelProcessOperationVo.setCraftrouteid(null);
+            cancelProcessOperationVo.setCurcancelroll(unqualifiedCount);
+            cancelProcessOperationVo.setApsprocessoperationdo(currentProcessOperationMainDo);
+            cancelProcessOperationVo.setSetcancelroll(false);
+            apsProcessOperationService.cancelProcessOperation(cancelProcessOperationVo);
+        }
+        log.info("更新工序作业的输出物料和在制品相关信息结束");
+        return;
+//        // 对不合格的报工输出物料信息安装数据分组
+//        Map<String, List<ApsReportOutputDo>> unqualifiedMap = reportOutputDos.stream()
+//                .filter(info -> NO.equals(info.getQualified()))
+//                .collect(Collectors.groupingBy(ApsReportOutputDo::getOutputid));
+//        unqualifiedMap.forEach((k, v) -> {
+//            // 获取报工记录对应的输出物料
+//            ApsProcessOperationOutMaterDo apsProcessOperationOutMaterDo = operationOutMaterDoList.stream()
+//                    .filter(materDo -> materDo.getId().equals(k)).findFirst().get();
+//            // 待分配取消卷数
+//            int toBeAllocatedCancelRollNum = v.size();
+//            // 本次成品取消卷数
+//            int finishProductCancelRollNum = 0;
+//            // 本次流转取消卷数
+//            int circulationCancelRollNum = 0;
+//            // 备料取消卷数
+//            int materialPreparationCancelRollNum = 0;
+//            // 更新备料已取消卷数
+//            materialPreparationCancelRollNum = checkAndSet(apsProcessOperationOutMaterDo, ApsProcessOperationOutMaterDo::getStockleaveoutroll,
+//                    toBeAllocatedCancelRollNum);
+//            // 待分配取消卷数 = 待分配取消卷数- 备料已取消卷数
+//            toBeAllocatedCancelRollNum = toBeAllocatedCancelRollNum - apsProcessOperationOutMaterDo.getStockcancelroll();
+//
+//            if (toBeAllocatedCancelRollNum > 0) {
+//                // 更新备料流转剩余需输出卷数
+//                circulationCancelRollNum = checkAndSet(apsProcessOperationOutMaterDo, ApsProcessOperationOutMaterDo::getMoveleaveoutroll,
+//                        toBeAllocatedCancelRollNum);
+//                // 待分配取消卷数 = 待分配取消卷数- 备料已取消卷数
+//                toBeAllocatedCancelRollNum = toBeAllocatedCancelRollNum - apsProcessOperationOutMaterDo.getStockcancelroll();
+//            }
+//            if (toBeAllocatedCancelRollNum > 0) {
+//                // 成品已取消卷数
+//                finishProductCancelRollNum = checkAndSet(apsProcessOperationOutMaterDo, ApsProcessOperationOutMaterDo::getProdleaveoutroll,
+//                        toBeAllocatedCancelRollNum);
+//            }
+//            /**
+//             * •成品已取消卷数=成品已取消卷数+本次成品取消卷数
+//             * •成品剩余需输出卷数=成品剩余需输出卷数-本次成品取消卷数;
+//             *
+//             * •备料已取消卷数=备料已取消卷数+本次备料取消卷数
+//             * •备料剩余需输出卷数=备料剩余需输出卷数-本次备料取消卷数;
+//             *
+//             * •流转已取消卷数=流转已取消卷数+本次流转取消卷数
+//             * •流转剩余需输出卷数=流转剩余需输出卷数-本次流转取消卷数;
+//             */
+//            calculateAboutRollNum(apsProcessOperationOutMaterDo, ApsProcessOperationOutMaterDo::getProdcancelroll,
+//                    ApsProcessOperationOutMaterDo::setProdcancelroll, finishProductCancelRollNum);
+//            calculateAboutRollNum(apsProcessOperationOutMaterDo, ApsProcessOperationOutMaterDo::getProdleaveoutroll,
+//                    ApsProcessOperationOutMaterDo::setProdleaveoutroll, -finishProductCancelRollNum);
+//
+//            calculateAboutRollNum(apsProcessOperationOutMaterDo, ApsProcessOperationOutMaterDo::getStockcancelroll,
+//                    ApsProcessOperationOutMaterDo::setStockcancelroll, materialPreparationCancelRollNum);
+//            calculateAboutRollNum(apsProcessOperationOutMaterDo, ApsProcessOperationOutMaterDo::getStockleaveoutroll,
+//                    ApsProcessOperationOutMaterDo::setStockleaveoutroll, -materialPreparationCancelRollNum);
+//
+//            calculateAboutRollNum(apsProcessOperationOutMaterDo, ApsProcessOperationOutMaterDo::getMovecancelroll,
+//                    ApsProcessOperationOutMaterDo::setMovecancelroll, circulationCancelRollNum);
+//            calculateAboutRollNum(apsProcessOperationOutMaterDo, ApsProcessOperationOutMaterDo::getMoveleaveoutroll,
+//                    ApsProcessOperationOutMaterDo::setMoveleaveoutroll, -circulationCancelRollNum);
+//            if(circulationCancelRollNum>0){
+//
+//            }
+//        });
+
+    }
+
+    /**
+     * 设置值
+     *
+     * @param materDo
+     * @param getPojoData
+     * @param toBeAllocatedCancelRollNum
+     * @return
+     */
+    public int checkAndSet(ApsProcessOperationOutMaterDo materDo,
+                           Function<ApsProcessOperationOutMaterDo, Integer> getPojoData,
+                           int toBeAllocatedCancelRollNum) {
+        Integer compareA = getPojoData.apply(materDo);
+        if (compareA >= toBeAllocatedCancelRollNum) {
+            return toBeAllocatedCancelRollNum;
+        } else {
+            return compareA;
+        }
+    }
+
+    /**
+     * 计算相关卷数
+     *
+     * @param materDo
+     * @param getPojoData
+     * @param setPojoData
+     * @param changeRollNum
+     * @return
+     */
+    public void calculateAboutRollNum(ApsProcessOperationOutMaterDo materDo,
+                                      Function<ApsProcessOperationOutMaterDo, Integer> getPojoData,
+                                      BiConsumer<ApsProcessOperationOutMaterDo, Integer> setPojoData,
+                                      int changeRollNum) {
+        setPojoData.accept(materDo, getPojoData.apply(materDo) + changeRollNum);
+    }
+
+    /**
+     * str 拼接List 转str
+     *
+     * @param oldValue
+     * @param newValues
+     * @return
+     */
+    public String strAppendListConvertStr(String oldValue, List<String> newValues) {
+        if (StringUtils.isBlank(oldValue) && (newValues == null || newValues.isEmpty())) {
+            return "";
+        }
+        if (oldValue == null) {
+            oldValue = "";
+        }
+        List<String> oldValues = new ArrayList<>(Arrays.asList(oldValue.split(",")));
+        oldValues.addAll(newValues);
+        return oldValues.stream().distinct().filter(StringUtils::isNotBlank).collect(Collectors.joining(","));
     }
 
     /**

+ 1 - 1
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/domain/ApsBlankOrderHistoryDo.java

@@ -230,6 +230,6 @@ public class ApsBlankOrderHistoryDo extends BaseDo {
      * 最大装炉卷数
      */
     @TableField(value = "MAXHEATROLL")
-    private String maxheatroll;
+    private Integer maxheatroll;
 
 }

+ 2 - 0
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/vo/CancelProcessOperationVo.java

@@ -9,6 +9,8 @@ public class CancelProcessOperationVo {
     private String craftrouteid;
     //本次取消卷数
     private Integer curcancelroll;
+    //是否更新已取消卷数
+    private Boolean setcancelroll = true;
     //修改的作业
     private ApsProcessOperationDo apsprocessoperationdo;
 }

+ 1 - 1
cx-aps/cx-aps-server/src/main/java/com/rongwei/ApsBusinessServerApplication.java

@@ -11,7 +11,7 @@ import org.springframework.scheduling.annotation.EnableAsync;
 @SpringBootApplication
 @EnableDiscoveryClient
 @EnableFeignClients
-@MapperScan("com.rongwei.*.*.dao")
+@MapperScan({"com.rongwei.*.*.dao", "com.rongwei.*.*.*.dao"})
 public class ApsBusinessServerApplication {
 
     public static void main(String[] args) {

+ 2 - 0
cx-aps/cx-aps-server/src/main/resources/bootstrap.yml

@@ -1,4 +1,6 @@
 spring:
+  main:
+    allow-bean-definition-overriding: true
   profiles:
     active: dev
   application: