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

批量导入修改功能重构

计划重新开发了一版
lipf 2 недель назад
Родитель
Сommit
1045ad79e6

+ 0 - 152
commons/src/main/java/com/jzg/commons/entity/finance/dto/ReceivableExportExcelDto.java

@@ -1,152 +0,0 @@
-package com.jzg.commons.entity.finance.dto;
-
-import com.alibaba.excel.annotation.ExcelIgnore;
-import com.alibaba.excel.annotation.ExcelProperty;
-import com.jzg.commons.core.base.PageRequest;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.util.List;
-
-/**
- * @author tz
- * @description 应收查询VO
- * @createDate 2024-06-26 10:49:31
- */
-@Data
-public class ReceivableExportExcelDto extends PageRequest {
-
-    @Schema(description = "选中类型")
-    @ExcelIgnore
-    // 1 全部数据选中  2 选中部分数据
-    private String selectedType;
-
-    @Schema(description = "选中id")
-    @ExcelIgnore
-    private List<String> selectedIds;
-
-    @Schema(description = "协议类型")
-    @ExcelProperty(value = "协议类型", index = 13)
-    private String agreementType;
-
-    @Schema(description = "id")
-    @ExcelIgnore
-    private String id;
-
-    @Schema(description = "ids")
-    @ExcelIgnore
-    private List<String> ids;
-
-    @Schema(description = "查询类型")
-    @ExcelProperty(value = "查询类型", index = 14)
-    private String queryType;
-
-    @Schema(description = "车牌号")
-    @ExcelProperty(value = "车牌号", index = 0)
-    private String licenseNo;
-
-    @Schema(description = "险种信息")
-    @ExcelProperty(value = "险种信息", index = 15)
-    private String productId;
-
-    @Schema(description = "保险公司")
-    @ExcelIgnore
-    private String companyId;
-
-    @Schema(description = "签单时间开始时间")
-    @ExcelProperty(value = "签单时间开始时间", index = 11)
-    private String signingTimeStart;
-
-    @Schema(description = "签单时间结束时间")
-    @ExcelProperty(value = "签单时间结束时间", index = 12)
-    private String signingTimeEnd;
-
-    @Schema(description = "订单号")
-    @ExcelProperty(value = "订单号", index = 16)
-    private String orderNo;
-
-    @Schema(description = "订单号集合")
-    @ExcelIgnore
-    private List<String> orderNos;
-
-    @Schema(description = "协议id")
-    @ExcelIgnore
-    private String agreementId;
-
-    @Schema(description = "出单机构")
-    @ExcelIgnore
-    private String deptId;
-
-    @Schema(description = "险种")
-    @ExcelProperty(value = "险种", index = 17)
-    private String riskCode;
-
-    @Schema(description = "订单类型")
-    @ExcelProperty(value = "订单类型", index = 18)
-    private String orderType;
-
-    @Schema(description = "被保人")
-    @ExcelProperty(value = "被保人", index = 19)
-    private String insuredName;
-
-    @Schema(description = "交强险保单号")
-    @ExcelProperty(value = "交强险保单号", index = 1)
-    private String jqPolicyNo;
-
-    @Schema(description = "交强险手续费比例")
-    @ExcelProperty(value = "交强险手续费比例(%)", index = 2)
-    private String jqSuperviseCostsProportion;
-
-    @Schema(description = "交强险跟单费比例")
-    @ExcelProperty(value = "交强险跟单费比例(%)", index = 3)
-    private String jqOtherCostsProportion;
-
-    @Schema(description = "商业险保单号")
-    @ExcelProperty(value = "商业险保单号", index = 4)
-    private String syPolicyNo;
-
-    @Schema(description = "商业险手续费比例")
-    @ExcelProperty(value = "商业险手续费比例(%)", index = 5)
-    private String sySuperviseCostsProportion;
-
-    @Schema(description = "商业险跟单费比例")
-    @ExcelProperty(value = "商业险跟单费比例(%)", index = 6)
-    private String syOtherCostsProportion;
-
-    @Schema(description = "驾意险保单号")
-    @ExcelProperty(value = "驾意险保单号", index = 7)
-    private String jyPolicyNo;
-
-    @Schema(description = "驾意险手续费比例")
-    @ExcelProperty(value = "驾意险手续费比例(%)", index = 8)
-    private String jySuperviseCostsProportion;
-
-    @Schema(description = "驾意险跟单费比例")
-    @ExcelProperty(value = "驾意险跟单费比例(%)", index = 9)
-    private String jyOtherCostsProportion;
-
-    @Schema(description = "对接人")
-    @ExcelProperty(value = "对接人", index = 10)
-    private String dockingPerson;
-
-    @Schema(description = "交强起保时间")
-    @ExcelProperty(value = "交强起保时间", index = 20)
-    private String jqStartDate;
-
-    @Schema(description = "交强到期时间")
-    @ExcelProperty(value = "交强到期时间", index = 21)
-    private String jqEndDate;
-
-    @Schema(description = "商业起保时间")
-    @ExcelProperty(value = "商业起保时间", index = 22)
-    private String syStartDate;
-
-    @Schema(description = "商业到期时间")
-    @ExcelProperty(value = "商业到期时间", index = 23)
-    private String syEndDate;
-
-    @Schema(description = "产品名称")
-    @ExcelProperty(value = "产品名称", index = 24)
-    private String productName;
-
-}

+ 6 - 2
commons/src/main/java/com/jzg/commons/entity/finance/vo/BatchModifyVo.java

