Преглед изворни кода

aps-开工时生产批次号,取消报工时需要还原流水号配置

sucheng пре 1 година
родитељ
комит
7f95ccd289

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

@@ -88,6 +88,8 @@ public interface ApsProcessOperationProcessEquDao extends BaseMapper<ApsProcessO
     @Select("select * from aps_process_operation_process_equ where DELETED = 0 AND PROCESSDEVICEID = #{processdeviceid} AND ID != #{apsProcessOperationProcessEquDoId} AND (WAITREPORTID IS NOT NULL AND WAITREPORTID != '')")
     List<ApsProcessOperationProcessEquDo> selectOtherDeviceList(@Param("processdeviceid") String processdeviceid, @Param("apsProcessOperationProcessEquDoId") String apsProcessOperationProcessEquDoId);
 
+    @Update("update sys_serial_number set CURVALUE = CURVALUE - ${needCancelNumber} where MODULECODE = #{moduleCode}")
+    void updateSerialNumber(@Param("moduleCode") String moduleCode, @Param("needCancelNumber") int needCancelNumber);
 }
 
 

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

@@ -93,9 +93,11 @@ public class ApsReportOutputServiceImpl extends ServiceImpl<ApsReportOutputDao,
                 }
             }
             if (req.getBlankType().equals("热轧")) {
+                int j = 0;
                 for (ApsProcessOperationOutMaterDo apsProcessOperationOutMaterDo : list) {
                     int outval = apsProcessOperationOutMaterDo.getOutval();
                     for (int i = 1; i <= outval; i++) {
+                        j++;
                         //插入记录物料子表
                         ApsReportOutputDo apsReportOutputDo = new ApsReportOutputDo();
                         apsReportOutputDo.setId(SecurityUtil.getUUID());
@@ -104,7 +106,7 @@ public class ApsReportOutputServiceImpl extends ServiceImpl<ApsReportOutputDao,
                         apsReportOutputDo.setOutputmaterial(apsProcessOperationOutMaterDo.getOutputmaterial());
                         apsReportOutputDo.setLevel(req.getLevel());
                         //生成批次号
-                        String code = req.getMark() + req.getYearCode() + req.getMonthCode() + req.getEquipmentCode() + req.getHeatNumber() + i;
+                        String code = req.getMark() + req.getYearCode() + req.getMonthCode() + req.getEquipmentCode() + req.getHeatNumber() + j;
                         apsReportOutputDo.setOutputnumber(code);
                         JSONObject json = new JSONObject();
                         json.put("batchNumber", code);

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

@@ -175,6 +175,15 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
 
         apsProcessOperationProcessEquDao.updateById(apsProcessOperationProcessEquDo);
 
+        //如果没有输入批次号,取消开工需要还原
+        if (ObjectUtil.isEmpty(recordsDo.getBatchnumber())) {
+            //如果开工时间是当前月,需要取消流水号
+            if (DateUtil.month(recordsDo.getStartworktime()) == DateUtil.month(DateUtil.date())) {
+                //轧机/熔炉 对应炉号 流水号配置表中的值-1, 如果是铸轧,需要减去 输出物料的单卷数合计
+                this.cancelNumber(equDo);
+            }
+        }
+
         //更新其余信息
         CommonUpdateProductionStatusReq commonUpdateProductionStatusReq = new CommonUpdateProductionStatusReq();
         commonUpdateProductionStatusReq.setProcessOperationEquId(equDo.getId());
@@ -183,6 +192,29 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
         return R.ok();
     }
 
+    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());
+        if (ObjectUtil.isNotEmpty(apsBlankOrderDo.getBlanktype()) && apsBlankOrderDo.getBlanktype().equals("铸轧")) {
+            //查询 工序作业明细对应的 输出物料
+            List<ApsProcessOperationOutMaterDo> list = apsProcessOperationOutMaterService.list(new QueryWrapper<ApsProcessOperationOutMaterDo>().lambda().eq(ApsProcessOperationOutMaterDo::getMainid, equDo.getProcessid()));
+            //合计需要减的值
+            int needCancelValue = 0;
+            for (ApsProcessOperationOutMaterDo apsProcessOperationOutMaterDo : list) {
+                needCancelValue += apsProcessOperationOutMaterDo.getOutval();
+            }
+            apsProcessOperationProcessEquDao.updateSerialNumber("aps_report_output_" + processdeviceid, needCancelValue);
+        }
+
+    }
+
     @Override
     @Transactional
     public R startReport(StartRePortReq req) {
@@ -295,8 +327,6 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
         //注意事项
         apsReportRecordsDo.setAttention(apsProcessOperationDo.getRemark());
 
-        //保存主表
-        this.save(apsReportRecordsDo);
 
         //=================更新工序作业明细的报工ID、已开工卷数============
         //将报工记录ID存入工序作业的设备子表中
@@ -358,17 +388,55 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
         }
 
         //==========输出物料子表信息============
