From a8726ede44e5a0296b7f31befcadb6a9e8550600 Mon Sep 17 00:00:00 2001 From: zhouz <> Date: Wed, 22 Oct 2025 15:17:36 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E5=87=BA=E7=A9=BA=E6=9C=A8=E7=AE=B1?= =?UTF-8?q?=E6=94=B9=E4=B8=BA=E5=AE=9A=E6=97=B6=E5=99=A8=E4=B8=8B=E5=8F=91?= =?UTF-8?q?=EF=BC=9B=E6=96=B0=E5=A2=9E=E8=BD=BD=E5=85=B7=E8=A7=A3=E7=BB=91?= =?UTF-8?q?=E6=9C=A8=E7=AE=B1=E6=89=8B=E6=8C=81=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ProductOutTwoController.java | 7 ++ .../pda/service/ProductOutTwoService.java | 2 + .../impl/ProductOutTwoServiceImpl.java | 72 +++++++++++++++++++ .../org/nl/b_lms/sch/tasks/TwoOutBoxTask.java | 5 -- 4 files changed, 81 insertions(+), 5 deletions(-) diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/pda/controller/ProductOutTwoController.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/pda/controller/ProductOutTwoController.java index fc1407bf0..e25d67879 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/pda/controller/ProductOutTwoController.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/pda/controller/ProductOutTwoController.java @@ -97,5 +97,12 @@ public class ProductOutTwoController { return new ResponseEntity<>(productOutTwoService.outExcepionPointPass(whereJson), HttpStatus.OK); } + @PostMapping("/vehicleUnbind") + @Log("空托盘解绑") + @SaIgnore + public ResponseEntity vehicleUnbind(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(productOutTwoService.vehicleUnbind(whereJson), HttpStatus.OK); + } + } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/pda/service/ProductOutTwoService.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/pda/service/ProductOutTwoService.java index 72e240aee..3963672d4 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/pda/service/ProductOutTwoService.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/pda/service/ProductOutTwoService.java @@ -92,4 +92,6 @@ public interface ProductOutTwoService { JSONObject boxOut(JSONObject whereJson); JSONObject outExcepionPointPass(JSONObject whereJson); + + JSONObject vehicleUnbind(JSONObject whereJson); } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/pda/service/impl/ProductOutTwoServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/pda/service/impl/ProductOutTwoServiceImpl.java index 18bf5bfad..f36c4e341 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/pda/service/impl/ProductOutTwoServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/pda/service/impl/ProductOutTwoServiceImpl.java @@ -1,14 +1,20 @@ package org.nl.b_lms.pda.service.impl; import cn.hutool.core.util.ObjectUtil; +import com.alibaba.druid.util.StringUtils; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.extern.slf4j.Slf4j; import org.nl.b_lms.pda.service.ProductOutTwoService; import org.nl.b_lms.pdm.info.dao.PdmBiOrderbominfo; import org.nl.b_lms.pdm.info.service.IPdmBiOrderbominfoService; +import org.nl.b_lms.pdm.subpackagerelation.dao.PdmBiSubpackagerelation; +import org.nl.b_lms.pdm.subpackagerelation.service.IpdmBiSubpackagerelationService; +import org.nl.b_lms.sch.task.dao.SchBaseTask; +import org.nl.b_lms.sch.task.service.IschBaseTaskService; import org.nl.b_lms.storage_manage.database.service.IBstIvtBoxinfoService; import org.nl.b_lms.storage_manage.database.service.IBstIvtBoxlashboundService; import org.nl.b_lms.storage_manage.database.service.dao.BstIvtBoxlashbound; @@ -52,6 +58,12 @@ public class ProductOutTwoServiceImpl implements ProductOutTwoService { @Autowired private OutBoxManageService outBoxManageService; + @Autowired + private IpdmBiSubpackagerelationService ipdmBiSubpackagerelationService; + + @Autowired + private IschBaseTaskService ischBaseTaskService; + @Override public JSONObject ivtQuery(JSONObject whereJson) { @@ -238,4 +250,64 @@ public class ProductOutTwoServiceImpl implements ProductOutTwoService { result.put("message", "成功放行!"); return result; } + + @Override + public JSONObject vehicleUnbind(JSONObject whereJson) { + String vehicle_code = whereJson.getString("vehicle_code"); + + if (ObjectUtil.isEmpty(vehicle_code)) { + throw new BadRequestException("托盘号不能为空!"); + } + + WQLObject vehicle_ext = WQLObject.getWQLObject("md_pb_storagevehicleext"); + + JSONObject vehicle_info = vehicle_ext.query("storagevehicle_code = '" + vehicle_code + "'").uniqueResult(0); + if (ObjectUtil.isEmpty(vehicle_info)) { + throw new BadRequestException("未查询到载具【" + vehicle_code + "】对应的绑定关系"); + } + + String box_no = vehicle_info.getString("pcsn"); + if (StringUtils.isEmpty(box_no)) { + throw new BadRequestException("载具【" + vehicle_code + "】上未绑定木箱!"); + } + + List list = ipdmBiSubpackagerelationService.list(new LambdaQueryWrapper().eq(PdmBiSubpackagerelation::getPackage_box_sn, box_no)); + if (ObjectUtil.isNotEmpty(list)) { + boolean anyMatch = list.stream().anyMatch(sub -> sub.getStatus().equals("1") || sub.getStatus().equals("2")); + if (anyMatch) { + throw new BadRequestException("载具上木箱【" + box_no + "】的包装关系为包装或者入库状态!"); + } + } + + String collect = list.stream().map(sub -> sub.getContainer_name()).collect(Collectors.joining("','")); + + JSONArray ivt_arr = WQLObject.getWQLObject("st_ivt_structivt").query("pcsn IN ('" + collect + "')").getResultJSONArray(0); + if (ObjectUtil.isNotEmpty(ivt_arr)) { + throw new BadRequestException("载具【" + vehicle_code + "】上绑定的木箱【" + box_no + "】存在库存,不能进行解绑!"); + } + + int hasTask = ischBaseTaskService.count(new QueryWrapper() + .eq("is_delete", "0") + .eq("vehicle_code2", vehicle_code) + .lt("task_status", TaskStatusEnum.FINISHED.getCode())); + + if (hasTask > 0) { + throw new BadRequestException("该托盘【" + vehicle_code + "】存在正在执行中的任务,不能进行解绑!"); + } + + int hasTask2 = ischBaseTaskService.count(new QueryWrapper() + .eq("is_delete", "0") + .eq("vehicle_code", box_no) + .lt("task_status", TaskStatusEnum.FINISHED.getCode())); + + if (hasTask2 > 0) { + throw new BadRequestException("该木箱【" + box_no + "】存在正在执行中的任务,不能进行解绑!"); + } + + vehicle_info.put("pcsn", ""); + vehicle_ext.update(vehicle_info); + JSONObject result = new JSONObject(); + result.put("message", "操作成功!"); + return result; + } } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoOutBoxTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoOutBoxTask.java index 47d6f8faa..3565f8bc1 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoOutBoxTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoOutBoxTask.java @@ -179,11 +179,6 @@ public class TwoOutBoxTask extends AbstractAcsTask { packageInfo.put("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空载具")); packageInfo.put("container_name", jsonTask.getString("vehicle_code")); packageinfoivt.update(packageInfo); - RedissonUtils.lock(c -> { - if (status.equals(TaskStatusEnum.FINISHED.getCode())) { - immediateNotifyAcs(null); - } - }, "zjInBound", 20, this); } // 取消 if (status.equals(IOSEnum.IS_NOTANDYES.code("否"))) {