|
|
|
@ -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 表的字段(site、bu_no、quote_profit_rate、quote_profit_amount、quote_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 表的字段(site、bu_no、quote_profit_rate、quote_profit_amount、quote_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 表的字段(site、bu_no、quote_profit_rate、quote_profit_amount、quote_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 表的字段(site、bu_no、quote_profit_rate、quote_profit_amount、quote_tax_rate) |
|
|
|
else if ("plm_quote_detail".equals(nodeDetail.getPlmTable()) && defaultQuoteDetail != null) { |
|
|
|
// 判断是否为金额类型 |
|
|
|
if ("C".equals(nodeDetail.getFieldType())) { |
|
|
|
BigDecimal v = (BigDecimal) getPropertyValue(defaultQuoteDetail, nodeDetail.getPlmField()); |
|
|
|
|