-        InsertMyReportOutputReq req2 = new InsertMyReportOutputReq();
-        req2.setProcessId(apsProcessOperationDo.getId());
-        req2.setIfBlankProcess(apsProcessOperationDo.getIfblankprocess());
-        req2.setBlankType(apsBlankOrderDo.getBlanktype());
-        req2.setMainId(apsReportRecordsDo.getId());
-        req2.setLevel(apsProcessOperationDo.getLevel());
-        R r = apsReportOutputService.insertMyReportOutputWithOutBatchNumber(req2);
+//        InsertMyReportOutputReq req2 = new InsertMyReportOutputReq();
+//        req2.setProcessId(apsProcessOperationDo.getId());
+//        req2.setIfBlankProcess(apsProcessOperationDo.getIfblankprocess());
+//        req2.setBlankType(apsBlankOrderDo.getBlanktype());
+//        req2.setMainId(apsReportRecordsDo.getId());
+//        req2.setLevel(apsProcessOperationDo.getLevel());
+//        R r = apsReportOutputService.insertMyReportOutputWithOutBatchNumber(req2);
+//        if (!r.getCode().equals("200")) {
+//            return R.error(r.getMsg());
+//        }
+        //============保存(报工)时,生成炉号和批次号=============
+        //获取设备/炉 的炉号(每月、每个设备/炉 更新)
+        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();
+
+        apsReportRecordsDo.setHeatnumber(heatNumber);
+        //保存主表
+        this.save(apsReportRecordsDo);
+
+        OrganizationCodeAndDeviceCodeVo organizationCodeAndDeviceCodeVo = this.baseMapper.selectOrganizationCodeAndDeviceCode(apsProcessOperationProcessEquDo.getProcessdeviceid());
+
+        InsertMyReportOutputReq insertMyReportOutputReq = new InsertMyReportOutputReq();
+        insertMyReportOutputReq.setMainId(apsReportRecordsDo.getId());
+        insertMyReportOutputReq.setProcessId(apsProcessOperationDo.getId());
+        insertMyReportOutputReq.setIfBlankProcess(apsProcessOperationDo.getIfblankprocess());
+        insertMyReportOutputReq.setDeviceId(apsProcessOperationProcessEquDo.getProcessdeviceid());
+        insertMyReportOutputReq.setMark(organizationCodeAndDeviceCodeVo.getOrganizationCode());
+        insertMyReportOutputReq.setYearCode((DateUtil.year(DateUtil.date()) % 100) + "");
+        insertMyReportOutputReq.setMonthCode(SaveConstans.MONTH_CODE_LIST.get(DateUtil.month(DateUtil.date())));
+        insertMyReportOutputReq.setEquipmentCode(organizationCodeAndDeviceCodeVo.getDeviceCode());
+        insertMyReportOutputReq.setHeatNumber(heatNumber);
+        insertMyReportOutputReq.setInputBatchNumber(apsReportRecordsDo.getBatchnumber());
+        insertMyReportOutputReq.setBlankType(apsBlankOrderDo.getBlanktype());
+        insertMyReportOutputReq.setLevel(apsProcessOperationDo.getLevel());
+
+        R r = apsReportOutputService.insertMyReportOutput(insertMyReportOutputReq);
         if (!r.getCode().equals("200")) {
-            return R.error(r.getMsg());
+            throw new CustomException(r.getMsg());
         }
 
