소스 검색

内部状态查询定时任务,
同步状态定时任务

785834757 2 년 전
부모
커밋
faaddcb8fe

+ 7 - 0
pom.xml

@@ -554,6 +554,13 @@
             <version>2.14.3</version>
         </dependency>
 
+        <!--xxl-job-->
+        <dependency>
+            <groupId>com.xuxueli</groupId>
+            <artifactId>xxl-job-core</artifactId>
+            <version>2.3.0</version>
+        </dependency>
+
     </dependencies>
 
 

+ 63 - 0
src/main/java/com/ydtech/modules/xxl/factory/QueryStatusFactory.java

@@ -0,0 +1,63 @@
+package com.ydtech.modules.xxl.factory;
+
+import com.ydtech.modules.order.components.ConfigureParametersComponents;
+import com.ydtech.modules.order.components.InsCrawlerOrderComponents;
+import com.ydtech.modules.order.components.ZhongmeiRequestApiComponents;
+import com.ydtech.modules.order.components.dajia.DaJiaRequestApiComponents;
+import com.ydtech.modules.order.components.gouren.GuorenRequestApiComponent;
+import com.ydtech.modules.order.components.huatai.HuaTaiRequestApiComponents;
+import com.ydtech.modules.order.components.yongcheng.YongchengRequestApiComponents;
+import com.ydtech.modules.order.components.zijin.ZijinRequestApiComponents;
+import com.ydtech.modules.protocol.service.PtlAgreementAttributionService;
+import com.ydtech.modules.protocol.service.PtlCrawlerApiService;
+import com.ydtech.modules.xxl.service.BaseQueryStatusService;
+import com.ydtech.modules.xxl.service.impl.*;
+import org.springframework.stereotype.Component;
+
+import java.util.HashMap;
+
+@Component
+public class QueryStatusFactory {
+
+    public static BaseQueryStatusService getQueryStatusService(HashMap map, String companyId) {
+        if (companyId.startsWith("AICS1000000")) {
+            return new YongChengQueryStatusService(
+                    (ConfigureParametersComponents) map.get("configureParametersComponents"),
+                    (YongchengRequestApiComponents) map.get("yongchengRequestApiComponents"),
+                    (PtlAgreementAttributionService) map.get("ptlAgreementAttributionService"));
+        } else if (companyId.startsWith("DJPC1000000")) {
+            return new DaJiaQueryStatusService(
+                    (ConfigureParametersComponents) map.get("configureParametersComponents"),
+                    (DaJiaRequestApiComponents) map.get("daJiaRequestApiComponents"),
+                    (PtlAgreementAttributionService) map.get("ptlAgreementAttributionService"));
+        } else if (companyId.startsWith("XDCX1000000")){
+            return new GuoRenQueryStatusService(
+                    (ConfigureParametersComponents) map.get("configureParametersComponents"),
+                    (GuorenRequestApiComponent) map.get("guorenRequestApiComponent"),
+                    (PtlAgreementAttributionService) map.get("ptlAgreementAttributionService"));
+        } else if(companyId.startsWith("HTIC1000000")){
+            return new HuaTaiQueryStatusService(
+                    (ConfigureParametersComponents) map.get("configureParametersComponents"),
+                    (HuaTaiRequestApiComponents) map.get("huaTaiRequestApiComponents"),
+                    (PtlAgreementAttributionService) map.get("ptlAgreementAttributionService"));
+        } else if(companyId.startsWith("ZMBX1000000")){
+            return new ZhongMeiQueryStatusService(
+                    (ConfigureParametersComponents) map.get("configureParametersComponents"),
+                    (ZhongmeiRequestApiComponents) map.get("zhongmeiRequestApiComponents"),
+                    (PtlAgreementAttributionService) map.get("ptlAgreementAttributionService"));
+        } else if(companyId.startsWith("ZKIC1000000")){
+            return new ZijinQueryStatusService(
+                    (ConfigureParametersComponents) map.get("configureParametersComponents"),
+                    (ZijinRequestApiComponents) map.get("zijinRequestApiComponents"),
+                    (PtlAgreementAttributionService) map.get("ptlAgreementAttributionService"));
+        } else if(companyId.startsWith("TPBX1000000") || companyId.startsWith("TPIC1000000") || companyId.startsWith("HBIC1000000") || companyId.startsWith("GPIC1000000") ||
+                    companyId.startsWith("HNIC1000000") || companyId.startsWith("ZAPA1000000")){
+            return new ReptileQueryStatusService(
+                    (ConfigureParametersComponents) map.get("configureParametersComponents"),
+                    (PtlCrawlerApiService) map.get("ptlCrawlerApiService"),
+                    (InsCrawlerOrderComponents) map.get("insCrawlerOrderComponents"));
+        } else {
+            return null;
+        }
+    }
+}

+ 121 - 0
src/main/java/com/ydtech/modules/xxl/handler/QueryStatusHandler.java

@@ -0,0 +1,121 @@
+package com.ydtech.modules.xxl.handler;
+
+import com.xxl.job.core.handler.annotation.XxlJob;
+import com.ydtech.constants.enums.dict.InsOrderStatusEnum;
+import com.ydtech.modules.order.components.ConfigureParametersComponents;
+import com.ydtech.modules.order.components.InsCrawlerOrderComponents;
+import com.ydtech.modules.order.components.ZhongmeiRequestApiComponents;
+import com.ydtech.modules.order.components.dajia.DaJiaRequestApiComponents;
+import com.ydtech.modules.order.components.gouren.GuorenRequestApiComponent;
+import com.ydtech.modules.order.components.huatai.HuaTaiRequestApiComponents;
+import com.ydtech.modules.order.components.yongcheng.YongchengRequestApiComponents;
+import com.ydtech.modules.order.components.zijin.ZijinRequestApiComponents;
+import com.ydtech.modules.protocol.service.PtlAgreementAttributionService;
+import com.ydtech.modules.protocol.service.PtlCrawlerApiService;
+import com.ydtech.modules.xxl.mapper.XxlInsAreaCompanyMapper;
+import com.ydtech.modules.xxl.model.InsAreaCompany;
+import com.ydtech.modules.xxl.model.QueryStatusResult;
+import com.ydtech.modules.xxl.service.BaseQueryStatusService;
+import com.ydtech.modules.xxl.factory.QueryStatusFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.time.Duration;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * 状态查询 并更新内部状态 定时任务
+ */
+@Component
+public class QueryStatusHandler {
+
+    @Autowired
+    XxlInsAreaCompanyMapper insAreaCompanyMapper;
+
+    @Autowired
+    ConfigureParametersComponents configureParametersComponents;
+
+    @Autowired
+    DaJiaRequestApiComponents daJiaRequestApiComponents;
+
+    @Autowired
+    YongchengRequestApiComponents yongchengRequestApiComponents;
+
+    @Autowired
+    GuorenRequestApiComponent guorenRequestApiComponent;
+
+    @Autowired
+    HuaTaiRequestApiComponents huaTaiRequestApiComponents;
+
+    @Autowired
+    ZhongmeiRequestApiComponents zhongmeiRequestApiComponents;
+
+    @Autowired
+    ZijinRequestApiComponents zijinRequestApiComponents;
+
+    @Autowired
+    InsCrawlerOrderComponents insCrawlerOrderComponents;
+
+    @Autowired
+    PtlCrawlerApiService ptlCrawlerApiService;
+
+    @Autowired
+    PtlAgreementAttributionService ptlAgreementAttributionService;
+
+
+    @XxlJob("queryStatusHandler")
+    public void queryStatus() {
+
+        HashMap<String,Object> components = getComponents();
+        HashMap<String,String> time = get24HourTime();
+        //获取24小时内未支付的订单
+        List<InsAreaCompany> noPayList = insAreaCompanyMapper.getNoPayList(time.get("startTime"), time.get("endTime"));
+        noPayList.forEach(insAreaCompany -> {
+            if(insAreaCompany.getAgreementId() != null) {
+                //实例化
+                BaseQueryStatusService queryStatusService = QueryStatusFactory.getQueryStatusService(components,insAreaCompany.getCompanyId());
+                if (queryStatusService != null) {
+                    QueryStatusResult queryStatusResult = queryStatusService.queryStatus(insAreaCompany);
+                    if (queryStatusResult.getStatus()) {
+                        //更新 ins_area_company
+                        insAreaCompany.setInsideOrderStatus(Integer.parseInt(InsOrderStatusEnum.ACCEPT_INSURANCE.getCode()));
+                        insAreaCompany.setInsidePayTime(queryStatusResult.getPayTime());
+                        insAreaCompanyMapper.updateById(insAreaCompany);
+                    }
+                }
+            }
+        });
+    }
+
+
+    private HashMap<String,Object> getComponents(){
+        HashMap<String,Object> components = new HashMap<>();
+        components.put("configureParametersComponents",configureParametersComponents);
+        components.put("daJiaRequestApiComponents",daJiaRequestApiComponents);
+        components.put("yongchengRequestApiComponents",yongchengRequestApiComponents);
+        components.put("guorenRequestApiComponent",guorenRequestApiComponent);
+        components.put("huaTaiRequestApiComponents",huaTaiRequestApiComponents);
+        components.put("zhongmeiRequestApiComponents",zhongmeiRequestApiComponents);
+        components.put("zijinRequestApiComponents",zijinRequestApiComponents);
+        components.put("insCrawlerOrderComponents",insCrawlerOrderComponents);
+        components.put("ptlCrawlerApiService",ptlCrawlerApiService);
+        components.put("ptlAgreementAttributionService",ptlAgreementAttributionService);
+        return components;
+    }
+
+    private HashMap<String,String> get24HourTime(){
+        HashMap<String,String> components = new HashMap<>();
+        // 获取当前时间
+        LocalDateTime currentTime = LocalDateTime.now();
+        // 获取前24小时的时间
+        LocalDateTime previous24Hours = currentTime.minus(Duration.ofHours(24));
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+        LocalDateTime current = LocalDateTime.now();
+        components.put("startTime",current.format(formatter));
+        components.put("endTime",previous24Hours.format(formatter));
+        return components;
+    }
+}

