| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413 |
- package com.ydtech.modules.ins.model.guoRen;
- import cn.hutool.core.date.DateUtil;
- import com.alibaba.fastjson.annotation.JSONField;
- import com.fasterxml.jackson.annotation.JsonIgnore;
- import com.ydtech.constants.enums.InsuranceRisk;
- import com.ydtech.modules.ins.model.vo.CarInfoVo;
- import com.ydtech.modules.ins.model.vo.CustomerInfoVo;
- import com.ydtech.modules.ins.model.vo.KindInfoVo;
- import com.ydtech.modules.ins.model.vo.RiskInfoVo;
- import com.ydtech.modules.ins.model.yc.ruote.Applicant;
- import com.ydtech.modules.ins.model.yc.ruote.Insured;
- import com.ydtech.modules.order.entity.InsAreaCompany;
- import com.ydtech.modules.order.entity.vo.AccidentalDrivingVo;
- import com.ydtech.modules.order.entity.vo.BaseQuoteInfoVo;
- import com.ydtech.modules.order.entity.vo.BaseQuoteVo;
- import com.ydtech.utils.StringUtils;
- import lombok.Data;
- import lombok.NoArgsConstructor;
- import java.math.BigDecimal;
- import java.util.ArrayList;
- import java.util.Date;
- import java.util.List;
- import java.util.UUID;
- /**
- * 非车保险订单 入参
- */
- @NoArgsConstructor
- @Data
- public class NonAutoInsOrderReq {
- @JSONField(name = "channelCode")
- private String channelCode;
- @JSONField(name = "data")
- private DataDTO data;
- @JSONField(name = "othBusinessNo")
- private String othBusinessNo;
- @JSONField(name = "requestTime")
- private String requestTime;
- @NoArgsConstructor
- @Data
- public static class DataDTO {
- @JSONField(name = "orderList")
- private List<OrderListDTO> orderList;
- @NoArgsConstructor
- @Data
- public static class OrderListDTO {
- @JSONField(name = "insuredList")
- private List<InsuredListDTO> insuredList;
- @JSONField(name = "objCarList")
- private List<ObjCarListDTO> objCarList;
- @JSONField(name = "orderAppl")
- private OrderApplDTO orderAppl;
- @JSONField(name = "orderMain")
- private OrderMainDTO orderMain;
- @JSONField(name = "planList")
- private List<PlanListDTO> planList;
- @JSONField(name = "salesmanList")
- private List<SalesmanListDTO> salesmanList;
- @NoArgsConstructor
- @Data
- public static class OrderApplDTO {
- @JSONField(name = "applName")
- private String applName;
- @JSONField(name = "applType")
- private String applType;
- @JSONField(name = "certfNo")
- private String certfNo;
- @JSONField(name = "certfType")
- private String certfType;
- @JSONField(name = "contactName")
- private String contactName;
- @JSONField(name = "phoneNo")
- private String phoneNo;
- }
- @NoArgsConstructor
- @Data
- public static class OrderMainDTO {
- @JSONField(name = "amount")
- private Integer amount;
- @JSONField(name = "endDate")
- private String endDate;
- @JSONField(name = "goodsCode")
- private String goodsCode;
- @JSONField(name = "operatorCode")
- private String operatorCode;
- @JSONField(name = "othOrderNo")
- private String othOrderNo;
- @JSONField(name = "premium")
- private Integer premium;
- @JSONField(name = "prodCode")
- private String prodCode;
- @JSONField(name = "renewalInd")
- private Integer renewalInd;
- @JSONField(name = "riskCode")
- private List<String> riskCode;
- @JSONField(name = "startDate")
- private String startDate;
- @JSONField(name = "uwCount")
- private Integer uwCount;
- @JSONField(name = "businessMode")
- private String businessMode;
- @JSONField(name = "businessSource")
- private String businessSource;
- }
- @NoArgsConstructor
- @Data
- public static class InsuredListDTO {
- @JSONField(name = "certfNo")
- private String certfNo;
- @JSONField(name = "certfType")
- private String certfType;
- @JSONField(name = "countryName")
- private String countryName;
- @JSONField(name = "insuredName")
- private String insuredName;
- @JSONField(name = "insuredType")
- private String insuredType;
- @JSONField(name = "phoneNo")
- private String phoneNo;
- @JSONField(name = "planNo")
- private String planNo;
- }
- @NoArgsConstructor
- @Data
- public static class ObjCarListDTO {
- @JSONField(name = "carModels")
- private String carModels;
- @JSONField(name = "carType")
- private String carType;
- @JSONField(name = "carTypeCode")
- private String carTypeCode;
- @JSONField(name = "clnt")
- private String clnt;
- @JSONField(name = "frameNo")
- private String frameNo;
- @JSONField(name = "licenseNo")
- private String licenseNo;
- @JSONField(name = "planNo")
- private String planNo;
- @JSONField(name = "purchasePrice")
- private Integer purchasePrice;
- @JSONField(name = "seatNum")
- private Integer seatNum;
- @JSONField(name = "toncount")
- private Double toncount;
- }
- @NoArgsConstructor
- @Data
- public static class PlanListDTO {
- @JSONField(name = "occupationCode")
- private String occupationCode;
- @JSONField(name = "occupationGrade")
- private String occupationGrade;
- @JSONField(name = "occupationName")
- private String occupationName;
- @JSONField(name = "planNo")
- private String planNo;
- @JSONField(name = "quantity")
- private String quantity;
- @JSONField(name = "socialSecInd")
- private String socialSecInd;
- }
- @NoArgsConstructor
- @Data
- public static class SalesmanListDTO {
- @JSONField(name = "agentCode")
- private String agentCode;
- @JSONField(name = "companyCode")
- private String companyCode;
- @JSONField(name = "salesmanCode")
- private String salesmanCode;
- @JSONField(name = "salesmanFlag")
- private Integer salesmanFlag;
- @JSONField(name = "salesmanName")
- private String salesmanName;
- @JSONField(name = "serialNo")
- private Integer serialNo;
- @JSONField(name = "teamCode")
- private String teamCode;
- @JSONField(name = "teamName")
- private String teamName;
- }
- }
- }
- /**
- * 构造报价请求参数
- */
- @JsonIgnore
- public static NonAutoInsOrderReq buildParam(BaseQuoteInfoVo yaQuoteInfoVo, VinQueryResp.DataDTO vinQ, AccidentalDrivingVo accidentalDrivingVo, ChannelInfoDto channelInfo, String carPriceUuid) {
- //车辆信息
- CarInfoVo carInfo = yaQuoteInfoVo.getCarInfo();
- //投保人
- CustomerInfoVo policyHolder = yaQuoteInfoVo.getPolicyHolderInfo();
- //被保人
- CustomerInfoVo insuredPerson = yaQuoteInfoVo.getInsuredPersonInfo();
- List<RiskInfoVo> riskList = yaQuoteInfoVo.getRiskList();
- //交强
- RiskInfoVo ciRiskInfo = (RiskInfoVo) riskList.stream().filter(x -> x.getRiskCode().equals(InsuranceRisk.TRAFFIC.getCode())).findFirst().orElse(null);
- //商业
- RiskInfoVo biRiskInfo = (RiskInfoVo) riskList.stream().filter(x -> x.getRiskCode().equals(InsuranceRisk.BUSINESS.getCode())).findFirst().orElse(null);
- NonAutoInsOrderReq req = new NonAutoInsOrderReq();
- req.setChannelCode("TQDL");
- //外部订单号 订单号或者uuid 使用的车价查询返回的
- req.setOthBusinessNo(carPriceUuid);
- req.setRequestTime(DateUtil.today());
- List<DataDTO.OrderListDTO> orderList = new ArrayList();
- DataDTO.OrderListDTO orderListDto = new DataDTO.OrderListDTO();
- /**
- * 被保险人信息
- */
- List<DataDTO.OrderListDTO.InsuredListDTO> insuredList = new ArrayList<>();
- DataDTO.OrderListDTO.InsuredListDTO insuredListDTO = new DataDTO.OrderListDTO.InsuredListDTO();
- insuredListDTO.setCertfNo(insuredPerson.getIdentifyNumber());
- insuredListDTO.setCertfType("01");
- insuredListDTO.setCountryName("中国");
- insuredListDTO.setInsuredName(insuredPerson.getName());
- //客户类型 insuredType String Y 1-个人,2-企业
- insuredListDTO.setInsuredType("1");
- insuredListDTO.setPhoneNo(insuredPerson.getMobile());
- insuredListDTO.setPlanNo("1");
- insuredList.add(insuredListDTO);
- /**
- * 车辆信息
- */
- List<DataDTO.OrderListDTO.ObjCarListDTO> objCarList = new ArrayList<>();
- DataDTO.OrderListDTO.ObjCarListDTO objCarListDTO = new DataDTO.OrderListDTO.ObjCarListDTO();
- objCarListDTO.setCarModels(vinQ.getBrandNameBC());
- objCarListDTO.setCarType("0");
- //车辆性质
- objCarListDTO.setCarTypeCode("8A");
- //是否新车 1-是 2-否
- objCarListDTO.setClnt(StringUtils.isNotEmpty(carInfo.getLicenseNo()) ? "2" : "1");
- objCarListDTO.setFrameNo(carInfo.getFrameNo());
- objCarListDTO.setLicenseNo(carInfo.getLicenseNo());
- objCarListDTO.setPlanNo("1");
- objCarListDTO.setPurchasePrice(StringUtils.toInt(vinQ.getPriceShow()));
- objCarListDTO.setSeatNum(StringUtils.toInt(vinQ.getSeatCountBC()));
- objCarListDTO.setToncount(StringUtils.toDouble(vinQ.getTonCount()));
- objCarList.add(objCarListDTO);
- /**
- * 投保人信息
- */
- DataDTO.OrderListDTO.OrderApplDTO orderAppl = new DataDTO.OrderListDTO.OrderApplDTO();
- orderAppl.setApplName(policyHolder.getName());
- orderAppl.setApplType("1");
- orderAppl.setCertfNo(policyHolder.getIdentifyNumber());
- orderAppl.setCertfType("01");
- orderAppl.setContactName(policyHolder.getName());
- orderAppl.setPhoneNo(policyHolder.getMobile());
- /**
- * 订单信息
- */
- DataDTO.OrderListDTO.OrderMainDTO orderMain = new DataDTO.OrderListDTO.OrderMainDTO();
- //( 总保额 = 份数*人数(特殊产品默认人数为1)*每份保额)
- //@TODO 后续补
- BigDecimal orderAmount = BigDecimal.ONE;
- orderMain.setAmount(orderAmount.intValue());
- orderMain.setPremium(orderAmount.intValue());
- //yyyy-MM-dd hh:mm:ss搭售非车险保险起期规则:
- //(1)搭售车险是即时生效的,非车险起期为车险起期的第二天0时。
- //(2)搭售车险非即时生效的,非车险起期从车险保单起期。
- if (null != ciRiskInfo && null != biRiskInfo) {
- Date ciStartDate = DateUtil.parse(ciRiskInfo.getStartDate());
- Date biStartDate = DateUtil.parse(biRiskInfo.getStartDate());
- int ciBiCompare = DateUtil.compare(ciStartDate, biStartDate);
- //1、非即时生效
- if (StringUtils.isEmpty(ciRiskInfo.getInstantFlag()) && StringUtils.isEmpty(biRiskInfo.getInstantFlag())) {
- if (ciBiCompare == 1) {
- //(1)交强起期 > 商业起期,非车起期取商业起期
- orderMain.setStartDate(biRiskInfo.getStartDate());
- orderMain.setEndDate(biRiskInfo.getEndDate());
- } else if (ciBiCompare == -1) {
- //(2)交强起期 < 商业起期,非车起期取交强起期
- orderMain.setStartDate(ciRiskInfo.getStartDate());
- orderMain.setEndDate(ciRiskInfo.getEndDate());
- } else if (ciBiCompare == 0) {
- //(3)交强起期 = 商业起期,非车起期任取
- orderMain.setStartDate(ciRiskInfo.getStartDate());
- orderMain.setEndDate(ciRiskInfo.getEndDate());
- }
- } else {
- //2、即时生效
- //(1)交强即时起保起期 > 商业起期,非车起期取商业起期(不含小时数据的起期)+1天
- //(2)交强即时起保起期 > 商业即时起保起期,,非车起期取商业起期(不含小时数据的起期)+1天
- //(3)交强起期 < 商业即时起保起期,取交强起期,非车起期取交强起期(不含小时数据的起期)+1天
- //(4)交强即时起保起期 < 商业即时起保起期,取交强起期,非车起期取交强起期(不含小时数据的起期)+1天
- //(5)交强起期 = 商业起期,非车起保(不含小时数据的起期)+1天期任取
- }
- }
- //家用车驾乘意外险-山西版(02746425173001)
- orderMain.setGoodsCode("02746425173001");
- orderMain.setOperatorCode(channelInfo.getHandlerCode());
- //订单号或UUID 不确定参数,暂时使用车价的uuid
- orderMain.setOthOrderNo(carPriceUuid);
- orderMain.setProdCode(accidentalDrivingVo.getRideRiskCode());
- orderMain.setRenewalInd(StringUtils.isEmpty(carInfo.getLicenseNo()) ? 0 : 1);
- //险种代码 数组
- List<String> riskCodeList = new ArrayList<>();
- orderMain.setRiskCode(riskCodeList);
- orderMain.setUwCount(accidentalDrivingVo.getQuantity());
- //1:鼓励类 4:其他类 6:网销类
- orderMain.setBusinessMode("1");
- //0:直接业务
- //1:个人代理
- //2:专业代理
- //3:兼业代理
- //4:经纪业务—境内经纪
- //5:经纪业务—境外经纪
- //6:电销业务
- //7:柜台业务
- //8:网上业务 ......
- orderMain.setBusinessSource("2");
- orderListDto.setInsuredList(insuredList);
- /**
- * 方案信息
- */
- List<DataDTO.OrderListDTO.PlanListDTO> planList = new ArrayList<>();
- DataDTO.OrderListDTO.PlanListDTO planListDto = new DataDTO.OrderListDTO.PlanListDTO();
- //按照示例传的
- planListDto.setOccupationCode("0500020");
- planListDto.setOccupationGrade("1");
- planListDto.setOccupationName("其他");
- planListDto.setPlanNo("1");
- planListDto.setQuantity("1");
- planListDto.setSocialSecInd("01");
- planList.add(planListDto);
- /**
- * 业务员信息
- */
- List<DataDTO.OrderListDTO.SalesmanListDTO> salesmanList = new ArrayList<>();
- DataDTO.OrderListDTO.SalesmanListDTO salesmanListDTO = new DataDTO.OrderListDTO.SalesmanListDTO();
- salesmanListDTO.setAgentCode(channelInfo.getAgentCode());
- salesmanListDTO.setCompanyCode(channelInfo.getComCode());
- salesmanListDTO.setSalesmanCode(channelInfo.getHandlerCode());
- //0-辅合作方,1-主合作方(默认1-主合作方
- salesmanListDTO.setSalesmanFlag(1);
- salesmanListDTO.setSalesmanName(channelInfo.getHandlerName());
- salesmanListDTO.setSerialNo(1);
- salesmanListDTO.setTeamCode("");
- salesmanListDTO.setTeamName("");
- salesmanList.add(salesmanListDTO);
- orderListDto.setInsuredList(insuredList);
- orderListDto.setOrderAppl(orderAppl);
- orderListDto.setOrderMain(orderMain);
- orderListDto.setPlanList(planList);
- orderListDto.setSalesmanList(salesmanList);
- orderListDto.setObjCarList(objCarList);
- orderList.add(orderListDto);
- DataDTO data = new DataDTO();
- data.setOrderList(orderList);
- req.setData(data);
- return req;
- }
- }
|