diff --git a/src/main/java/com/gaotao/modules/automatedWarehouse/mapper/WcsIntegrationMapper.java b/src/main/java/com/gaotao/modules/automatedWarehouse/mapper/WcsIntegrationMapper.java index 0b3ce71..64bf98d 100644 --- a/src/main/java/com/gaotao/modules/automatedWarehouse/mapper/WcsIntegrationMapper.java +++ b/src/main/java/com/gaotao/modules/automatedWarehouse/mapper/WcsIntegrationMapper.java @@ -796,6 +796,16 @@ public interface WcsIntegrationMapper { */ int checkPalletTaskExists(@Param("site") String site, @Param("palletId") String palletId, @Param("sourceBillNo") String sourceBillNo, @Param("stationCode") String stationCode); + /** + * @Description 查询栈板是否存在未完成的运输任务 - rqrq + * @param site 工厂编码 + * @param palletId 栈板编码 + * @return 未完成任务的任务编号(如果存在),不存在则返回null + * @author rqrq + * @date 2025/10/31 + */ + String getUnfinishedTaskByPalletId(@Param("site") String site, @Param("palletId") String palletId); + /** * @Description 检查栈板是否放满(根据pallet_type_area的点位数和max_layer判断) - rqrq * @param site 工厂编码 diff --git a/src/main/java/com/gaotao/modules/automatedWarehouse/service/impl/AutoTaskServiceImpl.java b/src/main/java/com/gaotao/modules/automatedWarehouse/service/impl/AutoTaskServiceImpl.java index 944a214..fb5a093 100644 --- a/src/main/java/com/gaotao/modules/automatedWarehouse/service/impl/AutoTaskServiceImpl.java +++ b/src/main/java/com/gaotao/modules/automatedWarehouse/service/impl/AutoTaskServiceImpl.java @@ -62,6 +62,18 @@ public class AutoTaskServiceImpl implements AutoTaskService { if(getAgvStationStatus!=0){ throw new RuntimeException("参数验证失败:站点不是空闲状态"); } + + // 如果指定了栈板,验证栈板是否已有未完成任务 - rqrq + if(StringUtils.hasText(inData.getPalletId())){ + String unfinishedTaskNo = wcsIntegrationMapper.getUnfinishedTaskByPalletId( + inData.getSite(), + inData.getPalletId() + ); + if(StringUtils.hasText(unfinishedTaskNo)){ + throw new RuntimeException("栈板【" + inData.getPalletId() + "】已存在未完成的运输任务【" + unfinishedTaskNo + "】,不能重复创建"); + } + } + // 生成运输任务编号 TransNoControl transData = transNoService.getTransNo(inData.getSite(), "WTT", 10); Date currentTime = new Date(); @@ -321,6 +333,15 @@ public class AutoTaskServiceImpl implements AutoTaskService { throw new RuntimeException("栈板状态异常:栈板正在被调用中,无法创建新任务"); } + // 验证栈板是否已有未完成任务(更严格的检查)- rqrq + String unfinishedTaskNo = wcsIntegrationMapper.getUnfinishedTaskByPalletId( + inData.getSite(), + inData.getPalletId() + ); + if(StringUtils.hasText(unfinishedTaskNo)){ + throw new RuntimeException("栈板【" + inData.getPalletId() + "】已存在未完成的运输任务【" + unfinishedTaskNo + "】,不能重复创建"); + } + // 校验栈板是否在当前站点上 - rqrq if(!inData.getFromLocation().equals(pallet.getLocationCode())){ throw new RuntimeException("栈板位置异常:栈板不在指定的起始站点【" + inData.getFromLocation() + "】上,实际位置为【" + pallet.getLocationCode() + "】"); diff --git a/src/main/resources/mapper/automatedWarehouse/WcsIntegrationMapper.xml b/src/main/resources/mapper/automatedWarehouse/WcsIntegrationMapper.xml index de6d312..8f47827 100644 --- a/src/main/resources/mapper/automatedWarehouse/WcsIntegrationMapper.xml +++ b/src/main/resources/mapper/automatedWarehouse/WcsIntegrationMapper.xml @@ -1543,6 +1543,17 @@ AND to_location = #{stationCode} + + +