+ 57 - 0
src/main/java/com/ydtech/modules/xxl/handler/SyncStatusHandler.java

@@ -0,0 +1,57 @@
+package com.ydtech.modules.xxl.handler;
+
+import com.xxl.job.core.handler.annotation.XxlJob;
+import com.ydtech.modules.xxl.mapper.XxlInsAreaCompanyMapper;
+import com.ydtech.modules.xxl.model.InsAreaCompany;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+
+
+/**
+ * 同步已承保状态的定时任务
+ * 将已承包的同步到内部状态中
+ */
+@Component
+public class SyncStatusHandler {
+    @Autowired
+    XxlInsAreaCompanyMapper insAreaCompanyMapper;
+
+    @XxlJob("syncStatusHandler")
+    public void syncStatusHandler() {
+
+        // 获取当前时间
+        LocalDateTime currentDateTime = LocalDateTime.now();
+
+        // 减去一个小时
+        LocalDateTime oneHourAgo = currentDateTime.minusHours(1);
+
+        // 设置日期时间格式
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+
+        String startTime = currentDateTime.format(formatter);
+        // 格式化输出
+        String endTime = oneHourAgo.format(formatter);
+
+        List<InsAreaCompany> noSyncList = insAreaCompanyMapper.getNoSyncList(startTime, endTime);
+
+        noSyncList.forEach(insAreaCompany -> {
+            insAreaCompany.setInsideOrderStatus(Integer.parseInt(insAreaCompany.getOrderstatus()));
+            if(insAreaCompany.getPayDate() == null || "".equals(insAreaCompany.getPayDate())){
+                insAreaCompany.setInsidePayTime(startTime);
+            }else{
+                insAreaCompany.setInsidePayTime(insAreaCompany.getPayDate().format(formatter));
+            }
+            insAreaCompanyMapper.updateById(insAreaCompany);
+        });
+
+
+    }
+
+}

+ 15 - 0
src/main/java/com/ydtech/modules/xxl/mapper/XxlInsAreaCompanyMapper.java

@@ -0,0 +1,15 @@
+package com.ydtech.modules.xxl.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ydtech.modules.xxl.model.InsAreaCompany;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+@Mapper
+public interface XxlInsAreaCompanyMapper extends BaseMapper<InsAreaCompany> {
+
+    List<InsAreaCompany> getNoPayList(String startTime, String endTime);
+
+    List<InsAreaCompany> getNoSyncList(String startTime,String endTime);
+}

+ 374 - 0
src/main/java/com/ydtech/modules/xxl/model/InsAreaCompany.java

