From 806f868f570b7fa71f6a3d9383fbb040655d596d Mon Sep 17 00:00:00 2001 From: escapemoon <18834580489@163.com> Date: Fri, 19 Dec 2025 09:10:31 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=BA=93=E5=AD=98=E8=B4=A7?= =?UTF-8?q?=E4=BD=8D=E5=86=BB=E7=BB=93/=E8=A7=A3=E5=86=BB=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=EF=BC=8C=E5=8C=85=E5=90=AB=E5=89=8D=E7=AB=AF=E6=8C=89?= =?UTF-8?q?=E9=92=AE=E5=92=8C=E5=90=8E=E7=AB=AF=E9=80=BB=E8=BE=91=20?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E9=81=8D=E5=8E=86=E9=80=89=E4=B8=AD=E7=9A=84?= =?UTF-8?q?=E5=BA=93=E5=AD=98ID=EF=BC=8C=E6=89=BE=E5=88=B0=E5=AF=B9?= =?UTF-8?q?=E5=BA=94=E7=9A=84=E8=B4=A7=E4=BD=8D=E3=80=82=20=E7=A1=AE?= =?UTF-8?q?=E5=AE=9A=E6=93=8D=E4=BD=9C=E6=96=B9=E5=90=91=EF=BC=88=E5=86=BB?= =?UTF-8?q?=E7=BB=93/=E8=A7=A3=E5=86=BB=EF=BC=89=E3=80=82=20=E6=9F=A5?= =?UTF-8?q?=E6=89=BE=E5=90=8C=E7=BB=84=20(groupCodingNo)=20=E7=9A=84?= =?UTF-8?q?=E6=89=80=E6=9C=89=E5=85=B3=E8=81=94=E8=B4=A7=E4=BD=8D=E3=80=82?= =?UTF-8?q?=20=E9=81=8D=E5=8E=86=E6=89=80=E6=9C=89=E6=B6=89=E5=8F=8A?= =?UTF-8?q?=E7=9A=84=E8=B4=A7=E4=BD=8D=E6=97=B6=EF=BC=8C=E5=85=88=E6=A3=80?= =?UTF-8?q?=E6=9F=A5=E8=AF=A5=E8=B4=A7=E4=BD=8D=E6=98=AF=E5=90=A6=E6=9C=89?= =?UTF-8?q?=E5=BA=93=E5=AD=98=E3=80=82=20=E5=A6=82=E6=9E=9C=E6=9C=89?= =?UTF-8?q?=E5=BA=93=E5=AD=98=EF=BC=9A=E6=89=A7=E8=A1=8C=E5=86=BB=E7=BB=93?= =?UTF-8?q?/=E8=A7=A3=E5=86=BB=E6=93=8D=E4=BD=9C=EF=BC=88=E9=94=81?= =?UTF-8?q?=E5=AE=9A=E8=B4=A7=E4=BD=8D=20+=20=E6=9B=B4=E6=96=B0=E5=BA=93?= =?UTF-8?q?=E5=AD=98=E7=8A=B6=E6=80=81=20+=20=E8=AE=B0=E5=BD=95=E6=97=A5?= =?UTF-8?q?=E5=BF=97=EF=BC=89=E3=80=82=20=E5=A6=82=E6=9E=9C=E6=B2=A1?= =?UTF-8?q?=E6=9C=89=E5=BA=93=E5=AD=98=EF=BC=9A=E8=B7=B3=E8=BF=87=E8=AF=A5?= =?UTF-8?q?=E8=B4=A7=E4=BD=8D=EF=BC=8C=E4=B8=8D=E6=89=A7=E8=A1=8C=E4=BB=BB?= =?UTF-8?q?=E4=BD=95=E6=93=8D=E4=BD=9C=EF=BC=88=E4=B8=8D=E9=94=81=E8=B4=A7?= =?UTF-8?q?=E4=BD=8D=EF=BC=8C=E4=B9=9F=E4=B8=8D=E5=A4=84=E7=90=86=E5=BA=93?= =?UTF-8?q?=E5=AD=98=EF=BC=89=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修改了库存明细中库存数量和出库数量的小数显示为向下取整显示整数 --- .../stock/controller/BasStockController.java | 11 +++ .../stock/stock/service/IBasStockService.java | 6 ++ .../service/impl/BasStockServiceImpl.java | 94 +++++++++++++++++++ ruoyi-ui/src/api/stock/management.js | 9 ++ .../views/search/ViewStockDetail/index.vue | 22 +++-- ruoyi-ui/src/views/stock/management/index.vue | 35 ++++++- 6 files changed, 165 insertions(+), 12 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/stock/stock/controller/BasStockController.java b/ruoyi-admin/src/main/java/com/ruoyi/stock/stock/controller/BasStockController.java index e67ac94..7ad768c 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/stock/stock/controller/BasStockController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/stock/stock/controller/BasStockController.java @@ -96,6 +96,17 @@ public class BasStockController extends BaseController return toAjax(basStockService.deleteBasStockByStockIds(stockIds)); } + /** + * 冻结/解冻库存货位 + */ + @PreAuthorize("@ss.hasPermi('stock:management:edit')") + @Log(title = "库存信息", businessType = BusinessType.UPDATE) + @PostMapping("/freeze") + public AjaxResult freeze(@RequestBody List stockIds) + { + return toAjax(basStockService.freezeOrUnfreeze(stockIds)); + } + /** * 重置盘点记录 */ diff --git a/ruoyi-admin/src/main/java/com/ruoyi/stock/stock/service/IBasStockService.java b/ruoyi-admin/src/main/java/com/ruoyi/stock/stock/service/IBasStockService.java index ab5407b..99489bc 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/stock/stock/service/IBasStockService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/stock/stock/service/IBasStockService.java @@ -90,4 +90,10 @@ public interface IBasStockService AjaxResult resetPdRecord(); + /** + * 冻结/解冻库存货位 + * @param stockIds 库存ID集合 + * @return 结果 + */ + public int freezeOrUnfreeze(List stockIds); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/stock/stock/service/impl/BasStockServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/stock/stock/service/impl/BasStockServiceImpl.java index 7fdb770..68a0266 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/stock/stock/service/impl/BasStockServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/stock/stock/service/impl/BasStockServiceImpl.java @@ -17,8 +17,11 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Date; +import java.util.HashSet; import java.util.List; +import java.util.Set; /** * 库存信息Service业务层处理 @@ -224,4 +227,95 @@ public class BasStockServiceImpl implements IBasStockService { return basStockMapper.insertBasStock(basStock); } + + /** + * 冻结/解冻库存货位 + * @param stockIds 库存ID集合 + * @return 结果 + */ + @Override + @Transactional + public int freezeOrUnfreeze(List stockIds) { + int count = 0; + Set processedCargoSpaceIds = new HashSet<>(); + + for (String stockId : stockIds) { + BasStock stock = basStockMapper.selectBasStockByStockId(stockId); + if (stock == null || stock.getCargoSpaceId() == null) { + continue; + } + String cargoSpaceId = stock.getCargoSpaceId(); + if (processedCargoSpaceIds.contains(cargoSpaceId)) { + continue; + } + + BasCargoSpace cargoSpace = basCargoSpaceService.selectBasCargoSpaceByCargoSpaceId(cargoSpaceId); + if (cargoSpace == null) { + continue; + } + + // 确定操作方向:基于当前货位的锁定状态 + String currentLockStatus = cargoSpace.getLocked(); + // If Y (Locked) -> N (Open), If N (Open) -> Y (Locked) + boolean isFreezing = !"Y".equals(currentLockStatus); // 如果不是Y,那就是要冻结 + String newLockStatus = isFreezing ? "Y" : "N"; + String newStockStatus = isFreezing ? "2" : "1"; // 2:冻结, 1:正常 + + // 获取所有需要处理的货位(包括联查的) + List spacesToProcess = new ArrayList<>(); + spacesToProcess.add(cargoSpace); + + String groupCodingNo = cargoSpace.getGroupCodingNo(); + if (groupCodingNo != null && !groupCodingNo.isEmpty()) { + List groupSpaces = basCargoSpaceService.selectBasCargoSpaceListByGroupCodingNo(groupCodingNo); + for (BasCargoSpace space : groupSpaces) { + if (!space.getCargoSpaceId().equals(cargoSpaceId)) { + spacesToProcess.add(space); + } + } + } + + for (BasCargoSpace space : spacesToProcess) { + if (processedCargoSpaceIds.contains(space.getCargoSpaceId())) { + continue; + } + + // 检查该货位是否有库存 + BasStock queryStock = new BasStock(); + queryStock.setCargoSpaceId(space.getCargoSpaceId()); + List stockList = basStockMapper.selectBasStockList(queryStock); + + // 如果没有库存,则不进行冻结/解冻操作(既不锁货位,也不处理库存) + if (stockList == null || stockList.isEmpty()) { + continue; + } + + // 1. 更新货位锁定状态 + space.setLocked(newLockStatus); + basCargoSpaceService.updateBasCargoSpace(space); + processedCargoSpaceIds.add(space.getCargoSpaceId()); + count++; + + // 2. 处理该货位上的库存 + for (BasStock oldStock : stockList) { + // 构造 newStock 用于传给 insertFreezeRecord + BasStock newStock = new BasStock(); + // 复制必要属性 + newStock.setStockId(oldStock.getStockId()); + newStock.setCargoSpaceId(oldStock.getCargoSpaceId()); + newStock.setTrayCode(oldStock.getTrayCode()); + newStock.setWarehouseId(oldStock.getWarehouseId()); + newStock.setProductId(oldStock.getProductId()); + newStock.setProductName(oldStock.getProductName()); + // 设置新状态 + newStock.setStockStatus(newStockStatus); + + // 调用用户提供的记录方法 (该方法会更新库存状态并插入记录) + insertFreezeRecord(oldStock, newStock); + } + } + } + return count; + } } + diff --git a/ruoyi-ui/src/api/stock/management.js b/ruoyi-ui/src/api/stock/management.js index d265873..2034144 100644 --- a/ruoyi-ui/src/api/stock/management.js +++ b/ruoyi-ui/src/api/stock/management.js @@ -52,6 +52,15 @@ export function updateManagement(data) { }) } +// 冻结/解冻库存 +export function freezeStock(stockIds) { + return request({ + url: '/stock/management/freeze', + method: 'post', + data: stockIds + }) +} + // 删除库存信息 export function delManagement(stockId) { return request({ diff --git a/ruoyi-ui/src/views/search/ViewStockDetail/index.vue b/ruoyi-ui/src/views/search/ViewStockDetail/index.vue index 390635f..9f115a1 100644 --- a/ruoyi-ui/src/views/search/ViewStockDetail/index.vue +++ b/ruoyi-ui/src/views/search/ViewStockDetail/index.vue @@ -74,9 +74,13 @@ - - - + + + + - + @@ -170,7 +178,7 @@ - + diff --git a/ruoyi-ui/src/views/stock/management/index.vue b/ruoyi-ui/src/views/stock/management/index.vue index 4fc1d05..67dfd5e 100644 --- a/ruoyi-ui/src/views/stock/management/index.vue +++ b/ruoyi-ui/src/views/stock/management/index.vue @@ -67,6 +67,17 @@ v-hasPermi="['stock:management:remove']" >删除 + + 冻结/解冻 + - + + + @@ -144,7 +159,7 @@ - + - + @@ -291,7 +306,7 @@