Browse Source

自动分拣

master
常熟吴彦祖 1 year ago
parent
commit
6b3529bba4
  1. 78
      src/main/java/com/gaotao/modules/api/service/impl/AgvMessageServiceImpl.java
  2. 3
      src/main/java/com/gaotao/modules/automatedWarehouse/service/impl/AgvTaskServiceImpl.java
  3. 41
      src/main/java/com/gaotao/modules/automatedWarehouse/service/impl/WcsTaskServiceImpl.java
  4. 6
      src/main/java/com/gaotao/modules/automatedWarehouse/task/WcsTaskScheduler.java

78
src/main/java/com/gaotao/modules/api/service/impl/AgvMessageServiceImpl.java

@ -163,45 +163,45 @@ import java.util.Map;
/**
* 执行移库操作
*/
private void executeWarehouseTransfer(WmsTransportTask transportTask) {
try {
// 获取起始站点和目标站点信息
Map<String, Object> fromStationInfo = getStationInfo(transportTask.getFromLocation());
Map<String, Object> toStationInfo = getStationInfo(transportTask.getToLocation());
// 检查站点的仓库和库位是否不同
String fromWarehouseId = (String) fromStationInfo.get("warehouseCode");
String fromLocationId = (String) fromStationInfo.get("locationCode");
String toWarehouseId = (String) toStationInfo.get("warehouseCode");
String toLocationId = (String) toStationInfo.get("locationCode");
if (!fromWarehouseId.equals(toWarehouseId) || !fromLocationId.equals(toLocationId)) {
log.info("站点仓库或库位不同,执行移库操作:从 {}-{} 到 {}-{}",
fromWarehouseId, fromLocationId, toWarehouseId, toLocationId);
// 构建移库请求
WareHouseTransferRequest transferRequest = new WareHouseTransferRequest();
transferRequest.setSite(transportTask.getSite());
transferRequest.setTransType("移库");
transferRequest.setPalletId(transportTask.getPalletId());
transferRequest.setToWarehouseId(toWarehouseId);
transferRequest.setToLocationId(toLocationId);
transferRequest.setBusinessType("AGV移库");
transferRequest.setRemark("AGV任务完成自动移库");
transferRequest.setToStation(transportTask.getToLocation());
// 调用移库方法
wmsMessageService.doWareHouseForPallet(transferRequest);
log.info("移库操作执行成功");
} else {
log.info("站点仓库和库位相同,无需执行移库操作");
}
} catch (Exception e) {
log.error("移库操作执行失败:{}", e.getMessage(), e);
throw new RuntimeException("移库操作失败:" + e.getMessage());
}
}
// private void executeWarehouseTransfer(WmsTransportTask transportTask) {
// try {
// // 获取起始站点和目标站点信息
// Map<String, Object> fromStationInfo = getStationInfo(transportTask.getFromLocation());
// Map<String, Object> toStationInfo = getStationInfo(transportTask.getToLocation());
//
// // 检查站点的仓库和库位是否不同
// String fromWarehouseId = (String) fromStationInfo.get("warehouseCode");
// String fromLocationId = (String) fromStationInfo.get("locationCode");
// String toWarehouseId = (String) toStationInfo.get("warehouseCode");
// String toLocationId = (String) toStationInfo.get("locationCode");
//
// if (!fromWarehouseId.equals(toWarehouseId) || !fromLocationId.equals(toLocationId)) {
// log.info("站点仓库或库位不同,执行移库操作:从 {}-{} 到 {}-{}",
// fromWarehouseId, fromLocationId, toWarehouseId, toLocationId);
//
// // 构建移库请求
// WareHouseTransferRequest transferRequest = new WareHouseTransferRequest();
// transferRequest.setSite(transportTask.getSite());
// transferRequest.setTransType("移库");
// transferRequest.setPalletId(transportTask.getPalletId());
// transferRequest.setToWarehouseId(toWarehouseId);
// transferRequest.setToLocationId(toLocationId);
// transferRequest.setBusinessType("AGV移库");
// transferRequest.setRemark("AGV任务完成自动移库");
// transferRequest.setToStation(transportTask.getToLocation());
// // 调用移库方法
// wmsMessageService.doWareHouseForPallet(transferRequest);
// log.info("移库操作执行成功");
// } else {
// log.info("站点仓库和库位相同,无需执行移库操作");
// }
//
// } catch (Exception e) {
// log.error("移库操作执行失败:{}", e.getMessage(), e);
// throw new RuntimeException("移库操作失败:" + e.getMessage());
// }
// }
//
/**
* 仅更新栈板位置(复用现有Pallet service逻辑)
*/

3
src/main/java/com/gaotao/modules/automatedWarehouse/service/impl/AgvTaskServiceImpl.java

