Selaa lähdekoodia

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

xiahan 1 vuosi sitten
vanhempi
commit
17eb90eacc

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

@@ -109,7 +109,7 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
         put("ton", "吨");
     }};
 
-    DecimalFormat df = new DecimalFormat("0.####");
+    DecimalFormat df = new DecimalFormat("0.#####");
 
 
     /**
@@ -1363,7 +1363,6 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                         }
                     }
                     apsProcessOperationDo.setPlanoutput(planoutsb.toString());
-                    apsProcessOperationDo.setInputunqualifiedroll(apsProcessOperationOutMaterDo.getFailrollnum());
 
                     apsProcessOperationDoList.add(apsProcessOperationDo);
                 }
@@ -1915,7 +1914,7 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                                 cancelroll = processOperationDo.getLeavewaitworkroll();
                                 cancelProcessOperationVo1.setCurcancelroll(cancelroll);
                             }
-                            processOperationDo.setInputunqualifiedroll(processOperationDo.getInputunqualifiedroll() + cancelroll);
+                            processOperationDo.setInputunqualifiedroll(getInputCancelRoll(apsProcessOperationDo.getPlanprocessrall(), apsProcessOperationDo.getCancelroll(), apsProcessOperationOutMaterDo));
                             cancelProcessOperationVo1.setApsprocessoperationdo(processOperationDo);
                             cancelProcessOperationVo1.setSetcancelroll(cancelProcessOperationVo.getSetcancelroll());
                             cancelProcessOperation(cancelProcessOperationVo1);
@@ -2030,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;
+    }
+
     /*
     工艺步骤管理/输入物料描述
      */

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

