opt:优化
This commit is contained in:
@@ -552,7 +552,7 @@ public class VehicleTwoServiceImpl implements VehicleTwoService {
|
||||
whereJson.put("box_no", whereJson.getString("box_no"));
|
||||
List<PdmBiSubpackagerelation> sub_list = ipdmBiSubpackagerelationService.list(new LambdaQueryWrapper<PdmBiSubpackagerelation>()
|
||||
.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)) {
|
||||
throw new BadRequestException("未查询到子卷包装信息!");
|
||||
}
|
||||
|
||||
@@ -57,6 +57,6 @@ public interface SchBasePointMapper extends BaseMapper<SchBasePoint> {
|
||||
|
||||
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();
|
||||
}
|
||||
|
||||
@@ -198,6 +198,16 @@ public class TwoLashTask extends AbstractAcsTask {
|
||||
action_rows.add(action_jo);
|
||||
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);
|
||||
pointDao.put("vehicle_code", "");
|
||||
|
||||
@@ -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")
|
||||
.getResultJSONArray(0).toJavaList(JSONObject.class);
|
||||
|
||||
// 统计行架1、行架2 当前负载数量
|
||||
long countHanger1 = pointJson.stream()
|
||||
.filter(j -> IOSEnum.OUT_HANGER.code("行架位1").equals(j.getString("point_code2"))).count();
|
||||
long countHanger2 = pointJson.stream()
|
||||
.filter(j -> IOSEnum.OUT_HANGER.code("行架位2").equals(j.getString("point_code2"))).count();
|
||||
|
||||
// ==========2. 预分组待下发任务,只遍历一次taskArrAll ==========
|
||||
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));
|
||||
// 下发两个的任务
|
||||
List<JSONObject> err_list = taskArrAll.stream()
|
||||
.filter(row -> row.getString("point_code2").equals(IOSEnum.EXCEP_OUT.code("1"))
|
||||
|| row.getString("point_code2").equals(IOSEnum.EXCEP_OUT.code("2")))
|
||||
.collect(Collectors.toList());
|
||||
if (ObjectUtil.isNotEmpty(err_list)) {
|
||||
taskArr.addAll(err_list);
|
||||
}
|
||||
|
||||
// ==========4. 行架负载均衡分配核心逻辑 ==========
|
||||
// 判断哪边负载更小
|
||||
boolean hanger1Less = countHanger1 < countHanger2;
|
||||
boolean hanger2Less = countHanger2 < countHanger1;
|
||||
|
||||
JSONObject selectTask = null;
|
||||
String targetPoint = null;
|
||||
|
||||
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");
|
||||
if (ObjectUtil.isEmpty(pointJson)) {
|
||||
// 下发两个的任务
|
||||
JSONObject oneJson = taskArrAll.stream()
|
||||
.filter(row -> row.getString("point_code2").equals(IOSEnum.OUT_HANGER.code("行架位1")))
|
||||
.findFirst().orElse(null);
|
||||
if (ObjectUtil.isNotEmpty(oneJson)) {
|
||||
taskArr.add(oneJson);
|
||||
}
|
||||
} else if (hanger2Less) {
|
||||
// 行架2负载低:优先原生行架2任务
|
||||
selectTask = waitHanger2List.stream().findFirst().orElse(null);
|
||||
targetPoint = IOSEnum.OUT_HANGER.code("行架位2");
|
||||
// 若无原生任务,则把行架1任务 转移 → 行架2
|
||||
if (ObjectUtil.isNull(selectTask)) {
|
||||
selectTask = waitHanger1List.stream().findFirst().orElse(null);
|
||||
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)) {
|
||||
taskArr.add(twoJson);
|
||||
}
|
||||
} else {
|
||||
// count相等,默认优先行架1
|
||||
selectTask = waitHanger1List.stream().findFirst().orElse(null);
|
||||
targetPoint = IOSEnum.OUT_HANGER.code("行架位1");
|
||||
if (ObjectUtil.isNull(selectTask)) {
|
||||
selectTask = waitHanger2List.stream().findFirst().orElse(null);
|
||||
targetPoint = IOSEnum.OUT_HANGER.code("行架位2");
|
||||
}
|
||||
}
|
||||
// 哪里空了就下发哪里的
|
||||
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);
|
||||
|
||||
// ==========5. 处理选中任务,区分是否需要变更点位 ==========
|
||||
if (ObjectUtil.isNotEmpty(selectTask)) {
|
||||
String originalPoint = selectTask.getString("point_code2");
|
||||
// 深拷贝!禁止操作原始taskArrAll对象
|
||||
JSONObject taskCopy = JSONObject.parseObject(selectTask.toJSONString());
|
||||
if (ObjectUtil.isNotEmpty(twoJsonOne)) {
|
||||
// 进行二次分配
|
||||
// 判断点位是否启用
|
||||
JSONObject jsonOne = pointTab.query("point_code = '" + IOSEnum.OUT_HANGER.code("行架位2") + "'")
|
||||
.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)) {
|
||||
// 需要二次分配、变更点位
|
||||
// 校验目标点位是否启用
|
||||
JSONObject pointInfo = pointTab.query("point_code = '" + targetPoint + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isNotEmpty(pointInfo) && "1".equals(pointInfo.getString("is_used"))) {
|
||||
// 修改副本点位
|
||||
taskCopy.put("point_code2", targetPoint);
|
||||
// 更新数据库
|
||||
wo_Task.update(taskCopy);
|
||||
taskArr.add(taskCopy);
|
||||
}
|
||||
} 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)) {
|
||||
// 进行二次分配
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
@@ -103,10 +103,10 @@ public class TwoOutTask extends AbstractAcsTask {
|
||||
.collect(Collectors.groupingBy(row -> row.getString("task_group_id")));
|
||||
|
||||
// 判断长度
|
||||
if (likeArr.size() >= 3) {
|
||||
log.warn("twoOutTasklikeArr>=3");
|
||||
return null;
|
||||
}
|
||||
if (likeArr.size() >= flag) {
|
||||
log.warn("twoOutTasklikeArr>out_queue_num");
|
||||
return null;
|
||||
}
|
||||
|
||||
if (likeArr.size() == 1) {
|
||||
flag = 1;
|
||||
@@ -242,12 +242,6 @@ public class TwoOutTask extends AbstractAcsTask {
|
||||
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 jsonParam = new JSONObject();
|
||||
jsonParam.put("device_code",jsonTask.getPoint_code2());
|
||||
@@ -285,9 +279,6 @@ public class TwoOutTask extends AbstractAcsTask {
|
||||
LashManageServiceImpl bean1 = SpringContextHolder.getBean(LashManageServiceImpl.class);
|
||||
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));
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -106,6 +106,9 @@ public enum IOSEnum {
|
||||
OUT_POINT2(MapOf.of("1","xxx", "2","xxx", "3","xxx", "4","xxx" ,"5","xxx",
|
||||
"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楼拆叠盘点位
|
||||
VEHICLE_TYPE_POINT(MapOf.of("1","RK1006", "2","RK1013")),
|
||||
|
||||
|
||||
@@ -707,7 +707,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
// 创建出库任务
|
||||
try {
|
||||
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 {
|
||||
// 下发出库任务:判断当前单据是否有正在执行的的任务
|
||||
@@ -1261,35 +1261,43 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
|
||||
// 确定终点: 根据仓位所在排确定终点,
|
||||
String end_device_code = "";
|
||||
if ("true".equals(where.getString("checked"))) {
|
||||
if("RK2009".equals(where.getString("point_code"))
|
||||
||"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.OUT_TYPE.code("盘点出库").equals(json.getString("bill_type"))) {
|
||||
end_device_code = IOSEnum.INVENTORYCHECK_OUT_POINT.code(json.getString("row_num"));
|
||||
if (!end_device_code.equals(where.getString("point_code"))) {
|
||||
throw new BadRequestException("请选择正常的盘点出库口【" + end_device_code + "】");
|
||||
}
|
||||
} else if ("true".equals(where.getString("checked"))) {
|
||||
if ("RK2009".equals(where.getString("point_code"))
|
||||
|| "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");
|
||||
} else {
|
||||
throw new BadRequestException("异常出库点位只能选择【RK2009】" );
|
||||
throw new BadRequestException("异常出库点位只能选择【RK2009】");
|
||||
}
|
||||
} else {
|
||||
if("RK2009".equals(where.getString("point_code"))
|
||||
||"RK1010".equals(where.getString("point_code"))
|
||||
||"RK1003".equals(where.getString("point_code"))
|
||||
||"RK1018".equals(where.getString("point_code"))
|
||||
||"RK1020".equals(where.getString("point_code"))
|
||||
||"RK1022".equals(where.getString("point_code"))){
|
||||
throw new BadRequestException("此点位为异常出库点,请勾选【是否异常出库】" );
|
||||
if ("RK2009".equals(where.getString("point_code"))
|
||||
|| "RK1010".equals(where.getString("point_code"))
|
||||
|| "RK1003".equals(where.getString("point_code"))
|
||||
|| "RK1018".equals(where.getString("point_code"))
|
||||
|| "RK1020".equals(where.getString("point_code"))
|
||||
|| "RK1022".equals(where.getString("point_code"))) {
|
||||
throw new BadRequestException("此点位为异常出库点,请勾选【是否异常出库】");
|
||||
}
|
||||
end_device_code = IsEndCode(json);
|
||||
}
|
||||
|
||||
|
||||
// 过滤此仓位的分配明细
|
||||
List<StIvtIostorinvdis> disDaoList = disLikeList.stream()
|
||||
.filter(row -> row.getString("struct_code").equals(json.getString("struct_code")))
|
||||
@@ -1905,7 +1913,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
* @param disLikeList:分配明细集合
|
||||
* @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");
|
||||
}
|
||||
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++) {
|
||||
JSONObject json = taskMangeList.get(i);
|
||||
// TODO ---
|
||||
@@ -1944,6 +1958,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
jsonObject.put("task_group_id", task_group_id);
|
||||
jsonObject.put("point_code", point_code);
|
||||
jsonObject.put("checked", checked);
|
||||
jsonObject.put("bill_type", bill_type);
|
||||
aopService.createForTask(json, jsonObject);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -466,7 +466,7 @@ public class InBoxManageServiceImpl implements InBoxManageService {
|
||||
String boxListString = split.stream().collect(Collectors.joining(","));
|
||||
|
||||
JSONObject taskParam = new JSONObject();
|
||||
taskParam.put("task_type", "010713");
|
||||
taskParam.put("task_type", "010739");
|
||||
taskParam.put("start_device_code", whereJson.getString("point_code"));
|
||||
|
||||
//都强制到1005
|
||||
@@ -520,7 +520,7 @@ public class InBoxManageServiceImpl implements InBoxManageService {
|
||||
);
|
||||
// 下发桁架任务
|
||||
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("next_device_code", IOSEnum.VEHICLE_TYPE_SCAN_POINT.code(boxDao.getVehicle_type()));
|
||||
taskParam.put("vehicle_code", whereJson.getString("box_no"));
|
||||
@@ -607,7 +607,7 @@ public class InBoxManageServiceImpl implements InBoxManageService {
|
||||
/*
|
||||
* 查询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)) {
|
||||
throw new BadRequestException("未查询到子卷包装信息!");
|
||||
}
|
||||
@@ -647,7 +647,7 @@ public class InBoxManageServiceImpl implements InBoxManageService {
|
||||
|
||||
// 下发桁架任务
|
||||
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("next_device_code", IOSEnum.VEHICLE_TYPE_SCAN_POINT.code("1"));
|
||||
taskParam.put("vehicle_code", whereJson.getString("box_no"));
|
||||
|
||||
@@ -85,7 +85,7 @@ public class InVehicleManageServiceImpl implements InVehicleManageService {
|
||||
jsonParam.put("vehicle_type", whereJson.getString("vehicle_type"));
|
||||
if("2".equals(whereJson.getString("vehicle_type"))) {
|
||||
//todo 默认需要调整,根据当前的出库任务确认,如果是2楼入库,则需要判断出库任务,如果出库任务
|
||||
//jsonParam.put("move_block_num","3");
|
||||
jsonParam.put("move_block_num","3");
|
||||
} else {
|
||||
jsonParam.put("move_block_num","4");
|
||||
}
|
||||
@@ -214,6 +214,15 @@ public class InVehicleManageServiceImpl implements InVehicleManageService {
|
||||
stIvtStructattrLambdaQueryWrapper.eq(StIvtStructattr::getBlock_num, block_num);
|
||||
}
|
||||
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)) {
|
||||
notInRowList.clear();
|
||||
notInBlockList.clear();
|
||||
|
||||
@@ -137,7 +137,7 @@ public class LashManageServiceImpl implements LashManageService {
|
||||
.query("package_box_sn = '" + boxDao.getBox_no() + "'")
|
||||
.uniqueResult(0);
|
||||
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;
|
||||
|
||||
// todo 检查一下这个堆叠的代码逻辑是否正常
|
||||
// 判断是否有相同订单号、木箱规格的木箱
|
||||
List<JSONObject> likeBoxList = pointDaoList.stream()
|
||||
.filter(row -> ObjectUtil.isNotEmpty(row.getString("box_length")) &&
|
||||
@@ -227,25 +226,6 @@ public class LashManageServiceImpl implements LashManageService {
|
||||
// 有空位
|
||||
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();
|
||||
if (two_is_lash.equals(IOSEnum.IS_NOTANDYES.code("否"))) {
|
||||
@@ -538,6 +518,15 @@ public class LashManageServiceImpl implements LashManageService {
|
||||
action_rows.add(action_jo);
|
||||
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_code("");
|
||||
|
||||
@@ -243,7 +243,7 @@ public class OutBussManageServiceImpl implements OutBussManageService {
|
||||
|
||||
|
||||
if (ObjectUtil.isEmpty(likePcsnBoxList)) {
|
||||
throw new BadRequestException("库存不足!");
|
||||
throw new BadRequestException("库存不足!,也可能是库存已经被锁定");
|
||||
}
|
||||
|
||||
// 计算重量
|
||||
|
||||
@@ -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"));
|
||||
|
||||
// if (ObjectUtil.isNotEmpty(taskList)) {
|
||||
// throw new BadRequestException("点位【" + taskList.get(0).getPoint_code2() + "】正在出空托盘任务!");
|
||||
// }
|
||||
if (ObjectUtil.isNotEmpty(taskList)) {
|
||||
throw new BadRequestException("点位【" + taskList.get(0).getPoint_code2() + "】正在出空托盘任务!");
|
||||
}
|
||||
JSONObject jsonAttr = getStruct(whereJson);
|
||||
|
||||
if (ObjectUtil.isEmpty(jsonAttr)) {
|
||||
@@ -260,7 +260,16 @@ public class OutVehicleManageServiceImpl implements OutVehicleManageService {
|
||||
stIvtStructattrLambdaQueryWrapper.eq(StIvtStructattr::getBlock_num, block_num);
|
||||
}
|
||||
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)) {
|
||||
notOutRowList.clear();
|
||||
notOutBlockList.clear();
|
||||
|
||||
@@ -33,6 +33,11 @@ public class AcsToWmsController {
|
||||
@PostMapping("/status")
|
||||
@Log(value = "ACS给WMS反馈任务状态", isInterfaceLog = true, interfaceLogType = InterfaceLogType.ACS_TO_LMS)
|
||||
@SaIgnore
|
||||
@ApiLog(
|
||||
bizCode = "/api/wms/task/status",
|
||||
bizDesc = "ACS给WMS反馈任务状态",
|
||||
systemFlag = "acs"
|
||||
)
|
||||
public ResponseEntity<Object> receiveTaskStatusAcs(@RequestBody String string) {
|
||||
log.info("ACS给WMS反馈任务状态:{}", string);
|
||||
return new ResponseEntity<>(acsToWmsService.receiveTaskStatusAcs(string), HttpStatus.OK);
|
||||
@@ -58,6 +63,11 @@ public class AcsToWmsController {
|
||||
@PostMapping("/deviceApply")
|
||||
@Log(value = "申请贴标、捆扎", isInterfaceLog = true, interfaceLogType = InterfaceLogType.ACS_TO_LMS)
|
||||
@SaIgnore
|
||||
@ApiLog(
|
||||
bizCode = "/api/wms/task/deviceApply",
|
||||
bizDesc = "申请贴标、捆扎",
|
||||
systemFlag = "acs"
|
||||
)
|
||||
public ResponseEntity<Object> deviceApply(@RequestBody JSONObject jo) {
|
||||
return new ResponseEntity<>(acsToWmsService.deviceApply(jo), HttpStatus.OK);
|
||||
}
|
||||
@@ -151,6 +161,11 @@ public class AcsToWmsController {
|
||||
@PostMapping("/deviceApplyExceptional")
|
||||
@Log(value = "二期任务异常反馈", isInterfaceLog = true, interfaceLogType = InterfaceLogType.ACS_TO_LMS)
|
||||
@SaIgnore
|
||||
@ApiLog(
|
||||
bizCode = "/api/wms/task/deviceApplyExceptional",
|
||||
bizDesc = "二期任务异常反馈",
|
||||
systemFlag = "acs"
|
||||
)
|
||||
public ResponseEntity<Object> deviceApplyExceptional(@RequestBody JSONObject whereJson) {
|
||||
return new ResponseEntity<>(acsToWmsService.deviceApplyExceptional(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@@ -1420,7 +1420,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
map.put("status", "0");
|
||||
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)) {
|
||||
throw new BadRequestException("未查询到子卷包装信息!");
|
||||
}
|
||||
|
||||
@@ -176,7 +176,9 @@ public abstract class AbstractAcsTask {
|
||||
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();
|
||||
while (it.hasNext()) {
|
||||
AcsTaskDto acsTaskDto = it.next();
|
||||
|
||||
Reference in New Issue
Block a user