Browse Source

[feat]采购管理

采购计划新增 查找最新审核通过的物料采购报价方法,现在采购计划第二步添加采购订单的物料金额数据来自采购报价最新审核通过的
采购报价历史新增 通过供应商编号查询历史报价审核通过的数据方法
dev
liuxiaoxu 3 days ago
parent
commit
6a1994e703
  1. 5
      ruoyi-admin/src/main/java/com/ruoyi/purchase/mapper/PurchaseQuoteHistoryMapper.java
  2. 73
      ruoyi-admin/src/main/java/com/ruoyi/purchase/service/impl/PurchasePlanServiceImpl.java
  3. 21
      ruoyi-admin/src/main/resources/mapper/purchase/PurchaseQuoteHistoryMapper.xml

5
ruoyi-admin/src/main/java/com/ruoyi/purchase/mapper/PurchaseQuoteHistoryMapper.java

@ -94,4 +94,9 @@ public interface PurchaseQuoteHistoryMapper
* 通过供应商编号和物料编号更新采购报价历史数据 * 通过供应商编号和物料编号更新采购报价历史数据
* */ * */
public int updatePurchaseQuoteHistoryByCode(PurchaseQuoteHistory purchaseQuoteHistory); public int updatePurchaseQuoteHistoryByCode(PurchaseQuoteHistory purchaseQuoteHistory);
/**
* 通过供应商编号查询历史报价审核通过的数据
* */
List<PurchaseQuoteHistory> selectPurchaseQuoteHistoryListBySupplierCode(String supplierCode);
} }

73
ruoyi-admin/src/main/java/com/ruoyi/purchase/service/impl/PurchasePlanServiceImpl.java

