Browse Source

自动分拣

master
常熟吴彦祖 4 months ago
parent
commit
ba8f13b8f6
  1. 10
      src/main/java/com/gaotao/modules/automatedWarehouse/mapper/WcsIntegrationMapper.java
  2. 21
      src/main/java/com/gaotao/modules/automatedWarehouse/service/impl/AutoTaskServiceImpl.java
  3. 11
      src/main/resources/mapper/automatedWarehouse/WcsIntegrationMapper.xml

10
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 工厂编码

21
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() + "】");

11
src/main/resources/mapper/automatedWarehouse/WcsIntegrationMapper.xml

@ -1543,6 +1543,17 @@
AND to_location = #{stationCode}
</select>
<!-- rqrq - 查询栈板是否存在未完成的运输任务 -->
<select id="getUnfinishedTaskByPalletId" resultType="string">
SELECT TOP 1 task_no
FROM wms_transport_task
WHERE site = #{site}
AND pallet_id = #{palletId}
AND status != '已完成'
AND status != '已取消'
ORDER BY created_time DESC
</select>
<!-- rqrq - 检查栈板是否放满(根据pallet_type_area的点位数和max_layer判断) -->
<select id="checkPalletIsFull" resultType="int">
WITH PalletInfo AS (

Loading…
Cancel
Save