Kaynağa Gözat

Merge remote-tracking branch 'origin/dev_jzg_lipf_v20260622'

jiakai 2 ay önce
ebeveyn
işleme
6d27d52080
22 değiştirilmiş dosya ile 288 ekleme ve 81 silme
  1. 0 2
      commons/src/main/java/com/jzg/commons/config/MyBatisPlusConfig.java
  2. 10 1
      commons/src/main/java/com/jzg/commons/entity/account/po/SysUserAccountChangeLog.java
  3. 8 0
      commons/src/main/java/com/jzg/commons/entity/finance/dto/ExportSuperviseSettlementDetailExcelDto.java
  4. 8 0
      commons/src/main/java/com/jzg/commons/entity/finance/dto/ExportSuperviseSettlementExcelDto.java
  5. 4 0
      commons/src/main/java/com/jzg/commons/entity/finance/dto/InsPlyIncomeDto.java
  6. 5 0
      commons/src/main/java/com/jzg/commons/entity/finance/vo/InvoiceRecordQueryVo.java
  7. 23 0
      commons/src/main/java/com/jzg/commons/entity/finance/vo/UpdateSettlementStatusVo.java
  8. 4 0
      commons/src/main/java/com/jzg/commons/entity/quote/vo/aggregated/QuoteEchoVo.java
  9. 2 2
      commons/src/main/java/com/jzg/commons/entity/quote/vo/orders/InsOrdersVo.java
  10. 3 0
      commons/src/main/java/com/jzg/commons/entity/vo/SysUserAccountVo.java
  11. 22 0
      commons/src/main/java/com/jzg/commons/util/BigDecimalUtil.java
  12. 13 3
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/InsFeeOrderController.java
  13. 3 1
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsFeeOrdersServiceImpl.java
  14. 1 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersServiceImpl.java
  15. 1 0
      tenant/insurance/quotation-summary/src/main/resources/mapper/InsOrdersMapper.xml
  16. 9 3
      tenant/organization/src/main/java/com/jzg/organization/controller/ReceivableController.java
  17. 2 2
      tenant/organization/src/main/java/com/jzg/organization/mapper/SysUserAccountIncomeLogMapper.java
  18. 2 2
      tenant/organization/src/main/java/com/jzg/organization/service/ReceivableService.java
  19. 100 55
      tenant/organization/src/main/java/com/jzg/organization/service/impl/ReceivableServiceImpl.java
  20. 21 0
      tenant/organization/src/main/java/com/jzg/organization/service/impl/SysAmountAuditingServiceImpl.java
  21. 36 8
      tenant/organization/src/main/java/com/jzg/organization/service/impl/SysUserAccountServiceImpl.java
  22. 11 2
      tenant/organization/src/main/resources/mapper/ReceivableMapper.xml

+ 0 - 2
commons/src/main/java/com/jzg/commons/config/MyBatisPlusConfig.java

@@ -1,7 +1,5 @@
 package com.jzg.commons.config;
 
-
-import cn.hutool.json.JSONNull;
 import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.autoconfigure.ConfigurationCustomizer;
 import com.baomidou.mybatisplus.extension.handlers.Fastjson2TypeHandler;

+ 10 - 1
commons/src/main/java/com/jzg/commons/entity/account/po/SysUserAccountChangeLog.java

@@ -71,7 +71,7 @@ public class SysUserAccountChangeLog extends BaseModel {
     }
 
     /**
-     * 操作类型 1 保单费用 2 保单提成 3. 提现
+     * 操作类型 1 保单费用 2 保单提成 3. 提现 4. 提现驳回
      */
     @ExcelIgnore
     @Schema(description = "操作类型")
