恢复了站台连续拣选功能

This commit is contained in:
杨学谦 2025-12-14 21:52:58 +08:00
parent 4d35a2a337
commit 76a199028c

View File

@ -1152,10 +1152,10 @@ public class TaskControllerServiceImpl implements ITaskControllerService {
* @param response EWM接口返回的数据 * @param response EWM接口返回的数据
* @param vehicleNo 载具号 * @param vehicleNo 载具号
*/ */
private void saveEwmDataToTempTable(EwmApiLocalResponse response, String vehicleNo) { private boolean saveEwmDataToTempTable(EwmApiLocalResponse response, String vehicleNo) {
if (response == null || response.getContent() == null || response.getContent().toString().isEmpty()) { if (response == null || response.getContent() == null || response.getContent().toString().isEmpty()) {
log.warn("EWM返回数据为空或无任务明细载具号: {}", vehicleNo); log.warn("EWM返回数据为空或无任务明细载具号: {}", vehicleNo);
return; return false;
} }
try { try {
boolean deletedCount = tempEwmInboundDataService.remove(new LambdaQueryWrapper<TAppTempEwmInboundData>() boolean deletedCount = tempEwmInboundDataService.remove(new LambdaQueryWrapper<TAppTempEwmInboundData>()
@ -1212,6 +1212,15 @@ public class TaskControllerServiceImpl implements ITaskControllerService {
// 将Map中的值转换为List // 将Map中的值转换为List
List<TAppTempEwmInboundData> dataList = new ArrayList<>(dataMap.values()); List<TAppTempEwmInboundData> dataList = new ArrayList<>(dataMap.values());
// 新增逻辑检查是否有多条相同matNo的数据
Set<String> matNoSet = new HashSet<>();
for (TAppTempEwmInboundData data : dataList) {
if (!matNoSet.add(data.getMatNo())) {
log.warn("EWM返回数据中存在多条相同的matNo载具号: {}, 重复的matNo: {}", vehicleNo, data.getMatNo());
return false; // 或者抛出异常取决于你希望如何处理这种情况
}
}
if (!dataList.isEmpty()) { if (!dataList.isEmpty()) {
// 批量插入时指定合理的批次大小 // 批量插入时指定合理的批次大小
boolean saveResult = tempEwmInboundDataService.saveBatch(dataList); boolean saveResult = tempEwmInboundDataService.saveBatch(dataList);
@ -1221,6 +1230,7 @@ public class TaskControllerServiceImpl implements ITaskControllerService {
log.error("保存EWM数据到临时表失败载具号: {}", vehicleNo, e); log.error("保存EWM数据到临时表失败载具号: {}", vehicleNo, e);
throw e; // 重新抛出异常以便上层处理 throw e; // 重新抛出异常以便上层处理
} }
return true;
} }
/** /**
@ -1351,15 +1361,15 @@ public class TaskControllerServiceImpl implements ITaskControllerService {
if (!response.isSuccess()) { if (!response.isSuccess()) {
return WcsApiResponse.error(response.getMessage(), null); return WcsApiResponse.error(response.getMessage(), null);
} }
if (response.getContent().getTaskDetailInfo().size() > 1){ // if (response.getContent().getTaskDetailInfo().size() > 1){
return WcsApiResponse.error("该容器绑定了多个料,请检查。", null); // return WcsApiResponse.error("该容器绑定了多个料,请检查。", null);
} // }
// 判断是否为空箱 // 判断是否为空箱
if (response.getContent().isEmptyContainer()) { if (response.getContent().isEmptyContainer()) {
if (!outsCheckList.isEmpty() || !stockList.isEmpty()){ if (!outsCheckList.isEmpty() || !stockList.isEmpty()){
return WcsApiResponse.error("该容器已作为拣选任务绑定的目标容器,请检查。", null); return WcsApiResponse.error("该容器已作为拣选任务绑定的目标容器,请检查。", null);
} }
return WcsApiResponse.success("该容器为空箱,请检查。", null); return WcsApiResponse.error("该容器为空箱,请检查。", null);
// 创建空载具入库任务 // 创建空载具入库任务
// TAppTask task = new TAppTask( // TAppTask task = new TAppTask(
// UUIDUtils.getNewUUID(), // UUIDUtils.getNewUUID(),
@ -1389,7 +1399,9 @@ public class TaskControllerServiceImpl implements ITaskControllerService {
}else{ }else{
try { try {
// 2. 将EWM数据保存到临时表 // 2. 将EWM数据保存到临时表
saveEwmDataToTempTable(response, wcsVehicleInRequest.getVehicleNo()); if (!saveEwmDataToTempTable(response, wcsVehicleInRequest.getVehicleNo())){
return WcsApiResponse.error("插入了多条不符合要求的数据。", null);
}
// 3. 根据临时表数据生成WMS任务 // 3. 根据临时表数据生成WMS任务
generateWmsTasksFromTempData(wcsVehicleInRequest); generateWmsTasksFromTempData(wcsVehicleInRequest);
@ -1766,7 +1778,7 @@ public class TaskControllerServiceImpl implements ITaskControllerService {
if (thisOut.size() != confirmTaskRequest.getTaskConfirm().getTotalQty()){ if (thisOut.size() != confirmTaskRequest.getTaskConfirm().getTotalQty()){
return BaseWmsApiResponse.error("EWM下发新需求请刷新后重新合并"); return BaseWmsApiResponse.error("EWM下发新需求请刷新后重新合并");
} }
//
// 调用EWM系统检验箱子 // 调用EWM系统检验箱子
SendEwmCheckContainerNo request = new SendEwmCheckContainerNo(); SendEwmCheckContainerNo request = new SendEwmCheckContainerNo();
request.setContainerNo(confirmTaskRequest.getTaskConfirm().getContainerNo()); request.setContainerNo(confirmTaskRequest.getTaskConfirm().getContainerNo());
@ -1865,6 +1877,7 @@ public class TaskControllerServiceImpl implements ITaskControllerService {
} }
}else { }else {
log.error("调用回告EWM系统出库完成接口异常请求参数: {}", requestForCompleted); log.error("调用回告EWM系统出库完成接口异常请求参数: {}", requestForCompleted);
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return BaseWmsApiResponse.error("调用回告EWM系统出库完成接口异常: " + ewmResponse.getMessage()); return BaseWmsApiResponse.error("调用回告EWM系统出库完成接口异常: " + ewmResponse.getMessage());
} }
} }
@ -1890,12 +1903,12 @@ public class TaskControllerServiceImpl implements ITaskControllerService {
log.info("容器置空调用EWM系统接口成功请求参数: {}", request); log.info("容器置空调用EWM系统接口成功请求参数: {}", request);
} }
} }
// if (appPickTaskService.exists(new LambdaQueryWrapper<TAppPickTask>() if (appPickTaskService.exists(new LambdaQueryWrapper<TAppPickTask>()
// .eq(TAppPickTask::getVehicleId, thisPickTask.getVehicleId()) .eq(TAppPickTask::getVehicleId, thisPickTask.getVehicleId())
// .eq(TAppPickTask::getPickStatus, WmsPickTaskStatusEnum.ARRIVE.getCode()) .eq(TAppPickTask::getPickStatus, WmsPickTaskStatusEnum.ARRIVE.getCode())
// )){ )){
// return BaseWmsApiResponse.success("继续拣选"); return BaseWmsApiResponse.success("继续拣选");
// } }
return BaseWmsApiResponse.success("确认成功。"); return BaseWmsApiResponse.success("确认成功。");
} }