|
|
|
@ -472,8 +472,8 @@ public class QuoteServiceImpl extends ServiceImpl<QuoteMapper, Quote> implements |
|
|
|
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(); |
|
|
|
Object value = getPropertyValue(quoteInfo, nodeDetail.getPlmField()); |
|
|
|
fieldValue = toNumericFlowValue(value, nodeDetail.getPlmTable(), nodeDetail.getPlmField()); |
|
|
|
} else { |
|
|
|
Object value = getPropertyValue(quoteInfo, nodeDetail.getPlmField()); |
|
|
|
fieldValue = value == null ? "" : value.toString(); |
|
|
|
@ -483,8 +483,8 @@ public class QuoteServiceImpl extends ServiceImpl<QuoteMapper, Quote> implements |
|
|
|
else if ("plm_quote_detail".equals(nodeDetail.getPlmTable()) && defaultQuoteDetail != null) { |
|
|
|
// 判断是否为金额类型 |
|
|
|
if ("C".equals(nodeDetail.getFieldType())) { |
|
|
|
BigDecimal v = (BigDecimal) getPropertyValue(defaultQuoteDetail, nodeDetail.getPlmField()); |
|
|
|
fieldValue = v == null ? "0" : v.toString(); |
|
|
|
Object value = getPropertyValue(defaultQuoteDetail, nodeDetail.getPlmField()); |
|
|
|
fieldValue = toNumericFlowValue(value, nodeDetail.getPlmTable(), nodeDetail.getPlmField()); |
|
|
|
} else { |
|
|
|
Object value = getPropertyValue(defaultQuoteDetail, nodeDetail.getPlmField()); |
|
|
|
fieldValue = value == null ? "" : value.toString(); |
|
|
|
@ -740,8 +740,8 @@ public class QuoteServiceImpl extends ServiceImpl<QuoteMapper, Quote> implements |
|
|
|
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(); |
|
|
|
Object value = getPropertyValue(quoteInfo, nodeDetail.getPlmField()); |
|
|
|
fieldValue = toNumericFlowValue(value, nodeDetail.getPlmTable(), nodeDetail.getPlmField()); |
|
|
|
} else { |
|
|
|
Object value = getPropertyValue(quoteInfo, nodeDetail.getPlmField()); |
|
|
|
fieldValue = value == null ? "" : value.toString(); |
|
|
|
@ -751,8 +751,8 @@ public class QuoteServiceImpl extends ServiceImpl<QuoteMapper, Quote> implements |
|
|
|
else if ("plm_quote_detail".equals(nodeDetail.getPlmTable()) && defaultQuoteDetail != null) { |
|
|
|
// 判断是否为金额类型 |
|
|
|
if ("C".equals(nodeDetail.getFieldType())) { |
|
|
|
BigDecimal v = (BigDecimal) getPropertyValue(defaultQuoteDetail, nodeDetail.getPlmField()); |
|
|
|
fieldValue = v == null ? "0" : v.toString(); |
|
|
|
Object value = getPropertyValue(defaultQuoteDetail, nodeDetail.getPlmField()); |
|
|
|
fieldValue = toNumericFlowValue(value, nodeDetail.getPlmTable(), nodeDetail.getPlmField()); |
|
|
|
} else { |
|
|
|
Object value = getPropertyValue(defaultQuoteDetail, nodeDetail.getPlmField()); |
|
|
|
fieldValue = value == null ? "" : value.toString(); |
|
|
|
@ -777,6 +777,38 @@ public class QuoteServiceImpl extends ServiceImpl<QuoteMapper, Quote> implements |
|
|
|
return mainData; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* OA流程字段值转换:金额字段(C)统一按数值字符串输出。 |
|
|
|
* 兼容 BigDecimal / Number / String,避免直接强转导致 ClassCastException。 |
|
|
|
*/ |
|
|
|
private String toNumericFlowValue(Object value, String plmTable, String plmField) { |
|
|
|
if (value == null) { |
|
|
|
return "0"; |
|
|
|
} |
|
|
|
if (value instanceof BigDecimal) { |
|
|
|
return ((BigDecimal) value).toString(); |
|
|
|
} |
|
|
|
if (value instanceof Number) { |
|
|
|
return new BigDecimal(value.toString()).toString(); |
|
|
|
} |
|
|
|
if (value instanceof String) { |
|
|
|
String strValue = ((String) value).trim(); |
|
|
|
if (!StringUtils.hasText(strValue)) { |
|
|
|
return "0"; |
|
|
|
} |
|
|
|
try { |
|
|
|
return new BigDecimal(strValue).toString(); |
|
|
|
} catch (NumberFormatException ex) { |
|
|
|
throw new RuntimeException(String.format( |
|
|
|
"流程字段配置异常:[%s.%s] 被配置为金额(C),但值[%s]不是数字", |
|
|
|
plmTable, plmField, strValue)); |
|
|
|
} |
|
|
|
} |
|
|
|
throw new RuntimeException(String.format( |
|
|
|
"流程字段配置异常:[%s.%s] 被配置为金额(C),但值类型[%s]不支持", |
|
|
|
plmTable, plmField, value.getClass().getSimpleName())); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 获取默认报价行的条目明细(QuoteDetail) |
|
|
|
* @param quoteId 报价单ID |
|
|
|
|