From 5500e16ba38f735cd46fba77f48b0510d772497e Mon Sep 17 00:00:00 2001 From: icewint Date: Thu, 18 Jul 2024 13:26:56 +0800 Subject: [PATCH] =?UTF-8?q?[important]=E5=9F=BA=E6=9C=AC=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=E7=89=88=E6=9C=AC=EF=BC=8C=E5=B7=B2=E5=AE=8C=E6=88=90?= =?UTF-8?q?=E5=92=8C=E5=85=B6=E4=BB=96=E7=B3=BB=E7=BB=9F=E4=BA=A4=E4=BA=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 5 - .../java/com/wms/bussiness/JobComponent.java | 24 +- .../java/com/wms/bussiness/TaskOperation.java | 455 ++++++++++++------ .../com/wms/constants/enums/UrlEnums.java | 11 +- .../others/ContainerController.java | 14 +- .../wms/controller/others/WcsController.java | 203 +------- .../wms/entity/app/mes/OutNoticeRequest.java | 11 +- .../app/mes/SendMesGoodsInventoryRequest.java | 26 + .../app/mes/SendMesGoodsInventoryRow.java | 19 + .../app/mes/SendMesGoodsMoveRequest.java | 29 ++ .../app/mes/SendMesPutOutGoodsRequest.java | 27 ++ .../entity/app/mes/SendMesPutOutGoodsRow.java | 22 + .../parent/ContainerImplement.java | 13 +- .../parent/MesServiceImplement.java | 17 +- src/main/java/com/wms/utils/WmsUtils.java | 4 + src/main/resources/application.yml | 4 +- 16 files changed, 520 insertions(+), 364 deletions(-) create mode 100644 src/main/java/com/wms/entity/app/mes/SendMesGoodsInventoryRequest.java create mode 100644 src/main/java/com/wms/entity/app/mes/SendMesGoodsInventoryRow.java create mode 100644 src/main/java/com/wms/entity/app/mes/SendMesGoodsMoveRequest.java create mode 100644 src/main/java/com/wms/entity/app/mes/SendMesPutOutGoodsRequest.java create mode 100644 src/main/java/com/wms/entity/app/mes/SendMesPutOutGoodsRow.java diff --git a/pom.xml b/pom.xml index 68d1f6f..f7e5feb 100644 --- a/pom.xml +++ b/pom.xml @@ -132,11 +132,6 @@ springfox-swagger-ui 2.9.2 - - org.apache.tomcat.embed - tomcat-embed-core - 9.0.68 - org.apache.tomcat.embed tomcat-embed-core diff --git a/src/main/java/com/wms/bussiness/JobComponent.java b/src/main/java/com/wms/bussiness/JobComponent.java index 3b8606a..e477b6b 100644 --- a/src/main/java/com/wms/bussiness/JobComponent.java +++ b/src/main/java/com/wms/bussiness/JobComponent.java @@ -85,7 +85,7 @@ public class JobComponent extends BaseController { return; } for(Task task : tasks){ - if(task.getTaskType().equals(TaskType.IN.getCode())|| task.getTaskType().equals(TaskType.INVENTORY.getCode())){ + if(task.getTaskType().equals(TaskType.IN.getCode()) || task.getTaskType().equals(TaskType.INVENTORY.getCode())){ sendTasksInToWcs(task); return; } @@ -99,7 +99,7 @@ public class JobComponent extends BaseController { } } }catch (Exception exception){ - logger.error("定时器下发任务发生异常:{}", exception.getMessage()); + logger.error("定时器下发任务发生异常:{}", exception.toString()); } } @@ -111,7 +111,7 @@ public class JobComponent extends BaseController { List request = new ArrayList<>(); // 创建发送的任务 WcsTask tempTask = new WcsTask(); - tempTask.setTaskId(task.getTaskGroup()); + tempTask.setTaskId(task.getTaskId()); tempTask.setTaskType(TaskType.IN.getCode()); tempTask.setOrigin(task.getOrigin()); tempTask.setDestination(task.getDestination()); @@ -128,6 +128,7 @@ public class JobComponent extends BaseController { taskForUpdate.setTaskId(task.getTaskId()); taskForUpdate.setTaskStatus(WmsTaskStatus.WAIT.getCode()); taskService.executeTask(taskForUpdate); + return; } logger.info("下发入库任务失败,任务ID:{},信息:{}", tempTask.getTaskId(), JSON.toJSONString(result)); } @@ -231,7 +232,7 @@ public class JobComponent extends BaseController { List request = new ArrayList<>(); // 创建发送的任务 WcsTask tempTask = new WcsTask(); - tempTask.setTaskId(task.getTaskGroup()); + tempTask.setTaskId(task.getTaskId()); tempTask.setTaskType(TaskType.OUT.getCode()); tempTask.setOrigin(task.getOrigin()); tempTask.setDestination(task.getDestination()); @@ -248,6 +249,7 @@ public class JobComponent extends BaseController { taskForUpdate.setTaskId(task.getTaskId()); taskForUpdate.setTaskStatus(WmsTaskStatus.WAIT.getCode()); taskService.executeTask(taskForUpdate); + return; } logger.info("下发立库出库任务失败,任务ID:{},信息:{}", tempTask.getTaskId(), JSON.toJSONString(result)); } else { // 四向车库 @@ -259,7 +261,7 @@ public class JobComponent extends BaseController { request.setPalletno(task.getVehicleNo()); request.setTasktype("2"); // 出库 request.setFromcellno(task.getOrigin()); - request.setTocellno("A13-34-01"); // A13-34-01;A13-16-01; + request.setTocellno("111"); // A13-34-01;A13-16-01; String requestString = JSON.toJSONString(request); String responseString = HttpUtils.sendHttpPostWithoutToken(UrlEnums.URL_WMS_TO_WCS_CONTAINER_TASK.getValue(), requestString); ContainerApiLocalResponse result = JSON.parseObject(responseString, ContainerApiLocalResponse.class); @@ -269,6 +271,7 @@ public class JobComponent extends BaseController { taskForUpdate.setTaskId(task.getTaskId()); taskForUpdate.setTaskStatus(WmsTaskStatus.WAIT.getCode()); taskService.executeTask(taskForUpdate); + return; } logger.info("下发四向车出库任务失败,任务ID:{},信息:{}", task.getTaskId(), JSON.toJSONString(result)); } @@ -318,8 +321,11 @@ public class JobComponent extends BaseController { if(notCompleteTasks == null) { return; } - if(!notCompleteTasks.isEmpty()) { - return; // 存在未完成的任务,退出函数 + for(Task notCompleteTask : notCompleteTasks) { + String taskId = notCompleteTask.getTaskId(); + if(!taskId.equals(task.getTaskId())) { + return; + } } // 检查是否有库存、 Stock stockQuery = new Stock(); @@ -373,7 +379,7 @@ public class JobComponent extends BaseController { List request = new ArrayList<>(); // 创建发送的任务 WcsTask tempTask = new WcsTask(); - tempTask.setTaskId(task.getTaskGroup()); + tempTask.setTaskId(task.getTaskId()); tempTask.setTaskType(TaskType.MOVE.getCode()); tempTask.setOrigin(task.getOrigin()); tempTask.setDestination(task.getDestination()); @@ -390,6 +396,7 @@ public class JobComponent extends BaseController { taskForUpdate.setTaskId(task.getTaskId()); taskForUpdate.setTaskStatus(WmsTaskStatus.WAIT.getCode()); taskService.executeTask(taskForUpdate); + return; } logger.info("下发立库移库任务失败,任务ID:{},信息:{}", tempTask.getTaskId(), JSON.toJSONString(result)); } else { @@ -411,6 +418,7 @@ public class JobComponent extends BaseController { taskForUpdate.setTaskId(task.getTaskId()); taskForUpdate.setTaskStatus(WmsTaskStatus.WAIT.getCode()); taskService.executeTask(taskForUpdate); + return; } logger.info("下发四向车移库任务失败,任务ID:{},信息:{}", task.getTaskId(), JSON.toJSONString(result)); } diff --git a/src/main/java/com/wms/bussiness/TaskOperation.java b/src/main/java/com/wms/bussiness/TaskOperation.java index b49577c..0dc9201 100644 --- a/src/main/java/com/wms/bussiness/TaskOperation.java +++ b/src/main/java/com/wms/bussiness/TaskOperation.java @@ -1,21 +1,23 @@ package com.wms.bussiness; -import com.wms.constants.enums.LocationStatus; -import com.wms.constants.enums.StockStatus; -import com.wms.constants.enums.TaskType; -import com.wms.constants.enums.WmsTaskStatus; +import com.alibaba.fastjson2.JSON; +import com.wms.constants.enums.*; +import com.wms.entity.app.ResponseEntity; +import com.wms.entity.app.mes.*; import com.wms.entity.table.Location; import com.wms.entity.table.Stock; import com.wms.entity.table.Task; import com.wms.mapper.LocationMapper; import com.wms.mapper.StockMapper; import com.wms.mapper.TaskMapper; +import com.wms.utils.HttpUtils; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import javax.swing.plaf.synth.Region; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -75,41 +77,56 @@ public class TaskOperation { * @return 结果 */ private boolean completeInTask(Task task) { - /* 将任务更新为完成,将库存更新为正常库存,将库位更新为占用 */ - // 更新任务状态 - Task updateTask = new Task(); - updateTask.setTaskId(task.getTaskId()); - updateTask.setTaskStatus(WmsTaskStatus.FINISH.getCode()); - updateTask.setFinishTime(new Date()); - int updateRow = taskMapper.executeTask(updateTask); - if(updateRow != 1) { - log.warn(String.format("完成入库任务更新任务状态失败,任务号:%s", task.getTaskId())); - return false; + /* 找出任务,完成该任务;找出该任务终点,更新库存为OK */ + // 完成任务 + Task completeTask = new Task(); + completeTask.setTaskId(task.getTaskId()); + completeTask.setTaskStatus(WmsTaskStatus.FINISH.getCode()); + completeTask.setFinishTime(new Date()); + taskMapper.executeTask(completeTask); // 完成任务 + // 占掉新库位,生成的时候会占,这里重复操作保护 + Location occupyLocation = new Location(); + occupyLocation.setLocationId(task.getDestination()); + occupyLocation.setLocationStatus(LocationStatus.OCCUPY.getCode()); + occupyLocation.setVehicleId(task.getVehicleNo()); + locationMapper.modifyLocation(occupyLocation); // 更新库位 + // 更新库存为 ok + int updateStock = stockMapper.updateStockStatusWithLocationId(task.getDestination(), StockStatus.OK.getCode()); + if(updateStock > 0){ + log.info("入库完成更新库存成功,任务:{}", task.toLoggerString()); + // 入库完成发送mes + Stock checkIsExist = new Stock(); + checkIsExist.setLocationId(task.getDestination()); + List checkIsExistListResult = stockMapper.selStocks(checkIsExist); + sendMesPutInGoods(checkIsExistListResult.get(0), task.getDestination()); // 发送 mes 入库上架 + return true; } - // 更新库存状态 - Stock stockQuery = new Stock(); - stockQuery.setLocationId(task.getDestination()); - List stocks = stockMapper.selStocks(stockQuery); - if(stocks == null) { - log.warn(String.format("完成入库任务查询库存 查询数据库失败,任务号:%s", task.getTaskId())); - return false; - } - if(stocks.isEmpty()) { - log.warn(String.format("完成入库任务查询库存没有库存数据,任务号:%s", task.getTaskId())); - return false; - } - for(Stock stock : stocks) { - Stock updateStock = new Stock(); - updateStock.setStockId(stock.getStockId()); - updateStock.setStockStatus(StockStatus.OK.getCode()); - updateStock.setLastUpdateTime(new Date()); - updateStock.setCreateTime(new Date()); - int updateStockResult = stockMapper.modifyStock(updateStock); - if(updateStockResult != 1) { - log.warn(String.format("完成入库任务更新库存状态失败,任务号:%s , 库存号:%s", task.getTaskId(), stock.getStockId())); + return false; + } + + /** + * 发送 mes 上架入库信息 + * @param stock 库存记录 + * @param locationId 库位 + */ + private void sendMesPutInGoods(Stock stock, String locationId) { + try { + SendMesPutInGoodsRequest request = new SendMesPutInGoodsRequest(); + request.setGuid(stock.getStockId()); + request.setLosnr(stock.getBatchNo()); + request.setItemCode(stock.getGoodsId()); + request.setLotQty(String.valueOf(stock.getRealNum())); + request.setBinCode(locationId); + String requestString = JSON.toJSONString(request); + String responseString = HttpUtils.sendHttpPostWithoutToken(UrlEnums.URL_WMS_TO_MES_IN.getValue(), requestString); + MesApiLocalResponse result = JSON.parseObject(responseString, MesApiLocalResponse.class); + if(result != null && result.getTransFlag().equals(1)) { + log.info("发送MES入库上架成功,信息:{}", requestString); } + log.warn("发送MES入库上架失败,信息:{},返回信息:{}", requestString, responseString); + }catch (Exception e){ + log.error("发送MES入库上架失败异常,信息:{}", e.getMessage()); } - return true; } /** @@ -118,71 +135,190 @@ public class TaskOperation { * @return 执行结果 */ private boolean completeOutTask(Task task) { - /* 将任务更新为完成,删除库存,将库位释放 */ - // 更新任务状态 - Task updateTask = new Task(); - updateTask.setTaskId(task.getTaskId()); - updateTask.setTaskStatus(WmsTaskStatus.FINISH.getCode()); - updateTask.setFinishTime(new Date()); - int updateRow = taskMapper.executeTask(updateTask); - if(updateRow != 1) { - log.warn(String.format("完成出库任务更新任务状态失败,任务号:%s", task.getTaskId())); - return false; - } - // 删除库存 - Stock stockQuery = new Stock(); - stockQuery.setLocationId(task.getDestination()); - List stocks = stockMapper.selStocks(stockQuery); - if(stocks == null) { - log.warn(String.format("完成出库任务查询库存 查询数据库失败,任务号:%s", task.getTaskId())); - return false; - } - if(stocks.isEmpty()) { - log.warn(String.format("完成出库任务查询库存没有库存数据,任务号:%s", task.getTaskId())); - return false; - } - for(Stock stock : stocks) { - int deleteStockResult = stockMapper.deleteStock(stock.getStockId()); - if(deleteStockResult != 1) { - log.warn(String.format("完成出库任务删除库存状态失败,任务号:%s , 库存号:%s", task.getTaskId(), stock.getStockId())); - } - } + /* 找出任务,完成该任务;找出该任务终点,删除库存;释放库位 */ + // 完成任务 + Task completeTask = new Task(); + completeTask.setTaskId(task.getTaskId()); + completeTask.setTaskStatus(WmsTaskStatus.FINISH.getCode()); + completeTask.setFinishTime(new Date()); + taskMapper.executeTask(completeTask); // 完成任务 // 释放库位 - Location location = new Location(); - location.setLocationId(task.getDestination()); - location.setLocationStatus(LocationStatus.EMPTY.getCode()); - locationMapper.modifyLocation(location); - return true; + Location updateLocation = new Location(); + updateLocation.setLocationId(task.getOrigin()); + updateLocation.setLocationStatus(LocationStatus.EMPTY.getCode()); + updateLocation.setVehicleId(""); + locationMapper.modifyLocation(updateLocation); // 更新库位为空 + // 删除库存 + int updateStock = stockMapper.deleteStockWithLocationId(task.getOrigin()); + if(updateStock > 0){ + log.info("出库完成删除库存成功,任务:{}", task.toLoggerString()); + //出库完成发送mes + Stock checkIsExist = new Stock(); + checkIsExist.setLocationId(task.getOrigin()); + List checkIsExistListResult = stockMapper.selStocks(checkIsExist); + sendMesPutOutGoods(checkIsExistListResult, task); + return true; + } + return false; } + + private void sendMesPutOutGoods(List stocks, Task task) { + try { + SendMesPutOutGoodsRequest request = new SendMesPutOutGoodsRequest(); + request.setGuid(task.getTaskId()); + request.setTransferNo(task.getTaskGroup()); + request.setType(task.getPickStand()); + + List rows = new ArrayList<>(); + int lint = 1; + for(Stock stock : stocks) { + SendMesPutOutGoodsRow row = new SendMesPutOutGoodsRow(); + row.setTransferLine(String.valueOf(lint)); + row.setLosnr(stock.getBatchNo()); + row.setBinCode(stock.getLocationId()); + row.setLotQty(String.valueOf(stock.getRealNum() - stock.getAvailableNum())); + rows.add(row); + } + request.setRow(rows); + String requestString = JSON.toJSONString(request); + String responseString = HttpUtils.sendHttpPostWithoutToken(UrlEnums.URL_WMS_TO_MES_OUT.getValue(), requestString); + MesApiLocalResponse result = JSON.parseObject(responseString, MesApiLocalResponse.class); + if(result != null && result.getTransFlag().equals(1)) { + log.info("发送MES出库下架成功,信息:{}", requestString); + } + log.warn("发送MES出库下架失败,信息:{},返回信息:{}", requestString, responseString); + }catch (Exception e){ + log.error("发送MES出库下架失败异常,信息:{}", e.getMessage()); + } + } + + /** + * 完成盘点任务 + * @param task 任务 + * @return 完成结果 + */ private boolean completeInventoryTask(Task task) { - return true; + /* 找出任务,完成该任务;找出该任务终点,删除库存;释放库位 */ + // 完成任务 + Task completeTask = new Task(); + completeTask.setTaskId(task.getTaskId()); + completeTask.setTaskStatus(WmsTaskStatus.FINISH.getCode()); + completeTask.setFinishTime(new Date()); + taskMapper.executeTask(completeTask); // 完成任务 + // 释放库位 + Location updateLocation = new Location(); + updateLocation.setLocationId(task.getOrigin()); + updateLocation.setLocationStatus(LocationStatus.EMPTY.getCode()); + updateLocation.setVehicleId(""); + locationMapper.modifyLocation(updateLocation); // 更新库位为空 + // 删除库存 + int updateStock = stockMapper.deleteStockWithLocationId(task.getOrigin()); + if(updateStock > 0){ + log.info("盘点出库完成删除库存成功,任务:{}", task.toLoggerString()); + // 盘点出库完成发送mes + Stock checkIsExist = new Stock(); + checkIsExist.setLocationId(task.getOrigin()); + List checkIsExistListResult = stockMapper.selStocks(checkIsExist); + sendMesInventoryGoods(checkIsExistListResult, task); + return true; + } + return false; } - private boolean completeMoveTask(Task task) { - /* 将任务更新为完成;更新库存状态;更新库位状态 */ - Task updateTask = new Task(); - updateTask.setTaskId(task.getTaskId()); - updateTask.setTaskStatus(WmsTaskStatus.FINISH.getCode()); - updateTask.setFinishTime(new Date()); - int updateRow = taskMapper.executeTask(updateTask); - if(updateRow != 1) { - log.warn(String.format("完成移库任务更新任务状态失败,任务号:%s", task.getTaskId())); - return false; + + private void sendMesInventoryGoods(List stocks, Task task) { + try { + SendMesGoodsInventoryRequest request = new SendMesGoodsInventoryRequest(); + request.setGuid(task.getTaskId()); + request.setInventoryNo(task.getTaskGroup()); + + List rows = new ArrayList<>(); + int lint = 1; + for(Stock stock : stocks) { + SendMesGoodsInventoryRow row = new SendMesGoodsInventoryRow(); + row.setLosnr(stock.getBatchNo()); + row.setBinCode(stock.getLocationId()); + row.setLotQty(String.valueOf(stock.getRealNum() - stock.getAvailableNum())); + rows.add(row); + } + request.setRow(rows); + String requestString = JSON.toJSONString(request); + String responseString = HttpUtils.sendHttpPostWithoutToken(UrlEnums.URL_WMS_TO_MES_INVENTORY.getValue(), requestString); + MesApiLocalResponse result = JSON.parseObject(responseString, MesApiLocalResponse.class); + if(result != null && result.getTransFlag().equals(1)) { + log.info("发送MES盘点执行成功,信息:{}", requestString); + } + log.warn("发送MES盘点执行失败,信息:{},返回信息:{}", requestString, responseString); + }catch (Exception e){ + log.error("发送MES盘点执行失败异常,信息:{}", e.getMessage()); } - // 更新库存 - int updateLocationResult = stockMapper.updateLocationAndStatus(task.getOrigin(), task.getDestination(), StockStatus.OK.getCode()); - if(updateLocationResult < 1) { - log.warn(String.format("完成移库任务更新库存状态失败,任务号:%s ,原库位:%s,新库位:%s", task.getTaskId(), task.getOrigin(), task.getDestination())); - return false; - } - // 释放原库位 - Location location = new Location(); - location.setLocationId(task.getOrigin()); - location.setLocationStatus(LocationStatus.EMPTY.getCode()); - locationMapper.modifyLocation(location); - return true; } + + /** + * 完成移库任务 + * @param task 任务 + * @return 完成结果 + */ + private boolean completeMoveTask(Task task) { + /* 找出任务,更新任务为完成;释放原库位;更新库存到新库位 */ + // 完成任务 + Task completeTask = new Task(); + completeTask.setTaskId(task.getTaskId()); + completeTask.setTaskStatus(WmsTaskStatus.FINISH.getCode()); + completeTask.setFinishTime(new Date()); + taskMapper.executeTask(completeTask); // 完成任务 + // 释放原库位 + // 释放库位 + Location updateLocation = new Location(); + updateLocation.setLocationId(task.getOrigin()); + updateLocation.setLocationStatus(LocationStatus.EMPTY.getCode()); + updateLocation.setVehicleId(""); + locationMapper.modifyLocation(updateLocation); // 更新库位为空 + // 占掉新库位,生成的时候会占,这里重复操作保护 + Location occupyLocation = new Location(); + occupyLocation.setLocationId(task.getDestination()); + occupyLocation.setLocationStatus(LocationStatus.OCCUPY.getCode()); + occupyLocation.setVehicleId(task.getVehicleNo()); + locationMapper.modifyLocation(occupyLocation); // 更新库位 + // 更新库位 + int updatedLocation = stockMapper.updateLocationAndStatus(task.getOrigin(), task.getDestination(), StockStatus.OK.getCode()); + if(updatedLocation > 0){ + log.info("移库库位更新成功,任务:{}", task.toLoggerString()); + // 移库完成发送mes + Stock checkIsExist = new Stock(); + checkIsExist.setLocationId(task.getOrigin()); + List checkIsExistListResult = stockMapper.selStocks(checkIsExist); + sendMesPutMoveGoods(checkIsExistListResult.get(0), task); + + return true; + } + return false; + } + + private void sendMesPutMoveGoods(Stock stock, Task task) { + try { + SendMesGoodsMoveRequest request = new SendMesGoodsMoveRequest(); + request.setGuid(stock.getStockId()); + request.setLosnr(stock.getBatchNo()); + request.setFBinCode(task.getOrigin()); + request.setLotQty(String.valueOf(stock.getRealNum())); + request.setTBinCode(task.getDestination()); + String requestString = JSON.toJSONString(request); + String responseString = HttpUtils.sendHttpPostWithoutToken(UrlEnums.URL_WMS_TO_MES_MOVE.getValue(), requestString); + MesApiLocalResponse result = JSON.parseObject(responseString, MesApiLocalResponse.class); + if(result != null && result.getTransFlag().equals(1)) { + log.info("发送MES批次调整(移库)成功,信息:{}", requestString); + } + log.warn("发送MES批次调整(移库)失败,信息:{},返回信息:{}", requestString, responseString); + }catch (Exception e){ + log.error("发送MES批次调整(移库)失败异常,信息:{}", e.getMessage()); + } + } + + + + //endregion @@ -217,28 +353,26 @@ public class TaskOperation { * @return 结果 */ private boolean cancelInTask(Task task) { - /* 将任务更新为取消,将库存删除,将库位更新为空闲 */ - // 更新任务状态 - Task updateTask = new Task(); - updateTask.setTaskId(task.getTaskId()); - updateTask.setTaskStatus(WmsTaskStatus.CANCEL.getCode()); - updateTask.setFinishTime(new Date()); - int updateRow = taskMapper.executeTask(updateTask); - if(updateRow != 1) { - log.warn(String.format("取消入库任务更新任务状态失败,任务号:%s", task.getTaskId())); - return false; - } - // 删除库存 - int deleteResult = stockMapper.deleteStockWithLocationId(task.getDestination()); - if(deleteResult < 1) { - log.warn(String.format("取消入库删除库存失败,任务号:%s,入库点位:%s -> %s", task.getTaskId(), task.getOrigin(), task.getDestination())); - } + /* 找出任务,取消该任务;找出该任务终点,更新库存为OK */ + // 取消任务 + Task completeTask = new Task(); + completeTask.setTaskId(task.getTaskId()); + completeTask.setTaskStatus(WmsTaskStatus.CANCEL.getCode()); + completeTask.setFinishTime(new Date()); + taskMapper.executeTask(completeTask); // 取消任务 // 释放库位 - Location location = new Location(); - location.setLocationId(task.getDestination()); - location.setLocationStatus(LocationStatus.EMPTY.getCode()); - locationMapper.modifyLocation(location); - return true; + Location updateLocation = new Location(); + updateLocation.setLocationId(task.getDestination()); + updateLocation.setLocationStatus(LocationStatus.EMPTY.getCode()); + updateLocation.setVehicleId(""); + locationMapper.modifyLocation(updateLocation); // 更新库位为空 + // 更新库存为 ok + int updateStock = stockMapper.updateStockStatusWithLocationId(task.getDestination(), StockStatus.OK.getCode()); + if(updateStock > 0){ + log.info("入库取消更新库存成功,任务:{}", task.toLoggerString()); + return true; + } + return false; } /** @@ -247,51 +381,70 @@ public class TaskOperation { * @return 执行结果 */ private boolean cancelOutTask(Task task) { - /* 将任务更新为取消,将库存更新为库存中 */ - // 更新任务状态 - Task updateTask = new Task(); - updateTask.setTaskId(task.getTaskId()); - updateTask.setTaskStatus(WmsTaskStatus.CANCEL.getCode()); - updateTask.setFinishTime(new Date()); - int updateRow = taskMapper.executeTask(updateTask); - if(updateRow != 1) { - log.warn(String.format("取消出库任务更新任务状态失败,任务号:%s", task.getTaskId())); - return false; + /* 找出任务,取消该任务;找出该任务终点,删除库存;释放库位 */ + // 取消任务 + Task completeTask = new Task(); + completeTask.setTaskId(task.getTaskId()); + completeTask.setTaskStatus(WmsTaskStatus.CANCEL.getCode()); + completeTask.setFinishTime(new Date()); + taskMapper.executeTask(completeTask); // 取消任务 + // 更新库存为 ok + int updateStock = stockMapper.updateStockStatusWithLocationId(task.getDestination(), StockStatus.OK.getCode()); + if(updateStock > 0){ + log.info("出库取消更新库存成功,任务:{}", task.toLoggerString()); + return true; } - // 更新库存信息为库存中 - int updateResult = stockMapper.updateStockStatusWithLocationId(task.getOrigin(), StockStatus.OK.getCode()); - if(updateResult < 1) { - log.warn(String.format("取消出库任务更新库存状态失败,任务号:%s,出库点位:%s -> %s", task.getTaskId(), task.getOrigin(), task.getDestination())); - } - return true; + return false; } + /** + * 取消盘点任务 + * @param task 任务 + * @return 取消结果 + */ private boolean cancelInventoryTask(Task task) { - return true; + /* 找出任务,取消该任务;找出该任务终点,删除库存;释放库位 */ + // 取消任务 + Task completeTask = new Task(); + completeTask.setTaskId(task.getTaskId()); + completeTask.setTaskStatus(WmsTaskStatus.CANCEL.getCode()); + completeTask.setFinishTime(new Date()); + taskMapper.executeTask(completeTask); // 取消任务 + // 更新库存为 ok + int updateStock = stockMapper.updateStockStatusWithLocationId(task.getDestination(), StockStatus.OK.getCode()); + if(updateStock > 0){ + log.info("盘点出库取消更新库存成功,任务:{}", task.toLoggerString()); + return true; + } + return false; } + /** + * 取消移库任务 + * @param task 任务 + * @return 取消结果 + */ private boolean cancelMoveTask(Task task) { - /* 将任务更新为取消;更新库存状态为正常;释放终点库位 */ - Task updateTask = new Task(); - updateTask.setTaskId(task.getTaskId()); - updateTask.setTaskStatus(WmsTaskStatus.CANCEL.getCode()); - updateTask.setFinishTime(new Date()); - int updateRow = taskMapper.executeTask(updateTask); - if(updateRow != 1) { - log.warn(String.format("完成移库任务更新任务状态失败,任务号:%s", task.getTaskId())); - return false; + /* 找出任务,更新任务为取消;释放新库位;更新库存为OK */ + // 取消任务 + Task completeTask = new Task(); + completeTask.setTaskId(task.getTaskId()); + completeTask.setTaskStatus(WmsTaskStatus.CANCEL.getCode()); + completeTask.setFinishTime(new Date()); + taskMapper.executeTask(completeTask); // 取消任务 + // 释放库位 + Location updateLocation = new Location(); + updateLocation.setLocationId(task.getDestination()); + updateLocation.setLocationStatus(LocationStatus.EMPTY.getCode()); + updateLocation.setVehicleId(""); + locationMapper.modifyLocation(updateLocation); // 更新库位为空 + // 更新库位 + int updatedLocation = stockMapper.updateStockStatusWithLocationId(task.getOrigin(), StockStatus.OK.getCode()); + if(updatedLocation > 0){ + log.info("移库取消库位状态更新成功,任务:{}", task.toLoggerString()); + return true; } - // 更新库存信息为库存中 - int updateResult = stockMapper.updateStockStatusWithLocationId(task.getOrigin(), StockStatus.OK.getCode()); - if(updateResult < 1) { - log.warn(String.format("取消出库任务更新库存状态失败,任务号:%s,出库点位:%s -> %s", task.getTaskId(), task.getOrigin(), task.getDestination())); - } - // 释放新库位 - Location location = new Location(); - location.setLocationId(task.getDestination()); - location.setLocationStatus(LocationStatus.EMPTY.getCode()); - locationMapper.modifyLocation(location); - return true; + return false; } diff --git a/src/main/java/com/wms/constants/enums/UrlEnums.java b/src/main/java/com/wms/constants/enums/UrlEnums.java index df26a97..6b3ebe8 100644 --- a/src/main/java/com/wms/constants/enums/UrlEnums.java +++ b/src/main/java/com/wms/constants/enums/UrlEnums.java @@ -1,10 +1,15 @@ package com.wms.constants.enums; public enum UrlEnums { - URL_WMS_TO_WCS_SEND_TASK("WMS向WCS发送任务", "http://172.21.80.151:18990/api/Wms/WmsTask/SetStackerTask"), - URL_WMS_TO_WCS_CHANGE_TASK("WMS请求变更任务状态", "http://172.21.80.151:18990/api/Wms/WmsTask/ChangeTaskStatus"), + URL_WMS_TO_WCS_SEND_TASK("WMS向WCS发送任务", "http://172.21.80.223:18990/api/wms/wmsTask/setStackerTask"), + URL_WMS_TO_WCS_CHANGE_TASK("WMS请求变更任务状态", "http://172.21.80.223:18990/api/Wms/WmsTask/ChangeTaskStatus"), URL_WMS_TO_WCS_CONTAINER_TASK("WMS向四向车发送任务","http://172.21.80.150:9991/api/Wcs/PushTask"), - URL_WMS_TO_MES_IN("扫码上架", ""); + URL_WMS_TO_MES_IN("扫码上架", "http://172.21.73.210:9000/Asimco/vmesserver/wms_interface/LotGround"), + URL_WMS_TO_MES_OUT("批次出库", "http://172.21.73.210:9000/Asimco/vmesserver/wms_interface/ReceiptOut"), + URL_WMS_TO_MES_INVENTORY("盘点执行", "http://172.21.73.210:9000/Asimco/vmesserver/wms_interface/InventoryResult"), + URL_WMS_TO_MES_MOVE("批次调整", "http://172.21.73.210:9000/Asimco/vmesserver/wms_interface/LotAD"); + + private final String description; private final String value; diff --git a/src/main/java/com/wms/controller/others/ContainerController.java b/src/main/java/com/wms/controller/others/ContainerController.java index 7826b0a..30cba7a 100644 --- a/src/main/java/com/wms/controller/others/ContainerController.java +++ b/src/main/java/com/wms/controller/others/ContainerController.java @@ -1,5 +1,6 @@ package com.wms.controller.others; +import com.alibaba.fastjson2.JSON; import com.wms.controller.BaseController; import com.wms.entity.app.container.ContainerApiLocalResponse; import com.wms.entity.app.container.CreateInstoreTaskRequest; @@ -7,14 +8,17 @@ import com.wms.entity.app.container.CreateInstoreTaskResponse; import com.wms.entity.app.container.TaskStateNoticeRequest; import com.wms.service.ContainerService; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; + /** * 四向车交互 * @author icewint */ +@Slf4j @RestController @CrossOrigin @RequestMapping(value = "/api/container") @@ -31,7 +35,10 @@ public class ContainerController extends BaseController { */ @PostMapping("/createInstoreTask") public CreateInstoreTaskResponse createInstoreTask(@RequestBody @Validated CreateInstoreTaskRequest request) { - return containerService.createInstoreTask(request); + log.info("四向车扫码入库请求:{}", JSON.toJSONString(request)); + CreateInstoreTaskResponse instoreTask = containerService.createInstoreTask(request); + log.info("四向车扫码入库信息返回:{}", JSON.toJSONString(instoreTask)); + return instoreTask; } @@ -42,7 +49,10 @@ public class ContainerController extends BaseController { */ @PostMapping("/taskStateNotice") public ContainerApiLocalResponse taskStateNotice(@RequestBody @Validated TaskStateNoticeRequest request){ - return containerService.taskStateNotice(request); + log.info("四向车任务状态通知请求:{}", JSON.toJSONString(request)); + ContainerApiLocalResponse containerApiLocalResponse = containerService.taskStateNotice(request); + log.info("四向车任务状态通知信息返回:{}", JSON.toJSONString(containerApiLocalResponse)); + return containerApiLocalResponse; } diff --git a/src/main/java/com/wms/controller/others/WcsController.java b/src/main/java/com/wms/controller/others/WcsController.java index 42707d2..943e520 100644 --- a/src/main/java/com/wms/controller/others/WcsController.java +++ b/src/main/java/com/wms/controller/others/WcsController.java @@ -1,6 +1,7 @@ package com.wms.controller.others; import com.alibaba.fastjson2.JSON; +import com.wms.bussiness.TaskOperation; import com.wms.constants.enums.*; import com.wms.entity.app.ResponseEntity; import com.wms.entity.app.container.ContainerApiLocalResponse; @@ -38,6 +39,11 @@ import java.util.UUID; @RequiredArgsConstructor(onConstructor = @__(@Autowired)) public class WcsController { + /** + * 任务操作类 + */ + private final TaskOperation taskOperation; + /** * 库存 Mapper */ @@ -77,6 +83,7 @@ public class WcsController { */ @PostMapping("/requestIn") public ResponseEntity requestIn(@RequestBody @Validated RequireInRequest request) { + log.info(String.format("%s 点位请求入库:%s",request.getPoint(), request.getVehicleNo())); /* 校验库存是否存在待入库信息 */ Stock checkIsExist = new Stock(); checkIsExist.setBatchNo(request.getVehicleNo()); @@ -84,7 +91,7 @@ public class WcsController { List checkIsExistListResult = stockMapper.selStocks(checkIsExist); if(checkIsExistListResult == null || checkIsExistListResult.isEmpty()) { // 记录不存在 - return new ResponseEntity(0, String.format("该条码不存在待入库记录,条码号:%s", request.getVehicleNo())); + return new ResponseEntity(-1, String.format("该条码不存在待入库记录,条码号:%s", request.getVehicleNo())); } /* 查找一个空库位 */ Location emptyLocation = new Location(); @@ -92,14 +99,14 @@ public class WcsController { emptyLocation.setAreaId(1); List emptyLocations = locationMapper.selLocations(emptyLocation); if(emptyLocations == null) { - return new ResponseEntity(0, "库位查找失败,网络连接异常,请稍后再试"); + return new ResponseEntity(-1, "库位查找失败,网络连接异常,请稍后再试"); } if(emptyLocations.isEmpty()){ - return new ResponseEntity(0, "没有可用库位"); + return new ResponseEntity(-1, "没有可用库位"); } Location emptyLocationItem = locationUtils.checkCanUse(emptyLocations); if(emptyLocationItem == null) { - return new ResponseEntity(0, "没有可用库位或者库位存在干涉,请稍后再试"); + return new ResponseEntity(-1, "没有可用库位或者库位存在干涉,请稍后再试"); } // 该空库位可用,生成一个入库任务,并将库存表更新库位 // 更新库位表,占掉库位 @@ -117,7 +124,7 @@ public class WcsController { task.setTaskType(TaskType.IN.getCode()); task.setTaskStatus(WmsTaskStatus.NEW.getCode()); task.setTaskGroup(UUID.randomUUID().toString()); - task.setOrigin(""); + task.setOrigin(request.getPoint()); task.setDestination(emptyLocationItem.getLocationId()); task.setPickStand(""); task.setWeight(0.0); @@ -131,30 +138,11 @@ public class WcsController { task.setTaskPriority(1); int addTask = taskMapper.addTask(task); if(addTask > 0) { - sendMesPutInGoods(checkIsExistListResult.get(0), emptyLocationItem.getLocationId()); // 发送 mes 入库上架 - return new ResponseEntity(1, "存在入库任务,申请成功"); + return new ResponseEntity(0, "存在入库任务,申请成功"); } - return new ResponseEntity(0, "添加入库任务失败,网络连接异常,请稍后再试"); + return new ResponseEntity(-1, "添加入库任务失败,网络连接异常,请稍后再试"); } - private void sendMesPutInGoods(Stock stock, String locationId) { - SendMesPutInGoodsRequest request = new SendMesPutInGoodsRequest(); - request.setGuid(stock.getStockId()); - request.setLosnr(stock.getBatchNo()); - request.setItemCode(stock.getGoodsId()); - request.setLotQty(String.valueOf(stock.getRealNum())); - request.setBinCode(locationId); - String requestString = JSON.toJSONString(request); - String responseString = HttpUtils.sendHttpPostWithoutToken(UrlEnums.URL_WMS_TO_MES_IN.getValue(), requestString); - MesApiLocalResponse result = JSON.parseObject(responseString, MesApiLocalResponse.class); - if(result != null && result.getTransFlag().equals(1)) { - log.info("发送MES入库上架成功,信息:{}", requestString); - } - log.info("发送MES入库上架失败,信息:{},返回信息:{}", requestString, responseString); - - } - - /** * 收到 wcs 返回的任务状态 * @param wmsReceiveTaskResultEntity wcs请求值 @@ -170,168 +158,25 @@ public class WcsController { String vehicleNo = wmsReceiveTaskResultEntity.getVehicleNo(); // 查找对应任务 Task taskForQuery = new Task(); - taskForQuery.setTaskGroup(taskId); + taskForQuery.setTaskId(taskId); List tasks = taskService.selTasks(taskForQuery); if(tasks == null || tasks.isEmpty()) { return new ResponseEntity(-1, "没有找到对应的任务"); } Task task = tasks.get(0); - if(taskStatus.equals(WmsTaskStatus.FINISH.getCode())) { // 任务完成 - if(task.getTaskType().equals(TaskType.IN.getCode())) { // 入库 - /* 找出任务,完成该任务;找出该任务终点,更新库存为OK */ - // 完成任务 - Task completeTask = new Task(); - completeTask.setTaskId(task.getTaskId()); - completeTask.setTaskStatus(WmsTaskStatus.FINISH.getCode()); - completeTask.setFinishTime(new Date()); - taskMapper.executeTask(completeTask); // 完成任务 - // 更新库存为 ok - int updateStock = stockMapper.updateStockStatusWithLocationId(task.getDestination(), StockStatus.OK.getCode()); - if(updateStock > 0){ - log.info("入库完成更新库存成功,任务:{}", task.toLoggerString()); - return new ResponseEntity(0, "入库完成"); - } - return new ResponseEntity(0, "入库完成,更新库存失败"); - } - if(task.getTaskType().equals(TaskType.OUT.getCode())) { // 出库 - /* 找出任务,完成该任务;找出该任务终点,删除库存;释放库位 */ - // 完成任务 - Task completeTask = new Task(); - completeTask.setTaskId(task.getTaskId()); - completeTask.setTaskStatus(WmsTaskStatus.FINISH.getCode()); - completeTask.setFinishTime(new Date()); - taskMapper.executeTask(completeTask); // 完成任务 - // 释放库位 - Location updateLocation = new Location(); - updateLocation.setLocationId(task.getOrigin()); - updateLocation.setLocationStatus(LocationStatus.EMPTY.getCode()); - updateLocation.setVehicleId(""); - locationMapper.modifyLocation(updateLocation); // 更新库位为空 - // 删除库存 - int updateStock = stockMapper.deleteStockWithLocationId(task.getOrigin()); - if(updateStock > 0){ - log.info("出库完成删除库存成功,任务:{}", task.toLoggerString()); - return new ResponseEntity(0, "出库完成"); - } - return new ResponseEntity(0, "出库完成,删除库存失败"); - } - if(task.getTaskType().equals(TaskType.INVENTORY.getCode())) { // 盘点 - /* 找出任务,完成该任务;找出该任务终点,删除库存;释放库位 */ - // 完成任务 - Task completeTask = new Task(); - completeTask.setTaskId(task.getTaskId()); - completeTask.setTaskStatus(WmsTaskStatus.FINISH.getCode()); - completeTask.setFinishTime(new Date()); - taskMapper.executeTask(completeTask); // 完成任务 - // 释放库位 - Location updateLocation = new Location(); - updateLocation.setLocationId(task.getOrigin()); - updateLocation.setLocationStatus(LocationStatus.EMPTY.getCode()); - updateLocation.setVehicleId(""); - locationMapper.modifyLocation(updateLocation); // 更新库位为空 - // 删除库存 - int updateStock = stockMapper.deleteStockWithLocationId(task.getOrigin()); - if(updateStock > 0){ - log.info("盘点出库完成删除库存成功,任务:{}", task.toLoggerString()); - return new ResponseEntity(0, "盘点出库完成"); - } - return new ResponseEntity(0, "盘点出库完成,删除库存失败"); - } - if(task.getTaskType().equals(TaskType.MOVE.getCode())) { // 移库 - /* 找出任务,更新任务为完成;释放原库位;更新库存到新库位 */ - // 完成任务 - Task completeTask = new Task(); - completeTask.setTaskId(task.getTaskId()); - completeTask.setTaskStatus(WmsTaskStatus.FINISH.getCode()); - completeTask.setFinishTime(new Date()); - taskMapper.executeTask(completeTask); // 完成任务 - // 释放原库位 - // 释放库位 - Location updateLocation = new Location(); - updateLocation.setLocationId(task.getOrigin()); - updateLocation.setLocationStatus(LocationStatus.EMPTY.getCode()); - updateLocation.setVehicleId(""); - locationMapper.modifyLocation(updateLocation); // 更新库位为空 - // 更新库位 - int updatedLocation = stockMapper.updateLocationAndStatus(task.getOrigin(), task.getDestination(), StockStatus.OK.getCode()); - if(updatedLocation > 0){ - log.info("移库库位更新成功,任务:{}", task.toLoggerString()); - return new ResponseEntity(0, "移库库位更新成功"); - } - return new ResponseEntity(0, "移库库位更新失败"); + if(taskStatus.equals(3)) { // 任务完成 + boolean completedTask = taskOperation.completeTask(task); + if(!completedTask) { + return new ResponseEntity(-1, "任务完成失败,请稍后再试"); } + return new ResponseEntity(0, "任务完成成功"); } if(taskStatus.equals(WmsTaskStatus.CANCEL.getCode())) { // 任务取消 - if(task.getTaskType().equals(TaskType.IN.getCode())) { // 入库 - /* 找出任务,取消该任务;找出该任务终点,更新库存为OK */ - // 取消任务 - Task completeTask = new Task(); - completeTask.setTaskId(task.getTaskId()); - completeTask.setTaskStatus(WmsTaskStatus.CANCEL.getCode()); - completeTask.setFinishTime(new Date()); - taskMapper.executeTask(completeTask); // 取消任务 - // 更新库存为 ok - int updateStock = stockMapper.updateStockStatusWithLocationId(task.getDestination(), StockStatus.OK.getCode()); - if(updateStock > 0){ - log.info("入库取消更新库存成功,任务:{}", task.toLoggerString()); - return new ResponseEntity(0, "入库取消"); - } - return new ResponseEntity(0, "入库取消,更新库存失败"); - } - if(task.getTaskType().equals(TaskType.OUT.getCode())) { // 出库 - /* 找出任务,取消该任务;找出该任务终点,删除库存;释放库位 */ - // 取消任务 - Task completeTask = new Task(); - completeTask.setTaskId(task.getTaskId()); - completeTask.setTaskStatus(WmsTaskStatus.CANCEL.getCode()); - completeTask.setFinishTime(new Date()); - taskMapper.executeTask(completeTask); // 取消任务 - // 更新库存为 ok - int updateStock = stockMapper.updateStockStatusWithLocationId(task.getDestination(), StockStatus.OK.getCode()); - if(updateStock > 0){ - log.info("出库取消更新库存成功,任务:{}", task.toLoggerString()); - return new ResponseEntity(0, "出库取消"); - } - return new ResponseEntity(0, "出库取消,更新库存失败"); - } - if(task.getTaskType().equals(TaskType.INVENTORY.getCode())) { // 盘点 - /* 找出任务,取消该任务;找出该任务终点,删除库存;释放库位 */ - // 取消任务 - Task completeTask = new Task(); - completeTask.setTaskId(task.getTaskId()); - completeTask.setTaskStatus(WmsTaskStatus.CANCEL.getCode()); - completeTask.setFinishTime(new Date()); - taskMapper.executeTask(completeTask); // 取消任务 - // 更新库存为 ok - int updateStock = stockMapper.updateStockStatusWithLocationId(task.getDestination(), StockStatus.OK.getCode()); - if(updateStock > 0){ - log.info("盘点出库取消更新库存成功,任务:{}", task.toLoggerString()); - return new ResponseEntity(0, "盘点出库取消"); - } - return new ResponseEntity(0, "盘点出库取消,更新库存失败"); - } - if(task.getTaskType().equals(TaskType.MOVE.getCode())) { // 移库 - /* 找出任务,更新任务为取消;释放新库位;更新库存为OK */ - // 取消任务 - Task completeTask = new Task(); - completeTask.setTaskId(task.getTaskId()); - completeTask.setTaskStatus(WmsTaskStatus.CANCEL.getCode()); - completeTask.setFinishTime(new Date()); - taskMapper.executeTask(completeTask); // 取消任务 - // 释放库位 - Location updateLocation = new Location(); - updateLocation.setLocationId(task.getDestination()); - updateLocation.setLocationStatus(LocationStatus.EMPTY.getCode()); - updateLocation.setVehicleId(""); - locationMapper.modifyLocation(updateLocation); // 更新库位为空 - // 更新库位 - int updatedLocation = stockMapper.updateStockStatusWithLocationId(task.getOrigin(), StockStatus.OK.getCode()); - if(updatedLocation > 0){ - log.info("移库取消库位状态更新成功,任务:{}", task.toLoggerString()); - return new ResponseEntity(0, "移库取消库位状态更新成功"); - } - return new ResponseEntity(0, "移库取消库位状态更新失败"); + boolean cancelledTask = taskOperation.cancelTask(task); + if(!cancelledTask) { + return new ResponseEntity(-1, "任务取消失败,请稍后再试"); } + return new ResponseEntity(0, "任务取消成功"); } return new ResponseEntity(0, "不处理的状态"); } diff --git a/src/main/java/com/wms/entity/app/mes/OutNoticeRequest.java b/src/main/java/com/wms/entity/app/mes/OutNoticeRequest.java index a2ccd4a..ff6f863 100644 --- a/src/main/java/com/wms/entity/app/mes/OutNoticeRequest.java +++ b/src/main/java/com/wms/entity/app/mes/OutNoticeRequest.java @@ -3,6 +3,7 @@ package com.wms.entity.app.mes; import com.fasterxml.jackson.annotation.JsonProperty; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.Pattern; import lombok.Data; @@ -40,7 +41,15 @@ public class OutNoticeRequest { */ @NotBlank(message = "目的库别不允许为空或者空字符串") @JsonProperty("Twarehouse") - private String TWarehouse; + private String tWarehouse; + + /** + * 出库类型 + */ + @NotNull(message = "类型不允许为空") + @JsonProperty("Type") + private Integer type; + /** * 计划交货日期 diff --git a/src/main/java/com/wms/entity/app/mes/SendMesGoodsInventoryRequest.java b/src/main/java/com/wms/entity/app/mes/SendMesGoodsInventoryRequest.java new file mode 100644 index 0000000..cf32d22 --- /dev/null +++ b/src/main/java/com/wms/entity/app/mes/SendMesGoodsInventoryRequest.java @@ -0,0 +1,26 @@ +package com.wms.entity.app.mes; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +import java.util.List; + +/** + * 发送mes 盘点执行 + */ +@Data +public class SendMesGoodsInventoryRequest { + + @JsonProperty("guid") + private String guid; + + @JsonProperty("InventoryNo") + private String inventoryNo; + + @JsonProperty("Row") + private List row; + + +} + + diff --git a/src/main/java/com/wms/entity/app/mes/SendMesGoodsInventoryRow.java b/src/main/java/com/wms/entity/app/mes/SendMesGoodsInventoryRow.java new file mode 100644 index 0000000..09132d6 --- /dev/null +++ b/src/main/java/com/wms/entity/app/mes/SendMesGoodsInventoryRow.java @@ -0,0 +1,19 @@ +package com.wms.entity.app.mes; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +@Data +public class SendMesGoodsInventoryRow { + + @JsonProperty("Losnr") + private String losnr; + + @JsonProperty("LotQty") + private String lotQty; + + @JsonProperty("BinCode") + private String binCode; + + +} diff --git a/src/main/java/com/wms/entity/app/mes/SendMesGoodsMoveRequest.java b/src/main/java/com/wms/entity/app/mes/SendMesGoodsMoveRequest.java new file mode 100644 index 0000000..de048c8 --- /dev/null +++ b/src/main/java/com/wms/entity/app/mes/SendMesGoodsMoveRequest.java @@ -0,0 +1,29 @@ +package com.wms.entity.app.mes; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +/** + * 发送mes移库完成 + */ +@Data +public class SendMesGoodsMoveRequest { + + @JsonProperty("guid") + private String guid; + + @JsonProperty("Losnr") + private String losnr; + + @JsonProperty("LotQty") + private String lotQty; + + @JsonProperty("FBinCOde") + private String fBinCode; + + @JsonProperty("TBinCode") + private String tBinCode; + + + +} diff --git a/src/main/java/com/wms/entity/app/mes/SendMesPutOutGoodsRequest.java b/src/main/java/com/wms/entity/app/mes/SendMesPutOutGoodsRequest.java new file mode 100644 index 0000000..7e8c8aa --- /dev/null +++ b/src/main/java/com/wms/entity/app/mes/SendMesPutOutGoodsRequest.java @@ -0,0 +1,27 @@ +package com.wms.entity.app.mes; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +import java.util.List; + +/** + * 发送mes出库信息 + */ +@Data +public class SendMesPutOutGoodsRequest { + + @JsonProperty("guid") + private String guid; + + @JsonProperty("TransferNo") + private String transferNo; + + @JsonProperty("Type") + private String type; + + @JsonProperty("Row") + private List row; + + +} diff --git a/src/main/java/com/wms/entity/app/mes/SendMesPutOutGoodsRow.java b/src/main/java/com/wms/entity/app/mes/SendMesPutOutGoodsRow.java new file mode 100644 index 0000000..7921c31 --- /dev/null +++ b/src/main/java/com/wms/entity/app/mes/SendMesPutOutGoodsRow.java @@ -0,0 +1,22 @@ +package com.wms.entity.app.mes; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +@Data +public class SendMesPutOutGoodsRow { + + @JsonProperty("TransferLine") + private String transferLine; + + @JsonProperty("Losnr") + private String losnr; + + @JsonProperty("LotQty") + private String lotQty; + + @JsonProperty("BinCode") + private String binCode; + + +} diff --git a/src/main/java/com/wms/service/serviceImplements/parent/ContainerImplement.java b/src/main/java/com/wms/service/serviceImplements/parent/ContainerImplement.java index ba71ce6..d085449 100644 --- a/src/main/java/com/wms/service/serviceImplements/parent/ContainerImplement.java +++ b/src/main/java/com/wms/service/serviceImplements/parent/ContainerImplement.java @@ -19,9 +19,14 @@ import com.wms.service.ContainerService; import com.wms.utils.StringUtils; import com.wms.utils.storage.LocationUtils; import lombok.RequiredArgsConstructor; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import com.wms.utils.WmsUtils; +import java.util.Calendar; +import java.util.Date; import java.util.List; import java.util.UUID; @@ -33,6 +38,7 @@ import java.util.UUID; public class ContainerImplement implements ContainerService { + private static final Logger log = LoggerFactory.getLogger(ContainerImplement.class); /** * 库存 Mapper */ @@ -89,7 +95,7 @@ public class ContainerImplement implements ContainerService { /* 找到可用的库位 */ /* 生成任务(生成的任务直接运行中,因为此处会把任务直接回回去),更新库存表内状态为入库中 */ // 新建任务 插入任务表 Task newInTask = new Task(); - newInTask.setTaskId(UUID.randomUUID().toString()); + newInTask.setTaskId(String.valueOf(Calendar.getInstance().getTimeInMillis())); newInTask.setTaskGroup(UUID.randomUUID().toString()); newInTask.setTaskType(TaskType.IN.getCode()); newInTask.setTaskStatus(WmsTaskStatus.WAIT.getCode()); // 因为任务是直接返回去的,所以直接是已下发状态 @@ -114,10 +120,11 @@ public class ContainerImplement implements ContainerService { updateStock.setLocationId(useLocation.getLocationId()); stockMapper.modifyStock(updateStock); } - // 释放库位 + // 占用库位 Location location = new Location(); location.setLocationId(useLocation.getLocationId()); - location.setLocationStatus(LocationStatus.EMPTY.getCode()); + location.setLocationStatus(LocationStatus.OCCUPY.getCode()); + location.setVehicleId(request.getPalletNo()); locationMapper.modifyLocation(location); CreateInstoreTaskResponse success = new CreateInstoreTaskResponse(); diff --git a/src/main/java/com/wms/service/serviceImplements/parent/MesServiceImplement.java b/src/main/java/com/wms/service/serviceImplements/parent/MesServiceImplement.java index 515ea24..50939f2 100644 --- a/src/main/java/com/wms/service/serviceImplements/parent/MesServiceImplement.java +++ b/src/main/java/com/wms/service/serviceImplements/parent/MesServiceImplement.java @@ -9,16 +9,14 @@ import com.wms.entity.table.*; import com.wms.mapper.*; import com.wms.service.MesService; import com.wms.utils.StringUtils; +import com.wms.utils.WmsUtils; import com.wms.utils.storage.StockUtils; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.sql.Timestamp; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Date; -import java.util.List; +import java.util.*; /** * 上位系统交互 @@ -111,7 +109,7 @@ public class MesServiceImplement implements MesService { orderOut.setOrderId(request.getTransferNo()); orderOut.setWarehouseOrigin(request.getFWarehouse()); orderOut.setWarehouseDestination(request.getTWarehouse()); - orderOut.setOrderType(3); + orderOut.setOrderType(request.getType()); orderOut.setDeliveryTime(StringUtils.toData(request.getRDate())); orderOut.setRowNo(Integer.parseInt(row.getTransferLine())); orderOut.setGoodsId(row.getItemCode()); @@ -154,17 +152,16 @@ public class MesServiceImplement implements MesService { break; } // 生成出库任务,更新库存为出库中 - int outNum = needNum > outStock.getAvailableNum() ? outStock.getAvailableNum() : needNum; // 需要操作的数量 Task task = new Task(); - task.setTaskId(String.format("%s-%s", request.getTransferNo(), outStock.getStockId())); + task.setTaskId(String.valueOf(Calendar.getInstance().getTimeInMillis())); task.setTaskType(TaskType.OUT.getCode()); task.setTaskStatus(OrderOutStatusEnum.CREATED.getCode()); task.setTaskGroup(request.getTransferNo()); task.setOrigin(outStock.getLocationId()); task.setDestination(""); - task.setPickStand(""); + task.setPickStand(request.getType().toString()); task.setWeight(0.0); task.setVehicleNo(outStock.getVehicleId()); task.setCreateTime(new Date()); @@ -234,10 +231,10 @@ public class MesServiceImplement implements MesService { return new MesApiLocalResponse(0, String.format("该库位有任务在执行,请稍后再试,库位:%s", stock.getLocationId())); } Task task = new Task(); - task.setTaskId(String.format("%s-%s", request.getGuid(), stock.getLocationId())); + task.setTaskId(String.valueOf(Calendar.getInstance().getTimeInMillis())); task.setTaskType(TaskType.INVENTORY.getCode()); task.setTaskStatus(OrderOutStatusEnum.CREATED.getCode()); - task.setTaskGroup(request.getIWarehouse()); + task.setTaskGroup(request.getInventoryNo()); task.setOrigin(stock.getLocationId()); task.setDestination(""); task.setPickStand(""); diff --git a/src/main/java/com/wms/utils/WmsUtils.java b/src/main/java/com/wms/utils/WmsUtils.java index e9d0b5b..1cafcd1 100644 --- a/src/main/java/com/wms/utils/WmsUtils.java +++ b/src/main/java/com/wms/utils/WmsUtils.java @@ -167,4 +167,8 @@ public class WmsUtils { public static Date getYear(int year){ return calculationYear(new Date(), year); } + + + + } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 59539cc..2a503a2 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,13 +1,13 @@ spring: # 本地测试环境 # datasource: -# url: jdbc:mysql://localhost:3306/wms_bk_xuzhou?characterEncoding=utf8&serverTimezone=Asia/Shanghai&allowMultiQueries=true +# url: jdbc:mysql://192.168.234.134:3306:3306/wms_bk_xuzhou?characterEncoding=utf8&serverTimezone=Asia/Shanghai&allowMultiQueries=true # username: developer # password: developer # 在线环境 datasource: - url: jdbc:mysql://192.168.234.134:3306/wms_yaxinke_yangzhou?characterEncoding=utf8&serverTimezone=Asia/Shanghai&allowMultiQueries=true + url: jdbc:mysql://172.21.80.150:3306/wms_yaxinke_yangzhou?characterEncoding=utf8&serverTimezone=Asia/Shanghai&allowMultiQueries=true username: developer password: developer