ソースを参照

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

# Conflicts:
#	tenant/organization/src/main/java/com/jzg/organization/controller/ReceivableController.java
jiakai 3 ヶ月 前
親
コミット
1b6bceb4d4

+ 3 - 0
commons/src/main/java/com/jzg/commons/entity/finance/dto/ReceiverSettlementReportDto.java

@@ -49,4 +49,7 @@ public class ReceiverSettlementReportDto {
 
     @Schema(description = "未结算总计")
     private String unSettledAmount;
+
+    @Schema(description = "已结算发票的发票号")
+    private String invoiceIds;
 }

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

@@ -59,5 +59,8 @@ public class IncomeAndExpenseVo {
 
         @Schema(description = "银行卡号")
         private String bankCardNum;
+
+        @Schema(description = "驳回原因")
+        private String rejectReason;
     }
 }

+ 2 - 11
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/InsFeeAuditController.java

@@ -139,19 +139,11 @@ public class InsFeeAuditController {
     @Operation(summary = "审核订单")
     public HttpResult<String> verifyOrder(@RequestBody VerifyOrderParam param){
         try{
-            insFeeAuditService.verifyOrder(param);
+            return insFeeAuditService.verifyOrder(param);
         }catch (Exception e){
             log.info("审核订单发生异常:param=[{}], e", JSONUtil.toJsonStr(param), e);
             return HttpResult.error(e.getMessage(),param.getOrderNo());
         }
-        // add by lipf ,2026年6月13日14:50:24 这里将orderNo 作为result的data传回去。 在记录订单轨迹的时候使用
-        if("1".equals(Objects.toString(param.getAuditStatus(),"") )){
-            return HttpResult.ok("订单审核成功",param.getOrderNo());
-        }else if("2".equals(Objects.toString(param.getAuditStatus(),""))){
-            return HttpResult.ok("订单审核驳回成功",param.getOrderNo());
-        }else{
-            return HttpResult.ok("订单审核状态不支持。"+param.getAuditStatus(),param.getOrderNo());
-        }
     }
 
     /**
@@ -196,8 +188,7 @@ public class InsFeeAuditController {
     @PostMapping("/saveCostInfo")
     @Operation(summary = "保存调整的费用")
     public HttpResult<String> saveCostInfo(@RequestBody PtlAgreementCostRatioVo param){
-        insFeeAuditService.saveCostInfo(param);
-        return HttpResult.ok();
+        return insFeeAuditService.saveCostInfo(param);
     }
 
     /**

+ 4 - 2
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/InsFeeAuditService.java

@@ -79,7 +79,7 @@ public interface InsFeeAuditService extends IService<InsFeeAudit> {
      * 审核订单
      * @param param
      */
-    void verifyOrder(VerifyOrderParam param);
+    HttpResult<String> verifyOrder(VerifyOrderParam param);
 
     /**
      * 设置为疑问订单
@@ -98,9 +98,11 @@ public interface InsFeeAuditService extends IService<InsFeeAudit> {
 
     /**
      * 保存调整的费用
+     *
      * @param param
+     * @return HttpResult<String> 费用调整的结果,可能保存失败
      */
-    void saveCostInfo(PtlAgreementCostRatioVo param);
+    HttpResult<String> saveCostInfo(PtlAgreementCostRatioVo param);
 
     /**
      * 导出订单审核列表

+ 50 - 5
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsFeeAuditServiceImpl.java

@@ -416,10 +416,10 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
      */
     @Override
     @GlobalTransactional(rollbackFor = Exception.class)
-    public void verifyOrder(VerifyOrderParam param) {
+    public HttpResult<String> verifyOrder(VerifyOrderParam param) {
         String systemCode = baseController.getSystemCode();
         String userId = baseController.getUserId();
-        log.info("订单费用审核.systemCode=[{}], param=[{}]",systemCode, JSONUtil.toJsonStr(param));
+        log.info("订单费用审核.systemCode=[{}],userId=[{}],param=[{}]",systemCode,userId, JSONUtil.toJsonStr(param));
         InsFeeAudit audit = this.getById(param.getOrderNo());
         if(audit == null){
             throw new ServiceException("要审核的订单不存在");
@@ -446,7 +446,6 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
         }
         InsFeeOrders feeOrders = null;
         SysUserAccount userAccount = null;
-        String jzgInfoId = null;
         if(param.getAuditStatus().equals(1)){
             StateResult stateFailResult = auditStateListener.statusChange(AuditState.AuditStateEnum.SUCCESS_AUDIT,audit.getAuditStatus()+"");
             audit.setAuditStatus(stateFailResult.getCurrentState());
@@ -519,6 +518,14 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
         }catch (Exception e){
             log.error("保存合伙人佣金计算异常:{}",e.getMessage(), e);
         }
+        // add by lipf ,2026年6月13日14:50:24 这里将orderNo 作为result的data传回去。 在记录订单轨迹的时候使用
+        if("1".equals(Objects.toString(param.getAuditStatus(),"") )){
+            return HttpResult.ok("订单审核成功",param.getOrderNo());
+        }else if("2".equals(Objects.toString(param.getAuditStatus(),""))){
+            return HttpResult.ok("订单审核驳回成功",param.getOrderNo());
+        }else{
+            return HttpResult.ok("订单审核状态不支持。"+param.getAuditStatus(),param.getOrderNo());
+        }
     }
 
     /**
@@ -812,8 +819,16 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
     }
 
     @Override
-    public void saveCostInfo(PtlAgreementCostRatioVo param) {
-        log.info("保存调整后的费用:param=[{}]", JSONUtil.toJsonStr(param));
+    public HttpResult<String> saveCostInfo(PtlAgreementCostRatioVo param) {
+        String systemCode = baseController.getSystemCode();
+        String userName = baseController.getUserName();
+        log.info("保存调整后的费用:systemCode=[{}], userName=[{}],param=[{}]", systemCode, userName, JSONUtil.toJsonStr(param));
+        // add by lipf, 2026年6月22日10:15:51 已经审核通过的订单不能在让调整费用,否则会造成费用不一致。 会影响很多地方
+        String orderNo = param.getOrderNo();
+        HttpResult<String> validateRes = this.validateOrderCheck(orderNo);
+        if(validateRes.isFail()){
+            return validateRes;
+        }
         try {
             feeOrdersService.calcCosts(param);
         } catch (ReflectiveOperationException e) {
@@ -823,6 +838,36 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
         // 保存比例调整记录
         InsFeeOrderRecord record = new InsFeeOrderRecord(param);
         recordService.updateById(record);
+        return HttpResult.ok();
+    }
+
+    /**
+     * 校验订单是否审核通过,如果审核通过,则不让修改费用
+     *
+     * @param orderNo 订单号
+     * @author lipf
+     * @date 2026/6/22 10:16
+     */
+    private HttpResult<String> validateOrderCheck(String orderNo) {
+        InsFeeAudit audit = this.getById(orderNo);
+        if(audit == null){
+            String msg = String.format("订单%s不存在审核记录,无法修改", orderNo);
+            log.info(msg);
+            return HttpResult.error(msg);
+        }
+        if(audit.getAuditStatus() > 0){
+            String msg;
+            if(1  ==  audit.getAuditStatus()){
+                msg = String.format("订单%s已经审核通过,无法修改",orderNo);
+            } else if(2  ==  audit.getAuditStatus()){
+                msg = String.format("订单%s已经审核驳回,无法修改",orderNo);
+            }else{
+                msg = String.format("订单%s不是未审核状态,无法修改",orderNo);
+            }
+            log.info(msg);
+            return HttpResult.error(msg);
+        }
+        return HttpResult.ok();
     }
 
     @Override

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

@@ -447,7 +447,7 @@ public class ReceivableController {
         try{
             List<String> orderNos = receivablePageIds.stream().map(InsPlyIncomeOrder::getOrderNo).distinct().toList();
             totalReceivablePremium = receivableService.queryAllTotalReceivablePremium(orderNos);
-            totalReceivablePremium = totalReceivablePremium.setScale(2, RoundingMode.HALF_DOWN);
+            totalReceivablePremium = totalReceivablePremium.setScale(5, RoundingMode.HALF_DOWN);
         }catch (Exception e){
             log.error("统计总的应收异常",e);
         }
@@ -573,6 +573,18 @@ public class ReceivableController {
         return HttpResult.ok(receivableService.deleteSettlementById(id) ? "删除成功":"删除失败");
     }
 
+    /**
+     * 删除平台结算记录
+     *
+     * @author lipf
+     * @date 2026/6/22 16:18
+     */
+    @DeleteMapping("/deletePlatformSettlementById/{id}")
+    @Operation(summary = "删除平台结算记录")
+    public HttpResult<String> deletePlatformSettlementById(@PathVariable String id){
+        return receivableService.deletePlatformSettlementById(id);
+    }
+
     @DeleteMapping("/deleteFollowSettlementById/{id}")
     @Operation(summary = "删除跟单结算记录")
     public HttpResult<Boolean> deleteFollowSettlementById(@PathVariable String id) {

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

@@ -9,6 +9,7 @@ import com.jzg.commons.entity.dto.IncomeAndExpenseParam;
 import com.jzg.commons.entity.dto.SysUserAccountPageParam;
 import com.jzg.commons.entity.dto.SysUserAccountParam;
 import com.jzg.commons.entity.po.SysUserAccount;
+import com.jzg.commons.entity.vo.IncomeAndExpenseVo;
 import com.jzg.commons.entity.vo.SysUserAccountVo;
 import com.jzg.commons.entity.vo.UserAccountStatisVo;
 import com.jzg.organization.service.SysUserAccountIncomeLogService;
@@ -91,7 +92,7 @@ public class UserAccountController {
 
     @Operation(summary = "收支记录")
     @PostMapping("/getIncomeAndExpense")
-    public HttpResult getIncomeAndExpense(@RequestBody IncomeAndExpenseParam param){
+    public HttpResult<List<IncomeAndExpenseVo>> getIncomeAndExpense(@RequestBody IncomeAndExpenseParam param){
         return HttpResult.ok(userAccountService.getIncomeAndExpense(param));
     }
 

+ 9 - 0
tenant/organization/src/main/java/com/jzg/organization/mapper/ReceivableMapper.java

@@ -263,4 +263,13 @@ public interface ReceivableMapper extends BaseMapper<InsPlyIncome> {
     List<InsPlyIncomeDto> queryFollowIncome(@Param("startYear") Integer startYear,
                                             @Param("endYear") Integer endYear,
                                             @Param("systemCode")  String systemCode);
+
+    /**
+     * 查询发票结算的金额
+     *
+     * @author lipf
+     * @date 2026/6/22 15:47
+     */
+    BigDecimal querySettledAmountByInvoiceIds(@Param("invoiceIdList") List<String> invoiceIdList);
+
 }

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

@@ -426,10 +426,11 @@ public interface ReceivableService extends IService<InsPlyIncome> {
 
     /**
      * 删除结算记录
-     * @param id
+     *
+     * @param settlementId
      * @return
      */
-    boolean deleteSettlementById(String id);
+    boolean deleteSettlementById(String settlementId);
 
     /**
      * 删除跟单结算记录
@@ -491,4 +492,13 @@ public interface ReceivableService extends IService<InsPlyIncome> {
      * @date 2026/6/11 9:33
      */
     int updateSettlementStatus(String invoiceId);
+
+    /**
+     * 平台协议结算
+     *
+     * @param id 平台协议结算记录的序号
+     * @author lipf
+     * @date 2026/6/22 11:40
+     */
+    HttpResult<String> deletePlatformSettlementById(String id);
 }

+ 76 - 7
tenant/organization/src/main/java/com/jzg/organization/service/impl/ReceivableServiceImpl.java

@@ -202,6 +202,10 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
      */
     @Override
     public HttpResult<List<ContractVO>> queryReceivableContact(InvoicingVo invoicingVo) {
+        List<String> incomeIds = invoicingVo.getIncomeIds();
+        if(CollUtil.isEmpty(incomeIds)){
+            return HttpResult.error("请勾选未结算的订单数据");
+        }
         List<InsPlyIncome> insPlyIncomes = baseMapper.queryIncomeByIds(invoicingVo);
         List<ContractVO> contractVOS = insPlyIncomes.stream().map(action -> new ContractVO(action.getContactPerson(), action.getContactPersonPhone())).distinct().toList();
         log.info("根据订单编号查询得到的对接人信息[{}]个", CollUtil.size(contractVOS));
@@ -1467,12 +1471,66 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
         return importExcelResultVo;
     }
 
+
+    /**
+     * 平台协议结算
+     *
+     * @param settlementId 平台协议结算记录的序号
+     * @author lipf
+     * @date 2026/6/22 11:40
+     */
+    @Override
+    public HttpResult<String> deletePlatformSettlementById(String settlementId) {
+        log.info("平台删除结算记录。settlementId=[{}]",settlementId);
+        InsPlyIncomeInvoiceSettlement settlement = insPlyIncomeInvoiceSettlementMapper.selectById(settlementId);
+        if(settlement == null){
+            log.info("平台删除结算记录.序号为[{}]的结算记录不存在", settlementId);
+            throw new SystemException("结算记录不存在");
+        }
+        String invoiceId = settlement.getInvoiceId();
+        if (StrUtil.isBlank(invoiceId)){
+            throw new SystemException("结算记录id不存在");
+        }
+        insPlyIncomeInvoiceMapper.deleteById(invoiceId);
+        // 查询中间表:使用 QueryWrapper,增加逻辑删除过滤
+        LambdaQueryWrapper<InsPlyIncomeInvoiceLink> linkQueryWrapper = new LambdaQueryWrapper<>();
+        linkQueryWrapper.eq(InsPlyIncomeInvoiceLink::getInvoiceId, invoiceId);
+        linkQueryWrapper.eq(InsPlyIncomeInvoiceLink::getIsDelete, SETTLE_STATUS_RESET);
+        List<InsPlyIncomeInvoiceLink> linkList = insPlyIncomeInvoiceLinkMapper.selectList(linkQueryWrapper);
+
+        if(CollUtil.isNotEmpty(linkList)){
+            for (InsPlyIncomeInvoiceLink insPlyIncomeInvoiceLink : linkList) {
+                insPlyIncomeInvoiceLinkMapper.deleteByInvoiceId(insPlyIncomeInvoiceLink.getInvoiceId());
+            }
+        }
+        // 提取incomeId列表
+        List<String> incomeIds = linkList.stream()
+                .map(InsPlyIncomeInvoiceLink::getIncomeId)
+                .distinct()
+                .collect(Collectors.toList());
+        // 构造更新条件,增加主表逻辑删除过滤
+        LambdaUpdateWrapper<InsPlyIncome> incomeUpdateWrapper = new LambdaUpdateWrapper<>();
+        incomeUpdateWrapper.set(InsPlyIncome::getSettlementStatus, SETTLE_STATUS_RESET)
+                .set(InsPlyIncome::getSuperviseSettlement, SETTLE_STATUS_RESET)
+                .set(InsPlyIncome::getOtherSettlement, SETTLE_STATUS_RESET)
+                .set(InsPlyIncome::getJySuperviseSettlement, SETTLE_STATUS_RESET)
+                .set(InsPlyIncome::getJyOtherSettlement, SETTLE_STATUS_RESET)
+                .eq(InsPlyIncome::getIsDelete, SETTLE_STATUS_RESET)
+                .in(InsPlyIncome::getId, incomeIds);
+
+        // 执行更新
+        baseMapper.update(null, incomeUpdateWrapper);
+        insPlyIncomeInvoiceSettlementMapper.deleteById(settlementId);
+        return HttpResult.ok("删除结算记录成功");
+    }
+
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public boolean deleteSettlementById(String id) {
-        log.info("私有协议-结算记录-删除: id=[{}]",id);
-        InsPlyIncomeInvoiceSettlement settlement = insPlyIncomeInvoiceSettlementMapper.selectById(id);
+    public boolean deleteSettlementById(String settlementId) {
+        log.info("私有协议-结算记录-删除: id=[{}]", settlementId);
+        InsPlyIncomeInvoiceSettlement settlement = insPlyIncomeInvoiceSettlementMapper.selectById(settlementId);
         if(settlement == null){
+            log.info("序号为[{}]的结算记录不存在", settlementId);
             throw new SystemException("结算记录不存在");
         }
         String invoiceId = settlement.getInvoiceId();
@@ -1508,7 +1566,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
             // 执行更新
             baseMapper.update(null, incomeUpdateWrapper);
         }
-        return insPlyIncomeInvoiceSettlementMapper.deleteById(id) > 0;
+        return insPlyIncomeInvoiceSettlementMapper.deleteById(settlementId) > 0;
     }
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -2208,7 +2266,6 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
     @Transactional(rollbackFor = Exception.class)
     public boolean batchModify(BatchModifyVo batchModifyVo) {
         log.info("批量修改应收订单: batchModifyVo=[{}]", JSONUtil.toJsonStr(batchModifyVo));
-
         List<String> incomeIds = batchModifyVo.getIncomeIds();
         if (CollUtil.isEmpty(incomeIds)) {
             throw new ServiceException("请勾选要批量修改的应收订单");
@@ -2292,7 +2349,6 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
         batchModifyVo.setOrderNos(orderNos);
         HttpResult<String> updateOrdersRes = insFeeOrdersClient.updateOrdersBatch(batchModifyVo);
         log.info("更新车险订单的结果:updateOrdersRes=[{}]", JSONUtil.toJsonStr(updateOrdersRes));
-
         return true;
     }
 
@@ -3778,6 +3834,18 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
                     action.setCompanyName(esmInsCompany.getNameSimple());
                 }
                 action.setCompanyALlName(allCompanyHierarchyPaths.get(action.getCompanyId()));
+                String invoiceIds = action.getInvoiceIds();
+                if(StrUtil.isNotEmpty(invoiceIds)){
+                    List<String> invoiceIdList = Arrays.asList(invoiceIds.split(","));
+                    log.info("invoiceIdList.size=[{}]", CollUtil.size(invoiceIdList));
+                    log.info("invoiceIdList=[{}]", JSONUtil.toJsonStr(invoiceIdList));
+                    BigDecimal amount = baseMapper.querySettledAmountByInvoiceIds(invoiceIdList);
+                    action.setSettledAmount(Objects.toString(amount,"0"));
+                    action.setUnSettledAmount(BigDecimalUtil.subtract(new BigDecimal(action.getTotalReceivable()),amount).toString());
+                }else{
+                    action.setSettledAmount("0");
+                    action.setUnSettledAmount(BigDecimalUtil.subtract(new BigDecimal(action.getTotalReceivable()),BigDecimal.ZERO).toString());
+                }
             }).toList();
             receiverSettlementReport.setRecords(records);
         }
@@ -3787,7 +3855,8 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
     @Override
     public void exportReceiverSettlementReportExcel(Page page, SettlementReportQueryVo settlementReportQueryVo) {
         settlementReportQueryVo.setSystemCode(baseController.getSystemCode());
-        Page<ReceiverSettlementReportDto> receiverSettlementReport = baseMapper.getReceiverSettlementReport(page, settlementReportQueryVo);
+        // modify by lipf 2026年6月22日16:24:15 无法通过一个sql查询出所有要求的数据, 只能通过多个sql对数据进行聚合
+        Page<ReceiverSettlementReportDto> receiverSettlementReport = this.receiverSettlementReport(page, settlementReportQueryVo);
         List<ReceiverSettlementReportDto> receiverSettlementReportDtos = receiverSettlementReport.getRecords();
         EasyExcelUtils.exportForWeb(ServletUtils.getResponse(), ReceiverSettlementReportDto.class, receiverSettlementReportDtos, "对接人结算报表");
     }

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

@@ -310,6 +310,7 @@ public class SysUserAccountServiceImpl extends ServiceImpl<SysUserAccountMapper,
             item.setCreateTime(auditing.getCreateTime());
             item.setStatus(auditing.getAuditingStatus().toString());
             item.setRemark("提现支出");
+            item.setRejectReason(auditing.getRejectReason());
             item.setBankName(auditing.getBankName());
             item.setUserName(userMap.getOrDefault(auditing.getUserId(), new SysUser()).getUsername());
             item.setBankCardNum(auditing.getBankCardNum());

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

@@ -1613,6 +1613,7 @@
         ORDER BY  eic.name
     </select>
 
+    <!-- invoice 表是income表  聚合得到的,因此,不能将income left jion invoide, 后对invoice的金额进行求和 2026年6月22日15:39:34  -->
     <select id="getReceiverSettlementReport" resultType="com.jzg.commons.entity.finance.dto.ReceiverSettlementReportDto">
         SELECT
         ipi.contact_person AS receiver,
@@ -1625,10 +1626,11 @@
         ) AS totalReceivable,
         --SUM(CASE WHEN ipii.`status` = 1 AND ipii.invoice_type in (5,6) THEN ipii.receivable_supervise_premium ELSE 0 END) AS settledSuperviseFee,
         -- SUM(CASE WHEN ipii.`status` = 1 AND ipii.invoice_type in (5,6) THEN ipii.receivable_supervise_premium ELSE 0 END) AS settledFollowFee,
-        SUM(CASE WHEN ipii.`status` = 1 AND ipii.invoice_type IN (5,6) THEN ipii.receivable_supervise_premium ELSE 0 END) AS settledAmount,
-        --SUM(CASE WHEN ipii.`status` = 0 AND ipii.invoice_type in (5,6) THEN ipii.receivable_supervise_premium ELSE 0 END) AS unSettledSuperviseFee
+        -- SUM(CASE WHEN ipii.`status` = 1 AND ipii.invoice_type IN (5,6) THEN ipii.receivable_supervise_premium ELSE 0 END) AS settledAmount,
+        -- SUM(CASE WHEN ipii.`status` = 0 AND ipii.invoice_type in (5,6) THEN ipii.receivable_supervise_premium ELSE 0 END) AS unSettledSuperviseFee
         -- ,SUM(CASE WHEN ipii.`status` = 0 AND ipii.invoice_type in (5,6) THEN ipii.receivable_supervise_premium ELSE 0 END) AS unSettledFollowFee,
-        SUM(CASE WHEN ipii.`status` = 0 AND ipii.invoice_type IN (5,6) THEN ipii.receivable_supervise_premium ELSE 0 END) AS unSettledAmount
+        -- SUM(CASE WHEN ipii.`status` = 0 AND ipii.invoice_type IN (5,6) THEN ipii.receivable_supervise_premium ELSE 0 END) AS unSettledAmount,
+        GROUP_CONCAT(distinct ipii.id) as invoice_ids
         FROM
         ins_ply_income ipi
         LEFT JOIN ins_ply_income_invoice_link ipil ON ipi.id = ipil.income_id AND ipil.is_delete = 0
@@ -1643,6 +1645,12 @@
             <if test="settlementReportQueryVo.receiver != null and settlementReportQueryVo.receiver != ''">
                 AND ipi.contact_person = #{settlementReportQueryVo.receiver}
             </if>
+            <if test="settlementReportQueryVo.invoiceTypes != null and settlementReportQueryVo.invoiceTypes.size() > 0" >
+                and ipii.invoice_type in
+                <foreach collection="settlementReportQueryVo.invoiceTypes" item="id" open="(" separator="," close=")">
+                    #{id}
+                </foreach>
+            </if>
             <if test="settlementReportQueryVo.startTime != null and settlementReportQueryVo.startTime != ''">
                 AND ipi.signing_time BETWEEN #{settlementReportQueryVo.startTime} AND #{settlementReportQueryVo.endTime}
                 AND (ipii.invoice_time BETWEEN #{settlementReportQueryVo.startTime} AND #{settlementReportQueryVo.endTime}
@@ -1800,5 +1808,17 @@
             </if>
         </where>
     </select>
+    <!-- 查询发票结算的金额 2026年6月22日15:48:33 lipf  -->
+    <select id="querySettledAmountByInvoiceIds" resultType="java.math.BigDecimal">
+        select sum(ipiis.actual_received_amount ) from ins_ply_income_invoice_settlement ipiis
+        <where>
+            <if test="invoiceIdList != null and invoiceIdList.size() > 0">
+                and ipiis.invoice_id in
+                <foreach collection="invoiceIdList" item="item" open="(" separator="," close=")">
+                    ${item}
+                </foreach>
+            </if>
+        </where>
+    </select>
 
 </mapper>