|
@@ -412,11 +412,18 @@ public class DaDiInsurancePlanRequest extends DaDiBaseRequest {
|
|
|
? daDiNewEnergyVehicleInsurance.toMap()
|
|
? daDiNewEnergyVehicleInsurance.toMap()
|
|
|
: daDiFuelVehicleInsurance.toMap();
|
|
: daDiFuelVehicleInsurance.toMap();
|
|
|
|
|
|
|
|
|
|
+ // 第三者责任险保额:医保外医疗费用责任险“保额为1”表示共享三者保额时使用(未投保三者则为null,不替换)
|
|
|
|
|
+ String thirdPartyLimit = quoteVo.getKindInfoVo().stream()
|
|
|
|
|
+ .filter(k -> "B".equals(k.getKindCode()))
|
|
|
|
|
+ .map(KindInfoVo::getAmount)
|
|
|
|
|
+ .findFirst()
|
|
|
|
|
+ .orElse(null);
|
|
|
|
|
+
|
|
|
for (KindInfoVo kindInfoVo : quoteVo.getKindInfoVo()) {
|
|
for (KindInfoVo kindInfoVo : quoteVo.getKindInfoVo()) {
|
|
|
String mKindCode = kindInfoVo.getKindCode();
|
|
String mKindCode = kindInfoVo.getKindCode();
|
|
|
DaDiFuelKindInfo target = insuranceMap.get(mKindCode);
|
|
DaDiFuelKindInfo target = insuranceMap.get(mKindCode);
|
|
|
if (target != null) {
|
|
if (target != null) {
|
|
|
- applyNewEnergySpecialProcessing(target, kindInfoVo, actualValue, priceCoefficient, seatCount);
|
|
|
|
|
|
|
+ applyNewEnergySpecialProcessing(target, kindInfoVo, actualValue, priceCoefficient, seatCount, thirdPartyLimit);
|
|
|
daDiFuelKindInfo.add(target);
|
|
daDiFuelKindInfo.add(target);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -494,7 +501,8 @@ public class DaDiInsurancePlanRequest extends DaDiBaseRequest {
|
|
|
* 新能源车险特殊处理:根据平台险种编码,将源KindInfoVo的字段映射到目标DaDiFuelKindInfo
|
|
* 新能源车险特殊处理:根据平台险种编码,将源KindInfoVo的字段映射到目标DaDiFuelKindInfo
|
|
|
*/
|
|
*/
|
|
|
private void applyNewEnergySpecialProcessing(DaDiFuelKindInfo target, KindInfoVo source,
|
|
private void applyNewEnergySpecialProcessing(DaDiFuelKindInfo target, KindInfoVo source,
|
|
|
- String actualValue, String priceCoefficient, int seatCount) {
|
|
|
|
|
|
|
+ String actualValue, String priceCoefficient, int seatCount,
|
|
|
|
|
+ String thirdPartyLimit) {
|
|
|
String platformKindCode = source.getKindCode();
|
|
String platformKindCode = source.getKindCode();
|
|
|
|
|
|
|
|
switch (platformKindCode) {
|
|
switch (platformKindCode) {
|
|
@@ -534,21 +542,39 @@ public class DaDiInsurancePlanRequest extends DaDiBaseRequest {
|
|
|
|
|
|
|
|
case "SY_FJ_YBW1":
|
|
case "SY_FJ_YBW1":
|
|
|
// 附加医保外医疗费用责任险(三者)
|
|
// 附加医保外医疗费用责任险(三者)
|
|
|
- target.setAmount(source.getAmount());
|
|
|
|
|
|
|
+ // 保额为1时共享第三者责任险保额(未投保三者则不替换,保持原值)
|
|
|
|
|
+ if ("1".equals(source.getAmount()) && thirdPartyLimit != null) {
|
|
|
|
|
+ target.setAmount(thirdPartyLimit);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ target.setAmount(source.getAmount());
|
|
|
|
|
+ }
|
|
|
break;
|
|
break;
|
|
|
|
|
|
|
|
case "SY_FJ_YBW3":
|
|
case "SY_FJ_YBW3":
|
|
|
// 附加医保外医疗费用责任险(司机)
|
|
// 附加医保外医疗费用责任险(司机)
|
|
|
- target.setAmount(source.getAmount());
|
|
|
|
|
|
|
+ // 保额为1时共享第三者责任险保额(未投保三者则不替换,保持原值)
|
|
|
|
|
+ if ("1".equals(source.getAmount()) && thirdPartyLimit != null) {
|
|
|
|
|
+ target.setAmount(thirdPartyLimit);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ target.setAmount(source.getAmount());
|
|
|
|
|
+ }
|
|
|
break;
|
|
break;
|
|
|
|
|
|
|
|
case "SY_FJ_YBW2":
|
|
case "SY_FJ_YBW2":
|
|
|
// 附加医保外医疗费用责任险(乘客):单人金额 × (座位数-1)
|
|
// 附加医保外医疗费用责任险(乘客):单人金额 × (座位数-1)
|
|
|
- int ybw2UnitAmount = Integer.parseInt(source.getAmount());
|
|
|
|
|
int ybw2Quantity = seatCount - 1;
|
|
int ybw2Quantity = seatCount - 1;
|
|
|
- target.setUnitAmount(source.getAmount());
|
|
|
|
|
- target.setQuantity(String.valueOf(ybw2Quantity));
|
|
|
|
|
- target.setAmount(String.valueOf(ybw2UnitAmount * ybw2Quantity));
|
|
|
|
|
|
|
+ // 保额为1时共享第三者责任险保额:每座=三者保额,unitAmount=三者保额,总额=三者保额×(座位数-1)
|
|
|
|
|
+ if (("1".equals(source.getAmount()) || "1".equals(source.getUnitAmount())) && thirdPartyLimit != null) {
|
|
|
|
|
+ int ybw2SharedUnitAmount = Integer.parseInt(thirdPartyLimit);
|
|
|
|
|
+ target.setUnitAmount(thirdPartyLimit);
|
|
|
|
|
+ target.setQuantity(String.valueOf(ybw2Quantity));
|
|
|
|
|
+ target.setAmount(String.valueOf(ybw2SharedUnitAmount * ybw2Quantity));
|
|
|
|
|
+ } else {
|
|
|
|
|
+ int ybw2UnitAmount = Integer.parseInt(source.getAmount());
|
|
|
|
|
+ target.setUnitAmount(source.getAmount());
|
|
|
|
|
+ target.setQuantity(String.valueOf(ybw2Quantity));
|
|
|
|
|
+ target.setAmount(String.valueOf(ybw2UnitAmount * ybw2Quantity));
|
|
|
|
|
+ }
|
|
|
break;
|
|
break;
|
|
|
|
|
|
|
|
case "TY1":
|
|
case "TY1":
|