Explorar o código

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

jiakai hai 3 meses
pai
achega
14cb2349aa

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

@@ -46,6 +46,12 @@ public class IncomeDataVO implements Serializable {
     private String contactPersonPhone;
     private String contactPersonPhone;
 
 
 
 
+    /**
+     * 类型:1:手续费 2:跟单费 3:驾意手续费 4:驾意跟单费
+     */
+    private String invoiceType;
+
+
     @Data
     @Data
     public static class SearchVO implements Serializable {
     public static class SearchVO implements Serializable {
         @Serial
         @Serial

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

@@ -116,4 +116,9 @@ public class ReceivableQueryVo extends PageRequest {
     @Schema(description = "租户代码")
     @Schema(description = "租户代码")
     private String systemCode;
     private String systemCode;
 
 
+    /**
+     * 类型:1:手续费 2:跟单费 3:驾意手续费 4:驾意跟单费
+     */
+    private String invoiceType;
+
 }
 }

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

@@ -116,28 +116,6 @@ public class InsFeeOrdersServiceImpl extends ServiceImpl<InsFeeOrdersMapper, Ins
         // 获取费用信息
         // 获取费用信息
         InsFeeOrders insFeeOrders = insFeeOrdersMapper.selectById(insOrders.getId());
         InsFeeOrders insFeeOrders = insFeeOrdersMapper.selectById(insOrders.getId());
 
 
-        // add by lipf, 2026年6月23日18:32:24 按照财务和田智沟通后的结果,当入口手续费比例大于入口比例的时候,强制设置入口手续费比例为入口比例。
-//        BigDecimal jqInletRatio = insFeeOrders.getJqInletRatio();
-//        BigDecimal syInletRatio = insFeeOrders.getSyInletRatio();
-//        BigDecimal jyInletRatio = insFeeOrders.getJyInletRatio();
-//
-//        BigDecimal jqCommissionRatio = insFeeOrders.getJqCommissionRatio();
-//        BigDecimal syCommissionRatio = insFeeOrders.getSyCommissionRatio();
-//        BigDecimal jyCommissionRatio = insFeeOrders.getJyCommissionRatio();
-//
-//        if(BigDecimalUtil.subtract(jqCommissionRatio,jqInletRatio).compareTo(BigDecimal.ZERO)>0){
-//            insFeeOrders.setJqCommissionRatio(jqInletRatio);
-//            insFeeOrders.setJqFollowRatio(BigDecimal.ZERO);
-//        }
-//        if(BigDecimalUtil.subtract(syCommissionRatio,syInletRatio).compareTo(BigDecimal.ZERO)>0){
-//            insFeeOrders.setSyCommissionRatio(syInletRatio);
-//            insFeeOrders.setSyFollowRatio(BigDecimal.ZERO);
-//        }
-//        if(BigDecimalUtil.subtract(jyCommissionRatio,jyInletRatio).compareTo(BigDecimal.ZERO)>0){
-//            insFeeOrders.setJyCommissionRatio(jyInletRatio);
-//            insFeeOrders.setJyFollowRatio(BigDecimal.ZERO);
-//        }
-
         // 关键:获取是否含税标识
         // 关键:获取是否含税标识
         Integer withTax = ptlAgreement.getWithTax(); // 0-否 1-是
         Integer withTax = ptlAgreement.getWithTax(); // 0-否 1-是
 
 
@@ -234,7 +212,8 @@ public class InsFeeOrdersServiceImpl extends ServiceImpl<InsFeeOrdersMapper, Ins
 //        log.info("分销总费用:distributionFee=【{}】",distributionFee);
 //        log.info("分销总费用:distributionFee=【{}】",distributionFee);
 //        BigDecimal keepPoint = BigDecimalUtil.subtract(BigDecimalUtil.add(inlet,addThrow),BigDecimalUtil.add(export, distributionFee));
 //        BigDecimal keepPoint = BigDecimalUtil.subtract(BigDecimalUtil.add(inlet,addThrow),BigDecimalUtil.add(export, distributionFee));
 //        log.info("留点费用:inlet=[{}],addThrow=[{}],export=[{}], distributionFee=[{}]mkeepPoint=[{}]", inlet, addThrow, export, distributionFee, keepPoint);
 //        log.info("留点费用:inlet=[{}],addThrow=[{}],export=[{}], distributionFee=[{}]mkeepPoint=[{}]", inlet, addThrow, export, distributionFee, keepPoint);
-        BigDecimal exportContainDistribute = premium.multiply(exportRatioContainDistribution).setScale(scale, RoundingMode.HALF_DOWN);
+        // modify by lipf 财务要求,计算留点的时候,出口费用,按照两位进行截断
+        BigDecimal exportContainDistribute = premium.multiply(exportRatioContainDistribution).setScale(2, RoundingMode.DOWN);
         BigDecimal keepPoint = BigDecimalUtil.subtract(BigDecimalUtil.add(inlet,addThrow),exportContainDistribute);
         BigDecimal keepPoint = BigDecimalUtil.subtract(BigDecimalUtil.add(inlet,addThrow),exportContainDistribute);
         log.info("计算留点:inlet=[{}],addThrow=[{}].exportContainDistribute=[{}]", inlet, addThrow, exportContainDistribute);
         log.info("计算留点:inlet=[{}],addThrow=[{}].exportContainDistribute=[{}]", inlet, addThrow, exportContainDistribute);
 
 
@@ -412,15 +391,15 @@ public class InsFeeOrdersServiceImpl extends ServiceImpl<InsFeeOrdersMapper, Ins
             jyCommissionRatio = jyInletRatio;
             jyCommissionRatio = jyInletRatio;
         }
         }
 
 