@@ -0,0 +1,374 @@
+package com.ydtech.modules.xxl.model;
+
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ydtech.constants.enums.dict.InsOrderStatusEnum;
+import com.ydtech.modules.ins.model.vo.QuoteRespVo;
+import com.ydtech.modules.protocol.entity.po.PtlAgreementAttribution;
+import com.ydtech.utils.idgen.IdGenerate;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+/**
+ * 报价渠道
+ *
+ * @TableName ins_area_company
+ */
+@TableName(value = "ins_area_company", autoResultMap = true)
+@Data
+@ApiModel(value = "报价渠道")
+@NoArgsConstructor
+public class InsAreaCompany implements Serializable {
+    /**
+     * 主键
+     */
+    @TableId(value = "id")
+    private String id;
+    /**
+     * 订单号
+     */
+    @TableField(value = "orderno")
+    private String orderno;
+    /**
+     * 协议id
+     */
+    @TableField(value = "agreement_id")
+    private String agreementId;
+    /**
+     * 请求类型
+     */
+    @TableField(value = "api_type")
+    private Integer apiType;
+    /**
+     * 订单状态
+     *
+     * @see com.ydtech.constants.enums.dict.InsOrderStatusEnum
+     */
+    @TableField(value = "orderstatus")
+    private String orderstatus;
+    /**
+     * 保险公司编号
+     */
+    @TableField(value = "company_id")
+    private String companyId;
+    /**
+     * 保险名称
+     */
+    @TableField(value = "inscompany")
+    private String inscompany;
+    /**
+     * 请求报文
+     */
+    @TableField(value = "reqtxt", typeHandler = FastjsonTypeHandler.class)
+    private JSONObject reqtxt;
+    /**
+     * 响应报文
+     */
+    @TableField(value = "reptxt", typeHandler = FastjsonTypeHandler.class)
+    private JSONObject reptxt;
+
+    /**
+     * 交强投保单号
+     */
+    @TableField(value = "jqapplyno")
+    private String jqapplyno;
+
+    /**
+     * 交强保单号
+     */
+    @TableField(value = "jqpolicyno")
+    private String jqpolicyno;
+
+    /**
+     * 商业投保单号
+     */
+    @TableField(value = "syapplyno")
+    private String syapplyno;
+
+    /**
+     * 商业保单号
+     */
+    @TableField(value = "sypolicyno")
+    private String sypolicyno;
+
+    /**
+     * 交叉销售保单信息
+     */
+    @TableField(value = "cross_insurance", typeHandler = FastjsonTypeHandler.class)
+    private JSONArray crossInsurance;
+
+    /**
+     * 驾意险
+     */
+    @TableField(value = "accident_info", typeHandler = FastjsonTypeHandler.class)
+    private JSONArray accidentInfo;
+
+    /**
+     * 交强险商业险
+     */
+    @TableField(value = "riskinfo", typeHandler = FastjsonTypeHandler.class)
+    private JSONArray riskinfo;
+
+    /**
+     * 商业险信息
+     */
+    @TableField(value = "kindinfo", typeHandler = FastjsonTypeHandler.class)
+    private JSONArray kindinfo;
+
+    /**
+     * 交强险费用
+     */
+    @TableField(value = "jqpremium")
+    private BigDecimal jqpremium;
+
+    /**
+     * 商业险费用
+     */
+    @TableField(value = "sypremium")
+    private BigDecimal sypremium;
+
+    /**
+     * 驾意险
+     */
+    @TableField(value = "jypremium")
+    private BigDecimal jypremium;
+
+    /**
+     * 车船税费用
+     */
+    @TableField(value = "taxamount")
+    private BigDecimal taxamount;
+
+    /**
+     * 总保费
+     */
+    @TableField(value = "sumpremium")
+    private BigDecimal sumpremium;
+
+    /**
+     * 交强优惠比例
+     */
+    @TableField(value = "jqdiscountrate")
+    private Double jqdiscountrate;
+
+    /**
+     * 商业优惠比例
+     */
+    @TableField(value = "sydiscountrate")
+    private Double sydiscountrate;
+
+    /**
+     * 交强手续费比例
+     */
+    @TableField(value = "feerate")
+    private Double feerate;
+
+    /**
+     * 商业手续费比例
+     */
+    @TableField(value = "disrate")
+    private Double disrate;
+
+    /**
+     * 核保人
+     */
+    @TableField(value = "auditid")
+    private String auditid;
+    /**
+     * 核保人姓名
+     */
+    @TableField(value = "auditname")
+    private String auditname;
+    /**
+     * 核保时间
+     */
+    @TableField(value = "audittime")
+    private LocalDateTime audittime;
+    /**
+     * 核保意见
+     */
+    @TableField(value = "auditopinion")
+    private String auditopinion;
+    /**
+     * 交强特别约定
+     */
+    @TableField(value = "jqappoint")
+    private String jqappoint;
+    /**
+     * 商业特别约定
+     */
+    @TableField(value = "syappoint")
+    private String syappoint;
+    /**
+     * 创建时间
+     */
+    @TableField(value = "createtime")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime createtime;
+    /**
+     * 支付链接
+     */
+    @TableField(value = "payment_link")
+    private String paymentLink;
+
+    /**
+     * 支付时间
+     */
+    @TableField(value = "pay_date")
+    private LocalDateTime payDate;
+
+    /**
+     * 保险公司订单号
+     * lig 新增字段  2023-02-24
+     */
+    @TableField(value = "ins_order_no")
+    private String insOrderNo;
+    /**
+     *
+     */
+    @TableField(value = "attribution_id")
+    private String attributionId;
+
+    /**
+     * 欠税
+     */
+    @TableField(value = "tax_arrears", typeHandler = FastjsonTypeHandler.class)
+    private JSONArray taxArrears;
+
+    /**
+     * 交强险起期
+     * lig 新增字段  2023-09-14
+     */
+    @TableField(value = "jq_start_date")
+    private String jqStartDate;
+    /**
+     * 交强险止期
+     * lig 新增字段  2023-09-14
+     */
+    @TableField(value = "jq_end_date")
+    private String jqEndDate;
+    /**
+     * 商业险起期
+     * lig 新增字段  2023-09-14
+     */
+    @TableField(value = "sy_start_date")
+    private String syStartDate;
+    /**
+     * 商业险止期
+     * lig 新增字段  2023-09-14
+     */
+    @TableField(value = "sy_end_date")
+    private String syEndDate;
+
+    /**
+     * 出险 字符串 信息
+     * lig 新增字段  2023-10-10
+     */
+    @TableField(value = "accident_str_info")
+    private String accidentStrInfo;
+
+    /**
+     * 评分
+     * lig 新增字段  2023-10-10
+     */
+    @TableField(value = "score")
+    private String score;
+
+    /**
+     * 交强类型评分
+     */
+    @TableField(value = "jq_score")
+    private String jqScore;
+
+    /**
+     * 商业类型评分
+     */
+    @TableField(value = "sy_score")
+    private String syScore;
+
+    /**
+     * 总赔付率
+     */
+    @TableField(value = "loss_ration")
+    private double lossRation;
+    /**
+     * 交强赔付率
+     */
+    @TableField(value = "jq_loss_ration")
+    private double jqLossRation;
+
+    /**
+     * 商业赔付率
+     */
+    @TableField(value = "sy_loss_ration")
+    private double syLossRation;
+
+    @TableField(value = "inside_order_status")
+    private Integer insideOrderStatus;
+
+    @TableField(value = "inside_pay_time")
+    private String insidePayTime;
+
+    /**
+     * 业务员
+     */
+    @TableField(exist = false)
+    private String userName;
+
+    /**
+     * 业务员ID
+     */
+    @TableField(exist = false)
+    private String userId;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+
+    public InsAreaCompany(QuoteRespVo quoteRespVo, PtlAgreementAttribution ptlAgreementAttribution) {
+        this.id = IdGenerate.nextId();
+        this.orderno = quoteRespVo.getOrderno();
+        this.agreementId = ptlAgreementAttribution.getId();
+        this.apiType = ptlAgreementAttribution.getApiType();
+        this.companyId = ptlAgreementAttribution.getInsCompanyId();
+        this.inscompany = ptlAgreementAttribution.getInsCompanyName();
+        this.jqpremium = BigDecimal.valueOf(quoteRespVo.getJqPremium());
+        this.sypremium = BigDecimal.valueOf(quoteRespVo.getSyPremium());
+        this.jypremium = BigDecimal.valueOf(quoteRespVo.getJyPremium());
+        this.taxamount = BigDecimal.valueOf(quoteRespVo.getTaxAmount());
+        this.sumpremium = BigDecimal.valueOf(quoteRespVo.getSumPermium());
+        this.accidentInfo = JSON.parseArray(JSON.toJSONString(quoteRespVo.getAccidentInfo()));
+        this.riskinfo = JSON.parseArray(JSON.toJSONString(quoteRespVo.getRiskList()));
+        this.kindinfo = JSON.parseArray(JSON.toJSONString(quoteRespVo.getKindList()));
+        this.orderstatus = InsOrderStatusEnum.QUOTE_ING.getCode();
+
+        this.jqStartDate = quoteRespVo.getStartDateJq();
+        this.jqEndDate = quoteRespVo.getEndDateJq();
+
+        this.syStartDate = quoteRespVo.getStartDateSy();
+        this.syEndDate = quoteRespVo.getEndDateSy();
+
+        this.accidentStrInfo = quoteRespVo.getAccidentInfoStr();
+        // 评分
+        this.score = quoteRespVo.getILogPreUdwMess();
+        this.jqScore = quoteRespVo.getJqScore();
+        this.syScore = quoteRespVo.getSyScore();
+        // 赔付率
+        this.lossRation = quoteRespVo.getLossRation();
+        this.jqLossRation = quoteRespVo.getJqLossRation();
+        this.syLossRation = quoteRespVo.getSyLossRation();
+
+    }
+
+}

+ 15 - 0
src/main/java/com/ydtech/modules/xxl/model/QueryStatusResult.java

@@ -0,0 +1,15 @@
+package com.ydtech.modules.xxl.model;
+
+import lombok.Data;
+
+@Data
+public class QueryStatusResult {
+    /**
+     * 查询状态 是否支付
+     */
+    private Boolean status;
+    /**
+     * 支付时间
+     */
+    private String payTime;
+}

+ 10 - 0
src/main/java/com/ydtech/modules/xxl/service/BaseQueryStatusService.java

