From 5bb695619eb5e1cef81db62093f34e4808527aed Mon Sep 17 00:00:00 2001 From: liuxy Date: Wed, 19 Jun 2024 14:59:15 +0800 Subject: [PATCH 1/5] =?UTF-8?q?rev=EF=BC=9A=E5=8F=91=E8=B4=A7=E5=8C=BA?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../point/dao/mapper/SchBasePointMapper.xml | 4 +- .../util/impl/SendOutManageServiceImpl.java | 49 ++++++++----------- 2 files changed, 23 insertions(+), 30 deletions(-) diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dao/mapper/SchBasePointMapper.xml b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dao/mapper/SchBasePointMapper.xml index 5457c2ae2..1d2286b20 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dao/mapper/SchBasePointMapper.xml +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dao/mapper/SchBasePointMapper.xml @@ -106,7 +106,7 @@ LEFT JOIN sch_base_point point2 ON point1.row_num = point2.row_num WHERE IFNULL( point2.vehicle_code, '' ) != '' - AND point2.out_order_seq > point1.out_order_seq + AND point1.out_order_seq > point2.out_order_seq AND point1.point_code= #{point_code} @@ -125,7 +125,7 @@ LEFT JOIN sch_base_point point2 ON point1.row_num = point2.row_num WHERE IFNULL( point2.vehicle_code, '' ) = '' - AND point2.out_order_seq > point1.out_order_seq + AND point1.out_order_seq > point2.out_order_seq AND point1.point_code= #{point_code} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/SendOutManageServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/SendOutManageServiceImpl.java index 99e8645dc..511e36ddc 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/SendOutManageServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/SendOutManageServiceImpl.java @@ -61,7 +61,6 @@ public class SendOutManageServiceImpl implements SendOutManageService { * 1)有相同订单号有空位的:相同订单号的放在一排 * 2)没有相同订单号的:新开一排 * 3)有相同订单号的但是没有空位:新开一排 - * 2.删除载具对应木箱记录 */ CutConveyorTask cutConveyorTask = new CutConveyorTask(); @@ -72,16 +71,14 @@ public class SendOutManageServiceImpl implements SendOutManageService { .eq(SchBasePoint::getIs_used, IOSEnum.IS_NOTANDYES.code("是")) .eq(SchBasePoint::getIs_delete, IOSEnum.IS_NOTANDYES.code("否")) ); - // 1.查询此木箱号的子卷包装关系 - if(StringUtils.isEmpty(whereJson.getString("vehicle_code"))){ - throw new BadRequestException("木箱号不能为空!"); - } + //木箱号可能用逗号隔开 String vehicleCode = Arrays.asList(whereJson.getString("vehicle_code").split(",")).get(0); JSONObject jsonSub = subTab.query("package_box_sn = '" + vehicleCode + "'").uniqueResult(0); if (ObjectUtil.isEmpty(jsonSub)) { throw new BadRequestException("未查询到该木箱对应的包装关系!"); } + // 2.找相同订单号的所有排 jsonSub.put("region_id", RegionTypeEnum.TWO_FH01.getId()); List pointLikeOrder = schBasePointMapper.queryLikeOrderRow(jsonSub); @@ -99,7 +96,7 @@ public class SendOutManageServiceImpl implements SendOutManageService { ObjectUtil.isEmpty(row.getVehicle_code()) && row.getLock_type().equals(IOSEnum.LOCK_TYPE.code("未锁定")) ) - .sorted(Comparator.comparing(SchBasePoint::getOut_order_seq)) + .sorted(Comparator.comparing(SchBasePoint::getIn_order_seq)) .collect(Collectors.toList()); joArr.addAll(rowPointList); @@ -122,19 +119,17 @@ public class SendOutManageServiceImpl implements SendOutManageService { ObjectUtil.isEmpty(row.getVehicle_code()) && row.getLock_type().equals(IOSEnum.LOCK_TYPE.code("未锁定")) ) - .sorted(Comparator.comparing(SchBasePoint::getOut_order_seq)) + .sorted(Comparator.comparing(SchBasePoint::getIn_order_seq)) .collect(Collectors.toList()); - if (rowPointList.size() == 4) { - JSONObject jsonNewRow = JSONObject.parseObject(JSON.toJSONString(rowPointList.get(0))); + JSONObject jsonNewRow = JSONObject.parseObject(JSON.toJSONString(rowPointList.get(0))); - if (cutConveyorTask.isSingleTask(jsonNewRow.getString("point_code"))) { - continue; - } - - point_code = jsonNewRow.getString("point_code"); - break; + if (cutConveyorTask.isSingleTask(jsonNewRow.getString("point_code"))) { + continue; } + + point_code = jsonNewRow.getString("point_code"); + break; } } else { // 校验此货位是否被堵住:1.如果被堵住则判断下一个是否被堵住 2.如果全部被堵住则新开一排 @@ -178,19 +173,17 @@ public class SendOutManageServiceImpl implements SendOutManageService { ObjectUtil.isEmpty(row.getVehicle_code()) && row.getLock_type().equals(IOSEnum.LOCK_TYPE.code("未锁定")) ) - .sorted(Comparator.comparing(SchBasePoint::getOut_order_seq)) + .sorted(Comparator.comparing(SchBasePoint::getIn_order_seq)) .collect(Collectors.toList()); - if (rowPointList.size() == 4) { - JSONObject jsonNewRow = JSONObject.parseObject(JSON.toJSONString(rowPointList.get(0))); + JSONObject jsonNewRow = JSONObject.parseObject(JSON.toJSONString(rowPointList.get(0))); - if (cutConveyorTask.isSingleTask(jsonNewRow.getString("point_code"))) { - continue; - } - - point_code = jsonNewRow.getString("point_code"); - break; + if (cutConveyorTask.isSingleTask(jsonNewRow.getString("point_code"))) { + continue; } + + point_code = jsonNewRow.getString("point_code"); + break; } } @@ -200,8 +193,8 @@ public class SendOutManageServiceImpl implements SendOutManageService { //创建任务 JSONObject task_jo = new JSONObject(); task_jo.put("point_code1", whereJson.getString("device_code")); - task_jo.put("point_code2", "CK2023"); - task_jo.put("vehicle_code", whereJson.getString("vehicle_code")); + task_jo.put("point_code2", point_code); + task_jo.put("vehicle_code", vehicleCode); task_jo.put("task_type", "010708"); TwoSendOutTask taskBean = new TwoSendOutTask(); taskBean.createTask(task_jo); @@ -209,9 +202,9 @@ public class SendOutManageServiceImpl implements SendOutManageService { // 锁住点位 ischBasePointService.update( new UpdateWrapper().lambda() - .eq(SchBasePoint::getPoint_code, "CK2023") + .eq(SchBasePoint::getPoint_code, point_code) .set(SchBasePoint::getLock_type, IOSEnum.LOCK_TYPE.code("其它")) - .set(SchBasePoint::getVehicle_code, whereJson.getString("vehicle_code")) + .set(SchBasePoint::getVehicle_code, vehicleCode) ); // 删除载具对应木箱记录 From 3c2da9058f01e823d68d8ded808997b4500f33b2 Mon Sep 17 00:00:00 2001 From: liuxy Date: Thu, 20 Jun 2024 09:39:22 +0800 Subject: [PATCH 2/5] =?UTF-8?q?rev=EF=BC=9A=E5=8F=91=E8=B4=A7=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E4=BA=8C=E6=AC=A1=E5=88=86=E9=85=8D=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nl/b_lms/sch/tasks/TwoSendOutTask.java | 35 ++- .../storage_manage/ios/enums/IOSEnum.java | 3 + .../util/impl/SendOutManageServiceImpl.java | 259 ++++++++++++++++++ .../util/service/SendOutManageService.java | 18 ++ .../acs/service/impl/AcsToWmsServiceImpl.java | 31 ++- 5 files changed, 323 insertions(+), 23 deletions(-) diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoSendOutTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoSendOutTask.java index 7b5d04e7e..c3c68b775 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoSendOutTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoSendOutTask.java @@ -39,6 +39,8 @@ public class TwoSendOutTask extends AbstractAcsTask { /* * 下发给ACS时需要特殊处理 */ + WQLObject taskTab = WQLObject.getWQLObject("sch_base_task"); + JSONArray arr = WQLObject.getWQLObject("SCH_BASE_Task").query("handle_class = '" + THIS_CLASS + "' and task_status = '" + TaskStatusEnum.START_AND_POINT.getCode() + "' and is_delete ='0'").getResultJSONArray(0); ArrayList resultList = new ArrayList<>(); @@ -60,6 +62,11 @@ public class TwoSendOutTask extends AbstractAcsTask { .remark(json.getString("remark")) .build(); resultList.add(dto); + + // 更新任务为下发 + JSONObject paramMap = new JSONObject(); + paramMap.put("task_status", TaskStatusEnum.ISSUE.getCode()); + taskTab.update(paramMap, "task_id ='" + json.getString("task_id") + "'"); } return resultList; } @@ -79,7 +86,16 @@ public class TwoSendOutTask extends AbstractAcsTask { jsonTask.put("update_time", DateUtil.now()); taskTab.update(jsonTask); - JSONObject jsonPoint2 = pointTab.query("point_code = '" + jsonTask.getString("point_code2") + "'").uniqueResult(0); + JSONObject jsonPoint2; + + if (ObjectUtil.isNotEmpty(jsonTask.getString("point_code4"))) { + // 第一次申请取消 + jsonPoint2 = pointTab.query("point_code = '" + jsonTask.getString("point_code4") + "'").uniqueResult(0); + } else { + // 第二次申请取消 + jsonPoint2 = pointTab.query("point_code = '" + jsonTask.getString("point_code2") + "'").uniqueResult(0); + } + jsonPoint2.put("lock_type", IOSEnum.LOCK_TYPE.code("未锁定")); jsonPoint2.put("vehicle_code", ""); pointTab.update(jsonPoint2); @@ -102,11 +118,13 @@ public class TwoSendOutTask extends AbstractAcsTask { jsonTask.put("update_time", DateUtil.now()); taskTab.update(jsonTask); - // 更新暂存区点位状态 - JSONObject jsonPoint2 = WQLObject.getWQLObject("sch_base_point").query("point_code = '" + jsonTask.getString("point_code2") + "'").uniqueResult(0); - jsonPoint2.put("lock_type", IOSEnum.LOCK_TYPE.code("未锁定")); - jsonPoint2.put("vehicle_code", jsonTask.getString("vehicle_code")); - pointTab.update(jsonPoint2); + if (ObjectUtil.isEmpty(jsonTask.getString("point_code4"))) { + // 第二次申请任务完成 - 更新点位状态 + JSONObject jsonPoint2 = WQLObject.getWQLObject("sch_base_point").query("point_code = '" + jsonTask.getString("point_code2") + "'").uniqueResult(0); + jsonPoint2.put("lock_type", IOSEnum.LOCK_TYPE.code("未锁定")); + jsonPoint2.put("vehicle_code", jsonTask.getString("vehicle_code")); + pointTab.update(jsonPoint2); + } } } @@ -126,10 +144,6 @@ public class TwoSendOutTask extends AbstractAcsTask { WQLObject tab = WQLObject.getWQLObject("SCH_BASE_Task"); CutConveyorTask cutConveyorTask = new CutConveyorTask(); - String point_code2 = form.getString("point_code2"); - if (cutConveyorTask.isSingleTask(point_code2)) { - throw new BadRequestException("点位:" + point_code2 + "存在未完成的任务!"); - } JSONObject json = new JSONObject(); json.put("task_id", IdUtil.getSnowflake(1, 1).nextId()); json.put("task_code", IdUtil.getSnowflake(1, 1).nextId()); @@ -138,6 +152,7 @@ public class TwoSendOutTask extends AbstractAcsTask { json.put("point_code1", form.getString("point_code1")); json.put("route_plan_code", getRoutePlanCode(json.getString("point_code1"))); json.put("point_code2", form.getString("point_code2")); + json.put("point_code4", form.getString("point_code4")); json.put("vehicle_code", form.getString("vehicle_code")); json.put("handle_class", THIS_CLASS); json.put("create_id", SecurityUtils.getCurrentUserId()); diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/enums/IOSEnum.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/enums/IOSEnum.java index c124c041b..0cfd0678a 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/enums/IOSEnum.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/enums/IOSEnum.java @@ -103,6 +103,9 @@ public enum IOSEnum { OUT_POINT(MapOf.of("1","CK2038", "2","CK2038", "3","CK2042", "4","CK2042" ,"5","CK2046", "6","CK2046", "7","7", "8","8", "9","9", "10","10")), + // 出库发货等待点 + OUT_FH_POINT(MapOf.of("1","B_FH_01_0", "2","B_FH_02_0", "3","B_FH_03_0", "4","B_FH_04_0" ,"5","B_FH_05_0", + "6","B_FH_06_0")), // 行架点位 OUT_HANGER(MapOf.of("行架位1", "CK2013","行架位2", "CK2017")), diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/SendOutManageServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/SendOutManageServiceImpl.java index 511e36ddc..4f9e688ef 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/SendOutManageServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/SendOutManageServiceImpl.java @@ -210,4 +210,263 @@ public class SendOutManageServiceImpl implements SendOutManageService { // 删除载具对应木箱记录 //extTab.delete(jsonExt); } + + @Override + public void createSendOutTaskOne(JSONObject whereJson) { + // 子卷包装关系表 + WQLObject subTab = WQLObject.getWQLObject("pdm_bi_subpackagerelation"); + // 载具扩展属性表 + WQLObject extTab = WQLObject.getWQLObject("md_pb_storagevehicleext"); + /* + * 1.找相同订单号的木箱 + * 1)有相同订单号有空位的:相同订单号的放在一排 + * 2)没有相同订单号的:新开一排 + * 3)有相同订单号的但是没有空位:新开一排 + */ + CutConveyorTask cutConveyorTask = new CutConveyorTask(); + + // 所有发货区点位 + List pointDaoList = ischBasePointService.list( + new QueryWrapper().lambda() + .eq(SchBasePoint::getRegion_id, RegionTypeEnum.TWO_FH01.getId()) + .eq(SchBasePoint::getIs_used, IOSEnum.IS_NOTANDYES.code("是")) + .eq(SchBasePoint::getIs_delete, IOSEnum.IS_NOTANDYES.code("否")) + ); + + //木箱号可能用逗号隔开 + String vehicleCode = Arrays.asList(whereJson.getString("vehicle_code").split(",")).get(0); + JSONObject jsonSub = subTab.query("package_box_sn = '" + vehicleCode + "'").uniqueResult(0); + if (ObjectUtil.isEmpty(jsonSub)) { + throw new BadRequestException("未查询到该木箱对应的包装关系!"); + } + + // 2.找相同订单号的所有排 + jsonSub.put("region_id", RegionTypeEnum.TWO_FH01.getId()); + List pointLikeOrder = schBasePointMapper.queryLikeOrderRow(jsonSub); + + // 3.找相同订单号的所在排的所有空位 + String point_code = ""; + List joArr = new ArrayList<>(); + + for (int i = 0; i < pointLikeOrder.size(); i++) { + JSONObject json = pointLikeOrder.get(i); + + // 过滤此排的空位 + List rowPointList = pointDaoList.stream() + .filter(row -> row.getRow_num().toString().equals(json.getString("row_num")) && + ObjectUtil.isEmpty(row.getVehicle_code()) && + row.getLock_type().equals(IOSEnum.LOCK_TYPE.code("未锁定")) + ) + .sorted(Comparator.comparing(SchBasePoint::getIn_order_seq)) + .collect(Collectors.toList()); + + joArr.addAll(rowPointList); + } + + if (ObjectUtil.isEmpty(joArr)) { + //查询新的一排 + List newRowPointList = schBasePointMapper.queryNewRow(jsonSub); + + if (ObjectUtil.isEmpty(newRowPointList)) { + throw new BadRequestException("未查询到相同销售订单的放货区点位或空的一排!"); + } + + for (int i = 0; i < newRowPointList.size(); i++) { + JSONObject json = newRowPointList.get(i); + + // 找出这一排的所有空位 + List rowPointList = pointDaoList.stream() + .filter(row -> row.getRow_num().toString().equals(json.getString("row_num")) && + ObjectUtil.isEmpty(row.getVehicle_code()) && + row.getLock_type().equals(IOSEnum.LOCK_TYPE.code("未锁定")) + ) + .sorted(Comparator.comparing(SchBasePoint::getIn_order_seq)) + .collect(Collectors.toList()); + + JSONObject jsonNewRow = JSONObject.parseObject(JSON.toJSONString(rowPointList.get(0))); + + if (cutConveyorTask.isSingleTask(jsonNewRow.getString("point_code"))) { + continue; + } + + point_code = jsonNewRow.getString("point_code"); + break; + } + } else { + // 校验此货位是否被堵住:1.如果被堵住则判断下一个是否被堵住 2.如果全部被堵住则新开一排 + for (int i = 0; i < joArr.size(); i++) { + JSONObject json = JSONObject.parseObject(JSON.toJSONString(joArr.get(i))); + + // 判断是否被挡住 + JSONObject paramJson = new JSONObject(); + paramJson.put("point_code", json.getString("point_code")); + paramJson.put("region_id", RegionTypeEnum.TWO_FH01.getId()); + List isBlock = schBasePointMapper.isBlock(paramJson); + + if (ObjectUtil.isNotEmpty(isBlock)) { + // 堵住则判断下一个 + continue; + } else { + if (cutConveyorTask.isSingleTask(json.getString("point_code"))) { + continue; + } + // 未堵住: 跳出循环 + point_code = json.getString("point_code"); + break; + } + } + } + + if (ObjectUtil.isEmpty(point_code)) { + //查询新的一排 + List newRowPointList = schBasePointMapper.queryNewRow(jsonSub); + + if (ObjectUtil.isEmpty(newRowPointList)) { + throw new BadRequestException("未查询到相同销售订单的放货区点位或空的一排!"); + } + + for (int i = 0; i < newRowPointList.size(); i++) { + JSONObject json = newRowPointList.get(i); + + // 找出这一排的所有空位 + List rowPointList = pointDaoList.stream() + .filter(row -> row.getRow_num().toString().equals(json.getString("row_num")) && + ObjectUtil.isEmpty(row.getVehicle_code()) && + row.getLock_type().equals(IOSEnum.LOCK_TYPE.code("未锁定")) + ) + .sorted(Comparator.comparing(SchBasePoint::getIn_order_seq)) + .collect(Collectors.toList()); + + JSONObject jsonNewRow = JSONObject.parseObject(JSON.toJSONString(rowPointList.get(0))); + + if (cutConveyorTask.isSingleTask(jsonNewRow.getString("point_code"))) { + continue; + } + + point_code = jsonNewRow.getString("point_code"); + break; + } + } + + if (ObjectUtil.isEmpty(point_code)) { + throw new BadRequestException("未查询到相同销售订单的放货区点位或空的一排!"); + } + + //创建任务 + JSONObject task_jo = new JSONObject(); + task_jo.put("point_code1", whereJson.getString("device_code")); + // 根据此排找到对应的等待点 + String finalPoint_code = point_code; + SchBasePoint schBasePoint = pointDaoList.stream() + .filter(row -> row.getPoint_code().equals(finalPoint_code)) + .findFirst().orElse(null); + String code = IOSEnum.OUT_FH_POINT.code(schBasePoint.getRow_num().toString()); + + task_jo.put("point_code2", code); + task_jo.put("point_code4", point_code); + task_jo.put("vehicle_code", vehicleCode); + task_jo.put("task_type", "010708"); + TwoSendOutTask taskBean = new TwoSendOutTask(); + taskBean.createTask(task_jo); + + // 锁住点位 + ischBasePointService.update( + new UpdateWrapper().lambda() + .eq(SchBasePoint::getPoint_code, point_code) + .set(SchBasePoint::getLock_type, IOSEnum.LOCK_TYPE.code("其它")) + ); + + } + + @Override + public void createSendOutTaskTwo(JSONObject whereJson) { + WQLObject taskTab = WQLObject.getWQLObject("sch_base_task"); + WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); + + // 根据任务号找到第一次申请时的任务 + JSONObject taskJson = taskTab.query("task_code = '" + whereJson.getString("task_code") + "'").uniqueResult(0); + if (ObjectUtil.isEmpty(taskJson)) { + throw new BadRequestException("任务号为:"+ whereJson.getString("task_code")+ "的任务不存在!"); + } + + String point_code4 = ""; + + // 判断当前点位是否被堵住 + JSONObject paramJson = new JSONObject(); + paramJson.put("point_code", taskJson.getString("point_code4")); + paramJson.put("region_id", RegionTypeEnum.TWO_FH01.getId()); + List isBlock = schBasePointMapper.isBlock(paramJson); + + if (ObjectUtil.isNotEmpty(isBlock)) { + // 堵住: 找这一排的的空位 + // 所有发货区点位 + List pointDaoList = ischBasePointService.list( + new QueryWrapper().lambda() + .eq(SchBasePoint::getRegion_id, RegionTypeEnum.TWO_FH01.getId()) + .eq(SchBasePoint::getIs_used, IOSEnum.IS_NOTANDYES.code("是")) + .eq(SchBasePoint::getIs_delete, IOSEnum.IS_NOTANDYES.code("否")) + ); + + SchBasePoint pointDao = pointDaoList.stream() + .filter(row -> row.getPoint_code().equals(taskJson.getString("point_code4"))) + .findFirst().orElse(null); + + // 找出这一排所有空位 + List rowPointList = pointDaoList.stream() + .filter(row -> row.getRow_num().toString().equals(pointDao.getRow_num().toString()) && + ObjectUtil.isEmpty(row.getVehicle_code()) && + row.getLock_type().equals(IOSEnum.LOCK_TYPE.code("未锁定")) + ) + .sorted(Comparator.comparing(SchBasePoint::getIn_order_seq)) + .collect(Collectors.toList()); + + // 判断是否被堵住 + for (int i = 0; i < rowPointList.size(); i++) { + SchBasePoint json = rowPointList.get(i); + + JSONObject paramJson2 = new JSONObject(); + paramJson2.put("point_code", json.getPoint_code()); + paramJson2.put("region_id", RegionTypeEnum.TWO_FH01.getId()); + List isBlock2 = schBasePointMapper.isBlock(paramJson2); + + if (ObjectUtil.isNotEmpty(isBlock2)) { + continue; + } else { + JSONObject jsonNewRow = JSONObject.parseObject(JSON.toJSONString(rowPointList.get(0))); + point_code4 = jsonNewRow.getString("point_code"); + break; + } + } + + // 更新原仓位 + JSONObject jsonUpdate = new JSONObject(); + jsonUpdate.put("lock_type", IOSEnum.LOCK_TYPE.code("未锁定")); + pointTab.update(jsonUpdate,"point_code = '"+taskJson.getString("point_code4")+"'"); + + if (ObjectUtil.isEmpty(point_code4)) { + // 如果没有找到此排空位 则重新下发到别的排 + JSONObject param = new JSONObject(); + param.put("device_code", taskJson.getString("point_code2")); + param.put("vehicle_code", taskJson.getString("vehicle_code")); + createSendOutTaskOne(param); + return; + } else { + // 更新现仓位 + jsonUpdate.put("lock_type", IOSEnum.LOCK_TYPE.code("其它")); + pointTab.update(jsonUpdate,"point_code = '"+point_code4+"'"); + } + + } else { + point_code4 = taskJson.getString("point_code4"); + } + + //创建任务 + JSONObject task_jo = new JSONObject(); + task_jo.put("point_code1", taskJson.getString("point_code2")); + task_jo.put("point_code2", point_code4); + task_jo.put("vehicle_code", taskJson.getString("vehicle_code")); + task_jo.put("task_type", "010721"); + TwoSendOutTask taskBean = new TwoSendOutTask(); + taskBean.createTask(task_jo); + } } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/service/SendOutManageService.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/service/SendOutManageService.java index deba0362c..1859463dc 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/service/SendOutManageService.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/service/SendOutManageService.java @@ -21,4 +21,22 @@ public interface SendOutManageService { */ void createSendOutTask(JSONObject whereJson); + /** + * 创建发货任务 - 到等待点 + * @param whereJson { + * device_code:起点 + * vehicle_code: 载具号 + * } + */ + void createSendOutTaskOne(JSONObject whereJson); + + + /** + * 创建发货任务 等待点 - 具体点位 + * @param whereJson { + * task_code:任务号(第一次申请时下发的任务号) + * } + */ + void createSendOutTaskTwo(JSONObject whereJson); + } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java index ba04ddea7..c92b3b827 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java @@ -1943,21 +1943,26 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { @Transactional(rollbackFor = Exception.class) public JSONObject applySendOutTwo(JSONObject whereJson) { log.info("applySendOutTwo输入参数:---------------------------------------------" + whereJson.toString()); - - // 校验 - if (ObjectUtil.isEmpty(whereJson.getString("device_code"))) { - throw new BadRequestException("设备号不能为空!"); - } - - if (ObjectUtil.isEmpty(whereJson.getString("vehicle_code"))) { - throw new BadRequestException("载具号不能为空!"); - } - JSONObject result = new JSONObject(); - try { - // 调用服务 - sendOutManageService.createSendOutTask(whereJson); + try{ + // 校验是否是二次分配 + if (ObjectUtil.isEmpty(whereJson.getString("task_code"))) { + // 第一次申请 + if (ObjectUtil.isEmpty(whereJson.getString("device_code"))) { + throw new BadRequestException("设备号不能为空!"); + } + + if (ObjectUtil.isEmpty(whereJson.getString("vehicle_code"))) { + throw new BadRequestException("载具号不能为空!"); + } + + // 调用服务 + sendOutManageService.createSendOutTaskOne(whereJson); + } else { + // 第二次申请 + sendOutManageService.createSendOutTaskTwo(whereJson); + } result.put("status", HttpStatus.OK.value()); result.put("message", "下发成功!"); return result; From d04e6261310b51cc7a29f80aa6f087c67f7bc611 Mon Sep 17 00:00:00 2001 From: liuxy Date: Thu, 20 Jun 2024 10:57:11 +0800 Subject: [PATCH 3/5] =?UTF-8?q?rev:=E5=8F=91=E8=B4=A7=E5=8C=BA=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../util/impl/SendOutManageServiceImpl.java | 107 ++++++++---------- 1 file changed, 48 insertions(+), 59 deletions(-) diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/SendOutManageServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/SendOutManageServiceImpl.java index 4f9e688ef..72e17f939 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/SendOutManageServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/SendOutManageServiceImpl.java @@ -384,80 +384,69 @@ public class SendOutManageServiceImpl implements SendOutManageService { WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); // 根据任务号找到第一次申请时的任务 - JSONObject taskJson = taskTab.query("task_code = '" + whereJson.getString("task_code") + "'").uniqueResult(0); + JSONObject taskJson = taskTab.query("task_code = '" + whereJson.getString("task_code") + "' AND is_delete = '0'").uniqueResult(0); if (ObjectUtil.isEmpty(taskJson)) { throw new BadRequestException("任务号为:"+ whereJson.getString("task_code")+ "的任务不存在!"); } String point_code4 = ""; - // 判断当前点位是否被堵住 - JSONObject paramJson = new JSONObject(); - paramJson.put("point_code", taskJson.getString("point_code4")); - paramJson.put("region_id", RegionTypeEnum.TWO_FH01.getId()); - List isBlock = schBasePointMapper.isBlock(paramJson); + // 所有发货区点位 + List pointDaoList = ischBasePointService.list( + new QueryWrapper().lambda() + .eq(SchBasePoint::getRegion_id, RegionTypeEnum.TWO_FH01.getId()) + .eq(SchBasePoint::getIs_used, IOSEnum.IS_NOTANDYES.code("是")) + .eq(SchBasePoint::getIs_delete, IOSEnum.IS_NOTANDYES.code("否")) + ); - if (ObjectUtil.isNotEmpty(isBlock)) { - // 堵住: 找这一排的的空位 - // 所有发货区点位 - List pointDaoList = ischBasePointService.list( - new QueryWrapper().lambda() - .eq(SchBasePoint::getRegion_id, RegionTypeEnum.TWO_FH01.getId()) - .eq(SchBasePoint::getIs_used, IOSEnum.IS_NOTANDYES.code("是")) - .eq(SchBasePoint::getIs_delete, IOSEnum.IS_NOTANDYES.code("否")) - ); + SchBasePoint pointDao = pointDaoList.stream() + .filter(row -> row.getPoint_code().equals(taskJson.getString("point_code4"))) + .findFirst().orElse(null); - SchBasePoint pointDao = pointDaoList.stream() - .filter(row -> row.getPoint_code().equals(taskJson.getString("point_code4"))) - .findFirst().orElse(null); + // 找出这一排所有空位 + List rowPointList = pointDaoList.stream() + .filter(row -> row.getRow_num().toString().equals(pointDao.getRow_num().toString()) && + ObjectUtil.isEmpty(row.getVehicle_code()) + ) + .sorted(Comparator.comparing(SchBasePoint::getIn_order_seq)) + .collect(Collectors.toList()); - // 找出这一排所有空位 - List rowPointList = pointDaoList.stream() - .filter(row -> row.getRow_num().toString().equals(pointDao.getRow_num().toString()) && - ObjectUtil.isEmpty(row.getVehicle_code()) && - row.getLock_type().equals(IOSEnum.LOCK_TYPE.code("未锁定")) - ) - .sorted(Comparator.comparing(SchBasePoint::getIn_order_seq)) - .collect(Collectors.toList()); + // 判断是否被堵住 + for (int i = 0; i < rowPointList.size(); i++) { + SchBasePoint json = rowPointList.get(i); - // 判断是否被堵住 - for (int i = 0; i < rowPointList.size(); i++) { - SchBasePoint json = rowPointList.get(i); + JSONObject paramJson2 = new JSONObject(); + paramJson2.put("point_code", json.getPoint_code()); + paramJson2.put("region_id", RegionTypeEnum.TWO_FH01.getId()); + List isBlock2 = schBasePointMapper.isBlock(paramJson2); - JSONObject paramJson2 = new JSONObject(); - paramJson2.put("point_code", json.getPoint_code()); - paramJson2.put("region_id", RegionTypeEnum.TWO_FH01.getId()); - List isBlock2 = schBasePointMapper.isBlock(paramJson2); + if (ObjectUtil.isNotEmpty(isBlock2)) { + continue; - if (ObjectUtil.isNotEmpty(isBlock2)) { - continue; - } else { - JSONObject jsonNewRow = JSONObject.parseObject(JSON.toJSONString(rowPointList.get(0))); - point_code4 = jsonNewRow.getString("point_code"); - break; - } - } - - // 更新原仓位 - JSONObject jsonUpdate = new JSONObject(); - jsonUpdate.put("lock_type", IOSEnum.LOCK_TYPE.code("未锁定")); - pointTab.update(jsonUpdate,"point_code = '"+taskJson.getString("point_code4")+"'"); - - if (ObjectUtil.isEmpty(point_code4)) { - // 如果没有找到此排空位 则重新下发到别的排 - JSONObject param = new JSONObject(); - param.put("device_code", taskJson.getString("point_code2")); - param.put("vehicle_code", taskJson.getString("vehicle_code")); - createSendOutTaskOne(param); - return; } else { - // 更新现仓位 - jsonUpdate.put("lock_type", IOSEnum.LOCK_TYPE.code("其它")); - pointTab.update(jsonUpdate,"point_code = '"+point_code4+"'"); + JSONObject jsonNewRow = JSONObject.parseObject(JSON.toJSONString(json)); + point_code4 = jsonNewRow.getString("point_code"); + break; } + } - } else { - point_code4 = taskJson.getString("point_code4"); + if (ObjectUtil.isEmpty(point_code4)) { + throw new BadRequestException("此排没有空位!"+pointDao.getRow_num()); + } + + // 判断货位是否是第一次申请的货位 + if (!point_code4.equals(taskJson.getString("point_code4"))) { + // 更新现仓位 + JSONObject jsonUpdate = new JSONObject(); + jsonUpdate.put("lock_type", IOSEnum.LOCK_TYPE.code("其它")); + pointTab.update(jsonUpdate,"point_code = '"+point_code4+"'"); + + // 判断此货位是否是最后一个入库的货位 如果是就解锁: 5 / 9 + if ("5,9".contains(pointDao.getIn_order_seq().toString())) { + // 更新原仓位 + jsonUpdate.put("lock_type", IOSEnum.LOCK_TYPE.code("未锁定")); + pointTab.update(jsonUpdate,"point_code = '"+taskJson.getString("point_code4")+"'"); + } } //创建任务 From cbfec25a9fe1ef56f0a19ebc173718e8346986bc Mon Sep 17 00:00:00 2001 From: liuxy Date: Fri, 21 Jun 2024 10:23:38 +0800 Subject: [PATCH 4/5] =?UTF-8?q?rev=EF=BC=9A=E5=8F=91=E8=B4=A7=E5=8C=BA?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../util/impl/SendOutManageServiceImpl.java | 18 +++++++++--------- .../util/service/SendOutManageService.java | 3 ++- .../acs/service/impl/AcsToWmsServiceImpl.java | 3 ++- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/SendOutManageServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/SendOutManageServiceImpl.java index 72e17f939..374c11db4 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/SendOutManageServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/SendOutManageServiceImpl.java @@ -379,7 +379,7 @@ public class SendOutManageServiceImpl implements SendOutManageService { } @Override - public void createSendOutTaskTwo(JSONObject whereJson) { + public String createSendOutTaskTwo(JSONObject whereJson) { WQLObject taskTab = WQLObject.getWQLObject("sch_base_task"); WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); @@ -449,13 +449,13 @@ public class SendOutManageServiceImpl implements SendOutManageService { } } - //创建任务 - JSONObject task_jo = new JSONObject(); - task_jo.put("point_code1", taskJson.getString("point_code2")); - task_jo.put("point_code2", point_code4); - task_jo.put("vehicle_code", taskJson.getString("vehicle_code")); - task_jo.put("task_type", "010721"); - TwoSendOutTask taskBean = new TwoSendOutTask(); - taskBean.createTask(task_jo); + // 更新当前点位终点 + taskJson.put("point_code2", point_code4); + taskJson.put("point_code4", ""); + taskTab.update(taskJson); + + // 返回点位 + return point_code4; + } } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/service/SendOutManageService.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/service/SendOutManageService.java index 1859463dc..e9dbe2856 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/service/SendOutManageService.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/service/SendOutManageService.java @@ -36,7 +36,8 @@ public interface SendOutManageService { * @param whereJson { * task_code:任务号(第一次申请时下发的任务号) * } + * @return 新点位 */ - void createSendOutTaskTwo(JSONObject whereJson); + String createSendOutTaskTwo(JSONObject whereJson); } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java index c92b3b827..3cd8b75d5 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java @@ -1961,7 +1961,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { sendOutManageService.createSendOutTaskOne(whereJson); } else { // 第二次申请 - sendOutManageService.createSendOutTaskTwo(whereJson); + String point_code = sendOutManageService.createSendOutTaskTwo(whereJson); + result.put("data", point_code); } result.put("status", HttpStatus.OK.value()); result.put("message", "下发成功!"); From d95ecd0405d40d2a2da6eee39615e5c7122bc60b Mon Sep 17 00:00:00 2001 From: zhouz <> Date: Fri, 21 Jun 2024 11:01:02 +0800 Subject: [PATCH 5/5] =?UTF-8?q?fix:=E5=87=BA=E5=85=A5=E5=BA=93=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/nl/b_lms/sch/tasks/TwoInEmpTask.java | 1 - .../org/nl/b_lms/sch/tasks/TwoLashTask.java | 50 ++++++++++++------- .../nl/b_lms/sch/tasks/TwoMoveBoxTask.java | 3 ++ .../util/impl/OutBoxManageServiceImpl.java | 2 + .../impl/StoragevehicleinfoServiceImpl.java | 7 ++- .../wms/ext/mes/rest/BLmsToMesController.java | 40 +++++++++++++++ .../wms/ext/mes/service/LmsToMesService.java | 6 +++ .../mes/service/impl/LmsToMesServiceImpl.java | 48 ++++++++++++++++++ 8 files changed, 136 insertions(+), 21 deletions(-) create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/rest/BLmsToMesController.java diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoInEmpTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoInEmpTask.java index 659b3717f..9f6c8e5d6 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoInEmpTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoInEmpTask.java @@ -99,7 +99,6 @@ public class TwoInEmpTask extends AbstractAcsTask { JSONObject jsonAttr = attrTab.query("struct_code = '" + jsonTask.getString("point_code2") + "'").uniqueResult(0); jsonAttr.put("lock_type",IOSEnum.LOCK_TYPE.code("未锁定")); jsonAttr.put("storagevehicle_code",jsonTask.getString("vehicle_code")); - jsonAttr.put("storagevehicle_type",jsonTask.getString("vehicle_type")); jsonAttr.put("is_emptyvehicle",IOSEnum.IS_NOTANDYES.code("是")); attrTab.update(jsonAttr); diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoLashTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoLashTask.java index 43f1abfb5..6fa312241 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoLashTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoLashTask.java @@ -23,6 +23,8 @@ import org.nl.b_lms.storage_manage.ios.enums.IOSEnum; import org.nl.common.utils.SecurityUtils; import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.wql.core.bean.WQLObject; +import org.nl.modules.wql.util.SpringContextHolder; +import org.nl.wms.ext.acs.service.WmsToAcsService; import org.nl.wms.sch.AcsTaskDto; import org.nl.wms.sch.manage.AbstractAcsTask; import org.nl.wms.sch.manage.TaskStatusEnum; @@ -85,13 +87,13 @@ public class TwoLashTask extends AbstractAcsTask { } JSONObject interaction_json = new JSONObject(); - interaction_json.put("isLeave",json.getString("is_auto_issue")); - interaction_json.put("length",dao.get(0).getBox_length()); - interaction_json.put("weight",dao.get(0).getBox_width()); - interaction_json.put("height",dao.get(0).getBox_high()); - interaction_json.put("template",dao.get(0).getLash_num()); + interaction_json.put("isLeave", json.getString("is_auto_issue")); + interaction_json.put("length", dao.get(0).getBox_length()); + interaction_json.put("weight", dao.get(0).getBox_width()); + interaction_json.put("height", dao.get(0).getBox_high()); + interaction_json.put("template", dao.get(0).getLash_num()); //第二次捆扎次数 - interaction_json.put("bindingTimes","3"); + interaction_json.put("bindingTimes", "3"); interaction_json.put("isBinding", IOSEnum.IS_SEND.code("是")); char dtl_type = json.getString("task_type").charAt(json.getString("task_type").length() - 1); AcsTaskDto dto = AcsTaskDto.builder() @@ -121,6 +123,7 @@ public class TwoLashTask extends AbstractAcsTask { @Override @Transactional(rollbackFor = Exception.class) public void updateTaskStatus(JSONObject taskObj, String status) { + JSONObject task_jo = WQLObject.getWQLObject("sch_base_task").query("task_code = '"+taskObj.getString("task_code")+"'").uniqueResult(0); // 点位表 WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); // 木箱绑定表 @@ -140,19 +143,28 @@ public class TwoLashTask extends AbstractAcsTask { // 完成 if (status.equals(TaskStatusEnum.FINISHED.getCode())) { - // 判断当前任务组的所有任务是否都为完成:如果都为完成则 调用acs接口允许此木箱离开 - JSONObject groupTask = WQLObject.getWQLObject("sch_base_task").query("task_group_id = '" + taskObj.getString("task_group_id") + "' and is_delete = '0' and task_status <> 07 and task_id <> '"+taskObj.getString("task_id")+"'") + JSONObject groupTask = WQLObject.getWQLObject("sch_base_task").query("task_group_id = '" + task_jo.getString("task_group_id") + "' and is_delete = '0' and task_status <> 07 and task_id <> '" + taskObj.getString("task_id") + "'") .uniqueResult(0); if (ObjectUtil.isEmpty(groupTask)) { - // 更新点位载具、数量 - JSONObject pointDao = pointTab.query("point_code = '" + taskObj.getString("point_code2") + "'").uniqueResult(0); - pointDao.put("vehicle_code", ""); - pointDao.put("vehicle_qty",0); - WQLObject.getWQLObject("sch_base_point").update(pointDao); - // TODO 调用acs接口告诉此木箱可以离开 + //给捆扎点下发强制放行 + WmsToAcsService wmsToAcsService = SpringContextHolder.getBean(WmsToAcsService.class); + JSONArray action_rows = new JSONArray(); + JSONObject action_jo = new JSONObject(); + action_jo.put("device_code", task_jo.getString("point_code2")); + action_jo.put("code", "to_command"); + action_jo.put("product_area", "BLK"); + action_jo.put("value", "26"); + action_rows.add(action_jo); + wmsToAcsService.action(action_rows); + + // 更新点位载具、数量 + JSONObject pointDao = pointTab.query("point_code = '" + task_jo.getString("point_code2") + "'").uniqueResult(0); + pointDao.put("vehicle_code", ""); + pointDao.put("vehicle_qty", 0); + WQLObject.getWQLObject("sch_base_point").update(pointDao); } @@ -170,26 +182,26 @@ public class TwoLashTask extends AbstractAcsTask { map.put("is_delete", IOSEnum.IS_NOTANDYES.code("是")); // 减去终点点位载具数量 - JSONObject pointDao = pointTab.query("point_code = '" + taskObj.getString("point_code2") + "'").uniqueResult(0); + JSONObject pointDao = pointTab.query("point_code = '" + task_jo.getString("point_code2") + "'").uniqueResult(0); - pointDao.put("vehicle_qty", NumberUtil.sub(pointDao.getIntValue("vehicle_qty"),1)); + pointDao.put("vehicle_qty", NumberUtil.sub(pointDao.getIntValue("vehicle_qty"), 1)); if (pointDao.getIntValue("vehicle_qty") <= 0) { // 清空载具号 pointDao.put("vehicle_code", ""); - pointDao.put("vehicle_qty",0); + pointDao.put("vehicle_qty", 0); } pointTab.update(pointDao); // 删除木箱绑定数据 - boxTab.delete("box_no = '"+taskObj.getString("vehicle_code")+"'"); + boxTab.delete("box_no = '" + task_jo.getString("vehicle_code") + "'"); } map.put("update_optid", SecurityUtils.getCurrentUserId()); map.put("update_optname", SecurityUtils.getCurrentNickName()); map.put("update_time", DateUtil.now()); - WQLObject.getWQLObject("SCH_BASE_Task").update(map, "task_id = '" + taskObj.getString("task_id") + "'"); + WQLObject.getWQLObject("SCH_BASE_Task").update(map, "task_id = '" + task_jo.getString("task_id") + "'"); } @Override diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoMoveBoxTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoMoveBoxTask.java index 1f695df2b..809c20814 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoMoveBoxTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoMoveBoxTask.java @@ -17,6 +17,8 @@ import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; +import static org.nl.wms.util.TaskUtil.getRoutePlanCode; + /** * 二期空木箱移库任务类 * Created by Lxy on 2024/1/19. @@ -46,6 +48,7 @@ public class TwoMoveBoxTask extends AbstractAcsTask { .task_type(json.getString("acs_task_type")) .start_device_code(json.getString("point_code1")) .next_device_code(json.getString("point_code2")) + .route_plan_code(getRoutePlanCode(json.getString("point_code2"))) .vehicle_code(json.getString("vehicle_code")) .priority(json.getString("priority")) .class_type(json.getString("task_type")) diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/OutBoxManageServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/OutBoxManageServiceImpl.java index 1b840b546..d73c03dc0 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/OutBoxManageServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/OutBoxManageServiceImpl.java @@ -538,6 +538,8 @@ public class OutBoxManageServiceImpl implements OutBoxManageService { JSONObject paramIn = new JSONObject(); paramIn.put("stor_id", IOSEnum.STOR_ID.code("二期")); paramIn.put("sect_id", RegionTypeEnum.TWO_BZC01.getId()); + paramIn.put("vehicle_type", jsonObject.getString("storagevehicle_type")); + paramIn.put("height", jsonObject.getString("height")); InBoxManageServiceImpl bean = SpringContextHolder.getBean(InBoxManageServiceImpl.class); JSONObject jsonAttr = bean.getStruct(paramIn); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/StoragevehicleinfoServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/StoragevehicleinfoServiceImpl.java index 2ea448b12..67a495ef7 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/StoragevehicleinfoServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/StoragevehicleinfoServiceImpl.java @@ -129,7 +129,12 @@ public class StoragevehicleinfoServiceImpl implements StoragevehicleinfoService code = "VEHICLE_CODE_GXTP"; break; case "0003": - code = "VEHICLE_CODE_LK"; + if (class_jo.getString("class_code").equals("000301")){ + code = "VEHICLE_CODE_LK"; + } + if (class_jo.getString("class_code").equals("000302")){ + code = "VEHICLE_CODE_LKB"; + } break; default: break; diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/rest/BLmsToMesController.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/rest/BLmsToMesController.java new file mode 100644 index 000000000..ab2106a67 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/rest/BLmsToMesController.java @@ -0,0 +1,40 @@ +package org.nl.wms.ext.mes.rest; + +import com.alibaba.fastjson.JSONObject; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.modules.logging.annotation.Log; +import org.nl.wms.ext.mes.service.LmsToMesService; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequiredArgsConstructor + +@RequestMapping("/CamstarApi") +@Slf4j +public class BLmsToMesController { + private final LmsToMesService lmsToMesService; + + @PostMapping("/momAutoTransterMoveIn") + @Log("表处、分切上料反馈接口") + public ResponseEntity momAutoTransterMoveIn(@RequestBody JSONObject jo) { + return new ResponseEntity<>(lmsToMesService.momAutoTransterMoveIn(jo), HttpStatus.OK); + } + + @PostMapping("/momGetPackingInfo") + @Log("LMS通过木箱号调用木箱信息") + public ResponseEntity momGetPackingInfo(@RequestBody JSONObject jo) { + return new ResponseEntity<>(lmsToMesService.momGetPackingInfo(jo), HttpStatus.OK); + } + + @PostMapping("/momBoxPackageSubmit") + @Log("LMS装箱完成传MES包装关系") + public ResponseEntity momBoxPackageSubmit(@RequestBody JSONObject jo) { + return new ResponseEntity<>(lmsToMesService.momBoxPackageSubmit(jo), HttpStatus.OK); + } +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/LmsToMesService.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/LmsToMesService.java index 0b0104e42..b15ab4505 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/LmsToMesService.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/LmsToMesService.java @@ -135,4 +135,10 @@ public interface LmsToMesService { * } */ JSONObject ChildScrapUpdate(JSONObject jo); + + JSONObject momAutoTransterMoveIn(JSONObject jo); + + JSONObject momGetPackingInfo(JSONObject jo); + + JSONObject momBoxPackageSubmit(JSONObject jo); } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/impl/LmsToMesServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/impl/LmsToMesServiceImpl.java index 4d9624bf3..4317217a3 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/impl/LmsToMesServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/impl/LmsToMesServiceImpl.java @@ -700,4 +700,52 @@ public class LmsToMesServiceImpl implements LmsToMesService { } return result; } + + @Override + public JSONObject momAutoTransterMoveIn(JSONObject param){ return null;} /*{ + String from_area = param.getString("from_area"); + String to_area = param.getString("to_area"); + String container_name = param.getString("container_name"); + + + log.info("momAutoTransterMoveIn接口输入参数为:-------------------" + param.toString()); + + String url = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("MES_URL").getValue(); + String api = "CamstarApi/momAutoTransterMoveIn"; + url = url + api; + + String UserName = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("MES_USERNAME").getValue(); + String Password = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("MES_PASSWORD").getValue(); + param.put("UserName", UserName); + param.put("Password", Password); + + try { + String resultMsg = HttpRequest.post(url) + .body(String.valueOf(param)) + .execute().body(); + result = JSONObject.parseObject(resultMsg); + log.info("LMSPackakge接口输出参数为:-------------------" + result.toString()); + + + String RTYPE = result.getString("RTYPE"); + if ("E".equals(RTYPE)) { + throw new BadRequestException(result.getString("RTMSG")); + } + + + } catch (Exception e) { + throw new BadRequestException("MES提示错误:" + e.getMessage()); + } + return result; + }*/ + + @Override + public JSONObject momGetPackingInfo(JSONObject jo) { + return null; + } + + @Override + public JSONObject momBoxPackageSubmit(JSONObject jo) { + return null; + } }