From 27a105b4f6ab49c309f3c97b9b230fe18123d727 Mon Sep 17 00:00:00 2001 From: wenshijun Date: Thu, 5 Feb 2026 16:25:28 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=BA=93=E5=AD=98=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E6=8E=A5=E5=8F=A3=EF=BC=8C=E6=A0=B9=E6=8D=AE=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E7=BC=96=E5=8F=B7=E6=8E=92=E5=BA=8F=20=E8=BF=BD?= =?UTF-8?q?=E5=8A=A0=E5=85=A5=E5=BA=93=E6=8E=A5=E5=8F=A3=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../information/mapper/PcdeDetailMapper.java | 8 +++ .../wisdom/controller/RkInfoController.java | 12 ++++ .../project/wisdom/mapper/RkInfoMapper.java | 5 ++ .../wisdom/service/IRkInfoService.java | 5 ++ .../service/impl/RkBillServiceImpl.java | 52 +++++++++----- .../service/impl/RkInfoServiceImpl.java | 6 ++ .../mybatis/information/PcdeDetailMapper.xml | 27 +++++++ .../resources/mybatis/wisdom/RkBillMapper.xml | 3 +- .../resources/mybatis/wisdom/RkInfoMapper.xml | 71 +++++++++++++++++++ 9 files changed, 170 insertions(+), 19 deletions(-) diff --git a/src/main/java/com/zg/project/information/mapper/PcdeDetailMapper.java b/src/main/java/com/zg/project/information/mapper/PcdeDetailMapper.java index 5c528c4..d3e4417 100644 --- a/src/main/java/com/zg/project/information/mapper/PcdeDetailMapper.java +++ b/src/main/java/com/zg/project/information/mapper/PcdeDetailMapper.java @@ -68,6 +68,14 @@ public interface PcdeDetailMapper */ PcdeDetail selectByPcode(String pcode); + /** + * 根据仓库编码和库位编码查询库位信息 + * @param pcode + * @return + */ + PcdeDetail selectByPcodeAndWarehouse(@Param("pcode") String pcode, + @Param("warehouseCode") String warehouseCode); + /** * 根据仓库编码查询库位编码 * @param pcode diff --git a/src/main/java/com/zg/project/wisdom/controller/RkInfoController.java b/src/main/java/com/zg/project/wisdom/controller/RkInfoController.java index 3772482..c8bc5d6 100644 --- a/src/main/java/com/zg/project/wisdom/controller/RkInfoController.java +++ b/src/main/java/com/zg/project/wisdom/controller/RkInfoController.java @@ -48,6 +48,18 @@ public class RkInfoController extends BaseController return getDataTable(list); } + /** + * 查询库存单据明细列表(按订单编号排序) + */ + @PreAuthorize("@ss.hasPermi('wisdom:stock:list')") + @GetMapping("/listByBillNo") + public TableDataInfo listByBillNo(RkInfo rkInfo) + { + startPage(); + List list = rkInfoService.selectRkInfoListOrderByBillNo(rkInfo); + return getDataTable(list); + } + /** * 导出库存单据明细列表 */ diff --git a/src/main/java/com/zg/project/wisdom/mapper/RkInfoMapper.java b/src/main/java/com/zg/project/wisdom/mapper/RkInfoMapper.java index 3030f7d..83a7ad0 100644 --- a/src/main/java/com/zg/project/wisdom/mapper/RkInfoMapper.java +++ b/src/main/java/com/zg/project/wisdom/mapper/RkInfoMapper.java @@ -155,4 +155,9 @@ public interface RkInfoMapper int countGetByWh(@org.apache.ibatis.annotations.Param("warehouse") String warehouse); List listRkInfoByPcode(String pcode); + + /** + * 查询库存单据明细列表(按单据号排序) + */ + List selectRkInfoListOrderByBillNo(RkInfo rkInfo); } diff --git a/src/main/java/com/zg/project/wisdom/service/IRkInfoService.java b/src/main/java/com/zg/project/wisdom/service/IRkInfoService.java index 1fccaaa..373bbfb 100644 --- a/src/main/java/com/zg/project/wisdom/service/IRkInfoService.java +++ b/src/main/java/com/zg/project/wisdom/service/IRkInfoService.java @@ -96,4 +96,9 @@ public interface IRkInfoService * @return */ List listRkInfoByPcode(String pcode); + + /** + * 查询库存单据明细列表(按单据号排序) + */ + List selectRkInfoListOrderByBillNo(RkInfo rkInfo); } diff --git a/src/main/java/com/zg/project/wisdom/service/impl/RkBillServiceImpl.java b/src/main/java/com/zg/project/wisdom/service/impl/RkBillServiceImpl.java index 230832f..4ed4666 100644 --- a/src/main/java/com/zg/project/wisdom/service/impl/RkBillServiceImpl.java +++ b/src/main/java/com/zg/project/wisdom/service/impl/RkBillServiceImpl.java @@ -136,7 +136,10 @@ public class RkBillServiceImpl implements IRkBillService // 库位校验 if (StringUtils.isNotBlank(info.getPcode())) { - PcdeDetail pcde = pcdeDetailMapper.selectByPcode(info.getPcode()); + PcdeDetail pcde = pcdeDetailMapper.selectByPcodeAndWarehouse( + info.getPcode(), + bill.getCangku() + ); if (pcde == null) { throw new RuntimeException("库位不存在:" + info.getPcode()); } @@ -331,38 +334,53 @@ public class RkBillServiceImpl implements IRkBillService throw new ServiceException("单据不存在:" + billNo); } - /* ================== 2️⃣ 执行状态规则 ================== */ + /* ================== 2️⃣ 取前端选择仓库 ================== */ + String frontCangku = dto.getRkBill().getCangku(); + if (StringUtils.isBlank(frontCangku)) { + frontCangku = bill.getCangku(); + } + + /* ================== 3️⃣ 执行状态 ================== */ String execStatus = dto.getRkBill().getExecStatus(); if (StringUtils.isBlank(execStatus)) { execStatus = bill.getExecStatus(); } - // 标记:本次是否包含预入库 boolean hasPreIn = false; - List rkInfoList = dto.getRkInfoList(); - /* ================== 3️⃣ 追加前:供应计划【批量】校验 ================== */ + /* ================== 4️⃣ 供应计划校验 ================== */ checkGysJhQtyBeforeInStockBatch(rkInfoList); - /* ================== 4️⃣ 插入明细 & 事件 ================== */ + /* ================== 5️⃣ 追加明细 ================== */ for (RkInfo info : rkInfoList) { - /* 4.1 库位校验 */ + /* 5.1 库位校验 → 用【前端仓库】 */ if (StringUtils.isNotBlank(info.getPcode())) { - PcdeDetail pcde = pcdeDetailMapper.selectByPcode(info.getPcode()); + + PcdeDetail pcde = pcdeDetailMapper.selectByPcodeAndWarehouse( + info.getPcode(), + frontCangku + ); + if (pcde == null) { - throw new ServiceException("库位不存在:" + info.getPcode()); + throw new ServiceException( + "库位不存在或不属于当前仓库:" + + info.getPcode() + + ",仓库:" + frontCangku + ); } + info.setPcodeId(pcde.getEncodedId()); } - /* 4.2 继承主单字段 */ + /* 5.2 继承主单字段 */ info.setBillNo(bill.getBillNo()); info.setOperationType(bill.getOperationType()); info.setBizType(bill.getBizType()); info.setWlType(bill.getWlType()); - info.setCangku(bill.getCangku()); + + info.setCangku(frontCangku); info.setOperationTime(now); info.setOperator(bill.getOperator()); @@ -376,36 +394,36 @@ public class RkBillServiceImpl implements IRkBillService info.setHasMoved("0"); info.setIsBorrowed("0"); - /* 4.3 备注兜底 */ String finalRemark = StringUtils.isNotBlank(info.getRemark()) ? info.getRemark() : bill.getRemark(); info.setRemark(finalRemark); - /* 4.4 审计字段 */ info.setCreateTime(now); info.setCreateBy(bill.getCreateBy()); info.setIsDelete("0"); - /* 4.5 插入 rk_info */ + /* 5.3 插入 rk_info */ rkInfoMapper.insertRkInfo(info); - /* 4.6 插入 rk_record */ + /* 5.4 插入 rk_record */ RkRecord record = buildInRkRecord(bill, info, now); record.setExecStatus(execStatus); record.setRkInfoId(info.getId()); record.setPcodeId(info.getPcodeId()); record.setRemark(finalRemark); + record.setCangku(frontCangku); + rkRecordMapper.insertRkRecord(record); } - /* ================== 5️⃣ 追加后:供应计划【仅完成入库】 ================== */ + /* ================== 6️⃣ 供应计划回写 ================== */ if ("1".equals(execStatus)) { handleGysJhAfterInStockBatch(rkInfoList); } - /* ================== 6️⃣ 同步回退主单状态 ================== */ + /* ================== 7️⃣ 主单状态回退 ================== */ if (hasPreIn && !"0".equals(bill.getExecStatus())) { rkBillMapper.updateExecStatusByBillNo(billNo, "0"); } diff --git a/src/main/java/com/zg/project/wisdom/service/impl/RkInfoServiceImpl.java b/src/main/java/com/zg/project/wisdom/service/impl/RkInfoServiceImpl.java index 9140d91..cf85af8 100644 --- a/src/main/java/com/zg/project/wisdom/service/impl/RkInfoServiceImpl.java +++ b/src/main/java/com/zg/project/wisdom/service/impl/RkInfoServiceImpl.java @@ -270,4 +270,10 @@ public class RkInfoServiceImpl implements IRkInfoService public List listRkInfoByPcode(String pcode) { return rkInfoMapper.listRkInfoByPcode(pcode); } + + @Override + public List selectRkInfoListOrderByBillNo(RkInfo rkInfo) + { + return rkInfoMapper.selectRkInfoListOrderByBillNo(rkInfo); + } } diff --git a/src/main/resources/mybatis/information/PcdeDetailMapper.xml b/src/main/resources/mybatis/information/PcdeDetailMapper.xml index f3b3026..4420d00 100644 --- a/src/main/resources/mybatis/information/PcdeDetailMapper.xml +++ b/src/main/resources/mybatis/information/PcdeDetailMapper.xml @@ -140,6 +140,33 @@ AND is_delete = '0' + + + + + +