@ -362,8 +362,7 @@ public class AgvTaskServiceImpl implements AgvTaskService {
transferRequest.setBusinessType("AGV移库");
transferRequest.setRemark("AGV任务完成自动移库");
transferRequest.setToStation(transportTask.getToLocation());
// 调用移库方法
transferRequest.setUsername("sys_wms"); // 调用移库方法
wmsMessageService.doWareHouseForPallet(transferRequest);
log.info("移库操作执行成功");
} else {

41
src/main/java/com/gaotao/modules/automatedWarehouse/service/impl/WcsTaskServiceImpl.java

@ -72,14 +72,14 @@ public class WcsTaskServiceImpl implements WcsTaskService {
}
// 获取用户名 - rqrq
List<WmsOrderTask> orderTasks = wcsIntegrationMapper.findOrderTasksByTaskNo(
callbackTask.getSite(),
callbackTask.getTaskNo()
);
// List<WmsOrderTask> orderTasks = wcsIntegrationMapper.findOrderTasksByTaskNo(
// callbackTask.getSite(),
// callbackTask.getTaskNo()
// );
String userName = "sys_wms";
if (orderTasks != null && !orderTasks.isEmpty()) {
userName = orderTasks.get(0).getCreatedBy();
}
// if (orderTasks != null && !orderTasks.isEmpty()) {
// userName = orderTasks.get(0).getCreatedBy();
// }
// 1. 使用乐观锁更新状态为处理中(防止重复处理)- rqrq
int updateCount = wcsIntegrationMapper.updateWcsCallbackTaskStatusWithLock(
@ -104,7 +104,7 @@ public class WcsTaskServiceImpl implements WcsTaskService {
if ("入库".equals(callbackTask.getTransTypeDesc()) || "出库".equals(callbackTask.getTransTypeDesc())) {
// 入库和出库需要执行移库操作 - rqrq
WareHouseTransferRequest request = buildWareHouseTransferRequest(callbackTask);
request.setUsername(userName);
request.setUsername("sys_wms");
result = wmsMessageService.doWareHouseForPallet(request);
// 更新托盘状态 - rqrq
@ -319,7 +319,6 @@ public class WcsTaskServiceImpl implements WcsTaskService {
*/
private String processPickupNotification(WcsCallbackTask callbackTask) {
System.out.println("开始处理取货通知 - rqrq,palletId=" + callbackTask.getPalletId() + ", toStation=" + callbackTask.getToStation());
try {
// 2. 更新托盘calling_flag为N - rqrq
wcsIntegrationMapper.updatePalletCallingFlag(callbackTask.getSite(), callbackTask.getPalletId(), "N", "SYS_WMS");
@ -329,22 +328,34 @@ public class WcsTaskServiceImpl implements WcsTaskService {
// 4. 更新托盘位置 - rqrq
wcsIntegrationMapper.updatePalletLocationCode(callbackTask.getSite(), callbackTask.getPalletId(), callbackTask.getToStation());
// 1. 更新订单任务状态 - rqrq
if (callbackTask.getTaskNo() != null && callbackTask.getItemNo() != null) {
WmsOrderTask orderTask = wcsIntegrationMapper.findOrderTasksByTaskNoItem(
callbackTask.getSite(), callbackTask.getTaskNo(), callbackTask.getItemNo());
if (orderTask != null) {
if (orderTask == null){
return "取货通知处理成功";
}
if ( !"领料申请单".equals(orderTask.getSourceType()) && !"发货通知单".equals(orderTask.getSourceType())) {
wcsIntegrationMapper.updateOrderTaskStatusAndWmsStatus(
orderTask.getId(), "待取货", "待取货");
orderTask.getId(), "已完成", "已完成");
wcsIntegrationMapper.updateOrderTaskDetailStatusByTaskNoPalletId(
callbackTask.getSite(), callbackTask.getTaskNo(), "待取货", "待取货", callbackTask.getPalletId());
System.out.println("更新订单任务状态为待取货 - rqrq,taskNo=" + callbackTask.getTaskNo());
callbackTask.getSite(), callbackTask.getTaskNo(), "已完成", "已完成", callbackTask.getPalletId());
System.out.println("更新订单任务状态为已完成 - rqrq,taskNo=" + callbackTask.getTaskNo());
return "取货通知处理成功";
}
wcsIntegrationMapper.updateOrderTaskStatusAndWmsStatus(
orderTask.getId(), "待取货", "待取货");
wcsIntegrationMapper.updateOrderTaskDetailStatusByTaskNoPalletId(
callbackTask.getSite(), callbackTask.getTaskNo(), "待取货", "待取货", callbackTask.getPalletId());
System.out.println("更新订单任务状态为待取货 - rqrq,taskNo=" + callbackTask.getTaskNo());
// 查询下如果这个栈板没有预约任务取走,且栈板上有被预留的物料,那么直接去缓存区 - rqrq
WmsTransportTask checkIfHasNeedTask = wcsIntegrationMapper.checkIfHasNeedTask(
callbackTask.getSite(), callbackTask.getPalletId());
if (checkIfHasNeedTask == null) {
System.out.println("栈板{}没有预约任务,检查是否有预留物料 - rqrq"+callbackTask.getPalletId());

6
src/main/java/com/gaotao/modules/automatedWarehouse/task/WcsTaskScheduler.java

@ -52,9 +52,9 @@ public class WcsTaskScheduler {
@Scheduled(cron = "4/10 * * * * ?")
public void scheduleWcsTaskProcessing() {
// 检查定时任务开关
if (!enabled) {
return;
}
// if (!enabled) {
// return;
// }
log.info("=== 开始处理WCS入库/出库相关业务 ===");

Loading…
Cancel
Save