Explorar el Código

订单轨迹代码的提交

dongxin hace 1 año
padre
commit
f03c71bb4d

+ 13 - 0
commons/src/main/java/com/jzg/commons/entity/dto/OrdersTrackParam.java

@@ -0,0 +1,13 @@
+package com.jzg.commons.entity.dto;
+
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Schema(description = "订单轨迹表查询dto")
+@Data
+public class OrdersTrackParam {
+
+    @Schema(description = "订单号")
+    private String orderNo;
+}

+ 63 - 0
commons/src/main/java/com/jzg/commons/entity/orders/po/InsOrdersTrack.java

@@ -0,0 +1,63 @@
+package com.jzg.commons.entity.orders.po;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.jzg.commons.core.base.BaseModel;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 订单轨迹表
+ * @TableName ins_orders_track
+ */
+@Data
+@Schema(description = "订单轨迹表")
+@NoArgsConstructor
+public class InsOrdersTrack extends BaseModel {
+
+    @Schema(description = "轨迹ID")
+    @TableId(value = "id", type = IdType.ASSIGN_ID)
+    private String id;
+
+    @Schema(description = "订单号")
+    private String orderNo;
+
+    @Schema(description = "保险公司id")
+    private String companyId;
+
+    @Schema(description = "车牌号")
+    private String licenseNo;
+
+    @Schema(description = "状态 0失败 1成功")
+    private Integer status;
+
+    @Schema(description = "操作类型0.订单创建 1.报价 2.补传影像 3.调整特约 4.修改折扣系数 5.核保 6.获取支付码 7.撤销支付码 8.下载电子保单 9.同步订单 10.订单编辑")
+    private Integer optType;
+
+    @Schema(description = "操作内容")
+    private String optContent;
+
+    @Schema(description = "返回结果")
+    private String result;
+
+    public InsOrdersTrack(String orderNo,
+                          String companyId,
+                          String licenseNo,
+                          Integer status,
+                          Integer optType,
+                          String optContent,
+                          String result) {
+        this.orderNo = orderNo;
+        this.companyId = companyId;
+        this.licenseNo = licenseNo;
+        this.status = status;
+        this.optType = optType;
+        this.optContent = optContent;
+        this.result = result;
+
+    }
+}

+ 35 - 0
commons/src/main/java/com/jzg/commons/entity/vo/OrdersTrackVo.java

@@ -0,0 +1,35 @@
+package com.jzg.commons.entity.vo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Data
+@Schema(description = "订单轨迹列表VO")
+public class OrdersTrackVo {
+
+    @Schema(description = "轨迹ID")
+    private String id;
+
+    @Schema(description = "订单号")
+    private String orderNo;
+
+    @Schema(description = "保险公司id")
+    private String companyId;
+
+    @Schema(description = "车牌号")
+    private String licenseNo;
+
+    @Schema(description = "状态 0失败 1成功")
+    private Integer status;
+
+    @Schema(description = "操作类型0.订单创建 1.报价 2.补传影像 3.调整特约 4.修改折扣系数 5.核保 6.获取支付码 7.撤销支付码 8.下载电子保单 9.同步订单 10.订单编辑")
+    private Integer optType;
+
+    @Schema(description = "操作内容")
+    private String optContent;
+
+    @Schema(description = "返回结果")
+    private String result;
+}

+ 27 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/constants/QuoteNumberConstant.java

@@ -75,4 +75,31 @@ public class QuoteNumberConstant {
         }
     }
 
+    @AllArgsConstructor
+    @Getter
+    public enum QuoteOptType{
+        OPT_TYPE_0(0,"订单创建"),
+        OPT_TYPE_1(1,"报价"),
+        OPT_TYPE_2(2,"补传影像"),
+        OPT_TYPE_3(3,"调整特约"),
+        OPT_TYPE_4(4,"修改折扣系数"),
+        OPT_TYPE_5(5,"核保"),
+        OPT_TYPE_6(6,"获取支付码"),
+        OPT_TYPE_7(7,"撤销支付码"),
+        OPT_TYPE_8(8,"下载电子保单"),
+        OPT_TYPE_9(9,"同步订单"),
+        OPT_TYPE_10(10,"订单编辑"),
+        ;
+        private Integer code;
+        private String desc;
+        public static String getByCode(String code){
+            for(QuoteOptType item : values()){
+                if(item.getCode().toString().equals(code)){
+                    return item.desc;
+                }
+            }
+            return "";
+        }
+    }
+
 }