@@ -87,6 +87,7 @@ public class SysUserAccountChangeLog extends BaseModel {
         operTypeMap.put(1,"保单费用");
         operTypeMap.put(2,"保单提成");
         operTypeMap.put(3,"提现");
+        operTypeMap.put(4,"提现驳回");
     }
 
     public String getOperTypeName(){
@@ -97,6 +98,14 @@ public class SysUserAccountChangeLog extends BaseModel {
     @Schema(description = "关联订单ID")
     private String relatedOrderId;
 
+    @ExcelIgnore
+    @Schema(description = "状态10有效20无效")
+    private String status;
+
+    @ExcelIgnore
+    @Schema(description = "费用审核关联id(sys_amount_auditing表的id)")
+    private String relatedAmountAuditingId;
+
 
     @ExcelIgnore
     @Schema(description = "转出银行卡的序号")

+ 8 - 0
commons/src/main/java/com/jzg/commons/entity/finance/dto/ExportSuperviseSettlementDetailExcelDto.java

@@ -49,6 +49,14 @@ public class ExportSuperviseSettlementDetailExcelDto {
     @ExcelProperty(value = "应收手续费")
     private String receivableSuperviseCosts;
 
+    @Schema(description = "车险手续费")
+    @ExcelProperty(value = "车险手续费")
+    private String superviseCostPremiums4Car;
+
+    @Schema(description = "非车手续费")
+    @ExcelProperty(value = "非车手续费")
+    private String jySuperviseCostsPremiums;
+
     @Schema(description = "交强保单号")
     @ExcelProperty(value = "交强保单号")
     private String jqPolicyNo;

+ 8 - 0
commons/src/main/java/com/jzg/commons/entity/finance/dto/ExportSuperviseSettlementExcelDto.java

@@ -44,6 +44,14 @@ public class ExportSuperviseSettlementExcelDto {
     @ExcelProperty(value = "应收项")
     private String invoiceType;
 
+    @Schema(description = "应收项(10车险20非车险)")
+    @ExcelProperty(value = "应收项(10车险20非车险)")
+    private String invoiceRiskType;
+
+    @Schema(description = "应收项(10车险20非车险)")
+    @ExcelProperty(value = "应收项(10车险20非车险)")
+    private String invoiceRiskTypeName;
+
     // 应收项转义
     @Schema(description = "应收项")
     @ExcelProperty(value = "应收项")

+ 4 - 0
commons/src/main/java/com/jzg/commons/entity/finance/dto/InsPlyIncomeDto.java

@@ -316,6 +316,10 @@ public class InsPlyIncomeDto extends BaseModel {
     @Schema(description = "订单关联的发票信息")
     private String invoiceId;
 
+    @TableField(exist = false)
+    @Schema(description = "1-手续费, 2-跟单费, 3-驾意险手续费, 4-驾意险跟单费, 5-平台应收-车险, 6-平台应收-非车险")
+    private String invoiceType;
+
     @TableField(exist = false)
     @Schema(description = "地区归属")
     private String companyNameSimple;

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

@@ -61,6 +61,11 @@ public class InvoiceRecordQueryVo extends PageRequest {
      */
     private String companyNameSimple;
 
+    /**
+     * 保险公司分支id
+     */
+    private String partnerCompanyId;
+
     /**
      * 租户代码
      */

+ 23 - 0
commons/src/main/java/com/jzg/commons/entity/finance/vo/UpdateSettlementStatusVo.java

@@ -0,0 +1,23 @@
+package com.jzg.commons.entity.finance.vo;
+
+import com.jzg.commons.core.base.PageRequest;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author quchen
+ * @date 2025/7/31 17:59
+ */
+
+@Data
+public class UpdateSettlementStatusVo extends PageRequest {
+
+    @Schema(description = "开票id")
+    private String invoiceId;
+
+    @Schema(description = "回款原因")
+    private String settlementPaymentReason;
+
+}

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

@@ -56,6 +56,9 @@ public class QuoteEchoVo extends QuoteVo {
     private static class OrderBaseVo extends OrderBase{
         @Serial
         private static final long serialVersionUID = -9184896455541993138L;
+
+        private Integer entryStatus;
+
         private String orderStatus;
         private String companyName;
         private String productsName;
@@ -341,6 +344,7 @@ public class QuoteEchoVo extends QuoteVo {
         this.getOrder().setQuoteTime(insOrdersVo.getCreateTime());
         this.getOrder().setSigningTime(insOrdersVo.getPayTime());
         this.getOrder().setOrderType(insOrdersVo.getOrderType());
+        this.getOrder().setEntryStatus(insOrdersVo.getEntryStatus());
         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()));
         Salesman salesman = new Salesman();

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

@@ -49,10 +49,10 @@ public class InsOrdersVo extends QuoteVo {
     private String agreementId;
 
     @Schema(description = "审核状态")
-    private byte auditStatus;
+    private Integer auditStatus;
 
     @Schema(description = "录入状态 1 车险录入 2 待客录单 3 外部订单")
-    private byte entryStatus;
+    private Integer entryStatus;
 
 
     @Schema(description = "审核内容")

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

@@ -43,6 +43,9 @@ public class SysUserAccountVo extends BaseModel {
     @Schema(description = "已付总金额")
     private BigDecimal sumAmountPaid;
 
+    @Schema(description = "支付中金额")
+    private BigDecimal payingAmount;
+
     @Schema(description = "未付总金额")
     private BigDecimal sumAmountUnpaid;
 

+ 22 - 0
commons/src/main/java/com/jzg/commons/util/BigDecimalUtil.java

@@ -6,6 +6,7 @@ import cn.hutool.core.util.StrUtil;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.util.List;
+import java.util.Objects;
 
 
 /**
@@ -55,6 +56,27 @@ public class BigDecimalUtil {
         return sum;
     }
 
+    /**
+     *
+     * @author lipf
+     * @date 2026/7/1 14:58
+     */
+    public static String add(String ... v1s){
+        if (v1s == null || v1s.length == 0) {
+            return Objects.toString(BigDecimal.ZERO);
+        }
+        BigDecimal sum = BigDecimal.ZERO;
+        BigDecimal temp = BigDecimal.ZERO;
+        for (String v1 : v1s) {
+            if(StrUtil.isNotEmpty(v1)){
+                temp = new BigDecimal(v1);
+            }
+            sum = BigDecimalUtil.add(sum,temp);
+            temp = BigDecimal.ZERO;
+        }
+        return sum.toString();
+    }
+
     /**
      * 提供精确的加法运算
      * @param v1 被加数

+ 13 - 3
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/InsFeeOrderController.java

@@ -1,6 +1,6 @@
 package com.jzg.quotation.summary.controller;
 
-import com.alibaba.fastjson.JSONObject;
+import cn.hutool.json.JSONUtil;
 import com.jzg.commons.core.page.HttpResult;
 import com.jzg.commons.entity.dto.InsFeeOrdersParam;
 import com.jzg.commons.entity.po.InsFeeOrders;
@@ -8,6 +8,8 @@ import com.jzg.quotation.summary.entity.dto.RightsAmountUpdateDto;
 import com.jzg.quotation.summary.service.InsFeeOrdersService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -25,6 +27,8 @@ public class InsFeeOrderController {
     @Autowired
     private InsFeeOrdersService insFeeOrdersService;
 
+    private static final Logger log = LoggerFactory.getLogger(InsFeeOrderController.class);
+
     /**
      * 订单列表分页
      * @return
@@ -35,10 +39,16 @@ public class InsFeeOrderController {
         return insFeeOrdersService.getInsFeeOrdersList(param);
     }
 
+    /**
+     * 这个接口目前不能用, 后期可能会被废弃
+     *
+     * @author lipf
+     * @date 2026/7/15 16:08
+     */
     @PostMapping("/getInsFeeOrderByUserId")
     @Operation(summary = "订单费用列表通过用户id查询")
-    public List<InsFeeOrders> getInsFeeOrderByUserId(@RequestBody JSONObject param){
-        InsFeeOrdersParam insFeeOrdersParam = param.toJavaObject(InsFeeOrdersParam.class);
+    public List<InsFeeOrders> getInsFeeOrderByUserId(@RequestBody InsFeeOrdersParam insFeeOrdersParam){
+        log.info("订单费用列表通过用户id查询:insFeeOrdersParam=[{}],createTimeStart=[{}],createTimeEnd=[{}]", JSONUtil.toJsonStr(insFeeOrdersParam), insFeeOrdersParam.getCreateTimeStart(), insFeeOrdersParam.getCreateTimeEnd() );
         return insFeeOrdersService.getInsFeeOrderListByUserId(insFeeOrdersParam);
     }
 

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

@@ -449,7 +449,9 @@ public class InsFeeOrdersServiceImpl extends ServiceImpl<InsFeeOrdersMapper, Ins
 
     @Override
     public List<InsFeeOrders> getInsFeeOrderListByUserId(InsFeeOrdersParam param) {
-        return insFeeOrdersMapper.getInsFeeOrderListByUserId(param);
+        List<InsFeeOrders> insFeeOrders = insFeeOrdersMapper.getInsFeeOrderListByUserId(param);
+        log.debug("查询费用信息:param=[{}]insFeeOrders.size=[{}]", JSONUtil.toJsonStr(param), CollUtil.size(insFeeOrders));
+        return insFeeOrders;
     }
 
     @Override

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

@@ -1329,6 +1329,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         log.info("根据orderNo=[{}]查询到的订单明细[{}]", ordersNo, JSONUtil.toJsonStr(insOrdersVo));
         AssertionUtils.isFail(Objects.isNull(insOrdersVo), "订单不存在");
         QuoteEchoVo resultVo = new QuoteEchoVo(insOrdersVo);
+        resultVo.setEntryStatus(insOrdersVo.getEntryStatus());
         //获取保司信息
         String companyId = insOrdersVo.getInsOrders().getCompanyId();
         HttpResult<EsmInsCompany> esmInsCompanyHttpResult = platformClient.findLogoById(companyId);

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

@@ -764,6 +764,7 @@
 
     <select id="getById" resultMap="InsOrdersVoMap">
         select id,
+        entry_status,
         quote_no,
         agreement_id,
         company_id,

+ 9 - 3
tenant/organization/src/main/java/com/jzg/organization/controller/ReceivableController.java

@@ -641,6 +641,12 @@ public class ReceivableController {
         receivableService.exportPlatformSettlementExcel(page,settlementQueryVo);
     }
 
+    /**
+     * 应收手续费结算明细(车险/非车)
+     *
+     * @author lipf
+     * @date 2026/7/15 14:10
+     */
     @PostMapping("superviseSettlementDetailExcel")
     @Operation(summary = "应收手续费结算明细")
     public HttpResult superviseSettlementDetailExcel(@RequestBody SettlementQueryVo settlementQueryVo) {
@@ -759,13 +765,13 @@ public class ReceivableController {
     /**
      * 设置指定发票为结算完成状态
      *
-     * @param invoiceId 发票序号
+     * @param updateSettlementStatusVo 发票序号
      * @author lipf
      * @date 2026/6/11 9:33
      */
     @PostMapping("updateSettlementStatus")
-    public HttpResult<String> updateSettlementStatus(@RequestParam("id") String invoiceId){
-        int count = receivableService.updateSettlementStatus(invoiceId);
+    public HttpResult<String> updateSettlementStatus(@RequestBody UpdateSettlementStatusVo updateSettlementStatusVo){
+        int count = receivableService.updateSettlementStatus(updateSettlementStatusVo);
         if(count>0){
             return HttpResult.ok("订单被标记为结算完成");
         }else{

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

@@ -33,9 +33,9 @@ public interface SysUserAccountIncomeLogMapper extends BaseMapper<SysUserAccount
         left join ins_orders io
             on a.related_order_id = io.id
         left join sys_amount_auditing saa
-        on saa.user_id = a.user_id
+            on saa.id = a.related_amount_auditing_id
         where
-            a.user_id = #{ywyUserId} and a.create_time >= #{beginDate} and a.create_time < #{endDate} and a.is_delete = 0 order by a.create_time desc
+            a.user_id = #{ywyUserId} and a.create_time >= #{beginDate} and a.create_time < #{endDate} and a.is_delete = 0 and a.status = 10 order by a.create_time desc
         """)
     List<SysUserAccountChangeLog> queryYwyIORecs(String ywyUserId, LocalDate beginDate, LocalDate endDate);
 }

+ 2 - 2
tenant/organization/src/main/java/com/jzg/organization/service/ReceivableService.java

@@ -492,11 +492,11 @@ public interface ReceivableService extends IService<InsPlyIncome> {
     /**
      * 设置指定发票为结算完成状态
      *
-     * @param invoiceId 发票序号
+     * @param updateSettlementStatusVo 发票序号
      * @author lipf
      * @date 2026/6/11 9:33
      */
-    int updateSettlementStatus(String invoiceId);
+    int updateSettlementStatus(UpdateSettlementStatusVo updateSettlementStatusVo);
 
     /**
      * 平台协议结算

+ 100 - 55
tenant/organization/src/main/java/com/jzg/organization/service/impl/ReceivableServiceImpl.java

@@ -768,10 +768,32 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
             resultList.addAll(followAggVoList);
         }
 
-        // 3. 查询额外其他费用收入数据,补充到结果集
-        List<InsPlyIncomeDto> incomeDtoList = queryFollowIncomeData(settlementReportQueryVo);
-        if (CollUtil.isEmpty(incomeDtoList)) {
-            return resultList;
+        // 应收项为空时才去补充数据,不为空时不补充数据,补充数据是因为联查了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();
+                // 如果有发票类型为4的,则复制一条4的数据,完全一致,但发票类型为2
+                incomeDtoList.stream().filter(item -> InvoiceTypeEnum.FEE_4.getCode().equals(item.getInvoiceType())).forEach(item -> {
+                    InsPlyIncomeDto incomeDto = new InsPlyIncomeDto();
+                    BeanUtils.copyProperties(item, incomeDto);
+                    incomeDto.setInvoiceType(InvoiceTypeEnum.FEE_2.getCode());
+                    copyList.add(incomeDto);
+                });
+                incomeDtoList.addAll(copyList);
+            }
         }
 
         // 4. 根据筛选条件过滤收入数据(发票、结算时间/状态过滤)
@@ -912,13 +934,6 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
         return StrUtil.format("{}_{}_{}_{}", vo.getPartnerCompanyId(), vo.getYear(), vo.getMonth(), vo.getInvoiceType());
     }
 
-    /**
-     * 构建分组Key:partnerCompanyId_year_month
-     */
-    private String buildFillGroupKey(FollowCompanyFeeVO vo) {
-        return StrUtil.format("{}_{}_{}", vo.getPartnerCompanyId(), vo.getYear(), vo.getMonth());
-    }
-
     /**
      * 根据合作公司ID获取公司名称
      */
@@ -943,7 +958,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
      * 根据发票状态、开票时间、结算时间过滤收入数据
      * 优化:嵌套anyMatch改为HashMapID映射匹配,O(n²) -> O(n)
      */
-    private List<InsPlyIncomeDto> filterIncomeByInvoiceAndSettleCondition(List<InsPlyIncomeDto> incomeList, SettlementReportQueryVo queryVo) {
+    private List<InsPlyIncomeDto>  filterIncomeByInvoiceAndSettleCondition(List<InsPlyIncomeDto> incomeList, SettlementReportQueryVo queryVo) {
         String status = queryVo.getStatus();
         String invoiceStartTime = queryVo.getInvoiceStartTime();
         String invoiceEndTime = queryVo.getInvoiceEndTime();
@@ -1032,15 +1047,15 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
         // 现有结果集Key缓存
         Map<String, FollowCompanyFeeVO> existVoMap = resultList.stream()
                 .collect(Collectors.toMap(
-                        this::buildFillGroupKey,
+                        this::buildGroupKey,
                         Function.identity(),
                         (oldVal, newVal) -> oldVal
                 ));
 
         // 收入分组
         Map<String, List<InsPlyIncomeDto>> incomeGroupMap = incomeList.stream()
-                .collect(Collectors.groupingBy(dto -> StrUtil.format("{}_{}_{}",
-                        dto.getPartnerCompanyId(), dto.getSignYear(), dto.getSignMonth())));
+                .collect(Collectors.groupingBy(dto -> StrUtil.format("{}_{}_{}_{}",
+                        dto.getPartnerCompanyId(), dto.getSignYear(), dto.getSignMonth(), dto.getInvoiceType())));
 
         for (Map.Entry<String, List<InsPlyIncomeDto>> entry : incomeGroupMap.entrySet()) {
             String groupKey = entry.getKey();
@@ -1049,15 +1064,27 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
             String partnerCompanyId = firstDto.getPartnerCompanyId();
             String signYear = firstDto.getSignYear();
             String signMonth = firstDto.getSignMonth();
-
-            // 安全字符串转BigDecimal,兜底0
-            BigDecimal totalOtherReceivable = dtoList.stream()
-                    .map(dto -> {
-                        BigDecimal jq = safeBigDecimal(dto.getJqOtherCostsPremiums());
-                        BigDecimal sy = safeBigDecimal(dto.getSyOtherCostsPremiums());
-                        return jq.add(sy);
-                    })
-                    .reduce(BigDecimal.ZERO, BigDecimal::add);
+            String invoiceType = firstDto.getInvoiceType();
+
+            BigDecimal totalOtherReceivable = BigDecimal.ZERO;
+            if (InvoiceTypeEnum.FEE_2.getCode().equals(invoiceType)){
+                // 安全字符串转BigDecimal,兜底0
+                totalOtherReceivable = dtoList.stream()
+                        .map(dto -> {
+                            BigDecimal jq = safeBigDecimal(dto.getJqOtherCostsPremiums());
+                            BigDecimal sy = safeBigDecimal(dto.getSyOtherCostsPremiums());
+                            return jq.add(sy);
+                        })
+                        .reduce(BigDecimal.ZERO, BigDecimal::add);
+            }else{
+                // 安全字符串转BigDecimal,兜底0
+                totalOtherReceivable = dtoList.stream()
+                        .map(dto -> {
+                            BigDecimal jy = safeBigDecimal(dto.getJyOtherCostsPremiums());
+                            return jy;
+                        })
+                        .reduce(BigDecimal.ZERO, BigDecimal::add);
+            }
 
             // 已存在直接跳过,不存在新建VO
             if (!existVoMap.containsKey(groupKey)) {
@@ -1066,6 +1093,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
                 newVo.setYear(signYear);
                 newVo.setMonth(signMonth);
                 newVo.setTotalReceivable(totalOtherReceivable);
+                newVo.setInvoiceType(invoiceType);
                 newVo.setTotalInvoiced(BigDecimal.ZERO);
                 newVo.setTotalUnInvoiced(BigDecimal.ZERO);
                 newVo.setTotalSettlementAmount(BigDecimal.ZERO);
@@ -4535,16 +4563,19 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
                         .map(InsPlyIncomeInvoiceSettlement::getActualReceivedAmount)
                         .filter(Objects::nonNull)
                         .reduce(BigDecimal.ZERO, BigDecimal::add);
-//                BigDecimal settlementPaymentDifference = insPlyIncomeInvoiceSettlements.stream()
-//                        .map(InsPlyIncomeInvoiceSettlement::getSettlementPaymentDifference)
-//                        .filter(Objects::nonNull)
-//                        .reduce(BigDecimal.ZERO, BigDecimal::add);
+                BigDecimal settlementPaymentDifference = insPlyIncomeInvoiceSettlements.stream()
+                        .map(InsPlyIncomeInvoiceSettlement::getSettlementPaymentDifference)
+                        .filter(Objects::nonNull)
+                        .reduce(BigDecimal.ZERO, BigDecimal::add);
 
                 BigDecimal receivableSupervisePremium = action.getReceivableSupervisePremium()  != null ? action.getReceivableSupervisePremium(): BigDecimal.ZERO;
 
 //                BigDecimal overinflatedAmount = action.getOverinflatedAmount() != null? action.getOverinflatedAmount(): BigDecimal.ZERO;
                 // 回款差计算逻辑调整 2026年7月14日09:29:08
-                BigDecimal settlementPaymentDifference = BigDecimalUtil.subtract(settlementAmount,receivableSupervisePremium);
+//                BigDecimal settlementPaymentDifference = BigDecimal.ZERO;
+//                if (CollUtil.isNotEmpty(insPlyIncomeInvoiceSettlements) && settlementAmount.compareTo(BigDecimal.ZERO) > 0){
+//                    settlementPaymentDifference = BigDecimalUtil.subtract(settlementAmount,receivableSupervisePremium);
+//                }
                 // 待结算金额 = 开票金额 - 已收金额
                 BigDecimal remainSettlementAmount = receivableSupervisePremium.subtract(BigDecimalUtil.add(settlementAmount, settlementPaymentDifference));
                 // 设置已结算的金额
@@ -4554,7 +4585,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
                     // 特殊梳理,当待结算金额计算出来为负数时, 设置为0
                     remainSettlementAmount = BigDecimal.ZERO;
                 }
-                action.setRemainSettlementAmount( remainSettlementAmount);
+                action.setRemainSettlementAmount(remainSettlementAmount);
                 action.setCompanyAllName(allCompanyHierarchyPaths.get(Objects.toString(action.getCompanyId(),"")));
                 action.setSettlementStatus(settlementStatusName);
 
@@ -4798,6 +4829,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
                 case "6" -> dto.setInvoiceType("平台协议非车险应收");
             }
             dto.setInvoiceTypeName(Constant.invoiceRiskTypeMap.get(Objects.toString(dto.getInvoiceType())));
+            dto.setInvoiceRiskTypeName(Constant.invoiceRiskTypeMap.get(Objects.toString(dto.getInvoiceRiskType())));
             LambdaQueryWrapper<InsPlyIncomeInvoiceSettlementFile> wrapper = new LambdaQueryWrapper<InsPlyIncomeInvoiceSettlementFile>();
             List<InsPlyIncomeInvoiceSettlementFile> insPlyIncomeInvoiceSettlementFiles = insPlyIncomeInvoiceSettlementFileMapper.selectList(wrapper.eq(InsPlyIncomeInvoiceSettlementFile::getSettlementId, dto.getSettlementId()));
             if(CollUtil.isNotEmpty(insPlyIncomeInvoiceSettlementFiles)){
@@ -5339,30 +5371,29 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
         List<CompanySuperviseSettlementReportDto> allCompaniesIncomeDatas = baseMapper.queryCumulativeAccountsReceivable(systemCode, queryVo);
         // 结算状态在上面的sql进行过筛选了,后面就不再筛选了
         queryVo.setStatus(null);
-        if("20".equals(queryVo.getAccountsReceivable())){
-            allCompaniesIncomeDatas = allCompaniesIncomeDatas.stream().peek(action->{
-                // 统计非车的手续费
-                action.setSuperviseFee(action.getSuperviseFee4Other());
-            }).toList();
-        }
-
-        // 车险
-//        if("10".equals(queryVo.getAccountsReceivable())){
-//            // 默认情况下,superviseFee 得到的就是车险的手续费
-//            allCompaniesIncomeDatas = allCompaniesIncomeDatas.stream().toList();
-//        }else if("20".equals(queryVo.getAccountsReceivable())){
+//        if("20".equals(queryVo.getAccountsReceivable())){
 //            allCompaniesIncomeDatas = allCompaniesIncomeDatas.stream().peek(action->{
 //                // 统计非车的手续费
-//              action.setSuperviseFee(action.getSuperviseFee4Other());
+//                action.setSuperviseFee(action.getSuperviseFee4Other());
 //            }).toList();
-//        }else if(StrUtil.isEmpty(queryVo.getAccountsReceivable())){
-//                // 统计总的手续费
-////            allCompaniesIncomeDatas = allCompaniesIncomeDatas.stream().peek(action->{
-////                // 统计非车的手续费
-////                action.setSuperviseFee(action.getTotalReceivable());
-////            }).toList();
 //        }
 
+        // 车险
+        if("10".equals(queryVo.getAccountsReceivable())){
+            // 默认情况下,superviseFee 得到的就是车险的手续费
+            allCompaniesIncomeDatas = allCompaniesIncomeDatas.stream().toList();
+        }else if("20".equals(queryVo.getAccountsReceivable())){
+            allCompaniesIncomeDatas = allCompaniesIncomeDatas.stream().peek(action->{
+                // 统计非车的手续费
+              action.setSuperviseFee(action.getSuperviseFee4Other());
+            }).toList();
+        }else if(StrUtil.isEmpty(queryVo.getAccountsReceivable())){
+                // 统计总的手续费(车险+非车险)
+            allCompaniesIncomeDatas = allCompaniesIncomeDatas.stream().peek(action->{
+                action.setSuperviseFee(BigDecimalUtil.add(action.getSuperviseFee(), action.getSuperviseFee4Other()));
+            }).toList();
+        }
+
         // for test, 查看一家公司的数据,将不可变对象变成 可变对象
 //        allCompaniesIncomeDatas = allCompaniesIncomeDatas.stream().filter(action-> "1738811735599338932".equals(action.getCompanyId())).toList();
 //        allCompaniesIncomeDatas = new ArrayList<>(allCompaniesIncomeDatas);
@@ -6090,11 +6121,14 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
      * 3. 记录更新人和更新时间
      * </p>
      *
-     * @param invoiceId 发票序号,用于定位需要更新的发票记录
+     * @param updateSettlementStatusVo 发票序号,用于定位需要更新的发票记录
      * @return int 返回受影响的记录数,通常为1表示更新成功,0表示更新失败或记录不存在
      */
     @Override
-    public int updateSettlementStatus(String invoiceId) {
+    public int updateSettlementStatus(UpdateSettlementStatusVo updateSettlementStatusVo) {
+        String invoiceId = updateSettlementStatusVo.getInvoiceId();
+        String settlementPaymentReason = updateSettlementStatusVo.getSettlementPaymentReason();
+
         String userName = baseController.getUserName();
         String systemCode = baseController.getSystemCode();
         log.info("租户[{}]下的用户[{}]标识发票[{}]为结算完成", systemCode, userName, invoiceId);
@@ -6106,10 +6140,21 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
         BigDecimal settlementAmount =  insPlyIncomeInvoiceSettlements.stream().map(action-> BigDecimalUtil.add(action.getSettlementPaymentDifference(), action.getActualReceivedAmount()))
                 .reduce(BigDecimal.ZERO,BigDecimal::add);
         BigDecimal subtract = BigDecimalUtil.subtract(insPlyIncomeInvoice.getReceivableSupervisePremium(), settlementAmount);
-        if(subtract.compareTo(BigDecimal.ZERO) != 0){
-            InsPlyIncomeInvoiceSettlement insPlyIncomeInvoiceSettlement = insPlyIncomeInvoiceSettlements.get(0);
-            insPlyIncomeInvoiceSettlement.setSettlementPaymentDifference(BigDecimalUtil.add(subtract,insPlyIncomeInvoiceSettlement.getSettlementPaymentDifference()));
-            insPlyIncomeInvoiceSettlementMapper.updateById(insPlyIncomeInvoiceSettlement);
+        if (CollUtil.isNotEmpty(insPlyIncomeInvoiceSettlements)){
+            if(subtract.compareTo(BigDecimal.ZERO) != 0){
+                InsPlyIncomeInvoiceSettlement insPlyIncomeInvoiceSettlement = insPlyIncomeInvoiceSettlements.get(0);
+                insPlyIncomeInvoiceSettlement.setSettlementPaymentDifference(BigDecimalUtil.add(subtract,insPlyIncomeInvoiceSettlement.getSettlementPaymentDifference()));
+                insPlyIncomeInvoiceSettlement.setSettlementPaymentReason(settlementPaymentReason);
+                insPlyIncomeInvoiceSettlementMapper.updateById(insPlyIncomeInvoiceSettlement);
+            }
+        }else{
+            InsPlyIncomeInvoiceSettlement insPlyIncomeInvoiceSettlement = new InsPlyIncomeInvoiceSettlement();
+            insPlyIncomeInvoiceSettlement.setInvoiceId(invoiceId);
+            insPlyIncomeInvoiceSettlement.setReceivePaymentDate(new DateTime());
+            insPlyIncomeInvoiceSettlement.setActualReceivedAmount(BigDecimal.ZERO);
+            insPlyIncomeInvoiceSettlement.setSettlementPaymentDifference(BigDecimal.ZERO.subtract(insPlyIncomeInvoice.getReceivableSupervisePremium()));
+            insPlyIncomeInvoiceSettlement.setSettlementPaymentReason(settlementPaymentReason);
+            insPlyIncomeInvoiceSettlementMapper.insert(insPlyIncomeInvoiceSettlement);
         }
         return insPlyIncomeInvoiceMapper.update(null, new LambdaUpdateWrapper<InsPlyIncomeInvoice>()
                 .set(InsPlyIncomeInvoice::getStatus,"1")

+ 21 - 0
tenant/organization/src/main/java/com/jzg/organization/service/impl/SysAmountAuditingServiceImpl.java

@@ -298,6 +298,7 @@ public class SysAmountAuditingServiceImpl extends ServiceImpl<SysAmountAuditingM
         changeLog.setRemark("提现");
         SysAmountAuditing sysAmountAuditing = baseMapper.selectById(param.getId());
         if(sysAmountAuditing != null){
+            changeLog.setRelatedAmountAuditingId(sysAmountAuditing.getId());
             String bankCardNum = sysAmountAuditing.getBankCardNum();
             List<SysUserJzgInfoBankCard> sysUserJzgInfoBankCards =  sysUserJzgInfoBankCardService.queryBankCardBybankCardNum(bankCardNum,systemCode);
             if(CollUtil.isNotEmpty(sysUserJzgInfoBankCards)){
@@ -348,6 +349,25 @@ public class SysAmountAuditingServiceImpl extends ServiceImpl<SysAmountAuditingM
         audit.setRejectPerson(userName);
         audit.setRejectTime(LocalDateTime.now());
         this.updateById(audit);
+        this.saveChangeLog(audit,param);
+    }
+
+    /**
+     * 提现申请不通过的时候,向changeLog表中插入一条状态为90的数据
+     *
+     * @author lipf
+     * @date 2026/7/15 16:48
+     */
+    private void saveChangeLog(SysAmountAuditing audit, AmountAuditRejectParam param) {
+        log.info("提现申请不通过的时候,向changeLog表中插入一条状态为90的数据。audit=[{}],param=[{}]", JSONUtil.toJsonStr(audit), JSONUtil.toJsonStr(param));
+        SysUserAccountChangeLog log = new SysUserAccountChangeLog();
+        log.setRelatedAmountAuditingId(audit.getId());
+        log.setStatus("90");
+        log.setRemark("提现驳回");
+        log.setSystemCode(audit.getSystemCode());
+        log.setUserId(audit.getUserId());
+        log.setOperType(4);
+        sysUserAccountIncomeLogService.save(log);
     }
 
     @Override
@@ -470,6 +490,7 @@ public class SysAmountAuditingServiceImpl extends ServiceImpl<SysAmountAuditingM
     public String exportYwyIORecs(YwyIOParam ywyIOParam) {
         log.info("导出业务员收支明细:ywyIOParam=[{}]", JSONUtil.toJsonStr(ywyIOParam));
         List<SysUserAccountChangeLog> changeLogs = sysUserAccountIncomeLogService.queryYwyIORecs(ywyIOParam);
+        log.info("导出业务员收支明细:ywyIOParam=[{}].导出[{}]条记录", JSONUtil.toJsonStr(ywyIOParam), CollUtil.size(changeLogs));
         String userName=null;
         if(CollUtil.isNotEmpty(changeLogs)){
             SysUserAccountChangeLog sysUserAccountChangeLog = changeLogs.get(0);

+ 36 - 8
tenant/organization/src/main/java/com/jzg/organization/service/impl/SysUserAccountServiceImpl.java

@@ -1,6 +1,7 @@
 package com.jzg.organization.service.impl;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -94,7 +95,21 @@ public class SysUserAccountServiceImpl extends ServiceImpl<SysUserAccountMapper,
     @Override
     public Page<SysUserAccountVo> accountList(SysUserAccountPageParam param) {
         log.info("查询账户列表(应付概览页面):param=[{}]", JSONUtil.toJsonStr(param));
-        return baseMapper.accountList(param.getPage(), param);
+        Page<SysUserAccountVo> sysUserAccountVoPage = baseMapper.accountList(param.getPage(), param);
+        // 填充支付中的金额 add by lipf 2026年7月15日09:47:03
+        List<SysAmountAuditing> sysAmountAuditings = sysAmountAuditingService.list(new LambdaQueryWrapper<SysAmountAuditing>()
+                .eq(SysAmountAuditing::getAuditingStatus, 0));
+        Map<String, List<SysAmountAuditing>> collect = sysAmountAuditings.stream().collect(Collectors.groupingBy(SysAmountAuditing::getUserId));
+        sysUserAccountVoPage.getRecords().stream().peek(action->{
+            String userId = action.getUserId();
+            List<SysAmountAuditing> sysAmountAuditings1 = collect.get(userId);
+            if(CollUtil.isNotEmpty(sysAmountAuditings1)){
+                action.setPayingAmount(sysAmountAuditings1.get(0).getAmount());
+            }else{
+                action.setPayingAmount(BigDecimal.ZERO);
+            }
+        }).toList();
+        return sysUserAccountVoPage;
     }
 
     @Override
@@ -231,6 +246,7 @@ public class SysUserAccountServiceImpl extends ServiceImpl<SysUserAccountMapper,
 
     @Override
     public List<IncomeAndExpenseVo> getIncomeAndExpense(IncomeAndExpenseParam param) {
+        log.info("查询收支明细记录:param=[{}]", JSONUtil.toJsonStr(param));
         // 获取个人中心信息
         String mobile = baseController.getUserName();
         //String deptId = baseController.getUserDeptId();
@@ -265,25 +281,35 @@ public class SysUserAccountServiceImpl extends ServiceImpl<SysUserAccountMapper,
         
         // 时间筛选(支出记录)
         if (createTimeStart != null && !createTimeStart.isEmpty()) {
+            log.info("createTimeStart=[{}]", createTimeStart);
+            if(StrUtil.length(createTimeStart) < "2026-07-15 23:59:59".length()){
+                createTimeStart += " 00:00:00";
+            }
             auditingWrapper.ge(SysAmountAuditing::getCreateTime,
                     LocalDateTime.parse(createTimeStart, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
         }
         if (createTimeEnd != null && !createTimeEnd.isEmpty()) {
+            log.info("createTimeEnd=[{}]",createTimeEnd);
+            if(StrUtil.length(createTimeEnd) < "2026-07-15 23:59:59".length()){
+                createTimeEnd += " 23:59:59";
+            }
             auditingWrapper.le(SysAmountAuditing::getCreateTime,
                     LocalDateTime.parse(createTimeEnd, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
         }
-        
         List<SysAmountAuditing> sysAmountAuditingList = sysAmountAuditingService.list(auditingWrapper);
+        log.info("查询出审核记录[{}]条记录",CollUtil.size(sysAmountAuditingList));
 
+        Map<String, SysUser> userMap = new HashMap<>();
         // 批量查询用户信息
         Set<String> collect = sysAmountAuditingList.stream().map(SysAmountAuditing::getUserId).collect(Collectors.toSet());
-        QueryWrapper<SysUser> idSet = new QueryWrapper<SysUser>().in("id", collect);
-        List<SysUser> list = sysUserService.list(idSet);
-        Map<String, SysUser> userMap = new HashMap<>();
-        if (CollUtil.isNotEmpty(list)){
-            userMap = list.stream().collect(Collectors.toMap(SysUser::getId, Function.identity()));
+        log.info("collect=[{}]", JSONUtil.toJsonStr(collect));
+        if(CollUtil.isNotEmpty(collect)){
+            QueryWrapper<SysUser> idSet = new QueryWrapper<SysUser>().in("id", collect);
+            List<SysUser> list = sysUserService.list(idSet);
+            if (CollUtil.isNotEmpty(list)){
+                userMap = list.stream().collect(Collectors.toMap(SysUser::getId, Function.identity()));
+            }
         }
-
         // 构建订单收入查询参数(手动设置时间,避免类型转换问题)
         InsFeeOrdersParam feeOrdersParam = new InsFeeOrdersParam();
         feeOrdersParam.setUserId(sysUserJzgInfo.getUserId());
@@ -294,6 +320,7 @@ public class SysUserAccountServiceImpl extends ServiceImpl<SysUserAccountMapper,
             feeOrdersParam.setCreateTimeEnd(LocalDateTime.parse(createTimeEnd, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
         }
         List<InsFeeOrders> insFeeOrdersList = quoteClient.getInsFeeOrderByUserId(feeOrdersParam);
+        log.info("查询费用收入明细:feeOrdersParam=[{}],insFeeOrdersList=[{}]", JSONUtil.toJsonStr(feeOrdersParam), CollUtil.size(insFeeOrdersList));
 
         // 构建分销收入查询参数
         InsFeeOrdersParam feeOrdersParam1 = new InsFeeOrdersParam();
@@ -305,6 +332,7 @@ public class SysUserAccountServiceImpl extends ServiceImpl<SysUserAccountMapper,
             feeOrdersParam1.setCreateTimeEnd(LocalDateTime.parse(createTimeEnd, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
         }
         List<InsFeeOrders> distributionList = quoteClient.getInsFeeOrdersList(feeOrdersParam1);
+        log.info("查询分销记录:feeOrdersParam1=[{}], distributionList=[{}]", JSONUtil.toJsonStr(feeOrdersParam1), CollUtil.size(distributionList));
 
         List<IncomeAndExpenseVo.IncomeAndExpenseList> allRecords = new ArrayList<>();
         // 处理支出记录

+ 11 - 2
tenant/organization/src/main/resources/mapper/ReceivableMapper.xml

@@ -738,6 +738,7 @@
         GROUP_CONCAT(DISTINCT ipii.company_id SEPARATOR ',') AS company_id,
         GROUP_CONCAT(DISTINCT eic.name SEPARATOR ',') AS company_name,
         GROUP_CONCAT(DISTINCT ipii.invoice_type SEPARATOR ',') AS invoice_type,
+        GROUP_CONCAT(DISTINCT ipii.invoice_risk_type SEPARATOR ',') AS invoice_risk_type,
         GROUP_CONCAT(DISTINCT ipii.invoice_party SEPARATOR ',') AS invoice_party,
         GROUP_CONCAT(DISTINCT ipii.tax_point SEPARATOR ',') AS tax_point,
         GROUP_CONCAT(DISTINCT ipiis.settlement_payment_reason SEPARATOR ',') AS settlement_payment_reason,
@@ -898,6 +899,8 @@
         ipii.invoice_party as invoiceParty,
         ipii.tax_point as taxPoint,
         (COALESCE(ipi.jq_supervise_costs_premiums,0)  + COALESCE(ipi.sy_supervise_costs_premiums,0)  + COALESCE(ipi.jy_supervise_costs_premiums,0) ) as receivableSuperviseCosts,
+        COALESCE(ipi.jq_supervise_costs_premiums, 0) + COALESCE(ipi.sy_supervise_costs_premiums, 0) as superviseCostPremiums4Car,
+        COALESCE(ipi.jy_supervise_costs_premiums, 0) as jy_supervise_costs_premiums,
         ipi.jq_premium as jqPremium,
         ipi.jq_supervise_costs_proportion as jqSuperviseCostsProportion,
         ipi.jq_policy_no as jqPolicyNo,
@@ -1481,7 +1484,7 @@
         eic.name as company_name,
         eic.name_simple as companyNameSimple,
         sum( ipiis.actual_received_amount ) AS actual_received_amount,
-        GROUP_CONCAT(DISTINCT ipiis.settlement_payment_reason SEPARATOR ',') AS settlement_payment_reason,
+        GROUP_CONCAT(DISTINCT ipiis.settlement_payment_reason SEPARATOR ',') AS paymentReason,
         ipii.status,
         ipii.payment_reason
         FROM
@@ -1514,6 +1517,9 @@
             <if test="invoiceRecordQueryVo.companyNameSimple != null and invoiceRecordQueryVo.companyNameSimple != ''">
                 AND eic.id = #{invoiceRecordQueryVo.companyNameSimple}
             </if>
+            <if test="invoiceRecordQueryVo.partnerCompanyId != null and invoiceRecordQueryVo.partnerCompanyId != ''">
+                AND eic.id = #{invoiceRecordQueryVo.partnerCompanyId}
+            </if>
         </where>
         <if test="invoiceRecordQueryVo.settlementStatus != null and invoiceRecordQueryVo.settlementStatus != ''">
             HAVING CASE
@@ -1552,7 +1558,7 @@
         eic.name_simple as companyNameSimple,
         sum( ipiis.actual_received_amount ) AS actual_received_amount,
         ipii.status,
-        GROUP_CONCAT(DISTINCT iffo.falsely_increased_reason SEPARATOR ',') as paymentReason,
+        GROUP_CONCAT(DISTINCT ipiis.settlement_payment_reason SEPARATOR ',') as paymentReason,
         GROUP_CONCAT(DISTINCT iffo.year SEPARATOR ',') AS year,
         GROUP_CONCAT(DISTINCT iffo.month SEPARATOR ',') AS month,
         iffo.partner_company_id,
@@ -1593,6 +1599,9 @@
             <if test="invoiceRecordQueryVo.companyNameSimple != null and invoiceRecordQueryVo.companyNameSimple != ''">
                 AND eic.id = #{invoiceRecordQueryVo.companyNameSimple}
             </if>
+            <if test="invoiceRecordQueryVo.partnerCompanyId != null and invoiceRecordQueryVo.partnerCompanyId != ''">
+                AND iffo.partner_company_id = #{invoiceRecordQueryVo.partnerCompanyId}
+            </if>
         </where>
         GROUP BY
         ipii.id,