wks пре 2 година
родитељ
комит
c474944401

+ 3 - 0
src/main/java/com/ydtech/constants/enums/dict/InsOrderStatusEnum.java

@@ -51,5 +51,8 @@ public enum InsOrderStatusEnum implements IBaseEnum {
         return result;
     }
 
+    public static String[] getRefuseUnderwriting() {
+        return new String[]{WAIT_AUDIT.getCode(), TO_BACK.getCode()};
+    }
 
 }

+ 18 - 0
src/main/java/com/ydtech/modules/order/dao/InsOrdersUnderwritingReasonMapper.java

@@ -0,0 +1,18 @@
+package com.ydtech.modules.order.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ydtech.modules.order.entity.po.InsOrdersUnderwritingReason;
+
+/**
+* @author Administrator
+* @description 针对表【ins_orders_underwriting_reason(核保不通过原因)】的数据库操作Mapper
+* @createDate 2024-09-04 09:36:38
+* @Entity generator.domain.InsOrdersUnderwritingReason
+*/
+public interface InsOrdersUnderwritingReasonMapper extends BaseMapper<InsOrdersUnderwritingReason> {
+
+}
+
+
+
+

+ 4 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/response/StatusDocumentsResponse.java

@@ -44,6 +44,10 @@ public class StatusDocumentsResponse extends BoHaiBaseResponse {
 
             @JsonProperty("status")
             private String status;
+
+            @JsonProperty("auditOpinion")
+            private String auditOpinion;
+
         }
     }
 }

+ 98 - 0
src/main/java/com/ydtech/modules/order/entity/po/InsOrdersUnderwritingReason.java

@@ -0,0 +1,98 @@
+package com.ydtech.modules.order.entity.po;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 核保不通过原因
+ * @TableName ins_orders_underwriting_reason
+ */
+@TableName(value ="ins_orders_underwriting_reason")
+@Data
+public class InsOrdersUnderwritingReason implements Serializable {
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 子订单号
+     */
+    @TableField(value = "sub_no_order")
+    private String subNoOrder;
+
+    /**
+     * 报价状态
+     */
+    @TableField(value = "order_status")
+    private String orderStatus;
+
+    /**
+     * 退回原因
+     */
+    @TableField(value = "reason")
+    private String reason;
+
+    /**
+     * 创建时间
+     */
+    @TableField(value = "create_time")
+    private Date createTime;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+
+    @Override
+    public boolean equals(Object that) {
+        if (this == that) {
+            return true;
+        }
+        if (that == null) {
+            return false;
+        }
+        if (getClass() != that.getClass()) {
+            return false;
+        }
+        InsOrdersUnderwritingReason other = (InsOrdersUnderwritingReason) that;
+        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))
+            && (this.getSubNoOrder() == null ? other.getSubNoOrder() == null : this.getSubNoOrder().equals(other.getSubNoOrder()))
+            && (this.getOrderStatus() == null ? other.getOrderStatus() == null : this.getOrderStatus().equals(other.getOrderStatus()))
+            && (this.getReason() == null ? other.getReason() == null : this.getReason().equals(other.getReason()))
+            && (this.getCreateTime() == null ? other.getCreateTime() == null : this.getCreateTime().equals(other.getCreateTime()));
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());
+        result = prime * result + ((getSubNoOrder() == null) ? 0 : getSubNoOrder().hashCode());
+        result = prime * result + ((getOrderStatus() == null) ? 0 : getOrderStatus().hashCode());
+        result = prime * result + ((getReason() == null) ? 0 : getReason().hashCode());
+        result = prime * result + ((getCreateTime() == null) ? 0 : getCreateTime().hashCode());
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", id=").append(id);
+        sb.append(", subNoOrder=").append(subNoOrder);
+        sb.append(", orderStatus=").append(orderStatus);
+        sb.append(", reason=").append(reason);
+        sb.append(", createTime=").append(createTime);
+        sb.append(", serialVersionUID=").append(serialVersionUID);
+        sb.append("]");
+        return sb.toString();
+    }
+}

