DLC 1 vuosi sitten
vanhempi
commit
cee14b56f1

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

@@ -2,9 +2,10 @@ package com.rongwei.bscommon.sys.service;
 
 import com.rongwei.bsentity.domain.ApsProcessOperationDo;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.rongwei.bsentity.domain.ApsProcessOperationOutMaterDo;
 import com.rongwei.rwcommon.base.R;
 
-import javax.servlet.http.HttpServletRequest;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -29,4 +30,10 @@ public interface ApsProcessOperationService extends IService<ApsProcessOperation
 
 
     R checkOperation(Map<String, Object> params);
+
+
+    /*
+    更新后面所有工序信息
+     */
+    List<ApsProcessOperationOutMaterDo> resetProcessOperation(List<ApsProcessOperationOutMaterDo> apsProcessOperationOutMaterDoList);
 }

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

@@ -243,9 +243,10 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                             String outputMeter = getOutMeterInfo(outProducttype, outMeter, outMetalstate, tval, wval, lval, apsProcessOperationOutMaterDo.getThickoffset(), apsProcessOperationOutMaterDo.getWidthoffset(), apsProcessOperationOutMaterDo.getLengthoffset()) + singlerollweight + UNIT_MAP.getOrDefault(blanckdata.getStr("NUMBERUNIT"), "");
                             apsProcessOperationOutMaterDo.setOutputmaterial(outputMeter + "*" + blanckdata.getInt("ROLLNUM") + "卷");
                             apsProcessOperationDo.setPlanoutput("[1]" + outputMeter + "*" + blanckdata.getInt("ROLLNUM") + "卷");
-                            //输出成品 没有后道工序作业,则自动填入=“{输出物料的输入物料描述} * {计划成品卷数}卷”
+                            //输出成品
                             String outputfinishproduct = "";
                             if (StringUtils.isBlank(apsCraftRouteStepDo1.getNextstepid())) {
+                                //如果没有后道工序作业,则自动填入=“{输出物料的输入物料描述} * {计划输出卷数 - 计划备料卷数}卷”
                                 outputfinishproduct = getInMeterInfo(outProducttype, outMeter, outMetalstate, tval, wval, lval) + "* " + blanckdata.getInt("ROLLNUM") + "卷";
                             }
                             apsProcessOperationOutMaterDo.setOutputfinishproduct(outputfinishproduct);
@@ -369,9 +370,10 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                         String outputMeter = getOutMeterInfo(outProducttype, outMeter, outMetalstate, tval, wval, lval, apsProcessOperationOutMaterDo.getThickoffset(), apsProcessOperationOutMaterDo.getWidthoffset(), apsProcessOperationOutMaterDo.getLengthoffset()) + singlerollweight + UNIT_MAP.getOrDefault(blanckdata.getStr("NUMBERUNIT"), "");
                         apsProcessOperationOutMaterDo.setOutputmaterial(outputMeter + "*" + blanckdata.getInt("ROLLNUM") + "卷");
                         apsProcessOperationDo.setPlanoutput("[1]" + outputMeter + "*" + blanckdata.getInt("ROLLNUM") + "卷");
-                        //输出成品 没有后道工序作业,则自动填入=“{输出物料的输入物料描述} * {计划成品卷数}卷”
+                        //输出成品
                         String outputfinishproduct = "";
                         if (StringUtils.isBlank(apsCraftRouteStepDo.getNextstepid())) {
+                            //如果没有后道工序作业,则自动填入=“{输出物料的输入物料描述} * {计划输出卷数 - 计划备料卷数}卷”
                             outputfinishproduct = getInMeterInfo(outProducttype, outMeter, outMetalstate, tval, wval, lval) + "* " + blanckdata.getInt("ROLLNUM") + "卷";
                         }
                         apsProcessOperationOutMaterDo.setOutputfinishproduct(outputfinishproduct);
@@ -521,6 +523,122 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
 
     }
 
