Quellcode durchsuchen

aps-开工和取消开工对序列号的还原操作

sucheng vor 1 Jahr
Ursprung
Commit
3cb0a86099

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

@@ -57,6 +57,9 @@ public interface ApsReportRecordsDao extends BaseMapper<ApsReportRecordsDo> {
 
     @Select("select * from aps_process_operation_process_equ where DELETED = 0 AND ID != #{id} AND PROCESSDEVICEID = #{processdeviceid} AND PLANSTARTDATE = #{planstartdate} AND (WAITREPORTID is null or WAITREPORTID = '') AND CLOSESTATUS = '未完工'")
     List<ApsProcessOperationProcessEquDo> selectOtherMergeProcessEqu(@Param("id") String id, @Param("processdeviceid") String processdeviceid, @Param("planstartdate") Date planstartdate);
+
+    @Select("select * from aps_process_operation_process_equ where DELETED = 0 AND ID != #{id} AND PROCESSDEVICEID = #{processdeviceid} AND PLANSTARTDATE = #{planstartdate} AND WAITREPORTID is not null AND WAITREPORTID != ''")
+    List<ApsProcessOperationProcessEquDo> selectOtherMergeProcessStarting(@Param("id") String id, @Param("processdeviceid") String processdeviceid, @Param("planstartdate") Date planstartdate);
 }
 
 

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

@@ -3,6 +3,8 @@ package com.rongwei.bscommon.sys.service.impl;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.rongwei.bscommon.sys.dao.*;
 import com.rongwei.bscommon.sys.service.*;
@@ -131,17 +133,16 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
          * 如果已开工卷数>0,并且完工状态=未完工,则=加工中;(先更新完工状态)
          * 如果未完工卷数=0,并且完工状态=已完工,则=已完工(先更新完工状态)
          */
