From 6fededdd308516388b2ce054e5f0b237749e0da6 Mon Sep 17 00:00:00 2001 From: liangzhou <594755172@qq.com> Date: Fri, 4 Oct 2024 17:05:05 +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.=E6=95=B4=E7=90=86=E7=9B=92=E5=AD=90=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/wms/controller/StockController.java | 7 +- .../com/wms/controller/TaskController.java | 265 ++++++++++++++---- .../entity/app/request/SortBoxRequest.java | 7 +- .../service/IStockUpdateRecordService.java | 4 +- .../WmsTaskServiceImplements.java | 1 - .../StockUpdateRecordServiceImpl.java | 4 +- .../UserServiceImplements.java | 9 +- 7 files changed, 230 insertions(+), 67 deletions(-) diff --git a/src/main/java/com/wms/controller/StockController.java b/src/main/java/com/wms/controller/StockController.java index 3b03dca..b02752f 100644 --- a/src/main/java/com/wms/controller/StockController.java +++ b/src/main/java/com/wms/controller/StockController.java @@ -195,7 +195,7 @@ public class StockController { .eq(Vehicle::getVehicleId, stockBefore.getVehicleId()) .eq(Vehicle::getIsEmpty, 0)); } - stockUpdateRecordService.addStockUpdateRecord(stockBefore, null, StockUpdateReasonEnum.DELETE_CLIENT.getReason(), stockQuery.getUserName()); + stockUpdateRecordService.addStockUpdateRecord(stockBefore, null, StockUpdateReasonEnum.DELETE_CLIENT.getReason(), stockQuery.getUserName(), stockBefore.getGoodsRelated().getRemainNum()); // 返回成功 logger.info("数量为0,删除库存成功"); rsp.setCode(ResponseCode.OK.getCode()); @@ -209,6 +209,7 @@ public class StockController { } else { // 更新库存---只能更新一部分列 Stock updatingStock = BeanUtil.copyProperties(stockBefore, Stock.class); + BigDecimal quantityBefore = stockBefore.getGoodsRelated().getRemainNum(); updatingStock.setStockStatus(stockQuery.getStockStatus()); if (StringUtils.isNotEmpty(stockQuery.getLocationId()) && locationService.exists(new LambdaQueryWrapper().eq(Location::getLocationId, stockQuery.getLocationId()))) { updatingStock.setLocationId(stockQuery.getLocationId()); @@ -223,7 +224,7 @@ public class StockController { } // 更新库存 if (stockService.update(updatingStock, stockLambdaQueryWrapper)) { - stockUpdateRecordService.addStockUpdateRecord(stockBefore, updatingStock, StockUpdateReasonEnum.UPDATE_CLIENT.getReason(), stockQuery.getUserName()); + stockUpdateRecordService.addStockUpdateRecord(stockBefore, updatingStock, StockUpdateReasonEnum.UPDATE_CLIENT.getReason(), stockQuery.getUserName(), quantityBefore); // 返回成功 logger.info("更新库存信息成功"); rsp.setCode(ResponseCode.OK.getCode()); @@ -272,7 +273,7 @@ public class StockController { .set(Vehicle::getIsEmpty, 0) .eq(Vehicle::getVehicleId, stockPo.getVehicleId()) .eq(Vehicle::getIsEmpty, 1)); - stockUpdateRecordService.addStockUpdateRecord(null, stockPo, StockUpdateReasonEnum.ADD_CLIENT.getReason(), stockQuery.getUserName()); + stockUpdateRecordService.addStockUpdateRecord(null, stockPo, StockUpdateReasonEnum.ADD_CLIENT.getReason(), stockQuery.getUserName(), BigDecimal.ZERO); // 返回成功 logger.info("添加库存信息成功"); rsp.setCode(ResponseCode.OK.getCode()); diff --git a/src/main/java/com/wms/controller/TaskController.java b/src/main/java/com/wms/controller/TaskController.java index 4f22c78..31ac91d 100644 --- a/src/main/java/com/wms/controller/TaskController.java +++ b/src/main/java/com/wms/controller/TaskController.java @@ -336,12 +336,13 @@ public class TaskController { .last("limit 1")); if (existStock != null) { Stock originStock = BeanUtil.copyProperties(existStock, Stock.class); + BigDecimal quantityBefore = originStock.getGoodsRelated().getRemainNum(); // 已有库存,直接更新数量 existStock.setLocationId(inTask.getDestination()); existStock.getGoodsRelated().setRemainNum(existStock.getGoodsRelated().getRemainNum().add(inTask.getGoodsRelated().getOpNum())); existStock.getGoodsRelated().setTotalNum(existStock.getGoodsRelated().getTotalNum().add(inTask.getGoodsRelated().getOpNum())); stockService.update(existStock, new LambdaUpdateWrapper().eq(Stock::getStockId, existStock.getStockId())); - stockUpdateRecordService.addStockUpdateRecord(originStock, existStock, StockUpdateReasonEnum.UPDATE_IN.getReason(), inTask.getUserName()); + stockUpdateRecordService.addStockUpdateRecord(originStock, existStock, StockUpdateReasonEnum.UPDATE_IN.getReason(), inTask.getUserName(), quantityBefore); } else { Stock newStock = new Stock(); newStock.setStockId(generateId("ST_")); @@ -359,7 +360,7 @@ public class TaskController { detailInfo.setTotalNum(inTask.getGoodsRelated().getOpNum()); newStock.setGoodsRelated(detailInfo); stockService.save(newStock); - stockUpdateRecordService.addStockUpdateRecord(null, newStock, StockUpdateReasonEnum.ADD_IN.getReason(), inTask.getUserName()); + stockUpdateRecordService.addStockUpdateRecord(null, newStock, StockUpdateReasonEnum.ADD_IN.getReason(), inTask.getUserName(), BigDecimal.ZERO); } } } @@ -461,7 +462,7 @@ public class TaskController { // 删除当前载具上所有库存 List removeStocks = stockService.list(new LambdaQueryWrapper().eq(Stock::getVehicleId, outTask.getVehicleId())); for (Stock stock : removeStocks) { - stockUpdateRecordService.addStockUpdateRecord(stock, null, StockUpdateReasonEnum.FULL_OUT.getReason(), outTask.getUserName()); + stockUpdateRecordService.addStockUpdateRecord(stock, null, StockUpdateReasonEnum.FULL_OUT.getReason(), outTask.getUserName(), stock.getGoodsRelated().getRemainNum()); } stockService.remove(new LambdaQueryWrapper().eq(Stock::getVehicleId, outTask.getVehicleId())); // 删除载具 @@ -1240,11 +1241,12 @@ public class TaskController { .last("limit 1")); if (existStock != null && existStock.getGoodsRelated() != null) { Stock originStock = BeanUtil.copyProperties(existStock, Stock.class); + BigDecimal quantityBefore = originStock.getGoodsRelated().getRemainNum(); StockDetailInfo goodsDetail = existStock.getGoodsRelated(); goodsDetail.setRemainNum(goodsDetail.getRemainNum().subtract(BigDecimal.valueOf(eTaskFeedbackRequest.getConfirmNum()))); existStock.setGoodsRelated(goodsDetail); stockService.updateById(existStock); - stockUpdateRecordService.addStockUpdateRecord(originStock, existStock, StockUpdateReasonEnum.KITTING_UPDATE.getReason(), workFlow.getWorkStation() + "-电子标签灯光反馈"); + stockUpdateRecordService.addStockUpdateRecord(originStock, existStock, StockUpdateReasonEnum.KITTING_UPDATE.getReason(), workFlow.getWorkStation() + "-电子标签灯光反馈", quantityBefore); } // 更新电子标签库位信息 etagLocationService.update(new LambdaUpdateWrapper() @@ -1365,11 +1367,12 @@ public class TaskController { .last("limit 1"));// 更新库存数量 if (existStock != null && existStock.getGoodsRelated() != null) { Stock originStock = BeanUtil.copyProperties(existStock, Stock.class); + BigDecimal quantityBefore = originStock.getGoodsRelated().getRemainNum(); StockDetailInfo goodsDetail = existStock.getGoodsRelated(); goodsDetail.setRemainNum(workConfirmRequest.getRemainNumReal()); existStock.setGoodsRelated(goodsDetail); stockService.updateById(existStock); - stockUpdateRecordService.addStockUpdateRecord(originStock, existStock, StockUpdateReasonEnum.CONFIRM_UPDATE.getReason(), workConfirmRequest.getUserName()); + stockUpdateRecordService.addStockUpdateRecord(originStock, existStock, StockUpdateReasonEnum.CONFIRM_UPDATE.getReason(), workConfirmRequest.getUserName(), quantityBefore); } OutsideVehicles currentGoodsVehicle = outsideVehiclesService.getOne(new LambdaQueryWrapper() .eq(OutsideVehicles::getVehicleId, pickTask.getVehicleId()) @@ -1971,40 +1974,49 @@ public class TaskController { .likeRight(Task::getTaskId, "HK_")); if (!hasBackTask) { // 判断当前载具是否有入库任务 - boolean hasInTask = taskService.exists(new LambdaQueryWrapper() + List inTasks = taskService.list(new LambdaQueryWrapper() .eq(Task::getVehicleId, requestBackQuery.getVehicleId()) .eq(Task::getTaskType, TaskType.IN.getCode()) .likeRight(Task::getTaskId, "RK_")); - if (hasInTask) { - taskService.update(new LambdaUpdateWrapper() - .set(Task::getTaskStatus, WmsTaskStatus.NEW.getCode()) - .eq(Task::getVehicleId, requestBackQuery.getVehicleId()) - .eq(Task::getTaskType, TaskType.IN.getCode()) - .eq(Task::getTaskStatus, WmsTaskStatus.TEMP.getCode()) - .likeRight(Task::getTaskId, "RK_")); - } else { - // 寻找库位 - 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")) { + if (inTasks != null && !inTasks.isEmpty()) { + if (StringUtils.isEmpty(inTasks.get(0).getDestination())) { + // 寻找库位 + String nextLocationId = requestALocation(requestBackQuery.getVehicleId()); + if (Objects.equals(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, requestBackQuery.getVehicleId()) - .eq(Location::getLocationId, nextLocation.getLocationId()) - .eq(Location::getLocationStatus, LocationStatus.EMPTY.getCode()); - if (locationService.update(updateLocationWrapper)) { - nextLocationId = resultMap.get("nextLocationId"); - break; - } } + if (!taskService.update(new LambdaUpdateWrapper() + .set(Task::getTaskStatus, WmsTaskStatus.NEW.getCode()) + .set(Task::getDestination, nextLocationId) + .eq(Task::getVehicleId, requestBackQuery.getVehicleId()) + .eq(Task::getTaskType, TaskType.IN.getCode()) + .eq(Task::getTaskStatus, WmsTaskStatus.TEMP.getCode()) + .likeRight(Task::getTaskId, "RK_"))) { + // 回退库位锁定 + 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("更新入库任务失败,箱号:{}", requestBackQuery.getVehicleId()); + response.setCode(ResponseCode.ERROR.getCode()); + response.setMessage("更新入库任务失败。"); + return convertJsonString(response); + } + } else { + taskService.update(new LambdaUpdateWrapper() + .set(Task::getTaskStatus, WmsTaskStatus.NEW.getCode()) + .eq(Task::getVehicleId, requestBackQuery.getVehicleId()) + .eq(Task::getTaskType, TaskType.IN.getCode()) + .eq(Task::getTaskStatus, WmsTaskStatus.TEMP.getCode()) + .likeRight(Task::getTaskId, "RK_")); } + } else { + // 寻找库位 + String nextLocationId = requestALocation(requestBackQuery.getVehicleId()); if (Objects.equals(nextLocationId, "")) { logger.error("暂无可用库位"); response.setCode(ResponseCode.ERROR.getCode()); @@ -2068,6 +2080,28 @@ public class TaskController { } } + public String requestALocation(String vehicleId) { + 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")) { + return ""; + } 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, vehicleId) + .eq(Location::getLocationId, nextLocation.getLocationId()) + .eq(Location::getLocationStatus, LocationStatus.EMPTY.getCode()); + if (locationService.update(updateLocationWrapper)) { + nextLocationId = resultMap.get("nextLocationId"); + break; + } + } + } + return nextLocationId; + } + /** * 请求打印标签的数据 * @@ -2164,6 +2198,96 @@ public class TaskController { } } + /** + * 请求当前大盒子个数 + * + * @param sortBoxRequest 请求信息 + * @return 结果 + */ + @PostMapping("/requestSumOfBox") + @ResponseBody + @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED) + @MyLog(logTitle = "获取大盒子数量", logMethod = "requestSumOfBox") + public String requestSumOfBox(@RequestBody SortBoxRequest sortBoxRequest) { + logger.info("获取大盒子数量:{},ip地址:{}", convertJsonString(sortBoxRequest), HttpUtils.getIpAddr(servletRequest)); + ResponseEntity response = new ResponseEntity(); + try { + // 判断请求参数是否正确 + if (sortBoxRequest == null || StringUtils.isEmpty(sortBoxRequest.getBigBoxNo())) { + logger.error("请求参数缺少大盒子号。"); + response.setCode(ResponseCode.ERROR.getCode()); + response.setMessage("请求参数缺少大盒子号。"); + return convertJsonString(response); + } + // 获取站台号 + String standId = ""; + if (StringUtils.isNotEmpty(sortBoxRequest.getStandId())) { + // 站台号从请求参数中获取 + standId = sortBoxRequest.getStandId(); + } else { + // 站台号从ip获取 + Stand standOfIp = standService.getOne(new LambdaQueryWrapper() + .eq(Stand::getStandIp, HttpUtils.getIpAddr(servletRequest)) + .eq(Stand::getStandType, 2) + .last("limit 1")); + if (standOfIp != null && StringUtils.isNotEmpty(standOfIp.getStandId())) { + standId = standOfIp.getStandId(); + } + } + if (StringUtils.isEmpty(standId)) { + logger.error("请求参数缺少站台号。"); + response.setCode(ResponseCode.ERROR.getCode()); + response.setMessage("请求参数缺少站台号。"); + return convertJsonString(response); + } + // 判断大盒子号是否正确 + List stationConfigs = workStationConfigService.list(new LambdaQueryWrapper() + .eq(WorkStationConfig::getBigBox, sortBoxRequest.getBigBoxNo()) + .eq(WorkStationConfig::getWorkStation, standId)); + if (stationConfigs == null || stationConfigs.isEmpty()) { + logger.error("请输入正确的大盒子号。"); + response.setCode(ResponseCode.ERROR.getCode()); + response.setMessage("请输入正确的大盒子号。"); + return convertJsonString(response); + } + // 当前要亮灯的大盒子 + WorkStationConfig currentBigBoxConfig = stationConfigs.get(0); + // 当前配置的工单数/大盒子 + int orderQuantity = currentBigBoxConfig.getOrderQuantity(); + // 查询这个大盒子对应的小盒子 + List smallBoxListOfAll = stationConfigs.stream().map(WorkStationConfig::getSmallBox).distinct().toList(); + // 找出本次工作中的标签位 + List eConfigLastList = eLocationConfigLastService.list(new LambdaQueryWrapper() + .eq(ELocationConfigLast::getWorkStation, standId) + .in(ELocationConfigLast::getWorkCenter, smallBoxListOfAll)); + if (eConfigLastList.isEmpty()) { + logger.error("当前大盒子暂时不需要亮灯。"); + response.setCode(ResponseCode.ERROR.getCode()); + response.setMessage("当前大盒子暂时不需要亮灯。"); + return convertJsonString(response); + } + if (orderQuantity <= 0) { + sortBoxRequest.setSumOfOrders(0); + } else { + // 根据这些小盒子号找到对应的工单 + List orderIds = eConfigLastList.stream().map(ELocationConfigLast::getWorkOrder).distinct().toList(); + sortBoxRequest.setSumOfOrders((orderIds.size() + orderQuantity - 1)/orderQuantity); + } + + response.setCode(ResponseCode.OK.getCode()); + response.setMessage("获取大盒子数量成功。"); + response.setReturnData(sortBoxRequest); + return convertJsonString(response); + } catch (Exception e) { + // 回滚事务 + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + logger.error("处理整理盒子请求异常,{}", convertJsonString(e)); + response.setCode(ResponseCode.ERROR.getCode()); + response.setMessage("处理整理盒子请求异常。"); + return convertJsonString(response); + } + } + /** * 请求整理盒子 * @@ -2230,24 +2354,27 @@ public class TaskController { WorkStationConfig currentBigBoxConfig = stationConfigs.get(0); // 当前配置的工单数/大盒子 int orderQuantity = currentBigBoxConfig.getOrderQuantity(); - if (orderQuantity <= 0) { - logger.error("当前大盒子号不装大盒子。"); - response.setCode(ResponseCode.ERROR.getCode()); - response.setMessage("当前大盒子号不装大盒子。"); - return convertJsonString(response); - } + // 亮灯列表 + List eTaskDataList = new ArrayList<>(); // 查询这个大盒子对应的小盒子 List smallBoxListOfAll = stationConfigs.stream().map(WorkStationConfig::getSmallBox).distinct().toList(); // 找出本次工作中的标签位 List eConfigLastList = eLocationConfigLastService.list(new LambdaQueryWrapper() .eq(ELocationConfigLast::getWorkStation, standId) - .in(ELocationConfigLast::getWorkCenter, smallBoxListOfAll) - .eq(ELocationConfigLast::getBoxStatus, 0)); - // 亮灯列表 - List eTaskDataList = new ArrayList<>(); - // 生成亮灯数据 - if (!eConfigLastList.isEmpty()) { + .in(ELocationConfigLast::getWorkCenter, smallBoxListOfAll)); + if (eConfigLastList == null || eConfigLastList.isEmpty()) { + logger.error("当前大盒子暂时不需要亮灯。"); + response.setCode(ResponseCode.ERROR.getCode()); + response.setMessage("当前大盒子暂时不需要亮灯。"); + return convertJsonString(response); + } + if (orderQuantity <= 0) { + // 生成亮灯数据 for (ELocationConfigLast eConfigLast : eConfigLastList) { + if (eConfigLast.getBoxStatus() != 0) { + // 不是未亮灯的状态 + continue; + } // 当次拣选数量 ETaskData eTaskData = new ETaskData(); eTaskData.setTaskId(generateId(eConfigLast.getOrderBoxNo() + "_"));// 用户查询对应的拣选任务 @@ -2264,6 +2391,40 @@ public class TaskController { .set(ETagLocation::getConfirmNum, eTaskData.getNeedNum()) .eq(ETagLocation::getELocationId, eConfigLast.getELocationId())); } + } else { + if (sortBoxRequest.getOrderOfOrders() == null || sortBoxRequest.getOrderOfOrders() <= 0) { + logger.error("请填入正确的盒子序号。"); + response.setCode(ResponseCode.ERROR.getCode()); + response.setMessage("请填入正确的盒子序号。"); + return convertJsonString(response); + } + // 查找到所有的工单 + List orderIds = eConfigLastList.stream().map(ELocationConfigLast::getWorkOrder).distinct().toList(); + List toBeLightedOrders = orderIds.stream().skip((long) (sortBoxRequest.getOrderOfOrders() - 1) * orderQuantity).limit(orderQuantity).toList(); + // 生成亮灯数据 + if (!toBeLightedOrders.isEmpty()) { + for (ELocationConfigLast eConfigLast : eConfigLastList) { + if (eConfigLast.getBoxStatus() != 0 || !toBeLightedOrders.contains(eConfigLast.getWorkOrder())) { + // 不是未亮灯的状态或者不是这次要亮灯的工单 + continue; + } + // 当次拣选数量 + ETaskData eTaskData = new ETaskData(); + eTaskData.setTaskId(generateId(eConfigLast.getOrderBoxNo() + "_"));// 用户查询对应的拣选任务 + eTaskData.setETaskId(generateId(eConfigLast.getOrderBoxNo() + "_")); + eTaskData.setGoodsId(eConfigLast.getOrderBoxNo()); + eTaskData.setGoodsName(""); + eTaskData.setNeedNum(1); + eTaskData.setLocation(eConfigLast.getELocationId()); + eTaskDataList.add(eTaskData); + // 更新电子标签库位信息 + etagLocationService.update(new LambdaUpdateWrapper() + .set(ETagLocation::getTaskId, eTaskData.getTaskId()) + .set(ETagLocation::getNeedNum, eTaskData.getNeedNum()) + .set(ETagLocation::getConfirmNum, eTaskData.getNeedNum()) + .eq(ETagLocation::getELocationId, eConfigLast.getELocationId())); + } + } } if (!eTaskDataList.isEmpty()) { // 发送亮灯 @@ -2287,7 +2448,7 @@ public class TaskController { } if (result == null || !Objects.equals(result.getCode(), ResponseCode.OK.getCode())) { logger.error("发送电子标签亮灯任务失败:{}", convertJsonString(result)); - throw new Exception("发送电子标签亮灯任务失败"); + throw new Exception("发送电子标签亮灯任务失败。"); } else { // 更新亮灯数据 etagLocationService.update(new LambdaUpdateWrapper() @@ -2297,23 +2458,14 @@ public class TaskController { .in(ETagLocation::getELocationId, eTaskDataList.stream().map(ETaskData::getLocation).collect(Collectors.toList()))); } } - // 根据这些小盒子号找到对应的工单 - List orderIds = eConfigLastList.stream().map(ELocationConfigLast::getWorkOrder).distinct().toList(); - // 查询DBS - List dbsList = kateDBSService.list(new LambdaQueryWrapper() - .in(KateDBS::getWorkOrder, orderIds) - .orderByAsc(KateDBS::getWorkSequence)); - List machineNoList = dbsList.stream().map(KateDBS::getMachineNo).distinct().toList(); - // 查询到本次序列号个数 - sortBoxRequest.setOrderOfOrders(machineNoList.size()); logger.info("处理整理盒子请求成功。"); response.setCode(ResponseCode.OK.getCode()); response.setMessage("请根据灯光拣选盒子。"); response.setReturnData(sortBoxRequest); } else { - logger.info("没有可亮灯的数据。"); + logger.info("没有可亮灯的数据或者灯光已经全部亮过。"); response.setCode(ResponseCode.ERROR.getCode()); - response.setMessage("没有可亮灯的数据,请按按钮。"); + response.setMessage("没有可亮灯的数据或者灯光已经全部亮过。"); } return convertJsonString(response); } catch (Exception e) { @@ -2321,7 +2473,7 @@ public class TaskController { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); logger.error("处理整理盒子请求异常,{}", convertJsonString(e)); response.setCode(ResponseCode.ERROR.getCode()); - response.setMessage("处理整理盒子请求异常。"); + response.setMessage("处理整理盒子请求异常:" + e.getMessage()); return convertJsonString(response); } } @@ -2576,6 +2728,7 @@ public class TaskController { // 更新库存数量 if (existStock != null && existStock.getGoodsRelated() != null) { Stock originStock = BeanUtil.copyProperties(existStock, Stock.class); + BigDecimal quantityBefore = originStock.getGoodsRelated().getRemainNum(); StockDetailInfo goodsDetail = existStock.getGoodsRelated(); // 设置剩余库存 if (pickNumQuery.getRemainNum() != null) { @@ -2593,7 +2746,7 @@ public class TaskController { } existStock.setGoodsRelated(goodsDetail); stockService.updateById(existStock); - stockUpdateRecordService.addStockUpdateRecord(originStock, existStock, StockUpdateReasonEnum.CLC_NO_PLAN_UPDATE.getReason(), pickNumQuery.getUserName()); + stockUpdateRecordService.addStockUpdateRecord(originStock, existStock, StockUpdateReasonEnum.CLC_NO_PLAN_UPDATE.getReason(), pickNumQuery.getUserName(), quantityBefore); } // 判断这个箱子是否还有拣选任务 boolean hasPickTasks = pickTaskService.exists(new LambdaQueryWrapper() diff --git a/src/main/java/com/wms/entity/app/request/SortBoxRequest.java b/src/main/java/com/wms/entity/app/request/SortBoxRequest.java index f28788e..45f1e59 100644 --- a/src/main/java/com/wms/entity/app/request/SortBoxRequest.java +++ b/src/main/java/com/wms/entity/app/request/SortBoxRequest.java @@ -18,8 +18,13 @@ public class SortBoxRequest extends PageQuery { @JsonProperty("bigBoxNo") private String bigBoxNo; /** - * 工单顺序 + * 工单顺序/当前盒子顺序 */ @JsonProperty("orderOfOrders") private Integer orderOfOrders; + /** + * 工单总数/需要盒子总数 + */ + @JsonProperty("sumOfOrders") + private Integer sumOfOrders; } diff --git a/src/main/java/com/wms/service/IStockUpdateRecordService.java b/src/main/java/com/wms/service/IStockUpdateRecordService.java index c2f7929..df586f0 100644 --- a/src/main/java/com/wms/service/IStockUpdateRecordService.java +++ b/src/main/java/com/wms/service/IStockUpdateRecordService.java @@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.wms.entity.table.Stock; import com.wms.entity.table.StockUpdateRecord; +import java.math.BigDecimal; + /** * 库存更新记录接口 */ @@ -16,5 +18,5 @@ public interface IStockUpdateRecordService extends IService { * @param opUser 操作用户 * @return 添加结果 */ - boolean addStockUpdateRecord(Stock stockBefore, Stock stockAfter, String reason, String opUser); + boolean addStockUpdateRecord(Stock stockBefore, Stock stockAfter, String reason, String opUser, BigDecimal quantityBefore); } 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 6bca926..292ff97 100644 --- a/src/main/java/com/wms/service/business/serviceImplements/WmsTaskServiceImplements.java +++ b/src/main/java/com/wms/service/business/serviceImplements/WmsTaskServiceImplements.java @@ -335,7 +335,6 @@ public class WmsTaskServiceImplements implements IWmsTaskService { usedOutsideVehiclesList.add(outsideVehicle); } } - } // 更新流转箱表 outsideVehiclesService.updateBatchById(usedOutsideVehiclesList); diff --git a/src/main/java/com/wms/service/serviceImplements/StockUpdateRecordServiceImpl.java b/src/main/java/com/wms/service/serviceImplements/StockUpdateRecordServiceImpl.java index 576b238..dd62911 100644 --- a/src/main/java/com/wms/service/serviceImplements/StockUpdateRecordServiceImpl.java +++ b/src/main/java/com/wms/service/serviceImplements/StockUpdateRecordServiceImpl.java @@ -22,7 +22,7 @@ import static com.wms.utils.WmsUtils.generateId; public class StockUpdateRecordServiceImpl extends ServiceImpl implements IStockUpdateRecordService { private final StockUpdateRecordMapper stockUpdateRecordMapper; @Override - public boolean addStockUpdateRecord(Stock stockBefore, Stock stockAfter, String reason, String opUser) { + public boolean addStockUpdateRecord(Stock stockBefore, Stock stockAfter, String reason, String opUser, BigDecimal quantityBefore) { if (stockBefore == null && stockAfter == null) { return false; } @@ -35,7 +35,7 @@ public class StockUpdateRecordServiceImpl extends ServiceImpl impleme @Override public UserDto validateUser(User user, boolean withAuth) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() - .eq(User::getLoginAccount, user.getLoginAccount()) - .or().eq(withAuth, User::getLoginPassword, user.getLoginPassword()) - .or().eq(StringUtils.isEmpty(user.getLoginPassword()), User::getLoginPassword, null); + .eq(User::getLoginAccount, user.getLoginAccount()); + if (withAuth) { + queryWrapper.or(userLambdaQueryWrapper -> + userLambdaQueryWrapper.eq(User::getLoginAccount, user.getLoginAccount()) + .or().eq(StringUtils.isEmpty(user.getLoginPassword()), User::getLoginPassword, null)); + } return BeanUtil.copyProperties(userMapper.selectOne(queryWrapper), UserDto.class); } }