+
+    /*
+    更新后面所有工序信息
+     */
+    @Override
+    public List<ApsProcessOperationOutMaterDo> resetProcessOperation(List<ApsProcessOperationOutMaterDo> apsProcessOperationOutMaterDoList) {
+        List<ApsProcessOperationOutMaterDo> operationOutMaterDos = new ArrayList<>();//递归的数据源
+        try {
+            List<ApsProcessOperationDo> apsProcessOperationDoList = new ArrayList<>();
+            List<ApsProcessOperationOutMaterDo> apsProcessOperationOutMaterDoNewList = new ArrayList<>();
+            for (ApsProcessOperationOutMaterDo apsProcessOperationOutMaterDo : apsProcessOperationOutMaterDoList) {
+                //这个输出的所有下道工序
+                Map<String, Object> map = new HashMap<>();
+                map.put("PLANINPUTID", apsProcessOperationOutMaterDo.getId());
+                List<ApsProcessOperationDo> apsProcessOperationDos = apsProcessOperationService.listByMap(map).stream().collect(Collectors.toList());
+                for (ApsProcessOperationDo apsProcessOperationDo : apsProcessOperationDos) {
+                    //更新输入
+                    apsProcessOperationDo.setProducttypeid(apsProcessOperationOutMaterDo.getProducttypeid());
+                    apsProcessOperationDo.setProducttype(apsProcessOperationOutMaterDo.getProducttype());
+                    apsProcessOperationDo.setMetal(apsProcessOperationOutMaterDo.getMetal());
+                    apsProcessOperationDo.setMetalstate(apsProcessOperationOutMaterDo.getMetalstate());
+                    apsProcessOperationDo.setThickness(apsProcessOperationOutMaterDo.getThickness());
+                    apsProcessOperationDo.setProwidth(apsProcessOperationOutMaterDo.getProwidth());
+                    apsProcessOperationDo.setProlength(apsProcessOperationOutMaterDo.getProlength());
+                    apsProcessOperationDo.setSinglerollweight(apsProcessOperationOutMaterDo.getSinglerollweight());
+                    Integer planinrall = apsProcessOperationOutMaterDo.getPlanrollnum() - apsProcessOperationOutMaterDo.getPlanstockrollnum() - apsProcessOperationOutMaterDo.getPlanprodrollnum();
+                    apsProcessOperationDo.setPlaninrall(planinrall);
+                    apsProcessOperationDo.setPlanprocessrall(planinrall);
+                    String meterInput = getInMeterInfo(apsProcessOperationOutMaterDo.getProducttype(), apsProcessOperationOutMaterDo.getMetal(), apsProcessOperationOutMaterDo.getMetalstate(), apsProcessOperationOutMaterDo.getThickness(), apsProcessOperationOutMaterDo.getProwidth(), apsProcessOperationOutMaterDo.getProlength());
+                    apsProcessOperationDo.setPlaninput(meterInput + apsProcessOperationOutMaterDo.getSinglerollweight() + UNIT_MAP.getOrDefault(apsProcessOperationOutMaterDo.getNumunit(), ""));
+
+                    //输出
+                    Map<String, Object> outmap = new HashMap<>();
+                    outmap.put("MAINID", apsProcessOperationDo.getId());
+                    List<ApsProcessOperationOutMaterDo> apsProcessOperationOutMaterDoList1 = apsProcessOperationOutMaterService.listByMap(outmap).stream().collect(Collectors.toList());
+                    List<String> planoutputList = new ArrayList<>();
+                    for (ApsProcessOperationOutMaterDo apsProcessOperationOutMaterDo1 : apsProcessOperationOutMaterDoList1) {
+                        if (StringUtils.isBlank(apsProcessOperationOutMaterDo1.getProducttypeid())) {
+                            apsProcessOperationOutMaterDo1.setProducttypeid(apsProcessOperationOutMaterDo.getProducttypeid());
+                        }
+                        String outProducttype = apsProcessOperationOutMaterDo1.getProducttype();
+                        if (StringUtils.isBlank(outProducttype)) {
+                            outProducttype = apsProcessOperationOutMaterDo.getProducttype();
+                            apsProcessOperationOutMaterDo1.setProducttype(outProducttype);
+                        }
+                        String outMeter = apsProcessOperationOutMaterDo1.getMetal();
+                        if (StringUtils.isBlank(outMeter)) {
+                            outMeter = apsProcessOperationOutMaterDo.getMetal();
+                            apsProcessOperationOutMaterDo1.setMetal(outMeter);
+                        }
+                        String outMetalstate = apsProcessOperationOutMaterDo1.getMetalstate();
+                        if (StringUtils.isBlank(outMetalstate)) {
+                            outMetalstate = apsProcessOperationOutMaterDo.getMetalstate();
+                            apsProcessOperationOutMaterDo1.setMetalstate(outMetalstate);
+                        }
+                        BigDecimal tval = changeSize(apsProcessOperationOutMaterDo.getThickness(), apsProcessOperationOutMaterDo1.getThickrule(), apsProcessOperationOutMaterDo1.getThickchange());
+                        apsProcessOperationOutMaterDo1.setThickness(tval);
+                        BigDecimal wval = changeSize(apsProcessOperationOutMaterDo.getProwidth(), apsProcessOperationOutMaterDo1.getWidthrule(), apsProcessOperationOutMaterDo1.getWidthchange());
+                        apsProcessOperationOutMaterDo1.setProwidth(wval);
+                        BigDecimal lval = changeSize(apsProcessOperationOutMaterDo.getProlength(), apsProcessOperationOutMaterDo1.getLengthrule(), apsProcessOperationOutMaterDo1.getLengthchange());
+                        apsProcessOperationOutMaterDo1.setProlength(lval);
+                        apsProcessOperationOutMaterDo1.setPlanrollnum(planinrall * apsProcessOperationOutMaterDo1.getOutval());
+                        //输入物料的输入单卷重*该输出物料的宽度/输入物料的宽度/该输出物料的单卷输出数量
+                        String singlerollweight = df.format(apsProcessOperationOutMaterDo.getSinglerollweight().multiply(wval == null ? BigDecimal.valueOf(1) : wval).divide(apsProcessOperationOutMaterDo.getProwidth() == null ? BigDecimal.valueOf(1) : apsProcessOperationOutMaterDo.getProwidth(), 2, BigDecimal.ROUND_HALF_UP));
+                        apsProcessOperationOutMaterDo1.setSinglerollweight(new BigDecimal(singlerollweight));
+                        //输出物料
+                        String outputMeter = getOutMeterInfo(outProducttype, outMeter, outMetalstate, tval, wval, lval, apsProcessOperationOutMaterDo1.getThickoffset(), apsProcessOperationOutMaterDo1.getWidthoffset(), apsProcessOperationOutMaterDo.getLengthoffset()) + singlerollweight + UNIT_MAP.getOrDefault(apsProcessOperationDo.getNumunit(), "");
+                        apsProcessOperationOutMaterDo1.setOutputmaterial(outputMeter + "*" + (planinrall * apsProcessOperationOutMaterDo1.getOutval()) + "卷");
+                        planoutputList.add(outputMeter + "*" + (planinrall * apsProcessOperationOutMaterDo1.getOutval()) + "卷");
+                        apsProcessOperationOutMaterDo1.setOutmaterrequest(outputMeter);
+                        //输出成品 没有后道工序作业,则自动填入=“{输出物料的输入物料描述} * {计划成品卷数}卷”
+                        String outputfinishproduct = "";
+                        if (StringUtils.isBlank(apsProcessOperationDo.getNextprocessid())) {
+                            //没有后道工序作业,则自动填入=“{输出物料的输入物料描述} * {计划成品卷数}卷”
+                            outputfinishproduct = getInMeterInfo(outProducttype, outMeter, outMetalstate, tval, wval, lval) + "* " + ((planinrall * apsProcessOperationOutMaterDo1.getOutval()) - apsProcessOperationOutMaterDo1.getPlanstockrollnum()) + "卷";
+                        }
+                        if (StringUtils.isNotBlank(apsProcessOperationDo.getNextprocessid()) && apsProcessOperationOutMaterDo1.getPlanprodrollnum() > 0) {
+                            //如果有后道工序作业,并且计划成品卷数>0,则自动填入=“{输出物料的输入物料描述} * {计划成品卷数}卷”
+                            outputfinishproduct = getInMeterInfo(outProducttype, outMeter, outMetalstate, tval, wval, lval) + "* " + apsProcessOperationOutMaterDo1.getPlanprodrollnum() + "卷";
+                        }
+                        apsProcessOperationOutMaterDo.setOutputfinishproduct(outputfinishproduct);
+
+                        apsProcessOperationOutMaterDoNewList.add(apsProcessOperationOutMaterDo);
+                        if (StringUtils.isNotBlank(apsProcessOperationDo.getNextprocessid())) {
+                            operationOutMaterDos.add(apsProcessOperationOutMaterDo);
+                        }
+                    }
+
+                    StringBuffer planoutsb = new StringBuffer();
+                    Collections.sort(planoutputList);
+                    Integer outIndex = 1;
+                    for (String planout : planoutputList) {
+                        planoutsb.append("[" + outIndex + "]" + planout + "/n");
+                        outIndex++;
+                    }
+                    apsProcessOperationDo.setPlanoutput(planoutsb.toString());
+
+                    apsProcessOperationDoList.add(apsProcessOperationDo);
+                }
+            }
+
+            boolean bool1 = apsProcessOperationService.saveOrUpdateBatch(apsProcessOperationDoList);
+            boolean bool2 = apsProcessOperationOutMaterService.saveOrUpdateBatch(apsProcessOperationOutMaterDoNewList);
+            if (bool1 && bool2) {
+                return  operationOutMaterDos;
+            } else {
+                log.info("更新后面所有工序信息异常");
+                return null;
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            log.info("更新后面所有工序信息异常");
+            return null;
+        }
+    }
+
     /*
     工艺步骤管理/输入物料描述
      */

+ 21 - 0
cx-aps/cx-aps-server/src/main/java/com/rongwei/bsserver/controller/ApsProcessOperationController.java

@@ -2,6 +2,7 @@ package com.rongwei.bsserver.controller;
 
 
 import com.rongwei.bscommon.sys.service.ApsProcessOperationService;
+import com.rongwei.bsentity.domain.ApsProcessOperationOutMaterDo;
 import com.rongwei.rwcommon.base.R;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -10,6 +11,7 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -72,5 +74,24 @@ public class ApsProcessOperationController {
             return R.error("请检查工序作业详情");
         }
     }
+
+    /*
+    更新后面所有工序信息
+     */
+    @PostMapping("/resetProcessOperation")
+    public R resetProcessOperation(@RequestBody List<ApsProcessOperationOutMaterDo> apsProcessOperationOutMaterDoList) {
+        try {
+            log.info("更新后面所有工序信息;参数为:{}", apsProcessOperationOutMaterDoList);
+            List<ApsProcessOperationOutMaterDo> resData = apsProcessOperationService.resetProcessOperation(apsProcessOperationOutMaterDoList);
+            if (resData != null && resData.size() > 0) {
+                resetProcessOperation(resData);
+            }
+            return R.ok();
+        } catch (Exception e) {
+            e.printStackTrace();
+            log.info("更新后面所有工序信息异常:" + e.getMessage());
+            return R.error("更新后面所有工序信息异常:" + e.getMessage());
+        }
+    }
 }