From 621fe7362e51e78ee6562c37b8651d2df8990810 Mon Sep 17 00:00:00 2001 From: liuxy Date: Thu, 22 Feb 2024 19:11:38 +0800 Subject: [PATCH] =?UTF-8?q?add=EF=BC=9Aacstolms=20=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nl/b_lms/sch/tasks/TwoEmpExcepTask.java | 169 ++++++++++++++++ .../impl/BstIvtBoxinfoServiceImpl.java | 2 +- .../storage_manage/ios/enums/IOSEnum.java | 6 + .../iostorInv/IStIvtIostorinvService.java | 2 +- .../impl/StIvtIostorinvServiceImpl.java | 35 +++- .../util/impl/InBussManageServiceImpl.java | 110 +++++++++++ .../util/impl/SendOutManageServiceImpl.java | 23 ++- .../util/service/InBussManageService.java | 10 + .../wms/ext/acs/rest/AcsToWmsController.java | 21 ++ .../wms/ext/acs/service/AcsToWmsService.java | 34 ++++ .../acs/service/impl/AcsToWmsServiceImpl.java | 186 ++++++++++++++++++ .../outbill/rest/CheckOutBillController.java | 11 ++ .../src/views/wms/st/inbill/DivDialog.vue | 1 + 13 files changed, 600 insertions(+), 10 deletions(-) create mode 100644 lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoEmpExcepTask.java diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoEmpExcepTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoEmpExcepTask.java new file mode 100644 index 000000000..f08473c20 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoEmpExcepTask.java @@ -0,0 +1,169 @@ +package org.nl.b_lms.sch.tasks; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +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.wms.sch.AcsTaskDto; +import org.nl.wms.sch.manage.AbstractAcsTask; +import org.nl.wms.sch.manage.TaskStatusEnum; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; + +/** + * 二期空托盘出库任务类 + * Created by Lxy on 2024/1/19. + */ +public class TwoEmpExcepTask extends AbstractAcsTask { + + /** + * 处理类 + */ + private final String THIS_CLASS = TwoEmpExcepTask.class.getName(); + + @Override + public List addTask() { + /* + * 下发给ACS时需要特殊处理 + */ + 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<>(); + for (int i = 0; i < arr.size(); i++) { + JSONObject json = arr.getJSONObject(i); + + char dtl_type = json.getString("task_type").charAt(json.getString("task_type").length() - 1); + AcsTaskDto dto = AcsTaskDto.builder() + .ext_task_id(json.getString("task_id")) + .task_code(json.getString("task_code")) + .task_type(json.getString("acs_task_type")) + .start_device_code(json.getString("point_code1")) + .next_device_code(json.getString("point_code2")) + .vehicle_code(json.getString("vehicle_code")) + .priority(json.getString("priority")) + .class_type(json.getString("task_type")) + .dtl_type(String.valueOf(dtl_type)) + .remark(json.getString("remark")) + .build(); + resultList.add(dto); + } + return resultList; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void updateTaskStatus(JSONObject taskObj, String status) { + + // 更新任务的参数 + JSONObject map = new JSONObject(); + + /* + * 1-执行中, 2-完成 ,0-acs取消 + */ + // 执行中 + if (status.equals(TaskStatusEnum.EXECUTING.getCode())) { + + map.put("task_status", TaskStatusEnum.EXECUTING.getCode()); + } + + // 完成 + if (status.equals(TaskStatusEnum.FINISHED.getCode())) { + + map.put("task_status", TaskStatusEnum.FINISHED.getCode()); + + } + + // 取消 + if (status.equals(IOSEnum.IS_NOTANDYES.code("否"))) { + + if (taskObj.getIntValue("task_status") > Integer.valueOf(TaskStatusEnum.ISSUE.getCode())) { + throw new BadRequestException("任务已执行不能取消"); + } + + // 更新任务表删除字段 + map.put("is_delete", IOSEnum.IS_NOTANDYES.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") + "'"); + } + + @Override + public void findStartPoint() { + + } + + @Override + public void findNextPoint() { + + } + + @Override + @Transactional(rollbackFor = Exception.class) + public String createTask(JSONObject form) { + + if (StrUtil.isBlank(form.getString("task_type"))) { + throw new BadRequestException("业务类型不能为空!"); + } + + if (StrUtil.isBlank(form.getString("start_device_code"))) { + throw new BadRequestException("起点不能为空!"); + } + + if (StrUtil.isBlank(form.getString("next_device_code"))) { + throw new BadRequestException("终点不能为空!"); + } + + if (StrUtil.isBlank(form.getString("vehicle_code"))) { + throw new BadRequestException("托盘号不能为空!"); + } + + if (StrUtil.isBlank(form.getString("vehicle_type"))) { + throw new BadRequestException("托盘类型不能为空!"); + } + + JSONObject json = new JSONObject(); + json.put("task_id", IdUtil.getSnowflake(1, 1).nextId()); + json.put("task_code", IdUtil.getSnowflake(1, 1).nextId()); + json.put("task_type", form.getString("task_type")); + json.put("vehicle_code", form.getString("vehicle_code")); + json.put("vehicle_type", form.getString("vehicle_type")); + json.put("task_status", TaskStatusEnum.START_AND_POINT.getCode()); + json.put("point_code1", form.getString("start_device_code")); + json.put("point_code2", form.getString("next_device_code")); + json.put("handle_class", this.getClass().getName()); + json.put("create_id", SecurityUtils.getCurrentUserId()); + json.put("create_name", SecurityUtils.getCurrentUsername()); + json.put("create_time", DateUtil.now()); + json.put("priority", "1"); + json.put("acs_task_type", "7"); + + WQLObject.getWQLObject("SCH_BASE_Task").insert(json); + // 下发任务 + this.immediateNotifyAcs(null); + return json.getString("task_id"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void forceFinish(String task_id) { + JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0); + this.updateTaskStatus(taskObj, TaskStatusEnum.FINISHED.getCode()); + } + + @Override + public void cancel(String task_id) { + JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0); + this.updateTaskStatus(taskObj, IOSEnum.ACS_RESULT.code("取消")); + } +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/database/service/impl/BstIvtBoxinfoServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/database/service/impl/BstIvtBoxinfoServiceImpl.java index 2d0db4a18..c8d1e65a5 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/database/service/impl/BstIvtBoxinfoServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/database/service/impl/BstIvtBoxinfoServiceImpl.java @@ -34,7 +34,7 @@ public class BstIvtBoxinfoServiceImpl extends ServiceImpl code; diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/IStIvtIostorinvService.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/IStIvtIostorinvService.java index c38deadeb..29b418ee6 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/IStIvtIostorinvService.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/IStIvtIostorinvService.java @@ -107,7 +107,7 @@ public interface IStIvtIostorinvService extends IService { * checked:是否自动分类(true、false) -- 用不到 * } */ - void setPoint(Map whereJson); + String setPoint(Map whereJson); /** * 下发任务 diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvServiceImpl.java index 8c648b47e..dfd2eb5b5 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvServiceImpl.java @@ -351,6 +351,34 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl().lambda() + .eq(StIvtIostorinvdtl::getIostorinv_id, mst.getIostorinv_id()) + ).get(0); + + List disList = iStIvtIostorinvdisService.list( + new QueryWrapper().lambda() + .eq(StIvtIostorinvdis::getIostorinv_id, mst.getIostorinv_id()) + ).stream().map(row -> JSONObject.parseObject(JSON.toJSONString(row), LinkedHashMap.class)) + .collect(Collectors.toList()); + + jsonSend.put("dtl_row",JSONObject.parseObject(JSON.toJSONString(dtlDao))); + jsonSend.put("tableMater", disList); + jsonSend.put("point_code", jsonObject.getString("point_code")); + jsonSend.put("stor_id", mst.getStor_id()); + + String task_id1 = this.setPoint(jsonSend); + + // 下发任务 + JSONObject sendJson = new JSONObject(); + sendJson.put("task_id",task_id1); + this.reIssueTask(sendJson); + } } @Override @@ -423,7 +451,7 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl list = (ArrayList) whereJson.get("tableMater"); @@ -445,7 +473,6 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl pcsnList = Arrays.asList(material_barcode.split(",")); + + // 查询子卷包装关系 + List subList = subTab.query("container_name in ('"+String.join("','", pcsnList)+"') and status = '0'") + .getResultJSONArray(0).toJavaList(JSONObject.class); + + if (ObjectUtil.isEmpty(subList)) { + throw new BadRequestException("未查询到子卷包装信息!"); + } + + // 主表 + JSONObject mst = new JSONObject(); + mst.put("stor_id", IOSEnum.STOR_ID.code("二期")); + mst.put("bill_status", IOSEnum.BILL_STATUS.code("生成")); + mst.put("total_qty", subList.stream().map(row -> row.getDoubleValue("net_weight")).reduce(Double::sum).orElse(0.00)); + mst.put("detail_count", subList.size()); + mst.put("bill_type", IOSEnum.IN_TYPE.code("生产入库")); + mst.put("biz_date", DateUtil.today()); + mst.put("remark", ""); + + // 明细 + ArrayList tableData = new ArrayList<>(); + for (int i = 0; i < subList.size(); i++) { + JSONObject json = subList.get(i); + + LinkedHashMap jsonDtl = new LinkedHashMap<>(); + + jsonDtl.put("package_box_sn", json.getString("package_box_sn")); + jsonDtl.put("thickness", json.getString("thickness")); + jsonDtl.put("plan_qty", json.getString("net_weight")); + jsonDtl.put("customer_description", json.getString("customer_description")); + jsonDtl.put("quanlity_in_box", json.getString("quanlity_in_box")); + jsonDtl.put("product_name", json.getString("product_name")); + jsonDtl.put("net_weight", json.getString("net_weight")); + jsonDtl.put("container_name", json.getString("container_name")); + jsonDtl.put("width", json.getString("width")); + jsonDtl.put("sap_pcsn", json.getString("sap_pcsn")); + jsonDtl.put("customer_name", json.getString("customer_name")); + jsonDtl.put("sale_order_name", json.getString("sale_order_name")); + jsonDtl.put("product_description", json.getString("product_description")); + jsonDtl.put("quality_scode", IOSEnum.QUALITY_SCODE.code("合格品")); + jsonDtl.put("is_active", IOSEnum.IS_SEND.code("是")); + tableData.add(jsonDtl); + } + mst.put("tableData",tableData); + + // 调用服务创建 + String iostorinv_id = iStIvtIostorinvService.insertMst(mst); + + // 调用分配货位并下发 + JSONObject jsonDiv = new JSONObject(); + + StIvtIostorinvdtl dtlDao = iStIvtIostorinvdtlService.list( + new QueryWrapper().lambda() + .eq(StIvtIostorinvdtl::getIostorinv_id, iostorinv_id) + ).get(0); + + List disList = iStIvtIostorinvdisService.list( + new QueryWrapper().lambda() + .eq(StIvtIostorinvdis::getIostorinv_id, iostorinv_id) + ).stream().map(row -> JSONObject.parseObject(JSON.toJSONString(row), LinkedHashMap.class)) + .collect(Collectors.toList()); + + jsonDiv.put("dtl_row",JSONObject.parseObject(JSON.toJSONString(dtlDao))); + jsonDiv.put("tableMater", disList); + jsonDiv.put("checked", true); + jsonDiv.put("is_send", IOSEnum.IS_SEND.code("是")); + jsonDiv.put("point_code", jsonObject.getString("device_code")); + jsonDiv.put("sect_id", IOSEnum.SECT_ID.code("二期主存区")); + jsonDiv.put("stor_id", IOSEnum.STOR_ID.code("二期")); + + iStIvtIostorinvService.divStruct(jsonDiv); + } + /** * 获取最小巷道 * @param jsonSub { 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 7a923fd9c..0b0a65afe 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 @@ -50,13 +50,17 @@ public class SendOutManageServiceImpl implements SendOutManageService { @Override @Transactional public void createSendOutTask(JSONObject whereJson) { + // 子卷包装关系表 + WQLObject subTab = WQLObject.getWQLObject("pdm_bi_subpackagerelation"); + // 载具扩展属性表 + WQLObject extTab = WQLObject.getWQLObject("md_pb_storagevehicleext"); /* * 1.找相同订单号的木箱 - * 1)有相同订单号有空位的:相同订单号的放在一排 - * 2)没有相同订单号的:新开一排 - * 3)有相同订单号的但是没有空位:新开一排 + * 1)有相同订单号有空位的:相同订单号的放在一排 + * 2)没有相同订单号的:新开一排 + * 3)有相同订单号的但是没有空位:新开一排 + * 2.删除载具对应木箱记录 */ - WQLObject subTab = WQLObject.getWQLObject("pdm_bi_subpackagerelation"); CutConveyorTask cutConveyorTask = new CutConveyorTask(); // 所有发货区点位 @@ -67,8 +71,14 @@ public class SendOutManageServiceImpl implements SendOutManageService { .eq(SchBasePoint::getIs_delete, IOSEnum.IS_NOTANDYES.code("否")) ); + // 根据载具号找到对应的木箱号 + JSONObject jsonExt = extTab.query("storagevehicle_code = '" + whereJson.getString("vehicle_code") + "'").uniqueResult(0); + if (ObjectUtil.isEmpty(jsonExt)) { + throw new BadRequestException("此载具上没有木箱,请检查!"+whereJson.getString("vehicle_code")); + } + // 1.查询此木箱号的子卷包装关系 - JSONObject jsonSub = subTab.query("package_box_sn = '" + whereJson.getString("vehicle_code") + "'").uniqueResult(0); + JSONObject jsonSub = subTab.query("package_box_sn = '" + jsonExt.getString("pcsn") + "'").uniqueResult(0); if (ObjectUtil.isEmpty(jsonSub)) { throw new BadRequestException("未查询到该木箱对应的包装关系!"); } @@ -204,5 +214,8 @@ public class SendOutManageServiceImpl implements SendOutManageService { .set(SchBasePoint::getLock_type, IOSEnum.LOCK_TYPE.code("其它")) .set(SchBasePoint::getVehicle_code, whereJson.getString("vehicle_code")) ); + + // 删除载具对应木箱记录 + extTab.delete(jsonExt); } } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/service/InBussManageService.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/service/InBussManageService.java index e13fe5b0f..6ef3f1d3e 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/service/InBussManageService.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/service/InBussManageService.java @@ -43,4 +43,14 @@ public interface InBussManageService { */ JSONObject getOneStruct(JSONObject jsonObject); + /** + * 申请入库任务 + * @param jsonObject { + * device_code: 起点 + * vehicle_code: 载具号 + * material_barcode: 子卷号: a,b,c + * } + */ + void inTask(JSONObject jsonObject); + } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java index 87bee4625..db694714e 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java @@ -149,5 +149,26 @@ public class AcsToWmsController { return new ResponseEntity<>(acsToWmsService.sendProductToFirstFloor(json), HttpStatus.OK); } + @PostMapping("/applyTwo") + @Log(value = "二期入库申请任务", isInterfaceLog = true, interfaceLogType = InterfaceLogType.ACS_TO_LMS) + @SaIgnore + public ResponseEntity applyTwo(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(acsToWmsService.applyTwo(whereJson), HttpStatus.OK); + } + + @PostMapping("/applySendOutTwo") + @Log(value = "二期发货申请任务", isInterfaceLog = true, interfaceLogType = InterfaceLogType.ACS_TO_LMS) + @SaIgnore + public ResponseEntity applySendOutTwo(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(acsToWmsService.applySendOutTwo(whereJson), HttpStatus.OK); + } + + @PostMapping("/deviceApplyTwo") + @Log(value = "二期发货申请捆扎、贴标", isInterfaceLog = true, interfaceLogType = InterfaceLogType.ACS_TO_LMS) + @SaIgnore + public ResponseEntity deviceApplyTwo(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(acsToWmsService.deviceApplyTwo(whereJson), HttpStatus.OK); + } + } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java index dbf787bfb..5445e4abf 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java @@ -121,4 +121,38 @@ public interface AcsToWmsService { JSONObject sendProductToFirstFloor(JSONObject whereJson); + /** + * 二期入库任务申请 + * @param whereJson { + * type:任务类型(1-成品入库任务 2-空盘入库 3-空盘出库 4-异常处理位) + * device_code:设备号 + * vehicle_code:载具号 + * material_barcode:子卷编码(a,b,c) + * container_type:托盘类型(1-小托盘 2-大托盘) + * + * } + * @return JSONObject 反馈状态 + */ + JSONObject applyTwo(JSONObject whereJson); + + /** + * 二期发货申请任务 + * @param whereJson { + * device_code: 设备号 + * vehicle_code: 载具号 + * } + * @return JSONObject: 反馈状态 + */ + JSONObject applySendOutTwo(JSONObject whereJson); + + /** + * 二期申请捆扎、贴标 + * @param whereJson { + * device_code: 设备号 + * vehicle_code: 载具号 + * type: 任务类型(1-贴标 2-捆扎) + * } + * @return + */ + JSONObject deviceApplyTwo(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 7e4033bf4..02f584710 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 @@ -27,7 +27,13 @@ import org.nl.b_lms.sch.task.dao.SchBaseTask; import org.nl.b_lms.sch.task.dao.mapper.SchBaseTaskMapper; import org.nl.b_lms.sch.task.service.IschBaseTaskService; import org.nl.b_lms.sch.task.service.impl.SchBaseTaskServiceImpl; +import org.nl.b_lms.sch.tasks.TwoEmpExcepTask; import org.nl.b_lms.sch.tasks.packingArea.MzhcwTask; +import org.nl.b_lms.storage_manage.ios.enums.IOSEnum; +import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service.InBussManageService; +import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service.InVehicleManageService; +import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service.OutVehicleManageService; +import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service.SendOutManageService; import org.nl.common.enums.PackageInfoIvtEnum; import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.system.util.CodeUtil; @@ -86,6 +92,25 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { private final ISysNoticeService noticeService; + /** + * 入库处理类服务 + */ + private final InBussManageService inBussManageService; + + /** + * 空载具入库处理服务 + */ + private final InVehicleManageService inVehicleManageService; + + /** + * 空载具出库处理服务 + */ + private final OutVehicleManageService outVehicleManageService; + + /** + * 发货处理服务 + */ + private final SendOutManageService sendOutManageService; @Resource private IschBaseTaskService taskService; @@ -1756,4 +1781,165 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { } } + @Override + @Transactional(rollbackFor = Exception.class) + @SneakyThrows + public JSONObject applyTwo(JSONObject whereJson) { + log.info("applyTwo请求参数:---------------------------------------------" + whereJson.toString()); + JSONObject result = new JSONObject(); + + String type = whereJson.getString("type"); + RLock lock = redissonClient.getLock("acs_to_wms_two_a:" + type); + boolean tryLock = lock.tryLock(5, TimeUnit.SECONDS); + + try { + if (tryLock) { + // 基础校验 + if (ObjectUtil.isEmpty(whereJson.getString("device_code"))) { + throw new BadRequestException("设备不能为空!"); + } + + if (type.equals(IOSEnum.ACSTOLMS_TYPE.code("空盘入库")) || type.equals(IOSEnum.ACSTOLMS_TYPE.code("异常处理位"))) { + if (ObjectUtil.isEmpty(whereJson.getString("container_type"))) { + throw new BadRequestException("载具类型不能为空!"); + } + + if (ObjectUtil.isEmpty(whereJson.getString("vehicle_code"))) { + throw new BadRequestException("载具不能为空!"); + } + } + + // 1-成品入库任务 + if (type.equals(IOSEnum.ACSTOLMS_TYPE.code("成品入库任务"))) { + + // 调用服务处理 + if (ObjectUtil.isEmpty(whereJson.getString("material_barcode"))) { + throw new BadRequestException("子卷号不能为空!"); + } + + inBussManageService.inTask(whereJson); + + } else if (type.equals(IOSEnum.ACSTOLMS_TYPE.code("空盘入库"))) { + + // 2-空盘入库 + whereJson.put("vehicle_type",whereJson.getString("container_type")); + inVehicleManageService.inVehicle(whereJson); + + } else if (type.equals(IOSEnum.ACSTOLMS_TYPE.code("空盘出库"))) { + + // 3-空盘出库 + if (ObjectUtil.isEmpty(whereJson.getString("container_type"))) { + throw new BadRequestException("载具类型不能为空!"); + } + + whereJson.put("vehicle_type",whereJson.getString("container_type")); + outVehicleManageService.outVehicle(whereJson); + + } else if (type.equals(IOSEnum.ACSTOLMS_TYPE.code("异常处理位"))) { + + // 4-异常处理 + JSONObject jsonTaskParam = new JSONObject(); + jsonTaskParam.put("task_type", "010504"); + jsonTaskParam.put("start_device_code", whereJson.getString("device_code")); + jsonTaskParam.put("next_device_code", ""); + jsonTaskParam.put("vehicle_code", whereJson.getString("vehicle_code")); + jsonTaskParam.put("vehicle_type", whereJson.getString("container_type")); + + TwoEmpExcepTask taskBean = new TwoEmpExcepTask(); + taskBean.createTask(jsonTaskParam); + } + result.put("status", HttpStatus.OK.value()); + result.put("message", "下发成功!"); + log.info("applyTwo返回参数:---------------------------------------------" + result.toString()); + return result; + } + } finally { + if (tryLock) { + lock.unlock(); + } + } + + result.put("status", HttpStatus.BAD_REQUEST.value()); + result.put("message", "申请任务超时!" + type); + log.info("applyTwo返回参数:---------------------------------------------" + result.toString()); + return result; + } + + @Override + @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); + + result.put("status", HttpStatus.OK.value()); + result.put("message", "下发成功!"); + return result; + } catch (Exception e) { + result.put("status", HttpStatus.BAD_REQUEST.value()); + result.put("message", e.getMessage()); + } + + log.info("applySendOutTwo返回参数:---------------------------------------------" + result.toString()); + return result; + } + + @Override + @Transactional(rollbackFor = Exception.class) + @SneakyThrows + public JSONObject deviceApplyTwo(JSONObject whereJson) { + log.info("deviceApplyTwo请求参数:---------------------------------------------" + whereJson.toString()); + JSONObject result = new JSONObject(); + + String type = whereJson.getString("type"); + RLock lock = redissonClient.getLock("acs_to_wms_two_b:" + type); + boolean tryLock = lock.tryLock(5, TimeUnit.SECONDS); + + try { + if (tryLock) { + // 校验 + if (ObjectUtil.isEmpty(whereJson.getString("device_code"))) { + throw new BadRequestException("设备号不能为空!"); + } + + if (ObjectUtil.isEmpty(whereJson.getString("vehicle_code"))) { + throw new BadRequestException("载具号不能为空!"); + } + + // 1-贴标 + if (type.equals(IOSEnum.ACSTOLMS_TYPE.code("贴标"))) { + + } else if (type.equals(IOSEnum.ACSTOLMS_TYPE.code("贴标"))) { + // 2-捆扎 + } + + result.put("status", HttpStatus.OK.value()); + result.put("message", "下发成功!"); + log.info("deviceApplyTwo返回参数:---------------------------------------------" + result.toString()); + return result; + } + } finally { + if (tryLock) { + lock.unlock(); + } + } + + result.put("status", HttpStatus.BAD_REQUEST.value()); + result.put("message", "申请任务超时!" + type); + log.info("deviceApplyTwo返回参数:---------------------------------------------" + result.toString()); + return result; + } + } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/rest/CheckOutBillController.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/rest/CheckOutBillController.java index a2c3d66d4..87acec304 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/rest/CheckOutBillController.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/rest/CheckOutBillController.java @@ -5,7 +5,9 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.b_lms.storage_manage.ios.enums.IOSEnum; import org.nl.b_lms.storage_manage.ios.service.iostorInv.IStIvtIostorinvOutService; +import org.nl.b_lms.storage_manage.ios.service.iostorInv.IStIvtIostorinvService; import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.impl.*; +import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service.InBussManageService; import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service.LashManageService; import org.nl.modules.logging.annotation.Log; import org.nl.wms.st.inbill.service.CheckOutBillService; @@ -38,6 +40,8 @@ public class CheckOutBillController { private final LashManageService lashManageService; + private final InBussManageService inBussManageService; + private final SendOutManageServiceImpl sendOutManageService; @GetMapping @@ -409,4 +413,11 @@ public class CheckOutBillController { return new ResponseEntity<>(HttpStatus.OK); } + @PostMapping("/testIn") + @Log("申请入库") + public ResponseEntity testIn(@RequestBody JSONObject whereJson) { + inBussManageService.inTask(whereJson); + return new ResponseEntity<>(HttpStatus.OK); + } + } diff --git a/lms/nladmin-ui/src/views/wms/st/inbill/DivDialog.vue b/lms/nladmin-ui/src/views/wms/st/inbill/DivDialog.vue index 8f7a8a569..365856f80 100644 --- a/lms/nladmin-ui/src/views/wms/st/inbill/DivDialog.vue +++ b/lms/nladmin-ui/src/views/wms/st/inbill/DivDialog.vue @@ -414,6 +414,7 @@ export default { this.divBtn = true this.form.sect_id = this.sect_id this.form.stor_id = this.stor_id + this.form.is_send = '' crudRawAssist.divStruct(this.form).then(res => { crudRawAssist.getIODtl({ 'bill_code': this.form.dtl_row.bill_code, 'open_flag': '1' }).then(res => { this.openParam = res