From 4da3b0321291a1ad8a1341f8f843a41d4b516903 Mon Sep 17 00:00:00 2001
From: 龚焕茏 <2842157468@qq.com>
Date: 星期三, 24 四月 2024 18:09:11 +0800
Subject: [PATCH] 合同规则分三层、合同积分新增

---
 ycl-server/src/main/java/com/ycl/platform/mapper/CalculateRuleMapper.java            |    8 ++
 ycl-server/src/main/java/com/ycl/platform/service/impl/CalculateRuleServiceImpl.java |   13 +++-
 ycl-server/src/main/java/com/ycl/platform/service/impl/TContractServiceImpl.java     |   34 ++++++++---
 ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CalculateRuleCascaderVO.java       |   36 ++++++++++++
 ycl-server/src/main/java/com/ycl/platform/service/ICalculateRuleService.java         |    8 ++
 ycl-server/src/main/java/com/ycl/platform/controller/CalculateRuleController.java    |   10 +++
 ycl-server/src/main/resources/mapper/zgyw/CalculateRuleMapper.xml                    |   14 ++++
 7 files changed, 110 insertions(+), 13 deletions(-)

diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CalculateRuleCascaderVO.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CalculateRuleCascaderVO.java
new file mode 100644
index 0000000..eecdbc8
--- /dev/null
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CalculateRuleCascaderVO.java
@@ -0,0 +1,36 @@
+package com.ycl.platform.domain.vo;
+
+import com.ycl.system.domain.TreeNode;
+import enumeration.general.RuleDeductCategoryEnum;
+import lombok.Data;
+
+/**
+ * 鍒嗘暟鏍哥畻瑙勫垯瀵硅薄 t_default_rule
+ *
+ * @author ruoyi
+ * @date 2024-04-01
+ */
+@Data
+public class CalculateRuleCascaderVO extends TreeNode {
+    private static final long serialVersionUID = 1L;
+
+    private Long value;
+
+    private String label;
+
+    /**
+     * 鎵e垎鏂瑰紡
+     */
+    private RuleDeductCategoryEnum deductCategory;
+
+    /**
+     * 鎵i櫎鍒嗘暟
+     */
+    private Double calcFraction;
+
+    /**
+     * 褰撴柟寮忎负闄や互鏃讹紝闄や互褰撳墠瀛楁鏁伴噺
+     */
+    private Integer calcUnit;
+
+}
diff --git a/ycl-server/src/main/java/com/ycl/platform/controller/CalculateRuleController.java b/ycl-server/src/main/java/com/ycl/platform/controller/CalculateRuleController.java
index e4218cd..30d5dc4 100644
--- a/ycl-server/src/main/java/com/ycl/platform/controller/CalculateRuleController.java
+++ b/ycl-server/src/main/java/com/ycl/platform/controller/CalculateRuleController.java
@@ -49,6 +49,16 @@
     }
 
     /**
+     * 鏍规嵁杩愮淮鍗曚綅鏌ヨ杩濈害瑙勫垯鍒楄〃
+     */
+    @PreAuthorize("@ss.hasPermi('system:rule:query')")
+    @GetMapping("/getRuleListByUnitId")
+    public AjaxResult getRuleListByUnitId(Integer unitId)
+    {
+        return success(defaultRuleService.getRuleListByUnitId(unitId));
+    }
+
+    /**
      * 瀵煎嚭杩濈害瑙勫垯鍒楄〃
      */
     @PreAuthorize("@ss.hasPermi('system:rule:export')")
diff --git a/ycl-server/src/main/java/com/ycl/platform/mapper/CalculateRuleMapper.java b/ycl-server/src/main/java/com/ycl/platform/mapper/CalculateRuleMapper.java
index c0aa17e..4b3fa26 100644
--- a/ycl-server/src/main/java/com/ycl/platform/mapper/CalculateRuleMapper.java
+++ b/ycl-server/src/main/java/com/ycl/platform/mapper/CalculateRuleMapper.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ycl.platform.domain.entity.CalculateRule;
+import com.ycl.platform.domain.vo.CalculateRuleCascaderVO;
 
 import java.util.List;
 
@@ -60,4 +61,11 @@
      * @return 缁撴灉
      */
     public int deleteDefaultRuleByIds(Long[] ids);