-        // 手续费
+        // 手续费比例
         insFeeOrders.setJqCommissionRatio(jqCommissionRatio);
         insFeeOrders.setJqCommissionRatio(jqCommissionRatio);
         insFeeOrders.setSyCommissionRatio(syCommissionRatio);
         insFeeOrders.setSyCommissionRatio(syCommissionRatio);
         insFeeOrders.setJyCommissionRatio(jyCommissionRatio);
         insFeeOrders.setJyCommissionRatio(jyCommissionRatio);
-        // 入口费用
+        // 入口费用比例
         insFeeOrders.setJqInletRatio(jqInletRatio);
         insFeeOrders.setJqInletRatio(jqInletRatio);
         insFeeOrders.setSyInletRatio(syInletRatio);
         insFeeOrders.setSyInletRatio(syInletRatio);
         insFeeOrders.setJyInletRatio(jyInletRatio);
         insFeeOrders.setJyInletRatio(jyInletRatio);
-        // 跟单费
+        // 跟单费比例
         insFeeOrders.setJqFollowRatio(jqFollowRatio);
         insFeeOrders.setJqFollowRatio(jqFollowRatio);
         insFeeOrders.setSyFollowRatio(syFollowRatio);
         insFeeOrders.setSyFollowRatio(syFollowRatio);
         insFeeOrders.setJyFollowRatio(jyFollowRatio);
         insFeeOrders.setJyFollowRatio(jyFollowRatio);
@@ -446,8 +425,8 @@ public class InsFeeOrdersServiceImpl extends ServiceImpl<InsFeeOrdersMapper, Ins
         BigDecimal jqKeepPointRatio = (jqInletRatio.divide(taxFactor, 5, RoundingMode.HALF_EVEN)).add(jqAdditionalRatio).subtract(BigDecimalUtil.add(jqExportRatio,distributionRatio));
         BigDecimal jqKeepPointRatio = (jqInletRatio.divide(taxFactor, 5, RoundingMode.HALF_EVEN)).add(jqAdditionalRatio).subtract(BigDecimalUtil.add(jqExportRatio,distributionRatio));
         log.info("计算留点比例。 distributionRatio=[{}],jqInletRatio=[{}],jqAdditionalRatio=[{}],jqExportRatio=[{}]", distributionRatio,jqInletRatio,jqAdditionalRatio,jqExportRatio);
         log.info("计算留点比例。 distributionRatio=[{}],jqInletRatio=[{}],jqAdditionalRatio=[{}],jqExportRatio=[{}]", distributionRatio,jqInletRatio,jqAdditionalRatio,jqExportRatio);
 
 
