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