Browse Source

Merge branch 'master' into wrq_dev

wangrq 3 months ago
parent
commit
2925949780

+ 15 - 0
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/utils/DateUtil.java

@@ -429,6 +429,21 @@ public class DateUtil {
         return toUtcDateTime(beijingTime);
     }
 
+    /**
+     * 获取指定UTC日期时间的下一天0点(北京时间)并转为UTC ISO8601格式
+     * 驾意险不支持即时起保,需调整起保日期为主险投保日期的下一日0时
+     *
+     * @param utcDateTime 主险起保UTC时间(ISO8601格式,如 2026-07-04T16:00:00.000Z)
+     * @return 下一天北京时间0点对应的UTC ISO8601格式
+     */
+    public static String getNextDayMidnightUtc(String utcDateTime) {
+        ZonedDateTime utcZoned = ZonedDateTime.parse(utcDateTime, DateTimeFormatter.ISO_DATE_TIME);
+        ZonedDateTime beijingZoned = utcZoned.withZoneSameInstant(ZoneId.of("Asia/Shanghai"));
+        LocalDate nextDay = beijingZoned.toLocalDate().plusDays(1);
+        String beijingTime = nextDay.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + " 00:00:00";
+        return toUtcDateTime(beijingTime);
+    }
+
     /**
      * 将北京时间(yyyy-MM-dd HH:mm:ss)转换为UTC时间(ISO8601格式)
      */

+ 36 - 19
tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/entity/request/HbCrawlerCalculationRequest.java

