Browse Source

feature 代码提交

xiahan 1 year ago
parent
commit
e69fd2f704

+ 38 - 2
bs-common/src/main/java/com/rongwei/safecommon/utils/SaveConstans.java

@@ -555,10 +555,46 @@ public class SaveConstans {
     /**
      * 坯料计划生产状态
      */
-    public static class ProductionStatus{
-        public static final String TO_BE_SCHEDULED ="10";
+    public static class ProductionStatus {
+        /**
+         * 已完工
+         */
+        public static final String COMPLETED = "50";
+        /**
+         * 加工中
+         */
+        public static final String PROCESSING = "40";
+        /**
+         * 待开工
+         */
+        public static final String TO_BE_STARTED = "30";
+        /**
+         * 待发布
+         */
+        public static final String TO_BE_PUBLISHED = "20";
+        /**
+         * 待排程
+         */
+        public static final String TO_BE_SCHEDULED = "10";
     }
 
+    /**
+     * 生产状态
+     */
+    public static class SchedulingStatus {
+        /**
+         * 已发布
+         */
+        public static final String PUBLISHED = "30";
+        /**
+         * 待发布
+         */
+        public static final String TO_BE_PUBLISHED = "20";
+        /**
+         * 待排程
+         */
+        public static final String TO_BE_SCHEDULED = "10";
+    }
     /**
      * 作业状态
      */

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

@@ -43,6 +43,8 @@ public interface ApsBlankOrderDao extends BaseMapper<ApsBlankOrderDo> {
 
     void publish(@Param("productionOrderIds") List<String> productionOrderIds);
 
+    void publishCancel(@Param("productionOrderIds") List<String> productionOrderIds);
+
     @Update("update aps_process_operation set PROCESSSTATUS = '20' where PROCESSSTATUS = '10' AND BLANKID IN (select ID from aps_blank_order where DELETED = 0 AND PRODUCTIONORDERID in (${orderIds}))")
     void publishUnlock(@Param("ids") List<String> ids);
 

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

@@ -39,7 +39,9 @@ import static com.rongwei.bscommon.sys.service.impl.ApsProductionOrderServiceImp
 import static com.rongwei.safecommon.utils.SaveConstans.JobStatus.JOBSTATUS_TO_BE_START;
 import static com.rongwei.safecommon.utils.SaveConstans.LockmarkType.LOCKMARK_N;
 import static com.rongwei.safecommon.utils.SaveConstans.LockmarkType.LOCKMARK_Y;
-import static com.rongwei.safecommon.utils.SaveConstans.ProductionStatus.TO_BE_SCHEDULED;
+import static com.rongwei.safecommon.utils.SaveConstans.ProductionStatus.*;
+import static com.rongwei.safecommon.utils.SaveConstans.SchedulingStatus.PUBLISHED;
+import static com.rongwei.safecommon.utils.SaveConstans.SchedulstatusTyep.SCHEDULSTATUS_TORELEASE;
 
 /**
  * <p>
@@ -133,25 +135,25 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
 
     @Override
     public void updateBlankJobStatusByProductProcessId(String productProcessId) {
-        //查询工序作业所属坯料的所有工序作业最小生产状态和最大生产状态
-        BlankIdAndProcessStatusVo vo = this.baseMapper.selectProcessStatusByProcessId(productProcessId);
-        //判断
-        ApsBlankOrderDo apsBlankOrderDo = new ApsBlankOrderDo();
-        apsBlankOrderDo.setId(vo.getBlankId());
-        //如果作业最大生产状态<加工中(40),则作业状态=待开工
-        if(Integer.parseInt(vo.getMaxProcessStatus()) < 40){
-            apsBlankOrderDo.setSchedulingstatus(JOBSTATUS_TO_BE_START);
-        }
-        //如果作业最小生产状态=已完工(50),则作业状态=已完工
-        if (vo.getMinProcessStatus().equals("50")) {
-            apsBlankOrderDo.setSchedulingstatus(SaveConstans.JobStatus.JOBSTATUS_TO_BE_END);
-        }
-        //如果作业最大生产状态>=加工中(40),并且作业最小生产状态<已完工(50),则作业状态=加工中
-        if (Integer.parseInt(vo.getMaxProcessStatus()) >= 40 && Integer.parseInt(vo.getMinProcessStatus()) < 50) {
-            apsBlankOrderDo.setSchedulingstatus(SaveConstans.JobStatus.JOBSTATUS_TO_BE_STARTING);
-        }
-        //更新坯料计划的作业状态
-        this.updateById(apsBlankOrderDo);
+//        //查询工序作业所属坯料的所有工序作业最小生产状态和最大生产状态
+//        BlankIdAndProcessStatusVo vo = this.baseMapper.selectProcessStatusByProcessId(productProcessId);
+//        //判断
+//        ApsBlankOrderDo apsBlankOrderDo = new ApsBlankOrderDo();
+//        apsBlankOrderDo.setId(vo.getBlankId());
+//        //如果作业最大生产状态<加工中(40),则作业状态=待开工
+//        if(Integer.parseInt(vo.getMaxProcessStatus()) < 40){
+//            apsBlankOrderDo.setSchedulingstatus(JOBSTATUS_TO_BE_START);
+//        }
+//        //如果作业最小生产状态=已完工(50),则作业状态=已完工
+//        if (vo.getMinProcessStatus().equals("50")) {
+//            apsBlankOrderDo.setSchedulingstatus(SaveConstans.JobStatus.JOBSTATUS_TO_BE_END);
+//        }
+//        //如果作业最大生产状态>=加工中(40),并且作业最小生产状态<已完工(50),则作业状态=加工中
+//        if (Integer.parseInt(vo.getMaxProcessStatus()) >= 40 && Integer.parseInt(vo.getMinProcessStatus()) < 50) {
+//            apsBlankOrderDo.setSchedulingstatus(SaveConstans.JobStatus.JOBSTATUS_TO_BE_STARTING);
+//        }
+//        //更新坯料计划的作业状态
+//        this.updateById(apsBlankOrderDo);
     }
 
     @Override
@@ -184,7 +186,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
         // 更新坯料计划的生产状态为已发布
         this.update(new LambdaUpdateWrapper<ApsBlankOrderDo>().in(ApsBlankOrderDo::getId, blankIds)
                 .set(ApsBlankOrderDo::getProductstatus, "30")
-                .set(ApsBlankOrderDo::getSchedulingstatus, JOBSTATUS_TO_BE_START)
+                .set(ApsBlankOrderDo::getSchedulingstatus, PUBLISHED)
                 .set(ApsBlankOrderDo::getLockmark, LOCKMARK_Y));
         // 更新坯料计划对应工序作业的状态为待开工
         apsProcessOperationService.update(new LambdaUpdateWrapper<ApsProcessOperationDo>()
@@ -234,7 +236,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
         // 更新坯料计划的生产状态为已发布
         this.update(new LambdaUpdateWrapper<ApsBlankOrderDo>().in(ApsBlankOrderDo::getId, blankIds)
                 .set(ApsBlankOrderDo::getProductstatus, "20")
-                .set(ApsBlankOrderDo::getSchedulingstatus, JOBSTATUS_TO_BE_START)
+                .set(ApsBlankOrderDo::getSchedulingstatus, TO_BE_PUBLISHED)
                 .set(ApsBlankOrderDo::getLockmark, LOCKMARK_N));
         // 更新坯料计划对应工序作业的状态为待开工
         apsProcessOperationService.update(new LambdaUpdateWrapper<ApsProcessOperationDo>()
@@ -527,7 +529,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
                         apsProductionOrderDo.setScheduledeliverydate(DateUtil.offsetHour(v, productionOrderDo.getDeliverytime()));
                     }
                     // 排程状态更新为待发布
-                    apsProductionOrderDo.setSchedulstatus(SaveConstans.SchedulstatusTyep.SCHEDULSTATUS_TORELEASE);
+                    apsProductionOrderDo.setSchedulstatus(SCHEDULSTATUS_TORELEASE);
                     apsProductionOrderService.updateById(apsProductionOrderDo);
                 });
             }
@@ -1023,15 +1025,16 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
         this.baseMapper.updateProcessOperationByOrderIds(idStrs);
         //更新所有坯料计划的生产状态
         ApsBlankOrderDo apsBlankOrderDo = new ApsBlankOrderDo();
-        apsBlankOrderDo.setProductstatus("20");
+        apsBlankOrderDo.setProductstatus(TO_BE_PUBLISHED);
+        apsBlankOrderDo.setSchedulingstatus(SaveConstans.SchedulingStatus.TO_BE_PUBLISHED);
         this.update(apsBlankOrderDo, new QueryWrapper<ApsBlankOrderDo>().lambda().in(ApsBlankOrderDo::getProductionorderid, orderIds).eq(ApsBlankOrderDo::getProductstatus, "10"));
         //更新所有产品明细的生产状态
         ApsProductDetailDo apsProductDetailDo = new ApsProductDetailDo();
-        apsBlankOrderDo.setProductstatus("20");
+        apsBlankOrderDo.setProductstatus(TO_BE_PUBLISHED);
         apsProductDetailService.update(apsProductDetailDo, new QueryWrapper<ApsProductDetailDo>().lambda().in(ApsProductDetailDo::getMainid, orderIds).eq(ApsProductDetailDo::getProductstatus, "10"));
         //更新订单的生产状态
         ApsProductionOrderDo apsProductionOrderDo = new ApsProductionOrderDo();
-        apsProductionOrderDo.setProductionstatus("20");
+        apsProductionOrderDo.setProductionstatus(TO_BE_PUBLISHED);
         apsProductionOrderService.update(apsProductionOrderDo, new QueryWrapper<ApsProductionOrderDo>().lambda().in(ApsProductionOrderDo::getId, orderIds).eq(ApsProductionOrderDo::getProductionstatus, "10"));
     }
 

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

@@ -20,6 +20,8 @@ import java.util.LinkedList;
 import java.util.List;
 import java.util.stream.Collectors;
 
+import static com.rongwei.safecommon.utils.SaveConstans.ProductionStatus.*;
+
 /**
  *
  */
@@ -167,13 +169,13 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
         //更新工序作业的生产状态
         //开工和报工检验后,生产状态=作业状态(先更新作业状态)
         if (apsProcessOperationDo.getWorkstatus().equals("待开工")) {
-            apsProcessOperationDo.setProcessstatus("30");
+            apsProcessOperationDo.setProcessstatus(TO_BE_STARTED);
         }
         if (apsProcessOperationDo.getWorkstatus().equals("加工中")) {
-            apsProcessOperationDo.setProcessstatus("40");
+            apsProcessOperationDo.setProcessstatus(PROCESSING);
         }
         if (apsProcessOperationDo.getWorkstatus().equals("已完工")) {
-            apsProcessOperationDo.setProcessstatus("50");
+            apsProcessOperationDo.setProcessstatus(COMPLETED);
         }
         apsProcessOperationDo.setId(processId);
         apsProcessOperationService.updateById(apsProcessOperationDo);

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

@@ -866,7 +866,7 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
         apsProcessOperationProcessEquBackupDao.deletedByBlankId(null,factoryId);
         List<ApsProcessOperationDo> apsProcessOperationDos = apsProcessOperationDao.selectList(
                 new LambdaQueryWrapper<ApsProcessOperationDo>()
-                .in(ApsProcessOperationDo::getProcessstatus, "20", "30", "40"));
+                .in(ApsProcessOperationDo::getProcessstatus, "20"));
         // 再备份
         List<String> collect = apsProcessOperationDos.stream().map(ApsProcessOperationDo::getId).collect(Collectors.toList());
         apsProcessOperationBackupDao.processOperationBackup(collect,

+ 1 - 1
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsProductionOrderServiceImpl.java

@@ -89,7 +89,7 @@ public class ApsProductionOrderServiceImpl extends ServiceImpl<ApsProductionOrde
         apsProcessOperationDao.publishCancel(productionOrderIds);
         apsProcessOperationProcessEquDao.publishCancel(productionOrderIds);
         // 更新坯料计划的生产状态
-        apsBlankOrderDao.publish(productionOrderIds);
+        apsBlankOrderDao.publishCancel(productionOrderIds);
         // 更新产品明细的生产状态
         apsProductDetailDao.publish(productionOrderIds);
         // 更新订单的生产状态

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

@@ -236,13 +236,15 @@ public class ReportCheckServiceImpl implements ReportCheckService {
                 apsProcessOperationProcessEquService.updateAboutStateByProcessId(allNextProcessOperationById);
             }
         }
+        // 更新坯料计划的作业状态
+
         CommonUpdateProductionStatusReq req= new CommonUpdateProductionStatusReq();
         req.setProcessOperationEquId(processOperationEquId);
+        req.setProcessOperationId(currentProcessOperationMainDo.getId());
+        req.setOrderId(productionOrderDo.getId());
+        req.setBlankId(blankOrderDo.getId());
         // 更新
         apsProcessOperationProcessEquService.updateProductionStatus(req);
-        // 更新坯料计划的作业状态
-        apsBlankOrderDao.reportCheckUpdateJobStatus(blankOrderDo.getId());
-
         return R.ok();
     }
 

+ 59 - 17
cx-aps/cx-aps-common/src/main/resources/mybatis/ApsBlankOrderDao.xml

@@ -64,28 +64,70 @@
         <if test="productionOrderIds != null and productionOrderIds.size() >0">
             UPDATE aps_blank_order b
                 <set>
-                    PRODUCTSTATUS=(select min(PROCESSSTATUS) from aps_process_operation a where a.BLANKID = b.ID and deleted='0'
-                group by a.BLANKID )
+                    PRODUCTSTATUS=(select
+                    CASE
+                    WHEN GROUP_CONCAT(DISTINCT a.PROCESSSTATUS) = '10' THEN '10'
+                    WHEN GROUP_CONCAT(DISTINCT a.PROCESSSTATUS) = '20' THEN '20'
+                    WHEN GROUP_CONCAT(DISTINCT a.PROCESSSTATUS) = '30' THEN '30'
+                    WHEN GROUP_CONCAT(DISTINCT a.PROCESSSTATUS) = '40' THEN '40'
+                    WHEN GROUP_CONCAT(DISTINCT a.PROCESSSTATUS) = '50' THEN '50'
+                    WHEN FIND_IN_SET('40',GROUP_CONCAT(DISTINCT a.PROCESSSTATUS)) THEN '40'
+                    WHEN FIND_IN_SET('30',GROUP_CONCAT(DISTINCT a.PROCESSSTATUS)) THEN '30'
+                    WHEN FIND_IN_SET('20',GROUP_CONCAT(DISTINCT a.PROCESSSTATUS)) THEN '20'
+                    ELSE b.PRODUCTSTATUS END
+                    END
+                    from aps_process_operation a where a.BLANKID = b.ID and deleted='0'
+                    ),
+                    SCHEDULINGSTATUS="30"
                 </set>
-                <where>
-                    AND DELETED='0'
-                    AND PRODUCTIONORDERID in
-                    <foreach collection="productionOrderIds" item="id" open="(" close=")" separator=",">
-                        #{id}
-                    </foreach>
-                </where>
+            <where>
+                AND DELETED='0'
+                AND PRODUCTIONORDERID in
+                <foreach collection="productionOrderIds" item="id" open="(" close=")" separator=",">
+                    #{id}
+                </foreach>
+            </where>
+        </if>
+    </update>
+    <update id="publishCancel">
+        <if test="productionOrderIds != null and productionOrderIds.size() >0">
+            UPDATE aps_blank_order b
+            <set>
+                PRODUCTSTATUS= PRODUCTSTATUS=(select
+                CASE
+                WHEN GROUP_CONCAT(DISTINCT a.PROCESSSTATUS) = '10' THEN '10'
+                WHEN GROUP_CONCAT(DISTINCT a.PROCESSSTATUS) = '20' THEN '20'
+                WHEN GROUP_CONCAT(DISTINCT a.PROCESSSTATUS) = '30' THEN '30'
+                WHEN GROUP_CONCAT(DISTINCT a.PROCESSSTATUS) = '40' THEN '40'
+                WHEN GROUP_CONCAT(DISTINCT a.PROCESSSTATUS) = '50' THEN '50'
+                WHEN FIND_IN_SET('50',GROUP_CONCAT(DISTINCT a.PROCESSSTATUS)) THEN '40'
+                WHEN FIND_IN_SET('40',GROUP_CONCAT(DISTINCT a.PROCESSSTATUS)) THEN '40'
+                WHEN FIND_IN_SET('30',GROUP_CONCAT(DISTINCT a.PROCESSSTATUS)) THEN '30'
+                WHEN FIND_IN_SET('20',GROUP_CONCAT(DISTINCT a.PROCESSSTATUS)) THEN '20'
+                ELSE b.PRODUCTSTATUS END
+                from aps_process_operation a where a.BLANKID = b.ID and deleted='0'
+                ),),
+                SCHEDULINGSTATUS= "20"
+            </set>
+            <where>
+                AND DELETED='0'
+                AND PRODUCTIONORDERID in
+                <foreach collection="productionOrderIds" item="id" open="(" close=")" separator=",">
+                    #{id}
+                </foreach>
+            </where>
         </if>
     </update>
     <update id="cancelSchedulingUpdate">
         <if test="idList != null and idList.size() >0">
