From 3be86adb1af4b636089cbcb79c393890542fc5c6 Mon Sep 17 00:00:00 2001 From: liangzhou <594755172@qq.com> Date: Fri, 26 Jul 2024 17:00:12 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/wms/constants/WmsConstants.java | 2 +- .../com/wms/controller/TaskController.java | 101 ++++++++++++++++++ .../com/wms/entity/app/dto/VehicleDto.java | 6 ++ .../app/request/CallEmptyVehicleRequest.java | 28 +++++ .../java/com/wms/entity/app/vo/VehicleVO.java | 10 ++ 5 files changed, 146 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/wms/entity/app/request/CallEmptyVehicleRequest.java diff --git a/src/main/java/com/wms/constants/WmsConstants.java b/src/main/java/com/wms/constants/WmsConstants.java index dcb5b1a..8fcded6 100644 --- a/src/main/java/com/wms/constants/WmsConstants.java +++ b/src/main/java/com/wms/constants/WmsConstants.java @@ -21,7 +21,7 @@ public class WmsConstants { .put("LR02", "CLC一箱一料") .put("UD01", "CLC一箱两料") .put("FC01", "CLC一箱一料") - .put("FB01", "No-CLC一箱一料") + .put("FB01", "No-CLC") .put("FB02", "间接物料") .put("FB03", "间接物料") .put("FB04", "间接物料") diff --git a/src/main/java/com/wms/controller/TaskController.java b/src/main/java/com/wms/controller/TaskController.java index 3d977e4..c7e6509 100644 --- a/src/main/java/com/wms/controller/TaskController.java +++ b/src/main/java/com/wms/controller/TaskController.java @@ -1421,4 +1421,105 @@ public class TaskController { return convertJsonString(response); } } + + /** + * 呼叫空箱 + * + * @param callEmptyVehicleRequest 请求信息 + * @return 结果 + */ + @PostMapping("/callEmptyVehicle") + @ResponseBody + @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED) + @MyLog(logTitle = "呼叫空箱", logMethod = "callEmptyVehicle") + public String callEmptyVehicle(@RequestBody CallEmptyVehicleRequest callEmptyVehicleRequest) { + logger.info("呼叫空箱:{},ip地址:{}", convertJsonString(callEmptyVehicleRequest), HttpUtils.getIpAddr(servletRequest)); + ResponseEntity response = new ResponseEntity(); + try { + // 验证数量 + if (callEmptyVehicleRequest.getNeedNum() == null || callEmptyVehicleRequest.getNeedNum() <= 0) { + logger.error("料箱数量必须为大于0的整数"); + response.setCode(ResponseCode.ERROR.getCode()); + response.setMessage("料箱数量必须为大于0的整数"); + return convertJsonString(response); + } + // 验证请求信息 + if (Objects.equals(callEmptyVehicleRequest.getVehicleType2(), "CLC一箱一料")) { + if (!Objects.equals(callEmptyVehicleRequest.getVehicleType1(), "LR02") && !Objects.equals(callEmptyVehicleRequest.getVehicleType1(), "FC01")) { + logger.error("料箱类型选择错误,{}与{}不对应。", callEmptyVehicleRequest.getVehicleType1(), callEmptyVehicleRequest.getVehicleType2()); + response.setCode(ResponseCode.ERROR.getCode()); + response.setMessage("料箱类型选择错误,与存放类型不对应。"); + return convertJsonString(response); + } + } else if (Objects.equals(callEmptyVehicleRequest.getVehicleType2(), "CLC一箱两料")) { + if (!Objects.equals(callEmptyVehicleRequest.getVehicleType1(), "LR01") && !Objects.equals(callEmptyVehicleRequest.getVehicleType1(), "UD01")) { + logger.error("料箱类型选择错误,{}与{}不对应。", callEmptyVehicleRequest.getVehicleType1(), callEmptyVehicleRequest.getVehicleType2()); + response.setCode(ResponseCode.ERROR.getCode()); + response.setMessage("料箱类型选择错误,与存放类型不对应。"); + return convertJsonString(response); + } + } else if (Objects.equals(callEmptyVehicleRequest.getVehicleType2(), "间接物料")) { + if (StringUtils.isEmpty(callEmptyVehicleRequest.getGoodsId())) { + logger.error("间接物料必须输入物料号"); + response.setCode(ResponseCode.ERROR.getCode()); + response.setMessage("间接物料必须输入物料号"); + return convertJsonString(response); + } + // 查询物料是否是间接物料 + Goods goods = goodsService.getOne(new LambdaQueryWrapper().eq(Goods::getGoodsId, callEmptyVehicleRequest.getGoodsId()).eq(Goods::getGoodsInVehicleType, "间接物料")); + if (goods == null) { + logger.error("当前物料不是间接物料"); + response.setCode(ResponseCode.ERROR.getCode()); + response.setMessage("当前物料不是间接物料"); + return convertJsonString(response); + } + callEmptyVehicleRequest.setVehicleType1(goods.getVehicleType()); + } else if (Objects.equals(callEmptyVehicleRequest.getVehicleType2(), "No-CLC")) { + // 设定料箱类型 + callEmptyVehicleRequest.setVehicleType1("FB01"); + } else { + logger.error("请选择正确的存放类型"); + response.setCode(ResponseCode.ERROR.getCode()); + response.setMessage("请选择正确的存放类型"); + return convertJsonString(response); + } + + // 生成料箱出库任务 + int needNum = callEmptyVehicleRequest.getNeedNum(); + List vehicleOutTasks = new ArrayList<>(); + while (needNum > 0) { + // 先找空箱 + Vehicle emptyVehicle = vehicleService.getOne(new LambdaQueryWrapper() + .eq(Vehicle::getVehicleType, callEmptyVehicleRequest.getVehicleType1()) + .eq(Vehicle::getIsEmpty, 1) + .orderByAsc(Vehicle::getLastInTime)); + if (emptyVehicle != null) {// 有可用的空箱 + // 创建一个空箱出库任务 + Task emptyVehicleTask = new Task(); + emptyVehicleTask.setTaskId("VCK_"); + emptyVehicleTask.setTaskType(TaskType.OUT.getCode()); + emptyVehicleTask.setTaskStatus(WmsTaskStatus.NEW.getCode()); + emptyVehicleTask.setOrigin(emptyVehicle.getCurrentLocation()); + // TODO 这里的终点与Wcs商量传不传 + emptyVehicleTask.setDestination(""); + } else {// 已经没有空箱可用了 + break; + } + needNum--; + } + + + + return convertJsonString(response); + } catch (Exception e) { + // 回滚事务 + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + logger.error("工作完成确认异常"); + response.setCode(ResponseCode.ERROR.getCode()); + response.setMessage("工作完成确认异常"); + return convertJsonString(response); + } + } + + // TODO 接收Wcs询问是否回库的请求 } \ No newline at end of file diff --git a/src/main/java/com/wms/entity/app/dto/VehicleDto.java b/src/main/java/com/wms/entity/app/dto/VehicleDto.java index e695223..bd76708 100644 --- a/src/main/java/com/wms/entity/app/dto/VehicleDto.java +++ b/src/main/java/com/wms/entity/app/dto/VehicleDto.java @@ -3,6 +3,8 @@ package com.wms.entity.app.dto; import com.wms.entity.app.dto.extend.VehicleDetailInfo; import lombok.Data; +import java.time.LocalDateTime; + /** * 载具 */ @@ -32,4 +34,8 @@ public class VehicleDto { * 额外信息 */ private VehicleDetailInfo details; + /** + * 上次入库时间 + */ + private LocalDateTime lastInTime; } diff --git a/src/main/java/com/wms/entity/app/request/CallEmptyVehicleRequest.java b/src/main/java/com/wms/entity/app/request/CallEmptyVehicleRequest.java new file mode 100644 index 0000000..d0bc373 --- /dev/null +++ b/src/main/java/com/wms/entity/app/request/CallEmptyVehicleRequest.java @@ -0,0 +1,28 @@ +package com.wms.entity.app.request; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +@Data +public class CallEmptyVehicleRequest { + /** + * 料箱类型 + */ + @JsonProperty("vehicleType1") + private String vehicleType1; + /** + * 存放类型 + */ + @JsonProperty("vehicleType2") + private String vehicleType2; + /** + * 料号 + */ + @JsonProperty("goodsId") + private String goodsId; + /** + * 料箱数量 + */ + @JsonProperty("needNum") + private Integer needNum; +} diff --git a/src/main/java/com/wms/entity/app/vo/VehicleVO.java b/src/main/java/com/wms/entity/app/vo/VehicleVO.java index 76566cf..3551d05 100644 --- a/src/main/java/com/wms/entity/app/vo/VehicleVO.java +++ b/src/main/java/com/wms/entity/app/vo/VehicleVO.java @@ -1,7 +1,11 @@ package com.wms.entity.app.vo; +import com.fasterxml.jackson.annotation.JsonFormat; import com.wms.entity.app.dto.extend.VehicleDetailInfo; import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.time.LocalDateTime; /** * 载具VO @@ -32,4 +36,10 @@ public class VehicleVO { * 额外信息 */ private VehicleDetailInfo details; + /** + * 上次入库时间 + */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime lastInTime; }