|
|
@@ -84,17 +84,23 @@ public class HbCrawlerCalculationRequest extends HbBaseRequest {
|
|
|
this.risktype = "0";
|
|
|
if (Objects.nonNull(quoteVo.getCiRiskInfoVo())) {
|
|
|
this.begintimeCi = DateUtil.toUtcDateTime(quoteVo.getCiRiskInfoVo().getStartDate());
|
|
|
- this.begintimeAccident = DateUtil.getNextDayMidnightUtc();
|
|
|
this.risktype = "1";
|
|
|
}
|
|
|
if (CollUtil.isNotEmpty(kindInfoVoList)) {
|
|
|
this.epersonliabilityList = getEpersonliabilityList(kindInfoVoList, depreciationPrice);
|
|
|
this.begintimeBi = DateUtil.toUtcDateTime(quoteVo.getBiRiskInfoVo().getStartDate());
|
|
|
- this.begintimeAccident = DateUtil.getNextDayMidnightUtc();
|
|
|
this.risktype = "2";
|
|
|
} else {
|
|
|
this.epersonliabilityList = new ArrayList<>();
|
|
|
}
|
|
|
+ // 驾意险不支持即时起保,起保日期为主险投保日期的下一日0时(北京时间)
|
|
|
+ if ("2".equals(this.risktype) && this.begintimeBi != null) {
|
|
|
+ this.begintimeAccident = DateUtil.getNextDayMidnightUtc(this.begintimeBi);
|
|
|
+ } else if ("1".equals(this.risktype) && this.begintimeCi != null) {
|
|
|
+ this.begintimeAccident = DateUtil.getNextDayMidnightUtc(this.begintimeCi);
|
|
|
+ } else {
|
|
|
+ this.begintimeAccident = DateUtil.getNextDayMidnightUtc();
|
|
|
+ }
|
|
|
// 驾意险列表需在 accidentEpolicyFlag 之前赋值
|
|
|
this.accidentInsuranceList = getAccidentInsuranceList(quoteVo.getBiRiskInfoVo(), quoteVo.getAccidentalDrivings());
|
|
|
this.plyappno = plyappno;
|
|
|
@@ -111,7 +117,7 @@ public class HbCrawlerCalculationRequest extends HbBaseRequest {
|
|
|
this.carInsureDevices = new ArrayList<>();
|
|
|
this.outofwarrantytype = "N";
|
|
|
this.drivingtype = "";
|
|
|
- this.endtimeAccident = null;
|
|
|
+ this.endtimeAccident = "";
|
|
|
}
|
|
|
|
|
|
public List<EpersonliabilityDTO> getEpersonliabilityList(List<KindInfoVo> kindInfoVoList, String depreciationPrice) {
|
|
|
@@ -189,17 +195,28 @@ public class HbCrawlerCalculationRequest extends HbBaseRequest {
|
|
|
AccidentInsuranceDTO dto = new AccidentInsuranceDTO();
|
|
|
dto.setNonriskcode(vo.getProductCode().split("_")[1]);
|
|
|
dto.setProgramcode(vo.getProductCode());
|
|
|
- // programname/companycode/begintime/endtime/relationcarowner 正确请求中均不包含,移除以避免保司API 500
|
|
|
- dto.setSuminsured(parseNumeric("525000"));
|
|
|
- dto.setSumgrosspremium(parseNumeric(vo.getPremium()));
|
|
|
+ dto.setProgramname("1119险种5座非营运客车保额525000保费99.9(山西)");
|
|
|
+ dto.setCompanycode("0107");
|
|
|
dto.setIfdefault(true);
|
|
|
dto.setBuynum(vo.getQuantity());
|
|
|
+ List<GgriskprogramdetailsDTO> detailsList = getGgriskprogramdetailsList(vo.getProductCode().split("_")[1], vo.getProductCode());
|
|
|
+ dto.setGgriskprogramdetailslist(detailsList);
|
|
|
dto.setGgriskprogramclauselist(getGgriskprogramclauseList(vo.getProductCode().split("_")[1], vo.getProductCode()));
|
|
|
- dto.setGgriskprogramdetailslist(getGgriskprogramdetailsList(vo.getProductCode().split("_")[1], vo.getProductCode()));
|
|
|
dto.setGgriskprogramdeductiblelist(new ArrayList<>());
|
|
|
List<GgriskprogramparamlDTO> ggriskprogramparamlist = new ArrayList<>();
|
|
|
- ggriskprogramparamlist.add(new GgriskprogramparamlDTO("2021-05-19T07:00:00.000+0000", "subsidy", "99.9", "0107_1119_003", "2021-05-19T07:00:00.000+0000", "1"));
|
|
|
+ ggriskprogramparamlist.add(new GgriskprogramparamlDTO("2021-05-19T07:00:00.000+0000", "subsidy", "99.9", vo.getProductCode(), "2021-05-19T07:00:00.000+0000", "1"));
|
|
|
dto.setGgriskprogramparamlist(ggriskprogramparamlist);
|
|
|
+
|
|
|
+ // 根据硬编码明细汇总计算 suminsured/sumgrosspremium,保证父子级数据一致
|
|
|
+ java.math.BigDecimal totalSuminsured = java.math.BigDecimal.ZERO;
|
|
|
+ java.math.BigDecimal totalGrossPremium = java.math.BigDecimal.ZERO;
|
|
|
+ for (GgriskprogramdetailsDTO detail : detailsList) {
|
|
|
+ totalSuminsured = totalSuminsured.add(new java.math.BigDecimal(detail.getKindsuminsured().toString()));
|
|
|
+ totalGrossPremium = totalGrossPremium.add(new java.math.BigDecimal(detail.getKindgrosspremium().toString()));
|
|
|
+ }
|
|
|
+ dto.setSuminsured(totalSuminsured);
|
|
|
+ // sumgrosspremium 使用硬编码值 99.9(与保司正确请求一致),不与 vo.getPremium() 挂钩
|
|
|
+ dto.setSumgrosspremium(parseNumeric("99.9"));
|
|
|
return dto;
|
|
|
}
|
|
|
|
|
|
@@ -276,7 +293,7 @@ public class HbCrawlerCalculationRequest extends HbBaseRequest {
|
|
|
detail1.setKindunitinsured(parseNumeric("50000"));
|
|
|
detail1.setKindsuminsured(parseNumeric("250000"));
|
|
|
detail1.setKindunitpremium(parseNumeric("4.9"));
|
|
|
- detail1.setKindgrosspremium(parseNumeric("54"));
|
|
|
+ detail1.setKindgrosspremium(parseNumeric("24.5"));
|
|
|
list.add(detail1);
|
|
|
|
|
|
// 机动车辆驾乘意外伤害保险意外残疾保险责任(2024款)
|
|
|
@@ -286,11 +303,11 @@ public class HbCrawlerCalculationRequest extends HbBaseRequest {
|
|
|
detail2.setSerialno(2);
|
|
|
detail2.setKindcode("1119067");
|
|
|
detail2.setKindname("机动车辆驾乘意外伤害保险意外残疾保险责任(2024款)");
|
|
|
- detail2.setKindrate(parseNumeric("0.09166"));
|
|
|
- detail2.setKindunitinsured(parseNumeric("30000"));
|
|
|
- detail2.setKindsuminsured(parseNumeric("240000"));
|
|
|
- detail2.setKindunitpremium(parseNumeric("2.75"));
|
|
|
- detail2.setKindgrosspremium(parseNumeric("22"));
|
|
|
+ detail2.setKindrate(parseNumeric("0.039"));
|
|
|
+ detail2.setKindunitinsured(parseNumeric("50000"));
|
|
|
+ detail2.setKindsuminsured(parseNumeric("250000"));
|
|
|
+ detail2.setKindunitpremium(parseNumeric("1.95"));
|
|
|
+ detail2.setKindgrosspremium(parseNumeric("9.75"));
|
|
|
list.add(detail2);
|
|
|
|
|
|
// 附加机动车辆驾乘意外伤害医疗保险(2024款)
|
|
|
@@ -300,11 +317,11 @@ public class HbCrawlerCalculationRequest extends HbBaseRequest {
|
|
|
detail3.setSerialno(3);
|
|
|
detail3.setKindcode("1119065");
|
|
|
detail3.setKindname("附加机动车辆驾乘意外伤害医疗保险(2024款)");
|
|
|
- detail3.setKindrate(parseNumeric("1.0001"));
|
|
|
- detail3.setKindunitinsured(parseNumeric("3000"));
|
|
|
- detail3.setKindsuminsured(parseNumeric("24000"));
|
|
|
- detail3.setKindunitpremium(parseNumeric("3"));
|
|
|
- detail3.setKindgrosspremium(parseNumeric("24"));
|
|
|
+ detail3.setKindrate(parseNumeric("2.626"));
|
|
|
+ detail3.setKindunitinsured(parseNumeric("5000"));
|
|
|
+ detail3.setKindsuminsured(parseNumeric("25000"));
|
|
|
+ detail3.setKindunitpremium(parseNumeric("13.13"));
|
|
|
+ detail3.setKindgrosspremium(parseNumeric("65.65"));
|
|
|
list.add(detail3);
|
|
|
|
|
|
return list;
|