Sfoglia il codice sorgente

Merge remote-tracking branch 'origin/master'

lixiaolong 1 mese fa
parent
commit
49a9692f42
22 ha cambiato i file con 141 aggiunte e 60 eliminazioni
  1. 7 0
      commons/src/main/java/com/jzg/commons/entity/dto/IncomeAndExpenseParam.java
  2. 16 1
      commons/src/main/java/com/jzg/commons/entity/finance/dto/ReceiverSettlementReportDto.java
  3. 3 0
      commons/src/main/java/com/jzg/commons/entity/finance/vo/BatchModifyVo.java
  4. 5 0
      commons/src/main/java/com/jzg/commons/entity/finance/vo/InvoiceRecordQueryVo.java
  5. 6 0
      commons/src/main/java/com/jzg/commons/entity/quote/vo/aggregated/QuoteEchoVo.java
  6. 5 0
      commons/src/main/java/com/jzg/commons/entity/quote/vo/orders/InsOrdersVo.java
  7. 2 4
      commons/src/main/java/com/jzg/commons/entity/report/vo/FeeAuditSummaryParam.java
  8. 10 0
      commons/src/main/java/com/jzg/commons/util/OrderComponts.java
  9. 2 5
      consoleStatistics/src/main/resources/mapper/ReportFeeAuditSummaryMapper.xml
  10. 2 2
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/build/DaJiaCrawlerQuoteResultsVoBuild.java
  11. 4 8
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/aop/OrderOperationLogAspect.java
  12. 4 1
      tenant/insurance/quotation-summary/src/main/resources/mapper/InsOrdersMapper.xml
  13. 10 1
      tenant/insurance/quotation-taikang/src/main/java/com/jzg/quotation/taikang/crawler/build/TkCrawlerQuoteResultsBuild.java
  14. 2 0
      tenant/insurance/quotation-yangguang/src/main/java/com/jzg/quotation/yangguang/api/build/YangGuangApiQuoteResultsVoBuild.java
  15. 4 1
      tenant/insurance/quotation-zhongan/src/main/java/com/jzg/quotation/zhongan/crawler/build/ZhongAnCrawlerQuoteResultsVoBuild.java
  16. 5 2
      tenant/insurance/quotation-zhongan/src/main/java/com/jzg/quotation/zhongan/crawler/entity/request/ZhongAnCrawlerQuoteRequest.java
  17. 7 7
      tenant/insurance/quotation-zhongan/src/main/java/com/jzg/quotation/zhongan/crawler/service/Impl/ZhongAnCrawlerRequestImpl.java
  18. 2 0
      tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quotation/zhongmei/crawler/build/ZmCrawlerQuoteResultVoBuild.java
  19. 4 3
      tenant/organization/src/main/java/com/jzg/organization/aop/OrderOperationLogAspect.java
  20. 30 21
      tenant/organization/src/main/java/com/jzg/organization/service/impl/ReceivableServiceImpl.java
  21. 2 1
      tenant/organization/src/main/java/com/jzg/organization/service/impl/SysUserAccountServiceImpl.java
  22. 9 3
      tenant/organization/src/main/resources/mapper/ReceivableMapper.xml

+ 7 - 0
commons/src/main/java/com/jzg/commons/entity/dto/IncomeAndExpenseParam.java

@@ -31,4 +31,11 @@ public class IncomeAndExpenseParam {
     @Schema(description = "用户序号")
     private String userId;
 
+    public IncomeAndExpenseParam(String userId,String systemCode) {
+        this.systemCode = systemCode;
+        this.userId = userId;
+    }
+
+    public IncomeAndExpenseParam() {
+    }
 }

+ 16 - 1
commons/src/main/java/com/jzg/commons/entity/finance/dto/ReceiverSettlementReportDto.java

@@ -1,5 +1,6 @@
 package com.jzg.commons.entity.finance.dto;
 
+import com.alibaba.excel.annotation.ExcelProperty;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
@@ -14,48 +15,62 @@ import java.math.BigDecimal;
 @Data
 public class ReceiverSettlementReportDto {
     @Schema(description = "对接人")
+    @ExcelProperty("对接人")
     private String receiver;
 
     @Schema(description = "保险公司")
+    @ExcelProperty("保险公司")
     private String companyName;
 
     @Schema(description = "保险公司id")
+    @ExcelProperty("保险公司id")
     private String companyId;
 
     @Schema(description = "保险公司名称及父级的名称")
+    @ExcelProperty("保险公司名称及父级的名称")
     private String companyALlName;
 
     @Schema(description = "应收总计")
+    @ExcelProperty("应收总计")
     private String totalReceivable;
 
     @Schema(description = "应收手续费")
+    @ExcelProperty("应收手续费")
     private String superviseFee;
 
     @Schema(description = "应收跟单费")
+    @ExcelProperty("应收跟单费")
     private String followFee;
 
     @Schema(description = "已结算手续费")
+    @ExcelProperty("已结算手续费")
     private String settledSuperviseFee;
 
     @Schema(description = "已结算跟单费")
+    @ExcelProperty("已结算跟单费")
     private String settledFollowFee;
 
     @Schema(description = "已结算总计")
+    @ExcelProperty("已结算总计")
     private String settledAmount;
 
     @Schema(description = "未结算手续费")
+    @ExcelProperty("未结算手续费")
     private String unSettledSuperviseFee;
 
     @Schema(description = "未结算跟单费")
+    @ExcelProperty("未结算跟单费")
     private String unSettledFollowFee;
 
-
     @Schema(description = "未结算总计")
+    @ExcelProperty("未结算总计")
     private String unSettledAmount;
 
     @Schema(description = "已结算发票的发票号")
+    @ExcelProperty("已结算发票的发票号")
     private String invoiceIds;
 
     @Schema(description = "回款差额")
+    @ExcelProperty("回款差额")
     private BigDecimal totalPaymentDifference;
 }

