Browse Source

Merge remote-tracking branch 'origin/mode-min-unit' into mode-min-unit

fangpy 8 tháng trước cách đây
mục cha
commit
30b3ba4d42

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

@@ -104,4 +104,13 @@ public interface ApsProcessOperationDao extends BaseMapper<ApsProcessOperationDo
 
     @Select("SELECT * FROM aps_process_operation_process_equ WHERE DELETED = 0 AND ID in ('${nextIds}')")
     List<ApsProcessOperationProcessEquDo> getNextProcessOperationEqusByNextIds(@Param("nextIds") String nextIds);
+
+    @Select({" <script>",
+            "update aps_work_in_progress_inventory set WORKINPROCESSSTATUS='备料中',PLANMATERIALID=null where DELETED='0' and PROCESSOPERATIONEQUID=#{processoperationequid} and BLANKBATCHNUMBER in",
+            " <foreach collection=\"blankbatchnumbers\" item=\"blankbatchnumber\" index=\"index\" open=\"(\" close=\")\" separator=\",\"> ",
+            "  #{blankbatchnumbers}",
+            "</foreach>",
+            "</script>"})
+    void updateProgressInventory(@Param("blankbatchnumbers") List<String> blankbatchnumbers, @Param("processoperationequid") String processoperationequid);
+
 }

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

@@ -107,6 +107,9 @@ public interface ApsProcessOperationProcessEquDao extends BaseMapper<ApsProcessO
 
     List<ApsProcessOperationProcessEquDo> getDataByInputIdAndId(@Param("inputId")String inputId,
                                                                 @Param("ids")List<String> ids);
+
+    @Update("update sys_serial_number set CURVALUE = ${nowValue} where MODULECODE = #{moduleCode}")
+    void updateSerialNumberCurvalue(@Param("moduleCode") String moduleCode, @Param("nowValue") long nowValue);
 }
 
 

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

@@ -2213,6 +2213,22 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
             calendar.add(Calendar.SECOND, addMinute.setScale(0, RoundingMode.UP).intValue());
             processOperationProcessEquDo.setPlanenddate(calendar.getTime());
         }
+        String[] bachmaterialprocessArr = processOperationProcessEquDo.getBachmaterialprocess().split(",");
+        if (processOperationProcessEquDo.getLeavewaitworkroll() < bachmaterialprocessArr.length) {
+            List<String> newpch = new ArrayList<>();
+            List<String> delpch = new ArrayList<>();
+            for (String bachmaterialprocess : bachmaterialprocessArr) {
+                if (newpch.size() <= processOperationProcessEquDo.getLeavewaitworkroll()) {
+                    newpch.add(bachmaterialprocess);
+                } else {
+                    delpch.add(bachmaterialprocess);
+                }
+            }
+            processOperationProcessEquDo.setBachmaterialprocess(String.join(",", newpch));
+            //将这些批次号对应在制品退回备料库
+            apsProcessOperationDao.updateProgressInventory(delpch, processOperationProcessEquDo.getId());
+        }
+
         Integer leaveWaitJobRoll = processOperationProcessEquDo.getPlanprocessrall() - processOperationProcessEquDo.getReportroll() - processOperationProcessEquDo.getCancelroll();
         if (leaveWaitJobRoll == 0) {
             processOperationProcessEquDo.setClosestatus(SaveConstans.CloseStatus.COMPLETED);

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

@@ -93,7 +93,10 @@ public class ApsReportOutputServiceImpl extends ServiceImpl<ApsReportOutputDao,
                             if ("000".equals(lastThreeChars)){
                                 codeData = cxAdminFeginClient.getSerialNumberCode(vo).getData();
                                 code = codeData.get("code").toString();
+                                lastThreeChars = code.substring(code.length() - 3);
                             }
+                            //当工序为‘铸轧’时添加序列号将序列号默认为批次号后三位
+                            apsReportOutputDo.setSerialnumber(Long.parseLong(lastThreeChars));
                         }
                         apsReportOutputDo.setOutputnumber(code);
                         JSONObject json = new JSONObject();

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

