From b20931da45368031ec19e37816b6879bdcba528e Mon Sep 17 00:00:00 2001
From: 龚焕茏 <2842157468@qq.com>
Date: 星期五, 26 七月 2024 17:51:51 +0800
Subject: [PATCH] feat:合同导入

---
 ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CalculateRule.java             |   15 +---
 ycl-server/src/main/java/com/ycl/platform/service/impl/CalculateRuleServiceImpl.java |   42 -------------
 ycl-server/src/main/java/com/ycl/platform/service/impl/TContractServiceImpl.java     |   53 ++++++-----------
 ycl-server/src/main/java/com/ycl/platform/service/ICalculateRuleService.java         |    9 ---
 ycl-server/src/main/java/com/ycl/handler/CustomCellWriteHandler.java                 |    6 +-
 5 files changed, 28 insertions(+), 97 deletions(-)

diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CalculateRule.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CalculateRule.java
index 22e3f62..2e2cb7e 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CalculateRule.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CalculateRule.java
@@ -7,12 +7,10 @@
 import com.alibaba.excel.enums.poi.VerticalAlignmentEnum;
 import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableName;
-import com.ycl.system.domain.TreeNode;
 import enumeration.converter.RuleDeductCategoryConverter;
 import enumeration.general.RuleDeductCategoryEnum;
 import lombok.Data;
 
-import java.io.Serial;
 import java.util.Date;
 
 /**
@@ -25,10 +23,12 @@
 @ExcelIgnoreUnannotated
 @ContentStyle(horizontalAlignment = HorizontalAlignmentEnum.CENTER, verticalAlignment = VerticalAlignmentEnum.CENTER)
 @TableName("t_calculate_rule")
-public class CalculateRule extends TreeNode {
+public class CalculateRule {
 
-    @Serial
-    private static final long serialVersionUID = 1L;
+    /**
+     * id
+     */
+    private Integer id;
 
     /**
      * 鍚堝悓id
@@ -40,11 +40,6 @@
      */
     @ExcelProperty("鑰冩牳鍐呭")
     private String ruleName;
-
-    /**
-     * 鍏宠仈涓婄骇id
-     */
-    private Long parentId;
 
     /**
      * 瑙勫垯鏉′欢
diff --git a/ycl-server/src/main/java/com/ycl/handler/CustomCellWriteHandler.java b/ycl-server/src/main/java/com/ycl/handler/CustomCellWriteHandler.java
index acb9559..41b9066 100644
--- a/ycl-server/src/main/java/com/ycl/handler/CustomCellWriteHandler.java
+++ b/ycl-server/src/main/java/com/ycl/handler/CustomCellWriteHandler.java
@@ -197,7 +197,7 @@
     private static List<CalculateRule> getExcelData() {
         ArrayList<CalculateRule> list = new ArrayList<>();
         CalculateRule calculateRule1 = new CalculateRule();
-        calculateRule1.setId(1L);
+        calculateRule1.setId(1);
         calculateRule1.setRuleName("瑙嗛骞冲潎鍦ㄧ嚎鐜�");
         calculateRule1.setRuleCondition("鈮�98%");
         calculateRule1.setMax(98D);
@@ -228,7 +228,7 @@
         calculateRule33.setCalcFraction(10.00);
         list.add(calculateRule33);
         CalculateRule calculateRule4 = new CalculateRule();
-        calculateRule4.setId(2L);
+        calculateRule4.setId(2);
         calculateRule4.setRuleName("鍓嶇鎰熺煡婧愭不鐞嗗伐浣�");
         calculateRule4.setRuleCondition("鏃堕挓鍚屾锛堣秴杩嚶�3绉掍负涓嶅悎鏍硷級");
         calculateRule4.setDeductCategory(RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY);
@@ -243,7 +243,7 @@
         calculateRule6.setRuleCondition("涓�鏈轰竴妗�");
         list.add(calculateRule6);
         CalculateRule calculateRule5 = new CalculateRule();
-        calculateRule5.setId(3L);
+        calculateRule5.setId(3);
         calculateRule5.setRuleName("鍚庡彴绯荤粺鐨勪繚闅�");
         calculateRule5.setRuleCondition("鍗曟鏁呴殰鏃堕暱鑻ヨ秴鍑�72灏忔椂涓嶈冻144灏忔椂鐨勶紝姣忚秴鍑�12灏忔椂锛堜笉瓒�12灏忔椂鎸�12灏忔椂璁★級");
         calculateRule5.setMax(144D);
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/ICalculateRuleService.java b/ycl-server/src/main/java/com/ycl/platform/service/ICalculateRuleService.java
index d0db182..22295fa 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/ICalculateRuleService.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/ICalculateRuleService.java
@@ -2,9 +2,7 @@
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ycl.platform.domain.entity.CalculateRule;
-import com.ycl.platform.domain.entity.TContract;
 import com.ycl.platform.domain.vo.CalculateRuleCascaderVO;
-import org.springframework.web.multipart.MultipartFile;
 
 import java.util.List;
 
@@ -62,13 +60,6 @@
      * @return 缁撴灉
      */
     public int deleteDefaultRuleById(Long id);