-                update aps_blank_order a
-                <set>
-                    LOCKMARK='n',
-                    PRODUCTSTATUS='10',
-                    SCHEDULINGSTATUS='10'
-                </set>
-                <where>
-                    DELETED='0'
+            update aps_blank_order a
+            <set>
+                LOCKMARK='n',
+                PRODUCTSTATUS='10',
+                SCHEDULINGSTATUS='10'
+            </set>
+            <where>
+                DELETED='0'
                     AND ID in
                     <foreach collection="idList" item="id" open="(" close=")" separator=",">
                         #{id}

+ 1 - 1
cx-aps/cx-aps-common/src/main/resources/mybatis/ApsProcessOperationBackupDao.xml

@@ -173,7 +173,7 @@
                 OUTPUTQUALIFIEDNUM,OUTPUTUNQUALIFIEDNUM,CHANGEINMETER,
                 SINGLEROLLWEIGHT,LOCKMARK ,#{userName} AS BACKUPUSER ,#{userId} AS BACKUPUSERID,NOW() AS BACKUPDATE
                 FROM aps_process_operation
-                WHERE ID=#{id} and PROCESSSTATUS in('20','30','40')
+                WHERE ID=#{id} and PROCESSSTATUS = '20'
                 ON DUPLICATE KEY UPDATE DELETED='0'
             </foreach>
         </if>

