Browse Source

1.编辑考核 2成绩查询 3.配置考核项

ops-management-platform-backend-dev
gjh 2 weeks ago
parent
commit
d6703fa80d
  1. 17
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/controller/EvaluationInfoController.java
  2. 9
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/controller/EvaluationTemplateController.java
  3. 2
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/bo/EvaluationInfoBo.java
  4. 11
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/dto/EvaluationDto.java
  5. 10
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/dto/EvaluationTreeDto.java
  6. 5
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/IEvaluationInfoService.java
  7. 7
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/IEvaluationTemplateService.java
  8. 47
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/EvaluationInfoServiceImpl.java
  9. 100
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/EvaluationTemplateServiceImpl.java

17
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/controller/EvaluationInfoController.java

@ -6,6 +6,7 @@ import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.dromara.platform.domain.dto.EvaluationDto;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
@ -45,6 +46,13 @@ public class EvaluationInfoController extends BaseController {
return evaluationInfoService.queryPageList(bo, pageQuery);
}
@SaCheckPermission("platform:evaluationInfo:listForScore")
@GetMapping("/listForScore")
public TableDataInfo<EvaluationInfoVo> listForScore(EvaluationInfoBo bo, PageQuery pageQuery) {
return evaluationInfoService.queryPageListForScore(bo, pageQuery);
}
/**
* 导出考核评分信息列表
*/
@ -102,4 +110,13 @@ public class EvaluationInfoController extends BaseController {
@PathVariable String[] ids) {
return toAjax(evaluationInfoService.deleteWithValidByIds(List.of(ids), true));
}
@SaCheckPermission("platform:evaluationInfo:addBySelect")
@RepeatSubmit()
@PostMapping("/addBySelect")
public R<Void> addBySelect(@Validated(AddGroup.class) @RequestBody EvaluationDto dto) {
evaluationInfoService.addBySelect(dto);
return R.ok("创建成功!");
}
}

9
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/controller/EvaluationTemplateController.java

@ -1,6 +1,7 @@
package org.dromara.platform.controller;
import java.util.List;
import java.util.Map;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
@ -126,4 +127,12 @@ public class EvaluationTemplateController extends BaseController {
public R<Void> batchEdit(@Validated(EditGroup.class) @RequestBody List<EvaluationTemplate> updateList) {
return toAjax(evaluationTemplateService.batchEdit(updateList));
}
@SaCheckPermission("platform:evaluationTemplate:getTree")
@GetMapping("/getTree")
public R<Map<String, Object>> getTree() {
Map<String, Object> rs = evaluationTemplateService.getTree();
return R.ok(rs);
}
}

2
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/bo/EvaluationInfoBo.java

