Browse Source

feature 报工校验增加更新坯料计划作业状态的代码

xiahan 1 year ago
parent
commit
a48e24e86b

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

@@ -9,7 +9,6 @@ import org.apache.ibatis.annotations.Select;
 import org.apache.ibatis.annotations.Update;
 
 import java.util.List;
-import java.util.Set;
 
 /**
  * <p>
@@ -44,4 +43,8 @@ public interface ApsBlankOrderDao extends BaseMapper<ApsBlankOrderDo> {
 
     @Update("update aps_process_operation set PROCESSSTATUS = '20' where BLANKID IN (select ID from aps_blank_order where DELETED = 0 AND PRODUCTIONORDERID in (${orderIds}))")
     void updateProcessOperationByOrderIds(@Param("orderIds") String orderIds);
+
+    void cancelSchedulingUpdate(@Param("idList") List<String> idList);
+
+    void reportCheckUpdateJobStatus(@Param("id") String id);
 }

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

@@ -45,4 +45,6 @@ public interface ApsProductDetailDao extends BaseMapper<ApsProductDetailDo> {
     List<ApsCustomerManagementDo> getCustomerData();
 
     void publish(@Param("productionOrderIds") List<String> productionOrderIds);
+
+    void updateProductstatus(@Param("productionOrderIds") List<String> productionOrderIds);
 }

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

@@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.google.common.collect.Lists;
 import com.rongwei.bscommon.sys.dao.*;
 import com.rongwei.bscommon.sys.fegin.RwApsServer;
 import com.rongwei.bscommon.sys.service.*;
@@ -69,7 +70,8 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
     private ApsProductionOrderDao apsProcessOperationDao;
     @Autowired
     private ApsProductDetailService apsProductDetailService;
-
+    @Autowired
+    private ApsProductDetailDao apsProductDetailDao;
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void test() {
@@ -99,7 +101,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
         // 校验取消的订单中是否存在已加工的工序作业
         List<String> startWorkOrderNo = apsProcessOperationDao.getStartWorkById(apsProductionOrderIds);
         if (!startWorkOrderNo.isEmpty()){
-            throw new CustomException(CollUtil.join(startWorkOrderNo, ",")+" 以上订单存在已开工的坯料计划!");
+            throw new CustomException(CollUtil.join(startWorkOrderNo, ",")+" 以上客户所对应的订单存在已开工的坯料计划,不可以取消排程=!");
         }
         List<String> blankids = blankOrderDos.stream().map(ApsBlankOrderDo::getId).collect(Collectors.toList());
         // 删除工序作业和工序作业明备份数据
@@ -109,8 +111,6 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
         apsProcessOperationService.remove(new LambdaQueryWrapper<ApsProcessOperationDo>().in(ApsProcessOperationDo::getBlankid,blankids));
         // 清空作业明细
         processOperationProcessEquService.remove(new LambdaQueryWrapper<ApsProcessOperationProcessEquDo>().in(ApsProcessOperationProcessEquDo::getBlankid, blankids));
-        // 更新坯料计划状态
-
         // 更新订单的排程状态
         List<ApsProductionOrderDo> productionOrderDos = new ArrayList<>();
         for (String apsProductionOrderId : apsProductionOrderIds) {
@@ -118,22 +118,15 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
             productionOrderDo.setId(apsProductionOrderId);
             productionOrderDo.setSchedulstatus(SaveConstans.SchedulstatusTyep.SCHEDULSTATUS_TOSCHEDULE);
             productionOrderDo.setScheduledeliverydate(null);
+            productionOrderDo.setProductionstatus(TO_BE_SCHEDULED);
             productionOrderDos.add(productionOrderDo);
         }
-        if (productionOrderDos != null && productionOrderDos.size() > 0) {
-            apsProductionOrderService.updateBatchById(productionOrderDos);
-        }
-        // 更新坯料计划的锁定状态
-        List<ApsBlankOrderDo> updateBlanks = blankids.stream().map(str -> {
-            ApsBlankOrderDo blankOrderDo = new ApsBlankOrderDo();
-            blankOrderDo.setId(str);
-            blankOrderDo.setLockmark(SaveConstans.LockmarkType.LOCKMARK_N);
-            blankOrderDo.setProductstatus(TO_BE_SCHEDULED);
-            return blankOrderDo;
-        }).collect(Collectors.toList());
-        this.updateBatchById(updateBlanks);
-
-
+        // 更新生产订单的状态
+        apsProductionOrderService.updateBatchById(productionOrderDos);
+        // 更新坯料计划的状态
+        this.baseMapper.cancelSchedulingUpdate(blankids);
+        // 更新坯料计划产品明细的的生产状态
+        apsProductDetailDao.updateProductstatus(apsProductionOrderIds);
     }
 
     /**
@@ -332,6 +325,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
             }
 
         }
+
         backupProcessOperation(apsProcessOperationProcessEquDos, productionScheduleRetVo.getProcesses());
     }
 
@@ -355,10 +349,17 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
         apsProcessOperationBackupDao.deletedByBlankId(blankIdList);
         apsProcessOperationProcessEquBackupDao.deletedByBlankId(blankIdList);
         //增加备份
-        apsProcessOperationBackupDao.processOperationBackup(apsProcessOperationIds,
-                currentUser == null ? null : currentUser.getId(), currentUser == null ? null : currentUser.getName());
-        apsProcessOperationProcessEquBackupDao.processOperationEquBackup(apsProcessOperationProcessEquDos,
-                currentUser == null ? null : currentUser.getId(), currentUser == null ? null : currentUser.getName());
+        List<List<String>> partition1 = Lists.partition(apsProcessOperationIds, 500);
+        partition1.forEach(data->{
+            apsProcessOperationBackupDao.processOperationBackup(apsProcessOperationIds,
+                    currentUser == null ? null : currentUser.getId(), currentUser == null ? null : currentUser.getName());
+        });
+        List<List<ApsProcessOperationProcessEquDo>> partition = Lists.partition(apsProcessOperationProcessEquDos, 100);
+        partition.forEach(data->{
+            apsProcessOperationProcessEquBackupDao.processOperationEquBackup(apsProcessOperationProcessEquDos,
+                    currentUser == null ? null : currentUser.getId(), currentUser == null ? null : currentUser.getName());
+        });
+
     }
 
     /**

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

@@ -2,7 +2,7 @@ package com.rongwei.bscommon.sys.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
-import com.rongwei.bscommon.sys.service.ApsBlankOrderService;
+import com.rongwei.bscommon.sys.dao.ApsBlankOrderDao;
 import com.rongwei.bscommon.sys.service.ApsReportRecordsService;
 import com.rongwei.bscommon.sys.service.ReportCheckService;
 import com.rongwei.bsentity.domain.*;
@@ -41,7 +41,7 @@ public class ReportCheckServiceImpl implements ReportCheckService {
     @Autowired
     private ApsProcessOperationServiceImpl apsProcessOperationService;
     @Autowired
-    private ApsBlankOrderService apsBlankOrderService;
+    private ApsBlankOrderDao apsBlankOrderDao;
     @Autowired
     private ApsProductionOrderServiceImpl apsProductionOrderService;
     @Autowired
@@ -119,7 +119,7 @@ public class ReportCheckServiceImpl implements ReportCheckService {
             return R.error();
         }
         //获取批量计划
-        ApsBlankOrderDo blankOrderDo = apsBlankOrderService.getById(currentProcessOperationMainDo.getBlankid());
+        ApsBlankOrderDo blankOrderDo = apsBlankOrderDao.selectById(currentProcessOperationMainDo.getBlankid());
         if (blankOrderDo == null) {
             log.error("无法根据ID:{}找到对应的订单信息", currentProcessOperationMainDo.getBlankid());
             return R.error();
@@ -239,6 +239,9 @@ public class ReportCheckServiceImpl implements ReportCheckService {
         req.setProcessOperationEquId(processOperationEquId);
         // 更新
         apsProcessOperationProcessEquService.updateProductionStatus(req);
+        // 更新坯料计划的作业状态
+        apsBlankOrderDao.reportCheckUpdateJobStatus(blankOrderDo.getId());
+
         return R.ok();
     }
 

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

@@ -42,6 +42,7 @@
             <result property="craftrouteid" column="CRAFTROUTEID" jdbcType="VARCHAR"/>
             <result property="lockmark" column="LOCKMARK" jdbcType="VARCHAR"/>
             <result property="isstag" column="ISSTAG" jdbcType="VARCHAR"/>
+            <result property="jobstatus" column="JOBSTATUS" jdbcType="VARCHAR"/>
     </resultMap>
 
     <sql id="Base_Column_List">
@@ -57,7 +58,7 @@
         CREATEUSERID,MODIFYDATE,MODIFYUSERID,
         CREATEUSERNAME,MODIFYUSERNAME,PRODUCTTYPEID,
         INPUTREPORTDESCRIBE,CRAFTROUTEID,LOCKMARK,
-        ISSTAG
+        ISSTAG,JOBSTATUS
     </sql>
     <update id="publish">
         <if test="productionOrderIds != null and productionOrderIds.size() >0">
@@ -75,4 +76,33 @@
                 </where>
         </if>
     </update>
+    <update id="cancelSchedulingUpdate">
+        <if test="idList != null and idList.size() >0">
+                update aps_blank_order a
+                <set>
+                    LOCKMARK='n',
+                    PRODUCTSTATUS='10',
+                    JOBSTATUS='10'
+                </set>
+                <where>
+                    DELETED='0'
+                    AND ID
+                    <foreach collection="productionOrderIds" item="id" open="(" close=")" separator=",">
+                        #{id}
+                    </foreach>
+                </where>
+        </if>
+    </update>
+    <update id="reportCheckUpdateJobStatus">
+        update  aps_blank_order
+        <set>
+            JOBSTATUS = if((select GROUP_CONCAT(DISTINCT PROCESSSTATUS)='50' from aps_process_operation where
+            DELETED ='0' and BLANKID=#{id}),
+            '50',JOBSTATUS)
+        </set>
+        <where>
+            DELETED ='0'
+            AND ID=#{id}
+        </where>
+    </update>
 </mapper>

+ 13 - 0
cx-aps/cx-aps-common/src/main/resources/mybatis/ApsProductDetailDao.xml

@@ -71,4 +71,17 @@
             </foreach>
         </if>
     </update>
+    <update id="updateProductstatus">
+        <if test="productionOrderIds != null and productionOrderIds.size() >0">
+            update aps_product_detail set PRODUCTSTATUS ='10'
+            <where>
+                DELETED='0'
+                AND PRODUCTIONORDERID IN
+                <foreach collection="productionOrderIds" open="(" close=")" item="id" separator=";">
+                    #{id}
+                </foreach>
+            </where>
+
+        </if>
+    </update>
 </mapper>

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

@@ -162,7 +162,7 @@
         </if>
     </update>
     <select id="getStartWorkById" resultType="java.lang.String">
-        select DISTINCT apo.ORDERNO
+        select DISTINCT CONCAT( apo.CUSTOMNAME,'-',GROUP_CONCAT(DISTINCT apo.ORDERNO )  )
         from aps_production_order apo
         left join aps_blank_order abo on apo.ID=abo.PRODUCTIONORDERID AND abo.DELETED='0'
         left join aps_process_operation apo1 on apo1.BLANKID =abo.ID and apo1.DELETED='0'
@@ -176,5 +176,6 @@
             </if>
             and apo1.PROCESSSTATUS in ('40','50')
         </where>
+        group by apo.CUSTOMNAME
     </select>
 </mapper>

+ 10 - 0
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/domain/ApsBlankOrderDo.java

@@ -168,5 +168,15 @@ public class ApsBlankOrderDo extends BaseDo {
     @TableField("LOCKMARK")
     private String lockmark;
 
+    /**
+     * 是否暂存
+     */
+    @TableField("ISSTAG")
+    private String isstag;
 
+    /**
+     * 作业状态
+     */
+    @TableField("JOBSTATUS")
+    private String jobstatus;
 }