Browse Source

Merge remote-tracking branch 'origin/dev' into dev

dev
王晓迪 2 months ago
parent
commit
5e46fbc9fb
  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. 2
      ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseInventoryInquiryServiceImpl.java
  4. 26
      ruoyi-admin/src/main/resources/mapper/aftersales/AfterSalesShippingDeviceMapper.xml
  5. 33
      ruoyi-admin/src/main/resources/templates/purchase/purchaseOrder/detail.html
  6. 28
      ruoyi-admin/src/main/resources/templates/purchase/purchaseOrder/taskCgjlVerify.html
  7. 28
      ruoyi-admin/src/main/resources/templates/purchase/purchaseOrder/taskFzjlVerify.html
  8. 2
      ruoyi-admin/src/main/resources/templates/system/salesShippingInform/salesShippingInform.html
  9. 21
      ruoyi-admin/src/main/resources/templates/warehouse/inventoryInquiry/inventoryInquiry.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;
} }

2
ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseInventoryInquiryServiceImpl.java

@ -182,7 +182,7 @@ public class WarehouseInventoryInquiryServiceImpl implements IWarehouseInventory
Integer sharedAvailableStockNum = oldWarehouseInventoryInquiry.getSharedAvailableStockNum(); Integer sharedAvailableStockNum = oldWarehouseInventoryInquiry.getSharedAvailableStockNum();
if (editStockNum > noOccupancyNum){ if (editStockNum > noOccupancyNum){
editStockNum = sharedAvailableStockNum; editStockNum = noOccupancyNum;
fixedAvailableStockNum += editStockNum; fixedAvailableStockNum += editStockNum;
sharedAvailableStockNum = 0; sharedAvailableStockNum = 0;
}else { }else {

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>

33
ruoyi-admin/src/main/resources/templates/purchase/purchaseOrder/detail.html

@ -93,7 +93,32 @@
</div> </div>
</div> </div>
</div> </div>
<div class="container">
<div class="row">
<div class="col-12">
<h3 class="mb-4">采购合计:</h3>
</div>
</div>
<div class="form-group row">
<label for="materialSum" class="col-sm-1 control-label">物料数:</label>
<div class="col-sm-2">
<input id="materialSum" th:field="*{materialSum}" name="materialSum" class="form-control" type="text" readonly>
</div>
<label for="actualPurchaseSum" class="col-sm-1 control-label">采购合计:</label>
<div class="col-sm-2">
<input id="actualPurchaseSum" th:field="*{actualPurchaseSum}" name="actualPurchaseSum" class="form-control" type="text" readonly>
</div>
<label for="noRmbSum" class="col-sm-1 control-label">不含税总价:</label>
<div class="col-sm-2">
<input id="noRmbSum" th:field="*{noRmbSum}" name="noRmbSum" class="form-control" type="text" readonly>
</div>
<label for="rmbSum" class="col-sm-1 control-label">含税总价:</label>
<div class="col-sm-2">
<input id="rmbSum" th:field="*{rmbSum}" name="rmbSum" class="form-control" type="text" readonly>
</div>
</div>
</div>
</form> </form>
@ -132,6 +157,7 @@
showRefresh: false, showRefresh: false,
showToggle: false, showToggle: false,
showColumns:false, showColumns:false,
showFooter:true,
modalName: "选择物料", modalName: "选择物料",
columns: [{checkbox: true}, columns: [{checkbox: true},
{ {
@ -190,6 +216,13 @@
{ {
title: '实际采购数', title: '实际采购数',
field: 'actualPurchaseNum', field: 'actualPurchaseNum',
footerFormatter: function (value) {
var sum = 0;
for (var i in value) {
sum += parseFloat(value[i].actualPurchaseNum)|| 0;
}
return "采购合计: " + sum.toFixed(2);
}
}, },
{ {
title: '共享库存占用数', title: '共享库存占用数',

28
ruoyi-admin/src/main/resources/templates/purchase/purchaseOrder/taskCgjlVerify.html

@ -127,6 +127,34 @@
</div> </div>
</div> </div>
<div class="container">
<div class="row">
<div class="col-12">
<h3 class="mb-4">采购合计:</h3>
</div>
</div>
<div class="form-group row">
<label for="materialSum" class="col-sm-1 control-label">物料数:</label>
<div class="col-sm-2">
<input id="materialSum" th:field="*{materialSum}" name="materialSum" class="form-control" type="text" readonly>
</div>
<label for="actualPurchaseSum" class="col-sm-1 control-label">采购合计:</label>
<div class="col-sm-2">
<input id="actualPurchaseSum" th:field="*{actualPurchaseSum}" name="actualPurchaseSum" class="form-control" type="text" readonly>
</div>
<label for="noRmbSum" class="col-sm-1 control-label">不含税总价:</label>
<div class="col-sm-2">
<input id="noRmbSum" th:field="*{noRmbSum}" name="noRmbSum" class="form-control" type="text" readonly>
</div>
<label for="rmbSum" class="col-sm-1 control-label">含税总价:</label>
<div class="col-sm-2">
<input id="rmbSum" th:field="*{rmbSum}" name="rmbSum" class="form-control" type="text" readonly>
</div>
</div>
</div>
</form> </form>

28
ruoyi-admin/src/main/resources/templates/purchase/purchaseOrder/taskFzjlVerify.html

@ -127,6 +127,34 @@
</div> </div>
</div> </div>
<div class="container">
<div class="row">
<div class="col-12">
<h3 class="mb-4">采购合计:</h3>
</div>
</div>
<div class="form-group row">
<label for="materialSum" class="col-sm-1 control-label">物料数:</label>
<div class="col-sm-2">
<input id="materialSum" th:field="*{materialSum}" name="materialSum" class="form-control" type="text" readonly>
</div>
<label for="actualPurchaseSum" class="col-sm-1 control-label">采购合计:</label>
<div class="col-sm-2">
<input id="actualPurchaseSum" th:field="*{actualPurchaseSum}" name="actualPurchaseSum" class="form-control" type="text" readonly>
</div>
<label for="noRmbSum" class="col-sm-1 control-label">不含税总价:</label>
<div class="col-sm-2">
<input id="noRmbSum" th:field="*{noRmbSum}" name="noRmbSum" class="form-control" type="text" readonly>
</div>
<label for="rmbSum" class="col-sm-1 control-label">含税总价:</label>
<div class="col-sm-2">
<input id="rmbSum" th:field="*{rmbSum}" name="rmbSum" class="form-control" type="text" readonly>
</div>
</div>
</div>
</form> </form>

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> ');

21
ruoyi-admin/src/main/resources/templates/warehouse/inventoryInquiry/inventoryInquiry.html

@ -70,12 +70,9 @@
updateUrl: prefix + "/edit/{id}", updateUrl: prefix + "/edit/{id}",
exportUrl: prefix + "/export", exportUrl: prefix + "/export",
modalName: "仓库库存查询", modalName: "仓库库存查询",
height: $(window).height() - 20, fixedColumns: true, // 启用冻结列
modalWidth: 1200, fixedRightNumber: 1, // 冻结右列个数
// fixedColumns:true, sortable: true,
// fixedNumber: 1,
// fixedRightNumber: 1,
search: false,
showExport: true, showExport: true,
columns: [ columns: [
{checkbox: true}, {checkbox: true},
@ -117,12 +114,12 @@
{title: '报损数', field: 'reportDamageNum',}, {title: '报损数', field: 'reportDamageNum',},
{title: '使用状态', field: 'materialUseStatus', // {title: '使用状态', field: 'materialUseStatus',
formatter: function(value, row, index) { // formatter: function(value, row, index) {
return $.table.selectDictLabel(materialUseStatusDatas, value); // return $.table.selectDictLabel(materialUseStatusDatas, value);
} // }
}, // },
{title: '录入时间', field: 'createTime',visible: false}, {title: '录入时间', field: 'createTime',sortable: true},
{title: '录入人', field: 'createBy',visible: false}, {title: '录入人', field: 'createBy',visible: false},
{title: '更新人', field: 'updateBy',}, {title: '更新人', field: 'updateBy',},
{title: '上次更新时间', field: 'updateTime',}, {title: '上次更新时间', field: 'updateTime',},

Loading…
Cancel
Save