+
+    /**
+     * 鑾峰彇杩濈害瑙勫垯鍒楄〃-鐢ㄤ簬Cascader涓嬫媺
+     * @param unitId 杩愮淮鍗曚綅
+     * @return 鏁版嵁
+     */
+    List<CalculateRuleCascaderVO> getRuleListByUnitId(Integer unitId);
 }
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 2be0456..d0db182 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
@@ -3,6 +3,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;
@@ -75,4 +76,11 @@
      * @return 鍚堝悓瑙勫垯
      */
     List<CalculateRule> getRuleListByContractId(Integer contractId);
+
+    /**
+     * 鏍规嵁鍗曚綅id鏌ヨ瑙勫垯
+     * @param unitId 杩愮淮鍗曚綅
+     * @return 瑙勫垯
+     */
+    List<CalculateRuleCascaderVO> getRuleListByUnitId(Integer unitId);
 }
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 39896a1..0283e71 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
@@ -2,17 +2,15 @@
 
 import com.alibaba.excel.EasyExcel;
 import com.alibaba.excel.context.AnalysisContext;
-import com.alibaba.excel.enums.CellExtraTypeEnum;
-import com.alibaba.excel.metadata.CellExtra;
 import com.alibaba.excel.read.listener.ReadListener;
-import com.alibaba.fastjson2.JSON;
 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;
 import com.ycl.platform.service.ICalculateRuleService;
-import com.ycl.system.domain.TreeNode;
 import com.ycl.system.domain.TreeUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -33,6 +31,8 @@
 public class CalculateRuleServiceImpl extends ServiceImpl<CalculateRuleMapper, CalculateRule> implements ICalculateRuleService {
     @Autowired
     private CalculateRuleMapper calculateRuleMapper;
+    @Autowired
+    private TContractMapper contractMapper;
 
     /**
      * 鏌ヨ杩濈害瑙勫垯
@@ -141,4 +141,9 @@
                 .list();
         return TreeUtils.build(list, 0L);
     }
+
+    @Override
+    public List<CalculateRuleCascaderVO> getRuleListByUnitId(Integer unitId) {
+        return TreeUtils.build(calculateRuleMapper.getRuleListByUnitId(unitId), 0L);
+    }
 }
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 c3e1b55..9ea9b05 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
@@ -135,7 +135,9 @@
 
         // 閬嶅巻鐖跺瓙鍏崇郴
         List<CalculateRule> calculateRulesToSave = new ArrayList<>();
-        CalculateRule temp = new CalculateRule();
+        CalculateRule fu1 = new CalculateRule();
+        CalculateRule fu2 = new CalculateRule();
+        boolean fuNew = true;
         for (CalculateRule calculateRule : list) {
             // 鍒ゆ柇鏁版嵁瀹屾暣鎬�
             if (ObjectUtils.isEmpty(calculateRule.getDeductCategory())) {
@@ -152,18 +154,32 @@
             }
             // 淇濆瓨鐖惰鍒欒幏鍙栫埗id
             if (StringUtils.isNotBlank(calculateRule.getRuleName())) {
-                CalculateRule fu = new CalculateRule();
-                fu.setContractId(tContract.getId().intValue());
-                fu.setRuleName(calculateRule.getRuleName());
-                fu.setCreateTime(DateUtils.getNowDate());
-                fu.setDeleted(0);
-                calculateRuleService.save(fu);
-                temp = fu;
+                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;
+            }
+            // 淇濆瓨绗簩灞傜埗瑙勫垯鑾峰彇绗簩灞傜埗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(temp.getId());
+            calculateRule.setParentId(fuNew ? fu1.getId() : fu2.getId());
             calculateRulesToSave.add(calculateRule);
         }
         // 鎵归噺淇濆瓨瑙勫垯
diff --git a/ycl-server/src/main/resources/mapper/zgyw/CalculateRuleMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/CalculateRuleMapper.xml
index ec90956..f22190c 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/CalculateRuleMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/CalculateRuleMapper.xml
@@ -35,6 +35,20 @@
         where id = #{id}
     </select>
 
+    <select id="getRuleListByUnitId" resultType="com.ycl.platform.domain.vo.CalculateRuleCascaderVO">
+        select id,
+               deduct_category,
+               calc_fraction,
+               calc_unit,
+               id as value,
+               if(rule_condition is not null, rule_condition, if(rule_desc is not null, rule_desc, rule_name)) as label,
+               parent_id
+        from t_calculate_rule
+        where deleted = 0
+          and contract_id
+            in (select id from t_contract where unit_id = #{unitId})
+    </select>
+
     <insert id="insertDefaultRule" useGeneratedKeys="true" keyProperty="id">
         insert into t_calculate_rule
         <trim prefix="(" suffix=")" suffixOverrides=",">

--
Gitblit v1.8.0