+ 21 - 0
src/main/java/com/ydtech/modules/order/service/InsAreaCompanyService.java

@@ -12,6 +12,7 @@ import com.ydtech.modules.order.entity.dto.InsAreaCompanyQueryDto;
 import com.ydtech.modules.order.entity.vo.*;
 import com.ydtech.modules.protocols.entity.po.InsFeeOrderNew;
 import org.apache.ibatis.annotations.Param;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
 import java.util.List;
@@ -47,6 +48,17 @@ public interface InsAreaCompanyService extends IService<InsAreaCompany> {
      */
     void updateCompanyAndOrders(InsAreaCompany insAreaCompany);
 
+    /**
+     * 修改子订单 并且修改订单状态
+     *
+     * @param insAreaCompany
+     */
+    @Transactional
+    default void updateCompanyAndOrdersMessage(InsAreaCompany insAreaCompany, String messages){
+        updateCompanyAndOrders(insAreaCompany);
+        saveInsOrdersUnderwritingReason(insAreaCompany.getId(), messages, insAreaCompany.getOrderstatus());
+    }
+
 
     /**
      * 修改子订单 并且修改订单状态 最新
@@ -190,4 +202,13 @@ public interface InsAreaCompanyService extends IService<InsAreaCompany> {
      *  @Description:  通过用户id查询到导出的数据
      */
     Double getOrderPremiumByUserIds(List<String> ids);
+
+
+    /**
+     * 保存核保退回原因
+     * @param subNoOrder 子订单号
+     * @param message 退回原因
+     * @param orderStatus 订单状态
+     */
+    void saveInsOrdersUnderwritingReason(String subNoOrder, String message, String orderStatus);
 }

+ 30 - 0
src/main/java/com/ydtech/modules/order/service/InsOrdersUnderwritingReasonService.java

@@ -0,0 +1,30 @@
+package com.ydtech.modules.order.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.modules.order.entity.po.InsOrdersUnderwritingReason;
+
+/**
+* @author Administrator
+* @description 针对表【ins_orders_underwriting_reason(核保不通过原因)】的数据库操作Service
+* @createDate 2024-09-04 09:36:38
+*/
+public interface InsOrdersUnderwritingReasonService extends IService<InsOrdersUnderwritingReason> {
+
+    /**
+     * 保存核保退回原因
+     * @param subNoOrder 子订单号
+     * @param message 退回原因
+     * @param orderStatus 订单状态
+     */
+    void saveInsOrdersUnderwritingReason(String subNoOrder, String message, String orderStatus);
+
+
+    /**
+     * 获取最新的
+     * @param subNoOrder 订单号
+     * @param orderStatus 订单状态
+     * @return 核保退回原因
+     */
+    String getInsOrdersUnderwritingReason(String subNoOrder, String orderStatus);
+
+}

+ 6 - 6
src/main/java/com/ydtech/modules/order/service/impl/BoHaiOrderApiServiceImpl.java

@@ -28,10 +28,7 @@ import com.ydtech.modules.order.entity.vo.BaseQuoteVo;
 import com.ydtech.modules.order.entity.vo.bohai.BoHaiQuoteAccidentVo;
 import com.ydtech.modules.order.entity.vo.bohai.ProductDetailsQueryVo;
 import com.ydtech.modules.order.entity.vo.bohai.ProductQueryVo;
-import com.ydtech.modules.order.service.BoHaiOrderApiService;
-import com.ydtech.modules.order.service.InsAreaCompanyService;
-import com.ydtech.modules.order.service.InsOrdersService;
-import com.ydtech.modules.order.service.InsTaskImagesService;
+import com.ydtech.modules.order.service.*;
 import com.ydtech.modules.order.utils.StringSubStringUtils;
 import com.ydtech.modules.protocol.entity.po.PtlAgreementAttribution;
 import com.ydtech.modules.protocol.service.PtlAgreementAttributionService;
