rev:二期优化:1.成品入库相同巷道找相同销售订单、物料的仓位2.RGV出库任务任务限制二次分配。一期修改:改切管理批次号查询问题
This commit is contained in:
@@ -130,18 +130,47 @@ public class TwoOutHeapTask extends AbstractAcsTask {
|
|||||||
if (pointJson.size() == 1) {
|
if (pointJson.size() == 1) {
|
||||||
JSONObject json = pointJson.get(0);
|
JSONObject json = pointJson.get(0);
|
||||||
if (json.getString("point_code2").equals(IOSEnum.OUT_HANGER.code("行架位1"))) {
|
if (json.getString("point_code2").equals(IOSEnum.OUT_HANGER.code("行架位1"))) {
|
||||||
|
// 行架位1有任务则下发行架位2的任务
|
||||||
JSONObject twoJson = taskArrAll.stream()
|
JSONObject twoJson = taskArrAll.stream()
|
||||||
.filter(row -> row.getString("point_code2").equals(IOSEnum.OUT_HANGER.code("行架位2")))
|
.filter(row -> row.getString("point_code2").equals(IOSEnum.OUT_HANGER.code("行架位2")))
|
||||||
.findFirst().orElse(null);
|
.findFirst().orElse(null);
|
||||||
if (ObjectUtil.isNotEmpty(twoJson)) {
|
if (ObjectUtil.isNotEmpty(twoJson)) {
|
||||||
|
// 如果能找到去行架位2的任务则下发当前任务
|
||||||
taskArr.add(twoJson);
|
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 {
|
} else {
|
||||||
|
// 行架位2有任务则下发行架位1的任务
|
||||||
JSONObject oneJson = taskArrAll.stream()
|
JSONObject oneJson = taskArrAll.stream()
|
||||||
.filter(row -> row.getString("point_code2").equals(IOSEnum.OUT_HANGER.code("行架位1")))
|
.filter(row -> row.getString("point_code2").equals(IOSEnum.OUT_HANGER.code("行架位1")))
|
||||||
.findFirst().orElse(null);
|
.findFirst().orElse(null);
|
||||||
if (ObjectUtil.isNotEmpty(oneJson)) {
|
if (ObjectUtil.isNotEmpty(oneJson)) {
|
||||||
|
// 如果能找到去行架位1的任务则下发当前任务
|
||||||
taskArr.add(oneJson);
|
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 : 仓位
|
* @return JSONObject : 仓位
|
||||||
*/
|
*/
|
||||||
private JSONObject getStruct(JSONObject jsonSub) {
|
private JSONObject getStruct(JSONObject jsonSub) {
|
||||||
|
// 根据巷道找这一巷道相同订单号、物料的仓位
|
||||||
|
JSONObject jsonLikeBox = queryEqualBox(jsonSub);
|
||||||
|
if (ObjectUtil.isNotEmpty(jsonLikeBox)) {
|
||||||
|
return jsonLikeBox;
|
||||||
|
}
|
||||||
|
|
||||||
// 获取此仓库、库区、巷道、排的所有空位 根据列、层、深度排序
|
// 获取此仓库、库区、巷道、排的所有空位 根据列、层、深度排序
|
||||||
jsonSub.put("flag", "5");
|
jsonSub.put("flag", "5");
|
||||||
@@ -750,4 +755,62 @@ public class InBussManageServiceImpl implements InBussManageService {
|
|||||||
|
|
||||||
return jsonAttr;
|
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
|
输入.row_num TYPEAS s_string
|
||||||
输入.not_row_in TYPEAS f_string
|
输入.not_row_in TYPEAS f_string
|
||||||
输入.not_block TYPEAS f_string
|
输入.not_block TYPEAS f_string
|
||||||
|
输入.product_name TYPEAS s_string
|
||||||
|
输入.product_name TYPEAS s_string
|
||||||
|
|
||||||
[临时表]
|
[临时表]
|
||||||
--这边列出来的临时表就会在运行期动态创建
|
--这边列出来的临时表就会在运行期动态创建
|
||||||
@@ -263,3 +265,61 @@
|
|||||||
ENDSELECT
|
ENDSELECT
|
||||||
ENDQUERY
|
ENDQUERY
|
||||||
ENDIF
|
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.*
|
mst.*
|
||||||
FROM
|
FROM
|
||||||
st_ivt_productplanmst mst
|
st_ivt_productplanmst mst
|
||||||
LEFT JOIN (
|
INNER JOIN (
|
||||||
SELECT
|
SELECT
|
||||||
plan_id
|
plan_id
|
||||||
FROM
|
FROM
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
:inline="true"
|
:inline="true"
|
||||||
class="demo-form-inline"
|
class="demo-form-inline"
|
||||||
label-position="right"
|
label-position="right"
|
||||||
label-width="80px"
|
label-width="100px"
|
||||||
label-suffix=":"
|
label-suffix=":"
|
||||||
>
|
>
|
||||||
<el-form-item label="模糊查询">
|
<el-form-item label="模糊查询">
|
||||||
@@ -37,12 +37,12 @@
|
|||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="子卷号">
|
<el-form-item label="改切批次号">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="query.pcsn"
|
v-model="query.pcsn"
|
||||||
size="mini"
|
size="mini"
|
||||||
clearable
|
clearable
|
||||||
placeholder="子卷号"
|
placeholder="sap批次号"
|
||||||
@keyup.enter.native="crud.toQuery"
|
@keyup.enter.native="crud.toQuery"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|||||||
Reference in New Issue
Block a user