提交 a41c41d5 authored 作者: gongwenjie's avatar gongwenjie

考勤

上级 b2174469
...@@ -57,12 +57,20 @@ public class ApprovalController { ...@@ -57,12 +57,20 @@ public class ApprovalController {
return ok("删除审批失败"); return ok("删除审批失败");
} }
/**
* userId为审核者id,id为审批id,approvalStatus为该审批者是否接受审批
* @param userId
* @param approvalInformation
* @param approvalStatus
* @return
*/
@ApiOperation(value = "审核审批") @ApiOperation(value = "审核审批")
@DeleteMapping("/audit/{userId}/{id}/{approvalStatus}") @PostMapping("/audit/{userId}/{approvalStatus}")
public ResponseEntity audit(@PathVariable String userId,@PathVariable String id,@PathVariable String approvalStatus) { public ResponseEntity audit(@PathVariable String userId,@PathVariable String approvalStatus,
@RequestBody ApprovalInformation approvalInformation) {
try { try {
ApprovalInformation approvalInformation = approvalInformationService.auditApproval(userId,id,approvalStatus); ApprovalInformation approvalInformation1 = approvalInformationService.auditApproval(userId,approvalStatus,approvalInformation);
return ok(approvalInformation); return ok(approvalInformation1);
} catch (Exception e) { } catch (Exception e) {
logger.error("审核审批失败"); logger.error("审核审批失败");
} }
...@@ -83,7 +91,7 @@ public class ApprovalController { ...@@ -83,7 +91,7 @@ public class ApprovalController {
} }
@ApiOperation(value = "查找所有我审核的审批") @ApiOperation(value = "查找所有我审核的审批")
@GetMapping("findAllAuditApproval/{userId}") @GetMapping("/findAllAuditApproval/{userId}")
public ResponseEntity findAllAuditApproval(@PathVariable String userId) { public ResponseEntity findAllAuditApproval(@PathVariable String userId) {
try { try {
List<ApprovalInformation> approvalInformations = approvalInformationService.findAllAuditApproval(userId); List<ApprovalInformation> approvalInformations = approvalInformationService.findAllAuditApproval(userId);
......
...@@ -37,6 +37,4 @@ public class AttendanceController { ...@@ -37,6 +37,4 @@ public class AttendanceController {
return ok(attendanceDetailsService.findDepartment(request)); return ok(attendanceDetailsService.findDepartment(request));
} }
} }
package com.zjty.tynotes.attendance.controller;
import com.dingtalk.api.DefaultDingTalkClient;
import com.dingtalk.api.DingTalkClient;
import com.dingtalk.api.request.OapiAttendanceListRequest;
import com.dingtalk.api.request.OapiUserGetDeptMemberRequest;
import com.dingtalk.api.request.OapiUserGetRequest;
import com.dingtalk.api.response.OapiAttendanceListResponse;
import com.dingtalk.api.response.OapiUserGetDeptMemberResponse;
import com.dingtalk.api.response.OapiUserGetResponse;
import com.taobao.api.ApiException;
import com.zjty.tynotes.attendance.entity.CardResult;
import com.zjty.tynotes.attendance.task.CardTask;
import com.zjty.tynotes.attendance.task.MyInit;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* @Author gwj
* @create 2020/3/27 13:47
*/
@RestController
@RequestMapping("/test")
public class TestController {
@Autowired
private CardTask cardTask;
@Autowired
private MyInit myInit;
@GetMapping("/test")
public ResponseEntity test(){
List<CardResult> cardDetails = cardTask.getCardDetails();
return ResponseEntity.ok(cardDetails);
}
@GetMapping("/dingUser")
public ResponseEntity dingUser(){
Long aLong = myInit.dingDepartmentIds.get(0);
DingTalkClient client2 = new DefaultDingTalkClient("https://oapi.dingtalk.com/user/getDeptMember");
OapiUserGetDeptMemberRequest req = new OapiUserGetDeptMemberRequest();
req.setDeptId(aLong+"");
req.setHttpMethod("GET");
OapiUserGetDeptMemberResponse rsp = null;
List<String> userIds = null;
try {
rsp = client2.execute(req, myInit.token);
userIds = rsp.getUserIds();
} catch (ApiException e) {
e.printStackTrace();
}
System.out.println(rsp.getBody());
DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/user/get");
OapiUserGetRequest request = new OapiUserGetRequest();
List<OapiUserGetResponse> responses = new ArrayList<>();
userIds.forEach(str->{
request.setUserid(str);
request.setHttpMethod("GET");
try {
OapiUserGetResponse response = client.execute(request, myInit.token);
responses.add(response);
} catch (ApiException e) {
e.printStackTrace();
}
});
return ResponseEntity.ok(responses);
}
}
...@@ -14,4 +14,6 @@ public interface ApprovalInformationDao extends MongoRepository<ApprovalInformat ...@@ -14,4 +14,6 @@ public interface ApprovalInformationDao extends MongoRepository<ApprovalInformat
List<ApprovalInformation> findAllByApprovalUserIdOneOrApprovalUserIdTwo(String userId); List<ApprovalInformation> findAllByApprovalUserIdOneOrApprovalUserIdTwo(String userId);
List<ApprovalInformation> findAllByStatusIn(List<String> statusList);
} }
...@@ -8,5 +8,5 @@ import org.springframework.data.mongodb.repository.MongoRepository; ...@@ -8,5 +8,5 @@ import org.springframework.data.mongodb.repository.MongoRepository;
* @create 2020/3/24 13:33 * @create 2020/3/24 13:33
*/ */
public interface DingUserDao extends MongoRepository<DingUser,String> { public interface DingUserDao extends MongoRepository<DingUser,String> {
DingUser findByDingUserId(String dingUserId);
} }
...@@ -63,4 +63,7 @@ public class ApprovalInformation { ...@@ -63,4 +63,7 @@ public class ApprovalInformation {
@ApiModelProperty(value = "当前审批是否通过,0代表通过,1代表未通过",example = "0") @ApiModelProperty(value = "当前审批是否通过,0代表通过,1代表未通过",example = "0")
private String approvalStatus; private String approvalStatus;
@ApiModelProperty(value = "当前用户所选择的审批部门id",example = "12dqweqe122")
private String departmentId;
} }
...@@ -22,11 +22,8 @@ import java.util.Date; ...@@ -22,11 +22,8 @@ import java.util.Date;
@Document(collection = "ding_card") @Document(collection = "ding_card")
public class CardResult { public class CardResult {
@Id @Id
@ApiModelProperty(value = "id",example = "1")
private String id;
@ApiModelProperty(value = "钉钉打卡信息的id",example = "123qdsdd212") @ApiModelProperty(value = "钉钉打卡信息的id",example = "123qdsdd212")
private Long dingCardId; private Long id;
@ApiModelProperty(value = "考勤类型",example = "上班、下班") @ApiModelProperty(value = "考勤类型",example = "上班、下班")
private String checkType; private String checkType;
...@@ -47,10 +44,10 @@ public class CardResult { ...@@ -47,10 +44,10 @@ public class CardResult {
private String locationResult; private String locationResult;
public CardResult(OapiAttendanceListResponse.Recordresult recordresult) { public CardResult(OapiAttendanceListResponse.Recordresult recordresult) {
this.dingCardId = recordresult.getId(); this.id = recordresult.getId();
this.checkType = recordresult.getCheckType(); this.checkType = recordresult.getCheckType();
this.timeResult = recordresult.getTimeResult(); this.timeResult = recordresult.getTimeResult();
this.userCheckTime = recordresult.getUserCheckTime(); this.userCheckTime = new Date(recordresult.getUserCheckTime().getTime()+1000*60*60*8);
this.locationResult = recordresult.getLocationResult(); this.locationResult = recordresult.getLocationResult();
} }
} }
...@@ -25,11 +25,11 @@ public interface ApprovalInformationService { ...@@ -25,11 +25,11 @@ public interface ApprovalInformationService {
/** /**
* 审核审批 * 审核审批
* @param id * @param userId
* @param status * @param status
* @return * @return
*/ */
ApprovalInformation auditApproval(String userId,String id, String status); ApprovalInformation auditApproval(String userId,String status,ApprovalInformation approvalInformation);
/** /**
* 查询所有用户自身提交的审批 * 查询所有用户自身提交的审批
......
...@@ -5,11 +5,14 @@ import com.zjty.tynotes.attendance.dao.AttendanceDetailsDao; ...@@ -5,11 +5,14 @@ import com.zjty.tynotes.attendance.dao.AttendanceDetailsDao;
import com.zjty.tynotes.attendance.entity.ApprovalInformation; import com.zjty.tynotes.attendance.entity.ApprovalInformation;
import com.zjty.tynotes.attendance.entity.AttendanceDetails; import com.zjty.tynotes.attendance.entity.AttendanceDetails;
import com.zjty.tynotes.attendance.service.ApprovalInformationService; import com.zjty.tynotes.attendance.service.ApprovalInformationService;
import com.zjty.tynotes.pas.dao.DepartmentDao;
import com.zjty.tynotes.pas.entity.Department;
import com.zjty.tynotes.pas.service.IUserService; import com.zjty.tynotes.pas.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
...@@ -26,6 +29,8 @@ public class ApprovalInformationServiceImpl implements ApprovalInformationServic ...@@ -26,6 +29,8 @@ public class ApprovalInformationServiceImpl implements ApprovalInformationServic
private AttendanceDetailsDao attendanceDetailsDao; private AttendanceDetailsDao attendanceDetailsDao;
@Autowired @Autowired
private IUserService iUserService; private IUserService iUserService;
@Autowired
private DepartmentDao departmentDao;
@Override @Override
public ApprovalInformation addApproval(ApprovalInformation approvalInformation) { public ApprovalInformation addApproval(ApprovalInformation approvalInformation) {
...@@ -74,37 +79,45 @@ public class ApprovalInformationServiceImpl implements ApprovalInformationServic ...@@ -74,37 +79,45 @@ public class ApprovalInformationServiceImpl implements ApprovalInformationServic
@Override @Override
@Transactional @Transactional
public ApprovalInformation auditApproval(String userId,String id, String approvalStatus) { public ApprovalInformation auditApproval(String userId,String approvalStatus,ApprovalInformation approvalInformation) {
Optional<ApprovalInformation> optional = approvalInformationDao.findById(id); String departmentId = approvalInformation.getDepartmentId();
ApprovalInformation approvalInformation = null; String departmentLevel = iUserService.getDepartmentLevel(departmentId);
if(optional.isPresent()){ if(("1").equals(departmentLevel)||("2").equals(departmentLevel)){
approvalInformation = optional.get(); approvalInformation.setApprovalUserIdOne(userId);
List<String> departmentLevels = iUserService.getDepartmentLevel(approvalInformation.getUserId(), userId); if(approvalInformation.getApprovalStatus()!=null && approvalInformation.getApprovalStatus().equals("0")){
if(departmentLevels.contains("2")||departmentLevels.contains("1")){ approvalInformation.setStatus("1");
approvalInformation.setApprovalStatus(approvalStatus); approvalInformation.setApprovalOne("0");
if(approvalStatus.equals("0")){ }else if(approvalInformation.getApprovalStatus()!=null && approvalInformation.getApprovalStatus().equals("1")){
approvalInformation.setApprovalUserIdOne(userId); approvalInformation.setStatus("2");
approvalInformation.setStatus("1"); approvalInformation.setApprovalOne("1");
approvalInformation.setApprovalOne("0"); }
}else{ }else {
approvalInformation.setApprovalUserIdOne(userId); if(approvalInformation.getApprovalTwo()==null){
approvalInformation.setStatus("2"); approvalInformation.setApprovalUserIdTwo(userId);
approvalInformation.setApprovalOne("1"); if(approvalInformation.getApprovalStatus()!=null && approvalInformation.getApprovalStatus().equals("0")){
}
}else if(departmentLevels.contains("3")){
if(approvalStatus.equals("0")){
approvalInformation.setApprovalUserIdTwo(userId);
approvalInformation.setApprovalTwo("0"); approvalInformation.setApprovalTwo("0");
}else{ }else if(approvalInformation.getApprovalStatus()!=null && approvalInformation.getApprovalStatus().equals("1")){
approvalInformation.setApprovalUserIdTwo(userId); approvalInformation.setStatus("2");
approvalInformation.setStatus("1");
approvalInformation.setApprovalTwo("1"); approvalInformation.setApprovalTwo("1");
} }
}else if(approvalInformation.getApprovalTwo()!=null && approvalInformation.getApprovalOne()==null){
String parentDepartmentLevel = iUserService.getParentDepartmentLevel(departmentId);
if(("1").equals(parentDepartmentLevel)||("2").equals(parentDepartmentLevel)){
approvalInformation.setApprovalUserIdOne(userId);
if(approvalInformation.getApprovalStatus()!=null && approvalInformation.getApprovalStatus().equals("0")){
approvalInformation.setStatus("1");
approvalInformation.setApprovalOne("0");
}else if(approvalInformation.getApprovalStatus()!=null && approvalInformation.getApprovalStatus().equals("1")){
approvalInformation.setStatus("2");
approvalInformation.setApprovalOne("1");
}
}
} }
} }
return approvalInformation; return approvalInformation;
} }
@Override @Override
public List<ApprovalInformation> findAllApproval(String userId) { public List<ApprovalInformation> findAllApproval(String userId) {
return approvalInformationDao.findAllByUserId(userId); return approvalInformationDao.findAllByUserId(userId);
...@@ -112,6 +125,49 @@ public class ApprovalInformationServiceImpl implements ApprovalInformationServic ...@@ -112,6 +125,49 @@ public class ApprovalInformationServiceImpl implements ApprovalInformationServic
@Override @Override
public List<ApprovalInformation> findAllAuditApproval(String userId) { public List<ApprovalInformation> findAllAuditApproval(String userId) {
return approvalInformationDao.findAllByApprovalUserIdOneOrApprovalUserIdTwo(userId); List<String> statusList = new ArrayList<>();
List<String> strings = new ArrayList<>();
statusList.add("1");
statusList.add("2");
List<ApprovalInformation> approvalInformations = approvalInformationDao.findAllByStatusIn(statusList);
List<ApprovalInformation> approvalInformationList = new ArrayList<>();
approvalInformations.forEach(approvalInformation -> {
if(userId.equals(approvalInformation.getApprovalUserIdOne())){
approvalInformationList.add(approvalInformation);
}else if(userId.equals(approvalInformation.getApprovalUserIdTwo())){
approvalInformationList.add(approvalInformation);
}
});
strings.add("0");
List<ApprovalInformation> approvalInformationList1 = approvalInformationDao.findAllByStatusIn(strings);
approvalInformationList1.forEach(approvalInformation -> {
String departmentId = approvalInformation.getDepartmentId();
String departmentLevel = iUserService.getDepartmentLevel(departmentId);
if(("1").equals(departmentLevel)||("2").equals(departmentLevel)){
boolean flag = iUserService.findUsersByDepartmentAndAuthority(userId,departmentId);
if(flag){
approvalInformationList.add(approvalInformation);
}
}else{
if(approvalInformation.getApprovalTwo()==null&&approvalInformation.getApprovalOne()==null){
boolean flag = iUserService.findUsersByDepartmentAndAuthority(userId,departmentId);
if(flag){
approvalInformationList.add(approvalInformation);
}
}else if (approvalInformation.getApprovalTwo()!=null && approvalInformation.getApprovalOne()==null){
Optional<Department> optional = departmentDao.findById(departmentId);
if(optional.isPresent()){
Department department = optional.get();
String parentId = department.getParentId();
boolean flag = iUserService.findUsersByDepartmentAndAuthority(userId,parentId);
if(flag){
approvalInformationList.add(approvalInformation);
}
}
}
}
});
return approvalInformationList;
} }
} }
...@@ -5,7 +5,9 @@ import com.dingtalk.api.DingTalkClient; ...@@ -5,7 +5,9 @@ import com.dingtalk.api.DingTalkClient;
import com.dingtalk.api.request.OapiAttendanceListRequest; import com.dingtalk.api.request.OapiAttendanceListRequest;
import com.dingtalk.api.response.OapiAttendanceListResponse; import com.dingtalk.api.response.OapiAttendanceListResponse;
import com.taobao.api.ApiException; import com.taobao.api.ApiException;
import com.zjty.tynotes.attendance.dao.CardResultDao;
import com.zjty.tynotes.attendance.dao.DingUserDao; import com.zjty.tynotes.attendance.dao.DingUserDao;
import com.zjty.tynotes.attendance.entity.CardResult;
import com.zjty.tynotes.attendance.entity.DingUser; import com.zjty.tynotes.attendance.entity.DingUser;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
...@@ -33,12 +35,15 @@ public class CardTask { ...@@ -33,12 +35,15 @@ public class CardTask {
private MyInit init; private MyInit init;
@Autowired @Autowired
private DingUserDao dingUserDao; private DingUserDao dingUserDao;
@Autowired
private CardResultDao cardResultDao;
/** /**
* 定时任务,定时获取打卡信息 * 定时任务,定时获取打卡信息
*/ */
@Scheduled(cron = "0 59 23 * * ? ") @Scheduled(cron = "0 59 23 * * ? ")
public void getCardDetails(){ public List<CardResult> getCardDetails(){
List<CardResult> cardResults = new ArrayList<>();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd 00:00:00"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd 00:00:00");
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Calendar calendar = Calendar.getInstance(); Calendar calendar = Calendar.getInstance();
...@@ -46,7 +51,7 @@ public class CardTask { ...@@ -46,7 +51,7 @@ public class CardTask {
// LocalDateTime.now().minusDays(1).atOffset(ZoneOffset.ofHours(8)).format(DateTimeFormatter.ofPattern("yyyy-MM-dd 00:00:00")); // LocalDateTime.now().minusDays(1).atOffset(ZoneOffset.ofHours(8)).format(DateTimeFormatter.ofPattern("yyyy-MM-dd 00:00:00"));
Date time = calendar.getTime(); Date time = calendar.getTime();
String startTime = sdf2.format(time); String startTime = sdf.format(time);
String endTime = sdf2.format(new Date()); String endTime = sdf2.format(new Date());
DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/attendance/list"); DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/attendance/list");
...@@ -61,18 +66,39 @@ public class CardTask { ...@@ -61,18 +66,39 @@ public class CardTask {
} }
request.setWorkDateFrom(startTime); request.setWorkDateFrom(startTime);
request.setWorkDateTo(endTime); request.setWorkDateTo(endTime);
request.setUserIdList(dingUserIds); request.setUserIdList(dingUserIds);
request.setOffset(0L); request.setOffset(0L);
request.setLimit(1L); request.setLimit(50L);
try { try {
init.getToken(); init.getToken();
OapiAttendanceListResponse response = client.execute(request,init.token); OapiAttendanceListResponse response = client.execute(request,init.token);
if(response!=null){ if(response!=null){
List<OapiAttendanceListResponse.Recordresult> recordresult = response.getRecordresult(); List<OapiAttendanceListResponse.Recordresult> recordresult = response.getRecordresult();
if(recordresult!=null){
recordresult.forEach(recordresult1 -> {
String userId = recordresult1.getUserId();
DingUser dingUser = dingUserDao.findByDingUserId(userId);
CardResult cardResult = new CardResult(recordresult1);
cardResult.setUserId(dingUser.getUserId());
cardResults.add(cardResult);
});
}
List<CardResult> cardResults1 = cardResultDao.saveAll(cardResults);
return cardResults1;
} }
} catch (ApiException e) { } catch (ApiException e) {
logger.error("定时获取打卡信息失败"); logger.error("定时获取打卡信息失败");
} }
return null;
} }
/**
* 定时任务,定时获取打卡信息
*/
@Scheduled(cron = "0 59 23 * * ? ")
public void calculate(){
}
} }
...@@ -60,15 +60,15 @@ public class MyInit implements CommandLineRunner { ...@@ -60,15 +60,15 @@ public class MyInit implements CommandLineRunner {
@Override @Override
public void run(String... args) throws Exception { public void run(String... args) throws Exception {
// getToken(); getToken();
// getDepartmentList(); getDepartmentList();
// getUserList(); getUserList();
// List<User> users = pasUserDao.findAll(); List<User> users = pasUserDao.findAll();
// List<DingUser> dingUsers = dingUserDao.findAll(); List<DingUser> dingUsers = dingUserDao.findAll();
// for (String dingsuerId : userIds) { for (String dingsuerId : userIds) {
// getUserDetails(dingsuerId,users,dingUsers); getUserDetails(dingsuerId,users,dingUsers);
// } }
// dingUserDao.saveAll(dingUserList); dingUserDao.saveAll(dingUserList);
} }
/** /**
...@@ -84,6 +84,7 @@ public class MyInit implements CommandLineRunner { ...@@ -84,6 +84,7 @@ public class MyInit implements CommandLineRunner {
try { try {
OapiGettokenResponse response = client.execute(request); OapiGettokenResponse response = client.execute(request);
token = response.getAccessToken(); token = response.getAccessToken();
System.out.println(token);
} catch (ApiException e) { } catch (ApiException e) {
logger.error("获取钉钉token失败"); logger.error("获取钉钉token失败");
} }
...@@ -160,7 +161,8 @@ public class MyInit implements CommandLineRunner { ...@@ -160,7 +161,8 @@ public class MyInit implements CommandLineRunner {
if(!dingsuerIds.contains(user.getUserid())){ if(!dingsuerIds.contains(user.getUserid())){
for (User user1 : users) { for (User user1 : users) {
if(user.getName().equals(user1.getUsername())){ if(user.getName().equals(user1.getUsername())){
dingUserList.add(new DingUser(null,user.getUserid(),user1.getId())); logger.error(user.getUserid());
dingUserList.add(new DingUser(null,user1.getId(),user.getUserid()));
} }
} }
}else{ }else{
...@@ -177,6 +179,7 @@ public class MyInit implements CommandLineRunner { ...@@ -177,6 +179,7 @@ public class MyInit implements CommandLineRunner {
if(user.getName().equals(user1.getUsername())){ if(user.getName().equals(user1.getUsername())){
dingUser2.setDingUserId(user.getUserid()); dingUser2.setDingUserId(user.getUserid());
dingUser2.setUserId(user1.getId()); dingUser2.setUserId(user1.getId());
logger.error("错误加入集合");
dingUserList.add(dingUser2); dingUserList.add(dingUser2);
} }
} }
......
...@@ -2,7 +2,7 @@ ding: ...@@ -2,7 +2,7 @@ ding:
# 获取access_token # 获取access_token
tokenUrl: https://oapi.dingtalk.com/gettoken tokenUrl: https://oapi.dingtalk.com/gettoken
# 获取钉钉部门列表地址 # 获取钉钉部门列表地址
departmentListUrl: https://oapi:dingtalk:com/department/list departmentListUrl: https://oapi.dingtalk.com/department/list
# 获取部门用户userid列表 # 获取部门用户userid列表
departmentMenberUrl: https://oapi.dingtalk.com/user/getDeptMember departmentMenberUrl: https://oapi.dingtalk.com/user/getDeptMember
# 获取用户详情 # 获取用户详情
......
...@@ -56,6 +56,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { ...@@ -56,6 +56,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter {
httpSecurity httpSecurity
.cors().and() .cors().and()
.authorizeRequests() .authorizeRequests()
.antMatchers("/test/**").permitAll()
.antMatchers("/pas/user/addGuanLian").permitAll() .antMatchers("/pas/user/addGuanLian").permitAll()
.antMatchers(HttpMethod.GET,"/pas/user").permitAll() .antMatchers(HttpMethod.GET,"/pas/user").permitAll()
.antMatchers("/pas/user/encryPas").permitAll() .antMatchers("/pas/user/encryPas").permitAll()
......
...@@ -127,9 +127,23 @@ public interface IUserService { ...@@ -127,9 +127,23 @@ public interface IUserService {
/** /**
* 返回所有上级部门id * 返回所有上级部门id
* @param executeUserId * @param departmentId
* @return
*/
String getDepartmentLevel(String departmentId);
/**
* 查询上级部门等级
* @param departmentId
* @return
*/
String getParentDepartmentLevel(String departmentId);
/**
* 根据用户id判断某个用户是否有该部门的审批权限
* @param userId * @param userId
* @param departmentId
* @return * @return
*/ */
List<String> getDepartmentLevel(String executeUserId,String userId); boolean findUsersByDepartmentAndAuthority(String userId, String departmentId);
} }
...@@ -122,6 +122,7 @@ public class RoleServiceImpl implements IRoleService { ...@@ -122,6 +122,7 @@ public class RoleServiceImpl implements IRoleService {
} }
@Override @Override
@Transactional
public Boolean updateRole(Role role) { public Boolean updateRole(Role role) {
List<Authority> authorities = role.getAuthorities(); List<Authority> authorities = role.getAuthorities();
Optional<Role> byId = roleDao.findById(role.getId()); Optional<Role> byId = roleDao.findById(role.getId());
......
...@@ -484,52 +484,72 @@ public class UserServiceImpl implements IUserService { ...@@ -484,52 +484,72 @@ public class UserServiceImpl implements IUserService {
/** /**
* 供考勤模块的审批流程使用的接口 * 供考勤模块的审批流程使用的接口
* @param userId * @param departmentId
* @return 返回部门等级 * @return 返回部门等级
*/ */
@Override @Override
public List<String> getDepartmentLevel(String executeUserId, String userId){ public String getDepartmentLevel(String departmentId){
Optional<User> optionalUser = pasUserDao.findById(executeUserId); Optional<Department> optional = departmentDao.findById(departmentId);
User user = null; Department department = null;
if(!optionalUser.isPresent()) { if(optional.isPresent()){
return null; department = optional.get();
String level = department.getLevel();
return level;
} }
user = optionalUser.get(); return null;
List<String> departmentIds = user.getDepartmentIds();
//查询所有的上级部门id集合
List<String> parentDepartIds = findParentDepartIds(departmentIds, new ArrayList<>());
List<UserRole> userRoles = userRoleDao.findAllByUserId(userId);
List<String> roleIds = new ArrayList<>();
if(userRoles!=null){
userRoles.forEach(userRole -> roleIds.add(userRole.getRoleId()));
}
List<Role> roles = roleDao.findAllByIdIn(roleIds);
List<String> departmentLevels = new ArrayList<>();
if(roles!=null){
roles.forEach(role -> {
List<Authority> authorities = role.getAuthorities();
authorities.forEach(authority -> {
String name = authority.getName();
if(("审批权限".equals(name))){
String departmentId = role.getDepartmentId();
if(parentDepartIds.contains(departmentId)){
Optional<Department> optional = departmentDao.findById(departmentId);
Department department = null;
if(optional.isPresent()){
department = optional.get();
}
if(!departmentLevels.contains(department.getLevel())){
departmentLevels.add(department.getLevel());
}
}
}
});
});
}
return departmentLevels;
} }
@Override
public String getParentDepartmentLevel(String departmentId) {
Optional<Department> optional = departmentDao.findById(departmentId);
Department department = null;
if(optional.isPresent()){
department = optional.get();
String parentId = department.getParentId();
Optional<Department> byId = departmentDao.findById(parentId);
if(byId.isPresent()){
Department department1 = byId.get();
String level = department1.getLevel();
return level;
}
}
return null;
}
/**
* 根据用户id判断某个用户是否有该部门的审批权限
* @param userId
* @param departmentId
* @return
*/
@Override
public boolean findUsersByDepartmentAndAuthority(String userId, String departmentId) {
List<UserRole> userRoles = userRoleDao.findAllByUserId(userId);
List<String> roleIds = new ArrayList<>();
if(userRoles!=null){
userRoles.forEach(userRole -> roleIds.add(userRole.getRoleId()));
}
List<Role> roles = roleDao.findAllByIdIn(roleIds);
if(roles!=null){
for (Role role : roles) {
List<RoleAuthority> roleAuthorities = roleAuthorityDao.findAllByRoleId(role.getId());
List<String> authorityIds = new ArrayList<>();
List<String> authNames = new ArrayList<>();
if(roleAuthorities!=null){
roleAuthorities.forEach(roleAuthority -> authorityIds.add(roleAuthority.getAuthorityId()));
}
List<Authority> authorities = authorityDao.findAllByIdIn(authorityIds);
if(authorities!=null){
authorities.forEach(authority -> authNames.add(authority.getName()));
}
if(authNames.contains("审批权限")&&role.getDepartmentId().equals(departmentId)){
return true;
}
}
}
return false;
}
/** /**
* 查询所有上级部门 * 查询所有上级部门
* @param departIds 需要传入的用户部门集合 * @param departIds 需要传入的用户部门集合
......
...@@ -3,6 +3,7 @@ package com.zjty.tynotes.weekly.subject.controller; ...@@ -3,6 +3,7 @@ package com.zjty.tynotes.weekly.subject.controller;
import com.zjty.tynotes.misc.config.AutoDocument; import com.zjty.tynotes.misc.config.AutoDocument;
import com.zjty.tynotes.pas.entity.User; import com.zjty.tynotes.pas.entity.User;
import com.zjty.tynotes.pas.entity.vo.PageRequest; import com.zjty.tynotes.pas.entity.vo.PageRequest;
import com.zjty.tynotes.weekly.subject.entity.vo.Problem;
import com.zjty.tynotes.weekly.subject.service.UserManageService; import com.zjty.tynotes.weekly.subject.service.UserManageService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
...@@ -87,4 +88,23 @@ public class UserManageController { ...@@ -87,4 +88,23 @@ public class UserManageController {
return ok("更改密码失败"); return ok("更改密码失败");
} }
@ApiOperation(value = "上传建议以及使用中的问题")
@PostMapping
public ResponseEntity submitProblem(@RequestBody Problem problem){
return ok(userManageService.submitProblem(problem));
}
@ApiOperation(value = "查找建议以及使用中的问题")
@GetMapping
public ResponseEntity searchProblem(){
return ok(userManageService.searchProblem());
}
@ApiOperation(value = "修改建议以及使用中的问题")
@PutMapping
public ResponseEntity putProblem(@RequestBody Problem problem){
return ok(userManageService.putProblem(problem));
}
} }
package com.zjty.tynotes.weekly.subject.dao;
import com.zjty.tynotes.weekly.subject.entity.vo.Problem;
import org.springframework.data.mongodb.repository.MongoRepository;
/**
* @Author gwj
* @create 2020/3/30 9:20
*/
public interface ProblemDao extends MongoRepository<Problem,String> {
}
package com.zjty.tynotes.weekly.subject.entity.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
/**
* @Author gwj
* @create 2020/3/30 9:13
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel(value = "问题", description = "问题")
@Document(collection = "problem")
public class Problem {
@Id
@ApiModelProperty(value = "id",example = "1")
private String id;
@ApiModelProperty(value = "id",example = "1")
private String des;
private String userId;
}
...@@ -4,6 +4,7 @@ import com.zjty.tynotes.pas.entity.Department; ...@@ -4,6 +4,7 @@ import com.zjty.tynotes.pas.entity.Department;
import com.zjty.tynotes.pas.entity.User; import com.zjty.tynotes.pas.entity.User;
import com.zjty.tynotes.pas.entity.vo.PageRequest; import com.zjty.tynotes.pas.entity.vo.PageRequest;
import com.zjty.tynotes.pas.entity.vo.PageResponse; import com.zjty.tynotes.pas.entity.vo.PageResponse;
import com.zjty.tynotes.weekly.subject.entity.vo.Problem;
import com.zjty.tynotes.weekly.subject.entity.vo.UserVo; import com.zjty.tynotes.weekly.subject.entity.vo.UserVo;
import java.util.List; import java.util.List;
...@@ -55,6 +56,27 @@ public interface UserManageService { ...@@ -55,6 +56,27 @@ public interface UserManageService {
*/ */
User updateSelf(User user,User userById); User updateSelf(User user,User userById);
/**
*
* 上传bug
* @param problem
* @return
*/
Problem submitProblem(Problem problem);
/**
* 查找建议bug
* @return
*/
List<Problem> searchProblem();
/**
* 修改建议
* @param problem
* @return
*/
Problem putProblem(Problem problem);
// /** // /**
// * 根据任务状态查询人员任务列表 // * 根据任务状态查询人员任务列表
// * @param id // * @param id
......
...@@ -8,6 +8,8 @@ import com.zjty.tynotes.pas.dao.*; ...@@ -8,6 +8,8 @@ import com.zjty.tynotes.pas.dao.*;
import com.zjty.tynotes.pas.entity.*; import com.zjty.tynotes.pas.entity.*;
import com.zjty.tynotes.pas.entity.vo.PageRequest; import com.zjty.tynotes.pas.entity.vo.PageRequest;
import com.zjty.tynotes.pas.entity.vo.PageResponse; import com.zjty.tynotes.pas.entity.vo.PageResponse;
import com.zjty.tynotes.weekly.subject.dao.ProblemDao;
import com.zjty.tynotes.weekly.subject.entity.vo.Problem;
import com.zjty.tynotes.weekly.subject.entity.vo.UserVo; import com.zjty.tynotes.weekly.subject.entity.vo.UserVo;
import com.zjty.tynotes.weekly.subject.service.UserManageService; import com.zjty.tynotes.weekly.subject.service.UserManageService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -40,6 +42,9 @@ public class UserManageServiceImpl implements UserManageService { ...@@ -40,6 +42,9 @@ public class UserManageServiceImpl implements UserManageService {
@Autowired @Autowired
private InternalService internalService; private InternalService internalService;
@Autowired
private ProblemDao problemDao;
@Override @Override
public User findUserById(String id) { public User findUserById(String id) {
Optional<User> optional = pasUserDao.findById(id); Optional<User> optional = pasUserDao.findById(id);
...@@ -289,6 +294,35 @@ public class UserManageServiceImpl implements UserManageService { ...@@ -289,6 +294,35 @@ public class UserManageServiceImpl implements UserManageService {
return userById; return userById;
} }
/**
* 上传bug
* @param problem
* @return
*/
@Override
public Problem submitProblem(Problem problem) {
return problemDao.save(problem);
}
/**
* 查找bug
* @return
*/
@Override
public List<Problem> searchProblem() {
return problemDao.findAll();
}
/**
* 修改bug
* @param problem
* @return
*/
@Override
public Problem putProblem(Problem problem) {
return problemDao.save(problem);
}
/** /**
* 暂时没有用到 * 暂时没有用到
* @param des * @param des
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论