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

修改bug:
bug表1035,手续费/跟单结算报表-保险公司报表,结算状态更改一下选项:已开票已结清;已开票未结清;未开票

jiakai 3 недель назад
Родитель
Сommit
3d78250cab

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

@@ -324,4 +324,9 @@ public class InsPlyIncomeDto extends BaseModel {
     @Schema(description = "地区归属")
     private String companyNameSimple;
 
+    @TableField(exist = false)
+    @Schema(description = "禁用标志:1-已对账(禁用),0-未对账(可用)")
+    @ExcelIgnore
+    private String disableFlag;
+
 }

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

@@ -203,7 +203,7 @@ public class ReceivableController {
         Page<InsPlyIncome> data = ok.getData();
         
         // 设置disableFlag:根据签单时间的年月、companyId、partnerCompanyId查询是否存在对账数据
-        if (data != null && data.getRecords() != null && !data.getRecords().isEmpty()) {
+        if (data != null && data.getRecords() != null && CollUtil.isNotEmpty(data.getRecords())) {
             receivableService.setDisableFlagForOtherReceivable(data.getRecords(), systemCode);
         }
         

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

@@ -538,7 +538,6 @@ public interface ReceivableService extends IService<InsPlyIncome> {
     /**
      * 为私有协议跟单费列表设置disableFlag
      * 根据签单时间的年月、companyId、partnerCompanyId查询ins_fee_follow_order表,有数据则disableFlag为1
-     * 如果没有数据再根据年月、partnerCompanyId查询ins_fee_follow_order_reconciliation表,有数据则disableFlag为1
      * 否则disableFlag为0
      * @param records 应收数据列表
      * @param systemCode 租户代码

+ 23 - 4
tenant/organization/src/main/java/com/jzg/organization/service/impl/ReceivableServiceImpl.java

@@ -1,5 +1,6 @@
 package com.jzg.organization.service.impl;
 
+import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.collection.ListUtil;
 import cn.hutool.core.date.DateTime;
@@ -879,12 +880,31 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
             }
         }
 
-        // 4. 根据筛选条件过滤收入数据(发票、结算时间/状态过滤)
-        List<InsPlyIncomeDto> filterIncomeList = filterIncomeByInvoiceAndSettleCondition(incomeDtoList, settlementReportQueryVo);
-        if (CollUtil.isEmpty(filterIncomeList)) {
+        List<InsPlyIncome> insPlyIncomes = BeanUtil.copyToList(incomeDtoList, InsPlyIncome.class);
+        // 设置disableFlag:根据签单时间的年月、companyId、partnerCompanyId查询是否存在对账数据
+        if (CollUtil.isNotEmpty(incomeDtoList)) {
+            String systemCode = baseController.getSystemCode();
+            setDisableFlagForOtherReceivable(insPlyIncomes, systemCode);
+        }
+
+        // 根据结算状态过滤数据
+        String status = settlementReportQueryVo.getStatus();
+        String invoiceStartTime = settlementReportQueryVo.getInvoiceStartTime();
+        String invoiceEndTime = settlementReportQueryVo.getInvoiceEndTime();
+        String settleStartTime = settlementReportQueryVo.getSettlementStartTime();
+        String settleEndTime = settlementReportQueryVo.getSettlementEndTime();
+        if (StrUtil.isNotBlank(invoiceStartTime) || StrUtil.isNotBlank(invoiceEndTime)
+                || StrUtil.isNotBlank(settleStartTime) || StrUtil.isNotBlank(settleEndTime)
+                || (StrUtil.equals("0", status) || StrUtil.equals("1", status))) {
             return resultList;
         }
 
+        // 如果status = 0或1,则直接返回空的filterIncomeList,如果status = 2,则查询所有ins_ply_follow_invoice_link表,过滤掉disableFlag为1 的,保留为0 的数据
+        List<InsPlyIncomeDto> filterIncomeList = insPlyIncomes.stream()
+                .filter(income -> "0".equals(income.getDisableFlag()))
+                .map(income -> BeanUtil.copyProperties(income, InsPlyIncomeDto.class))
+                .collect(Collectors.toList());
+
         // 5. 将其他费用收入合并进结果集合
         mergeOtherCostIncomeToResult(filterIncomeList, resultList, companyMap);
 
@@ -1355,7 +1375,6 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
     /**
      * 为私有协议跟单费列表设置disableFlag
      * 根据签单时间的年月、companyId、partnerCompanyId查询ins_fee_follow_order表,有数据则disableFlag为1
-     * 如果没有数据再根据年月、partnerCompanyId查询ins_fee_follow_order_reconciliation表,有数据则disableFlag为1
      * 否则disableFlag为0
      * @param records 应收数据列表
      * @param systemCode 租户代码

+ 17 - 2
tenant/organization/src/main/resources/mapper/InsFeeFollowOrderMapper.xml

@@ -82,8 +82,23 @@
                 AND ffo.create_time BETWEEN #{query.startTime} AND #{query.endTime}
             </if>
             -- 发票状态筛选
-            <if test="query.status != null">
-                AND inv.status = #{query.status}
+            <if test="query.status != null and query.status != ''">
+                <!-- 当状态为1时,查询已开票的数据 -->
+                <if test="query.status != 2">
+                    AND ffo.id in (
+                    select link.follow_id from ins_ply_follow_invoice_link link
+                    LEFT JOIN ins_ply_income_invoice ipii ON link.invoice_id = ipii.id AND ipii.is_delete = 0
+                    where ipii.status = #{query.status} and link.is_delete = 0
+                    )
+                </if>
+                <!-- 当状态为2时,查询未开票的数据 -->
+                <if test="query.status == 2">
+                    AND NOT EXISTS (
+                    SELECT 1 FROM ins_ply_follow_invoice_link link
+                    LEFT JOIN ins_ply_income_invoice inv ON link.invoice_id = inv.id AND inv.is_delete = 0
+                    WHERE link.follow_id = ffo.id AND link.is_delete = 0
+                    )
+                </if>
             </if>
             -- 开票时间范围
             <if test="query.invoiceStartTime != null and query.invoiceStartTime != '' and query.invoiceEndTime != null and query.invoiceEndTime != ''">