Browse Source

[feat]采购管理

供应商分页查询接口新增根据创建时间排序
修复采购计划添加采购订单相同料号的数据,实际采购数、待采购数和状态的变化的bug问题
dev
liuxiaoxu 3 months ago
parent
commit
97bf792b17
  1. 75
      ruoyi-admin/src/main/java/com/ruoyi/purchase/service/impl/PurchaseOrderServiceImpl.java
  2. 2
      ruoyi-admin/src/main/resources/mapper/system/SysSupplierMapper.xml

75
ruoyi-admin/src/main/java/com/ruoyi/purchase/service/impl/PurchaseOrderServiceImpl.java

@ -449,51 +449,62 @@ public class PurchaseOrderServiceImpl implements IPurchaseOrderService
// 获取旧数据中相同物料编号的数据 // 获取旧数据中相同物料编号的数据
List<PurchasePlanChild> oldChildren = oldDataGroupedByMaterialNo.get(materialNo); List<PurchasePlanChild> oldChildren = oldDataGroupedByMaterialNo.get(materialNo);
if (oldChildren != null && !oldChildren.isEmpty()) { Integer thisPurchaseNum = purchasePlanSelectMaterialVo.getThisPurchaseNum();
// 按照 订单创建时间 远离当前时间排序
oldChildren.sort(Comparator.comparing(oldChild -> -Math.abs(now.getTime() - oldChild.getCreateTime().getTime())));
for (PurchasePlanChild oldChild : oldChildren) { int oldPurchaseNumSum = oldChildren.stream().mapToInt(PurchasePlanChild::getPurchaseNum).sum();
Integer thisPurchaseNum = purchasePlanSelectMaterialVo.getThisPurchaseNum(); if (oldPurchaseNumSum < thisPurchaseNum){
//本次采购数也是实际采购数
oldChild.setActualPurchaseNum(thisPurchaseNum);
//待采购数
Integer purchaseNum = oldChild.getPurchaseNum();
if (purchaseNum >= thisPurchaseNum){
purchaseNum = purchaseNum - thisPurchaseNum;
oldChild.setPurchaseNum(purchaseNum);
}else {
throw new BusinessException("本次采购数量不能大于待采购数量"); throw new BusinessException("本次采购数量不能大于待采购数量");
} }
if (!CollectionUtils.isEmpty(oldChildren)) {
// 按照订单创建时间远离当前时间排序(即由远及近)
oldChildren.sort(Comparator.comparing(oldChild -> oldChild.getCreateTime().getTime()));
for (PurchasePlanChild oldChild : oldChildren) {
Integer purchaseNum = oldChild.getPurchaseNum();
if (thisPurchaseNum <= 0) break; // 如果本次采购数已分配完毕则退出循环
if (purchaseNum >= thisPurchaseNum) {
// 当前记录的待采购数足够覆盖剩余的本次采购数
oldChild.setActualPurchaseNum(thisPurchaseNum);
oldChild.setPurchaseNum(purchaseNum - thisPurchaseNum);
thisPurchaseNum = 0; // 本次采购数分配完毕
} else {
// 当前记录的待采购数不足以覆盖剩余的本次采购数
oldChild.setActualPurchaseNum(purchaseNum);
thisPurchaseNum -= purchaseNum;
oldChild.setPurchaseNum(0); // 该记录的待采购数清零
}
/* /*
* 部分申请:0<(实际采购数+共享库存占用数+作废数)<计划采购数;可添加采购订单 * 部分申请:0<(实际采购数+共享库存占用数+作废数)<计划采购数;可添加采购订单
* 全部申请:0<(实际采购数+共享库存占用数+作废数)=计划采购数作废数<计划采购数;不可添加采购订单 * 全部申请:0<(实际采购数+共享库存占用数+作废数)=计划采购数作废数<计划采购数;不可添加采购订单
* */ * */
//计划采购数 // 更新状态
Integer planPurchaseNum = oldChild.getPlanPurchaseNum(); Integer planPurchaseNum = oldChild.getPlanPurchaseNum();
if (thisPurchaseNum < planPurchaseNum){ if (oldChild.getActualPurchaseNum().equals(planPurchaseNum)) {
oldChild.setPurchasePlanStatus("1");//部分申请 oldChild.setPurchasePlanStatus("2"); // 全部申请
} } else {
if (thisPurchaseNum.equals(planPurchaseNum)){ oldChild.setPurchasePlanStatus("1"); // 部分申请
oldChild.setPurchasePlanStatus("2");//全部申请 }
}
oldChild.setUpdateTime(new Date());
oldChild.setUpdateBy(ShiroUtils.getLoginName());
oldChild.setThisPurchaseNum(thisPurchaseNum);
// 更新其他字段
oldChild.setUpdateTime(new Date());
oldChild.setUpdateBy(ShiroUtils.getLoginName());
oldChild.setThisPurchaseNum(purchasePlanSelectMaterialVo.getThisPurchaseNum());
oldChild.setMaterialNoRmbSum(purchasePlanSelectMaterialVo.getMaterialNoRmbSum()); oldChild.setMaterialNoRmbSum(purchasePlanSelectMaterialVo.getMaterialNoRmbSum());
oldChild.setMaterialRmbSum(purchasePlanSelectMaterialVo.getMaterialRmbSum()); oldChild.setMaterialRmbSum(purchasePlanSelectMaterialVo.getMaterialRmbSum());
oldChild.setLatestQuoteRmb(purchasePlanSelectMaterialVo.getLatestQuoteRmb()); oldChild.setLatestQuoteRmb(purchasePlanSelectMaterialVo.getLatestQuoteRmb());
//收集更新后的子表数据 oldChild.setThisPurchaseNum(thisPurchaseNum);
purchasePlanChildren.add(oldChild); // 收集更新后的子表数据
purchasePlanChildren.add(oldChild);
int result = purchasePlanChildMapper.updatePurchasePlanChild(oldChild); int result = purchasePlanChildMapper.updatePurchasePlanChild(oldChild);
if (result <= 0){ if (result <= 0){
throw new BusinessException("更新采购计划子表数据失败"); throw new BusinessException("更新采购计划子表数据失败");
} }
// 更新完成后,跳出循环
break;
} }
} }
} }
@ -544,14 +555,14 @@ public class PurchaseOrderServiceImpl implements IPurchaseOrderService
} }
// 累加 actualPurchaseSum // 累加 actualPurchaseSum
int thisPurchaseSum = children.stream() int actualPurchaseSum = children.stream()
.mapToInt(PurchasePlanChild::getThisPurchaseNum) .mapToInt(PurchasePlanChild::getActualPurchaseNum)
.sum(); .sum();
purchasePlan.setActualPurchaseSum(purchasePlan.getActualPurchaseSum() + thisPurchaseSum); purchasePlan.setActualPurchaseSum(purchasePlan.getActualPurchaseSum() + actualPurchaseSum);
// 更新 purchaseSum // 更新 purchaseSum
int currentPurchaseSum = purchasePlan.getPurchaseSum(); int currentPurchaseSum = purchasePlan.getPurchaseSum();
purchasePlan.setPurchaseSum(currentPurchaseSum - thisPurchaseSum); purchasePlan.setPurchaseSum(currentPurchaseSum - actualPurchaseSum);
// 计算合计值 // 计算合计值
double totalNoRmbSum = children.stream().mapToDouble(vo -> vo.getMaterialNoRmbSum().doubleValue()).sum(); double totalNoRmbSum = children.stream().mapToDouble(vo -> vo.getMaterialNoRmbSum().doubleValue()).sum();

2
ruoyi-admin/src/main/resources/mapper/system/SysSupplierMapper.xml

@ -131,7 +131,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="invoiceCompanyName != null and invoiceCompanyName != ''"> and sup.invoice_company_name like concat('%', #{invoiceCompanyName}, '%')</if> <if test="invoiceCompanyName != null and invoiceCompanyName != ''"> and sup.invoice_company_name like concat('%', #{invoiceCompanyName}, '%')</if>
<if test="companyTaxNumber != null and companyTaxNumber != ''"> and sup.company_tax_number like concat('%', #{companyTaxNumber}, '%')</if> <if test="companyTaxNumber != null and companyTaxNumber != ''"> and sup.company_tax_number like concat('%', #{companyTaxNumber}, '%')</if>
</where> </where>
order by sup.apply_time asc, sup.create_time desc order by sup.create_time desc
</select> </select>
<select id="selectSysSupplierById" parameterType="Long" resultMap="SysSupplierResult"> <select id="selectSysSupplierById" parameterType="Long" resultMap="SysSupplierResult">
select sup.supplier_id, sup.supplier_code, sup.supplier_name, sup.export_sales, select sup.supplier_id, sup.supplier_code, sup.supplier_name, sup.export_sales,

Loading…
Cancel
Save