+ 40 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/InsOrdersTrackController.java

@@ -0,0 +1,40 @@
+package com.jzg.quotation.summary.controller;
+
+
+import com.jzg.commons.core.page.HttpResult;
+import com.jzg.commons.entity.dto.OrdersTrackParam;
+import com.jzg.commons.entity.vo.OrdersTrackVo;
+import com.jzg.quotation.summary.service.InsOrdersTrackService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/orderTrack")
+@Tag(name = "订单轨迹")
+@RequiredArgsConstructor
+public class InsOrdersTrackController {
+
+    @Autowired
+    private InsOrdersTrackService ordersTrackService;
+
+    /**
+     * 订单轨迹列表
+     * @return
+     */
+    @PostMapping("/list")
+    @Operation(summary = "订单轨迹列表")
+    public HttpResult list(@RequestBody OrdersTrackParam param){
+        List<OrdersTrackVo> result = ordersTrackService.list(param);
+        return HttpResult.ok(result);
+    }
+
+
+}

+ 60 - 1
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/UnifyOrderManager.java

@@ -24,6 +24,7 @@ import com.jzg.quotation.commons.entity.vo.aggregated.*;
 import com.jzg.quotation.commons.entity.vo.orders.InsOrdersVo;
 import com.jzg.quotation.commons.service.QuotationBaseService;
 import com.jzg.quotation.commons.utils.SnowFlakeUtil;
+import com.jzg.quotation.summary.constants.QuoteNumberConstant;
 import com.jzg.quotation.summary.converter.QuoteInfoConverter;
 import com.jzg.quotation.summary.entity.po.QuoteRuleMapping;
 import com.jzg.quotation.summary.factory.CompanyFactory;