@@ -195,16 +195,46 @@ public class ApsServiceImpl implements ApsService {
                 for (AspCheckItemsDo eq : eqs) {
                     eqMaps.put(eq.getId(), eq);
                 }
+                // 1卷一起排
+                List<ApsBlankOrderVo> singleApsList = new ArrayList<>();
+                // 多卷先排
                 apsBlankOrders.forEach((bo)->{
-                    List<ApsBlankOrderVo> v = new ArrayList<>();
-                    v.add(bo);
-                    dataMapOrder.put(bo.getId(),bo);
-                    // 模型转换
-                    ProductionScheduleVo productionScheduleVo = apsProductionScheduleInit(v);
-                    productionScheduleVos.add(productionScheduleVo);
-                    dataMap.put(productionScheduleVo.getProductionScheduleId(),v);
+                    /*if(bo.getRollnum() == 1){
+                        singleApsList.add(bo);
+                    }else{*/
+                        List<ApsBlankOrderVo> v = new ArrayList<>();
+                        v.add(bo);
+                        dataMapOrder.put(bo.getId(),bo);
+
+                        // 模型转换
+                        ProductionScheduleVo productionScheduleVo = apsProductionScheduleInit(v);
+                        productionScheduleVos.add(productionScheduleVo);
+                        dataMap.put(productionScheduleVo.getProductionScheduleId(),v);
+//                        int mergeThNum = mergeThNum(bo, productionScheduleVo);
+                        // 排程计划设备集合
+                        List<Equipment> equipmentList1 = new ArrayList<>();
+                        List<ApsProcessOperationDo> operationDos1 = apsProcessOperationService.list(new LambdaQueryWrapper<ApsProcessOperationDo>()
+                                .in(ApsProcessOperationDo::getBlankid, bo.getId()));
+                        List<String> blankids = new ArrayList<>();
+                        blankids.add(bo.getId());
+                        for (ApsProcessOperationDo operationDo : operationDos1) {
+                            List<String> optionalEquipments = equipmentListInit(operationDo,equipmentList1,eqMaps,blankids,null,productionScheduleVo,apsConfigs.get(0));
+                        }
+                        productionScheduleVo.setEquipmentList(equipmentList1);
+
+                        System.out.println("排程数据:" + JSONUtil.toJsonStr(productionScheduleVo, jsonConfig));
+                        logger.info("排程数据:" + JSONUtil.toJsonStr(productionScheduleVo, jsonConfig));
+                        // APS平台排程接口调用
+                        ProductionScheduleRetVo productionScheduleRetVo = rwApsServer.productionSchedule(productionScheduleVo);
+                        if (!"200".equals(productionScheduleRetVo.getCode())) {
+                            throw new CustomException(productionScheduleRetVo.getMsg());
+                        }
+                        // 获取坯料计划
+                        List<ApsBlankOrderVo> apsBlankOrderss = new ArrayList<>();
+                        apsBlankOrderss.add(bo);
+                        apsBlankOrderService.apsAfter(productionScheduleRetVo,apsBlankOrderss);
+//                    }
 
-                    int mergeThNum = mergeThNum(bo, productionScheduleVo);
                     /*if(bo.getRollnum()>mergeThNum){
                         Map<String,ProductionProcesses> allProcesses = new HashMap<>();
                         List<ProductionProcesses> rootProcesses = new ArrayList<>();
@@ -326,30 +356,34 @@ public class ApsServiceImpl implements ApsService {
                             apsBlankOrderService.apsAfter(productionScheduleRetVo,apsBlankOrderss);
                         }
                     }else{*/
-                        // 排程计划设备集合
-                        List<Equipment> equipmentList1 = new ArrayList<>();
-                        List<ApsProcessOperationDo> operationDos1 = apsProcessOperationService.list(new LambdaQueryWrapper<ApsProcessOperationDo>()
-                                .in(ApsProcessOperationDo::getBlankid, bo.getId()));
-                        List<String> blankids = new ArrayList<>();
-                        blankids.add(bo.getId());
-                        for (ApsProcessOperationDo operationDo : operationDos1) {
-                            List<String> optionalEquipments = equipmentListInit(operationDo,equipmentList1,eqMaps,blankids,null,productionScheduleVo,apsConfigs.get(0));
-                        }
-                        productionScheduleVo.setEquipmentList(equipmentList1);
 
-                        System.out.println("排程数据:" + JSONUtil.toJsonStr(productionScheduleVo, jsonConfig));
-                        logger.info("排程数据:" + JSONUtil.toJsonStr(productionScheduleVo, jsonConfig));
-                        // APS平台排程接口调用
-                        ProductionScheduleRetVo productionScheduleRetVo = rwApsServer.productionSchedule(productionScheduleVo);
-                        if (!"200".equals(productionScheduleRetVo.getCode())) {
-                            throw new CustomException(productionScheduleRetVo.getMsg());
-                        }
-                        // 获取坯料计划
-                        List<ApsBlankOrderVo> apsBlankOrderss = new ArrayList<>();
-                        apsBlankOrderss.add(bo);
-                        apsBlankOrderService.apsAfter(productionScheduleRetVo,apsBlankOrderss);
 //                    }
                 });
+                // 1卷排程
+                /*if(singleApsList != null && singleApsList.size()>0){
+                    // 模型转换
+                    ProductionScheduleVo productionScheduleVo = apsProductionScheduleInit(singleApsList);
+                    // 排程计划设备集合
+                    List<String> blankids = singleApsList.stream().map(ApsBlankOrderVo::getId).collect(Collectors.toList());
+                    List<Equipment> equipmentList1 = new ArrayList<>();
+                    List<ApsProcessOperationDo> operationDos1 = apsProcessOperationService.list(new LambdaQueryWrapper<ApsProcessOperationDo>()
+                            .in(ApsProcessOperationDo::getBlankid, blankids));
+                    for (ApsProcessOperationDo operationDo : operationDos1) {
+                        List<String> optionalEquipments = equipmentListInit(operationDo,equipmentList1,eqMaps,blankids,null,productionScheduleVo,apsConfigs.get(0));
+                    }
+                    productionScheduleVo.setEquipmentList(equipmentList1);
+
+                    System.out.println("排程数据:" + JSONUtil.toJsonStr(productionScheduleVo, jsonConfig));
+                    logger.info("排程数据:" + JSONUtil.toJsonStr(productionScheduleVo, jsonConfig));
+                    // APS平台排程接口调用
+                    ProductionScheduleRetVo productionScheduleRetVo = rwApsServer.productionSchedule(productionScheduleVo);
+                    if (!"200".equals(productionScheduleRetVo.getCode())) {
+                        throw new CustomException(productionScheduleRetVo.getMsg());
+                    }
+                    // 获取坯料计划
+                    apsBlankOrderService.apsAfter(productionScheduleRetVo,singleApsList);
+                }*/
+
                 /*if(productionScheduleVos != null && productionScheduleVos.size()>0){
                     // 提前退火排程
                     *//*ProductionScheduleVo productionScheduleThVo = new ProductionScheduleVo();
@@ -717,6 +751,7 @@ public class ApsServiceImpl implements ApsService {
                 List<String> processIdss = new ArrayList<>();
                 // 坯料计划订单
                 ProduceOrder produceOrder = new ProduceOrder(apsBlankOrderVo.getId(), apsBlankOrderVo.getMaterialname(), DateUtil.offsetHour(apsBlankOrderVo.getDeliverydate(), -apsBlankOrderVo.getDeliverytime()));
+                produceOrder.setMaxheatroll(apsBlankOrderVo.getMaxheatroll());
                 // 获取所有订单工序
                 List<ApsProcessOperationDo> operationDos = apsProcessOperationService.list(new LambdaQueryWrapper<ApsProcessOperationDo>()
                         .eq(ApsProcessOperationDo::getBlankid, apsBlankOrderVo.getId()));
@@ -769,7 +804,7 @@ public class ApsServiceImpl implements ApsService {
         if (StringUtils.isNotBlank(operationDo.getCanchoosedeviceid())) {
             String[] sbIds = operationDo.getCanchoosedeviceid().split(",");
             for (String equIds : sbIds) {
-                if(equIds.equals("0001be252874536843730b100064")){
+                if(equIds.equals("0001be252874536843730b100124")){
                     System.out.println(equIds);
                 }
                 AspCheckItemsDo checkItemsD = eqMaps.get(equIds);
@@ -839,7 +874,7 @@ public class ApsServiceImpl implements ApsService {
                             ApsProcessOperationProcessEquDo lastpro = lastpros.get(0);
                             if(processEqus != null && processEqus.size()>0){
                                 List<ApsProcessOperationProcessEquDo> hasLasts = processEqus.stream().filter(v -> v.getId().equals(lastpro.getId())).collect(Collectors.toList());
-                                if(hasLasts != null || hasLasts.size() > 0){
+                                if(hasLasts != null && hasLasts.size() > 0){
                                     hasLast = false;
                                 }
                             }
@@ -881,6 +916,7 @@ public class ApsServiceImpl implements ApsService {
                                 equipment.setLastProcessEndTime(lastpro.getPlanenddate());
                                 equipment.setOnceprocessmin(lastop.getOnceprocessmin().intValue());
                                 equipment.setLastProcessCutfinishmin(lastop.getCutfinishmin() == null ? null : lastop.getCutfinishmin().intValue());
+                                equipment.setLastSinglerollweight(lastop.getSinglerollweight());
                                 equipment.setLastSerialLbWeight(hasLbs);
                                 // 合金+输入物料+宽度+厚度+输出物料厚度
                                 equipment.setLastSeriesProduceMark(lastop.getMetal() + "^_^" + lastop.getProducttype() + "^_^" + lastop.getProwidth() + "^_^" + lastop.getThickness() + "^_^" + outMaterDos.get(0).getThickness());

+ 5 - 0
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/vo/Equipment.java

@@ -97,6 +97,11 @@ public class Equipment{
      */
     private BigDecimal lastSerialLbWeight;
 
+    /**
+     * 当前设备最后工序的单卷重量
+     */
+    private BigDecimal lastSinglerollweight;
+
     /**
      * 关联设备,铸轧机关联的熔炼炉
      */

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

@@ -43,5 +43,9 @@ public class ProduceOrder {
      */
     private List<ProductionProcesses> processes;
 
+    /**
+     * 最大装炉卷数
+     */
+    private Integer maxheatroll;
 
 }