From f13b41e04cab02293e50bfc12b285b2c0a8fffeb Mon Sep 17 00:00:00 2001 From: liuxiaoxu <1793812695@qq.com> Date: Wed, 11 Dec 2024 16:40:31 +0800 Subject: [PATCH 1/3] =?UTF-8?q?[feat]=20=E5=94=AE=E5=90=8E=E8=AE=BE?= =?UTF-8?q?=E5=A4=87=E6=96=B0=E5=A2=9E=20=E6=89=B9=E9=87=8F=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E5=87=BA=E8=B4=A7=E8=AE=BE=E5=A4=87=E6=96=B9=E6=B3=95?= =?UTF-8?q?=EF=BC=9B=E6=96=B0=E5=A2=9E=20=E6=A0=B9=E6=8D=AE=E5=87=BA?= =?UTF-8?q?=E5=BA=93=E5=8D=95=E5=8F=B7=E5=92=8C=E7=89=A9=E6=96=99=E5=8F=B7?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E5=87=BA=E8=B4=A7=E8=AE=BE=E5=A4=87=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E5=88=97=E8=A1=A8=E5=85=B3=E8=81=94=E5=8F=96=E6=B6=88?= =?UTF-8?q?=E5=87=BA=E8=B4=A7=E4=B8=9A=E5=8A=A1=E6=96=B9=E6=B3=95=20?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=94=80=E5=94=AE=E5=87=BA=E8=B4=A7=E7=9A=84?= =?UTF-8?q?=E6=93=8D=E4=BD=9C=E6=A0=8F=E8=AF=A6=E6=83=85=E6=8C=89=E9=92=AE?= =?UTF-8?q?=EF=BC=8C=E9=87=87=E7=94=A8=E7=BB=9F=E4=B8=80=E6=A0=B7=E5=BC=8F?= =?UTF-8?q?=20=E9=94=80=E5=94=AE=E5=87=BA=E8=B4=A7=E9=80=9A=E7=9F=A5?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=BF=AE=E6=94=B9=E4=BF=9D=E5=AD=98=E5=8F=96?= =?UTF-8?q?=E6=B6=88=E5=8F=91=E8=B4=A7=E6=8E=A5=E5=8F=A3=EF=BC=8C=E5=A4=9A?= =?UTF-8?q?=E8=A1=A8=E6=93=8D=E4=BD=9C=EF=BC=8C=E5=8A=A0=E4=B8=8A=E4=BA=8B?= =?UTF-8?q?=E5=8A=A1=E3=80=82=E5=AE=9E=E7=8E=B0=EF=BC=9A=E5=85=B3=E8=81=94?= =?UTF-8?q?=E5=BA=93=E5=AD=98=E6=9F=A5=E8=AF=A2=E8=AE=B0=E5=BD=95=EF=BC=8C?= =?UTF-8?q?=E5=8F=AF=E7=94=A8=E5=BA=93=E5=AD=98=E6=95=B0=E8=BF=94=E8=BF=98?= =?UTF-8?q?=EF=BC=8C=E9=94=81=E5=AE=9A=E6=95=B0=E5=87=8F=E5=B0=91=EF=BC=8C?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=85=B1=E4=BA=AB=E5=BA=93=E5=AD=98=E3=80=81?= =?UTF-8?q?=E5=8F=AF=E7=94=A8=E5=BA=93=E5=AD=98=E3=80=81=E5=9B=BA=E5=AE=9A?= =?UTF-8?q?=E5=BA=93=E5=AD=98=E3=80=81=E9=94=81=E5=AE=9A=E5=BA=93=E5=AD=98?= =?UTF-8?q?=EF=BC=9B=E5=85=B3=E8=81=94=E5=87=BA=E8=B4=A7=E8=AE=BE=E5=A4=87?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=EF=BC=9A=E6=98=AF=E5=90=A6=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=87=BA=E8=B4=A7=E8=AE=BE=E5=A4=87=E3=80=81=E5=87=BA=E5=BA=93?= =?UTF-8?q?=E5=8D=95=E5=8F=B7=E7=BD=AE=E4=B8=BA=E7=A9=BA=E3=80=81SN?= =?UTF-8?q?=E5=8F=B7=E7=BD=AE=E4=B8=BA=E7=A9=BA=EF=BC=9B=20=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E4=BB=93=E5=BA=93=E5=87=BA=E5=BA=93=E5=8D=95=EF=BC=8C?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E5=87=BA=E5=BA=93=E7=8A=B6=E6=80=81=E4=B8=BA?= =?UTF-8?q?=E5=B7=B2=E5=8F=96=E6=B6=88=20=E6=9B=B4=E6=96=B0=E5=94=AE?= =?UTF-8?q?=E5=90=8E=E5=87=BA=E5=BA=93=E5=8D=95=EF=BC=8C=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E5=87=BA=E5=BA=93=E7=8A=B6=E6=80=81=E4=B8=BA=E5=B7=B2=E5=8F=96?= =?UTF-8?q?=E6=B6=88=20=E6=9B=B4=E6=96=B0=E9=94=80=E5=94=AE=E5=87=BA?= =?UTF-8?q?=E8=B4=A7=E9=80=9A=E7=9F=A5=E5=8D=95=EF=BC=8C=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E5=87=BA=E5=BA=93=E7=8A=B6=E6=80=81=E4=B8=BA=E5=B7=B2=E5=8F=96?= =?UTF-8?q?=E6=B6=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AfterSalesShippingDeviceMapper.java | 20 +++- .../SysSalesShippingInformServiceImpl.java | 92 ++++++++++++++++++- .../AfterSalesShippingDeviceMapper.xml | 26 ++++++ .../salesShippingInform.html | 2 +- 4 files changed, 134 insertions(+), 6 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/aftersales/mapper/AfterSalesShippingDeviceMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/aftersales/mapper/AfterSalesShippingDeviceMapper.java index aeb0e7bd..79c116d7 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/aftersales/mapper/AfterSalesShippingDeviceMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/aftersales/mapper/AfterSalesShippingDeviceMapper.java @@ -2,6 +2,7 @@ package com.ruoyi.aftersales.mapper; import java.util.List; import com.ruoyi.aftersales.domain.AfterSalesShippingDevice; +import org.apache.ibatis.annotations.Param; /** * 出货设备Mapper接口 @@ -38,9 +39,6 @@ public interface AfterSalesShippingDeviceMapper - - - /** * 查询出货设备列表 * @@ -74,6 +72,16 @@ public interface AfterSalesShippingDeviceMapper */ public int updateAfterSalesShippingDevice(AfterSalesShippingDevice afterSalesShippingDevice); + + /** + * 批量修改出货设备 + * + * @param devices 出货设备集合 + * @return 结果 + */ + int batchUpdateAfterSalesShippingDevices(@Param("list") List devices); + + /** * 删除出货设备 * @@ -152,6 +160,12 @@ public interface AfterSalesShippingDeviceMapper * */ List selectShippingDeviceByOrderCodeAndMaterialNo(AfterSalesShippingDevice afterSalesShippingDevice); + + /* + * 根据出库单号和物料号查询出货设备信息列表关联取消出货业务 + * */ + List selectShippingDeviceWithCancelShipping(AfterSalesShippingDevice afterSalesShippingDevice); + /* * 根据物料号和出库单号查询已经添加了的出货设备信息列表 * */ diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysSalesShippingInformServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysSalesShippingInformServiceImpl.java index 76c67d49..692f52e0 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysSalesShippingInformServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysSalesShippingInformServiceImpl.java @@ -425,12 +425,100 @@ public class SysSalesShippingInformServiceImpl implements ISysSalesShippingInfor } /** - * 修改保存取消发货 (后续完善) + * 修改保存取消发货 */ + @Transactional(rollbackFor = Exception.class) @Override public int updateCancelShipping(SysSalesShippingInform sysSalesShippingInform) { - return 1; + String loginName = ShiroUtils.getLoginName(); + String outOrderCode = sysSalesShippingInform.getOutOrderCode(); + List sysSalesShippingInformDetails = shippingInformDetailMapper.selectSysSalesShippingInformDetailByCode(outOrderCode); + + + for (SysSalesShippingInformDetail sysSalesShippingInformDetail : sysSalesShippingInformDetails) { + String materialNo = sysSalesShippingInformDetail.getMaterialNo(); + Integer thisShippingNum = sysSalesShippingInformDetail.getThisShippingNum(); + WarehouseInventoryInquiry inventoryInquiry = inventoryInquiryMapper.selectWarehouseInventoryInquiryByMaterialNo(materialNo); + Integer availableStockNum = Optional.ofNullable(inventoryInquiry.getAvailableStockNum()) + .orElse(0); + Integer sharedStockNum = Optional.ofNullable(inventoryInquiry.getSharedAvailableStockNum()) + .orElse(0); + Integer fixedStockNum = Optional.ofNullable(inventoryInquiry.getFixedAvailableStockNum()) + .orElse(0); + Integer lockedStockNum = Optional.ofNullable(inventoryInquiry.getLockStockNum()) + .orElse(0); + Integer fixedStockAllocatedNum = Optional.ofNullable(sysSalesShippingInformDetail.getFixedStockAllocatedNum()) + .orElse(0);//本次领料占用固定库存数 + Integer sharedStockAllocatedNum = Optional.ofNullable(sysSalesShippingInformDetail.getSharedStockAllocatedNum()) + .orElse(0);//本次领料占用共享库存数 + sharedStockNum = sharedStockNum + sharedStockAllocatedNum; + fixedStockNum = fixedStockNum + fixedStockAllocatedNum; + availableStockNum = availableStockNum + thisShippingNum;//可用库存数返还 + lockedStockNum = lockedStockNum - thisShippingNum;//锁定数减少 + + inventoryInquiry.setAvailableStockNum(availableStockNum); + inventoryInquiry.setSharedAvailableStockNum(sharedStockNum); + inventoryInquiry.setFixedAvailableStockNum(fixedStockNum); + inventoryInquiry.setLockStockNum(lockedStockNum); + + inventoryInquiry.setUpdateBy(loginName); + inventoryInquiry.setUpdateTime(DateUtils.getNowDate()); + int inventoryUpdateResult = inventoryInquiryMapper.updateWarehouseInventoryInquiry(inventoryInquiry); + if (inventoryUpdateResult<=0){ + throw new BusinessException("更新库存查询记录失败"); + } + + AfterSalesShippingDevice afterSalesShippingDevice = new AfterSalesShippingDevice(); + afterSalesShippingDevice.setMaterialNo(materialNo); + afterSalesShippingDevice.setOutOrderCode(outOrderCode); + List oldAfterSalesShippingDevices = salesShippingDeviceMapper.selectShippingDeviceWithCancelShipping(afterSalesShippingDevice); + if (!CollectionUtils.isEmpty(oldAfterSalesShippingDevices)){ + oldAfterSalesShippingDevices.forEach(item->{ + item.setAddShippingDeviceFlag("1"); + item.setOutOrderCode(null); + item.setSnCode(null); + item.setUpdateBy(loginName); + item.setUpdateTime(new Date()); + }); + int updateAfterSalesShippingDeviceResult = salesShippingDeviceMapper.batchUpdateAfterSalesShippingDevices(oldAfterSalesShippingDevices); + if (updateAfterSalesShippingDeviceResult <= 0){ + throw new BusinessException("更新出货设备数据失败"); + } + } + } + + //取消仓库出库单 + WarehouseOutOrder warehouseOutOrder = new WarehouseOutOrder(); + warehouseOutOrder.setOutOrderCode(outOrderCode); + warehouseOutOrder.setWarehouseOutStatus("8"); + warehouseOutOrder.setUpdateBy(loginName); + warehouseOutOrder.setUpdateTime(new Date()); + int updateWarehouseOutOrderResult = warehouseOutOrderMapper.updateWarehouseOutOrderByCode(warehouseOutOrder); + if (updateWarehouseOutOrderResult <= 0){ + throw new BusinessException("更新出库单数据失败"); + } + //取消售后出库单 + AftersalesOutOrder aftersalesOutOrder = new AftersalesOutOrder(); + aftersalesOutOrder.setOutOrderCode(outOrderCode); + aftersalesOutOrder.setWarehouseOutStatus("8"); + aftersalesOutOrder.setUpdateBy(loginName); + aftersalesOutOrder.setUpdateTime(new Date()); + int updateAftersalesOutOrderResult = aftersalesOutOrderMapper.updateAftersalesOutOrderByOutOrderCode(aftersalesOutOrder); + if (updateAftersalesOutOrderResult <= 0){ + throw new BusinessException("更新售后出库单数据失败"); + } + //取消销售出货通知单 + sysSalesShippingInform.setOutOrderCode(outOrderCode); + sysSalesShippingInform.setWarehouseOutStatus("8"); + sysSalesShippingInform.setUpdateBy(loginName); + sysSalesShippingInform.setUpdateTime(new Date()); + int updateShippingInformResult = sysSalesShippingInformMapper.updateSysSalesShippingInformByOutOrderCode(sysSalesShippingInform); + if (updateShippingInformResult <= 0){ + throw new BusinessException("更新销售出货通知单数据失败"); + } + + return updateShippingInformResult; } diff --git a/ruoyi-admin/src/main/resources/mapper/aftersales/AfterSalesShippingDeviceMapper.xml b/ruoyi-admin/src/main/resources/mapper/aftersales/AfterSalesShippingDeviceMapper.xml index 57180420..3206d392 100644 --- a/ruoyi-admin/src/main/resources/mapper/aftersales/AfterSalesShippingDeviceMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/aftersales/AfterSalesShippingDeviceMapper.xml @@ -170,6 +170,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and quality_status = '2' + + + + + +
+ +
+ +
+ +
+ +
+ +
+ + @@ -132,6 +157,7 @@ showRefresh: false, showToggle: false, showColumns:false, + showFooter:true, modalName: "选择物料", columns: [{checkbox: true}, { @@ -190,6 +216,13 @@ { title: '实际采购数', field: 'actualPurchaseNum', + footerFormatter: function (value) { + var sum = 0; + for (var i in value) { + sum += parseFloat(value[i].actualPurchaseNum)|| 0; + } + return "采购合计: " + sum.toFixed(2); + } }, { title: '共享库存占用数', diff --git a/ruoyi-admin/src/main/resources/templates/purchase/purchaseOrder/taskCgjlVerify.html b/ruoyi-admin/src/main/resources/templates/purchase/purchaseOrder/taskCgjlVerify.html index 4a201d4e..8f69aaa4 100644 --- a/ruoyi-admin/src/main/resources/templates/purchase/purchaseOrder/taskCgjlVerify.html +++ b/ruoyi-admin/src/main/resources/templates/purchase/purchaseOrder/taskCgjlVerify.html @@ -127,6 +127,34 @@ +
+
+
+

采购合计:

+
+
+
+ + +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+
+
+ + diff --git a/ruoyi-admin/src/main/resources/templates/purchase/purchaseOrder/taskFzjlVerify.html b/ruoyi-admin/src/main/resources/templates/purchase/purchaseOrder/taskFzjlVerify.html index 82a12641..df2f0c52 100644 --- a/ruoyi-admin/src/main/resources/templates/purchase/purchaseOrder/taskFzjlVerify.html +++ b/ruoyi-admin/src/main/resources/templates/purchase/purchaseOrder/taskFzjlVerify.html @@ -127,6 +127,34 @@ +
+
+
+

采购合计:

+
+
+
+ + +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+
+
+ +