opt:优化

This commit is contained in:
2026-08-07 17:28:21 +07:00
parent 87a7cdd496
commit f41571698d
17 changed files with 195 additions and 146 deletions

View File

@@ -552,7 +552,7 @@ public class VehicleTwoServiceImpl implements VehicleTwoService {
whereJson.put("box_no", whereJson.getString("box_no")); whereJson.put("box_no", whereJson.getString("box_no"));
List<PdmBiSubpackagerelation> sub_list = ipdmBiSubpackagerelationService.list(new LambdaQueryWrapper<PdmBiSubpackagerelation>() List<PdmBiSubpackagerelation> sub_list = ipdmBiSubpackagerelationService.list(new LambdaQueryWrapper<PdmBiSubpackagerelation>()
.eq(PdmBiSubpackagerelation::getPackage_box_sn, whereJson.getString("material_barcode")) .eq(PdmBiSubpackagerelation::getPackage_box_sn, whereJson.getString("material_barcode"))
.in(PdmBiSubpackagerelation::getStatus, Arrays.asList('0', '1'))); .in(PdmBiSubpackagerelation::getStatus, Arrays.asList('0', '1','3')));
if (ObjectUtil.isEmpty(sub_list)) { if (ObjectUtil.isEmpty(sub_list)) {
throw new BadRequestException("未查询到子卷包装信息!"); throw new BadRequestException("未查询到子卷包装信息!");
} }

View File

@@ -57,6 +57,6 @@ public interface SchBasePointMapper extends BaseMapper<SchBasePoint> {
List<SchBasePointDto> selectDjwPoints( JSONObject map); List<SchBasePointDto> selectDjwPoints( JSONObject map);
@Select("SELECT * FROM sch_base_point WHERE region_code = 'BLKCK' and is_used = '1'") @Select("SELECT * FROM sch_base_point WHERE region_code = 'BLKCK' and is_used = '1' and product_area ='normal'")
List<SchBasePoint> selectByReginCode(); List<SchBasePoint> selectByReginCode();
} }

View File