@@ -67,6 +64,8 @@ public class BoHaiOrderApiServiceImpl implements BoHaiOrderApiService {
 
     private final FileComponents fileComponents;
 
+    private final InsOrdersUnderwritingReasonService insOrdersUnderwritingReasonService;
+
     @Override
     public HttpResult<List<NonAutomotiveProductsResponse.DataDTO.ProductsDTO>> productQuery(ProductQueryVo productQueryVo) throws Exception {
         // 账号信息
@@ -378,8 +377,9 @@ public class BoHaiOrderApiServiceImpl implements BoHaiOrderApiService {
         }
         String trafficResultMsg = data.getTrafficResultMsg();
         String businessResultMsg = data.getBusinessResultMsg();
-        insAreaCompanyService.updateCompanyAndOrders(insAreaCompany);
-        return HttpResult.error(trafficResultMsg + "/n" + businessResultMsg);
+        String message = trafficResultMsg + "/n" + businessResultMsg;
+        insAreaCompanyService.updateCompanyAndOrdersMessage(insAreaCompany, message);
+        return HttpResult.error(message);
     }
 
     @Override

+ 3 - 3
src/main/java/com/ydtech/modules/order/service/impl/HuaTaiOrderApiServiceImpl.java

@@ -268,14 +268,14 @@ public class HuaTaiOrderApiServiceImpl implements HuaTaiOrderApiService {
                 return HttpResult.ok("已转人工核保");
             } else {//当状态为核保不通过时,调整保单状态为报价中
                 insAreaCompany.setOrderstatus(InsOrderStatusEnum.QUOTE_ING.getCode());
-                insAreaCompanyService.updateCompanyAndOrders(insAreaCompany);
                 String notion = jqNotion.toString() + syNotion + huaTaiSubmitCommon.getNotion();
+                insAreaCompanyService.updateCompanyAndOrdersMessage(insAreaCompany, notion);
                 return HttpResult.error("核保不通过:" + notion);//需要处理放入核保原因
             }
         } else {
-            String notion = jqNotion.toString() + syNotion.toString();
+            String notion = jqNotion.toString() + syNotion;
             insAreaCompany.setOrderstatus(InsOrderStatusEnum.TO_BACK.getCode());
-            insAreaCompanyService.updateCompanyAndOrders(insAreaCompany);
+            insAreaCompanyService.updateCompanyAndOrdersMessage(insAreaCompany, notion);
             return HttpResult.error(notion);
         }
     }

+ 12 - 0
src/main/java/com/ydtech/modules/order/service/impl/InsAreaCompanyServiceImpl.java

@@ -62,6 +62,9 @@ public class InsAreaCompanyServiceImpl extends ServiceImpl<InsAreaCompanyMapper,
 
     private final SysDeptService sysDeptService;
 
+    @Autowired
+    private InsOrdersUnderwritingReasonService insOrdersUnderwritingReasonService;
+
     @Autowired
     private InsAreaCompanyAccidentalDrivingService insAreaCompanyAccidentalDrivingService;
 
@@ -992,6 +995,15 @@ public class InsAreaCompanyServiceImpl extends ServiceImpl<InsAreaCompanyMapper,
         return baseMapper.getOrderPremiumByUserIds(ids);
     }
 
+    @Override
+    public void saveInsOrdersUnderwritingReason(String subNoOrder, String message, String orderStatus) {
+        if(!Arrays.asList(InsOrderStatusEnum.getRefuseUnderwriting()).contains(orderStatus)){
+            return;
+        }
+        insOrdersUnderwritingReasonService.saveInsOrdersUnderwritingReason(subNoOrder, message, orderStatus);
+    }
+
+
 }
 
 

+ 4 - 2
src/main/java/com/ydtech/modules/order/service/impl/InsCrawlerOrderServiceImpl.java

