diff --git a/src/main/java/com/lz/modules/app/controller/ResultRecordController.java b/src/main/java/com/lz/modules/app/controller/ResultRecordController.java
index 40e6aa0d..5a2e87c6 100644
--- a/src/main/java/com/lz/modules/app/controller/ResultRecordController.java
+++ b/src/main/java/com/lz/modules/app/controller/ResultRecordController.java
@@ -31,6 +31,7 @@ import com.lz.modules.sys.service.app.ResultRecordService;
import io.swagger.annotations.*;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
+import org.apache.ibatis.annotations.Param;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -335,22 +336,48 @@ public class ResultRecordController extends AbstractController {
*/
@GetMapping("/getDetail")
@ApiOperation("获取绩效详情-吴林")
+ @ApiImplicitParams({@ApiImplicitParam(name = "id", value = "绩效id可为空,为空时使用token的用户获取"),
+ @ApiImplicitParam(name = "startId", value = "任务id可为空,为空时使用token的用户获取")})
@ApiResponses({@ApiResponse(code = 200, message = "成功", response = ResultRecordDetailDto.class)})
- public R getDetail(@RequestParam @ApiParam("绩效id") Long id) {
+ public R getDetail(@RequestParam Map param) {
+ Long id = null;
+ Long startId = null;
+ SysUserEntity user = getUser();
+ ResultRecord resultRecord = null;
- ResultRecord resultRecord = lzResultRecordService.selectResultRecordById(id);
- if(resultRecord == null){
- return R.error("绩效不存在");
- }
- /*SysUserEntity user = getUser();
- if(resultRecord.getStaffId().longValue() != user.getUserId().longValue()){
- //下面判断权限,是否可读
- EvaluationStartStaff evaluationStartStaff =
- evaluationStartStaffService.selectManagerEvaluationStartStaff(resultRecord.getEvaluationId(), user.getUserId());
- if(evaluationStartStaff == null){//非考核组设置的绩效管理人员,下面应在查询其他权限
- return R.error("未被授权访问");
+ if(param.containsKey("id")){
+ String value = param.get("id").toString();
+ if(value.length() > 0){
+ id = Long.parseLong(value);
+ resultRecord = lzResultRecordService.selectResultRecordById(id);
+ if(resultRecord == null){
+ return R.error("绩效不存在");
+ }
+ //下面判断权限
+ if(user.getUserId().longValue() != resultRecord.getStaffId().longValue()){
+ //不是自己的绩效,判断是否为绩效管理人员,老板,部门管理人员
+ log.info("不是自己的绩效");
+ }
}
- }*/
+
+
+ }else if(param.containsKey("startId")){//根据startId和token获取
+ String value = param.get("startId").toString();
+ if(value.length() > 0){
+ startId = Long.parseLong(value);
+ resultRecord = lzResultRecordService.selectResultRecordByStaffIdAndStartId(getUserId(), startId);
+ if(resultRecord == null){
+ return R.error("绩效不存在");
+ }
+ }
+ }else{
+ //根据token获取
+ resultRecord = lzResultRecordService.selectLastResultRecordByUserId(getUserId());
+ if(resultRecord == null){
+ return R.error("绩效不存在");
+ }
+ }
+
//获取考核维度等信息
ResultRecordDetailDto resultRecordDetailDto = new ResultRecordDetailDto();
BeanUtils.copyProperties(resultRecord, resultRecordDetailDto);
@@ -403,7 +430,7 @@ public class ResultRecordController extends AbstractController {
//流程已经到了审批节点,那么判断评分是否为或签,如果是那么只需要返回实际评分的那个人即可,否则全部返回
List flowRecords = flowRecordService.selectFlowRecordByRecordIdFlowProcess(resultRecord.getId(), ChartFlowType.SCORE.getCode());//获取当前的流程节点
if(flowRecords.get(0).getType().intValue() == 1){
- //或签
+ //或签,这里还有优化。多个评分节点时,针对每个节点是否为或签
isOrScore = true;
}
@@ -417,7 +444,7 @@ public class ResultRecordController extends AbstractController {
resultScore.setWeight(record.getWeight());
}else{
//多人的时候权重平分
- resultScore.setWeight(record.getWeight().divide(BigDecimal.valueOf(staffs1.size()), RoundingMode.CEILING));
+ resultScore.setWeight(record.getWeight().divide(BigDecimal.valueOf(staffs1.size()), RoundingMode.HALF_UP));
}
scoreDtos.add(resultScore);
@@ -460,7 +487,7 @@ public class ResultRecordController extends AbstractController {
resultRecortModelDto.setMaxCount(null);
}
List detailDtos =
- resultDetailService.selectDtosByRecordId(resultRecord.getId(), model.getType());
+ resultDetailService.selectDtosByRecordId(resultRecord.getId(), model.getId());
for (ResultDetailDto dto:detailDtos
) {
//下面设置计算公式
@@ -685,6 +712,7 @@ public class ResultRecordController extends AbstractController {
resultDetail.setStaffId(resultRecord.getStaffId());
resultDetail.setRecordId(resultRecord.getId());
resultDetail.setType(model.getType());
+ resultDetail.setModelId(model.getId());
inserts.add(resultDetail);
}
if(resultDetail.getIsDelete() == null || resultDetail.getIsDelete().intValue() == 0){
diff --git a/src/main/java/com/lz/modules/app/resp/OwnResultResp.java b/src/main/java/com/lz/modules/app/resp/OwnResultResp.java
index 210e36c7..b8f2322b 100644
--- a/src/main/java/com/lz/modules/app/resp/OwnResultResp.java
+++ b/src/main/java/com/lz/modules/app/resp/OwnResultResp.java
@@ -19,5 +19,5 @@ public class OwnResultResp {
private String name;
//最后得分
@ApiModelProperty("最后得分")
- private BigDecimal lastScore;
+ private BigDecimal allScore;
}
diff --git a/src/main/java/com/lz/modules/flow/model/ResultDetailDto.java b/src/main/java/com/lz/modules/flow/model/ResultDetailDto.java
index a3dbbbc8..601b7219 100644
--- a/src/main/java/com/lz/modules/flow/model/ResultDetailDto.java
+++ b/src/main/java/com/lz/modules/flow/model/ResultDetailDto.java
@@ -58,6 +58,8 @@ public class ResultDetailDto {
@ApiModelProperty(value = "评分详细", name = "scoreDtos")
private List scoreDtos;
+ @ApiModelProperty(value = "维度id lz_result_model的id", name = "modelId")
+ private Long modelId;
/**
*
* @return
diff --git a/src/main/java/com/lz/modules/flow/model/ResultRecordDetailDto.java b/src/main/java/com/lz/modules/flow/model/ResultRecordDetailDto.java
index 141291f6..b2c906c0 100644
--- a/src/main/java/com/lz/modules/flow/model/ResultRecordDetailDto.java
+++ b/src/main/java/com/lz/modules/flow/model/ResultRecordDetailDto.java
@@ -37,6 +37,9 @@ public class ResultRecordDetailDto {
@ApiModelProperty(value = "员工id", name = "staffId")
private Long staffId;
+ @ApiModelProperty(value = "任务id", name = "startId")
+ private Long startId;
+
//使用的哪个等级。等级组id,lz_result_grade的group_id
diff --git a/src/main/java/com/lz/modules/flow/model/StartStartDto.java b/src/main/java/com/lz/modules/flow/model/StartStartDto.java
new file mode 100644
index 00000000..c9b00db6
--- /dev/null
+++ b/src/main/java/com/lz/modules/flow/model/StartStartDto.java
@@ -0,0 +1,12 @@
+package com.lz.modules.flow.model;
+
+import com.lz.modules.sys.entity.app.ResultRecord;
+import lombok.Data;
+
+import java.util.ArrayList;
+import java.util.List;
+@Data
+public class StartStartDto {
+ private int status;
+ private List resultRecordList = new ArrayList<>();
+}
diff --git a/src/main/java/com/lz/modules/flow/service/impl/EvaluationGroupServiceImpl.java b/src/main/java/com/lz/modules/flow/service/impl/EvaluationGroupServiceImpl.java
index d8966a2f..941867bb 100644
--- a/src/main/java/com/lz/modules/flow/service/impl/EvaluationGroupServiceImpl.java
+++ b/src/main/java/com/lz/modules/flow/service/impl/EvaluationGroupServiceImpl.java
@@ -138,28 +138,32 @@ public class EvaluationGroupServiceImpl extends ServiceImpl staffRoles = staffRoleService.selectAllByStaffId(sysUserEntity.getUserId());
+ List staffRoles = staffRoleService.selectAllByStaffId(sysUserEntity.getUserId());//一个人只会有一个
if(staffRoles.size() == 0){
log.info("非绩效管理员登录查询");
return null;
}
- List staffRoleEvaluationGroups =
- staffRoleEvaluationGroupService.selectStaffRoleEvaluationsGroupByStaffRoles(staffRoles);
- if(staffRoleEvaluationGroups.size() == 0){
- log.info("查询的管理组为空");
- return null;
- }
- gIds = new ArrayList<>();
- for (StaffRoleEvaluationGroup staffRoleEvaluationGroup:staffRoleEvaluationGroups
- ) {
- if(staffRoleEvaluationGroup.getEvaluationGroupId().longValue() == 0l){//管理所有组
- gIds = null;
- log.info("管理所有组");
- break;
+ if(staffRoles.get(0).getEvaluationGroupId().longValue() != 0L){//管理指定考评组的
+ List staffRoleEvaluationGroups =
+ staffRoleEvaluationGroupService.selectStaffRoleEvaluationsGroupByStaffRoles(staffRoles);
+ if(staffRoleEvaluationGroups.size() == 0){
+ log.info("查询的管理组为空");
+ return null;
}
- gIds.add(staffRoleEvaluationGroup.getEvaluationGroupId());//管理特定组
+ gIds = new ArrayList<>();
+ for (StaffRoleEvaluationGroup staffRoleEvaluationGroup:staffRoleEvaluationGroups
+ ) {
+ if(staffRoleEvaluationGroup.getEvaluationGroupId().longValue() == 0l){//管理所有组
+ gIds = null;
+ log.info("管理所有组");
+ break;
+ }
+ gIds.add(staffRoleEvaluationGroup.getEvaluationGroupId());//管理特定组
+
+ }
}
+
}
List finalGIds = gIds;
PageUtils pageUtils = PageUtils.startPage(req.getCurrPage(), req.getPageSize())
diff --git a/src/main/java/com/lz/modules/flow/service/impl/FlowStartServiceImpl.java b/src/main/java/com/lz/modules/flow/service/impl/FlowStartServiceImpl.java
index b57d9cee..182a02d8 100644
--- a/src/main/java/com/lz/modules/flow/service/impl/FlowStartServiceImpl.java
+++ b/src/main/java/com/lz/modules/flow/service/impl/FlowStartServiceImpl.java
@@ -1,13 +1,21 @@
package com.lz.modules.flow.service.impl;
+import ch.qos.logback.classic.Logger;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.google.common.collect.Lists;
import com.lz.common.emun.ChartOptType;
import com.lz.common.emun.CheckStaffType;
import com.lz.common.emun.WorkMsgTypeEnum;
import com.lz.common.utils.R;
import com.lz.common.utils.StringUtil;
+import com.lz.modules.app.entity.DepartmentsStaffRelateEntity;
import com.lz.modules.app.entity.StaffEntity;
import com.lz.modules.app.entity.StaffSimpleInfo;
+import com.lz.modules.app.enums.FlowApprovalRoleTypeEnums;
+import com.lz.modules.app.enums.FlowRecordStatusEnums;
+import com.lz.modules.app.enums.RoleEnums;
+import com.lz.modules.app.service.DepartmentsService;
+import com.lz.modules.app.service.DepartmentsStaffRelateService;
import com.lz.modules.app.service.StaffService;
import com.lz.modules.flow.dao.EvaluationStartStaffMapper;
import com.lz.modules.flow.dao.FlowStartMapper;
@@ -20,15 +28,22 @@ import com.lz.modules.sys.entity.app.ResultDetail;
import com.lz.modules.sys.entity.app.ResultRecord;
import com.lz.modules.sys.service.app.ResultDetailService;
import com.lz.modules.sys.service.app.ResultRecordService;
+import com.lz.modules.third.entity.ThirdAppConfig;
import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.map.HashedMap;
+import org.apache.poi.ss.formula.functions.T;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
+import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.*;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
import java.util.function.Function;
import java.util.stream.Collectors;
@@ -92,6 +107,8 @@ public class FlowStartServiceImpl extends ServiceImpl> staffManages = new HashedMap();//部门(id+几级)和部门几级管理对应关系,减少数据库查找
Map> mustRole = new HashMap<>();
Map> selfMustRole = new HashMap<>();
+ List noticeStaff = new ArrayList<>();
+ List resultRecords = new ArrayList<>();
for (GroupStaffs groupStaffs:startGroupStaffIds.getGroups()
) {
List staffSimpleInfos = staffService.selectStaffSimpleInfos(groupStaffs.getStaffIds());
@@ -152,7 +171,8 @@ public class FlowStartServiceImpl extends ServiceImpl> mustRole = new HashMap<>();
Map> selfMustRole = new HashMap<>();
-
+ List noticeStaff = new ArrayList<>();
+ List resultRecords = new ArrayList<>();
for (int n = 0; n < evaluationGroups.size(); n++
) {
EvaluationGroup evaluationGroup = evaluationGroups.get(n);
@@ -280,8 +307,8 @@ public class FlowStartServiceImpl extends ServiceImpl> staffManages, List staffIds,
Map> mustRole, Map> selfMustRole, boolean isInsert){
-
+ StartStartDto startStartDto = new StartStartDto();
List resultModelDtos = resultModelService.selectResultDtoByGroupId(evaluationGroup.getId());
if(resultModelDtos.size() == 0){
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();//事务回滚
log.info("没有设置考核模板");
- return 1;
+ startStartDto.setStatus(1);
+ return startStartDto;
}
List flowCharts = flowChartService.selectFlowChartsByGroupId(evaluationGroup.getId());
if(flowCharts.size() == 0){
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();//事务回滚
log.info("无有效绩效流程节点");
- return 2;
+ startStartDto.setStatus(2);
+ return startStartDto;
}
List flowChartDetailRecords = new ArrayList<>();
for (FlowChart chart:flowCharts
@@ -328,7 +362,8 @@ public class FlowStartServiceImpl extends ServiceImpl chartNameMaps =
flowCharts.stream().collect(Collectors.toMap(FlowChart::getId, FlowChart::getName));//流程节点与流程名称对应map,下面多次循环,减少数据库查找
@@ -339,7 +374,8 @@ public class FlowStartServiceImpl extends ServiceImpl 0){
//插入备份的考评组指标信息
- resultTagetLibService.insertResultTagetLibs(resultTagetLibs);
+ resultTagetLibService.saveBatch(resultTagetLibs);
}
//拷贝一份流程
for(FlowChartDetailRecord flowChartDetailRecord: flowChartDetailRecords){
@@ -391,13 +428,15 @@ public class FlowStartServiceImpl extends ServiceImpl evaluationStartStaffs = new ArrayList<>();
List resultDetails = new ArrayList();
+
//下面初始化参与人员
for (StaffSimpleInfo staffInfo:staffIds
) {
@@ -441,10 +481,14 @@ public class FlowStartServiceImpl extends ServiceImpl 0){
//
- resultDetailService.insertResultDetails(resultDetails);
-
+ resultDetailService.saveBatch(resultDetails);
}
-
-
}
- evaluationStartStaffService.insertEvaluationStartStaffs(evaluationStartStaffs);
- return 0;
+ evaluationStartStaffService.saveBatch(evaluationStartStaffs);
+ startStartDto.setStatus(0);
+ return startStartDto;
}
//下面初始化lz_flow流程表 lz_flow_approval_role流程审批表
@@ -505,7 +548,6 @@ public class FlowStartServiceImpl extends ServiceImpl 0){
- flowApprovalRoleService.insertFlowApprovalRoles(flowApprovalRoles);
+ flowApprovalRoleService.saveBatch(flowApprovalRoles);
//初始化lz_result_details数据
List resultDetails = new ArrayList<>();
List evaluationStartStaffs = new ArrayList<>();
-
+ List resultRecords = new ArrayList<>();
//下面初始化参与人员
for (StaffSimpleInfo staffInfo:staffIds
) {
@@ -611,7 +651,6 @@ public class FlowStartServiceImpl extends ServiceImpl resultRecords = Lists.newArrayList();
+ CompletableFuture> listCompletableFuture = CompletableFuture.supplyAsync(() -> resultRecordService.list(), executor);
+ try {
+ resultRecords = listCompletableFuture.get();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }*/
+
+ //resultRecordService.initFlowRecord(resultRecord.getId());
//下面生成ResultDetail对象
for (ResultModelDto modelDto:resultModelDtos
) {
if(modelDto.getTagetLibs() != null && modelDto.getTagetLibs().size() > 0){//模板里面有添加指标
for (ResultTagetLibDto libDto:
modelDto.getTagetLibs()) {
-
-
ResultDetail resultDetail = new ResultDetail();
resultDetail.setRecordId(resultRecord.getId());
resultDetail.setTarget(libDto.getName());
resultDetail.setType(modelDto.getType());
resultDetail.setKeyResult(libDto.getKeyResult());
resultDetail.setCheckWeight(libDto.getWeight());
- resultDetail.setStaffId(staffInfo.getId());
+ resultDetail.setStaffId(resultRecord.getId());
resultDetail.setPriority(libDto.getOrderBy());
+ resultDetail.setModelId(modelDto.getId());
resultDetails.add(resultDetail);
}
}
@@ -731,19 +784,17 @@ public class FlowStartServiceImpl extends ServiceImpl 0){
//
- resultDetailService.insertResultDetails(resultDetails);
-
+ resultDetailService.saveBatch(resultDetails);
}
- evaluationStartStaffService.insertEvaluationStartStaffs(evaluationStartStaffs);
- //下面通知所有参与考核人员
-
- //如果有下面通知所有管理人员
+ evaluationStartStaffService.saveBatch(evaluationStartStaffs);
}else{
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();//事务回滚
log.info("初始化考核流程失败");
- return 5;
+ startStartDto.setStatus(5);
+ return startStartDto;
}
- return 0;
+ startStartDto.setStatus(0);
+ return startStartDto;
}
@Override
@@ -755,5 +806,33 @@ public class FlowStartServiceImpl extends ServiceImpl resultRecords){
+ ThreadInitFlowRecord threadInitFlowRecord = new ThreadInitFlowRecord(resultRecords);
+ Thread thread = new Thread(threadInitFlowRecord);
+ thread.start();
+ }
+
+ public class ThreadInitFlowRecord implements Runnable{
+ List resultRecords;
+
+ public ThreadInitFlowRecord(List resultRecords){
+ this.resultRecords = resultRecords;
+
+ }
+
+ @Override
+ public void run() {
+ log.info("开始批量初始化流程,数量{}", resultRecords.size());
+ for (ResultRecord resultRecord:resultRecords
+ ) {
+ String oldNo = Logger.inheritableThreadLocalNo.get();//.threadLocalNo.get();
+ String newNo = oldNo + "_" + resultRecord.getId() + "_" + resultRecord.getStaffId();
+ ch.qos.logback.classic.Logger.threadLocalNo.set(newNo);
+ resultRecordService.initFlowRecord(resultRecord.getId());
+ ch.qos.logback.classic.Logger.threadLocalNo.set(oldNo);
+ }
+ }
+ }
+
}
diff --git a/src/main/java/com/lz/modules/job/business/DingtalkBusiness.java b/src/main/java/com/lz/modules/job/business/DingtalkBusiness.java
index 593d8ae1..01b724e6 100644
--- a/src/main/java/com/lz/modules/job/business/DingtalkBusiness.java
+++ b/src/main/java/com/lz/modules/job/business/DingtalkBusiness.java
@@ -237,29 +237,31 @@ public class DingtalkBusiness {
public String sendWorkMSGWithAsyn(StaffSimpleInfo fromStaff, List toStaffids, int type) {
-
- if (toStaffids.get(0).getEmployeeId() == null || toStaffids.get(0).getEmployeeId().length() == 0) {
- //查询第三方id
- List ids = toStaffids.stream().map(new Function() {
- @Override
- public Long apply(StaffSimpleInfo staffSimpleInfo) {
- return staffSimpleInfo.getId();
+ if(toStaffids.size() > 0){
+ if (toStaffids.get(0).getEmployeeId() == null || toStaffids.get(0).getEmployeeId().length() == 0) {
+ //查询第三方id
+ List ids = toStaffids.stream().map(new Function() {
+ @Override
+ public Long apply(StaffSimpleInfo staffSimpleInfo) {
+ return staffSimpleInfo.getId();
+ }
+ }).collect(Collectors.toList());
+ List staffSimpleInfos = staffService.selectStaffSimpleInfos(ids);
+ Map map = toStaffids.stream().collect(Collectors.toMap(StaffSimpleInfo::getId, e -> e));
+ for (StaffSimpleInfo staff : staffSimpleInfos
+ ) {
+ StaffSimpleInfo staff1 = map.get(staff.getId());
+ staff1.setEmployeeId(staff1.getEmployeeId());
}
- }).collect(Collectors.toList());
- List staffSimpleInfos = staffService.selectStaffSimpleInfos(ids);
- Map map = toStaffids.stream().collect(Collectors.toMap(StaffSimpleInfo::getId, e -> e));
- for (StaffSimpleInfo staff : staffSimpleInfos
- ) {
- StaffSimpleInfo staff1 = map.get(staff.getId());
- staff1.setEmployeeId(staff1.getEmployeeId());
}
- }
- WorkMsgTypeEnum workMsgTypeEnum = WorkMsgTypeEnum.findRoleTypeByCode(type);
+ WorkMsgTypeEnum workMsgTypeEnum = WorkMsgTypeEnum.findRoleTypeByCode(type);
- ThreadSendMessage threadSendMessage = new ThreadSendMessage(fromStaff, toStaffids, workMsgTypeEnum, appid);
- Thread thread = new Thread(threadSendMessage);
- thread.start();
- return "OK";
+ ThreadSendMessage threadSendMessage = new ThreadSendMessage(fromStaff, toStaffids, workMsgTypeEnum, appid);
+ Thread thread = new Thread(threadSendMessage);
+ thread.start();
+ return "OK";
+ }
+ return "error";
}
diff --git a/src/main/java/com/lz/modules/performance/controller/ChartController.java b/src/main/java/com/lz/modules/performance/controller/ChartController.java
index 12a4fe6b..6c2c1c33 100644
--- a/src/main/java/com/lz/modules/performance/controller/ChartController.java
+++ b/src/main/java/com/lz/modules/performance/controller/ChartController.java
@@ -1,6 +1,7 @@
package com.lz.modules.performance.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.google.common.collect.Lists;
import com.lz.common.utils.PageUtils;
import com.lz.common.utils.R;
import com.lz.common.utils.StringUtil;
@@ -12,11 +13,13 @@ import com.lz.modules.flow.entity.FlowStart;
import com.lz.modules.flow.service.FlowStartService;
import com.lz.modules.performance.req.ChartResultReq;
import com.lz.modules.performance.req.ChartStartsReq;
+import com.lz.modules.performance.req.OwnResultReq;
import com.lz.modules.performance.res.ChartStartsRes;
import com.lz.modules.performance.res.ChartStatisticalRes;
import com.lz.modules.performance.res.ResultRankListRes;
import com.lz.modules.performance.service.ChartResultService;
import com.lz.modules.sys.controller.AbstractController;
+import com.lz.modules.sys.entity.app.ResultRecord;
import com.lz.modules.sys.service.app.ResultRecordService;
import io.swagger.annotations.*;
import lombok.extern.slf4j.Slf4j;
@@ -24,6 +27,9 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.*;
+import java.util.concurrent.*;
+import java.util.function.Function;
+import java.util.function.Supplier;
/**
* @Author: djc
@@ -94,14 +100,16 @@ public class ChartController extends AbstractController{
@PostMapping("/own/result")
@ApiOperation("获取个人成长曲线")
@ApiResponses({@ApiResponse(code = 200,message = "成功",response = OwnResultResp.class)})
- public R ownResult(Long userId){
- if(userId == null){
+ public R ownResult(@RequestBody @ApiParam(name = "body",value = "body请求体",required = true) OwnResultReq req){
+ if(req.getUserId() == null){
//如果id为空,查询自己信息
- userId = getUserId();
+ req.setUserId(getUserId());
}
- List ownResultResps = resultRecordService.ownResult(null);
+ List ownResultResps = resultRecordService.ownResult(req);
return R.ok().put("data",ownResultResps);
}
+
+
}
diff --git a/src/main/java/com/lz/modules/performance/controller/UserTaskController.java b/src/main/java/com/lz/modules/performance/controller/UserTaskController.java
index d1277728..bfadfae0 100644
--- a/src/main/java/com/lz/modules/performance/controller/UserTaskController.java
+++ b/src/main/java/com/lz/modules/performance/controller/UserTaskController.java
@@ -32,11 +32,12 @@ public class UserTaskController extends AbstractController{
@ApiResponses({@ApiResponse(code = 200,message = "成功",response = TaskListRes.class)})
public R list(@RequestBody @ApiParam(name = "body",value = "body请求体",required = true) AssessTaskReq req){
PageUtils pageUtils;
+ Long userId = null;
try {
- Long userId = getUserId();
+ userId = getUserId();
pageUtils = assessService.userTaskList(req, userId);
} catch (Exception e) {
- log.error("获取用户事项异常 userId:" ,e);
+ log.error("获取用户事项异常 userId:" + userId,e);
return R.error(e.getMessage());
}
return R.ok().put("data",pageUtils);
diff --git a/src/main/java/com/lz/modules/performance/req/ChartResultReq.java b/src/main/java/com/lz/modules/performance/req/ChartResultReq.java
index bec1ffa5..b4373e7d 100644
--- a/src/main/java/com/lz/modules/performance/req/ChartResultReq.java
+++ b/src/main/java/com/lz/modules/performance/req/ChartResultReq.java
@@ -14,8 +14,8 @@ import lombok.Data;
@ApiModel("获取报表等级详情实体")
public class ChartResultReq extends BasePage{
- @ApiModelProperty(value = "部门id",name = "departmentId")
- private String departmentId;
+ @ApiModelProperty(value = "部门ids,逗号隔开",name = "departmentIds")
+ private String departmentIds;
@ApiModelProperty(value = "考核id",name = "startId")
private Long startId;
diff --git a/src/main/java/com/lz/modules/performance/req/OwnResultReq.java b/src/main/java/com/lz/modules/performance/req/OwnResultReq.java
new file mode 100644
index 00000000..3dea0f15
--- /dev/null
+++ b/src/main/java/com/lz/modules/performance/req/OwnResultReq.java
@@ -0,0 +1,27 @@
+package com.lz.modules.performance.req;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @Author: djc
+ * @Desc:
+ * @Date: 2020/11/16 16:50
+ */
+@Data
+@ApiModel("个人曲线请求实体")
+public class OwnResultReq {
+ @ApiModelProperty("用户id,可不传")
+ private Long userId;
+
+ @ApiModelProperty("开始时间,必传")
+ private String startTime;
+
+ @ApiModelProperty("结束时间,必传")
+ private String endTime;
+
+ @ApiModelProperty("条数,默认6条")
+ private Integer size = 6;
+
+}
diff --git a/src/main/java/com/lz/modules/performance/service/impl/AssessManagerServiceImpl.java b/src/main/java/com/lz/modules/performance/service/impl/AssessManagerServiceImpl.java
index 93302d3f..72282a64 100644
--- a/src/main/java/com/lz/modules/performance/service/impl/AssessManagerServiceImpl.java
+++ b/src/main/java/com/lz/modules/performance/service/impl/AssessManagerServiceImpl.java
@@ -122,7 +122,7 @@ public class AssessManagerServiceImpl implements AssessManagerService {
}else {
ResultRecord resultRecord = resultRecordMapper.selectOneByStartId(flowStart.getId(),mandepartmentIds);
int i = resultRecordMapper.countStartAndGroupNum(flowStart.getId(),mandepartmentIds);
- res.setJoinNum(resultRecord == null? StringUtil.EMPTY : resultRecord.getStaffName() + i + "等人");
+ res.setJoinNum(resultRecord == null? StringUtil.EMPTY : resultRecord.getStaffName() + "等"+ i + "人");
}
data.add(res);
diff --git a/src/main/java/com/lz/modules/performance/service/impl/AssessServiceImpl.java b/src/main/java/com/lz/modules/performance/service/impl/AssessServiceImpl.java
index 6e3df194..a7f404ec 100644
--- a/src/main/java/com/lz/modules/performance/service/impl/AssessServiceImpl.java
+++ b/src/main/java/com/lz/modules/performance/service/impl/AssessServiceImpl.java
@@ -69,11 +69,18 @@ public class AssessServiceImpl implements AssessService {
dtos.stream().forEach(taskListDto -> {
TaskListRes res = new TaskListRes();
StaffEntity staffEntity = staffService.selectStaffById(taskListDto.getRecordStaffId());
- res.setAvatar(Optional.ofNullable(staffEntity.getAvatar()).orElse(StringUtil.EMPTY));
- String name = staffEntity.getName();
- if(taskListDto.getRecordStaffId().equals(taskListDto.getApprovalStaffId())){
- name = "您";
+ String name = "";
+ if(staffEntity!=null){
+ res.setAvatar(Optional.ofNullable(staffEntity.getAvatar()).orElse(StringUtil.EMPTY));
+ name = staffEntity.getName();
+ if(taskListDto.getRecordStaffId().equals(taskListDto.getApprovalStaffId())){
+ name = "您";
+ }
+ }else {
+ name = "未知";
+ log.info("未找到此人信息 staffId: " + taskListDto.getRecordStaffId());
}
+
FlowStart start = flowStartService.selectFlowStartById(taskListDto.getStartId());
//根据状态拼接文案
String startName = start == null ? "" : start.getName();
diff --git a/src/main/java/com/lz/modules/performance/service/impl/ChartResultServiceImpl.java b/src/main/java/com/lz/modules/performance/service/impl/ChartResultServiceImpl.java
index c0319d69..e3731c09 100644
--- a/src/main/java/com/lz/modules/performance/service/impl/ChartResultServiceImpl.java
+++ b/src/main/java/com/lz/modules/performance/service/impl/ChartResultServiceImpl.java
@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
+import com.google.common.collect.Sets;
import com.lz.common.exception.RRException;
import com.lz.common.utils.PageUtils;
import com.lz.common.utils.R;
@@ -182,9 +183,18 @@ public class ChartResultServiceImpl implements ChartResultService {
@Override
public PageUtils selectChartDetailList(ChartResultReq req) {
- List allDeparmentIds = staffService.selectAllDeparmentIdsByDepartmentParentId(req.getDepartmentId());
+ String departmentIds = req.getDepartmentIds();
+ Set allDepart = Sets.newHashSet();
+ if(StringUtil.isNotBlank(departmentIds)){
+ String[] split = departmentIds.split(",");
+ for(String s:split){
+ List deparmentIds = staffService.selectAllDeparmentIdsByDepartmentParentId(s);
+ allDepart.addAll(deparmentIds);
+ }
+ }
+ List allDeparmentIds = new ArrayList<>(allDepart);
//自己管理的和所有的部门交集
- log.info("selectChartDetailList 管理部门:" + JSON.toJSONString(allDeparmentIds));
+ log.info("selectChartDetailList 查询部门:" + JSON.toJSONString(allDeparmentIds));
List mandepartmentIds = assessService.roleDepartments(req.getLoginUserId());
if(mandepartmentIds!=null ){
if(mandepartmentIds.size()==0){
@@ -196,9 +206,14 @@ public class ChartResultServiceImpl implements ChartResultService {
return new PageUtils();
}
}
+ else {
+ //如果掌管所有部门,查询请求部门
+ mandepartmentIds = allDeparmentIds;
+ }
log.info("selectChartDetailList 交集部门:" + JSON.toJSONString(mandepartmentIds));
+ List finalMandepartmentIds = mandepartmentIds;
PageUtils pageUtils = PageUtils.startPage(req.getCurrPage(), req.getPageSize()).doSelect(
- page -> resultRecordMapper.selectChartDetailList(page,mandepartmentIds,req.getStartId(),req.getScoreLevel())
+ page -> resultRecordMapper.selectChartDetailList(page, finalMandepartmentIds,req.getStartId(),req.getScoreLevel())
);
return pageUtils;
}
diff --git a/src/main/java/com/lz/modules/sys/dao/app/ResultDetailMapper.java b/src/main/java/com/lz/modules/sys/dao/app/ResultDetailMapper.java
index cfa8b60e..87424123 100644
--- a/src/main/java/com/lz/modules/sys/dao/app/ResultDetailMapper.java
+++ b/src/main/java/com/lz/modules/sys/dao/app/ResultDetailMapper.java
@@ -45,5 +45,5 @@ public interface ResultDetailMapper extends BaseMapper {
Long insertResultDetails(@Param("list") List resultDetails);
- List selectDtosByRecordId(@Param("recordResultId") Long id, @Param("type") int type);
+ List selectDtosByRecordId(@Param("recordResultId") Long id, @Param("modelId") Long modelId);
}
\ No newline at end of file
diff --git a/src/main/java/com/lz/modules/sys/dao/app/ResultRecordMapper.java b/src/main/java/com/lz/modules/sys/dao/app/ResultRecordMapper.java
index 1afbbdd5..0efff89b 100644
--- a/src/main/java/com/lz/modules/sys/dao/app/ResultRecordMapper.java
+++ b/src/main/java/com/lz/modules/sys/dao/app/ResultRecordMapper.java
@@ -18,6 +18,7 @@ import com.lz.modules.app.resp.OwnResultResp;
import com.lz.modules.flow.model.ResultRecordDto;
import com.lz.modules.performance.dto.ToScoreDingTalkDto;
import com.lz.modules.performance.req.AssessDetailReq;
+import com.lz.modules.performance.req.OwnResultReq;
import com.lz.modules.performance.res.AssessManagerDetailRes;
import com.lz.modules.performance.res.ChartStatistical;
import com.lz.modules.sys.entity.app.ResultRecord;
@@ -61,7 +62,7 @@ public interface ResultRecordMapper extends BaseMapper {
List selectResultRecordByIds(@Param("recordIds") List recordIds);
- List ownResult(@Param("staffId") Long staffId);
+ List ownResult(@Param("req") OwnResultReq req);
List staffDistribution(@Param("monthTime") String monthTime,@Param("staffIds") List staffIds);
@@ -96,4 +97,8 @@ public interface ResultRecordMapper extends BaseMapper {
List selectToScoreList(@Param("startId")Long startId, @Param("evaluationId")Long evaluationId);
int countAssessNumJoin(@Param("req")AssessDetailReq req);
+
+ ResultRecord selectLastResultRecordByUserId(@Param("userId") Long userId);
+
+ ResultRecord selectResultRecordByStaffIdAndStartId(@Param("userId") Long userId, @Param("startId") Long startId);
}
\ No newline at end of file
diff --git a/src/main/java/com/lz/modules/sys/entity/app/ResultDetail.java b/src/main/java/com/lz/modules/sys/entity/app/ResultDetail.java
index 73c421c1..c042cc82 100644
--- a/src/main/java/com/lz/modules/sys/entity/app/ResultDetail.java
+++ b/src/main/java/com/lz/modules/sys/entity/app/ResultDetail.java
@@ -1,57 +1,78 @@
package com.lz.modules.sys.entity.app;
-import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
*
-* 菜单权限表
-*
*绩效详情表
+*
*业绩详情表
* @author quyixiao
-* @since 2020-08-28
+* @since 2020-11-17
*/
@Data
@TableName("lz_result_detail")
+@ApiModel(value = "业绩详情表")
public class ResultDetail implements java.io.Serializable {
//
@TableId(value = "id", type = IdType.AUTO)
private Long id;
//是否删除状态,1:删除,0:有效
+ @ApiModelProperty(value = "是否删除状态,1:删除,0:有效", name = "isDelete")
private Integer isDelete;
//创建时间
+ @ApiModelProperty(value = "创建时间", name = "gmtCreate")
private Date gmtCreate;
//最后修改时间
+ @ApiModelProperty(value = "最后修改时间", name = "gmtModified")
private Date gmtModified;
- //1,绩效,2文化价值观
+ //1,业绩,2文化价值观
+ @ApiModelProperty(value = "1,业绩,2文化价值观", name = "type")
private Integer type;
//目标
+ @ApiModelProperty(value = "目标", name = "target")
private String target;
//关键结果
+ @ApiModelProperty(value = "关键结果", name = "keyResult")
private String keyResult;
//关键结果_3.5标准
+ @ApiModelProperty(value = "关键结果_3.5标准", name = "keyResult35")
private String keyResult35;
//关键结果3.7分标准
+ @ApiModelProperty(value = "关键结果3.7分标准", name = "keyResult37")
private String keyResult37;
//考核权重
+ @ApiModelProperty(value = "考核权重", name = "checkWeight")
private BigDecimal checkWeight;
//考核结果
+ @ApiModelProperty(value = "考核结果", name = "checkResult")
private String checkResult;
//直属上级评分
+ @ApiModelProperty(value = "直属上级评分", name = "superScore")
private String superScore;
//得分
+ @ApiModelProperty(value = "得分", name = "acquireScore")
private BigDecimal acquireScore;
//评分说明
+ @ApiModelProperty(value = "评分说明", name = "scoreComment")
private String scoreComment;
//记录id
+ @ApiModelProperty(value = "记录id ", name = "recordId")
private Long recordId;
//用户id
+ @ApiModelProperty(value = "用户id", name = "staffId")
private Long staffId;
//优先级,从大到小
+ @ApiModelProperty(value = "优先级,从大到小", name = "priority")
private Integer priority;
+ //维度id lz_result_model的id
+ @ApiModelProperty(value = "维度id lz_result_model的id", name = "modelId")
+ private Long modelId;
/**
*
* @return
@@ -113,14 +134,14 @@ public class ResultDetail implements java.io.Serializable {
}
/**
- * 1,绩效,2文化价值观
+ * 1,业绩,2文化价值观
* @return
*/
public Integer getType() {
return type;
}
/**
- * 1,绩效,2文化价值观
+ * 1,业绩,2文化价值观
* @param type
*/
public void setType(Integer type) {
@@ -307,6 +328,21 @@ public class ResultDetail implements java.io.Serializable {
this.priority = priority;
}
+ /**
+ * 维度id lz_result_model的id
+ * @return
+ */
+ public Long getModelId() {
+ return modelId;
+ }
+ /**
+ * 维度id lz_result_model的id
+ * @param modelId
+ */
+ public void setModelId(Long modelId) {
+ this.modelId = modelId;
+ }
+
@Override
public String toString() {
return "ResultDetail{" +
@@ -327,6 +363,7 @@ public class ResultDetail implements java.io.Serializable {
",recordId=" + recordId +
",staffId=" + staffId +
",priority=" + priority +
+ ",modelId=" + modelId +
"}";
}
}
\ No newline at end of file
diff --git a/src/main/java/com/lz/modules/sys/service/app/ResultDetailService.java b/src/main/java/com/lz/modules/sys/service/app/ResultDetailService.java
index f9d5213e..f7360a95 100644
--- a/src/main/java/com/lz/modules/sys/service/app/ResultDetailService.java
+++ b/src/main/java/com/lz/modules/sys/service/app/ResultDetailService.java
@@ -69,5 +69,5 @@ public interface ResultDetailService extends IService {
Long insertResultDetails(List resultDetails);
- List selectDtosByRecordId(Long id, int type);
+ List selectDtosByRecordId(Long id, Long modelId);
}
\ No newline at end of file
diff --git a/src/main/java/com/lz/modules/sys/service/app/ResultRecordService.java b/src/main/java/com/lz/modules/sys/service/app/ResultRecordService.java
index d631d887..869db313 100644
--- a/src/main/java/com/lz/modules/sys/service/app/ResultRecordService.java
+++ b/src/main/java/com/lz/modules/sys/service/app/ResultRecordService.java
@@ -15,6 +15,7 @@ import com.lz.modules.app.utils.t.TwoTuple;
import com.lz.modules.flow.entity.Flow;
import com.lz.modules.flow.model.StaffRoleDto;
import com.lz.modules.performance.req.AssessDetailReq;
+import com.lz.modules.performance.req.OwnResultReq;
import com.lz.modules.performance.res.ChartStatistical;
import com.lz.modules.sys.entity.SysUserEntity;
import com.lz.modules.sys.entity.app.ResultRecord;
@@ -77,7 +78,7 @@ public interface ResultRecordService extends IService {
void sendWorkMSG(StaffEntity mySelf, StaffEntity toSelf, WorkMsgTypeEnum workMsgTypeEnum
, Long recordResultId, int count);
- List ownResult(Long staffId);
+ List ownResult(OwnResultReq req);
/**
* 人员等级排布
@@ -114,4 +115,8 @@ public interface ResultRecordService extends IService {
R newApproval(ApprovalDto approvalDto) throws Exception;
R newResultRecordList(RecordDetailDto recordDetailDto);
+
+ ResultRecord selectLastResultRecordByUserId(Long userId);
+
+ ResultRecord selectResultRecordByStaffIdAndStartId(Long userId, Long startId);
}
\ No newline at end of file
diff --git a/src/main/java/com/lz/modules/sys/service/app/impl/ResultDetailServiceImpl.java b/src/main/java/com/lz/modules/sys/service/app/impl/ResultDetailServiceImpl.java
index cd015176..f337f388 100644
--- a/src/main/java/com/lz/modules/sys/service/app/impl/ResultDetailServiceImpl.java
+++ b/src/main/java/com/lz/modules/sys/service/app/impl/ResultDetailServiceImpl.java
@@ -336,8 +336,8 @@ public class ResultDetailServiceImpl extends ServiceImpl selectDtosByRecordId(Long id, int type){
- return resultDetailMapper.selectDtosByRecordId(id, type);
+ public List selectDtosByRecordId(Long id, Long modelId){
+ return resultDetailMapper.selectDtosByRecordId(id, modelId);
}
}
diff --git a/src/main/java/com/lz/modules/sys/service/app/impl/ResultRecordServiceImpl.java b/src/main/java/com/lz/modules/sys/service/app/impl/ResultRecordServiceImpl.java
index 117aabf5..10081144 100644
--- a/src/main/java/com/lz/modules/sys/service/app/impl/ResultRecordServiceImpl.java
+++ b/src/main/java/com/lz/modules/sys/service/app/impl/ResultRecordServiceImpl.java
@@ -33,6 +33,7 @@ import com.lz.modules.flow.enums.FlowRecordEnum;
import com.lz.modules.flow.model.*;
import com.lz.modules.flow.service.*;
import com.lz.modules.job.business.DingtalkBusiness;
+import com.lz.modules.performance.req.OwnResultReq;
import com.lz.modules.performance.res.ChartStatistical;
import com.lz.modules.sys.dao.app.ResultRecordMapper;
import com.lz.modules.sys.entity.SysUserEntity;
@@ -743,8 +744,8 @@ public class ResultRecordServiceImpl extends ServiceImpl ownResult(Long staffId) {
- return resultRecordMapper.ownResult(staffId);
+ public List ownResult(OwnResultReq req) {
+ return resultRecordMapper.ownResult(req);
}
@Override
@@ -1314,4 +1315,13 @@ public class ResultRecordServiceImpl extends ServiceImpl
+
- id AS id, is_delete AS isDelete, gmt_create AS gmtCreate, gmt_modified AS gmtModified, type AS type, target AS target, key_result AS keyResult, key_result_3_5 AS keyResult35, key_result_3_7 AS keyResult37, check_weight AS checkWeight, check_result AS checkResult, super_score AS superScore, acquire_score AS acquireScore, score_comment AS scoreComment, record_id AS recordId, staff_id AS staffId, priority AS priority
+ id AS id, is_delete AS isDelete, gmt_create AS gmtCreate, gmt_modified AS gmtModified, type AS type, target AS target, key_result AS keyResult, key_result_3_5 AS keyResult35, key_result_3_7 AS keyResult37, check_weight AS checkWeight, check_result AS checkResult, super_score AS superScore, acquire_score AS acquireScore, score_comment AS scoreComment, record_id AS recordId, staff_id AS staffId, priority AS priority, model_id AS modelId
@@ -52,6 +53,7 @@
record_id,
staff_id,
priority,
+ model_id,
is_delete,
gmt_create,
gmt_modified
@@ -69,6 +71,7 @@
#{ recordId},
#{ staffId},
#{ priority},
+ #{ modelId},
0,
now(),
now()
@@ -94,10 +97,11 @@
score_comment = #{scoreComment},
record_id = #{recordId},
staff_id = #{staffId},
- priority = #{priority}
+ priority = #{priority},
+ model_id = #{modelId}
,gmt_modified = now()
- where id = #{id} limit 1
+ where id = #{id}
@@ -119,7 +123,8 @@
score_comment = #{scoreComment},
record_id = #{recordId},
staff_id = #{staffId},
- priority = #{priority}
+ priority = #{priority},
+ model_id = #{modelId}
,gmt_modified = now()
where id = #{id}
@@ -158,6 +163,7 @@
record_id,
staff_id,
priority,
+ model_id,
is_delete
)values
@@ -173,13 +179,14 @@
#{ item.recordId},
#{ item.staffId},
#{ item.priority},
+ #{item.modelId},
0
)
diff --git a/src/main/resources/mapper/app/ResultRecordMapper.xml b/src/main/resources/mapper/app/ResultRecordMapper.xml
index 696487bf..04fd795b 100644
--- a/src/main/resources/mapper/app/ResultRecordMapper.xml
+++ b/src/main/resources/mapper/app/ResultRecordMapper.xml
@@ -281,11 +281,18 @@
@@ -379,7 +386,7 @@
@@ -575,5 +587,12 @@
and evaluation_id = #{evaluationId}
+
+
+
diff --git a/src/main/resources/mapper/flow/FlowRecordMapper.xml b/src/main/resources/mapper/flow/FlowRecordMapper.xml
index c58c61ac..aa192578 100644
--- a/src/main/resources/mapper/flow/FlowRecordMapper.xml
+++ b/src/main/resources/mapper/flow/FlowRecordMapper.xml
@@ -175,7 +175,7 @@