+
         //=============加工参数子表信息、检查项目子表信息================
         if (ObjectUtil.isNotEmpty(apsProcessOperationDo.getProcess())) {
             //根据工序查询其工序的加工参数
@@ -482,7 +550,7 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
         req3.setProcessOperationEquId(apsProcessOperationProcessEquDo.getId());
         R r2 = apsProcessOperationProcessEquService.updateProductionStatus(req3);
         if (!r2.getCode().equals("200")) {
-            return R.error(r2.getMsg());
+            throw new CustomException(r2.getMsg());
         }
 
         return R.ok(apsReportRecordsDo);
@@ -570,20 +638,20 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
 //        //=============更新设备的报工记录ID===========
 //        apsProcessOperationProcessEquDao.updateEquByCancelRecord(apsReportRecordsDo.getId(), apsProcessOperationProcessEquDo.getProcessdeviceid());
 
-        //============保存(报工)时,生成炉号和批次号=============
-        //获取设备/炉 的炉号(每月、每个设备/炉 更新)
-        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();
-
-        apsReportRecordsDo.setHeatnumber(heatNumber);
+//        //============保存(报工)时,生成炉号和批次号=============
+//        //获取设备/炉 的炉号(每月、每个设备/炉 更新)
+//        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();
+//
+//        apsReportRecordsDo.setHeatnumber(heatNumber);
         //报工状态
         apsReportRecordsDo.setReportworkstatus("已报工");
         //如过报工时间为空,填入当前时间
@@ -593,31 +661,31 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
 
         this.updateById(apsReportRecordsDo);
 
-        //物理删除原来的报工记录输出物料
-        this.baseMapper.deleteOutputmaterialbyMainId(apsReportRecordsDo.getId());
-
+//        //物理删除原来的报工记录输出物料
+//        this.baseMapper.deleteOutputmaterialbyMainId(apsReportRecordsDo.getId());
+//
         OrganizationCodeAndDeviceCodeVo organizationCodeAndDeviceCodeVo = this.baseMapper.selectOrganizationCodeAndDeviceCode(apsProcessOperationProcessEquDo.getProcessdeviceid());
-        if (ObjectUtil.isEmpty(organizationCodeAndDeviceCodeVo)) {
-            return R.error("未找到对应的车间代号和设备代号");
-        }
-        InsertMyReportOutputReq insertMyReportOutputReq = new InsertMyReportOutputReq();
-        insertMyReportOutputReq.setMainId(apsReportRecordsDo.getId());
-        insertMyReportOutputReq.setProcessId(apsProcessOperationDo.getId());
-        insertMyReportOutputReq.setIfBlankProcess(apsProcessOperationDo.getIfblankprocess());
-        insertMyReportOutputReq.setDeviceId(apsProcessOperationProcessEquDo.getProcessdeviceid());
-        insertMyReportOutputReq.setMark(organizationCodeAndDeviceCodeVo.getOrganizationCode());
-        insertMyReportOutputReq.setYearCode((DateUtil.year(DateUtil.date()) % 100) + "");
-        insertMyReportOutputReq.setMonthCode(SaveConstans.MONTH_CODE_LIST.get(DateUtil.month(DateUtil.date())));
-        insertMyReportOutputReq.setEquipmentCode(organizationCodeAndDeviceCodeVo.getDeviceCode());
-        insertMyReportOutputReq.setHeatNumber(heatNumber);
-        insertMyReportOutputReq.setInputBatchNumber(apsReportRecordsDo.getBatchnumber());
-        insertMyReportOutputReq.setBlankType(apsBlankOrderDo.getBlanktype());
-        insertMyReportOutputReq.setLevel(apsProcessOperationDo.getLevel());
-
-        R r = apsReportOutputService.insertMyReportOutput(insertMyReportOutputReq);
-        if (!r.getCode().equals("200")) {
-            return R.error(r.getMsg());
-        }
+//        if (ObjectUtil.isEmpty(organizationCodeAndDeviceCodeVo)) {
+//            return R.error("未找到对应的车间代号和设备代号");
+//        }
+//        InsertMyReportOutputReq insertMyReportOutputReq = new InsertMyReportOutputReq();
+//        insertMyReportOutputReq.setMainId(apsReportRecordsDo.getId());
+//        insertMyReportOutputReq.setProcessId(apsProcessOperationDo.getId());
+//        insertMyReportOutputReq.setIfBlankProcess(apsProcessOperationDo.getIfblankprocess());
+//        insertMyReportOutputReq.setDeviceId(apsProcessOperationProcessEquDo.getProcessdeviceid());
+//        insertMyReportOutputReq.setMark(organizationCodeAndDeviceCodeVo.getOrganizationCode());
+//        insertMyReportOutputReq.setYearCode((DateUtil.year(DateUtil.date()) % 100) + "");
+//        insertMyReportOutputReq.setMonthCode(SaveConstans.MONTH_CODE_LIST.get(DateUtil.month(DateUtil.date())));
+//        insertMyReportOutputReq.setEquipmentCode(organizationCodeAndDeviceCodeVo.getDeviceCode());
+//        insertMyReportOutputReq.setHeatNumber(heatNumber);
+//        insertMyReportOutputReq.setInputBatchNumber(apsReportRecordsDo.getBatchnumber());
+//        insertMyReportOutputReq.setBlankType(apsBlankOrderDo.getBlanktype());
+//        insertMyReportOutputReq.setLevel(apsProcessOperationDo.getLevel());
+//
+//        R r = apsReportOutputService.insertMyReportOutput(insertMyReportOutputReq);
+//        if (!r.getCode().equals("200")) {
+//            return R.error(r.getMsg());
+//        }
 
         //查询新的输出物料
         List<ApsReportOutputDo> newOutputDos = apsReportOutputService.list(new QueryWrapper<ApsReportOutputDo>().lambda().eq(ApsReportOutputDo::getMainid, apsReportRecordsDo.getId()));