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

Merge branch 'dev_jzg_lipf_v20260518'

lipf пре 3 месеци
родитељ
комит
75b60ca111

+ 2 - 1
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/aop/aspect/QuoteVerificationAspect.java

@@ -1,5 +1,6 @@
 package com.jzg.quotation.summary.aop.aspect;
 
+import cn.hutool.core.collection.CollUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.jzg.commons.constants.quote.enums.quote.EnergyTypeCode;
@@ -99,7 +100,7 @@ public class QuoteVerificationAspect {
             // 设置默认的优先级
             agreementProductCosts = this.setPriorities(agreementProductCosts);
             log.info("过滤的费用列表:{}",JSONObject.toJSONString(agreementProductCosts));
-            if (!agreementProductCosts.isEmpty()) {
+            if (CollUtil.isNotEmpty(agreementProductCosts)) {
                 //遍历费用因子
                 String costId = verificationCosts(agreementProductCosts, logs, insOrdersOther, insOrdersCarInfo, insOrdersRisks,
                         insOrdersCarUserInfos, kindList, insOrdersCosts, insOrdersAccidentalDriving, insOrders);

+ 2 - 1
tenant/organization/src/main/java/com/jzg/organization/mapper/ReceivableMapper.java

@@ -236,7 +236,8 @@ public interface ReceivableMapper extends BaseMapper<InsPlyIncome> {
     List<CalRes> querySettledAmount(@Param("systemCode") String systemCode,
                                     @Param("settledStartDate") String settledStartDate,
                                     @Param("settledEndDate") String settledEndDate,
-                                    @Param("agreementType") String agreementType);
+                                    @Param("agreementType") String agreementType,
+                                    @Param("invoiceTypes") List<String> invoiceTypes);
 
     /**
      * 查询

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

@@ -777,8 +777,9 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
                 // 驾意险的总跟单费(jy_follow_premium)
                     jyFollowPremium;
             case "5" ->
-                // 交强的总手续费(jq_commission_premium) + 商业的总手续费(sy_commission_premium) + 交强的总跟单费(jq_follow_premium) + 商业的总跟单费(sy_follow_premium)
-                    jqCommissionPremium.add(syCommissionPremium).add(jqFollowPremium).add(syFollowPremium);
+                    // 现在平台不区分车险非车险了,所以都统计到一起
+                // 交强的总手续费(jq_commission_premium) + 商业的总手续费(sy_commission_premium) + 交强的总跟单费(jq_follow_premium) + 商业的总跟单费(sy_follow_premium) + 驾意险的总手续费(jy_commission_premium) + 驾意险的总跟单费(jy_follow_premium)
+                    jqCommissionPremium.add(syCommissionPremium).add(jqFollowPremium).add(syFollowPremium).add(jyCommissionPremium).add(jyFollowPremium);
             case "6" ->
                 // 驾意险的总手续费(jy_commission_premium) + 驾意险的总跟单费(jy_follow_premium)
                     jyCommissionPremium.add(jyFollowPremium);
@@ -1055,17 +1056,8 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
             result.setSumPrice(null != invoicingVo.getReceivablePremium() ? invoicingVo.getReceivablePremium().toString() : null);
 
             // ============================结算逻辑============================
-            // 实际已经收了的金额
-            BigDecimal actualReceivedAmount = this.getInvoicingAmount(settlementVo.getInvoicingId());
-
-            // 所有需要结算的金额
-            BigDecimal allToSettlement = invoice.getReceivableSupervisePremium().add(invoice.getOverinflatedAmount());
-            // 剩余的金额
-            BigDecimal surplusPremium = allToSettlement.subtract(actualReceivedAmount);
-            log.info("invoiceId=[{}],一共需要结算的金额[{}],实际已经结算的金额[{}],本次计划结算的金额[{}]",
-                    settlementVo.getInvoicingId(), allToSettlement,actualReceivedAmount,settlementVo.getActualReceivedAmount());
             // 校验是否超出了剩余的金额
-            AssertionUtils.isFail(surplusPremium.compareTo(settlementVo.getActualReceivedAmount()) < 0, "已超出应收金额,请核对!");
+//            AssertionUtils.isFail(surplusPremium.compareTo(settlementVo.getActualReceivedAmount()) < 0, "已超出应收金额,请核对!");
 
             // 处理结算数据
             // 未完全结算完成
@@ -1507,7 +1499,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
             log.info("invoiceId=[{}],一共需要结算的金额[{}],实际已经结算的金额[{}],本次计划结算的金额[{}]",
                     settlementVo.getInvoicingId(), allToSettlement,actualReceivedAmount,settlementVo.getActualReceivedAmount());
             // 校验是否超出了剩余的金额
-            AssertionUtils.isFail(surplusPremium.compareTo(settlementVo.getActualReceivedAmount()) < 0, "已超出应收金额,请核对!");
+//            AssertionUtils.isFail(surplusPremium.compareTo(settlementVo.getActualReceivedAmount()) < 0, "已超出应收金额,请核对!");
 
             // 处理结算数据
             // 未完全结算完成
@@ -1529,8 +1521,8 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
                 insPlyIncomeInvoiceSettlementFileMapper.insert(files);
             }
 
-            // 判断是否已经结算完成
-            if (surplusPremium.compareTo(settlementVo.getActualReceivedAmount()) == 0) {
+            // 判断是否已经结算完成,剩余金额小于等于实收金额就算完成结算了
+            if (surplusPremium.compareTo(settlementVo.getActualReceivedAmount()) <= 0) {
                 log.info("序号为[{}]的发票已经结算完成",insPlyIncomeInvoice.getId());
                 // 更新发票状态
                 insPlyIncomeInvoice.setStatus("1");
@@ -2268,6 +2260,12 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
         if (null == followInvoicePageListVo || CollUtil.isEmpty(followInvoicePageListVo.getSearchList())){
             return CollUtil.newArrayList();
         }
+        if (StrUtil.isBlank(followInvoicePageListVo.getSearchList().stream().filter(search -> "signYear".equals(search.getName())).findAny().get().getSearch())){
+            return CollUtil.newArrayList();
+        }
+        if (!StrUtil.contains(followInvoicePageListVo.getSearchList().stream().filter(search -> "signYear".equals(search.getName())).findAny().get().getSearch(), ",")){
+            return CollUtil.newArrayList();
+        }
         FollowInvoicePageListVo.SearchVO searchYear = followInvoicePageListVo.getSearchList().stream().filter(search -> "signYear".equals(search.getName())).findFirst().orElse(new FollowInvoicePageListVo.SearchVO());
         Integer startYear = Integer.parseInt(searchYear.getSearch().split(",")[0]);
         Integer endYear = Integer.parseInt(searchYear.getSearch().split(",")[1]);
@@ -2482,7 +2480,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
             log.info("invoiceId=[{}],一共需要结算的金额[{}],实际已经结算的金额[{}],本次计划结算的金额[{}]",
                     settlementVo.getInvoicingId(), allToSettlement,actualReceivedAmount,settlementVo.getActualReceivedAmount());
             // 校验是否超出了剩余的金额,判断 surplusPremium 是否 小于 实际到账金额
-            AssertionUtils.isFail(surplusPremium.compareTo(settlementVo.getActualReceivedAmount()) < 0, "已超出应收金额,请核对!");
+//            AssertionUtils.isFail(surplusPremium.compareTo(settlementVo.getActualReceivedAmount()) < 0, "已超出应收金额,请核对!");
 
             // 处理结算数据
             // 未完全结算完成
@@ -2504,8 +2502,8 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
                 insPlyIncomeInvoiceSettlementFileMapper.insert(files);
             }
 
-            // 判断是否已经结算完成
-            if (surplusPremium.compareTo(settlementVo.getActualReceivedAmount()) == 0) {
+            // 判断是否已经结算完成,剩余金额小于等于实收金额就算完成结算了
+            if (surplusPremium.compareTo(settlementVo.getActualReceivedAmount()) <= 0) {
                 log.info("序号为[{}]的发票已经结算完成",insPlyIncomeInvoice.getId());
                 // 更新发票状态
                 insPlyIncomeInvoice.setStatus("1");
@@ -3173,9 +3171,10 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
         Map<String, BigDecimal> ptInvoicedAmountMap =calRes.stream().collect(Collectors.toMap(CalRes::getCompanyId, CalRes::getAmount, (o1,o2)->o1));
 
         // 结算费用 
-        calRes = baseMapper.querySettledAmount(systemCode, queryVo.getInvoiceStartTime(), queryVo.getInvoiceEndTime(), queryVo.getAgreementType());
-        Map<String, BigDecimal> sxfSettledAmountMap = calRes.stream().collect(Collectors.toMap(CalRes::getCompanyId, CalRes::getSxfSettlement, (o1,o2)->o1));
-        Map<String, BigDecimal> gdfSettledAmountMap = calRes.stream().collect(Collectors.toMap(CalRes::getCompanyId, CalRes::getGdfSettlement, (o1,o2)->o1));
+        List<CalRes> sxfList = baseMapper.querySettledAmount(systemCode, queryVo.getInvoiceStartTime(), queryVo.getInvoiceEndTime(), queryVo.getAgreementType(), CollUtil.newArrayList("1", "3"));
+        List<CalRes> gdfList = baseMapper.querySettledAmount(systemCode, queryVo.getInvoiceStartTime(), queryVo.getInvoiceEndTime(), queryVo.getAgreementType(), CollUtil.newArrayList("2", "4"));
+        Map<String, BigDecimal> sxfSettledAmountMap = CollUtil.isNotEmpty(sxfList) ? sxfList.stream().collect(Collectors.toMap(CalRes::getCompanyId, CalRes::getSettlement, (o1,o2)->o1)) : new HashMap<>();
+        Map<String, BigDecimal> gdfSettledAmountMap = CollUtil.isNotEmpty(gdfList) ? gdfList.stream().collect(Collectors.toMap(CalRes::getCompanyId, CalRes::getSettlement, (o1,o2)->o1)) : new HashMap<>();
 
         // 计算已开票和未开票
         for (String companyId : companyMap.keySet()) {

+ 24 - 19
tenant/organization/src/main/resources/mapper/ReceivableMapper.xml

@@ -1688,37 +1688,42 @@
     <select id="querySettledAmount" resultType="com.jzg.organization.entity.dto.CalRes">
         select
         a.company_id ,
-        sum(COALESCE(a.jq_supervise_costs_premiums, 0)+ COALESCE(a.sy_supervise_costs_premiums, 0)+ coalesce(a.jy_supervise_costs_proportion, 0 )) as sxf_settlement,
-        sum(COALESCE(a.jq_other_costs_premiums, 0)+ COALESCE(a.sy_other_costs_premiums, 0)+ coalesce(a.jy_other_costs_premiums, 0 )) as gdf_settlement
+        sum(COALESCE(a.actual_received_amount, 0)) as settlement
         from
         (
         select
         ipi.company_id ,
-        ipi.jq_supervise_costs_premiums,
-        ipi.sy_supervise_costs_premiums,
-        ipi.jy_supervise_costs_proportion,
-        ipi.jq_other_costs_premiums,
-        ipi.sy_other_costs_premiums,
-        ipi.jy_other_costs_premiums,
-        ipi.settlement_status ,
-        ipi.settlement_time
-        from
-        ins_ply_income ipi
+        COALESCE(ins.actual_received_amount, 0) as actual_received_amount
+        from ins_ply_income_invoice_settlement ins
+        inner join ins_ply_income_invoice inc
+        on ins.invoice_id = inc.id
+        AND inc.is_delete = 0
+        inner join ins_ply_income_invoice_link link
+        on link.invoice_id = inc.id
+        AND link.is_delete = 0
+        inner join ins_ply_income ipi
+        on link.income_id = ipi.id
+        AND ipi.is_delete = 0
         <where>
-            ipi.is_delete = 0
-            AND ipi.settlement_status = 1
-            <if test="settledStartDate != null and settledStartDate != ''">
-                AND ipi.settlement_time >= cast( '${settledStartDate}' as datetime)
+            ins.is_delete = 0
+            <if test="settledStartDate != null">
+                AND ins.receive_payment_date >= #{settledStartDate}
             </if>
-            <if test="settledEndDate != null and settledEndDate != ''">
-                AND ipi.settlement_time &lt; cast('${settledEndDate}' as datetime)
+            <if test="settledEndDate != null">
+                AND ins.receive_payment_date &lt; #{settledEndDate}
             </if>
             <if test="agreementType != null and agreementType != ''">
                 AND ipi.agreement_type = #{agreementType}
             </if>
+            <if test="invoiceTypes != null and invoiceTypes.size() > 0">
+                AND inc.invoice_type IN
+                <foreach collection="invoiceTypes" item="invoiceType" open="(" separator="," close=")">
+                    #{invoiceType}
+                </foreach>
+            </if>
         </where>
         ) a
-        group by  a.company_id
+        group by a.company_id
     </select>
     <select id="queryFollowIncome" resultType="com.jzg.commons.entity.finance.dto.InsPlyIncomeDto">
         SELECT