Browse Source

工艺路线复制

DLC 1 year ago
parent
commit
75e78ff847

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

@@ -2,10 +2,14 @@ package com.rongwei.bscommon.sys.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.rongwei.bsentity.domain.ApsCraftRouteDo;
+import com.rongwei.rwcommon.base.R;
+
+import java.util.Map;
 
 /**
  *
  */
 public interface ApsCraftRouteService extends IService<ApsCraftRouteDo> {
 
+    R copyCraftRoute(Map<String, Object> params);
 }

+ 122 - 0
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsCraftRouteServiceImpl.java

@@ -1,12 +1,33 @@
 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.ApsCraftRouteDao;
+import com.rongwei.bscommon.sys.service.ApsCraftRouteOutMaterRequestService;
 import com.rongwei.bscommon.sys.service.ApsCraftRouteService;
+import com.rongwei.bscommon.sys.service.ApsCraftRouteStepEquService;
+import com.rongwei.bscommon.sys.service.ApsCraftRouteStepService;
 import com.rongwei.bsentity.domain.ApsCraftRouteDo;
+import com.rongwei.bsentity.domain.ApsCraftRouteOutMaterRequestDo;
+import com.rongwei.bsentity.domain.ApsCraftRouteStepDo;
+import com.rongwei.bsentity.domain.ApsCraftRouteStepEquDo;
+import com.rongwei.bsentity.vo.PreviousProcessVo;
+import com.rongwei.commonservice.serial.service.impl.SysSerialNumberServiceImpl;
+import com.rongwei.commonservice.service.SysMindMappingService;
+import com.rongwei.rwcommon.base.R;
+import com.rongwei.rwcommon.utils.SecurityUtil;
+import com.rongwei.rwcommon.utils.StringUtils;
+import com.rongwei.rwcommonentity.commonservers.domain.SysMindMappingDo;
+import com.rongwei.rwcommonentity.commonservers.vo.SysSerialVo;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.*;
+import java.util.stream.Collectors;
+
 /**
  *
  */
