后端改动
This commit is contained in:
parent
b456252541
commit
4d35a2a337
|
|
@ -4,8 +4,10 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|||
import com.wms_main.constant.enums.wms.WmsPickTaskStatusEnum;
|
||||
import com.wms_main.dao.ITAppPickTaskService;
|
||||
import com.wms_main.dao.ITAppStockCompareService;
|
||||
import com.wms_main.dao.ITAppStockService;
|
||||
import com.wms_main.dao.ITempEwmInboundDataService;
|
||||
import com.wms_main.model.bo.wcs.WcsStackerTask;
|
||||
import com.wms_main.model.bo.wms.StockConfirmEntity;
|
||||
import com.wms_main.model.dto.request.ewm.*;
|
||||
import com.wms_main.model.dto.request.wcs.WcsBoxArriveRequest;
|
||||
import com.wms_main.model.dto.request.wcs.WcsTaskResultRequest;
|
||||
|
|
@ -19,9 +21,11 @@ import com.wms_main.model.dto.response.wcs.WcsApiResponse;
|
|||
import com.wms_main.model.dto.response.wms.BaseWmsApiResponse;
|
||||
import com.wms_main.model.dto.response.wms.WmsApiResponse;
|
||||
import com.wms_main.model.po.TAppPickTask;
|
||||
import com.wms_main.model.po.TAppStock;
|
||||
import com.wms_main.model.po.TAppStockCompare;
|
||||
import com.wms_main.model.vo.wms.InventoryConfirmVo;
|
||||
import com.wms_main.model.vo.wms.TaskConfirmVo;
|
||||
import com.wms_main.repository.utils.StringUtils;
|
||||
import com.wms_main.service.api.IEwmApiService;
|
||||
import com.wms_main.service.controller.ITaskControllerService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
|
@ -41,7 +45,7 @@ public class TaskController {
|
|||
private final ITaskControllerService taskControllerService;
|
||||
private final IEwmApiService ewmApiService;
|
||||
private final ITAppPickTaskService appPickTaskService;// 拣选任务服务
|
||||
|
||||
private final ITAppStockService appStockService;// 库存服务
|
||||
|
||||
/**
|
||||
* 请求入库
|
||||
|
|
@ -58,7 +62,7 @@ public class TaskController {
|
|||
* @param stockOutRequest 请求信息
|
||||
* @return 处理结果
|
||||
*/
|
||||
//@PostMapping("/requireStockOut")
|
||||
@PostMapping("/requireStockOut")
|
||||
public BaseWmsApiResponse requireStockOut(@RequestBody StockOutRequest stockOutRequest) {
|
||||
return taskControllerService.requireStockOut(stockOutRequest);
|
||||
}
|
||||
|
|
@ -133,11 +137,67 @@ public class TaskController {
|
|||
* test
|
||||
*/
|
||||
@PostMapping("/status")
|
||||
public EwmApiBackResponse test(@RequestBody SendWarehouseOutCompletedRequest request) {
|
||||
public EwmApiBackResponse test(@RequestBody StockConfirmEntity stockConfirm) {
|
||||
//return taskControllerService.ewmInformationBack(wcsVehicleInRequest);
|
||||
// return ewmApiService.getEwmStock(request);
|
||||
return ewmApiService.sendWarehouseOutCompleted(request);
|
||||
//return ewmApiService.sendWarehouseOutCompleted(request);
|
||||
//return ewmApiService.sendWarehouseInCompleted(new SendWarehouseInCompletedRequest());
|
||||
// 查询对应的库存信息
|
||||
List<TAppStock> stockList = appStockService.list(new LambdaQueryWrapper<TAppStock>()
|
||||
.eq(TAppStock::getVehicleId, stockConfirm.getVehicleId())
|
||||
.eq(TAppStock::getGoodsId, stockConfirm.getGoodsId())
|
||||
// 特殊库存字段精确匹配 - 根据传入值决定匹配条件
|
||||
.and(wrapper -> {
|
||||
if (StringUtils.isEmpty(stockConfirm.getSpecialStock())) {
|
||||
// 如果传入null或空字符串,匹配数据库中为null或空字符串的记录
|
||||
wrapper.isNull(TAppStock::getSpecialStock)
|
||||
.or()
|
||||
.eq(TAppStock::getSpecialStock, "");
|
||||
} else {
|
||||
// 如果传入有值,精确匹配该值
|
||||
wrapper.eq(TAppStock::getSpecialStock, stockConfirm.getSpecialStock());
|
||||
}
|
||||
})
|
||||
.and(wrapper -> {
|
||||
if (StringUtils.isEmpty(stockConfirm.getSpecialStockNo())) {
|
||||
// 如果传入null或空字符串,匹配数据库中为null或空字符串的记录
|
||||
wrapper.isNull(TAppStock::getSpecialStockNo)
|
||||
.or()
|
||||
.eq(TAppStock::getSpecialStockNo, "");
|
||||
} else {
|
||||
// 如果传入有值,精确匹配该值
|
||||
wrapper.eq(TAppStock::getSpecialStockNo, stockConfirm.getSpecialStockNo());
|
||||
}
|
||||
})
|
||||
.and(wrapper -> {
|
||||
if (StringUtils.isEmpty(stockConfirm.getSpecialStockItemNo())) {
|
||||
// 如果传入null或空字符串,匹配数据库中为null或空字符串的记录
|
||||
wrapper.isNull(TAppStock::getSpecialStockItemNo)
|
||||
.or()
|
||||
.eq(TAppStock::getSpecialStockItemNo, "");
|
||||
} else {
|
||||
// 如果传入有值,精确匹配该值
|
||||
wrapper.eq(TAppStock::getSpecialStockItemNo, stockConfirm.getSpecialStockItemNo());
|
||||
}
|
||||
})
|
||||
.and(wrapper -> {
|
||||
if (StringUtils.isEmpty(stockConfirm.getBatchNo())) {
|
||||
// 如果传入null或空字符串,匹配数据库中为null或空字符串的记录
|
||||
wrapper.isNull(TAppStock::getBatchNo)
|
||||
.or()
|
||||
.eq(TAppStock::getBatchNo, "");
|
||||
} else {
|
||||
// 如果传入有值,精确匹配该值
|
||||
wrapper.eq(TAppStock::getBatchNo, stockConfirm.getBatchNo());
|
||||
}
|
||||
})
|
||||
.orderByDesc(TAppStock::getFirstInTime)
|
||||
);
|
||||
|
||||
return EwmApiBackResponse.success(
|
||||
"查询成功",
|
||||
stockList
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -34,4 +34,28 @@ public class InventoryConfirmRequest extends BaseWmsRequest {
|
|||
*/
|
||||
@JsonProperty("confirmNum")
|
||||
private Integer confirmNum;
|
||||
|
||||
/**
|
||||
* 特殊库存
|
||||
*/
|
||||
@JsonProperty("specialStock")
|
||||
private String specialStock;
|
||||
|
||||
/**
|
||||
* 批次号
|
||||
*/
|
||||
@JsonProperty("batchNo")
|
||||
private String batchNo;
|
||||
|
||||
/**
|
||||
* 特殊库存号
|
||||
*/
|
||||
@JsonProperty("specialStockNo")
|
||||
private String specialStockNo;
|
||||
|
||||
/**
|
||||
* 特殊库存item号
|
||||
*/
|
||||
@JsonProperty("specialStockItemNo")
|
||||
private String specialStockItemNo;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ public interface IStockDataService {
|
|||
* @param userName 用户名
|
||||
* @param inventoryId 盘点任务号
|
||||
*/
|
||||
void updateStockInfo(StockConfirmEntity stockConfirm, String standId, String userName, String reason, String inventoryId);
|
||||
boolean updateStockInfo(StockConfirmEntity stockConfirm, String standId, String userName, String reason, String inventoryId);
|
||||
|
||||
/**
|
||||
* 查询库存预警值
|
||||
|
|
|
|||
|
|
@ -260,7 +260,7 @@ public class ConveyTaskServiceImpl implements IConveyTaskService {
|
|||
.eq(TAppStock::getStockStatus, WmsStockStatusEnums.OUTING.getCode())
|
||||
);
|
||||
// 更新当前载具到达当前点位的拣选任务为已到达
|
||||
updateVehicleArriveStatus(targetPickTask);
|
||||
//updateVehicleArriveStatus(targetPickTask);
|
||||
}
|
||||
// 更新拣选任务信息,添加拣选任务记录信息
|
||||
pickRecords.add(new TAppPickTaskBak(
|
||||
|
|
@ -549,6 +549,20 @@ public class ConveyTaskServiceImpl implements IConveyTaskService {
|
|||
return resultVo;
|
||||
}
|
||||
|
||||
/**
|
||||
* 构建包含特殊库存属性的复合键
|
||||
* @param stock 库存对象
|
||||
* @return 复合键字符串
|
||||
*/
|
||||
private String buildCompositeKey(TAppStock stock) {
|
||||
return stock.getGoodsId() + "_" +
|
||||
(stock.getSpecialStock() != null ? stock.getSpecialStock() : "") + "_" +
|
||||
(stock.getBatchNo() != null ? stock.getBatchNo() : "") + "_" +
|
||||
(stock.getSpecialStockNo() != null ? stock.getSpecialStockNo() : "") + "_" +
|
||||
(stock.getSpecialStockItemNo() != null ? stock.getSpecialStockItemNo() : "");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取这个载具的盘点确认信息
|
||||
* @param vehicleId 载具号
|
||||
|
|
@ -570,28 +584,45 @@ public class ConveyTaskServiceImpl implements IConveyTaskService {
|
|||
if (stockList == null || stockList.isEmpty()) {
|
||||
return null;
|
||||
}
|
||||
// 将这些库存根据料号Map一下, 并汇总库存数量
|
||||
// 将这些库存根据料号Map一下, 并汇总库存数量(相同特殊库存属性的才汇总)
|
||||
Map<String, Integer> sumNumByGoodsMap = new HashMap<>();
|
||||
Map<String, TAppStock> firstStockByGoodsMap = new HashMap<>();
|
||||
|
||||
for (TAppStock stock : stockList) {
|
||||
if (sumNumByGoodsMap.containsKey(stock.getGoodsId())) {
|
||||
sumNumByGoodsMap.replace(stock.getGoodsId(), sumNumByGoodsMap.get(stock.getGoodsId()) + stock.getRealNum());
|
||||
// 构建包含特殊库存属性的复合键
|
||||
String compositeKey = buildCompositeKey(stock);
|
||||
|
||||
// 为每个goodsId+特殊属性组合只保留一个代表性的库存记录用于获取特殊库存信息
|
||||
if (!firstStockByGoodsMap.containsKey(compositeKey)) {
|
||||
firstStockByGoodsMap.put(compositeKey, stock);
|
||||
}
|
||||
|
||||
// 只汇总相同特殊库存属性的库存数量
|
||||
if (sumNumByGoodsMap.containsKey(compositeKey)) {
|
||||
sumNumByGoodsMap.replace(compositeKey, sumNumByGoodsMap.get(compositeKey) + stock.getRealNum());
|
||||
} else {
|
||||
sumNumByGoodsMap.put(stock.getGoodsId(), stock.getRealNum());
|
||||
sumNumByGoodsMap.put(compositeKey, stock.getRealNum());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
List<TAppPickTask> pickTasks = appPickTaskService.list(new LambdaQueryWrapper<TAppPickTask>()
|
||||
.eq(TAppPickTask::getVehicleId, vehicleId)
|
||||
.eq(TAppPickTask::getPickStatus, WmsPickTaskStatusEnum.ARRIVE.getCode())
|
||||
);
|
||||
|
||||
for (TAppInventory inventory : inventoryList) {
|
||||
if (sumNumByGoodsMap.containsKey(inventory.getGoodsId())) {
|
||||
// 使用相同的复合键逻辑来匹配库存
|
||||
String inventoryCompositeKey = buildCompositeKeyForInventory(inventory);
|
||||
|
||||
if (sumNumByGoodsMap.containsKey(inventoryCompositeKey)) {
|
||||
// 返回盘点确认信息
|
||||
InventoryConfirmVo inventoryConfirmVo = new InventoryConfirmVo();
|
||||
inventoryConfirmVo.setInventoryId(inventory.getInventoryId());
|
||||
inventoryConfirmVo.setGoodsId(inventory.getGoodsId());
|
||||
inventoryConfirmVo.setVehicleId(inventory.getVehicleId());
|
||||
inventoryConfirmVo.setStockNum(sumNumByGoodsMap.get(inventory.getGoodsId()));
|
||||
inventoryConfirmVo.setConfirmNum(sumNumByGoodsMap.get(inventory.getGoodsId()));
|
||||
inventoryConfirmVo.setStockNum(sumNumByGoodsMap.get(inventoryCompositeKey));
|
||||
inventoryConfirmVo.setConfirmNum(sumNumByGoodsMap.get(inventoryCompositeKey));
|
||||
inventoryConfirmVo.setChildStandId(pickTasks.getFirst().getPickStand());
|
||||
inventoryConfirmVo.setSpecialStock(inventory.getSpecialStock());
|
||||
inventoryConfirmVo.setSpecialStockNo(inventory.getSpecialStockNo());
|
||||
|
|
@ -601,6 +632,21 @@ public class ConveyTaskServiceImpl implements IConveyTaskService {
|
|||
return inventoryConfirmVo;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 构建包含特殊库存属性的复合键(用于Inventory对象)
|
||||
* @param inventory 盘点对象
|
||||
* @return 复合键字符串
|
||||
*/
|
||||
private String buildCompositeKeyForInventory(TAppInventory inventory) {
|
||||
return inventory.getGoodsId() + "_" +
|
||||
(inventory.getSpecialStock() != null ? inventory.getSpecialStock() : "") + "_" +
|
||||
(inventory.getBatchNo() != null ? inventory.getBatchNo() : "") + "_" +
|
||||
(inventory.getSpecialStockNo() != null ? inventory.getSpecialStockNo() : "") + "_" +
|
||||
(inventory.getSpecialStockItemNo() != null ? inventory.getSpecialStockItemNo() : "");
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -591,6 +591,20 @@ public class StackerTaskServiceImpl implements IStackerTaskService {
|
|||
""
|
||||
);
|
||||
appTaskService.save(outTask);
|
||||
|
||||
// 添加到达即删除的拣选任务
|
||||
TAppPickTask pickTask = new TAppPickTask(
|
||||
UUIDUtils.getNewUUID(),
|
||||
"P21", // 与出库任务的目标站台一致
|
||||
vehicleId,
|
||||
WmsPickTaskStatusEnum.TEMP.getCode(),
|
||||
LocalDateTime.now(),
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
3 // 类型设置为3,表示到达即删除
|
||||
);
|
||||
appPickTaskService.save(pickTask);
|
||||
}else {
|
||||
log.info("调用EWM系统接口成功,请求参数: {}", request);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,7 +19,6 @@ import lombok.RequiredArgsConstructor;
|
|||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.*;
|
||||
|
||||
|
|
@ -42,17 +41,78 @@ public class StockDataServiceImpl implements IStockDataService {
|
|||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void updateStockInfo(StockConfirmEntity stockConfirm, String standId, String userName, String reason, String inventoryId) {
|
||||
public boolean updateStockInfo(StockConfirmEntity stockConfirm, String standId, String userName, String reason, String inventoryId) {
|
||||
if (stockConfirm == null || StringUtils.isEmpty(stockConfirm.getVehicleId()) || StringUtils.isEmpty(stockConfirm.getGoodsId())
|
||||
|| stockConfirm.getRealRemainQty() == null) {
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
// 查询对应的库存信息
|
||||
List<TAppStock> stockList = appStockService.list(new LambdaQueryWrapper<TAppStock>()
|
||||
.eq(TAppStock::getVehicleId, stockConfirm.getVehicleId())
|
||||
.eq(TAppStock::getGoodsId, stockConfirm.getGoodsId())
|
||||
// 特殊库存字段精确匹配 - 根据传入值决定匹配条件
|
||||
.and(wrapper -> {
|
||||
if (StringUtils.isEmpty(stockConfirm.getSpecialStock())) {
|
||||
// 如果传入null或空字符串,匹配数据库中为null或空字符串的记录
|
||||
wrapper.isNull(TAppStock::getSpecialStock)
|
||||
.or()
|
||||
.eq(TAppStock::getSpecialStock, "");
|
||||
} else {
|
||||
// 如果传入有值,精确匹配该值
|
||||
wrapper.eq(TAppStock::getSpecialStock, stockConfirm.getSpecialStock());
|
||||
}
|
||||
})
|
||||
.and(wrapper -> {
|
||||
if (StringUtils.isEmpty(stockConfirm.getSpecialStockNo())) {
|
||||
// 如果传入null或空字符串,匹配数据库中为null或空字符串的记录
|
||||
wrapper.isNull(TAppStock::getSpecialStockNo)
|
||||
.or()
|
||||
.eq(TAppStock::getSpecialStockNo, "");
|
||||
} else {
|
||||
// 如果传入有值,精确匹配该值
|
||||
wrapper.eq(TAppStock::getSpecialStockNo, stockConfirm.getSpecialStockNo());
|
||||
}
|
||||
})
|
||||
.and(wrapper -> {
|
||||
if (StringUtils.isEmpty(stockConfirm.getSpecialStockItemNo())) {
|
||||
// 如果传入null或空字符串,匹配数据库中为null或空字符串的记录
|
||||
wrapper.isNull(TAppStock::getSpecialStockItemNo)
|
||||
.or()
|
||||
.eq(TAppStock::getSpecialStockItemNo, "");
|
||||
} else {
|
||||
// 如果传入有值,精确匹配该值
|
||||
wrapper.eq(TAppStock::getSpecialStockItemNo, stockConfirm.getSpecialStockItemNo());
|
||||
}
|
||||
})
|
||||
.and(wrapper -> {
|
||||
if (StringUtils.isEmpty(stockConfirm.getBatchNo())) {
|
||||
// 如果传入null或空字符串,匹配数据库中为null或空字符串的记录
|
||||
wrapper.isNull(TAppStock::getBatchNo)
|
||||
.or()
|
||||
.eq(TAppStock::getBatchNo, "");
|
||||
} else {
|
||||
// 如果传入有值,精确匹配该值
|
||||
wrapper.eq(TAppStock::getBatchNo, stockConfirm.getBatchNo());
|
||||
}
|
||||
})
|
||||
.orderByDesc(TAppStock::getFirstInTime)
|
||||
);
|
||||
|
||||
// 添加查询相同载具号和料号但remainNum小于realNum的数据
|
||||
List<TAppStock> additionalStockList = appStockService.list(new LambdaQueryWrapper<TAppStock>()
|
||||
.eq(TAppStock::getVehicleId, stockConfirm.getVehicleId())
|
||||
.eq(TAppStock::getGoodsId, stockConfirm.getGoodsId())
|
||||
.apply("remain_num < real_num")
|
||||
);
|
||||
// 合并两个列表
|
||||
if (additionalStockList != null && !additionalStockList.isEmpty()) {
|
||||
stockList.addAll(additionalStockList);
|
||||
}
|
||||
|
||||
if (stockList == null || stockList.isEmpty()){
|
||||
return false;
|
||||
}
|
||||
|
||||
// 更新列表
|
||||
List<TAppStock> removeStocks = new ArrayList<>();
|
||||
List<TAppStock> updateStocks = new ArrayList<>();
|
||||
|
|
@ -138,6 +198,7 @@ public class StockDataServiceImpl implements IStockDataService {
|
|||
if (!stockUpdateList.isEmpty()) {
|
||||
appStockUpdateService.saveBatch(stockUpdateList);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -1092,8 +1092,63 @@ public class TaskControllerServiceImpl implements ITaskControllerService {
|
|||
}
|
||||
}
|
||||
|
||||
// /**
|
||||
// * 将EWM返回的数据保存到临时表中
|
||||
// * @param response EWM接口返回的数据
|
||||
// * @param vehicleNo 载具号
|
||||
// */
|
||||
// private void saveEwmDataToTempTable(EwmApiLocalResponse response, String vehicleNo) {
|
||||
// if (response == null || response.getContent() == null || response.getContent().toString().isEmpty()) {
|
||||
// log.warn("EWM返回数据为空或无任务明细,载具号: {}", vehicleNo);
|
||||
// return;
|
||||
// }
|
||||
// try {
|
||||
// boolean deletedCount = tempEwmInboundDataService.remove(new LambdaQueryWrapper<TAppTempEwmInboundData>()
|
||||
// .eq(TAppTempEwmInboundData::getContainerNo, vehicleNo)
|
||||
// .eq(TAppTempEwmInboundData::getProcessStatus, 0));
|
||||
//
|
||||
// log.info("删除旧的EWM临时数据: {} 条,载具号: {}", deletedCount, vehicleNo);
|
||||
//
|
||||
// // 转换并保存数据
|
||||
// List<TAppTempEwmInboundData> dataList = new ArrayList<>();
|
||||
// EwmApiLocalResponse.Content content = response.getContent();
|
||||
//
|
||||
// for (TaskDetailInfo taskDetail : content.getTaskDetailInfo()) {
|
||||
// TAppTempEwmInboundData data = new TAppTempEwmInboundData();
|
||||
// data.setId(UUIDUtils.getNewUUID()); // 不要使用固定值"123"
|
||||
// data.setBillNo(content.getBillNo());
|
||||
// data.setBillType(content.getBillType());
|
||||
// data.setContainerNo(content.getContainerNo() != null ? content.getContainerNo() : vehicleNo);
|
||||
// data.setTaskNo(taskDetail.getTaskNo());
|
||||
// data.setOrderNo(taskDetail.getOrderNo());
|
||||
// data.setOrderType(taskDetail.getOrderType());
|
||||
// data.setMatNo(taskDetail.getMatNo());
|
||||
// data.setMatDesc(taskDetail.getMatDesc());
|
||||
// data.setSkuQty(taskDetail.getSkuQty());
|
||||
// data.setSkuUnit(taskDetail.getSkuUnit());
|
||||
// data.setRemark(taskDetail.getRemark());
|
||||
// data.setSpecialStock(taskDetail.getSpecialStock());
|
||||
// data.setSpecialStockNo(taskDetail.getSpecialStockNo());
|
||||
// data.setSpecialStockItemNo(taskDetail.getSpecialStockItemNo());
|
||||
// data.setBatchNo(taskDetail.getBatchNo());
|
||||
// data.setProcessStatus(0); // 待处理状态
|
||||
// data.setCreateTime(LocalDateTime.now());
|
||||
// data.setUpdateTime(LocalDateTime.now());
|
||||
// dataList.add(data);
|
||||
// }
|
||||
//
|
||||
// if (!dataList.isEmpty()) {
|
||||
// // 批量插入时指定合理的批次大小
|
||||
// boolean saveResult = tempEwmInboundDataService.saveBatch(dataList);
|
||||
// log.info("保存EWM数据结果: {},载具号: {},记录数: {}", saveResult, vehicleNo, dataList.size());
|
||||
// }
|
||||
// } catch (Exception e) {
|
||||
// log.error("保存EWM数据到临时表失败,载具号: {}", vehicleNo, e);
|
||||
// throw e; // 重新抛出异常以便上层处理
|
||||
// }
|
||||
// }
|
||||
/**
|
||||
* 将EWM返回的数据保存到临时表中
|
||||
* 将EWM返回的数据保存到临时表中,并根据goodsId、specialStock、specialStockNo、specialStockItemNo、batchNo进行合并
|
||||
* @param response EWM接口返回的数据
|
||||
* @param vehicleNo 载具号
|
||||
*/
|
||||
|
|
@ -1110,11 +1165,28 @@ public class TaskControllerServiceImpl implements ITaskControllerService {
|
|||
log.info("删除旧的EWM临时数据: {} 条,载具号: {}", deletedCount, vehicleNo);
|
||||
|
||||
// 转换并保存数据
|
||||
List<TAppTempEwmInboundData> dataList = new ArrayList<>();
|
||||
Map<String, TAppTempEwmInboundData> dataMap = new HashMap<>();
|
||||
EwmApiLocalResponse.Content content = response.getContent();
|
||||
|
||||
for (TaskDetailInfo taskDetail : content.getTaskDetailInfo()) {
|
||||
// 构建唯一键用于识别相同记录
|
||||
String key = String.join("|",
|
||||
taskDetail.getMatNo() != null ? taskDetail.getMatNo() : "",
|
||||
taskDetail.getSpecialStock() != null ? taskDetail.getSpecialStock() : "",
|
||||
taskDetail.getSpecialStockNo() != null ? taskDetail.getSpecialStockNo() : "",
|
||||
taskDetail.getSpecialStockItemNo() != null ? taskDetail.getSpecialStockItemNo() : "",
|
||||
taskDetail.getBatchNo() != null ? taskDetail.getBatchNo() : "");
|
||||
|
||||
if (dataMap.containsKey(key)) {
|
||||
// 合并相同记录的数量
|
||||
TAppTempEwmInboundData existingData = dataMap.get(key);
|
||||
existingData.setSkuQty(existingData.getSkuQty().add(taskDetail.getSkuQty()));
|
||||
existingData.setUpdateTime(LocalDateTime.now());
|
||||
dataMap.put(key, existingData);
|
||||
} else {
|
||||
// 创建新记录
|
||||
TAppTempEwmInboundData data = new TAppTempEwmInboundData();
|
||||
data.setId(UUIDUtils.getNewUUID()); // 不要使用固定值"123"
|
||||
data.setId(UUIDUtils.getNewUUID());
|
||||
data.setBillNo(content.getBillNo());
|
||||
data.setBillType(content.getBillType());
|
||||
data.setContainerNo(content.getContainerNo() != null ? content.getContainerNo() : vehicleNo);
|
||||
|
|
@ -1133,8 +1205,12 @@ public class TaskControllerServiceImpl implements ITaskControllerService {
|
|||
data.setProcessStatus(0); // 待处理状态
|
||||
data.setCreateTime(LocalDateTime.now());
|
||||
data.setUpdateTime(LocalDateTime.now());
|
||||
dataList.add(data);
|
||||
dataMap.put(key, data);
|
||||
}
|
||||
}
|
||||
|
||||
// 将Map中的值转换为List
|
||||
List<TAppTempEwmInboundData> dataList = new ArrayList<>(dataMap.values());
|
||||
|
||||
if (!dataList.isEmpty()) {
|
||||
// 批量插入时指定合理的批次大小
|
||||
|
|
@ -1275,6 +1351,9 @@ public class TaskControllerServiceImpl implements ITaskControllerService {
|
|||
if (!response.isSuccess()) {
|
||||
return WcsApiResponse.error(response.getMessage(), null);
|
||||
}
|
||||
if (response.getContent().getTaskDetailInfo().size() > 1){
|
||||
return WcsApiResponse.error("该容器绑定了多个料,请检查。", null);
|
||||
}
|
||||
// 判断是否为空箱
|
||||
if (response.getContent().isEmptyContainer()) {
|
||||
if (!outsCheckList.isEmpty() || !stockList.isEmpty()){
|
||||
|
|
@ -1748,7 +1827,10 @@ public class TaskControllerServiceImpl implements ITaskControllerService {
|
|||
}
|
||||
}
|
||||
// 更新库存信息
|
||||
stockDataService.updateStockInfo(confirmTaskRequest.getStockConfirm(), confirmTaskRequest.getStandId(), confirmTaskRequest.getUserName(), "出库拣选", null);
|
||||
if (!stockDataService.updateStockInfo(confirmTaskRequest.getStockConfirm(), confirmTaskRequest.getStandId(), confirmTaskRequest.getUserName(), "出库拣选", null)){
|
||||
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||
return BaseWmsApiResponse.error("库存发生变化,更新失败,请联系管理员确认!");
|
||||
}
|
||||
if (conveyTaskService.releaseStandVehicle(thisPickTask)) {
|
||||
if (requestForCompleted.getPickingDetail() != null && !requestForCompleted.getPickingDetail().isEmpty()){
|
||||
//1. 回告EWM系统出库完成
|
||||
|
|
@ -1808,13 +1890,12 @@ public class TaskControllerServiceImpl implements ITaskControllerService {
|
|||
log.info("容器置空调用EWM系统接口成功,请求参数: {}", request);
|
||||
}
|
||||
}
|
||||
|
||||
if (appPickTaskService.exists(new LambdaQueryWrapper<TAppPickTask>()
|
||||
.eq(TAppPickTask::getVehicleId, thisPickTask.getVehicleId())
|
||||
.eq(TAppPickTask::getPickStatus, WmsPickTaskStatusEnum.ARRIVE.getCode())
|
||||
)){
|
||||
return BaseWmsApiResponse.success("继续拣选");
|
||||
}
|
||||
// if (appPickTaskService.exists(new LambdaQueryWrapper<TAppPickTask>()
|
||||
// .eq(TAppPickTask::getVehicleId, thisPickTask.getVehicleId())
|
||||
// .eq(TAppPickTask::getPickStatus, WmsPickTaskStatusEnum.ARRIVE.getCode())
|
||||
// )){
|
||||
// return BaseWmsApiResponse.success("继续拣选");
|
||||
// }
|
||||
return BaseWmsApiResponse.success("确认成功。");
|
||||
}
|
||||
|
||||
|
|
@ -2134,8 +2215,16 @@ public class TaskControllerServiceImpl implements ITaskControllerService {
|
|||
stockConfirm.setVehicleId(targetInventory.getVehicleId());
|
||||
stockConfirm.setGoodsId(targetInventory.getGoodsId());
|
||||
stockConfirm.setRealRemainQty(inventoryConfirmRequest.getConfirmNum());
|
||||
stockConfirm.setSpecialStock(inventoryConfirmRequest.getSpecialStock());
|
||||
stockConfirm.setSpecialStockNo(inventoryConfirmRequest.getSpecialStockNo());
|
||||
stockConfirm.setSpecialStockItemNo(inventoryConfirmRequest.getSpecialStockItemNo());
|
||||
stockConfirm.setBatchNo(inventoryConfirmRequest.getBatchNo());
|
||||
// 更新库存信息
|
||||
stockDataService.updateStockInfo(stockConfirm, inventoryConfirmRequest.getStandId(), inventoryConfirmRequest.getUserName(), "盘点确认", targetInventory.getInventoryId());
|
||||
boolean updateStockInfo = stockDataService.updateStockInfo(stockConfirm, inventoryConfirmRequest.getStandId(), inventoryConfirmRequest.getUserName(), "盘点确认", targetInventory.getInventoryId());
|
||||
if (!updateStockInfo) {
|
||||
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||
return BaseWmsApiResponse.error("库存发生变化,更新失败,请联系管理员确认!");
|
||||
}
|
||||
} else {
|
||||
return BaseWmsApiResponse.error("请求的盘点任务号未查到对应的盘点任务。");
|
||||
}
|
||||
|
|
@ -2330,13 +2419,21 @@ public class TaskControllerServiceImpl implements ITaskControllerService {
|
|||
requestForCompleted.setWaveNo(thisOut.getFirst().getWaveNo());
|
||||
requestForCompleted.setPickingType(thisOut.getFirst().getPickingType());
|
||||
|
||||
|
||||
int isEmpty = confirmTaskRequest.getTaskConfirm().getIsEmpty();
|
||||
LambdaQueryWrapper<TAppPickPlan> pickPlanQueryWrapper;
|
||||
if (isEmpty == 0){
|
||||
pickPlanQueryWrapper = new LambdaQueryWrapper<TAppPickPlan>()
|
||||
.eq(TAppPickPlan::getPlanId, thisOut.getFirst().getPickPlanId());
|
||||
}else{
|
||||
// 清除拣选计划
|
||||
LambdaQueryWrapper<TAppPickPlan> pickPlanQueryWrapper = new LambdaQueryWrapper<TAppPickPlan>()
|
||||
pickPlanQueryWrapper = new LambdaQueryWrapper<TAppPickPlan>()
|
||||
.eq(TAppPickPlan::getWorkIndex, confirmTaskRequest.getTaskConfirm().getTaskId());
|
||||
if (confirmTaskRequest.getStockConfirm() != null && StringUtils.isNotEmpty(confirmTaskRequest.getStockConfirm().getVehicleId())) {
|
||||
// 箱号
|
||||
pickPlanQueryWrapper.eq(TAppPickPlan::getVehicleId, confirmTaskRequest.getStockConfirm().getVehicleId());
|
||||
}
|
||||
}
|
||||
appPickPlanService.remove(pickPlanQueryWrapper);
|
||||
return "";
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user