feat:子卷质检不合格
This commit is contained in:
@@ -58,6 +58,12 @@ public class PackagePdaServiceImpl implements PackagePdaService {
|
||||
/** 复检合格任务回调处理器编码 */
|
||||
private static final String RE_CHECK_QUALIFIED_HANDLE_CODE = "reCheckQualifiedAgvTask";
|
||||
|
||||
/** 质检不合格业务类型 */
|
||||
private static final String CHECK_FAILED_BIZ_TYPE = "CHECK_FAILED";
|
||||
|
||||
/** 质检不合格任务回调处理器编码 */
|
||||
private static final String CHECK_FAILED_HANDLE_CODE = "checkFailedAgvTask";
|
||||
|
||||
/** ACS 搬运任务类型 */
|
||||
private static final String ACS_MOVE_TASK_TYPE = "7";
|
||||
|
||||
@@ -152,7 +158,7 @@ public class PackagePdaServiceImpl implements PackagePdaService {
|
||||
if (manaQualityCheckPdaReqVO.getIsQualified()) {
|
||||
doCheckedQualified(manaQualityCheckPdaReqVO);
|
||||
} else {
|
||||
// todo: 做不合格的操作
|
||||
doCheckedFailed(manaQualityCheckPdaReqVO);
|
||||
}
|
||||
} catch (ServiceException ex) {
|
||||
throw ex;
|
||||
@@ -169,6 +175,11 @@ public class PackagePdaServiceImpl implements PackagePdaService {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 执行人工质检合格操作
|
||||
*
|
||||
* @param manaQualityCheckPdaReqVO 人工质检参数
|
||||
*/
|
||||
public void doCheckedQualified(ManaQualityCheckPdaReqVO manaQualityCheckPdaReqVO) {
|
||||
PackagePointDO currentPoint = packagePointService.getPackagePointByCode(
|
||||
manaQualityCheckPdaReqVO.getPointCode(), false);
|
||||
@@ -241,4 +252,69 @@ public class PackagePdaServiceImpl implements PackagePdaService {
|
||||
log.info("复检合格AGV任务创建成功,任务标识={},起点编码={},目的点编码={}",
|
||||
taskResult.getData(), currentPoint.getPointCode(), destinationPoint.getPointCode());
|
||||
}
|
||||
|
||||
/**
|
||||
* 执行人工质检不合格操作
|
||||
*
|
||||
* @param manaQualityCheckPdaReqVO 人工质检参数
|
||||
*/
|
||||
private void doCheckedFailed(ManaQualityCheckPdaReqVO manaQualityCheckPdaReqVO) {
|
||||
PackagePointDO currentPoint = packagePointService.getPackagePointByCode(
|
||||
manaQualityCheckPdaReqVO.getPointCode(), false);
|
||||
if (currentPoint == null) {
|
||||
throw exception(PACKAGE_POINT_NOT_EXISTS);
|
||||
}
|
||||
if (!BoxPointTypeEnum.INSPECTION_PENDING_POINT.getCode().equals(currentPoint.getPointType())) {
|
||||
throw exception(POINT_EXECUTE_REFUGE,
|
||||
Objects.requireNonNull(BoxPointTypeEnum.getByCode(currentPoint.getPointType())).getDesc(),
|
||||
"质检不合格");
|
||||
}
|
||||
|
||||
if (packagePointMapper.tryLockPoint(
|
||||
currentPoint.getPointId(), currentPoint.getPointStatus()) == 0) {
|
||||
throw exception(PACKAGE_POINT_LOCK_FAILED);
|
||||
}
|
||||
|
||||
List<PackagePointDO> unqualifiedPointList = packagePointMapper.selectAvailablePointList(
|
||||
BoxPointTypeEnum.UNQUALIFIED_POINT.getCode(), BoxPointStatusEnum.EMPTY.getCode());
|
||||
if (CollectionUtils.isEmpty(unqualifiedPointList)) {
|
||||
throw exception(PACKAGE_POINT_UNQUALIFIED_EMPTY_NOT_EXISTS);
|
||||
}
|
||||
|
||||
PackagePointDO destinationPoint = null;
|
||||
for (PackagePointDO unqualifiedPoint : unqualifiedPointList) {
|
||||
if (packagePointMapper.tryLockPoint(
|
||||
unqualifiedPoint.getPointId(), unqualifiedPoint.getPointStatus()) > 0) {
|
||||
destinationPoint = unqualifiedPoint;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (destinationPoint == null) {
|
||||
throw exception(PACKAGE_POINT_UNQUALIFIED_EMPTY_NOT_EXISTS);
|
||||
}
|
||||
|
||||
TransportTaskCreateReqDTO task = new TransportTaskCreateReqDTO();
|
||||
task.setTaskName("质检不合格AGV任务");
|
||||
task.setOwnerService(TaskOwnerServiceEnum.LMS.name());
|
||||
task.setBizType(CHECK_FAILED_BIZ_TYPE);
|
||||
task.setBizId(currentPoint.getContainerName());
|
||||
task.setTaskType(PackageTaskTypeEnum.CHECK_FAILED_AGV.getCode());
|
||||
task.setHandleCode(CHECK_FAILED_HANDLE_CODE);
|
||||
task.setAcsTaskType(ACS_MOVE_TASK_TYPE);
|
||||
task.setAgvSystemType(AGV_SYSTEM_TYPE);
|
||||
task.setPointCode1(currentPoint.getPointCode());
|
||||
task.setPointCode2(destinationPoint.getPointCode());
|
||||
task.setVehicleCode(currentPoint.getVehicleCode());
|
||||
task.setMaterialCode(currentPoint.getContainerName());
|
||||
task.setProductArea(currentPoint.getProductArea());
|
||||
task.setIsAutoIssue("1");
|
||||
task.setIsCreateFinish(true);
|
||||
CommonResult<Long> taskResult = transportTaskApi.createTransportTask(task);
|
||||
if (taskResult.isError()) {
|
||||
log.error("创建质检不合格AGV任务失败,task={},返回={}", task, taskResult);
|
||||
throw exception(PACKAGE_POINT_CHECK_FAILED_TASK_CREATE_FAILED);
|
||||
}
|
||||
log.info("质检不合格AGV任务创建成功,任务标识={},起点编码={},目的点编码={}",
|
||||
taskResult.getData(), currentPoint.getPointCode(), destinationPoint.getPointCode());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,94 @@
|
||||
package cn.code.nl.module.lms.tasks.box;
|
||||
|
||||
import cn.code.nl.framework.execute.core.AbstractTask;
|
||||
import cn.code.nl.framework.execute.core.dto.TaskExecuteDTO;
|
||||
import cn.code.nl.module.lms.dal.dataobject.packagepoint.PackagePointDO;
|
||||
import cn.code.nl.module.lms.dal.mysql.packagepoint.PackagePointMapper;
|
||||
import cn.code.nl.module.lms.enums.BoxPointStatusEnum;
|
||||
import cn.code.nl.module.task.api.TransportTaskApi;
|
||||
import cn.code.nl.module.task.dto.TaskInfoDTO;
|
||||
import jakarta.annotation.Resource;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 质检不合格 AGV 任务
|
||||
*
|
||||
* @Author: liyongde
|
||||
* @Date: 2026/8/18
|
||||
*/
|
||||
@Slf4j
|
||||
@Component("checkFailedAgvTask")
|
||||
public class CheckFailedAgvTask extends AbstractTask {
|
||||
|
||||
/** 运输任务接口 */
|
||||
@Resource
|
||||
private TransportTaskApi transportTaskApi;
|
||||
|
||||
/** 装箱区点位 Mapper */
|
||||
@Resource
|
||||
private PackagePointMapper packagePointMapper;
|
||||
|
||||
/**
|
||||
* 任务完成后将目的点更新为管制品
|
||||
*
|
||||
* @param taskExecuteDTO 任务执行信息
|
||||
*/
|
||||
@Override
|
||||
public void doHandleFinish(TaskExecuteDTO taskExecuteDTO) {
|
||||
TaskInfoDTO taskInfoDTO = transportTaskApi.getTaskById(taskExecuteDTO.getTaskId()).getCheckedData();
|
||||
PackagePointDO endPoint = packagePointMapper.selectByPointCode(taskInfoDTO.getPointCode2(), false);
|
||||
PackagePointDO updatePoint = new PackagePointDO();
|
||||
updatePoint.setPointId(endPoint.getPointId());
|
||||
updatePoint.setVehicleCode(taskInfoDTO.getVehicleCode());
|
||||
updatePoint.setContainerName(taskInfoDTO.getMaterialCode());
|
||||
updatePoint.setPointStatus(BoxPointStatusEnum.CONTROLLED.getCode());
|
||||
updatePoint.setLockStatus("0");
|
||||
packagePointMapper.updateById(updatePoint);
|
||||
log.info("质检不合格任务{}执行完成,管制品已存入不合格点{}",
|
||||
taskExecuteDTO.getTaskId(), taskInfoDTO.getPointCode2());
|
||||
}
|
||||
|
||||
/**
|
||||
* 任务取消后解锁起点和目的点
|
||||
*
|
||||
* @param taskExecuteDTO 任务执行信息
|
||||
*/
|
||||
@Override
|
||||
public void doHandleCancel(TaskExecuteDTO taskExecuteDTO) {
|
||||
TaskInfoDTO taskInfoDTO = transportTaskApi.getTaskById(taskExecuteDTO.getTaskId()).getCheckedData();
|
||||
PackagePointDO startPoint = packagePointMapper.selectByPointCode(taskInfoDTO.getPointCode1(), false);
|
||||
PackagePointDO endPoint = packagePointMapper.selectByPointCode(taskInfoDTO.getPointCode2(), false);
|
||||
PackagePointDO updateStartPoint = new PackagePointDO();
|
||||
updateStartPoint.setPointId(startPoint.getPointId());
|
||||
updateStartPoint.setLockStatus("0");
|
||||
PackagePointDO updateEndPoint = new PackagePointDO();
|
||||
updateEndPoint.setPointId(endPoint.getPointId());
|
||||
updateEndPoint.setLockStatus("0");
|
||||
packagePointMapper.updateBatch(List.of(updateStartPoint, updateEndPoint));
|
||||
log.info("质检不合格任务{}已取消,起点{}和目的点{}已解锁", taskExecuteDTO.getTaskId(),
|
||||
taskInfoDTO.getPointCode1(), taskInfoDTO.getPointCode2());
|
||||
}
|
||||
|
||||
/**
|
||||
* 取货完成后释放待检点
|
||||
*
|
||||
* @param taskExecuteDTO 任务执行信息
|
||||
*/
|
||||
@Override
|
||||
public void doHandlePicked(TaskExecuteDTO taskExecuteDTO) {
|
||||
TaskInfoDTO taskInfoDTO = transportTaskApi.getTaskById(taskExecuteDTO.getTaskId()).getCheckedData();
|
||||
PackagePointDO startPoint = packagePointMapper.selectByPointCode(taskInfoDTO.getPointCode1(), false);
|
||||
PackagePointDO updatePoint = new PackagePointDO();
|
||||
updatePoint.setPointId(startPoint.getPointId());
|
||||
updatePoint.setLockStatus("0");
|
||||
updatePoint.setPointStatus(BoxPointStatusEnum.EMPTY.getCode());
|
||||
updatePoint.setVehicleCode("");
|
||||
updatePoint.setContainerName("");
|
||||
packagePointMapper.updateById(updatePoint);
|
||||
log.info("质检不合格任务{}取货完成,待检点{}已释放",
|
||||
taskExecuteDTO.getTaskId(), taskInfoDTO.getPointCode1());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user