소스 검색

排程数据组装bug修改

fangpy 1 년 전
부모
커밋
28c938e4b0

+ 131 - 53
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsServiceImpl.java

@@ -100,10 +100,78 @@ public class ApsServiceImpl implements ApsService {
                 if (fbNotLock != null && fbNotLock.size() > 0) {
                     apsBlankOrders.addAll(fbNotLock);
                 }
+                // 坯料计划排序
+                Collections.sort(apsBlankOrders,(v1,v2)->{
+                    // 合金
+                    String alloy1 = v1.getAlloy();
+                    String alloy2 = v2.getAlloy();
+                    // 合金状态
+                    String alloystatus1 = v1.getAlloystatus();
+                    String alloystatus2 = v2.getAlloystatus();
+                    // 产品类型
+                    String producttype1 = v1.getProducttype();
+                    String producttype2 = v2.getProducttype();
+                    // 宽度
+                    BigDecimal prowidth1 = v1.getProwidth();
+                    BigDecimal prowidth2 = v2.getProwidth();
+                    // 厚度
+                    BigDecimal thickness1 = v1.getThickness();
+                    BigDecimal thickness2 = v2.getThickness();
+                    // 重量
+                    BigDecimal singlerollweight1 = v1.getSinglerollweight();
+                    BigDecimal singlerollweight2 = v2.getSinglerollweight();
+
+                    int a = 0;
+                    // 宽度
+                    if(prowidth1.compareTo(prowidth2) == 0){
+                        // 合金
+                        if(alloy1.compareTo(alloy2) == 0){
+                            // 合金状态
+                            if(alloystatus1.compareTo(alloystatus2) == 0){
+                                // 产品类型
+                                if(producttype1.compareTo(producttype2) == 0){
+                                    // 厚度
+                                    if(thickness1.compareTo(thickness2) == 0){
+                                        // 重量
+                                        if(singlerollweight1.compareTo(singlerollweight2) == 0){
+                                            a = 0;
+                                        }else if(singlerollweight1.compareTo(singlerollweight2) > 0){
+                                            a = -1;
+                                        }else{
+                                            a = 1;
+                                        }
+                                    }else{
+                                        if(thickness1.compareTo(thickness2) > 0){
+                                            a = -1;
+                                        }else{
+                                            a = 1;
+                                        }
+                                    }
+                                }else{
+                                    a = producttype1.compareTo(producttype2);
+                                }
+                            }else{
+                                a = alloystatus1.compareTo(alloystatus2);
+                            }
+                        }else{
+                            a = alloy1.compareTo(alloy2);
+                        }
+                    }else{
+                        if(prowidth1.compareTo(prowidth2) > 0){
+                            a = -1;
+                        }else{
+                            a = 1;
+                        }
+                    }
+                    return a;
+                });
                 // 按订单分批排程
-                Map<String, List<ApsBlankOrderVo>> groupedItems = apsBlankOrders.stream()
-                        .collect(Collectors.groupingBy(ApsBlankOrderVo::getProductionorderid));
-                groupedItems.forEach((k,v)->{
+//                Map<String, List<ApsBlankOrderVo>> groupedItems = apsBlankOrders.stream()
+//                        .collect(Collectors.groupingBy(ApsBlankOrderVo::getProductionorderid));
+//                groupedItems.forEach((k,v)->{
+                apsBlankOrders.forEach((bo)->{
+                    List<ApsBlankOrderVo> v = new ArrayList<>();
+                    v.add(bo);
                     // 模型转换
                     ProductionScheduleVo productionScheduleVo = apsProductionScheduleInit(v);
                     JSONConfig jsonConfig = JSONConfig.create();
@@ -464,65 +532,75 @@ public class ApsServiceImpl implements ApsService {
                 .eq(ApsProcessOperationOutMaterDo::getMainid, operationDo.getId()));
         List<ProductionProcesses> operationProcess = new ArrayList<>();
         if(operationDo != null && operationDo.getPlanprocessrall() != null && operationDo.getPlanprocessrall()>0){
-            for (Integer i = 0; i < operationDo.getPlanprocessrall(); i++) {
-                ProductionProcesses processes = new ProductionProcesses();
-                // 工序所属订单
-                processes.setProduceOrder(Arrays.asList(new ProduceOrder[]{produceOrder}));
-                // 模型ID
-                processes.setId(SecurityUtil.getUUID());
-                // 业务表主键ID
-                List<String> bss = new ArrayList<>();
-                bss.add(operationDo.getId());
-                processes.setBsProcessesId(bss);
-                // 工序任务可选设备
-                processes.setOptionalEquipments(optionalEquipments);
-                // 批次
-                processes.setProducePcNum(operationDo.getPlanprocessrall());
-                processes.setProcessType(operationDo.getProcess());
-                // 单次加工时长
-                processes.setUnitProduceTime(operationDo.getOnceprocessmin().intValue());
-                processes.setProduceTime(operationDo.getOnceprocessmin().intValue());
-                // 单卷宽度和重量
-                processes.setVolumeWidth(operationDo.getProwidth());
-                processes.setSinglerollweight(operationDo.getSinglerollweight());
-                processes.setVolumeThickness(operationDo.getThickness());
-                if (operationDo.getMinflowwaitmin() != null) {
-                    processes.setMinWaitTime(operationDo.getMinflowwaitmin().intValue());
-                }
-                if (operationDo.getMaxflowwaitmin() != null) {
-                    processes.setMaxWaitTime(operationDo.getMaxflowwaitmin().intValue());
-                }
-                // 合金
-                processes.setVolumeMetal(operationDo.getMetal());
-                if("成退".equals(operationDo.getProcess()) || "中退".equals(operationDo.getProcess())){
-                    processes.setVolumeMetalstate(outMaterDos.get(0).getMetalstate());
-                }else{
-                    processes.setVolumeMetalstate(operationDo.getMetalstate());
-                }
-                // 连续生产标识设置
-                // 合金+输入物料+宽度+输入物料厚度+输出物料厚度(取第一个冷轧工序使用)
-                processes.setSeriesProduceMark(operationDo.getMetal() + "^_^" + operationDo.getProducttype() + "^_^" + operationDo.getProwidth() + "^_^" + operationDo.getThickness() + "^_^" + outMaterDos.get(0).getThickness());
-                processes.setPrepressworkmin(operationDo.getPrepressworkmin() == null ? null : operationDo.getPrepressworkmin().intValue());
-                processes.setCutfinishmin(operationDo.getCutfinishmin() == null ? null : operationDo.getCutfinishmin().intValue());
-                // 锁定的作业加上锁定标识
-                if (LOCKMARK_Y.equals(operationDo.getLockmark())) {
-                    ApsProcessOperationProcessEquDo processEquServiceOne = processOperationProcessEquService.getOne(new LambdaQueryWrapper<ApsProcessOperationProcessEquDo>()
-                            .eq(ApsProcessOperationProcessEquDo::getProcessid, operationDo.getId()));
-                    if (processEquServiceOne != null) {
+            if(LOCKMARK_Y.equals(operationDo.getLockmark())){
+                List<ApsProcessOperationProcessEquDo> processDetails = processOperationProcessEquService.list(new LambdaQueryWrapper<ApsProcessOperationProcessEquDo>()
+                        .eq(ApsProcessOperationProcessEquDo::getProcessid, operationDo.getId()));
+                for (ApsProcessOperationProcessEquDo processDetail : processDetails) {
+                    // 锁定的作业加上锁定标识
+                    if (LOCKMARK_Y.equals(operationDo.getLockmark())) {
+                        ProductionProcesses processes = productionProcessesDetailInit(operationDo, produceOrder, optionalEquipments,outMaterDos);
                         processes.setIfLock(true);
-                        processes.setEquipmentId(processEquServiceOne.getProcessdeviceid());
+                        processes.setEquipmentId(processDetail.getProcessdeviceid());
                         List<String> opeqs = new ArrayList<>();
-                        opeqs.add(processEquServiceOne.getProcessdeviceid());
+                        opeqs.add(processDetail.getProcessdeviceid());
                         processes.setOptionalEquipments(opeqs);
-                        processes.setStartTime(processEquServiceOne.getPlanstartdate().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime());
-                        processes.setEndTime(processEquServiceOne.getPlanenddate().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime());
+                        processes.setStartTime(processDetail.getPlanstartdate().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime());
+                        processes.setEndTime(processDetail.getPlanenddate().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime());
                     }
                 }
-                operationProcess.add(processes);
+            }else{
+                for (Integer i = 0; i < operationDo.getPlanprocessrall(); i++) {
+                    ProductionProcesses processes = productionProcessesDetailInit(operationDo, produceOrder, optionalEquipments,outMaterDos);
+                    operationProcess.add(processes);
+                }
             }
             processesList.addAll(operationProcess);
             operationProductionProcesses.put(operationDo.getId(),operationProcess);
         }
     }
 
+    private ProductionProcesses productionProcessesDetailInit(ApsProcessOperationDo operationDo,ProduceOrder produceOrder
+            ,List<String> optionalEquipments,List<ApsProcessOperationOutMaterDo> outMaterDos){
+        ProductionProcesses processes = new ProductionProcesses();
+        // 工序所属订单
+        processes.setProduceOrder(Arrays.asList(new ProduceOrder[]{produceOrder}));
+        // 模型ID
+        processes.setId(SecurityUtil.getUUID());
+        // 业务表主键ID
+        List<String> bss = new ArrayList<>();
+        bss.add(operationDo.getId());
+        processes.setBsProcessesId(bss);
+        // 工序任务可选设备
+        processes.setOptionalEquipments(optionalEquipments);
+        // 批次
+        processes.setProducePcNum(operationDo.getPlanprocessrall());
+        processes.setProcessType(operationDo.getProcess());
+        // 单次加工时长
+        processes.setUnitProduceTime(operationDo.getOnceprocessmin().intValue());
+        processes.setProduceTime(operationDo.getOnceprocessmin().intValue());
+        // 单卷宽度和重量
+        processes.setVolumeWidth(operationDo.getProwidth());
+        processes.setSinglerollweight(operationDo.getSinglerollweight());
+        processes.setVolumeThickness(operationDo.getThickness());
+        if (operationDo.getMinflowwaitmin() != null) {
+            processes.setMinWaitTime(operationDo.getMinflowwaitmin().intValue());
+        }
+        if (operationDo.getMaxflowwaitmin() != null) {
+            processes.setMaxWaitTime(operationDo.getMaxflowwaitmin().intValue());
+        }
+        // 合金
+        processes.setVolumeMetal(operationDo.getMetal());
+        if("成退".equals(operationDo.getProcess()) || "中退".equals(operationDo.getProcess())){
+            processes.setVolumeMetalstate(outMaterDos.get(0).getMetalstate());
+        }else{
+            processes.setVolumeMetalstate(operationDo.getMetalstate());
+        }
+        // 连续生产标识设置
+        // 合金+输入物料+宽度+输入物料厚度+输出物料厚度(取第一个冷轧工序使用)
+        processes.setSeriesProduceMark(operationDo.getMetal() + "^_^" + operationDo.getProducttype() + "^_^" + operationDo.getProwidth() + "^_^" + operationDo.getThickness() + "^_^" + outMaterDos.get(0).getThickness());
+        processes.setPrepressworkmin(operationDo.getPrepressworkmin() == null ? null : operationDo.getPrepressworkmin().intValue());
+        processes.setCutfinishmin(operationDo.getCutfinishmin() == null ? null : operationDo.getCutfinishmin().intValue());
+        return processes;
+    }
+
 }

+ 4 - 0
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/vo/ProductionProcesses.java

@@ -1,5 +1,7 @@
 package com.rongwei.bsentity.vo;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
+
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.util.List;
@@ -120,11 +122,13 @@ public class ProductionProcesses{
     /**
      * 开始时间
      */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private LocalDateTime startTime;
 
     /**
      * 结束时间
      */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private LocalDateTime endTime;
 
     /**