-        BigDecimal syKeepPointRatio = (syInletRatio.divide(taxFactor, 5, RoundingMode.HALF_EVEN)).add(syAdditionalRatio).subtract(BigDecimalUtil.add(jqExportRatio,syExportRatio));
-        BigDecimal jyKeepPointRatio = (jyInletRatio.divide(taxFactor, 5, RoundingMode.HALF_EVEN)).add(jyAdditionalRatio).subtract(BigDecimalUtil.add(jqExportRatio,jyExportRatio));
+        BigDecimal syKeepPointRatio = (syInletRatio.divide(taxFactor, 5, RoundingMode.HALF_EVEN)).add(syAdditionalRatio).subtract(BigDecimalUtil.add(syExportRatio,distributionRatio));
+        BigDecimal jyKeepPointRatio = (jyInletRatio.divide(taxFactor, 5, RoundingMode.HALF_EVEN)).add(jyAdditionalRatio).subtract(BigDecimalUtil.add(jyExportRatio,distributionRatio));
         // 留点比例
         // 留点比例
         insFeeOrders.setJqKeepPointRatio(jqKeepPointRatio);
         insFeeOrders.setJqKeepPointRatio(jqKeepPointRatio);
         insFeeOrders.setSyKeepPointRatio(syKeepPointRatio);
         insFeeOrders.setSyKeepPointRatio(syKeepPointRatio);

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

@@ -6,7 +6,6 @@ import cn.hutool.core.date.DateTime;
 import cn.hutool.core.lang.tree.Tree;
 import cn.hutool.core.lang.tree.Tree;
 import cn.hutool.core.lang.tree.TreeNodeConfig;
 import cn.hutool.core.lang.tree.TreeNodeConfig;
 import cn.hutool.core.lang.tree.TreeUtil;
 import cn.hutool.core.lang.tree.TreeUtil;
-import cn.hutool.core.util.NumberUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONUtil;
 import cn.hutool.json.JSONUtil;
 import com.alibaba.excel.EasyExcel;
 import com.alibaba.excel.EasyExcel;
@@ -285,7 +284,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
         log.info("获取私有协议手续费应收列表。receivableQueryVo=[{}]", JSONUtil.toJsonStr(receivableQueryVo));
         log.info("获取私有协议手续费应收列表。receivableQueryVo=[{}]", JSONUtil.toJsonStr(receivableQueryVo));
         Page<InsPlyIncome> page = baseMapper.getReceivablePage(receivableQueryVo.getPage(), receivableQueryVo);
         Page<InsPlyIncome> page = baseMapper.getReceivablePage(receivableQueryVo.getPage(), receivableQueryVo);
         List<InsPlyIncome> records = page.getRecords();
         List<InsPlyIncome> records = page.getRecords();
-        records = this.fillOtherInfo(records);
+        records = this.fillOtherInfo(records,receivableQueryVo.getInvoiceType());
         page.setRecords(records);
         page.setRecords(records);
         return page;
         return page;
     }
     }
@@ -644,7 +643,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
             }
             }
         }
         }
 
 
-        filterIncomes = this.fillOtherInfo(filterIncomes);
+        filterIncomes = this.fillOtherInfo(filterIncomes,incomeDataVO.getInvoiceType());
         return HttpResult.ok(filterIncomes);
         return HttpResult.ok(filterIncomes);
     }
     }
 
 
