Просмотр исходного кода

Merge remote-tracking branch 'origin/dev_jzg_lipf_v20260622' into dev_jzg_lipf_v20260622

jiakai 1 месяц назад
Родитель
Сommit
079c9b6bec
14 измененных файлов с 131 добавлено и 73 удалено
  1. 1 1
      commons/src/main/java/com/jzg/commons/entity/dto/PtlAgreementCostCopyParam.java
  2. 6 0
      commons/src/main/java/com/jzg/commons/entity/quote/vo/orders/InsFeeCalculateRequest.java
  3. 4 0
      commons/src/main/java/com/jzg/commons/entity/quote/vo/orders/InsOrdersAdd.java
  4. 6 0
      commons/src/main/java/com/jzg/commons/entity/vo/InsFeeOrdersVo.java
  5. 6 0
      commons/src/main/java/com/jzg/commons/entity/vo/InsOrdersOtherInfoVo.java
  6. 5 1
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/utils/BeanCopyUtil.java
  7. 28 4
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersServiceImpl.java
  8. 4 1
      tenant/insurance/quotation-taiping/src/main/java/com/jzg/quotation/taiping/crawler/component/TaiPingCrawlerCacheComponent.java
  9. 2 2
      tenant/insurance/quotation-taiping/src/main/java/com/jzg/quotation/taiping/crawler/component/TaiPingCrawlerRequestComponent.java
  10. 14 0
      tenant/insurance/quotation-taiping/src/main/java/com/jzg/quotation/taiping/crawler/properties/TaiPingCrawlerProperties.java
  11. 0 17
      tenant/organization/src/main/java/com/jzg/organization/aop/OrderOperationLogAspect.java
  12. 29 25
      tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlAgreementCostServiceImpl.java
  13. 5 3
      tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlAgreementServiceImpl.java
  14. 21 19
      tenant/organization/src/main/java/com/jzg/organization/service/impl/SysUserAccountServiceImpl.java

+ 1 - 1
commons/src/main/java/com/jzg/commons/entity/dto/PtlAgreementCostCopyParam.java