@@ -0,0 +1,10 @@
+package com.ydtech.modules.xxl.service;
+
+import com.ydtech.modules.xxl.model.InsAreaCompany;
+import com.ydtech.modules.xxl.model.QueryStatusResult;
+import org.springframework.stereotype.Service;
+
+@Service
+public interface BaseQueryStatusService {
+    QueryStatusResult queryStatus(InsAreaCompany insAreaCompany);
+}

+ 65 - 0
src/main/java/com/ydtech/modules/xxl/service/impl/DaJiaQueryStatusService.java

@@ -0,0 +1,65 @@
+package com.ydtech.modules.xxl.service.impl;
+
+import com.ydtech.modules.order.components.ConfigureParametersComponents;
+import com.ydtech.modules.order.components.dajia.DaJiaRequestApiComponents;
+import com.ydtech.modules.order.entity.api.dajia.DaJiaConfigureParameters;
+import com.ydtech.modules.order.entity.api.dajia.request.ODR2010Request;
+import com.ydtech.modules.order.entity.api.dajia.response.ODR2010Response;
+import com.ydtech.modules.protocol.entity.po.PtlAgreementAttribution;
+import com.ydtech.modules.protocol.service.PtlAgreementAttributionService;
+import com.ydtech.modules.xxl.model.InsAreaCompany;
+import com.ydtech.modules.xxl.model.QueryStatusResult;
+import com.ydtech.modules.xxl.service.BaseQueryStatusService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.stereotype.Service;
+
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+@Service
+@RequiredArgsConstructor
+public class DaJiaQueryStatusService implements BaseQueryStatusService {
+
+    private final ConfigureParametersComponents configureParametersComponents;
+    private final DaJiaRequestApiComponents daJiaRequestApiComponents;
+    private final PtlAgreementAttributionService ptlAgreementAttributionService;
+
+    /**
+     *
+     * @param insAreaCompany 业务订单
+     * @return
+     */
+    @Override
+    public QueryStatusResult queryStatus(InsAreaCompany insAreaCompany) {
+        QueryStatusResult queryStatusResult = new QueryStatusResult();
+        queryStatusResult.setStatus(false);
+        //查询大家协议
+        DaJiaConfigureParameters daJiaConfigureParameters = new DaJiaConfigureParameters();
+        PtlAgreementAttribution ptlAgreementAttribution = ptlAgreementAttributionService.getById(insAreaCompany.getAgreementId());
+        if(ptlAgreementAttribution == null) {
+            return queryStatusResult;
+        }
+        configureParametersComponents.toEntity(daJiaConfigureParameters, ptlAgreementAttribution);
+        //构造请求函数
+        ODR2010Request odr2010Request = new ODR2010Request(insAreaCompany.getInsOrderNo(), daJiaConfigureParameters);
+        try {
+            ODR2010Response odr2010Response = daJiaRequestApiComponents.verifyPayment(odr2010Request);
+            if ("0000".equals(odr2010Response.getStatus())) {
+                List<ODR2010Response.ResultDTO> result = odr2010Response.getResult();
+                // 2007 支付完成状态
+                List<ODR2010Response.ResultDTO> collect = result.stream().filter(r -> "2007".equals(r.getNotifyType())).collect(Collectors.toList());
+                if (!collect.isEmpty()) {
+                    //更新 ins_area_company
+                    queryStatusResult.setStatus(true);
+                    queryStatusResult.setPayTime(collect.get(0).getOprTime());
+                }
+            }
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+        return queryStatusResult;
+    }
+}

+ 84 - 0
src/main/java/com/ydtech/modules/xxl/service/impl/GuoRenQueryStatusService.java

@@ -0,0 +1,84 @@
+package com.ydtech.modules.xxl.service.impl;
+
+import cn.hutool.core.collection.CollUtil;
+import com.ydtech.constants.enums.dict.InsOrderStatusEnum;
+import com.ydtech.core.page.HttpResult;
+import com.ydtech.modules.ins.model.guoren.InsOrderStatusResp;
+import com.ydtech.modules.order.components.ConfigureParametersComponents;
+import com.ydtech.modules.order.components.dajia.DaJiaRequestApiComponents;
+import com.ydtech.modules.order.components.gouren.GuorenRequestApiComponent;
+import com.ydtech.modules.order.entity.api.dajia.DaJiaConfigureParameters;
+import com.ydtech.modules.order.entity.api.dajia.request.ODR2010Request;
+import com.ydtech.modules.order.entity.api.dajia.response.ODR2010Response;
+import com.ydtech.modules.order.entity.api.guoren.constants.PlatformInterfaceCode;
+import com.ydtech.modules.order.entity.api.guoren.request.ApplicationDetailsRequest;
+import com.ydtech.modules.order.entity.api.guoren.response.SignatureResponse;
+import com.ydtech.modules.protocol.service.PtlAgreementAttributionService;
+import com.ydtech.modules.xxl.model.InsAreaCompany;
+import com.ydtech.modules.xxl.model.QueryStatusResult;
+import com.ydtech.modules.xxl.service.BaseQueryStatusService;
+import com.ydtech.utils.StringUtils;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Component;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.List;
+import java.util.stream.Collectors;
+
+@Service
+@RequiredArgsConstructor
+public class GuoRenQueryStatusService implements BaseQueryStatusService {
+
+    private final ConfigureParametersComponents configureParametersComponents;
+    private final GuorenRequestApiComponent guorenRequestApiComponent;
+    private final PtlAgreementAttributionService ptlAgreementAttributionService;
+
+    public InsOrderStatusResp insOrderStatus(InsAreaCompany iac) {
+        ApplicationDetailsRequest applicationDetailsRequest = new ApplicationDetailsRequest();
+        // 交强投保单号
+        applicationDetailsRequest.addProposalNos(iac.getJqapplyno());
+        // 商业投保单号
+        applicationDetailsRequest.addProposalNos(iac.getSyapplyno());
+        //投保单状态查询
+        return guorenRequestApiComponent.request(applicationDetailsRequest, PlatformInterfaceCode.API_IIRBT00010, InsOrderStatusResp.class);
+    }
+
+    /**
+     *
+     * @param insAreaCompany 业务订单
+     * @return
+     */
+    @Override
+    public QueryStatusResult queryStatus(InsAreaCompany insAreaCompany) {
+        QueryStatusResult queryStatusResult = new QueryStatusResult();
+        queryStatusResult.setStatus(false);
+        // 获取协议配置信息
+        InsOrderStatusResp iosr = insOrderStatus(insAreaCompany);
+
+        if (null != iosr && CollUtil.isNotEmpty(iosr.getData())) {
+            InsOrderStatusResp.DataDTO jqDataDTO =
+                    iosr.getData().stream().filter(a -> a.getProposalNo().equals(insAreaCompany.getJqapplyno())).findFirst().orElse(null);
+            InsOrderStatusResp.DataDTO syDataDTO =
+                    iosr.getData().stream().filter(b -> b.getProposalNo().equals(insAreaCompany.getSyapplyno())).findFirst().orElse(null);
+
+            boolean updateFlag = false;
+            if (null != jqDataDTO && StringUtils.isNotEmpty(jqDataDTO.getPolicyNo())) {
+                insAreaCompany.setJqpolicyno(jqDataDTO.getPolicyNo());
+                updateFlag = true;
+            }
+            if (null != syDataDTO && StringUtils.isNotEmpty(syDataDTO.getPolicyNo())) {
+                insAreaCompany.setSypolicyno(syDataDTO.getPolicyNo());
+                updateFlag = true;
+            }
+
+            // 支付
+            if (updateFlag) {
+                queryStatusResult.setStatus(true);
+                queryStatusResult.setPayTime(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+            }
+        }
+        return queryStatusResult;
+    }
+}

+ 159 - 0
src/main/java/com/ydtech/modules/xxl/service/impl/HuaTaiQueryStatusService.java

@@ -0,0 +1,159 @@
+package com.ydtech.modules.xxl.service.impl;
+
+import cn.hutool.core.collection.CollUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.ydtech.constants.enums.dict.InsOrderStatusEnum;
+import com.ydtech.core.page.HttpResult;
+import com.ydtech.modules.ins.model.InsOrder;
+import com.ydtech.modules.ins.model.guoren.InsOrderStatusResp;
+import com.ydtech.modules.order.components.ConfigureParametersComponents;
+import com.ydtech.modules.order.components.gouren.GuorenRequestApiComponent;
+import com.ydtech.modules.order.components.huatai.HuaTaiRequestApiComponents;
+import com.ydtech.modules.order.entity.api.guoren.constants.PlatformInterfaceCode;
+import com.ydtech.modules.order.entity.api.guoren.request.ApplicationDetailsRequest;
+import com.ydtech.modules.order.entity.api.huatai.HuaTaiBaseRequestHead;
+import com.ydtech.modules.order.entity.api.huatai.constants.HuaTaiSubmitCommon;
+import com.ydtech.modules.order.entity.api.huatai.request.HuaTaiSubmitStatusQueryRequest;
+import com.ydtech.modules.order.entity.api.huatai.response.HuaTaiSubmitStatusQueryResponse;
+import com.ydtech.modules.order.entity.config.HuaTaiConfigureParameters;
+import com.ydtech.modules.protocol.entity.po.PtlAgreementAttribution;
+import com.ydtech.modules.protocol.service.PtlAgreementAttributionService;
+import com.ydtech.modules.xxl.model.InsAreaCompany;
+import com.ydtech.modules.xxl.model.QueryStatusResult;
+import com.ydtech.modules.xxl.service.BaseQueryStatusService;
+import lombok.RequiredArgsConstructor;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Component;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+
+@Service
+@RequiredArgsConstructor
+public class HuaTaiQueryStatusService implements BaseQueryStatusService {
+
+    private final ConfigureParametersComponents configureParametersComponents;
+    private final HuaTaiRequestApiComponents huaTaiRequestApiComponents;
+    private final PtlAgreementAttributionService ptlAgreementAttributionService;
+
+    public HuaTaiSubmitStatusQueryResponse submitStatus(InsAreaCompany insAreaCompany,
+                                                         HuaTaiConfigureParameters huaTaiConfigureParameters,
+                                                         String operateType) {
+        com.ydtech.modules.order.entity.InsAreaCompany insAreaCompanyParam = JSONObject.parseObject(
+                JSONObject.toJSONString(insAreaCompany),
+                com.ydtech.modules.order.entity.InsAreaCompany.class);
+
+        HuaTaiSubmitStatusQueryRequest huaTaiSubmitStatusQueryRequest =
+                new HuaTaiSubmitStatusQueryRequest(insAreaCompanyParam,
+                        huaTaiConfigureParameters, operateType);
+        huaTaiSubmitStatusQueryRequest.setHead(new HuaTaiBaseRequestHead(huaTaiConfigureParameters));
+        HuaTaiSubmitStatusQueryResponse submitStatusQueryResponse =
+                huaTaiRequestApiComponents.submitStatus(huaTaiSubmitStatusQueryRequest,
+                        HuaTaiSubmitStatusQueryResponse.class);
+        return submitStatusQueryResponse;
+    }
+
+    private HuaTaiSubmitCommon getSubmitStatus(InsAreaCompany insAreaCompany,
+                                               HuaTaiSubmitStatusQueryResponse submitStatusQueryResponse) {
+        HuaTaiSubmitCommon huaTaiSubmitCommon = new HuaTaiSubmitCommon();
+        boolean haveJQFlag = false;
+        boolean haveSYFlag = false;
+        String jqStatus = "";
+        String syStatus = "";
+        StringBuffer jqNotion = new StringBuffer();
+        StringBuffer syNotion = new StringBuffer();
+        for (HuaTaiSubmitStatusQueryResponse.AppliResult appliResult : submitStatusQueryResponse.getAppliResult()) {
+            if (org.apache.commons.lang3.StringUtils.isNotEmpty(insAreaCompany.getJqapplyno())) {
+                haveJQFlag = true;
+                if (insAreaCompany.getJqapplyno().equals(appliResult.getContractNo())) {
+                    jqStatus = appliResult.getUnderWriteFlag();
+                    for (HuaTaiSubmitStatusQueryResponse.Notion notion : appliResult.getNotion()) {
+                        jqNotion.append(notion.getUWNotion() + ",");
+                    }
+                }
+            }
+
+            if (org.apache.commons.lang3.StringUtils.isNotEmpty(insAreaCompany.getSyapplyno()) && insAreaCompany.getSyapplyno().equals(appliResult.getContractNo())) {
+                haveSYFlag = true;
+                syStatus = appliResult.getUnderWriteFlag();
+                for (HuaTaiSubmitStatusQueryResponse.Notion notion : appliResult.getNotion()) {
+                    syNotion.append(notion.getUWNotion() + ",");
+                }
+            }
+        }
+        /**
+         * 0	初始状态默认值
+         * 1	已通过核保已实收
+         * 2	待修改
+         * 4	主动撤回(出单员撤回)
+         * 6	下发修改(核保员下发)
+         * 8	已通过核保未实收
+         * 9	待核保
+         */
+        String totalUnderWriteInd = "";
+        //同保交商
+        if (haveJQFlag && haveSYFlag) {
+            //已通过核保未实收
+            if ("8".contains(jqStatus) && "8".contains(syStatus)) {
+                totalUnderWriteInd = "8";
+            } else if ("1".contains(jqStatus) || "1".contains(syStatus)) {
+                totalUnderWriteInd = "1";
+            } else if ("9".contains(jqStatus) || "9".contains(syStatus)) {
+                totalUnderWriteInd = "9";
+            } else {
+                totalUnderWriteInd = "6";
+            }
+        } else {//单保交强或单保商业
+            String status = jqStatus;
+            if (StringUtils.isNotEmpty(syStatus)) {
+                status = syStatus;
+            }
+            if ("8".contains(status)) {
+                totalUnderWriteInd = "8";
+            } else if ("1".contains(status)) {
+                totalUnderWriteInd = "1";
+            } else if ("9".contains(status)) {
+                totalUnderWriteInd = "9";
+            } else {
+                totalUnderWriteInd = "6";
+            }
+        }
+        huaTaiSubmitCommon.setTotalUnderWriteInd(totalUnderWriteInd);
+        huaTaiSubmitCommon.setNotion(jqNotion.toString() + syNotion.toString());
+        return huaTaiSubmitCommon;
+    }
+
+    /**
+     *
+     * @param insAreaCompany 业务订单
+     * @return
+     */
+    @Override
+    public QueryStatusResult queryStatus(InsAreaCompany insAreaCompany) {
+        QueryStatusResult queryStatusResult = new QueryStatusResult();
+        queryStatusResult.setStatus(false);
+        // 获取协议配置信息
+        // 1. 协议id获取配置实体
+        PtlAgreementAttribution ptlAgreementAttribution = ptlAgreementAttributionService.getById(insAreaCompany.getAgreementId());
+        if(ptlAgreementAttribution == null) {
+            return queryStatusResult;
+        }
+        HuaTaiConfigureParameters huaTaiConfigureParameters =
+                configureParametersComponents.toEntity(HuaTaiConfigureParameters.class,
+                        ptlAgreementAttribution);
+
+        // 2. 组装请求体
+        HuaTaiSubmitStatusQueryResponse submitStatusQueryResponse = submitStatus(insAreaCompany,
+                huaTaiConfigureParameters, "2");
+
+        HuaTaiSubmitCommon huaTaiSubmitCommon = getSubmitStatus(insAreaCompany, submitStatusQueryResponse);
+
+        // 3. 通过返回核保状态修改状态
+        if ("1".equals(huaTaiSubmitCommon.getTotalUnderWriteInd())) {//已通过核保已实收
+            queryStatusResult.setStatus(true);
+            queryStatusResult.setPayTime(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+        }
+        return queryStatusResult;
+    }
+}

+ 58 - 0
src/main/java/com/ydtech/modules/xxl/service/impl/ReptileQueryStatusService.java

@@ -0,0 +1,58 @@
+package com.ydtech.modules.xxl.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.ydtech.constants.enums.dict.InsOrderStatusEnum;
+import com.ydtech.core.page.HttpResult;
+import com.ydtech.modules.order.components.ConfigureParametersComponents;
+import com.ydtech.modules.order.components.InsCrawlerOrderComponents;
+import com.ydtech.modules.order.components.zijin.ZijinRequestApiComponents;
+import com.ydtech.modules.order.entity.api.zijin.constants.enums.OrderStatusEnum;
+import com.ydtech.modules.order.entity.api.zijin.request.OrderNoRequest;
+import com.ydtech.modules.order.entity.api.zijin.response.QueryOrderDetailResponse;
+import com.ydtech.modules.order.entity.crawler.constants.CrawlerVerifyPaymentConstants;
+import com.ydtech.modules.order.entity.crawler.request.CrawlerBaseRequest;
+import com.ydtech.modules.order.entity.crawler.response.CrawlerVerifyPaymentResponse;
+import com.ydtech.modules.protocol.entity.constants.PtlCrawlerApiType;
+import com.ydtech.modules.protocol.service.PtlCrawlerApiService;
+import com.ydtech.modules.xxl.model.InsAreaCompany;
+import com.ydtech.modules.xxl.model.QueryStatusResult;
+import com.ydtech.modules.xxl.service.BaseQueryStatusService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.http.HttpHeaders;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.List;
+
+@Service
+@RequiredArgsConstructor
+public class ReptileQueryStatusService implements BaseQueryStatusService {
+
+    private final ConfigureParametersComponents configureParametersComponents;
+    private final PtlCrawlerApiService ptlCrawlerApiService;
+    private final InsCrawlerOrderComponents insCrawlerOrderComponents;
+    /**
+     *
+     * @param insAreaCompany 业务订单
+     * @return
+     */
+    @Override
+    public QueryStatusResult queryStatus(InsAreaCompany insAreaCompany) {
+        QueryStatusResult queryStatusResult = new QueryStatusResult();
+        queryStatusResult.setStatus(false);
+        // 请求地址
+        String apiUrl = ptlCrawlerApiService.getApiUrl(insAreaCompany.getAgreementId(), PtlCrawlerApiType.API_5);
+        //组装参数
+        CrawlerBaseRequest crawlerBaseRequest = new CrawlerBaseRequest(insAreaCompany.getInsOrderNo());
+        CrawlerVerifyPaymentResponse crawlerAuditResponse = insCrawlerOrderComponents.request(apiUrl, insAreaCompany.getCompanyId(),
+                PtlCrawlerApiType.API_5.getDesc(), crawlerBaseRequest, CrawlerVerifyPaymentResponse.class);
+
+        // 0未缴费,1已缴费
+        if (crawlerAuditResponse.getState() == CrawlerVerifyPaymentConstants.PAID) {
+            queryStatusResult.setStatus(true);
+            queryStatusResult.setPayTime(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+        }
+        return queryStatusResult;
+    }
+}

+ 103 - 0
src/main/java/com/ydtech/modules/xxl/service/impl/YongChengQueryStatusService.java

@@ -0,0 +1,103 @@
+package com.ydtech.modules.xxl.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.ydtech.constants.enums.dict.InsOrderStatusEnum;
+import com.ydtech.core.page.HttpResult;
+import com.ydtech.exception.SystemException;
+import com.ydtech.modules.ins.model.yc.AuthorityDataXml;
+import com.ydtech.modules.ins.model.yc.CallBackRequest;
+import com.ydtech.modules.ins.model.yc.YcConfigureParameters;
+import com.ydtech.modules.ins.model.yc.callbackAnOrder.CallbackAnOrder;
+import com.ydtech.modules.order.components.ConfigureParametersComponents;
+import com.ydtech.modules.order.components.dajia.DaJiaRequestApiComponents;
+import com.ydtech.modules.order.components.yongcheng.YongchengRequestApiComponents;
+import com.ydtech.modules.order.entity.api.yongcheng.constants.MessageStatusCode;
+import com.ydtech.modules.order.entity.api.yongcheng.request.AccidentUnderwritingRequest;
+import com.ydtech.modules.order.entity.api.yongcheng.response.AccidentUnderwritingResponse;
+import com.ydtech.modules.order.entity.dto.DrivingInsuranceDto;
+import com.ydtech.modules.protocol.entity.po.PtlAgreementAttribution;
+import com.ydtech.modules.protocol.service.PtlAgreementAttributionService;
+import com.ydtech.modules.xxl.model.InsAreaCompany;
+import com.ydtech.modules.xxl.model.QueryStatusResult;
+import com.ydtech.modules.xxl.service.BaseQueryStatusService;
+import com.ydtech.utils.StringUtils;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+
+@Service
+@RequiredArgsConstructor
+public class YongChengQueryStatusService implements BaseQueryStatusService {
+
+    private final ConfigureParametersComponents configureParametersComponents;
+    private final YongchengRequestApiComponents yongchengRequestApiComponents;
+    private final PtlAgreementAttributionService ptlAgreementAttributionService;
+    public void submitPolicy(BigDecimal jyPremium, YcConfigureParameters ycConfigureParameters, String insOrderNo) throws JsonProcessingException {
+        if (jyPremium.compareTo(new BigDecimal(0)) <= 0) {
+            return;
+        }
+
+        AccidentUnderwritingRequest accidentUnderwritingRequest =
+                new AccidentUnderwritingRequest(ycConfigureParameters.getPassword(), ycConfigureParameters.getUserName(), insOrderNo);
+
+        AccidentUnderwritingResponse accidentUnderwritingResponse = yongchengRequestApiComponents.submitPolicy(accidentUnderwritingRequest);
+        AccidentUnderwritingResponse.HeadDTO.ResponseCompleteMessageStatus responseCompleteMessageStatus
+                = accidentUnderwritingResponse.getHead().getResponseCompleteMessageStatus();
+
+        if (!MessageStatusCode.E0000.getCode().equals(responseCompleteMessageStatus.getMessageStatusCode())) {
+            throw new SystemException(responseCompleteMessageStatus.getMessageStatusDescription());
+        }
+    }
+
+    public CallbackAnOrder buildCallbackAnOrderParam(InsAreaCompany iac, AuthorityDataXml authorityDataXml, String type) {
+
+        CallbackAnOrder m = new CallbackAnOrder();
+
+        m.setOrdercode(iac.getInsOrderNo());
+
+        m.setType(type);
+
+        m.setCreator(authorityDataXml.getUserName());
+
+        return m;
+    }
+
+    @Override
+    public QueryStatusResult queryStatus(InsAreaCompany insAreaCompany) {
+        QueryStatusResult queryStatusResult = new QueryStatusResult();
+        queryStatusResult.setStatus(false);
+        // 获取协议配置信息
+        YcConfigureParameters ycConfigureParameters = new YcConfigureParameters();
+        PtlAgreementAttribution ptlAgreementAttribution = ptlAgreementAttributionService.getById(insAreaCompany.getAgreementId());
+        if (ptlAgreementAttribution == null) {
+            return queryStatusResult;
+        }
+        configureParametersComponents.toEntity(ycConfigureParameters, ptlAgreementAttribution);
+
+        //0 支付回调 1核保回调 5直接返回字符串信息
+        String type = "5";
+        //组装参数
+        CallbackAnOrder o = buildCallbackAnOrderParam(insAreaCompany, ycConfigureParameters.gainAuthorityDataXml(), type);
+        //接口请求
+        try {
+//            submitPolicy(insAreaCompany.getJypremium(), ycConfigureParameters, insAreaCompany.getInsOrderNo());
+            String cleanStr = yongchengRequestApiComponents.payCallback(o);
+            CallBackRequest param = CallBackRequest.buildCallBackParam(cleanStr);
+            //成功
+            if (param.getResult().equals("0")) {
+                queryStatusResult.setStatus(true);
+                if (StringUtils.isNotEmpty(param.getPay_date())) {
+                    queryStatusResult.setPayTime(param.getPay_date());
+                }
+            }
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+        return queryStatusResult;
+    }
+}

+ 74 - 0
src/main/java/com/ydtech/modules/xxl/service/impl/ZhongMeiQueryStatusService.java

@@ -0,0 +1,74 @@
+package com.ydtech.modules.xxl.service.impl;
+
+import com.ydtech.constants.enums.dict.InsOrderStatusEnum;
+import com.ydtech.core.page.HttpResult;
+import com.ydtech.modules.order.components.ConfigureParametersComponents;
+import com.ydtech.modules.order.components.ZhongmeiRequestApiComponents;
+import com.ydtech.modules.order.components.dajia.DaJiaRequestApiComponents;
+import com.ydtech.modules.order.entity.api.dajia.DaJiaConfigureParameters;
+import com.ydtech.modules.order.entity.api.dajia.request.ODR2010Request;
+import com.ydtech.modules.order.entity.api.dajia.response.ODR2010Response;
+import com.ydtech.modules.order.entity.api.zhongmei.BaseRequestHead;
+import com.ydtech.modules.order.entity.api.zhongmei.constants.enums.PaymentStatusEnum;
+import com.ydtech.modules.order.entity.api.zhongmei.request.OrderStatusRequest;
+import com.ydtech.modules.order.entity.api.zhongmei.response.OrderStatusResponse;
+import com.ydtech.modules.order.entity.config.ZmConfigureParameters;
+import com.ydtech.modules.protocol.entity.po.PtlAgreementAttribution;
+import com.ydtech.modules.protocol.service.PtlAgreementAttributionService;
+import com.ydtech.modules.xxl.model.InsAreaCompany;
+import com.ydtech.modules.xxl.model.QueryStatusResult;
+import com.ydtech.modules.xxl.service.BaseQueryStatusService;
+import lombok.RequiredArgsConstructor;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Component;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.List;
+import java.util.stream.Collectors;
+
+@Service
+@RequiredArgsConstructor
+public class ZhongMeiQueryStatusService implements BaseQueryStatusService {
+
+    private final ConfigureParametersComponents configureParametersComponents;
+    private final ZhongmeiRequestApiComponents zhongmeiRequestApiComponents;
+    private final PtlAgreementAttributionService ptlAgreementAttributionService;
+    /**
+     *
+     * @param insAreaCompany 业务订单
+     * @return
+     */
+    @Override
+    public QueryStatusResult queryStatus(InsAreaCompany insAreaCompany) {
+        QueryStatusResult queryStatusResult = new QueryStatusResult();
+        queryStatusResult.setStatus(false);
+        // 1. 协议id获取配置实体
+        PtlAgreementAttribution ptlAgreementAttribution = ptlAgreementAttributionService.getById(insAreaCompany.getAgreementId());
+        if(ptlAgreementAttribution == null){
+            return queryStatusResult;
+        }
+        ZmConfigureParameters zmConfigureParameters = configureParametersComponents.toEntity(ZmConfigureParameters.class,
+                ptlAgreementAttribution);
+
+        // 2. 组装请求体
+        OrderStatusRequest orderStatusRequest = new OrderStatusRequest();
+        orderStatusRequest.setBusinessNo(insAreaCompany.getId());
+        orderStatusRequest.setHead(new BaseRequestHead(zmConfigureParameters));
+        OrderStatusResponse orderStatusResponse = zhongmeiRequestApiComponents.orderStatus(orderStatusRequest, OrderStatusResponse.class);
+        String status = orderStatusResponse.getStatus();
+
+        // 3. 承保成功修改状态
+        if (status.equals(String.valueOf(PaymentStatusEnum.P_2.getCode()))) {
+            insAreaCompany.setJqpolicyno(orderStatusResponse.getSubContractNoJ());
+            insAreaCompany.setSypolicyno(orderStatusResponse.getSubContractNoS());
+            String payDate = orderStatusResponse.getPayDate();
+            if (StringUtils.isNotEmpty(payDate)) {
+                queryStatusResult.setPayTime(payDate);
+            }
+            queryStatusResult.setStatus(true);
+        }
+        return queryStatusResult;
+    }
+}

+ 69 - 0
src/main/java/com/ydtech/modules/xxl/service/impl/ZijinQueryStatusService.java

@@ -0,0 +1,69 @@
+package com.ydtech.modules.xxl.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.ydtech.constants.enums.dict.InsOrderStatusEnum;
+import com.ydtech.core.page.HttpResult;
+import com.ydtech.modules.order.components.ConfigureParametersComponents;
+import com.ydtech.modules.order.components.ZhongmeiRequestApiComponents;
+import com.ydtech.modules.order.components.zijin.ZijinRequestApiComponents;
+import com.ydtech.modules.order.entity.api.zhongmei.BaseRequestHead;
+import com.ydtech.modules.order.entity.api.zhongmei.constants.enums.PaymentStatusEnum;
+import com.ydtech.modules.order.entity.api.zhongmei.request.OrderStatusRequest;
+import com.ydtech.modules.order.entity.api.zhongmei.response.OrderStatusResponse;
+import com.ydtech.modules.order.entity.api.zijin.constants.enums.OrderStatusEnum;
+import com.ydtech.modules.order.entity.api.zijin.request.OrderNoRequest;
+import com.ydtech.modules.order.entity.api.zijin.response.QueryOrderDetailResponse;
+import com.ydtech.modules.order.entity.config.ZmConfigureParameters;
+import com.ydtech.modules.order.entity.dto.DrivingInsuranceDto;
+import com.ydtech.modules.protocol.entity.po.PtlAgreementAttribution;
+import com.ydtech.modules.protocol.service.PtlAgreementAttributionService;
+import com.ydtech.modules.xxl.model.InsAreaCompany;
+import com.ydtech.modules.xxl.model.QueryStatusResult;
+import com.ydtech.modules.xxl.service.BaseQueryStatusService;
+import com.ydtech.utils.StringUtils;
+import lombok.RequiredArgsConstructor;
+import org.springframework.http.HttpHeaders;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.List;
+
+@Service
+@RequiredArgsConstructor
+public class ZijinQueryStatusService implements BaseQueryStatusService {
+
+    private final ConfigureParametersComponents configureParametersComponents;
+    private final ZijinRequestApiComponents zijinRequestApiComponents;
+    private final PtlAgreementAttributionService ptlAgreementAttributionService;
+
+    /**
+     *
+     * @param insAreaCompany 业务订单
+     * @return
+     */
+    @Override
+    public QueryStatusResult queryStatus(InsAreaCompany insAreaCompany) {
+        QueryStatusResult queryStatusResult = new QueryStatusResult();
+        queryStatusResult.setStatus(false);
+        // 1 通过 协议id获取配置实体
+//        PtlAgreementAttribution ptlAgreementAttribution = ptlAgreementAttributionService.getById(insAreaCompany.getAgreementId());
+        HttpHeaders httpHeaders = zijinRequestApiComponents.getHttpHeaders(insAreaCompany.getAgreementId());
+
+        // 2 请求查看订单状态
+        OrderNoRequest orderNoRequest = new OrderNoRequest(insAreaCompany.getId());
+        QueryOrderDetailResponse queryOrderDetailResponse = zijinRequestApiComponents.getOrderDetail(orderNoRequest, httpHeaders);
+        QueryOrderDetailResponse.ResultObjDTO resultObj = queryOrderDetailResponse.getResultObj();
+
+        String orderStatus = resultObj.getOrderStatus();
+
+        // 3. 订单生效以后修改状态
+        if (OrderStatusEnum.O_4.getCode().equals(orderStatus)) {
+            // 3.1 非车险订单存入数据
+            String payTime = resultObj.getPayTime();
+            queryStatusResult.setPayTime(payTime);
+            queryStatusResult.setStatus(true);
+        }
+        return queryStatusResult;
+    }
+}

+ 22 - 0
src/main/resources/application-prod.yml

@@ -271,3 +271,25 @@ dajia:
 
 knife4j:
   enable: false
+
+xxl:
+  job:
+    admin:
+      # 调度中心部署跟地址 [选填]:如调度中心集群部署存在多个地址则用逗号分隔。
+      addresses: http://sxzgkj.baoxianzhanggui.com/xxl-job-admin
+      # 执行器通讯TOKEN [选填]:非空时启用 系统默认 default_token
+      accessToken: default_token
+    executor:
+      # 执行器的应用名称
+      appname: xxl-job-executor-sample
+      # 执行器注册 [选填]:优先使用该配置作为注册地址
+      address: ""
+      # 执行器IP [选填]:默认为空表示自动获取IP
+      ip: ""
+      # 执行器端口号 [选填]:小于等于0则自动获取;默认端口为9999
+      port: 0
+      # 执行器运行日志文件存储磁盘路径 [选填] :需要对该路径拥有读写权限;为空则使用默认路径;
+      logpath:
+      #logpath: /data/logs/mls/job
+      # 执行器日志文件保存天数 [选填] : 过期日志自动清理, 限制值大于等于3时生效; 否则, 如-1, 关闭自动清理功能;
+      logretentiondays: 7

+ 131 - 0
src/main/resources/mapper/modules/xxl/XxlInsAreaCompanyMapper.xml

@@ -0,0 +1,131 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ydtech.modules.xxl.mapper.XxlInsAreaCompanyMapper">
+
+    <resultMap id="BaseResultMap" type="com.ydtech.modules.xxl.model.InsAreaCompany">
+        <id property="id" column="id" jdbcType="VARCHAR"/>
+        <result property="orderno" column="orderno" jdbcType="VARCHAR"/>
+        <result property="companyId" column="company_id" jdbcType="VARCHAR"/>
+        <result property="agreementId" column="agreement_id" jdbcType="VARCHAR"/>
+        <result property="inscompany" column="inscompany" jdbcType="VARCHAR"/>
+        <result property="reqtxt" column="reqtxt" javaType="com.alibaba.fastjson.JSONObject"
+                typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler" jdbcType="VARCHAR"/>
+        <result property="reptxt" column="reptxt" javaType="com.alibaba.fastjson.JSONObject"
+                typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler" jdbcType="VARCHAR"/>
+        <result property="jqapplyno" column="jqapplyno" jdbcType="VARCHAR"/>
+        <result property="jqpolicyno" column="jqpolicyno" jdbcType="VARCHAR"/>
+        <result property="syapplyno" column="syapplyno" jdbcType="VARCHAR"/>
+        <result property="sypolicyno" column="sypolicyno" jdbcType="VARCHAR"/>
+        <result property="riskinfo" column="riskinfo" javaType="com.alibaba.fastjson.JSONArray"
+                typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler" jdbcType="VARCHAR"/>
+        <result property="kindinfo" column="kindinfo" javaType="com.alibaba.fastjson.JSONArray"
+                typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler" jdbcType="VARCHAR"/>
+        <result property="jqpremium" column="jqpremium" jdbcType="DECIMAL"/>
+        <result property="sypremium" column="sypremium" jdbcType="DECIMAL"/>
+        <result property="taxamount" column="taxamount" jdbcType="DECIMAL"/>
+        <result property="sumpremium" column="sumpremium" jdbcType="DECIMAL"/>
+        <result property="jqdiscountrate" column="jqdiscountrate" jdbcType="DOUBLE"/>
+        <result property="sydiscountrate" column="sydiscountrate" jdbcType="DOUBLE"/>
+        <result property="feerate" column="feerate" jdbcType="DOUBLE"/>
+        <result property="disrate" column="disrate" jdbcType="DOUBLE"/>
+        <result property="auditid" column="auditid" jdbcType="VARCHAR"/>
+        <result property="auditname" column="auditname" jdbcType="VARCHAR"/>
+        <result property="audittime" column="audittime" jdbcType="TIMESTAMP"/>
+        <result property="auditopinion" column="auditopinion" jdbcType="VARCHAR"/>
+        <result property="jqappoint" column="jqappoint" jdbcType="VARCHAR"/>
+        <result property="syappoint" column="syappoint" jdbcType="VARCHAR"/>
+        <result property="createtime" column="createtime" jdbcType="TIMESTAMP"/>
+        <result property="paymentLink" column="payment_link" jdbcType="VARCHAR"/>
+        <result property="attributionId" column="attribution_id" jdbcType="VARCHAR"/>
+        <result property="accidentInfo" column="accident_info" javaType="com.alibaba.fastjson.JSONArray"
+                typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler" jdbcType="VARCHAR"/>
+        <result property="taxArrears" column="tax_arrears" javaType="com.alibaba.fastjson.JSONArray"
+                typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler" jdbcType="VARCHAR"/>
+        <result property="crossInsurance" column="cross_insurance" javaType="com.alibaba.fastjson.JSONArray"
+                typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler" jdbcType="VARCHAR"/>
+        <result property="insideOrderStatus" column="inside_order_status" jdbcType="INTEGER"/>
+        <result property="insidePayTime" column="inside_pay_time" jdbcType="VARCHAR"/>
+    </resultMap>
+
+
+    <select id="getNoPayList" resultMap="BaseResultMap">
+        SELECT
+            id,
+            orderno,
+            agreement_id,
+            api_type,
+            orderstatus,
+            company_id,
+            inscompany,
+            reqtxt,
+            reptxt,
+            jqapplyno,
+            jqpolicyno,
+            syapplyno,
+            sypolicyno,
+            cross_insurance,
+            riskinfo,
+            kindinfo,
+            jqpremium,
+            sypremium,
+            jypremium,
+            sumpremium,
+            taxamount,
+            jqdiscountrate,
+            sydiscountrate,
+            feerate,
+            disrate,
+            auditid,
+            auditname,
+            audittime,
+            auditopinion,
+            jqappoint,
+            syappoint,
+            createtime,
+            pay_date,
+            payment_link,
+            ins_order_no,
+            accident_info,
+            attribution_id,
+            tax_arrears,
+            jq_start_date,
+            jq_end_date,
+            sy_start_date,
+            sy_end_date,
+            accident_str_info,
+            score,
+            jq_score,
+            sy_score,
+            loss_ration,
+            jq_loss_ration,
+            sy_loss_ration,
+            inside_order_status,
+            inside_pay_time
+        FROM
+            ins_area_company
+        WHERE
+            orderstatus = 3
+          AND
+            inside_order_status is NULL
+        AND
+            createtime between #{startTime} and #{endTime}
+    </select>
+
+    <select id="getNoSyncList" resultMap="BaseResultMap">
+        SELECT
+            id,
+            orderno,
+            company_id,
+            orderstatus,
+            pay_date,
+            inside_order_status,
+            inside_pay_time
+        FROM
+            ins_area_company
+        WHERE
+            orderstatus = 3
+          AND inside_order_status = 0
+          AND createtime BETWEEN #{startTime} AND #{endTime}
+    </select>
+
+</mapper>