瀏覽代碼

aps-合并工序开工相关优化

sucheng 1 年之前
父節點
當前提交
a083a4a957

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

@@ -63,8 +63,8 @@ public interface ApsProcessOperationProcessEquDao extends BaseMapper<ApsProcessO
     @Update("update aps_process_operation_process_equ set STARTINGROLL = STARTINGROLL - 1,WAITREPORTID = null,DOINGBATCHNUMBER = '' where ID = #{processequid}")
     void updateByCancelRecord(@Param("processequid") String processequid);
 
-    @Update("update asp_check_items set WAITREPORTID = null where ID = #{deviceId}")
-    void updateEquByCancelRecord(@Param("deviceId") String deviceId);
+    @Update("update asp_check_items set WAITREPORTID = REPLACE(REPLACE(REPLACE(WAITREPORTID,'${recordId},',''),',${recordId}',''),'${recordId}','') where ID = #{deviceId}")
+    void updateEquByCancelRecord(@Param("recordId") String recordId,@Param("deviceId") String deviceId);
 
     List<CommonUpdateProductionStatusReq> selectNeedUpdate(@Param("productIdList") List<String> productIdList);
 

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

@@ -122,7 +122,7 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
         ApsProcessOperationProcessEquDo equDo = apsProcessOperationProcessEquDao.selectById(processequid);
 
         //更新设备的待报工记录ID
-        apsProcessOperationProcessEquDao.updateEquByCancelRecord(equDo.getProcessdeviceid());
+        apsProcessOperationProcessEquDao.updateEquByCancelRecord(recordId, equDo.getProcessdeviceid());
 
         //作业明细的作业状态
         /**
@@ -186,11 +186,7 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
     @Transactional
     public R startReport(StartRePortReq req) {
 
-//        //根据设备ID查询对应车间代号和设备代号
-//        OrganizationCodeAndDeviceCodeVo organizationCodeAndDeviceCodeVo = this.baseMapper.selectOrganizationCodeAndDeviceCode(req.getProcessdeviceid());
-//        if(ObjectUtil.isEmpty(organizationCodeAndDeviceCodeVo)){
-//            return R.error("未找到对应的车间代号和设备代号");
-//        }
+
         //根据作业明细ID查询作业明细详情
         ApsProcessOperationProcessEquDo apsProcessOperationProcessEquDo = apsProcessOperationProcessEquService.getById(req.getUseDeviceId());
         //查询工序作业的详情
@@ -200,6 +196,25 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
         //查询订单的详情
         ApsProductionOrderDo apsProductionOrderDo = apsProductionOrderService.getById(apsBlankOrderDo.getProductionorderid());
 
+        //根据设备ID查询对应车间代号和设备代号
+        OrganizationCodeAndDeviceCodeVo organizationCodeAndDeviceCodeVo = this.baseMapper.selectOrganizationCodeAndDeviceCode(apsProcessOperationProcessEquDo.getProcessdeviceid());
+        if (ObjectUtil.isEmpty(organizationCodeAndDeviceCodeVo) || ObjectUtil.isEmpty(organizationCodeAndDeviceCodeVo.getDeviceCode()) || ObjectUtil.isEmpty(organizationCodeAndDeviceCodeVo.getOrganizationCode())) {
+            return R.error("未找到对应的车间代号和设备代号");
+        }
+        //设备的待加工ID
+        String waitReportId = organizationCodeAndDeviceCodeVo.getWaitReportId();
+        //如果工序作业加工设备已有其他作业状态为已开工,错误提示:该设备当前加工中的作业还未报工,不能开工新的作业
+        if (ObjectUtil.isNotEmpty(waitReportId)) {
+            //查询当前报工的工序作业明细详情
+            ApsReportRecordsDo apsReportRecordsDo = this.getById(waitReportId);
+            String processequid = apsReportRecordsDo.getProcessequid();
+            ApsProcessOperationProcessEquDo doingProcessEqu = apsProcessOperationProcessEquService.getById(processequid);
+            //计划开工时间不相等,表示不是合并工序
+            if (doingProcessEqu.getPlanstartdate().compareTo(apsProcessOperationProcessEquDo.getPlanstartdate()) != 0) {
+                return R.error("该设备当前加工中的作业还未报工,不能开工新的作业");
+            }
+        }
+
 
         //获取当前用户相关信息
         SysUserVo currentUser = CXCommonUtils.getCurrentUser();
@@ -279,7 +294,11 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
         this.baseMapper.updateProcessActualStartDate(apsProcessOperationDo.getId());
 
         //=============更新设备的报工记录ID=============
-        this.baseMapper.updateDeviceWaitReportId(apsReportRecordsDo.getId(), apsProcessOperationProcessEquDo.getProcessdeviceid());
+        String newWaitReportId = "";
+        if (ObjectUtil.isNotEmpty(waitReportId)) {
+            newWaitReportId = waitReportId + "," + apsReportRecordsDo.getId();
+        }
+        this.baseMapper.updateDeviceWaitReportId(newWaitReportId, apsProcessOperationProcessEquDo.getProcessdeviceid());
 
         //==========输入物料有批次号==============
         if (ObjectUtil.isNotEmpty(req.getInputBatchNumber())) {
@@ -515,7 +534,7 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
         this.baseMapper.updateProcessReportRoll(apsProcessOperationDo.getId());
 
         //=============更新设备的报工记录ID===========
-        this.baseMapper.updateDeviceWorkId(apsProcessOperationProcessEquDo.getProcessdeviceid());
+        apsProcessOperationProcessEquDao.updateEquByCancelRecord(apsReportRecordsDo.getId(), apsProcessOperationProcessEquDo.getProcessdeviceid());
 
         //============保存(报工)时,生成炉号和批次号=============
         //获取设备/炉 的炉号(每月、每个设备/炉 更新)