Browse Source

绩效debug

master
PoffyZhang 1 year ago
parent
commit
ba647f587a
7 changed files with 340 additions and 0 deletions
  1. +37
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/performance/controller/OrgSelfAppraisalController.java
  2. +20
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/performance/controller/PerformanceAppraisalPlanController.java
  3. +180
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/performance/manage/OrgSelfAppraisalManage.java
  4. +94
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/performance/manage/PerformanceAppraisalPlanManage.java
  5. +3
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/projectlib/model/dto/ProjectCollectionSaveDTO.java
  6. +3
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/projectlib/model/entity/ProjectCollection.java
  7. +3
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/projectlib/model/vo/ProjectCollectionVO.java

+ 37
- 0
pmapi/src/main/java/com/ningdatech/pmapi/performance/controller/OrgSelfAppraisalController.java View File

@@ -0,0 +1,37 @@
package com.ningdatech.pmapi.performance.controller;

import com.ningdatech.basic.model.PageVo;
import com.ningdatech.pmapi.performance.manage.OrgSelfAppraisalManage;
import com.ningdatech.pmapi.performance.model.req.PerformanceAppraisalListReq;
import com.ningdatech.pmapi.performance.model.vo.PerformanceAppraisalVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;

/**
* @Classname OrgSelfAppraisalController
* @Description
* @Date 2023/6/25 14:16
* @Author PoffyZhang
*/
@RestController
@RequiredArgsConstructor
@Api(tags = "绩效评价-单位自评")
@RequestMapping("/api/v1/self-appraisal")
public class OrgSelfAppraisalController {

private final OrgSelfAppraisalManage selfAppraisalManage;

@GetMapping("/list")
@ApiOperation("当前用户的绩效评价计划列表")
public PageVo<PerformanceAppraisalVO> list(PerformanceAppraisalListReq req) {
return selfAppraisalManage.list(req);
}

@GetMapping("/detail/{id}")
@ApiOperation("当前用户的绩效评价计划详情")
public PerformanceAppraisalVO detail(@PathVariable Long id) {
return selfAppraisalManage.detail(id);
}
}

+ 20
- 0
pmapi/src/main/java/com/ningdatech/pmapi/performance/controller/PerformanceAppraisalPlanController.java View File

@@ -57,6 +57,13 @@ public class PerformanceAppraisalPlanController {
return performanceAppraisalPlanManage.edit(editDTO);
}

@PostMapping("/delete/{id}")
@ApiOperation("绩效评价删除")
@WebLog("绩效评价删除")
public String delete(@PathVariable Long id) {
return performanceAppraisalPlanManage.delete(id);
}

@GetMapping("/group/list/{appraisalId}")
@ApiOperation("绩效评价分组列表")
public List<PerformanceAppraisalProjectGroupVO> groupList(@PathVariable Long appraisalId,
@@ -64,10 +71,23 @@ public class PerformanceAppraisalPlanController {
return performanceAppraisalPlanManage.groupList(appraisalId,name);
}

@GetMapping("/group/detail/{id}")
@ApiOperation("绩效评价分组详情")
public PerformanceAppraisalProjectGroupVO groupDetail(@PathVariable Long id) {
return performanceAppraisalPlanManage.groupDetail(id);
}

@PostMapping("/group/save")
@ApiOperation("绩效评价分组保存")
@WebLog("绩效评价分组保存")
public String groupSave(@Valid @RequestBody PerformanceAppraisalProjectGroupSaveDTO dto) {
return performanceAppraisalPlanManage.groupSave(dto);
}

@PostMapping("/group/delete/{id}")
@ApiOperation("绩效评价分组删除")
@WebLog("绩效评价分组删除")
public String groupDelete(@PathVariable Long id) {
return performanceAppraisalPlanManage.groupDelete(id);
}
}

+ 180
- 0
pmapi/src/main/java/com/ningdatech/pmapi/performance/manage/OrgSelfAppraisalManage.java View File

