From f8fc1d16c38d4382c7d62944a1203b740bf43a99 Mon Sep 17 00:00:00 2001 From: wulin Date: Thu, 29 Oct 2020 19:33:47 +0800 Subject: [PATCH 1/9] =?UTF-8?q?=E8=8E=B7=E5=8F=96=E8=AF=A6=E6=83=85?= =?UTF-8?q?=E4=BF=9D=E5=AD=98=E8=AF=A6=E6=83=85=E5=A2=9E=E5=8A=A0=E8=AF=84?= =?UTF-8?q?=E5=88=86=E8=AF=A6=E7=BB=86=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ResultRecordController.java | 118 ++++++++++++++++++ .../java/com/lz/modules/app/dao/StaffDao.java | 2 + .../lz/modules/app/service/StaffService.java | 2 + .../app/service/impl/StaffServiceImpl.java | 5 + .../flow/dao/FlowChartDetailRecordMapper.java | 2 + .../modules/flow/dao/ResultScoreMapper.java | 7 ++ .../modules/flow/model/ResultDetailDto.java | 4 + .../lz/modules/flow/model/ResultScoreDto.java | 8 ++ .../service/FlowChartDetailRecordService.java | 2 + .../flow/service/ResultScoreService.java | 6 + .../FlowChartDetailRecordServiceImpl.java | 5 + .../service/impl/FlowStartServiceImpl.java | 4 +- .../service/impl/ResultScoreServiceImpl.java | 13 ++ .../flow/FlowChartDetailRecordMapper.xml | 9 +- .../mapper/flow/ResultScoreMapper.xml | 12 ++ .../resources/mapper/generator/StaffDao.xml | 12 ++ 16 files changed, 206 insertions(+), 5 deletions(-) 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 e6265239..89bae582 100644 --- a/src/main/java/com/lz/modules/app/controller/ResultRecordController.java +++ b/src/main/java/com/lz/modules/app/controller/ResultRecordController.java @@ -40,6 +40,7 @@ import java.lang.reflect.Method; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; @@ -95,6 +96,12 @@ public class ResultRecordController extends AbstractController { @Autowired private ResultCalculateService resultCalculateService; + @Autowired + private ResultScoreService resultScoreService; + + @Autowired + private FlowChartDetailRecordService flowChartDetailRecordService; + /** * 列表 */ @@ -348,6 +355,50 @@ public class ResultRecordController extends AbstractController { //获取计算公式 List calculateModels = getCalculate(resultModels.get(0).getCalculateId()); + List scoreDtos = new ArrayList<>(); + //查询所有参与评分人以及所占比重 + List flowChartDetailRecords = + flowChartDetailRecordService.selectFlowChartDetailRecordsByFlowProcess(resultRecord.getEvaluationId(), 4);//获取参与评分的人 + List staffs = new ArrayList<>(); + for (FlowChartDetailRecord record:flowChartDetailRecords + ) { + if(record.getOptType().intValue() == -1){ + //自己 + StaffEntity staffEntity = new StaffEntity(); + staffEntity.setId(resultRecord.getId()); + staffEntity.setName(resultRecord.getStaffName()); + staffs.add(staffEntity); + }else if(record.getOptType().intValue() == 0){ + //指定人员 + //获取人员信息 + List sIds = Arrays.stream(record.getOptIds().split(",")).map(new Function() { + @Override + public Long apply(String s) { + return Long.parseLong(s); + } + }).collect(Collectors.toList()); + staffs.addAll(staffService.selectNamesByIds(sIds));//这里不过滤离职人员,因为过滤了可能涉及到评分规则的变更 + + }else{ + //领导 + DepartManagers departManagers = staffService.findLeader(resultRecord.getStaffId(), record.getOptType()); + if(departManagers.getManagers().size() > 0){ + staffs.addAll(departManagers.getManagers()); + } + } + + for (StaffEntity staff:staffs + ) { + ResultScoreDto resultScore = new ResultScoreDto(); + resultScore.setApprovalId(staff.getId()); + resultScore.setApprovalName(staff.getName()); + resultScore.setWeight(record.getWeight()); + scoreDtos.add(resultScore); + } + + } + + resultRecordDetailDto.setGradeGroupId(resultModels.get(0).getGradeGroupId());//设置评分等级 StaffEntity staffEntity = staffService.selectStaffById(resultRecord.getStaffId()); resultRecordDetailDto.setAvatar(staffEntity.getAvatar()); @@ -365,6 +416,42 @@ public class ResultRecordController extends AbstractController { ) { dto.setCalculate(setCalculateValue(calculateModels, dto)) ; weight = weight.add(dto.getCheckWeight()); + //获取评分详细 + List scores = + resultScoreService.selectResultScoresByDetailIdAndOrderByStaffIds(dto.getId(), scoreDtos); + if(scores.size() > 0){ + // + List scoreDtos1 = new ArrayList<>(); + for (ResultScoreDto scoreDto: scoreDtos + ) {// + // + boolean isAdd = false; + for (ResultScore score: + scores) { + if(scoreDto.getApprovalId().longValue() == score.getApprovalId().longValue()){ + ResultScoreDto scoreDto1 = new ResultScoreDto(); + BeanUtils.copyProperties(scoreDto1, score); + scoreDto1.setApprovalId(scoreDto.getApprovalId()); + scoreDto1.setApprovalName(scoreDto.getApprovalName()); + scoreDto1.setWeight(scoreDto.getWeight()); + scoreDtos1.add(scoreDto1); + scores.remove(score); + isAdd = true; + break; + } + } + if(!isAdd){ + ResultScoreDto scoreDto1 = new ResultScoreDto(); + scoreDto1.setApprovalId(scoreDto.getApprovalId()); + scoreDto1.setApprovalName(scoreDto.getApprovalName()); + scoreDto1.setWeight(scoreDto.getWeight()); + scoreDtos1.add(scoreDto1); + } + } + dto.setScoreDtos(scoreDtos1); + }else{ + dto.setScoreDtos(scoreDtos); + } } //下面设置计算公式 @@ -477,6 +564,11 @@ public class ResultRecordController extends AbstractController { BeanUtils.copyProperties(dto, resultRecord); List inserts = new ArrayList<>(); List updates = new ArrayList<>(); + + List insertScores = new ArrayList<>(); + List updateScores = new ArrayList<>(); + + for (ResultRecortModelDto model:dto.getRecortModelDtos() ) { int index = 0; @@ -497,13 +589,31 @@ public class ResultRecordController extends AbstractController { inserts.add(resultDetail); } if(resultDetail.getIsDelete() == null || resultDetail.getIsDelete().intValue() == 0){ + BigDecimal score = BigDecimal.ZERO; + for (ResultScoreDto scoreDto:detailDto.getScoreDtos() + ) { + //计算得分 + ResultScore resultScore = new ResultScore(); + BeanUtils.copyProperties(scoreDto, resultScore); + if(scoreDto.getAcquireScore() != null){ + score = score.add(scoreDto.getAcquireScore().multiply(scoreDto.getWeight())); + } + if(resultScore.getId() == null){ + insertScores.add(resultScore); + }else{ + updateScores.add(resultScore); + } + } + resultDetail.setAcquireScore(score); weight = weight.add(resultDetail.getCheckWeight()); + } } if(weight.compareTo(model.getWeight()) == 1){ return R.error(model.getName() + "的指标之和不能超过" + model.getWeight().multiply(BigDecimal.valueOf(100)) + "%"); } } + //下面更新指标记录 if(inserts.size() > 0){ resultDetailService.saveBatch(inserts); } @@ -511,6 +621,14 @@ public class ResultRecordController extends AbstractController { resultDetailService.updateBatchById(updates); } + //下面更新评分记录 + if(insertScores.size() > 0){ + resultScoreService.saveBatch(insertScores); + } + if(updateScores.size() > 0){ + resultScoreService.updateBatchById(updateScores); + } + return R.ok(); diff --git a/src/main/java/com/lz/modules/app/dao/StaffDao.java b/src/main/java/com/lz/modules/app/dao/StaffDao.java index e49fdf88..2a058a2b 100644 --- a/src/main/java/com/lz/modules/app/dao/StaffDao.java +++ b/src/main/java/com/lz/modules/app/dao/StaffDao.java @@ -94,4 +94,6 @@ public interface StaffDao extends BaseMapper { List selectOnJobByIds(@Param("mIds") List mIds); StaffSimpleInfo selectStaffSimpleInfo(@Param("staffId") Long staffId); + + List selectNamesByIds(@Param("list") List sIds); } diff --git a/src/main/java/com/lz/modules/app/service/StaffService.java b/src/main/java/com/lz/modules/app/service/StaffService.java index 76621438..577094c1 100644 --- a/src/main/java/com/lz/modules/app/service/StaffService.java +++ b/src/main/java/com/lz/modules/app/service/StaffService.java @@ -99,5 +99,7 @@ public interface StaffService extends IService { List selectOnJobByIds(List mIds); StaffSimpleInfo selectStaffSimpleInfo(Long staffId); + + List selectNamesByIds(List sIds); } diff --git a/src/main/java/com/lz/modules/app/service/impl/StaffServiceImpl.java b/src/main/java/com/lz/modules/app/service/impl/StaffServiceImpl.java index aea7cd9b..daa4731b 100644 --- a/src/main/java/com/lz/modules/app/service/impl/StaffServiceImpl.java +++ b/src/main/java/com/lz/modules/app/service/impl/StaffServiceImpl.java @@ -519,5 +519,10 @@ public class StaffServiceImpl extends ServiceImpl impleme return staffDao.selectStaffSimpleInfo(staffId); } + @Override + public List selectNamesByIds(List sIds){ + return staffDao.selectNamesByIds(sIds); + } + } diff --git a/src/main/java/com/lz/modules/flow/dao/FlowChartDetailRecordMapper.java b/src/main/java/com/lz/modules/flow/dao/FlowChartDetailRecordMapper.java index dcec48ad..c73ccc97 100644 --- a/src/main/java/com/lz/modules/flow/dao/FlowChartDetailRecordMapper.java +++ b/src/main/java/com/lz/modules/flow/dao/FlowChartDetailRecordMapper.java @@ -41,4 +41,6 @@ public interface FlowChartDetailRecordMapper extends BaseMapper inserts); int updateCoverFlowChartDetailRecordByIds(@Param("list") List updaes); + + List selectFlowChartDetailRecordsByFlowProcess(@Param("groupId") Long groupId, @Param("flowProcess") int flowProcess); } \ No newline at end of file diff --git a/src/main/java/com/lz/modules/flow/dao/ResultScoreMapper.java b/src/main/java/com/lz/modules/flow/dao/ResultScoreMapper.java index 4e2791c6..8647cc54 100644 --- a/src/main/java/com/lz/modules/flow/dao/ResultScoreMapper.java +++ b/src/main/java/com/lz/modules/flow/dao/ResultScoreMapper.java @@ -9,8 +9,12 @@ package com.lz.modules.flow.dao; */ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.lz.modules.flow.entity.ResultScore; +import com.lz.modules.flow.model.ResultScoreDto; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; + +import java.util.List; + @Mapper public interface ResultScoreMapper extends BaseMapper { @@ -30,4 +34,7 @@ public interface ResultScoreMapper extends BaseMapper { int deleteResultScoreById(@Param("id")Long id); + List selectResultScoresByDetailId(@Param("id") Long id); + + List selectResultScoresByDetailIdAndOrderByStaffIds(@Param("id") Long id, @Param("list") List scoreDtos); } \ No newline at end of file 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 66c1a3c4..93e46b9e 100644 --- a/src/main/java/com/lz/modules/flow/model/ResultDetailDto.java +++ b/src/main/java/com/lz/modules/flow/model/ResultDetailDto.java @@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; +import java.util.List; /** *

@@ -52,6 +53,9 @@ public class ResultDetailDto { //优先级,从大到小 @ApiModelProperty(value = "优先级,从小到大", name = "priority") private Integer priority; + + @ApiModelProperty(value = "评分详细", name = "scoreDtos") + private List scoreDtos; /** * * @return diff --git a/src/main/java/com/lz/modules/flow/model/ResultScoreDto.java b/src/main/java/com/lz/modules/flow/model/ResultScoreDto.java index ecc922b1..edc6a486 100644 --- a/src/main/java/com/lz/modules/flow/model/ResultScoreDto.java +++ b/src/main/java/com/lz/modules/flow/model/ResultScoreDto.java @@ -27,6 +27,14 @@ public class ResultScoreDto { //审批人id @ApiModelProperty(value = "审批人id", name = "approvalId") private Long approvalId; + + //审批人id + @ApiModelProperty(value = "审批人姓名", name = "approvalName") + private String approvalName; + + //审批人id + @ApiModelProperty(value = "所占权重", name = "weight") + private BigDecimal weight; /** * * @return diff --git a/src/main/java/com/lz/modules/flow/service/FlowChartDetailRecordService.java b/src/main/java/com/lz/modules/flow/service/FlowChartDetailRecordService.java index 2e637958..7662a366 100644 --- a/src/main/java/com/lz/modules/flow/service/FlowChartDetailRecordService.java +++ b/src/main/java/com/lz/modules/flow/service/FlowChartDetailRecordService.java @@ -40,4 +40,6 @@ public interface FlowChartDetailRecordService extends IService inserts); int updateCoverFlowChartDetailRecordByIds(List updaes); + + List selectFlowChartDetailRecordsByFlowProcess(Long groupId, int flowProcess); } \ No newline at end of file diff --git a/src/main/java/com/lz/modules/flow/service/ResultScoreService.java b/src/main/java/com/lz/modules/flow/service/ResultScoreService.java index 21a85c91..7b1a520c 100644 --- a/src/main/java/com/lz/modules/flow/service/ResultScoreService.java +++ b/src/main/java/com/lz/modules/flow/service/ResultScoreService.java @@ -2,6 +2,9 @@ package com.lz.modules.flow.service; import com.baomidou.mybatisplus.extension.service.IService; import com.lz.modules.flow.entity.ResultScore; +import com.lz.modules.flow.model.ResultScoreDto; + +import java.util.List; /** *

@@ -30,4 +33,7 @@ public interface ResultScoreService extends IService { int deleteResultScoreById(Long id); + List selectResultScoresByDetailId(Long id); + + List selectResultScoresByDetailIdAndOrderByStaffIds(Long id, List scoreDtos); } \ No newline at end of file diff --git a/src/main/java/com/lz/modules/flow/service/impl/FlowChartDetailRecordServiceImpl.java b/src/main/java/com/lz/modules/flow/service/impl/FlowChartDetailRecordServiceImpl.java index d4b62623..b132375d 100644 --- a/src/main/java/com/lz/modules/flow/service/impl/FlowChartDetailRecordServiceImpl.java +++ b/src/main/java/com/lz/modules/flow/service/impl/FlowChartDetailRecordServiceImpl.java @@ -81,6 +81,11 @@ public class FlowChartDetailRecordServiceImpl extends ServiceImpl selectFlowChartDetailRecordsByFlowProcess(Long groupId, int flowProcess){ + return flowChartDetailRecordMapper.selectFlowChartDetailRecordsByFlowProcess(groupId, flowProcess); + } + 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 7718727b..0f414ae9 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 @@ -318,7 +318,7 @@ public class FlowStartServiceImpl extends ServiceImpl evaluationStartStaffs = new ArrayList<>(); - //下面初始化管理人员对应关系 + /*//下面初始化管理人员对应关系 for (StaffEntity entity:staffManagers ) { EvaluationStartStaff evaluationStartStaff = new EvaluationStartStaff(); @@ -329,7 +329,7 @@ public class FlowStartServiceImpl extends ServiceImpl * 业绩详情评分表 服务类 @@ -58,6 +61,16 @@ public class ResultScoreServiceImpl extends ServiceImpl selectResultScoresByDetailId(Long id){ + return resultScoreMapper.selectResultScoresByDetailId(id); + } + + @Override + public List selectResultScoresByDetailIdAndOrderByStaffIds(Long id, List scoreDtos){ + return resultScoreMapper.selectResultScoresByDetailIdAndOrderByStaffIds(id, scoreDtos); + } + } diff --git a/src/main/resources/mapper/flow/FlowChartDetailRecordMapper.xml b/src/main/resources/mapper/flow/FlowChartDetailRecordMapper.xml index 0206b2a5..077021e5 100644 --- a/src/main/resources/mapper/flow/FlowChartDetailRecordMapper.xml +++ b/src/main/resources/mapper/flow/FlowChartDetailRecordMapper.xml @@ -109,9 +109,7 @@ update lz_flow_chart_detail_record set is_delete = 1 where id=#{id} limit 1 - + + select * from lz_flow_chart_detail_record where evaluation_group_id=(select copy_id from lz_evaluation_group where id = #{groupId}) + and chart_id = (select id from lz_flow_chart where flow_process = #{flowProcess}) and is_delete = 0 order by step_index asc + + diff --git a/src/main/resources/mapper/flow/ResultScoreMapper.xml b/src/main/resources/mapper/flow/ResultScoreMapper.xml index 422e03ab..9895a68f 100644 --- a/src/main/resources/mapper/flow/ResultScoreMapper.xml +++ b/src/main/resources/mapper/flow/ResultScoreMapper.xml @@ -79,5 +79,17 @@ update lz_result_score set is_delete = 1 where id=#{id} limit 1 + + + + diff --git a/src/main/resources/mapper/generator/StaffDao.xml b/src/main/resources/mapper/generator/StaffDao.xml index 8b8e0346..ac699274 100644 --- a/src/main/resources/mapper/generator/StaffDao.xml +++ b/src/main/resources/mapper/generator/StaffDao.xml @@ -526,4 +526,16 @@ ) as staffinfo left join lz_departments_staff_relate relate on staffinfo.id = relate.staff_id ) as info left join lz_departments dep on info.department_id = dep.department_id GROUP BY info.id + + From 75e1c2ea2bb93fb7891b8f409cabf0570fbe9616 Mon Sep 17 00:00:00 2001 From: wulin Date: Fri, 30 Oct 2020 09:26:48 +0800 Subject: [PATCH 2/9] =?UTF-8?q?lz=5Fevaluation=5Fstart=5Fstaff=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0department=5Fid?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../flow/entity/EvaluationStartStaff.java | 29 +++++++++++++++---- .../flow/model/EvaluationStartStaffDto.java | 2 ++ .../flow/req/EvaluationStartStaffReq.java | 2 ++ .../service/impl/FlowStartServiceImpl.java | 1 + .../flow/EvaluationStartStaffMapper.xml | 13 +++++++-- src/test/java/com/lz/mysql/MysqlMain.java | 2 +- 6 files changed, 40 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/lz/modules/flow/entity/EvaluationStartStaff.java b/src/main/java/com/lz/modules/flow/entity/EvaluationStartStaff.java index 2f385110..3239b079 100644 --- a/src/main/java/com/lz/modules/flow/entity/EvaluationStartStaff.java +++ b/src/main/java/com/lz/modules/flow/entity/EvaluationStartStaff.java @@ -10,7 +10,7 @@ import java.util.Date; *

*

*发起考核考,核组人员对应关系表 * @author quyixiao -* @since 2020-10-23 +* @since 2020-10-30 */ @Data @@ -38,8 +38,8 @@ public class EvaluationStartStaff implements java.io.Serializable { //人员id @ApiModelProperty(value = "人员id", name = "staffId") private Long staffId; - //0考核人员,1管理人员 - @ApiModelProperty(value = "0考核人员,1管理人员", name = "type") + //0考核人员 1:考核人员 + @ApiModelProperty(value = "0考核人员 1:考核人员", name = "type") private Integer type; //0: 未通知评分 1: 已通知评分 @ApiModelProperty(value = "0: 未通知评分 1: 已通知评分", name = "score") @@ -47,6 +47,9 @@ public class EvaluationStartStaff implements java.io.Serializable { //考核组名称 @ApiModelProperty(value = "考核组名称", name = "evaluationName") private String evaluationName; + //员工所在的部门id + @ApiModelProperty(value = "员工所在的部门id", name = "departmentId") + private String departmentId; /** * * @return @@ -153,14 +156,14 @@ public class EvaluationStartStaff implements java.io.Serializable { } /** - * 0考核人员,1管理人员 + * 0考核人员 1:考核人员 * @return */ public Integer getType() { return type; } /** - * 0考核人员,1管理人员 + * 0考核人员 1:考核人员 * @param type */ public void setType(Integer type) { @@ -197,6 +200,21 @@ public class EvaluationStartStaff implements java.io.Serializable { this.evaluationName = evaluationName; } + /** + * 员工所在的部门id + * @return + */ + public String getDepartmentId() { + return departmentId; + } + /** + * 员工所在的部门id + * @param departmentId + */ + public void setDepartmentId(String departmentId) { + this.departmentId = departmentId; + } + @Override public String toString() { return "EvaluationStartStaff{" + @@ -210,6 +228,7 @@ public class EvaluationStartStaff implements java.io.Serializable { ",type=" + type + ",score=" + score + ",evaluationName=" + evaluationName + + ",departmentId=" + departmentId + "}"; } } \ No newline at end of file diff --git a/src/main/java/com/lz/modules/flow/model/EvaluationStartStaffDto.java b/src/main/java/com/lz/modules/flow/model/EvaluationStartStaffDto.java index 51b58f68..ec4ba0a2 100644 --- a/src/main/java/com/lz/modules/flow/model/EvaluationStartStaffDto.java +++ b/src/main/java/com/lz/modules/flow/model/EvaluationStartStaffDto.java @@ -27,6 +27,8 @@ public class EvaluationStartStaffDto { //0考核人员,1管理人员 @ApiModelProperty(value = "0考核人员,1管理人员", name = "type") private Integer type; + @ApiModelProperty(value = "员工所在的部门id", name = "departmentId") + private String departmentId; /** * * @return diff --git a/src/main/java/com/lz/modules/flow/req/EvaluationStartStaffReq.java b/src/main/java/com/lz/modules/flow/req/EvaluationStartStaffReq.java index 9b69903e..97db0d8b 100644 --- a/src/main/java/com/lz/modules/flow/req/EvaluationStartStaffReq.java +++ b/src/main/java/com/lz/modules/flow/req/EvaluationStartStaffReq.java @@ -50,6 +50,8 @@ public class EvaluationStartStaffReq implements java.io.Serializable { //0考核人员,1管理人员 @ApiModelProperty(value = "0考核人员,1管理人员", name = "type") private Integer type; + @ApiModelProperty(value = "员工所在的部门id", name = "departmentId") + private String departmentId; /** * * @return 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 0f414ae9..7d52ffe5 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 @@ -340,6 +340,7 @@ public class FlowStartServiceImpl extends ServiceImpl + - id AS id, is_delete AS isDelete, gmt_create AS gmtCreate, gmt_modified AS gmtModified, evaluation_id AS evaluationId, start_id AS startId, staff_id AS staffId, type AS type, score AS score, evaluation_name AS evaluationName + id AS id, is_delete AS isDelete, gmt_create AS gmtCreate, gmt_modified AS gmtModified, evaluation_id AS evaluationId, start_id AS startId, staff_id AS staffId, type AS type, score AS score, evaluation_name AS evaluationName, department_id AS departmentId @@ -38,6 +39,7 @@ type, score, evaluation_name, + department_id, is_delete, gmt_create, gmt_modified @@ -48,6 +50,7 @@ #{ type}, #{ score}, #{ evaluationName}, + #{ departmentId}, 0, now(), now() @@ -66,7 +69,8 @@ staff_id = #{staffId}, type = #{type}, score = #{score}, - evaluation_name = #{evaluationName} + evaluation_name = #{evaluationName}, + department_id = #{departmentId} ,gmt_modified = now() where id = #{id} @@ -84,7 +88,8 @@ staff_id = #{staffId}, type = #{type}, score = #{score}, - evaluation_name = #{evaluationName} + evaluation_name = #{evaluationName}, + department_id = #{departmentId} ,gmt_modified = now() where id = #{id} @@ -102,6 +107,7 @@ staff_id, type, evaluation_name, + department_id, is_delete )values ( @@ -110,6 +116,7 @@ #{ item.staffId}, #{ item.type}, #{ item.evaluationName}, + #{ item.departmentId}, 0 ) diff --git a/src/test/java/com/lz/mysql/MysqlMain.java b/src/test/java/com/lz/mysql/MysqlMain.java index 91786e67..7332ca28 100644 --- a/src/test/java/com/lz/mysql/MysqlMain.java +++ b/src/test/java/com/lz/mysql/MysqlMain.java @@ -110,7 +110,7 @@ public class MysqlMain { //list.add(new TablesBean("lz_flow_chart_detail_record")); //list.add(new TablesBean("lz_flow_approval_role")); - list.add(new TablesBean("lz_flow_chart")); + list.add(new TablesBean("lz_evaluation_start_staff")); List list2 = new ArrayList(); Map map = MysqlUtil2ShowCreateTable.getComments(); From e5b21bde35b01da68ea6935090b622ea6b957612 Mon Sep 17 00:00:00 2001 From: wulin Date: Fri, 30 Oct 2020 09:54:58 +0800 Subject: [PATCH 3/9] =?UTF-8?q?=E4=BF=9D=E5=AD=98=E7=BB=84=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E5=A2=9E=E5=8A=A0=E5=AF=B9=E7=BB=84=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E5=91=98=E8=A1=A8lz=5Fstaff=5Frole=E6=95=B0=E6=8D=AE=E7=9A=84?= =?UTF-8?q?=E6=8F=92=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lz/modules/flow/dao/StaffRoleMapper.java | 2 + .../flow/service/StaffRoleService.java | 2 + .../service/impl/StaffRoleServiceImpl.java | 5 ++ .../controller/EvaluationGroupController.java | 48 +++++++++++++++---- .../resources/mapper/flow/StaffRoleMapper.xml | 8 ++++ 5 files changed, 55 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/lz/modules/flow/dao/StaffRoleMapper.java b/src/main/java/com/lz/modules/flow/dao/StaffRoleMapper.java index 9a93afca..94302f52 100644 --- a/src/main/java/com/lz/modules/flow/dao/StaffRoleMapper.java +++ b/src/main/java/com/lz/modules/flow/dao/StaffRoleMapper.java @@ -42,4 +42,6 @@ public interface StaffRoleMapper extends BaseMapper { List selectByCondition(@Param("page") IPage page, @Param("params") Map params); List selectByGroupId(@Param("id") Long id); + + List selectStaffRolesByStaffId(@Param("list") List mIds); } \ No newline at end of file diff --git a/src/main/java/com/lz/modules/flow/service/StaffRoleService.java b/src/main/java/com/lz/modules/flow/service/StaffRoleService.java index fe116ab3..25c5d639 100644 --- a/src/main/java/com/lz/modules/flow/service/StaffRoleService.java +++ b/src/main/java/com/lz/modules/flow/service/StaffRoleService.java @@ -49,4 +49,6 @@ public interface StaffRoleService extends IService { List selectMenuList(); List selectByGroupId(Long id); + + List selectStaffRolesByStaffId(List mIds); } \ No newline at end of file diff --git a/src/main/java/com/lz/modules/flow/service/impl/StaffRoleServiceImpl.java b/src/main/java/com/lz/modules/flow/service/impl/StaffRoleServiceImpl.java index 1d3702c8..fd493e9e 100644 --- a/src/main/java/com/lz/modules/flow/service/impl/StaffRoleServiceImpl.java +++ b/src/main/java/com/lz/modules/flow/service/impl/StaffRoleServiceImpl.java @@ -270,4 +270,9 @@ public class StaffRoleServiceImpl extends ServiceImpl selectStaffRolesByStaffId(List mIds){ + return staffRoleMapper.selectStaffRolesByStaffId(mIds); + } + } diff --git a/src/main/java/com/lz/modules/performance/controller/EvaluationGroupController.java b/src/main/java/com/lz/modules/performance/controller/EvaluationGroupController.java index 6fa9fe19..1cda07d8 100644 --- a/src/main/java/com/lz/modules/performance/controller/EvaluationGroupController.java +++ b/src/main/java/com/lz/modules/performance/controller/EvaluationGroupController.java @@ -11,21 +11,16 @@ import com.lz.modules.app.service.StaffService; import com.lz.modules.flow.entity.EvaluationGroup; import com.lz.modules.flow.entity.FlowManager; import com.lz.modules.flow.entity.ResultModel; +import com.lz.modules.flow.entity.StaffRole; import com.lz.modules.flow.model.EvaluationGroupDto; import com.lz.modules.flow.req.EvaluationGroupReq; -import com.lz.modules.flow.service.EvaluationGroupService; -import com.lz.modules.flow.service.FlowManagerService; -import com.lz.modules.flow.service.ResultModelService; -import com.lz.modules.flow.service.StaffRoleDepartmentService; +import com.lz.modules.flow.service.*; import io.swagger.annotations.*; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; @@ -49,6 +44,9 @@ public class EvaluationGroupController { @Autowired private StaffRoleDepartmentService staffRoleDepartmentService; + @Autowired + private StaffRoleService staffRoleService; + @@ -133,8 +131,8 @@ public class EvaluationGroupController { @ApiOperation("保存考评组") @ApiResponses({@ApiResponse(code = 200, message = "成功", response = EvaluationGroup.class)}) public R save(@RequestBody @ApiParam EvaluationGroup evaluationGroup) { + EvaluationGroup evaluationGroup1 = evaluationGroupService.selectEvaluationGroupByName(evaluationGroup.getName()); if(evaluationGroup.getId() != null && evaluationGroup.getId().intValue() > 0){ - EvaluationGroup evaluationGroup1 = evaluationGroupService.selectEvaluationGroupByName(evaluationGroup.getName()); if(evaluationGroup1 == null || evaluationGroup1.getId().equals(evaluationGroup.getId())){ evaluationGroupService.updateEvaluationGroupById(evaluationGroup); }else { @@ -142,13 +140,43 @@ public class EvaluationGroupController { } }else{ - EvaluationGroup evaluationGroup1 = evaluationGroupService.selectEvaluationGroupByName(evaluationGroup.getName()); if(evaluationGroup1 != null){ return R.error("已经存在相同名称考核组"); } evaluationGroupService.insertEvaluationGroup(evaluationGroup); } + //更新组管理员信息 + if(evaluationGroup.getManagerIds() != null && evaluationGroup.getManagerIds().length() > 0){ + List mIds = Arrays.stream(evaluationGroup.getManagerIds().split(",")).map(new Function() { + @Override + public Long apply(String s) { + return Long.parseLong(s); + } + }).collect(Collectors.toList()); + List staffRoles = staffRoleService.selectByGroupId(evaluationGroup.getId()); + if(staffRoles.size() > 0){ + Map staffRoleMap = + staffRoles.stream().collect(Collectors.toMap(StaffRole::getStaffId, Function.identity(), (e, repace) -> e)); + for(int i = 0; i < mIds.size();){ + Long l = mIds.get(i); + if(staffRoleMap.containsKey(l)){ + mIds.remove(l); + } + } + } + if(mIds.size() > 0){ + staffRoles = new ArrayList<>(); + for (Long id:mIds + ) { + StaffRole staffRole = new StaffRole(); + staffRole.setStaffId(id); + staffRole.setEvaluationGroupId(evaluationGroup.getId()); + staffRoles.add(staffRole); + } + staffRoleService.saveBatch(staffRoles); + } + } return R.ok().put("data", evaluationGroup); } diff --git a/src/main/resources/mapper/flow/StaffRoleMapper.xml b/src/main/resources/mapper/flow/StaffRoleMapper.xml index fd55ce3c..05692e43 100644 --- a/src/main/resources/mapper/flow/StaffRoleMapper.xml +++ b/src/main/resources/mapper/flow/StaffRoleMapper.xml @@ -115,6 +115,14 @@ select * from lz_staff_role where is_delete = 0 and evaluation_group_id = #{id} + + From 3fec50fe817b4b6d3ae2228cae550ee22310ebd8 Mon Sep 17 00:00:00 2001 From: wulin Date: Fri, 30 Oct 2020 10:47:37 +0800 Subject: [PATCH 4/9] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=8C=87=E5=AE=9A?= =?UTF-8?q?=E5=8F=91=E8=B5=B7=E6=8C=87=E5=AE=9A=E4=BA=BA=E7=9A=84=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/lz/modules/flow/model/GroupStaffs.java | 11 +++++++++++ .../com/lz/modules/flow/model/StartGroups.java | 11 +++++++++++ .../flow/service/impl/FlowStartServiceImpl.java | 15 +++++++++++++++ 3 files changed, 37 insertions(+) create mode 100644 src/main/java/com/lz/modules/flow/model/GroupStaffs.java create mode 100644 src/main/java/com/lz/modules/flow/model/StartGroups.java diff --git a/src/main/java/com/lz/modules/flow/model/GroupStaffs.java b/src/main/java/com/lz/modules/flow/model/GroupStaffs.java new file mode 100644 index 00000000..307a2a29 --- /dev/null +++ b/src/main/java/com/lz/modules/flow/model/GroupStaffs.java @@ -0,0 +1,11 @@ +package com.lz.modules.flow.model; + +import lombok.Data; + +import java.util.List; +//组,人员ids +@Data +public class GroupStaffs { + private Long groupId; + private List staffIds; +} diff --git a/src/main/java/com/lz/modules/flow/model/StartGroups.java b/src/main/java/com/lz/modules/flow/model/StartGroups.java new file mode 100644 index 00000000..eb770c6b --- /dev/null +++ b/src/main/java/com/lz/modules/flow/model/StartGroups.java @@ -0,0 +1,11 @@ +package com.lz.modules.flow.model; + +import lombok.Data; + +import java.util.List; +//发起,组集合对象 +@Data +public class StartGroups { + private Long startId; + private List staffIds; +} 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 7d52ffe5..5bb62971 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 @@ -13,6 +13,7 @@ import com.lz.modules.flow.entity.*; import com.lz.modules.flow.model.DepartManagers; import com.lz.modules.flow.model.ResultModelDto; import com.lz.modules.flow.model.ResultTagetLibDto; +import com.lz.modules.flow.model.StartGroups; import com.lz.modules.flow.service.*; import com.lz.modules.performance.service.ResultTagetLibService; import com.lz.modules.sys.entity.app.ResultDetail; @@ -123,6 +124,20 @@ public class FlowStartServiceImpl extends ServiceImpl staffSimpleInfos = staffService.selectStaffSimpleInfos(staffIds); + if(staffSimpleInfos.size() == 0){ + return R.error("无有效考核人员,考核人员已离职"); + }*/ + return R.ok(); + } + @Override public R saveStart(FlowStart flowStart){ //下面生成或者合并发起绩效 From b2d5db2149f92231f26511d532b0e9cc80639c8a Mon Sep 17 00:00:00 2001 From: wulin Date: Fri, 30 Oct 2020 10:55:18 +0800 Subject: [PATCH 5/9] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=8F=91=E8=B5=B7?= =?UTF-8?q?=E6=8C=87=E5=AE=9A=E4=BA=BA=E5=91=98=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../flow/service/FlowStartService.java | 3 + .../service/impl/FlowStartServiceImpl.java | 532 +++++++++--------- 2 files changed, 278 insertions(+), 257 deletions(-) diff --git a/src/main/java/com/lz/modules/flow/service/FlowStartService.java b/src/main/java/com/lz/modules/flow/service/FlowStartService.java index 32e5b1f5..9290ecb1 100644 --- a/src/main/java/com/lz/modules/flow/service/FlowStartService.java +++ b/src/main/java/com/lz/modules/flow/service/FlowStartService.java @@ -3,6 +3,7 @@ package com.lz.modules.flow.service; import com.baomidou.mybatisplus.extension.service.IService; import com.lz.common.utils.R; import com.lz.modules.flow.entity.FlowStart; +import com.lz.modules.flow.model.StartGroups; import java.util.List; @@ -35,6 +36,8 @@ public interface FlowStartService extends IService { FlowStart selectFlowStartByName(String name); + R startStaffs(StartGroups startGroupStaffIds) + R saveStart(FlowStart flowStart); R getModelById(Long id, int type); 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 5bb62971..a7f4f48a 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 @@ -180,158 +180,178 @@ public class FlowStartServiceImpl extends ServiceImpl staffIds = evaluationGroupService.selectAllStaffSimpleInfoByGroupId(evaluationGroup); - - if(staffIds.size() == 0){ - TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();//事务回滚 - - return R.error(evaluationGroup.getName() + "——无有效考核人员"); - } - List resultModelDtos = resultModelService.selectResultDtoByGroupId(evaluationGroup.getId()); - if(resultModelDtos.size() == 0){ - TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();//事务回滚 - return R.error(evaluationGroup.getName() + "——没有设置考核模板"); + switch (start(evaluationGroup, flowStart, staffManages)){ + case 1: + return R.error(evaluationGroup.getName() + "——无有效考核人员"); + case 2: + return R.error(evaluationGroup.getName() + "——没有设置考核模板"); + case 3: + return R.error(evaluationGroup.getName() + "——没有绩效流程节点"); + case 4: + return R.error(evaluationGroup.getName() + "——没有设置考核流程"); + case 5: + return R.error(evaluationGroup.getName() + "——没有设置绩效管理人员"); + case 6: + return R.error(evaluationGroup.getName() + "——初始化考核流程失败"); } + } + return R.ok("发起成功").put("data", flowStart); + } - List flowCharts = flowChartService.selectFlowChartsByGroupId(evaluationGroup.getId()); - if(flowCharts.size() == 0){ - TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();//事务回滚 - return R.error(evaluationGroup.getName() + "——没有绩效流程节点"); - } - List flowChartDetailRecords = new ArrayList<>(); - for (FlowChart chart:flowCharts - ) {//按照节点顺序获取正确的流程 - List flowChartDetailRecords1 - = flowChartDetailRecordService.selectFlowChartDetailRecordByGroupIdAndChartId(evaluationGroup.getId(), chart.getId()); - flowChartDetailRecords.addAll(flowChartDetailRecords1); - } + private int start(EvaluationGroup evaluationGroup, FlowStart flowStart, Map> staffManages){ - if(flowChartDetailRecords.size() == 0){ - TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();//事务回滚 - return R.error(evaluationGroup.getName() + "——没有设置考核流程"); - } - Map chartNameMaps = - flowCharts.stream().collect(Collectors.toMap(FlowChart::getId, FlowChart::getName));//流程节点与流程名称对应map,下面多次循环,减少数据库查找 + //下面初始化员工考核流程 + List staffIds = evaluationGroupService.selectAllStaffSimpleInfoByGroupId(evaluationGroup); - List staffManagers = null; - if(!StringUtil.isEmpty(evaluationGroup.getManagerIds())){ - List mIds = Arrays.stream(evaluationGroup.getManagerIds().split(",")) - .map(new Function() { - @Override - public Long apply(String s) { - return Long.parseLong(s); - } - }).collect(Collectors.toList()); - //查找在职的管理人员 - staffManagers = staffService.selectOnJobByIds(mIds); + if(staffIds.size() == 0){ + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();//事务回滚 - } - if(staffManagers == null || staffManagers.size() == 0){ - TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();//事务回滚 - return R.error(evaluationGroup.getName() + "——没有设置绩效管理人员"); - } + return 1; + } + List resultModelDtos = resultModelService.selectResultDtoByGroupId(evaluationGroup.getId()); + if(resultModelDtos.size() == 0){ + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();//事务回滚 + return 2; + } - //下面拷贝一份考评组信息发起后所使用的考评组id为复制后的id - evaluationGroup.setCopyId(evaluationGroup.getId()); - evaluationGroup.setId(null); - evaluationGroup.setGmtCreate(null); - evaluationGroup.setGmtModified(null); - evaluationGroupService.insertEvaluationGroup(evaluationGroup); + List flowCharts = flowChartService.selectFlowChartsByGroupId(evaluationGroup.getId()); + if(flowCharts.size() == 0){ + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();//事务回滚 + return 3; + } + List flowChartDetailRecords = new ArrayList<>(); + for (FlowChart chart:flowCharts + ) {//按照节点顺序获取正确的流程 + List flowChartDetailRecords1 + = flowChartDetailRecordService.selectFlowChartDetailRecordByGroupIdAndChartId(evaluationGroup.getId(), chart.getId()); + flowChartDetailRecords.addAll(flowChartDetailRecords1); + } - //拷贝考评组的指标信息 - List resultTagetLibs = new ArrayList<>(); + if(flowChartDetailRecords.size() == 0){ + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();//事务回滚 + return 4; + } + Map chartNameMaps = + flowCharts.stream().collect(Collectors.toMap(FlowChart::getId, FlowChart::getName));//流程节点与流程名称对应map,下面多次循环,减少数据库查找 - for (ResultModelDto dto:resultModelDtos - ) { - - - dto.setEvaluationGroupId(evaluationGroup.getId());//设置拷贝组的id - //下面拷贝一份考评组信息的维度信息 - ResultModel resultModel = new ResultModel(); - BeanUtils.copyProperties(dto, resultModel); - resultModel.setId(null); - resultModelService.insertResultModel(resultModel); - - List libDtos = resultTagetLibService.selectResultTagetLibDtoByModelId(dto.getId()); - dto.setTagetLibs(libDtos); - for (ResultTagetLibDto libDto: libDtos - ) { - //下面拷贝考评组里面的指标信息 - ResultTagetLib resultTagetLib = new ResultTagetLib(); - BeanUtils.copyProperties(libDto, resultTagetLib); - resultTagetLib.setModelId(resultModel.getId());//设置新的维度id - resultTagetLib.setId(null); - resultTagetLibs.add(resultTagetLib); - } - } - if(resultTagetLibs.size() > 0){ - //插入备份的考评组指标信息 - resultTagetLibService.insertResultTagetLibs(resultTagetLibs); - } - - - - - //下面初始化lz_flow流程表 lz_flow_approval_role流程审批表 - List flowApprovalRoles = new ArrayList<>(); - int stepIndex = 0; - for (FlowChartDetailRecord flowChartDetailRecord:flowChartDetailRecords - ) { - Flow flow = new Flow(); - flow.setFlowId(evaluationGroup.getId()); - flow.setOpt("+"); - flow.setStartId(flowStart.getId()); - flow.setChartId(flowChartDetailRecord.getChartId()); - flow.setOptDesc(chartNameMaps.get(flowChartDetailRecord.getChartId())); - - flowService.insertFlow(flow); - FlowApprovalRole flowApprovalRole = null; - if(flowChartDetailRecord.getOptType().intValue() == ChartOptType.APPOINT.getCode()){//指定人员的 - String[] optIds = flowChartDetailRecord.getOptIds().split(","); - for (String id:optIds - ) { - - flowApprovalRole = new FlowApprovalRole(); - flowApprovalRole.setFlowId(flow.getId()); - flowApprovalRole.setApprovalId(Long.parseLong(id)); - flowApprovalRole.setStepType(flowChartDetailRecord.getStepType()); - flowApprovalRole.setRoleId(flowChartDetailRecord.getRoleIds()); - flowApprovalRole.setType(flowChartDetailRecord.getOptType()); - flowApprovalRoles.add(flowApprovalRole); - flowApprovalRole.setStepIndex(stepIndex); - if(flowChartDetailRecord.getStepType().intValue() == 0){ - //依次 - stepIndex++; + List staffManagers = null; + if(!StringUtil.isEmpty(evaluationGroup.getManagerIds())){ + List mIds = Arrays.stream(evaluationGroup.getManagerIds().split(",")) + .map(new Function() { + @Override + public Long apply(String s) { + return Long.parseLong(s); } - } - //stepIndex++; - if(flowApprovalRole != null){ - stepIndex = flowApprovalRole.getStepIndex() + 1; - } + }).collect(Collectors.toList()); + //查找在职的管理人员 + staffManagers = staffService.selectOnJobByIds(mIds); + + } + if(staffManagers == null || staffManagers.size() == 0){ + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();//事务回滚 + return 5; + } + + //下面拷贝一份考评组信息发起后所使用的考评组id为复制后的id + evaluationGroup.setCopyId(evaluationGroup.getId()); + evaluationGroup.setId(null); + evaluationGroup.setGmtCreate(null); + evaluationGroup.setGmtModified(null); + evaluationGroupService.insertEvaluationGroup(evaluationGroup); + + //拷贝考评组的指标信息 + List resultTagetLibs = new ArrayList<>(); + + for (ResultModelDto dto:resultModelDtos + ) { + + + dto.setEvaluationGroupId(evaluationGroup.getId());//设置拷贝组的id + //下面拷贝一份考评组信息的维度信息 + ResultModel resultModel = new ResultModel(); + BeanUtils.copyProperties(dto, resultModel); + resultModel.setId(null); + resultModelService.insertResultModel(resultModel); + + List libDtos = resultTagetLibService.selectResultTagetLibDtoByModelId(dto.getId()); + dto.setTagetLibs(libDtos); + for (ResultTagetLibDto libDto: libDtos + ) { + //下面拷贝考评组里面的指标信息 + ResultTagetLib resultTagetLib = new ResultTagetLib(); + BeanUtils.copyProperties(libDto, resultTagetLib); + resultTagetLib.setModelId(resultModel.getId());//设置新的维度id + resultTagetLib.setId(null); + resultTagetLibs.add(resultTagetLib); + } + } + if(resultTagetLibs.size() > 0){ + //插入备份的考评组指标信息 + resultTagetLibService.insertResultTagetLibs(resultTagetLibs); + } + + + + + //下面初始化lz_flow流程表 lz_flow_approval_role流程审批表 + List flowApprovalRoles = new ArrayList<>(); + int stepIndex = 0; + for (FlowChartDetailRecord flowChartDetailRecord:flowChartDetailRecords + ) { + Flow flow = new Flow(); + flow.setFlowId(evaluationGroup.getId()); + flow.setOpt("+"); + flow.setStartId(flowStart.getId()); + flow.setChartId(flowChartDetailRecord.getChartId()); + flow.setOptDesc(chartNameMaps.get(flowChartDetailRecord.getChartId())); + + flowService.insertFlow(flow); + FlowApprovalRole flowApprovalRole = null; + if(flowChartDetailRecord.getOptType().intValue() == ChartOptType.APPOINT.getCode()){//指定人员的 + String[] optIds = flowChartDetailRecord.getOptIds().split(","); + for (String id:optIds + ) { - }else{ flowApprovalRole = new FlowApprovalRole(); flowApprovalRole.setFlowId(flow.getId()); + flowApprovalRole.setApprovalId(Long.parseLong(id)); flowApprovalRole.setStepType(flowChartDetailRecord.getStepType()); flowApprovalRole.setRoleId(flowChartDetailRecord.getRoleIds()); flowApprovalRole.setType(flowChartDetailRecord.getOptType()); flowApprovalRoles.add(flowApprovalRole); flowApprovalRole.setStepIndex(stepIndex); - - stepIndex++; + if(flowChartDetailRecord.getStepType().intValue() == 0){ + //依次 + stepIndex++; + } + } + //stepIndex++; + if(flowApprovalRole != null){ + stepIndex = flowApprovalRole.getStepIndex() + 1; } + }else{ + flowApprovalRole = new FlowApprovalRole(); + flowApprovalRole.setFlowId(flow.getId()); + flowApprovalRole.setStepType(flowChartDetailRecord.getStepType()); + flowApprovalRole.setRoleId(flowChartDetailRecord.getRoleIds()); + flowApprovalRole.setType(flowChartDetailRecord.getOptType()); + flowApprovalRoles.add(flowApprovalRole); + flowApprovalRole.setStepIndex(stepIndex); + + stepIndex++; } - //插入记录/flowChart/saveDetailProcs - if(flowApprovalRoles.size() > 0){ - flowApprovalRoleService.insertFlowApprovalRoles(flowApprovalRoles); - //初始化lz_result_details数据 - List resultDetails = new ArrayList<>(); + } + //插入记录/flowChart/saveDetailProcs + if(flowApprovalRoles.size() > 0){ + flowApprovalRoleService.insertFlowApprovalRoles(flowApprovalRoles); + + //初始化lz_result_details数据 + List resultDetails = new ArrayList<>(); - List evaluationStartStaffs = new ArrayList<>(); + List evaluationStartStaffs = new ArrayList<>(); /*//下面初始化管理人员对应关系 for (StaffEntity entity:staffManagers @@ -347,156 +367,154 @@ public class FlowStartServiceImpl extends ServiceImpl 0){//当设置为几级领导时 - ///查找领导,如果不存在那么设置管理人员 - List staffLeader; - String key = staffInfo.getDepartmentId() + "_" + approvalRole.getType(); - if(staffManages.containsKey(key)){ - staffLeader = staffManages.get(staffInfo.getDepartmentId()); - }else{ - DepartManagers departManagers = - staffService.findLeader(staffInfo.getId(), approvalRole.getType()); - staffLeader = departManagers.getManagers(); - staffManages.put(key, departManagers.getManagers()); - } - - if(staffLeader.size() == 0){ - //没有领导,通知到组设置的绩效管理人员 - for (StaffEntity entity:staffManagers - ) { - roleJSON += ("{\"roleId\":0,\"staffId\":" + entity.getId() + "},");//这里写死了权限为0的即为找不到领导 - - } - if(i == 0){//目前只设置一个,多个不明确是否支持,roleJSON是支持多个的 - //设置当前审批员工id current_approval_staff_id - resultRecord.setCurrentApprovalStaffId(staffManagers.get(0).getId()); - //设置当前审批员工姓名 current_approval_staff_name - resultRecord.setCurrentApprovalStaffName(staffManagers.get(0).getName()); - - } - }else{ - for(int j = 0; j 0){//当设置为几级领导时 + ///查找领导,如果不存在那么设置管理人员 + List staffLeader; + String key = staffInfo.getDepartmentId() + "_" + approvalRole.getType(); + if(staffManages.containsKey(key)){ + staffLeader = staffManages.get(staffInfo.getDepartmentId()); }else{ + DepartManagers departManagers = + staffService.findLeader(staffInfo.getId(), approvalRole.getType()); + staffLeader = departManagers.getManagers(); + staffManages.put(key, departManagers.getManagers()); + } + + if(staffLeader.size() == 0){ + //没有领导,通知到组设置的绩效管理人员 + for (StaffEntity entity:staffManagers + ) { + roleJSON += ("{\"roleId\":0,\"staffId\":" + entity.getId() + "},");//这里写死了权限为0的即为找不到领导 + + } if(i == 0){//目前只设置一个,多个不明确是否支持,roleJSON是支持多个的 //设置当前审批员工id current_approval_staff_id - resultRecord.setCurrentApprovalStaffId(approvalRole.getApprovalId()); + resultRecord.setCurrentApprovalStaffId(staffManagers.get(0).getId()); //设置当前审批员工姓名 current_approval_staff_name - resultRecord.setCurrentApprovalStaffName(""); + resultRecord.setCurrentApprovalStaffName(staffManagers.get(0).getName()); + + } + }else{ + for(int j = 0; j 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.setPriority(libDto.getOrderBy()); - resultDetails.add(resultDetail); } } + + roleJSON += ("{\"roleId\":"+ approvalRole.getRoleId() + + ",\"staffId\":" + staffId + "},"); + continue; + } + break; + } + roleJSON += "]"; + roleJSON = roleJSON.replace(",]", "]"); + resultRecord.setFlowStaffIdRole(roleJSON); + resultRecordService.insertResultRecord(resultRecord); + //下面生成实际的考核流程 + 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.setPriority(libDto.getOrderBy()); + resultDetails.add(resultDetail); + } } } - //如果有数据插入lz_result_detail表 - if(resultDetails.size() > 0){ - // - resultDetailService.insertResultDetails(resultDetails); + } + //如果有数据插入lz_result_detail表 + if(resultDetails.size() > 0){ + // + resultDetailService.insertResultDetails(resultDetails); - } - - - - evaluationStartStaffService.insertEvaluationStartStaffs(evaluationStartStaffs); - //下面通知所有参与考核人员 - - //如果有下面通知所有管理人员 - }else{ - TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();//事务回滚 - return R.error(evaluationGroup.getName() + "——初始化考核流程失败"); } + + + evaluationStartStaffService.insertEvaluationStartStaffs(evaluationStartStaffs); + //下面通知所有参与考核人员 + + //如果有下面通知所有管理人员 + }else{ + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();//事务回滚 + return 6; } - return R.ok("发起成功").put("data", flowStart); + return 0; } @Override From 8f38d222fac9fbfe862f654d717e1e06da62fa4c Mon Sep 17 00:00:00 2001 From: wulin Date: Fri, 30 Oct 2020 10:55:37 +0800 Subject: [PATCH 6/9] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/lz/modules/flow/service/FlowStartService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/lz/modules/flow/service/FlowStartService.java b/src/main/java/com/lz/modules/flow/service/FlowStartService.java index 9290ecb1..ddc57ac3 100644 --- a/src/main/java/com/lz/modules/flow/service/FlowStartService.java +++ b/src/main/java/com/lz/modules/flow/service/FlowStartService.java @@ -36,7 +36,7 @@ public interface FlowStartService extends IService { FlowStart selectFlowStartByName(String name); - R startStaffs(StartGroups startGroupStaffIds) + R startStaffs(StartGroups startGroupStaffIds); R saveStart(FlowStart flowStart); From 81aa664cb358001b76c4894b4f1eaf8475ccf23a Mon Sep 17 00:00:00 2001 From: wulin Date: Fri, 30 Oct 2020 11:06:05 +0800 Subject: [PATCH 7/9] =?UTF-8?q?=E5=AE=8C=E5=96=84=E6=8C=87=E5=AE=9A?= =?UTF-8?q?=E8=80=83=E6=A0=B8=E4=BA=BA=E5=91=98=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lz/modules/flow/model/GroupStaffs.java | 3 +- .../lz/modules/flow/model/StartGroups.java | 2 +- .../service/impl/FlowStartServiceImpl.java | 81 ++++++++++++------- 3 files changed, 55 insertions(+), 31 deletions(-) diff --git a/src/main/java/com/lz/modules/flow/model/GroupStaffs.java b/src/main/java/com/lz/modules/flow/model/GroupStaffs.java index 307a2a29..789ac5cd 100644 --- a/src/main/java/com/lz/modules/flow/model/GroupStaffs.java +++ b/src/main/java/com/lz/modules/flow/model/GroupStaffs.java @@ -1,11 +1,12 @@ package com.lz.modules.flow.model; +import com.lz.modules.flow.entity.EvaluationGroup; import lombok.Data; import java.util.List; //组,人员ids @Data public class GroupStaffs { - private Long groupId; + private EvaluationGroup evaluationGroup; private List staffIds; } diff --git a/src/main/java/com/lz/modules/flow/model/StartGroups.java b/src/main/java/com/lz/modules/flow/model/StartGroups.java index eb770c6b..fdd75add 100644 --- a/src/main/java/com/lz/modules/flow/model/StartGroups.java +++ b/src/main/java/com/lz/modules/flow/model/StartGroups.java @@ -7,5 +7,5 @@ import java.util.List; @Data public class StartGroups { private Long startId; - private List staffIds; + private List groups; } 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 a7f4f48a..53d10c46 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 @@ -10,10 +10,7 @@ import com.lz.modules.app.entity.StaffSimpleInfo; import com.lz.modules.app.service.StaffService; import com.lz.modules.flow.dao.FlowStartMapper; import com.lz.modules.flow.entity.*; -import com.lz.modules.flow.model.DepartManagers; -import com.lz.modules.flow.model.ResultModelDto; -import com.lz.modules.flow.model.ResultTagetLibDto; -import com.lz.modules.flow.model.StartGroups; +import com.lz.modules.flow.model.*; import com.lz.modules.flow.service.*; import com.lz.modules.performance.service.ResultTagetLibService; import com.lz.modules.sys.entity.app.ResultDetail; @@ -135,6 +132,28 @@ public class FlowStartServiceImpl extends ServiceImpl> staffManages = new HashedMap();//部门(id+几级)和部门几级管理对应关系,减少数据库查找 + for (GroupStaffs groupStaffs:startGroupStaffIds.getGroups() + ) { + List staffSimpleInfos = staffService.selectStaffSimpleInfos(groupStaffs.getStaffIds()); + if(staffSimpleInfos.size() == 0){ + R.error(groupStaffs.getEvaluationGroup().getName() + "——无有效考核人员"); + } + switch (start(groupStaffs.getEvaluationGroup(), flowStart, staffManages, staffSimpleInfos)){ + + case 1: + return R.error(groupStaffs.getEvaluationGroup().getName() + "——没有设置考核模板"); + case 2: + return R.error(groupStaffs.getEvaluationGroup().getName() + "——没有绩效流程节点"); + case 3: + return R.error(groupStaffs.getEvaluationGroup().getName() + "——没有设置考核流程"); + case 4: + return R.error(groupStaffs.getEvaluationGroup().getName() + "——没有设置绩效管理人员"); + case 5: + return R.error(groupStaffs.getEvaluationGroup().getName() + "——初始化考核流程失败"); + } + } + return R.ok(); } @@ -180,44 +199,45 @@ public class FlowStartServiceImpl extends ServiceImpl staffIds = evaluationGroupService.selectAllStaffSimpleInfoByGroupId(evaluationGroup); + + if(staffIds.size() == 0){ + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();//事务回滚 + + return R.error(evaluationGroup.getName() + "——无有效考核人员"); + } + switch (start(evaluationGroup, flowStart, staffManages, staffIds)){ + case 1: - return R.error(evaluationGroup.getName() + "——无有效考核人员"); - case 2: return R.error(evaluationGroup.getName() + "——没有设置考核模板"); - case 3: + case 2: return R.error(evaluationGroup.getName() + "——没有绩效流程节点"); - case 4: + case 3: return R.error(evaluationGroup.getName() + "——没有设置考核流程"); - case 5: + case 4: return R.error(evaluationGroup.getName() + "——没有设置绩效管理人员"); - case 6: + case 5: return R.error(evaluationGroup.getName() + "——初始化考核流程失败"); } } return R.ok("发起成功").put("data", flowStart); } - private int start(EvaluationGroup evaluationGroup, FlowStart flowStart, Map> staffManages){ + private int start(EvaluationGroup evaluationGroup, FlowStart flowStart, + Map> staffManages, List staffIds){ - //下面初始化员工考核流程 - List staffIds = evaluationGroupService.selectAllStaffSimpleInfoByGroupId(evaluationGroup); - if(staffIds.size() == 0){ - TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();//事务回滚 - - return 1; - } List resultModelDtos = resultModelService.selectResultDtoByGroupId(evaluationGroup.getId()); if(resultModelDtos.size() == 0){ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();//事务回滚 - return 2; + return 1; } List flowCharts = flowChartService.selectFlowChartsByGroupId(evaluationGroup.getId()); if(flowCharts.size() == 0){ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();//事务回滚 - return 3; + return 2; } List flowChartDetailRecords = new ArrayList<>(); for (FlowChart chart:flowCharts @@ -229,7 +249,7 @@ public class FlowStartServiceImpl extends ServiceImpl chartNameMaps = flowCharts.stream().collect(Collectors.toMap(FlowChart::getId, FlowChart::getName));//流程节点与流程名称对应map,下面多次循环,减少数据库查找 @@ -249,15 +269,18 @@ public class FlowStartServiceImpl extends ServiceImpl resultTagetLibs = new ArrayList<>(); @@ -512,7 +535,7 @@ public class FlowStartServiceImpl extends ServiceImpl Date: Fri, 30 Oct 2020 11:12:34 +0800 Subject: [PATCH 8/9] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lz/modules/flow/service/impl/FlowStartServiceImpl.java | 6 +----- .../resources/mapper/flow/FlowChartDetailRecordMapper.xml | 3 +++ 2 files changed, 4 insertions(+), 5 deletions(-) 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 53d10c46..03176ce6 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 @@ -128,10 +128,6 @@ public class FlowStartServiceImpl extends ServiceImpl staffSimpleInfos = staffService.selectStaffSimpleInfos(staffIds); - if(staffSimpleInfos.size() == 0){ - return R.error("无有效考核人员,考核人员已离职"); - }*/ Map> staffManages = new HashedMap();//部门(id+几级)和部门几级管理对应关系,减少数据库查找 for (GroupStaffs groupStaffs:startGroupStaffIds.getGroups() ) { @@ -154,7 +150,7 @@ public class FlowStartServiceImpl extends ServiceImpl + + +