fix(change): 添加转单物料规格一致性校验
This commit is contained in:
@@ -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<String, HashMap> set = new HashMap<>();
|
||||
Set<String> saleOrderSet = new HashSet<>();
|
||||
Set<String> 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<String> 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");
|
||||
|
||||
Reference in New Issue
Block a user