-        ApsProcessOperationProcessEquDo apsProcessOperationProcessEquDo = new ApsProcessOperationProcessEquDo();
-        apsProcessOperationProcessEquDo.setId(equDo.getId());
+        LambdaUpdateWrapper<ApsProcessOperationProcessEquDo> set = new UpdateWrapper<ApsProcessOperationProcessEquDo>().lambda();
         if (equDo.getStartingroll() == 0) {
-            apsProcessOperationProcessEquDo.setWorkstatus("待开工");
-            apsProcessOperationProcessEquDo.setActualstartdate(null);
+            set.set(ApsProcessOperationProcessEquDo::getWorkstatus, "待开工");
+            set.set(ApsProcessOperationProcessEquDo::getActualstartdate, null);
         }
         if (equDo.getStartingroll() > 0 && equDo.getClosestatus().equals("未完工")) {
-            apsProcessOperationProcessEquDo.setWorkstatus("加工中");
+            set.set(ApsProcessOperationProcessEquDo::getWorkstatus, "加工中");
         }
         if (ObjectUtil.isNotEmpty(equDo.getUnfinishroll()) && equDo.getUnfinishroll() == 0) {
-            apsProcessOperationProcessEquDo.setWorkstatus("已完工");
+            set.set(ApsProcessOperationProcessEquDo::getWorkstatus, "已完工");
         }
 
         /**
@@ -172,18 +173,29 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
                 apsProcessOperationDao.updateBatchNumberByPrevious(recordsDo.getBatchnumber(), equDo.getPreviousprocessesids());
             }
         }
-
-        apsProcessOperationProcessEquDao.updateById(apsProcessOperationProcessEquDo);
+        set.eq(ApsProcessOperationProcessEquDo::getId, equDo.getId());
+        apsProcessOperationProcessEquService.update(set);
 
         //如果没有输入批次号,取消开工需要还原
         if (ObjectUtil.isEmpty(recordsDo.getBatchnumber())) {
             //如果开工时间是当前月,需要取消流水号
             if (DateUtil.month(recordsDo.getStartworktime()) == DateUtil.month(DateUtil.date())) {
-                //轧机/熔炉 对应炉号 流水号配置表中的值-1, 如果是铸轧,需要减去 输出物料的单卷数合计
+                //如果是铸轧,需要减去 输出物料的单卷数合计
                 this.cancelNumber(equDo);
             }
         }
 
+        //如果当前工序作业明细  不存在(其他合并工序作业明细,并且其他合并作业明细的 待报工记录ID 不为空) 则炉号-1
+        List<ApsProcessOperationProcessEquDo> equDoMergeStartingList = this.baseMapper.selectOtherMergeProcessStarting(equDo.getId(), equDo.getProcessdeviceid(), equDo.getPlanstartdate());
+        if (equDoMergeStartingList.size() <= 0) {
+            //炉号-1
+            //加工设备ID
+            String processdeviceid = equDo.getProcessdeviceid();
+            //在流水表中的 标识
+            String moduleCode = "aps_report_output_heat_" + processdeviceid;
+            apsProcessOperationProcessEquDao.updateSerialNumber(moduleCode, 1);
+        }
+
         //更新其余信息
         CommonUpdateProductionStatusReq commonUpdateProductionStatusReq = new CommonUpdateProductionStatusReq();
         commonUpdateProductionStatusReq.setProcessOperationEquId(equDo.getId());
@@ -193,12 +205,8 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
     }
 
     private void cancelNumber(ApsProcessOperationProcessEquDo equDo) {
-        //炉号-1
         //加工设备ID
         String processdeviceid = equDo.getProcessdeviceid();
-        //在流水表中的 标识
-        String moduleCode = "aps_report_output_heat_" + processdeviceid;
-        apsProcessOperationProcessEquDao.updateSerialNumber(moduleCode, 1);
 
         //查询坯料计划
         ApsBlankOrderDo apsBlankOrderDo = apsBlankOrderService.getById(equDo.getBlankid());
@@ -401,15 +409,28 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
         //============保存(报工)时,生成炉号和批次号=============
         //获取设备/炉 的炉号(每月、每个设备/炉 更新)
         String heatNumber;//初始化炉号
-        //调用通用接口生成炉号
-        SysSerialVo vo = new SysSerialVo();
-        vo.setModulecode("aps_report_output_heat_" + apsProcessOperationProcessEquDo.getProcessdeviceid());
-        vo.setRuleTemplateStr("@{serialNumber:#000}");
-        vo.setResetrule("date:yyyyMM");
-        vo.setIfautomaticreset("y");
-        vo.setInitValue(1L);
-        Map<String, Object> codeData = cxAdminFeginClient.getSerialNumberCode(vo).getData();
-        heatNumber = codeData.get("code").toString();
+        //如果存在其他合并工序,并且其他合并工序已开工,则不去生成新的 炉次号 使用其他合并工序的 开工记录的 炉次号
+        List<ApsProcessOperationProcessEquDo> apsProcessEquMergeStartingList = this.baseMapper.selectOtherMergeProcessStarting(apsProcessOperationProcessEquDo.getId(), apsProcessOperationProcessEquDo.getProcessdeviceid(), apsProcessOperationProcessEquDo.getPlanstartdate());
+
+        if (apsProcessEquMergeStartingList.size() > 0) {
+            //合并工序作业明细
+            ApsProcessOperationProcessEquDo equDo = apsProcessEquMergeStartingList.get(0);
+            //查询该合并工序作业明细的待报工记录ID
+            String waitreportid = equDo.getWaitreportid();
+            //待报工记录详情
+            ApsReportRecordsDo aDo = this.getById(waitreportid);
+            heatNumber = aDo.getHeatnumber();
+        } else {
+            //调用通用接口生成炉号
+            SysSerialVo vo = new SysSerialVo();
+            vo.setModulecode("aps_report_output_heat_" + apsProcessOperationProcessEquDo.getProcessdeviceid());
+            vo.setRuleTemplateStr("@{serialNumber:#000}");
+            vo.setResetrule("date:yyyyMM");
+            vo.setIfautomaticreset("y");
+            vo.setInitValue(1L);
+            Map<String, Object> codeData = cxAdminFeginClient.getSerialNumberCode(vo).getData();
+            heatNumber = codeData.get("code").toString();
+        }
 
         apsReportRecordsDo.setHeatnumber(heatNumber);
         //保存主表