Sfoglia il codice sorgente

APS二开服务业务数据转换模型数据

fangpy 1 anno fa
parent
commit
8ae1b4325d

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

@@ -20,6 +20,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
+import java.time.LocalDateTime;
 import java.time.ZoneId;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -48,6 +49,16 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
     private ApsProcessOperationProcessEquServiceImpl processOperationProcessEquService;
     @Autowired
     private ApsScheduleConfigService apsScheduleConfigService;
+    @Autowired
+    private ApsProductionOrderService apsProductionOrderService;
+
+    /**
+     *
+     * @param apsBlankOrders
+     */
+    private void apsCheck(List<ApsBlankOrderVo> apsBlankOrders){
+
+    }
 
     /**
      * 订单批量排程
@@ -77,6 +88,8 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
         List<ApsProcessOperationProcessEquDo> apsProcessOperationProcessEquDos = new ArrayList<>();
         // 作业ID集合
         List<String> zyIds = new ArrayList<>();
+        // 最后节点集合
+        List<ProductionProcesses> lastProcess = new ArrayList<>();
         if(productionScheduleRetVo.getProcesses() != null && productionScheduleRetVo.getProcesses().size()>0){
             for (ProductionProcesses process : productionScheduleRetVo.getProcesses()) {
                 // 非合并生产工序
@@ -93,7 +106,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
                     apsProcessOperationProcessEqu.setPlanenddate(Date.from(process.getEndTime().atZone(ZoneId.systemDefault()).toInstant()));
                     apsProcessOperationProcessEqu.setPlanprocessrall(process.getProducePcNum());
                     apsProcessOperationProcessEquDos.add(apsProcessOperationProcessEqu);
-                    zyIds.add(process.getId());
+                    zyIds.addAll(process.getBsProcessesId());
                 }
                 // 合并生产工序
                 else {
@@ -124,6 +137,11 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
                         zyIds.add(k);
                     });
                 }
+
+                // 是否为最后一个节点
+                if(process.getNextProcessesIds() == null || process.getNextProcessesIds().size() == 0){
+                    lastProcess.add(process);
+                }
             }
         }
         if(apsProcessOperationProcessEquDos != null && apsProcessOperationProcessEquDos.size()>0){
@@ -133,6 +151,35 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
             }
             // 再保存新数据
             processOperationProcessEquService.saveBatch(apsProcessOperationProcessEquDos);
+
+            // 回写订单排程交货期
+            Map<String,Date> orderDeliveryTime = new HashMap<>();
+            for (ProductionProcesses process : lastProcess) {
+                List<ProduceOrder> produceOrder = process.getProduceOrder();
+                if(produceOrder != null && produceOrder.size()>0){
+                    for (ProduceOrder order : produceOrder) {
+                        Date endDate = Date.from(process.getEndTime().atZone(ZoneId.systemDefault()).toInstant());
+                        ApsBlankOrderDo blankOrder = this.getById(order.getId());
+                        if(orderDeliveryTime.containsKey(blankOrder.getProductionorderid())){
+                            // 对比取最大值
+                            if(endDate.compareTo(orderDeliveryTime.get(blankOrder.getProductionorderid()))>0){
+                                orderDeliveryTime.put(blankOrder.getProductionorderid(),endDate);
+                            }
+                        }else{
+                            orderDeliveryTime.put(blankOrder.getProductionorderid(),endDate);
+                        }
+                    }
+                }
+            }
+            // 更新订单的排程交货期
+            if(orderDeliveryTime.size()>0){
+                orderDeliveryTime.forEach((k,v)->{
+                    ApsProductionOrderDo apsProductionOrderDo = new ApsProductionOrderDo();
+                    apsProductionOrderDo.setId(k);
+                    apsProductionOrderDo.setScheduledeliverydate(v);
+                    apsProductionOrderService.updateById(apsProductionOrderDo);
+                });
+            }
         }
     }
 
@@ -195,16 +242,33 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
                         String[] sbIds = operationDo.getCanchoosedeviceid().split(",");
                         for (String equIds : sbIds) {
                             AspCheckItemsDo checkItemsD = eqMaps.get(equIds);
-                            Equipment equipment = new Equipment();
-                            equipment.setBsEquipmentId(equIds);
-                            equipment.setId(equIds);
-                            equipment.setEquipmentName(checkItemsD.getCheckitemname());
-                            equipment.setWorkshopid(checkItemsD.getUsedeptid());
-                            equipment.setWorkshopname(checkItemsD.getUsedeptname());
-                            equipment.setFactoryid(checkItemsD.getTenantid());
-                            equipment.setFactory(checkItemsD.getOwnedfactory());
-                            optionalEquipments.add(equIds);
-                            equipmentList.add(equipment);
+                            if(checkItemsD != null){
+                                optionalEquipments.add(equIds);
+                                List<Equipment> eqpts = equipmentList.stream().filter(v -> v.getId().equals(equIds)).collect(Collectors.toList());
+                                // 设备集合里不存在时新增
+                                if(eqpts == null || eqpts.size() == 0){
+                                    Equipment equipment = new Equipment();
+                                    equipment.setBsEquipmentId(equIds);
+                                    equipment.setId(equIds);
+                                    equipment.setEquipmentName(checkItemsD.getCheckitemname());
+                                    equipment.setWorkshopid(checkItemsD.getUsedeptid());
+                                    equipment.setWorkshopname(checkItemsD.getUsedeptname());
+                                    equipment.setFactoryid(checkItemsD.getTenantid());
+                                    equipment.setFactory(checkItemsD.getOwnedfactory());
+                                    // 查询设备已排程的时间段
+                                    List<ApsProcessOperationProcessEquDo> processEqus = processOperationProcessEquService.list(new LambdaQueryWrapper<ApsProcessOperationProcessEquDo>()
+                                            .eq(ApsProcessOperationProcessEquDo::getProcessdeviceid, equIds).ge(ApsProcessOperationProcessEquDo::getPlanstartdate,DateUtil.date()));
+                                    if(processEqus != null && processEqus.size()>0){
+                                        List<EquipmentRunTime> equipmentRunTimes = new ArrayList<>();
+                                        for (ApsProcessOperationProcessEquDo equs : processEqus) {
+                                            EquipmentRunTime er = new EquipmentRunTime();
+                                            er.setStartRunTime(equs.getPlanstartdate().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime());
+                                            er.setEndRunTime(equs.getPlanenddate().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime());
+                                        }
+                                    }
+                                    equipmentList.add(equipment);
+                                }
+                            }
                         }
                     }
 
@@ -222,7 +286,9 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
                         // 模型ID
                         processes.setId(operationDo.getId());
                         // 业务表主键ID
-                        processes.setBsProcessesId(operationDo.getId());
+                        List<String> bss = new ArrayList<>();
+                        bss.add(operationDo.getId());
+                        processes.setBsProcessesId(bss);
                         // 工序任务可选设备
                         processes.setOptionalEquipments(optionalEquipments);
                         // 批次
@@ -412,7 +478,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
                                             processes.setProduceTime(processOperationM.getOnceprocessmin().intValue());
                                         }
                                     }
-
+                                    processes.getBsProcessesId().add(processOperationM.getId());
                                 }
                             }
                         }
@@ -447,7 +513,10 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
                                     }
                                     if(haslast>0){
                                         ProductionProcesses processes = new ProductionProcesses();
-                                        processes.setId(processOperationM.getId());
+                                        processes.setId(SecurityUtil.getUUID());
+                                        List<String> bss = new ArrayList<>();
+                                        bss.add(processOperationM.getId());
+                                        processes.setBsProcessesId(bss);
                                         processes.setProcessType(processOperationM.getProcess());
                                         processes.setOptionalEquipments(Arrays.asList(new String[]{aspCheckItem.getId()}));
                                         // 坯料计划订单

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

@@ -5,6 +5,7 @@ import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;
 
 import java.math.BigDecimal;
+import java.util.List;
 
 /**
  * 设备
@@ -65,6 +66,11 @@ public class Equipment{
      */
     private Integer unitProductTime;
 
