fix: 装箱点位管理

This commit is contained in:
2026-08-18 15:13:25 +08:00
parent d3feb61e62
commit 5d988431a6
18 changed files with 234 additions and 0 deletions

View File

@@ -3,6 +3,7 @@ package cn.code.nl.module.task.api;
import cn.code.nl.framework.common.pojo.CommonResult;
import cn.code.nl.module.task.dto.TaskInfoDTO;
import cn.code.nl.module.task.dto.TransportTaskCreateReqDTO;
import cn.code.nl.module.task.dto.UnfinishedTaskPointReqDTO;
import cn.code.nl.module.task.dto.TaskCallbackResultReqDTO;
import cn.code.nl.module.task.enums.ApiConstants;
import io.swagger.v3.oas.annotations.Operation;
@@ -65,4 +66,13 @@ public interface TransportTaskApi {
@Operation(summary = "统计指定目的点的未完成任务数")
CommonResult<Long> countUnfinishedByDestination(@RequestParam("pointCode") String pointCode,
@RequestParam("ownerService") String ownerService);
/**
* 检查指定点位是否存在未完成任务
*
* @param reqDTO 点位查询请求
* @return 是否存在未完成任务
*/
@PostMapping(PREFIX + "/hasUnfinishedByPointCodes")
CommonResult<Boolean> hasUnfinishedByPointCodes(@Valid @RequestBody UnfinishedTaskPointReqDTO reqDTO);
}

View File

@@ -0,0 +1,20 @@
package cn.code.nl.module.task.dto;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotEmpty;
import lombok.Data;
import java.util.List;
/**
* 未完成任务点位查询请求
*/
@Data
public class UnfinishedTaskPointReqDTO {
/**
* 点位编码列表
*/
@NotEmpty(message = "点位编码列表不能为空")
private List<@NotBlank(message = "点位编码不能为空") String> pointCodes;
}

View File

@@ -3,6 +3,7 @@ package cn.code.nl.module.task.api;
import cn.code.nl.framework.common.pojo.CommonResult;
import cn.code.nl.module.task.dto.TaskInfoDTO;
import cn.code.nl.module.task.dto.TransportTaskCreateReqDTO;
import cn.code.nl.module.task.dto.UnfinishedTaskPointReqDTO;
import cn.code.nl.module.task.dto.TaskCallbackResultReqDTO;
import cn.code.nl.module.task.service.transporttask.TransportTaskCallbackService;
import cn.code.nl.module.task.service.transporttask.TransportTaskService;
@@ -74,4 +75,15 @@ public class TransportTaskApiImpl implements TransportTaskApi {
public CommonResult<Long> countUnfinishedByDestination(String pointCode, String ownerService) {
return success(transportTaskService.countUnfinishedByDestination(pointCode, ownerService));
}
/**
* 检查指定点位是否存在未完成任务
*
* @param reqDTO 点位查询请求
* @return 是否存在未完成任务
*/
@Override
public CommonResult<Boolean> hasUnfinishedByPointCodes(UnfinishedTaskPointReqDTO reqDTO) {
return success(transportTaskService.hasUnfinishedByPointCodes(reqDTO.getPointCodes()));
}
}

View File

@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import cn.code.nl.framework.mybatis.core.mapper.BaseMapperX;
import cn.code.nl.module.task.dal.dataobject.transporttask.TransportTaskDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import cn.code.nl.module.task.controller.admin.transporttask.vo.*;
/**
@@ -117,6 +118,14 @@ public interface TransportTaskMapper extends BaseMapperX<TransportTaskDO> {
TransportTaskStatusEnum.FINISHED_CALLBACK_PENDING.getCode()));
}
/**
* 统计指定点位关联的未完成任务
*
* @param pointCodes 点位编码列表
* @return 未完成任务数量
*/
long selectUnfinishedCountByPointCodes(@Param("pointCodes") List<String> pointCodes);
/**
* 条件更新任务状态CAS 抢占)
*/

View File

@@ -125,6 +125,14 @@ public interface TransportTaskService {
Long countUnfinishedByDestination(String pointCode, String ownerService);
/**
* 检查指定点位是否存在未完成任务
*
* @param pointCodes 点位编码列表
* @return 是否存在未完成任务
*/
boolean hasUnfinishedByPointCodes(List<String> pointCodes);
/**
* 自动下发待下发任务到 ACS
*/

View File

@@ -236,6 +236,11 @@ public class TransportTaskServiceImpl implements TransportTaskService {
return transportTaskMapper.selectUnfinishedCountByDestination(pointCode, ownerService);
}
@Override
public boolean hasUnfinishedByPointCodes(List<String> pointCodes) {
return transportTaskMapper.selectUnfinishedCountByPointCodes(pointCodes) > 0;
}
/**
* 查询待下发任务,并委托下发管理器按生产区域下发到 ACS
*/

View File

@@ -0,0 +1,30 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.code.nl.module.task.dal.mysql.transporttask.TransportTaskMapper">
<select id="selectUnfinishedCountByPointCodes" resultType="long">
SELECT COUNT(1)
FROM task_transport_job
WHERE deleted = b'0'
AND task_status &lt; '75'
AND (
point_code1 IN
<foreach collection="pointCodes" item="pointCode" open="(" separator="," close=")">
#{pointCode}
</foreach>
OR point_code2 IN
<foreach collection="pointCodes" item="pointCode" open="(" separator="," close=")">
#{pointCode}
</foreach>
OR point_code3 IN
<foreach collection="pointCodes" item="pointCode" open="(" separator="," close=")">
#{pointCode}
</foreach>
OR point_code4 IN
<foreach collection="pointCodes" item="pointCode" open="(" separator="," close=")">
#{pointCode}
</foreach>
)
</select>
</mapper>