-
-    /**
-     * 璇诲彇Excel鏁版嵁
-     *
-     * @param file      鏂囦欢
-     */
-    List<CalculateRule> readExcel(MultipartFile file);
 
     /**
      * 鏍规嵁鍚堝悓id鏌ヨ瑙勫垯
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/CalculateRuleServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/CalculateRuleServiceImpl.java
index 0cadd77..34c406f 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/CalculateRuleServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/CalculateRuleServiceImpl.java
@@ -1,12 +1,8 @@
 package com.ycl.platform.service.impl;
 
-import com.alibaba.excel.EasyExcel;
-import com.alibaba.excel.context.AnalysisContext;
-import com.alibaba.excel.read.listener.ReadListener;
 import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ycl.platform.domain.entity.CalculateRule;
-import com.ycl.platform.domain.entity.TContract;
 import com.ycl.platform.domain.vo.CalculateRuleCascaderVO;
 import com.ycl.platform.mapper.CalculateRuleMapper;
 import com.ycl.platform.mapper.TContractMapper;
@@ -14,11 +10,8 @@
 import com.ycl.system.domain.TreeUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import org.springframework.web.multipart.MultipartFile;
 import utils.DateUtils;
 
-import java.io.IOException;
-import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -102,44 +95,11 @@
         return calculateRuleMapper.deleteDefaultRuleById(id);
     }
 
-    /**
-     * 鑾峰彇鍚堝悓Excel瑙勫垯
-     *
-     * @param file 鍚堝悓Excel鏂囦欢
-     * @return 瑙勫垯
-     */
-
-    @Override
-    public List<CalculateRule> readExcel(MultipartFile file) {
-        List<CalculateRule> calculateRuleList = new ArrayList<>();
-        try {
-            EasyExcel.read(file.getInputStream(), CalculateRule.class, new ReadListener<CalculateRule>() {
-                        @Override
-                        public void invoke(CalculateRule calculateRule, AnalysisContext analysisContext) {
-                            calculateRule.setId(null);
-                            calculateRuleList.add(calculateRule);
-                        }
-
-                        @Override
-                        public void doAfterAllAnalysed(AnalysisContext analysisContext) {
-                        }
-
-                    })
-                    .head(CalculateRule.class)
-                    .sheet()
-                    .doRead();
-        } catch (IOException e) {
-            throw new RuntimeException(e);
-        }
-        return calculateRuleList;
-    }
-
     @Override
     public List<CalculateRule> getRuleListByContractId(Integer contractId) {
-        List<CalculateRule> list = new LambdaQueryChainWrapper<>(calculateRuleMapper)
+        return new LambdaQueryChainWrapper<>(calculateRuleMapper)
                 .eq(CalculateRule::getContractId, contractId)
                 .list();
-        return TreeUtils.build(list, 0L);
     }
 
     @Override
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/TContractServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/TContractServiceImpl.java
index ba2cb87..346b141 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/TContractServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/TContractServiceImpl.java
@@ -1,6 +1,7 @@
 package com.ycl.platform.service.impl;
 
 import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.read.listener.PageReadListener;
 import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
 import com.alibaba.fastjson2.JSON;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -26,6 +27,7 @@
 import enumeration.general.RuleDeductCategoryEnum;
 import jakarta.servlet.http.HttpServletResponse;
 import lombok.AllArgsConstructor;