+ 16 - 4
cx-aps/cx-aps-common/src/main/resources/mybatis/ApsProductDetailDao.xml

@@ -58,15 +58,27 @@
     <update id="publish">
         <if test="productionOrderIds != null and productionOrderIds.size() >0">
             <foreach collection="productionOrderIds"  item="id" separator=";">
-                update aps_product_detail  set PRODUCTSTATUS=
-                    (SELECT
-                MIN(PROCESSSTATUS)
+                update aps_product_detail b set PRODUCTSTATUS=
+                (
+                SELECT
+                CASE
+                    WHEN GROUP_CONCAT(DISTINCT apo.PROCESSSTATUS) = '10' THEN '10'
+                    WHEN GROUP_CONCAT(DISTINCT apo.PROCESSSTATUS) = '20' THEN '20'
+                    WHEN GROUP_CONCAT(DISTINCT apo.PROCESSSTATUS) = '30' THEN '30'
+                    WHEN GROUP_CONCAT(DISTINCT apo.PROCESSSTATUS) = '40' THEN '40'
+                    WHEN GROUP_CONCAT(DISTINCT apo.PROCESSSTATUS) = '50' THEN '50'
+                    WHEN FIND_IN_SET('50',GROUP_CONCAT(DISTINCT apo.PROCESSSTATUS)) THEN '40'
+                    WHEN FIND_IN_SET('40',GROUP_CONCAT(DISTINCT apo.PROCESSSTATUS)) THEN '40'
+                    WHEN FIND_IN_SET('30',GROUP_CONCAT(DISTINCT apo.PROCESSSTATUS)) THEN '30'
+                    WHEN FIND_IN_SET('20',GROUP_CONCAT(DISTINCT apo.PROCESSSTATUS)) THEN '20'
+                    ELSE b.PRODUCTSTATUS
+                END
                 FROM
                 aps_process_operation apo
                 LEFT JOIN aps_blank_order abo ON apo.BLANKID = abo.ID AND abo.DELETED='0'
                 where apo.DELETED='0'
                 and abo.PRODUCTIONORDERID =#{id}
-                GROUP BY abo.PRODUCTIONORDERID)
+                )
                 WHERE MAINID=#{id}
             </foreach>
         </if>