@@ -14,6 +35,107 @@ import org.springframework.stereotype.Service;
 public class ApsCraftRouteServiceImpl extends ServiceImpl<ApsCraftRouteDao, ApsCraftRouteDo>
         implements ApsCraftRouteService {
 
+    @Autowired
+    private ApsCraftRouteService apsCraftRouteService;
+
+    @Autowired
+    private ApsCraftRouteStepService apsCraftRouteStepService;
+
+    @Autowired
+    private ApsCraftRouteOutMaterRequestService apsCraftRouteOutMaterRequestService;
+
+    @Autowired
+    private ApsCraftRouteStepEquService apsCraftRouteStepEquService;
+
+    @Autowired
+    SysMindMappingService sysMindMappingService;
+
+    @Autowired
+    private SysSerialNumberServiceImpl sysSerialNumberService;
+
+    /*
+    复制工艺路线
+     */
+    @Override
+    public R copyCraftRoute(Map<String, Object> params) {
+        String craftrouteid = params.get("CRAFTROUTEID").toString();
+        String newRouteId = SecurityUtil.getUUID();
+        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
+        LocalDateTime now = LocalDateTime.now();
+        //流水号
+        SysSerialVo sysSerialVo = new SysSerialVo();
+        sysSerialVo.setRuleTemplateStr("GL@{date:yyyyMMdd}@{serialNumber:#0000}");
+        sysSerialVo.setModulecode("aps_craft_route_ROUTENUM");
+        sysSerialVo.setResetrule("date:yyyyMMdd");
+        sysSerialVo.setIfautomaticreset("y");
+
+        //原工艺路线-->新工艺路线
+        ApsCraftRouteDo newCraftRouteDo = apsCraftRouteService.getById(craftrouteid);
+        newCraftRouteDo.setId(newRouteId);
+        newCraftRouteDo.setRoutename(newCraftRouteDo.getRoutename() + "-" + now.format(dateTimeFormatter));
+        newCraftRouteDo.setRoutenum(sysSerialNumberService.getCodeByTemplate(sysSerialVo));
+
+        //工艺路线对应的步骤信息
+        Map<String, Object> map = new HashMap<>();
+        map.put("CRAFTROUTEID", craftrouteid);
+        List<ApsCraftRouteStepDo> apsCraftRouteStepDoList = apsCraftRouteStepService.listByMap(map).stream().collect(Collectors.toList());
+        Collections.sort(apsCraftRouteStepDoList, Comparator.comparingInt(ApsCraftRouteStepDo::getLevel));
+        Collections.sort(apsCraftRouteStepDoList, Comparator.comparing(ApsCraftRouteStepDo::getCreatedate));
+
+        //工艺路线对应的输出
+        List<ApsCraftRouteOutMaterRequestDo> apsCraftRouteOutMaterRequestDoList = apsCraftRouteOutMaterRequestService.listByMap(map).stream().collect(Collectors.toList());
+
+        //工艺路线对应的可选设备
+        List<ApsCraftRouteStepEquDo> apsCraftRouteStepEquDoList = apsCraftRouteStepEquService.listByMap(map).stream().collect(Collectors.toList());
+
+        //工艺路线对应的思维导图
+        List<SysMindMappingDo> sysMindMappingDos = new ArrayList<>();
+        Map<String, Object> mindMap = new HashMap<>();
+        mindMap.put("BSID", craftrouteid);
+        List<SysMindMappingDo> sysMindMappingDoList = sysMindMappingService.listByMap(mindMap).stream().collect(Collectors.toList());
+        Collections.sort(sysMindMappingDoList, Comparator.comparing(SysMindMappingDo::getTreecode, Comparator.nullsFirst(Comparator.naturalOrder())));
+        Collections.sort(sysMindMappingDoList, Comparator.comparing(SysMindMappingDo::getCreatedate));
+        if (sysMindMappingDoList.size() == 0) {
+            return R.error("工艺路线图不存在");
+        }
+        SysMindMappingDo sysMindMappingDo = BeanUtil.toBean(sysMindMappingDoList.get(0), SysMindMappingDo.class);
+        String mindStrId = SecurityUtil.getUUID();
+        sysMindMappingDo.setId(mindStrId);
+        sysMindMappingDo.setBsid(newRouteId);
+        sysMindMappingDos.add(sysMindMappingDo);
+
+        List<String> overRouteStepIds = new ArrayList<>();
+        List<PreviousProcessVo> newProcessIds = new ArrayList<>();//前道步骤信息
+        List<ApsCraftRouteStepDo> apsCraftRouteStepDos = new ArrayList<>();//新的步骤
+        List<ApsCraftRouteOutMaterRequestDo> apsCraftRouteOutMaterRequestDos = new ArrayList<>();//新的输出
+        List<ApsCraftRouteStepEquDo> apsCraftRouteStepEquDos = new ArrayList<>();//新的可选设备
+        for (ApsCraftRouteStepDo apsCraftRouteStepDo : apsCraftRouteStepDoList) {
+            if (overRouteStepIds.contains(apsCraftRouteStepDo.getId())) {
+                continue;
+            } else {
+                String stepId;
+                ApsCraftRouteStepDo craftRouteStepDo = apsCraftRouteStepDo;
+                PreviousProcessVo previousProcessVo;
+                if (StringUtils.isNotBlank(apsCraftRouteStepDo.getPreviousstepid())) {
+                    //后面步骤
+                } else {
+                    //首道步骤
+                    previousProcessVo = new PreviousProcessVo();
+                    stepId = SecurityUtil.getUUID();
+                    craftRouteStepDo.setId(stepId);
+                    craftRouteStepDo.setCraftrouteid(newRouteId);
+
+                    //本道步骤信息
+                    previousProcessVo.setProcessId(stepId);//新步骤ID
+                    previousProcessVo.setPreviousstepid(apsCraftRouteStepDo.getId());//原步骤ID
+                }
+            }
+        }
+
+//        boolean bool1=apsCraftRouteService.save(newCraftRouteDo);
+
+        return R.ok(newRouteId);
+    }
 }
 
 

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

