From 3a9f5f4524f5dd5128250e129e597cab5c26ad88 Mon Sep 17 00:00:00 2001 From: yangyufu Date: Wed, 15 Jul 2026 14:14:09 +0800 Subject: [PATCH] =?UTF-8?q?fix(change):=20=E6=B7=BB=E5=8A=A0=E8=BD=AC?= =?UTF-8?q?=E5=8D=95=E7=89=A9=E6=96=99=E8=A7=84=E6=A0=BC=E4=B8=80=E8=87=B4?= =?UTF-8?q?=E6=80=A7=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ChangeServiceImpl.java | 50 ++++++++++++++++++- .../views/wms/st/inStor/change/AddDialog.vue | 16 ++++-- .../src/views/wms/st/inStor/change/AddDtl.vue | 8 +-- 3 files changed, 64 insertions(+), 10 deletions(-) diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/service/impl/ChangeServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/service/impl/ChangeServiceImpl.java index d96cfe2fb..032738993 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/service/impl/ChangeServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/service/impl/ChangeServiceImpl.java @@ -13,6 +13,7 @@ import org.nl.common.utils.SecurityUtils; import org.nl.modules.common.exception.BadRequestException; import org.nl.common.utils.CodeUtil; import org.nl.modules.wql.WQL; +import org.nl.modules.wql.core.bean.ResultBean; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.util.WqlUtil; import org.nl.wms.basedata.st.service.impl.UserStorServiceImpl; @@ -26,7 +27,11 @@ import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Set; import java.util.Map; +import java.util.stream.Collectors; /** * PC端出入库新增 @@ -149,6 +154,16 @@ public class ChangeServiceImpl implements ChangeService { /** * 根据传进来的载具物料明细,查询载具所有库存记录,并生成移库明细 * + * ids.append("'"); + * if (!Struct_map.containsKey(storagevehicle_code)) { + * Struct_map.put(storagevehicle_code, row); + * } + * if (i != 0) { + * ids.append("','"); + * } + * ids.append(storagevehicle_code); + * } + * ids.append("'"); * @param rows */ @Transactional(rollbackFor = Exception.class) @@ -159,6 +174,8 @@ public class ChangeServiceImpl implements ChangeService { double detail_count = 0; //定义需要需要插入的库存集合 HashMap set = new HashMap<>(); + Set saleOrderSet = new HashSet<>(); + Set customerNameSet = new HashSet<>(); for (int i = 0; i < rows.size(); i++) { HashMap row = rows.get(i); String package_box_sn = (String) row.get("storagevehicle_code"); @@ -167,9 +184,38 @@ public class ChangeServiceImpl implements ChangeService { } else { set.put(package_box_sn, row); } + // 收集去重的销售订单号和客户名称 + saleOrderSet.add((String) row.get("new_sale_order_name")); + customerNameSet.add((String) row.get("new_customer_name")); + } + // 判断转单前后的物料是否保持一致,如果不一致拒绝转单 88549333 20260714 + // 销售订单in + String saleOrderStr = saleOrderSet.stream() + .map(s -> "'" + s + "'") + .collect(Collectors.joining(",")); + // 客户in 字段 + String customerNameStr = customerNameSet.stream() + .map(s -> "'" + s + "'") + .collect(Collectors.joining(",")); + JSONArray package_rows = WQLObject.getWQLObject("pdm_bi_subpackagerelation").query("sale_order_name in (" + saleOrderStr + ")" + " and customer_name in (" + customerNameStr + ")").getResultJSONArray(0); + // 获取查询结果里面的物料编码,去重 + Set materialCodeSet = new HashSet<>(); + for (int i = 0; i < package_rows.size(); i++) { + JSONObject package_row = package_rows.getJSONObject(i); + materialCodeSet.add(package_row.getString("product_name")); + } + //判断物料编码去重后的个数是否大于1 ,如果大于1 直接返回错误 + if (materialCodeSet.size() > 1) { + throw new BadRequestException("存在跨物料规格转单,不允许转单,请检查!"); + } + // 判断物料编码和原订单的物料编码是否一致,如果不一致 返回错误 + if (!materialCodeSet.isEmpty()) { + String packageMaterialCode = materialCodeSet.iterator().next(); + String originalMaterialCode = (String) rows.get(0).get("material_code"); + if (!packageMaterialCode.equals(originalMaterialCode)) { + throw new BadRequestException("转单物料编码[" + packageMaterialCode + "]与原订单物料编码[" + originalMaterialCode + "]不一致,不允许转单!"); + } } - - for (String package_box_sn : set.keySet()) { HashMap row = set.get(package_box_sn); String SaleOrderItem = (String) row.get("new_sale_order_name"); diff --git a/lms/nladmin-ui/src/views/wms/st/inStor/change/AddDialog.vue b/lms/nladmin-ui/src/views/wms/st/inStor/change/AddDialog.vue index 9af753984..d75a83a1b 100644 --- a/lms/nladmin-ui/src/views/wms/st/inStor/change/AddDialog.vue +++ b/lms/nladmin-ui/src/views/wms/st/inStor/change/AddDialog.vue @@ -133,10 +133,10 @@ - + - + @@ -219,9 +219,9 @@ width="120" align="center" /> - + - +