Преглед изворни кода

Merge remote-tracking branch 'origin/master'

785834757 пре 1 година
родитељ
комит
fba22061e5
16 измењених фајлова са 139 додато и 87 уклоњено
  1. 9 0
      commons/src/main/java/com/jzg/commons/constants/quote/enums/quote/CarKindCode.java
  2. 9 0
      commons/src/main/java/com/jzg/commons/constants/quote/enums/quote/CarNatureCode.java
  3. 4 0
      commons/src/main/java/com/jzg/commons/constants/quote/enums/quote/EnergyTypeCode.java
  4. 9 0
      commons/src/main/java/com/jzg/commons/constants/quote/enums/quote/VehicleUseCode.java
  5. 9 0
      commons/src/main/java/com/jzg/commons/entity/dto/AgreementAddParam.java
  6. 10 0
      commons/src/main/java/com/jzg/commons/entity/dto/AgreementEditParam.java
  7. 8 3
      commons/src/main/java/com/jzg/commons/entity/po/PtlAgreement.java
  8. 10 0
      commons/src/main/java/com/jzg/commons/entity/vo/AgreementVo.java
  9. 12 0
      commons/src/main/java/com/jzg/commons/entity/vo/OrdersTrackVo.java
  10. 24 29
      commons/src/main/java/com/jzg/commons/util/comparble/DiffUtils.java
  11. 12 7
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/utils/SpElFieldExtractor.java
  12. 8 7
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/aop/OrderOperationLogAspect.java
  13. 6 4
      tenant/insurance/quotation-summary/src/main/resources/mapper/InsOrdersTrackMapper.xml
  14. 0 23
      tenant/organization/src/main/java/com/jzg/organization/client/OrgClient.java
  15. 4 12
      tenant/organization/src/main/java/com/jzg/organization/service/impl/SysUserServiceImpl.java
  16. 5 2
      tenant/organization/src/main/resources/mapper/PtlAgreementMapper.xml

+ 9 - 0
commons/src/main/java/com/jzg/commons/constants/quote/enums/quote/CarKindCode.java

@@ -19,4 +19,13 @@ public enum CarKindCode {
     private final String code;
 
     private final String desc;
+
+    public static String getByCode(String code){
+        for (CarKindCode carKindCode : values()) {
+            if (carKindCode.getCode().equals(code)) {
+                return carKindCode.getDesc();
+            }
+        }
+        return null;
+    }
 }

+ 9 - 0
commons/src/main/java/com/jzg/commons/constants/quote/enums/quote/CarNatureCode.java

@@ -20,4 +20,13 @@ public enum CarNatureCode {
     // 说明
     private final String desc;
 
+    public static String getByCode(String code){
+        for (CarNatureCode carNatureCode : values()) {
+            if (carNatureCode.getCode().equals(code)) {
+                return carNatureCode.getDesc();
+            }
+        }
+        return null;
+    }
+
 }

+ 4 - 0
commons/src/main/java/com/jzg/commons/constants/quote/enums/quote/EnergyTypeCode.java

@@ -43,4 +43,8 @@ public enum EnergyTypeCode {
         return Arrays.asList(NEW_ENERGY);
     }
 
+    public static boolean isNewEnergy(String code){
+        return Arrays.asList(NEW_ENERGY).contains(code);
+    }
+
 }

+ 9 - 0
commons/src/main/java/com/jzg/commons/constants/quote/enums/quote/VehicleUseCode.java

@@ -26,4 +26,13 @@ public enum VehicleUseCode {
     private final String code;
     // 说明
     private final String desc;
+
+    public static String getByCode(String code){
+        for (VehicleUseCode vehicleUseCode : values()) {
+            if (vehicleUseCode.getCode().equals(code)) {
+                return vehicleUseCode.getDesc();
+            }
+        }
+        return null;
+    }
 }

+ 9 - 0
commons/src/main/java/com/jzg/commons/entity/dto/AgreementAddParam.java

