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..69df09d2 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(0l); + 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/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..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) { @@ -953,7 +953,8 @@ public class ResultRecordServiceImpl extends ServiceImpl flowRecords = flowRecordService.selectFlowRecordByRecordIdGeFlowIndex(f.getRecordId(), f.getFlowIndex()); @@ -1130,11 +1131,33 @@ public class ResultRecordServiceImpl extends ServiceImpl 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) { @@ -1404,13 +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())) { - auth.put("recall", 1); - } - } + if(hasRecall(currentFlowRecord.getRecordId(),recordDetailDto.getLoginUserId())){ + auth.put("recall", 1); } 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 @@