rev:二期优化:1.成品入库相同巷道找相同销售订单、物料的仓位2.RGV出库任务任务限制二次分配。一期修改:改切管理批次号查询问题
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
mst.*
|
||||
FROM
|
||||
st_ivt_productplanmst mst
|
||||
LEFT JOIN (
|
||||
INNER JOIN (
|
||||
SELECT
|
||||
plan_id
|
||||
FROM
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user