修复bug:
1. 出库任务执行完成后出库单未删除 2. 给出库单类添加orderId字段 3. 修复根据locationId获取错误的equipmentId 4. 修复移库后载具的位置未更新 5. 修复入库任务载具号重复, 修改为saveOrUpdate 6. 删除TAppTask表记录的创建与更新相关代码
This commit is contained in:
parent
2b51c599ef
commit
86d1172952
|
|
@ -12,4 +12,7 @@ public interface ITAppWcsTaskService extends IService<TAppWcsTask> {
|
|||
|
||||
public Boolean existsTaskWithLocation(String Location);
|
||||
|
||||
public Integer getEquipmentByLocation(String Location);
|
||||
|
||||
public Integer getDepthByLocation(String Location);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,4 +34,19 @@ public class TAppWcsTaskServiceImpl extends ServiceImpl<AppWcsTaskMapper, TAppWc
|
|||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Integer getEquipmentByLocation(String locationId) {
|
||||
String[] str_lst = locationId.split("-");
|
||||
int depth = Integer.parseInt(str_lst[str_lst.length - 1]);
|
||||
int row = Integer.parseInt(str_lst[0].replace("A", ""));
|
||||
return (int) Math.floor((double) (row + 1) / 2);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Integer getDepthByLocation(String locationId) {
|
||||
String[] str_lst = locationId.split("-");
|
||||
int depth = Integer.parseInt(str_lst[str_lst.length - 1]);
|
||||
return depth;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -42,6 +42,11 @@ public class TAppWcsTask {
|
|||
*/
|
||||
@TableField(value = "vehicle_id")
|
||||
private String vehicleId;
|
||||
/**
|
||||
* 订单号
|
||||
*/
|
||||
@TableField(value = "order_id")
|
||||
private String orderId;
|
||||
/**
|
||||
* 起点
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -67,6 +67,8 @@ public class StackerTaskServiceImpl implements IStackerTaskService {
|
|||
private final ITAppEquipmentService appEquipmentService;
|
||||
|
||||
private final ITAppOrderInService appOrderInService;
|
||||
|
||||
private final ITAppOrderOutService appOrderOutService;
|
||||
/**
|
||||
* 业务通用
|
||||
*/
|
||||
|
|
@ -423,7 +425,7 @@ public class StackerTaskServiceImpl implements IStackerTaskService {
|
|||
vehicle.setVehicleType("1");
|
||||
vehicle.setLocationId(location);
|
||||
vehicle.setLastInTime(LocalDateTime.now());
|
||||
appVehicleService.save(vehicle);
|
||||
appVehicleService.saveOrUpdate(vehicle);
|
||||
// 保存库存信息
|
||||
newStockList = new ArrayList<TAppStock>(stockMap.values());
|
||||
if (!stockMap.isEmpty()) {
|
||||
|
|
@ -679,6 +681,45 @@ public class StackerTaskServiceImpl implements IStackerTaskService {
|
|||
.eq(TAppTask::getVehicleId, vehicleId));
|
||||
continue;
|
||||
}
|
||||
// 当前载具的任务列表
|
||||
List<TAppWcsTask> thisVehicleOutTasks = vehicleIdToTaskMap.get(vehicleId);
|
||||
for (TAppWcsTask outTask : thisVehicleOutTasks) {
|
||||
String orderId = outTask.getOrderId();
|
||||
if (StringUtils.isEmpty(orderId)) {
|
||||
continue;
|
||||
}
|
||||
// 查询订单信息
|
||||
TAppOrderOut order = appOrderOutService.getOne(
|
||||
new LambdaQueryWrapper<TAppOrderOut>()
|
||||
.eq(TAppOrderOut::getOrderId, orderId)
|
||||
);
|
||||
if (order == null) {
|
||||
log.warn("订单{}不存在,无法更新数量", orderId);
|
||||
continue;
|
||||
}
|
||||
// 获取订单的商品属性
|
||||
String goodsId = order.getGoodsId();
|
||||
String batch = order.getBatch();
|
||||
int specification = order.getSpecification();
|
||||
|
||||
// 筛选匹配的库存并计算总数量
|
||||
int totalQty = appStockService.list(new LambdaQueryWrapper<TAppStock>().eq(TAppStock::getVehicleId, vehicleId)).stream()
|
||||
.filter(stock ->
|
||||
goodsId.equals(stock.getGoodsId()) && batch.equals(stock.getBatch()) && specification == stock.getSled())
|
||||
.mapToInt(TAppStock::getTotalNum)
|
||||
.sum();
|
||||
|
||||
if (totalQty > 0) {
|
||||
int newQuantity = order.getQuantity() - totalQty;
|
||||
// 更新订单数量
|
||||
appOrderOutService.update(
|
||||
new LambdaUpdateWrapper<TAppOrderOut>()
|
||||
.eq(TAppOrderOut::getOrderId, orderId)
|
||||
.set(TAppOrderOut::getQuantity, newQuantity)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// 释放当前库位
|
||||
appLocationService.update(new LambdaUpdateWrapper<TAppLocation>()
|
||||
.set(TAppLocation::getIsOccupy, WmsLocationOccupyStatusEnums.EMPTY.getCode())
|
||||
|
|
@ -693,8 +734,18 @@ public class StackerTaskServiceImpl implements IStackerTaskService {
|
|||
// 更新当前载具对应的所有库存的状态为已出库
|
||||
appStockService.remove(new LambdaUpdateWrapper<TAppStock>()
|
||||
.eq(TAppStock::getVehicleId, vehicleId));
|
||||
// 当前载具的任务列表
|
||||
List<TAppWcsTask> thisVehicleOutTasks = vehicleIdToTaskMap.get(vehicleId);
|
||||
// List<String> orderIds = thisVehicleOutTasks.stream()
|
||||
// .map(TAppWcsTask::getOrderId)
|
||||
// .filter(Objects::nonNull)
|
||||
// .distinct()
|
||||
// .collect(Collectors.toList());
|
||||
//
|
||||
// List<TAppOrderOut> thisVehicleOutOrders = orderIds.isEmpty() ?
|
||||
// Collections.emptyList() :
|
||||
// appOrderOutService.list(
|
||||
// new LambdaQueryWrapper<TAppOrderOut>()
|
||||
// .in(TAppOrderOut::getOrderId, orderIds)
|
||||
// );
|
||||
if (!thisVehicleOutTasks.isEmpty()) {
|
||||
// 存储出库记录
|
||||
List<TAppWcsTaskBak> stockOutRecordList = thisVehicleOutTasks.stream()
|
||||
|
|
@ -719,5 +770,6 @@ public class StackerTaskServiceImpl implements IStackerTaskService {
|
|||
.in(TAppWcsTask::getWcsTaskId, thisVehicleOutTasks.stream().map(TAppWcsTask::getWcsTaskId).toList()));
|
||||
}
|
||||
}
|
||||
appOrderOutService.remove(new LambdaUpdateWrapper<TAppOrderOut>().le(TAppOrderOut::getQuantity, 0));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -101,26 +101,26 @@ public class OutsExecutor implements Job {
|
|||
}
|
||||
}
|
||||
|
||||
List<TAppTask> appTaskList = new ArrayList<>();
|
||||
for (TAppStock stockItem : outStockList) {
|
||||
TAppTask appTask = new TAppTask();
|
||||
appTask.setTaskId(UUIDUtils.getNewUUID());
|
||||
appTask.setTaskType(WmsTaskTypeEnums.OUT.getCode());
|
||||
appTask.setTaskStatus(WmsStackerTaskStatusEnums.WAIT.getCode());
|
||||
appTask.setTaskPriority(1);
|
||||
appTask.setVehicleId(stockItem.getVehicleId());
|
||||
appTask.setOrigin(stockItem.getLocationId());
|
||||
appTask.setDestination(stockItem.getBarCode());
|
||||
appTask.setGoodsId(stockItem.getGoodsId());
|
||||
appTask.setBatch(stockItem.getBatch());
|
||||
appTask.setCreateTime(LocalDateTime.now());
|
||||
appTask.setOpNum(stockItem.getRealNum());
|
||||
appTask.setStockNum(0);
|
||||
appTask.setOpUser("wms_order_out");
|
||||
appTask.setBatch(orderOut.getBatch());
|
||||
appTask.setCallStand(stockItem.getBarCode());
|
||||
appTaskList.add(appTask);
|
||||
}
|
||||
// List<TAppTask> appTaskList = new ArrayList<>();
|
||||
// for (TAppStock stockItem : outStockList) {
|
||||
// TAppTask appTask = new TAppTask();
|
||||
// appTask.setTaskId(UUIDUtils.getNewUUID());
|
||||
// appTask.setTaskType(WmsTaskTypeEnums.OUT.getCode());
|
||||
// appTask.setTaskStatus(WmsStackerTaskStatusEnums.WAIT.getCode());
|
||||
// appTask.setTaskPriority(1);
|
||||
// appTask.setVehicleId(stockItem.getVehicleId());
|
||||
// appTask.setOrigin(stockItem.getLocationId());
|
||||
// appTask.setDestination(stockItem.getBarCode());
|
||||
// appTask.setGoodsId(stockItem.getGoodsId());
|
||||
// appTask.setBatch(stockItem.getBatch());
|
||||
// appTask.setCreateTime(LocalDateTime.now());
|
||||
// appTask.setOpNum(stockItem.getRealNum());
|
||||
// appTask.setStockNum(0);
|
||||
// appTask.setOpUser("wms_order_out");
|
||||
// appTask.setBatch(orderOut.getBatch());
|
||||
// appTask.setCallStand(stockItem.getBarCode());
|
||||
// appTaskList.add(appTask);
|
||||
// }
|
||||
List<TAppWcsTask> wcsTasks = new ArrayList<>();
|
||||
for (TAppStock stockItem : outStockList) {
|
||||
TAppWcsTask wcsTask = new TAppWcsTask();
|
||||
|
|
@ -129,6 +129,7 @@ public class OutsExecutor implements Job {
|
|||
wcsTask.setWcsTaskStatus(WcsStackerTaskStatusEnums.INIT.getCode());
|
||||
wcsTask.setTaskPriority(1);
|
||||
wcsTask.setVehicleId(stockItem.getVehicleId());
|
||||
wcsTask.setOrderId(orderOut.getOrderId());
|
||||
wcsTask.setCreateTime(LocalDateTime.now());
|
||||
wcsTask.setOrigin(stockItem.getLocationId());
|
||||
wcsTask.setDestination(stockItem.getBarCode());
|
||||
|
|
@ -137,7 +138,7 @@ public class OutsExecutor implements Job {
|
|||
|
||||
orderOut.setOrderStatus(OrderStatusEnum.RUNNING.getCode());
|
||||
orderOutService.updateById(orderOut);
|
||||
taskService.saveBatch(appTaskList);
|
||||
// taskService.saveBatch(appTaskList);
|
||||
wcsTaskService.saveBatch(wcsTasks);
|
||||
stockService.updateBatchById(outStockList);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,10 +8,8 @@ import com.wms_main.constant.enums.wcs.WcsStackerTaskTypeEnums;
|
|||
import com.wms_main.constant.enums.wms.OrderStatusEnum;
|
||||
import com.wms_main.constant.enums.wms.WmsStackerTaskStatusEnums;
|
||||
import com.wms_main.constant.enums.wms.WmsStockStatusEnums;
|
||||
import com.wms_main.dao.ITAppOrderOutService;
|
||||
import com.wms_main.dao.ITAppStockService;
|
||||
import com.wms_main.dao.ITAppTaskService;
|
||||
import com.wms_main.dao.ITAppWcsTaskService;
|
||||
import com.wms_main.constant.enums.wms.WmsVehicleStatusEnums;
|
||||
import com.wms_main.dao.*;
|
||||
import com.wms_main.model.bo.wcs.WcsStackerTask;
|
||||
import com.wms_main.model.dto.request.wcs.WcsStackerTaskRequest;
|
||||
import com.wms_main.model.dto.response.wcs.WcsApiResponse;
|
||||
|
|
@ -54,6 +52,8 @@ public class WcsStackerTaskSender implements Job {
|
|||
*/
|
||||
private final IStackerTaskService stackerTaskService;
|
||||
|
||||
private final ITAppVehicleService appVehicleService;
|
||||
|
||||
/**
|
||||
* 运行定时任务
|
||||
* 向Wcs发送堆垛机任务
|
||||
|
|
@ -69,9 +69,8 @@ public class WcsStackerTaskSender implements Job {
|
|||
for (TAppWcsTask wcsTask : appWcsTasks) {
|
||||
String locationId = wcsTask.getOrigin();
|
||||
String[] str_lst = locationId.split("-");
|
||||
int depth = Integer.parseInt(str_lst[str_lst.length - 1]);
|
||||
int row = Integer.parseInt(str_lst[0].replace("A", ""));
|
||||
int equipmentId = Math.round((float) (row + 1) / 2);
|
||||
Integer equipmentId = appWcsTaskService.getEquipmentByLocation(locationId);
|
||||
Integer depth = appWcsTaskService.getDepthByLocation(locationId);
|
||||
// 深度1, 直接出库
|
||||
if (depth == 1) {
|
||||
WcsStackerTaskRequest request = new WcsStackerTaskRequest();
|
||||
|
|
@ -148,6 +147,11 @@ public class WcsStackerTaskSender implements Job {
|
|||
.eq(TAppStock::getLocationId, locationId)
|
||||
.eq(TAppStock::getStockStatus, WmsStockStatusEnums.OK.getCode())
|
||||
.set(TAppStock::getLocationId, preLocation.getLocationId()));
|
||||
appVehicleService.update(
|
||||
new LambdaUpdateWrapper<TAppVehicle>()
|
||||
.eq(TAppVehicle::getLocationId, locationId)
|
||||
.eq(TAppVehicle::getVehicleStatus, WmsVehicleStatusEnums.ON.getCode())
|
||||
.set(TAppVehicle::getLocationId, preLocation.getLocationId()));
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("堆垛机任务发送失败,任务号:{},载具号:{},起点:{},终点:{}。", request.getTaskId(), request.getVehicleNo(), request.getOrigin(), request.getDestination());
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user