Sfoglia il codice sorgente

借助设计模式简化代码

lipf 3 settimane fa
parent
commit
33811c53fb

+ 1 - 2
commons/src/main/java/com/jzg/commons/entity/finance/vo/importimcome/ExcelContent4Platform.java

@@ -6,7 +6,6 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 
 import java.io.Serial;
-import java.io.Serializable;
 
 /**
  * @author tz
@@ -16,7 +15,7 @@ import java.io.Serializable;
 @EqualsAndHashCode
 @Data
 @Schema(description = "财务应收表")
-public class ExcelContent4Platform implements Serializable {
+public class ExcelContent4Platform implements InsuranceData {
 
     @Serial
     private static final long serialVersionUID = 6263862008363938379L;

+ 1 - 3
commons/src/main/java/com/jzg/commons/entity/finance/vo/importimcome/ExcelContent4PrivateSuperviseCar.java

@@ -6,8 +6,6 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 
 import java.io.Serial;
-import java.io.Serializable;
-
 /**
  * 私有手续费
  *
@@ -18,7 +16,7 @@ import java.io.Serializable;
 @EqualsAndHashCode
 @Data
 @Schema(description = "财务应收表")
-public class ExcelContent4PrivateSuperviseCar implements Serializable {
+public class ExcelContent4PrivateSuperviseCar implements InsuranceData {
 
     @Serial
     private static final long serialVersionUID = 6263862008363938379L;

+ 1 - 3
commons/src/main/java/com/jzg/commons/entity/finance/vo/importimcome/ExcelContent4PrivateSuperviseNoCar.java

@@ -6,8 +6,6 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 
 import java.io.Serial;
-import java.io.Serializable;
-
 /**
  * 私有手续费
  *
@@ -18,7 +16,7 @@ import java.io.Serializable;
 @EqualsAndHashCode
 @Data
 @Schema(description = "财务应收表")
-public class ExcelContent4PrivateSuperviseNoCar implements Serializable {
+public class ExcelContent4PrivateSuperviseNoCar implements InsuranceData {
 
     @Serial
     private static final long serialVersionUID = 6263862008363938379L;

+ 12 - 0
commons/src/main/java/com/jzg/commons/entity/finance/vo/importimcome/InsuranceData.java

@@ -0,0 +1,12 @@
+package com.jzg.commons.entity.finance.vo.importimcome;
+
+import java.io.Serializable;
+
+/**
+ * 车险和非车险的公共方法
+ *
+ * @author lipf
+ * @date 2026/8/17 15:49
+ */
+public interface InsuranceData extends Serializable {
+}

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