@@ -903,17 +902,18 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
      * 3. 批量查询订单与发票的关联关系,构建订单ID到发票ID的映射
      * 3. 批量查询订单与发票的关联关系,构建订单ID到发票ID的映射
      * 4. 查询业务员类型属性映射表
      * 4. 查询业务员类型属性映射表
      * 5. 遍历每条订单记录,填充以下字段:
      * 5. 遍历每条订单记录,填充以下字段:
-     *    - settlementStatusName: 结算状态名称(0-未结算,1-已结算)
-     *    - typeAttr: 业务员类型属性代码
-     *    - typeAttrName: 业务员类型属性名称
-     *    - invoiceStatusName: 开票状态名称(有发票ID则为"已开票",否则为"未开票")
-     *    - invoiceId: 关联的发票ID
+     * - settlementStatusName: 结算状态名称(0-未结算,1-已结算)
+     * - typeAttr: 业务员类型属性代码
+     * - typeAttrName: 业务员类型属性名称
+     * - invoiceStatusName: 开票状态名称(有发票ID则为"已开票",否则为"未开票")
+     * - invoiceId: 关联的发票ID
      * </p>
      * </p>
      *
      *
-     * @param records 应收订单列表,需要填充额外信息的订单数据
+     * @param records     应收订单列表,需要填充额外信息的订单数据
+     * @param invoiceType 开票类型 1:手续费 2:跟单费 3:驾意手续费 4:驾意跟单费
      * @return List<InsPlyIncome> 返回填充了必要字段后的完整订单列表
      * @return List<InsPlyIncome> 返回填充了必要字段后的完整订单列表
      */
      */
