Task.java 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. package com.ruoyi.system.service;
  2. import com.ruoyi.common.core.domain.entity.SysUser;
  3. import com.ruoyi.common.utils.DateUtils;
  4. import com.ruoyi.common.utils.HolidayUtils;
  5. import com.ruoyi.system.domain.AttendanceTime;
  6. import com.ruoyi.system.domain.KaoqinRecord;
  7. import com.ruoyi.system.mapper.AttendanceTimeMapper;
  8. import com.ruoyi.system.mapper.KaoqinRecordMapper;
  9. import com.ruoyi.system.mapper.SysUserMapper;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11. import org.springframework.scheduling.annotation.Async;
  12. import org.springframework.scheduling.annotation.Scheduled;
  13. import org.springframework.stereotype.Component;
  14. import java.util.ArrayList;
  15. import java.util.List;
  16. import java.util.Map;
  17. import java.util.stream.Collectors;
  18. @Component
  19. public class Task {
  20. @Autowired
  21. private SysUserMapper userMapper;
  22. @Autowired
  23. private KaoqinRecordMapper kaoqinRecordMapper;
  24. @Autowired
  25. private AttendanceTimeMapper attendanceTimeMapper;
  26. /***
  27. * 定时插入未打卡数据
  28. */
  29. @Async
  30. //@Scheduled(cron = "0 0/2 * * * ? ")
  31. @Scheduled(cron = "0 1 0 * * ? ")
  32. public void thirdNucleicAcid() {
  33. String day = DateUtils.getDate();
  34. //获取前一天的日期
  35. String data = DateUtils.plusSeconds(DateUtils.getDate(),-1,"yyyy-MM-dd");
  36. //判断当天天是否是法定节假日 0 上班 1周末 2节假日
  37. String jsonResult = HolidayUtils.request(data);
  38. if(!"0".equals(jsonResult)){
  39. //是节假日的话不需要插入数据,直接返回
  40. return;
  41. }
  42. //查询考勤规则
  43. AttendanceTime attendanceTime = new AttendanceTime();
  44. List<AttendanceTime> attendanceTimes = attendanceTimeMapper.selectAttendanceTimeList(attendanceTime);
  45. //根据部门分类
  46. //Map<Long, List<AttendanceTime>> collect = attendanceTimes.stream().collect(Collectors.groupingBy(AttendanceTime::getDeptId));
  47. //获取所有有部门的人员
  48. List<SysUser> userList = userMapper.selectUserListNoDept();
  49. //获取前一天的所有考勤记录
  50. KaoqinRecord kaoqinRecord = new KaoqinRecord();
  51. kaoqinRecord.setKaTime(data);
  52. List<KaoqinRecord> kaoqinRecordList = kaoqinRecordMapper.selectKaoqinRecordList(kaoqinRecord);
  53. for (SysUser sysUser : userList) {
  54. boolean blt = false;
  55. if(attendanceTimes != null && !attendanceTimes.isEmpty()){
  56. for (AttendanceTime time : attendanceTimes) {
  57. if(time.getDeptName().contains(sysUser.getDept().getDeptName()) && DateUtils.isDateBetween(DateUtils.convertStringToDate(data), time.getStartTime(), time.getEndTime())){
  58. blt = true;
  59. break;
  60. }
  61. }
  62. }
  63. if(!blt){
  64. continue;
  65. }
  66. boolean bl = true;
  67. for (KaoqinRecord record : kaoqinRecordList) {
  68. if(record.getUserId().equals(sysUser.getUserId())){
  69. bl = false;
  70. }
  71. }
  72. if(bl){
  73. //将日期拆分成年月日的数组
  74. String[] datas = data.split("-");
  75. KaoqinRecord kaoqinRecords = new KaoqinRecord();
  76. kaoqinRecords.setUserId(sysUser.getUserId());
  77. kaoqinRecords.setUserName(sysUser.getNickName());
  78. kaoqinRecords.setPhone(sysUser.getPhonenumber());
  79. kaoqinRecords.setDeptId(sysUser.getDeptId());
  80. kaoqinRecords.setDeptName(sysUser.getDept().getDeptName());
  81. kaoqinRecords.setAncestors(sysUser.getDept().getAncestors());
  82. kaoqinRecords.setKaYear(datas[0]);
  83. kaoqinRecords.setKaMonth(datas[1]);
  84. kaoqinRecords.setKaDay(datas[2]);
  85. kaoqinRecords.setKaWeek(DateUtils.dateToWeek(data));
  86. kaoqinRecords.setKaTime(data);
  87. kaoqinRecords.setKaTypeAmIn("5");
  88. kaoqinRecords.setKaTypeAmOut("5");
  89. kaoqinRecords.setKaTypePmIn("5");
  90. kaoqinRecords.setKaTypePmOut("5");
  91. kaoqinRecords.setKaStatus("2");
  92. kaoqinRecords.setCreateTime(DateUtils.getNowDate());
  93. kaoqinRecordMapper.insertKaoqinRecord(kaoqinRecords);
  94. }
  95. }
  96. }
  97. //0 上班 1周末 2节假日
  98. /*public static void main(String[] args) {
  99. String data = DateUtils.plusSeconds(DateUtils.getDate(),-1,"yyyy-MM-dd");
  100. System.out.println(data);
  101. }*/
  102. }