龚焕茏
2024-04-25 5777b0803509008e638e747eca5408f82ffbc8bf
合同积分新增、查询、修改、审核、删除、导出
8个文件已修改
285 ■■■■ 已修改文件
ycl-common/src/main/java/enumeration/general/AuditingStatus.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/entity/ContractScore.java 180 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CalculateRuleCascaderVO.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/controller/ContractScoreController.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/IContractScoreService.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/impl/CalculateRuleServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/impl/ContractScoreServiceImpl.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/resources/mapper/zgyw/CalculateRuleMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-common/src/main/java/enumeration/general/AuditingStatus.java
@@ -13,15 +13,16 @@
@Getter
public enum AuditingStatus {
    WAIT("WAIT", "待审核"),
    PASS("PASS", "通过"),
    NO_PASS("NO_PASS", "未通过"),
    ;
    @EnumValue // 标明该字段存入数据库
    @JsonValue // 标明在转JSON时使用该字段,即响应时
    private final String code;
    @JsonValue // 标明在转JSON时使用该字段,即响应时
    private final String desc;
    AuditingStatus(String code, String desc) {
ycl-pojo/src/main/java/com/ycl/platform/domain/entity/ContractScore.java
@@ -1,11 +1,17 @@
package com.ycl.platform.domain.entity;
import annotation.Excel;
import com.ycl.system.entity.BaseEntity;
import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import enumeration.general.AuditingStatus;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
 * 合同打分对象 t_default_score
@@ -13,137 +19,87 @@
 * @author ruoyi
 * @date 2024-04-01
 */
public class ContractScore extends BaseEntity
{
@Data
@TableName("t_contract_score")
public class ContractScore {
    private static final long serialVersionUID = 1L;
    /**  */
    private Long id;
    /** 合同考核id */
    @Excel(name = "合同考核id")
    private Long publishId;
    private Long unitId;
    /** 模板id */
    @Excel(name = "模板id")
    private Long templateId;
    @Excel(name = "运维单位")
    @TableField(exist = false)
    private String unitName;
    /** 具体数量、个数、小时数 */
    @Excel(name = "具体数量、个数、小时数")
    private Long contractId;
    @Excel(name = "合同")
    @TableField(exist = false)
    private String contractName;
    private Long ruleId;
    private String ruleIds;
    @TableField(exist = false)
    private Long[] ruleIdsArray;
    @Excel(name = "规则")
    @TableField(exist = false)
    private String ruleName;
    @Excel(name = "指标")
    private String num;
    /** 根据rule的打分方式结合template扣分系数和num,系统计算的分数 */
    @Excel(name = "根据rule的打分方式结合template扣分系数和num,系统计算的分数")
    @Excel(name = "分数")
    private BigDecimal score;
    /**  */
    private Long createUser;
    private Long createUserId;
    /**  */
    private String createUserName;
    @Excel(name = "创建人")
    private String createUser;
    /**  */
    private Long updateUser;
    private Long auditingUserId;
    /**  */
    private String updateUserName;
    @Excel(name = "审核人")
    private String auditingUser;
    public void setId(Long id)
    {
        this.id = id;
    }
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.INSERT)
    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;
    public Long getId()
    {
        return id;
    }
    public void setPublishId(Long publishId)
    {
        this.publishId = publishId;
    }
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "审核时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date auditingTime;
    public Long getPublishId()
    {
        return publishId;
    }
    public void setTemplateId(Long templateId)
    {
        this.templateId = templateId;
    }
    @Excel(name = "审核状态")
    private AuditingStatus auditingStatus;
    public Long getTemplateId()
    {
        return templateId;
    }
    public void setNum(String num)
    {
        this.num = num;
    }
    @Excel(name = "审核说明")
    private String remark;
    public String getNum()
    {
        return num;
    }
    public void setScore(BigDecimal score)
    {
        this.score = score;
    }
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.UPDATE)
    private Date updateTime;
    public BigDecimal getScore()
    {
        return score;
    }
    public void setCreateUser(Long createUser)
    {
        this.createUser = createUser;
    }
    @TableLogic
    private String deleted;
    public Long getCreateUser()
    {
        return createUser;
    }
    public void setCreateUserName(String createUserName)
    {
        this.createUserName = createUserName;
    }
    //查询条件
    @TableField(exist = false)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createStartTime;
    public String getCreateUserName()
    {
        return createUserName;
    }
    public void setUpdateUser(Long updateUser)
    {
        this.updateUser = updateUser;
    }
    @TableField(exist = false)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createEndTime;
    public Long getUpdateUser()
    {
        return updateUser;
    }
    public void setUpdateUserName(String updateUserName)
    {
        this.updateUserName = updateUserName;
    }
    @TableField(exist = false)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date auditingStartTime;
    public String getUpdateUserName()
    {
        return updateUserName;
    }
    @TableField(exist = false)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date auditingEndTime;
    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("publishId", getPublishId())
            .append("templateId", getTemplateId())
            .append("num", getNum())
            .append("score", getScore())
            .append("createUser", getCreateUser())
            .append("createUserName", getCreateUserName())
            .append("updateUser", getUpdateUser())
            .append("updateUserName", getUpdateUserName())
            .append("createTime", getCreateTime())
            .append("updateTime", getUpdateTime())
            .toString();
    }
}
ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CalculateRuleCascaderVO.java
@@ -33,4 +33,6 @@
     */
    private Integer calcUnit;
    private Long contractId;
}
ycl-server/src/main/java/com/ycl/platform/controller/ContractScoreController.java
@@ -6,14 +6,18 @@
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;
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
 * 合同打分Controller
