rev:二期优化:1.成品入库相同巷道找相同销售订单、物料的仓位2.RGV出库任务任务限制二次分配。一期修改:改切管理批次号查询问题

This commit is contained in:
2024-08-19 11:22:47 +08:00
parent 6e8b0362ac
commit 1864e2cf4f
5 changed files with 156 additions and 4 deletions

View File

@@ -130,18 +130,47 @@ public class TwoOutHeapTask extends AbstractAcsTask {
if (pointJson.size() == 1) {
JSONObject json = pointJson.get(0);
if (json.getString("point_code2").equals(IOSEnum.OUT_HANGER.code("行架位1"))) {
// 行架位1有任务则下发行架位2的任务
JSONObject twoJson = taskArrAll.stream()
.filter(row -> row.getString("point_code2").equals(IOSEnum.OUT_HANGER.code("行架位2")))
.findFirst().orElse(null);
if (ObjectUtil.isNotEmpty(twoJson)) {
// 如果能找到去行架位2的任务则下发当前任务
taskArr.add(twoJson);
} else {
// 如果不能找到去行架位2则找去行架位1的任务进行二次分配到行架位2
JSONObject twoJsonOne = taskArrAll.stream()
.filter(row -> row.getString("point_code2").equals(IOSEnum.OUT_HANGER.code("行架位1")))
.findFirst().orElse(null);
if (ObjectUtil.isNotEmpty(twoJsonOne)) {
// 进行二次分配
twoJsonOne.put("point_code2",IOSEnum.OUT_HANGER.code("行架位2"));
wo_Task.update(twoJsonOne);
taskArr.add(twoJsonOne);
}
}
} else {
// 行架位2有任务则下发行架位1的任务
JSONObject oneJson = taskArrAll.stream()
.filter(row -> row.getString("point_code2").equals(IOSEnum.OUT_HANGER.code("行架位1")))
.findFirst().orElse(null);
if (ObjectUtil.isNotEmpty(oneJson)) {
// 如果能找到去行架位1的任务则下发当前任务
taskArr.add(oneJson);
} else {
// 如果不能找到去行架位1则找去行架位2的任务进行二次分配到行架位1
JSONObject twoJsonTwo = taskArrAll.stream()
.filter(row -> row.getString("point_code2").equals(IOSEnum.OUT_HANGER.code("行架位2")))
.findFirst().orElse(null);
if (ObjectUtil.isNotEmpty(twoJsonTwo)) {
// 进行二次分配
twoJsonTwo.put("point_code2",IOSEnum.OUT_HANGER.code("行架位1"));
wo_Task.update(twoJsonTwo);
taskArr.add(twoJsonTwo);
}
}
}

View File

@@ -651,6 +651,11 @@ public class InBussManageServiceImpl implements InBussManageService {
* @return JSONObject 仓位
*/
private JSONObject getStruct(JSONObject jsonSub) {
// 根据巷道找这一巷道相同订单号、物料的仓位
JSONObject jsonLikeBox = queryEqualBox(jsonSub);
if (ObjectUtil.isNotEmpty(jsonLikeBox)) {
return jsonLikeBox;
}
// 获取此仓库、库区、巷道、排的所有空位 根据列、层、深度排序
jsonSub.put("flag", "5");
@@ -750,4 +755,62 @@ public class InBussManageServiceImpl implements InBussManageService {
return jsonAttr;
}
/**
* 匹配相同订单、物料的仓位
* @param jsonSub{子卷包装关系}
* @return JSONObject要入库的仓位
*/
private JSONObject queryEqualBox(JSONObject jsonSub) {
// 需要返回的仓位
JSONObject result = new JSONObject();
// 1.匹配相同订单号、物料的排row_num
jsonSub.put("flag", "7");
List<JSONObject> rowList = WQL.getWO("BST_INRULE").addParamMap(jsonSub)
.process().getResultJSONArray(0).toJavaList(JSONObject.class);
// 查询此排的所有仓位
String row_in = rowList.stream()
.map(row -> row.getString("row_num"))
.distinct()
.collect(Collectors.joining("','"));
List<JSONObject> attrRowAllList = WQL.getWO("BST_INRULE").addParam("flag", "8")
.addParam("sect_id", jsonSub.getString("sect_id"))
.addParam("row_in", "('" + row_in + "')").process().getResultJSONArray(0).toJavaList(JSONObject.class);
for (JSONObject json : rowList) {
// 判断此深仓位是否有货、是否被锁住
if (ObjectUtil.isEmpty(json.getString("storagevehicle_code"))
|| !json.getString("lock_type").equals(IOSEnum.LOCK_TYPE.code("未锁定"))
) {
continue;
}
// 找对应的浅货位
JSONObject darkJson = attrRowAllList.stream()
.filter(row -> row.getString("col_num").equals(json.getString("col_num")) &&
row.getString("layer_num").equals(json.getString("layer_num")) &&
row.getString("row_num").equals(json.getString("row_num")) &&
row.getString("zdepth").equals(IOSEnum.ZDEPTH_STRUCT.code("")))
.findFirst().orElse(null);
if (ObjectUtil.isEmpty(darkJson)) {
notInRowList.clear();
notInBlockList.clear();
throw new BadRequestException("仓位:" + json.getString("struct_code") + "对应的深货位错误!");
}
// 判断浅货位是否有货、未锁定
if (ObjectUtil.isNotEmpty(darkJson.getString("storagevehicle_code"))
|| !darkJson.getString("lock_type").equals(IOSEnum.LOCK_TYPE.code("未锁定"))
) {
continue;
}
result = darkJson;
break;
}
return result;
}
}

View File

@@ -30,6 +30,8 @@
输入.row_num TYPEAS s_string
输入.not_row_in TYPEAS f_string
输入.not_block TYPEAS f_string
输入.product_name TYPEAS s_string
输入.product_name TYPEAS s_string
[临时表]
--这边列出来的临时表就会在运行期动态创建
@@ -263,3 +265,61 @@
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "7"
QUERY
SELECT
attr.*
FROM
st_ivt_structivt ivt
INNER JOIN st_ivt_structattr attr ON ivt.struct_code = attr.struct_code
INNER JOIN pdm_bi_subpackagerelation sub ON attr.storagevehicle_code = sub.package_box_sn AND ivt.pcsn = sub.container_name
WHERE
attr.is_used = '1'
AND attr.is_delete = '0'
AND attr.lock_type = '1'
AND IFNULL(attr.storagevehicle_code,'') <> ''
AND attr.stor_id = 输入.stor_id
AND attr.sect_id = 输入.sect_id
AND attr.height IN 输入.height
AND attr.zdepth = '2'
AND attr.storagevehicle_type = 输入.vehicle_type
OPTION 输入.block_num <> ""
attr.block_num = 输入.block_num
ENDOPTION
OPTION 输入.product_name <> ""
sub.product_name = 输入.product_name
ENDOPTION
OPTION 输入.sale_order_name <> ""
sub.sale_order_name = 输入.sale_order_name
ENDOPTION
order by attr.col_num,attr.layer_num ASC
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "8"
QUERY
SELECT
attr.*
FROM
st_ivt_structattr attr
WHERE
attr.is_used = '1'
AND attr.is_delete = '0'
AND attr.sect_id = 输入.sect_id
OPTION 输入.row_in <> ""
attr.row_num IN 输入.row_in
ENDOPTION
ENDOPTION
ENDSELECT
ENDQUERY
ENDIF

View File

@@ -52,7 +52,7 @@
mst.*
FROM
st_ivt_productplanmst mst
LEFT JOIN (
INNER JOIN (
SELECT
plan_id
FROM

View File

@@ -8,7 +8,7 @@
:inline="true"
class="demo-form-inline"
label-position="right"
label-width="80px"
label-width="100px"
label-suffix=":"
>
<el-form-item label="模糊查询">
@@ -37,12 +37,12 @@
/>
</el-select>
</el-form-item>
<el-form-item label="子卷号">
<el-form-item label="改切批次号">
<el-input
v-model="query.pcsn"
size="mini"
clearable
placeholder="子卷号"
placeholder="sap批次号"
@keyup.enter.native="crud.toQuery"
/>
</el-form-item>