123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217 |
- package cn.com.taiji.duty.task;
- import cn.com.taiji.duty.model.DutyLoginLog;
- import cn.com.taiji.duty.model.DutySeatDutyUnit;
- import cn.com.taiji.duty.model.DutySignInRecord;
- import cn.com.taiji.duty.model.DutyStatistics;
- import cn.com.taiji.duty.service.*;
- import cn.com.taiji.duty.utils.StringUtils;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.data.redis.core.StringRedisTemplate;
- import org.springframework.scheduling.annotation.Scheduled;
- import org.springframework.stereotype.Component;
- import java.time.LocalDate;
- import java.time.format.DateTimeFormatter;
- import java.time.temporal.WeekFields;
- import java.util.ArrayList;
- import java.util.Date;
- import java.util.List;
- /**
- * @Description
- *
- * @Author yangyue
- * @Date 2023/8/4
- */
- @Component
- @Slf4j
- public class TimeTask {
- @Autowired
- private IDutyStatisticsService statisticsService;
- @Autowired
- private IDutySeatDutyUnitService dutyUnitService;
- @Autowired
- private IDutySignInRecordService signInRecordService;
- @Autowired
- private IDutyLoginLogService loginLogService;
- @Autowired
- protected StringRedisTemplate redisTemplate;
- @Autowired
- private IDutyConfigService configService;
- @Scheduled(cron = "0 0 0 * * ?")
- public void signScheduleOne() {
- log.info("===========签卡处理定时开始===========");
- this.signOne();
- log.info("===========签卡处理定时结束===========");
- }
- public void signOne() {
- List<DutySeatDutyUnit> dutyUnits = dutyUnitService.queryDutyUnit();
- DutySignInRecord signInRecord = new DutySignInRecord();
- signInRecord.setStatus("4");
- signInRecordService.update(signInRecord, new LambdaQueryWrapper<DutySignInRecord>()
- .eq(DutySignInRecord::getStatus, "0"));
- List<DutySignInRecord> signInRecords = new ArrayList<>();
- Date date = new Date();
- String signBeginTime = configService.selectConfigByKey("sign.begin.time");
- DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd");
- LocalDate localDate = LocalDate.now();
- String time = df.format(localDate);
- dutyUnits.forEach(dutyUnit -> {
- DutySignInRecord sign = new DutySignInRecord();
- sign.setDeptId(dutyUnit.getDeptId());
- sign.setUnitName(dutyUnit.getName());
- sign.setTime(date);
- sign.setType("1");
- sign.setStatus("0");
- sign.setSignTime(time + " " + signBeginTime);
- signInRecords.add(sign);
- });
- String signEndTime = configService.selectConfigByKey("sign.end.time");
- dutyUnits.forEach(dutyUnit -> {
- DutySignInRecord sign = new DutySignInRecord();
- sign.setDeptId(dutyUnit.getDeptId());
- sign.setUnitName(dutyUnit.getName());
- sign.setTime(date);
- sign.setType("2");
- sign.setStatus("0");
- sign.setSignTime(time + " " + signEndTime);
- signInRecords.add(sign);
- });
- signInRecordService.saveBatch(signInRecords);
- }
- @Scheduled(cron = "0 0 12 * * ?")
- public void signScheduleTwo() {
- log.info("===========签卡处理定时开始===========");
- this.signTwo();
- log.info("===========签卡处理定时结束===========");
- }
- public void signTwo() {
- // List<DutySeatDutyUnit> dutyUnits = dutyUnitService.queryDutyUnit();
- DutySignInRecord signInRecord = new DutySignInRecord();
- signInRecord.setStatus("4");
- signInRecordService.update(signInRecord, new LambdaQueryWrapper<DutySignInRecord>()
- .eq(DutySignInRecord::getStatus, "0").eq(DutySignInRecord::getType,"1"));
- // List<DutySignInRecord> signInRecords = new ArrayList<>();
- // Date date = new Date();
- // String signEndTime = configService.selectConfigByKey("sign.end.time");
- // dutyUnits.forEach(dutyUnit -> {
- // DutySignInRecord sign = new DutySignInRecord();
- // sign.setDeptId(dutyUnit.getDeptId());
- // sign.setUnitName(dutyUnit.getName());
- // sign.setTime(date);
- // sign.setType("2");
- // sign.setStatus("0");
- // sign.setSignTime(signEndTime);
- // signInRecords.add(sign);
- // });
- // signInRecordService.saveBatch(signInRecords);
- }
- @Scheduled(cron = "0 0 1 * * ?")
- public void statisticsScheduleOne() {
- log.info("===========定时开始===========");
- LocalDate localDate = LocalDate.now().plusDays(-1);
- this.statisticsOne();
- log.info("===========定时结束===========");
- }
- public void statisticsOne() {
- DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
- DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM");
- LocalDate now = LocalDate.now();
- String time = formatter.format(now);
- String year = String.valueOf(now.getYear());
- String yearMonth = df.format(now);
- String week = String.valueOf(now.get(WeekFields.ISO.weekOfWeekBasedYear()));
- List<DutySeatDutyUnit> dutyUnits = dutyUnitService.queryDutyUnit();
- List<DutyStatistics> dutyStatisticsList = new ArrayList<>();
- dutyUnits.forEach(dutyUnit -> {
- DutyStatistics statistics = new DutyStatistics();
- statistics.setDeptId(dutyUnit.getDeptId());
- statistics.setUnitName(dutyUnit.getName());
- statistics.setYear(year);
- statistics.setYearMonth(yearMonth);
- statistics.setWeek(week);
- statistics.setTime(time);
- statistics.setType("1");
- statistics.setStatus("2");
- dutyStatisticsList.add(statistics);
- DutyStatistics statistics2 = new DutyStatistics();
- statistics2.setDeptId(dutyUnit.getDeptId());
- statistics2.setUnitName(dutyUnit.getName());
- statistics2.setYear(year);
- statistics2.setYearMonth(yearMonth);
- statistics2.setWeek(week);
- statistics2.setTime(time);
- statistics2.setType("2");
- statistics2.setStatus("2");
- dutyStatisticsList.add(statistics2);
- DutyStatistics statistics3 = new DutyStatistics();
- statistics.setDeptId(dutyUnit.getDeptId());
- statistics3.setUnitName(dutyUnit.getName());
- statistics3.setYear(year);
- statistics3.setYearMonth(yearMonth);
- statistics3.setWeek(week);
- statistics3.setTime(time);
- statistics3.setType("3");
- statistics3.setStatus("2");
- dutyStatisticsList.add(statistics3);
- });
- statisticsService.saveBatch(dutyStatisticsList);
- String oldTime = formatter.format(now.plusDays(-1));
- dutyUnits.forEach(dutyUnit -> {
- long count = signInRecordService.queryCount(dutyUnit.getDeptId(), oldTime);
- if (count == 2) {
- DutyStatistics statistics = new DutyStatistics();
- statistics.setStatus("1");
- statisticsService.update(statistics, new LambdaQueryWrapper<DutyStatistics>()
- .eq(DutyStatistics::getDeptId,dutyUnit.getDeptId())
- .eq(DutyStatistics::getTime,oldTime)
- .eq(DutyStatistics::getType,"1"));
- }
- });
- }
- @Scheduled(cron = "0 0/10 * * * ?")
- public void logOutScheduleOne() {
- log.info("===========定时开始===========");
- LocalDate localDate = LocalDate.now().plusDays(-1);
- this.logOutOne();
- log.info("===========定时结束===========");
- }
- public void logOutOne() {
- List<DutyLoginLog> list = loginLogService.list(new LambdaQueryWrapper<DutyLoginLog>()
- .eq(DutyLoginLog::getStatus, "1"));
- if (list != null && list.size() > 0) {
- Date date = new Date();
- list.forEach(loginLog -> {
- String username = redisTemplate.opsForValue().get(loginLog.getToken());
- if (StringUtils.isEmpty(username)) {
- loginLog.setStatus("2");
- loginLog.setExitTime(date);
- loginLog.setDuration((date.getTime()-loginLog.getLoginTime().getTime())/1000);
- loginLogService.updateById(loginLog);
- }
- });
- }
- }
- }
|