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' + + +