@@ -23,8 +27,7 @@
 */
@RestController
@RequestMapping("/contract/score")
public class ContractScoreController extends BaseController
{
public class ContractScoreController extends BaseController {
    @Autowired
    private IContractScoreService defaultScoreService;
@@ -32,9 +35,8 @@
     * 查询合同打分列表
     */
    @PreAuthorize("@ss.hasPermi('platform:score:list')")
    @GetMapping("/list")
    public TableDataInfo list(ContractScore contractScore)
    {
    @PostMapping("/list")
    public TableDataInfo list(@RequestBody ContractScore contractScore) {
        startPage();
        List<ContractScore> list = defaultScoreService.selectDefaultScoreList(contractScore);
        return getDataTable(list);
@@ -44,12 +46,10 @@
     * 导出合同打分列表
     */
    @PreAuthorize("@ss.hasPermi('platform:score:export')")
    @Log(title = "合同打分", businessType = BusinessType.EXPORT)
    @PostMapping("/export")
    public void export(HttpServletResponse response, ContractScore contractScore)
    {
    public void export(HttpServletResponse response, ContractScore contractScore) {
        List<ContractScore> list = defaultScoreService.selectDefaultScoreList(contractScore);
        ExcelUtil<ContractScore> util = new ExcelUtil<ContractScore>(ContractScore.class);
        ExcelUtil<ContractScore> util = new ExcelUtil<>(ContractScore.class);
        util.exportExcel(response, list, "合同打分数据");
    }
@@ -58,9 +58,10 @@
     */
    @PreAuthorize("@ss.hasPermi('platform:score:query')")
    @GetMapping(value = "/{id}")
    public AjaxResult getInfo(@PathVariable("id") Long id)
    {
        return success(defaultScoreService.selectDefaultScoreById(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);
    }
    /**
@@ -69,9 +70,13 @@
    @PreAuthorize("@ss.hasPermi('platform:score:add')")
    @Log(title = "合同打分", businessType = BusinessType.INSERT)
    @PostMapping
    public AjaxResult add(@RequestBody ContractScore contractScore)
    {
        return toAjax(defaultScoreService.insertDefaultScore(contractScore));
    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));
    }
    /**
@@ -80,9 +85,23 @@
    @PreAuthorize("@ss.hasPermi('platform:score:edit')")
    @Log(title = "合同打分", businessType = BusinessType.UPDATE)
    @PutMapping
    public AjaxResult edit(@RequestBody ContractScore contractScore)
    {
        return toAjax(defaultScoreService.updateDefaultScore(contractScore));
    public AjaxResult edit(@RequestBody ContractScore contractScore) {
        contractScore.setRuleIds(Arrays.stream(contractScore.getRuleIdsArray()).map(String::valueOf).collect(Collectors.joining(",")));
        return toAjax(defaultScoreService.updateById(contractScore));
    }
    /**
     * 合同打分审核
     */
    @PreAuthorize("@ss.hasPermi('platform:score:audit')")
    @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));
    }
    /**
@@ -90,9 +109,8 @@
     */
    @PreAuthorize("@ss.hasPermi('platform:score:remove')")
    @Log(title = "合同打分", businessType = BusinessType.DELETE)
    @DeleteMapping("/{ids}")
    public AjaxResult remove(@PathVariable Long[] ids)
    {
        return toAjax(defaultScoreService.deleteDefaultScoreByIds(ids));
    @DeleteMapping("/{ids}")
    public AjaxResult remove(@PathVariable Long[] ids) {
        return toAjax(defaultScoreService.removeBatchByIds(Arrays.asList(ids)));
    }
}
ycl-server/src/main/java/com/ycl/platform/service/IContractScoreService.java
@@ -1,5 +1,6 @@
package com.ycl.platform.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ycl.platform.domain.entity.ContractScore;
import java.util.List;
@@ -10,7 +11,7 @@
 * @author ruoyi
 * @date 2024-04-01
 */
public interface IContractScoreService
public interface IContractScoreService extends IService<ContractScore>
{
    /**
     * 查询合同打分
ycl-server/src/main/java/com/ycl/platform/service/impl/CalculateRuleServiceImpl.java
@@ -42,7 +42,7 @@
     */
    @Override
    public CalculateRule selectDefaultRuleById(Long id) {
        return calculateRuleMapper.selectDefaultRuleById(id);
        return calculateRuleMapper.selectById(id);
    }
    /**
ycl-server/src/main/java/com/ycl/platform/service/impl/ContractScoreServiceImpl.java
@@ -1,13 +1,22 @@
package com.ycl.platform.service.impl;
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.ContractScore;
import com.ycl.platform.mapper.CalculateRuleMapper;
import com.ycl.platform.mapper.ContractScoreMapper;
import com.ycl.platform.mapper.TContractMapper;
import com.ycl.platform.mapper.YwUnitMapper;
import com.ycl.platform.service.IContractScoreService;
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.util.Arrays;
import java.util.List;
/**
@@ -21,6 +30,12 @@
{
    @Autowired
    private ContractScoreMapper contractScoreMapper;
    @Autowired
    private YwUnitMapper ywunitMapper;
    @Autowired
    private TContractMapper contractMapper;
    @Autowired
    private CalculateRuleMapper calculateRuleMapper;
    /**
     * 查询合同打分
@@ -43,7 +58,22 @@
    @Override
    public List<ContractScore> selectDefaultScoreList(ContractScore contractScore)
    {
        return contractScoreMapper.selectDefaultScoreList(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())
                .between(ObjectUtils.isNotEmpty(contractScore.getAuditingStartTime()), ContractScore::getAuditingTime, contractScore.getAuditingStartTime(), contractScore.getAuditingEndTime())
                .eq(ObjectUtils.isNotEmpty(contractScore.getAuditingStatus()), ContractScore::getAuditingStatus, contractScore.getAuditingStatus())
                .orderByDesc(ContractScore::getCreateTime)
                .list()
                .stream().peek(
                        item -> {
                            item.setUnitName(ywunitMapper.selectById(item.getUnitId()).getUnitName());
                            item.setContractName(contractMapper.selectById(item.getContractId()).getName());
                            item.setRuleIdsArray(Arrays.stream(item.getRuleIds().split(",")).map(Long::parseLong).toArray(Long[]::new));
                            List<CalculateRule> list = new LambdaQueryChainWrapper<>(calculateRuleMapper).in(CalculateRule::getId, item.getRuleIdsArray()).list();
                            item.setRuleName(String.join(" / ", new String[]{list.get(0).getRuleName(), list.get(1).getRuleDesc(), list.get(2).getRuleCondition()}));
                        }
                ).toList();
    }
    /**
ycl-server/src/main/resources/mapper/zgyw/CalculateRuleMapper.xml
@@ -41,6 +41,7 @@
               calc_fraction,
               calc_unit,
               id as value,
               contract_id,
               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