+import lombok.SneakyThrows;
 import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -78,7 +80,7 @@
     private List<CalculateRule> getExcelData() {
         ArrayList<CalculateRule> list = new ArrayList<>();
         CalculateRule calculateRule1 = new CalculateRule();
-        calculateRule1.setId(1L);
+        calculateRule1.setId(1);
         calculateRule1.setRuleName("瑙嗛骞冲潎鍦ㄧ嚎鐜�");
         calculateRule1.setRuleCondition("鈮�98%");
         calculateRule1.setMax(98D);
@@ -109,7 +111,7 @@
         calculateRule33.setCalcFraction(10.00);
         list.add(calculateRule33);
         CalculateRule calculateRule4 = new CalculateRule();
-        calculateRule4.setId(2L);
+        calculateRule4.setId(2);
         calculateRule4.setRuleName("鍓嶇鎰熺煡婧愭不鐞嗗伐浣�");
         calculateRule4.setRuleCondition("鏃堕挓鍚屾锛堣秴杩嚶�3绉掍负涓嶅悎鏍硷級");
         calculateRule4.setDeductCategory(RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY);
@@ -118,13 +120,17 @@
         CalculateRule calculateRule7 = new CalculateRule();
         calculateRule7.setRuleName("鍓嶇鎰熺煡婧愭不鐞嗗伐浣�");
         calculateRule7.setRuleCondition("OSD鏍囪瘑");
+        calculateRule7.setDeductCategory(RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY);
+        calculateRule7.setCalcFraction(0.1);
         list.add(calculateRule7);
         CalculateRule calculateRule6 = new CalculateRule();
         calculateRule6.setRuleName("鍓嶇鎰熺煡婧愭不鐞嗗伐浣�");
         calculateRule6.setRuleCondition("涓�鏈轰竴妗�");
+        calculateRule6.setDeductCategory(RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY);
+        calculateRule6.setCalcFraction(0.1);
         list.add(calculateRule6);
         CalculateRule calculateRule5 = new CalculateRule();
-        calculateRule5.setId(3L);
+        calculateRule5.setId(3);
         calculateRule5.setRuleName("鍚庡彴绯荤粺鐨勪繚闅�");
         calculateRule5.setRuleCondition("鍗曟鏁呴殰鏃堕暱鑻ヨ秴鍑�72灏忔椂涓嶈冻144灏忔椂鐨勶紝姣忚秴鍑�12灏忔椂锛堜笉瓒�12灏忔椂鎸�12灏忔椂璁★級");
         calculateRule5.setMax(144D);
@@ -138,17 +144,18 @@
 
     @Override
     @Transactional
+    @SneakyThrows
     public AjaxResult importData(MultipartFile file, TContract tContract) {
         // 淇濆瓨鍚堝悓
         tContract.setCreateTime(DateUtils.getNowDate());
         save(tContract);
-        List<CalculateRule> list = calculateRuleService.readExcel(file);
+
+        // 鑾峰彇鍚堝悓Excel瑙勫垯
+        List<CalculateRule> list = new ArrayList<>();
+        EasyExcel.read(file.getInputStream(), CalculateRule.class, new PageReadListener<CalculateRule>(list::addAll)).sheet().doRead();
 
         // 閬嶅巻鐖跺瓙鍏崇郴
         List<CalculateRule> calculateRulesToSave = new ArrayList<>();
-        CalculateRule fu1 = new CalculateRule();
-        CalculateRule fu2 = new CalculateRule();
-        boolean fuNew = true;
         for (CalculateRule calculateRule : list) {
             // 鍒ゆ柇鏁版嵁瀹屾暣鎬�
             if (ObjectUtils.isEmpty(calculateRule.getDeductCategory())) {
@@ -163,35 +170,13 @@
                 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                 return AjaxResult.warn("璇峰~鍐�" + calculateRule.getRuleName() + calculateRule.getRuleCondition() + "鎵e垎鏁板��");
             }
-            // 淇濆瓨鐖惰鍒欒幏鍙栫埗id
+            // 淇濆瓨瑙勫垯
             if (StringUtils.isNotBlank(calculateRule.getRuleName())) {
-                CalculateRule one = new CalculateRule();
-                one.setParentId(0L);
-                one.setContractId(tContract.getId().intValue());
-                one.setRuleName(calculateRule.getRuleName());
-                one.setCreateTime(DateUtils.getNowDate());
-                one.setDeleted(0);
-                calculateRuleService.save(one);
-                fu1 = one;
-                fuNew = true;
+                calculateRule.setContractId(tContract.getId().intValue());
+                calculateRule.setCreateTime(DateUtils.getNowDate());
+                calculateRule.setUpdateTime(DateUtils.getNowDate());
+                calculateRulesToSave.add(calculateRule);
             }
-            // 淇濆瓨绗簩灞傜埗瑙勫垯鑾峰彇绗簩灞傜埗id
-            // if (StringUtils.isNotBlank(calculateRule.getRuleDesc())) {
-            //     CalculateRule two = new CalculateRule();
-            //     two.setContractId(tContract.getId().intValue());
-            //     two.setParentId(fu1.getId());
-            //     two.setRuleDesc(calculateRule.getRuleDesc());
-            //     two.setCreateTime(DateUtils.getNowDate());
-            //     two.setDeleted(0);
-            //     calculateRuleService.save(two);
-            //     fu2 = two;
-            //     fuNew = false;
-            // }
-            calculateRule.setContractId(tContract.getId().intValue());
-            calculateRule.setCreateTime(DateUtils.getNowDate());
-            calculateRule.setDeleted(0);
-            calculateRule.setParentId(fuNew ? fu1.getId() : fu2.getId());
-            calculateRulesToSave.add(calculateRule);
         }
         // 鎵归噺淇濆瓨瑙勫垯
         calculateRuleService.saveBatch(calculateRulesToSave);

--
Gitblit v1.8.0