@@ -0,0 +1,180 @@
package com.ningdatech.pmapi.performance.manage;

import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.collect.Maps;
import com.ningdatech.basic.function.VUtils;
import com.ningdatech.basic.model.PageVo;
import com.ningdatech.pmapi.performance.convert.PerformanceAppraisalConveter;
import com.ningdatech.pmapi.performance.model.entity.PerformanceAppraisal;
import com.ningdatech.pmapi.performance.model.entity.PerformanceAppraisalApplication;
import com.ningdatech.pmapi.performance.model.entity.PerformanceAppraisalProject;
import com.ningdatech.pmapi.performance.model.req.PerformanceAppraisalListReq;
import com.ningdatech.pmapi.performance.model.vo.PerformanceAppraisalVO;
import com.ningdatech.pmapi.performance.service.IPerformanceAppraisalApplicationService;
import com.ningdatech.pmapi.performance.service.IPerformanceAppraisalProjectService;
import com.ningdatech.pmapi.performance.service.IPerformanceAppraisalService;
import com.ningdatech.pmapi.projectlib.model.entity.Project;
import com.ningdatech.pmapi.projectlib.model.entity.ProjectApplication;
import com.ningdatech.pmapi.projectlib.service.IProjectApplicationService;
import com.ningdatech.pmapi.projectlib.service.IProjectService;
import com.ningdatech.pmapi.user.security.auth.model.UserInfoDetails;
import com.ningdatech.pmapi.user.util.LoginUserUtil;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import java.util.*;
import java.util.stream.Collectors;

