diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ToWcsServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ToWcsServiceImpl.java index 0c5e949..b262f32 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ToWcsServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ToWcsServiceImpl.java @@ -51,6 +51,11 @@ public class ToWcsServiceImpl implements IToWcsService { mydoJobParam.setInOut("2"); List outMydoJobs = mydoJobService.selectMydoJobListApi(mydoJobParam); for (MydoJob outMydoJob : outMydoJobs) { + // HTTP success only confirms receipt. A rear outbound stays in status 1 until + // every deeper position in its own lane is physically clear. + if (mydoJobService.isOutboundDispatchBlocked(outMydoJob.getJobId())) { + continue; + } RequestLog requestLog = requestLogService.getRequestLog(PUSH_OUT_MYDO_JOB, JSONUtil.toJsonStr(outMydoJob), "推送出库任务","wms","wcs"); if ("1".equals(requestLog.getIsSuccessful())){ outMydoJob.setStatus("3"); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/job/mydojob/mapper/MydoJobMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/job/mydojob/mapper/MydoJobMapper.java index ec2f038..635a162 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/job/mydojob/mapper/MydoJobMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/job/mydojob/mapper/MydoJobMapper.java @@ -95,4 +95,6 @@ public interface MydoJobMapper void updateLedError(HashMap map); Integer selectBySpare4OrCargo(InStockinDetail inStockinDetail); + + int countOutboundDispatchBlockers(@Param("jobId") String jobId); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/job/mydojob/service/IMydoJobService.java b/ruoyi-admin/src/main/java/com/ruoyi/job/mydojob/service/IMydoJobService.java index 0f60062..74d72e5 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/job/mydojob/service/IMydoJobService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/job/mydojob/service/IMydoJobService.java @@ -111,4 +111,7 @@ public interface IMydoJobService List getInJobBySerial(String serial); void ykCompleted(MydoJob outJob); + + /** True while a deeper position in the same lane blocks this outbound. */ + boolean isOutboundDispatchBlocked(String jobId); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/job/mydojob/service/impl/MydoJobServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/job/mydojob/service/impl/MydoJobServiceImpl.java index 9dd3046..69dd2da 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/job/mydojob/service/impl/MydoJobServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/job/mydojob/service/impl/MydoJobServiceImpl.java @@ -540,4 +540,9 @@ public class MydoJobServiceImpl implements IMydoJobService { log.info("移库任务处理成功 jobId:[{}] trayCode:[{}]", outJob.getJobId(), outJob.getTrayCode()); } } + + @Override + public boolean isOutboundDispatchBlocked(String jobId) { + return mydoJobMapper.countOutboundDispatchBlockers(jobId) > 0; + } } diff --git a/ruoyi-admin/src/main/resources/mapper/job/MydoJobMapper.xml b/ruoyi-admin/src/main/resources/mapper/job/MydoJobMapper.xml index 82d20fb..c112314 100644 --- a/ruoyi-admin/src/main/resources/mapper/job/MydoJobMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/job/MydoJobMapper.xml @@ -271,6 +271,33 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select * from mydo_job where task_no = #{taskNo} + +