@@ -198,6 +198,16 @@ public class TwoLashTask extends AbstractAcsTask {
action_rows.add(action_jo); action_rows.add(action_jo);
wmsToAcsService.action(action_rows); wmsToAcsService.action(action_rows);
JSONArray action_rows2 = new JSONArray();
JSONObject action_jo2 = new JSONObject();
action_jo2.put("device_code", "MXDDHJ");
action_jo2.put("product_area", "BLK");
action_jo2.put("code", "to_command");
action_jo2.put("value", task_jo.getString("point_code2").replace("CK",""));
action_rows2.add(action_jo2);
wmsToAcsService.action(action_rows2);
// 更新点位载具、数量 // 更新点位载具、数量
JSONObject pointDao = pointTab.query("point_code = '" + task_jo.getString("point_code2") + "'").uniqueResult(0); JSONObject pointDao = pointTab.query("point_code = '" + task_jo.getString("point_code2") + "'").uniqueResult(0);
pointDao.put("vehicle_code", ""); pointDao.put("vehicle_code", "");

View File

@@ -73,91 +73,90 @@ public class TwoOutHeapTask extends AbstractAcsTask {
List<JSONObject> pointJson = wo_Task.query("handle_class = '" + THIS_CLASS + "' AND task_status IN ('05','06') AND is_delete = '0' ORDER BY point_code2") List<JSONObject> pointJson = wo_Task.query("handle_class = '" + THIS_CLASS + "' AND task_status IN ('05','06') AND is_delete = '0' ORDER BY point_code2")
.getResultJSONArray(0).toJavaList(JSONObject.class); .getResultJSONArray(0).toJavaList(JSONObject.class);
// 统计行架1、行架2 当前负载数量 // 下发两个的任务
long countHanger1 = pointJson.stream() List<JSONObject> err_list = taskArrAll.stream()
.filter(j -> IOSEnum.OUT_HANGER.code("行架位1").equals(j.getString("point_code2"))).count(); .filter(row -> row.getString("point_code2").equals(IOSEnum.EXCEP_OUT.code("1"))
long countHanger2 = pointJson.stream() || row.getString("point_code2").equals(IOSEnum.EXCEP_OUT.code("2")))
.filter(j -> IOSEnum.OUT_HANGER.code("行架位2").equals(j.getString("point_code2"))).count(); .collect(Collectors.toList());
if (ObjectUtil.isNotEmpty(err_list)) {
// ==========2. 预分组待下发任务只遍历一次taskArrAll ========== taskArr.addAll(err_list);
Map<String, List<JSONObject>> taskGroupMap = taskArrAll.stream()
.collect(Collectors.groupingBy(item -> item.getString("point_code2")));
List<JSONObject> exceptTaskList = taskGroupMap.getOrDefault(IOSEnum.EXCEP_OUT.code("1"), Collections.emptyList());
exceptTaskList.addAll(taskGroupMap.getOrDefault(IOSEnum.EXCEP_OUT.code("2"), Collections.emptyList()));
List<JSONObject> changeTaskList = taskGroupMap.getOrDefault(IOSEnum.CHANGE_OUT.code("换标出库口"), Collections.emptyList());
List<JSONObject> waitHanger1List = taskGroupMap.getOrDefault(IOSEnum.OUT_HANGER.code("行架位1"), Collections.emptyList());
List<JSONObject> waitHanger2List = taskGroupMap.getOrDefault(IOSEnum.OUT_HANGER.code("行架位2"), Collections.emptyList());
// ==========3. 优先下发异常出库任务限制最多1条点位独占 ==========
if (CollUtil.isNotEmpty(exceptTaskList)) {
// 只取第一条下发
taskArr.add(exceptTaskList.get(0));
}
if (CollUtil.isNotEmpty(changeTaskList)) {
// 只取第一条下发
taskArr.add(changeTaskList.get(0));
} }
// ==========4. 行架负载均衡分配核心逻辑 ========== if (ObjectUtil.isEmpty(pointJson)) {
// 判断哪边负载更小 // 下发两个的任务
boolean hanger1Less = countHanger1 < countHanger2; JSONObject oneJson = taskArrAll.stream()
boolean hanger2Less = countHanger2 < countHanger1; .filter(row -> row.getString("point_code2").equals(IOSEnum.OUT_HANGER.code("行架位1")))
.findFirst().orElse(null);
JSONObject selectTask = null; if (ObjectUtil.isNotEmpty(oneJson)) {
String targetPoint = null; taskArr.add(oneJson);
if (hanger1Less) {
// 行架1负载低优先原生行架1任务
selectTask = waitHanger1List.stream().findFirst().orElse(null);
targetPoint = IOSEnum.OUT_HANGER.code("行架位1");
// 若无原生任务则把行架2任务 转移 → 行架1
if (ObjectUtil.isNull(selectTask)) {
selectTask = waitHanger2List.stream().findFirst().orElse(null);
targetPoint = IOSEnum.OUT_HANGER.code("行架位1");
} }
} else if (hanger2Less) {
// 行架2负载低优先原生行架2任务 JSONObject twoJson = taskArrAll.stream()
selectTask = waitHanger2List.stream().findFirst().orElse(null); .filter(row -> row.getString("point_code2").equals(IOSEnum.OUT_HANGER.code("行架位2")))
targetPoint = IOSEnum.OUT_HANGER.code("行架位2"); .findFirst().orElse(null);
// 若无原生任务则把行架1任务 转移 → 行架2 if (ObjectUtil.isNotEmpty(twoJson)) {
if (ObjectUtil.isNull(selectTask)) { taskArr.add(twoJson);
selectTask = waitHanger1List.stream().findFirst().orElse(null);
targetPoint = IOSEnum.OUT_HANGER.code("行架位2");
} }
} else { } else {
// count相等默认优先行架1 // 哪里空了就下发哪里的
selectTask = waitHanger1List.stream().findFirst().orElse(null); if (pointJson.size() == 1) {
targetPoint = IOSEnum.OUT_HANGER.code("行架位1"); JSONObject json = pointJson.get(0);
if (ObjectUtil.isNull(selectTask)) { if (json.getString("point_code2").equals(IOSEnum.OUT_HANGER.code("行架位1"))) {
selectTask = waitHanger2List.stream().findFirst().orElse(null); // 行架位1有任务则下发行架位2的任务
targetPoint = IOSEnum.OUT_HANGER.code("行架位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);
// ==========5. 处理选中任务,区分是否需要变更点位 ========== if (ObjectUtil.isNotEmpty(twoJsonOne)) {
if (ObjectUtil.isNotEmpty(selectTask)) { // 进行二次分配
String originalPoint = selectTask.getString("point_code2"); // 判断点位是否启用
// 深拷贝禁止操作原始taskArrAll对象 JSONObject jsonOne = pointTab.query("point_code = '" + IOSEnum.OUT_HANGER.code("行架位2") + "'")
JSONObject taskCopy = JSONObject.parseObject(selectTask.toJSONString()); .uniqueResult(0);
if (jsonOne.getString("is_used").equals("1")) {
twoJsonOne.put("point_code2", IOSEnum.OUT_HANGER.code("行架位2"));
wo_Task.update(twoJsonOne);
taskArr.add(twoJsonOne);
}
}
if (!originalPoint.equals(targetPoint)) { }
// 需要二次分配、变更点位 } else {
// 校验目标点位是否启用 // 行架位2有任务则下发行架位1的任务
JSONObject pointInfo = pointTab.query("point_code = '" + targetPoint + "'").uniqueResult(0); JSONObject oneJson = taskArrAll.stream()
if (ObjectUtil.isNotEmpty(pointInfo) && "1".equals(pointInfo.getString("is_used"))) { .filter(row -> row.getString("point_code2").equals(IOSEnum.OUT_HANGER.code("行架位1")))
// 修改副本点位 .findFirst().orElse(null);
taskCopy.put("point_code2", targetPoint); if (ObjectUtil.isNotEmpty(oneJson)) {
// 更新数据库 // 如果能找到去行架位1的任务则下发当前任务
wo_Task.update(taskCopy); taskArr.add(oneJson);
taskArr.add(taskCopy); } 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)) {
// 进行二次分配
JSONObject jsonTwo = pointTab.query("point_code = '" + IOSEnum.OUT_HANGER.code("行架位1") + "'")
.uniqueResult(0);
if (jsonTwo.getString("is_used").equals("1")) {
twoJsonTwo.put("point_code2", IOSEnum.OUT_HANGER.code("行架位1"));
wo_Task.update(twoJsonTwo);
taskArr.add(twoJsonTwo);
}
}
}
} }
} else {
// 原生点位,无需修改,直接加入下发列表
taskArr.add(taskCopy);
} }
} }
return taskArr; return taskArr;
} }