+ 30 - 7
cx-aps/cx-aps-common/src/main/resources/mybatis/ApsProductionOrderDao.xml

@@ -122,16 +122,27 @@
     <update id="publish">
         <if test="ids != null and ids.size() >0">
             <foreach collection="ids" item="id" separator=";">
-                update aps_production_order
+                update aps_production_order b
                 <set>
-                    PRODUCTIONSTATUS=(SELECT
-                    MIN(PROCESSSTATUS)
+                    PRODUCTIONSTATUS=(
+                    SELECT
+                    CASE
+                    WHEN GROUP_CONCAT(DISTINCT apo.PROCESSSTATUS) = '10' THEN '10'
+                    WHEN GROUP_CONCAT(DISTINCT apo.PROCESSSTATUS) = '20' THEN '20'
+                    WHEN GROUP_CONCAT(DISTINCT apo.PROCESSSTATUS) = '30' THEN '30'
+                    WHEN GROUP_CONCAT(DISTINCT apo.PROCESSSTATUS) = '40' THEN '40'
+                    WHEN GROUP_CONCAT(DISTINCT apo.PROCESSSTATUS) = '50' THEN '50'
+                    WHEN FIND_IN_SET('40',GROUP_CONCAT(DISTINCT apo.PROCESSSTATUS)) THEN '40'
+                    WHEN FIND_IN_SET('30',GROUP_CONCAT(DISTINCT apo.PROCESSSTATUS)) THEN '30'
+                    WHEN FIND_IN_SET('20',GROUP_CONCAT(DISTINCT apo.PROCESSSTATUS)) THEN '20'
+                    ELSE b.PRODUCTSTATUS END
                     FROM
                     aps_process_operation apo
                     LEFT JOIN aps_blank_order abo ON apo.BLANKID = abo.ID AND abo.DELETED='0'
                     where apo.DELETED='0'
                     and abo.PRODUCTIONORDERID =#{id}
-                    GROUP BY abo.PRODUCTIONORDERID),
+                    GROUP BY abo.PRODUCTIONORDERID
+                    ),
                     SCHEDULSTATUS='已发布'
                 </set>
                 <where>