/**
* @Classname OrgSelfAppraisalManage
* @Description
* @Date 2023/6/19 14:18
* @Author PoffyZhang
*/
@Component
@Slf4j
@AllArgsConstructor
public class OrgSelfAppraisalManage {

private final IPerformanceAppraisalService performanceAppraisalService;

private final IPerformanceAppraisalProjectService performanceAppraisalProjectService;

private final IPerformanceAppraisalApplicationService performanceAppraisalApplicationService;

private final IProjectService projectService;

private final IProjectApplicationService applicationService;

/**
* 绩效列表
* @param req
* @return
*/
public PageVo<PerformanceAppraisalVO> list(PerformanceAppraisalListReq req) {
UserInfoDetails user = LoginUserUtil.loginUserDetail();

//当前登录用户 单位code
String empPosUnitCode = user.getEmpPosUnitCode();
projectService.list(Wrappers.lambdaQuery(Project.class)
.eq(Project::getBuildOrgCode,empPosUnitCode));


Page<PerformanceAppraisal> page = req.page();
LambdaQueryWrapper<PerformanceAppraisal> wrapper = Wrappers.lambdaQuery(PerformanceAppraisal.class)
.like(StringUtils.isNotBlank(req.getName()),PerformanceAppraisal::getName,req.getName())
.ge(Objects.nonNull(req.getStart()),PerformanceAppraisal::getCreateOn,req.getStart())
.le(Objects.nonNull(req.getEnd()),PerformanceAppraisal::getCreateOn,req.getEnd())
.orderByDesc(PerformanceAppraisal::getUpdateOn);
performanceAppraisalService.page(page,wrapper);
if(0L == page.getTotal()){
return PageVo.empty();
}

List<Long> paIds = page.getRecords().stream().map(PerformanceAppraisal::getId).collect(Collectors.toList());
List<PerformanceAppraisalProject> paps = performanceAppraisalProjectService.list(Wrappers.lambdaQuery(PerformanceAppraisalProject.class)
.in(PerformanceAppraisalProject::getAppraisalId, paIds));

Map<String,Project> projectMap = Maps.newHashMap();
Map<Long,List<PerformanceAppraisalProject>> papsGroupMap = Maps.newHashMap();
if(CollUtil.isNotEmpty(paps)){
papsGroupMap = paps.stream().collect(Collectors.groupingBy(PerformanceAppraisalProject::getAppraisalId));

List<String> projectCodes = paps.stream().map(PerformanceAppraisalProject::getProjectCode).collect(Collectors.toList());
List<Project> projects = projectService.list(Wrappers.lambdaQuery(Project.class)
.in(Project::getProjectCode, projectCodes)
.eq(Project::getNewest, Boolean.TRUE));
if(CollUtil.isNotEmpty(projects)){
projectMap = projects.stream().collect(Collectors.toMap(Project::getProjectCode,p -> p));
}
}

List<PerformanceAppraisalApplication> paas = performanceAppraisalApplicationService.list(Wrappers.lambdaQuery(PerformanceAppraisalApplication.class)
.in(PerformanceAppraisalApplication::getAppraisalId, paIds));
Map<Long,ProjectApplication> applicationMap = Maps.newHashMap();
Map<Long,List<PerformanceAppraisalApplication>> paasGroupMap = Maps.newHashMap();
if(CollUtil.isNotEmpty(paas)){
paasGroupMap = paas.stream().collect(Collectors.groupingBy(PerformanceAppraisalApplication::getAppraisalId));

List<Long> applicationIds = paas.stream().map(PerformanceAppraisalApplication::getApplicationId).collect(Collectors.toList());
List<ProjectApplication> apps = applicationService.list(Wrappers.lambdaQuery(ProjectApplication.class)
.in(ProjectApplication::getId, applicationIds));
if(CollUtil.isNotEmpty(apps)){
applicationMap = apps.stream().collect(Collectors.toMap(ProjectApplication::getId,a -> a));
}
}

Map<Long, List<PerformanceAppraisalProject>> finalPapsGroupMap = papsGroupMap;
Map<Long,List<PerformanceAppraisalApplication>> finalPaasGroupMap = paasGroupMap;
Map<String,Project> finalProjectMap = projectMap;
Map<Long,ProjectApplication> finalApplicationMap = applicationMap;
List<PerformanceAppraisalVO> res = page.getRecords().stream().map(p -> {
PerformanceAppraisalVO vo = BeanUtil.copyProperties(p,PerformanceAppraisalVO.class);
if(finalPapsGroupMap.containsKey(p.getId())){
vo.setProjects(PerformanceAppraisalConveter.convertProjects(finalPapsGroupMap.get(p.getId()),finalProjectMap));
}
if(finalPaasGroupMap.containsKey(p.getId())){
vo.setApplications(PerformanceAppraisalConveter.convertApplications(finalPaasGroupMap.get(p.getId()),finalApplicationMap));
}
return vo;
}).collect(Collectors.toList());
return PageVo.of(res,page.getTotal());
}

public PerformanceAppraisalVO detail(Long id) {

PerformanceAppraisal pa = performanceAppraisalService.getById(id);
VUtils.isTrue(Objects.isNull(pa)).throwMessage("该计划不存在");

PerformanceAppraisalVO vo = BeanUtil.copyProperties(pa,PerformanceAppraisalVO.class);
//绩效关联的项目
List<PerformanceAppraisalProject> paps = performanceAppraisalProjectService.list(Wrappers.lambdaQuery(PerformanceAppraisalProject.class)
.eq(PerformanceAppraisalProject::getAppraisalId, id));
Map<String,Project> projectMap = Maps.newHashMap();
Map<Long,List<PerformanceAppraisalProject>> papsGroupMap = Maps.newHashMap();
if(CollUtil.isNotEmpty(paps)){
papsGroupMap = paps.stream().collect(Collectors.groupingBy(PerformanceAppraisalProject::getAppraisalId));

List<String> projectCodes = paps.stream().map(PerformanceAppraisalProject::getProjectCode).collect(Collectors.toList());
List<Project> projects = projectService.list(Wrappers.lambdaQuery(Project.class)
.in(Project::getProjectCode, projectCodes)
.eq(Project::getNewest, Boolean.TRUE));
if(CollUtil.isNotEmpty(projects)){
projectMap = projects.stream().collect(Collectors.toMap(Project::getProjectCode,p -> p));
}
}

//绩效关联的应用
List<PerformanceAppraisalApplication> paas = performanceAppraisalApplicationService.list(Wrappers.lambdaQuery(PerformanceAppraisalApplication.class)
.eq(PerformanceAppraisalApplication::getAppraisalId, id));
Map<Long,ProjectApplication> applicationMap = Maps.newHashMap();
Map<Long,List<PerformanceAppraisalApplication>> paasGroupMap = Maps.newHashMap();
if(CollUtil.isNotEmpty(paas)){
paasGroupMap = paas.stream().collect(Collectors.groupingBy(PerformanceAppraisalApplication::getAppraisalId));

List<Long> applicationIds = paas.stream().map(PerformanceAppraisalApplication::getApplicationId).collect(Collectors.toList());
List<ProjectApplication> apps = applicationService.list(Wrappers.lambdaQuery(ProjectApplication.class)
.in(ProjectApplication::getId, applicationIds));
if(CollUtil.isNotEmpty(apps)){
applicationMap = apps.stream().collect(Collectors.toMap(ProjectApplication::getId,a -> a));
}
}

Map<Long, List<PerformanceAppraisalProject>> finalPapsGroupMap = papsGroupMap;
Map<Long,List<PerformanceAppraisalApplication>> finalPaasGroupMap = paasGroupMap;
Map<String,Project> finalProjectMap = projectMap;
Map<Long,ProjectApplication> finalApplicationMap = applicationMap;
if(finalPapsGroupMap.containsKey(vo.getId())){
vo.setProjects(PerformanceAppraisalConveter.convertProjects(finalPapsGroupMap.get(vo.getId()),finalProjectMap));
}
if(finalPaasGroupMap.containsKey(vo.getId())){
vo.setApplications(PerformanceAppraisalConveter.convertApplications(finalPaasGroupMap.get(vo.getId()),finalApplicationMap));
}
return vo;
}
}

