Explorar el Código

aps-报工接口针对输出物料补充序列号校验testin1836

zhoudazhuang hace 8 meses
padre
commit
b33f571135

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

@@ -990,6 +990,18 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
                     return R.error("该坯料批次号:" + String.join(",", batchNumbers) + " 已经存在");
                 }
             }
+            if ("铸轧".equals(apsProcessOperationDo.getProcess())&&"是".equals(apsProcessOperationDo.getIfblankprocess())){
+                for (ApsReportOutputDo outputDo:apsReportOutputDoList){
+                    //后端补充校验:当'铸轧'工序并且'是否坯料工序'为是的时候校验输出物料中序列号必须大于等于批次号后三位
+                    if (ObjectUtil.isNotEmpty(outputDo.getOutputnumber())){
+                        //取出批次号最后三位字符串
+                        String lastThreeChars = outputDo.getOutputnumber().substring(outputDo.getOutputnumber().length() - 3);
+                        if (outputDo.getSerialnumber()!= null&&outputDo.getSerialnumber()<Long.parseLong(lastThreeChars)){
+                            return R.error("序列号必须大于等于批次号的后三位");
+                        }
+                    }
+                }
+            }
 
             //=============更新作业明细信息=============
             Integer reduceNum = 1;
@@ -2011,7 +2023,7 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
                         //取出批次号最后三位字符串
                         String lastThreeChars = outputCode.substring(outputCode.length() - 3);
                         //校验序列号大小是否大于等于批次号后三位
-                        if (info.getSerialnumber() != null && info.getSerialnumber() != Long.parseLong(lastThreeChars)) {
+                        if (info.getSerialnumber() != null && info.getSerialnumber() >= Long.parseLong(lastThreeChars)) {
                             // 删除批次号原来的后三位字符串,将序列号的三位数字更新到批次号中
                             String newOutput = outputCode.substring(0, outputCode.length() - 3);
                             String formatSerialnumber = String.format("%03d", info.getSerialnumber());