@@ -137,6 +137,12 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
             Collections.sort(apsCraftRouteStepDoList, Comparator.comparingInt(ApsCraftRouteStepDo::getLevel));
             Collections.sort(apsCraftRouteStepDoList, Comparator.comparing(ApsCraftRouteStepDo::getCreatedate));
 
+            //工艺路线对应的输出
+            List<ApsCraftRouteOutMaterRequestDo> apsCraftRouteOutMaterRequestDoList = apsCraftRouteOutMaterRequestService.listByMap(map).stream().collect(Collectors.toList());
+
+            //工艺路线对应的可选设备
+            List<ApsCraftRouteStepEquDo> apsCraftRouteStepEquDoList = apsCraftRouteStepEquService.listByMap(map).stream().collect(Collectors.toList());
+
             //工艺路线对应的思维导图
             List<SysMindMappingDo> sysMindMappingDos = new ArrayList<>();
             Map<String, Object> mindMap = new HashMap<>();
@@ -226,8 +232,7 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                             previousProcessVo.setPlanprocessrall(apsProcessOperationDo.getPlanprocessrall());
 
                             //本道工序的输出
-                            map.put("CRAFTSTEPID", apsCraftRouteStepDo1.getId());
-                            List<ApsCraftRouteOutMaterRequestDo> apsCraftRouteOutMaterRequestDo = apsCraftRouteOutMaterRequestService.listByMap(map).stream().collect(Collectors.toList());
+                            List<ApsCraftRouteOutMaterRequestDo> apsCraftRouteOutMaterRequestDo = apsCraftRouteOutMaterRequestDoList.stream().filter(omd -> apsCraftRouteStepDo1.getId().equals(omd.getCraftstepid())).collect(Collectors.toList());
                             if (apsCraftRouteOutMaterRequestDo.size() == 0) {
                                 return R.error("工艺步骤" + apsCraftRouteStepDo1.getProcessname() + "没输出");
                             }
@@ -292,7 +297,7 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
 
 
                             //本道工序的可选设备
