Browse Source

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

dev
王晓迪 3 months ago
parent
commit
e90a44916a
  1. 65
      ruoyi-admin/src/main/java/com/ruoyi/purchase/service/impl/PurchaseOrderServiceImpl.java
  2. 2
      ruoyi-admin/src/main/resources/mapper/system/SysSupplierMapper.xml

65
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);
if (oldChildren != null && !oldChildren.isEmpty()) {
// 按照 订单创建时间 远离当前时间排序
oldChildren.sort(Comparator.comparing(oldChild -> -Math.abs(now.getTime() - oldChild.getCreateTime().getTime())));
Integer thisPurchaseNum = purchasePlanSelectMaterialVo.getThisPurchaseNum();
int oldPurchaseNumSum = oldChildren.stream().mapToInt(PurchasePlanChild::getPurchaseNum).sum();
if (oldPurchaseNumSum < thisPurchaseNum){
throw new BusinessException("本次采购数量不能大于待采购数量");
}
if (!CollectionUtils.isEmpty(oldChildren)) {
// 按照订单创建时间远离当前时间排序(即由远及近)
oldChildren.sort(Comparator.comparing(oldChild -> oldChild.getCreateTime().getTime()));
for (PurchasePlanChild oldChild : oldChildren) {
Integer thisPurchaseNum = purchasePlanSelectMaterialVo.getThisPurchaseNum();
//本次采购数也是实际采购数
oldChild.setActualPurchaseNum(thisPurchaseNum);
//待采购数
Integer purchaseNum = oldChild.getPurchaseNum();
if (purchaseNum >= thisPurchaseNum){
purchaseNum = purchaseNum - thisPurchaseNum;
oldChild.setPurchaseNum(purchaseNum);
}else {
throw new BusinessException("本次采购数量不能大于待采购数量");
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<(实际采购数+共享库存占用数+作废数)=计划采购数作废数<计划采购数;不可添加采购订单
* */
//计划采购数
// 更新状态
Integer planPurchaseNum = oldChild.getPlanPurchaseNum();
if (thisPurchaseNum < planPurchaseNum){
oldChild.setPurchasePlanStatus("1");//部分申请
}
if (thisPurchaseNum.equals(planPurchaseNum)){
oldChild.setPurchasePlanStatus("2");//全部申请
if (oldChild.getActualPurchaseNum().equals(planPurchaseNum)) {
oldChild.setPurchasePlanStatus("2"); // 全部申请
} else {
oldChild.setPurchasePlanStatus("1"); // 部分申请
}
// 更新其他字段
oldChild.setUpdateTime(new Date());
oldChild.setUpdateBy(ShiroUtils.getLoginName());
oldChild.setThisPurchaseNum(thisPurchaseNum);
oldChild.setThisPurchaseNum(purchasePlanSelectMaterialVo.getThisPurchaseNum());
oldChild.setMaterialNoRmbSum(purchasePlanSelectMaterialVo.getMaterialNoRmbSum());
oldChild.setMaterialRmbSum(purchasePlanSelectMaterialVo.getMaterialRmbSum());
oldChild.setLatestQuoteRmb(purchasePlanSelectMaterialVo.getLatestQuoteRmb());
//收集更新后的子表数据
oldChild.setThisPurchaseNum(thisPurchaseNum);
// 收集更新后的子表数据
purchasePlanChildren.add(oldChild);
int result = purchasePlanChildMapper.updatePurchasePlanChild(oldChild);
if (result <= 0){
throw new BusinessException("更新采购计划子表数据失败");
}
// 更新完成后,跳出循环
break;
}
}
}
@ -544,14 +555,14 @@ public class PurchaseOrderServiceImpl implements IPurchaseOrderService
}
// 累加 actualPurchaseSum
int thisPurchaseSum = children.stream()
.mapToInt(PurchasePlanChild::getThisPurchaseNum)
int actualPurchaseSum = children.stream()
.mapToInt(PurchasePlanChild::getActualPurchaseNum)
.sum();
purchasePlan.setActualPurchaseSum(purchasePlan.getActualPurchaseSum() + thisPurchaseSum);
purchasePlan.setActualPurchaseSum(purchasePlan.getActualPurchaseSum() + actualPurchaseSum);
// 更新 purchaseSum
int currentPurchaseSum = purchasePlan.getPurchaseSum();
purchasePlan.setPurchaseSum(currentPurchaseSum - thisPurchaseSum);
purchasePlan.setPurchaseSum(currentPurchaseSum - actualPurchaseSum);
// 计算合计值
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="companyTaxNumber != null and companyTaxNumber != ''"> and sup.company_tax_number like concat('%', #{companyTaxNumber}, '%')</if>
</where>
order by sup.apply_time asc, sup.create_time desc
order by sup.create_time desc
</select>
<select id="selectSysSupplierById" parameterType="Long" resultMap="SysSupplierResult">
select sup.supplier_id, sup.supplier_code, sup.supplier_name, sup.export_sales,

Loading…
Cancel
Save