RuleAttrMappingVo.java 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  1. package com.ydtech.modules.fee.dto.vo;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.baomidou.mybatisplus.annotation.TableField;
  4. import com.ydtech.constants.enums.InsurKind;
  5. import com.ydtech.modules.ins.model.vo.*;
  6. import com.ydtech.modules.order.entity.InsAreaCompany;
  7. import com.ydtech.modules.order.entity.InsOrders;
  8. import com.ydtech.modules.order.entity.vo.BaseQuoteInfoVo;
  9. import com.ydtech.modules.order.service.InsOrdersService;
  10. import io.swagger.annotations.ApiModelProperty;
  11. import lombok.Data;
  12. import org.springframework.beans.factory.annotation.Autowired;
  13. import java.util.ArrayList;
  14. import java.util.List;
  15. import java.util.Objects;
  16. import java.util.regex.Pattern;
  17. /**
  18. * @author: tz
  19. * @description: 规则属性映射费用因子Vo
  20. * @create: 2024-2-28 08:35:57
  21. */
  22. @Data
  23. public class RuleAttrMappingVo {
  24. @ApiModelProperty(value = "因子属性Code")
  25. private String attrCode;
  26. @ApiModelProperty(value = "值")
  27. private String value;
  28. public RuleAttrMappingVo(String attrCode, String value) {
  29. this.attrCode = attrCode;
  30. this.value = value;
  31. }
  32. public static List<RuleAttrMappingVo> getRuleAttrMappingVoList(InsAreaCompany insAreaCompany, InsOrders insOrders) {
  33. List<RuleAttrMappingVo> ruleAttrMappingVoList = new ArrayList<>();
  34. CarInfoVo carInfo = insOrders.getCarinfo().toJavaObject(CarInfoVo.class);
  35. //车牌号
  36. ruleAttrMappingVoList.add(new RuleAttrMappingVo("LicenseNo", carInfo.getLicenseNo()));
  37. //品牌型号
  38. ruleAttrMappingVoList.add(new RuleAttrMappingVo("BrandandModel", carInfo.getModelcname()));
  39. //座位数
  40. ruleAttrMappingVoList.add(new RuleAttrMappingVo("PassengerCarSeatingCapacity", carInfo.getSeatCount()));
  41. //新车购置价
  42. ruleAttrMappingVoList.add(new RuleAttrMappingVo("PurchasePriceofNewVehicle", carInfo.getPurchasePrice()));
  43. //车辆用途
  44. ruleAttrMappingVoList.add(new RuleAttrMappingVo("NatureOfUse", carInfo.getVehicleUse()));
  45. //车辆种类
  46. ruleAttrMappingVoList.add(new RuleAttrMappingVo("CarType", carInfo.getCimodelclass()));
  47. //核定载质量
  48. ruleAttrMappingVoList.add(new RuleAttrMappingVo("AuthorizedLoadWeight", carInfo.getLimitLoad()));
  49. //整备质量
  50. ruleAttrMappingVoList.add(new RuleAttrMappingVo("CurbWeight", carInfo.getVehicleweight()));
  51. //能源类型
  52. ruleAttrMappingVoList.add(new RuleAttrMappingVo("NewEnergy", carInfo.getEnergyType()));
  53. //注册日期
  54. ruleAttrMappingVoList.add(new RuleAttrMappingVo("RegistrationDate", carInfo.getRegisterDate()));
  55. //是否过户
  56. ruleAttrMappingVoList.add(new RuleAttrMappingVo("TransferVehicle", carInfo.isTransferFlag() ? "1" : "0"));
  57. //是否新车
  58. ruleAttrMappingVoList.add(new RuleAttrMappingVo("NewAndOldCars", carInfo.isNoLicenseFlag() ? "1" : "0"));
  59. //发证日期
  60. ruleAttrMappingVoList.add(new RuleAttrMappingVo("DateofIssuance", carInfo.getIssueDate()));
  61. //车长
  62. // ruleAttrMappingVoList.add(new RuleAttrMappingVo("VehicleLength", carInfo.getCarLength()));
  63. //转续保
  64. // ruleAttrMappingVoList.add(new RuleAttrMappingVo("RenewalofInsurance", carInfo.isTransferFlagBi() ? "1"));
  65. CustomerInfoVo ownerInfo = insOrders.getOwnerinfo().toJavaObject(CustomerInfoVo.class);
  66. //车主 证件号码(前6位)
  67. ruleAttrMappingVoList.add(new RuleAttrMappingVo("CarOwnersIDNumber", ownerInfo.getIdentifyNumber().substring(0, 6)));
  68. //车主 年龄
  69. ruleAttrMappingVoList.add(new RuleAttrMappingVo("CarOwnersAge", ownerInfo.getAge()));
  70. //车主 性别
  71. ruleAttrMappingVoList.add(new RuleAttrMappingVo("CarOwnersSex", ownerInfo.getGender()));
  72. //车主 姓名
  73. ruleAttrMappingVoList.add(new RuleAttrMappingVo("CarOwnerName", ownerInfo.getName()));
  74. CustomerInfoVo policyHolderInfo = insOrders.getApplyinfo().toJavaObject(CustomerInfoVo.class);
  75. //投保人 证件号码(前6位)
  76. ruleAttrMappingVoList.add(new RuleAttrMappingVo("ApplicantIDNumber", policyHolderInfo.getIdentifyNumber().substring(0, 6)));
  77. //投保人 年龄
  78. ruleAttrMappingVoList.add(new RuleAttrMappingVo("ApplicantAge", policyHolderInfo.getAge()));
  79. //投保人 性别
  80. ruleAttrMappingVoList.add(new RuleAttrMappingVo("ApplicantSex", policyHolderInfo.getGender()));
  81. CustomerInfoVo insuredPersonInfo = insOrders.getInsureinfo().toJavaObject(CustomerInfoVo.class);
  82. //被保人 证件号码(前6位)
  83. ruleAttrMappingVoList.add(new RuleAttrMappingVo("InsuredIDNumber", insuredPersonInfo.getIdentifyNumber().substring(0, 6)));
  84. //被保人 年龄
  85. ruleAttrMappingVoList.add(new RuleAttrMappingVo("InsuredAge", insuredPersonInfo.getAge()));
  86. //被保人 性别
  87. ruleAttrMappingVoList.add(new RuleAttrMappingVo("InsuredSex", insuredPersonInfo.getGender()));
  88. List<KindInfoVo> kindInfoVos = insOrders.getKing().toJavaList(KindInfoVo.class);
  89. //险别信息
  90. kindInfoVos.forEach(kindInfoVo -> {
  91. //机动车损失险
  92. if (InsurKind.A.getCode().equals(kindInfoVo.getKindCode()))
  93. ruleAttrMappingVoList.add(new RuleAttrMappingVo("MotorVehicleDamageInsurance", String.valueOf(kindInfoVo.getAmount())));
  94. //第三者责任险
  95. if (InsurKind.B.getCode().equals(kindInfoVo.getKindCode()))
  96. ruleAttrMappingVoList.add(new RuleAttrMappingVo("ThirdPartyLiabilityInsurance", String.valueOf(kindInfoVo.getAmount())));
  97. //司机责任险
  98. if (InsurKind.D3.getCode().equals(kindInfoVo.getKindCode()))
  99. ruleAttrMappingVoList.add(new RuleAttrMappingVo("DriverLiabilityInsurance", String.valueOf(kindInfoVo.getAmount())));
  100. //乘客责任险
  101. if (InsurKind.D4.getCode().equals(kindInfoVo.getKindCode()))
  102. ruleAttrMappingVoList.add(new RuleAttrMappingVo("PassengerLiabilityInsurance", String.valueOf(kindInfoVo.getUnitAmount())));
  103. //车身划痕险
  104. if (InsurKind.L.getCode().equals(kindInfoVo.getKindCode()))
  105. ruleAttrMappingVoList.add(new RuleAttrMappingVo("CarScratchInsurance", String.valueOf(kindInfoVo.getAmount())));
  106. //绝对免赔率特约险(车损)
  107. if (InsurKind.MJ1.getCode().equals(kindInfoVo.getKindCode()))
  108. ruleAttrMappingVoList.add(new RuleAttrMappingVo("VehicleDamageAbsoluteDeductibleSpecialInsurance",
  109. String.valueOf(kindInfoVo.getAmount())));
  110. //绝对免赔率特约险(三者)
  111. if (InsurKind.MJ2.getCode().equals(kindInfoVo.getKindCode()))
  112. ruleAttrMappingVoList.add(new RuleAttrMappingVo("ThirdAbsoluteDeductibleSpecialInsurance",
  113. String.valueOf(kindInfoVo.getAmount())));
  114. //绝对免赔率特约险(司机)
  115. if (InsurKind.MJ3.getCode().equals(kindInfoVo.getKindCode()))
  116. ruleAttrMappingVoList.add(new RuleAttrMappingVo("DriverAbsoluteDeductibleSpecialInsurance",
  117. String.valueOf(kindInfoVo.getAmount())));
  118. //绝对免赔率特约险(乘客)
  119. if (InsurKind.MJ4.getCode().equals(kindInfoVo.getKindCode()))
  120. ruleAttrMappingVoList.add(new RuleAttrMappingVo("PassengerAbsoluteDeductibleSpecialInsurance",
  121. String.valueOf(kindInfoVo.getAmount())));
  122. //附加医保-三者
  123. if (InsurKind.SY_FJ_YBW1.getCode().equals(kindInfoVo.getKindCode()))
  124. ruleAttrMappingVoList.add(new RuleAttrMappingVo("ThirdPartyAdditionalMedicalInsurance",
  125. String.valueOf(kindInfoVo.getAmount())));
  126. //附加医保-座位险(乘客)
  127. if (InsurKind.SY_FJ_YBW2.getCode().equals(kindInfoVo.getKindCode()))
  128. ruleAttrMappingVoList.add(new RuleAttrMappingVo("PassengerAdditionalMedicalInsurance",
  129. String.valueOf(kindInfoVo.getAmount())));
  130. //附加医保-座位险(司机)
  131. if (InsurKind.SY_FJ_YBW3.getCode().equals(kindInfoVo.getKindCode()))
  132. ruleAttrMappingVoList.add(new RuleAttrMappingVo("DriverAdditionalMedicalInsurance",
  133. String.valueOf(kindInfoVo.getAmount())));
  134. //法定节假日限额翻倍险
  135. if (InsurKind.BD.getCode().equals(kindInfoVo.getKindCode()))
  136. ruleAttrMappingVoList.add(new RuleAttrMappingVo("LegalHolidayLimitDoublingInsurance",
  137. String.valueOf(kindInfoVo.getAmount())));
  138. //道路救援服务特约条款
  139. if (InsurKind.TY1.getCode().equals(kindInfoVo.getKindCode()))
  140. ruleAttrMappingVoList.add(new RuleAttrMappingVo("RoadsideAssistanceServiceSpecialClause",
  141. String.valueOf(kindInfoVo.getServiceTimes())));
  142. //车辆安全检测特约条款
  143. if (InsurKind.TY2.getCode().equals(kindInfoVo.getKindCode()))
  144. ruleAttrMappingVoList.add(new RuleAttrMappingVo("VehicleSafetyInspectionSpecialClause",
  145. String.valueOf(kindInfoVo.getServiceTimes())));
  146. //代为驾驶服务特约条款
  147. if (InsurKind.TY3.getCode().equals(kindInfoVo.getKindCode()))
  148. ruleAttrMappingVoList.add(new RuleAttrMappingVo("SubstituteDrivingServiceSpecialClause",
  149. String.valueOf(kindInfoVo.getServiceTimes())));
  150. //代为送检服务特约条款
  151. if (InsurKind.TY4.getCode().equals(kindInfoVo.getKindCode()))
  152. ruleAttrMappingVoList.add(new RuleAttrMappingVo("SubstituteInspectionServiceSpecialClause",
  153. String.valueOf(kindInfoVo.getServiceTimes())));
  154. });
  155. //交强保费
  156. ruleAttrMappingVoList.add(new RuleAttrMappingVo("CompulsoryTrafficAccidentLiabilityInsurancePremium",
  157. String.valueOf(insAreaCompany.getJqpremium())));
  158. //车船税
  159. ruleAttrMappingVoList.add(new RuleAttrMappingVo("VehicleandVesselTax", String.valueOf(insAreaCompany.getTaxamount())));
  160. //非车险
  161. ruleAttrMappingVoList.add(new RuleAttrMappingVo("NonMotorInsurance", String.valueOf(insAreaCompany.getJypremium())));
  162. //总折扣率
  163. // ruleAttrMappingVoList.add(new RuleAttrMappingVo("TotalDiscountRate", String.valueOf(insAreaCompany.())));
  164. //交强折扣
  165. // ruleAttrMappingVoList.add(new RuleAttrMappingVo("CompulsoryInsuranceDiscount", String.valueOf(quoteRespVo.getJqAdjustRate())));
  166. //商业折扣
  167. // ruleAttrMappingVoList.add(new RuleAttrMappingVo("CommercialDiscount", String.valueOf(quoteRespVo.getSyAdjustRate())));
  168. //数值型总评分
  169. Pattern pattern = Pattern.compile("[0-9]*");
  170. if (insAreaCompany.getScore() != null) {
  171. if (pattern.matcher(insAreaCompany.getScore()).matches()) {
  172. //数值型评分
  173. ruleAttrMappingVoList.add(new RuleAttrMappingVo("NumericalOverallRating", String.valueOf(insAreaCompany.getScore())));
  174. } else {
  175. //字母型评分
  176. ruleAttrMappingVoList.add(new RuleAttrMappingVo("CharacterBasedRating", String.valueOf(insAreaCompany.getScore())));
  177. }
  178. }
  179. //交强评分
  180. if (insAreaCompany.getJqScore() != null) {
  181. if (pattern.matcher(insAreaCompany.getJqScore()).matches()) {
  182. //数值型评分
  183. ruleAttrMappingVoList.add(new RuleAttrMappingVo("CompulsoryInsuranceRating", String.valueOf(insAreaCompany.getJqScore())));
  184. } else {
  185. //字母型评分
  186. ruleAttrMappingVoList.add(new RuleAttrMappingVo("CharacterBasedCompulsoryInsuranceRating",
  187. String.valueOf(insAreaCompany.getJqScore())));
  188. }
  189. }
  190. // ruleAttrMappingVoList.add(new RuleAttrMappingVo("CompulsoryInsuranceRating", String.valueOf(insAreaCompany.getJqScore())));
  191. //商业评分
  192. if (insAreaCompany.getSyScore() != null) {
  193. if (pattern.matcher(insAreaCompany.getSyScore()).matches()) {
  194. //数值型评分
  195. ruleAttrMappingVoList.add(new RuleAttrMappingVo("CommercialRating", String.valueOf(insAreaCompany.getSyScore())));
  196. } else {
  197. //字母型评分
  198. ruleAttrMappingVoList.add(new RuleAttrMappingVo("CharacterBasedCommercialRating",
  199. String.valueOf(insAreaCompany.getSyScore())));
  200. }
  201. }
  202. //交强赔付率
  203. ruleAttrMappingVoList.add(new RuleAttrMappingVo("CompulsoryInsurancePayoutRate", String.valueOf(insAreaCompany.getJqLossRation())));
  204. //商业赔付率
  205. ruleAttrMappingVoList.add(new RuleAttrMappingVo("CommercialPayoutRate", String.valueOf(insAreaCompany.getSyLossRation())));
  206. //总赔付率
  207. ruleAttrMappingVoList.add(new RuleAttrMappingVo("TotalPayoutRate", String.valueOf(insAreaCompany.getLossRation())));
  208. //真假单交
  209. // ruleAttrMappingVoList.add(new RuleAttrMappingVo("AuthenticAndFakeOrdersExchange", insAreaCompany.getIszdj()));
  210. //出险次数
  211. // ruleAttrMappingVoList.add(new RuleAttrMappingVo("NumberOfClaims", insAreaCompany.getAccidentInfoStr()));
  212. //太平的分区
  213. // ruleAttrMappingVoList.add(new RuleAttrMappingVo("PeacefulDistrict", quoteRespVo.getExtendInfo()));
  214. return ruleAttrMappingVoList;
  215. }
  216. }