From eb806b5ec0bb72536e78c1a7fcffb94bcd24cbbe Mon Sep 17 00:00:00 2001
From: 龚焕茏 <2842157468@qq.com>
Date: 星期五, 26 四月 2024 18:24:27 +0800
Subject: [PATCH] 考核结果应用规则(算钱)新增、展示

---
 ycl-server/src/main/java/com/ycl/platform/service/impl/TContractServiceImpl.java          |   14 +++
 ycl-server/src/main/java/com/ycl/platform/service/CalculateMoneyRuleService.java          |    7 +
 ycl-server/src/main/java/com/ycl/platform/service/ITContractService.java                  |    8 ++
 ycl-server/src/main/java/com/ycl/platform/controller/TContractController.java             |   11 ++
 ycl-server/src/main/java/com/ycl/platform/service/impl/ContractScoreServiceImpl.java      |   86 +++++++--------------
 ycl-server/src/main/java/com/ycl/platform/service/IContractScoreService.java              |   49 +++--------
 ycl-server/src/main/java/com/ycl/platform/controller/ContractScoreController.java         |   19 ----
 ycl-pojo/src/main/java/com/ycl/platform/domain/entity/TContract.java                      |   24 ++++++
 ycl-server/src/main/java/com/ycl/platform/service/impl/CalculateMoneyRuleServiceImpl.java |    7 +
 9 files changed, 114 insertions(+), 111 deletions(-)

diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/TContract.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/TContract.java
index e4c77d9..61dc0e0 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/TContract.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/TContract.java
@@ -9,9 +9,22 @@
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.core.JsonParser;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.DeserializationContext;
+import com.fasterxml.jackson.databind.JsonDeserializer;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
 import lombok.Data;
+import org.springframework.web.multipart.MultipartFile;
 
+import java.io.IOException;
+import java.util.Arrays;
 import java.util.Date;
+import java.util.List;
 
 /**
  * 杩愮淮鍚堝悓瀵硅薄 t_contract
@@ -35,6 +48,7 @@
     /**
      * 鍗曚綅id
      */
+    @NotBlank
     private Integer unitId;
 
     @TableField(exist = false)
@@ -43,18 +57,21 @@
     /**
      * 鍚堝悓鍚嶇О
      */
+    @NotBlank
     private String name;
 
     /**
      * 寮�濮嬫椂闂�
      */
     @JsonFormat(pattern = "yyyy-MM-dd hh-mm-ss")
+    @NotNull
     private Date startTime;
 
     /**
      * 缁撴潫鏃堕棿
      */
     @JsonFormat(pattern = "yyyy-MM-dd hh-mm-ss")
