diff --git a/casic-service-job-monitor/pom.xml b/casic-service-job-monitor/pom.xml index 3b1b665..f896b90 100644 --- a/casic-service-job-monitor/pom.xml +++ b/casic-service-job-monitor/pom.xml @@ -48,6 +48,12 @@ ${admin.version} + + + cn.hutool + hutool-all + 5.8.31 + diff --git a/casic-service-job-monitor/pom.xml b/casic-service-job-monitor/pom.xml index 3b1b665..f896b90 100644 --- a/casic-service-job-monitor/pom.xml +++ b/casic-service-job-monitor/pom.xml @@ -48,6 +48,12 @@ ${admin.version} + + + cn.hutool + hutool-all + 5.8.31 + diff --git a/casic-service-job-monitor/src/main/java/com/casic/missiles/modular/statistics/StatisticsController.java b/casic-service-job-monitor/src/main/java/com/casic/missiles/modular/statistics/StatisticsController.java index d07a135..305aa24 100644 --- a/casic-service-job-monitor/src/main/java/com/casic/missiles/modular/statistics/StatisticsController.java +++ b/casic-service-job-monitor/src/main/java/com/casic/missiles/modular/statistics/StatisticsController.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.statistics; +import cn.hutool.core.date.DateField; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.mapper.SqlRunner; import com.casic.missiles.core.base.controller.BaseController; @@ -211,7 +212,7 @@ @RequestMapping(value = "/attendancePercent") @ResponseBody public Object attendancePercent(String type, String staffType, String startTime, String endTime) { - EntityWrapper query = new EntityWrapper(); + EntityWrapper> query = new EntityWrapper<>(); if (JobConstant.ATTENDANCEPERCENT_DAY.equals(type)) { if (ToolUtil.isEmpty(startTime)) { startTime = DateUtil.getAfterDayDate(JobConstant.DEFAULT_DAYS, JobConstant.DAY_PATTERN); @@ -231,13 +232,23 @@ query.ge(ATTENDANCEPERCENT_CREATE_TIME, startTime); } if (ToolUtil.isNotEmpty(endTime)) { - query.le(ATTENDANCEPERCENT_CREATE_TIME, endTime); + Date end; + if (JobConstant.ATTENDANCEPERCENT_DAY.equals(type)) { + end = cn.hutool.core.date.DateUtil.parse(endTime, "yyyy-MM-dd"); + end = cn.hutool.core.date.DateUtil.offset(end, DateField.DAY_OF_YEAR, 1); + query.le(ATTENDANCEPERCENT_CREATE_TIME, cn.hutool.core.date.DateUtil.format(end, "yyyy-MM-dd")); + } else { + end = cn.hutool.core.date.DateUtil.parse(endTime, "yyyy-MM"); + end = cn.hutool.core.date.DateUtil.offset(end, DateField.MONTH, 1); + query.le(ATTENDANCEPERCENT_CREATE_TIME, cn.hutool.core.date.DateUtil.format(end, "yyyy-MM")); + } + } if (ToolUtil.isNotEmpty(staffType)) { query.eq(JobConstant.ATTENDANCEPERCENT_TYPE, staffType); } - List> maps = new ArrayList<>(); - List dates = new ArrayList<>(); + List> maps; + List dates; if (JobConstant.ATTENDANCEPERCENT_DAY.equals(type)) { dates = DateUtil.findDates(startTime, endTime, JobConstant.DAY_PATTERN); } else { diff --git a/casic-service-job-monitor/pom.xml b/casic-service-job-monitor/pom.xml index 3b1b665..f896b90 100644 --- a/casic-service-job-monitor/pom.xml +++ b/casic-service-job-monitor/pom.xml @@ -48,6 +48,12 @@ ${admin.version} + + + cn.hutool + hutool-all + 5.8.31 + diff --git a/casic-service-job-monitor/src/main/java/com/casic/missiles/modular/statistics/StatisticsController.java b/casic-service-job-monitor/src/main/java/com/casic/missiles/modular/statistics/StatisticsController.java index d07a135..305aa24 100644 --- a/casic-service-job-monitor/src/main/java/com/casic/missiles/modular/statistics/StatisticsController.java +++ b/casic-service-job-monitor/src/main/java/com/casic/missiles/modular/statistics/StatisticsController.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.statistics; +import cn.hutool.core.date.DateField; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.mapper.SqlRunner; import com.casic.missiles.core.base.controller.BaseController; @@ -211,7 +212,7 @@ @RequestMapping(value = "/attendancePercent") @ResponseBody public Object attendancePercent(String type, String staffType, String startTime, String endTime) { - EntityWrapper query = new EntityWrapper(); + EntityWrapper> query = new EntityWrapper<>(); if (JobConstant.ATTENDANCEPERCENT_DAY.equals(type)) { if (ToolUtil.isEmpty(startTime)) { startTime = DateUtil.getAfterDayDate(JobConstant.DEFAULT_DAYS, JobConstant.DAY_PATTERN); @@ -231,13 +232,23 @@ query.ge(ATTENDANCEPERCENT_CREATE_TIME, startTime); } if (ToolUtil.isNotEmpty(endTime)) { - query.le(ATTENDANCEPERCENT_CREATE_TIME, endTime); + Date end; + if (JobConstant.ATTENDANCEPERCENT_DAY.equals(type)) { + end = cn.hutool.core.date.DateUtil.parse(endTime, "yyyy-MM-dd"); + end = cn.hutool.core.date.DateUtil.offset(end, DateField.DAY_OF_YEAR, 1); + query.le(ATTENDANCEPERCENT_CREATE_TIME, cn.hutool.core.date.DateUtil.format(end, "yyyy-MM-dd")); + } else { + end = cn.hutool.core.date.DateUtil.parse(endTime, "yyyy-MM"); + end = cn.hutool.core.date.DateUtil.offset(end, DateField.MONTH, 1); + query.le(ATTENDANCEPERCENT_CREATE_TIME, cn.hutool.core.date.DateUtil.format(end, "yyyy-MM")); + } + } if (ToolUtil.isNotEmpty(staffType)) { query.eq(JobConstant.ATTENDANCEPERCENT_TYPE, staffType); } - List> maps = new ArrayList<>(); - List dates = new ArrayList<>(); + List> maps; + List dates; if (JobConstant.ATTENDANCEPERCENT_DAY.equals(type)) { dates = DateUtil.findDates(startTime, endTime, JobConstant.DAY_PATTERN); } else { diff --git a/casic-service-toilet/src/main/java/com/casic/missiles/modular/toilet/job/StaffPresentJobHandler.java b/casic-service-toilet/src/main/java/com/casic/missiles/modular/toilet/job/StaffPresentJobHandler.java index 48c5a2b..97aacc4 100644 --- a/casic-service-toilet/src/main/java/com/casic/missiles/modular/toilet/job/StaffPresentJobHandler.java +++ b/casic-service-toilet/src/main/java/com/casic/missiles/modular/toilet/job/StaffPresentJobHandler.java @@ -40,17 +40,30 @@ continue; } - // 每次只筛选10%的人员打卡出勤 - int random = RandomUtil.randomInt(0, 10); - if (staffDto.getId() % 10 != random) { + Calendar base = Calendar.getInstance(); + if (base.get(Calendar.HOUR_OF_DAY) > 11 || base.get(Calendar.HOUR_OF_DAY) < 7) { continue; } - // 执行时间之前的随机时间 - Date presentTime = RandomUtil.randomDate(Calendar.getInstance().getTime(), DateField.SECOND, -60 * 60, 0); + if (base.get(Calendar.HOUR_OF_DAY) == 11) { + // 10点只有很少的人 + int random = RandomUtil.randomInt(0, 50); + if (staffDto.getId() % 50 != random) { + continue; + } + } else if (base.get(Calendar.HOUR_OF_DAY) >= 7) { + // 大部分人集中在6 7 8 9点打卡 + int random = RandomUtil.randomInt(0, 10); + if (staffDto.getId() % 10 != random) { + continue; + } + } + + // 打卡逻辑 + Date presentTime = RandomUtil.randomDate(base.getTime(), DateField.MINUTE, -30, 0); // 判断4小时之内是否有打卡记录 - int count = personAttendanceLogService.getLogCount(staffDto.getId(), presentTime, 6 * 60); + int count = personAttendanceLogService.getLogCount(staffDto.getId(), presentTime, 4 * 60); if (count > 0) { continue; }