Browse Source

[feat]

售后设备新增 批量修改出货设备方法;新增 根据出库单号和物料号查询出货设备信息列表关联取消出货业务方法
修改销售出货的操作栏详情按钮,采用统一样式
销售出货通知新增修改保存取消发货接口,多表操作,加上事务。实现:关联库存查询记录,可用库存数返还,锁定数减少,更新共享库存、可用库存、固定库存、锁定库存;关联出货设备更新:是否添加出货设备、出库单号置为空、SN号置为空;
更新仓库出库单,设置出库状态为已取消
更新售后出库单,设置出库状态为已取消
更新销售出货通知单,设置出库状态为已取消
dev
liuxiaoxu 2 months ago
parent
commit
f13b41e04c
  1. 20
      ruoyi-admin/src/main/java/com/ruoyi/aftersales/mapper/AfterSalesShippingDeviceMapper.java
  2. 92
      ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysSalesShippingInformServiceImpl.java
  3. 26
      ruoyi-admin/src/main/resources/mapper/aftersales/AfterSalesShippingDeviceMapper.xml
  4. 2
      ruoyi-admin/src/main/resources/templates/system/salesShippingInform/salesShippingInform.html

20
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 java.util.List;
import com.ruoyi.aftersales.domain.AfterSalesShippingDevice; import com.ruoyi.aftersales.domain.AfterSalesShippingDevice;
import org.apache.ibatis.annotations.Param;
/** /**
* 出货设备Mapper接口 * 出货设备Mapper接口
@ -38,9 +39,6 @@ public interface AfterSalesShippingDeviceMapper
/** /**
* 查询出货设备列表 * 查询出货设备列表
* *
@ -74,6 +72,16 @@ public interface AfterSalesShippingDeviceMapper
*/ */
public int updateAfterSalesShippingDevice(AfterSalesShippingDevice afterSalesShippingDevice); public int updateAfterSalesShippingDevice(AfterSalesShippingDevice afterSalesShippingDevice);
/**
* 批量修改出货设备
*
* @param devices 出货设备集合
* @return 结果
*/
int batchUpdateAfterSalesShippingDevices(@Param("list") List<AfterSalesShippingDevice> devices);
/** /**
* 删除出货设备 * 删除出货设备
* *
@ -152,6 +160,12 @@ public interface AfterSalesShippingDeviceMapper
* */ * */
List<AfterSalesShippingDevice> selectShippingDeviceByOrderCodeAndMaterialNo(AfterSalesShippingDevice afterSalesShippingDevice); List<AfterSalesShippingDevice> selectShippingDeviceByOrderCodeAndMaterialNo(AfterSalesShippingDevice afterSalesShippingDevice);
/*
* 根据出库单号和物料号查询出货设备信息列表关联取消出货业务
* */
List<AfterSalesShippingDevice> selectShippingDeviceWithCancelShipping(AfterSalesShippingDevice afterSalesShippingDevice);
/* /*
* 根据物料号和出库单号查询已经添加了的出货设备信息列表 * 根据物料号和出库单号查询已经添加了的出货设备信息列表
* */ * */

92
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 @Override
public int updateCancelShipping(SysSalesShippingInform sysSalesShippingInform) { public int updateCancelShipping(SysSalesShippingInform sysSalesShippingInform) {
return 1; String loginName = ShiroUtils.getLoginName();
String outOrderCode = sysSalesShippingInform.getOutOrderCode();
List<SysSalesShippingInformDetail> 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<AfterSalesShippingDevice> 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;
} }

26
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' and quality_status = '2'
</select> </select>
<select id="selectShippingDeviceWithCancelShipping" parameterType="AfterSalesShippingDevice" resultMap="AfterSalesShippingDeviceResult">
<include refid="selectAfterSalesShippingDeviceVo"/>
where out_order_code = #{outOrderCode}
and material_no = #{materialNo}
</select>
<select id="selectHasAddShippingDevice" parameterType="AfterSalesShippingDevice" resultMap="AfterSalesShippingDeviceResult"> <select id="selectHasAddShippingDevice" parameterType="AfterSalesShippingDevice" resultMap="AfterSalesShippingDeviceResult">
<include refid="selectAfterSalesShippingDeviceVo"/> <include refid="selectAfterSalesShippingDeviceVo"/>
where out_order_code = #{outOrderCode} where out_order_code = #{outOrderCode}
@ -334,6 +341,25 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where shipping_device_id= #{shippingDeviceId} where shipping_device_id= #{shippingDeviceId}
</update> </update>
<update id="batchUpdateAfterSalesShippingDevices" parameterType="java.util.List">
<foreach collection="list" item="device" separator=";">
update aftersales_shipping_device
<trim prefix="SET" suffixOverrides=",">
out_order_code = #{device.outOrderCode},
sn_code = #{device.snCode},
<if test="device.updateBy != null">update_by = #{device.updateBy},</if>
<if test="device.updateTime != null">update_time = #{device.updateTime},</if>
<if test="device.addShippingDeviceFlag != null">add_shipping_device_flag = #{device.addShippingDeviceFlag},</if>
<if test="device.isConfirmReceivingFlag != null">is_confirm_receiving_flag = #{device.isConfirmReceivingFlag},</if>
</trim>
where shipping_device_id = #{device.shippingDeviceId}
</foreach>
</update>
<delete id="deleteAfterSalesShippingDeviceById" parameterType="String"> <delete id="deleteAfterSalesShippingDeviceById" parameterType="String">
delete from aftersales_shipping_device where shipping_device_id = #{shippingDeviceId} delete from aftersales_shipping_device where shipping_device_id = #{shippingDeviceId}
</delete> </delete>

2
ruoyi-admin/src/main/resources/templates/system/salesShippingInform/salesShippingInform.html

@ -318,7 +318,7 @@
formatter: function(value, row, index) { formatter: function(value, row, index) {
var actions = []; var actions = [];
actions.push('<a class="btn btn-success btn-xs ' + customerCheckGoodsDetailFlag + '" href="javascript:void(0)" onclick="customerCheckGoodsDetail(\'' + row.shippingInformId + '\')"><i class="fa fa-edit"></i>详情</a> '); actions.push('<a class="' + customerCheckGoodsDetailFlag + '" href="javascript:void(0)" onclick="customerCheckGoodsDetail(\'' + row.shippingInformId + '\')"><i class="fa fa-edit"></i>详情</a> ');
if(row.warehouseOutStatus == '2'){ if(row.warehouseOutStatus == '2'){
actions.push('<a class=" ' + confirmShippingFlag + '" href="javascript:void(0)" onclick="confirmShipping(\'' + row.shippingInformId + '\')"><i class="fa fa-edit"></i>确认发货</a> '); actions.push('<a class=" ' + confirmShippingFlag + '" href="javascript:void(0)" onclick="confirmShipping(\'' + row.shippingInformId + '\')"><i class="fa fa-edit"></i>确认发货</a> ');
actions.push('<a class=" ' + cancelShippingFlag + '" href="javascript:void(0)" onclick="cancelShipping(\'' + row.shippingInformId + '\')"><i class="fa fa-edit"></i>取消发货</a> '); actions.push('<a class=" ' + cancelShippingFlag + '" href="javascript:void(0)" onclick="cancelShipping(\'' + row.shippingInformId + '\')"><i class="fa fa-edit"></i>取消发货</a> ');

Loading…
Cancel
Save