@ -9,6 +9,7 @@ import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
@ -52,6 +53,7 @@ public class EvaluationInfoBo extends BaseEntity {
*/
//@NotBlank(message = "考核时间不能为空", groups = { AddGroup.class, EditGroup.class })
@JsonFormat(pattern = "yyyy-MM", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM")
private Date checkTime;
/**

11
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/dto/EvaluationDto.java

@ -0,0 +1,11 @@
package org.dromara.platform.domain.dto;
import lombok.Data;
import java.util.List;
@Data
public class EvaluationDto {
private String flag;
private List<String> checkList;
}

10
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/dto/EvaluationTreeDto.java

@ -0,0 +1,10 @@
package org.dromara.platform.domain.dto;
import lombok.Data;
@Data
public class EvaluationTreeDto {
private String id;
private String largeRating;
private String smallRating;
}

5
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/IEvaluationInfoService.java

@ -1,5 +1,6 @@
package org.dromara.platform.service;
import org.dromara.platform.domain.dto.EvaluationDto;
import org.dromara.platform.domain.vo.EvaluationInfoVo;
import org.dromara.platform.domain.bo.EvaluationInfoBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
@ -65,4 +66,8 @@ public interface IEvaluationInfoService {
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid);
void addBySelect(EvaluationDto dto);
TableDataInfo<EvaluationInfoVo> queryPageListForScore(EvaluationInfoBo bo, PageQuery pageQuery);
}

7
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/IEvaluationTemplateService.java

@ -8,6 +8,7 @@ import org.dromara.common.mybatis.core.page.PageQuery;
import java.util.Collection;
import java.util.List;
import java.util.Map;
/**
* 考核评分信息-模板Service接口
@ -76,4 +77,10 @@ public interface IEvaluationTemplateService {
List<EvaluationTemplate> queryByFlag(String flag);
int batchEdit(List<EvaluationTemplate> updateList);
/**
* 获取树结构用于配置
* @return
*/
Map<String, Object> getTree();
}

47
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/EvaluationInfoServiceImpl.java

@ -2,6 +2,7 @@ package org.dromara.platform.service.impl;
import cn.hutool.core.bean.BeanUtil;
import jakarta.annotation.Resource;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
@ -11,6 +12,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.dromara.platform.domain.EvaluationTemplate;
import org.dromara.platform.domain.dto.EvaluationDto;
import org.dromara.platform.domain.vo.EvaluationTemplateVo;
import org.dromara.platform.mapper.EvaluationTemplateMapper;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
@ -21,6 +24,7 @@ import org.dromara.platform.mapper.EvaluationInfoMapper;
import org.dromara.platform.service.IEvaluationInfoService;
import java.util.*;
import java.util.stream.Collectors;
/**
* 考核评分信息Service业务层处理
@ -162,4 +166,47 @@ public class EvaluationInfoServiceImpl implements IEvaluationInfoService {
}
return baseMapper.deleteByIds(ids) > 0;
}
@Override
public void addBySelect(EvaluationDto dto) {
String flag = dto.getFlag();
List<String> checkList = dto.getCheckList();
checkList = checkList.stream()
.map(Long::parseLong)
.filter(id -> id <= 1000)
.map(String::valueOf)
.collect(Collectors.toList());
List<EvaluationTemplate> addList = new ArrayList<>();
for (String id : checkList) {
EvaluationTemplate template = new EvaluationTemplate();
EvaluationTemplateVo fromDb = evaluationTemplateMapper.selectVoById(id);
BeanUtils.copyProperties(fromDb, template,"id");
template.setFlag(flag);
addList.add(template);
}
LambdaQueryWrapper<EvaluationTemplate> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(EvaluationTemplate::getFlag, flag);
evaluationTemplateMapper.delete(queryWrapper);
evaluationTemplateMapper.insertBatch(addList);
}
@Override
public TableDataInfo<EvaluationInfoVo> queryPageListForScore(EvaluationInfoBo bo, PageQuery pageQuery) {
if (bo.getCheckTime() == null || StringUtils.isBlank(bo.getCheckProject())){
throw new ServiceException("请同时选中项目名称和考核时间!");
//return TableDataInfo.build(new Page<>());
}
LambdaQueryWrapper<EvaluationInfo> lqw = buildQueryWrapperForScore(bo);
Page<EvaluationInfoVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
private LambdaQueryWrapper<EvaluationInfo> buildQueryWrapperForScore(EvaluationInfoBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<EvaluationInfo> lqw = Wrappers.lambdaQuery();
lqw.eq(StringUtils.isNotBlank(bo.getCheckProject()), EvaluationInfo::getCheckProject, bo.getCheckProject());
lqw.eq(bo.getCheckTime() != null, EvaluationInfo::getCheckTime, bo.getCheckTime());
return lqw;
}
}

100
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/EvaluationTemplateServiceImpl.java

@ -1,5 +1,9 @@
package org.dromara.platform.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.executor.BatchResult;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
@ -9,6 +13,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.dromara.platform.domain.EvaluationInfo;
import org.dromara.platform.domain.dto.EvaluationTreeDto;
import org.dromara.platform.mapper.EvaluationInfoMapper;
import org.dromara.platform.service.IEvaluationInfoService;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.dromara.platform.domain.bo.EvaluationTemplateBo;
import org.dromara.platform.domain.vo.EvaluationTemplateVo;
@ -16,10 +25,7 @@ import org.dromara.platform.domain.EvaluationTemplate;
import org.dromara.platform.mapper.EvaluationTemplateMapper;
import org.dromara.platform.service.IEvaluationTemplateService;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.Collection;
import java.util.*;
import java.util.stream.Collectors;
/**
@ -30,9 +36,14 @@ import java.util.stream.Collectors;
*/
@RequiredArgsConstructor
@Service
@Slf4j
public class EvaluationTemplateServiceImpl implements IEvaluationTemplateService {
private final EvaluationTemplateMapper baseMapper;
@Resource
private IEvaluationInfoService evaluationInfoService;
@Resource
private EvaluationInfoMapper evaluationInfoMapper;
/**
* 查询考核评分信息-模板
@ -149,6 +160,7 @@ public class EvaluationTemplateServiceImpl implements IEvaluationTemplateService
if (StringUtils.isNotBlank(flag)) {
LambdaQueryWrapper<EvaluationTemplate> lqw = Wrappers.lambdaQuery();
lqw.eq(EvaluationTemplate::getFlag, flag);
List<EvaluationTemplate> evaluationTemplates = baseMapper.selectList(lqw);
List<EvaluationTemplate> sortedRecords = evaluationTemplates.stream()
@ -164,6 +176,86 @@ public class EvaluationTemplateServiceImpl implements IEvaluationTemplateService
public int batchEdit(List<EvaluationTemplate> updateList) {
List<BatchResult> batchResults = baseMapper.updateById(updateList);
int size = batchResults.size();
if (size>0) {
String flag = updateList.get(0).getFlag();
// 定义变量用于累加总分和扣分
double totalSumRating = 0;
double totalSubRating = 0;
for (EvaluationTemplate item : updateList) {
// 累加总分
if (item.getSumRating() != null) {
totalSumRating += item.getSumRating();
}
// 累加扣分
if (item.getSubRating() != null) {
totalSubRating += item.getSubRating();
}
}
Double finalScore = totalSumRating - totalSubRating;
LambdaUpdateWrapper<EvaluationInfo> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(EvaluationInfo::getId, flag);
updateWrapper.set(EvaluationInfo::getCheckRating, finalScore);
int update = evaluationInfoMapper.update(null, updateWrapper);
if (update>0){
log.info("批量修改成功,考核分数为{}",finalScore);
}
}
return size;
}
@Override
public Map<String, Object> getTree() {
// 1.封装数据
List<EvaluationTreeDto> dtoList = new ArrayList<>();
LambdaUpdateWrapper<EvaluationTemplate> queryWrapper = new LambdaUpdateWrapper<>();
queryWrapper.eq(EvaluationTemplate::getFlag, "模板1");
List<EvaluationTemplate> evaluationTemplates = baseMapper.selectList(queryWrapper);
for (EvaluationTemplate template : evaluationTemplates) {
EvaluationTreeDto evaluationTreeDto = new EvaluationTreeDto();
BeanUtils.copyProperties(template, evaluationTreeDto);
dtoList.add(evaluationTreeDto);
}
if (CollectionUtil.isNotEmpty(dtoList)){
return buildTreeWithUniqueId(dtoList);
}
return null;
}
private Map<String, Object> buildTreeWithUniqueId(List<EvaluationTreeDto> list) {
// 构建树状结构
Map<String, List<EvaluationTreeDto>> treeMap = list.stream()
.collect(Collectors.groupingBy(EvaluationTreeDto::getLargeRating));
// 将树状结构转换为适合JSON传输的格式,并为每个 largeRating 分配唯一ID
List<Map<String, Object>> result = new ArrayList<>();
for (Map.Entry<String, List<EvaluationTreeDto>> entry : treeMap.entrySet()) {
Map<String, Object> node = new HashMap<>();
String uniqueId = generateUniqueId();// 生成唯一ID
node.put("id", uniqueId); // 添加唯一ID
node.put("name", entry.getKey()); // largeRating 名称
List<Map<String, String>> children = entry.getValue().stream()
.map(dto -> {
Map<String, String> child = new HashMap<>();
child.put("id", dto.getId());
child.put("name", dto.getSmallRating());
return child;
}).collect(Collectors.toList());
node.put("children", children);
result.add(node);
}
return Collections.singletonMap("tree", result); // 包装为单个根节点
}
private static final Random random = new Random();
private String generateUniqueId() {
// 生成一个0到999之间的随机整数,并加上1000,确保结果在1000到1999之间
int uniqueIdInt = 1000 + random.nextInt(1000);
String uniqueId = Integer.toString(uniqueIdInt);
return uniqueId;
}
}

Loading…
Cancel
Save