diff --git a/src/main/java/com/lz/modules/app/dao/DepartmentsDao.java b/src/main/java/com/lz/modules/app/dao/DepartmentsDao.java index 7fa7d9d9..b93b93a4 100644 --- a/src/main/java/com/lz/modules/app/dao/DepartmentsDao.java +++ b/src/main/java/com/lz/modules/app/dao/DepartmentsDao.java @@ -57,4 +57,6 @@ public interface DepartmentsDao extends BaseMapper { List selectEntityByParentDepartmentIds(@Param("dIds") List dIds); DepartmentsEntity selectParentDepartmentByDepartmentId(String departmentId); + + int delDepartments(@Param("list") List departmentsEntities); } diff --git a/src/main/java/com/lz/modules/app/service/DepartmentsService.java b/src/main/java/com/lz/modules/app/service/DepartmentsService.java index 78d42872..41c6bf54 100644 --- a/src/main/java/com/lz/modules/app/service/DepartmentsService.java +++ b/src/main/java/com/lz/modules/app/service/DepartmentsService.java @@ -57,5 +57,9 @@ public interface DepartmentsService extends IService { //查找父级部门 DepartmentsEntity selectParentDepartmentByDepartmentId(String departmentId); + + List selectAll(); + + int delDepartments(List departmentsEntities); } diff --git a/src/main/java/com/lz/modules/app/service/impl/DepartmentsServiceImpl.java b/src/main/java/com/lz/modules/app/service/impl/DepartmentsServiceImpl.java index ea3648da..e19201d8 100644 --- a/src/main/java/com/lz/modules/app/service/impl/DepartmentsServiceImpl.java +++ b/src/main/java/com/lz/modules/app/service/impl/DepartmentsServiceImpl.java @@ -295,5 +295,15 @@ public class DepartmentsServiceImpl extends ServiceImpl selectAll(){ + return departmentsDao.selectAll(); + } + + @Override + public int delDepartments(List departmentsEntities){ + return departmentsDao.delDepartments(departmentsEntities); + } } 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/job/business/DingtalkBusiness.java b/src/main/java/com/lz/modules/job/business/DingtalkBusiness.java index f859f94f..235da916 100644 --- a/src/main/java/com/lz/modules/job/business/DingtalkBusiness.java +++ b/src/main/java/com/lz/modules/job/business/DingtalkBusiness.java @@ -6,6 +6,7 @@ import com.lz.common.utils.DateUtils; import com.lz.common.utils.DingTalkUtil; import com.lz.common.utils.R; import com.lz.modules.app.dao.StaffDao; +import com.lz.modules.app.entity.DepartmentsEntity; import com.lz.modules.app.entity.StaffEntity; import com.lz.modules.app.entity.StaffOccupationEntity; import com.lz.modules.app.entity.StaffSimpleInfo; @@ -30,6 +31,7 @@ import com.lz.modules.third.entity.ThirdMsgSendRecord; import com.lz.modules.third.entity.WorkMsg; import com.lz.modules.third.service.ThirdAppConfigService; import com.lz.modules.third.service.ThirdMsgSendRecordService; +import org.apache.commons.collections.map.CompositeMap; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; @@ -131,7 +133,12 @@ public class DingtalkBusiness { if(token != null && token.length() > 0){ //获取所有的部门详情 Map departmentInfosBos = dingTalkUtil.getDepartmentDetails(token, "1"); + if(departmentInfosBos.size() > 0){ + //获取所有部门信息 + List departmentsEntities = departmentsService.selectAll(); + Map mapDeparts = + departmentsEntities.stream().collect(Collectors.toMap(DepartmentsEntity::getDepartmentId, Function.identity(), (e, r) -> e)); //更新数据库中的部门相关信息 //departmentsService.updateDepartmentInfos(departmentInfosBos); //删除原有的对应关系下面在更新 @@ -140,6 +147,10 @@ public class DingtalkBusiness { staffOccupationService.updateAllOccupation(); //获取飞书部门对应的用户详情 for (String key : departmentInfosBos.keySet()) { + if(mapDeparts.containsKey(key)){ + //部门存在 + mapDeparts.remove(key); + } DepartmentInfosBo departmentInfo = departmentInfosBos.get(key); //获取部门用户详情 List staffs = dingTalkUtil.getDepartmentStaffDetails(token, departmentInfo.getId()); @@ -178,6 +189,10 @@ public class DingtalkBusiness { DepartmentInfosBo departmentInfo = departmentInfosBos.get(key); departmentsService.updateDepartmentInfo(departmentInfo); } + if(mapDeparts.size() > 0){//有需要删除的部门信息 + departmentsEntities = mapDeparts.values().stream().collect(Collectors.toList()); + departmentsService.delDepartments(departmentsEntities); + } }else{ logger.info("部门信息为空"); 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/performance/service/impl/AssessServiceImpl.java b/src/main/java/com/lz/modules/performance/service/impl/AssessServiceImpl.java index a7f404ec..6421ba46 100644 --- a/src/main/java/com/lz/modules/performance/service/impl/AssessServiceImpl.java +++ b/src/main/java/com/lz/modules/performance/service/impl/AssessServiceImpl.java @@ -103,8 +103,17 @@ public class AssessServiceImpl implements AssessService { public List roleDepartments(Long staffId) { StaffRole staffRole = staffRoleService.selectByStaffId(staffId); if(staffRole == null){ - log.info("staffRole 为空"); - return Collections.EMPTY_LIST; + log.info("staffRole 为空,不存在次人员权限配置信息,staffId:" + staffId); + //判断是否是领导 + DepartmentsStaffRelateEntity entity = departmentsStaffRelateService.selectByStaffId(staffId); + if(entity == null || 0 == entity.getIsLeader()){ + log.info("非 leader,此人员无管理部门权限"); + return Collections.EMPTY_LIST; + } + + List depIds = staffService.selectAllDeparmentIdsByDepartmentParentId(entity.getDepartmentId()); + log.info("获取部门领导管理部门ids: " + JSON.toJSONString(depIds)); + return depIds; } log.info("获取 roleDepartment,staffRole: " + JSON.toJSONString(staffRole)); // 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 53a71492..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,7 +203,7 @@ public class SysLoginController extends AbstractController { } } //测试环境将不进行短信验证码, - if (true) { + if (sendSMSCode) { //账号不存在、密码错误 if (!user.getPassword().equals(new Sha256Hash(form.getPassword(), user.getSalt()).toHex())) { return R.error("密码不正确!"); 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 9b9172a0..b6f4c220 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 643e6554..22201063 100644 --- a/src/main/resources/mapper/flow/FlowRecordMapper.xml +++ b/src/main/resources/mapper/flow/FlowRecordMapper.xml @@ -182,6 +182,7 @@ and approval_staff_id = #{approvalStaffId} and f.status = 1 and f.flow_process != 2 + and r.start_id != 0 order by f.gmt_modified desc @@ -193,6 +194,7 @@ and approval_staff_id = #{approvalStaffId} and f.status = 2 and f.flow_process != 2 + and r.start_id != 0 order by f.gmt_modified desc diff --git a/src/main/resources/mapper/generator/DepartmentsDao.xml b/src/main/resources/mapper/generator/DepartmentsDao.xml index 6ce1c363..ba3c028f 100644 --- a/src/main/resources/mapper/generator/DepartmentsDao.xml +++ b/src/main/resources/mapper/generator/DepartmentsDao.xml @@ -25,7 +25,7 @@ @@ -179,5 +179,13 @@ and is_delete=0 limit 1 + + UPDATE lz_departments set is_delete = 1 WHERE id in( + + #{item.id} + + ) + +