From f9b41b7ba20cfc6aa4a52454835d0fb0a7c84059 Mon Sep 17 00:00:00 2001 From: liangzhou <594755172@qq.com> Date: Tue, 3 Sep 2024 21:12:28 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=9B=B4=E6=96=B0=EF=BC=9A?= =?UTF-8?q?=201.=E5=A2=9E=E5=8A=A0=E9=9D=9E=E8=AE=A1=E5=88=92=E9=A2=86?= =?UTF-8?q?=E6=96=99=202=E3=80=82=E4=BF=AE=E6=94=B9=E9=83=A8=E5=88=86?= =?UTF-8?q?=E6=8B=89=E8=B4=A7=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/wms/controller/StockController.java | 6 +- .../com/wms/controller/TaskController.java | 337 ++++++++++++++---- .../wms/entity/app/request/PickNumQuery.java | 30 ++ .../wms/entity/app/vo/PickNumOfGoodsVo.java | 13 + .../com/wms/entity/table/NoPlanRecord.java | 10 + .../WmsTaskServiceImplements.java | 12 +- src/main/resources/application.yml | 16 +- 7 files changed, 330 insertions(+), 94 deletions(-) create mode 100644 src/main/java/com/wms/entity/app/request/PickNumQuery.java create mode 100644 src/main/java/com/wms/entity/app/vo/PickNumOfGoodsVo.java diff --git a/src/main/java/com/wms/controller/StockController.java b/src/main/java/com/wms/controller/StockController.java index 049c42e..b82815c 100644 --- a/src/main/java/com/wms/controller/StockController.java +++ b/src/main/java/com/wms/controller/StockController.java @@ -94,11 +94,11 @@ public class StockController { /** * 查询某个物料的库存总数 */ - @PostMapping("/getStocksByGoods") + @PostMapping("/getStockNumByGoodsId") @ResponseBody @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED) - public String getStocksByGoods(@RequestBody StockQuery stockQuery) { - logger.info("接收到查询物料库存数据请求:{},请求ip:{}", convertJsonString(stockQuery), HttpUtils.getIpAddr(servletRequest)); + public String getStockNumByGoodsId(@RequestBody StockQuery stockQuery) { + logger.info("接收到查询物料库存总数请求:{},请求ip:{}", convertJsonString(stockQuery), HttpUtils.getIpAddr(servletRequest)); ResponseEntity response = new ResponseEntity(); try { if (StringUtils.isEmpty(stockQuery.getGoodsId())) { diff --git a/src/main/java/com/wms/controller/TaskController.java b/src/main/java/com/wms/controller/TaskController.java index f1b0bd8..b086ea3 100644 --- a/src/main/java/com/wms/controller/TaskController.java +++ b/src/main/java/com/wms/controller/TaskController.java @@ -142,6 +142,10 @@ public class TaskController { * 站台要料服务 */ private final GoodsToStationService goodsToStationService; + /** + * 非计划领料服务 + */ + private final NoPlanRecordService noPlanRecordService; /** * Wcs服务 */ @@ -426,26 +430,30 @@ public class TaskController { continue; } if (outTask.getIsPicking() == 1) { - // 当前载具上所有库存状态设置为拣选 - stockService.update(new LambdaUpdateWrapper() - .set(Stock::getStockStatus, StockStatus.PICKING.getCode()) - .eq(Stock::getVehicleId, outTask.getVehicleId()) - .ne(Stock::getStockStatus, StockStatus.PICKING.getCode())); // 当前载具设置为出库中状态 vehicleService.update(new LambdaUpdateWrapper() .set(Vehicle::getVehicleStatus, VehicleStatus.OUT.getCode()) .eq(Vehicle::getVehicleId, outTask.getVehicleId()) .ne(Vehicle::getVehicleStatus, VehicleStatus.OUT.getCode())); - // 将该载具对应的拣选任务设置为可发送状态 - pickTaskService.update(new LambdaUpdateWrapper() - .set(PickTask::getPickStatus, PickTaskStatusEnum.NEW.getCode()) - .eq(PickTask::getVehicleId, outTask.getVehicleId()) - .eq(PickTask::getPickStatus, PickTaskStatusEnum.TEMP.getCode())); + if (StringUtils.isNotEmpty(outTask.getPickStand())) { + // 当前载具上所有库存状态设置为拣选 + stockService.update(new LambdaUpdateWrapper() + .set(Stock::getStockStatus, StockStatus.PICKING.getCode()) + .eq(Stock::getVehicleId, outTask.getVehicleId()) + .ne(Stock::getStockStatus, StockStatus.PICKING.getCode())); + // 将该载具对应的拣选任务设置为可发送状态 + pickTaskService.update(new LambdaUpdateWrapper() + .set(PickTask::getPickStatus, PickTaskStatusEnum.NEW.getCode()) + .eq(PickTask::getVehicleId, outTask.getVehicleId()) + .eq(PickTask::getPickStatus, PickTaskStatusEnum.TEMP.getCode())); + } } else {// 代表整出 // 删除当前载具上所有库存 stockService.remove(new LambdaQueryWrapper().eq(Stock::getVehicleId, outTask.getVehicleId())); // 删除载具 vehicleService.remove(new LambdaQueryWrapper().eq(Vehicle::getVehicleId, outTask.getVehicleId())); + // 删除当前载具的所有拣选任务 + pickTaskService.remove(new LambdaQueryWrapper().eq(PickTask::getVehicleId, outTask.getVehicleId())); } // 添加任务记录 outTask.setTaskStatus(WmsTaskStatus.FINISH.getCode()); @@ -2263,7 +2271,6 @@ public class TaskController { } // 查询库存 List stockList = stockService.list(new LambdaQueryWrapper() - .eq(Stock::getStockStatus, StockStatus.OK.getCode()) .apply("goods_related ->> '$.goodsId' = {0}", noPlanRequest.getGoodsId()) .apply("goods_related ->> '$.remainNum' > 0") .orderByAsc(Stock::getCreateTime)); @@ -2272,33 +2279,95 @@ public class TaskController { // 总数量 BigDecimal stockNum = stockOfGoodsList.stream().map(StockOfGoodsDto::getRemainNumSum).reduce(BigDecimal.ZERO, BigDecimal::add); if (stockList != null && !stockList.isEmpty()) { + // 需求数量 + BigDecimal needNum = noPlanRequest.getNeedNum(); List waitForOutStockList = new ArrayList<>(); - // TODO 生成出库任务 + // 出库任务列表 + List outTasks = new ArrayList<>(); // 尝试生成出库任务 -// for (Stock tempStock : stockList) { -// if (needNum.compareTo(BigDecimal.ZERO) <= 0) {// 需求数量小于等于0 -// break; -// } -// if (tempStock.getGoodsRelated().getRemainNum().compareTo(needNum) > 0) { -// // 当前箱子剩余物料数量多于需求数量 -// needNum = BigDecimal.ZERO; -// // 设置剩余数量 -// StockDetailInfo goodsRelated = tempStock.getGoodsRelated(); -// goodsRelated.setRemainNum(goodsRelated.getRemainNum().subtract(needNum)); -// tempStock.setGoodsRelated(goodsRelated); -// waitForOutStockList.add(tempStock); -// break; -// } else { -// // 当前箱子物料剩余数量少于需求数量 -// needNum = needNum.subtract(tempStock.getGoodsRelated().getRemainNum()); -// // 设置剩余数量 -// StockDetailInfo goodsRelated = tempStock.getGoodsRelated(); -// goodsRelated.setRemainNum(BigDecimal.ZERO); -// tempStock.setGoodsRelated(goodsRelated); -// waitForOutStockList.add(tempStock); -// } -// } -// createVehicleOutTaskAndPickTask(waitForOutStockList, workStation); + for (Stock tempStock : stockList) { + if (needNum.compareTo(BigDecimal.ZERO) <= 0) {// 需求数量小于等于0 + break; + } + if (Objects.equals(tempStock.getStockStatus(), StockStatus.OK.getCode())) { + if (tempStock.getGoodsRelated().getRemainNum().compareTo(needNum) > 0) { + // 当前箱子剩余物料数量多于需求数量 + needNum = BigDecimal.ZERO; + // 设置剩余数量 + StockDetailInfo goodsRelated = tempStock.getGoodsRelated(); + goodsRelated.setRemainNum(goodsRelated.getRemainNum().subtract(needNum)); + tempStock.setGoodsRelated(goodsRelated); + waitForOutStockList.add(tempStock); + break; + } else { + // 当前箱子物料剩余数量少于需求数量 + needNum = needNum.subtract(tempStock.getGoodsRelated().getRemainNum()); + // 设置剩余数量 + StockDetailInfo goodsRelated = tempStock.getGoodsRelated(); + goodsRelated.setRemainNum(BigDecimal.ZERO); + tempStock.setGoodsRelated(goodsRelated); + waitForOutStockList.add(tempStock); + } + // 创建出库任务 + Task tempOutTask = new Task(); + tempOutTask.setTaskId(generateId("CK_")); + tempOutTask.setTaskType(TaskType.OUT.getCode()); + tempOutTask.setTaskGroup(generateId("")); + tempOutTask.setTaskStatus(WmsTaskStatus.NEW.getCode()); + tempOutTask.setTaskPriority(2); + tempOutTask.setVehicleId(tempStock.getVehicleId()); + tempOutTask.setUserName(noPlanRequest.getUserName()); + tempOutTask.setOrigin(tempStock.getLocationId()); + tempOutTask.setDestination(""); + tempOutTask.setCreateTime(LocalDateTime.now()); + tempOutTask.setIsPicking(1); + outTasks.add(tempOutTask); + } else if (Objects.equals(tempStock.getStockStatus(), StockStatus.OUT.getCode())) { + // 判断这个料箱是否有拣选任务 + boolean hasPickTask = pickTaskService.exists(new LambdaQueryWrapper() + .eq(PickTask::getVehicleId, tempStock.getVehicleId())); + if (!hasPickTask) { + // 有拣选任务时,不做处理 + if (tempStock.getGoodsRelated().getRemainNum().compareTo(needNum) > 0) { + // 当前箱子剩余物料数量多于需求数量 + needNum = BigDecimal.ZERO; + // 设置剩余数量 + StockDetailInfo goodsRelated = tempStock.getGoodsRelated(); + goodsRelated.setRemainNum(goodsRelated.getRemainNum().subtract(needNum)); + tempStock.setGoodsRelated(goodsRelated); + waitForOutStockList.add(tempStock); + break; + } else { + // 当前箱子物料剩余数量少于需求数量 + needNum = needNum.subtract(tempStock.getGoodsRelated().getRemainNum()); + // 设置剩余数量 + StockDetailInfo goodsRelated = tempStock.getGoodsRelated(); + goodsRelated.setRemainNum(BigDecimal.ZERO); + tempStock.setGoodsRelated(goodsRelated); + waitForOutStockList.add(tempStock); + } + } + } + } + if (waitForOutStockList.isEmpty()) { + logger.error("所有库存在站台备料中。"); + response.setCode(ResponseCode.ERROR.getCode()); + response.setMessage("所有库存在站台备料中。"); + return convertJsonString(response); + } + // 添加出库任务 + taskService.saveBatch(outTasks); + List vehicleIds = outTasks.stream().map(Task::getVehicleId).distinct().toList(); + // 更新库存状态 + stockService.update(new LambdaUpdateWrapper() + .set(Stock::getStockStatus, StockStatus.OUT.getCode()) + .in(Stock::getVehicleId, vehicleIds) + .eq(Stock::getStockStatus, StockStatus.OK.getCode())); + // 更新料箱状态 + vehicleService.update(new LambdaUpdateWrapper() + .set(Vehicle::getVehicleStatus, VehicleStatus.OUT.getCode()) + .in(Vehicle::getVehicleId, vehicleIds) + .eq(Vehicle::getVehicleStatus, VehicleStatus.ON.getCode())); // 非计划领料记录生成 NoPlanRecord noPlanRecord = new NoPlanRecord(); noPlanRecord.setRecordId(generateId("CLC-NO-PLAN_")); @@ -2306,22 +2375,25 @@ public class TaskController { noPlanRecord.setGoodsId(noPlanRequest.getGoodsId()); noPlanRecord.setNeedNum(noPlanRequest.getNeedNum()); noPlanRecord.setStockNum(stockNum); - } else { - if (stockNum.compareTo(BigDecimal.ZERO) > 0) { - logger.error("所有库存在站台备料中。"); - response.setCode(ResponseCode.ERROR.getCode()); - response.setMessage("所有库存在站台备料中。"); - } else { - logger.error("非计划领料没有库存。"); - response.setCode(ResponseCode.ERROR.getCode()); - response.setMessage("非计划领料没有库存。"); - } - return convertJsonString(response); - } + noPlanRecord.setWorkOrder(noPlanRequest.getWorkOrder()); + noPlanRecord.setSmallVehicleNo(noPlanRequest.getSmallVehicleNo()); + noPlanRecord.setCallReason(noPlanRequest.getCallReason()); + noPlanRecord.setFlowNo(noPlanRequest.getFlowNo()); + noPlanRecord.setRemark(noPlanRequest.getRemark()); + noPlanRecord.setCallTime(LocalDateTime.now()); + noPlanRecord.setCallUser(noPlanRequest.getCallUser()); + noPlanRecord.setPickedNum(BigDecimal.ZERO); + noPlanRecord.setPickStatus(0);// 未拣选 + noPlanRecordService.save(noPlanRecord); - logger.info("处理整理盒子请求成功。"); - response.setCode(ResponseCode.OK.getCode()); - response.setMessage("请根据灯光拣选盒子。"); + logger.info("处理直接物料非计划领料请求成功。"); + response.setCode(ResponseCode.OK.getCode()); + response.setMessage("处理直接物料非计划领料请求成功。"); + } else { + logger.error("非计划领料没有库存。"); + response.setCode(ResponseCode.ERROR.getCode()); + response.setMessage("非计划领料没有库存。"); + } return convertJsonString(response); } catch (Exception e) { // 回滚事务 @@ -2333,45 +2405,156 @@ public class TaskController { } } + /** + * 获取当前物料的待领料数量 + * + * @param pickNumQuery 请求信息 + * @return 结果 + */ + @PostMapping("/getCurrentGoodsPickNum") + @ResponseBody + @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED) + @MyLog(logTitle = "获取当前物料的待领料数量", logMethod = "getCurrentGoodsPickNum") + public String getCurrentGoodsPickNum(@RequestBody PickNumQuery pickNumQuery) { + logger.info("获取当前物料的待领料数量:{},ip地址:{}", convertJsonString(pickNumQuery), HttpUtils.getIpAddr(servletRequest)); + ResponseEntity response = new ResponseEntity(); + try { + + logger.info("获取当前物料的待领料数量成功。"); + response.setCode(ResponseCode.OK.getCode()); + response.setMessage("获取当前物料的待领料数量成功。"); + return convertJsonString(response); + } catch (Exception e) { + // 回滚事务 + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + logger.error("获取当前物料的待领料数量异常,{}", convertJsonString(e)); + response.setCode(ResponseCode.ERROR.getCode()); + response.setMessage("获取当前物料的待领料数量异常。"); + return convertJsonString(response); + } + } + /** * 直接物料非计划领料确认回库 * - * @param noPlanRequest 请求信息 + * @param pickNumQuery 请求信息 * @return 结果 */ @PostMapping("/clcNoPlanConfirmBack") @ResponseBody @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED) @MyLog(logTitle = "直接物料非计划领料确认回库", logMethod = "clcNoPlanConfirmBack") - public String clcNoPlanConfirmBack(@RequestBody NoPlanRequest noPlanRequest) { - logger.info("直接物料非计划领料确认回库:{},ip地址:{}", convertJsonString(noPlanRequest), HttpUtils.getIpAddr(servletRequest)); + public String clcNoPlanConfirmBack(@RequestBody PickNumQuery pickNumQuery) { + logger.info("直接物料非计划领料确认回库:{},ip地址:{}", convertJsonString(pickNumQuery), HttpUtils.getIpAddr(servletRequest)); ResponseEntity response = new ResponseEntity(); try { - // 获取站台号 - Stand targetStand; - if (StringUtils.isNotEmpty(noPlanRequest.getStandId())) { - // 站台号从请求参数中获取 - targetStand = standService.getById(noPlanRequest.getStandId()); - } else { - // 站台号从ip获取 - targetStand = standService.getOne(new LambdaQueryWrapper() - .eq(Stand::getStandIp, HttpUtils.getIpAddr(servletRequest)) - .eq(Stand::getStandType, 1) - .last("limit 1")); - } - if (targetStand == null) { - logger.error("查询拣选站台错误。"); - response.setCode(ResponseCode.ERROR.getCode()); - response.setMessage("查询拣选站台错误。"); + // TODO 确认拣货完成回库 + // 判断信息是否完备 + if (StringUtils.isEmpty(pickNumQuery.getGoodsId()) + || StringUtils.isEmpty(pickNumQuery.getVehicleId()) + || pickNumQuery.getRealPickNum() == null) { + logger.error("请求缺少必须参数,箱号、料号、数量不可缺少。"); + response.setCode(ResponseCode.OK.getCode()); + response.setMessage("请求缺少必须参数,箱号、料号、数量不可缺少。"); return convertJsonString(response); } - // 查询库存 - // Task中的isPicking=1 - - - logger.info("处理整理盒子请求成功。"); - response.setCode(ResponseCode.OK.getCode()); - response.setMessage("请根据灯光拣选盒子。"); + // 更新库存 + Stock existStock = stockService.getOne(new LambdaQueryWrapper() + .apply("goods_related -> '$.goodsId' = {0}", pickNumQuery.getGoodsId()) + .eq(Stock::getVehicleId, pickNumQuery.getVehicleId()) + .last("limit 1")); + // 更新库存数量 + if (existStock != null && existStock.getGoodsRelated() != null) { + StockDetailInfo goodsDetail = existStock.getGoodsRelated(); + goodsDetail.setRemainNum(goodsDetail.getRemainNum().subtract(pickNumQuery.getRealPickNum())); + existStock.setGoodsRelated(goodsDetail); + stockService.updateById(existStock); + } + // 判断这个箱子是否还有拣选任务 + boolean hasPickTasks = pickTaskService.exists(new LambdaQueryWrapper() + .eq(PickTask::getVehicleId, pickNumQuery.getVehicleId())); + if (!hasPickTasks) { + // 判断当前载具是否有回库任务 + boolean hasBackTask = taskService.exists(new LambdaQueryWrapper() + .eq(Task::getVehicleId, pickNumQuery.getVehicleId()) + .eq(Task::getTaskType, TaskType.IN.getCode()) + .likeRight(Task::getTaskId, "HK_")); + if (!hasBackTask) { + // 判断当前载具是否有入库任务 + boolean hasInTask = taskService.exists(new LambdaQueryWrapper() + .eq(Task::getVehicleId, pickNumQuery.getVehicleId()) + .eq(Task::getTaskType, TaskType.IN.getCode()) + .eq(Task::getTaskStatus, WmsTaskStatus.TEMP.getCode()) + .likeRight(Task::getTaskId, "RK_")); + if (!hasInTask) { + // 寻找库位 + String nextLocationId = ""; + for (int i = 0; i < locationService.count(new LambdaQueryWrapper().eq(Location::getLocationStatus, LocationStatus.EMPTY.getCode())); i++) { + Map resultMap = locationService.getOneLocation("", ""); + if (resultMap.isEmpty() || !resultMap.containsKey("nextLocationId")) { + logger.error("暂无可用库位"); + response.setCode(ResponseCode.ERROR.getCode()); + response.setMessage("暂无可用库位!"); + return convertJsonString(response); + } else { + Location nextLocation = locationService.getOne(new LambdaQueryWrapper().eq(Location::getLocationId, resultMap.get("nextLocationId")).last("limit 1")); + LambdaUpdateWrapper updateLocationWrapper = new LambdaUpdateWrapper() + .set(Location::getLocationStatus, LocationStatus.OCCUPY.getCode()) + .set(Location::getVehicleId, pickNumQuery.getVehicleId()) + .eq(Location::getLocationId, nextLocation.getLocationId()) + .eq(Location::getLocationStatus, LocationStatus.EMPTY.getCode()); + if (locationService.update(updateLocationWrapper)) { + nextLocationId = resultMap.get("nextLocationId"); + break; + } + } + } + if (Objects.equals(nextLocationId, "")) { + logger.error("暂无可用库位"); + response.setCode(ResponseCode.ERROR.getCode()); + response.setMessage("暂无可用库位!"); + return convertJsonString(response); + } + // 生成回库任务 + Task backTask = new Task(); + backTask.setTaskId(generateId("HK_")); + backTask.setTaskGroup(generateId("")); + backTask.setTaskType(TaskType.IN.getCode()); + backTask.setTaskStatus(WmsTaskStatus.NEW.getCode()); + backTask.setVehicleId(pickNumQuery.getVehicleId()); + backTask.setDestination(nextLocationId); + backTask.setVehicleSize(1); + backTask.setWeight(BigDecimal.ZERO); + backTask.setTaskPriority(1); + backTask.setUserName(pickNumQuery.getUserName()); + backTask.setCreateTime(LocalDateTime.now()); + if (taskService.save(backTask)) { + // 设置库存状态为回库中 + stockService.update(new LambdaUpdateWrapper() + .set(Stock::getStockStatus, StockStatus.BACK.getCode()) + .eq(Stock::getVehicleId, pickNumQuery.getVehicleId())); + } else { + // 回退库位锁定 + locationService.update(new LambdaUpdateWrapper() + .set(Location::getLocationStatus, LocationStatus.EMPTY.getCode()) + .set(Location::getVehicleId, "") + .eq(Location::getLocationId, nextLocationId) + .eq(Location::getLocationStatus, LocationStatus.OCCUPY.getCode())); + logger.error("生成回库任务失败,箱号:{}", pickNumQuery.getVehicleId()); + response.setCode(ResponseCode.ERROR.getCode()); + response.setMessage("生成回库任务失败。"); + return convertJsonString(response); + } + } + } + logger.info("确认回库成功。"); + response.setCode(ResponseCode.OK.getCode()); + response.setMessage("确认回库成功。"); + } else { + logger.error("当前箱子还有拣选任务,不能回库,请将箱子置入拣货环线。"); + response.setCode(ResponseCode.ERROR.getCode()); + response.setMessage("当前箱子还有拣选任务,不能回库,请将箱子置入拣货环线。"); + } return convertJsonString(response); } catch (Exception e) { // 回滚事务 diff --git a/src/main/java/com/wms/entity/app/request/PickNumQuery.java b/src/main/java/com/wms/entity/app/request/PickNumQuery.java new file mode 100644 index 0000000..02113cb --- /dev/null +++ b/src/main/java/com/wms/entity/app/request/PickNumQuery.java @@ -0,0 +1,30 @@ +package com.wms.entity.app.request; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; + +/** + * 拣货/领料数量确认 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class PickNumQuery extends PageQuery{ + /** + * 箱号 + */ + @JsonProperty("vehicleId") + private String vehicleId; + /** + * 料号 + */ + @JsonProperty("goodsId") + private String goodsId; + /** + * 领料数量 + */ + @JsonProperty("realPickNum") + private BigDecimal realPickNum; +} diff --git a/src/main/java/com/wms/entity/app/vo/PickNumOfGoodsVo.java b/src/main/java/com/wms/entity/app/vo/PickNumOfGoodsVo.java new file mode 100644 index 0000000..9abef9b --- /dev/null +++ b/src/main/java/com/wms/entity/app/vo/PickNumOfGoodsVo.java @@ -0,0 +1,13 @@ +package com.wms.entity.app.vo; + +import com.wms.entity.app.request.PickNumQuery; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 非计划领料界面显示领料数量 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class PickNumOfGoodsVo extends PickNumQuery { +} diff --git a/src/main/java/com/wms/entity/table/NoPlanRecord.java b/src/main/java/com/wms/entity/table/NoPlanRecord.java index 4feee94..dbeed97 100644 --- a/src/main/java/com/wms/entity/table/NoPlanRecord.java +++ b/src/main/java/com/wms/entity/table/NoPlanRecord.java @@ -74,4 +74,14 @@ public class NoPlanRecord { */ @TableField("call_user") private String callUser; + /** + * 已拣选数量 + */ + @TableField("picked_num") + private BigDecimal pickedNum; + /** + * 状态 + */ + @TableField("pick_status") + private Integer pickStatus; } diff --git a/src/main/java/com/wms/service/business/serviceImplements/WmsTaskServiceImplements.java b/src/main/java/com/wms/service/business/serviceImplements/WmsTaskServiceImplements.java index 5936511..ed8ddee 100644 --- a/src/main/java/com/wms/service/business/serviceImplements/WmsTaskServiceImplements.java +++ b/src/main/java/com/wms/service/business/serviceImplements/WmsTaskServiceImplements.java @@ -317,19 +317,19 @@ public class WmsTaskServiceImplements implements IWmsTaskService { .apply("goods_related ->> '$.remainNum' > 0") .last("limit 1")); if (stock == null) { - // 没有库存,那么就要移除当前的outsideVehicles - outsideVehiclesService.removeById(outsideVehicle.getOutsideId()); + // 没有库存, + outsideVehicle.setRemainNum(BigDecimal.ZERO); + outsideVehiclesService.updateById(outsideVehicle); } else { - StockDetailInfo goodsRelated = stock.getGoodsRelated(); - if (goodsRelated.getRemainNum().compareTo(needNum) > 0) { + if (outsideVehicle.getRemainNum().compareTo(needNum) > 0) { // 当前箱子剩余物料数量多于需求数量 needNum = BigDecimal.ZERO; - outsideVehicle.setRemainNum(goodsRelated.getRemainNum().subtract(needNum)); + outsideVehicle.setRemainNum(outsideVehicle.getRemainNum().subtract(needNum)); usedOutsideVehiclesList.add(outsideVehicle); break; } else { // 当前箱子物料剩余数量少于需求数量 - needNum = needNum.subtract(goodsRelated.getRemainNum()); + needNum = needNum.subtract(outsideVehicle.getRemainNum()); outsideVehicle.setRemainNum(BigDecimal.ZERO); usedOutsideVehiclesList.add(outsideVehicle); } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index c7d9413..dbba78b 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -8,20 +8,20 @@ spring: # 主库 master: # 卡特数据库服务器 - url: jdbc:mysql://10.90.36.71:3306/wms_kate_suzhou?characterEncoding=utf8&serverTimezone=Asia/Shanghai&allowMultiQueries=true&rewriteBatchedStatements=true - username: developer - password: developer - driver-class-name: com.mysql.cj.jdbc.Driver +# url: jdbc:mysql://10.90.36.71:3306/wms_kate_suzhou?characterEncoding=utf8&serverTimezone=Asia/Shanghai&allowMultiQueries=true&rewriteBatchedStatements=true +# username: developer +# password: developer +# driver-class-name: com.mysql.cj.jdbc.Driver # 宝开服务器--内网 # url: jdbc:mysql://192.168.3.254:3306/wms_kate_suzhou?characterEncoding=utf8&serverTimezone=Asia/Shanghai&allowMultiQueries=true&rewriteBatchedStatements=true # username: coder # password: coder # driver-class-name: com.mysql.cj.jdbc.Driver # # 本地环境 -# url: jdbc:mysql://localhost:3306/wms_kate_suzhou?characterEncoding=utf8&serverTimezone=Asia/Shanghai&allowMultiQueries=true&rewriteBatchedStatements=true -# username: developer -# password: developer -# driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://localhost:3306/wms_kate_suzhou?characterEncoding=utf8&serverTimezone=Asia/Shanghai&allowMultiQueries=true&rewriteBatchedStatements=true + username: developer + password: developer + driver-class-name: com.mysql.cj.jdbc.Driver # 从库 # slave_1: # url: jdbc:mysql://localhost:3306/wms_aaa?characterEncoding=utf8&serverTimezone=Asia/Shanghai&allowMultiQueries=true&rewriteBatchedStatements=true