Browse Source

2026-01-12

报价流程审批增加项目年销售额(annual_sales)
master
fengyuan_yang 2 days ago
parent
commit
ae2493b941
  1. 65
      src/main/java/com/spring/modules/quote/service/impl/QuoteServiceImpl.java

65
src/main/java/com/spring/modules/quote/service/impl/QuoteServiceImpl.java

@ -430,6 +430,8 @@ public class QuoteServiceImpl extends ServiceImpl<QuoteMapper, Quote> implements
List<PlmRequestDetailVo> nodeDetails = changeManagementMapper.queryNodeDetailFirst(quote.getSite(), baseData.get("workflowId"), quote.getMenuId());
// 获取默认报价行的条目明细
QuoteDetail defaultQuoteDetail = getDefaultQuoteDetail(quote.getId());
// 获取报价主表信息用于获取plm_quote表字段
Quote quoteInfo = getById(quote.getId());
// 根据字段对应的数据库表+字段查询出数据
for (PlmRequestDetailVo nodeDetail : nodeDetails) {
if (nodeDetail.getId() == null) {
@ -443,8 +445,19 @@ public class QuoteServiceImpl extends ServiceImpl<QuoteMapper, Quote> implements
mainData.add(md);
continue;
}
// 只处理 plm_quote_detail 表的字段sitebu_noquote_profit_ratequote_profit_amountquote_tax_rate
if ("plm_quote_detail".equals(nodeDetail.getPlmTable()) && defaultQuoteDetail != null) {
// 处理 plm_quote 表的字段 annual_sales
if ("plm_quote".equals(nodeDetail.getPlmTable()) && quoteInfo != null) {
// 判断是否为金额类型
if ("C".equals(nodeDetail.getFieldType())) {
BigDecimal v = (BigDecimal) getPropertyValue(quoteInfo, nodeDetail.getPlmField());
fieldValue = v == null ? "0" : v.toString();
} else {
Object value = getPropertyValue(quoteInfo, nodeDetail.getPlmField());
fieldValue = value == null ? "" : value.toString();
}
}
// 处理 plm_quote_detail 表的字段sitebu_noquote_profit_ratequote_profit_amountquote_tax_rate
else if ("plm_quote_detail".equals(nodeDetail.getPlmTable()) && defaultQuoteDetail != null) {
// 判断是否为金额类型
if ("C".equals(nodeDetail.getFieldType())) {
BigDecimal v = (BigDecimal) getPropertyValue(defaultQuoteDetail, nodeDetail.getPlmField());
@ -507,6 +520,18 @@ public class QuoteServiceImpl extends ServiceImpl<QuoteMapper, Quote> implements
@Override
@Transactional
public void submitChange(Quote quote) {
// 1. 先更新主表数据包括annual_sales等字段确保在事务中
Quote updateQuote = new Quote();
updateQuote.setId(quote.getId());
// 只更新需要的字段
if (!StringUtils.isEmpty(quote.getAnnualSales())) {
updateQuote.setAnnualSales(quote.getAnnualSales());
}
// 可以根据需要添加其他需要更新的字段
updateQuote.setUpdateBy(quote.getUserName());
updateQuote.setUpdateDate(new Date());
updateById(updateQuote);
// 获取提交基础数据
Map<String, String> baseData = changeManagementService.getSubmitBaseData(quote.getSite(), quote.getUserName(), quote.getQuoteVersionNo());
// 主信息
@ -520,7 +545,9 @@ public class QuoteServiceImpl extends ServiceImpl<QuoteMapper, Quote> implements
if ("Y".equals(quote.getNodeConclusion())) { // 同意
// 获取默认报价行的条目明细
QuoteDetail defaultQuoteDetail = getDefaultQuoteDetail(quote.getId());
List<MainData> mainData = getMainData(quote.getSite(), baseData, defaultQuoteDetail);
// 获取报价主表信息用于获取plm_quote表字段如annual_sales
Quote quoteInfo = getById(quote.getId());
List<MainData> mainData = getMainData(quote.getSite(), baseData, defaultQuoteDetail, quoteInfo);
paramData.setMainData(mainData);
SubmitRequestParam submitRequestParam = new SubmitRequestParam();
submitRequestParam.setUserId(paramData.getUserId());
@ -614,7 +641,8 @@ public class QuoteServiceImpl extends ServiceImpl<QuoteMapper, Quote> implements
if ("update".equals(data.getProcessFlag())) {
// 获取默认报价行的条目明细
QuoteDetail defaultQuoteDetail = getDefaultQuoteDetail(changeRequest.getId());
List<MainData> mainData = getMainData(data.getSite(), baseData, defaultQuoteDetail);
// 获取报价主表信息用于获取plm_quote表字段如annual_sales
List<MainData> mainData = getMainData(data.getSite(), baseData, defaultQuoteDetail, changeRequest);
paramData.setMainData(mainData);
SubmitRequestParam submitRequestParam = new SubmitRequestParam();
submitRequestParam.setUserId(data.getUpdateBy());
@ -645,13 +673,25 @@ public class QuoteServiceImpl extends ServiceImpl<QuoteMapper, Quote> implements
}
/**
* 获取mainData - 从plm_quote_detail表获取数据取默认报价行的条目明细
* 获取mainData - plm_quote和plm_quote_detail表获取数据
* @param site
* @param baseData
* @param defaultQuoteDetail 默认报价行的条目明细
* @return
*/
private List<MainData> getMainData(String site, Map<String, String> baseData, QuoteDetail defaultQuoteDetail) {
return getMainData(site, baseData, defaultQuoteDetail, null);
}
/**
* 获取mainData - 从plm_quote和plm_quote_detail表获取数据
* @param site
* @param baseData
* @param defaultQuoteDetail 默认报价行的条目明细
* @param quoteInfo 报价主表信息
* @return
*/
private List<MainData> getMainData(String site, Map<String, String> baseData, QuoteDetail defaultQuoteDetail, Quote quoteInfo) {
// 创建 mainData
List<MainData> mainData = new ArrayList<>();
List<PlmRequestDetailVo> nodeDetails = changeManagementMapper.queryNodeDetails(site, baseData.get("workflowId"), baseData.get("nodeId"), baseData.get("classificationNo"));
@ -668,8 +708,19 @@ public class QuoteServiceImpl extends ServiceImpl<QuoteMapper, Quote> implements
mainData.add(md);
continue;
}
// 只处理 plm_quote_detail 表的字段sitebu_noquote_profit_ratequote_profit_amountquote_tax_rate
if ("plm_quote_detail".equals(nodeDetail.getPlmTable()) && defaultQuoteDetail != null) {
// 处理 plm_quote 表的字段 annual_sales
if ("plm_quote".equals(nodeDetail.getPlmTable()) && quoteInfo != null) {
// 判断是否为金额类型
if ("C".equals(nodeDetail.getFieldType())) {
BigDecimal v = (BigDecimal) getPropertyValue(quoteInfo, nodeDetail.getPlmField());
fieldValue = v == null ? "0" : v.toString();
} else {
Object value = getPropertyValue(quoteInfo, nodeDetail.getPlmField());
fieldValue = value == null ? "" : value.toString();
}
}
// 处理 plm_quote_detail 表的字段sitebu_noquote_profit_ratequote_profit_amountquote_tax_rate
else if ("plm_quote_detail".equals(nodeDetail.getPlmTable()) && defaultQuoteDetail != null) {
// 判断是否为金额类型
if ("C".equals(nodeDetail.getFieldType())) {
BigDecimal v = (BigDecimal) getPropertyValue(defaultQuoteDetail, nodeDetail.getPlmField());

Loading…
Cancel
Save