View File

@@ -103,10 +103,10 @@ public class TwoOutTask extends AbstractAcsTask {
.collect(Collectors.groupingBy(row -> row.getString("task_group_id"))); .collect(Collectors.groupingBy(row -> row.getString("task_group_id")));
// 判断长度 // 判断长度
if (likeArr.size() >= 3) { if (likeArr.size() >= flag) {
log.warn("twoOutTasklikeArr>=3"); log.warn("twoOutTasklikeArr>out_queue_num");
return null; return null;
} }
if (likeArr.size() == 1) { if (likeArr.size() == 1) {
flag = 1; flag = 1;
@@ -242,12 +242,6 @@ public class TwoOutTask extends AbstractAcsTask {
stIvtStructattrMapper.updateById(stIvtStructattr); stIvtStructattrMapper.updateById(stIvtStructattr);
} }
// 更新载具信息表
MdPdStoragevehicleext mdPdStoragevehicleext = mdPdStoragevehicleextMapper.selectOne(new LambdaQueryWrapper<MdPdStoragevehicleext>()
.eq(MdPdStoragevehicleext::getPcsn, jsonTask.getVehicle_code()));
mdPdStoragevehicleext.setPcsn("");
mdPdStoragevehicleextMapper.updateById(mdPdStoragevehicleext);
JSONObject parse = (JSONObject) JSONObject.parse(jsonTask.getRequest_param()); JSONObject parse = (JSONObject) JSONObject.parse(jsonTask.getRequest_param());
JSONObject jsonParam = new JSONObject(); JSONObject jsonParam = new JSONObject();
jsonParam.put("device_code",jsonTask.getPoint_code2()); jsonParam.put("device_code",jsonTask.getPoint_code2());
@@ -285,9 +279,6 @@ public class TwoOutTask extends AbstractAcsTask {
LashManageServiceImpl bean1 = SpringContextHolder.getBean(LashManageServiceImpl.class); LashManageServiceImpl bean1 = SpringContextHolder.getBean(LashManageServiceImpl.class);
bean1.createHeapTask(jsonParam); bean1.createHeapTask(jsonParam);
// 判断此任务组是否全部完成 // 判断此任务组是否全部完成
// JSONArray resultJSONArray = taskTab.query("task_group_id = '" + jsonTask.getString("task_group_id") + "' and task_status <> '" + TaskStatusEnum.FINISHED.getCode() + "' and handle_class = '"+THIS_CLASS+"'")
// .getResultJSONArray(0);
List<SchBaseTask> schBaseTasks = schBaseTaskMapper.selectList(new QueryWrapper<SchBaseTask>().eq("task_group_id", jsonTask.getTask_group_id()).ne("task_status", TaskStatusEnum.FINISHED.getCode()).eq("handle_class", THIS_CLASS)); List<SchBaseTask> schBaseTasks = schBaseTaskMapper.selectList(new QueryWrapper<SchBaseTask>().eq("task_group_id", jsonTask.getTask_group_id()).ne("task_status", TaskStatusEnum.FINISHED.getCode()).eq("handle_class", THIS_CLASS));
@@ -301,6 +292,12 @@ public class TwoOutTask extends AbstractAcsTask {
} }
} }
} }
} else {
// 更新载具信息表
MdPdStoragevehicleext mdPdStoragevehicleext = mdPdStoragevehicleextMapper.selectOne(new LambdaQueryWrapper<MdPdStoragevehicleext>()
.eq(MdPdStoragevehicleext::getPcsn, jsonTask.getVehicle_code()));
mdPdStoragevehicleext.setPcsn("");
mdPdStoragevehicleextMapper.updateById(mdPdStoragevehicleext);
} }
}, "cratergv", 30, this); }, "cratergv", 30, this);
} }

View File

