From 6fb712e7b11827b0ee0dffab3039e0d10549d3b7 Mon Sep 17 00:00:00 2001 From: wulin Date: Tue, 12 Jan 2021 11:32:04 +0800 Subject: [PATCH 1/6] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E5=B1=9E=E6=80=A7=E6=B5=81=E7=A8=8B=E8=8A=82=E7=82=B9=E6=9D=83?= =?UTF-8?q?=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/flow/model/FlowChartRoleDto.java | 9 +++- .../controller/FlowChartController.java | 52 ++++++++++++++++--- .../resources/mapper/flow/FlowChartMapper.xml | 4 +- 3 files changed, 54 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/lz/modules/flow/model/FlowChartRoleDto.java b/src/main/java/com/lz/modules/flow/model/FlowChartRoleDto.java index 30587419..b366691c 100644 --- a/src/main/java/com/lz/modules/flow/model/FlowChartRoleDto.java +++ b/src/main/java/com/lz/modules/flow/model/FlowChartRoleDto.java @@ -2,6 +2,9 @@ package com.lz.modules.flow.model; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; + +import java.util.List; + /** *

*

*流程节点权限对应关系表 @@ -21,12 +24,16 @@ public class FlowChartRoleDto { //角色id @ApiModelProperty(value = "角色id", name = "roleId") private Long roleId; + @ApiModelProperty(value = "角色名称", name = "roleName") + private String roleName; //1默认权限,必带权限,不可修改权限,0可选权限,2被考核人默认权限,必带权限,初始化时获取 @ApiModelProperty(value = "1默认权限,必带权限,不可修改权限,0可选权限,2被考核人默认权限,必带权限,初始化时获取", name = "type") private Integer type; //lz_flow_chart_role_group中的id,分组id - @ApiModelProperty(value = "lz_flow_chart_role_group中的id,分组id", name = "roleGroupId") + @ApiModelProperty(value = "lz_flow_chart_role_group中的id,分组id,如果不为0那么roleDtos需要一起显示", name = "roleGroupId") private Long roleGroupId; + @ApiModelProperty(value = "节点权限列表", name = "roleDtos") + private List roleDtos; /** * * @return diff --git a/src/main/java/com/lz/modules/performance/controller/FlowChartController.java b/src/main/java/com/lz/modules/performance/controller/FlowChartController.java index 64d7c8b3..0df290d7 100644 --- a/src/main/java/com/lz/modules/performance/controller/FlowChartController.java +++ b/src/main/java/com/lz/modules/performance/controller/FlowChartController.java @@ -5,17 +5,11 @@ import com.lz.common.emun.ChartOptType; import com.lz.common.utils.R; import com.lz.modules.app.dto.StaffSimpleDto; import com.lz.modules.app.service.StaffService; -import com.lz.modules.flow.entity.FlowChart; -import com.lz.modules.flow.entity.FlowChartDetailRecord; -import com.lz.modules.flow.entity.FlowChartRole; -import com.lz.modules.flow.entity.FlowManager; +import com.lz.modules.flow.entity.*; import com.lz.modules.flow.model.*; import com.lz.modules.flow.req.FlowChartDetailRecordListReq; import com.lz.modules.flow.req.FlowChartDetailRecordSimpleReq; -import com.lz.modules.flow.service.FlowChartDetailRecordService; -import com.lz.modules.flow.service.FlowChartRoleService; -import com.lz.modules.flow.service.FlowChartService; -import com.lz.modules.flow.service.FlowManagerService; +import com.lz.modules.flow.service.*; import io.swagger.annotations.*; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; @@ -50,6 +44,9 @@ public class FlowChartController { @Autowired private FlowChartRoleService flowChartRoleService; + @Autowired + private FlowChartRoleGroupService flowChartRoleGroupService; + @GetMapping("/getByFlowManagerId") @ApiOperation("获取大流程节点") @ApiResponses({@ApiResponse(code = 200,message = "成功",response = FlowChartDto.class)}) @@ -57,9 +54,48 @@ public class FlowChartController { FlowManager flowManager = flowManagerService.selectFlowManagerById(id); if(flowManager != null){ List flowChartDtos = flowChartService.selectFlowChartDtoByFlowManagerId(flowManager.getId()); + Map flowChartRoleGroupMap = new HashMap<>(); + for (FlowChartDto dto:flowChartDtos ) { List flowChartRoles = flowChartService.selectCanSetChartRoleByChartId(dto.getId()); + //代码层面对分组的数据做树形结构返回 + Long rGroupId = 0l; + FlowChartRoleDto flowChartRoleDto = null; + for (int i = 0; i < flowChartRoles.size(); i++ + ) { + FlowChartRoleDto roleDto = flowChartRoles.get(i); + if(roleDto.getRoleGroupId().longValue() != 0L){ + //查询考评组 + FlowChartRoleGroup flowChartRoleGroup = flowChartRoleGroupMap.get(roleDto.getRoleGroupId()); + if(flowChartRoleGroup == null){ + flowChartRoleGroup = flowChartRoleGroupService.selectFlowChartRoleGroupById(roleDto.getRoleGroupId()); + } + if(flowChartRoleGroup != null){ + + flowChartRoles.remove(i); + flowChartRoleGroupMap.put(flowChartRoleGroup.getId(), flowChartRoleGroup); + if(rGroupId != flowChartRoleGroup.getId()){ + flowChartRoleDto = new FlowChartRoleDto(); + flowChartRoleDto.setChartId(roleDto.getChartId()); + flowChartRoleDto.setRoleName(flowChartRoleGroup.getName()); + flowChartRoleDto.setType(0); + flowChartRoleDto.setRoleId(flowChartRoleGroup.getId()); + flowChartRoleDto.setId(flowChartRoleGroup.getId()); + flowChartRoleDto.setRoleGroupId(flowChartRoleGroup.getId()); + flowChartRoleDto.setRoleDtos(new ArrayList<>()); + flowChartRoles.add(i, flowChartRoleDto); + rGroupId = flowChartRoleGroup.getId(); + }else{ + i--; + } + flowChartRoleDto.getRoleDtos().add(roleDto); + + + } + + } + } dto.setRoleDtos(flowChartRoles); if(groupId > 0){ //获取节点已保存的数据 diff --git a/src/main/resources/mapper/flow/FlowChartMapper.xml b/src/main/resources/mapper/flow/FlowChartMapper.xml index cb60d90b..7b680fe7 100644 --- a/src/main/resources/mapper/flow/FlowChartMapper.xml +++ b/src/main/resources/mapper/flow/FlowChartMapper.xml @@ -121,8 +121,8 @@ From ee8d32b31edc4a8bb50fe1d57efa101f177dec21 Mon Sep 17 00:00:00 2001 From: wulin Date: Tue, 12 Jan 2021 15:27:56 +0800 Subject: [PATCH 2/6] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=80=83=E8=AF=84?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E5=88=86=E7=BB=84=E6=98=BE=E7=A4=BA=E6=9D=83?= =?UTF-8?q?=E9=99=90=E6=97=B6=EF=BC=8C=E7=88=B6=E7=B1=BB=E7=9A=84roleId?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E4=B8=BA0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lz/modules/performance/controller/FlowChartController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/lz/modules/performance/controller/FlowChartController.java b/src/main/java/com/lz/modules/performance/controller/FlowChartController.java index 0df290d7..69df09d2 100644 --- a/src/main/java/com/lz/modules/performance/controller/FlowChartController.java +++ b/src/main/java/com/lz/modules/performance/controller/FlowChartController.java @@ -80,7 +80,7 @@ public class FlowChartController { flowChartRoleDto.setChartId(roleDto.getChartId()); flowChartRoleDto.setRoleName(flowChartRoleGroup.getName()); flowChartRoleDto.setType(0); - flowChartRoleDto.setRoleId(flowChartRoleGroup.getId()); + flowChartRoleDto.setRoleId(0l); flowChartRoleDto.setId(flowChartRoleGroup.getId()); flowChartRoleDto.setRoleGroupId(flowChartRoleGroup.getId()); flowChartRoleDto.setRoleDtos(new ArrayList<>()); From cc4a2e33f70273275b7bbc6bfefe181995a2f26d Mon Sep 17 00:00:00 2001 From: quyixiao <2621048238@qq.com> Date: Wed, 13 Jan 2021 10:25:32 +0800 Subject: [PATCH 3/6] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sys/service/app/impl/ResultRecordServiceImpl.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) 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 c9ea08ce..b3366477 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 @@ -1407,7 +1407,11 @@ public class ResultRecordServiceImpl extends ServiceImpl preFlowRecords = flowRecordService.selectFlowRecordByRecordIdFlowIndex(currentFlowRecord.getRecordId(), currentFlowRecord.getFlowIndex() - 1); if (CollectionUtils.isNotEmpty(preFlowRecords)) { for (FlowRecord flowRecord : preFlowRecords) { - if (flowRecord.getApprovalStaffId().equals(recordDetailDto.getLoginUserId()) && recordDetailDto.getLoginUserId().equals(resultRecord.getStaffId())) { + if (flowRecord.getApprovalStaffId().equals(recordDetailDto.getLoginUserId()) + && recordDetailDto.getLoginUserId().equals(resultRecord.getStaffId()) + //在目标制定的时候和结果录入的时候允许撤回 + && (flowRecord.getFlowProcess().equals(new Integer(0)) || flowRecord.getFlowProcess().equals(new Integer(3))) + ) { auth.put("recall", 1); } } From 31ea785f0ebb83e1061ee3040da892d81b89119f Mon Sep 17 00:00:00 2001 From: quyixiao <2621048238@qq.com> Date: Wed, 13 Jan 2021 10:57:09 +0800 Subject: [PATCH 4/6] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/app/impl/ResultRecordServiceImpl.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) 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 b3366477..aa0e8f98 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 @@ -953,7 +953,8 @@ public class ResultRecordServiceImpl extends ServiceImpl flowRecords = flowRecordService.selectFlowRecordByRecordIdGeFlowIndex(f.getRecordId(), f.getFlowIndex()); @@ -1132,6 +1133,16 @@ public class ResultRecordServiceImpl extends ServiceImpl currflowRecords = flowRecordService.selectFlowRecordByRecordIdStatus(approvalDto.getResultRecordId(), 2); + if (CollectionUtils.isNotEmpty(currflowRecords)) { + FlowRecord preFlowRecord = currflowRecords.get(0); + if (approvalDto.getLoginUserId() != null && approvalDto.getLoginUserId() > 0) { + if (!preFlowRecord.getApprovalStaffId().equals(approvalDto.getLoginUserId())) { + log.info("审批人不是自己 ,ApprovalStaffId :" + preFlowRecord.getApprovalStaffId() + ",登陆用户 id:" + approvalDto.getLoginUserId()); + return R.error("审批人不是自己,不能撤回"); + } + } + } return newReject(approvalDto); } From c4a2a84151e5927893944eb212bd5b73188aa88d Mon Sep 17 00:00:00 2001 From: quyixiao <2621048238@qq.com> Date: Wed, 13 Jan 2021 11:10:43 +0800 Subject: [PATCH 5/6] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/impl/ResultRecordServiceImpl.java | 47 ++++++++++--------- 1 file changed, 25 insertions(+), 22 deletions(-) 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 aa0e8f98..5b4a6ef9 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 @@ -953,7 +953,7 @@ public class ResultRecordServiceImpl extends ServiceImpl currflowRecords = flowRecordService.selectFlowRecordByRecordIdStatus(approvalDto.getResultRecordId(), 2); - if (CollectionUtils.isNotEmpty(currflowRecords)) { - FlowRecord preFlowRecord = currflowRecords.get(0); - if (approvalDto.getLoginUserId() != null && approvalDto.getLoginUserId() > 0) { - if (!preFlowRecord.getApprovalStaffId().equals(approvalDto.getLoginUserId())) { - log.info("审批人不是自己 ,ApprovalStaffId :" + preFlowRecord.getApprovalStaffId() + ",登陆用户 id:" + approvalDto.getLoginUserId()); - return R.error("审批人不是自己,不能撤回"); - } - } + if(!hasRecall(approvalDto.getResultRecordId(),approvalDto.getLoginUserId())){ + return R.error("没有撤回权限"); } return newReject(approvalDto); } + //当前是否有撤回权限 + public boolean hasRecall(Long resultRecordId, Long loginUserId) { + ResultRecord resultRecord = resultRecordService.selectResultRecordById(resultRecordId); + List currflowRecords = flowRecordService.selectFlowRecordByRecordIdStatus(resultRecordId, 2); + if (CollectionUtils.isNotEmpty(currflowRecords)) { + FlowRecord currentFlowRecord = currflowRecords.get(0); + List preFlowRecords = flowRecordService.selectFlowRecordByRecordIdFlowIndex(currentFlowRecord.getRecordId(), currentFlowRecord.getFlowIndex() - 1); + for (FlowRecord flowRecord : preFlowRecords) { + if (flowRecord.getApprovalStaffId().equals(loginUserId) + && loginUserId.equals(resultRecord.getStaffId()) + //在目标制定的时候和结果录入的时候允许撤回 + && (flowRecord.getFlowProcess().equals(new Integer(0)) || flowRecord.getFlowProcess().equals(new Integer(3)))) { + return true; + } + log.info("没有撤回权限:approvalStaffId :" + flowRecord.getApprovalStaffId() + ",loginUserId :" + loginUserId + ",staffId:" + resultRecord.getStaffId() + ",flowProcess:"+flowRecord.getFlowProcess()); + } + } + return false; + } + public Long comment(ApprovalDto approvalDto, FlowChart flowChart) { StaffEntity staffEntity = staffService.selectStaffById(approvalDto.getLoginUserId()); if (staffEntity != null) { @@ -1415,17 +1427,8 @@ public class ResultRecordServiceImpl extends ServiceImpl preFlowRecords = flowRecordService.selectFlowRecordByRecordIdFlowIndex(currentFlowRecord.getRecordId(), currentFlowRecord.getFlowIndex() - 1); - if (CollectionUtils.isNotEmpty(preFlowRecords)) { - for (FlowRecord flowRecord : preFlowRecords) { - if (flowRecord.getApprovalStaffId().equals(recordDetailDto.getLoginUserId()) - && recordDetailDto.getLoginUserId().equals(resultRecord.getStaffId()) - //在目标制定的时候和结果录入的时候允许撤回 - && (flowRecord.getFlowProcess().equals(new Integer(0)) || flowRecord.getFlowProcess().equals(new Integer(3))) - ) { - auth.put("recall", 1); - } - } + if(hasRecall(currentFlowRecord.getRecordId(),recordDetailDto.getLoginUserId())){ + auth.put("recall", 1); } From 8bbcff5212971e653566670243b27ad5911d4cc3 Mon Sep 17 00:00:00 2001 From: quyixiao <2621048238@qq.com> Date: Wed, 13 Jan 2021 14:10:05 +0800 Subject: [PATCH 6/6] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sys/service/app/impl/ResultRecordServiceImpl.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) 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 5b4a6ef9..0f2b458a 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 @@ -894,16 +894,16 @@ public class ResultRecordServiceImpl extends ServiceImpl flowRecords = flowRecordService.selectFlowRecordByRecordIdStatus(approvalDto.getResultRecordId(), 2); Long commentId = 0l; - if (CollectionUtils.isNotEmpty(flowRecords)) { + R r = apply(approvalDto); + if (CollectionUtils.isNotEmpty(flowRecords) && r !=null + && NumberUtil.objToIntDefault(r.get("code"),200) == 200 ) { FlowRecord preFlowRecord = flowRecords.get(0); // 评论内容 FlowChart flowChart = flowService.selectFlowChartByChartId(preFlowRecord.getFlowId()); commentId = comment(approvalDto, flowChart); } - R r = apply(approvalDto); if (approvalDto.getLoginUserId() != null) { List taskListDtos = flowRecordMapper.selectTodoTasksByApprovalStaffId(approvalDto.getLoginUserId(), null); if (taskListDtos != null && taskListDtos.size() > 0) {