@@ -6,6 +6,7 @@ import jakarta.validation.constraints.NotNull;
 import jakarta.validation.constraints.Size;
 import lombok.Data;
 
+import java.math.BigDecimal;
 import java.time.LocalDateTime;
 
 @Schema(description = "协议表新增dto")
@@ -83,4 +84,12 @@ public class AgreementAddParam {
     @Schema(description = "协议文件")
     private String fileId;
 
+    @Schema(description = "交强入口手续费比例")
+    private BigDecimal jqEntranceFeeRatio;
+
+    @Schema(description = "商业入口手续费比例")
+    private BigDecimal syEntranceFeeRatio;
+
+    @Schema(description = "驾意入口手续费比例")
+    private BigDecimal jyEntranceFeeRatio;
 }

+ 10 - 0
commons/src/main/java/com/jzg/commons/entity/dto/AgreementEditParam.java

@@ -6,6 +6,7 @@ import jakarta.validation.constraints.NotNull;
 import jakarta.validation.constraints.Size;
 import lombok.Data;
 
+import java.math.BigDecimal;
 import java.time.LocalDateTime;
 
 @Schema(description = "协议表新增dto")
@@ -84,4 +85,13 @@ public class AgreementEditParam {
 
     @Schema(description = "协议文件")
     private String fileId;
+
+    @Schema(description = "交强入口手续费比例")
+    private BigDecimal jqEntranceFeeRatio;
+
+    @Schema(description = "商业入口手续费比例")
+    private BigDecimal syEntranceFeeRatio;
+
+    @Schema(description = "驾意入口手续费比例")
+    private BigDecimal jyEntranceFeeRatio;
 }

+ 8 - 3
commons/src/main/java/com/jzg/commons/entity/po/PtlAgreement.java

@@ -1,9 +1,7 @@
 package com.jzg.commons.entity.po;
 
-import java.io.Serializable;
-import java.time.LocalDate;
+import java.math.BigDecimal;
 import java.time.LocalDateTime;
-import java.util.Date;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.jzg.commons.core.base.BaseModel;
@@ -132,6 +130,13 @@ public class PtlAgreement extends BaseModel {
     @Schema(description = "保司账号id")
     private String attributionId;
 
+    @Schema(description = "交强入口手续费比例")
+    private BigDecimal jqEntranceFeeRatio;
 
+    @Schema(description = "商业入口手续费比例")
+    private BigDecimal syEntranceFeeRatio;
+
+    @Schema(description = "驾意入口手续费比例")
+    private BigDecimal jyEntranceFeeRatio;
 
 }

+ 10 - 0
commons/src/main/java/com/jzg/commons/entity/vo/AgreementVo.java

@@ -5,6 +5,7 @@ import com.jzg.commons.core.base.BaseModel;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
+import java.math.BigDecimal;
 import java.time.LocalDateTime;
 
 @Schema(description = "协议表VO")
@@ -161,5 +162,14 @@ public class AgreementVo extends BaseModel {
     @Schema(description = "关联-保险公司简称")
     private String company;
 
+    @Schema(description = "交强入口手续费比例")
+    private BigDecimal jqEntranceFeeRatio;
+
+    @Schema(description = "商业入口手续费比例")
+    private BigDecimal syEntranceFeeRatio;
+
+    @Schema(description = "驾意入口手续费比例")
+    private BigDecimal jyEntranceFeeRatio;
+
 
 }

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