@@ -198,7 +198,8 @@ public class InsCrawlerOrderServiceImpl implements InsCrawlerOrderService {
         // 是否人工核保
         if (StringUtils.isNotEmpty(crawlerAuditResponse.getManual())) {
             insAreaCompany.setOrderstatus(InsOrderStatusEnum.WAIT_AUDIT.getCode());
-            insAreaCompanyService.updateCompanyAndOrders(insAreaCompany);
+            String message = crawlerAuditResponse.getMessage();
+            insAreaCompanyService.updateCompanyAndOrdersMessage(insAreaCompany, message);
             return HttpResult.error(crawlerAuditResponse.getMessage());
         }
         // 投保单号
@@ -462,7 +463,8 @@ public class InsCrawlerOrderServiceImpl implements InsCrawlerOrderService {
 
         if (crawlerAuditResponse.getCode() == CrawlerAuditStatus.CAS_500.getCode()) {
             insAreaCompany.setOrderstatus(InsOrderStatusEnum.TO_BACK.getCode());
-            insAreaCompanyService.updateCompanyAndOrders(insAreaCompany);
+            String message = crawlerAuditResponse.getMessage();
+            insAreaCompanyService.updateCompanyAndOrdersMessage(insAreaCompany, message);
             return HttpResult.error(crawlerAuditResponse.getMessage());
         } else if (crawlerAuditResponse.getCode() == CrawlerAuditStatus.CAS_200.getCode()) {
             insAreaCompany.setOrderstatus(InsOrderStatusEnum.WAIT_PAY.getCode());

+ 49 - 0
src/main/java/com/ydtech/modules/order/service/impl/InsOrdersUnderwritingReasonServiceImpl.java

@@ -0,0 +1,49 @@
+package com.ydtech.modules.order.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ydtech.modules.order.dao.InsOrdersUnderwritingReasonMapper;
+import com.ydtech.modules.order.entity.po.InsOrdersUnderwritingReason;
+import com.ydtech.modules.order.service.InsOrdersUnderwritingReasonService;
+import org.springframework.stereotype.Service;
+import org.springframework.util.ObjectUtils;
+
+import java.util.Date;
+
+/**
+ * @author Administrator
+ * @description 针对表【ins_orders_underwriting_reason(核保不通过原因)】的数据库操作Service实现
+ * @createDate 2024-09-04 09:36:38
+ */
+@Service
+public class InsOrdersUnderwritingReasonServiceImpl extends ServiceImpl<InsOrdersUnderwritingReasonMapper, InsOrdersUnderwritingReason>
+        implements InsOrdersUnderwritingReasonService {
+
+    @Override
+    public void saveInsOrdersUnderwritingReason(String subNoOrder, String message, String orderStatus) {
+        InsOrdersUnderwritingReason insOrdersUnderwritingReason = new InsOrdersUnderwritingReason();
+        insOrdersUnderwritingReason.setReason(message);
+        insOrdersUnderwritingReason.setOrderStatus(orderStatus);
+        insOrdersUnderwritingReason.setOrderStatus(orderStatus);
+        insOrdersUnderwritingReason.setCreateTime(new Date());
+        save(insOrdersUnderwritingReason);
+    }
+
+    @Override
+    public String getInsOrdersUnderwritingReason(String subNoOrder, String orderStatus) {
+        InsOrdersUnderwritingReason insOrdersUnderwritingReason = lambdaQuery().eq(InsOrdersUnderwritingReason::getOrderStatus, orderStatus)
+                .eq(InsOrdersUnderwritingReason::getSubNoOrder, subNoOrder)
+                .orderByDesc(InsOrdersUnderwritingReason::getCreateTime)
+                .last("limit 1")
+                .one();
+
+        if (ObjectUtils.isEmpty(insOrdersUnderwritingReason)) {
+            return "暂无信息";
+        }
+
+        return insOrdersUnderwritingReason.getReason();
+    }
+}
+
+
+
+

+ 1 - 1
src/main/java/com/ydtech/modules/order/service/impl/YongchengOrderApiServiceImpl.java

@@ -737,7 +737,7 @@ public class YongchengOrderApiServiceImpl implements YongchengOrderApiService {
                 getPayUrlApi(iac);
             }
             log.info("车牌号:" + order.getLicenseno() + ",永诚核保未获取缴费地址,状态为:" + InsOrderStatusEnum.matchKey(iac.getOrderstatus()).getDesc());
-            insAreaCompanyService.updateCompanyAndOrders(iac);
+            insAreaCompanyService.updateCompanyAndOrdersMessage(iac, iac.getAuditopinion());
             return HttpResult.ok("核保操作成功");
 
         } catch (JsonProcessingException jsonProcessingException) {

+ 2 - 1
src/main/java/com/ydtech/modules/order/service/impl/ZhongMeiOrderApiServiceImpl.java

@@ -239,7 +239,8 @@ public class ZhongMeiOrderApiServiceImpl implements ZhongMeiOrderApiService {
         // 3. 人工核保
         if (SubmitStatus.S_3.getCode().equals(response.getSubmitStatus())) {
             insAreaCompany.setOrderstatus(InsOrderStatusEnum.WAIT_AUDIT.getCode());
-            insAreaCompanyService.updateCompanyAndOrders(insAreaCompany);
+            String message = response.getSubmitNotion();
+            insAreaCompanyService.updateCompanyAndOrdersMessage(insAreaCompany, message);
             return HttpResult.error(response.getSubmitNotion());
         }
         zhongmeiRequestApiComponents.validationResults(response);

+ 5 - 5
src/main/java/com/ydtech/modules/order/service/impl/ZijinOrderApiServiceImpl.java

@@ -232,12 +232,12 @@ public class ZijinOrderApiServiceImpl implements ZijinOrderApiService {
 
             if (OrderStatusEnum.O_3.getCode().equals(resultObj.getOrderStatus())) {
                 insAreaCompany.setOrderstatus(InsOrderStatusEnum.TO_BACK.getCode());
-                insAreaCompanyService.updateCompanyAndOrders(insAreaCompany);
+                insAreaCompanyService.updateCompanyAndOrdersMessage(insAreaCompany, uwMsg);
                 return HttpResult.error(OrderStatusEnum.O_3.getName() + ":" + uwMsg);
                 // 人工核保
             } else if (OrderStatusEnum.O_1.getCode().equals(resultObj.getOrderStatus())) {
                 insAreaCompany.setOrderstatus(InsOrderStatusEnum.WAIT_AUDIT.getCode());
-                insAreaCompanyService.updateCompanyAndOrders(insAreaCompany);
+                insAreaCompanyService.updateCompanyAndOrdersMessage(insAreaCompany, uwMsg);
                 return HttpResult.error("人工核保" + ":" + uwMsg);
             }
 
@@ -447,15 +447,15 @@ public class ZijinOrderApiServiceImpl implements ZijinOrderApiService {
             return HttpResult.ok("核保成功");
         } else if (OrderStatusEnum.O_3.getCode().equals(resultObj.getOrderStatus())) {
             insAreaCompany.setOrderstatus(InsOrderStatusEnum.TO_BACK.getCode());
-            insAreaCompanyService.updateCompanyAndOrders(insAreaCompany);
 
             List<QueryOrderDetailResponse.OrderPolicyListDTO> orderPolicyListDTOS = resultObj.getOrderPolicyList()
                     .stream()
                     .filter(x -> UnderWriteFlagEnum.U_2.getCode().equals(x.getUnderWriteFlag()))
                     .collect(Collectors.toList());
             QueryOrderDetailResponse.OrderPolicyListDTO orderPolicyListDTO = orderPolicyListDTOS.get(0);
-
-            return HttpResult.error(OrderStatusEnum.O_3.getName() + ":" + orderPolicyListDTO.getUnderWriteMessage());
+            String message = OrderStatusEnum.O_3.getName() + ":" + orderPolicyListDTO.getUnderWriteMessage();
+            insAreaCompanyService.updateCompanyAndOrdersMessage(insAreaCompany, message);
+            return HttpResult.error(message);
         }
 
         return HttpResult.ok("核保状态未修改");