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 b14f6f35..48297b8d 100644 --- a/src/main/java/com/lz/modules/app/controller/ResultRecordController.java +++ b/src/main/java/com/lz/modules/app/controller/ResultRecordController.java @@ -1032,7 +1032,7 @@ public class ResultRecordController extends AbstractController { * * 删除 */ - // http://localhost:8080/lz_management/user/lzresultrecord/new/resultRecordDetail?resultRecordId=387&loginUserId=380 + // http://localhost:8080/lz_management/user/lzresultrecord/new/resultRecordDetail?resultRecordId=491&loginUserId=408 @RequestMapping("/new/resultRecordDetail") public R newResultRecordList(RecordDetailDto recordDetailDto) { if(recordDetailDto.getLoginUserId() ==null && getUser() !=null ){ diff --git a/src/main/java/com/lz/modules/app/controller/TestController.java b/src/main/java/com/lz/modules/app/controller/TestController.java index a2694f2b..6d1f2fa5 100644 --- a/src/main/java/com/lz/modules/app/controller/TestController.java +++ b/src/main/java/com/lz/modules/app/controller/TestController.java @@ -261,7 +261,7 @@ public class TestController { } } - // http://localhost:8080/lz_management/test/resultrecord?resultRecordId=415 + // http://localhost:8080/lz_management/test/resultrecord?resultRecordId=475 @RequestMapping("/test/resultrecord") public void resultRecorcd(Long resultRecordId) throws Exception{ R r = resultRecordService.initFlowRecord(resultRecordId); diff --git a/src/main/java/com/lz/modules/app/resp/FlowDetailResp.java b/src/main/java/com/lz/modules/app/resp/FlowDetailResp.java index bdfbe2aa..7457bcf4 100644 --- a/src/main/java/com/lz/modules/app/resp/FlowDetailResp.java +++ b/src/main/java/com/lz/modules/app/resp/FlowDetailResp.java @@ -10,5 +10,6 @@ public class FlowDetailResp { private String departName; private String avatar; private int status ; - + private int transfer; + private int tiaozhuang; } 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 2f7481bf..549f8f5a 100644 --- a/src/main/java/com/lz/modules/flow/service/StaffRoleService.java +++ b/src/main/java/com/lz/modules/flow/service/StaffRoleService.java @@ -69,7 +69,10 @@ public interface StaffRoleService extends IService { List selectMastRoles(); //获取管理全部考评组 List selectAllGroupManageRoles(); + List selectAllStaffRoleByDepartmentLevel(List asList); List selectByEvaluationGroupId(Long id); + + StaffRole selectStaffRolesByStaffIdDepartmentLevelList(Long loginUserId, List asList); } \ 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 ad9a69b3..346c896a 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 @@ -33,6 +33,7 @@ import com.lz.modules.sys.entity.SysRoleEntity; import com.lz.modules.sys.service.app.ResultRecordService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; +import org.apache.ibatis.annotations.Param; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -565,4 +566,11 @@ public class StaffRoleServiceImpl extends ServiceImpl selectByEvaluationGroupId(Long groupId){ return staffRoleMapper.selectByEvaluationGroupId(groupId); } + + + @Override + public StaffRole selectStaffRolesByStaffIdDepartmentLevelList(Long staffId, List departmentLevels) { + + return staffRoleMapper.selectStaffRolesByStaffIdDepartmentLevelList(staffId,departmentLevels); + } } 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 8fc2225e..0a9f47e6 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 @@ -3,6 +3,7 @@ package com.lz.modules.sys.service.app.impl; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.google.common.collect.Maps; import com.lz.common.emun.WorkMsgTypeEnum; import com.lz.common.exception.RRException; import com.lz.common.utils.*; @@ -1083,6 +1084,7 @@ public class ResultRecordServiceImpl extends ServiceImpl flowRecords = flowRecordService.selectFlowRecordByResultRecordId(recordDetailDto.getResultRecordId()); List flowRecordList = new ArrayList<>(); int flowIndex = -1; + ResultRecord resultRecord = resultRecordService.selectResultRecordById(recordDetailDto.getResultRecordId()); for (FlowRecord flowRecord : flowRecords) { if (flowRecord.getFlowIndex().equals(flowIndex)) { //表示有重复数据 FlowRecordResp lastResp = flowRecordList.get(flowRecordList.size() - 1); @@ -1094,7 +1096,7 @@ public class ResultRecordServiceImpl extends ServiceImpl flowDetailRespList = lastResp.getFlowDetailRespList(); - mySetFlowDetailRespList(flowDetailRespList, flowRecord); + mySetFlowDetailRespList(flowDetailRespList, flowRecord,recordDetailDto.getLoginUserId(),resultRecord.getStaffId()); for (FlowRecord mul : mulFlowRecord) { if (mul.getStatus().equals(FlowRecordStatusEnums.UN_TO_STATUS.getStatus())) { flag0 = true; @@ -1138,7 +1140,7 @@ public class ResultRecordServiceImpl extends ServiceImpl flowDetailRespList = new ArrayList<>(); - mySetFlowDetailRespList(flowDetailRespList,flowRecord); + mySetFlowDetailRespList(flowDetailRespList,flowRecord,recordDetailDto.getLoginUserId(),resultRecord.getStaffId()); resp.setFlowDetailRespList(flowDetailRespList); flowRecordList.add(resp); flowIndex = flowRecord.getFlowIndex(); @@ -1186,16 +1188,7 @@ public class ResultRecordServiceImpl extends ServiceImpl map = JSONObject.parseObject(currentResultRecord.getFlowStaffIdRole(),Map.class); - List roleIds = null; - for (Map.Entry entry : map.entrySet()) { - if(entry.getValue() !=null ){ - roleIds = JSON.parseArray(entry.getValue().toString(),Long.class); - } - } - if(roleIds !=null && roleIds.size() > 0){ - auth = recordAuthService.selectAuthByRoleIds(roleIds); - } + auth = getAuth(currentFlowRecord.getFlowStaffIdRole()); } } } @@ -1207,7 +1200,23 @@ public class ResultRecordServiceImpl extends ServiceImpl flowDetailRespList ,FlowRecord flowRecord){ + public Map getAuth(String flowStaffIdRole){ + Map auth = Maps.newHashMap(); + Map map = JSONObject.parseObject(flowStaffIdRole,Map.class); + List roleIds = null; + for (Map.Entry entry : map.entrySet()) { + if(entry.getValue() !=null ){ + roleIds = JSON.parseArray(entry.getValue().toString(),Long.class); + } + } + if(roleIds !=null && roleIds.size() > 0){ + auth = recordAuthService.selectAuthByRoleIds(roleIds); + } + return auth; + } + + + public void mySetFlowDetailRespList(List flowDetailRespList ,FlowRecord flowRecord,Long loginUserId,Long recordStaffId){ FlowDetailResp flowDetailResp = new FlowDetailResp(); flowDetailResp.setCurrentStaffId(flowRecord.getApprovalStaffId()); flowDetailResp.setStaffName(flowRecord.getApprovalStaffName()); @@ -1223,13 +1232,66 @@ public class ResultRecordServiceImpl extends ServiceImpl map = departmentsService.selectUserAllDepartmentIds(departmentsStaffRelateEntity.getDepartmentId()); + List staffRoleDepartments = staffRoleDepartmentService.selectStaffRoleDepartmentByStaffRoleId(staffRole.getId()); + for (StaffRoleDepartment staffRoleDepartment : staffRoleDepartments) { + String departmentName = map.get(staffRoleDepartment.getDepartmentId()); + if (StringUtil.isNotBlank(departmentName)) { + flag = true; + break; + } + } + } + if(flag){ + log.info("当前 loginUserId : " + loginUserId + ",是管理员"); + position = 1;//表示当前是绩效管理员 + } + } + if(position == 0 && flowRecord.getApprovalStaffId().equals(loginUserId) && !loginUserId.equals(recordStaffId) ){ + log.info("当前 loginUserId : " + loginUserId + ",是审批节点人员"); + position = 2 ; + } + /** + * 1:绩效管理员进来 + * 1.1:转交 都有 + * 1.2:跳过都有 + * 2:审批节点人员 + * 2.1:转交根据初始化数据来确定自己所在节点的权限 + * 2.2:跳转都没有 + * 3:普通员工 + * 3.1:转交没有 + * 3.2:跳转没有 + */ + if(position == 1){ //如果是绩效管理员 + initTiaoZhuangZhuangJiao(flowDetailResp,1,1); + }else if (position == 2 ){ //如果是审批节点人员 + Map auth = getAuth(flowRecord.getFlowStaffIdRole()); + if(new Integer(1).equals(auth.get("transfer"))){ + flowDetailResp.setTransfer(1); + } + }//如果是普通员工,没有跳转和转交的权限 + }//如果流程节点己经走了,直接返回不可跳转,不可转交 flowDetailRespList.add(flowDetailResp); } + + + public void initTiaoZhuangZhuangJiao(FlowDetailResp flowDetailResp,int tiaoZhuang,int transfer){ + flowDetailResp.setTiaozhuang(tiaoZhuang); + flowDetailResp.setTransfer(transfer); + } + public StaffEntity getDepartmentStaff(Long staffId, int level) { DepartManagers departManagers = staffService.findLeader( staffId, level); List staffEntities = departManagers.getManagers();