@@ -15,6 +15,12 @@ public class OrdersTrackVo {
     @Schema(description = "订单号")
     private String orderNo;
 
+    @Schema(description = "模块名")
+    private String module;        // 模块名,如“补录订单”
+
+    @Schema(description = "二级模块")
+    private String subModule;
+
     @Schema(description = "保险公司id")
     private String companyId;
 
@@ -32,4 +38,10 @@ public class OrdersTrackVo {
 
     @Schema(description = "返回结果")
     private String result;
+
+    @Schema(description = "变更前")
+    private String changeBefore;     // 变更前
+
+    @Schema(description = "变更后")
+    private String changeAfter;      // 变更后
 }

+ 24 - 29
commons/src/main/java/com/jzg/commons/util/comparble/DiffUtils.java

@@ -33,40 +33,35 @@ public class DiffUtils {
      */
     @SneakyThrows
     public static <T> List<DiffResult> diff(T a, T b) {
-        if (equals(a, b)) {
-            return Collections.EMPTY_LIST;
+        if (a == null && b == null) return Collections.emptyList();
+        if (a != null && b != null && !a.getClass().equals(b.getClass())) {
+            throw new IllegalArgumentException("a 与 b 必须是相同类型");
         }
 
-        // 获取并缓存一个类中需要对比的字段
-        Map<String, Field> cachedDiffPropertyMap = DIFF_PROPERTY_CACHE.computeIfAbsent((a != null ? a : b).getClass(),
-                clazz -> {
-                    Map<String, Field> diffPropertyMap = new HashMap<>();
-                    for (Field field : clazz.getDeclaredFields()) {
-                        DiffProperty diffProperty = field.getAnnotation(DiffProperty.class);
-                        if (diffProperty != null) {
-                            field.setAccessible(true);
-                            String name = diffProperty.name();
-                            if (name.isEmpty()) {
-                                name = field.getName();
-                            }
-                            diffPropertyMap.put(name, field);
-                        }
-                    }
-                    return diffPropertyMap;
-                });
+        Class<?> clazz = (a != null ? a : b).getClass();
+        Map<String, Field> cachedDiffPropertyMap = DIFF_PROPERTY_CACHE.computeIfAbsent(clazz, clz -> {
+            Map<String, Field> map = new HashMap<>();
+            for (Field field : clz.getDeclaredFields()) {
+                DiffProperty prop = field.getAnnotation(DiffProperty.class);
+                if (prop != null) {
+                    field.setAccessible(true);
+                    String name = prop.name().isEmpty() ? field.getName() : prop.name();
+                    map.put(name, field);
+                }
+            }
+            return map;
+        });
 
-        // 新老对象,属性值进行对比,并将对比结果,不同的进行返回
-        List<DiffResult> diffResultList = new ArrayList<>();
-        for (Map.Entry<String, Field> fieldEntry : cachedDiffPropertyMap.entrySet()) {
-            Field field = fieldEntry.getValue();
-            // field.get(a) 获取a对象field这个属性名的属性值!
-            Object aValue = a == null ? null : field.get(a);
-            Object bValue = b == null ? null : field.get(b);
-            if (!equals(aValue, bValue)) {
-                diffResultList.add(new DiffResult(field.getName(), fieldEntry.getKey(), aValue, bValue));
+        List<DiffResult> result = new ArrayList<>();
+        for (Map.Entry<String, Field> entry : cachedDiffPropertyMap.entrySet()) {
+            Field field = entry.getValue();
+            Object aVal = (a == null) ? null : field.get(a);
+            Object bVal = (b == null) ? null : field.get(b);
+            if (!Objects.equals(aVal, bVal)) {
+                result.add(new DiffResult(field.getName(), entry.getKey(), aVal, bVal));
             }
         }
-        return diffResultList;
+        return result;
     }
 
     /**

+ 12 - 7
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/utils/SpElFieldExtractor.java

@@ -1,5 +1,6 @@
 package com.jzg.quotation.commons.utils;
 
+import com.alibaba.fastjson2.JSON;
 import com.jzg.quotation.commons.constant.SpElMapping;
 import org.springframework.expression.EvaluationContext;
 import org.springframework.expression.ExpressionParser;
@@ -19,20 +20,24 @@ public class SpElFieldExtractor {
     /**
      * 从返回对象中提取多个字段(根据 SpElMapping 定义)
      */
-    public Map<String, String> extractFields(Object returnValue, List<SpElMapping> mappings) {
-        Map<String, String> result = new HashMap<>();
-        EvaluationContext context = new StandardEvaluationContext();
-        context.setVariable("ret", returnValue);
+    public Map<String, Object> extractFields(Object returnValue, List<SpElMapping> mappings) {
+        Map<String, Object> result = new HashMap<>();
+        if (returnValue == null || mappings == null || mappings.isEmpty()) {
+            return result;
+        }
+
+        EvaluationContext context = new StandardEvaluationContext(returnValue);
+        context.setVariable("ret", returnValue); // 支持 #ret 方式
 
         for (SpElMapping mapping : mappings) {
             try {
-                String value = parser.parseExpression(mapping.getSpel())
-                        .getValue(context, String.class);
-                result.put(mapping.getFieldName(), value);
+                Object val = parser.parseExpression(mapping.getSpel()).getValue(context);
+                result.put(mapping.getFieldName(), val != null ? val : null);
             } catch (Exception e) {
                 result.put(mapping.getFieldName(), "SpEL解析失败");
             }
         }
+
         return result;
     }
 }

+ 8 - 7
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/aop/OrderOperationLogAspect.java

@@ -79,6 +79,7 @@ public class OrderOperationLogAspect {
                     isExistsMainOrder = true;
                 }
                 result = joinPoint.proceed(); // 执行方法
+                // 在这里记录日志、轨迹,包括 result 和 error
                 this.createLog(result,log,isExistsMainOrder);
                 break;
             // 核保
@@ -132,7 +133,7 @@ public class OrderOperationLogAspect {
                 new SpElMapping("data", "#ret.data")
         );
         // 执行提取
-        Map<String, String> extracted = fieldExtractor.extractFields(result, mappings);
+        Map<String, Object> extracted = fieldExtractor.extractFields(result, mappings);
         InsOrdersCarInfo carInfo = carInfoService.getByOrderId(orderId);
         if(extracted.get("code").equals("200")){
             if(!before.getOrderStatus().equals(after.getOrderStatus())){
@@ -168,7 +169,7 @@ public class OrderOperationLogAspect {
                 new SpElMapping("data", "#ret.data")
         );
         // 执行提取
-        Map<String, String> extracted = fieldExtractor.extractFields(result, mappings);
+        Map<String, Object> extracted = fieldExtractor.extractFields(result, mappings);
         InsOrders insOrders = orderService.getById(orderId);
         InsOrdersCarInfo carInfo = carInfoService.getByOrderId(insOrders.getId());
         InsOrdersTrack track = new InsOrdersTrack();
@@ -208,7 +209,7 @@ public class OrderOperationLogAspect {
                 new SpElMapping("data", "#ret.data")
         );
         // 执行提取
-        Map<String, String> extracted = fieldExtractor.extractFields(result, mappings);
+        Map<String, Object> extracted = fieldExtractor.extractFields(result, mappings);
         InsOrders insOrders = orderService.getById(orderId);
         InsOrdersCarInfo carInfo = carInfoService.getByOrderId(insOrders.getId());
         if(extracted.get("code").equals("200")){
@@ -239,8 +240,8 @@ public class OrderOperationLogAspect {
                 new SpElMapping("data", "#ret.data")
         );
         // 执行提取
-        Map<String, String> extracted = fieldExtractor.extractFields(result, mappings);
-        UnderwritingResultsVo res = JSON.parseObject(extracted.get("data")).toJavaObject(UnderwritingResultsVo.class);
+        Map<String, Object> extracted = fieldExtractor.extractFields(result, mappings);
+        UnderwritingResultsVo res = JSON.parseObject(JSON.toJSONString(extracted.get("data"))).toJavaObject(UnderwritingResultsVo.class);
         InsOrders insOrders = orderService.getById(orderId);
         InsOrdersCarInfo carInfo = carInfoService.getByOrderId(insOrders.getId());
         InsOrdersTrack track = new InsOrdersTrack();
@@ -295,8 +296,8 @@ public class OrderOperationLogAspect {
                 new SpElMapping("data", "#ret.data")
         );
         // 执行提取
-        Map<String, String> extracted = fieldExtractor.extractFields(result, mappings);
-        QuoteResultsVo res = JSON.parseObject(extracted.get("data")).toJavaObject(QuoteResultsVo.class);
+        Map<String, Object> extracted = fieldExtractor.extractFields(result, mappings);
+        QuoteResultsVo res = JSON.parseObject(JSON.toJSONString(extracted.get("data"))).toJavaObject(QuoteResultsVo.class);
         String orderId = res.getOrdersNo();
         InsOrders insOrders = orderService.getById(orderId);
         InsOrdersCarInfo carInfo = carInfoService.getByOrderId(insOrders.getId());

+ 6 - 4
tenant/insurance/quotation-summary/src/main/resources/mapper/InsOrdersTrackMapper.xml

@@ -16,10 +16,12 @@
     </resultMap>
 
     <sql id="Base_Column_List">
-        id,order_no,company_id,
-        license_no,status,opt_type,
-        opt_content,`result`,create_time,
-        create_by
+        id,order_no,`module`,
+        sub_module,company_id,license_no,
+        status,opt_type,opt_content,
+        `result`,create_time,create_by,
+        update_by,update_time,change_before,
+        change_after
     </sql>
     <select id="queryList" resultType="com.jzg.commons.entity.vo.OrdersTrackVo">
         SELECT <include refid="Base_Column_List"/>

+ 0 - 23
tenant/organization/src/main/java/com/jzg/organization/client/OrgClient.java

@@ -1,23 +0,0 @@
-package com.jzg.organization.client;
-
-import com.jzg.commons.core.page.HttpResult;
-import com.jzg.commons.entity.dto.MessageAddParam;
-import com.jzg.commons.entity.enums.MessageCodeEnum;
-import com.jzg.commons.entity.po.PtlAgreement;
-import com.jzg.commons.entity.po.SysMessageTemplate;
-import com.jzg.commons.entity.vo.AgreementInfoVo;
-import com.jzg.commons.entity.vo.PersonAreaVo;
-import com.jzg.commons.entity.vo.PtlAgreementCostVo;
-import org.springframework.cloud.openfeign.FeignClient;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.List;
-
-@FeignClient(name="jzg-organization",url = "http://localhost:8084/")
-public interface OrgClient {
-
-    @GetMapping(value = "/messageTemplate/templateGet")
-    public HttpResult<SysMessageTemplate> templateGet(@RequestParam MessageCodeEnum messageCodeEnum,
-                                                      @RequestHeader("Authorization") String authToken);
-
-}

+ 4 - 12
tenant/organization/src/main/java/com/jzg/organization/service/impl/SysUserServiceImpl.java

@@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.jzg.commons.constants.RedisKeyConstants;
-import com.jzg.commons.constants.dict.InsOrderStatusEnum;
 import com.jzg.commons.core.base.BaseController;
 import com.jzg.commons.core.base.HistoryDataService;
 import com.jzg.commons.core.base.StateResult;
@@ -18,12 +17,10 @@ import com.jzg.commons.entity.user.vo.SysTennatVo;
 import com.jzg.commons.entity.vo.*;
 import com.jzg.commons.exception.SystemException;
 import com.jzg.commons.exception.ValidateException;
-import com.jzg.commons.util.AssertionUtils;
 import com.jzg.commons.util.MinioUtils;
 import com.jzg.commons.util.PasswordUtils;
 import com.jzg.commons.util.StringUtils;
 import com.jzg.commons.util.idgen.IdGenerate;
-import com.jzg.organization.client.OrgClient;
 import com.jzg.organization.consumer.templete.UserMessageTemplate;
 import com.jzg.organization.mapper.SysUploadFilesMapper;
 import com.jzg.organization.mapper.SysUserJzgInfoMapper;
@@ -32,7 +29,6 @@ import com.jzg.organization.service.*;
 import com.jzg.organization.state.UserState;
 import com.jzg.organization.state.listener.UserStateListener;
 import jakarta.annotation.Resource;
-import lombok.RequiredArgsConstructor;
 import lombok.Setter;
 import org.redisson.api.RedissonClient;
 import org.springframework.beans.BeanUtils;
@@ -43,7 +39,6 @@ import org.springframework.statemachine.StateMachine;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.math.BigDecimal;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -98,15 +93,15 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     @Autowired
     private BaseController baseController;
 
-    @Autowired
-    private OrgClient orgClient;
-
     @Setter(onMethod_ = @Autowired)
     private UserMessageTemplate userMessageTemplate;
 
     @Autowired
     RedissonClient redissonClient;
 
+    @Autowired
+    private SysMessageTemplateService messageTemplateService;
+
     private String getCurrentAreaCode(String province,String city,String area){
         String userWorkNumber = "";
         if (!area.isEmpty()) {
@@ -429,10 +424,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
      */
     private void addUserMessage(String userName, SysUserJzgInfo sysUserJzgInfo, MessageCodeEnum tplCode) {
         // 获取消息模板 并替换内容
-        HttpResult<SysMessageTemplate>  result = orgClient.templateGet(tplCode,
-                baseController.getToken());
-        SysMessageTemplate template = result.getData();
-        AssertionUtils.isFail(Objects.isNull(template),"获取模板失败!");
+        SysMessageTemplate template = messageTemplateService.getModel(tplCode);
         Map<String, Object> valuesMap = new HashMap<>();
         valuesMap.put("addUser",sysUserJzgInfo.getName());
         valuesMap.put("createBy", userName);

+ 5 - 2
tenant/organization/src/main/resources/mapper/PtlAgreementMapper.xml

@@ -37,6 +37,9 @@
             <result property="updateBy" column="update_by" jdbcType="VARCHAR"/>
             <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
             <result property="isDelete" column="is_delete" jdbcType="TINYINT"/>
+            <result property="jqEntranceFeeRatio" column="jq_entrance_fee_ratio" jdbcType="VARCHAR"/>
+            <result property="syEntranceFeeRatio" column="sy_entrance_fee_ratio" jdbcType="VARCHAR"/>
+            <result property="jyEntranceFeeRatio" column="jy_entrance_fee_ratio" jdbcType="VARCHAR"/>
     </resultMap>
 
     <sql id="Base_Column_List">
@@ -54,7 +57,7 @@
         pa.update_time,pa.is_delete,paa.username,paa.user_abbr as userAbbr,
         suji.name as managerName,sd.name as managerDeptName,suf.file_name as fileName,suf.file_size as fileSize,
         eic.name_simple as company,sdd.name as deptName,
-        pa.api_type
+        pa.api_type,pa.jq_entrance_fee_ratio,pa.sy_entrance_fee_ratio,pa.jy_entrance_fee_ratio
     </sql>
     <select id="queryPage" resultType="com.jzg.commons.entity.vo.AgreementVo">
         select <include refid="Base_Column_List"/>
@@ -171,7 +174,7 @@
         LEFT JOIN sys_dept sdd on pa.dept_id = sdd.id
         LEFT JOIN sys_user_jzg_info suji on pa.custodian_id = suji.user_id
         LEFT JOIN sys_dept sd on suji.dept_id = sd.id
-        LEFT JOIN sys_upload_files suf on pa.file_id = suf.id
+        LEFT JOIN sys_upload_files suf on suf.id = pa.file_id
         LEFT JOIN esm_ins_company eic on pa.company_id = eic.id
         <where>
             <if test="id != null and id != ''">