+ 94
- 0
pmapi/src/main/java/com/ningdatech/pmapi/performance/manage/PerformanceAppraisalPlanManage.java View File

@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
import com.ningdatech.basic.exception.BizException;
import com.ningdatech.basic.function.VUtils;
import com.ningdatech.basic.model.PageVo;
import com.ningdatech.basic.util.StrPool;
@@ -368,6 +369,27 @@ public class PerformanceAppraisalPlanManage {
}
}

/**
* 删除绩效评价计划
* 连带删除 其下所有
* @param id
* @return
*/
public String delete(Long id) {
PerformanceAppraisal pa = performanceAppraisalService.getById(id);
VUtils.isTrue(Objects.isNull(pa)).throwMessage("绩效评价不存在 删除失败!");

//如果到了自评就不能删除了
if(pa.getSelfAppraisalStart().compareTo(LocalDateTime.now()) < 0){
throw new BizException("自评已经开始 不能够删除绩效评价");
}

if(performanceAppraisalService.removeById(id)){
return "删除成功";
}
return "删除失败";
}

public List<PerformanceAppraisalProjectGroupVO> groupList(Long appraisalId,String name) {
List<PerformanceAppraisalProjectGroup> groups = groupService.list(
Wrappers.lambdaQuery(PerformanceAppraisalProjectGroup.class)
@@ -422,6 +444,52 @@ public class PerformanceAppraisalPlanManage {
}

/**
* 分组详情
* @param id
* @return
*/
public PerformanceAppraisalProjectGroupVO groupDetail(Long id) {
PerformanceAppraisalProjectGroup group = groupService.getById(id);

if(Objects.isNull(group)){
return null;
}

Map<String, Project> projectMap = Maps.newHashMap();
List<Project> projects = projectService.list(Wrappers.lambdaQuery(Project.class)
.in(StringUtils.isNotBlank(group.getProjectIds()),Project::getProjectCode,
Arrays.stream(group.getProjectIds().split(StrPool.COMMA)).collect(Collectors.toList()))
.eq(Project::getNewest,Boolean.TRUE));
if(CollUtil.isNotEmpty(projects)){
projectMap = projects.stream().collect(Collectors.toMap(Project::getProjectCode,p -> p));
}

Map<String, UserFullInfoDTO> userMap = Maps.newHashMap();
Set<String> allEmployeeCodes = Sets.newHashSet();
allEmployeeCodes.addAll(CodeUtil.convertStrToList(group.getReAppraisalUsers()));
allEmployeeCodes.addAll(CodeUtil.convertStrToList(group.getVerificationUsers()));
if(CollUtil.isNotEmpty(allEmployeeCodes)){
List<UserFullInfoDTO> users = userInfoHelper.getUserFullInfoByEmployeeCodes(allEmployeeCodes);
if(CollUtil.isNotEmpty(users)){
userMap = users.stream().collect(Collectors.toMap(UserFullInfoDTO::getEmployeeCode,u -> u));
}
}

PerformanceAppraisalProjectGroupVO vo = new PerformanceAppraisalProjectGroupVO();
vo.setAppraisalId(group.getAppraisalId());
vo.setName(group.getName());
vo.setCreateOn(group.getCreateOn());
vo.setCreateBy(group.getCreateBy());
vo.setUpdateBy(group.getUpdateBy());
vo.setUpdateOn(group.getUpdateOn());
vo.setId(group.getId());
vo.setProjects(checkProject(group.getProjectIds(), projectMap));
vo.setReAppraisalUsers(checkUser(group.getReAppraisalUsers(), userMap));
vo.setVerificationUsers(checkUser(group.getVerificationUsers(), userMap));
return vo;
}

/**
* 分组 保存
* @param dto
* @return
@@ -455,6 +523,32 @@ public class PerformanceAppraisalPlanManage {
return "操作成功";
}

/**
* 删除分组
* @param id
* @return
*/
public String groupDelete(Long id) {
PerformanceAppraisalProjectGroup group = groupService.getById(id);
VUtils.isTrue(Objects.isNull(group)).throwMessage("分组不存在");

//评价Id
Long appraisalId = group.getAppraisalId();

PerformanceAppraisal pa = performanceAppraisalService.getById(appraisalId);
VUtils.isTrue(Objects.isNull(pa)).throwMessage("评价不存在");

//如果到了自评就不能删除了
if(pa.getSelfAppraisalStart().compareTo(LocalDateTime.now()) < 0){
throw new BizException("自评已经开始 不能够删除绩效评价");
}

if(groupService.removeById(id)){
return "删除成功";
}
return "删除失败";
}

private List<PerformanceAppraisalProjectVO> checkProject(String projectIds, Map<String, Project> projectMap) {
if(StringUtils.isBlank(projectIds)){
return Collections.emptyList();


+ 3
- 0
pmapi/src/main/java/com/ningdatech/pmapi/projectlib/model/dto/ProjectCollectionSaveDTO.java View File

@@ -28,6 +28,9 @@ public class ProjectCollectionSaveDTO implements Serializable {
@ApiModelProperty("主键")
private Long id;

@ApiModelProperty("项目编号")
private String projectCode;

@ApiModelProperty("所属地区编号")
private String areaCode;



+ 3
- 0
pmapi/src/main/java/com/ningdatech/pmapi/projectlib/model/entity/ProjectCollection.java View File

@@ -28,6 +28,9 @@ public class ProjectCollection implements Serializable {
@TableId(type = IdType.AUTO)
private Long id;

@ApiModelProperty("项目编号")
private String projectCode;

@ApiModelProperty("所属地区编号")
private String areaCode;



+ 3
- 0
pmapi/src/main/java/com/ningdatech/pmapi/projectlib/model/vo/ProjectCollectionVO.java View File

@@ -28,6 +28,9 @@ public class ProjectCollectionVO implements Serializable {
@ApiModelProperty("主键")
private Long id;

@ApiModelProperty("项目编号")
private String projectCode;

@ApiModelProperty("所属地区编号")
private String areaCode;



Loading…
Cancel
Save