-                            List<ApsCraftRouteStepEquDo> apsCraftRouteStepEquDos = apsCraftRouteStepEquService.listByMap(map).stream().collect(Collectors.toList());
+                            List<ApsCraftRouteStepEquDo> apsCraftRouteStepEquDos = apsCraftRouteStepEquDoList.stream().filter(crse -> apsCraftRouteStepDo1.getId().equals(crse.getCraftstepid())).collect(Collectors.toList());
                             List<String> equIdList = new ArrayList<>();//设备
                             List<String> equGroupIdList = new ArrayList<>();//资源组
                             for (ApsCraftRouteStepEquDo apsCraftRouteStepEquDo : apsCraftRouteStepEquDos) {
@@ -365,8 +370,7 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                         previousProcessVo.setPlanprocessrall(blanckdata.getInt("ROLLNUM"));
 
                         //本道工序的输出
-                        map.put("CRAFTSTEPID", apsCraftRouteStepDo.getId());
-                        List<ApsCraftRouteOutMaterRequestDo> apsCraftRouteOutMaterRequestDo = apsCraftRouteOutMaterRequestService.listByMap(map).stream().collect(Collectors.toList());
+                        List<ApsCraftRouteOutMaterRequestDo> apsCraftRouteOutMaterRequestDo = apsCraftRouteOutMaterRequestDoList.stream().filter(omd -> apsCraftRouteStepDo.getId().equals(omd.getCraftstepid())).collect(Collectors.toList());
                         if (apsCraftRouteOutMaterRequestDo.size() == 0) {
                             return R.error("工艺步骤" + apsCraftRouteStepDo.getProcessname() + "没输出");
                         }
@@ -431,7 +435,7 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                         previousProcessVo.setApsProcessOperationOutMaterDo(apsProcessOperationOutMaterDo);
 
                         //本道工序的可选设备
-                        List<ApsCraftRouteStepEquDo> apsCraftRouteStepEquDos = apsCraftRouteStepEquService.listByMap(map).stream().collect(Collectors.toList());
+                        List<ApsCraftRouteStepEquDo> apsCraftRouteStepEquDos = apsCraftRouteStepEquDoList.stream().filter(crse -> apsCraftRouteStepDo.getId().equals(crse.getCraftstepid())).collect(Collectors.toList());
                         List<String> equIdList = new ArrayList<>();//设备
                         List<String> equGroupIdList = new ArrayList<>();//资源组
                         for (ApsCraftRouteStepEquDo apsCraftRouteStepEquDo : apsCraftRouteStepEquDos) {
@@ -587,13 +591,17 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
         List<ApsProcessOperationOutMaterDo> operationOutMaterDos = new ArrayList<>();//递归的数据源
         try {
 //            List<ApsProcessOperationDo> processOperationDos = apsProcessOperationDao.getProcessOperation(apsProcessOperationOutMaterDoList.get(0).getBlankid());
+            //该坯料计划所有的工序及输出
+            Map<String, Object> map = new HashMap<>();
+            map.put("BLANKID", apsProcessOperationOutMaterDoList.get(0).getBlankid());
+            List<ApsProcessOperationDo> processOperationDoList = apsProcessOperationService.listByMap(map).stream().collect(Collectors.toList());
+            List<ApsProcessOperationOutMaterDo> processOperationOutMaterDoList = apsProcessOperationOutMaterService.listByMap(map).stream().collect(Collectors.toList());
+
             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());
+                List<ApsProcessOperationDo> apsProcessOperationDos = processOperationDoList.stream().filter(apo -> apsProcessOperationOutMaterDo.getId().equals(apo.getPlaninputid())).collect(Collectors.toList());
                 for (ApsProcessOperationDo apsProcessOperationDo : apsProcessOperationDos) {
                     //更新输入
                     apsProcessOperationDo.setProducttypeid(apsProcessOperationOutMaterDo.getProducttypeid());
@@ -617,9 +625,7 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                     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<ApsProcessOperationOutMaterDo> apsProcessOperationOutMaterDoList1 = processOperationOutMaterDoList.stream().filter(apoom -> apsProcessOperationDo.getId().equals(apoom.getMainid())).collect(Collectors.toList());
                     List<String> planoutputList = new ArrayList<>();
                     for (ApsProcessOperationOutMaterDo apsProcessOperationOutMaterDo1 : apsProcessOperationOutMaterDoList1) {
                         if (StringUtils.isBlank(apsProcessOperationOutMaterDo1.getProducttypeid())) {

+ 18 - 0
cx-aps/cx-aps-server/src/main/java/com/rongwei/bsserver/controller/ApsRouteController.java

@@ -1,6 +1,7 @@
 package com.rongwei.bsserver.controller;
 
 
+import com.rongwei.bscommon.sys.service.ApsCraftRouteService;
 import com.rongwei.bscommon.sys.service.ApsCraftStepService;
 import com.rongwei.bsentity.vo.UpdateApsRouteAboutVo;
 import com.rongwei.rwcommon.base.R;
@@ -10,6 +11,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * @author xh
@@ -24,6 +26,9 @@ public class ApsRouteController {
     @Autowired
     private ApsCraftStepService apsCraftStepService;
 
+    @Autowired
+    private ApsCraftRouteService apsCraftRouteService;
+
     @PostMapping("/update/about/data")
     public R update(@RequestBody List<UpdateApsRouteAboutVo> updateApsRouteAboutVos,
                     @RequestParam(name = "routeId",required = true)String routeId) {
@@ -31,5 +36,18 @@ public class ApsRouteController {
         return R.ok();
     }
 
+    /*
+    复制工艺路线
+     */
+    @PostMapping("/copyCraftRoute")
+    public R copyCraftRoute(@RequestBody Map<String, Object> params) {
+        try {
+            log.info("复制工艺路线;参数为:{}", params);
+            return apsCraftRouteService.copyCraftRoute(params);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return R.error("复制工艺路线失败");
+        }
+    }
 }