修复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 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;
|
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")
|
@TableField(value = "vehicle_id")
|
||||||
private String vehicleId;
|
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 ITAppEquipmentService appEquipmentService;
|
||||||
|
|
||||||
private final ITAppOrderInService appOrderInService;
|
private final ITAppOrderInService appOrderInService;
|
||||||
|
|
||||||
|
private final ITAppOrderOutService appOrderOutService;
|
||||||
/**
|
/**
|
||||||
* 业务通用
|
* 业务通用
|
||||||
*/
|
*/
|
||||||
|
|
@ -423,7 +425,7 @@ public class StackerTaskServiceImpl implements IStackerTaskService {
|
||||||
vehicle.setVehicleType("1");
|
vehicle.setVehicleType("1");
|
||||||
vehicle.setLocationId(location);
|
vehicle.setLocationId(location);
|
||||||
vehicle.setLastInTime(LocalDateTime.now());
|
vehicle.setLastInTime(LocalDateTime.now());
|
||||||
appVehicleService.save(vehicle);
|
appVehicleService.saveOrUpdate(vehicle);
|
||||||
// 保存库存信息
|
// 保存库存信息
|
||||||
newStockList = new ArrayList<TAppStock>(stockMap.values());
|
newStockList = new ArrayList<TAppStock>(stockMap.values());
|
||||||
if (!stockMap.isEmpty()) {
|
if (!stockMap.isEmpty()) {
|
||||||
|
|
@ -679,6 +681,45 @@ public class StackerTaskServiceImpl implements IStackerTaskService {
|
||||||
.eq(TAppTask::getVehicleId, vehicleId));
|
.eq(TAppTask::getVehicleId, vehicleId));
|
||||||
continue;
|
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>()
|
appLocationService.update(new LambdaUpdateWrapper<TAppLocation>()
|
||||||
.set(TAppLocation::getIsOccupy, WmsLocationOccupyStatusEnums.EMPTY.getCode())
|
.set(TAppLocation::getIsOccupy, WmsLocationOccupyStatusEnums.EMPTY.getCode())
|
||||||
|
|
@ -693,8 +734,18 @@ public class StackerTaskServiceImpl implements IStackerTaskService {
|
||||||
// 更新当前载具对应的所有库存的状态为已出库
|
// 更新当前载具对应的所有库存的状态为已出库
|
||||||
appStockService.remove(new LambdaUpdateWrapper<TAppStock>()
|
appStockService.remove(new LambdaUpdateWrapper<TAppStock>()
|
||||||
.eq(TAppStock::getVehicleId, vehicleId));
|
.eq(TAppStock::getVehicleId, vehicleId));
|
||||||
// 当前载具的任务列表
|
// List<String> orderIds = thisVehicleOutTasks.stream()
|
||||||
List<TAppWcsTask> thisVehicleOutTasks = vehicleIdToTaskMap.get(vehicleId);
|
// .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()) {
|
if (!thisVehicleOutTasks.isEmpty()) {
|
||||||
// 存储出库记录
|
// 存储出库记录
|
||||||
List<TAppWcsTaskBak> stockOutRecordList = thisVehicleOutTasks.stream()
|
List<TAppWcsTaskBak> stockOutRecordList = thisVehicleOutTasks.stream()
|
||||||
|
|
@ -719,5 +770,6 @@ public class StackerTaskServiceImpl implements IStackerTaskService {
|
||||||
.in(TAppWcsTask::getWcsTaskId, thisVehicleOutTasks.stream().map(TAppWcsTask::getWcsTaskId).toList()));
|
.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<>();
|
// List<TAppTask> appTaskList = new ArrayList<>();
|
||||||
for (TAppStock stockItem : outStockList) {
|
// for (TAppStock stockItem : outStockList) {
|
||||||
TAppTask appTask = new TAppTask();
|
// TAppTask appTask = new TAppTask();
|
||||||
appTask.setTaskId(UUIDUtils.getNewUUID());
|
// appTask.setTaskId(UUIDUtils.getNewUUID());
|
||||||
appTask.setTaskType(WmsTaskTypeEnums.OUT.getCode());
|
// appTask.setTaskType(WmsTaskTypeEnums.OUT.getCode());
|
||||||
appTask.setTaskStatus(WmsStackerTaskStatusEnums.WAIT.getCode());
|
// appTask.setTaskStatus(WmsStackerTaskStatusEnums.WAIT.getCode());
|
||||||
appTask.setTaskPriority(1);
|
// appTask.setTaskPriority(1);
|
||||||
appTask.setVehicleId(stockItem.getVehicleId());
|
// appTask.setVehicleId(stockItem.getVehicleId());
|
||||||
appTask.setOrigin(stockItem.getLocationId());
|
// appTask.setOrigin(stockItem.getLocationId());
|
||||||
appTask.setDestination(stockItem.getBarCode());
|
// appTask.setDestination(stockItem.getBarCode());
|
||||||
appTask.setGoodsId(stockItem.getGoodsId());
|
// appTask.setGoodsId(stockItem.getGoodsId());
|
||||||
appTask.setBatch(stockItem.getBatch());
|
// appTask.setBatch(stockItem.getBatch());
|
||||||
appTask.setCreateTime(LocalDateTime.now());
|
// appTask.setCreateTime(LocalDateTime.now());
|
||||||
appTask.setOpNum(stockItem.getRealNum());
|
// appTask.setOpNum(stockItem.getRealNum());
|
||||||
appTask.setStockNum(0);
|
// appTask.setStockNum(0);
|
||||||
appTask.setOpUser("wms_order_out");
|
// appTask.setOpUser("wms_order_out");
|
||||||
appTask.setBatch(orderOut.getBatch());
|
// appTask.setBatch(orderOut.getBatch());
|
||||||
appTask.setCallStand(stockItem.getBarCode());
|
// appTask.setCallStand(stockItem.getBarCode());
|
||||||
appTaskList.add(appTask);
|
// appTaskList.add(appTask);
|
||||||
}
|
// }
|
||||||
List<TAppWcsTask> wcsTasks = new ArrayList<>();
|
List<TAppWcsTask> wcsTasks = new ArrayList<>();
|
||||||
for (TAppStock stockItem : outStockList) {
|
for (TAppStock stockItem : outStockList) {
|
||||||
TAppWcsTask wcsTask = new TAppWcsTask();
|
TAppWcsTask wcsTask = new TAppWcsTask();
|
||||||
|
|
@ -129,6 +129,7 @@ public class OutsExecutor implements Job {
|
||||||
wcsTask.setWcsTaskStatus(WcsStackerTaskStatusEnums.INIT.getCode());
|
wcsTask.setWcsTaskStatus(WcsStackerTaskStatusEnums.INIT.getCode());
|
||||||
wcsTask.setTaskPriority(1);
|
wcsTask.setTaskPriority(1);
|
||||||
wcsTask.setVehicleId(stockItem.getVehicleId());
|
wcsTask.setVehicleId(stockItem.getVehicleId());
|
||||||
|
wcsTask.setOrderId(orderOut.getOrderId());
|
||||||
wcsTask.setCreateTime(LocalDateTime.now());
|
wcsTask.setCreateTime(LocalDateTime.now());
|
||||||
wcsTask.setOrigin(stockItem.getLocationId());
|
wcsTask.setOrigin(stockItem.getLocationId());
|
||||||
wcsTask.setDestination(stockItem.getBarCode());
|
wcsTask.setDestination(stockItem.getBarCode());
|
||||||
|
|
@ -137,7 +138,7 @@ public class OutsExecutor implements Job {
|
||||||
|
|
||||||
orderOut.setOrderStatus(OrderStatusEnum.RUNNING.getCode());
|
orderOut.setOrderStatus(OrderStatusEnum.RUNNING.getCode());
|
||||||
orderOutService.updateById(orderOut);
|
orderOutService.updateById(orderOut);
|
||||||
taskService.saveBatch(appTaskList);
|
// taskService.saveBatch(appTaskList);
|
||||||
wcsTaskService.saveBatch(wcsTasks);
|
wcsTaskService.saveBatch(wcsTasks);
|
||||||
stockService.updateBatchById(outStockList);
|
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.OrderStatusEnum;
|
||||||
import com.wms_main.constant.enums.wms.WmsStackerTaskStatusEnums;
|
import com.wms_main.constant.enums.wms.WmsStackerTaskStatusEnums;
|
||||||
import com.wms_main.constant.enums.wms.WmsStockStatusEnums;
|
import com.wms_main.constant.enums.wms.WmsStockStatusEnums;
|
||||||
import com.wms_main.dao.ITAppOrderOutService;
|
import com.wms_main.constant.enums.wms.WmsVehicleStatusEnums;
|
||||||
import com.wms_main.dao.ITAppStockService;
|
import com.wms_main.dao.*;
|
||||||
import com.wms_main.dao.ITAppTaskService;
|
|
||||||
import com.wms_main.dao.ITAppWcsTaskService;
|
|
||||||
import com.wms_main.model.bo.wcs.WcsStackerTask;
|
import com.wms_main.model.bo.wcs.WcsStackerTask;
|
||||||
import com.wms_main.model.dto.request.wcs.WcsStackerTaskRequest;
|
import com.wms_main.model.dto.request.wcs.WcsStackerTaskRequest;
|
||||||
import com.wms_main.model.dto.response.wcs.WcsApiResponse;
|
import com.wms_main.model.dto.response.wcs.WcsApiResponse;
|
||||||
|
|
@ -54,6 +52,8 @@ public class WcsStackerTaskSender implements Job {
|
||||||
*/
|
*/
|
||||||
private final IStackerTaskService stackerTaskService;
|
private final IStackerTaskService stackerTaskService;
|
||||||
|
|
||||||
|
private final ITAppVehicleService appVehicleService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 运行定时任务
|
* 运行定时任务
|
||||||
* 向Wcs发送堆垛机任务
|
* 向Wcs发送堆垛机任务
|
||||||
|
|
@ -69,9 +69,8 @@ public class WcsStackerTaskSender implements Job {
|
||||||
for (TAppWcsTask wcsTask : appWcsTasks) {
|
for (TAppWcsTask wcsTask : appWcsTasks) {
|
||||||
String locationId = wcsTask.getOrigin();
|
String locationId = wcsTask.getOrigin();
|
||||||
String[] str_lst = locationId.split("-");
|
String[] str_lst = locationId.split("-");
|
||||||
int depth = Integer.parseInt(str_lst[str_lst.length - 1]);
|
Integer equipmentId = appWcsTaskService.getEquipmentByLocation(locationId);
|
||||||
int row = Integer.parseInt(str_lst[0].replace("A", ""));
|
Integer depth = appWcsTaskService.getDepthByLocation(locationId);
|
||||||
int equipmentId = Math.round((float) (row + 1) / 2);
|
|
||||||
// 深度1, 直接出库
|
// 深度1, 直接出库
|
||||||
if (depth == 1) {
|
if (depth == 1) {
|
||||||
WcsStackerTaskRequest request = new WcsStackerTaskRequest();
|
WcsStackerTaskRequest request = new WcsStackerTaskRequest();
|
||||||
|
|
@ -148,6 +147,11 @@ public class WcsStackerTaskSender implements Job {
|
||||||
.eq(TAppStock::getLocationId, locationId)
|
.eq(TAppStock::getLocationId, locationId)
|
||||||
.eq(TAppStock::getStockStatus, WmsStockStatusEnums.OK.getCode())
|
.eq(TAppStock::getStockStatus, WmsStockStatusEnums.OK.getCode())
|
||||||
.set(TAppStock::getLocationId, preLocation.getLocationId()));
|
.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) {
|
} catch (Exception e) {
|
||||||
log.error("堆垛机任务发送失败,任务号:{},载具号:{},起点:{},终点:{}。", request.getTaskId(), request.getVehicleNo(), request.getOrigin(), request.getDestination());
|
log.error("堆垛机任务发送失败,任务号:{},载具号:{},起点:{},终点:{}。", request.getTaskId(), request.getVehicleNo(), request.getOrigin(), request.getDestination());
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user