|
|
@@ -0,0 +1,688 @@
|
|
|
+package com.ydtech.modules.order.service.impl;
|
|
|
+
|
|
|
+import cn.hutool.core.collection.CollUtil;
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
|
|
+import com.ydtech.constants.enums.InsuranceOrderPdf;
|
|
|
+import com.ydtech.constants.enums.InsuranceRisk;
|
|
|
+import com.ydtech.constants.enums.dict.InsOrderStatusEnum;
|
|
|
+import com.ydtech.core.page.HttpResult;
|
|
|
+import com.ydtech.exception.SystemException;
|
|
|
+import com.ydtech.modules.admin.model.vo.PersonAreaVo;
|
|
|
+import com.ydtech.modules.admin.service.SysAreaService;
|
|
|
+import com.ydtech.modules.ins.model.guoren.PremiumResp;
|
|
|
+import com.ydtech.modules.ins.model.vo.*;
|
|
|
+import com.ydtech.modules.order.components.ConfigureParametersComponents;
|
|
|
+import com.ydtech.modules.order.components.InsImagesUploadCacheComponents;
|
|
|
+import com.ydtech.modules.order.components.chengtai.ChengTaiRequestApiComponents;
|
|
|
+import com.ydtech.modules.order.constants.UnderwritingStatus;
|
|
|
+import com.ydtech.modules.order.entity.InsAreaCompany;
|
|
|
+import com.ydtech.modules.order.entity.InsAreaCompanyExternalPolicy;
|
|
|
+import com.ydtech.modules.order.entity.InsOrders;
|
|
|
+import com.ydtech.modules.order.entity.TaxArrears;
|
|
|
+import com.ydtech.modules.order.entity.api.chengtai.constants.CtKindCodeEnum;
|
|
|
+import com.ydtech.modules.order.entity.api.chengtai.constants.OrderStatusEnum;
|
|
|
+import com.ydtech.modules.order.entity.api.chengtai.constants.ResponseCode;
|
|
|
+import com.ydtech.modules.order.entity.api.chengtai.constants.RiskCodeEnum;
|
|
|
+import com.ydtech.modules.order.entity.api.chengtai.request.*;
|
|
|
+import com.ydtech.modules.order.entity.api.chengtai.response.*;
|
|
|
+import com.ydtech.modules.order.entity.api.guoren.constants.GuoRenRiskCode;
|
|
|
+import com.ydtech.modules.order.entity.api.zijin.constants.enums.BusType;
|
|
|
+import com.ydtech.modules.order.entity.api.zijin.request.UploadImageInfoListRequest;
|
|
|
+import com.ydtech.modules.order.entity.config.ChengTaiConfigureParameters;
|
|
|
+import com.ydtech.modules.order.entity.dto.ReadPdfUrlListDto;
|
|
|
+import com.ydtech.modules.order.entity.filter.CarModelsFilterUtils;
|
|
|
+import com.ydtech.modules.order.entity.po.InsTaskImagesBase64;
|
|
|
+import com.ydtech.modules.order.entity.vo.BaseQuoteInfoVo;
|
|
|
+import com.ydtech.modules.order.entity.vo.BaseQuoteVo;
|
|
|
+import com.ydtech.modules.order.entity.vo.PolicyPrintVo;
|
|
|
+import com.ydtech.modules.order.entity.vo.ct.CtQuoteAccidentVo;
|
|
|
+import com.ydtech.modules.order.service.*;
|
|
|
+import com.ydtech.modules.protocol.entity.po.PtlAgreementAttribution;
|
|
|
+import com.ydtech.modules.protocol.service.PtlAgreementAttributionService;
|
|
|
+import com.ydtech.utils.CalculateUtils;
|
|
|
+import com.ydtech.utils.StringUtils;
|
|
|
+import com.ydtech.utils.baidu.FileUtil;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.beans.factory.annotation.Value;
|
|
|
+import org.springframework.http.HttpHeaders;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import java.time.LocalDateTime;
|
|
|
+import java.time.format.DateTimeFormatter;
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+@Service
|
|
|
+public class ChengTaiOrderApiServiceImpl implements ChengTaiOrderApiService {
|
|
|
+
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private PtlAgreementAttributionService ptlAgreementAttributionService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ConfigureParametersComponents configureParametersComponents;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ChengTaiRequestApiComponents chengTaiRequestApiComponents;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private InsOrdersService insOrdersService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private InsAreaCompanyService insAreaCompanyService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private InsTaskImagesService insTaskImagesService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private SysAreaService sysAreaService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private InsImagesUploadCacheComponents insImagesUploadCacheComponents;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private InsSubOrderUpdateDetailService insSubOrderUpdateDetailService;
|
|
|
+
|
|
|
+ @Value("${upload.file.path}")
|
|
|
+ private String uploadFilePath;
|
|
|
+
|
|
|
+ @Value("${upload.file.url}")
|
|
|
+ private String showFileUrl;
|
|
|
+
|
|
|
+ @Value("${api.url}")
|
|
|
+ private String apiUrl;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public HttpResult<QuoteRespVo> quoteApi(BaseQuoteInfoVo quoteInfoVo, BaseQuoteVo<List<CtQuoteAccidentVo>> quoteVo) throws Exception {
|
|
|
+ /** 1. 协议id获取配置实体 */
|
|
|
+ String agreementId = quoteVo.getAgreementId();
|
|
|
+ // 1.1 账号信息
|
|
|
+ PtlAgreementAttribution ptlAgreementAttribution = ptlAgreementAttributionService.getById(agreementId);
|
|
|
+ // 1.2 通过 协议id获取配置实体
|
|
|
+ ChengTaiConfigureParameters parameters = configureParametersComponents.toEntity(ChengTaiConfigureParameters.class,
|
|
|
+ ptlAgreementAttribution);
|
|
|
+ HttpHeaders httpHeaders = chengTaiRequestApiComponents.getHttpHeaders(parameters,ChengTaiRequestApiComponents.RECURSIVE_HIERARCHY);
|
|
|
+
|
|
|
+ /** 2. 查询车型 */
|
|
|
+ CarInfoRequest carInfoRequest = new CarInfoRequest(quoteInfoVo.getCarInfo(), parameters);
|
|
|
+ CarInfoResponse carInfoResponse = chengTaiRequestApiComponents.carinfoQuery(carInfoRequest, httpHeaders);
|
|
|
+ // 2.1 过滤车型
|
|
|
+ CarInfoResponse.CarModelListDTO carModelListDTO =
|
|
|
+ new CarModelsFilterUtils<CarInfoResponse.CarModelListDTO>().to(carInfoResponse.getCarModelList(),
|
|
|
+ quoteInfoVo.getCarInfo());
|
|
|
+ /** 3. 计算车辆实际价值 */
|
|
|
+ QueryCarActualValueRequest carActualValueRequest = new QueryCarActualValueRequest(quoteInfoVo,carModelListDTO, parameters);
|
|
|
+ QueryCarActualValueResponse carActualValueResponse = chengTaiRequestApiComponents.queryActualValue(carActualValueRequest,httpHeaders);
|
|
|
+
|
|
|
+ /** 4. 报价 */
|
|
|
+ PersonAreaVo personAreaVo = new PersonAreaVo();
|
|
|
+ buildRegion(quoteInfoVo,personAreaVo);
|
|
|
+ InsurePremiumRequest insurePremiumRequest = new InsurePremiumRequest(quoteInfoVo,carModelListDTO, carActualValueResponse,personAreaVo,parameters,quoteVo);
|
|
|
+ InsurePremiumResponse insurePremiumResponse = chengTaiRequestApiComponents.quoteApi(insurePremiumRequest,httpHeaders);
|
|
|
+
|
|
|
+ String message = "";
|
|
|
+ if(!ResponseCode.R_000.getCode().equals(insurePremiumResponse.getCode())){
|
|
|
+ QuoteRespVo resp = new QuoteRespVo();
|
|
|
+ InsOrders order = insOrdersService.getById(quoteVo.getOrderNo());
|
|
|
+ InsOrderStatusEnum insOrderStatusEnum = InsOrderStatusEnum.QUOTE_FAILED;
|
|
|
+ if(insurePremiumResponse.getMessage().contains("重复投保"))
|
|
|
+ {
|
|
|
+ insOrderStatusEnum = InsOrderStatusEnum.REPEAT_INSURE;
|
|
|
+ }
|
|
|
+ insOrdersService.responseFailedOrder(quoteVo,ptlAgreementAttribution, order,insurePremiumResponse.getMessage(),insOrderStatusEnum);
|
|
|
+ throw new SystemException(insurePremiumResponse.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ // 警告信息
|
|
|
+ CarInfoVo carInfo = quoteInfoVo.getCarInfo();
|
|
|
+ boolean isEnergy = carInfo.isNewEnergy();
|
|
|
+ QuoteRespVo quoteRespVo = getQuoteRespVo(insurePremiumResponse, quoteInfoVo, isEnergy);
|
|
|
+ if (!StringUtils.isEmpty(message)) {
|
|
|
+ ArrayList<String> objects = new ArrayList<>();
|
|
|
+ objects.add(message);
|
|
|
+ quoteRespVo.setWarnMessageList(objects);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 设置核心报价车型
|
|
|
+ quoteRespVo.setCoreModels(carModelListDTO.toCoreModelsVo());
|
|
|
+ return responseOrder(insurePremiumResponse, quoteRespVo, ptlAgreementAttribution, insurePremiumResponse.getOrderId());
|
|
|
+ }
|
|
|
+
|
|
|
+ private HttpResult<QuoteRespVo> responseOrder(InsurePremiumResponse insurePremiumResponse, QuoteRespVo quoteRespVo, PtlAgreementAttribution ptlAgreementAttribution, String orderId) {
|
|
|
+ // 保存订单信息
|
|
|
+ InsAreaCompany insAreaCompany = new InsAreaCompany(quoteRespVo, ptlAgreementAttribution);
|
|
|
+ // 协议id
|
|
|
+ insAreaCompany.setReptxt(JSON.parseObject(JSON.toJSONString(insurePremiumResponse)));
|
|
|
+ insAreaCompany.setOrderstatus(InsOrderStatusEnum.QUOTE_ING.getCode());
|
|
|
+ insAreaCompany.setInsOrderNo(orderId);
|
|
|
+
|
|
|
+ // 车船税
|
|
|
+ if(Objects.nonNull(insurePremiumResponse.getCiContract())){
|
|
|
+ if(Objects.nonNull(insurePremiumResponse.getCiContract().getTax())){
|
|
|
+ InsurePremiumResponse.CiContractDTO.TaxDTO taxDTO = insurePremiumResponse.getCiContract().getTax();
|
|
|
+ TaxArrears taxArrears = new TaxArrears("往年欠税", taxDTO.getAnnualTaxDue().doubleValue(),
|
|
|
+ taxDTO.getSumOverdue().doubleValue());
|
|
|
+ List<TaxArrears> taxArrearsList = Collections.singletonList(taxArrears);
|
|
|
+ insAreaCompany.setTaxArrears(JSON.parseArray(JSON.toJSONString(taxArrearsList)));
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 特约
|
|
|
+ insAreaCompany.setJqappoint(quoteRespVo.getJqappoint());
|
|
|
+ insAreaCompany.setSyappoint(quoteRespVo.getSyappoint());
|
|
|
+ insAreaCompanyService.insertCompanyAndOrders(insAreaCompany, new ArrayList<>());
|
|
|
+ quoteRespVo.setCompanyId(insAreaCompany.getId());
|
|
|
+ return HttpResult.ok("报价成功", quoteRespVo);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ private QuoteRespVo getQuoteRespVo(InsurePremiumResponse insurePremiumResponse,
|
|
|
+ BaseQuoteInfoVo quoteInfoVo,
|
|
|
+ boolean isEnergy) {
|
|
|
+ Double jqPremium = 0D;
|
|
|
+ Double syPremium = 0D;
|
|
|
+ Double sumPayTax = 0D;
|
|
|
+ Double jyPremium = 0D;
|
|
|
+ QuoteRespVo quoteRespVo = new QuoteRespVo();
|
|
|
+ // 交强
|
|
|
+ if(Objects.nonNull(insurePremiumResponse.getCiContract())){
|
|
|
+ InsurePremiumResponse.CiContractDTO.ContractMainDTO ciContractMain = insurePremiumResponse.getCiContract().getContractMain();
|
|
|
+ jqPremium = ciContractMain.getTotalPremium().doubleValue();
|
|
|
+ quoteRespVo.setStartDateJq(ciContractMain.getValidDate());
|
|
|
+ quoteRespVo.setEndDateJq(ciContractMain.getExpiryDate());
|
|
|
+ //车船税
|
|
|
+ InsurePremiumResponse.CiContractDTO.TaxDTO taxDTO = insurePremiumResponse.getCiContract().getTax();
|
|
|
+ sumPayTax = taxDTO.getSumTax().doubleValue();
|
|
|
+ }
|
|
|
+ //商业
|
|
|
+ if(Objects.nonNull(insurePremiumResponse.getBiContract())){
|
|
|
+ InsurePremiumResponse.BiContractDTO.ContractMainDTO biContractMain = insurePremiumResponse.getBiContract().getContractMain();
|
|
|
+ syPremium = biContractMain.getTotalPremium().doubleValue();
|
|
|
+ quoteRespVo.setStartDateSy(biContractMain.getValidDate());
|
|
|
+ quoteRespVo.setEndDateSy(biContractMain.getExpiryDate());
|
|
|
+ }
|
|
|
+ // 意外险
|
|
|
+
|
|
|
+
|
|
|
+ List<QuoteKindRespVo> kindList1 = new ArrayList<>();
|
|
|
+ List<RiskInfoVo> riskList = quoteInfoVo.getRiskList();
|
|
|
+ // 报价险种放入保费
|
|
|
+ List<QuoteRiskRespVo> riskList1 = QuoteRiskRespVo.toQuoteRiskRespVoList(riskList, jqPremium, syPremium);
|
|
|
+
|
|
|
+ QuoteKindRespVo kind;
|
|
|
+ List<InsurePremiumResponse.BiContractDTO.CoverageDTO> coverage = new ArrayList<>();
|
|
|
+ if(Objects.nonNull(insurePremiumResponse.getBiContract())){
|
|
|
+ coverage = insurePremiumResponse.getBiContract().getCoverage();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ // 商业险险种
|
|
|
+ List<KindInfoVo> kindList = quoteInfoVo.getKindList();
|
|
|
+ if (CollUtil.isNotEmpty(coverage)){
|
|
|
+ for (KindInfoVo kindInfoVo : kindList) {
|
|
|
+ kind = new QuoteKindRespVo();
|
|
|
+ kind.setKindCode(kindInfoVo.getKindCode());
|
|
|
+ kind.setKindName(kindInfoVo.getKindName());
|
|
|
+ CtKindCodeEnum ctKindCodeEnum = Enum.valueOf(CtKindCodeEnum.class, kindInfoVo.getKindCode());
|
|
|
+ InsurePremiumResponse.BiContractDTO.CoverageDTO coverageDTO = coverage.stream().filter(a -> a.getKindCode().equals(ctKindCodeEnum.getCode())).collect(Collectors.toList()).get(0);
|
|
|
+ kind.setAmount(coverageDTO.getAmount().doubleValue());
|
|
|
+ kind.setCoveragePremium(coverageDTO.getCoveragePremium().doubleValue());
|
|
|
+ kind.setUnitAmount(coverageDTO.getUnitAmount() != null ? coverageDTO.getUnitAmount().doubleValue() : 0);
|
|
|
+ kind.setServiceTimes(coverageDTO.getQuantity());
|
|
|
+ if (!ObjectUtils.isEmpty(kindInfoVo.getDeductibleRate())) {
|
|
|
+ kind.setDeductibleRate(Double.parseDouble(kindInfoVo.getDeductibleRate()));
|
|
|
+ }
|
|
|
+ kindList1.add(kind);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ quoteRespVo.setRiskList(riskList1);
|
|
|
+ quoteRespVo.setKindList(kindList1);
|
|
|
+ quoteRespVo.setJqPremium(jqPremium);
|
|
|
+ quoteRespVo.setSyPremium(syPremium);
|
|
|
+ quoteRespVo.setTaxAmount(sumPayTax);
|
|
|
+ quoteRespVo.setJyPremium(jyPremium);
|
|
|
+ quoteRespVo.setCiSumPermium(CalculateUtils.add(jqPremium, sumPayTax));//交强险和车船税合计
|
|
|
+ quoteRespVo.setSumPermium(CalculateUtils.add(jqPremium, syPremium, sumPayTax, jyPremium));//保费合计
|
|
|
+ quoteRespVo.setTotalAdjustRate(0);
|
|
|
+ quoteRespVo.setOrderno(quoteInfoVo.getOrderNo()); //订单号
|
|
|
+ // 交强特约
|
|
|
+ if(Objects.nonNull(insurePremiumResponse.getCiContract())){
|
|
|
+ List<InsurePremiumResponse.CiContractDTO.EngageDTO> ciEngageDTOS = insurePremiumResponse.getCiContract().getEngage();
|
|
|
+ if(CollUtil.isNotEmpty(ciEngageDTOS)){
|
|
|
+// for (InsurePremiumResponse.CiContractDTO.EngageDTO ciEngageDTO : ciEngageDTOS) {
|
|
|
+// ciEngageDTO.set
|
|
|
+// }
|
|
|
+ quoteRespVo.setJqappoint(JSON.toJSONString(ciEngageDTOS));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 商业特约
|
|
|
+ if(Objects.nonNull(insurePremiumResponse.getBiContract())){
|
|
|
+ List<InsurePremiumResponse.BiContractDTO.EngageDTO> biEngageDTOS = insurePremiumResponse.getBiContract().getEngage();
|
|
|
+ if(CollUtil.isNotEmpty(biEngageDTOS)){
|
|
|
+ quoteRespVo.setSyappoint(JSON.toJSONString(biEngageDTOS));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return quoteRespVo;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取地区编码
|
|
|
+ * @param quoteInfoVo
|
|
|
+ * @param personAreaVo
|
|
|
+ */
|
|
|
+ private void buildRegion(BaseQuoteInfoVo quoteInfoVo, PersonAreaVo personAreaVo) {
|
|
|
+
|
|
|
+ //车主
|
|
|
+ CustomerInfoVo owner = quoteInfoVo.getOwnerInfo();
|
|
|
+ //被保人
|
|
|
+ CustomerInfoVo insured = quoteInfoVo.getInsuredPersonInfo();
|
|
|
+ //投保人
|
|
|
+ CustomerInfoVo applicant = quoteInfoVo.getPolicyHolderInfo();
|
|
|
+
|
|
|
+ //车主地区信息
|
|
|
+ PersonAreaVo ownerPersonAreaVo = sysAreaService.queryByAddressYc(owner.getAddr(), owner.getIdentifyNumber());
|
|
|
+ PersonAreaVo insuredPersonAreaVo;
|
|
|
+ PersonAreaVo applicantPersonAreaVo;
|
|
|
+
|
|
|
+ //车主是否与投保人相同
|
|
|
+ if (owner.getIdentifyNumber().equals(insured.getIdentifyNumber())) {
|
|
|
+ insuredPersonAreaVo = ownerPersonAreaVo;
|
|
|
+ } else {
|
|
|
+ //投保人地区信息
|
|
|
+ insuredPersonAreaVo = sysAreaService.queryByAddressYc(insured.getAddr(), insured.getIdentifyNumber());
|
|
|
+ }
|
|
|
+
|
|
|
+ //车主是否与被保人相同
|
|
|
+ if (owner.getIdentifyNumber().equals(applicant.getIdentifyNumber())) {
|
|
|
+ applicantPersonAreaVo = ownerPersonAreaVo;
|
|
|
+ } else { //投保人是否与被保人相同
|
|
|
+ if (insured.getIdentifyNumber().equals(applicant.getIdentifyNumber())) {
|
|
|
+ applicantPersonAreaVo = insuredPersonAreaVo;
|
|
|
+ } else {
|
|
|
+ applicantPersonAreaVo = sysAreaService.queryByAddressYc(applicant.getAddr(), applicant.getIdentifyNumber());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!Objects.isNull(ownerPersonAreaVo)) {
|
|
|
+ personAreaVo.setProvinceCode(ownerPersonAreaVo.getProvinceCode());
|
|
|
+ personAreaVo.setCityCode(ownerPersonAreaVo.getCityCode());
|
|
|
+ personAreaVo.setCountyCode(ownerPersonAreaVo.getCountyCode());
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!Objects.isNull(insuredPersonAreaVo)) {
|
|
|
+ personAreaVo.setProvinceCode(insuredPersonAreaVo.getProvinceCode());
|
|
|
+ personAreaVo.setCityCode(insuredPersonAreaVo.getCityCode());
|
|
|
+ personAreaVo.setCountyCode(insuredPersonAreaVo.getCountyCode());
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!Objects.isNull(applicantPersonAreaVo)) {
|
|
|
+ personAreaVo.setProvinceCode(applicantPersonAreaVo.getProvinceCode());
|
|
|
+ personAreaVo.setCityCode(applicantPersonAreaVo.getCityCode());
|
|
|
+ personAreaVo.setCountyCode(applicantPersonAreaVo.getCountyCode());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public HttpResult<Object> submitImages(String companyId) throws Exception {
|
|
|
+ InsAreaCompany insAreaCompany = insAreaCompanyService.getByIdIsExist(companyId);
|
|
|
+ /** 1. 协议id获取配置实体 */
|
|
|
+ String agreementId = insAreaCompany.getAgreementId();
|
|
|
+ // 1.1 账号信息
|
|
|
+ PtlAgreementAttribution ptlAgreementAttribution = ptlAgreementAttributionService.getById(agreementId);
|
|
|
+ // 1.2 通过 协议id获取配置实体
|
|
|
+ ChengTaiConfigureParameters parameters = configureParametersComponents.toEntity(ChengTaiConfigureParameters.class,
|
|
|
+ ptlAgreementAttribution);
|
|
|
+ HttpHeaders httpHeaders = chengTaiRequestApiComponents.getHttpHeaders(parameters,ChengTaiRequestApiComponents.RECURSIVE_HIERARCHY);
|
|
|
+ InsOrders insOrders = insOrdersService.getById(insAreaCompany.getOrderno());
|
|
|
+
|
|
|
+ List<InsTaskImagesBase64> insTaskImagesBase64s = insTaskImagesService.findByOrderNo(insOrders.getOrderno(),
|
|
|
+ insAreaCompany.getId(), true);
|
|
|
+ if (insTaskImagesBase64s.isEmpty()) {
|
|
|
+ return HttpResult.ok();
|
|
|
+ }
|
|
|
+ // 封装文件订单
|
|
|
+// List<UploadImageInfoListRequest.ItemFileDataListDTO> itemFileDataListDTOS = new ArrayList<>();
|
|
|
+ for (InsTaskImagesBase64 insTaskImagesBase64 : insTaskImagesBase64s) {
|
|
|
+ UploadFileRequest uploadFileRequest = new UploadFileRequest(insTaskImagesBase64, insAreaCompany.getInsOrderNo(), parameters);
|
|
|
+ UploadFileResponse uploadFileResponse = chengTaiRequestApiComponents.submitImage(uploadFileRequest,httpHeaders);
|
|
|
+ insTaskImagesBase64.setImageId(uploadFileResponse.getData().getFileIds().get(0));
|
|
|
+ }
|
|
|
+ // 将上传的数据存入缓存
|
|
|
+ insImagesUploadCacheComponents.setUploadImageCache(companyId, insTaskImagesBase64s);
|
|
|
+ return HttpResult.ok();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public CarInfoResponse modelsQuery(String modelName) throws Exception {
|
|
|
+ CarInfoVo carInfo = new CarInfoVo();
|
|
|
+ carInfo.setCiCarName(modelName);
|
|
|
+ ChengTaiConfigureParameters parameters = new ChengTaiConfigureParameters();
|
|
|
+ parameters.setPartnerCode("JZG_TYTQ_SX");
|
|
|
+ HttpHeaders httpHeaders = chengTaiRequestApiComponents.getHttpHeaders(parameters,ChengTaiRequestApiComponents.RECURSIVE_HIERARCHY);
|
|
|
+ CarInfoRequest request = new CarInfoRequest(carInfo, parameters);
|
|
|
+ CarInfoResponse response = chengTaiRequestApiComponents.carinfoQuery(request, httpHeaders);
|
|
|
+ return response;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public HttpResult<Object> audit(String companyId) throws Exception {
|
|
|
+ InsAreaCompany insAreaCompany = insAreaCompanyService.getByIdIsExist(companyId);
|
|
|
+ InsOrders insOrders = insOrdersService.getById(insAreaCompany.getOrderno());
|
|
|
+ // 1 通过 协议id获取配置实体
|
|
|
+ PtlAgreementAttribution ptlAgreementAttribution = ptlAgreementAttributionService.getById(insAreaCompany.getAgreementId());
|
|
|
+ ChengTaiConfigureParameters parameters = configureParametersComponents.toEntity(ChengTaiConfigureParameters.class,
|
|
|
+ ptlAgreementAttribution);
|
|
|
+ HttpHeaders httpHeaders = chengTaiRequestApiComponents.getHttpHeaders(parameters,ChengTaiRequestApiComponents.RECURSIVE_HIERARCHY);
|
|
|
+ // 2 提交核保
|
|
|
+ JSONObject applyInfo = insOrders.getApplyinfo();
|
|
|
+ JSONObject insureinfo = insOrders.getInsureinfo();
|
|
|
+ PersonAreaVo applyPersonAreaVo = sysAreaService.queryByAddressYc(applyInfo.getString("addr"), applyInfo.getString("identifyNumber"));
|
|
|
+ PersonAreaVo insurePersonAreaVo = sysAreaService.queryByAddressYc(insureinfo.getString("addr"), insureinfo.getString("identifyNumber"));
|
|
|
+
|
|
|
+ List<SubmitVerifyRequest.EngageListDTO> engageDTO = new ArrayList<>();
|
|
|
+ // 获取特约
|
|
|
+ List<SubmitVerifyRequest.EngageListDTO> ciEngageDTO = JSON.parseArray(insAreaCompany.getJqappoint(),
|
|
|
+ SubmitVerifyRequest.EngageListDTO.class);
|
|
|
+ if(CollUtil.isNotEmpty(ciEngageDTO)){
|
|
|
+ for (SubmitVerifyRequest.EngageListDTO engageListDTO : ciEngageDTO) {
|
|
|
+ engageListDTO.setRiskCode(RiskCodeEnum.R1002.getCode());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ List<SubmitVerifyRequest.EngageListDTO> biEngageDTO = JSON.parseArray(insAreaCompany.getSyappoint(),
|
|
|
+ SubmitVerifyRequest.EngageListDTO.class);
|
|
|
+ if(CollUtil.isNotEmpty(biEngageDTO)){
|
|
|
+ for (SubmitVerifyRequest.EngageListDTO engageListDTO : biEngageDTO) {
|
|
|
+ engageListDTO.setRiskCode(RiskCodeEnum.R0821.getCode());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(CollUtil.isNotEmpty(ciEngageDTO)){
|
|
|
+ engageDTO.addAll(ciEngageDTO);
|
|
|
+ }
|
|
|
+ if(CollUtil.isNotEmpty(biEngageDTO)){
|
|
|
+ engageDTO.addAll(biEngageDTO);
|
|
|
+ }
|
|
|
+ // 投保保存
|
|
|
+ SubmitVerifyRequest submitVerifyRequest = new SubmitVerifyRequest(parameters,insAreaCompany,
|
|
|
+ insOrders,engageDTO,applyPersonAreaVo,insurePersonAreaVo);
|
|
|
+ try{
|
|
|
+ SubmitVerifyResponse submitVerifyResponse = chengTaiRequestApiComponents.auditSave(submitVerifyRequest,httpHeaders);
|
|
|
+ // 核保
|
|
|
+ UnderwritingRequest underwritingRequest = new UnderwritingRequest(parameters,submitVerifyResponse.getOrderId());
|
|
|
+ UnderwritingResponse underwritingResponse = chengTaiRequestApiComponents.audit(underwritingRequest,httpHeaders);
|
|
|
+
|
|
|
+ // 查询投保结果
|
|
|
+ SubmitVerifyResultRequest submitVerifyResultRequest = new SubmitVerifyResultRequest(parameters,submitVerifyResponse.getOrderId());
|
|
|
+ SubmitVerifyResultResponse submitVerifyResultResponse = chengTaiRequestApiComponents.auditSaveResult(submitVerifyResultRequest,httpHeaders);
|
|
|
+ List<SubmitVerifyResultResponse.DataDTO> data = submitVerifyResultResponse.getData();
|
|
|
+ if(CollUtil.isNotEmpty(data)){
|
|
|
+ for (SubmitVerifyResultResponse.DataDTO dataDTO : data) {
|
|
|
+ if(RiskCodeEnum.R1002.getCode().equals(dataDTO.getRiskCode())){
|
|
|
+ insAreaCompany.setJqpolicyno(dataDTO.getPolicyCode());
|
|
|
+ insAreaCompany.setJqapplyno(dataDTO.getInsCode());
|
|
|
+ }
|
|
|
+ if (RiskCodeEnum.R0821.getCode().equals(dataDTO.getRiskCode())) {
|
|
|
+ insAreaCompany.setSypolicyno(dataDTO.getPolicyCode());
|
|
|
+ insAreaCompany.setSyapplyno(dataDTO.getInsCode());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ insAreaCompany.setOrderstatus(InsOrderStatusEnum.WAIT_PAY.getCode());
|
|
|
+ // 获取支付链接
|
|
|
+ PayUrlRequest payUrlRequest = new PayUrlRequest(parameters,submitVerifyResponse.getOrderId());
|
|
|
+ PayUrlResponse payUrlResponse = chengTaiRequestApiComponents.getPayUrl(payUrlRequest, httpHeaders);
|
|
|
+ insAreaCompany.setPaymentLink(payUrlResponse.getSmsUrl());
|
|
|
+ insAreaCompanyService.updateCompanyAndOrders(insAreaCompany);
|
|
|
+ return HttpResult.ok("核保成功");
|
|
|
+ }catch (SystemException systemException){
|
|
|
+ // 查询核保结果
|
|
|
+ UnderwritingResultRequest resultRequest = new UnderwritingResultRequest(parameters,insAreaCompany.getInsOrderNo());
|
|
|
+ UnderwritingResultResponse underwritingResultResponse = chengTaiRequestApiComponents.auditResult(resultRequest,httpHeaders);
|
|
|
+ String uwMsg = systemException.getMessage();
|
|
|
+ if (OrderStatusEnum.A2001.getCode().equals(underwritingResultResponse.getFinalRuleResult())) {
|
|
|
+ // add by hxl 添加手动更新状态
|
|
|
+ insSubOrderUpdateDetailService.insertData(insAreaCompany, insAreaCompany.getOrderstatus(), InsOrderStatusEnum.TO_BACK.getCode(), "1");
|
|
|
+ insAreaCompany.setOrderstatus(InsOrderStatusEnum.TO_BACK.getCode());
|
|
|
+ insAreaCompanyService.updateCompanyAndOrdersMessage(insAreaCompany, uwMsg);
|
|
|
+ return HttpResult.error(OrderStatusEnum.A2001.getDesc() + ":" + uwMsg);
|
|
|
+ // 人工核保
|
|
|
+ } else if (OrderStatusEnum.A2002.getCode().equals(underwritingResultResponse.getFinalRuleResult())) {
|
|
|
+ insAreaCompany.setUnderwritingStatus(UnderwritingStatus.US_2.getCode());
|
|
|
+ // add by hxl 添加手动更新状态
|
|
|
+ insSubOrderUpdateDetailService.insertData(insAreaCompany, insAreaCompany.getOrderstatus(), InsOrderStatusEnum.WAIT_AUDIT.getCode(), "1");
|
|
|
+ insAreaCompany.setOrderstatus(InsOrderStatusEnum.WAIT_AUDIT.getCode());
|
|
|
+ insAreaCompanyService.updateCompanyAndOrdersMessage(insAreaCompany, uwMsg);
|
|
|
+ return HttpResult.error("人工核保" + ":" + uwMsg);
|
|
|
+ }
|
|
|
+
|
|
|
+ throw new SystemException(systemException.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public HttpResult<Object> getOrderDetail(String companyId) throws Exception {
|
|
|
+ InsAreaCompany insAreaCompany = insAreaCompanyService.getByIdIsExist(companyId);
|
|
|
+
|
|
|
+ // 1 通过 协议id获取配置实体
|
|
|
+ PtlAgreementAttribution ptlAgreementAttribution = ptlAgreementAttributionService.getById(insAreaCompany.getAgreementId());
|
|
|
+ ChengTaiConfigureParameters parameters = configureParametersComponents.toEntity(ChengTaiConfigureParameters.class,
|
|
|
+ ptlAgreementAttribution);
|
|
|
+ HttpHeaders httpHeaders = chengTaiRequestApiComponents.getHttpHeaders(parameters,ChengTaiRequestApiComponents.RECURSIVE_HIERARCHY);
|
|
|
+
|
|
|
+ SubmitVerifyResultRequest submitVerifyResultRequest = new SubmitVerifyResultRequest(parameters,insAreaCompany.getInsOrderNo());
|
|
|
+ SubmitVerifyResultResponse submitVerifyResultResponse = chengTaiRequestApiComponents.auditSaveResult(submitVerifyResultRequest,httpHeaders);
|
|
|
+ // 查询核保结果
|
|
|
+ UnderwritingResultRequest resultRequest = new UnderwritingResultRequest(parameters,insAreaCompany.getInsOrderNo());
|
|
|
+ UnderwritingResultResponse underwritingResultResponse = chengTaiRequestApiComponents.auditResult(resultRequest,httpHeaders);
|
|
|
+ // 3. 订单生效以后修改状态
|
|
|
+ if (OrderStatusEnum.A7005.getCode().equals(submitVerifyResultResponse.getPolicyProsts()) || OrderStatusEnum.A7004.getCode().equals(submitVerifyResultResponse.getPolicyProsts())) {
|
|
|
+ // 3.1 非车险订单存入数据
|
|
|
+ String payTime = underwritingResultResponse.getFinalRuleResultEndDate();
|
|
|
+ if (StringUtils.isNotEmpty(payTime)) {
|
|
|
+ insAreaCompany.setPayDate(LocalDateTime.parse(payTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
|
|
|
+ }
|
|
|
+ List<SubmitVerifyResultResponse.DataDTO> data = submitVerifyResultResponse.getData();
|
|
|
+ if(CollUtil.isNotEmpty(data)){
|
|
|
+ for (SubmitVerifyResultResponse.DataDTO dataDTO : data) {
|
|
|
+ if(RiskCodeEnum.R1002.getCode().equals(dataDTO.getRiskCode())){
|
|
|
+ insAreaCompany.setJqpolicyno(dataDTO.getPolicyCode());
|
|
|
+ insAreaCompany.setJqapplyno(dataDTO.getInsCode());
|
|
|
+ }
|
|
|
+ if (RiskCodeEnum.R0821.getCode().equals(dataDTO.getRiskCode())) {
|
|
|
+ insAreaCompany.setSypolicyno(dataDTO.getPolicyCode());
|
|
|
+ insAreaCompany.setSyapplyno(dataDTO.getInsCode());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // add by hxl 添加手动更新状态
|
|
|
+ insSubOrderUpdateDetailService.insertData(insAreaCompany, insAreaCompany.getOrderstatus(), InsOrderStatusEnum.ACCEPT_INSURANCE.getCode(), "1");
|
|
|
+ insAreaCompany.setOrderstatus(InsOrderStatusEnum.ACCEPT_INSURANCE.getCode());
|
|
|
+ insAreaCompanyService.updateCompanyAndOrders(insAreaCompany);
|
|
|
+ return HttpResult.ok("订单已支付,订单状态修改完成");
|
|
|
+ }
|
|
|
+ return HttpResult.ok("订单还未支付哦.");
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public HttpResult<Object> auditStatusQuery(String companyId) throws Exception {
|
|
|
+ InsAreaCompany insAreaCompany = insAreaCompanyService.getByIdIsExist(companyId);
|
|
|
+
|
|
|
+ // 1 通过 协议id获取配置实体
|
|
|
+ PtlAgreementAttribution ptlAgreementAttribution = ptlAgreementAttributionService.getById(insAreaCompany.getAgreementId());
|
|
|
+ ChengTaiConfigureParameters parameters = configureParametersComponents.toEntity(ChengTaiConfigureParameters.class,
|
|
|
+ ptlAgreementAttribution);
|
|
|
+ HttpHeaders httpHeaders = chengTaiRequestApiComponents.getHttpHeaders(parameters,ChengTaiRequestApiComponents.RECURSIVE_HIERARCHY);
|
|
|
+
|
|
|
+ // 查询投保结果
|
|
|
+ SubmitVerifyResultRequest submitVerifyResultRequest = new SubmitVerifyResultRequest(parameters,insAreaCompany.getInsOrderNo());
|
|
|
+ SubmitVerifyResultResponse submitVerifyResultResponse = chengTaiRequestApiComponents.auditSaveResult(submitVerifyResultRequest,httpHeaders);
|
|
|
+ List<SubmitVerifyResultResponse.DataDTO> data = submitVerifyResultResponse.getData();
|
|
|
+
|
|
|
+ if (OrderStatusEnum.A2000.getCode().equals(submitVerifyResultResponse.getPolicyProsts())) {
|
|
|
+ insSubOrderUpdateDetailService.insertData(insAreaCompany, insAreaCompany.getOrderstatus(), InsOrderStatusEnum.WAIT_PAY.getCode(), "1");
|
|
|
+ if(CollUtil.isNotEmpty(data)){
|
|
|
+ for (SubmitVerifyResultResponse.DataDTO dataDTO : data) {
|
|
|
+ if(RiskCodeEnum.R1002.getCode().equals(dataDTO.getRiskCode())){
|
|
|
+ insAreaCompany.setJqpolicyno(dataDTO.getPolicyCode());
|
|
|
+ insAreaCompany.setJqapplyno(dataDTO.getInsCode());
|
|
|
+ }
|
|
|
+ if (RiskCodeEnum.R0821.getCode().equals(dataDTO.getRiskCode())) {
|
|
|
+ insAreaCompany.setSypolicyno(dataDTO.getPolicyCode());
|
|
|
+ insAreaCompany.setSyapplyno(dataDTO.getInsCode());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ insAreaCompany.setOrderstatus(InsOrderStatusEnum.WAIT_PAY.getCode());
|
|
|
+ // 获取支付链接
|
|
|
+ PayUrlRequest payUrlRequest = new PayUrlRequest(parameters,insAreaCompany.getInsOrderNo());
|
|
|
+ PayUrlResponse payUrlResponse = chengTaiRequestApiComponents.getPayUrl(payUrlRequest, httpHeaders);
|
|
|
+ insAreaCompany.setPaymentLink(payUrlResponse.getSmsUrl());
|
|
|
+ insAreaCompanyService.updateCompanyAndOrders(insAreaCompany);
|
|
|
+ // add by hxl 添加手动更新状态
|
|
|
+ return HttpResult.ok("核保成功");
|
|
|
+ } else if (OrderStatusEnum.A2001.getCode().equals(submitVerifyResultResponse.getPolicyProsts())) {
|
|
|
+ // add by hxl 添加手动更新状态
|
|
|
+ insSubOrderUpdateDetailService.insertData(insAreaCompany, insAreaCompany.getOrderstatus(), InsOrderStatusEnum.TO_BACK.getCode(), "1");
|
|
|
+ insAreaCompany.setOrderstatus(InsOrderStatusEnum.TO_BACK.getCode());
|
|
|
+ String uwMsg = InsOrderStatusEnum.TO_BACK.getDesc();
|
|
|
+ insAreaCompanyService.updateCompanyAndOrdersMessage(insAreaCompany, uwMsg);
|
|
|
+ return HttpResult.error(uwMsg);
|
|
|
+ }
|
|
|
+ return HttpResult.ok("核保状态未修改");
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public HttpResult<String> getPolicyPrint(PolicyPrintVo policyPrintVo) throws Exception {
|
|
|
+ InsAreaCompany insAreaCompany = insAreaCompanyService.getByIdIsExist(policyPrintVo.getCompanyId());
|
|
|
+ if (!InsOrderStatusEnum.ACCEPT_INSURANCE.getCode().equals(insAreaCompany.getOrderstatus())) {
|
|
|
+ throw new SystemException("此订单还未承保");
|
|
|
+ }
|
|
|
+ // 1 通过 协议id获取配置实体
|
|
|
+ PtlAgreementAttribution ptlAgreementAttribution = ptlAgreementAttributionService.getById(insAreaCompany.getAgreementId());
|
|
|
+ ChengTaiConfigureParameters parameters = configureParametersComponents.toEntity(ChengTaiConfigureParameters.class,
|
|
|
+ ptlAgreementAttribution);
|
|
|
+ HttpHeaders httpHeaders = chengTaiRequestApiComponents.getHttpHeaders(parameters,ChengTaiRequestApiComponents.RECURSIVE_HIERARCHY);
|
|
|
+
|
|
|
+ InsOrders insOrders = insOrdersService.getById(insAreaCompany.getOrderno());
|
|
|
+ DownLoadDocumentUrlRequest request = new DownLoadDocumentUrlRequest(parameters,policyPrintVo.getPolicyNumber());
|
|
|
+ DownLoadDocumentUrlResponse response = chengTaiRequestApiComponents.downLoadDocumentUrl(request, httpHeaders);
|
|
|
+
|
|
|
+ // 车牌号
|
|
|
+ String licensePlate = insOrders.getLicenseno();
|
|
|
+ // 被保人信息
|
|
|
+ String templateName;
|
|
|
+ String url = null;
|
|
|
+ switch (policyPrintVo.getRiskCode()) {
|
|
|
+ case InsuranceRisk.TRAFFIC_CODE:
|
|
|
+ templateName = "-交强险保单.pdf";
|
|
|
+ url = response.getCiDownLoad();
|
|
|
+ break;
|
|
|
+ case InsuranceRisk.BUSINESS_CODE:
|
|
|
+ templateName = "-商业险保单.pdf";
|
|
|
+ url = response.getBiDownLoad();
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ throw new SystemException("保险编号异常");
|
|
|
+ }
|
|
|
+ String transferUrl = gainCarInsPolicy(url, licensePlate + templateName, insAreaCompany.getId());
|
|
|
+ return HttpResult.ok("生成成功", transferUrl);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public HttpResult<Object> cancel(String companyId) throws Exception {
|
|
|
+ InsAreaCompany insAreaCompany = insAreaCompanyService.getByIdIsExist(companyId);
|
|
|
+
|
|
|
+ // 1 通过 协议id获取配置实体
|
|
|
+ PtlAgreementAttribution ptlAgreementAttribution = ptlAgreementAttributionService.getById(insAreaCompany.getAgreementId());
|
|
|
+ ChengTaiConfigureParameters parameters = configureParametersComponents.toEntity(ChengTaiConfigureParameters.class,
|
|
|
+ ptlAgreementAttribution);
|
|
|
+ HttpHeaders httpHeaders = chengTaiRequestApiComponents.getHttpHeaders(parameters,ChengTaiRequestApiComponents.RECURSIVE_HIERARCHY);
|
|
|
+
|
|
|
+ // 2 请求查看订单状态
|
|
|
+ OrderNoRequest orderNoRequest = new OrderNoRequest(parameters,insAreaCompany.getInsOrderNo());
|
|
|
+ OrderNoResponse response = chengTaiRequestApiComponents.cancel(orderNoRequest, httpHeaders);
|
|
|
+
|
|
|
+ // 3 撤销成功后修改状态为报价中
|
|
|
+ insAreaCompany.setOrderstatus(InsOrderStatusEnum.QUOTE_ING.getCode());
|
|
|
+ insAreaCompanyService.updateCompanyAndOrders(insAreaCompany);
|
|
|
+
|
|
|
+ return HttpResult.ok("撤单成功");
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public HttpResult<String> getPayUrl(String companyId) throws Exception {
|
|
|
+ InsAreaCompany insAreaCompany = insAreaCompanyService.getByIdIsExist(companyId);
|
|
|
+ // 1 通过 协议id获取配置实体
|
|
|
+ PtlAgreementAttribution ptlAgreementAttribution = ptlAgreementAttributionService.getById(insAreaCompany.getAgreementId());
|
|
|
+ ChengTaiConfigureParameters parameters = configureParametersComponents.toEntity(ChengTaiConfigureParameters.class,
|
|
|
+ ptlAgreementAttribution);
|
|
|
+ HttpHeaders httpHeaders = chengTaiRequestApiComponents.getHttpHeaders(parameters,ChengTaiRequestApiComponents.RECURSIVE_HIERARCHY);
|
|
|
+ // 获取支付链接
|
|
|
+ PayUrlRequest payUrlRequest = new PayUrlRequest(parameters,insAreaCompany.getInsOrderNo());
|
|
|
+ PayUrlResponse payUrlResponse = chengTaiRequestApiComponents.getPayUrl(payUrlRequest, httpHeaders);
|
|
|
+ insAreaCompany.setPaymentLink(payUrlResponse.getSmsUrl());
|
|
|
+ insAreaCompanyService.updateCompanyAndOrders(insAreaCompany);
|
|
|
+ return HttpResult.ok("获取成功");
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public ReadPdfUrlListDto getPolicyByCompanyIdPdfList(InsAreaCompany insAreaCompany, InsOrders insOrders, boolean flag) {
|
|
|
+ String jqPath = getPdfUrl(insAreaCompany, insOrders,InsuranceRisk.TRAFFIC_CODE,PolicyPrintVo.PolicyPrintType.PPT_2.getCode(),insAreaCompany.getJqpolicyno(),flag);
|
|
|
+ String syPath = getPdfUrl(insAreaCompany,insOrders,InsuranceRisk.BUSINESS_CODE,PolicyPrintVo.PolicyPrintType.PPT_2.getCode(), insAreaCompany.getSypolicyno(),flag);
|
|
|
+ InsAreaCompanyExternalPolicy insAreaCompanyExternalPolicy =new InsAreaCompanyExternalPolicy(insAreaCompany.getId(),jqPath,syPath,null,null);
|
|
|
+ return new ReadPdfUrlListDto(insAreaCompanyExternalPolicy,insAreaCompany,null);
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getPdfUrl(InsAreaCompany insAreaCompany, InsOrders insOrders,String jqFlag,String jqSignFlag,String policyNo,boolean flag) {
|
|
|
+ if (!InsOrderStatusEnum.ACCEPT_INSURANCE.getCode().equals(insAreaCompany.getOrderstatus())) {
|
|
|
+ throw new SystemException("此订单还未承保");
|
|
|
+ }
|
|
|
+ // 被保人信息
|
|
|
+ String pathPrefix = insAreaCompany.getInscompany()+"-"+insOrders.getLicenseno()+"-"+insAreaCompany.getId() +"-"+policyNo+"-";
|
|
|
+ if(org.apache.commons.lang3.StringUtils.isBlank(policyNo)){
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ // 1 通过 协议id获取配置实体
|
|
|
+ PtlAgreementAttribution ptlAgreementAttribution = ptlAgreementAttributionService.getById(insAreaCompany.getAgreementId());
|
|
|
+ ChengTaiConfigureParameters parameters = configureParametersComponents.toEntity(ChengTaiConfigureParameters.class,
|
|
|
+ ptlAgreementAttribution);
|
|
|
+ HttpHeaders httpHeaders = chengTaiRequestApiComponents.getHttpHeaders(parameters,ChengTaiRequestApiComponents.RECURSIVE_HIERARCHY);
|
|
|
+ // 车牌号
|
|
|
+ String licensePlate = insOrders.getLicenseno();
|
|
|
+ // 被保人信息
|
|
|
+ String templateName = null;
|
|
|
+ String url = null;
|
|
|
+ try{
|
|
|
+ DownLoadDocumentUrlRequest request = new DownLoadDocumentUrlRequest(parameters,policyNo);
|
|
|
+ DownLoadDocumentUrlResponse response = chengTaiRequestApiComponents.downLoadDocumentUrl(request, httpHeaders);
|
|
|
+ switch (jqFlag) {
|
|
|
+ case InsuranceRisk.TRAFFIC_CODE:
|
|
|
+ templateName = pathPrefix + InsuranceOrderPdf.JQBD.getDesc();
|
|
|
+ url = response.getCiDownLoad();
|
|
|
+ break;
|
|
|
+ case InsuranceRisk.BUSINESS_CODE:
|
|
|
+ templateName = pathPrefix + InsuranceOrderPdf.SYBD.getDesc();
|
|
|
+ url = response.getBiDownLoad();
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ } catch (Exception e){
|
|
|
+ throw new SystemException(e.toString());
|
|
|
+ }
|
|
|
+ String transferUrl = gainCarInsPolicyNew(url, templateName, insAreaCompany.getId(),flag);
|
|
|
+ return transferUrl;
|
|
|
+ }
|
|
|
+
|
|
|
+ private String gainCarInsPolicyNew(String url, String fileName, String subOrderId,boolean flag) {
|
|
|
+ String dir = "carInsPolicyNew/" + subOrderId + "/";
|
|
|
+ return FileUtil.netUrlToFileNew(url, dir, fileName, uploadFilePath, apiUrl + showFileUrl,flag);
|
|
|
+ }
|
|
|
+ private String gainCarInsPolicy(String url, String fileName, String licensePlate) {
|
|
|
+ String dir = "carInsPolicy/" + licensePlate + "/";
|
|
|
+ return FileUtil.netUrlToFile(url, dir, fileName, uploadFilePath, apiUrl + showFileUrl);
|
|
|
+ }
|
|
|
+
|
|
|
+}
|