@@ -947,6 +947,10 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
             apsReportRecordsDo.setCheckstatus("待检验");
 
             if (ObjectUtil.isNotEmpty(apsReportOutputDoList)) {
+                /**
+                 * 需求优化:更新工序为’铸轧‘的批次号
+                 */
+                updateSerialnumber(apsReportOutputDoList, recordsDo);
                 apsReportOutputService.updateBatchById(apsReportOutputDoList);
             }
             if (ObjectUtil.isNotEmpty(apsReportMachiningDoList)) {
@@ -1970,6 +1974,49 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
         }
     }
 
+    /**
+     * 更新报工记录-输出物料子表中序列号与批次号
+     * @param apsReportOutputDoList
+     * @param recordsDo
+     */
+    private void updateSerialnumber(List<ApsReportOutputDo> apsReportOutputDoList,ApsReportRecordsDo recordsDo){
+        //查询对应的工序作业
+        ApsProcessOperationDo apsProcessOperationDo = apsProcessOperationService.getById(recordsDo.getProcessoperationid());
+        //查询对应的工序作业明细信息
+        ApsProcessOperationProcessEquDo apsProcessOperationProcessEquDo = apsProcessOperationProcessEquService.getById(recordsDo.getProcessequid());
+        //1.循环输出物料2.判断输出物料序列号字段是否有值是否与批次号后三位相等,不相等则更新批次号和序列号为最新的值3.将平台序列号表更新输出物料流水的最大值4.只针对铸轧
+        String nodeMonthCode = SaveConstans.MONTH_CODE_LIST.get(DateUtil.month(DateUtil.date()));
+        String nowYear = (DateUtil.year(DateUtil.date()) % 100) + "";
+        apsReportOutputDoList.forEach(info ->{
+            if (StringUtils.isNotBlank(info.getOutputnumber())){
+                String outputCode = info.getOutputnumber();
+                String nextChar = "";
+                int index = outputCode.indexOf(nowYear);
+                if (index != -1) {
+                    nextChar = String.valueOf(outputCode.charAt(index + nowYear.length()));
+                    //需要判断每条数据在当前月
+                    if ("铸轧".equals(apsProcessOperationDo.getProcess())&&nodeMonthCode.equals(nextChar)){
+                        //取出批次号最后三位字符串
+                        String lastThreeChars = outputCode.substring(outputCode.length() - 3);
+                        //校验序列号大小是否大于等于批次号后三位
+                        if (info.getSerialnumber()!= null&&info.getSerialnumber()!= Long.parseLong(lastThreeChars)){
+                            // 删除批次号原来的后三位字符串,将序列号的三位数字更新到批次号中
+                            String newOutput = outputCode.substring(0, outputCode.length() - 3);
+                            String formatSerialnumber = String.format("%03d", info.getSerialnumber());
+                            info.setOutputnumber(newOutput + formatSerialnumber);
+                            //加工设备ID
+                            String processdeviceid = apsProcessOperationProcessEquDo.getProcessdeviceid();
+                            //在流水表中的标识
+                            String moduleCode = "aps_report_output_" + processdeviceid;
+                            //更新流水表中的当前值
+                            apsProcessOperationProcessEquDao.updateSerialNumberCurvalue(moduleCode, info.getSerialnumber());
+                        }
+                    }
+                }
+            }
+        });
+    }
+
 
 }
 

+ 5 - 0
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/domain/ApsReportOutputDo.java

@@ -150,6 +150,11 @@ public class ApsReportOutputDo extends BaseDo implements Serializable {
      */
     private String outputdesc;
 
+    /**
+     * 序列号
+     */
+    private Long serialnumber;
+
     @TableField(exist = false)
     private static final long serialVersionUID = 1L;
 }