|
@@ -9,6 +9,7 @@ import com.dingtalk.api.DingTalkClient;
|
|
|
import com.dingtalk.api.request.OapiAttendanceVacationTypeListRequest;
|
|
|
import com.dingtalk.api.response.OapiAttendanceVacationTypeListResponse;
|
|
|
import com.management.platform.entity.*;
|
|
|
+import com.management.platform.entity.vo.SysRichFunction;
|
|
|
import com.management.platform.mapper.*;
|
|
|
import com.management.platform.service.CompanyDingdingService;
|
|
|
import com.management.platform.service.DingDingService;
|
|
@@ -59,6 +60,8 @@ public class UserYearleaveSettingController {
|
|
|
private HttpServletRequest request;
|
|
|
@Resource
|
|
|
private UserMapper userMapper;
|
|
|
+ @Resource
|
|
|
+ private SysFunctionMapper sysFunctionMapper;
|
|
|
|
|
|
@RequestMapping("/save")
|
|
|
public HttpRespMsg save(String userId, Integer companyId, Integer yearDays) {
|
|
@@ -141,20 +144,31 @@ public class UserYearleaveSettingController {
|
|
|
map.put("defaultLeaveType", defaultType);
|
|
|
}
|
|
|
quotaNumQueryWrapper.eq("leave_code", leaveCode);
|
|
|
- if (userId != null) {
|
|
|
- String dingdingUserid = userMapper.selectById(userId).getDingdingUserid();
|
|
|
- quotaNumQueryWrapper.eq("user_dingding_id", dingdingUserid);
|
|
|
- } else if (departmentId != null) {
|
|
|
- //指定部门
|
|
|
- Department dept = departmentMapper.selectById(departmentId);
|
|
|
- List<Department> allDept = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", companyId));
|
|
|
- List<Department> allSubDepts = getSubDeptList(allDept, dept);
|
|
|
- List<User> userList = userMapper.selectList(
|
|
|
- new QueryWrapper<User>()
|
|
|
- .in("department_id", allSubDepts.stream().map(Department::getDepartmentId).collect(Collectors.toList())));
|
|
|
- List<String> userDDIds = userList.stream().map(User::getDingdingUserid).collect(Collectors.toList());
|
|
|
- quotaNumQueryWrapper.in("user_dingding_id", userDDIds);
|
|
|
+ //是否具有查看全部请假单的权限
|
|
|
+ String token = request.getHeader("TOKEN");
|
|
|
+ User user = userMapper.selectById(token);
|
|
|
+ List<SysRichFunction> functionList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "查看全部请假单");
|
|
|
+ if (functionList.size() == 0) {
|
|
|
+ //普通员工只能看自己的
|
|
|
+ quotaNumQueryWrapper.eq("user_dingding_id", user.getDingdingUserid());
|
|
|
+ } else {
|
|
|
+ //管理员看全部的
|
|
|
+ if (userId != null) {
|
|
|
+ String dingdingUserid = userMapper.selectById(userId).getDingdingUserid();
|
|
|
+ quotaNumQueryWrapper.eq("user_dingding_id", dingdingUserid);
|
|
|
+ } else if (departmentId != null) {
|
|
|
+ //指定部门
|
|
|
+ Department dept = departmentMapper.selectById(departmentId);
|
|
|
+ List<Department> allDept = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", companyId));
|
|
|
+ List<Department> allSubDepts = getSubDeptList(allDept, dept);
|
|
|
+ List<User> userList = userMapper.selectList(
|
|
|
+ new QueryWrapper<User>()
|
|
|
+ .in("department_id", allSubDepts.stream().map(Department::getDepartmentId).collect(Collectors.toList())));
|
|
|
+ List<String> userDDIds = userList.stream().map(User::getDingdingUserid).collect(Collectors.toList());
|
|
|
+ quotaNumQueryWrapper.in("user_dingding_id", userDDIds);
|
|
|
+ }
|
|
|
}
|
|
|
+
|
|
|
quotaNumQueryWrapper.orderByAsc("name").orderByAsc("start_time");
|
|
|
quotaNumQueryWrapper.select("company_id, user_dingding_id, NAME, leave_code, MIN(start_time) AS start_time, MAX(end_time) AS end_time, ROUND(SUM(quota_in_hours),1) AS quota_in_hours, ROUND(SUM(quota_in_days),1) AS quota_in_days, ROUND(SUM(used_in_hours),1) AS used_in_hours, ROUND(SUM(used_in_days),1) AS used_in_days, ROUND(SUM(left_in_hours),1) AS left_in_hours, ROUND(SUM(left_in_days),1) AS left_in_days ");
|
|
|
quotaNumQueryWrapper.groupBy("company_id, user_dingding_id");
|