提交 628a8993 authored 作者: gongwenjie's avatar gongwenjie

合并分支 'gwj' 到 'master'

Gwj 查看合并请求 !71
流水线 #111 已取消 于阶段
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);
}
}
......@@ -3,10 +3,13 @@ package com.zjty.tynotes.attendance.dao;
import com.zjty.tynotes.attendance.entity.CardResult;
import org.springframework.data.mongodb.repository.MongoRepository;
import java.util.Date;
import java.util.List;
/**
* @Author gwj
* @create 2020/3/24 14:51
*/
public interface CardResultDao extends MongoRepository<CardResult,String> {
List<CardResult> findAllByUserIdAndUserCheckTimeBetween(String userId, Date startTime, Date endTime);
}
......@@ -27,39 +27,42 @@ public class AttendanceDetails {
@ApiModelProperty(value = "用户id",example = "eqweqw12312e")
String userId;
@ApiModelProperty(value = "平均工时",example = "176")
Integer averageWorkHours;
// @ApiModelProperty(value = "平均工时",example = "176")
// Integer averageWorkHours;
//
// @ApiModelProperty(value = "应出勤天数",example = "22")
// Integer attendanceDay;
//
// @ApiModelProperty(value = "实际出勤天数",example = "22")
// Integer realAttendanceDay;
@ApiModelProperty(value = "应出勤天数",example = "22")
Integer attendanceDay;
@ApiModelProperty(value = "是否出勤0为出勤/1为未出勤",example = "22")
Integer isRealAttendanceDay;
@ApiModelProperty(value = "实际出勤天数",example = "22")
Integer realAttendanceDay;
@ApiModelProperty(value = "是否迟到0为迟到/1为未迟到",example = "1")
Integer isLateDay;
@ApiModelProperty(value = "迟到天数",example = "1")
Integer lateDay;
@ApiModelProperty(value = "早退天数",example = "1")
Integer leaveEarlyDay;
@ApiModelProperty(value = "是否早退0为早退/1为未早退",example = "1")
Integer isLeaveEarlyDay;
@ApiModelProperty(value = "缺卡次数",example = "2")
Integer lessCard;
@ApiModelProperty(value = "旷工天数",example = "2")
Integer absenteeismDay;
@ApiModelProperty(value = "是否旷工0为旷工/1为未旷工",example = "2")
Integer isAbsenteeismDay;
@ApiModelProperty(value = "加班时长",example = "10")
Integer workOverHours;
@ApiModelProperty(value = "是否加班0为加班/1为未加班",example = "10")
Integer isWorkOverHours;
@ApiModelProperty(value = "调休天数",example = "1")
Float paidLeaveDay;
@ApiModelProperty(value = "是否调休0为调休/1为未调休",example = "1")
Float isPaidLeaveDay;
@ApiModelProperty(value = "病假天数",example = "1")
Float sickLeaveDay;
@ApiModelProperty(value = "是否病假0为病假/1为未病假",example = "1")
Float isSickLeaveDay;
@ApiModelProperty(value = "公出天数",example = "1")
Float outSideBusinessDay;
@ApiModelProperty(value = "是否公出0为公出/1为未公出",example = "1")
Float isOutSideBusinessDay;
@ApiModelProperty(value = "时间,只需要精确到月份",example = "2020-03")
@ApiModelProperty(value = "时间",example = "2020-03-22")
Date date;
}
......@@ -5,6 +5,8 @@ import com.zjty.tynotes.attendance.entity.AttendanceDetails;
import com.zjty.tynotes.attendance.entity.vo.UserAttenVo;
import com.zjty.tynotes.attendance.entity.vo.request.AttenRequest;
import com.zjty.tynotes.attendance.service.AttendanceDetailsService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -19,6 +21,7 @@ import java.util.List;
*/
@Service
public class AttendanceDetailsServiceImpl implements AttendanceDetailsService {
private static final Logger logger = LoggerFactory.getLogger(AttendanceDetailsServiceImpl.class);
@Autowired
private AttendanceDetailsDao attendanceDetailsDao;
......@@ -62,29 +65,29 @@ public class AttendanceDetailsServiceImpl implements AttendanceDetailsService {
float sickLeaveDay = 0;
float outSideBusinessDay = 0;
for (AttendanceDetails attendanceDetails1 : attendanceDetails) {
averageWorkHours += attendanceDetails1.getAverageWorkHours();
attendanceDay += attendanceDetails1.getAttendanceDay();
realAttendanceDay += attendanceDetails1.getRealAttendanceDay();
lateDay += attendanceDetails1.getLateDay();
leaveEarlyDay += attendanceDetails1.getLeaveEarlyDay();
lessCard += attendanceDetails1.getLessCard();
absenteeismDay += attendanceDetails1.getAbsenteeismDay();
workOverHours += attendanceDetails1.getWorkOverHours();
paidLeaveDay += attendanceDetails1.getPaidLeaveDay();
sickLeaveDay += attendanceDetails1.getSickLeaveDay();
outSideBusinessDay += attendanceDetails1.getOutSideBusinessDay();
// averageWorkHours += attendanceDetails1.getAverageWorkHours();
// attendanceDay += attendanceDetails1.getAttendanceDay();
// realAttendanceDay += attendanceDetails1.getRealAttendanceDay();
// lateDay += attendanceDetails1.getLateDay();
// leaveEarlyDay += attendanceDetails1.getLeaveEarlyDay();
// lessCard += attendanceDetails1.getLessCard();
// absenteeismDay += attendanceDetails1.getAbsenteeismDay();
// workOverHours += attendanceDetails1.getWorkOverHours();
// paidLeaveDay += attendanceDetails1.getPaidLeaveDay();
// sickLeaveDay += attendanceDetails1.getSickLeaveDay();
// outSideBusinessDay += attendanceDetails1.getOutSideBusinessDay();
}
userAttenVo.setAverageWorkHours(averageWorkHours);
userAttenVo.setAttendanceDay(attendanceDay);
userAttenVo.setRealAttendanceDay(realAttendanceDay);
userAttenVo.setLateDay(lateDay);
userAttenVo.setLeaveEarlyDay(leaveEarlyDay);
userAttenVo.setLessCard(lessCard);
userAttenVo.setAbsenteeismDay(absenteeismDay);
userAttenVo.setWorkOverHours(workOverHours);
userAttenVo.setPaidLeaveDay(paidLeaveDay);
userAttenVo.setSickLeaveDay(sickLeaveDay);
userAttenVo.setOutSideBusinessDay(outSideBusinessDay);
// userAttenVo.setAverageWorkHours(averageWorkHours);
// userAttenVo.setAttendanceDay(attendanceDay);
// userAttenVo.setRealAttendanceDay(realAttendanceDay);
// userAttenVo.setLateDay(lateDay);
// userAttenVo.setLeaveEarlyDay(leaveEarlyDay);
// userAttenVo.setLessCard(lessCard);
// userAttenVo.setAbsenteeismDay(absenteeismDay);
// userAttenVo.setWorkOverHours(workOverHours);
// userAttenVo.setPaidLeaveDay(paidLeaveDay);
// userAttenVo.setSickLeaveDay(sickLeaveDay);
// userAttenVo.setOutSideBusinessDay(outSideBusinessDay);
userAttenVo.setName("");
return userAttenVo;
} catch (ParseException e) {
......
......@@ -9,6 +9,11 @@ import com.zjty.tynotes.attendance.dao.CardResultDao;
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.pas.dao.ConfigDao;
import com.zjty.tynotes.pas.dao.DayDao;
import com.zjty.tynotes.pas.dao.PasUserDao;
import com.zjty.tynotes.pas.entity.Day;
import com.zjty.tynotes.pas.entity.User;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -37,12 +42,25 @@ public class CardTask {
private DingUserDao dingUserDao;
@Autowired
private CardResultDao cardResultDao;
@Autowired
private DayDao dayDao;
@Autowired
private PasUserDao pasUserDao;
/**
* 定时任务,定时获取打卡信息
* 定时任务,定时获取打卡信息.计算前天的个人考勤信息情况
*/
@Scheduled(cron = "0 59 23 * * ? ")
public List<CardResult> getCardDetails(){
List<User> users = pasUserDao.findAll();
List<User> userList = new ArrayList<>();
if(users!=null){
users.forEach(user -> {
if(!user.getUsername().equals("root")){
userList.add(user);
}
});
}
List<CardResult> cardResults = new ArrayList<>();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd 00:00:00");
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
......@@ -52,7 +70,7 @@ public class CardTask {
Date time = calendar.getTime();
String startTime = sdf.format(time);
String endTime = sdf2.format(new Date());
String endTime = sdf.format(new Date());
DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/attendance/list");
OapiAttendanceListRequest request = new OapiAttendanceListRequest();
......@@ -85,6 +103,7 @@ public class CardTask {
});
}
List<CardResult> cardResults1 = cardResultDao.saveAll(cardResults);
computerPersonAttenDanceDay(startTime,endTime,userList,cardResults1);
return cardResults1;
}
} catch (ApiException e) {
......@@ -93,12 +112,76 @@ public class CardTask {
return null;
}
private void computerPersonAttenDanceDay(String startTime, String endTime, List<User> userList, List<CardResult> cardResults1) {
if(userList!=null){
userList.forEach(user -> {
if(cardResults1!=null){
List<CardResult> cardResults = new ArrayList<>();
cardResults1.forEach(cardResult -> {
String userId = cardResult.getUserId();
if(user.getId().equals(userId)){
cardResults.add(cardResult);
}
});
cardResults.forEach(cardResult -> {
});
}
});
}
}
/**
* 定时任务,定时获取打卡信息
* 定时任务,定时进行运算
*/
@Scheduled(cron = "0 59 23 * * ? ")
public void calculate(){
@Scheduled(cron = "0/30 * * * * ? ")
public void calculate() throws Exception{
int attendanceDay = 0;//应出勤天数
int averageWorkHours = 0;//平均工时
int realAttendanceDay = 0;//实际出勤天数
Calendar calendar = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String format = sdf.format(new Date());
Date parse = sdf.parse(format);
//计算这个月的应出勤天数
calendar.set(Calendar.DAY_OF_MONTH,1);
Date startTime = calendar.getTime();
calendar.add(Calendar.MONTH,1);
calendar.set(Calendar.DAY_OF_MONTH,0);
Date endTime = calendar.getTime();
List<Day> days = dayDao.findAllByStatusAndDateBetween("0", startTime, endTime);
if(days!=null){
attendanceDay = days.size();
}
List<User> users = pasUserDao.findAll();
List<User> userList = new ArrayList<>();
if(users!=null){
users.forEach(user -> {
if(!user.getUsername().equals("root")){
userList.add(user);
List<CardResult> cardResults = cardResultDao.findAllByUserIdAndUserCheckTimeBetween(user.getId(), startTime, endTime);
}
});
}
}
public static void main(String[] args) throws Exception{
Calendar calendar = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
// Date date = new Date();
String date = "2020-03-29 11:11:11";
String format = sdf.format(new Date());
//计算这个月的应出勤天数
Date parse = sdf.parse(date);
calendar.setTime(parse);
calendar.set(Calendar.DAY_OF_MONTH,1);
Date time = calendar.getTime();
System.out.println(time);
calendar.add(Calendar.MONTH,1);
calendar.set(Calendar.DAY_OF_MONTH,0);
Date time1 = calendar.getTime();
System.out.println("time1:"+time1);
}
}
package com.zjty.tynotes.pas.controller;
import com.zjty.tynotes.misc.config.AutoDocument;
import com.zjty.tynotes.pas.dao.AuthorityDao;
import com.zjty.tynotes.pas.dao.DayDao;
import com.zjty.tynotes.pas.dao.RoleAuthorityDao;
import com.zjty.tynotes.pas.dao.RoleDao;
import com.zjty.tynotes.pas.entity.Authority;
import com.zjty.tynotes.pas.entity.Day;
import com.zjty.tynotes.pas.entity.Role;
import com.zjty.tynotes.pas.entity.RoleAuthority;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
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.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
/**
* @Author gwj
* @create 2020/4/1 10:56
*/
@Api(tags = "用户管理权限管理模块", protocols = "http")
@RestController
@RequestMapping("/pas/user")
@AutoDocument
public class TestController {
@Autowired
private DayDao dayDao;
@Autowired
private AuthorityDao authorityDao;
@Autowired
private RoleDao roleDao;
@Autowired
private RoleAuthorityDao roleAuthorityDao;
// @GetMapping("/test")
// public void calculate() throws Exception{
// Calendar calendar = Calendar.getInstance();
// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
// String format = sdf.format(new Date());
// Date parse = sdf.parse(format);
// //计算这个月的应出勤天数
// calendar.set(Calendar.DAY_OF_MONTH,1);
// Date startTime = calendar.getTime();
// calendar.add(Calendar.MONTH,1);
// calendar.set(Calendar.DAY_OF_MONTH,1);
// Date endTime = calendar.getTime();
// List<Day> days = dayDao.findAllByStatusAndDateBetween("0", startTime, endTime);
// if(days!=null){
// System.out.println(days.size());
// }
// }
@GetMapping("/test")
public void addAuthority() throws Exception{
List<String> authorityName = new ArrayList<>();
authorityName.add("用户管理");
authorityName.add("权限管理");
authorityName.add("部门管理");
authorityName.add("考勤管理");
authorityName.add("角色管理");
List<Authority> authorities = authorityDao.findAllByNameIn(authorityName);
Role role = roleDao.findByName("管理员");
List<RoleAuthority> roleAuthorities = new ArrayList<>();
if(authorities!=null){
authorities.forEach(authority->{
RoleAuthority roleAuthority = new RoleAuthority(null,role.getId(),authority.getId());
roleAuthorities.add(roleAuthority);
});
}
roleAuthorityDao.saveAll(roleAuthorities);
}
}
......@@ -20,4 +20,6 @@ public interface RoleDao extends MongoRepository<Role, String> {
Role findAllByName(String name);
void deleteByName(String name);
Role findByName(String name);
}
......@@ -361,6 +361,7 @@ public class UserServiceImpl implements IUserService {
}
user.setRoles(roles);
}
return users;
}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论