From 76ab9b918357df46aed587f0aa8eacda74d942ee Mon Sep 17 00:00:00 2001 From: jishenghua <752718920@qq.com> Date: Wed, 29 Oct 2025 11:56:19 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A0=A1=E9=AA=8C=E5=A4=9A=E8=A1=8C=E6=98=8E?= =?UTF-8?q?=E7=BB=86=E5=BD=93=E4=B8=AD=E6=98=AF=E5=90=A6=E5=AD=98=E5=9C=A8?= =?UTF-8?q?=E9=87=8D=E5=A4=8D=E7=9A=84=E5=BA=8F=E5=88=97=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jsh/erp/constants/ExceptionConstants.java | 3 ++ .../com/jsh/erp/service/DepotItemService.java | 32 +++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/jshERP-boot/src/main/java/com/jsh/erp/constants/ExceptionConstants.java b/jshERP-boot/src/main/java/com/jsh/erp/constants/ExceptionConstants.java index fb188f9a..398c8c9f 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/constants/ExceptionConstants.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/constants/ExceptionConstants.java @@ -451,6 +451,9 @@ public class ExceptionConstants { //单据录入-请勿频繁提交单据 public static final int DEPOT_HEAD_SUBMIT_REPEAT_FAILED_CODE = 8500032; public static final String DEPOT_HEAD_SUBMIT_REPEAT_FAILED_MSG = "抱歉,请不要频繁提交单据"; + //单据录入-单据明细中存在重复的序列号 + public static final int DEPOT_HEAD_CHECK_SERIAL_NUMBER_REPEAT_CODE = 8500033; + public static final String DEPOT_HEAD_CHECK_SERIAL_NUMBER_REPEAT_MSG = "抱歉,单据明细中存在重复的序列号:%s"; /** * 单据明细信息 diff --git a/jshERP-boot/src/main/java/com/jsh/erp/service/DepotItemService.java b/jshERP-boot/src/main/java/com/jsh/erp/service/DepotItemService.java index 096182ee..b7e5f571 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/service/DepotItemService.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/service/DepotItemService.java @@ -392,6 +392,8 @@ public class DepotItemService { if (null != rowArr && rowArr.size()>0) { //针对组装单、拆卸单校验是否存在组合件和普通子件 checkAssembleWithMaterialType(rowArr, depotHead.getSubType()); + //校验多行明细当中是否存在重复的序列号 + checkSerialNumberRepeat(rowArr); for (int i = 0; i < rowArr.size(); i++) { DepotItem depotItem = new DepotItem(); JSONObject rowObj = JSONObject.parseObject(rowArr.getString(i)); @@ -872,6 +874,36 @@ public class DepotItemService { } } + /** + * 校验多行明细当中是否存在重复的序列号 + * @param rowArr + */ + public void checkSerialNumberRepeat(JSONArray rowArr) { + List allSnArr = new ArrayList<>(); + for (int i = 0; i < rowArr.size(); i++) { + JSONObject rowObj = JSONObject.parseObject(rowArr.getString(i)); + if(StringUtil.isNotEmpty(rowObj.getString("snList"))) { + String snList = rowObj.getString("snList"); + snList = snList.replaceAll(",", ","); + List snArr = StringUtil.strToStringList(snList); + if(snArr!=null && !snArr.isEmpty()) { + allSnArr.addAll(snArr); + } + } + } + Set seen = new HashSet<>(); + Set duplicates = new HashSet<>(); + for (String str : allSnArr) { + if (!seen.add(str)) { + duplicates.add(str); + } + } + if(!duplicates.isEmpty()) { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_CHECK_SERIAL_NUMBER_REPEAT_CODE, + String.format(ExceptionConstants.DEPOT_HEAD_CHECK_SERIAL_NUMBER_REPEAT_MSG, String.join(", ", duplicates))); + } + } + /** * 更新商品的价格 * @param meId