+    @NotNull
     private Date endTime;
 
     /**
@@ -69,4 +86,11 @@
     @TableLogic
     private String deleted;
 
+    @TableField(exist = false)
+    @NotBlank
+    private String ruleList;
+    @TableField(exist = false)
+    @NotNull
+    private MultipartFile file;
+
 }
diff --git a/ycl-server/src/main/java/com/ycl/platform/controller/ContractScoreController.java b/ycl-server/src/main/java/com/ycl/platform/controller/ContractScoreController.java
index b9a4395..298cf96 100644
--- a/ycl-server/src/main/java/com/ycl/platform/controller/ContractScoreController.java
+++ b/ycl-server/src/main/java/com/ycl/platform/controller/ContractScoreController.java
@@ -6,10 +6,8 @@
 import com.ycl.system.AjaxResult;
 import com.ycl.system.controller.BaseController;
 import com.ycl.system.page.TableDataInfo;
-import com.ycl.utils.DateUtils;
 import com.ycl.utils.poi.ExcelUtil;
 import enumeration.BusinessType;
-import enumeration.general.AuditingStatus;
 import jakarta.servlet.http.HttpServletResponse;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -17,7 +15,6 @@
 
 import java.util.Arrays;
 import java.util.List;
-import java.util.stream.Collectors;
 
 /**
  * 鍚堝悓鎵撳垎Controller
@@ -59,9 +56,7 @@
     @PreAuthorize("@ss.hasPermi('platform:score:query')")
     @GetMapping(value = "/{id}")
     public AjaxResult getInfo(@PathVariable("id") Long id) {
-        ContractScore contractScore = defaultScoreService.getById(id);
-        contractScore.setRuleIdsArray(Arrays.stream(contractScore.getRuleIds().split(",")).map(Long::parseLong).toArray(Long[]::new));
-        return success(contractScore);
+        return success(defaultScoreService.getById(id));
     }
 
     /**
@@ -71,11 +66,6 @@
     @Log(title = "鍚堝悓鎵撳垎", businessType = BusinessType.INSERT)
     @PostMapping
     public AjaxResult add(@RequestBody ContractScore contractScore) {
-        contractScore.setCreateUserId(getUserId());
-        contractScore.setCreateUser(getUsername());
-        contractScore.setAuditingStatus(AuditingStatus.WAIT);
-        contractScore.setDeleted("0");
-        contractScore.setRuleIds(Arrays.stream(contractScore.getRuleIdsArray()).map(String::valueOf).collect(Collectors.joining(",")));
         return toAjax(defaultScoreService.save(contractScore));
     }
 
@@ -86,7 +76,6 @@
     @Log(title = "鍚堝悓鎵撳垎", businessType = BusinessType.UPDATE)
     @PutMapping
     public AjaxResult edit(@RequestBody ContractScore contractScore) {
-        contractScore.setRuleIds(Arrays.stream(contractScore.getRuleIdsArray()).map(String::valueOf).collect(Collectors.joining(",")));
         return toAjax(defaultScoreService.updateById(contractScore));
     }
 
@@ -97,11 +86,7 @@
     @Log(title = "鍚堝悓鎵撳垎瀹℃牳", businessType = BusinessType.UPDATE)
     @PostMapping("/auditing")
     public AjaxResult audit(@RequestBody ContractScore contractScore) {
-        contractScore.setRuleIds(Arrays.stream(contractScore.getRuleIdsArray()).map(String::valueOf).collect(Collectors.joining(",")));
-        contractScore.setAuditingTime(DateUtils.getNowDate());
-        contractScore.setAuditingUser(getUsername());
-        contractScore.setAuditingUserId(getUserId());
-        return toAjax(defaultScoreService.updateById(contractScore));
+        return toAjax(defaultScoreService.audit(contractScore));
     }
 
     /**
diff --git a/ycl-server/src/main/java/com/ycl/platform/controller/TContractController.java b/ycl-server/src/main/java/com/ycl/platform/controller/TContractController.java
index a4f51da..3ad75a8 100644
--- a/ycl-server/src/main/java/com/ycl/platform/controller/TContractController.java
+++ b/ycl-server/src/main/java/com/ycl/platform/controller/TContractController.java
@@ -2,6 +2,7 @@
 
 import annotation.Log;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ycl.platform.domain.entity.CalculateMoneyRule;
 import com.ycl.platform.domain.entity.TContract;
 import com.ycl.platform.domain.entity.TMonitor;
 import com.ycl.platform.domain.query.YwUnitQuery;
@@ -40,6 +41,12 @@
         return tContractService.selectAll();
     }
 
+    @PreAuthorize("@ss.hasPermi('system:contract:query')")
+    @GetMapping("/selectMoneyRules")
+    public AjaxResult selectMoneyRules(Integer contractId) {
+        return success(tContractService.selectMoneyRules(contractId));
+    }
+
     /**
      * 鍚堝悓瀵煎叆妯℃澘
      */
@@ -58,8 +65,8 @@
     @Log(title = "鍚堝悓瀵煎叆", businessType = BusinessType.IMPORT)
     @PreAuthorize("@ss.hasPermi('system:user:import')")
     @PostMapping("/importData")