@@ -164,7 +164,14 @@ public class ReceivableController {
     @PostMapping("/importAccountsReceivableInvoice")
     @Operation(summary = "导入应收开票数据")
     public HttpResult<ImportUpdateExcelResultVo> importAccountsReceivableInvoice(@RequestParam("file") MultipartFile file){
-        ImportUpdateExcelResultVo importExcelResultVo = receivableService.importAccountsReceivableInvoice(file);
+        ImportUpdateExcelResultVo importExcelResultVo = receivableService.importAccountsReceivableInvoice4NoCarRisk(file);
+        return HttpResult.ok(importExcelResultVo);
+    }
+
+    @PostMapping("/importAccountsReceivableInvoice4CarRisk")
+    @Operation(summary = "导入应收开票数据")
+    public HttpResult<ImportUpdateExcelResultVo> importAccountsReceivableInvoice4CarRisk(@RequestParam("file") MultipartFile file){
+        ImportUpdateExcelResultVo importExcelResultVo = receivableService.importAccountsReceivableInvoice4CarRisk(file);
         return HttpResult.ok(importExcelResultVo);
     }
 

+ 7 - 0
tenant/organization/src/main/java/com/jzg/organization/excel/listener/InsuranceData.java

@@ -0,0 +1,7 @@
+package com.jzg.organization.excel.listener;
+
+
+public interface InsuranceData {
+
+    public String getLicenseNo();
+}

+ 36 - 0
tenant/organization/src/main/java/com/jzg/organization/excel/listener/InvoiceReceivbleExcel4PrivateListenerCar.java

@@ -0,0 +1,36 @@
+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.importimcome.ExcelContent4PrivateSuperviseCar;
+import com.jzg.commons.entity.finance.vo.importimcome.ExcelContent4PrivateSuperviseNoCar;
+import lombok.Getter;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 私有的车险数据读取
+ *
+ * @author lipf
+ * @date 2026/8/17 15:40
+ */
+@Getter
+public class InvoiceReceivbleExcel4PrivateListenerCar extends AnalysisEventListener<ExcelContent4PrivateSuperviseCar> {
+
+    private final List<ExcelContent4PrivateSuperviseCar> dataList = new ArrayList<>();
+
+    @Override
+    public void invoke(ExcelContent4PrivateSuperviseCar data, AnalysisContext context) {
+        dataList.add(data);
+    }
+
+    @Override
+    public void doAfterAllAnalysed(AnalysisContext context) {
+        System.out.println("Total rows: " + dataList.size());
+    }
+
+    public List<ExcelContent4PrivateSuperviseCar> getDataList() {
+        return dataList;
+    }
+}

+ 6 - 1
tenant/organization/src/main/java/com/jzg/organization/excel/listener/InvoiceReceivbleExcel4PrivateListener.java → tenant/organization/src/main/java/com/jzg/organization/excel/listener/InvoiceReceivbleExcel4PrivateListenerNoCar.java

@@ -8,8 +8,13 @@ import lombok.Getter;
 import java.util.ArrayList;
 import java.util.List;
 
+/**
+ * 私有的非车险数据读取
+ * @author lipf
+ * @date 2026/8/17 15:40
+ */
 @Getter
-public class InvoiceReceivbleExcel4PrivateListener extends AnalysisEventListener<ExcelContent4PrivateSuperviseNoCar> {
+public class InvoiceReceivbleExcel4PrivateListenerNoCar extends AnalysisEventListener<ExcelContent4PrivateSuperviseNoCar> {
     private final List<ExcelContent4PrivateSuperviseNoCar> dataList = new ArrayList<>();
 
     @Override

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

@@ -438,11 +438,22 @@ public interface ReceivableService extends IService<InsPlyIncome> {
     String exportAccountsReceivableInvoiceTemplate(String type);
 
     /**
-     * 导入应收开票数据
+     *
+     * 非车险应收数据导入
+     *
      * @param file
      * @return
      */
-    ImportUpdateExcelResultVo importAccountsReceivableInvoice(MultipartFile file);
+    ImportUpdateExcelResultVo importAccountsReceivableInvoice4NoCarRisk(MultipartFile file);
+
+    /**
+     * 车险应收数据导入
+     *
+     * @author lipf
+     * @date 2026/8/17 15:43
+     */
+    ImportUpdateExcelResultVo importAccountsReceivableInvoice4CarRisk(MultipartFile file);
+
 
     /**
      * 导入应收开票数据

+ 27 - 22
tenant/organization/src/main/java/com/jzg/organization/service/impl/ReceivableServiceImpl.java

@@ -2535,26 +2535,31 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
     }
 
     /**
-     * 导入应收开票数据
-     * <p>
-     * 该方法用于从Excel文件中导入并处理应收开票数据,支持新增和更新操作,包括以下处理逻辑:
-     * 1. 解析Excel文件获取应收数据列表
-     * 2. 获取所有保险公司信息用于后续匹配
-     * 3. 校验Excel内部保单号是否重复
-     * 4. 校验导入数据是否只包含一个保险公司
-     * 5. 遍历每条数据进行以下校验和处理:
-     *    - 检查必填字段是否为空
-     *    - 检查Excel内部保单号是否重复
-     *    - 查询订单是否存在
-     *    - 验证协议编码和类型是否匹配
-     *    - 构建InsPlyIncome对象并设置相关信息
-     *    - 如果数据库中不存在该保单号,则作为新增记录处理
-     *    - 如果数据库中存在该保单号,检查是否已结算,未结算则作为更新记录处理
-     * 6. 批量插入或更新成功的记录到数据库
-     * 7. 如果有失败数据,生成失败数据Excel文件并提供下载链接
-     * 8. 返回导入结果(包含成功数、失败数、失败数据、下载链接和成功的订单号列表)
-     * </p>
+     * 车险应收数据导入
      *
+     * @param file
+     * @author lipf
+     * @date 2026/8/17 15:43
+     */
+    @Override
+    public ImportUpdateExcelResultVo importAccountsReceivableInvoice4CarRisk(MultipartFile file) {
+        String userName = baseController.getUserName();
+        log.info("用户[{}]导入私有车险应收文件",userName);
+
+        List<ExcelContent4PrivateSuperviseCar> excelContents = importIncomeService.parseImportExcel4PrivateCar(file);
+        if (CollUtil.isEmpty(excelContents)){
+            log.info("数据不能为空,导入失败");
+            throw new SystemException("数据不能为空,导入失败");
+        }
+        AssertionUtils.isEmpty(excelContents, "车险应收数据处理失败,导入失败");
+        List<ImportContentExt> datas = importIncomeService.fillExcelContent4Private(excelContents);
+
+
+        return null;
+    }
+
+    /**
+     * 导入应收开票数据
      * @param file Excel文件,包含应收开票数据,文件格式应符合InvoiceReceivableExportExcelVo的定义
      * @return ImportUpdateExcelResultVo 返回导入结果对象,包含:
      *         - successNumber: 成功导入的记录数(新增或更新)
@@ -2564,11 +2569,11 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
      *         - orderNos: 成功导入的订单号列表
      */
     @Override
-    public ImportUpdateExcelResultVo importAccountsReceivableInvoice(MultipartFile file) {
+    public ImportUpdateExcelResultVo importAccountsReceivableInvoice4NoCarRisk(MultipartFile file) {
         String userName = baseController.getUserName();
-        log.info("用户[{}]导入私有应设有文件",userName);
+        log.info("用户[{}]导入私有非车险应收文件",userName);
 
-        List<ExcelContent4PrivateSuperviseNoCar> excelContents = importIncomeService.parseImportExcel4Private(file);
+        List<ExcelContent4PrivateSuperviseNoCar> excelContents = importIncomeService.parseImportExcel4PrivateNoCar(file);
         if (CollUtil.isEmpty(excelContents)){
             throw new SystemException("数据不能为空,导入失败");
         }

+ 26 - 7
tenant/organization/src/main/java/com/jzg/organization/service/impl/importincome/ImportIncomeServiceImpl.java

@@ -9,10 +9,7 @@ import com.jzg.commons.constants.ProductsType;
 import com.jzg.commons.core.base.BaseController;
 import com.jzg.commons.core.page.HttpResult;
 import com.jzg.commons.entity.finance.po.InsPlyIncome;
-import com.jzg.commons.entity.finance.vo.importimcome.ExcelContent4PrivateSuperviseNoCar;
-import com.jzg.commons.entity.finance.vo.importimcome.ImportUpdateExcelResultVo;
-import com.jzg.commons.entity.finance.vo.importimcome.ExcelContent4Platform;
-import com.jzg.commons.entity.finance.vo.importimcome.ImportContentExt;
+import com.jzg.commons.entity.finance.vo.importimcome.*;
 import com.jzg.commons.entity.orders.po.InsOrdersPolicy;
 import com.jzg.commons.entity.quote.vo.orders.InsOrdersVo;
 import com.jzg.commons.entity.vo.AgreementVo;
@@ -20,7 +17,8 @@ import com.jzg.commons.entity.vo.InsFeeOrdersVo;
 import com.jzg.commons.util.idgen.IdGenerate;
 import com.jzg.organization.client.InsOrdersClient;
 import com.jzg.organization.excel.listener.InvoiceReceivbleExcel4PlatformListener;
-import com.jzg.organization.excel.listener.InvoiceReceivbleExcel4PrivateListener;
+import com.jzg.organization.excel.listener.InvoiceReceivbleExcel4PrivateListenerCar;
+import com.jzg.organization.excel.listener.InvoiceReceivbleExcel4PrivateListenerNoCar;
 import com.jzg.organization.mapper.InsOrdersPolicyMapper;
 import com.jzg.organization.mapper.InsPlyIncomeMapper;
 import com.jzg.organization.mapper.PtlAgreementMapper;
@@ -292,8 +290,8 @@ public class ImportIncomeServiceImpl implements ImportIncomeService {
      * @author lipf
      * @date 2026/8/4 9:07
      */
-    public List<ExcelContent4PrivateSuperviseNoCar> parseImportExcel4Private(MultipartFile file) {
-        InvoiceReceivbleExcel4PrivateListener listener = new InvoiceReceivbleExcel4PrivateListener();
+    public List<ExcelContent4PrivateSuperviseNoCar> parseImportExcel4PrivateNoCar(MultipartFile file) {
+        InvoiceReceivbleExcel4PrivateListenerNoCar listener = new InvoiceReceivbleExcel4PrivateListenerNoCar();
         try (InputStream inputStream = file.getInputStream()) {
             EasyExcel.read(inputStream, ExcelContent4PrivateSuperviseNoCar.class, listener)
                     .sheet()
@@ -304,4 +302,25 @@ public class ImportIncomeServiceImpl implements ImportIncomeService {
             return null;
         }
     }
+
+    /**
+     * 私有车险数据导入
+     *
+     * @param file
+     * @author lipf
+     * @date 2026/8/17 15:38
+     */
+    @Override
+    public List<ExcelContent4PrivateSuperviseCar> parseImportExcel4PrivateCar(MultipartFile file) {
+        InvoiceReceivbleExcel4PrivateListenerCar listener = new InvoiceReceivbleExcel4PrivateListenerCar();
+        try (InputStream inputStream = file.getInputStream()) {
+            EasyExcel.read(inputStream, ExcelContent4PrivateSuperviseCar.class, listener)
+                    .sheet()
+                    .doRead();
+            return listener.getDataList();
+        } catch (Exception e) {
+            log.error("parseImportExcel4PrivateCar读取文件异常",e);
+            return null;
+        }
+    }
 }

+ 10 - 5
tenant/organization/src/main/java/com/jzg/organization/service/importincome/ImportIncomeService.java

@@ -1,10 +1,7 @@
 package com.jzg.organization.service.importincome;
 
 import com.jzg.commons.entity.finance.po.InsPlyIncome;
-import com.jzg.commons.entity.finance.vo.importimcome.ExcelContent4PrivateSuperviseNoCar;
-import com.jzg.commons.entity.finance.vo.importimcome.ImportUpdateExcelResultVo;
-import com.jzg.commons.entity.finance.vo.importimcome.ExcelContent4Platform;
-import com.jzg.commons.entity.finance.vo.importimcome.ImportContentExt;
+import com.jzg.commons.entity.finance.vo.importimcome.*;
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 
@@ -60,7 +57,15 @@ public interface ImportIncomeService {
      * @author lipf
      * @date 2026/8/4 9:07
      */
-    public List<ExcelContent4PrivateSuperviseNoCar> parseImportExcel4Private(MultipartFile file);
+    public List<ExcelContent4PrivateSuperviseNoCar> parseImportExcel4PrivateNoCar(MultipartFile file);
+
+    /**
+     * 私有车险数据导入
+     *
+     * @author lipf
+     * @date 2026/8/17 15:38
+     */
+    public List<ExcelContent4PrivateSuperviseCar> parseImportExcel4PrivateCar(MultipartFile file);
 
     /**
      * 解析并读取Excel中的内容