-    List<InsPlyIncome> fillOtherInfo(List<InsPlyIncome> records){
+    List<InsPlyIncome> fillOtherInfo(List<InsPlyIncome> records, String invoiceType){
         if(CollUtil.isEmpty(records)){
         if(CollUtil.isEmpty(records)){
             return records;
             return records;
         }
         }
@@ -923,9 +923,12 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
         List<InsPlyIncomeInvoiceLink> links = baseMapper.queryIncomeBindInvoice(invoicingVo);
         List<InsPlyIncomeInvoiceLink> links = baseMapper.queryIncomeBindInvoice(invoicingVo);
         Map<String, String> income2InvoceIdMap = links.stream()
         Map<String, String> income2InvoceIdMap = links.stream()
                 .filter(action -> StrUtil.isNotEmpty(action.getIncomeId()))
                 .filter(action -> StrUtil.isNotEmpty(action.getIncomeId()))
-                .collect(Collectors.toMap(InsPlyIncomeInvoiceLink::getIncomeId, InsPlyIncomeInvoiceLink::getInvoiceId, (oleItem, newItem) -> oleItem));
-
-
+                .filter(action -> {
+                    if(StrUtil.isEmpty(invoiceType)){
+                        return true;
+                    }
+                    return invoiceType.equals(action.getInvoiceType());
+                }).collect(Collectors.toMap(InsPlyIncomeInvoiceLink::getIncomeId, InsPlyIncomeInvoiceLink::getInvoiceId, (oleItem, newItem) -> oleItem));
         Map<String, String> typeAttrMaps = sysUserJzgInfoSalesmanService.queryYwyTypeAttrMap();
         Map<String, String> typeAttrMaps = sysUserJzgInfoSalesmanService.queryYwyTypeAttrMap();
         records.forEach(insPlyIncome -> {
         records.forEach(insPlyIncome -> {
             if("0".equals(insPlyIncome.getSettlementStatus())){
             if("0".equals(insPlyIncome.getSettlementStatus())){
@@ -1317,6 +1320,8 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
             insPlyIncomeInvoiceLinkMapper.insert(invoicingLinkList);
             insPlyIncomeInvoiceLinkMapper.insert(invoicingLinkList);
             result.setInvoiceId(invoice.getId());
             result.setInvoiceId(invoice.getId());
             result.setSumPrice(null != invoicingVo.getReceivableSupervisePremium() ? invoicingVo.getReceivableSupervisePremium().toString() : null);
             result.setSumPrice(null != invoicingVo.getReceivableSupervisePremium() ? invoicingVo.getReceivableSupervisePremium().toString() : null);
+
+
             return result;
             return result;
         } catch (Exception e) {
         } catch (Exception e) {
             log.info("开票异常.invoicingVo=[{}]",JSONUtil.toJsonStr(invoicingVo), e);
             log.info("开票异常.invoicingVo=[{}]",JSONUtil.toJsonStr(invoicingVo), e);
@@ -4070,7 +4075,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
         log.info("获取平台协议列表. receivableQueryVo=[{}]", JSONUtil.toJsonStr(receivableQueryVo));
         log.info("获取平台协议列表. receivableQueryVo=[{}]", JSONUtil.toJsonStr(receivableQueryVo));
         Page<InsPlyIncome> page = baseMapper.getReceivablePage(receivableQueryVo.getPage(), receivableQueryVo);
         Page<InsPlyIncome> page = baseMapper.getReceivablePage(receivableQueryVo.getPage(), receivableQueryVo);
         List<InsPlyIncome> records = page.getRecords();
         List<InsPlyIncome> records = page.getRecords();
-        records = this.fillOtherInfo(records);
+        records = this.fillOtherInfo(records,null);
         page.setRecords(records);
         page.setRecords(records);
         return page;
         return page;
     }
     }
@@ -4483,7 +4488,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
         receivableQueryVo.setSystemCode(baseController.getSystemCode());
         receivableQueryVo.setSystemCode(baseController.getSystemCode());
 
 
         List<InsPlyIncome> receivableList = baseMapper.getReceivableList(receivableQueryVo);
         List<InsPlyIncome> receivableList = baseMapper.getReceivableList(receivableQueryVo);
-        receivableList = this.fillOtherInfo(receivableList);
+        receivableList = this.fillOtherInfo(receivableList, null);
 
 
         // 调用动态导出
         // 调用动态导出
         return exportBaseService.upLoadFile(
         return exportBaseService.upLoadFile(

+ 1 - 5
tenant/organization/src/main/resources/mapper/ReceivableMapper.xml

@@ -1478,11 +1478,7 @@
         LEFT JOIN ins_ply_income_invoice_settlement ipiis ON ipii.id = ipiis.invoice_id AND ipiis.is_delete = 0
         LEFT JOIN ins_ply_income_invoice_settlement ipiis ON ipii.id = ipiis.invoice_id AND ipiis.is_delete = 0
         LEFT JOIN esm_ins_company eic on eic.id = ipii.company_id AND eic.is_delete = 0
         LEFT JOIN esm_ins_company eic on eic.id = ipii.company_id AND eic.is_delete = 0
         <where>
         <where>
-            ipii.is_delete = 0
-            AND ipii.system_code = #{invoiceRecordQueryVo.systemCode}
-            <if test="invoiceRecordQueryVo.invoiceType != null and invoiceRecordQueryVo.invoiceType != ''">
-                AND ipii.invoice_type = #{invoiceRecordQueryVo.invoiceType}
-            </if>
+            ipii.is_delete = 0 AND ipii.system_code = #{invoiceRecordQueryVo.systemCode}
             <if test="invoiceRecordQueryVo.accountsReceivable != null and invoiceRecordQueryVo.accountsReceivable != ''">
             <if test="invoiceRecordQueryVo.accountsReceivable != null and invoiceRecordQueryVo.accountsReceivable != ''">
                 AND ipii.invoice_risk_type = #{invoiceRecordQueryVo.accountsReceivable}
                 AND ipii.invoice_risk_type = #{invoiceRecordQueryVo.accountsReceivable}
             </if>
             </if>