-    public AjaxResult importData(MultipartFile file, TContract tContract) {
-        return tContractService.importData(file, tContract);
+    public AjaxResult importData(TContract tContract) {
+        return tContractService.importData(tContract.getFile(), tContract);
     }
 
     /**
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/CalculateMoneyRuleService.java b/ycl-server/src/main/java/com/ycl/platform/service/CalculateMoneyRuleService.java
index d67e2f2..14287b2 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/CalculateMoneyRuleService.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/CalculateMoneyRuleService.java
@@ -62,4 +62,11 @@
      * @return
      */
     Result all();
+
+    /**
+     * 鏍规嵁鍚堝悓id鏌ヨ
+     * @param contractId 鍚堝悓id
+     * @return 鏁版嵁
+     */
+    List<CalculateMoneyRule> selectMoneyRules(Integer contractId);
 }
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/IContractScoreService.java b/ycl-server/src/main/java/com/ycl/platform/service/IContractScoreService.java
index 8ca27c1..123ad3b 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/IContractScoreService.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/IContractScoreService.java
@@ -3,6 +3,7 @@
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ycl.platform.domain.entity.ContractScore;
 
+import java.io.Serializable;
 import java.util.List;
 
 /**
@@ -11,15 +12,7 @@
  * @author ruoyi
  * @date 2024-04-01
  */
-public interface IContractScoreService extends IService<ContractScore>
-{
-    /**
-     * 鏌ヨ鍚堝悓鎵撳垎
-     *
-     * @param id 鍚堝悓鎵撳垎涓婚敭
-     * @return 鍚堝悓鎵撳垎
-     */
-    public ContractScore selectDefaultScoreById(Long id);
+public interface IContractScoreService extends IService<ContractScore> {
 
     /**
      * 鏌ヨ鍚堝悓鎵撳垎鍒楄〃
@@ -29,35 +22,21 @@
      */
     public List<ContractScore> selectDefaultScoreList(ContractScore contractScore);
 
-    /**
-     * 鏂板鍚堝悓鎵撳垎
-     *
-     * @param contractScore 鍚堝悓鎵撳垎
-     * @return 缁撴灉
-     */
-    public int insertDefaultScore(ContractScore contractScore);
+
+    @Override
+    ContractScore getById(Serializable id);
+
+    @Override
+    boolean save(ContractScore contractScore);
+
+    @Override
+    boolean updateById(ContractScore contractScore);
 
     /**
-     * 淇敼鍚堝悓鎵撳垎
+     * 瀹℃牳
      *
-     * @param contractScore 鍚堝悓鎵撳垎
+     * @param contractScore 鏁版嵁
      * @return 缁撴灉
      */
-    public int updateDefaultScore(ContractScore contractScore);
-
-    /**
-     * 鎵归噺鍒犻櫎鍚堝悓鎵撳垎
-     *
-     * @param ids 闇�瑕佸垹闄ょ殑鍚堝悓鎵撳垎涓婚敭闆嗗悎
-     * @return 缁撴灉
-     */
-    public int deleteDefaultScoreByIds(Long[] ids);
-
-    /**
-     * 鍒犻櫎鍚堝悓鎵撳垎淇℃伅
-     *
-     * @param id 鍚堝悓鎵撳垎涓婚敭
-     * @return 缁撴灉
-     */
-    public int deleteDefaultScoreById(Long id);
+    boolean audit(ContractScore contractScore);
 }
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/ITContractService.java b/ycl-server/src/main/java/com/ycl/platform/service/ITContractService.java
index 338ad78..d101b61 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/ITContractService.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/ITContractService.java
@@ -1,6 +1,7 @@
 package com.ycl.platform.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.ycl.platform.domain.entity.CalculateMoneyRule;
 import com.ycl.platform.domain.entity.TContract;
 import com.ycl.system.AjaxResult;
 import jakarta.servlet.http.HttpServletResponse;
@@ -31,4 +32,11 @@
     AjaxResult importData(MultipartFile file, TContract tContract);
 
     List<TContract> selectAll();
+
+    /**
+     * 鏍规嵁鍚堝悓id鏌ヨ閽辨牳绠楄鍒�
+     * @param contractId 鍚堝悓id
+     * @return 瑙勫垯
+     */
+    List<CalculateMoneyRule> selectMoneyRules(Integer contractId);
 }
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/CalculateMoneyRuleServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/CalculateMoneyRuleServiceImpl.java
index df1a3a5..3c36e50 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/CalculateMoneyRuleServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/CalculateMoneyRuleServiceImpl.java
@@ -142,4 +142,11 @@
                 .collect(Collectors.toList());
         return Result.ok().data(vos);
     }
