diff --git a/src/main/java/com/lz/modules/flow/dao/FlowRecordMapper.java b/src/main/java/com/lz/modules/flow/dao/FlowRecordMapper.java index 36f3440e..d417c7c5 100644 --- a/src/main/java/com/lz/modules/flow/dao/FlowRecordMapper.java +++ b/src/main/java/com/lz/modules/flow/dao/FlowRecordMapper.java @@ -86,7 +86,9 @@ public interface FlowRecordMapper extends BaseMapper { List selectLastFlowRecordsById(@Param("recordId") Long recordId); - List selectLastFlowRecordsByIdAndFlowIndex(@Param("recordId") Long recordId, @Param("flowIndex") int flowIndex); + List selectLastFlowRecordsByIdAndFlowIndex(@Param("recordId") Long recordId, @Param("flowIndex") int flowIndex, @Param("status") int status); List selectSkipFlowRecordsById(@Param("recordId") Long recordId); + + List selectFirstFlowRecordsByIdAndFlowIndex(Long recordId, int flowIndex, int status); } \ No newline at end of file diff --git a/src/main/java/com/lz/modules/flow/service/FlowRecordService.java b/src/main/java/com/lz/modules/flow/service/FlowRecordService.java index 394cbe8d..99c44187 100644 --- a/src/main/java/com/lz/modules/flow/service/FlowRecordService.java +++ b/src/main/java/com/lz/modules/flow/service/FlowRecordService.java @@ -81,7 +81,9 @@ public interface FlowRecordService extends IService { //获取最后流程同一个小节点的所有数据 List selectLastFlowRecordsById(Long recordId); //获取制定步骤一个小节点的所有数据 - List selectLastFlowRecordsByIdAndFlowIndex(Long recordId, int flowIndex); + List selectLastFlowRecordsByIdAndFlowIndex(Long recordId, int flowIndex, int status); List selectSkipFlowRecordsById(Long recordId); + + List selectFirstFlowRecordsByIdAndFlowIndex(Long recordId, int flowIndex, int status); } \ 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 549f8f5a..26bde5a1 100644 --- a/src/main/java/com/lz/modules/flow/service/StaffRoleService.java +++ b/src/main/java/com/lz/modules/flow/service/StaffRoleService.java @@ -71,8 +71,9 @@ public interface StaffRoleService extends IService { 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/FlowRecordServiceImpl.java b/src/main/java/com/lz/modules/flow/service/impl/FlowRecordServiceImpl.java index bbfe4210..412a65e5 100644 --- a/src/main/java/com/lz/modules/flow/service/impl/FlowRecordServiceImpl.java +++ b/src/main/java/com/lz/modules/flow/service/impl/FlowRecordServiceImpl.java @@ -217,8 +217,8 @@ public class FlowRecordServiceImpl extends ServiceImpl selectLastFlowRecordsByIdAndFlowIndex(Long recordId, int flowIndex){ - return flowRecordMapper.selectLastFlowRecordsByIdAndFlowIndex(recordId, flowIndex); + public List selectLastFlowRecordsByIdAndFlowIndex(Long recordId, int flowIndex, int status){ + return flowRecordMapper.selectLastFlowRecordsByIdAndFlowIndex(recordId, flowIndex, status); } @Override @@ -226,4 +226,9 @@ public class FlowRecordServiceImpl extends ServiceImpl selectFirstFlowRecordsByIdAndFlowIndex(Long recordId, int flowIndex, int status){ + return flowRecordMapper.selectFirstFlowRecordsByIdAndFlowIndex(recordId, flowIndex, status); + } + } 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 d8b76b8c..c40b9aa8 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,12 +33,10 @@ 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; -import java.lang.reflect.Array; import java.util.*; import java.util.stream.Collectors; @@ -401,9 +399,15 @@ public class StaffRoleServiceImpl extends ServiceImpl masterPMs = staffRoleMapper.selectStaffRolesByDepartmentLevelList(Arrays.asList(new String[]{RoleEnums.MASTER_PM.getName()})); - if(CollectionUtils.isNotEmpty(masterPMs)){ - return R.error("主管理员只能设置一个,如果想添加,只能更改管理员。"); + if (RoleEnums.MASTER_PM.getName().equals(staffRole.getDepartmentLevel())) { + List masterPMs = staffRoleMapper.selectStaffRolesByDepartmentLevelList(Arrays.asList(new String[]{RoleEnums.MASTER_PM.getName()})); + if (CollectionUtils.isNotEmpty(masterPMs)) { + return R.error("主管理员只能设置一个,如果想添加,只能更改管理员。"); + } } staffRoleMapper.insertStaffRole(staffRole); } 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 6b062fee..f859f94f 100644 --- a/src/main/java/com/lz/modules/job/business/DingtalkBusiness.java +++ b/src/main/java/com/lz/modules/job/business/DingtalkBusiness.java @@ -522,35 +522,42 @@ public class DingtalkBusiness { }else{ if(workMsgTypeEnum.getType() == WorkMsgTypeEnum.REJECT.getType()){//被拒 logger.info("任务驳回"); - cancelRecords = flowRecordService.selectLastFlowRecordsByIdAndFlowIndex(fromStaff.getResultRecord().getId() - , flowRecords.get(0).getFlowIndex().intValue() + 1);//获取下一步的数据 + cancelRecords = flowRecordService.selectFirstFlowRecordsByIdAndFlowIndex(fromStaff.getResultRecord().getId() + , flowRecords.get(0).getFlowIndex().intValue() + 1, 0);//获取下一步的数据 }else{ logger.info("任务流转下一步"); cancelRecords = flowRecordService.selectLastFlowRecordsByIdAndFlowIndex(fromStaff.getResultRecord().getId() - , flowRecords.get(0).getFlowIndex().intValue() - 1);//获取上一步的数据 + , flowRecords.get(0).getFlowIndex().intValue() - 1, 1);//获取上一步的数据 } } logger.info("查询到可能需要更新的待办任务数量{}", cancelRecords.size()); if(cancelRecords.size() > 0){ + int flowIndex = cancelRecords.get(0).getFlowIndex().intValue(); for (FlowRecord flowRecord:cancelRecords ) { - if(flowRecord.getStatus().intValue() == 1 - || flowRecord.getStatus().intValue() == 3 - || flowRecord.getStatus().intValue() == 4 - || workMsgTypeEnum.getType() == WorkMsgTypeEnum.REJECT.getType()){ - logger.info("将要更新人员的待办任务,人员id:{}, 姓名:{}", flowRecord.getApprovalStaffId(), - flowRecord.getApprovalStaffName()); - ThirdMsgSendRecord thirdMsgSendRecord = - thirdMsgSendRecordService.selectThirdMsgSendRecordByWorkIdAndStaffIdAndTypeAndStatus( - fromStaff.getResultRecord().getId(), - flowRecord.getApprovalStaffId(), 1, 1); - if(thirdMsgSendRecord != null){//把原来的任务更新掉 - dingTalkUtil.updateWorkMSG(thirdMsgSendRecord, token); - }else{ - logger.info("无需更新待办任务"); + if(flowRecord.getFlowIndex() == flowIndex){//同一个小结点的才进来 + if(flowRecord.getStatus().intValue() == 1 + || flowRecord.getStatus().intValue() == 3 + || flowRecord.getStatus().intValue() == 4 + || workMsgTypeEnum.getType() == WorkMsgTypeEnum.REJECT.getType()){ + logger.info("将要更新人员的待办任务,人员id:{}, 姓名:{}", flowRecord.getApprovalStaffId(), + flowRecord.getApprovalStaffName()); + ThirdMsgSendRecord thirdMsgSendRecord = + thirdMsgSendRecordService.selectThirdMsgSendRecordByWorkIdAndStaffIdAndTypeAndStatus( + fromStaff.getResultRecord().getId(), + flowRecord.getApprovalStaffId(), 1, 1); + if(thirdMsgSendRecord != null){//把原来的任务更新掉 + dingTalkUtil.updateWorkMSG(thirdMsgSendRecord, token); + }else{ + logger.info("无需更新待办任务"); + } } + }else{ + logger.info("已经取消完毕"); + break; } + } } //给下一步需要处理的人员发送待办任务 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 9ff5ef53..3311846b 100644 --- a/src/main/java/com/lz/modules/performance/controller/EvaluationGroupController.java +++ b/src/main/java/com/lz/modules/performance/controller/EvaluationGroupController.java @@ -2,6 +2,7 @@ package com.lz.modules.performance.controller; import com.alibaba.fastjson.JSONObject; +import com.google.common.base.Joiner; import com.lz.common.utils.PageUtils; import com.lz.common.utils.R; import com.lz.common.utils.StringUtil; @@ -91,9 +92,35 @@ public class EvaluationGroupController extends AbstractController { return Long.parseLong(s); } }).collect(Collectors.toList()); - + //下面的操作是防止在权限里面单独加绩效管理人员时,导致前端展示不一致问题 + //搜索管理表里面的人员去重 + List staffRoles = staffRoleService.selectAllGroupManageRoles(); + if(staffRoles.size() > 0){ + List roleIds = staffRoles.stream().map(new Function() { + @Override + public Long apply(StaffRole staffRole) { + return staffRole.getStaffId(); + } + }).collect(Collectors.toList()); + ids.addAll(roleIds); + } + //获取管理特定组的 + staffRoles = staffRoleService.selectByEvaluationGroupId(evaluationGroup.getId()); + if(staffRoles.size() > 0){ + List roleIds = staffRoles.stream().map(new Function() { + @Override + public Long apply(StaffRole staffRole) { + return staffRole.getStaffId(); + } + }).collect(Collectors.toList()); + ids.addAll(roleIds); + } + //去重 + Map mapIds = ids.stream().collect(Collectors.toMap(Long::longValue,Function.identity(), (e, r) -> e)); + ids = mapIds.values().stream().collect(Collectors.toList()); //指定人员,搜索人员信息 List staffSimpleDtos = staffService.selectStaffSimpleInfoByIds(ids); + evaluationGroupDto.setManagers(staffSimpleDtos); } if(evaluationGroup.getOutIds() != null && evaluationGroup.getOutIds().length() > 0){ diff --git a/src/main/java/com/lz/modules/sys/controller/SysLoginController.java b/src/main/java/com/lz/modules/sys/controller/SysLoginController.java index 35003310..2863ceaa 100644 --- a/src/main/java/com/lz/modules/sys/controller/SysLoginController.java +++ b/src/main/java/com/lz/modules/sys/controller/SysLoginController.java @@ -75,6 +75,8 @@ public class SysLoginController extends AbstractController { @Autowired private StaffService staffService; + @Value(value = "${sms.code}") + private boolean sendSMSCode; /** * 验证码 @@ -201,8 +203,7 @@ public class SysLoginController extends AbstractController { } } //测试环境将不进行短信验证码, - // if (!StringUtil.equals(environment, Constant.INVELOMENT_TYPE_TEST)) { - if (false) { + if (sendSMSCode) { //账号不存在、密码错误 if (!user.getPassword().equals(new Sha256Hash(form.getPassword(), user.getSalt()).toHex())) { return R.error("密码不正确!"); @@ -226,11 +227,6 @@ public class SysLoginController extends AbstractController { return r.put("data",map); } - - - - - /** * 退出 */ diff --git a/src/main/java/com/lz/modules/sys/oauth2/OAuth2Filter.java b/src/main/java/com/lz/modules/sys/oauth2/OAuth2Filter.java index 91b5e54a..ab61ede1 100644 --- a/src/main/java/com/lz/modules/sys/oauth2/OAuth2Filter.java +++ b/src/main/java/com/lz/modules/sys/oauth2/OAuth2Filter.java @@ -62,7 +62,7 @@ public class OAuth2Filter extends AuthenticatingFilter { httpResponse.setHeader("Access-Control-Allow-Credentials", "true"); httpResponse.setHeader("Access-Control-Allow-Origin", HttpContextUtils.getOrigin()); - String json = new Gson().toJson(R.error(HttpStatus.SC_UNAUTHORIZED, "登录已过期,请重新登录")); + String json = new Gson().toJson(R.error(HttpStatus.SC_UNAUTHORIZED, "invalid token")); httpResponse.getWriter().print(json); return false; diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index a33a1510..70cd2e92 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -35,6 +35,8 @@ dingtalk: appid: 855818566 domain: main: "http://192.168.43.94:8001" +sms: + code: false ##多数据源的配置 #dynamic: diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml index b6ac0e3a..964f818f 100644 --- a/src/main/resources/application-prod.yml +++ b/src/main/resources/application-prod.yml @@ -34,7 +34,8 @@ dingtalk: appid: 856016278 domain: main: "https://lzmanagement.ldxinyong.com" - +sms: + code: true ##多数据源的配置 #dynamic: # datasource: diff --git a/src/main/resources/application-test.yml b/src/main/resources/application-test.yml index 6552c314..91fd96e5 100644 --- a/src/main/resources/application-test.yml +++ b/src/main/resources/application-test.yml @@ -34,7 +34,8 @@ dingtalk: appid: 855818566 domain: main: "http:/localhost" - +sms: + code: false ##多数据源的配置 diff --git a/src/main/resources/mapper/flow/FlowRecordMapper.xml b/src/main/resources/mapper/flow/FlowRecordMapper.xml index da8c59c0..22201063 100644 --- a/src/main/resources/mapper/flow/FlowRecordMapper.xml +++ b/src/main/resources/mapper/flow/FlowRecordMapper.xml @@ -310,11 +310,17 @@ + + diff --git a/src/main/resources/mapper/flow/StaffRoleMapper.xml b/src/main/resources/mapper/flow/StaffRoleMapper.xml index 6d941cab..4c7d3687 100644 --- a/src/main/resources/mapper/flow/StaffRoleMapper.xml +++ b/src/main/resources/mapper/flow/StaffRoleMapper.xml @@ -95,9 +95,6 @@ - - -