@@ -2,6 +2,7 @@ package com.ningdatech.pmapi.performance.controller; | |||||
import javax.validation.Valid; | import javax.validation.Valid; | ||||
import com.ningdatech.log.annotation.WebLog; | |||||
import com.ningdatech.pmapi.performance.manage.AppAppraisalManage; | import com.ningdatech.pmapi.performance.manage.AppAppraisalManage; | ||||
import com.ningdatech.pmapi.performance.model.vo.*; | import com.ningdatech.pmapi.performance.model.vo.*; | ||||
import org.springframework.web.bind.annotation.*; | import org.springframework.web.bind.annotation.*; | ||||
@@ -35,16 +36,16 @@ public class AppAppraisalController { | |||||
return appAppraisalManage.list(req); | return appAppraisalManage.list(req); | ||||
} | } | ||||
@GetMapping("/unEvaluate-list/{planId}/{reAppraisalGroupId}") | |||||
@GetMapping("/unEvaluate-list/{planId}") | |||||
@ApiOperation("当前绩效评价应用待评价列表") | @ApiOperation("当前绩效评价应用待评价列表") | ||||
public PageVo<PerformanceAppraisalAppVO> unEvaluateList(@PathVariable Long planId, @PathVariable Long reAppraisalGroupId, PerformanceAppraisalListReq req) { | |||||
return appAppraisalManage.unEvaluateList(planId,reAppraisalGroupId,req); | |||||
public PageVo<PerformanceAppraisalAppVO> unEvaluateList(@PathVariable Long planId, PerformanceAppraisalListReq req) { | |||||
return appAppraisalManage.unEvaluateList(planId,req); | |||||
} | } | ||||
@GetMapping("/evaluated-list/{planId}/{reAppraisalGroupId}") | |||||
@GetMapping("/evaluated-list/{planId}") | |||||
@ApiOperation("当前绩效评价应用已评价列表") | @ApiOperation("当前绩效评价应用已评价列表") | ||||
public PageVo<PerformanceAppraisalAppVO> evaluatedList(@PathVariable Long planId, @PathVariable Long reAppraisalGroupId, PerformanceAppraisalListReq req) { | |||||
return appAppraisalManage.evaluatedList(planId,reAppraisalGroupId,req); | |||||
public PageVo<PerformanceAppraisalAppVO> evaluatedList(@PathVariable Long planId, PerformanceAppraisalListReq req) { | |||||
return appAppraisalManage.evaluatedList(planId,req); | |||||
} | } | ||||
@GetMapping("/detail/{appId}") | @GetMapping("/detail/{appId}") | ||||
@@ -55,6 +56,7 @@ public class AppAppraisalController { | |||||
@PostMapping("/save") | @PostMapping("/save") | ||||
@ApiOperation("保存分数") | @ApiOperation("保存分数") | ||||
@WebLog(value = "保存分数",modular = "绩效评价-应用评价") | |||||
public String saveAppraisal(@Valid @RequestBody ProjectAppraisalDTO param){ | public String saveAppraisal(@Valid @RequestBody ProjectAppraisalDTO param){ | ||||
return appAppraisalManage.saveAppraisal(param); | return appAppraisalManage.saveAppraisal(param); | ||||
} | } | ||||
@@ -126,6 +126,7 @@ public class IndicatorConfigController { | |||||
@ApiOperation(value = "应用指标启用(禁用)", notes = "应用指标启用(禁用)") | @ApiOperation(value = "应用指标启用(禁用)", notes = "应用指标启用(禁用)") | ||||
@PutMapping("/app/index/{appId}/active/{state}") | @PutMapping("/app/index/{appId}/active/{state}") | ||||
@WebLog("应用指标库指标启用(禁用)") | |||||
public String enOrDisAppIndex(@PathVariable Long appId, | public String enOrDisAppIndex(@PathVariable Long appId, | ||||
@PathVariable Boolean state) { | @PathVariable Boolean state) { | ||||
Boolean result = indicatorConfigManage.enOrDisAppIndex(appId, state); | Boolean result = indicatorConfigManage.enOrDisAppIndex(appId, state); | ||||
@@ -1,6 +1,8 @@ | |||||
package com.ningdatech.pmapi.performance.controller; | package com.ningdatech.pmapi.performance.controller; | ||||
import com.ningdatech.basic.model.PageVo; | import com.ningdatech.basic.model.PageVo; | ||||
import com.ningdatech.log.annotation.WebLog; | |||||
import com.ningdatech.pmapi.common.util.ExcelDownUtil; | |||||
import com.ningdatech.pmapi.performance.manage.OrgSelfAppraisalManage; | import com.ningdatech.pmapi.performance.manage.OrgSelfAppraisalManage; | ||||
import com.ningdatech.pmapi.performance.model.dto.ProjectAppraisalDTO; | import com.ningdatech.pmapi.performance.model.dto.ProjectAppraisalDTO; | ||||
import com.ningdatech.pmapi.performance.model.req.PerformanceAppraisalListReq; | import com.ningdatech.pmapi.performance.model.req.PerformanceAppraisalListReq; | ||||
@@ -12,6 +14,7 @@ import io.swagger.annotations.ApiOperation; | |||||
import lombok.RequiredArgsConstructor; | import lombok.RequiredArgsConstructor; | ||||
import org.springframework.web.bind.annotation.*; | import org.springframework.web.bind.annotation.*; | ||||
import javax.servlet.http.HttpServletResponse; | |||||
import javax.validation.Valid; | import javax.validation.Valid; | ||||
/** | /** | ||||
@@ -54,7 +57,15 @@ public class OrgSelfAppraisalController { | |||||
@PostMapping("/submit-self-appraisal") | @PostMapping("/submit-self-appraisal") | ||||
@ApiOperation("提交自评") | @ApiOperation("提交自评") | ||||
@WebLog(value = "提交自评",modular = "绩效评价-单位自评") | |||||
public String submitSelfAppraisal(@Valid @RequestBody ProjectAppraisalDTO param){ | public String submitSelfAppraisal(@Valid @RequestBody ProjectAppraisalDTO param){ | ||||
return selfAppraisalManage.submitSelfAppraisal(param); | return selfAppraisalManage.submitSelfAppraisal(param); | ||||
} | } | ||||
@GetMapping("/score/export/{projectCode}") | |||||
@ApiOperation("自评打分导出") | |||||
@WebLog(value = "自评打分导出",modular = "绩效评价-单位自评") | |||||
private void exportScore(@PathVariable String projectCode, HttpServletResponse response){ | |||||
ExcelDownUtil.downXls(response, projectCode, selfAppraisalManage::exportScore); | |||||
} | |||||
} | } |
@@ -2,6 +2,7 @@ package com.ningdatech.pmapi.performance.controller; | |||||
import javax.validation.Valid; | import javax.validation.Valid; | ||||
import com.ningdatech.log.annotation.WebLog; | |||||
import com.ningdatech.pmapi.performance.manage.ReAppraisalManage; | import com.ningdatech.pmapi.performance.manage.ReAppraisalManage; | ||||
import org.springframework.web.bind.annotation.*; | import org.springframework.web.bind.annotation.*; | ||||
@@ -44,6 +45,7 @@ public class ReAppraisalController { | |||||
@PostMapping("/submit-reAppraisal") | @PostMapping("/submit-reAppraisal") | ||||
@ApiOperation("提交复评") | @ApiOperation("提交复评") | ||||
@WebLog(value = "提交复评",modular = "绩效评价-人工复评") | |||||
public String submitReAppraisal(@Valid @RequestBody ProjectAppraisalDTO param){ | public String submitReAppraisal(@Valid @RequestBody ProjectAppraisalDTO param){ | ||||
return reAppraisalManage.submitReAppraisal(param); | return reAppraisalManage.submitReAppraisal(param); | ||||
} | } | ||||
@@ -2,6 +2,7 @@ package com.ningdatech.pmapi.performance.controller; | |||||
import javax.validation.Valid; | import javax.validation.Valid; | ||||
import com.ningdatech.log.annotation.WebLog; | |||||
import com.ningdatech.pmapi.performance.manage.RectifyAuditManage; | import com.ningdatech.pmapi.performance.manage.RectifyAuditManage; | ||||
import org.springframework.web.bind.annotation.*; | import org.springframework.web.bind.annotation.*; | ||||
@@ -49,6 +50,7 @@ public class RectifyAuditController { | |||||
@PostMapping("/submit") | @PostMapping("/submit") | ||||
@ApiOperation("提交整改审核结果") | @ApiOperation("提交整改审核结果") | ||||
@WebLog(value = "提交整改审核结果",modular = "绩效评价-项目整改核查") | |||||
public String submit(@Valid @RequestBody ProjectAppraisalDTO param){ | public String submit(@Valid @RequestBody ProjectAppraisalDTO param){ | ||||
return rectifyAuditManage.submit(param); | return rectifyAuditManage.submit(param); | ||||
} | } | ||||
@@ -2,6 +2,7 @@ package com.ningdatech.pmapi.performance.controller; | |||||
import javax.validation.Valid; | import javax.validation.Valid; | ||||
import com.ningdatech.log.annotation.WebLog; | |||||
import org.springframework.web.bind.annotation.*; | import org.springframework.web.bind.annotation.*; | ||||
import com.ningdatech.basic.model.PageVo; | import com.ningdatech.basic.model.PageVo; | ||||
@@ -59,6 +60,7 @@ public class RectifyController { | |||||
@PostMapping("/fill-out-result") | @PostMapping("/fill-out-result") | ||||
@ApiOperation("填写整改情况") | @ApiOperation("填写整改情况") | ||||
@WebLog(value = "填写整改情况",modular = "绩效评价-项目整改") | |||||
public String fillOutResult(@Valid @RequestBody ProjectAppraisalDTO param) { | public String fillOutResult(@Valid @RequestBody ProjectAppraisalDTO param) { | ||||
return rectifyManage.fillOutResult(param); | return rectifyManage.fillOutResult(param); | ||||
} | } | ||||
@@ -2,6 +2,7 @@ package com.ningdatech.pmapi.performance.controller; | |||||
import javax.validation.Valid; | import javax.validation.Valid; | ||||
import com.ningdatech.log.annotation.WebLog; | |||||
import com.ningdatech.pmapi.performance.manage.VerifyManage; | import com.ningdatech.pmapi.performance.manage.VerifyManage; | ||||
import org.springframework.web.bind.annotation.*; | import org.springframework.web.bind.annotation.*; | ||||
@@ -43,6 +44,7 @@ public class VerifyController { | |||||
@PostMapping("/submit-verify") | @PostMapping("/submit-verify") | ||||
@ApiOperation("提交核查") | @ApiOperation("提交核查") | ||||
@WebLog(value = "提交核查",modular = "绩效评价-专家核查") | |||||
public String submitVerify(@Valid @RequestBody ProjectAppraisalDTO param){ | public String submitVerify(@Valid @RequestBody ProjectAppraisalDTO param){ | ||||
return verifyManage.submitVerify(param); | return verifyManage.submitVerify(param); | ||||
} | } | ||||
@@ -131,19 +131,28 @@ public class AppAppraisalManage { | |||||
} | } | ||||
public PageVo<PerformanceAppraisalAppVO> unEvaluateList(Long planId, Long reAppraisalGroupId, PerformanceAppraisalListReq req) { | |||||
public PageVo<PerformanceAppraisalAppVO> unEvaluateList(Long planId, PerformanceAppraisalListReq req) { | |||||
UserInfoDetails user = LoginUserUtil.loginUserDetail(); | UserInfoDetails user = LoginUserUtil.loginUserDetail(); | ||||
String employeeCode = user.getEmployeeCode(); | String employeeCode = user.getEmployeeCode(); | ||||
PerformanceAppraisal plan = performanceAppraisalService.getById(planId); | PerformanceAppraisal plan = performanceAppraisalService.getById(planId); | ||||
VUtils.isTrue(Objects.isNull(plan)).throwMessage("该评价计划不存在!"); | VUtils.isTrue(Objects.isNull(plan)).throwMessage("该评价计划不存在!"); | ||||
PerformanceAppraisalProjectGroup group = groupService.getById(reAppraisalGroupId); | |||||
VUtils.isTrue(Objects.isNull(group)).throwMessage("分组不存在!"); | |||||
// 判断当前评价计划分组是否存在 | |||||
List<PerformanceAppraisalProjectGroup> projectGroups = groupService.list(Wrappers.lambdaQuery(PerformanceAppraisalProjectGroup.class) | |||||
.eq(PerformanceAppraisalProjectGroup::getAppraisalId, planId)); | |||||
if (CollUtil.isEmpty(projectGroups)){ | |||||
throw new BizException("当前应用所在评价计划的分组信息不存在"); | |||||
} | |||||
// 判断分组内是否添加复评人员 | |||||
List<String> reUsers = projectGroups.stream().map(PerformanceAppraisalProjectGroup::getReAppraisalUsers).collect(Collectors.toList()); | |||||
if (CollUtil.isEmpty(reUsers)){ | |||||
throw new BizException("当前评价计划分组内未添加复评人员!"); | |||||
} | |||||
// 获取分组所在评价计划添加的未完成评价的应用信息 | // 获取分组所在评价计划添加的未完成评价的应用信息 | ||||
List<PerformanceAppraisalApplication> paas = performanceAppraisalApplicationService.list(Wrappers.lambdaQuery(PerformanceAppraisalApplication.class) | List<PerformanceAppraisalApplication> paas = performanceAppraisalApplicationService.list(Wrappers.lambdaQuery(PerformanceAppraisalApplication.class) | ||||
.eq(PerformanceAppraisalApplication::getAppraisalId, group.getAppraisalId()) | |||||
.eq(PerformanceAppraisalApplication::getAppraisalId, planId) | |||||
.eq(PerformanceAppraisalApplication::getIsCompleteAppraisal, Boolean.FALSE)); | .eq(PerformanceAppraisalApplication::getIsCompleteAppraisal, Boolean.FALSE)); | ||||
// 没有当前用户待评价的应用信息 | // 没有当前用户待评价的应用信息 | ||||
if (CollUtil.isEmpty(paas)){ | if (CollUtil.isEmpty(paas)){ | ||||
@@ -181,6 +190,7 @@ public class AppAppraisalManage { | |||||
.map(p -> { | .map(p -> { | ||||
PerformanceAppraisalAppVO vo = BeanUtil.copyProperties(p, PerformanceAppraisalAppVO.class); | PerformanceAppraisalAppVO vo = BeanUtil.copyProperties(p, PerformanceAppraisalAppVO.class); | ||||
vo.setCanAppraisal(checkCanAppraisal(employeeCode,p.getId(),planId)); | vo.setCanAppraisal(checkCanAppraisal(employeeCode,p.getId(),planId)); | ||||
vo.setApplicationName(StringUtils.isNotBlank(p.getApplicationName()) ? p.getApplicationName() : p.getRelatedExistsApplication()); | |||||
vo.setAppraisalId(planId); | vo.setAppraisalId(planId); | ||||
return vo; | return vo; | ||||
}) | }) | ||||
@@ -189,7 +199,7 @@ public class AppAppraisalManage { | |||||
return PageVo.of(res,page.getTotal()); | return PageVo.of(res,page.getTotal()); | ||||
} | } | ||||
public PageVo<PerformanceAppraisalAppVO> evaluatedList(Long planId, Long reAppraisalGroupId, PerformanceAppraisalListReq req) { | |||||
public PageVo<PerformanceAppraisalAppVO> evaluatedList(Long planId, PerformanceAppraisalListReq req) { | |||||
UserInfoDetails user = LoginUserUtil.loginUserDetail(); | UserInfoDetails user = LoginUserUtil.loginUserDetail(); | ||||
String employeeCode = user.getEmployeeCode(); | String employeeCode = user.getEmployeeCode(); | ||||
@@ -197,12 +207,20 @@ public class AppAppraisalManage { | |||||
PerformanceAppraisal plan = performanceAppraisalService.getById(planId); | PerformanceAppraisal plan = performanceAppraisalService.getById(planId); | ||||
VUtils.isTrue(Objects.isNull(plan)).throwMessage("该评价计划不存在!"); | VUtils.isTrue(Objects.isNull(plan)).throwMessage("该评价计划不存在!"); | ||||
PerformanceAppraisalProjectGroup group = groupService.getById(reAppraisalGroupId); | |||||
VUtils.isTrue(Objects.isNull(group)).throwMessage("分组不存在!"); | |||||
// 判断当前评价计划分组是否存在 | |||||
List<PerformanceAppraisalProjectGroup> projectGroups = groupService.list(Wrappers.lambdaQuery(PerformanceAppraisalProjectGroup.class) | |||||
.eq(PerformanceAppraisalProjectGroup::getAppraisalId, planId)); | |||||
if (CollUtil.isEmpty(projectGroups)){ | |||||
throw new BizException("当前应用所在评价计划的分组信息不存在"); | |||||
} | |||||
// 判断分组内是否添加复评人员 | |||||
List<String> reUsers = projectGroups.stream().map(PerformanceAppraisalProjectGroup::getReAppraisalUsers).collect(Collectors.toList()); | |||||
if (CollUtil.isEmpty(reUsers)){ | |||||
throw new BizException("当前评价计划分组内未添加复评人员!"); | |||||
} | |||||
// 获取分组所在评价计划添加的已完成评价的应用信息 | // 获取分组所在评价计划添加的已完成评价的应用信息 | ||||
List<PerformanceAppraisalApplication> paas = performanceAppraisalApplicationService.list(Wrappers.lambdaQuery(PerformanceAppraisalApplication.class) | List<PerformanceAppraisalApplication> paas = performanceAppraisalApplicationService.list(Wrappers.lambdaQuery(PerformanceAppraisalApplication.class) | ||||
.eq(PerformanceAppraisalApplication::getAppraisalId, group.getAppraisalId()) | |||||
.eq(PerformanceAppraisalApplication::getAppraisalId, planId) | |||||
.eq(PerformanceAppraisalApplication::getIsCompleteAppraisal, Boolean.TRUE)); | .eq(PerformanceAppraisalApplication::getIsCompleteAppraisal, Boolean.TRUE)); | ||||
if (CollUtil.isEmpty(paas)){ | if (CollUtil.isEmpty(paas)){ | ||||
return PageVo.empty(); | return PageVo.empty(); | ||||
@@ -239,6 +257,7 @@ public class AppAppraisalManage { | |||||
.map(p -> { | .map(p -> { | ||||
PerformanceAppraisalAppVO vo = BeanUtil.copyProperties(p, PerformanceAppraisalAppVO.class); | PerformanceAppraisalAppVO vo = BeanUtil.copyProperties(p, PerformanceAppraisalAppVO.class); | ||||
vo.setCanAppraisal(checkCanAppraisal(employeeCode,p.getId(),planId)); | vo.setCanAppraisal(checkCanAppraisal(employeeCode,p.getId(),planId)); | ||||
vo.setApplicationName(StringUtils.isNotBlank(p.getApplicationName()) ? p.getApplicationName() : p.getRelatedExistsApplication()); | |||||
vo.setAppraisalId(planId); | vo.setAppraisalId(planId); | ||||
return vo; | return vo; | ||||
}) | }) | ||||
@@ -272,8 +291,14 @@ public class AppAppraisalManage { | |||||
public AppAppraisalIndexDetailVO detail(Long appId) { | public AppAppraisalIndexDetailVO detail(Long appId) { | ||||
ProjectApplication projectApplication = projectApplicationService.getById(appId); | ProjectApplication projectApplication = projectApplicationService.getById(appId); | ||||
VUtils.isTrue(Objects.isNull(projectApplication)).throwMessage("应用不存在!"); | |||||
AppAppraisalIndexDetailVO resVo = new AppAppraisalIndexDetailVO(); | AppAppraisalIndexDetailVO resVo = new AppAppraisalIndexDetailVO(); | ||||
if (StringUtils.isNotBlank(projectApplication.getApplicationName())) { | |||||
resVo.setApplicationName(projectApplication.getApplicationName()); | |||||
}else { | |||||
resVo.setApplicationName(projectApplication.getRelatedExistsApplication()); | |||||
} | |||||
if (Objects.nonNull(projectApplication)){ | if (Objects.nonNull(projectApplication)){ | ||||
resVo.setBuildOrgName(projectApplication.getBuildOrgName()); | resVo.setBuildOrgName(projectApplication.getBuildOrgName()); | ||||
// todo 应用状态 需通过appCode通过IRS接口获取,这里暂时写死 已验收 | // todo 应用状态 需通过appCode通过IRS接口获取,这里暂时写死 已验收 | ||||
@@ -289,7 +314,7 @@ public class AppAppraisalManage { | |||||
Map<Long, PerformanceAppraisalAppScoreInfo> commonScoreInfoMap = performanceAppraisalAppScoreInfoService.list(Wrappers.lambdaQuery(PerformanceAppraisalAppScoreInfo.class) | Map<Long, PerformanceAppraisalAppScoreInfo> commonScoreInfoMap = performanceAppraisalAppScoreInfoService.list(Wrappers.lambdaQuery(PerformanceAppraisalAppScoreInfo.class) | ||||
.eq(PerformanceAppraisalAppScoreInfo::getApplicationId, appId) | .eq(PerformanceAppraisalAppScoreInfo::getApplicationId, appId) | ||||
.eq(PerformanceAppraisalAppScoreInfo::getIndexType, AppIndexTypeEnum.COMMON.getCode())) | .eq(PerformanceAppraisalAppScoreInfo::getIndexType, AppIndexTypeEnum.COMMON.getCode())) | ||||
.stream().collect(Collectors.toMap(PerformanceAppraisalAppScoreInfo::getIndexId, p -> p)); | |||||
.stream().collect(Collectors.toMap(PerformanceAppraisalAppScoreInfo::getId, p -> p)); | |||||
if (CollUtil.isNotEmpty(commonIndexList)) { | if (CollUtil.isNotEmpty(commonIndexList)) { | ||||
List<AppIndexDetailVO> commonIndexDetails = commonIndexList.stream().map(i -> { | List<AppIndexDetailVO> commonIndexDetails = commonIndexList.stream().map(i -> { | ||||
AppIndexDetailVO vo = new AppIndexDetailVO(); | AppIndexDetailVO vo = new AppIndexDetailVO(); | ||||
@@ -312,7 +337,7 @@ public class AppAppraisalManage { | |||||
Map<Long, PerformanceAppraisalAppScoreInfo> auxScoreInfoMap = performanceAppraisalAppScoreInfoService.list(Wrappers.lambdaQuery(PerformanceAppraisalAppScoreInfo.class) | Map<Long, PerformanceAppraisalAppScoreInfo> auxScoreInfoMap = performanceAppraisalAppScoreInfoService.list(Wrappers.lambdaQuery(PerformanceAppraisalAppScoreInfo.class) | ||||
.eq(PerformanceAppraisalAppScoreInfo::getApplicationId, appId) | .eq(PerformanceAppraisalAppScoreInfo::getApplicationId, appId) | ||||
.eq(PerformanceAppraisalAppScoreInfo::getIndexType, AppIndexTypeEnum.AUX.getCode())) | .eq(PerformanceAppraisalAppScoreInfo::getIndexType, AppIndexTypeEnum.AUX.getCode())) | ||||
.stream().collect(Collectors.toMap(PerformanceAppraisalAppScoreInfo::getIndexId, p -> p)); | |||||
.stream().collect(Collectors.toMap(PerformanceAppraisalAppScoreInfo::getId, p -> p)); | |||||
if (CollUtil.isNotEmpty(auxIndexList)) { | if (CollUtil.isNotEmpty(auxIndexList)) { | ||||
List<AppIndexDetailVO> auxIndexDetails = auxIndexList.stream().map(i -> { | List<AppIndexDetailVO> auxIndexDetails = auxIndexList.stream().map(i -> { | ||||
AppIndexDetailVO vo = new AppIndexDetailVO(); | AppIndexDetailVO vo = new AppIndexDetailVO(); | ||||
@@ -332,11 +357,11 @@ public class AppAppraisalManage { | |||||
Map<Long, PerformanceAppraisalAppScoreInfo> businessScoreInfoMap = performanceAppraisalAppScoreInfoService.list(Wrappers.lambdaQuery(PerformanceAppraisalAppScoreInfo.class) | Map<Long, PerformanceAppraisalAppScoreInfo> businessScoreInfoMap = performanceAppraisalAppScoreInfoService.list(Wrappers.lambdaQuery(PerformanceAppraisalAppScoreInfo.class) | ||||
.eq(PerformanceAppraisalAppScoreInfo::getApplicationId, appId) | .eq(PerformanceAppraisalAppScoreInfo::getApplicationId, appId) | ||||
.eq(PerformanceAppraisalAppScoreInfo::getIndexType, AppIndexTypeEnum.BUSINESS.getCode())) | .eq(PerformanceAppraisalAppScoreInfo::getIndexType, AppIndexTypeEnum.BUSINESS.getCode())) | ||||
.stream().collect(Collectors.toMap(PerformanceAppraisalAppScoreInfo::getIndexId, p -> p)); | |||||
.stream().collect(Collectors.toMap(PerformanceAppraisalAppScoreInfo::getId, p -> p)); | |||||
if (CollUtil.isNotEmpty(coreBusinessIndicators)) { | if (CollUtil.isNotEmpty(coreBusinessIndicators)) { | ||||
List<AppBusinessIndexDetailVO> businessIndexDetails = coreBusinessIndicators.stream().map(c -> { | List<AppBusinessIndexDetailVO> businessIndexDetails = coreBusinessIndicators.stream().map(c -> { | ||||
AppBusinessIndexDetailVO appBusinessIndexDetailVo = new AppBusinessIndexDetailVO(); | AppBusinessIndexDetailVO appBusinessIndexDetailVo = new AppBusinessIndexDetailVO(); | ||||
BeanUtils.copyProperties(coreBusinessIndicators, appBusinessIndexDetailVo); | |||||
BeanUtils.copyProperties(c, appBusinessIndexDetailVo); | |||||
PerformanceAppraisalAppScoreInfo scoreInfo = businessScoreInfoMap.get(c.getId()); | PerformanceAppraisalAppScoreInfo scoreInfo = businessScoreInfoMap.get(c.getId()); | ||||
if (Objects.nonNull(scoreInfo)) { | if (Objects.nonNull(scoreInfo)) { | ||||
appBusinessIndexDetailVo.setAppraisalScore(scoreInfo.getAppraisalScore()); | appBusinessIndexDetailVo.setAppraisalScore(scoreInfo.getAppraisalScore()); | ||||
@@ -5,13 +5,17 @@ import cn.hutool.core.collection.CollUtil; | |||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers; | import com.baomidou.mybatisplus.core.toolkit.Wrappers; | ||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | ||||
import com.google.common.collect.Lists; | |||||
import com.ningdatech.basic.exception.BizException; | import com.ningdatech.basic.exception.BizException; | ||||
import com.ningdatech.basic.function.VUtils; | import com.ningdatech.basic.function.VUtils; | ||||
import com.ningdatech.basic.model.PageVo; | import com.ningdatech.basic.model.PageVo; | ||||
import com.ningdatech.basic.util.StrPool; | import com.ningdatech.basic.util.StrPool; | ||||
import com.ningdatech.pmapi.common.enumeration.CommonEnum; | |||||
import com.ningdatech.pmapi.performance.constant.BizConst; | import com.ningdatech.pmapi.performance.constant.BizConst; | ||||
import com.ningdatech.pmapi.performance.enumration.AppraisalTypeEnum; | import com.ningdatech.pmapi.performance.enumration.AppraisalTypeEnum; | ||||
import com.ningdatech.pmapi.performance.enumration.PerformanceTemplateTypeEnum; | |||||
import com.ningdatech.pmapi.performance.helper.TemplateDetailBuildHelper; | import com.ningdatech.pmapi.performance.helper.TemplateDetailBuildHelper; | ||||
import com.ningdatech.pmapi.performance.model.dto.AppraisalScoreExportDTO; | |||||
import com.ningdatech.pmapi.performance.model.dto.ProjectAppraisalDTO; | import com.ningdatech.pmapi.performance.model.dto.ProjectAppraisalDTO; | ||||
import com.ningdatech.pmapi.performance.model.dto.ProjectAppraisalInfoDTO; | import com.ningdatech.pmapi.performance.model.dto.ProjectAppraisalInfoDTO; | ||||
import com.ningdatech.pmapi.performance.model.entity.*; | import com.ningdatech.pmapi.performance.model.entity.*; | ||||
@@ -36,6 +40,7 @@ import org.apache.commons.lang3.StringUtils; | |||||
import org.springframework.stereotype.Component; | import org.springframework.stereotype.Component; | ||||
import org.springframework.transaction.annotation.Transactional; | import org.springframework.transaction.annotation.Transactional; | ||||
import javax.servlet.http.HttpServletResponse; | |||||
import java.math.BigDecimal; | import java.math.BigDecimal; | ||||
import java.time.LocalDateTime; | import java.time.LocalDateTime; | ||||
import java.util.*; | import java.util.*; | ||||
@@ -367,4 +372,103 @@ public class OrgSelfAppraisalManage { | |||||
} | } | ||||
return "提交失败"; | return "提交失败"; | ||||
} | } | ||||
public void exportScore(HttpServletResponse response, String projectCode) { | |||||
UserInfoDetails user = LoginUserUtil.loginUserDetail(); | |||||
String regionCode = user.getRegionCode(); | |||||
ProjectAppraisalIndexDetailVO vo = new ProjectAppraisalIndexDetailVO(); | |||||
// 根据项目编码获取最新版本的项目信息 | |||||
Project project = projectService.getProjectByCode(projectCode); | |||||
VUtils.isTrue(Objects.isNull(project)).throwMessage("项目不存在!"); | |||||
// 根据项目类型、预算年度、批复金额、项目标签匹配本区域指标模版 | |||||
Integer projectType = project.getProjectType(); | |||||
Integer projectYear = project.getProjectYear(); | |||||
BigDecimal approvalAmount = project.getApprovalAmount(); | |||||
VUtils.isTrue(Objects.isNull(approvalAmount)).throwMessage("未获取到该项目的立项批复金额"); | |||||
// 根据项目code获取项目标签ID列表 | |||||
List<Long> tagIdList = projectTagService.list(Wrappers.lambdaQuery(ProjectTag.class) | |||||
.eq(ProjectTag::getProjectCode, projectCode)).stream() | |||||
.map(ProjectTag::getTagId).collect(Collectors.toList()); | |||||
VUtils.isTrue(CollUtil.isEmpty(tagIdList)).throwMessage("当前项目未设置标签,匹配不到指标模板,请至项目库或评价计划编辑页面设置标签!"); | |||||
List<String> strIdList = tagIdList.stream().map(String::valueOf).collect(Collectors.toList()); | |||||
String projectTagIds = String.join(StrPool.COMMA, strIdList); | |||||
Integer amountRange = null; | |||||
if (approvalAmount.compareTo(BigDecimal.valueOf(BizConst.FIVE_MILLION)) < 0){ | |||||
amountRange = BizConst.AMOUNT_RANGE_ONE; | |||||
} else if (approvalAmount.compareTo(BigDecimal.valueOf(BizConst.FIVE_MILLION)) >= 0 && | |||||
approvalAmount.compareTo(BigDecimal.valueOf(BizConst.TWENTY_MILLION)) < 0) { | |||||
amountRange = BizConst.AMOUNT_RANGE_TWO; | |||||
}else if (approvalAmount.compareTo(BigDecimal.valueOf(BizConst.TWENTY_MILLION)) >= 0){ | |||||
amountRange = BizConst.AMOUNT_RANGE_THREE; | |||||
} | |||||
LambdaQueryWrapper<PerformanceIndicatorProjectTemplate> wrapper = Wrappers.lambdaQuery(PerformanceIndicatorProjectTemplate.class) | |||||
.eq(PerformanceIndicatorProjectTemplate::getRegionCode, regionCode) | |||||
.eq(PerformanceIndicatorProjectTemplate::getProjectType, projectType) | |||||
.eq(PerformanceIndicatorProjectTemplate::getProjectYear, projectYear) | |||||
.eq(PerformanceIndicatorProjectTemplate::getAmountRange, amountRange) | |||||
.eq(PerformanceIndicatorProjectTemplate::getProjectTagIds,projectTagIds) | |||||
.orderByDesc(PerformanceIndicatorProjectTemplate::getUpdateOn); | |||||
PerformanceIndicatorProjectTemplate projectTemplate = indicatorProjectTemplateService.getOne(wrapper); | |||||
if (Objects.isNull(projectTemplate)){ | |||||
throw new BizException("该项目匹配不到指标模板,请返回上一页或者刷新重试。"); | |||||
} | |||||
// 装配项目指标详情及分数信息 | |||||
// 获取模版绩效指标详情 | |||||
List<PerformanceIndicatorProjectTemplateDetail> templateDetails = indicatorProjectTemplateDetailService.list(Wrappers.lambdaQuery(PerformanceIndicatorProjectTemplateDetail.class) | |||||
.eq(PerformanceIndicatorProjectTemplateDetail::getTemplateId, projectTemplate.getId()) | |||||
.eq(PerformanceIndicatorProjectTemplateDetail::getIsAdditional,Boolean.FALSE)); | |||||
// 获取模版附加绩效指标详情 | |||||
List<PerformanceIndicatorProjectTemplateDetail> additionalTemplateDetails = indicatorProjectTemplateDetailService.list(Wrappers.lambdaQuery(PerformanceIndicatorProjectTemplateDetail.class) | |||||
.eq(PerformanceIndicatorProjectTemplateDetail::getTemplateId, projectTemplate.getId()) | |||||
.eq(PerformanceIndicatorProjectTemplateDetail::getIsAdditional,Boolean.TRUE)); | |||||
List<ProjectTemplateDetailVO> templateDetailVos = templateDetailBuildHelper.buildTemplateDetail(templateDetails,projectCode,vo); | |||||
List<ProjectTemplateDetailVO> additionalTemplateDetailVos = templateDetailBuildHelper.buildTemplateDetail(additionalTemplateDetails,projectCode,vo); | |||||
Map<Long, ProjectTemplateDetailVO> templateDetailVoMap = templateDetailVos.stream().collect(Collectors.toMap(ProjectTemplateDetailVO::getId, t -> t)); | |||||
List<AppraisalScoreExportDTO> exportDataList = Lists.newArrayList(); | |||||
// 构建指标和打分详情 | |||||
Map<Long, PerformanceAppraisalScoreInfo> scoreInfoMap = performanceAppraisalScoreInfoService.list().stream() | |||||
.collect(Collectors.toMap(PerformanceAppraisalScoreInfo::getTemplateDetailId, p -> p)); | |||||
// 筛选出所有三级指标 | |||||
List<ProjectTemplateDetailVO> thirdVos = templateDetailVos.stream() | |||||
.filter(t -> PerformanceTemplateTypeEnum.THIRD_INDEX.getCode().equals(t.getType())) | |||||
.collect(Collectors.toList()); | |||||
for (ProjectTemplateDetailVO templateDetailVo : thirdVos) { | |||||
AppraisalScoreExportDTO thirdDto = new AppraisalScoreExportDTO(); | |||||
thirdDto.setThirdIndexName(templateDetailVo.getName()); | |||||
thirdDto.setIndexDetail(templateDetailVo.getIndexDetail()); | |||||
thirdDto.setGradeDetail(templateDetailVo.getGradeDetail()); | |||||
thirdDto.setSupportMaterial(templateDetailVo.getSupportMaterial()); | |||||
thirdDto.setIndexScore(templateDetailVo.getIndexScore()); | |||||
thirdDto.setIsAdditional(CommonEnum.YES.getDesc()); | |||||
PerformanceAppraisalScoreInfo appraisalScoreInfo = scoreInfoMap.get(templateDetailVo.getId()); | |||||
if (Objects.nonNull(appraisalScoreInfo)) { | |||||
thirdDto.setAppraisalBasis(appraisalScoreInfo.getAppraisalBasis()); | |||||
} | |||||
exportDataList.add(thirdDto); | |||||
// 二级指标名称 | |||||
Long secondId = templateDetailVo.getParentId(); | |||||
if (Objects.nonNull(secondId)) { | |||||
ProjectTemplateDetailVO secondTemplateDetailVo = templateDetailVoMap.get(secondId); | |||||
if (Objects.nonNull(secondTemplateDetailVo)) { | |||||
thirdDto.setSecondIndexName(secondTemplateDetailVo.getName()); | |||||
// 一级指标名称 | |||||
Long firstId = secondTemplateDetailVo.getParentId(); | |||||
if (Objects.nonNull(firstId)){ | |||||
ProjectTemplateDetailVO firstTemplateDetailVo = templateDetailVoMap.get(secondId); | |||||
if (Objects.nonNull(firstTemplateDetailVo)) { | |||||
thirdDto.setFirstIndexName(firstTemplateDetailVo.getName()); | |||||
} | |||||
} | |||||
} | |||||
} | |||||
} | |||||
} | |||||
} | } |
@@ -163,6 +163,9 @@ public class ReAppraisalManage { | |||||
// 获取分组内的项目信息 | // 获取分组内的项目信息 | ||||
PerformanceAppraisalProjectGroup projectGroup = groupService.getById(groupId); | PerformanceAppraisalProjectGroup projectGroup = groupService.getById(groupId); | ||||
if (Objects.isNull(projectGroup)){ | |||||
throw new BizException("当前复评用户所在分组不存在!"); | |||||
} | |||||
String projectCodes = projectGroup.getProjectCodes(); | String projectCodes = projectGroup.getProjectCodes(); | ||||
Long appraisalId = projectGroup.getAppraisalId(); | Long appraisalId = projectGroup.getAppraisalId(); | ||||
VUtils.isTrue(StringUtils.isBlank(projectCodes)).throwMessage("分组内项目信息不存在!"); | VUtils.isTrue(StringUtils.isBlank(projectCodes)).throwMessage("分组内项目信息不存在!"); | ||||
@@ -81,7 +81,7 @@ public class RectifyAuditManage { | |||||
List<Role> userRoleList = user.getUserRoleList(); | List<Role> userRoleList = user.getUserRoleList(); | ||||
List<Long> roleIdList = userRoleList.stream().map(Role::getId).collect(Collectors.toList()); | List<Long> roleIdList = userRoleList.stream().map(Role::getId).collect(Collectors.toList()); | ||||
Role role = | Role role = | ||||
roleService.getOne(Wrappers.lambdaQuery(Role.class).eq(Role::getName, RoleEnum.EXPERT.getDesc())); | |||||
roleService.getOne(Wrappers.lambdaQuery(Role.class).eq(Role::getName, RoleEnum.EXPERT.getDesc())); | |||||
if (Objects.isNull(role)) { | if (Objects.isNull(role)) { | ||||
throw new BizException("登录用户没有专家角色!"); | throw new BizException("登录用户没有专家角色!"); | ||||
} | } | ||||
@@ -107,46 +107,52 @@ public class RectifyAuditManage { | |||||
// 获取分组所在的评价计划ID | // 获取分组所在的评价计划ID | ||||
List<Long> appraisalIds = | List<Long> appraisalIds = | ||||
groups.stream().map(PerformanceAppraisalProjectGroup::getAppraisalId).collect(Collectors.toList()); | |||||
Page<PerformanceAppraisal> page = req.page(); | |||||
LambdaQueryWrapper<PerformanceAppraisal> wrapper = Wrappers.lambdaQuery(PerformanceAppraisal.class) | |||||
.in(PerformanceAppraisal::getId, appraisalIds).orderByDesc(PerformanceAppraisal::getUpdateOn); | |||||
performanceAppraisalService.page(page, wrapper); | |||||
if (0L == page.getTotal()) { | |||||
return PageVo.empty(); | |||||
} | |||||
groups.stream().map(PerformanceAppraisalProjectGroup::getAppraisalId).collect(Collectors.toList()); | |||||
// 获取评价计划内的所有需整改核查项目信息(整改状态为整改待审核、整改审核不通过、整改审核通过) | // 获取评价计划内的所有需整改核查项目信息(整改状态为整改待审核、整改审核不通过、整改审核通过) | ||||
List<PerformanceAppraisalProject> paps = performanceAppraisalProjectService.list(Wrappers | List<PerformanceAppraisalProject> paps = performanceAppraisalProjectService.list(Wrappers | ||||
.lambdaQuery(PerformanceAppraisalProject.class) | |||||
.in(PerformanceAppraisalProject::getAppraisalId, appraisalIds) | |||||
.and(wp -> wp.eq(PerformanceAppraisalProject::getRectifyStatus, RectifyStatusEnum.TO_BE_REVIEWED.getCode()) | |||||
.or().eq(PerformanceAppraisalProject::getRectifyStatus, RectifyStatusEnum.NOT_APPROVED.getCode()).or() | |||||
.eq(PerformanceAppraisalProject::getRectifyStatus, RectifyStatusEnum.APPROVED.getCode())) | |||||
.eq(PerformanceAppraisalProject::getIsRectify, Boolean.TRUE)); | |||||
.lambdaQuery(PerformanceAppraisalProject.class) | |||||
.in(PerformanceAppraisalProject::getAppraisalId, appraisalIds) | |||||
.and(wp -> wp.eq(PerformanceAppraisalProject::getRectifyStatus, RectifyStatusEnum.TO_BE_REVIEWED.getCode()) | |||||
.or().eq(PerformanceAppraisalProject::getRectifyStatus, RectifyStatusEnum.NOT_APPROVED.getCode()).or() | |||||
.eq(PerformanceAppraisalProject::getRectifyStatus, RectifyStatusEnum.APPROVED.getCode())) | |||||
.eq(PerformanceAppraisalProject::getIsRectify, Boolean.TRUE)); | |||||
// 评价计划内符合条件的项目数为空 | // 评价计划内符合条件的项目数为空 | ||||
if (CollUtil.isEmpty(paps)) { | if (CollUtil.isEmpty(paps)) { | ||||
return PageVo.empty(); | return PageVo.empty(); | ||||
} | } | ||||
Set<Long> appraisalIdList = paps.stream().map(PerformanceAppraisalProject::getAppraisalId).collect(Collectors.toSet()); | |||||
Page<PerformanceAppraisal> page = req.page(); | |||||
LambdaQueryWrapper<PerformanceAppraisal> wrapper = Wrappers.lambdaQuery(PerformanceAppraisal.class) | |||||
.in(PerformanceAppraisal::getId, appraisalIdList).orderByDesc(PerformanceAppraisal::getUpdateOn); | |||||
performanceAppraisalService.page(page, wrapper); | |||||
if (0L == page.getTotal()) { | |||||
return PageVo.empty(); | |||||
} | |||||
// 按评价计划分组 | // 按评价计划分组 | ||||
Map<Long, List<PerformanceAppraisalProject>> papsMap = | Map<Long, List<PerformanceAppraisalProject>> papsMap = | ||||
paps.stream().collect(Collectors.groupingBy(PerformanceAppraisalProject::getAppraisalId)); | |||||
paps.stream().collect(Collectors.groupingBy(PerformanceAppraisalProject::getAppraisalId)); | |||||
List<PerformanceAppraisalVO> res = page.getRecords().stream().map(p -> { | List<PerformanceAppraisalVO> res = page.getRecords().stream().map(p -> { | ||||
PerformanceAppraisalVO vo = BeanUtil.copyProperties(p, PerformanceAppraisalVO.class); | PerformanceAppraisalVO vo = BeanUtil.copyProperties(p, PerformanceAppraisalVO.class); | ||||
// 统计评价计划待核查项目数量(整改状态为:整改待审核) | // 统计评价计划待核查项目数量(整改状态为:整改待审核) | ||||
List<PerformanceAppraisalProject> projects = papsMap.get(p.getId()); | List<PerformanceAppraisalProject> projects = papsMap.get(p.getId()); | ||||
List<PerformanceAppraisalProject> unRectifyAuditProjects = | |||||
projects.stream().filter(d -> RectifyStatusEnum.TO_BE_REVIEWED.getCode().equals(d.getRectifyStatus())) | |||||
.collect(Collectors.toList()); | |||||
vo.setUnRectifyAuditNumber(unRectifyAuditProjects.size()); | |||||
// 统计评价计划已核查项目数量(整改状态为:整改核查不通过、整改审核通过) | |||||
List<PerformanceAppraisalProject> rectifiedAuditProjects = | |||||
paps.stream() | |||||
.filter(d -> RectifyStatusEnum.NOT_APPROVED.getCode().equals(d.getRectifyStatus()) | |||||
|| RectifyStatusEnum.APPROVED.getCode().equals(d.getRectifyStatus())) | |||||
.collect(Collectors.toList()); | |||||
vo.setRectifiedAuditNumber(rectifiedAuditProjects.size()); | |||||
if (CollUtil.isNotEmpty(projects)) { | |||||
List<PerformanceAppraisalProject> unRectifyAuditProjects = | |||||
projects.stream().filter(d -> RectifyStatusEnum.TO_BE_REVIEWED.getCode().equals(d.getRectifyStatus())) | |||||
.collect(Collectors.toList()); | |||||
vo.setUnRectifyAuditNumber(unRectifyAuditProjects.size()); | |||||
// 统计评价计划已核查项目数量(整改状态为:整改核查不通过、整改审核通过) | |||||
List<PerformanceAppraisalProject> rectifiedAuditProjects = | |||||
paps.stream() | |||||
.filter(d -> RectifyStatusEnum.NOT_APPROVED.getCode().equals(d.getRectifyStatus()) | |||||
|| RectifyStatusEnum.APPROVED.getCode().equals(d.getRectifyStatus())) | |||||
.collect(Collectors.toList()); | |||||
vo.setRectifiedAuditNumber(rectifiedAuditProjects.size()); | |||||
} | |||||
return vo; | return vo; | ||||
}).collect(Collectors.toList()); | }).collect(Collectors.toList()); | ||||
return PageVo.of(res, page.getTotal()); | return PageVo.of(res, page.getTotal()); | ||||
@@ -155,6 +155,9 @@ public class VerifyManage { | |||||
// 获取分组内的项目信息 | // 获取分组内的项目信息 | ||||
PerformanceAppraisalProjectGroup projectGroup = groupService.getById(groupId); | PerformanceAppraisalProjectGroup projectGroup = groupService.getById(groupId); | ||||
if (Objects.isNull(projectGroup)){ | |||||
throw new BizException("当前核查用户所在分组不存在!"); | |||||
} | |||||
String projectCodes = projectGroup.getProjectCodes(); | String projectCodes = projectGroup.getProjectCodes(); | ||||
Long appraisalId = projectGroup.getAppraisalId(); | Long appraisalId = projectGroup.getAppraisalId(); | ||||
VUtils.isTrue(StringUtils.isBlank(projectCodes)).throwMessage("分组内项目信息不存在!"); | VUtils.isTrue(StringUtils.isBlank(projectCodes)).throwMessage("分组内项目信息不存在!"); | ||||
@@ -0,0 +1,49 @@ | |||||
package com.ningdatech.pmapi.performance.model.dto; | |||||
import java.io.Serializable; | |||||
import java.math.BigDecimal; | |||||
import io.swagger.annotations.ApiModelProperty; | |||||
import lombok.Data; | |||||
/** | |||||
* 绩效打分详情导出实体 | |||||
* | |||||
* @author CMM | |||||
* @since 2023/08/16 10:31 | |||||
*/ | |||||
@Data | |||||
public class AppraisalScoreExportDTO implements Serializable { | |||||
private static final long serialVersionUID = 1L; | |||||
@ApiModelProperty("一级指标名称") | |||||
private String firstIndexName; | |||||
@ApiModelProperty("二级指标名称") | |||||
private String secondIndexName; | |||||
@ApiModelProperty("三级指标名称") | |||||
private String thirdIndexName; | |||||
@ApiModelProperty("指标分值 3级指标才有") | |||||
private BigDecimal indexScore; | |||||
@ApiModelProperty("指标细则 3级指标才有") | |||||
private String indexDetail; | |||||
@ApiModelProperty("评分细则") | |||||
private String gradeDetail; | |||||
@ApiModelProperty("佐证材料描述") | |||||
private String supportMaterial; | |||||
@ApiModelProperty("自评依据") | |||||
private String appraisalBasis; | |||||
@ApiModelProperty("自评得分") | |||||
private BigDecimal appraisalScore; | |||||
@ApiModelProperty("是否为附加指标") | |||||
private String isAdditional; | |||||
} |
@@ -29,6 +29,9 @@ public class AppAppraisalIndexDetailVO implements Serializable { | |||||
@ApiModelProperty("应用状态") | @ApiModelProperty("应用状态") | ||||
private String applicationStatus; | private String applicationStatus; | ||||
@ApiModelProperty("应用名称") | |||||
private String applicationName; | |||||
@ApiModelProperty("通用指标详情") | @ApiModelProperty("通用指标详情") | ||||
private List<AppIndexDetailVO> commonIndexDetails; | private List<AppIndexDetailVO> commonIndexDetails; | ||||