@@ -106,6 +106,9 @@ public enum IOSEnum {
OUT_POINT2(MapOf.of("1","xxx", "2","xxx", "3","xxx", "4","xxx" ,"5","xxx", OUT_POINT2(MapOf.of("1","xxx", "2","xxx", "3","xxx", "4","xxx" ,"5","xxx",
"6","xxx", "7","xxx", "8","xxx", "9","9", "10","10")), "6","xxx", "7","xxx", "8","xxx", "9","9", "10","10")),
INVENTORYCHECK_OUT_POINT(MapOf.of("1","RK1022", "2","RK1022", "3","RK1020", "4","RK1020" ,"5","RK1010",
"6","RK1010", "7","RK1003", "8","1018", "9","9", "10","10")),
// 载具类型对应1楼拆叠盘点位 // 载具类型对应1楼拆叠盘点位
VEHICLE_TYPE_POINT(MapOf.of("1","RK1006", "2","RK1013")), VEHICLE_TYPE_POINT(MapOf.of("1","RK1006", "2","RK1013")),

View File

@@ -707,7 +707,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
// 创建出库任务 // 创建出库任务
try { try {
for (List<JSONObject> outTaskMangeList : outTaskMangeMap.values()) { for (List<JSONObject> outTaskMangeList : outTaskMangeMap.values()) {
createTask(outTaskMangeList, disTaskMangeList, whereJson.getString("point_code"),whereJson.getString("checked")); createTask(outTaskMangeList, disTaskMangeList, whereJson.getString("point_code"),whereJson.getString("checked"),whereJson.getString("bill_type"));
} }
} finally { } finally {
// 下发出库任务:判断当前单据是否有正在执行的的任务 // 下发出库任务:判断当前单据是否有正在执行的的任务
@@ -1261,35 +1261,43 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
// 确定终点: 根据仓位所在排确定终点, // 确定终点: 根据仓位所在排确定终点,
String end_device_code = ""; String end_device_code = "";
if ("true".equals(where.getString("checked"))) {
if("RK2009".equals(where.getString("point_code")) if (IOSEnum.OUT_TYPE.code("盘点出库").equals(json.getString("bill_type"))) {
||"RK1010".equals(where.getString("point_code")) end_device_code = IOSEnum.INVENTORYCHECK_OUT_POINT.code(json.getString("row_num"));
||"RK1018".equals(where.getString("point_code")) if (!end_device_code.equals(where.getString("point_code"))) {
||"RK1020".equals(where.getString("point_code")) throw new BadRequestException("请选择正常的盘点出库口【" + end_device_code + "");
||"RK1022".equals(where.getString("point_code")) }
||"RK1003".equals(where.getString("point_code"))){ } else if ("true".equals(where.getString("checked"))) {
if(StringUtils.isBlank(json.getString("storagevehicle_type"))){ if ("RK2009".equals(where.getString("point_code"))
throw new BadRequestException("点位没有大小托盘类型,请确认" ); || "RK1010".equals(where.getString("point_code"))
|| "RK1018".equals(where.getString("point_code"))
|| "RK1020".equals(where.getString("point_code"))
|| "RK1022".equals(where.getString("point_code"))
|| "RK1003".equals(where.getString("point_code"))) {
if (StringUtils.isBlank(json.getString("storagevehicle_type"))) {
throw new BadRequestException("点位没有大小托盘类型,请确认");
}
if (!IOSEnum.EXCEP_OUT.code(json.getString("storagevehicle_type")).equals(where.getString("point_code"))) {
throw new BadRequestException("出库口选择有误,请确认起点的大小托盘类型与终点是否匹配");
} }
// if(!IOSEnum.EXCEP_OUT.code(json.getString("storagevehicle_type")).equals(where.getString("point_code"))){
// throw new BadRequestException("出库口选择有误,请确认起点的大小托盘类型与终点是否匹配" );
// }
end_device_code = where.getString("point_code"); end_device_code = where.getString("point_code");
} else { } else {
throw new BadRequestException("异常出库点位只能选择【RK2009】" ); throw new BadRequestException("异常出库点位只能选择【RK2009】");
} }
} else { } else {
if("RK2009".equals(where.getString("point_code")) if ("RK2009".equals(where.getString("point_code"))
||"RK1010".equals(where.getString("point_code")) || "RK1010".equals(where.getString("point_code"))
||"RK1003".equals(where.getString("point_code")) || "RK1003".equals(where.getString("point_code"))
||"RK1018".equals(where.getString("point_code")) || "RK1018".equals(where.getString("point_code"))
||"RK1020".equals(where.getString("point_code")) || "RK1020".equals(where.getString("point_code"))
||"RK1022".equals(where.getString("point_code"))){ || "RK1022".equals(where.getString("point_code"))) {
throw new BadRequestException("此点位为异常出库点,请勾选【是否异常出库】" ); throw new BadRequestException("此点位为异常出库点,请勾选【是否异常出库】");
} }
end_device_code = IsEndCode(json); end_device_code = IsEndCode(json);
} }
// 过滤此仓位的分配明细 // 过滤此仓位的分配明细
List<StIvtIostorinvdis> disDaoList = disLikeList.stream() List<StIvtIostorinvdis> disDaoList = disLikeList.stream()
.filter(row -> row.getString("struct_code").equals(json.getString("struct_code"))) .filter(row -> row.getString("struct_code").equals(json.getString("struct_code")))
@@ -1905,7 +1913,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
* @param disLikeList分配明细集合 * @param disLikeList分配明细集合
* @param point_code 终点 * @param point_code 终点
*/ */
private void createTask(List<JSONObject> taskMangeList, List<JSONObject> disLikeList, String point_code, String checked) { private void createTask(List<JSONObject> taskMangeList, List<JSONObject> disLikeList, String point_code, String checked, String bill_type) {
// 查询异常货位任务集合 // 查询异常货位任务集合
@@ -1933,6 +1941,12 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
flag = jsonParam.getString("value"); flag = jsonParam.getString("value");
} }
IStIvtIostorinvOutService aopService = SpringContextHolder.getBean(IStIvtIostorinvOutService.class); IStIvtIostorinvOutService aopService = SpringContextHolder.getBean(IStIvtIostorinvOutService.class);
for (int i = 0; i < taskMangeList.size(); i++) {
JSONObject json = taskMangeList.get(i);
if(StringUtils.isBlank(json.getString("storagevehicle_code"))){
throw new BadRequestException("批次不能为空!");
}
}
for (int i = 0; i < taskMangeList.size(); i++) { for (int i = 0; i < taskMangeList.size(); i++) {
JSONObject json = taskMangeList.get(i); JSONObject json = taskMangeList.get(i);
// TODO --- // TODO ---
@@ -1944,6 +1958,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
jsonObject.put("task_group_id", task_group_id); jsonObject.put("task_group_id", task_group_id);
jsonObject.put("point_code", point_code); jsonObject.put("point_code", point_code);
jsonObject.put("checked", checked); jsonObject.put("checked", checked);
jsonObject.put("bill_type", bill_type);
aopService.createForTask(json, jsonObject); aopService.createForTask(json, jsonObject);
} }
} }

View File

@@ -466,7 +466,7 @@ public class InBoxManageServiceImpl implements InBoxManageService {
String boxListString = split.stream().collect(Collectors.joining(",")); String boxListString = split.stream().collect(Collectors.joining(","));
JSONObject taskParam = new JSONObject(); JSONObject taskParam = new JSONObject();
taskParam.put("task_type", "010713"); taskParam.put("task_type", "010739");
taskParam.put("start_device_code", whereJson.getString("point_code")); taskParam.put("start_device_code", whereJson.getString("point_code"));
//都强制到1005 //都强制到1005
@@ -520,7 +520,7 @@ public class InBoxManageServiceImpl implements InBoxManageService {
); );
// 下发桁架任务 // 下发桁架任务
JSONObject taskParam = new JSONObject(); JSONObject taskParam = new JSONObject();
taskParam.put("task_type", "010713"); taskParam.put("task_type", "010739");
taskParam.put("start_device_code", whereJson.getString("point_code")); taskParam.put("start_device_code", whereJson.getString("point_code"));
taskParam.put("next_device_code", IOSEnum.VEHICLE_TYPE_SCAN_POINT.code(boxDao.getVehicle_type())); taskParam.put("next_device_code", IOSEnum.VEHICLE_TYPE_SCAN_POINT.code(boxDao.getVehicle_type()));
taskParam.put("vehicle_code", whereJson.getString("box_no")); taskParam.put("vehicle_code", whereJson.getString("box_no"));
@@ -607,7 +607,7 @@ public class InBoxManageServiceImpl implements InBoxManageService {
/* /*
* 查询mes木箱信息插入木箱信息表 * 查询mes木箱信息插入木箱信息表
*/ */
JSONArray resultJSONArray = WQLObject.getWQLObject("pdm_bi_subpackagerelation").query("package_box_sn = '" + whereJson.getString("box_no") + "' AND status = '0'").getResultJSONArray(0); JSONArray resultJSONArray = WQLObject.getWQLObject("pdm_bi_subpackagerelation").query("package_box_sn = '" + whereJson.getString("box_no") + "' AND status IN ('0','3')").getResultJSONArray(0);
if (ObjectUtil.isEmpty(resultJSONArray)) { if (ObjectUtil.isEmpty(resultJSONArray)) {
throw new BadRequestException("未查询到子卷包装信息!"); throw new BadRequestException("未查询到子卷包装信息!");
} }
@@ -647,7 +647,7 @@ public class InBoxManageServiceImpl implements InBoxManageService {
// 下发桁架任务 // 下发桁架任务
JSONObject taskParam = new JSONObject(); JSONObject taskParam = new JSONObject();
taskParam.put("task_type", "010713"); taskParam.put("task_type", "010739");
taskParam.put("start_device_code", whereJson.getString("point_code")); taskParam.put("start_device_code", whereJson.getString("point_code"));
taskParam.put("next_device_code", IOSEnum.VEHICLE_TYPE_SCAN_POINT.code("1")); taskParam.put("next_device_code", IOSEnum.VEHICLE_TYPE_SCAN_POINT.code("1"));
taskParam.put("vehicle_code", whereJson.getString("box_no")); taskParam.put("vehicle_code", whereJson.getString("box_no"));

View File

@@ -85,7 +85,7 @@ public class InVehicleManageServiceImpl implements InVehicleManageService {
jsonParam.put("vehicle_type", whereJson.getString("vehicle_type")); jsonParam.put("vehicle_type", whereJson.getString("vehicle_type"));
if("2".equals(whereJson.getString("vehicle_type"))) { if("2".equals(whereJson.getString("vehicle_type"))) {
//todo 默认需要调整,根据当前的出库任务确认如果是2楼入库则需要判断出库任务如果出库任务 //todo 默认需要调整,根据当前的出库任务确认如果是2楼入库则需要判断出库任务如果出库任务
//jsonParam.put("move_block_num","3"); jsonParam.put("move_block_num","3");
} else { } else {
jsonParam.put("move_block_num","4"); jsonParam.put("move_block_num","4");
} }
@@ -214,6 +214,15 @@ public class InVehicleManageServiceImpl implements InVehicleManageService {
stIvtStructattrLambdaQueryWrapper.eq(StIvtStructattr::getBlock_num, block_num); stIvtStructattrLambdaQueryWrapper.eq(StIvtStructattr::getBlock_num, block_num);
} }
List<StIvtStructattr> stIvtStructattrs = stIvtStructattrMapper.selectList(stIvtStructattrLambdaQueryWrapper); List<StIvtStructattr> stIvtStructattrs = stIvtStructattrMapper.selectList(stIvtStructattrLambdaQueryWrapper);
if (CollUtil.isEmpty(stIvtStructattrs)) {
stIvtStructattrLambdaQueryWrapper = new LambdaQueryWrapper<>();
stIvtStructattrLambdaQueryWrapper.eq(StIvtStructattr::getIs_delete, IOSEnum.IS_NOTANDYES.code(""))
.eq(StIvtStructattr::getIs_used, IOSEnum.IS_NOTANDYES.code("")).eq(StIvtStructattr::getSect_id, jsonParam.getString("sect_id"))
.eq(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")).eq(StIvtStructattr::getStor_id, jsonParam.getString("stor_id"))
.eq(StIvtStructattr::getStoragevehicle_type, jsonParam.getString("vehicle_type"))
.eq(StIvtStructattr::getHeight, "2");
stIvtStructattrs = stIvtStructattrMapper.selectList(stIvtStructattrLambdaQueryWrapper);
}
if (CollUtil.isEmpty(stIvtStructattrs)) { if (CollUtil.isEmpty(stIvtStructattrs)) {
notInRowList.clear(); notInRowList.clear();
notInBlockList.clear(); notInBlockList.clear();

View File

@@ -137,7 +137,7 @@ public class LashManageServiceImpl implements LashManageService {
.query("package_box_sn = '" + boxDao.getBox_no() + "'") .query("package_box_sn = '" + boxDao.getBox_no() + "'")
.uniqueResult(0); .uniqueResult(0);
if (ObjectUtil.isEmpty(jsonSub)) { if (ObjectUtil.isEmpty(jsonSub)) {
throw new BadRequestException("子卷包装关系不存在:【"+boxDao.getBox_no()+""); throw new BadRequestException("子卷包装关系不存在:【" + boxDao.getBox_no() + "");
} }
//查询木箱对应的托盘绑定关系,并清除 //查询木箱对应的托盘绑定关系,并清除
@@ -165,7 +165,6 @@ public class LashManageServiceImpl implements LashManageService {
// 桁架任务终点 // 桁架任务终点
String end_point; String end_point;
// todo 检查一下这个堆叠的代码逻辑是否正常
// 判断是否有相同订单号、木箱规格的木箱 // 判断是否有相同订单号、木箱规格的木箱
List<JSONObject> likeBoxList = pointDaoList.stream() List<JSONObject> likeBoxList = pointDaoList.stream()
.filter(row -> ObjectUtil.isNotEmpty(row.getString("box_length")) && .filter(row -> ObjectUtil.isNotEmpty(row.getString("box_length")) &&
@@ -227,25 +226,6 @@ public class LashManageServiceImpl implements LashManageService {
// 有空位 // 有空位
JSONObject jsonPoint = empPointList.get(0); JSONObject jsonPoint = empPointList.get(0);
// 判断这两个点位是否有任务:如果没有则下发任务
WQLObject wo_Task = WQLObject.getWQLObject("SCH_BASE_Task");
List<JSONObject> pointJson = wo_Task.query("task_type = '010707' AND task_status IN ('05','06') AND is_delete = '0' ORDER BY point_code2")
.getResultJSONArray(0).toJavaList(JSONObject.class);
if (!CollectionUtils.isEmpty(pointJson) && empPointList.size() > 1) {
// 统计第一个点位的任务数量
JSONObject finalJsonPoint = jsonPoint;
long countPoint1 = pointJson.stream()
.filter(j -> finalJsonPoint.getString("point_code").equals(j.getString("point_code2"))).count();
//第一个点有任务
if (countPoint1 > 0) {
jsonPoint = empPointList.get(1);
}
}
// 判断是否堆叠 // 判断是否堆叠
String two_is_lash = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("two_is_lash").getValue(); String two_is_lash = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("two_is_lash").getValue();
if (two_is_lash.equals(IOSEnum.IS_NOTANDYES.code(""))) { if (two_is_lash.equals(IOSEnum.IS_NOTANDYES.code(""))) {
@@ -538,6 +518,15 @@ public class LashManageServiceImpl implements LashManageService {
action_rows.add(action_jo); action_rows.add(action_jo);
wmsToAcsService.action(action_rows); wmsToAcsService.action(action_rows);
JSONArray action_rows2 = new JSONArray();
JSONObject action_jo2 = new JSONObject();
action_jo2.put("device_code", "MXDDHJ");
action_jo2.put("product_area", "BLK");
action_jo2.put("code", "to_command");
action_jo2.put("value", "1125");
action_rows2.add(action_jo2);
wmsToAcsService.action(action_rows2);
// 更新点位数量 // 更新点位数量
pointDao.setVehicle_qty(BigDecimal.valueOf(0)); pointDao.setVehicle_qty(BigDecimal.valueOf(0));
pointDao.setVehicle_code(""); pointDao.setVehicle_code("");

View File

@@ -243,7 +243,7 @@ public class OutBussManageServiceImpl implements OutBussManageService {
if (ObjectUtil.isEmpty(likePcsnBoxList)) { if (ObjectUtil.isEmpty(likePcsnBoxList)) {
throw new BadRequestException("库存不足!"); throw new BadRequestException("库存不足!,也可能是库存已经被锁定");
} }
// 计算重量 // 计算重量

View File

@@ -95,9 +95,9 @@ public class OutVehicleManageServiceImpl implements OutVehicleManageService {
//判断当前点位是否存在任务,如果存在则不生成任务 //判断当前点位是否存在任务,如果存在则不生成任务
List<SchBaseTask> taskList = schBaseTaskMapper.selectList(new QueryWrapper<SchBaseTask>().lambda().eq(SchBaseTask::getPoint_code2, whereJson.getString("device_code")).lt(SchBaseTask::getTask_status, "07").eq(SchBaseTask::getIs_delete, "0")); List<SchBaseTask> taskList = schBaseTaskMapper.selectList(new QueryWrapper<SchBaseTask>().lambda().eq(SchBaseTask::getPoint_code2, whereJson.getString("device_code")).lt(SchBaseTask::getTask_status, "07").eq(SchBaseTask::getIs_delete, "0"));
// if (ObjectUtil.isNotEmpty(taskList)) { if (ObjectUtil.isNotEmpty(taskList)) {
// throw new BadRequestException("点位【" + taskList.get(0).getPoint_code2() + "】正在出空托盘任务!"); throw new BadRequestException("点位【" + taskList.get(0).getPoint_code2() + "】正在出空托盘任务!");
// } }
JSONObject jsonAttr = getStruct(whereJson); JSONObject jsonAttr = getStruct(whereJson);
if (ObjectUtil.isEmpty(jsonAttr)) { if (ObjectUtil.isEmpty(jsonAttr)) {
@@ -260,7 +260,16 @@ public class OutVehicleManageServiceImpl implements OutVehicleManageService {
stIvtStructattrLambdaQueryWrapper.eq(StIvtStructattr::getBlock_num, block_num); stIvtStructattrLambdaQueryWrapper.eq(StIvtStructattr::getBlock_num, block_num);
} }
List<StIvtStructattr> stIvtStructattrs = stIvtStructattrMapper.selectList(stIvtStructattrLambdaQueryWrapper); List<StIvtStructattr> stIvtStructattrs = stIvtStructattrMapper.selectList(stIvtStructattrLambdaQueryWrapper);
if (CollUtil.isEmpty(stIvtStructattrs)) {
stIvtStructattrLambdaQueryWrapper = new LambdaQueryWrapper<>();
stIvtStructattrLambdaQueryWrapper.apply("IFNULL(storagevehicle_code,'') != '' ")
.eq(StIvtStructattr::getIs_delete, IOSEnum.IS_NOTANDYES.code(""))
.eq(StIvtStructattr::getIs_used, IOSEnum.IS_NOTANDYES.code("")).eq(StIvtStructattr::getSect_id, whereJson.getString("sect_id"))
.eq(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")).eq(StIvtStructattr::getStor_id, whereJson.getString("stor_id"))
.eq(StIvtStructattr::getStoragevehicle_type, whereJson.getString("storagevehicle_type"))
.eq(StIvtStructattr::getIs_emptyvehicle, "1");
stIvtStructattrs = stIvtStructattrMapper.selectList(stIvtStructattrLambdaQueryWrapper);
}
if (CollUtil.isEmpty(stIvtStructattrs)) { if (CollUtil.isEmpty(stIvtStructattrs)) {
notOutRowList.clear(); notOutRowList.clear();
notOutBlockList.clear(); notOutBlockList.clear();

View File

@@ -33,6 +33,11 @@ public class AcsToWmsController {
@PostMapping("/status") @PostMapping("/status")
@Log(value = "ACS给WMS反馈任务状态", isInterfaceLog = true, interfaceLogType = InterfaceLogType.ACS_TO_LMS) @Log(value = "ACS给WMS反馈任务状态", isInterfaceLog = true, interfaceLogType = InterfaceLogType.ACS_TO_LMS)
@SaIgnore @SaIgnore
@ApiLog(
bizCode = "/api/wms/task/status",
bizDesc = "ACS给WMS反馈任务状态",
systemFlag = "acs"
)
public ResponseEntity<Object> receiveTaskStatusAcs(@RequestBody String string) { public ResponseEntity<Object> receiveTaskStatusAcs(@RequestBody String string) {
log.info("ACS给WMS反馈任务状态:{}", string); log.info("ACS给WMS反馈任务状态:{}", string);
return new ResponseEntity<>(acsToWmsService.receiveTaskStatusAcs(string), HttpStatus.OK); return new ResponseEntity<>(acsToWmsService.receiveTaskStatusAcs(string), HttpStatus.OK);
@@ -58,6 +63,11 @@ public class AcsToWmsController {
@PostMapping("/deviceApply") @PostMapping("/deviceApply")
@Log(value = "申请贴标、捆扎", isInterfaceLog = true, interfaceLogType = InterfaceLogType.ACS_TO_LMS) @Log(value = "申请贴标、捆扎", isInterfaceLog = true, interfaceLogType = InterfaceLogType.ACS_TO_LMS)
@SaIgnore @SaIgnore
@ApiLog(
bizCode = "/api/wms/task/deviceApply",
bizDesc = "申请贴标、捆扎",
systemFlag = "acs"
)
public ResponseEntity<Object> deviceApply(@RequestBody JSONObject jo) { public ResponseEntity<Object> deviceApply(@RequestBody JSONObject jo) {
return new ResponseEntity<>(acsToWmsService.deviceApply(jo), HttpStatus.OK); return new ResponseEntity<>(acsToWmsService.deviceApply(jo), HttpStatus.OK);
} }
@@ -151,6 +161,11 @@ public class AcsToWmsController {
@PostMapping("/deviceApplyExceptional") @PostMapping("/deviceApplyExceptional")
@Log(value = "二期任务异常反馈", isInterfaceLog = true, interfaceLogType = InterfaceLogType.ACS_TO_LMS) @Log(value = "二期任务异常反馈", isInterfaceLog = true, interfaceLogType = InterfaceLogType.ACS_TO_LMS)
@SaIgnore @SaIgnore
@ApiLog(
bizCode = "/api/wms/task/deviceApplyExceptional",
bizDesc = "二期任务异常反馈",
systemFlag = "acs"
)
public ResponseEntity<Object> deviceApplyExceptional(@RequestBody JSONObject whereJson) { public ResponseEntity<Object> deviceApplyExceptional(@RequestBody JSONObject whereJson) {
return new ResponseEntity<>(acsToWmsService.deviceApplyExceptional(whereJson), HttpStatus.OK); return new ResponseEntity<>(acsToWmsService.deviceApplyExceptional(whereJson), HttpStatus.OK);
} }

View File

@@ -1420,7 +1420,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
map.put("status", "0"); map.put("status", "0");
WQLObject.getWQLObject("pdm_bi_subpackagerelation").update(map, "package_box_sn = '" + whereJson.getString("box_no") + "'"); WQLObject.getWQLObject("pdm_bi_subpackagerelation").update(map, "package_box_sn = '" + whereJson.getString("box_no") + "'");
} }
resultJSONArray = WQLObject.getWQLObject("pdm_bi_subpackagerelation").query("package_box_sn = '" + whereJson.getString("box_no") + "' AND status in ('0','1','99')").getResultJSONArray(0); resultJSONArray = WQLObject.getWQLObject("pdm_bi_subpackagerelation").query("package_box_sn = '" + whereJson.getString("box_no") + "' AND status in ('0','1','3','99')").getResultJSONArray(0);
if (ObjectUtil.isEmpty(resultJSONArray)) { if (ObjectUtil.isEmpty(resultJSONArray)) {
throw new BadRequestException("未查询到子卷包装信息!"); throw new BadRequestException("未查询到子卷包装信息!");
} }

View File

@@ -176,7 +176,9 @@ public abstract class AbstractAcsTask {
List<SchBaseTask> outSmallTaskList = workingTaskList.stream().filter(task->oneFloorReturnSmallVehicleOutTaskStartPoint.contains(task.getPoint_code2())).collect(Collectors.toList()); List<SchBaseTask> outSmallTaskList = workingTaskList.stream().filter(task->oneFloorReturnSmallVehicleOutTaskStartPoint.contains(task.getPoint_code2())).collect(Collectors.toList());
if(CollectionUtil.isEmpty(taskList)){
return null;
}
Iterator<AcsTaskDto> it = taskList.iterator(); Iterator<AcsTaskDto> it = taskList.iterator();
while (it.hasNext()) { while (it.hasNext()) {
AcsTaskDto acsTaskDto = it.next(); AcsTaskDto acsTaskDto = it.next();

View File

@@ -676,6 +676,7 @@ export default {
this.currentRow.point_code = this.form2.point_code this.currentRow.point_code = this.form2.point_code
this.currentRow.checked = this.checked this.currentRow.checked = this.checked
this.currentRow.stor_id = this.mstrow.stor_id this.currentRow.stor_id = this.mstrow.stor_id
this.currentRow.bill_type = this.mstrow.bill_type
checkoutbill.allSetPoint(this.currentRow).then(res => { checkoutbill.allSetPoint(this.currentRow).then(res => {
this.queryTableDdis(this.currentRow.iostorinvdtl_id) this.queryTableDdis(this.currentRow.iostorinvdtl_id)
this.crud.notify(this.$t('common.settingSuccessful'), CRUD.NOTIFICATION_TYPE.INFO) this.crud.notify(this.$t('common.settingSuccessful'), CRUD.NOTIFICATION_TYPE.INFO)

View File

@@ -91,7 +91,7 @@
@keyup.enter.native="crud.toQuery" @keyup.enter.native="crud.toQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item :label="$t('common.product_area')"> <el-form-item v-show="false" :label="$t('common.product_area')">
<el-select <el-select
v-model="query.product_area" v-model="query.product_area"
clearable clearable