@@ -84,17 +84,23 @@ public class HbCrawlerCalculationRequest extends HbBaseRequest {
         this.risktype = "0";
         if (Objects.nonNull(quoteVo.getCiRiskInfoVo())) {
             this.begintimeCi = DateUtil.toUtcDateTime(quoteVo.getCiRiskInfoVo().getStartDate());
-            this.begintimeAccident = DateUtil.getNextDayMidnightUtc();
             this.risktype = "1";
         }
         if (CollUtil.isNotEmpty(kindInfoVoList)) {
             this.epersonliabilityList = getEpersonliabilityList(kindInfoVoList, depreciationPrice);
             this.begintimeBi = DateUtil.toUtcDateTime(quoteVo.getBiRiskInfoVo().getStartDate());
-            this.begintimeAccident = DateUtil.getNextDayMidnightUtc();
             this.risktype = "2";
         } else {
             this.epersonliabilityList = new ArrayList<>();
         }
+        // 驾意险不支持即时起保,起保日期为主险投保日期的下一日0时(北京时间)
+        if ("2".equals(this.risktype) && this.begintimeBi != null) {
+            this.begintimeAccident = DateUtil.getNextDayMidnightUtc(this.begintimeBi);
+        } else if ("1".equals(this.risktype) && this.begintimeCi != null) {
+            this.begintimeAccident = DateUtil.getNextDayMidnightUtc(this.begintimeCi);
+        } else {
+            this.begintimeAccident = DateUtil.getNextDayMidnightUtc();
+        }
         // 驾意险列表需在 accidentEpolicyFlag 之前赋值
         this.accidentInsuranceList = getAccidentInsuranceList(quoteVo.getBiRiskInfoVo(), quoteVo.getAccidentalDrivings());
         this.plyappno = plyappno;
@@ -111,7 +117,7 @@ public class HbCrawlerCalculationRequest extends HbBaseRequest {
         this.carInsureDevices = new ArrayList<>();
         this.outofwarrantytype = "N";
         this.drivingtype = "";
-        this.endtimeAccident = null;
+        this.endtimeAccident = "";
     }
 
     public List<EpersonliabilityDTO> getEpersonliabilityList(List<KindInfoVo> kindInfoVoList, String depreciationPrice) {
@@ -189,17 +195,28 @@ public class HbCrawlerCalculationRequest extends HbBaseRequest {
         AccidentInsuranceDTO dto = new AccidentInsuranceDTO();
         dto.setNonriskcode(vo.getProductCode().split("_")[1]);
         dto.setProgramcode(vo.getProductCode());
-        // programname/companycode/begintime/endtime/relationcarowner 正确请求中均不包含,移除以避免保司API 500
-        dto.setSuminsured(parseNumeric("525000"));
-        dto.setSumgrosspremium(parseNumeric(vo.getPremium()));
+        dto.setProgramname("1119险种5座非营运客车保额525000保费99.9(山西)");
+        dto.setCompanycode("0107");
         dto.setIfdefault(true);
         dto.setBuynum(vo.getQuantity());
+        List<GgriskprogramdetailsDTO> detailsList = getGgriskprogramdetailsList(vo.getProductCode().split("_")[1], vo.getProductCode());
+        dto.setGgriskprogramdetailslist(detailsList);
         dto.setGgriskprogramclauselist(getGgriskprogramclauseList(vo.getProductCode().split("_")[1], vo.getProductCode()));
-        dto.setGgriskprogramdetailslist(getGgriskprogramdetailsList(vo.getProductCode().split("_")[1], vo.getProductCode()));
         dto.setGgriskprogramdeductiblelist(new ArrayList<>());
         List<GgriskprogramparamlDTO> ggriskprogramparamlist = new ArrayList<>();
-        ggriskprogramparamlist.add(new GgriskprogramparamlDTO("2021-05-19T07:00:00.000+0000", "subsidy", "99.9", "0107_1119_003", "2021-05-19T07:00:00.000+0000", "1"));
+        ggriskprogramparamlist.add(new GgriskprogramparamlDTO("2021-05-19T07:00:00.000+0000", "subsidy", "99.9", vo.getProductCode(), "2021-05-19T07:00:00.000+0000", "1"));
         dto.setGgriskprogramparamlist(ggriskprogramparamlist);
+
+        // 根据硬编码明细汇总计算 suminsured/sumgrosspremium,保证父子级数据一致
+        java.math.BigDecimal totalSuminsured = java.math.BigDecimal.ZERO;
+        java.math.BigDecimal totalGrossPremium = java.math.BigDecimal.ZERO;
+        for (GgriskprogramdetailsDTO detail : detailsList) {
+            totalSuminsured = totalSuminsured.add(new java.math.BigDecimal(detail.getKindsuminsured().toString()));
+            totalGrossPremium = totalGrossPremium.add(new java.math.BigDecimal(detail.getKindgrosspremium().toString()));
+        }
+        dto.setSuminsured(totalSuminsured);
+        // sumgrosspremium 使用硬编码值 99.9(与保司正确请求一致),不与 vo.getPremium() 挂钩
+        dto.setSumgrosspremium(parseNumeric("99.9"));
         return dto;
     }
 
@@ -276,7 +293,7 @@ public class HbCrawlerCalculationRequest extends HbBaseRequest {
         detail1.setKindunitinsured(parseNumeric("50000"));
         detail1.setKindsuminsured(parseNumeric("250000"));
         detail1.setKindunitpremium(parseNumeric("4.9"));
-        detail1.setKindgrosspremium(parseNumeric("54"));
+        detail1.setKindgrosspremium(parseNumeric("24.5"));
         list.add(detail1);
 
         // 机动车辆驾乘意外伤害保险意外残疾保险责任(2024款)
@@ -286,11 +303,11 @@ public class HbCrawlerCalculationRequest extends HbBaseRequest {
         detail2.setSerialno(2);
         detail2.setKindcode("1119067");
         detail2.setKindname("机动车辆驾乘意外伤害保险意外残疾保险责任(2024款)");
-        detail2.setKindrate(parseNumeric("0.09166"));
-        detail2.setKindunitinsured(parseNumeric("30000"));
-        detail2.setKindsuminsured(parseNumeric("240000"));
-        detail2.setKindunitpremium(parseNumeric("2.75"));
-        detail2.setKindgrosspremium(parseNumeric("22"));
+        detail2.setKindrate(parseNumeric("0.039"));
+        detail2.setKindunitinsured(parseNumeric("50000"));
+        detail2.setKindsuminsured(parseNumeric("250000"));
+        detail2.setKindunitpremium(parseNumeric("1.95"));
+        detail2.setKindgrosspremium(parseNumeric("9.75"));
         list.add(detail2);
 
         // 附加机动车辆驾乘意外伤害医疗保险(2024款)
@@ -300,11 +317,11 @@ public class HbCrawlerCalculationRequest extends HbBaseRequest {
         detail3.setSerialno(3);
         detail3.setKindcode("1119065");
         detail3.setKindname("附加机动车辆驾乘意外伤害医疗保险(2024款)");
-        detail3.setKindrate(parseNumeric("1.0001"));
-        detail3.setKindunitinsured(parseNumeric("3000"));
-        detail3.setKindsuminsured(parseNumeric("24000"));
-        detail3.setKindunitpremium(parseNumeric("3"));
-        detail3.setKindgrosspremium(parseNumeric("24"));
+        detail3.setKindrate(parseNumeric("2.626"));
+        detail3.setKindunitinsured(parseNumeric("5000"));
+        detail3.setKindsuminsured(parseNumeric("25000"));
+        detail3.setKindunitpremium(parseNumeric("13.13"));
+        detail3.setKindgrosspremium(parseNumeric("65.65"));
         list.add(detail3);
 
         return list;

+ 2 - 0
tenant/insurance/quotation-renbaonew/src/main/java/com/jzg/quotation/renbaonew/crawler/service/impl/RenBaoNewCrawlerRequestImpl.java

@@ -861,6 +861,8 @@ public class RenBaoNewCrawlerRequestImpl implements RenBaoNewCrawlerRequest {
                                     .fluentPut("scoreName", "交强险评分")
                                     .fluentPut("score", prpCmainCI.get("piccscore").toString()));
                         }
+                        scoreVo.setScoreJson(scoreJson);
+                        resultsVo.setScoreVo(scoreVo);
                     }
                 }
             } catch (Exception e) {

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

@@ -358,7 +358,7 @@ public class QuoteVerificationAspect {
         BigDecimal exportPercent = convertPercent(costType.getExport());
 
         // 计算应收金额
-        BigDecimal taxablePremium = premium.multiply(taxFactor);
+        BigDecimal taxablePremium = premium.divide(taxFactor,5,RoundingMode.HALF_EVEN);
 
         // 计算应付金额(保费 * 出口比例,保留2位小数)
         BigDecimal payable = premium.multiply(exportPercent.setScale(5, RoundingMode.DOWN));
@@ -368,7 +368,7 @@ public class QuoteVerificationAspect {
         BigDecimal commission = taxablePremium.multiply(commissionRatio).setScale(5, RoundingMode.HALF_EVEN);
         BigDecimal follow = taxablePremium.multiply(followRatio).setScale(5, RoundingMode.HALF_EVEN);
         setCommission.accept(insFeeOrders, commission);
-        setFollow.accept(insFeeOrders, commission);
+        setFollow.accept(insFeeOrders, follow);
         // modify by lipf, 2026年6月16日15:35:09  加投比例,不需要根据平台/私有进行1.06的计算
 
         BigDecimal addAmount = premium.multiply(addThrowPercent).setScale(5, RoundingMode.HALF_EVEN);

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

@@ -837,7 +837,8 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
         }
         // 保存比例调整记录
         InsFeeOrderRecord record = new InsFeeOrderRecord(param);
-        recordService.updateById(record);
+        // modify by lipf 2026年6月23日11:08:26 解决原先没有插入数据的问题,并且调整了表结构(主键由order_no调整为id),来保证多次调整不会报错
+        recordService.save(record);
         return HttpResult.ok();
     }
 

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

@@ -24,16 +24,14 @@ import com.jzg.quotation.summary.service.InsFeeOrdersService;
 import com.jzg.quotation.summary.service.InsOrdersCostsService;
 import com.jzg.quotation.summary.service.InsOrdersService;
 import jakarta.annotation.Resource;
-import jakarta.servlet.http.HttpServletRequest;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
-import org.springframework.web.context.request.RequestContextHolder;
-import org.springframework.web.context.request.ServletRequestAttributes;
 
 import java.lang.reflect.Method;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -61,15 +59,6 @@ public class InsFeeOrdersServiceImpl extends ServiceImpl<InsFeeOrdersMapper, Ins
     private InsFeeOrdersMapper insFeeOrdersMapper;
 
 
-    private String getSystemCode() {
-        //如果是APP登录的话 则传递SystemCode的头部字段
-        if (baseController.getUserSystemCode().equals("APP")) {
-            HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
-            return request.getHeader("system_code");
-        }
-        return baseController.getUserSystemCode();
-    }
-
     /**
      * 订单审核时调整费用
      *
@@ -162,7 +151,7 @@ public class InsFeeOrdersServiceImpl extends ServiceImpl<InsFeeOrdersMapper, Ins
             Integer withTax, BigDecimal taxRate, int scale) {
 
         // 计算基数
-        BigDecimal base = BigDecimal.ZERO;
+        BigDecimal base;
         if (withTax == 0) {
             // 不含税:保费 / 1.06
             base = premium.divide(taxRate, scale, RoundingMode.HALF_EVEN);
@@ -172,8 +161,8 @@ public class InsFeeOrdersServiceImpl extends ServiceImpl<InsFeeOrdersMapper, Ins
         }
 
         // ===================== 按比例计算各项费用 =====================
-        BigDecimal commission = base.multiply(commissionRatio).setScale(scale, RoundingMode.HALF_EVEN);
         BigDecimal inlet = base.multiply(inletRatio).setScale(scale, RoundingMode.HALF_EVEN);
+        BigDecimal commission = base.multiply(commissionRatio).setScale(scale, RoundingMode.HALF_EVEN);
         BigDecimal follow = base.multiply(followRatio).setScale(scale, RoundingMode.HALF_EVEN);
 
         // 加投直接乘
@@ -183,7 +172,8 @@ public class InsFeeOrdersServiceImpl extends ServiceImpl<InsFeeOrdersMapper, Ins
         BigDecimal exportKeepPoint = premium.multiply(exportKeepPointRatio).setScale(scale, RoundingMode.HALF_EVEN);
         // 留点比例直接乘, modify by lipf ,留点比例在infFeeOrder中计算得到。这里直接使用 2026年6月16日17:32:09, 为了保持金额一致,留点比例不适用百分比乘积,而是使用金额相减
         // BigDecimal keepPoint = premium.multiply(keepPointRatio).setScale(scale, RoundingMode.HALF_EVEN);
-        BigDecimal keepPoint = BigDecimalUtil.subtract(BigDecimalUtil.add(commission,addThrow),export);
+        BigDecimal keepPoint = BigDecimalUtil.subtract(BigDecimalUtil.add(inlet,addThrow),export);
+        log.info("计算留点:inlet=[{}],addThrow=[{}].export=[{}]", inlet, addThrow, export);
 
         // 赋值到实体(自动匹配 jq / sy / jy)
         if ("jq".equals(type)) {
@@ -194,7 +184,14 @@ public class InsFeeOrdersServiceImpl extends ServiceImpl<InsFeeOrdersMapper, Ins
             insFeeOrders.setJqKeepPointPremium(keepPoint);
             insFeeOrders.setJqExportPremium(export);
             insFeeOrders.setJqExportKeepPointPremium(exportKeepPoint);
-            insFeeOrders.setJqPayablePremium(commission);
+            insFeeOrders.setJqPayablePremium(export);
+
+            // add by lipf, 2026年6月23日10:42:36  更新具体某个险种的出口费用的时候,同步更新总的出口费用
+            List<BigDecimal> exportAmount = new ArrayList<>();
+            exportAmount.add(insFeeOrders.getJqExportPremium());
+            exportAmount.add(insFeeOrders.getSyExportPremium());
+            exportAmount.add(insFeeOrders.getJyExportPremium());
+            insFeeOrders.setTotalPayablePremium(BigDecimalUtil.add(exportAmount));
         } else if ("sy".equals(type)) {
             insFeeOrders.setSyCommissionPremium(commission);
             insFeeOrders.setSyReceivablePremium(inlet);
@@ -203,7 +200,14 @@ public class InsFeeOrdersServiceImpl extends ServiceImpl<InsFeeOrdersMapper, Ins
             insFeeOrders.setSyKeepPointPremium(keepPoint);
             insFeeOrders.setSyExportPremium(export);
             insFeeOrders.setSyExportKeepPointPremium(exportKeepPoint);
-            insFeeOrders.setSyPayablePremium(commission);
+            insFeeOrders.setSyPayablePremium(export);
+
+            // add by lipf, 2026年6月23日10:42:36  更新具体某个险种的出口费用的时候,同步更新总的出口费用
+            List<BigDecimal> exportAmount = new ArrayList<>();
+            exportAmount.add(insFeeOrders.getJqExportPremium());
+            exportAmount.add(insFeeOrders.getSyExportPremium());
+            exportAmount.add(insFeeOrders.getJyExportPremium());
+            insFeeOrders.setTotalPayablePremium(BigDecimalUtil.add(exportAmount));
         } else if ("jy".equals(type)) {
             insFeeOrders.setJyCommissionPremium(commission);
             insFeeOrders.setJyReceivablePremium(inlet);
@@ -212,7 +216,14 @@ public class InsFeeOrdersServiceImpl extends ServiceImpl<InsFeeOrdersMapper, Ins
             insFeeOrders.setJyKeepPointPremium(keepPoint);
             insFeeOrders.setJyExportPremium(export);
             insFeeOrders.setJyExportKeepPointPremium(exportKeepPoint);
-            insFeeOrders.setJyPayablePremium(commission);
+            insFeeOrders.setJyPayablePremium(export);
+
+            // add by lipf, 2026年6月23日10:42:36  更新具体某个险种的出口费用的时候,同步更新总的出口费用
+            List<BigDecimal> exportAmount = new ArrayList<>();
+            exportAmount.add(insFeeOrders.getJqExportPremium());
+            exportAmount.add(insFeeOrders.getSyExportPremium());
+            exportAmount.add(insFeeOrders.getJyExportPremium());
+            insFeeOrders.setTotalPayablePremium(BigDecimalUtil.add(exportAmount));
         }
     }
 

+ 3 - 1
tenant/insurance/quotation-taishan/src/main/java/com/jzg/quotation/taishan/crawler/service/impl/TaiShanCrawlerQuoteProcessServiceImpl.java

@@ -297,7 +297,9 @@ public class TaiShanCrawlerQuoteProcessServiceImpl implements TaiShanCrawlerQuot
     public HttpHeaders getHeaders(String username, String comCode) {
         //String authorization = "Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiI1ODI0MjEiLCJhdXRoIjoiUk9MRV9CVVNJTkVTUyIsInBhc3N3b3JkX2V4cGlyZSI6MTUsImV4cCI6MTc4MTY4NzIzMn0.ldWz9TMY4AJ75VE0Bk1mkzAXPC9jJNMIWL82n0kGHrBwASgGvBxO3fe7orHbCIowt0athoRn1zA9m5ZNnO7olg";
 
-        String authorization = "Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiI1ODI0MjEiLCJhdXRoIjoiUk9MRV9CVVNJTkVTUyIsInBhc3N3b3JkX2V4cGlyZSI6MTIsImV4cCI6MTc4MTk0MDMyMX0.rsR8yMmSsB5iOstJSToswargqTCFB5He37UydrlK_lKFsHVqtBL-EOAgls4YL4nKWvRtbSxxY6HZRczHFG0iRw";
+        //String authorization = "Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiI1ODI0MjEiLCJhdXRoIjoiUk9MRV9CVVNJTkVTUyIsInBhc3N3b3JkX2V4cGlyZSI6MTIsImV4cCI6MTc4MTk0MDMyMX0.rsR8yMmSsB5iOstJSToswargqTCFB5He37UydrlK_lKFsHVqtBL-EOAgls4YL4nKWvRtbSxxY6HZRczHFG0iRw";
+        String authorization = "Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiI1ODI0MjEiLCJhdXRoIjoiUk9MRV9CVVNJTkVTUyIsInBhc3N3b3JkX2V4cGlyZSI6NjIsImV4cCI6MTc4NDc2NzY0N30.6JLD1Cc4_Vhuh5qSJ-lnEQ5MsNskbn6MzFbgUXRyCwSZzVHCI7-jpU04Mo7kLq2rc8E2LVhWHgmjyYD0rYCIiQ";
+
         HttpHeaders httpHeaders = new HttpHeaders();
         
         httpHeaders.set("Accept", "application/json, text/plain, */*");

+ 4 - 3
tenant/organization/src/main/java/com/jzg/organization/controller/MessageController.java

@@ -74,7 +74,8 @@ public class MessageController extends BaseController {
         String userName = getUserName();
         SysUser sysUser = userService.getOne(new LambdaQueryWrapper<SysUser>()
                 .eq(SysUser::getMobile, userName));
-        return HttpResult.ok(messageService.getMessageCount(sysUser.getId()));
+        // userid 传手机号,因为消息发的都是手机号
+        return HttpResult.ok(messageService.getMessageCount(userName));
     }
 
     /**
@@ -92,7 +93,7 @@ public class MessageController extends BaseController {
         );
         if(StringUtils.isNotBlank(param.getId())){
             LambdaUpdateWrapper<SysMessageUser>  wrapper = new LambdaUpdateWrapper<>();
-            wrapper.eq(SysMessageUser::getUserId, info.getId())
+            wrapper.eq(SysMessageUser::getUserId, userName)
                     .eq(SysMessageUser::getMessageId, param.getId())
                     .set(SysMessageUser::getIsRead, 1);
             messageUserService.update(wrapper);
@@ -106,7 +107,7 @@ public class MessageController extends BaseController {
                 List<SysMessage> messages = messageService.list(wrapper);
                 List<String> messageIds = messages.stream().map(SysMessage::getId).collect(Collectors.toList());
                 LambdaUpdateWrapper<SysMessageUser> wrapper2 = new LambdaUpdateWrapper<>();
-                wrapper2.eq(SysMessageUser::getUserId, info.getId())
+                wrapper2.eq(SysMessageUser::getUserId, userName)
                         .in(SysMessageUser::getMessageId, messageIds)
                         .set(SysMessageUser::getIsRead, 1);
                 messageUserService.update(wrapper2);

+ 8 - 7
tenant/organization/src/main/resources/mapper/ReceivableMapper.xml

@@ -1634,7 +1634,14 @@
         FROM
         ins_ply_income ipi
         LEFT JOIN ins_ply_income_invoice_link ipil ON ipi.id = ipil.income_id AND ipil.is_delete = 0
-        LEFT JOIN ins_ply_income_invoice ipii ON ipil.invoice_id = ipii.id AND ipii.is_delete = 0
+        LEFT JOIN ins_ply_income_invoice ipii
+        ON ipil.invoice_id = ipii.id AND ipii.is_delete = 0
+        <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>
         <where>
             ipi.is_delete = 0
             AND ipi.agreement_type = '1'
@@ -1645,12 +1652,6 @@
             <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}