rev:一期入库层数优化

This commit is contained in:
2024-08-12 15:40:55 +08:00
parent 020151e064
commit f0c12bb5a1
3 changed files with 102 additions and 27 deletions

View File

@@ -309,19 +309,32 @@ public class ProductInstorServiceImpl implements ProductInstorService {
.findFirst().orElse(null);
if (jsonOne.getDoubleValue("num") <= Double.parseDouble(download_attr_num)) {
throw new BadRequestException(jsonOne.getString("layer_num") + "层主存区仓位数不足" + download_attr_num + "个,不允许入库!");
List<JSONObject> layerList = attrList.stream()
.filter(row -> "2,3".contains(row.getString("layer_num")))
.collect(Collectors.toList());
int num = layerList.stream()
.map(row -> row.getBigDecimal("num"))
.reduce(BigDecimal.ZERO, BigDecimal::add)
.intValue();
if (num <= (Integer.parseInt(download_attr_num) * 2)) {
throw new BadRequestException("立库主存区仓位数不足" + download_attr_num + "个,不允许入库!");
}
}
} else {
List<JSONObject> layerList = attrList.stream()
.filter(row -> "2,3".contains(row.getString("layer_num")))
.collect(Collectors.toList());
JSONObject jsonAttr = layerList.stream()
.filter(row -> row.getDoubleValue("num") <= Double.parseDouble(download_attr_num))
.findFirst().orElse(null);
int num = layerList.stream()
.map(row -> row.getBigDecimal("num"))
.reduce(BigDecimal.ZERO, BigDecimal::add)
.intValue();
if (ObjectUtil.isNotEmpty(jsonAttr)) {
throw new BadRequestException(jsonAttr.getString("layer_num") + "主存区仓位数不足" + download_attr_num + "个,不允许入库!");
if (num <= (Integer.parseInt(download_attr_num) * 2)) {
throw new BadRequestException("2、3层立库主存区仓位数不足" + download_attr_num + "个,不允许入库!");
}
}

View File

@@ -996,36 +996,84 @@ public class RawAssistIStorServiceImpl implements RawAssistIStorService {
if (box_high > Double.parseDouble(in_up_box_high)) {
throw new BadRequestException("木箱:" + sub_jo.getString("package_box_sn") + "高度不符合要求,请检查!");
}
row_map.put("in_layer_num", in_layer_num);
//查询到当前可用的巷道
JSONArray rowArr2 = new JSONArray();
// 仓位下限阈值
String download_attr_num = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("download_attr_num").getValue();
List<JSONObject> attrListAll = WQL.getWO("PDA_ST_01").addParam("flag", "10")
.addParam("layer_num", "('1','2','3')").process()
.getResultJSONArray(0).toJavaList(JSONObject.class);
if (box_high <= Double.parseDouble(in_download_box_high)) {
// 优先入1层
row_map.put("layer_num", "1");
// 判断1层主存区是否超过阈值
JSONObject jsonOne = attrListAll.stream()
.filter(row -> row.getString("layer_num").equals("1"))
.findFirst().orElse(null);
rowArr2 = WQL.getWO("QST_IVT_RAWASSISTISTOR").addParamMap(row_map).process().getResultJSONArray(0);
if (jsonOne.getDoubleValue("num") <= Double.parseDouble(download_attr_num)) {
in_layer_num = "('2','3')";
// 判断2层3层的仓位是否够
List<JSONObject> layerList = attrListAll.stream()
.filter(row -> "2,3".contains(row.getString("layer_num")))
.collect(Collectors.toList());
JSONObject jsonAttr = layerList.stream()
.filter(row -> row.getDoubleValue("num") <= Double.parseDouble(download_attr_num))
.findFirst().orElse(null);
if (ObjectUtil.isNotEmpty(jsonAttr)) {
if (jsonAttr.getString("layer_num").equals("2")) {
in_layer_num = "('3')";
} else {
in_layer_num = "('2')";
}
}
} else {
// 优先入1层
row_map.put("in_layer_num", "('1')");
if (ObjectUtil.isEmpty(rowArr2)) {
// 如果1层没有相同物料订单号的则找有空位的一排
row_map.put("flag", "1111");
rowArr2 = WQL.getWO("QST_IVT_RAWASSISTISTOR").addParamMap(row_map).process().getResultJSONArray(0);
// 如果为空则进行扩容
if (ObjectUtil.isEmpty(rowArr2)) {
boolean is_expansion = updateStructSectOne();
// 如果1层没有相同物料订单号的则找有空位的一排
row_map.put("flag", "1111");
rowArr2 = WQL.getWO("QST_IVT_RAWASSISTISTOR").addParamMap(row_map).process().getResultJSONArray(0);
if (is_expansion) {
// 如果为true则在进行查询一次
rowArr2 = WQL.getWO("QST_IVT_RAWASSISTISTOR").addParamMap(row_map).process().getResultJSONArray(0);
// 如果为空则进行扩容
if (ObjectUtil.isEmpty(rowArr2)) {
boolean is_expansion = updateStructSectOne();
if (is_expansion) {
// 如果为true则在进行查询一次
rowArr2 = WQL.getWO("QST_IVT_RAWASSISTISTOR").addParamMap(row_map).process().getResultJSONArray(0);
}
}
}
}
} else {
// 判断2层3层的仓位是否够
List<JSONObject> layerList = attrListAll.stream()
.filter(row -> "2,3".contains(row.getString("layer_num")))
.collect(Collectors.toList());
JSONObject jsonAttr = layerList.stream()
.filter(row -> row.getDoubleValue("num") <= Double.parseDouble(download_attr_num))
.findFirst().orElse(null);
if (ObjectUtil.isNotEmpty(jsonAttr)) {
if (jsonAttr.getString("layer_num").equals("2")) {
in_layer_num = "('3')";
} else {
in_layer_num = "('2')";
}
}
}
row_map.put("in_layer_num", in_layer_num);
if (ObjectUtil.isEmpty(rowArr2)) {
row_map.put("layer_num", "");
row_map.put("flag", "111");
rowArr2 = WQL.getWO("QST_IVT_RAWASSISTISTOR").addParamMap(row_map).process().getResultJSONArray(0);
}
@@ -1181,7 +1229,12 @@ public class RawAssistIStorServiceImpl implements RawAssistIStorService {
int box_num = (int) Math.ceil(plan_rows.size() / 2) + box_rows.size();
//查询数量与订单物料箱子数量相近的一排
JSONObject empty_row = WQL.getWO("QST_IVT_RAWASSISTISTOR").addParam("sect_id", sect_id).addParam("flag", "13").addParam("sql_str", " ORDER BY abs(" + box_num + "-a.struct_num),block_num,row_num").process().uniqueResult(0);
JSONObject empty_row = WQL.getWO("QST_IVT_RAWASSISTISTOR")
.addParam("sect_id", sect_id)
.addParam("in_layer_num",in_layer_num)
.addParam("flag", "13")
.addParam("sql_str", " ORDER BY abs(" + box_num + "-a.struct_num),block_num,row_num")
.process().uniqueResult(0);
if (ObjectUtil.isNotEmpty(empty_row)) {
String block_num2 = empty_row.getString("block_num");
String row_num2 = empty_row.getString("row_num");
@@ -1212,7 +1265,12 @@ public class RawAssistIStorServiceImpl implements RawAssistIStorService {
}
} else {
//如果查询不到空的一排,则查询有空位双通的一排
JSONArray haveArr = WQL.getWO("QST_IVT_RAWASSISTISTOR").addParam("sect_id", sect_id).addParam("flag", "14").addParam("sql_str", " ORDER BY abs(" + box_num + "-a.struct_num)").process().getResultJSONArray(0);
JSONArray haveArr = WQL.getWO("QST_IVT_RAWASSISTISTOR")
.addParam("sect_id", sect_id)
.addParam("flag", "14")
.addParam("in_layer_num",in_layer_num)
.addParam("sql_str", " ORDER BY abs(" + box_num + "-a.struct_num)")
.process().getResultJSONArray(0);
for (int j = 0; j < haveArr.size(); j++) {
JSONObject have_row = haveArr.getJSONObject(j);
@@ -1333,7 +1391,11 @@ public class RawAssistIStorServiceImpl implements RawAssistIStorService {
}
} else {
//如果查询不到空的一排,则查询有空位双通的一排
JSONArray haveArr = WQL.getWO("QST_IVT_RAWASSISTISTOR").addParam("in_layer_num", in_layer_num).addParam("sect_id", sect_id).addParam("flag", "14").addParam("sql_str", " ORDER BY abs(" + box_num + "-a.struct_num)").process().getResultJSONArray(0);
JSONArray haveArr = WQL.getWO("QST_IVT_RAWASSISTISTOR")
.addParam("in_layer_num", in_layer_num)
.addParam("sect_id", sect_id).addParam("flag", "14")
.addParam("sql_str", " ORDER BY abs(" + box_num + "-a.struct_num)")
.process().getResultJSONArray(0);
for (int j = 0; j < haveArr.size(); j++) {
JSONObject have_row = haveArr.getJSONObject(j);

View File

@@ -474,7 +474,6 @@
LEFT JOIN md_me_materialbase mb ON mb.material_id = ivt.material_id
WHERE
sa.sect_id = 输入.sect_id
AND IFNULL(sa.storagevehicle_code,"") = ''
AND sa.is_used = '1'
AND sa.is_delete = '0'
AND sa.lock_type = '1'
@@ -485,10 +484,11 @@
sub.sale_order_name = 输入.sale_order_name
ENDOPTION
OPTION 输入.layer_num <> ""
sa.layer_num = 输入.layer_num
OPTION 输入.in_layer_num <> ""
sa.layer_num IN 输入.in_layer_num
ENDOPTION
GROUP BY
sa.block_num,sa.row_num,sa.placement_type
ORDER BY
@@ -513,8 +513,8 @@
and ifnull(sa.storagevehicle_code,'') = ''
and sa.lock_type = '1'
OPTION 输入.layer_num <> ""
sa.layer_num = 输入.layer_num
OPTION 输入.in_layer_num <> ""
sa.layer_num IN 输入.in_layer_num
ENDOPTION
GROUP BY