@@ -7,6 +7,7 @@ import lombok.Data;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.time.LocalDateTime;
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -18,10 +19,13 @@ import java.util.List;
 public class BatchModifyVo {
 
     @Schema(description = "应收订单id")
-    private List<String> incomeIds;
+    private List<String> incomeIds = new ArrayList<>();
 
     @Schema(description = "车险订单的id")
-    private List<String> orderNos;
+    private List<String> orderNos = new ArrayList<>();
+
+    @Schema(description = "车牌号")
+    private String licenseNo;
 
     @Schema(description = "交强手续费比例")
     private BigDecimal jqSuperviseCostsProportion;

+ 0 - 304
commons/src/main/java/com/jzg/commons/entity/finance/vo/InsPlyIncomeExportVo.java

@@ -1,304 +0,0 @@
-package com.jzg.commons.entity.finance.vo;
-
-import com.alibaba.excel.annotation.ExcelIgnore;
-import com.alibaba.excel.annotation.ExcelProperty;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.jzg.commons.core.base.BaseModel;
-import com.jzg.commons.entity.po.InsFeeOrders;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-import java.io.Serial;
-
-@EqualsAndHashCode(callSuper = true)
-@Data
-@Schema(description = "财务应收表")
-public class InsPlyIncomeExportVo extends BaseModel {
-    @Serial
-    private static final long serialVersionUID = 6161862008963938376L;
-
-    @ExcelIgnore
-    private String id;
-
-    @Schema(description = "订单号")
-    @ExcelProperty("订单号")
-    private String orderNo;
-
-    @Schema(description = "协议类型")
-    @ExcelProperty("协议类型")
-    private String agreementType;
-
-    @Schema(description = "机构")
-    @ExcelProperty("机构id")
-    private String deptId;
-
-    @Schema(description = "机构名称")
-    @ExcelProperty("机构名称")
-    private String deptName;
-
-    @Schema(description = "产品id")
-    @ExcelProperty("产品id")
-    private String productId;
-
-    @Schema(description = "产品名称")
-    @ExcelProperty("产品名称")
-    private String productName;
-
-    @Schema(description = "险种")
-    @ExcelProperty("险种")
-    private String riskCode;
-
-    @Schema(description = "签单时间")
-    @TableField(exist = false)
-    @ExcelProperty("签单时间")
-    private String signingTime;
-
-    @Schema(description = "签单年份")
-    @TableField(exist = false)
-    private String signYear;
-
-    @Schema(description = "签单日期 yyyy-mm-dd 格式")
-    @TableField(exist = false)
-    private String signDate;
-
-    @Schema(description = "保司ID")
-    @ExcelProperty("保司ID")
-    private String companyId;
-
-    @Schema(description = "保司名称")
-    @TableField(exist = false)
-    @ExcelProperty("保司名称")
-    private String companyName;
-
-    @Schema(description = "协议Id")
-    @ExcelProperty("协议Id")
-    private String agreementId;
-
-    @Schema(description = "协议名称")
-    @ExcelProperty("协议名称")
-    private String agreementName;
-
-    @Schema(description = "被保人")
-    @ExcelProperty("被保人")
-    private String insuredPerson;
-
-    @Schema(description = "车牌号")
-    @ExcelProperty("车牌号")
-    private String licenseNo;
-
-    @Schema(description = "车船税")
-    @ExcelProperty("车船税")
-    private String taxPremium;
-
-    @Schema(description = "交强保单号")
-    @ExcelProperty("交强保单号")
-    private String jqPolicyNo;
-
-    @Schema(description = "商业保单号")
-    @ExcelProperty("商业保单号")
-    private String syPolicyNo;
-
-    @Schema(description = "驾意保单号")
-    @ExcelProperty("驾意保单号")
-    private String jyPolicyNo;
-
-    @Schema(description = "交强保费")
-    @ExcelProperty("交强保费")
-    private String jqPremium;
-
-    @Schema(description = "商业保费")
-    @ExcelProperty("商业保费")
-    private String syPremium;
-
-    @Schema(description = "驾意保费")
-    @ExcelProperty("驾意保费")
-    private String jyPremium;
-
-    @Schema(description = "交强手续费")
-    @ExcelProperty("交强手续费")
-    private String jqSuperviseCostsPremiums;
-
-    @Schema(description = "交强手续费比例")
-    @ExcelProperty("交强手续费比例")
-    private String jqSuperviseCostsProportion;
-
-    @Schema(description = "商业手续费")
-    @ExcelProperty("商业手续费")
-    private String sySuperviseCostsPremiums;
-
-    @Schema(description = "商业手续费比例")
-    @ExcelProperty("商业手续费比例")
-    private String sySuperviseCostsProportion;
-
-    @Schema(description = "驾意手续费")
-    @ExcelProperty("驾意手续费")
-    private String jySuperviseCostsPremiums;
-
-    @Schema(description = "驾意手续费比例")
-    @ExcelProperty("驾意手续费比例")
-    private String jySuperviseCostsProportion;
-
-    @TableField(exist = false)
-    @Schema(description = "应收手续费")
-    @ExcelProperty("应收手续费")
-    private String superviseCostsPremiums;
-
-    @TableField(exist = false)
-    @Schema(description = "应收跟单费")
-    @ExcelProperty("应收跟单费")
-    private String otherCostsPremiums;
-
-    @Schema(description = "交强跟单费比例")
-    @ExcelProperty("交强跟单费比例")
-    private String jqOtherCostsProportion;
-
-    @Schema(description = "交强跟单费")
-    @ExcelProperty("交强跟单费")
-    private String jqOtherCostsPremiums;
-
-    @Schema(description = "商业跟单费比例")
-    @ExcelProperty("商业跟单费比例")
-    private String syOtherCostsProportion;
-
-    @Schema(description = "商业跟单费")
-    @ExcelProperty("商业跟单费")
-    private String syOtherCostsPremiums;
-
-    @Schema(description = "驾意跟单费比例")
-    @ExcelProperty("驾意跟单费比例")
-    private String jyOtherCostsProportion;
-
-    @Schema(description = "驾意跟单费")
-    @ExcelProperty("驾意跟单费")
-    private String jyOtherCostsPremiums;
-
-    @Schema(description = "交强应收费用")
-    @ExcelProperty("交强应收费用")
-    private String jqReceivablePremium;
-
-    @Schema(description = "商业应收费用")
-    @ExcelProperty("商业应收费用")
-    private String syReceivablePremium;
-
-    @Schema(description = "驾意应收费用")
-    @ExcelProperty("驾意应收费用")
-    private String jyReceivablePremium;
-
-    @TableField(exist = false)
-    @Schema(description = "总应收金额")
-    @ExcelProperty("总应收金额")
-    private String receivableAmount;
-
-    @Schema(description = "手续费是否已经结算")
-    @ExcelProperty("手续费是否已经结算")
-    private String superviseSettlement;
-
-    @Schema(description = "跟单费是否已经结算")
-    @ExcelProperty("跟单费是否已经结算")
-    private String otherSettlement;
-
-    @Schema(description = "驾意险手续费是否已经结算")
-    @ExcelProperty("驾意险手续费是否已经结算")
-    private String jySuperviseSettlement;
-
-    @Schema(description = "驾意跟单位是否已经结算")
-    @ExcelProperty("驾意跟单位是否已经结算")
-    private String jyOtherSettlement;
-
-    @Schema(description = "平台协议车险应收是否已经结算  0 未结算  1 结算")
-    @ExcelProperty("平台协议车险应收是否已经结算")
-    private String platformSuperviseSettlement;
-
-    @Schema(description = "平台协议非车险应收是否已经结算  0 未结算  1 结算")
-    @ExcelProperty("平台协议非车险应收是否已经结算")
-    private String platformOtherSettlement;
-
-    @Schema(description = "维护人工号")
-    @ExcelProperty("维护人工号")
-    private String leaderId;
-
-    @Schema(description = "维护人名称")
-    @ExcelProperty("维护人名称")
-    private String leaderName;
-
-    @Schema(description = "对接人")
-    @ExcelProperty("对接人")
-    private String contactPerson;
-
-    @Schema(description = "对接人手机号")
-    private String contactPersonPhone;
-
-    @Schema(description = "系统code")
-    @ExcelProperty("系统code")
-    private String systemCode;
-
-    @Schema(description = "业务来源")
-    @ExcelProperty("业务来源")
-    private String businessSource;
-
-    // 设置初始值为0, 未结算
-    @Schema(description = "结算状态(编码)")
-    @ExcelProperty("结算状态(编码)")
-    private String settlementStatus="0";
-
-    @Schema(description = "结算状态(转义后)")
-    @ExcelProperty("结算状态(转义后)")
-    private String settlementStatusName;
-
-    @Schema(description = "增加类型")
-    @ExcelProperty("增加类型")
-    private String addType;
-
-    @TableField(exist = false)
-    @Schema(description = "交强起保日期")
-    @ExcelProperty("交强起保日期")
-    private String jqStartDate;
-
-    @TableField(exist = false)
-    @Schema(description = "商业起保日期")
-    @ExcelProperty("商业起保日期")
-    private String syStartDate;
-
-    @TableField(exist = false)
-    @Schema(description = "订单类型")
-    @ExcelProperty("订单类型")
-    private String orderType;
-
-    @TableField(exist = false)
-    @Schema(description = "订单类型(code)")
-    private String entryStatus;
-
-    @TableField(exist = false)
-    @Schema(description = "业务员类型 团队/渠道/电销/个代 5:团队 6:个代 7:渠道 8 :电销")
-    private String typeAttr;
-
-    @TableField(exist = false)
-    @Schema(description = "业务员类型 团队/渠道/电销/个代 5:团队 6:个代 7:渠道 8 :电销")
-    private String typeAttrName;
-
-    @TableField(exist = false)
-    @Schema(description = "实际签单用户手机号2")
-    private String realQuoteUserId;
-
-    @TableField(exist = false)
-    @Schema(description = "实际签单用户手机号")
-    private String realQuoteUserName;
-
-    @TableField(exist = false)
-    @Schema(description = "订单费用表")
-    private InsFeeOrders insFeeOrders;
-
-    @TableField(exist = false)
-    @Schema(description = "是否已经开票")
-    private String invoiceStatusName;
-
-    @TableField(exist = false)
-    @Schema(description = "订单关联的发票信息")
-    private String invoiceId;
-
-    @TableField(exist = false)
-    @Schema(description = "地区归属")
-    private String companyNameSimple;
-
-}

+ 32 - 0
commons/src/main/java/com/jzg/commons/entity/finance/vo/importbatchmodify/InsPlyIncomeBatch.java

@@ -0,0 +1,32 @@
+package com.jzg.commons.entity.finance.vo.importbatchmodify;
+
+import com.jzg.commons.entity.finance.po.InsPlyIncome;
+import com.jzg.commons.entity.orders.po.InsOrdersPolicy;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serial;
+
+/**
+ *
+ * @author lipf
+ * @date 2026/8/26 10:42
+ */
+@Data
+public class InsPlyIncomeBatch extends InsPlyIncomeExportVo{
+    @Serial
+    private static final long serialVersionUID = -4231629832376455207L;
+
+    @Schema(description = "订单号")
+    private String orderNo;
+
+
+    @Schema(description = "应收记录的序号")
+    private String incomeId;
+
+    @Schema(description = "应收记录")
+    private InsPlyIncome insPlyIncome;
+
+    @Schema(description = "保单信息")
+    private InsOrdersPolicy insOrdersPolicy;
+}

+ 57 - 0
commons/src/main/java/com/jzg/commons/entity/finance/vo/importbatchmodify/InsPlyIncomeExportVo.java

@@ -0,0 +1,57 @@
+package com.jzg.commons.entity.finance.vo.importbatchmodify;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+@Data
+@Schema(description = "财务应收表")
+public class InsPlyIncomeExportVo implements Serializable {
+    @Serial
+    private static final long serialVersionUID = 6161862008963938376L;
+
+
+    @Schema(description = "车牌号")
+    @ExcelProperty(value = "车牌号", index = 0)
+    private String licenseNo;
+
+    @Schema(description = "交强险保单号")
+    @ExcelProperty(value = "交强险保单号", index = 1)
+    private String jqPolicyNo;
+
+    @Schema(description = "商业险保单号")
+    @ExcelProperty(value = "商业险保单号", index = 2)
+    private String syPolicyNo;
+
+    @Schema(description = "非车险保单号")
+    @ExcelProperty(value = "非车险保单号", index = 3)
+    private String jyPolicyNo;
+
+    @Schema(description = "交强手续费比例")
+    @ExcelProperty(value ="交强手续费比例", index = 4)
+    private String jqSuperviseCostsProportion;
+
+    @Schema(description = "交强跟单费比例")
+    @ExcelProperty(value = "交强跟单费比例", index = 5)
+    private String jqOtherCostsProportion;
+
+    @Schema(description = "商业手续费比例")
+    @ExcelProperty(value = "商业手续费比例", index = 6)
+    private String sySuperviseCostsProportion;
+
+    @Schema(description = "商业跟单费比例")
+    @ExcelProperty(value = "商业跟单费比例", index = 7)
+    private String syOtherCostsProportion;
+
+    @Schema(description = "驾意手续费比例")
+    @ExcelProperty(value = "驾意手续费比例", index = 8)
+    private String jySuperviseCostsProportion;
+
+    @Schema(description = "驾意跟单费比例")
+    @ExcelProperty(value = "驾意跟单费比例", index = 9)
+    private String jyOtherCostsProportion;
+
+}

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

@@ -135,17 +135,19 @@ public class ReceivableController {
     }
 
     @PostMapping("/exportTemplateReceivableList")
-    @Operation(summary = "导出模板私有协议手续费")
+    @Operation(summary = "导出模板私有协议手续费/跟单费/平台协议批量修改的模板")
     public HttpResult<String> exportTemplateReceivableList(){
+        log.info("导出模板私有协议手续费/跟单费/平台协议批量修改的模板");
         String receivablePageIds = receivableService.exportTemplateReceivableList();
         return HttpResult.ok(receivablePageIds);
     }
 
     @PostMapping("/importReceivableListUpdate")
-    @Operation(summary = "导入私有协议手续费修改")
+    @Operation(summary = "导入私有协议/平台协议比例修改")
     public HttpResult<ImportUpdateExcelResultVo> importReceivableListUpdate(@RequestParam("file") MultipartFile file){
+        log.info("导入私有协议/平台协议比例修改");
         ImportUpdateExcelResultVo importExcelResultVo = receivableService.importReceivableListUpdate(file);
-        return HttpResult.ok(importExcelResultVo);
+        return HttpResult.ok(importExcelResultVo.getErrMsg(),importExcelResultVo);
     }
 
     /**
@@ -538,12 +540,6 @@ public class ReceivableController {
         return HttpResult.ok(reduce);
     }
 
-    @PostMapping("/exportTemplatePlatFormReceivable")
-    @Operation(summary = "导出平台协议模板")
-    public HttpResult exportTemplatePlatFormReceivable() throws IOException {
-        return HttpResult.ok(receivableService.exportTemplatePlatFormReceivable());
-    }
-
     @PostMapping("/exportPlatFormReceivable")
     @Operation(summary = "导出平台协议数据")
     public HttpResult exportPlatFormReceivable(@RequestBody ReceivableQueryVo receivableQueryVo) throws IOException {
@@ -558,12 +554,12 @@ public class ReceivableController {
     }
 
 
-    @PostMapping("/importPlatFormReceivable")
-    @Operation(summary = "导入平台协议")
-    public HttpResult importPlatFormReceivable(@RequestParam("file") MultipartFile file){
-        ImportUpdateExcelResultVo importExcelResultVo = receivableService.importPlatFormReceivable(file);
-        return HttpResult.ok(importExcelResultVo);
-    }
+//    @PostMapping("/importPlatFormReceivable")
+//    @Operation(summary = "导入平台协议")
+//    public HttpResult importPlatFormReceivable(@RequestParam("file") MultipartFile file){
+//        ImportUpdateExcelResultVo importExcelResultVo = receivableService.importPlatFormReceivable(file);
+//        return HttpResult.ok(importExcelResultVo);
+//    }
 
     @PostMapping("/invoiceRecord")
     @Operation(summary = "获取开票记录")

+ 10 - 5
tenant/organization/src/main/java/com/jzg/organization/excel/listener/ReceivbleExcelListener.java

@@ -2,16 +2,21 @@ package com.jzg.organization.excel.listener;
 
 import com.alibaba.excel.context.AnalysisContext;
 import com.alibaba.excel.event.AnalysisEventListener;
-import com.jzg.commons.entity.finance.vo.ReceivableExportExcelVo;
+import com.jzg.commons.entity.finance.vo.importbatchmodify.InsPlyIncomeExportVo;
 
 import java.util.ArrayList;
 import java.util.List;
 
-public class ReceivbleExcelListener extends AnalysisEventListener<ReceivableExportExcelVo> {
-    private final List<ReceivableExportExcelVo> dataList = new ArrayList<>();
+/**
+ *
+ * @author lipf
+ * @date 2026/8/26 10:33
+ */
+public class ReceivbleExcelListener extends AnalysisEventListener<InsPlyIncomeExportVo> {
+    private final List<InsPlyIncomeExportVo> dataList = new ArrayList<>();
 
     @Override
-    public void invoke(ReceivableExportExcelVo data, AnalysisContext context) {
+    public void invoke(InsPlyIncomeExportVo data, AnalysisContext context) {
         dataList.add(data);
     }
 
@@ -20,7 +25,7 @@ public class ReceivbleExcelListener extends AnalysisEventListener<ReceivableExpo
         System.out.println("Total rows: " + dataList.size());
     }
 
-    public List<ReceivableExportExcelVo> getDataList() {
+    public List<InsPlyIncomeExportVo> getDataList() {
         return dataList;
     }
 }

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

@@ -7,6 +7,7 @@ import com.jzg.commons.core.page.HttpResult;
 import com.jzg.commons.entity.finance.dto.*;
 import com.jzg.commons.entity.finance.po.*;
 import com.jzg.commons.entity.finance.vo.*;
+import com.jzg.commons.entity.finance.vo.importbatchmodify.InsPlyIncomeExportVo;
 import com.jzg.commons.entity.finance.vo.importimcome.ImportUpdateExcelResultVo;
 import com.jzg.commons.entity.finance.vo.importimcome.JyExcelVo;
 import com.jzg.commons.entity.finance.vo.importimcome.OtherExcelVo;
@@ -146,7 +147,7 @@ public interface ReceivableService extends IService<InsPlyIncome> {
      * @param file
      * @return
      */
-    List<ReceivableExportExcelVo> importReceivableExcel(MultipartFile file);
+    List<InsPlyIncomeExportVo> importReceivableExcel(MultipartFile file);
 
     /**
      * 导入手续费excel  并处理数据
@@ -174,7 +175,7 @@ public interface ReceivableService extends IService<InsPlyIncome> {
      * @param file
      * @return
      */
-    ImportUpdateExcelResultVo importPlatFormReceivable(MultipartFile file);
+//    ImportUpdateExcelResultVo importPlatFormReceivable(MultipartFile file);
 
     /**
      * 批量修改
@@ -242,11 +243,6 @@ public interface ReceivableService extends IService<InsPlyIncome> {
      */
     void exportPlatformSettlementExcel(Page page,SettlementQueryVo settlementQueryVo) throws IOException;
 
-    /**
-     * 导出平台协议Excel模板
-     */
-    String exportTemplatePlatFormReceivable() throws IOException;
-
     /**
      * 导出平台协议Excel
      */

+ 293 - 319
tenant/organization/src/main/java/com/jzg/organization/service/impl/ReceivableServiceImpl.java

@@ -29,6 +29,8 @@ import com.jzg.commons.entity.Constant;
 import com.jzg.commons.entity.finance.dto.*;
 import com.jzg.commons.entity.finance.po.*;
 import com.jzg.commons.entity.finance.vo.*;
+import com.jzg.commons.entity.finance.vo.importbatchmodify.InsPlyIncomeBatch;
+import com.jzg.commons.entity.finance.vo.importbatchmodify.InsPlyIncomeExportVo;
 import com.jzg.commons.entity.finance.vo.importimcome.*;
 import com.jzg.commons.entity.orders.po.InsOrderAdjust;
 import com.jzg.commons.entity.orders.po.InsOrdersPolicy;
@@ -138,7 +140,8 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
     private PtlAgreementMapper ptlAgreementMapper;
     @Autowired
     private SysUploadFilesMapper sysUploadFilesMapper;
-
+    @Autowired
+    private InsOrdersPolicyMapper insOrdersPolicyMapper;
     @Autowired
     private ExportBaseServiceImpl exportBaseService;
     @Autowired
@@ -2235,188 +2238,179 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
      */
     @Override
     public String exportTemplateReceivableList() {
-        List<InsPlyIncomeExportVo> emptyList = ListUtil.empty();
-
+        List<InsPlyIncomeExportVo> exportVos = new ArrayList<>();
+        InsPlyIncomeExportVo vo = new InsPlyIncomeExportVo();
+        // 这里是参考样例,方便业务进行修改
+        vo.setLicenseNo("样例:晋AK68H2");
+        vo.setJqPolicyNo("jq_2026年8月26日10:00:48");
+        vo.setSyPolicyNo("sy_2026年8月26日10:00:56");
+        vo.setJyPolicyNo("jy_2026年8月26日10:01:04");
+        vo.setJqSuperviseCostsProportion("10");
+        vo.setJqOtherCostsProportion("15");
+        vo.setSySuperviseCostsProportion("12");
+        vo.setSyOtherCostsProportion("11");
+        vo.setJySuperviseCostsProportion("13");
+        vo.setJyOtherCostsProportion("17");
+        exportVos.add(vo);
         // 调用动态导出
         return exportBaseService.upLoadFile(
                 InsPlyIncomeExportVo.class,
-                emptyList,
-                "私有协议应收-批量修改-导出模板-" + Instant.now()
+                exportVos,
+                "批量修改-导出模板-" + Instant.now()
         );
     }
 
     /**
-     * 导入应收列表更新数据
-     * <p>
-     * 该方法用于从Excel文件中导入并更新平台协议的应收订单数据,包括以下处理逻辑:
-     * 1. 解析Excel文件获取应收数据列表
-     * 2. 获取所有保险公司信息
-     * 3. 校验Excel内部订单号是否重复
-     * 4. 遍历每条数据进行以下校验和处理:
-     *    - 检查必填字段是否为空
-     *    - 检查Excel内部订单号是否重复
-     *    - 查询数据库中订单号是否存在(只允许修改,不允许新增)
-     *    - 检查应收数据是否已结算(已结算的数据不允许修改)
-     *    - 查询订单是否存在
-     *    - 验证协议编码和类型是否匹配
-     *    - 构建InsPlyIncome对象并设置需要更新的字段
-     * 5. 批量更新成功的记录到数据库
-     * 6. 如果有失败数据,生成失败数据Excel文件并提供下载链接
-     * 7. 返回导入结果(包含成功数、失败数、失败数据和下载链接)
-     * </p>
-     *
-     * @param file Excel文件,包含平台协议应收数据,文件格式应符合ReceivableExportExcelVo的定义
-     * @return ImportUpdateExcelResultVo 返回导入结果对象,包含:
-     *         - successNumber: 成功更新的记录数
-     *         - failedNumber: 失败的记录数
-     *         - failedData: 失败的数据列表,包含错误原因说明
-     *         - failFileUrl: 失败数据Excel文件的下载链接(如果有失败数据)
+     * 导入应收列表更新数据来更新比例数据
+     * @author jiakai,lipf
      */
     @Override
     public ImportUpdateExcelResultVo importReceivableListUpdate(MultipartFile file) {
         String userName = baseController.getUserName();
-        log.info("用户[{}]导入平台协议文件",userName);
+        log.info("用户[{}]导入平台/私有文件",userName);
         ImportUpdateExcelResultVo importExcelResultVo = new ImportUpdateExcelResultVo();
-        List<ReceivableExportExcelVo> receivableExportExcelVos = importReceivableExcel(file);
-        if (CollUtil.isEmpty(receivableExportExcelVos)){
+        List<InsPlyIncomeExportVo> excelContents = importReceivableExcel(file);
+        log.info("用户[{}]导入平台/私有批量修改文件,一共导入[{}]条记录",userName, CollUtil.size(excelContents));
+        if (CollUtil.isEmpty(excelContents)){
             throw new SystemException("数据不能为空,导入失败");
         }
-        AssertionUtils.isEmpty(receivableExportExcelVos, "数据处理失败,导入失败");
-        // 获取保司名称
-        HttpResult<List<EsmInsCompany>> listHttpResult = esmInsCompanyClient.liveCompanyList();
-        AssertionUtils.isFail(listHttpResult.getCode() != 200, listHttpResult.getMsg());
+        AssertionUtils.isEmpty(excelContents, "数据处理失败,导入失败");
 
-        int failedNumber = 0;
-        List<ReceivableExportExcelVo> failedExcel = new ArrayList<>();
-        // 只存储需要【修改】的数据
-        List<InsPlyIncome> updateExcel = new ArrayList<>();
-
-        // 校验Excel内部保单号重复
-        Set<String> existPolicyNoSet = new HashSet<>();
-        Set<String> repeatPolicyNoSet = new HashSet<>();
-
-        for (ReceivableExportExcelVo vo : receivableExportExcelVos) {
-            String orderNo = vo.getOrderNo();
-            if (existPolicyNoSet.contains(orderNo)) {
-                repeatPolicyNoSet.add(orderNo);
-            } else {
-                existPolicyNoSet.add(orderNo);
-            }
+        List<InsPlyIncomeBatch> datas = this.fillExcelConte(excelContents);
+        HttpResult<String> validateRes = this.validateBatch(datas);
+        if(validateRes.isFail()){
+            log.error("批量导入修改。校验异常。 validateRes=[{}]", JSONUtil.toJsonStr(validateRes));
+            importExcelResultVo.setErrMsg(validateRes.getMsg());
+            return importExcelResultVo;
         }
-
-        // 处理数据
-
-        for (ReceivableExportExcelVo vo : receivableExportExcelVos) {
-            // 1. 空数据校验
-            ImportResultVo resultVo = vo.checkEmpty();
-            if (!resultVo.isSuccess()) {
-                failedNumber++;
-                vo.setErrorMessage(resultVo.getMessage().stream().collect(Collectors.joining(",")));
-                failedExcel.add(vo);
-                continue;
+        List<BatchModifyVo> batchModifyVos = datas.stream().map(action->{
+            BatchModifyVo batchModifyVo = new BatchModifyVo();
+            BeanUtils.copyProperties(action,batchModifyVo);
+            if(StrUtil.isNotEmpty(action.getOrderNo())){
+                batchModifyVo.getOrderNos().add(action.getOrderNo());
             }
-
-            // 2. Excel内部保单号重复
-            if (repeatPolicyNoSet.contains(vo.getOrderNo())) {
-                failedNumber++;
-                vo.setErrorMessage("订单号重复");
-                failedExcel.add(vo);
-                continue;
+            if(StrUtil.isNotEmpty(action.getIncomeId())){
+                batchModifyVo.getIncomeIds().add(action.getIncomeId());
             }
+            return batchModifyVo;
+        }).toList();
+        StringJoiner joiner = new StringJoiner(",","车牌号为","的记录批量修改异常");
+        for (BatchModifyVo batchModifyVo : batchModifyVos) {
+            boolean b = this.batchModify(batchModifyVo);
+            if(!b){
+                joiner.add(batchModifyVo.getLicenseNo());
+            }
+        }
+        if(StrUtil.isNotEmpty(joiner.toString())){
+            String msg = String.format("批量导入修改,全部成功。成功修改[%d]条记录", CollUtil.size(excelContents));
+            log.info(msg);
+            importExcelResultVo.setErrMsg(msg);
+            return importExcelResultVo;
+        }
+        String errMsg = joiner.toString();
+        log.info("导入excel进行批量修改异常。 errMsg=[{}]",errMsg);
+        importExcelResultVo.setErrMsg(errMsg);
+        return importExcelResultVo;
+    }
 
-            // 3. 查询数据库中是否已存在该订单号
-            InsPlyIncome existIncome = baseMapper.selectOne(new LambdaQueryWrapper<InsPlyIncome>()
-                    .eq(InsPlyIncome::getOrderNo, vo.getOrderNo()));
-
-            // 数据库不存在 → 直接失败
-            if (Objects.isNull(existIncome)) {
-                failedNumber++;
-                vo.setErrorMessage("订单号不存在,不允许新增");
-                failedExcel.add(vo);
+    /**
+     * 校验批量修改导入的数据是否正常,
+     *
+     * @param datas
+     * @author lipf
+     * @date 2026/8/26 10:51
+     */
+    private HttpResult<String> validateBatch(List<InsPlyIncomeBatch> datas) {
+        log.info("导入批量修改。 datas.size=[{}]", JSONUtil.toJsonStr(datas));
+        StringJoiner joiner = new StringJoiner(",","校验未通过: ","");
+        for (InsPlyIncomeBatch data : datas) {
+            if(StrUtil.isEmpty(data.getOrderNo())){
+                joiner.add(String.format("车牌号为[%s]的记录根据保单号没有找到订单信息", data.getLicenseNo()));
                 continue;
             }
-
-            // 数据库已存在 → 继续后续校验
-            // 判断已开票 / 已结算
-            String settlementFlag = "1";
-            if (settlementFlag.equals(existIncome.getSuperviseSettlement()) || settlementFlag.equals(existIncome.getOtherSettlement())
-                    || settlementFlag.equals(existIncome.getJySuperviseSettlement()) || settlementFlag.equals(existIncome.getJyOtherSettlement())
-                    || settlementFlag.equals(existIncome.getPlatformSuperviseSettlement()) || settlementFlag.equals(existIncome.getPlatformOtherSettlement())) {
-                failedNumber++;
-                vo.setErrorMessage("应收数据已结算");
-                failedExcel.add(vo);
+            InsPlyIncome insPlyIncome = data.getInsPlyIncome();
+            if(insPlyIncome == null){
+                joiner.add(String.format("车牌号为[%s]的记录根据订单号[%s]没有找到应收记录", data.getLicenseNo(), data.getOrderNo()));
                 continue;
             }
+        }
+        List<ImportContentExt> exts = datas.stream().map(action->{
+            ImportContentExt ext = new ImportContentExt();
+            BeanUtils.copyProperties(action,ext);
+            return ext;
+        }).toList();
+        String s = this.validatePolicy(exts, "20");
+        if(StrUtil.isNotEmpty(s)){
+            joiner.add(s);
+        }
+        if(StrUtil.isNotEmpty(joiner.toString())){
+            return HttpResult.ok();
+        }
+        return HttpResult.error(joiner.toString());
+    }
 
+    /**
+     * 为Excel中的数据填充其他必要的字段, 为后续的校验提前准备数据
+     *
+     * @param excelContents excel中导入的记录
+     * @author lipf
+     * @date 2026/8/26 10:46
+     */
+    private List<InsPlyIncomeBatch> fillExcelConte(List<InsPlyIncomeExportVo> excelContents) {
+        log.info("为[{}]条导入数据填充必要的字段", CollUtil.size(excelContents));
+        List<InsPlyIncomeBatch> res = new ArrayList<>();
+        for (InsPlyIncomeExportVo excelContent : excelContents) {
+            InsPlyIncomeBatch ext = new InsPlyIncomeBatch();
+            BeanUtils.copyProperties(excelContent,ext);
+            res.add(ext);
             // 查询订单
-            HttpResult<InsOrdersVo> insOrdersVoHttpResult = insOrdersClient.selectById(vo.getOrderNo());
-            InsOrdersVo data = insOrdersVoHttpResult.getData();
-            if (null == data){
-                failedNumber++;
-                vo.setErrorMessage("订单号不存在");
-                failedExcel.add(vo);
+            String orderNO = "";
+            if(StrUtil.isNotEmpty(excelContent.getJqPolicyNo()) && StrUtil.isEmpty(orderNO)){
+                LambdaQueryWrapper<InsOrdersPolicy> queryWrapper = new LambdaQueryWrapper<>();
+                queryWrapper.eq(InsOrdersPolicy::getJqPolicyNo,excelContent.getJqPolicyNo());
+                List<InsOrdersPolicy> insOrdersPolicies = insOrdersPolicyMapper.selectList(queryWrapper);
+                if(CollUtil.isNotEmpty(insOrdersPolicies)){
+                    ext.setInsOrdersPolicy(insOrdersPolicies.get(0));
+                    orderNO  = insOrdersPolicies.get(0).getOrderNo();
+                }
+            }
+            if(StrUtil.isNotEmpty(excelContent.getSyPolicyNo()) && StrUtil.isEmpty(orderNO)){
+                LambdaQueryWrapper<InsOrdersPolicy> queryWrapper = new LambdaQueryWrapper<>();
+                queryWrapper.eq(InsOrdersPolicy::getSyPolicyNo,excelContent.getSyPolicyNo());
+                List<InsOrdersPolicy> insOrdersPolicies = insOrdersPolicyMapper.selectList(queryWrapper);
+                if(CollUtil.isNotEmpty(insOrdersPolicies)){
+                    ext.setInsOrdersPolicy(insOrdersPolicies.get(0));
+                    orderNO  = insOrdersPolicies.get(0).getOrderNo();
+                }
+            }
+            if(StrUtil.isNotEmpty(excelContent.getJyPolicyNo()) && StrUtil.isEmpty(orderNO)){
+                LambdaQueryWrapper<InsOrdersPolicy> queryWrapper = new LambdaQueryWrapper<>();
+                queryWrapper.eq(InsOrdersPolicy::getJyPolicyNo,excelContent.getJyPolicyNo());
+                List<InsOrdersPolicy> insOrdersPolicies = insOrdersPolicyMapper.selectList(queryWrapper);
+                if(CollUtil.isNotEmpty(insOrdersPolicies)){
+                    ext.setInsOrdersPolicy(insOrdersPolicies.get(0));
+                    orderNO  = insOrdersPolicies.get(0).getOrderNo();
+                }
+            }
+            if(StrUtil.isEmpty(orderNO)){
                 continue;
             }
-
-            // 查询数据库中是否已存在该协议
-            PtlAgreement ptlAgreement = ptlAgreementMapper.selectOne(new LambdaQueryWrapper<PtlAgreement>()
-                    .eq(PtlAgreement::getId, data.getAgreementId()));
-
-            // 数据库不存在 → 直接失败
-            if (Objects.isNull(ptlAgreement) || !ptlAgreement.getAgreementType().toString().equals(vo.getAgreementType())) {
-                failedNumber++;
-                vo.setErrorMessage("协议编码在协议中不存在");
-                failedExcel.add(vo);
+            log.info("处理订单号是[{}]的订单",orderNO);
+            ext.setOrderNo(orderNO);
+
+            LambdaQueryWrapper<InsPlyIncome> wrapper = new LambdaQueryWrapper<>();
+            wrapper.eq(InsPlyIncome::getOrderNo,orderNO);
+            List<InsPlyIncome> insPlyIncomes = insPlyIncomeMapper.selectList(wrapper);
+            if(CollUtil.isEmpty(insPlyIncomes)){
+                log.info("订单号为[{}]的数据没有进入应收",orderNO);
                 continue;
             }
-
-            // 封装修改数据
-            InsPlyIncome insPlyIncome = new InsPlyIncome();
-            insPlyIncome.setId(existIncome.getId());
-            insPlyIncome.setLicenseNo(vo.getLicenseNo());
-            insPlyIncome.setJqPolicyNo(vo.getJqPolicyNo());
-            insPlyIncome.setJqSuperviseCostsProportion(vo.getJqSuperviseCostsProportion());
-            insPlyIncome.setJqOtherCostsProportion(vo.getJqOtherCostsProportion());
-            insPlyIncome.setSyPolicyNo(vo.getSyPolicyNo());
-            insPlyIncome.setSySuperviseCostsProportion(vo.getSySuperviseCostsProportion());
-            insPlyIncome.setSyOtherCostsProportion(vo.getSyOtherCostsProportion());
-            insPlyIncome.setJyPolicyNo(vo.getJyPolicyNo());
-            insPlyIncome.setJySuperviseCostsProportion(vo.getJySuperviseCostsProportion());
-            insPlyIncome.setJyOtherCostsProportion(vo.getJyOtherCostsProportion());
-            insPlyIncome.setContactPerson(vo.getDockingPerson());
-            insPlyIncome.setContactPersonPhone(vo.getDockingPersonPhone());
-            // 协议编号
-            insPlyIncome.setAgreementId(ptlAgreement.getId());
-            insPlyIncome.setAgreementName(ptlAgreement.getAgreementName());
-            insPlyIncome.setAgreementType(ptlAgreement.getAgreementType().toString());
-            insPlyIncome.setSystemCode(ptlAgreement.getSystemCode());
-
-            // 加入修改列表
-            updateExcel.add(insPlyIncome);
-        }
-
-        // 执行批量更新(只更新,不新增)
-        if (CollUtil.isNotEmpty(updateExcel)) {
-            baseMapper.updateById(updateExcel);
-        }
-
-        // ===================== 生成失败数据下载链接 =====================
-        String failFileUrl = "";
-        if (CollUtil.isNotEmpty(failedExcel)) {
-            failFileUrl = exportBaseService.upLoadFile(
-                    ReceivableExportExcelVo.class,
-                    failedExcel,
-                    "平台协议应收-导入失败-" + Instant.now()
-            );
+            InsPlyIncome insPlyIncome = insPlyIncomes.get(0);
+            ext.setIncomeId(insPlyIncome.getId());
+            ext.setInsPlyIncome(insPlyIncome);
         }
 
-        // 返回结果
-        importExcelResultVo.setFailedData(failedExcel);
-        importExcelResultVo.setFailFileUrl(failFileUrl);
-        importExcelResultVo.setSuccessNumber(updateExcel.size());
-        importExcelResultVo.setFailedNumber(failedNumber);
-
-        return importExcelResultVo;
+        return res;
     }
 
     /**
@@ -3134,10 +3128,10 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
     }
 
     @Override
-    public List<ReceivableExportExcelVo> importReceivableExcel(MultipartFile file) {
+    public List<InsPlyIncomeExportVo> importReceivableExcel(MultipartFile file) {
         ReceivbleExcelListener listener = new ReceivbleExcelListener();
         try (InputStream inputStream = file.getInputStream()) {
-            EasyExcel.read(inputStream, ReceivableExportExcelVo.class, listener)
+            EasyExcel.read(inputStream, InsPlyIncomeExportVo.class, listener)
                     .sheet()
                     .doRead();
             return listener.getDataList();
@@ -3147,9 +3141,6 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
         }
     }
 
-
-
-
     @Override
     public List<JyExcelVo> importJyExcel(MultipartFile file) {
         JyExcelListener listener = new JyExcelListener();
@@ -3462,151 +3453,151 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
      *         - failedData: 失败的数据列表,包含错误原因说明
      *         - failFileUrl: 失败数据Excel文件的下载链接(如果有失败数据)
      */
-    @Override
-    public ImportUpdateExcelResultVo importPlatFormReceivable(MultipartFile file) {
-        String userName = baseController.getUserName();
-        log.info("用户[{}]导入平台协议文件",userName);
-        ImportUpdateExcelResultVo importExcelResultVo = new ImportUpdateExcelResultVo();
-        List<ReceivableExportExcelVo> receivableExportExcelVos = importReceivableExcel(file);
-        if (CollUtil.isEmpty(receivableExportExcelVos)){
-            throw new SystemException("数据不能为空,导入失败");
-        }
-        AssertionUtils.isEmpty(receivableExportExcelVos, "数据处理失败,导入失败");
-        // 获取保司名称
-        HttpResult<List<EsmInsCompany>> listHttpResult = esmInsCompanyClient.liveCompanyList();
-        AssertionUtils.isFail(listHttpResult.getCode() != 200, listHttpResult.getMsg());
-
-        int failedNumber = 0;
-        List<ReceivableExportExcelVo> failedExcel = new ArrayList<>();
-        // 只存储需要【修改】的数据
-        List<InsPlyIncome> updateExcel = new ArrayList<>();
-
-        // 校验Excel内部保单号重复
-        Set<String> existPolicyNoSet = new HashSet<>();
-        Set<String> repeatPolicyNoSet = new HashSet<>();
-
-        for (ReceivableExportExcelVo vo : receivableExportExcelVos) {
-            String policyNo = vo.getJqPolicyNo();
-            if (existPolicyNoSet.contains(policyNo)) {
-                repeatPolicyNoSet.add(policyNo);
-            } else {
-                existPolicyNoSet.add(policyNo);
-            }
-        }
-
-        // 处理数据
-        for (ReceivableExportExcelVo vo : receivableExportExcelVos) {
-            // 1. 空数据校验
-            ImportResultVo resultVo = vo.checkEmpty();
-            if (!resultVo.isSuccess()) {
-                failedNumber++;
-                vo.setErrorMessage(resultVo.convert2Str());
-                failedExcel.add(vo);
-                continue;
-            }
-
-            // 2. Excel内部保单号重复
-            if (repeatPolicyNoSet.contains(vo.getJqPolicyNo())) {
-                failedNumber++;
-                vo.setErrorMessage("保单号重复");
-                failedExcel.add(vo);
-                continue;
-            }
-
-            // 查询订单
-            HttpResult<InsOrdersVo> insOrdersVoHttpResult = insOrdersClient.selectById(vo.getOrderNo());
-            InsOrdersVo data = insOrdersVoHttpResult.getData();
-            if (null == data){
-                failedNumber++;
-                vo.setErrorMessage("订单号不存在");
-                failedExcel.add(vo);
-                continue;
-            }
-
-            // 查询数据库中是否已存在该协议
-            PtlAgreement ptlAgreement = ptlAgreementMapper.selectOne(new LambdaQueryWrapper<PtlAgreement>()
-                    .eq(PtlAgreement::getId, data.getAgreementId()));
-
-            // 数据库不存在 → 直接失败
-            if (Objects.isNull(ptlAgreement) || !ptlAgreement.getAgreementType().toString().equals(vo.getAgreementType())) {
-                failedNumber++;
-                vo.setErrorMessage("协议编码在协议中不存在");
-                failedExcel.add(vo);
-                continue;
-            }
-
-            // 3. 查询数据库中是否已存在该保单号
-            InsPlyIncome existIncome = baseMapper.selectOne(new LambdaQueryWrapper<InsPlyIncome>()
-                    .eq(InsPlyIncome::getJqPolicyNo, vo.getJqPolicyNo()));
-
-            // 数据库不存在 → 直接失败
-            if (Objects.isNull(existIncome)) {
-                failedNumber++;
-                vo.setErrorMessage("保单号不存在,不允许新增");
-                failedExcel.add(vo);
-                continue;
-            }
-
-            // 数据库已存在 → 继续后续校验
-            // 判断已开票 / 已结算
-            String settlementFlag = "1";
-            if (settlementFlag.equals(existIncome.getSuperviseSettlement()) || settlementFlag.equals(existIncome.getOtherSettlement())
-                    || settlementFlag.equals(existIncome.getJySuperviseSettlement()) || settlementFlag.equals(existIncome.getJyOtherSettlement())
-                    || settlementFlag.equals(existIncome.getPlatformSuperviseSettlement()) || settlementFlag.equals(existIncome.getPlatformOtherSettlement())) {
-                failedNumber++;
-                vo.setErrorMessage("应收数据已结算");
-                failedExcel.add(vo);
-                continue;
-            }
-
-            // 封装修改数据
-            InsPlyIncome insPlyIncome = new InsPlyIncome();
-            insPlyIncome.setId(existIncome.getId());
-            insPlyIncome.setLicenseNo(vo.getLicenseNo());
-            insPlyIncome.setJqPolicyNo(vo.getJqPolicyNo());
-            insPlyIncome.setJqSuperviseCostsProportion(vo.getJqSuperviseCostsProportion());
-            insPlyIncome.setJqOtherCostsProportion(vo.getJqOtherCostsProportion());
-            insPlyIncome.setSyPolicyNo(vo.getSyPolicyNo());
-            insPlyIncome.setSySuperviseCostsProportion(vo.getSySuperviseCostsProportion());
-            insPlyIncome.setSyOtherCostsProportion(vo.getSyOtherCostsProportion());
-            insPlyIncome.setJyPolicyNo(vo.getJyPolicyNo());
-            insPlyIncome.setJySuperviseCostsProportion(vo.getJySuperviseCostsProportion());
-            insPlyIncome.setJyOtherCostsProportion(vo.getJyOtherCostsProportion());
-            insPlyIncome.setContactPerson(vo.getDockingPerson());
-            insPlyIncome.setContactPersonPhone(vo.getDockingPersonPhone());
-            // 协议编号
-            insPlyIncome.setAgreementId(ptlAgreement.getId());
-            insPlyIncome.setAgreementName(ptlAgreement.getAgreementName());
-            insPlyIncome.setAgreementType(ptlAgreement.getAgreementType().toString());
-            insPlyIncome.setSystemCode(ptlAgreement.getSystemCode());
-
-            // 加入修改列表
-            updateExcel.add(insPlyIncome);
-        }
-
-        // 执行批量更新(只更新,不新增)
-        if (CollUtil.isNotEmpty(updateExcel)) {
-            baseMapper.updateById(updateExcel);
-        }
-
-        // ===================== 生成失败数据下载链接 =====================
-        String failFileUrl = "";
-        if (CollUtil.isNotEmpty(failedExcel)) {
-            failFileUrl = exportBaseService.upLoadFile(
-                    ReceivableExportExcelVo.class,
-                    failedExcel,
-                    "平台协议应收-导入失败-" + Instant.now()
-            );
-        }
-
-        // 返回结果
-        importExcelResultVo.setFailedData(failedExcel);
-        importExcelResultVo.setFailFileUrl(failFileUrl);
-        importExcelResultVo.setSuccessNumber(updateExcel.size());
-        importExcelResultVo.setFailedNumber(failedNumber);
-
-        return importExcelResultVo;
-    }
+//    @Override
+//    public ImportUpdateExcelResultVo importPlatFormReceivable(MultipartFile file) {
+//        String userName = baseController.getUserName();
+//        log.info("用户[{}]导入平台协议文件",userName);
+//        ImportUpdateExcelResultVo importExcelResultVo = new ImportUpdateExcelResultVo();
+//        List<ReceivableExportExcelVo> receivableExportExcelVos = importReceivableExcel(file);
+//        if (CollUtil.isEmpty(receivableExportExcelVos)){
+//            throw new SystemException("数据不能为空,导入失败");
+//        }
+//        AssertionUtils.isEmpty(receivableExportExcelVos, "数据处理失败,导入失败");
+//        // 获取保司名称
+//        HttpResult<List<EsmInsCompany>> listHttpResult = esmInsCompanyClient.liveCompanyList();
+//        AssertionUtils.isFail(listHttpResult.getCode() != 200, listHttpResult.getMsg());
+//
+//        int failedNumber = 0;
+//        List<ReceivableExportExcelVo> failedExcel = new ArrayList<>();
+//        // 只存储需要【修改】的数据
+//        List<InsPlyIncome> updateExcel = new ArrayList<>();
+//
+//        // 校验Excel内部保单号重复
+//        Set<String> existPolicyNoSet = new HashSet<>();
+//        Set<String> repeatPolicyNoSet = new HashSet<>();
+//
+//        for (ReceivableExportExcelVo vo : receivableExportExcelVos) {
+//            String policyNo = vo.getJqPolicyNo();
+//            if (existPolicyNoSet.contains(policyNo)) {
+//                repeatPolicyNoSet.add(policyNo);
+//            } else {
+//                existPolicyNoSet.add(policyNo);
+//            }
+//        }
+//
+//        // 处理数据
+//        for (ReceivableExportExcelVo vo : receivableExportExcelVos) {
+//            // 1. 空数据校验
+//            ImportResultVo resultVo = vo.checkEmpty();
+//            if (!resultVo.isSuccess()) {
+//                failedNumber++;
+//                vo.setErrorMessage(resultVo.convert2Str());
+//                failedExcel.add(vo);
+//                continue;
+//            }
+//
+//            // 2. Excel内部保单号重复
+//            if (repeatPolicyNoSet.contains(vo.getJqPolicyNo())) {
+//                failedNumber++;
+//                vo.setErrorMessage("保单号重复");
+//                failedExcel.add(vo);
+//                continue;
+//            }
+//
+//            // 查询订单
+//            HttpResult<InsOrdersVo> insOrdersVoHttpResult = insOrdersClient.selectById(vo.getOrderNo());
+//            InsOrdersVo data = insOrdersVoHttpResult.getData();
+//            if (null == data){
+//                failedNumber++;
+//                vo.setErrorMessage("订单号不存在");
+//                failedExcel.add(vo);
+//                continue;
+//            }
+//
+//            // 查询数据库中是否已存在该协议
+//            PtlAgreement ptlAgreement = ptlAgreementMapper.selectOne(new LambdaQueryWrapper<PtlAgreement>()
+//                    .eq(PtlAgreement::getId, data.getAgreementId()));
+//
+//            // 数据库不存在 → 直接失败
+//            if (Objects.isNull(ptlAgreement) || !ptlAgreement.getAgreementType().toString().equals(vo.getAgreementType())) {
+//                failedNumber++;
+//                vo.setErrorMessage("协议编码在协议中不存在");
+//                failedExcel.add(vo);
+//                continue;
+//            }
+//
+//            // 3. 查询数据库中是否已存在该保单号
+//            InsPlyIncome existIncome = baseMapper.selectOne(new LambdaQueryWrapper<InsPlyIncome>()
+//                    .eq(InsPlyIncome::getJqPolicyNo, vo.getJqPolicyNo()));
+//
+//            // 数据库不存在 → 直接失败
+//            if (Objects.isNull(existIncome)) {
+//                failedNumber++;
+//                vo.setErrorMessage("保单号不存在,不允许新增");
+//                failedExcel.add(vo);
+//                continue;
+//            }
+//
+//            // 数据库已存在 → 继续后续校验
+//            // 判断已开票 / 已结算
+//            String settlementFlag = "1";
+//            if (settlementFlag.equals(existIncome.getSuperviseSettlement()) || settlementFlag.equals(existIncome.getOtherSettlement())
+//                    || settlementFlag.equals(existIncome.getJySuperviseSettlement()) || settlementFlag.equals(existIncome.getJyOtherSettlement())
+//                    || settlementFlag.equals(existIncome.getPlatformSuperviseSettlement()) || settlementFlag.equals(existIncome.getPlatformOtherSettlement())) {
+//                failedNumber++;
+//                vo.setErrorMessage("应收数据已结算");
+//                failedExcel.add(vo);
+//                continue;
+//            }
+//
+//            // 封装修改数据
+//            InsPlyIncome insPlyIncome = new InsPlyIncome();
+//            insPlyIncome.setId(existIncome.getId());
+//            insPlyIncome.setLicenseNo(vo.getLicenseNo());
+//            insPlyIncome.setJqPolicyNo(vo.getJqPolicyNo());
+//            insPlyIncome.setJqSuperviseCostsProportion(vo.getJqSuperviseCostsProportion());
+//            insPlyIncome.setJqOtherCostsProportion(vo.getJqOtherCostsProportion());
+//            insPlyIncome.setSyPolicyNo(vo.getSyPolicyNo());
+//            insPlyIncome.setSySuperviseCostsProportion(vo.getSySuperviseCostsProportion());
+//            insPlyIncome.setSyOtherCostsProportion(vo.getSyOtherCostsProportion());
+//            insPlyIncome.setJyPolicyNo(vo.getJyPolicyNo());
+//            insPlyIncome.setJySuperviseCostsProportion(vo.getJySuperviseCostsProportion());
+//            insPlyIncome.setJyOtherCostsProportion(vo.getJyOtherCostsProportion());
+//            insPlyIncome.setContactPerson(vo.getDockingPerson());
+//            insPlyIncome.setContactPersonPhone(vo.getDockingPersonPhone());
+//            // 协议编号
+//            insPlyIncome.setAgreementId(ptlAgreement.getId());
+//            insPlyIncome.setAgreementName(ptlAgreement.getAgreementName());
+//            insPlyIncome.setAgreementType(ptlAgreement.getAgreementType().toString());
+//            insPlyIncome.setSystemCode(ptlAgreement.getSystemCode());
+//
+//            // 加入修改列表
+//            updateExcel.add(insPlyIncome);
+//        }
+//
+//        // 执行批量更新(只更新,不新增)
+//        if (CollUtil.isNotEmpty(updateExcel)) {
+//            baseMapper.updateById(updateExcel);
+//        }
+//
+//        // ===================== 生成失败数据下载链接 =====================
+//        String failFileUrl = "";
+//        if (CollUtil.isNotEmpty(failedExcel)) {
+//            failFileUrl = exportBaseService.upLoadFile(
+//                    ReceivableExportExcelVo.class,
+//                    failedExcel,
+//                    "平台协议应收-导入失败-" + Instant.now()
+//            );
+//        }
+//
+//        // 返回结果
+//        importExcelResultVo.setFailedData(failedExcel);
+//        importExcelResultVo.setFailFileUrl(failFileUrl);
+//        importExcelResultVo.setSuccessNumber(updateExcel.size());
+//        importExcelResultVo.setFailedNumber(failedNumber);
+//
+//        return importExcelResultVo;
+//    }
 
     /**
      * 导入驾意险数据
@@ -5481,23 +5472,6 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
         EasyExcelUtils.exportForWeb(ServletUtils.getResponse(), ExportSuperviseSettlementExcelDto.class, list, "车险手续费结算明细");
     }
 
-    /**
-     * 导出平台协议Excel
-     *
-     * @return
-     */
-    @Override
-    public String exportTemplatePlatFormReceivable() {
-        List<ReceivableExportExcelDto> emptyList = ListUtil.empty();
-
-        // 调用动态导出
-        return exportBaseService.upLoadFile(
-                ReceivableExportExcelDto.class,
-                emptyList,
-                "平台协议应收-批量导入-导出模板-" + Instant.now()
-        );
-    }
-
     /**
      * 导出平台协议Excel
      *