+    /**
+     * 设备运行时间段
+     */
+    private List<EquipmentRunTime> equipmentRunTimes;
+
     public Equipment(String id, String equipmentType) {
         this.id = id;
         this.equipmentType = equipmentType;

+ 26 - 0
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/vo/EquipmentRunTime.java

@@ -0,0 +1,26 @@
+package com.rongwei.bsentity.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+/**
+ * 设备运行中时间,表示排程锁定后设备运行时间段
+ */
+@Data
+public class EquipmentRunTime {
+
+    /**
+     * 设备运行开始时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime startRunTime;
+
+    /**
+     * 设备运行结束时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime endRunTime;
+
+}

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

@@ -25,7 +25,7 @@ public class ProductionProcesses{
     /**
      * 业务表订单工序ID
      */
-    private String bsProcessesId;
+    private List<String> bsProcessesId;
 
     /**
      * 可选设备ID
@@ -265,11 +265,11 @@ public class ProductionProcesses{
         this.nextProcessesIds = nextProcessesIds;
     }
 
-    public String getBsProcessesId() {
+    public List<String> getBsProcessesId() {
         return bsProcessesId;
     }
 
-    public void setBsProcessesId(String bsProcessesId) {
+    public void setBsProcessesId(List<String> bsProcessesId) {
         this.bsProcessesId = bsProcessesId;
     }