Quellcode durchsuchen

排程数据组装优化

fangpy vor 11 Monaten
Ursprung
Commit
a0b9d38a0d

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

@@ -61,6 +61,10 @@ public interface ApsBlankOrderDao extends BaseMapper<ApsBlankOrderDo> {
             "BLANKID in (SELECT ID FROM aps_blank_order where DELETED='0' and SCHEDULINGSTATUS='10' and ID in (${hasIds}))")
     void setLockMarkNullByToAps(@Param("hasIds") String hasIds);
 
+    @Select("UPDATE aps_process_operation_process_equ set LOCKMARK='n' where DELETED='0' and BLANKID in (${hasIds}) " +
+            "and PROCESSID NOT IN (select ID from aps_process_operation where DELETED='0' and BLANKID in (${hasIds}) AND LOCKMARK='y')")
+    void setProDetailLockMark(@Param("hasIds") String hasIds);
+
     @Select("select * FROM (\n" +
             "select PROCESSDEVICEID,PLANSTARTDATE,PLANENDDATE,GROUP_CONCAT(PROCESSID) PROCESSID from (select * from aps_process_operation_process_equ " +
             "where DELETED='0' ORDER BY PROCESSID ASC) a GROUP BY PROCESSDEVICEID,PLANSTARTDATE,PLANENDDATE" +

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

@@ -112,18 +112,18 @@ public class ApsServiceImpl implements ApsService {
                 // 查询存在未锁定的作业坯料计划
                 // 插单重排会优先排插单再排程其它的订单
                 if("cd".equals(apsType) && apsBlankOrders != null && apsBlankOrders.size()>0){
-                    apsOrderSchedule(apsBlankOrders);
-                    List<ApsBlankOrderVo> fbNotLock = apsBlankOrderDao.getOrdersHasNotLockProcess(idStrs,tenantId);
-                    if (fbNotLock != null && fbNotLock.size() > 0) {
-                        apsOrderSchedule(fbNotLock);
+                    for (ApsBlankOrderVo apsBlankOrder : apsBlankOrders) {
+                        apsBlankOrder.setCdbs(1);
                     }
-                }else{
-                    List<ApsBlankOrderVo> fbNotLock = apsBlankOrderDao.getOrdersHasNotLockProcess(idStrs,tenantId);
-                    if (fbNotLock != null && fbNotLock.size() > 0) {
-                        apsBlankOrders.addAll(fbNotLock);
+                }
+                List<ApsBlankOrderVo> fbNotLock = apsBlankOrderDao.getOrdersHasNotLockProcess(idStrs,tenantId);
+                if (fbNotLock != null && fbNotLock.size() > 0) {
+                    for (ApsBlankOrderVo apsBlankOrderVo : fbNotLock) {
+                        apsBlankOrderVo.setCdbs(2);
                     }
-                    apsOrderSchedule(apsBlankOrders);
+                    apsBlankOrders.addAll(fbNotLock);
                 }
+                apsOrderSchedule(apsBlankOrders);
 
 
                 // 1卷排程
@@ -441,52 +441,57 @@ public class ApsServiceImpl implements ApsService {
             BigDecimal singlerollweight2 = v2.getSinglerollweight();
 
             int a = 0;
-            // 合金
-            if(alloy1.compareTo(alloy2) == 0){
-                // 产品类型
-                if(producttype1 == null || producttype2 == null || producttype1.compareTo(producttype2) == 0){
-                    // 宽度
-                    if(prowidth1.compareTo(prowidth2) == 0){
-                        // 厚度
-                        if(thickness1.compareTo(thickness2) == 0){
-                            // 合金状态
-                            if(alloystatus1 == null || alloystatus2 == null || alloystatus1.compareTo(alloystatus2) == 0){
-                                // 重量
-                                if(singlerollweight1.compareTo(singlerollweight2) == 0){
-                                    // 按照订单排序
-                                    if(v1.getProductionorderid().compareTo(v2.getProductionorderid()) == 0){
-                                        // 卷数从大到小
-                                        a = v2.getRollnum().compareTo(v1.getRollnum());
+            // 插单优先
+            if(v1.getCdbs().compareTo(v2.getCdbs()) == 0){
+                // 合金
+                if(alloy1.compareTo(alloy2) == 0){
+                    // 产品类型
+                    if(producttype1 == null || producttype2 == null || producttype1.compareTo(producttype2) == 0){
+                        // 宽度
+                        if(prowidth1.compareTo(prowidth2) == 0){
+                            // 厚度
+                            if(thickness1.compareTo(thickness2) == 0){
+                                // 合金状态
+                                if(alloystatus1 == null || alloystatus2 == null || alloystatus1.compareTo(alloystatus2) == 0){
+                                    // 重量
+                                    if(singlerollweight1.compareTo(singlerollweight2) == 0){
+                                        // 按照订单排序
+                                        if(v1.getProductionorderid().compareTo(v2.getProductionorderid()) == 0){
+                                            // 卷数从大到小
+                                            a = v2.getRollnum().compareTo(v1.getRollnum());
+                                        }else{
+                                            a = v1.getProductionorderid().compareTo(v2.getProductionorderid());
+                                        }
+                                    }else if(singlerollweight1.compareTo(singlerollweight2) > 0){
+                                        a = -1;
                                     }else{
-                                        a = v1.getProductionorderid().compareTo(v2.getProductionorderid());
+                                        a = 1;
                                     }
-                                }else if(singlerollweight1.compareTo(singlerollweight2) > 0){
+                                }else{
+                                    a = alloystatus1.compareTo(alloystatus2);
+                                }
+                            }else{
+                                if(thickness1.compareTo(thickness2) > 0){
                                     a = -1;
                                 }else{
                                     a = 1;
                                 }
-                            }else{
-                                a = alloystatus1.compareTo(alloystatus2);
                             }
                         }else{
-                            if(thickness1.compareTo(thickness2) > 0){
+                            if(prowidth1.compareTo(prowidth2) > 0){
                                 a = -1;
                             }else{
                                 a = 1;
                             }
                         }
                     }else{
-                        if(prowidth1.compareTo(prowidth2) > 0){
-                            a = -1;
-                        }else{
-                            a = 1;
-                        }
+                        a = producttype1.compareTo(producttype2);
                     }
                 }else{
-                    a = producttype1.compareTo(producttype2);
+                    a = alloy1.compareTo(alloy2);
                 }
             }else{
-                a = alloy1.compareTo(alloy2);
+                a = v1.getCdbs().compareTo(v2.getCdbs());
             }
             return a;
         });
@@ -495,13 +500,16 @@ public class ApsServiceImpl implements ApsService {
         apsBlankOrders.forEach((bo)->{
             blankOrderIds.add(bo.getId());
         });
-        processOperationProcessEquService.update(new LambdaUpdateWrapper<ApsProcessOperationProcessEquDo>().set(ApsProcessOperationProcessEquDo::getLockmark,"n")
-                .in(ApsProcessOperationProcessEquDo::getBlankid,blankOrderIds));
         // 更新待排程的锁定的作业
         if(blankOrderIds != null && blankOrderIds.size()>0){
             String blankidStrs = CollUtil.join(blankOrderIds, "','");
             blankidStrs = "'" + blankidStrs + "'";
             apsBlankOrderDao.setLockMarkNullByToAps(blankidStrs);
+
+            // 更新排程明细数据锁定状态为否
+            /*processOperationProcessEquService.update(new LambdaUpdateWrapper<ApsProcessOperationProcessEquDo>().set(ApsProcessOperationProcessEquDo::getLockmark,"n")
+                    .in(ApsProcessOperationProcessEquDo::getBlankid,blankOrderIds));*/
+            apsBlankOrderDao.setProDetailLockMark(blankidStrs);
         }
         // 排程
         List<ProductionScheduleVo> productionScheduleVos = new ArrayList<>();

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

@@ -135,8 +135,8 @@ public class ApsProcessOperationProcessEquDo extends BaseDo {
     private String waitreportid;
     /**
      * 是否锁定 y:锁定,n:未锁定
+     * 批量排程时需要使用
      */
-    @Deprecated
     @TableField("LOCKMARK")
     private String lockmark;
     /**

+ 2 - 0
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/vo/ApsBlankOrderVo.java

@@ -12,4 +12,6 @@ public class ApsBlankOrderVo extends ApsBlankOrderDo {
 
     private Integer deliverytime;
 
+    private Integer cdbs;
+
 }