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

根据补录费用 计算新的出口比例

lipf 1 месяц назад
Родитель
Сommit
31af7c2f18

+ 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());

+ 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