+
+    @Override
+    public List<CalculateMoneyRule> selectMoneyRules(Integer contractId) {
+        return new LambdaQueryChainWrapper<>(baseMapper)
+                .eq(CalculateMoneyRule::getContractId, contractId)
+                .list();
+    }
 }
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/ContractScoreServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/ContractScoreServiceImpl.java
index 441b357..c979ea1 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/ContractScoreServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/ContractScoreServiceImpl.java
@@ -9,15 +9,17 @@
 import com.ycl.platform.mapper.TContractMapper;
 import com.ycl.platform.mapper.YwUnitMapper;
 import com.ycl.platform.service.IContractScoreService;
+import com.ycl.system.entity.SysUser;
+import com.ycl.utils.SecurityUtils;
+import enumeration.general.AuditingStatus;
 import org.apache.commons.lang3.ObjectUtils;
-import org.aspectj.weaver.ast.Var;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import utils.DateUtils;
 
-import java.util.ArrayList;
+import java.io.Serializable;
 import java.util.Arrays;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 鍚堝悓鎵撳垎Service涓氬姟灞傚鐞�
@@ -26,8 +28,7 @@
  * @date 2024-04-01
  */
 @Service
-public class ContractScoreServiceImpl extends ServiceImpl<ContractScoreMapper, ContractScore> implements IContractScoreService
-{
+public class ContractScoreServiceImpl extends ServiceImpl<ContractScoreMapper, ContractScore> implements IContractScoreService {
     @Autowired
     private ContractScoreMapper contractScoreMapper;
     @Autowired
@@ -38,26 +39,13 @@
     private CalculateRuleMapper calculateRuleMapper;
 
     /**
-     * 鏌ヨ鍚堝悓鎵撳垎
-     *
-     * @param id 鍚堝悓鎵撳垎涓婚敭
-     * @return 鍚堝悓鎵撳垎
-     */
-    @Override
-    public ContractScore selectDefaultScoreById(Long id)
-    {
-        return contractScoreMapper.selectDefaultScoreById(id);
-    }
-
-    /**
      * 鏌ヨ鍚堝悓鎵撳垎鍒楄〃
      *
      * @param contractScore 鍚堝悓鎵撳垎
      * @return 鍚堝悓鎵撳垎
      */
     @Override
-    public List<ContractScore> selectDefaultScoreList(ContractScore contractScore)
-    {
+    public List<ContractScore> selectDefaultScoreList(ContractScore contractScore) {
         return new LambdaQueryChainWrapper<>(contractScoreMapper)
                 .eq(ObjectUtils.isNotEmpty(contractScore.getUnitId()), ContractScore::getUnitId, contractScore.getUnitId())
                 .between(ObjectUtils.isNotEmpty(contractScore.getCreateStartTime()), ContractScore::getCreateTime, contractScore.getCreateStartTime(), contractScore.getCreateEndTime())
@@ -76,53 +64,37 @@
                 ).toList();
     }
 
-    /**
-     * 鏂板鍚堝悓鎵撳垎
-     *
-     * @param contractScore 鍚堝悓鎵撳垎
-     * @return 缁撴灉
-     */
     @Override
-    public int insertDefaultScore(ContractScore contractScore)
-    {
-        contractScore.setCreateTime(DateUtils.getNowDate());
-        return contractScoreMapper.insertDefaultScore(contractScore);
+    public ContractScore getById(Serializable id) {
+        ContractScore contractScore = super.getById(id);
+        contractScore.setRuleIdsArray(Arrays.stream(contractScore.getRuleIds().split(",")).map(Long::parseLong).toArray(Long[]::new));
+        return contractScore;
     }
 
-    /**
-     * 淇敼鍚堝悓鎵撳垎
-     *
-     * @param contractScore 鍚堝悓鎵撳垎
-     * @return 缁撴灉
-     */
     @Override
-    public int updateDefaultScore(ContractScore contractScore)
-    {
-        contractScore.setUpdateTime(DateUtils.getNowDate());
-        return contractScoreMapper.updateDefaultScore(contractScore);
+    public boolean save(ContractScore contractScore) {
+        SysUser user = SecurityUtils.getLoginUser().getUser();
+        contractScore.setCreateUserId(user.getUserId());
+        contractScore.setCreateUser(user.getNickName());
+        contractScore.setAuditingStatus(AuditingStatus.WAIT);
+        contractScore.setDeleted("0");
+        contractScore.setRuleIds(Arrays.stream(contractScore.getRuleIdsArray()).map(String::valueOf).collect(Collectors.joining(",")));
+        return super.save(contractScore);
     }
 
-    /**
-     * 鎵归噺鍒犻櫎鍚堝悓鎵撳垎
-     *
-     * @param ids 闇�瑕佸垹闄ょ殑鍚堝悓鎵撳垎涓婚敭
-     * @return 缁撴灉
-     */
     @Override
-    public int deleteDefaultScoreByIds(Long[] ids)
-    {
-        return contractScoreMapper.deleteDefaultScoreByIds(ids);
+    public boolean updateById(ContractScore contractScore) {
+        contractScore.setRuleIds(Arrays.stream(contractScore.getRuleIdsArray()).map(String::valueOf).collect(Collectors.joining(",")));
+        return super.updateById(contractScore);
     }
 
-    /**
-     * 鍒犻櫎鍚堝悓鎵撳垎淇℃伅
-     *
-     * @param id 鍚堝悓鎵撳垎涓婚敭
-     * @return 缁撴灉
-     */
     @Override
-    public int deleteDefaultScoreById(Long id)
-    {
-        return contractScoreMapper.deleteDefaultScoreById(id);
+    public boolean audit(ContractScore contractScore) {
+        SysUser user = SecurityUtils.getLoginUser().getUser();
+        contractScore.setRuleIds(Arrays.stream(contractScore.getRuleIdsArray()).map(String::valueOf).collect(Collectors.joining(",")));
+        contractScore.setAuditingTime(com.ycl.utils.DateUtils.getNowDate());
+        contractScore.setAuditingUser(user.getNickName());
+        contractScore.setAuditingUserId(user.getUserId());
+        return super.updateById(contractScore);
     }
 }
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 9ea9b05..eeb6d56 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
@@ -3,10 +3,13 @@
 import com.alibaba.excel.EasyExcel;
 import com.alibaba.excel.write.merge.LoopMergeStrategy;
 import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
+import com.alibaba.fastjson2.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ycl.handler.CommentWriteHandler;
 import com.ycl.handler.CustomSheetWriteHandler;
+import com.ycl.platform.domain.entity.CalculateMoneyRule;
 import com.ycl.platform.domain.entity.CalculateRule;
 import com.ycl.platform.domain.entity.TContract;
 import com.ycl.platform.mapper.TContractMapper;
@@ -30,6 +33,7 @@
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 銆愯濉啓鍔熻兘鍚嶇О銆慡ervice涓氬姟灞傚鐞�
@@ -42,6 +46,7 @@
 public class TContractServiceImpl extends ServiceImpl<TContractMapper, TContract> implements ITContractService {
 
     private final ICalculateRuleService calculateRuleService;
+    private final CalculateMoneyRuleServiceImpl calculateMoneyRuleService;
     private final YwUnitServiceImpl ywUnitService;
 
     @Override
@@ -184,6 +189,10 @@
         }
         // 鎵归噺淇濆瓨瑙勫垯
         calculateRuleService.saveBatch(calculateRulesToSave);
+        //鎵归噺淇濆瓨鑰冩牳缁撴灉搴旂敤瑙勫垯
+        calculateMoneyRuleService.saveBatch(JSON.parseArray(tContract.getRuleList(), CalculateMoneyRule.class).stream().peek(
+                calculateMoneyRule -> calculateMoneyRule.setContractId(tContract.getId().intValue())
+        ).collect(Collectors.toList()));
         return AjaxResult.success("鎿嶄綔鎴愬姛");
     }
 
@@ -195,4 +204,9 @@
                         tContract -> tContract.setUnitName(ywUnitService.getById(tContract.getUnitId()).getUnitName())
                 ).toList();
     }
+
+    @Override
+    public List<CalculateMoneyRule> selectMoneyRules(Integer contractId) {
+        return calculateMoneyRuleService.selectMoneyRules(contractId);
+    }
 }

--
Gitblit v1.8.0