@@ -12,7 +12,7 @@ import java.util.List;
 public class PtlAgreementCostCopyParam extends PageRequest {
 
     @Schema(description = "需要复制的费用id")
-    private String costId;
+    private List<String> costIds;
 
     @Schema(description = "需要复制的协议id")
     private String agreementId;

+ 6 - 0
commons/src/main/java/com/jzg/commons/entity/quote/vo/orders/InsFeeCalculateRequest.java

@@ -70,4 +70,10 @@ public class InsFeeCalculateRequest {
 
     @Schema(description = "驾意险出口留点比例(百分比)", example = "0")
     private BigDecimal jyExportKeepPointRatio;
+    
+    /**
+     * 出口费用是否需要扣减1%
+     */
+    @Schema(description = "出口费用是否需要扣减1%")
+    private boolean isrecordByLeader;
 }

+ 4 - 0
commons/src/main/java/com/jzg/commons/entity/quote/vo/orders/InsOrdersAdd.java

@@ -11,10 +11,14 @@ import com.jzg.commons.entity.vo.InsOrdersOtherInfoVo;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
+import java.io.Serial;
+
 @Data
 @Schema(description = "订单录入保存")
 public class InsOrdersAdd extends QuoteVo {
 
+    @Serial
+    private static final long serialVersionUID = 7816759936705939136L;
     @Schema(description = "是否暂存0-保存;1-暂存")
     private int isTemporarily;
 

+ 6 - 0
commons/src/main/java/com/jzg/commons/entity/vo/InsFeeOrdersVo.java

@@ -194,6 +194,12 @@ public class InsFeeOrdersVo {
     @Schema(description = "租户代码")
     private String systemCode;
 
+    /**
+     * 出口费用是否需要扣减1%
+     */
+    @Schema(description = "出口费用是否需要扣减1%")
+    private boolean isrecordByLeader;
+
     public InsFeeOrdersVo(InsFeeOrders insFeeOrders) {
         this.orderNo = insFeeOrders.getOrderNo();
         this.agreementId = insFeeOrders.getAgreementId();

+ 6 - 0
commons/src/main/java/com/jzg/commons/entity/vo/InsOrdersOtherInfoVo.java

@@ -111,4 +111,10 @@ public class InsOrdersOtherInfoVo {
 
     @Schema(description = "评分json")
     private JSONArray scoreJson;
+
+    /**
+     * 出口费用是否需要扣减1%
+     */
+    @Schema(description = "出口费用是否需要扣减1%")
+    private boolean isrecordByLeader;
 }

+ 5 - 1
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/utils/BeanCopyUtil.java

@@ -7,6 +7,8 @@ import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
 import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
 import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
 import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import java.time.LocalDate;
 import java.time.LocalDateTime;
@@ -20,6 +22,7 @@ import java.time.format.DateTimeFormatter;
  */
 public final class BeanCopyUtil {
 
+    private static final Logger log = LoggerFactory.getLogger(BeanCopyUtil.class);
     private static final ObjectMapper OBJECT_MAPPER;
 
     static {
@@ -54,7 +57,8 @@ public final class BeanCopyUtil {
             String json = OBJECT_MAPPER.writeValueAsString(source);
             return OBJECT_MAPPER.readValue(json, clazz);
         } catch (Exception e) {
-            e.printStackTrace();
+            log.error("对象进行深度赋值。报错",e);
+            log.error("source=[{}]", JsonUtils.toJsonString(source));
             throw new RuntimeException("对象深拷贝失败", e);
         }
     }

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

@@ -164,6 +164,9 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
     @Override
     @Transactional(rollbackFor = Exception.class)
     public HttpResult saveOrders(InsOrdersAdd ordersAdd) {
+        log.info("补录订单:ordersAdd=[{}]", JSONUtil.toJsonStr(ordersAdd));
+        ordersAdd.getFeeOrdersVo().setIsrecordByLeader(ordersAdd.getInsOrdersOtherInfo().isIsrecordByLeader());
+
         // 检查输入参数是否为空,如果为空则返回错误信息
         try {
             // 获取订单对象并设置引用编号
@@ -1716,6 +1719,26 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         return taxFactor;
     }
 
+
+    /**
+     * 根据补录费用 计算新的出口比例
+     *
+     * @author lipf
+     * @date 2026/7/20 14:27
+     */
+    private BigDecimal calExportByIsRecordByLeader(boolean isRecordByLeaders, BigDecimal export){
+        if(isRecordByLeaders){
+            if(export != null){
+                if(export.compareTo(new BigDecimal("1") ) > 0){
+                    return BigDecimalUtil.subtract(export,new BigDecimal("1"));
+                }else{
+                    return BigDecimal.ZERO;
+                }
+            }
+        }
+        return export;
+    }
+
     /**
      * 计算保单费用(应收/应付/手续费/跟单费/留点费/出口费等)。
      * 本方法为纯计算接口,不需要已有订单,直接根据保费和费用比例计算费用明细。
@@ -1726,7 +1749,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
      */
     @Override
     public HttpResult<InsFeeCalculateResponse> cvalculateFees(InsFeeCalculateRequest request) {
-
+        log.info("计算补录订单的费用:计算补录单费用=[{}]", JSONUtil.toJsonStr(request));
         if(request.getMobile().isEmpty()){
             return HttpResult.error("请选择业务员!");
         }
@@ -1743,9 +1766,10 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         BigDecimal jqAddThrow = nvl(request.getJqAddThrow());
         BigDecimal syAddThrow = nvl(request.getSyAddThrow());
         BigDecimal jyAddThrow = nvl(request.getJyAddThrow());
-        BigDecimal jqExport   = nvl(request.getJqExport());
-        BigDecimal syExport   = nvl(request.getSyExport());
-        BigDecimal jyExport   = nvl(request.getJyExport());
+        BigDecimal jqExport   = this.calExportByIsRecordByLeader(request.isIsrecordByLeader(),nvl(request.getJqExport()));
+        BigDecimal syExport   = this.calExportByIsRecordByLeader(request.isIsrecordByLeader(),nvl(request.getSyExport()));
+        BigDecimal jyExport   = this.calExportByIsRecordByLeader(request.isIsrecordByLeader(),nvl(request.getJyExport()));
+
         BigDecimal jqEKP      = nvl(request.getJqExportKeepPointRatio());
         BigDecimal syEKP      = nvl(request.getSyExportKeepPointRatio());
         BigDecimal jyEKP      = nvl(request.getJyExportKeepPointRatio());

+ 4 - 1
tenant/insurance/quotation-taiping/src/main/java/com/jzg/quotation/taiping/crawler/component/TaiPingCrawlerCacheComponent.java

@@ -4,6 +4,7 @@ import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONObject;
 import com.jzg.quotation.taiping.crawler.entity.request.TaiPingCrawlerPremiumCalculateRequest;
 import com.jzg.quotation.taiping.crawler.entity.response.TaiPingCrawlerPremiumCalculateData;
+import com.jzg.quotation.taiping.crawler.properties.TaiPingCrawlerProperties;
 import com.jzg.quotation.taiping.crawler.utils.LoginResult;
 import lombok.RequiredArgsConstructor;
 import org.redisson.api.RBucket;
@@ -36,6 +37,8 @@ public class TaiPingCrawlerCacheComponent {
     private static final String XXUHOZTF0EZSO = "xxuhoztF0eZsO";
     private static final String GW_TOKEN_TBATWGW_WAN_SC = "GW_TOKEN_TBATWGW_WAN_SC";
 
+    private final TaiPingCrawlerProperties taiPingCrawlerProperties;
+
     /**
      * 保存订单财险
      *
@@ -94,7 +97,7 @@ public class TaiPingCrawlerCacheComponent {
         String cleaned = null;
         try {
             // 构造 URL
-            URL uri = new URL("http://192.168.1.250:8888/create");
+            URL uri = new URL(taiPingCrawlerProperties.getPythonCreateUrl());
             connection = (HttpURLConnection) uri.openConnection();
 
             // 设置请求方式和头信息

+ 2 - 2
tenant/insurance/quotation-taiping/src/main/java/com/jzg/quotation/taiping/crawler/component/TaiPingCrawlerRequestComponent.java

@@ -78,7 +78,7 @@ public class TaiPingCrawlerRequestComponent {
         String cleaned = null;
         try {
             // 构造 URL
-            URL url = new URL("http://192.168.1.250:8888/tpck");
+            URL url = new URL(taiPingCrawlerProperties.getPythonCkUrl());
             connection = (HttpURLConnection) url.openConnection();
 
             // 设置请求方式和头信息
@@ -126,7 +126,7 @@ public class TaiPingCrawlerRequestComponent {
 
         try {
             // 构造 URL
-            URL uri = new URL("http://192.168.1.250:8888/tphz");
+            URL uri = new URL(taiPingCrawlerProperties.getPythonHzUrl());
             connection = (HttpURLConnection) uri.openConnection();
 
             // 设置请求方式和头信息

+ 14 - 0
tenant/insurance/quotation-taiping/src/main/java/com/jzg/quotation/taiping/crawler/properties/TaiPingCrawlerProperties.java

@@ -29,4 +29,18 @@ public class TaiPingCrawlerProperties {
      */
     private String policyUrl;
 
+    /**
+     * Python创建加密文件接口
+     */
+    private String pythonCreateUrl;
+
+    /**
+     * Python获取cookie接口
+     */
+    private String pythonCkUrl;
+    /**
+     * Python获取后缀接口
+     */
+    private String pythonHzUrl;
+
 }

+ 0 - 17
tenant/organization/src/main/java/com/jzg/organization/aop/OrderOperationLogAspect.java

@@ -99,7 +99,6 @@ public class OrderOperationLogAspect {
             InsOrdersCarInfo carInfo = insOrdersClient.getByOrderId(insOrders.getId());
             track.setLicenseNo(carInfo.getLicenseNo());
             track.setCompanyId(insOrders.getCompanyId());
-            // track.setResult(result.getMsg());
         }else{
             track.setResult("要设置位疑问订单的订单不存在");
         }
@@ -134,7 +133,6 @@ public class OrderOperationLogAspect {
                 InsOrdersCarInfo carInfo = insOrdersClient.getByOrderId(insOrders.getId());
                 track.setLicenseNo(carInfo.getLicenseNo());
                 track.setCompanyId(insOrders.getCompanyId());
-                // track.setResult(result.getMsg());
             }else{
                 track.setResult("要修改的订单不存在");
             }
@@ -176,19 +174,4 @@ public class OrderOperationLogAspect {
         insOrdersClient.save(track);
     }
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
    }

+ 29 - 25
tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlAgreementCostServiceImpl.java

@@ -406,33 +406,37 @@ public class PtlAgreementCostServiceImpl extends ServiceImpl<PtlAgreementCostMap
     @GlobalTransactional
     @Override
     public Boolean costCopy(PtlAgreementCostCopyParam costCopyParam) {
-        PtlAgreementCost ptlAgreementCost = ptlAgreementCostMapper.selectById(costCopyParam.getCostId());
-        List<PtlAgreementCostType> ptlAgreementCostTypes = ptlAgreementCostTypeMapper.selectList(new LambdaQueryWrapper<PtlAgreementCostType>()
-                .eq(PtlAgreementCostType::getPtlAgreementCostId, ptlAgreementCost.getId()));
-        List<PtlAgreementCostRule> ptlAgreementCostRules = ptlAgreementCostRuleMapper.selectList(new LambdaQueryWrapper<PtlAgreementCostRule>()
-                .eq(PtlAgreementCostRule::getPtlAgreementCostId, ptlAgreementCost.getId()));
-
-        // 调整数据 进行copy
-        String costId = IdGenerate.nextId();
-        ptlAgreementCost.setId(costId);
-        ptlAgreementCost.setCoverRuleId(costCopyParam.getCoverRuleId());
-        ptlAgreementCost.setPtlAgreementId(costCopyParam.getAgreementId());
-        ptlAgreementCost.setCostDescribe("复制的费用:" + ptlAgreementCost.getCostDescribe());
-        ptlAgreementCost.setCreateTime(LocalDateTime.now());
-
-        ptlAgreementCostTypes.forEach(item->{
-            item.setId(IdGenerate.nextId());
-            item.setPtlAgreementCostId(costId);
-        });
+        List<String> costIds = costCopyParam.getCostIds();
+        costIds.forEach(oldCostId-> {
+            PtlAgreementCost ptlAgreementCost = ptlAgreementCostMapper.selectById(oldCostId);
+            List<PtlAgreementCostType> ptlAgreementCostTypes = ptlAgreementCostTypeMapper.selectList(new LambdaQueryWrapper<PtlAgreementCostType>()
+                    .eq(PtlAgreementCostType::getPtlAgreementCostId, ptlAgreementCost.getId()));
+            List<PtlAgreementCostRule> ptlAgreementCostRules = ptlAgreementCostRuleMapper.selectList(new LambdaQueryWrapper<PtlAgreementCostRule>()
+                    .eq(PtlAgreementCostRule::getPtlAgreementCostId, ptlAgreementCost.getId()));
+
+            // 调整数据 进行copy
+            String costId = IdGenerate.nextId();
+            ptlAgreementCost.setId(costId);
+            ptlAgreementCost.setCoverRuleId(costCopyParam.getCoverRuleId());
+            ptlAgreementCost.setPtlAgreementId(costCopyParam.getAgreementId());
+            ptlAgreementCost.setCostDescribe("复制的费用:" + ptlAgreementCost.getCostDescribe());
+            ptlAgreementCost.setCreateTime(LocalDateTime.now());
+
+            ptlAgreementCostTypes.forEach(item->{
+                item.setId(IdGenerate.nextId());
+                item.setPtlAgreementCostId(costId);
+            });
 
-        ptlAgreementCostRules.forEach(item->{
-            item.setId(IdGenerate.nextId());
-            item.setPtlAgreementCostId(costId);
-        });
+            ptlAgreementCostRules.forEach(item->{
+                item.setId(IdGenerate.nextId());
+                item.setPtlAgreementCostId(costId);
+            });
+
+            ptlAgreementCostMapper.insert(ptlAgreementCost);
+            ptlAgreementCostTypeMapper.insert(ptlAgreementCostTypes);
+            ptlAgreementCostRuleMapper.insert(ptlAgreementCostRules);
 
-        ptlAgreementCostMapper.insert(ptlAgreementCost);
-        ptlAgreementCostTypeMapper.insert(ptlAgreementCostTypes);
-        ptlAgreementCostRuleMapper.insert(ptlAgreementCostRules);
+        });
 
         return true;
     }

+ 5 - 3
tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlAgreementServiceImpl.java

@@ -568,12 +568,14 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
 
     @Override
     public List<PtlAgreement> getContactAgreement(String companyId) {
-        return baseMapper.selectList(new LambdaQueryWrapper<PtlAgreement>()
-                .eq(PtlAgreement::getIsExternal,1)
-                .eq(PtlAgreement::getIsDelete,0)
+        List<PtlAgreement> ptlAgreements = baseMapper.selectList(new LambdaQueryWrapper<PtlAgreement>()
+                .eq(PtlAgreement::getIsExternal, 1)
+                .eq(PtlAgreement::getIsDelete, 0)
                 .le(PtlAgreement::getStartDate, LocalDateTime.now())
                 .ge(PtlAgreement::getEndDate, LocalDateTime.now())
                 .eq(PtlAgreement::getCompanyId, companyId));
+        log.info("获取保险公司[{}]的外部协议[{}]个", companyId,CollUtil.size(ptlAgreements));
+        return ptlAgreements;
     }
 
     @Override

+ 21 - 19
tenant/organization/src/main/java/com/jzg/organization/service/impl/SysUserAccountServiceImpl.java

@@ -168,27 +168,29 @@ public class SysUserAccountServiceImpl extends ServiceImpl<SysUserAccountMapper,
         param.setUserId(sysUserJzgInfo.getUserId());
         List<InsFeeOrders> insFeeOrdersList = quoteClient.getInsFeeOrderByUserId(param);
         BigDecimal premium = BigDecimal.ZERO;
-        BigDecimal orderAmount = BigDecimal.ZERO;
-        for (InsFeeOrders insFeeOrders : insFeeOrdersList) {
-            premium = premium.add(insFeeOrders.getTotalPremium());
-            orderAmount = orderAmount.add(insFeeOrders.getTotalReceivablePremium());
-        }
+//        BigDecimal orderAmount = BigDecimal.ZERO;
+//        for (InsFeeOrders insFeeOrders : insFeeOrdersList) {
+//            premium = premium.add(insFeeOrders.getTotalPremium());
+//            orderAmount = orderAmount.add(insFeeOrders.getTotalReceivablePremium());
+//        }
         InsFeeOrdersParam distributionParam = new InsFeeOrdersParam();
         distributionParam.setDistributorId(sysUserJzgInfo.getId());
-        List<InsFeeOrders> distribuitonList = quoteClient.getInsFeeOrdersList(distributionParam);
-        BigDecimal distributionPremium = BigDecimal.ZERO;
-        for (InsFeeOrders insFeeOrders : distribuitonList) {
-            if (sysUserJzgInfo.getId().equals(insFeeOrders.getFirstDistributorId())) {
-                distributionPremium = distributionPremium.add(insFeeOrders.getFirstDistributionFee() != null ? insFeeOrders.getFirstDistributionFee() : BigDecimal.ZERO);
-            }
-            if (sysUserJzgInfo.getId().equals(insFeeOrders.getSecondDistributorId())) {
-                distributionPremium = distributionPremium.add(insFeeOrders.getSecondDistributionFee() != null ? insFeeOrders.getSecondDistributionFee() : BigDecimal.ZERO);
-            }
-            if (sysUserJzgInfo.getId().equals(insFeeOrders.getThirdDistributorId())) {
-                distributionPremium = distributionPremium.add(insFeeOrders.getThirdDistributionFee() != null ? insFeeOrders.getThirdDistributionFee() : BigDecimal.ZERO);
-            }
-        }
-        sysUserWalletVo.setTotalIncome(orderAmount.add(distributionPremium));
+//        List<InsFeeOrders> distribuitonList = quoteClient.getInsFeeOrdersList(distributionParam);
+//        BigDecimal distributionPremium = BigDecimal.ZERO;
+//        for (InsFeeOrders insFeeOrders : distribuitonList) {
+//            if (sysUserJzgInfo.getId().equals(insFeeOrders.getFirstDistributorId())) {
+//                distributionPremium = distributionPremium.add(insFeeOrders.getFirstDistributionFee() != null ? insFeeOrders.getFirstDistributionFee() : BigDecimal.ZERO);
+//            }
+//            if (sysUserJzgInfo.getId().equals(insFeeOrders.getSecondDistributorId())) {
+//                distributionPremium = distributionPremium.add(insFeeOrders.getSecondDistributionFee() != null ? insFeeOrders.getSecondDistributionFee() : BigDecimal.ZERO);
+//            }
+//            if (sysUserJzgInfo.getId().equals(insFeeOrders.getThirdDistributorId())) {
+//                distributionPremium = distributionPremium.add(insFeeOrders.getThirdDistributionFee() != null ? insFeeOrders.getThirdDistributionFee() : BigDecimal.ZERO);
+//            }
+//        }
+        // modify by lipf 2026年7月20日09:36:06 调整业务员累计收入的计算逻辑。直接从sys_user_account 表中获取
+        sysUserWalletVo.setTotalIncome(sysUserAccount.getSumAmount());
+        //sysUserWalletVo.setTotalIncome(orderAmount.add(distributionPremium));
         sysUserWalletVo.setSignPremium(premium);
         sysUserWalletVo.setOrderCount(String.valueOf(insFeeOrdersList.size()));
         List<SysUserJzgInfo> sysUserJzgInfoList = sysUserJzgInfoService.list(new LambdaQueryWrapper<SysUserJzgInfo>().eq(SysUserJzgInfo::getReferrerId, sysUserJzgInfo.getId()));