瀏覽代碼

冷轧换辊优化

fangpy 7 月之前
父節點
當前提交
fe13eec0ad

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

@@ -773,6 +773,9 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
                     apsProcessOperationProcessEqu.setNextprocessesids(CollUtil.join(process.getNextProcessesIds(), ","));
                     apsProcessOperationProcessEqu.setLockmark("y");
                     apsProcessOperationProcessEqu.setLockmarkdetail("y");
+                    if(process.getOptionalEquipmentZg() != null && process.getOptionalEquipmentZg().size()>0){
+                        apsProcessOperationProcessEqu.setRollerid(process.getOptionalEquipmentZg().get(process.getEquipment().getId()));
+                    }
                     if (hasEqu != null) {
                         apsProcessOperationProcessEqu.setClosestatus(hasEqu.getClosestatus());
                         apsProcessOperationProcessEqu.setPlanprocessrall(hasEqu.getPlanprocessrall());

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

@@ -81,6 +81,8 @@ public class ApsServiceImpl implements ApsService {
     private ApsNochangeRollerService apsNochangeRollerService;
     @Autowired
     private ApsProductionProcessesService apsProductionProcessesService;
+    @Autowired
+    private ApsProcessOperationEquService apsProcessOperationEquService;
 
     /**
      * Aps排程
@@ -695,6 +697,9 @@ public class ApsServiceImpl implements ApsService {
                         .in(ApsProcessOperationProcessEquDo::getBlankid,blankids)
                         .orderByAsc(ApsProcessOperationProcessEquDo::getPlanstartdate));
         Map<String, List<ApsProcessOperationProcessEquDo>> proEqus = apopes.stream().collect(Collectors.groupingBy(ApsProcessOperationProcessEquDo::getProcessid));
+        // 待排程坯料计划作业可选设备轧辊ID
+        List<ApsProcessOperationEquDo> processOperationEquDos = apsProcessOperationEquService.list(
+                new LambdaQueryWrapper<ApsProcessOperationEquDo>().in(ApsProcessOperationEquDo::getBlankid, blankids));
 
         ProductionScheduleVo productionScheduleVo = productionScheduleVoInit();
         // 排程计划工序任务集合
@@ -745,7 +750,7 @@ public class ApsServiceImpl implements ApsService {
                     // 设备列表初始化
 //                    List<String> optionalEquipments = equipmentListInit(operationDo,equipmentList,eqMaps,blankids,productionScheduleVo,apsScheduleConfig);
                     // 工序作业相关数据初始化
-                    productionProcessesInit(operationDo,produceOrder,processesList,operationProductionProcesses,apsBlankOrderVo,productionScheduleVo,proEqus);
+                    productionProcessesInit(operationDo,produceOrder,processesList,operationProductionProcesses,apsBlankOrderVo,productionScheduleVo,proEqus,processOperationEquDos);
                 }
                 // 第一次排程需要建立关联关系
                 if(!"Y".equals(apsBlankOrderVo.getIfcp())){
@@ -945,7 +950,7 @@ public class ApsServiceImpl implements ApsService {
                                 // 合金+输入物料+宽度+厚度+输出物料厚度
                                 equipment.setLastSeriesProduceMark(lastop.getMetal() + "^_^" + lastop.getProducttype() + "^_^" + lastop.getProwidth() + "^_^" + lastop.getThickness() + "^_^" + outMaterDos.get(0).getThickness());
                                 equipment.setLastProcessCutfinishmin(lastop.getCutfinishmin() == null ? null : lastop.getCutfinishmin().intValue());
-
+                                equipment.setLastZjgid(lastpro.getRollerid());
                             }
                         }
                         // 设备占用时间段
@@ -971,6 +976,7 @@ public class ApsServiceImpl implements ApsService {
                                 er.setEndRunTime(equs.getPlanenddate().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime());
                                 er.setPcNum(equs.getPlanprocessrall());
                                 er.setOccupyType("process");
+                                er.setZjgid(equs.getRollerid());
                                 // 设备占用时间设置连续生产标识,参与排程
                                 if (processOperationDos != null) {
                                     List<ApsProcessOperationDo> pos = processOperationDos.stream().filter(v -> v.getId().equals(equs.getProcessid())).collect(Collectors.toList());
@@ -1132,7 +1138,7 @@ public class ApsServiceImpl implements ApsService {
      */
     private void productionProcessesInit(ApsProcessOperationDo operationDo,ProduceOrder produceOrder
             ,List<ProductionProcesses> processesList,Map<String,List<ProductionProcesses>> operationProductionProcesses
-            ,ApsBlankOrderVo apsBlankOrderVo,ProductionScheduleVo productionScheduleVo,Map<String, List<ApsProcessOperationProcessEquDo>> proEqus){
+            ,ApsBlankOrderVo apsBlankOrderVo,ProductionScheduleVo productionScheduleVo,Map<String, List<ApsProcessOperationProcessEquDo>> proEqus,List<ApsProcessOperationEquDo> processOperationEquDos){
         // 输出物料
         List<ApsProcessOperationOutMaterDo> outMaterDos = apsProcessOperationOutMaterService.list(new LambdaQueryWrapper<ApsProcessOperationOutMaterDo>()
                 .eq(ApsProcessOperationOutMaterDo::getMainid, operationDo.getId()));
@@ -1148,7 +1154,7 @@ public class ApsServiceImpl implements ApsService {
                 List<ApsProcessOperationProcessEquDo> processDetails = processOperationProcessEquService.list(new LambdaQueryWrapper<ApsProcessOperationProcessEquDo>()
                         .eq(ApsProcessOperationProcessEquDo::getProcessid, operationDo.getId()).orderByAsc(ApsProcessOperationProcessEquDo::getPlanstartdate));
                 for (ApsProcessOperationProcessEquDo processDetail : processDetails) {
-                    ProductionProcesses processes = productionProcessesDetailInit(operationDo, produceOrder, optionalEquipments,outMaterDos,apsBlankOrderVo);
+                    ProductionProcesses processes = productionProcessesDetailInit(operationDo, produceOrder, optionalEquipments,outMaterDos,apsBlankOrderVo,processOperationEquDos);
                     // 锁定的作业保留作业ID
                     processes.setId(processDetail.getId());
                     processes.setIfLock(true);
@@ -1213,7 +1219,7 @@ public class ApsServiceImpl implements ApsService {
                     Integer ys = operationDo.getPlanprocessrall() % planprocessrall;
                     Integer js = operationDo.getPlanprocessrall() / planprocessrall;
                     for (Integer i = 0; i < planprocessrall; i++) {
-                        ProductionProcesses processes = productionProcessesDetailInit(operationDo, produceOrder, optionalEquipments,outMaterDos,apsBlankOrderVo);
+                        ProductionProcesses processes = productionProcessesDetailInit(operationDo, produceOrder, optionalEquipments,outMaterDos,apsBlankOrderVo,processOperationEquDos);
                         // 已排程的作业明细数据保持ID不变
                         if(processEquDos != null && i<processEquDos.size()){
                             processes.setId(processEquDos.get(i).getId());
@@ -1289,7 +1295,7 @@ public class ApsServiceImpl implements ApsService {
                     Integer ys = operationDo.getPlanprocessrall() % planprocessrall;
                     Integer js = operationDo.getPlanprocessrall() / planprocessrall;
                     for (Integer i = 0; i < planprocessrall; i++) {
-                        ProductionProcesses processes = productionProcessesDetailInit(operationDo, produceOrder, optionalEquipments,outMaterDos,apsBlankOrderVo);
+                        ProductionProcesses processes = productionProcessesDetailInit(operationDo, produceOrder, optionalEquipments,outMaterDos,apsBlankOrderVo,processOperationEquDos);
                         // 已排程的作业明细数据保持ID不变
                         if(processEquDos != null && i<processEquDos.size()){
                             processes.setId(processEquDos.get(i).getId());
@@ -1345,7 +1351,7 @@ public class ApsServiceImpl implements ApsService {
                     }
                 }else{
                     for (Integer i = 0; i < operationDo.getPlanprocessrall(); i++) {
-                        ProductionProcesses processes = productionProcessesDetailInit(operationDo, produceOrder, optionalEquipments,outMaterDos,apsBlankOrderVo);
+                        ProductionProcesses processes = productionProcessesDetailInit(operationDo, produceOrder, optionalEquipments,outMaterDos,apsBlankOrderVo,processOperationEquDos);
                         // 已排程的作业明细数据保持ID不变
                         if(processEquDos != null && i<processEquDos.size()){
                             processes.setId(processEquDos.get(i).getId());
@@ -1399,7 +1405,7 @@ public class ApsServiceImpl implements ApsService {
     }
 
     private ProductionProcesses productionProcessesDetailInit(ApsProcessOperationDo operationDo,ProduceOrder produceOrder
-            ,List<String> optionalEquipments,List<ApsProcessOperationOutMaterDo> outMaterDos,ApsBlankOrderVo apsBlankOrderVo){
+            ,List<String> optionalEquipments,List<ApsProcessOperationOutMaterDo> outMaterDos,ApsBlankOrderVo apsBlankOrderVo,List<ApsProcessOperationEquDo> processOperationEquDos){
         String warnPreMsg = "坯料计划号:"+apsBlankOrderVo.getBlanknumber()+"  作业类型:"+operationDo.getProcess()+"  作业名称:"+operationDo.getProcessname();
         ProductionProcesses processes = new ProductionProcesses();
         // 工序所属订单
@@ -1425,6 +1431,16 @@ public class ApsServiceImpl implements ApsService {
         processes.setIssubsection(operationDo.getIssubsection());
         processes.setUnitProduceTime(operationDo.getOnceprocessmin().intValue());
         processes.setProduceTime(operationDo.getOnceprocessmin().intValue());
+        // 轧辊ID
+        List<ApsProcessOperationEquDo> operationEquDos = processOperationEquDos.stream().filter(v ->
+                v.getBlankid().equals(operationDo.getBlankid()) && v.getMainid().equals(operationDo.getId())).collect(Collectors.toList());
+        if(operationEquDos != null && operationEquDos.size()>0){
+            Map<String,String> optionalEquipmentZg = new HashMap<>();
+            for (ApsProcessOperationEquDo operationEquDo : operationEquDos) {
+                optionalEquipmentZg.put(operationEquDo.getResourceid(),operationEquDo.getRollerid());
+            }
+            processes.setOptionalEquipmentZg(optionalEquipmentZg);
+        }
         // 单卷宽度和重量
         if(operationDo.getProwidth() == null){
             throw new CustomException(warnPreMsg + "的作业单卷宽度为空");

+ 9 - 4
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/domain/ApsProcessOperationProcessEquDo.java

@@ -12,11 +12,11 @@ import lombok.experimental.Accessors;
 
 /**
  * <p>
- * 生产订单-坯料计划-工序作业加工设备
+ * 生产订单-坯料计划-工序作业加工设备--作业明细
  * </p>
  *
  * @author fpy
- * @since 2024-06-27
+ * @since 2024-12-31
  */
 @Data
 @EqualsAndHashCode(callSuper = true)
@@ -135,7 +135,6 @@ public class ApsProcessOperationProcessEquDo extends BaseDo {
     private String waitreportid;
     /**
      * 是否锁定 y:锁定,n:未锁定
-     * 批量排程时需要使用
      */
     @TableField("LOCKMARK")
     private String lockmark;
@@ -221,8 +220,14 @@ public class ApsProcessOperationProcessEquDo extends BaseDo {
     private Integer leavewaitworkroll;
     /**
      * 是否锁定明细 y:锁定,n:未锁定
-     * 批量排程时需要使用
      */
     @TableField("LOCKMARKDETAIL")
     private String lockmarkdetail;
+    /**
+     * 轧机辊ID
+     */
+    @TableField("ROLLERID")
+    private String rollerid;
+
+
 }

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

@@ -102,6 +102,11 @@ public class Equipment{
      */
     private BigDecimal lastSinglerollweight;
 
+    /**
+     * 当前设备最后工序的轧机使用辊ID
+     */
+    private String lastZjgid;
+
     /**
      * 关联设备,铸轧机关联的熔炼炉
      */

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

@@ -90,4 +90,9 @@ public class EquipmentRunTime {
      */
     private String producttype;
 
+    /**
+     * 轧机使用辊ID
+     */
+    private String zjgid;
+
 }

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

@@ -5,6 +5,7 @@ import com.fasterxml.jackson.annotation.JsonFormat;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 工步,工艺路线里的工步
@@ -34,6 +35,11 @@ public class ProductionProcesses{
      */
     private List<String> optionalEquipments;
 
+    /**
+     * 可选设备ID
+     */
+    private Map<String,String> optionalEquipmentZg;
+
     /**
      * 设备类型
      */
@@ -622,4 +628,12 @@ public class ProductionProcesses{
     public void setProcessCategory(String processCategory) {
         this.processCategory = processCategory;
     }
+
+    public Map<String, String> getOptionalEquipmentZg() {
+        return optionalEquipmentZg;
+    }
+
+    public void setOptionalEquipmentZg(Map<String, String> optionalEquipmentZg) {
+        this.optionalEquipmentZg = optionalEquipmentZg;
+    }
 }