@@ -143,10 +154,22 @@
     <update id="publishCancel">
         <if test="ids != null and ids.size() >0">
             <foreach collection="ids" item="id" separator=";">
-                update aps_production_order
+                update aps_production_order b
                 <set>
-                    PRODUCTIONSTATUS=(SELECT
-                    MIN(PROCESSSTATUS)
+                    PRODUCTIONSTATUS=(
+                    SELECT
+                    CASE
+                        WHEN GROUP_CONCAT(DISTINCT apo.PROCESSSTATUS) = '10' THEN '10'
+                        WHEN GROUP_CONCAT(DISTINCT apo.PROCESSSTATUS) = '20' THEN '20'
+                        WHEN GROUP_CONCAT(DISTINCT apo.PROCESSSTATUS) = '30' THEN '30'
+                        WHEN GROUP_CONCAT(DISTINCT apo.PROCESSSTATUS) = '40' THEN '40'
+                        WHEN GROUP_CONCAT(DISTINCT apo.PROCESSSTATUS) = '50' THEN '50'
+                        WHEN FIND_IN_SET('50',GROUP_CONCAT(DISTINCT apo.PROCESSSTATUS)) THEN '40'
+                        WHEN FIND_IN_SET('40',GROUP_CONCAT(DISTINCT apo.PROCESSSTATUS)) THEN '40'
+                        WHEN FIND_IN_SET('30',GROUP_CONCAT(DISTINCT apo.PROCESSSTATUS)) THEN '30'
+                        WHEN FIND_IN_SET('20',GROUP_CONCAT(DISTINCT apo.PROCESSSTATUS)) THEN '20'
+                        ELSE b.PRODUCTSTATUS
+                    END
                     FROM
                     aps_process_operation apo
                     LEFT JOIN aps_blank_order abo ON apo.BLANKID = abo.ID AND abo.DELETED='0'