@@ -116,6 +117,8 @@ public class UnifyOrderManager {
 
     @Value("${minio.bucket-name}")
     private String bucketName;
+    @Autowired
+    private InsOrdersTrackService insOrdersTrackService;
 
 
     private String getSystemCode() {
@@ -212,6 +215,20 @@ public class UnifyOrderManager {
         quoteResultsVo.setQuoteStatus(quoteResultsVo.getQuoteStatusEnum().getCode());
         quoteResultsVo.setOrdersNo(ordersNo);
 
+        // 报价轨迹
+        String optContent = baseController.getUserName() + "提交了报价";
+        InsOrdersTrack track = new InsOrdersTrack(ordersNo,
+                companyName,
+                quoteVo.getCarInfoVo().getLicenseNo(),
+                quoteResultsVo.getQuoteStatus().equals(InsOrderStatusEnum.WAIT_AUDIT.getCode())
+                        ? QuoteNumberConstant.QuoteResult.SUCCESS.getCode()
+                        : QuoteNumberConstant.QuoteResult.FAIL.getCode(),
+                QuoteNumberConstant.QuoteOptType.OPT_TYPE_1.getCode(),
+                optContent,
+                quoteResultsVo.getErrorMessage()
+        );
+        insOrdersTrackService.save(track);
+
         // 报价后更新订单
         insOrdersService.orderAfterUpdateQuote(ordersNo, quoteResultsVo);
         return quoteResultsVo.getQuoteStatusEnum()
@@ -255,6 +272,16 @@ public class UnifyOrderManager {
         insOrdersService.orderAfterUpdateUnderwriting(underwritingResultsVo);
 
         if (underwritingResultsVo.getUnderwritingStatus().equals(InsOrderStatusEnum.PAY_PENDING)) {
+            // 核保轨迹
+            String optContent = baseController.getUserName() + "提交了核保";
+            InsOrdersTrack track = new InsOrdersTrack(insOrders.getId(),
+                    insOrders.getCompanyId(),
+                    insOrdersCarInfo.getLicenseNo(),
+                    QuoteNumberConstant.QuoteResult.SUCCESS.getCode(),
+                    QuoteNumberConstant.QuoteOptType.OPT_TYPE_5.getCode(),
+                    optContent,null
+            );
+            insOrdersTrackService.save(track);
             return HttpResult.ok("核保成功");
         } else {
             if (underwritingResultsVo.getUnderwritingStatus().equals(InsOrderStatusEnum.AUDIT_FAIL)) {
@@ -263,6 +290,17 @@ public class UnifyOrderManager {
                 insOrders.setOrderStatus(String.valueOf(stateFailResult.getCurrentState()));
                 insOrdersService.updateById(insOrders);
             }
+            // 核保轨迹
+            String optContent = baseController.getUserName() + "提交了核保";
+            InsOrdersTrack track = new InsOrdersTrack(insOrders.getId(),
+                    insOrders.getCompanyId(),
+                    insOrdersCarInfo.getLicenseNo(),
+                    QuoteNumberConstant.QuoteResult.FAIL.getCode(),
+                    QuoteNumberConstant.QuoteOptType.OPT_TYPE_5.getCode(),
+                    optContent,
+                    underwritingResultsVo.getUnderwritingResult()
+            );
+            insOrdersTrackService.save(track);
             throw new SystemException(underwritingResultsVo.getUnderwritingResult());
         }
     }
@@ -280,6 +318,7 @@ public class UnifyOrderManager {
         //获取保司实体
         InsOrders insOrders = insOrdersService.getById(paymentLinkVo.getOrder().getOrdersNo());
         AssertionUtils.isFail(Objects.isNull(insOrders), "订单不存在");
+        InsOrdersCarInfo insOrdersCarInfo = insOrdersCarInfoService.getByOrderId(insOrders.getId());
         HttpResult<EsmInsCompany> esmInsCompanyHttpResult = platformClient.findById(insOrders.getCompanyId(), baseController.getToken());
         QuotationBaseService quoteService = companyFactory.getPaymentLinkService(insOrders, esmInsCompanyHttpResult.getData()
                 .getCompanyCode(), baseController, paymentLinkVo);
@@ -298,6 +337,17 @@ public class UnifyOrderManager {
         insOrders.setPayLink(paymentLinkResultsVo.getPaymentLink());
         insOrdersService.updateById(insOrders);
         insOrdersQrcodeService.saveQrCode(insOrders);
+
+        // 获取支付链接轨迹
+        String optContent = baseController.getUserName() + "请求获取支付码";
+        InsOrdersTrack track = new InsOrdersTrack(insOrders.getId(),
+                insOrders.getCompanyId(),
+                insOrdersCarInfo.getLicenseNo(),
+                QuoteNumberConstant.QuoteResult.SUCCESS.getCode(),
+                QuoteNumberConstant.QuoteOptType.OPT_TYPE_6.getCode(),
+                optContent,null
+        );
+        insOrdersTrackService.save(track);
         return HttpResult.ok("");
     }
 
@@ -407,7 +457,16 @@ public class UnifyOrderManager {
             }
             insOrdersPdfUrlService.save(insOrdersPdfUrl);
         }
-
+        // 下载保单轨迹
+        String optContent = baseController.getUserName() + "请求下载电子保单";
+        InsOrdersTrack track = new InsOrdersTrack(insOrders.getId(),
+                insOrders.getCompanyId(),
+                carInfo.getLicenseNo(),
+                QuoteNumberConstant.QuoteResult.SUCCESS.getCode(),
+                QuoteNumberConstant.QuoteOptType.OPT_TYPE_8.getCode(),
+                optContent,null
+        );
+        insOrdersTrackService.save(track);
         return HttpResult.ok(insOrdersPdfUrl);
     }
 }

+ 30 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/mapper/InsOrdersTrackMapper.java

@@ -0,0 +1,30 @@
+package com.jzg.quotation.summary.mapper;
+
+import com.jzg.commons.entity.dto.OrdersTrackParam;
+import com.jzg.commons.entity.orders.po.InsOrdersTrack;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jzg.commons.entity.vo.OrdersTrackVo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+* @author dongxin
+* @description 针对表【ins_orders_track(订单轨迹表)】的数据库操作Mapper
+* @createDate 2025-05-23 09:16:17
+* @Entity generator.domain.InsOrdersTrack
+*/
+public interface InsOrdersTrackMapper extends BaseMapper<InsOrdersTrack> {
+
+    /**
+     * 订单轨迹列表
+     * @param param
+     * @return
+     */
+    List<OrdersTrackVo> queryList(@Param("param") OrdersTrackParam param);
+
+}
+
+
+
+

+ 23 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/InsOrdersTrackService.java

@@ -0,0 +1,23 @@
+package com.jzg.quotation.summary.service;
+
+import com.jzg.commons.entity.dto.OrdersTrackParam;
+import com.jzg.commons.entity.orders.po.InsOrdersTrack;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.jzg.commons.entity.vo.OrdersTrackVo;
+
+import java.util.List;
+
+/**
+* @author dongxin
+* @description 针对表【ins_orders_track(订单轨迹表)】的数据库操作Service
+* @createDate 2025-05-23 09:16:17
+*/
+public interface InsOrdersTrackService extends IService<InsOrdersTrack> {
+
+    /**
+     * 订单轨迹列表
+     * @param param
+     * @return
+     */
+    List<OrdersTrackVo> list(OrdersTrackParam param);
+}

+ 30 - 3
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersServiceImpl.java

@@ -40,7 +40,9 @@ import com.jzg.quotation.commons.entity.vo.orders.InsOrdersAdd;
 import com.jzg.quotation.commons.entity.vo.orders.InsOrdersEnd;
 import com.jzg.quotation.commons.entity.vo.orders.InsOrdersVo;
 import com.jzg.quotation.commons.utils.SnowFlakeUtil;
+import com.jzg.quotation.summary.constants.QuoteNumberConstant;
 import com.jzg.quotation.summary.consumer.template.OrderMessageTemplate;
+import com.jzg.quotation.summary.mapper.InsOrdersCarInfoMapper;
 import com.jzg.quotation.summary.mapper.InsOrdersMapper;
 import com.jzg.quotation.summary.mapper.InsOrdersQrcodeMapper;
 import com.jzg.quotation.summary.service.*;
@@ -93,6 +95,8 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
 
     private final BaseController baseController;
 
+    private final InsOrdersTrackService insOrdersTrackService;
+
     @Setter(onMethod_ = @Autowired)
     private OrderMessageTemplate orderMessageTemplate;
 
@@ -101,7 +105,8 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
     @Autowired
     private InsOrdersQrcodeMapper insOrdersQrcodeMapper;
 
-
+    @Autowired
+    private InsOrdersCarInfoMapper insOrdersCarInfoMapper;
 
 
     @Override
@@ -668,7 +673,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         insOrdersMapper.insert(insOrders);
 
         // 保存订单车辆信息
-        ordersCarInfoService.createCarInfo(insOrders, quoteVo.getCarInfoVo(), formatter);
+        InsOrdersCarInfo carInfo = ordersCarInfoService.createCarInfo(insOrders, quoteVo.getCarInfoVo(), formatter);
 
         // 保存订单用户信息
         List<InsOrdersCarUserInfo> insOrdersCarUserInfoList = new ArrayList<>();
@@ -700,6 +705,18 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
 
         // 保存订单车船税税信息 ins_orders_tax
         insOrdersTaxService.createTax(insOrders);
+
+        // 创建订单轨迹
+        String optContent = baseController.getUserName() + "创建了订单";
+        InsOrdersTrack track = new InsOrdersTrack(insOrders.getId(),
+                insOrders.getCompanyId(),
+                carInfo.getLicenseNo(),
+                QuoteNumberConstant.QuoteResult.SUCCESS.getCode(),
+                QuoteNumberConstant.QuoteOptType.OPT_TYPE_0.getCode(),
+                optContent,
+                null
+        );
+        insOrdersTrackService.save(track);
         return orderNo;
     }
 
@@ -754,9 +771,19 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         // 检测主订单是否存在
         InsOrders insOrders = insOrdersMapper.selectOne(new LambdaQueryWrapper<InsOrders>().eq(InsOrders::getId,orderNo));
         AssertionUtils.isFail(Objects.isNull(insOrders),"订单不存在");
-
+        InsOrdersCarInfo insOrdersCarInfo = insOrdersCarInfoMapper.selectById(insOrders.getId());
         //设置订单状态
         StateResult stateResult = orderStateListener.statusChange(orderStatusResultVo.getOrderStatus(), insOrders.getOrderStatus());
+        // 同步订单轨迹
+        String optContent = baseController.getUserName() + "将订单状态由" +insOrders.getOrderStatus()+ "更新为" +stateResult.getCurrentState();
+        InsOrdersTrack track = new InsOrdersTrack(insOrders.getId(),
+                insOrders.getCompanyId(),
+                insOrdersCarInfo.getLicenseNo(),
+                QuoteNumberConstant.QuoteResult.SUCCESS.getCode(),
+                QuoteNumberConstant.QuoteOptType.OPT_TYPE_9.getCode(),
+                optContent,null
+        );
+        insOrdersTrackService.save(track);
         insOrders.setOrderStatus(String.valueOf(stateResult.getCurrentState()));
 
         //更新保单号

+ 32 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersTrackServiceImpl.java

@@ -0,0 +1,32 @@
+package com.jzg.quotation.summary.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jzg.commons.entity.dto.OrdersTrackParam;
+import com.jzg.commons.entity.orders.po.InsOrdersTrack;
+import com.jzg.commons.entity.vo.OrdersTrackVo;
+import com.jzg.quotation.summary.mapper.InsOrdersTrackMapper;
+import com.jzg.quotation.summary.service.InsOrdersTrackService;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+* @author dongxin
+* @description 针对表【ins_orders_track(订单轨迹表)】的数据库操作Service实现
+* @createDate 2025-05-23 09:16:17
+*/
+@Service
+public class InsOrdersTrackServiceImpl extends ServiceImpl<InsOrdersTrackMapper, InsOrdersTrack>
+    implements InsOrdersTrackService {
+
+    @Override
+    public List<OrdersTrackVo> list(OrdersTrackParam param) {
+        List<OrdersTrackVo> ordersTrackVos = baseMapper.queryList(param);
+        return ordersTrackVos;
+    }
+}
+
+
+
+

+ 34 - 0
tenant/insurance/quotation-summary/src/main/resources/mapper/InsOrdersTrackMapper.xml

@@ -0,0 +1,34 @@
+<?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.jzg.quotation.summary.mapper.InsOrdersTrackMapper">
+
+    <resultMap id="BaseResultMap" type="com.jzg.commons.entity.orders.po.InsOrdersTrack">
+            <id property="id" column="id" jdbcType="BIGINT"/>
+            <result property="orderNo" column="order_no" jdbcType="BIGINT"/>
+            <result property="companyId" column="company_id" jdbcType="VARCHAR"/>
+            <result property="licenseNo" column="license_no" jdbcType="VARCHAR"/>
+            <result property="status" column="status" jdbcType="TINYINT"/>
+            <result property="optType" column="opt_type" jdbcType="TINYINT"/>
+            <result property="optContent" column="opt_content" jdbcType="VARCHAR"/>
+            <result property="result" column="result" jdbcType="VARCHAR"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id,order_no,company_id,
+        license_no,status,opt_type,
+        opt_content,`result`,create_time,
+        create_by
+    </sql>
+    <select id="queryList" resultType="com.jzg.commons.entity.vo.OrdersTrackVo">
+        SELECT <include refid="Base_Column_List"/>
+        FROM ins_orders_track
+        <where>
+            <if test="param.orderNo != null and param.orderNo != ''">
+                and order_no = #{param.orderNo}
+            </if>
+        </where>
+        order by create_time desc
+    </select>
+</mapper>