人员考核结果;等级统计;整改统计

master
wany 2024-09-12 10:05:27 +08:00
parent 9613abd60d
commit af09279ac3
7 changed files with 89 additions and 13 deletions

View File

@ -2,6 +2,7 @@ package com.gunshi.project.xyt.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.gunshi.core.result.R;
import com.gunshi.db.dto.MonthRangeSo;
import com.gunshi.project.xyt.entity.so.AssessTaskPageSo;
import com.gunshi.project.xyt.entity.vo.AssessResultVo;
import com.gunshi.project.xyt.model.AssessTask;
@ -18,6 +19,7 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
/**
* :
@ -111,6 +113,18 @@ public class AssessTaskController extends AbstractCommonFileController{
service.resultExport(id,response);
}
@Operation(summary = "人员考核结果")
@PostMapping("/result/stat")
public R<List<AssessTask>> resultStat(@Validated @RequestBody MonthRangeSo monthRangeSo) {
return R.ok(service.resultStat(monthRangeSo));
}
@Operation(summary = "等级统计")
@PostMapping("/level/stat")
public R<Map<Integer,Long>> levelStat(@Validated @RequestBody MonthRangeSo monthRangeSo) {
return R.ok(service.levelStat(monthRangeSo));
}
@Override
public String getGroupId() {
return "assessTask";

View File

@ -2,6 +2,7 @@ package com.gunshi.project.xyt.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.gunshi.core.result.R;
import com.gunshi.db.dto.MonthRangeSo;
import com.gunshi.project.xyt.entity.so.AssessTaskPageSo;
import com.gunshi.project.xyt.entity.vo.AssessRatingVo;
import com.gunshi.project.xyt.entity.vo.AssessRectifyVo;
@ -68,6 +69,12 @@ public class AssessTeamRatingController extends AbstractCommonFileController{
return R.ok(service.rectify(rating));
}
@Operation(summary = "整改统计")
@PostMapping("/rectify/stat")
public R<Map<Integer,Long>> rectifyStat(@Validated @RequestBody MonthRangeSo monthRangeSo) {
return R.ok(service.rectifyStat(monthRangeSo));
}
@Override
public String getGroupId() {
return "assessTeamRating";

View File

@ -2,6 +2,7 @@ package com.gunshi.project.xyt.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.gunshi.db.dto.MonthRangeSo;
import com.gunshi.project.xyt.entity.so.AssessTaskPageSo;
import com.gunshi.project.xyt.entity.vo.AssessResultVo;
import com.gunshi.project.xyt.model.AssessObject;
@ -100,4 +101,14 @@ public interface AssessTaskMapper extends BaseMapper<AssessTask> {
</script>
""")
List<Long> myDoneTask(@Param("userId") Long userId);
@Select("""
<script>
select t.* from public.assess_task t
where t.status = 3
and date_trunc('MONTH', t.start_date) <![CDATA[>=]]> #{obj.start}
and date_trunc('MONTH', t.start_date) <![CDATA[<=]]> #{obj.end}
</script>
""")
List<AssessTask> resultStat(MonthRangeSo monthRangeSo);
}

View File

@ -2,6 +2,7 @@ package com.gunshi.project.xyt.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.gunshi.db.dto.MonthRangeSo;
import com.gunshi.project.xyt.entity.so.AssessTaskPageSo;
import com.gunshi.project.xyt.entity.vo.AssessRatingVo;
import com.gunshi.project.xyt.entity.vo.AssessRectifyVo;
@ -47,13 +48,13 @@ public interface AssessTeamRatingMapper extends BaseMapper<AssessTeamRating> {
@Select("""
<script>
select t.*,t1.object_id,t2.object_user_name,t2.assess_level,t3.indicator_name,t4.name,t5.task_name from public.assess_team_rating t\s
select t.*,t1.object_id,t2.object_user_name,t2.assess_level,t3.indicator_name,t4.name,t5.task_name from public.assess_team_rating t
left join public.assess_team t1 on t.team_id = t1.id
left join public.assess_object t2 on t1.object_id = t2.id
left join public.assess_indicator t3 on t.indicator_id = t3.id
left join public.assess_category t4 on t3.category_id = t4.id
left join public.assess_task t5 on t1.task_id = t5.id
where t.is_need_rectify = 1
where t.is_need_rectify = 1 and t5.status = 3
<if test="obj.userId != null">
and t.object_id = #{obj.userId}
</if>
@ -72,4 +73,16 @@ public interface AssessTeamRatingMapper extends BaseMapper<AssessTeamRating> {
</script>
""")
Page<AssessRectifyVo> listPage(Page<AssessRectifyVo> page,@Param("obj") AssessTaskPageSo page1);
@Select("""
<script>
select t.id,t.rectify_status from public.assess_team_rating t
left join public.assess_team t1 on t.team_id = t1.id
left join public.assess_task t5 on t1.task_id = t5.id
where t.is_need_rectify = 1 and t5.status = 3
and date_trunc('MONTH', t5.start_date) <![CDATA[>=]]> #{obj.start}
and date_trunc('MONTH', t5.start_date) <![CDATA[<=]]> #{obj.end}
</script>
""")
List<AssessTeamRating> rectifyStat(@Param("obj") MonthRangeSo monthRangeSo);
}

View File

@ -73,8 +73,8 @@ public class AssessTask implements Serializable {
private Long templateId;
@TableField(exist = false)
@Schema(description="模板名称")
private String templateName;
@Schema(description="模板信息")
private AssessTemplate template;
/**
*

View File

@ -1,20 +1,20 @@
package com.gunshi.project.xyt.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.gunshi.db.dto.MonthRangeSo;
import com.gunshi.project.xyt.entity.so.AssessTaskPageSo;
import com.gunshi.project.xyt.entity.vo.AssessResultVo;
import com.gunshi.project.xyt.mapper.AssessObjectRatingMapper;
import com.gunshi.project.xyt.mapper.AssessTaskMapper;
import com.gunshi.project.xyt.mapper.AssessTemplateMapper;
import com.gunshi.project.xyt.model.AssessObject;
import com.gunshi.project.xyt.model.AssessTask;
import com.gunshi.project.xyt.model.AssessTeam;
import com.gunshi.project.xyt.model.AssessTemplate;
import com.gunshi.project.xyt.model.*;
import com.gunshi.project.xyt.util.ExcelUtil;
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
@ -23,9 +23,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.*;
import java.util.stream.Collectors;
/**
@ -47,6 +45,9 @@ public class AssessTaskService extends ServiceImpl<AssessTaskMapper, AssessTask>
@Autowired
private AssessTemplateMapper templateMapper;
@Autowired
private AssessObjectRatingMapper objectRatingMapper;
public AssessTask saveData(AssessTask dto) {
dto.setId(IdWorker.getId());
dto.setStatus(0);
@ -89,7 +90,7 @@ public class AssessTaskService extends ServiceImpl<AssessTaskMapper, AssessTask>
public AssessTask detail(Long id) {
AssessTask task = this.getById(id);
AssessTemplate template = templateMapper.selectById(task.getTemplateId());
task.setTemplateName(template.getTemplateName());
task.setTemplate(template);
task.setFiles(fileService.getFiles(getGroupId(),id.toString()));
task.setAssessTeams(assessObjectService.getTeam(id));
task.setAssessObjects(assessObjectService.getObject(id));
@ -110,6 +111,7 @@ public class AssessTaskService extends ServiceImpl<AssessTaskMapper, AssessTask>
if(page.getDateRangeSo() != null && page.getDateRangeSo().getEnd() != null){
queryWrapper.le(AssessTask::getStartDate,page.getDateRangeSo().getEnd());
}
queryWrapper.orderByDesc(AssessTask::getCreateTime);
Page<AssessTask> res = this.page(page.getPageSo().toPage(), queryWrapper);
if (res.getRecords() != null && res.getRecords().size() > 0) {
for (AssessTask record : res.getRecords()) {
@ -181,8 +183,10 @@ public class AssessTaskService extends ServiceImpl<AssessTaskMapper, AssessTask>
this.updateById(task);
//任务中的考核对象
List<AssessObject> objects = assessObjectService.getObject(id);
objects.stream().forEach(o->o.setStatus(1));
objects.stream().forEach(o->o.setStatus(9));
assessObjectService.updateBatchById(objects);
List<Long> objectIds = objects.stream().map(AssessObject::getId).collect(Collectors.toList());
objectRatingMapper.delete(new QueryWrapper<AssessObjectRating>().in("object_id",objectIds));
//任务中的考核成员
List<AssessTeam> teams = assessObjectService.getTeam(id);
teams.stream().forEach(o->o.setStatus(1));
@ -200,6 +204,25 @@ public class AssessTaskService extends ServiceImpl<AssessTaskMapper, AssessTask>
List<AssessResultVo> list = this.result(id);
ExcelUtil.exportExcel(list,"考核结果",AssessResultVo.class,1,new int[]{0,4},response,"考核结果");
}
public List<AssessTask> resultStat(MonthRangeSo monthRangeSo) {
List<AssessTask> list = this.baseMapper.resultStat(monthRangeSo);
if (CollectionUtils.isNotEmpty(list)) {
for (AssessTask record : list) {
record.setAssessObjects(assessObjectService.getObject(record.getId()));
}
}
return list;
}
public Map<Integer, Long> levelStat(MonthRangeSo monthRangeSo) {
List<AssessTask> list = this.resultStat(monthRangeSo);
if(CollectionUtils.isEmpty(list)){
return new HashMap<>();
}
List<AssessObject> objectList = list.stream().map(AssessTask::getAssessObjects).flatMap(List::stream).collect(Collectors.toList());
return objectList.stream().collect(Collectors.groupingBy(AssessObject::getAssessLevel,Collectors.counting()));
}
}

View File

@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.gunshi.db.dto.MonthRangeSo;
import com.gunshi.project.xyt.entity.so.AssessTaskPageSo;
import com.gunshi.project.xyt.entity.vo.AssessRatingVo;
import com.gunshi.project.xyt.entity.vo.AssessRectifyVo;
@ -59,6 +60,7 @@ public class AssessTeamRatingService extends ServiceImpl<AssessTeamRatingMapper,
this.delData(teamId);
for(AssessTeamRating rating : ratings){
rating.setId(IdWorker.getId());
rating.setRectifyStatus(0);
fileService.save(rating.getFiles(), rating.getId().toString(), getGroupId(),getScoreType());
}
AssessTask task = taskMapper.selectById(vo.getTaskId());
@ -179,6 +181,7 @@ public class AssessTeamRatingService extends ServiceImpl<AssessTeamRatingMapper,
List<AssessTeamRating> ratings = vo.getRatings();
for(AssessTeamRating rating : ratings){
rating.setId(IdWorker.getId());
rating.setRectifyStatus(0);
fileService.save(rating.getFiles(), rating.getId().toString(), getGroupId(),getScoreType());
}
Long teamId = ratings.get(0).getTeamId();
@ -212,6 +215,11 @@ public class AssessTeamRatingService extends ServiceImpl<AssessTeamRatingMapper,
fileService.save(rating.getRectifyFiles(),rating.getId().toString(),getGroupId(),getRectifyType());
return "整改成功";
}
public Map<Integer,Long> rectifyStat(MonthRangeSo monthRangeSo) {
List<AssessTeamRating> list = this.baseMapper.rectifyStat(monthRangeSo);
return list.stream().collect(Collectors.groupingBy(AssessTeamRating::getRectifyStatus, Collectors.counting()));
}
}