From 2215a9bd46f0b9fb532b3592efe452664e68ffe0 Mon Sep 17 00:00:00 2001 From: liangzhou <594755172@qq.com> Date: Mon, 14 Oct 2024 18:44:44 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=9B=B4=E6=96=B0=EF=BC=9B?= =?UTF-8?q?=201.=20=E4=BF=AE=E5=A4=8D=E5=BA=93=E5=AD=98=E5=85=85=E8=B6=B3?= =?UTF-8?q?=E6=97=B6=E7=9A=84=E7=BC=BA=E6=96=99=E9=97=AE=E9=A2=98=202.=20?= =?UTF-8?q?=E6=95=B4=E7=90=86=E7=9B=92=E5=AD=90=E7=95=8C=E9=9D=A2=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E5=A4=A7=E7=9B=92=E5=AD=90=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/KateWorkQueryController.java | 95 +++++++++++++++++++ .../com/wms/controller/StockController.java | 4 + .../com/wms/controller/TaskController.java | 92 +++++++++--------- .../wms/entity/app/request/BigBoxQuery.java | 18 ++++ .../java/com/wms/entity/app/vo/BigBoxVo.java | 23 +++++ 5 files changed, 183 insertions(+), 49 deletions(-) create mode 100644 src/main/java/com/wms/entity/app/request/BigBoxQuery.java create mode 100644 src/main/java/com/wms/entity/app/vo/BigBoxVo.java diff --git a/src/main/java/com/wms/controller/KateWorkQueryController.java b/src/main/java/com/wms/controller/KateWorkQueryController.java index c167014..9f2bc95 100644 --- a/src/main/java/com/wms/controller/KateWorkQueryController.java +++ b/src/main/java/com/wms/controller/KateWorkQueryController.java @@ -82,6 +82,14 @@ public class KateWorkQueryController { * 看板服务 */ private final KanbanService kanbanService; + /** + * 站台服务 + */ + private final StandService standService; + /** + * 库位配置服务 + */ + private final ELocationConfigLastService eLocationConfigLastService; /** * 请求头部信息 */ @@ -788,4 +796,91 @@ public class KateWorkQueryController { return convertJsonString(response); } } + + /** + * 查询整理大盒子列表 + */ + @PostMapping("/getBigBoxList") + @ResponseBody + @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED) + @MyLog(logTitle = "查询整理大盒子列表", logMethod = "getBigBoxList") + public String getBigBoxList(@RequestBody BigBoxQuery bigBoxQuery) { + logger.info("接收到查询整理大盒子列表请求:{},请求ip:{}", convertJsonString(bigBoxQuery), HttpUtils.getIpAddr(servletRequest)); + ResponseEntity response = new ResponseEntity(); + try { + // 获取站台号 + String standId = ""; + if (StringUtils.isNotEmpty(bigBoxQuery.getStandId())) { + // 站台号从请求参数中获取 + standId = bigBoxQuery.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); + } + // 返回结果 + Map bigBoxVoMap = new HashMap<>(); + // 查询到当前站台所有的大盒子 + List stationConfigs = workStationConfigService.list(new LambdaQueryWrapper() + .eq(WorkStationConfig::getWorkStation, standId)); + for (WorkStationConfig currentBigBoxConfig : stationConfigs) { + // 当前配置的工单数/大盒子 + 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()) { + continue; + } + // 设置返回结果 + int boxQuantity = 0; + if (orderQuantity <= 0) { + boxQuantity = 1; + } else { + // 根据这些小盒子号找到对应的工单 + List orderIds = eConfigLastList.stream().map(ELocationConfigLast::getWorkOrder).distinct().toList(); + boxQuantity = boxQuantity + (orderIds.size() / orderQuantity); + } + // 键 + String key = currentBigBoxConfig.getWorkStation() + "_" + currentBigBoxConfig.getBigBox(); + if (bigBoxVoMap.containsKey(key)) { + BigBoxVo bigBoxVo = bigBoxVoMap.get(key); + bigBoxVo.setBoxQuantity(bigBoxVo.getBoxQuantity() + boxQuantity); + bigBoxVoMap.replace(key, bigBoxVo); + } else { + BigBoxVo bigBoxVo = new BigBoxVo(); + bigBoxVo.setStandId(standId); + bigBoxVo.setBigBoxNo(currentBigBoxConfig.getBigBox()); + bigBoxVo.setBoxQuantity(boxQuantity); + bigBoxVoMap.put(key, bigBoxVo); + } + } + + response.setCode(ResponseCode.OK.getCode()); + response.setMessage("查询整理大盒子列表成功。"); + response.setReturnData(bigBoxVoMap.values()); + return convertJsonString(response); + } catch (Exception e) { + // 回滚事务 + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + logger.error("查询整理大盒子列表发生异常:{}", convertJsonString(e)); + response.setCode(ResponseCode.ERROR.getCode()); + response.setMessage("查询整理大盒子列表发生异常"); + return convertJsonString(response); + } + } } \ No newline at end of file diff --git a/src/main/java/com/wms/controller/StockController.java b/src/main/java/com/wms/controller/StockController.java index 7dd0da1..c6fc9f5 100644 --- a/src/main/java/com/wms/controller/StockController.java +++ b/src/main/java/com/wms/controller/StockController.java @@ -215,6 +215,10 @@ public class StockController { .eq(Vehicle::getIsEmpty, 0)); } stockUpdateRecordService.addStockUpdateRecord(stockBefore, null, StockUpdateReasonEnum.DELETE_CLIENT.getReason(), stockQuery.getUserName(), stockBefore.getGoodsRelated().getRemainNum()); + // 删除这个料箱对应的outside_vehicles + outsideVehiclesService.remove(new LambdaQueryWrapper() + .eq(OutsideVehicles::getVehicleId, stockBefore.getVehicleId()) + .eq(OutsideVehicles::getGoodsId, stockBefore.getGoodsRelated().getGoodsId())); // 返回成功 logger.info("数量为0,删除库存成功"); 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 8f75420..d1dcc6c 100644 --- a/src/main/java/com/wms/controller/TaskController.java +++ b/src/main/java/com/wms/controller/TaskController.java @@ -1259,19 +1259,9 @@ public class TaskController { workFlow.setWorkStatus(1);// 正在做 } else { if (workFlow.getPickedNum().compareTo(workFlow.getNeedNum()) < 0) { - // 判断后续有无物料进此站台 - List pickedTasks = pickTaskService.list(new LambdaQueryWrapper() - .eq(PickTask::getStandId, workFlow.getWorkStation()) - .ne(PickTask::getPickStatus, PickTaskStatusEnum.FINISH.getCode())); - if (!pickedTasks.isEmpty()) { - List vehicleIds = pickedTasks.stream().map(PickTask::getVehicleId).distinct().toList(); - if (outsideVehiclesService.exists(new LambdaQueryWrapper() - .eq(OutsideVehicles::getGoodsId, workFlow.getGoodsId()) - .in(OutsideVehicles::getVehicleId, vehicleIds))) { - workFlow.setLightStatus(0);// 未亮灯 - workFlow.setWorkStatus(1);// 正在做 - } - } + // 缺料未完成 + workFlow.setLightStatus(0);// 未亮灯 + workFlow.setWorkStatus(1);// 正在做 } else { workFlow.setLightStatus(2);// 已拍灯 workFlow.setWorkStatus(2);// 已完成 @@ -1429,42 +1419,42 @@ public class TaskController { if (currentGoodsVehicle != null) { currentGoodsVehicle.setRemainNum(BigDecimal.ZERO); outsideVehiclesService.updateById(currentGoodsVehicle); - // 已经分配的数量 - BigDecimal distributedNum = workConfirmRequest.getRemainNumOrigin().subtract(workConfirmRequest.getRemainNumReal()); - // 将当前物料的所有goodsToStation - List goodsToStations = goodsToStationService.list(new LambdaQueryWrapper() - .eq(GoodsToStation::getGoodsId, currentGoodsVehicle.getGoodsId())); - List updatedGoodsToStationList = new ArrayList<>(); - for (GoodsToStation goodsToStation : goodsToStations) { - if (distributedNum.compareTo(BigDecimal.ZERO) > 0) { - // 查询这个料对应的当前站台未完成工作流 - List workFlows = workFlowService.list(new LambdaQueryWrapper() - .eq(WorkFlow::getWorkStation, goodsToStation.getWorkStation()) - .eq(WorkFlow::getGoodsId, goodsToStation.getGoodsId()) - .eq(WorkFlow::getWorkStatus, 1)); - BigDecimal recallNum = BigDecimal.ZERO; - for (WorkFlow workFlow : workFlows) { - // 分配数量无了 - if (distributedNum.compareTo(BigDecimal.ZERO) <= 0) { - break; - } - BigDecimal needNum = workFlow.getNeedNum().subtract(workFlow.getPickedNum()); - if (needNum.compareTo(BigDecimal.ZERO) > 0) { - recallNum = recallNum.add(needNum); - distributedNum = distributedNum.subtract(needNum); - } - } - if (recallNum.compareTo(BigDecimal.ZERO) >0) { - goodsToStation.setDistributedNum(goodsToStation.getDistributedNum().subtract(recallNum)); - goodsToStation.setDistributeStatus(1); - updatedGoodsToStationList.add(goodsToStation); - } - } - } - // 更新站台要料表 - if (!updatedGoodsToStationList.isEmpty()) { - goodsToStationService.updateBatchById(updatedGoodsToStationList); - } +// // 已经分配的数量 +// BigDecimal distributedNum = workConfirmRequest.getRemainNumOrigin().subtract(workConfirmRequest.getRemainNumReal()); +// // 将当前物料的所有goodsToStation +// List goodsToStations = goodsToStationService.list(new LambdaQueryWrapper() +// .eq(GoodsToStation::getGoodsId, currentGoodsVehicle.getGoodsId())); +// List updatedGoodsToStationList = new ArrayList<>(); +// for (GoodsToStation goodsToStation : goodsToStations) { +// if (distributedNum.compareTo(BigDecimal.ZERO) > 0) { +// // 查询这个料对应的当前站台未完成工作流 +// List workFlows = workFlowService.list(new LambdaQueryWrapper() +// .eq(WorkFlow::getWorkStation, goodsToStation.getWorkStation()) +// .eq(WorkFlow::getGoodsId, goodsToStation.getGoodsId()) +// .eq(WorkFlow::getWorkStatus, 1)); +// BigDecimal recallNum = BigDecimal.ZERO; +// for (WorkFlow workFlow : workFlows) { +// // 分配数量无了 +// if (distributedNum.compareTo(BigDecimal.ZERO) <= 0) { +// break; +// } +// BigDecimal needNum = workFlow.getNeedNum().subtract(workFlow.getPickedNum()); +// if (needNum.compareTo(BigDecimal.ZERO) > 0) { +// recallNum = recallNum.add(needNum); +// distributedNum = distributedNum.subtract(needNum); +// } +// } +// if (recallNum.compareTo(BigDecimal.ZERO) >0) { +// goodsToStation.setDistributedNum(goodsToStation.getDistributedNum().subtract(recallNum)); +// goodsToStation.setDistributeStatus(1); +// updatedGoodsToStationList.add(goodsToStation); +// } +// } +// } +// // 更新站台要料表 +// if (!updatedGoodsToStationList.isEmpty()) { +// goodsToStationService.updateBatchById(updatedGoodsToStationList); +// } } } else { // 更新流转载具表剩余数量 @@ -1526,6 +1516,7 @@ public class TaskController { } else { // 存储拣选记录 PickTaskRecord pickTaskRecord = BeanUtil.copyProperties(pickTask, PickTaskRecord.class); + pickTaskRecord.setPickTaskId(generateId(pickTaskRecord.getPickTaskId())); pickTaskRecord.setLastUpdateTime(LocalDateTime.now()); pickTaskRecordService.save(pickTaskRecord); // 删除当前拣选任务 @@ -1564,6 +1555,7 @@ public class TaskController { } else { // 存储拣选记录 PickTaskRecord pickTaskRecord = BeanUtil.copyProperties(pickTask, PickTaskRecord.class); + pickTaskRecord.setPickTaskId(generateId(pickTaskRecord.getPickTaskId())); pickTaskRecord.setLastUpdateTime(LocalDateTime.now()); pickTaskRecordService.save(pickTaskRecord); // 删除当前拣选任务 @@ -1701,6 +1693,7 @@ public class TaskController { } else { // 存储拣选记录 PickTaskRecord pickTaskRecord = BeanUtil.copyProperties(pickTask, PickTaskRecord.class); + pickTaskRecord.setPickTaskId(generateId(pickTaskRecord.getPickTaskId())); pickTaskRecord.setLastUpdateTime(LocalDateTime.now()); pickTaskRecordService.save(pickTaskRecord); // 删除当前拣选任务 @@ -1736,6 +1729,7 @@ public class TaskController { } else { // 存储拣选记录 PickTaskRecord pickTaskRecord = BeanUtil.copyProperties(pickTask, PickTaskRecord.class); + pickTaskRecord.setPickTaskId(generateId(pickTaskRecord.getPickTaskId())); pickTaskRecord.setLastUpdateTime(LocalDateTime.now()); pickTaskRecordService.save(pickTaskRecord); // 删除当前拣选任务 diff --git a/src/main/java/com/wms/entity/app/request/BigBoxQuery.java b/src/main/java/com/wms/entity/app/request/BigBoxQuery.java new file mode 100644 index 0000000..b70fea9 --- /dev/null +++ b/src/main/java/com/wms/entity/app/request/BigBoxQuery.java @@ -0,0 +1,18 @@ +package com.wms.entity.app.request; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 大盒子查询请求 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class BigBoxQuery extends PageQuery{ + /** + * 站台号 + */ + @JsonProperty + private String standId; +} diff --git a/src/main/java/com/wms/entity/app/vo/BigBoxVo.java b/src/main/java/com/wms/entity/app/vo/BigBoxVo.java new file mode 100644 index 0000000..9ec7d3c --- /dev/null +++ b/src/main/java/com/wms/entity/app/vo/BigBoxVo.java @@ -0,0 +1,23 @@ +package com.wms.entity.app.vo; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +@Data +public class BigBoxVo { + /** + * 站台号 + */ + @JsonProperty("standId") + private String standId; + /** + * 大盒子号 + */ + @JsonProperty("bigBoxNo") + private String bigBoxNo; + /** + * 盒子数量 + */ + @JsonProperty("boxQuantity") + private Integer boxQuantity; +}