@ -17,14 +17,9 @@ import com.ruoyi.erp.domain.vo.ErpDevelopModifyorderVo;
import com.ruoyi.erp.mapper.ErpDevelopModifyorderDetailMapper; import com.ruoyi.erp.mapper.ErpDevelopModifyorderDetailMapper;
import com.ruoyi.erp.service.IErpBomService; import com.ruoyi.erp.service.IErpBomService;
import com.ruoyi.purchase.controller.PurchaseQuoteController; import com.ruoyi.purchase.controller.PurchaseQuoteController;
import com.ruoyi.purchase.domain.PurchasePlan; import com.ruoyi.purchase.domain.*;
import com.ruoyi.purchase.domain.PurchasePlanChild;
import com.ruoyi.purchase.domain.PurchaseQuote;
import com.ruoyi.purchase.domain.PurchaseQuoteChild;
import com.ruoyi.purchase.domain.Vo.PurchasePlanSelectSupplierVo; import com.ruoyi.purchase.domain.Vo.PurchasePlanSelectSupplierVo;
import com.ruoyi.purchase.mapper.PurchasePlanChildMapper; import com.ruoyi.purchase.mapper.*;
import com.ruoyi.purchase.mapper.PurchaseQuoteChildMapper;
import com.ruoyi.purchase.mapper.PurchaseQuoteMapper;
import com.ruoyi.system.domain.*; import com.ruoyi.system.domain.*;
import com.ruoyi.system.domain.Vo.SysSupplierVo; import com.ruoyi.system.domain.Vo.SysSupplierVo;
import com.ruoyi.system.mapper.SysMakeOrderMapper; import com.ruoyi.system.mapper.SysMakeOrderMapper;
@ -34,7 +29,6 @@ import com.ruoyi.system.mapper.SysSupplierMapper;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.ruoyi.purchase.mapper.PurchasePlanMapper;
import com.ruoyi.purchase.service.IPurchasePlanService; import com.ruoyi.purchase.service.IPurchasePlanService;
import com.ruoyi.common.core.text.Convert; import com.ruoyi.common.core.text.Convert;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -75,6 +69,9 @@ public class PurchasePlanServiceImpl implements IPurchasePlanService
@Autowired @Autowired
private PurchaseQuoteChildMapper purchaseQuoteChildMapper; private PurchaseQuoteChildMapper purchaseQuoteChildMapper;
@Autowired
private PurchaseQuoteHistoryMapper purchaseQuoteHistoryMapper;
@Autowired @Autowired
private SysSupplierMapper sysSupplierMapper; private SysSupplierMapper sysSupplierMapper;
@ -207,17 +204,50 @@ public class PurchasePlanServiceImpl implements IPurchasePlanService
String supplierCode = purchasePlan.getSupplierCode(); String supplierCode = purchasePlan.getSupplierCode();
List<PurchaseQuoteChild> purchaseQuoteChildList = purchaseQuoteChildMapper.selectQuoteChildBySupplierCode(supplierCode);
//采购计划子表数据 //采购计划子表数据
List<PurchasePlanChild> purchasePlanChildList = purchasePlanChildMapper.selectPurchasePlanChildPlanCodeList(purchasePlanCodeList); List<PurchasePlanChild> purchasePlanChildList = purchasePlanChildMapper.selectPurchasePlanChildPlanCodeList(purchasePlanCodeList);
// 创建一个映射,以便快速查找物料号对应的最新报价历史
Map<String, PurchaseQuoteHistory> quoteHistoryMap = new HashMap<>();
// 获取所有物料号
Set<String> materialCodes = purchasePlanChildList.stream()
.map(PurchasePlanChild::getMaterialNo)
.collect(Collectors.toSet());
// 遍历每个物料号,获取最新的报价数据
for (String materialCode : materialCodes) {
PurchaseQuoteHistory purchaseQuoteHistory = new PurchaseQuoteHistory();
purchaseQuoteHistory.setSupplierCode(supplierCode);
purchaseQuoteHistory.setMaterialCode(materialCode);
List<PurchaseQuoteHistory> purchaseQuoteHistories = selectPurchaseQuoteHistoryList(purchaseQuoteHistory);
// 找到最新的报价记录
Optional<PurchaseQuoteHistory> latestQuoteHistory = purchaseQuoteHistories.stream()
.filter(item -> "1".equals(item.getIsLatest()))
.findFirst();
latestQuoteHistory.ifPresent(history -> quoteHistoryMap.put(materialCode, history));
}
// 合并相同物料料号的数据 // 合并相同物料料号的数据
Map<String, PurchasePlanChild> mergedMap = purchasePlanChildList.stream() Map<String, PurchasePlanChild> mergedMap = purchasePlanChildList.stream()
.collect(Collectors.toMap( .collect(Collectors.toMap(
PurchasePlanChild::getMaterialNo, PurchasePlanChild::getMaterialNo,
item -> item, item -> {
// 设置最新的报价数据
PurchaseQuoteHistory quoteHistory = quoteHistoryMap.get(item.getMaterialNo());
if (quoteHistory != null) {
item.setLatestQuoteRmb(quoteHistory.getMaterialRmb());
item.setMaterialNoRmbSum(quoteHistory.getMaterialNormb());
item.setMaterialRmbSum(quoteHistory.getMaterialRmb());
}
return item;
},
(existingItem, newItem) -> { (existingItem, newItem) -> {
existingItem.setPurchaseNum( existingItem.setPurchaseNum(
(existingItem.getPurchaseNum() != null ? existingItem.getPurchaseNum() : 0) + (existingItem.getPurchaseNum() != null ? existingItem.getPurchaseNum() : 0) +
@ -266,6 +296,29 @@ public class PurchasePlanServiceImpl implements IPurchasePlanService
} }
//查找最新审核通过的物料采购报价
public List<PurchaseQuoteHistory> selectPurchaseQuoteHistoryList(PurchaseQuoteHistory purchaseQuoteHistory) {
// 最新的报价
PurchaseQuoteHistory latestQuoteHistory = purchaseQuoteHistoryMapper.findLatestPurchaseQuoteHistory(purchaseQuoteHistory);
if (latestQuoteHistory != null) {
List<PurchaseQuoteHistory> purchaseQuoteHistories = purchaseQuoteHistoryMapper.selectPurchaseQuoteHistoryList(purchaseQuoteHistory);
purchaseQuoteHistories.forEach(item -> {
if (Objects.equals(item.getPurchaseQuoteChildId(), latestQuoteHistory.getPurchaseQuoteChildId())) {
item.setIsLatest("1");
} else {
item.setIsLatest("0");
}
});
return purchaseQuoteHistories;
}
return purchaseQuoteHistoryMapper.selectPurchaseQuoteHistoryList(purchaseQuoteHistory);
}
/** /**
* 新增采购计划单 * 新增采购计划单
* *

21
ruoyi-admin/src/main/resources/mapper/purchase/PurchaseQuoteHistoryMapper.xml

@ -60,7 +60,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<include refid="selectPurchaseQuoteHistoryVo"/> <include refid="selectPurchaseQuoteHistoryVo"/>
where purchase_quote_child_id = #{purchaseQuoteChildId} where purchase_quote_child_id = #{purchaseQuoteChildId}
</select> </select>
<select id="findLatestPurchaseQuoteHistory" parameterType="String" resultMap="PurchaseQuoteHistoryResult">
<include refid="selectPurchaseQuoteHistoryVo"/>
where supplier_code = #{supplierCode} and material_code = #{materialCode} and audit_status = '1'
order by update_time desc
limit 1
</select>
<select id="selectPurchaseQuoteHistoryListBySupplierCode" parameterType="String" resultMap="PurchaseQuoteHistoryResult">
<include refid="selectPurchaseQuoteHistoryVo"/>
where supplier_code = #{supplierCode} and audit_status = '1'
</select>
<insert id="insertPurchaseQuoteHistory" parameterType="PurchaseQuoteHistory" useGeneratedKeys="true" keyProperty="purchaseQuoteChildId"> <insert id="insertPurchaseQuoteHistory" parameterType="PurchaseQuoteHistory" useGeneratedKeys="true" keyProperty="purchaseQuoteChildId">
insert into purchase_quote_history insert into purchase_quote_history
<trim prefix="(" suffix=")" suffixOverrides=","> <trim prefix="(" suffix=")" suffixOverrides=",">
@ -257,12 +270,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</update> </update>
<select id="findLatestPurchaseQuoteHistory" parameterType="String" resultMap="PurchaseQuoteHistoryResult" >
<include refid="selectPurchaseQuoteHistoryVo"/>
where supplier_code = #{supplierCode} and material_code = #{materialCode} and audit_status = '1'
order by update_time desc
limit 1
</select>
</mapper> </mapper>
Loading…
Cancel
Save