+ 3 - 0
commons/src/main/java/com/jzg/commons/entity/finance/vo/BatchModifyVo.java

@@ -51,6 +51,9 @@ public class BatchModifyVo {
     @Schema(description = "对接人姓名")
     private String contractUserName;
 
+    @Schema(description = "对接人手机号")
+    private String contractUserPhone;
+
     @Schema(description = "对接人手机号")
     private String contractPhone;
 

+ 5 - 0
commons/src/main/java/com/jzg/commons/entity/finance/vo/InvoiceRecordQueryVo.java

@@ -26,6 +26,11 @@ public class InvoiceRecordQueryVo extends PageRequest {
      */
     private String invoiceType;
 
+    /**
+     * 开票号
+     */
+    private String invoiceNo;
+
     /**
      * 开票类型
      */

+ 6 - 0
commons/src/main/java/com/jzg/commons/entity/quote/vo/aggregated/QuoteEchoVo.java

@@ -62,6 +62,10 @@ public class QuoteEchoVo extends QuoteVo {
         private String orderStatus;
         private String companyName;
         private String productsName;
+
+        private String dockingPerson;
+        private String dockingPersonPhone;
+
         /**
          * 协议id
          */
@@ -345,6 +349,8 @@ public class QuoteEchoVo extends QuoteVo {
         this.getOrder().setSigningTime(insOrdersVo.getPayTime());
         this.getOrder().setOrderType(insOrdersVo.getOrderType());
         this.getOrder().setEntryStatus(insOrdersVo.getEntryStatus());
+        this.getOrder().setDockingPerson (insOrdersVo.getDockingPerson());
+        this.getOrder().setDockingPersonPhone(insOrdersVo.getDockingPersonPhone());
         if (Objects.nonNull(insOrdersVo.getSpecialInfoVo())) {
             this.setCiSpecialInfoVo(insOrdersVo.getSpecialInfoVo().stream().filter(companyClauseVo -> companyClauseVo.getRiskCode().equals("0507")).collect(Collectors.toList()));
             this.setBiSpecialInfoVo(insOrdersVo.getSpecialInfoVo().stream().filter(companyClauseVo -> companyClauseVo.getRiskCode().equals("0510")).collect(Collectors.toList()));

+ 5 - 0
commons/src/main/java/com/jzg/commons/entity/quote/vo/orders/InsOrdersVo.java

@@ -76,6 +76,11 @@ public class InsOrdersVo extends QuoteVo {
     @Schema(description = "订单类型")
     private String orderType;
 
+    @Schema(description = "对接人姓名")
+    private String dockingPerson;
+    @Schema(description = "对接人手机号")
+    private String dockingPersonPhone;
+
     @Schema(description = "录单时间")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private LocalDateTime createTime;

+ 2 - 4
commons/src/main/java/com/jzg/commons/entity/report/vo/FeeAuditSummaryParam.java

@@ -7,6 +7,7 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 
 import java.time.LocalDate;
+import java.util.List;
 
 /**
  * 费用审核汇总统计请求参数
@@ -18,9 +19,6 @@ public class FeeAuditSummaryParam extends PageRequest {
 
     @Schema(description = "审核开始时间")
     @JsonFormat(pattern = "yyyy-MM-dd")
-    private LocalDate auditTimeStart;
+    private List<String> checkTime;
 
-    @Schema(description = "审核结束时间")
-    @JsonFormat(pattern = "yyyy-MM-dd")
-    private LocalDate auditTimeEnd;
 }

+ 10 - 0
commons/src/main/java/com/jzg/commons/util/OrderComponts.java

@@ -45,6 +45,16 @@ public class OrderComponts {
         nameMap.put("insFeeOrders.totalReceivablePremium","总应收费用");
         nameMap.put("insFeeOrders.totalPayablePremium","总应付费用");
         nameMap.put("insFeeOrders.totalExportPremium","总出口费用");
+
+        nameMap.put("costRatio.jqCommissionRatio","交强险手续费比例");
+        nameMap.put("costRatio.syCommissionRatio","商业险手续费比例");
+        nameMap.put("costRatio.jyCommissionRatio","驾意险手续费比例");
+        nameMap.put("insFeeOrders.jqCommissionPremium","交强险手续费费用");
+        nameMap.put("insFeeOrders.syCommissionPremium","商业险手续费费用");
+        nameMap.put("insFeeOrders.jyCommissionPremium","驾意险手续费费用");
+        nameMap.put("insFeeOrders.signTime","签单时间");
+        nameMap.put("order.dockingPerson","对接人姓名");
+        nameMap.put("order.dockingPersonPhone","对接人手机号");
         return nameMap;
     }
 

+ 2 - 5
consoleStatistics/src/main/resources/mapper/ReportFeeAuditSummaryMapper.xml

@@ -21,11 +21,8 @@
         LEFT JOIN ins_orders io ON ifa.order_no = io.id AND io.is_delete = 0
         <where>
             ifa.is_delete = 0
-            <if test="param.auditTimeStart != null">
-                AND (ifa.audit_time &gt;= #{param.auditTimeStart} OR ifa.audit_time IS NULL)
-            </if>
-            <if test="param.auditTimeEnd != null">
-                AND (ifa.audit_time &lt;= #{param.auditTimeEnd} OR ifa.audit_time IS NULL)
+            <if test="param.checkTime != null and  param.checkTime.size() > 0">
+                AND (ifa.audit_time BETWEEN #{param.checkTime[0]} AND #{param.checkTime[1]}} OR ifa.audit_time IS NULL)
             </if>
         </where>
         GROUP BY io.company_id, io.company_name

+ 2 - 2
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/build/DaJiaCrawlerQuoteResultsVoBuild.java

@@ -214,8 +214,8 @@ public final class DaJiaCrawlerQuoteResultsVoBuild {
             BusinessInsuranceDTO.CoefficientInfoDTO coefficientInfo1 = businessInsurance.getCoefficientInfo();
             scoreArray.add(new JSONObject()
                     .fluentPut("scoreName","商业险建议折扣")
-                    .fluentPut("scoreKey","entireDiscount")
-                    .fluentPut("score",coefficientInfo1.getEntireDiscount()));
+                    .fluentPut("scoreKey","pricingAdjustValue")
+                    .fluentPut("score",coefficientInfo1.getPricingAdjustValue()));
             scoreArray.add(new JSONObject()
                     .fluentPut("scoreName","商业险手续费")
                     .fluentPut("scoreKey","handFeeBi")

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

@@ -1,6 +1,7 @@
 package com.jzg.quotation.summary.aop;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.json.JSONConfig;
 import cn.hutool.json.JSONUtil;
 import com.alibaba.fastjson2.JSON;
 import com.jzg.commons.constants.dict.InsOrderStatusEnum;
@@ -83,6 +84,8 @@ public class OrderOperationLogAspect {
         }
         ExpressionParser parser = new SpelExpressionParser();
         Object result = null;
+        // 创建 JSONConfig 并设置日期格式, 会把LocalDate 和LocalDateTime 都转换为 包含时分秒的格式(后续有了更好的办法再优化)
+        JSONConfig jsonConfig = JSONConfig.create().setDateFormat("yyyy-MM-dd HH:mm:ss");
         switch (log.optType().getCode()){
             // 创建订单
             case 0:
@@ -169,16 +172,9 @@ public class OrderOperationLogAspect {
                 QuoteEchoVo detailVoOld = insFeeAuditService.auditInfo(vo.getOrderNo());
                 result = joinPoint.proceed();
                 QuoteEchoVo detailVoNew = insFeeAuditService.auditInfo(vo.getOrderNo());
-                Map<String, List<String>> diffMap = JsonDiffUtil.compareJson(JSONUtil.toJsonStr(detailVoOld), JSONUtil.toJsonStr(detailVoNew), new HashSet<>());
+                Map<String, List<String>> diffMap = JsonDiffUtil.compareJson(JSONUtil.toJsonStr(detailVoOld,jsonConfig), JSONUtil.toJsonStr(detailVoNew,jsonConfig), new HashSet<>());
                 this.saveCostInfo(result,log, vo,diffMap);
                 break;
-            // 批量修改比例
-            case 16:
-                logger.info("批量修改比例.log.orderSpEl()=[{}]",log.orderSpEl());
-                BatchModifyVo batchModifyVo = parser.parseExpression(log.orderSpEl()).getValue(context, BatchModifyVo.class);
-                result = joinPoint.proceed();
-                this.batchModify(result,log, batchModifyVo);
-                break;
             // 设为疑问订单
             case 17:
                 logger.info("设置为疑问订单.log.orderSpEl()=[{}]",log.orderSpEl());

+ 4 - 1
tenant/insurance/quotation-summary/src/main/resources/mapper/InsOrdersMapper.xml

@@ -208,6 +208,8 @@
         <result property="auditName" column="audit_name" jdbcType="VARCHAR"/>
         <result property="errorMessage" column="error_message" jdbcType="VARCHAR"/>
         <result property="orderType" column="order_type" jdbcType="VARCHAR"/>
+        <result property="dockingPerson" column="docking_person" jdbcType="VARCHAR"/>
+        <result property="dockingPersonPhone" column="docking_person_phone" jdbcType="VARCHAR"/>
         <association property="insOrders" column="{id=id}" select="selectOrdersById"/>
         <association property="carInfoVo" column="{orderNo=id}" select="selectOrdersCarInfoByOrderNo"/>
         <association property="insOrdersOtherInfo" column="{orderNo=id}" select="selectOrdersOtherByOrderNo"/>
@@ -793,7 +795,8 @@
         WHEN 2 THEN '代客录单'
         WHEN 3 THEN '补录订单'
         ELSE ''
-        END AS order_type
+        END AS order_type,
+        docking_person , docking_person_phone
         from ins_orders
         <where>
             and is_delete = 0

+ 10 - 1
tenant/insurance/quotation-taikang/src/main/java/com/jzg/quotation/taikang/crawler/build/TkCrawlerQuoteResultsBuild.java

@@ -116,6 +116,15 @@ public class TkCrawlerQuoteResultsBuild {
             quoteResultsVo.setKindInfoVo(buildKindInfoVo(commonQuoteVo.getKindInfoVo(), preciseInitResult.getCiKindsVo()));
         }
 
+        // 车辆折旧价
+        if (CollectionUtils.isNotEmpty(preciseInitResult.getCiKindsVo())) {
+            preciseInitResult.getCiKindsVo().forEach(kind -> {
+                if ("101".equals(kind.getKindCode())) {
+                    quoteResultsVo.setCarActualValue(kind.getQuoteAmount());
+                }
+            });
+        }
+
         // 交强保费 车船税 商业保费
         TKPremium premium = preciseInitResult.getPremium();
         // 设置交强险保费
@@ -146,7 +155,7 @@ public class TkCrawlerQuoteResultsBuild {
         quoteResultsVo.getScoreVo().setSyRenewal(convertRenewalFlag(preciseInitResult.getFlag().getRenewalCIFlag()));
         // 设置订单状态
         quoteResultsVo.setQuoteStatusEnum(InsOrderStatusEnum.WAIT_AUDIT);
-        // 缓存报价书据数据
+        // 缓存报价数据
         redisCacheUtil.setPreciseInitResult(preciseInitResult, quoteResultsVo.getOrdersNo());
         // 评分
         JSONArray scoreJson = new JSONArray();

+ 2 - 0
tenant/insurance/quotation-yangguang/src/main/java/com/jzg/quotation/yangguang/api/build/YangGuangApiQuoteResultsVoBuild.java

@@ -42,6 +42,8 @@ public final class YangGuangApiQuoteResultsVoBuild {
             List<KindInfoVo> kindInfoVo = buildKindInfoVo(quoteVo.getKindInfoVo(), yangGuangAccuracyCalculateResponse.getKindList());
             quoteResultsVo.setKindInfoVo(kindInfoVo);
         }
+        // 车辆折旧价
+        quoteResultsVo.setCarActualValue(new BigDecimal(yangGuangAccuracyCalculateResponse.getItemcar().getActualValue()));
         // 交强保费 车船税 商业保费
         buildPremium(quoteResultsVo, yangGuangAccuracyCalculateResponse);
         quoteResultsVo.setQuoteStatusEnum(InsOrderStatusEnum.WAIT_AUDIT);

+ 4 - 1
tenant/insurance/quotation-zhongan/src/main/java/com/jzg/quotation/zhongan/crawler/build/ZhongAnCrawlerQuoteResultsVoBuild.java

@@ -10,6 +10,7 @@ import com.jzg.commons.entity.quote.vo.aggregated.QuoteResultsVo;
 import com.jzg.commons.entity.quote.vo.QuoteVo;
 import com.jzg.commons.entity.quote.vo.base.OrderBase;
 import com.jzg.quotation.commons.constant.enums.quote.RenewalEnum;
+import com.jzg.quotation.zhongan.crawler.entity.response.ZhongAnCrawlerQuoteBaseResponse;
 import com.jzg.quotation.zhongan.crawler.entity.response.ZhongAnCrawlerQuoteResponse;
 import com.jzg.quotation.zhongan.crawler.entity.response.ZhongAnCrawlerUploadInitDateResponse;
 
@@ -24,7 +25,7 @@ import java.util.stream.Collectors;
  * @date: 2025/5/12 17:19
  **/
 public class ZhongAnCrawlerQuoteResultsVoBuild {
-    public static QuoteResultsVo buildQuoteResultsVo(QuoteVo quoteVo, ZhongAnCrawlerQuoteResponse.ValueDTO.DataDTO dataDTO, ZhongAnCrawlerUploadInitDateResponse uploadInitDateResponse) {
+    public static QuoteResultsVo buildQuoteResultsVo(QuoteVo quoteVo, ZhongAnCrawlerQuoteResponse.ValueDTO.DataDTO dataDTO, ZhongAnCrawlerQuoteBaseResponse quoteBaseResponse) {
         OrderBase orderBase = quoteVo.getOrder();
         QuoteResultsVo quoteResultsVo = new QuoteResultsVo();
         quoteResultsVo.setOrdersNo(orderBase.getOrdersNo());
@@ -38,6 +39,8 @@ public class ZhongAnCrawlerQuoteResultsVoBuild {
         quoteResultsVo.setKindInfoVo(kindInfoVo);
         // 评分
         quoteResultsVo.setScoreVo(buildScoreVo(dataDTO));
+        // 车辆折旧价
+        quoteResultsVo.setCarActualValue(new BigDecimal(quoteBaseResponse.getValue().getBaseInfo().getVehicleActualPrice()));
 
         // 交强保费 车船税 商业保费
         buildPremium(quoteResultsVo, dataDTO);

+ 5 - 2
tenant/insurance/quotation-zhongan/src/main/java/com/jzg/quotation/zhongan/crawler/entity/request/ZhongAnCrawlerQuoteRequest.java

@@ -97,13 +97,16 @@ public class ZhongAnCrawlerQuoteRequest{
         }
         // 商业险险种
         List<KindInfoVo> kindInfoVoList = quoteVo.getKindInfoVo();
-//        List<ZhongAnCrawlerQuoteBaseResponse.ValueDTO.QuoteCoverageListDTO> quoteCoverageList = quoteBaseResponse.getValue().getQuoteCoverageList();
         List<CoverageInfoDTO> coverageInfoDTOS = new ArrayList<>();
         if (kindInfoVoList != null && kindInfoVoList.size() > 0) {
             for (KindInfoVo kindInfo: kindInfoVoList) {
                 CoverageInfoDTO coverageInfoDTO = new CoverageInfoDTO();
                 coverageInfoDTO.setProductId(kindInfo.getKindCode());
-                coverageInfoDTO.setAmount(kindInfo.getAmount());
+                if (kindInfo.getKindCode().equals("1510030943") || kindInfo.getKindCode().equals("1510052324")) {
+                    coverageInfoDTO.setAmount(quoteBaseResponse.getValue().getBaseInfo().getVehicleActualPrice());
+                } else {
+                    coverageInfoDTO.setAmount(kindInfo.getAmount());
+                }
                 coverageInfoDTOS.add(coverageInfoDTO);
             }
         }

+ 7 - 7
tenant/insurance/quotation-zhongan/src/main/java/com/jzg/quotation/zhongan/crawler/service/Impl/ZhongAnCrawlerRequestImpl.java

@@ -203,12 +203,6 @@ public class ZhongAnCrawlerRequestImpl implements ZhongAnCrawlerRequest {
         //报价
         ZhongAnCrawlerQuoteRequest quoteRequest = new ZhongAnCrawlerQuoteRequest(quoteVo, parameters, quoteBaseResponse);
         ZhongAnCrawlerQuoteResponse quoteResponse = zhongAnCrawlerRequestComponent.quote(quoteRequest, headers);
-        if (quoteResponse != null && StringUtils.isNotEmpty(quoteResponse.getErrorMsg())) {
-            QuoteResultsVo quoteResultsVo = new QuoteResultsVo();
-            quoteResultsVo.setErrorMessage(quoteResponse.getErrorMsg());
-            quoteResultsVo.setQuoteStatusEnum(InsOrderStatusEnum.QUOTE_FAIL);
-            return quoteResultsVo;
-        }
         // 处理重复投保
         if (ObjectUtils.isNotEmpty(quoteResponse.getAdditionalInfo())) {
             if (quoteResponse.getAdditionalInfo().getInsureMessageF() != null && quoteResponse.getAdditionalInfo().getInsureMessageF().contains("重复投保")) {
@@ -226,6 +220,12 @@ public class ZhongAnCrawlerRequestImpl implements ZhongAnCrawlerRequest {
                 }
             }
         }
+        if (quoteResponse != null && StringUtils.isNotEmpty(quoteResponse.getErrorMsg())) {
+            QuoteResultsVo quoteResultsVo = new QuoteResultsVo();
+            quoteResultsVo.setErrorMessage(quoteResponse.getErrorMsg());
+            quoteResultsVo.setQuoteStatusEnum(InsOrderStatusEnum.QUOTE_FAIL);
+            return quoteResultsVo;
+        }
 
 
         //确认报价
@@ -269,7 +269,7 @@ public class ZhongAnCrawlerRequestImpl implements ZhongAnCrawlerRequest {
             zhongAnCrawlerOrder.setSyApplyNo(uploadInitDateResponse.getValue().getDatas().getBizApplyNo());
         }
         zhongAnCrawlerOrderService.save(zhongAnCrawlerOrder);
-        return ZhongAnCrawlerQuoteResultsVoBuild.buildQuoteResultsVo(quoteVo, quoteResponse.getValue().getDatas(), uploadInitDateResponse);
+        return ZhongAnCrawlerQuoteResultsVoBuild.buildQuoteResultsVo(quoteVo, quoteResponse.getValue().getDatas(), quoteBaseResponse);
     }
 
     /**

+ 2 - 0
tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quotation/zhongmei/crawler/build/ZmCrawlerQuoteResultVoBuild.java

@@ -38,6 +38,8 @@ public final class ZmCrawlerQuoteResultVoBuild {
         //商业险
         quoteResultsVo.setBiRiskInfoVo(buildbiInfo(quotedPriceResponse));
         quoteResultsVo.setKindInfoVo(buildKindInfoList(quotedPriceResponse, quoteVo));
+        // 车辆折旧价
+        quoteResultsVo.setCarActualValue(new BigDecimal(quotedPriceResponse.getBussinessMain().getInsuredObject().getPolicyCar().getActualValue()));
         // 评分
         quoteResultsVo.setScoreVo(buildScore(quotedPriceResponse));
         //设置保费,车船税,投保单号

+ 4 - 3
tenant/organization/src/main/java/com/jzg/organization/aop/OrderOperationLogAspect.java

@@ -1,6 +1,7 @@
 package com.jzg.organization.aop;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.json.JSONConfig;
 import cn.hutool.json.JSONUtil;
 import com.jzg.commons.core.page.HttpResult;
 import com.jzg.commons.entity.finance.vo.BatchModifyVo;
@@ -8,7 +9,6 @@ import com.jzg.commons.entity.orders.po.InsOrders;
 import com.jzg.commons.entity.orders.po.InsOrdersCarInfo;
 import com.jzg.commons.entity.orders.po.InsOrdersTrack;
 import com.jzg.commons.entity.quote.vo.aggregated.QuoteEchoVo;
-import com.jzg.commons.entity.vo.PtlAgreementCostRatioVo;
 import com.jzg.commons.entity.vo.QuestionOrder;
 import com.jzg.commons.util.JsonDiffUtil;
 import com.jzg.commons.util.OrderComponts;
@@ -146,6 +146,8 @@ public class OrderOperationLogAspect {
             logger.info("批量修改没有传入订单号");
             return;
         }
+        // 创建 JSONConfig 并设置日期格式, 会把LocalDate 和LocalDateTime 都转换为 包含时分秒的格式(后续有了更好的办法再优化)
+        JSONConfig jsonConfig = JSONConfig.create().setDateFormat("yyyy-MM-dd HH:mm:ss");
         for (String orderNo : orderNos) {
             InsOrdersTrack track = new InsOrdersTrack();
             track.setModule(log.module());
@@ -154,8 +156,7 @@ public class OrderOperationLogAspect {
             track.setOptContent(log.description());
             QuoteEchoVo detailVoOld = oldOrders.get(orderNo);
             QuoteEchoVo detailVoNew = newOrders.get(orderNo);
-            Map<String, List<String>> diffMap = JsonDiffUtil.compareJson(JSONUtil.toJsonStr(detailVoOld), JSONUtil.toJsonStr(detailVoNew), new HashSet<>());
-
+            Map<String, List<String>> diffMap = JsonDiffUtil.compareJson(JSONUtil.toJsonStr(detailVoOld,jsonConfig), JSONUtil.toJsonStr(detailVoNew,jsonConfig), new HashSet<>());
             if(CollUtil.isNotEmpty(diffMap)){
                 List<String> oldItems = new ArrayList<>();
                 List<String> newItems = new ArrayList<>();

+ 30 - 21
tenant/organization/src/main/java/com/jzg/organization/service/impl/ReceivableServiceImpl.java

@@ -3,6 +3,7 @@ package com.jzg.organization.service.impl;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.collection.ListUtil;
 import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.lang.tree.Tree;
 import cn.hutool.core.lang.tree.TreeNodeConfig;
 import cn.hutool.core.lang.tree.TreeUtil;
@@ -756,6 +757,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
     public List<FollowCompanyFeeVO> followCompanySuperviseSettlementReport(SettlementReportQueryVo settlementReportQueryVo) {
         log.info("私有协议-跟单结算记录-结算报表: settlementReportQueryVo=[{}]", JSONUtil.toJsonStr(settlementReportQueryVo));
         List<FollowCompanyFeeVO> resultList = new ArrayList<>();
+        String invoiceType = settlementReportQueryVo.getInvoiceType();
 
         // 1. 一次性获取保险公司全量Map,全局复用
         Map<String, EsmInsCompany> companyMap = getAllInsCompanyMap();
@@ -771,22 +773,25 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
         }
 
         // 应收项为空时才去补充数据,不为空时不补充数据,补充数据是因为联查了invoice和settlement表,所以没开票和结算的数据会被过滤掉,才需要补充数据
-        List<InsPlyIncomeDto> incomeDtoList = CollUtil.newArrayList();
-        if (StrUtil.isBlank(settlementReportQueryVo.getInvoiceType())){
-            // 3. 查询额外其他费用收入数据,补充到结果集
-            incomeDtoList = queryFollowIncomeData(settlementReportQueryVo);
-            if (CollUtil.isEmpty(incomeDtoList)) {
-                return resultList;
-            }else{
-                // 如果JyPremium不为0,则设置发票类型为4
-                incomeDtoList.stream().forEach(item -> {
-                    if (StrUtil.isNotBlank(item.getJyPremium()) && !NumberUtil.equals(BigDecimal.ZERO, new BigDecimal(item.getJyPremium()))){
-                        item.setInvoiceType(InvoiceTypeEnum.FEE_4.getCode());
-                    }else{
-                        item.setInvoiceType(InvoiceTypeEnum.FEE_2.getCode());
-                    }
-                });
-                List<InsPlyIncomeDto> copyList = CollUtil.newArrayList();
+        List<InsPlyIncomeDto> incomeDtoList = queryFollowIncomeData(settlementReportQueryVo);
+        if (CollUtil.isEmpty(incomeDtoList)) {
+            return resultList;
+        }else{
+            // 如果JyPremium不为0,则设置发票类型为4
+            incomeDtoList.stream().forEach(item -> {
+                if (StrUtil.isNotBlank(item.getJyPremium()) && !NumberUtil.equals(BigDecimal.ZERO, new BigDecimal(item.getJyPremium()))){
+                    item.setInvoiceType(InvoiceTypeEnum.FEE_4.getCode());
+                }else{
+                    item.setInvoiceType(InvoiceTypeEnum.FEE_2.getCode());
+                }
+            });
+            // 过滤一下invoiceType等于请求接口入参的数据
+            incomeDtoList = incomeDtoList.stream()
+                    .filter(income -> StrUtil.isBlank(invoiceType)
+                            || invoiceType.equals(income.getInvoiceType()))
+                    .toList();
+            List<InsPlyIncomeDto> copyList = CollUtil.newArrayList();
+            if (CollUtil.isNotEmpty(incomeDtoList)){
                 // 如果有发票类型为4的,则复制一条4的数据,完全一致,但发票类型为2
                 incomeDtoList.stream().filter(item -> InvoiceTypeEnum.FEE_4.getCode().equals(item.getInvoiceType())).forEach(item -> {
                     InsPlyIncomeDto incomeDto = new InsPlyIncomeDto();
@@ -794,7 +799,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
                     incomeDto.setInvoiceType(InvoiceTypeEnum.FEE_2.getCode());
                     copyList.add(incomeDto);
                 });
-                incomeDtoList.addAll(copyList);
+                incomeDtoList = CollUtil.addAll(incomeDtoList, copyList).stream().toList();
             }
         }
 
@@ -978,7 +983,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
         boolean noFilterCond = StrUtil.isBlank(status)
                 && (StrUtil.isBlank(invoiceStartTime) || StrUtil.isBlank(invoiceEndTime))
                 && (StrUtil.isBlank(settleStartTime) || StrUtil.isBlank(settleEndTime));
-        if (noFilterCond) {
+        if (noFilterCond || CollUtil.isEmpty(incomeList)) {
             return incomeList;
         }
 
@@ -1954,7 +1959,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
             // 处理结算数据
             // 未完全结算完成
             InsPlyIncomeInvoiceSettlement settlement = new InsPlyIncomeInvoiceSettlement(invoice.getId(), settlementVo.getActualReceivedAmount(),
-                    DateTime.now(), settlementVo.getSettlementPaymentDifference(), settlementVo.getSettlementPaymentReason());
+                    DateUtil.parse(settlementVo.getReceivePaymentDate(), "yyyy-MM-dd HH:mm:ss"), settlementVo.getSettlementPaymentDifference(), settlementVo.getSettlementPaymentReason());
             insPlyIncomeInvoiceSettlementMapper.insert(settlement);
 
             if (CollectionUtils.isNotEmpty(settlementVo.getAttachmentIds())) {
@@ -2791,7 +2796,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
             // 处理结算数据
             // 未完全结算完成
             InsPlyIncomeInvoiceSettlement settlement = new InsPlyIncomeInvoiceSettlement(settlementVo.getInvoicingId(), settlementVo.getActualReceivedAmount(),
-                    DateTime.now(), settlementVo.getSettlementPaymentDifference(), settlementVo.getSettlementPaymentReason());
+                    DateUtil.parse(settlementVo.getReceivePaymentDate(), "yyyy-MM-dd HH:mm:ss"), settlementVo.getSettlementPaymentDifference(), settlementVo.getSettlementPaymentReason());
             insPlyIncomeInvoiceSettlementMapper.insert(settlement);
 
             if (CollectionUtils.isNotEmpty(settlementVo.getAttachmentIds())) {
@@ -3687,6 +3692,9 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
     @Transactional(rollbackFor = Exception.class)
     public boolean batchModify(BatchModifyVo batchModifyVo) {
         log.info("批量修改应收订单: batchModifyVo=[{}]", JSONUtil.toJsonStr(batchModifyVo));
+        if(StrUtil.isEmpty(batchModifyVo.getContractPhone())){
+            batchModifyVo.setContractPhone(batchModifyVo.getContractUserPhone());
+        }
         List<String> incomeIds = batchModifyVo.getIncomeIds();
         if (CollUtil.isEmpty(incomeIds)) {
             throw new ServiceException("请勾选要批量修改的应收订单");
@@ -4553,7 +4561,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
             // 处理结算数据
             // 未完全结算完成
             InsPlyIncomeInvoiceSettlement settlement = new InsPlyIncomeInvoiceSettlement(settlementVo.getInvoicingId(), settlementVo.getActualReceivedAmount(),
-                    DateTime.now(), settlementVo.getSettlementPaymentDifference(), settlementVo.getSettlementPaymentReason());
+                    DateUtil.parse(settlementVo.getReceivePaymentDate(), "yyyy-MM-dd"), settlementVo.getSettlementPaymentDifference(), settlementVo.getSettlementPaymentReason());
             insPlyIncomeInvoiceSettlementMapper.insert(settlement);
 
             if (CollectionUtils.isNotEmpty(settlementVo.getAttachmentIds())) {
@@ -6300,6 +6308,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
         BigDecimal subtract = BigDecimalUtil.subtract(settlementAmount, insPlyIncomeInvoice.getReceivableSupervisePremium());
         if (CollUtil.isNotEmpty(insPlyIncomeInvoiceSettlements)){
             if(subtract.compareTo(BigDecimal.ZERO) != 0){
+                // 点标识结清的时候不更新收款日期,和wwq确认过
                 InsPlyIncomeInvoiceSettlement insPlyIncomeInvoiceSettlement = insPlyIncomeInvoiceSettlements.get(0);
                 insPlyIncomeInvoiceSettlement.setSettlementPaymentDifference(subtract);
                 insPlyIncomeInvoiceSettlement.setSettlementPaymentReason(settlementPaymentReason);

+ 2 - 1
tenant/organization/src/main/java/com/jzg/organization/service/impl/SysUserAccountServiceImpl.java

@@ -314,6 +314,7 @@ public class SysUserAccountServiceImpl extends ServiceImpl<SysUserAccountMapper,
         }
         param.setCreateTimeStart(createTimeStart);
         param.setCreateTimeEnd(createTimeEnd);
+        List<IncomeAndExpenseList> recordsWithOutParam = sysAmountAuditingService.getIncomeAndExpense(new IncomeAndExpenseParam(param.getUserId(),param.getSystemCode()));
         List<IncomeAndExpenseList> allRecords = sysAmountAuditingService.getIncomeAndExpense(param);
         allRecords = allRecords.stream().peek(action->{
             if("0".equals(action.getStatus())){
@@ -363,7 +364,7 @@ public class SysUserAccountServiceImpl extends ServiceImpl<SysUserAccountMapper,
 
         // 按月份分组统计
         Map<String, IncomeAndExpenseVo.IncomeAndExpense> monthSummaryMap = new TreeMap<>(Collections.reverseOrder());
-        for (IncomeAndExpenseList record : allRecords) {
+        for (IncomeAndExpenseList record : recordsWithOutParam) {
             if (record.getCreateTime() == null) continue;
             // 获取月份(格式:yyyy-MM)
             String month = record.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM"));

+ 9 - 3
tenant/organization/src/main/resources/mapper/ReceivableMapper.xml

@@ -1506,6 +1506,9 @@
             <if test="invoiceRecordQueryVo.companyId != null and invoiceRecordQueryVo.companyId != ''">
                 AND ipii.company_id = #{invoiceRecordQueryVo.companyId}
             </if>
+            <if test="invoiceRecordQueryVo.invoiceNo != null and invoiceRecordQueryVo.invoiceNo != ''">
+                AND ipii.invoice_no like concat('%',#{invoiceRecordQueryVo.invoiceNo},'%')
+            </if>
             <if test="invoiceRecordQueryVo.invoiceType != null and invoiceRecordQueryVo.invoiceType != ''">
                 AND ipii.invoice_type = #{invoiceRecordQueryVo.invoiceType}
             </if>
@@ -1585,6 +1588,9 @@
             <if test="invoiceRecordQueryVo.recordId != null and invoiceRecordQueryVo.recordId != ''">
                 AND ipii.id = #{invoiceRecordQueryVo.recordId}
             </if>
+            <if test="invoiceRecordQueryVo.invoiceNo != null and invoiceRecordQueryVo.invoiceNo != ''">
+                AND ipii.invoice_no like concat('%',#{invoiceRecordQueryVo.invoiceNo},'%')
+            </if>
             <if test="invoiceRecordQueryVo.companyId != null and invoiceRecordQueryVo.companyId != ''">
                 AND ipii.company_id = #{invoiceRecordQueryVo.companyId}
             </if>
@@ -1881,7 +1887,7 @@
     <select id="getReceiverSettlementReport" resultType="com.jzg.commons.entity.finance.dto.ReceiverSettlementReportDto">
         SELECT
         ipi.contact_person AS receiver,
-        ipi.company_id,
+        -- ipi.company_id,
         SUM(COALESCE(ipi.jq_supervise_costs_premiums,0)  +COALESCE(ipi.sy_supervise_costs_premiums,0)  +COALESCE(ipi.jy_supervise_costs_premiums,0) ) AS superviseFee,
         SUM(COALESCE(ipi.jq_other_costs_premiums,0) + COALESCE(ipi.sy_other_costs_premiums,0) +COALESCE(ipi.jy_other_costs_premiums,0) ) AS followFee,
         SUM(
@@ -1923,8 +1929,8 @@
             </if>
         </where>
         GROUP BY
-        ipi.contact_person,
-        ipi.company_id
+        ipi.contact_person
+        -- ,ipi.company_id
     </select>
     <!-- 根据发票序号查询结算明细 lipf 2026年5月15日10:58:36 -->
     <select id="queryInvoiceSettlementByInvoiceId"