From d0ba03e9c9dd16149155c75e61c301800a3707ea Mon Sep 17 00:00:00 2001 From: FT577-Server Date: Fri, 16 Oct 2026 09:47:49 +0800 Subject: [PATCH] =?UTF-8?q?=E7=8E=B0=E5=9C=BA=E8=BF=90=E8=A1=8C=E8=B0=83?= =?UTF-8?q?=E6=95=B4=E4=BC=98=E5=8C=96=E5=92=8C=E9=A1=B5=E9=9D=A2=E7=A7=BB?= =?UTF-8?q?=E9=99=A4=E7=BB=91=E5=AE=9A=E4=BF=A1=E6=81=AF=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bind/controller/InTrayMsgController.java | 9 +--- .../service/impl/InTrayMsgServiceImpl.java | 31 +++++++++++ .../job/service/impl/MydoJobServiceImpl.java | 6 +-- .../service/impl/OutStockoutServiceImpl.java | 1 + .../pda/service/impl/PdaServiceImpl.java | 8 +++ .../ruoyi/scheduleTask/MydoJobHandler.java | 25 +++++---- .../ruoyi/scheduleTask/RequestWcsHandler.java | 2 +- ruoyi-ui/src/api/in/bindTrayMsg.js | 4 +- ruoyi-ui/src/views/in/bindTrayMsg/index.vue | 52 +++++++++---------- 9 files changed, 88 insertions(+), 50 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/in/bind/controller/InTrayMsgController.java b/ruoyi-admin/src/main/java/com/ruoyi/in/bind/controller/InTrayMsgController.java index 65e4bc2..3a37ff6 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/in/bind/controller/InTrayMsgController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/in/bind/controller/InTrayMsgController.java @@ -9,14 +9,7 @@ import com.ruoyi.in.stockindetail.service.IInStockinDetailService; import jakarta.servlet.http.HttpServletResponse; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; diff --git a/ruoyi-admin/src/main/java/com/ruoyi/in/bind/service/impl/InTrayMsgServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/in/bind/service/impl/InTrayMsgServiceImpl.java index a88059c..faecf2d 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/in/bind/service/impl/InTrayMsgServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/in/bind/service/impl/InTrayMsgServiceImpl.java @@ -1,7 +1,15 @@ package com.ruoyi.in.bind.service.impl; +import java.math.BigDecimal; import java.util.List; + +import cn.hutool.core.util.ObjUtil; +import cn.hutool.json.JSONUtil; +import com.ruoyi.common.ProductType; import com.ruoyi.common.utils.DateUtils; +import com.ruoyi.in.stockindetail.domain.InStockinDetail; +import com.ruoyi.in.stockindetail.service.IInStockinDetailService; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.ruoyi.in.bind.mapper.InTrayMsgMapper; @@ -14,12 +22,16 @@ import com.ruoyi.in.bind.service.IInTrayMsgService; * @author ruoyi * @date 2026-05-14 */ +@Slf4j @Service public class InTrayMsgServiceImpl implements IInTrayMsgService { @Autowired private InTrayMsgMapper inTrayMsgMapper; + @Autowired + IInStockinDetailService instockinDetailService; + /** * 查询入库信息 * @@ -89,6 +101,25 @@ public class InTrayMsgServiceImpl implements IInTrayMsgService @Override public int deleteInTrayMsgByIds(Long[] ids) { + for (Long id : ids){ + InTrayMsg msg = inTrayMsgMapper.selectInTrayMsgById(id); + + //检查该版辊信息是否存在 + if (ObjUtil.isNull(msg)) continue; + + //检查该版辊信息是否为空托 - 非空托盘则查找入库明细更新【扫码数量】为【0】 + if (!msg.getProductId().equals(ProductType.EMPTY_TRAY)) continue; + + InStockinDetail detail = instockinDetailService.selectInStockinDetailByProductId(msg.getProductId()); + //入库明细中有该版辊信息则还原【扫码数量】为【0】 + if (ObjUtil.isNull(detail)) continue; + + detail.setScanNum(BigDecimal.ZERO); + instockinDetailService.updateInStockinDetail(detail); + + log.info("【移除绑定】操作成功,移除的绑定信息[条码:{},物料编号:{},物料名称:{}]", msg.getTrayCode(), msg.getProductId(), msg.getProductName()); + + } return inTrayMsgMapper.deleteInTrayMsgByIds(ids); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/in/job/service/impl/MydoJobServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/in/job/service/impl/MydoJobServiceImpl.java index ae6e908..f199342 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/in/job/service/impl/MydoJobServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/in/job/service/impl/MydoJobServiceImpl.java @@ -536,11 +536,11 @@ public class MydoJobServiceImpl implements IMydoJobService } //--------------------更新货位状态-------------------- - BasCargoSpace cargoSpace = basCargoSpaceService.selectBasCargoSpaceByCargoSpaceId(mydoJob.getCargoSpaceId()); - basCargoSpaceService.updateBasCargoSpaceStatus(cargoSpace.getCargoSpaceId(), "", CargoSpaceCode.CARGOSPACE_STATUS_AVAILABLE); +// BasCargoSpace cargoSpace = basCargoSpaceService.selectBasCargoSpaceByCargoSpaceId(mydoJob.getCargoSpaceId()); + basCargoSpaceService.updateBasCargoSpaceStatus(mydoJob.getCargoSpaceId(), "", CargoSpaceCode.CARGOSPACE_STATUS_AVAILABLE); basCargoSpaceService.updateBasCargoSpaceStatus(mydoJob.getTargetCargoSpaceId(), mydoJob.getTrayCode(), CargoSpaceCode.CARGOSPACE_STATUS_OCCUPIED); - log.info("【账务处理】更新<移库完成>货位状态,作业号:{},货位:{},托盘号:{}", jobId, cargoSpace.getCargoSpaceId(), mydoJob.getTrayCode()); + log.info("【账务处理】更新<移库完成>货位状态,作业号:{},源货位:{},目标货位:{},托盘号:{}", jobId, mydoJob.getCargoSpaceId(),mydoJob.getTargetCargoSpaceId(), mydoJob.getTrayCode()); //--------------------处理任务表和子任务表-------------------- //1.更新任务主表状态并移除作业 diff --git a/ruoyi-admin/src/main/java/com/ruoyi/out/stockout/service/impl/OutStockoutServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/out/stockout/service/impl/OutStockoutServiceImpl.java index 18bd14e..0a1c3e4 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/out/stockout/service/impl/OutStockoutServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/out/stockout/service/impl/OutStockoutServiceImpl.java @@ -547,6 +547,7 @@ public class OutStockoutServiceImpl implements IOutStockoutService //2.生成辊号库存对应托盘的出库作业 MydoJob mydoJob = mydoJobService.selectMydoJobByTrayCode(stock.getTrayCode()); + mydoJob.setCargoSpaceId(stock.getCargoSpaceId()); if (ObjUtil.isNull(mydoJob)){ diff --git a/ruoyi-admin/src/main/java/com/ruoyi/pda/service/impl/PdaServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/pda/service/impl/PdaServiceImpl.java index c08dd02..c883801 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/pda/service/impl/PdaServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/pda/service/impl/PdaServiceImpl.java @@ -247,6 +247,14 @@ public class PdaServiceImpl implements IPdaService { return AjaxResult.error("【入库绑定失败】当前条码有未结束的任务,无法执行绑定操作,请检查该托盘的任务状态,当前条码:" + trayCode); } + List cargoExist = basCargoSpaceService.selectBasCargoSpaceList( + new BasCargoSpace().builder().trayCode(trayCode).build() + ); + if (!cargoExist.isEmpty()){ + log.warn("【入库绑定失败】存在当前条码的货位信息,无法执行绑定操作,请检查该托盘的任务状态,条码:{}", trayCode); + return AjaxResult.error("【入库绑定失败】存在当前条码的货位信息,无法执行绑定操作,请检查该托盘的任务状态,当前条码:" + trayCode); + } + //获取绑定状态,【新建绑定】或【原有库存】 int trayMsgStatus = ObjUtil.isNull(basStockInfoService.selectBasStockInfoByTrayCode(trayCode)) ? InTrayMsgCode.STATUS_NEW :InTrayMsgCode.STATUS_EXIST; diff --git a/ruoyi-admin/src/main/java/com/ruoyi/scheduleTask/MydoJobHandler.java b/ruoyi-admin/src/main/java/com/ruoyi/scheduleTask/MydoJobHandler.java index 31d9f10..b12e54c 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/scheduleTask/MydoJobHandler.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/scheduleTask/MydoJobHandler.java @@ -360,6 +360,12 @@ public class MydoJobHandler { mydoJobDetailService.deleteMydoJobDetailsByJobId(mydoJob.getJobId()); log.info("【手动作废任务】移除<移库>任务明细,作业号:{}", mydoJob.getJobId()); } +//库存主表 + BasStockInfo stockInfo = basStockInfoService.selectBasStockInfoByTrayCode(mydoJob.getTrayCode()); + if (ObjUtil.isNotNull(stockInfo)){ + stockInfo.setCargoSpaceId(mydoJob.getCargoSpaceId()); + basStockInfoService.updateBasStockInfo(stockInfo); + } //库存子表 List stocks = basStockService.selectBasStockListByTrayCode(mydoJob.getTrayCode()); if (!stocks.isEmpty()){ @@ -375,11 +381,7 @@ public class MydoJobHandler { basCargoSpaceService.updateBasCargoSpaceStatus(mydoJob.getCargoSpaceId(), mydoJob.getTrayCode(), CargoSpaceCode.CARGOSPACE_STATUS_OCCUPIED); //目标位置 basCargoSpaceService.updateBasCargoSpaceStatus(mydoJob.getTargetCargoSpaceId(), "", CargoSpaceCode.CARGOSPACE_STATUS_AVAILABLE); - BasStockInfo stockInfo = basStockInfoService.selectBasStockInfoByTrayCode(mydoJob.getTrayCode()); - if (ObjUtil.isNotNull(stockInfo)){ - stockInfo.setCargoSpaceId(mydoJob.getCargoSpaceId()); - basStockInfoService.updateBasStockInfo(stockInfo); - } + log.info( "【账务处理-移库】任务作废,更新库存和货位信息,托盘号:{},源位置:{},目标位置:{}", mydoJob.getTrayCode(), mydoJob.getCargoSpaceId(), mydoJob.getTargetCargoSpaceId() ); @@ -839,6 +841,13 @@ public class MydoJobHandler { mydoJobDetailService.deleteMydoJobDetailsByJobId(mydoJob.getJobId()); log.info("【手动完成任务】移除<移库>任务明细,作业号:{}", mydoJob.getJobId()); } +//库存主表 + BasStockInfo stockInfo = basStockInfoService.selectBasStockInfoByTrayCode(mydoJob.getTrayCode()); + if (ObjUtil.isNotNull(stockInfo)){ + stockInfo.setCargoSpaceId(mydoJob.getTargetCargoSpaceId()); + basStockInfoService.updateBasStockInfo(stockInfo); + } + //库存子表 List stocks = basStockService.selectBasStockListByTrayCode(mydoJob.getTrayCode()); if (!stocks.isEmpty()){ @@ -856,11 +865,7 @@ public class MydoJobHandler { "【账务处理-移库】更新库存和货位信息,托盘号:{},源位置:{},目标位置:{}", mydoJob.getTrayCode(), mydoJob.getCargoSpaceId(), mydoJob.getTargetCargoSpaceId() ); - BasStockInfo stockInfo = basStockInfoService.selectBasStockInfoByTrayCode(mydoJob.getTrayCode()); - if (ObjUtil.isNotNull(stockInfo)){ - stockInfo.setCargoSpaceId(mydoJob.getTargetCargoSpaceId()); - basStockInfoService.updateBasStockInfo(stockInfo); - } + mydoJobService.insertMydoJobFinish(mydoJob.getJobId()); mydoJobService.deleteMydoJobByJobId(mydoJob.getJobId()); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/scheduleTask/RequestWcsHandler.java b/ruoyi-admin/src/main/java/com/ruoyi/scheduleTask/RequestWcsHandler.java index 3607117..2b95967 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/scheduleTask/RequestWcsHandler.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/scheduleTask/RequestWcsHandler.java @@ -168,7 +168,7 @@ public class RequestWcsHandler { HashMap paramMap = new HashMap<>(); paramMap.put("reqCode", UUID.randomUUID().toString());//请求码 paramMap.put("trayCode", mydoJob.getTrayCode());//容器编号 - paramMap.put("taskNo", mydoJob.getTaskNo());//容器编号 + paramMap.put("taskNo", mydoJob.getTaskNo()); paramMap.put("jobId", mydoJob.getJobId()); paramMap.put("inOrOut", mydoJob.getInOrOut()); paramMap.put("cargoSpaceId", mydoJob.getCargoSpaceId()); diff --git a/ruoyi-ui/src/api/in/bindTrayMsg.js b/ruoyi-ui/src/api/in/bindTrayMsg.js index 10d791e..521a98f 100644 --- a/ruoyi-ui/src/api/in/bindTrayMsg.js +++ b/ruoyi-ui/src/api/in/bindTrayMsg.js @@ -55,7 +55,7 @@ export function delBindTrayMsg(id) { // 删除入库信息 export function delBindTrayMsgByRollerNumber(rollerNumbers) { return request({ - url: '/in/bindMsg/delete/' + rollerNumbers, - method: 'delete' + url: '/in/bindMsg/delete/' + rollerNumbers.join(','), + method: 'delete' }) } diff --git a/ruoyi-ui/src/views/in/bindTrayMsg/index.vue b/ruoyi-ui/src/views/in/bindTrayMsg/index.vue index b10a345..bce8728 100644 --- a/ruoyi-ui/src/views/in/bindTrayMsg/index.vue +++ b/ruoyi-ui/src/views/in/bindTrayMsg/index.vue @@ -104,7 +104,7 @@ - + - +