diff --git a/casic-service-person/pom.xml b/casic-service-person/pom.xml index 0f992bb..5749c9a 100644 --- a/casic-service-person/pom.xml +++ b/casic-service-person/pom.xml @@ -49,6 +49,12 @@ casic-export-support ${admin.version} + + + cn.hutool + hutool-all + 5.8.31 + diff --git a/casic-service-person/pom.xml b/casic-service-person/pom.xml index 0f992bb..5749c9a 100644 --- a/casic-service-person/pom.xml +++ b/casic-service-person/pom.xml @@ -49,6 +49,12 @@ casic-export-support ${admin.version} + + + cn.hutool + hutool-all + 5.8.31 + diff --git a/casic-service-person/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonAttendanceLogMapper.xml b/casic-service-person/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonAttendanceLogMapper.xml index f8101d5..80efcde 100644 --- a/casic-service-person/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonAttendanceLogMapper.xml +++ b/casic-service-person/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonAttendanceLogMapper.xml @@ -47,7 +47,7 @@ ${ew.sqlSegment} - ORDER BY a.CREATE_TIME + ORDER BY a.ON_JOB_TIME DESC diff --git a/casic-service-person/pom.xml b/casic-service-person/pom.xml index 0f992bb..5749c9a 100644 --- a/casic-service-person/pom.xml +++ b/casic-service-person/pom.xml @@ -49,6 +49,12 @@ casic-export-support ${admin.version} + + + cn.hutool + hutool-all + 5.8.31 + diff --git a/casic-service-person/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonAttendanceLogMapper.xml b/casic-service-person/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonAttendanceLogMapper.xml index f8101d5..80efcde 100644 --- a/casic-service-person/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonAttendanceLogMapper.xml +++ b/casic-service-person/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonAttendanceLogMapper.xml @@ -47,7 +47,7 @@ ${ew.sqlSegment} - ORDER BY a.CREATE_TIME + ORDER BY a.ON_JOB_TIME DESC diff --git a/casic-service-person/src/main/java/com/casic/missiles/modular/system/service/IPersonAttendanceLogService.java b/casic-service-person/src/main/java/com/casic/missiles/modular/system/service/IPersonAttendanceLogService.java index 649d4b2..eef1b04 100644 --- a/casic-service-person/src/main/java/com/casic/missiles/modular/system/service/IPersonAttendanceLogService.java +++ b/casic-service-person/src/main/java/com/casic/missiles/modular/system/service/IPersonAttendanceLogService.java @@ -7,6 +7,7 @@ import com.casic.missiles.modular.system.dto.PersonAttendDTO; import com.casic.missiles.modular.system.model.PersonAttendanceLog; +import java.util.Date; import java.util.List; /** @@ -34,4 +35,6 @@ * @param account */ void saveUserLog(String account,Integer Long); + + int getLogCount(Long personId, Date base, Integer minute); } diff --git a/casic-service-person/pom.xml b/casic-service-person/pom.xml index 0f992bb..5749c9a 100644 --- a/casic-service-person/pom.xml +++ b/casic-service-person/pom.xml @@ -49,6 +49,12 @@ casic-export-support ${admin.version} + + + cn.hutool + hutool-all + 5.8.31 + diff --git a/casic-service-person/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonAttendanceLogMapper.xml b/casic-service-person/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonAttendanceLogMapper.xml index f8101d5..80efcde 100644 --- a/casic-service-person/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonAttendanceLogMapper.xml +++ b/casic-service-person/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonAttendanceLogMapper.xml @@ -47,7 +47,7 @@ ${ew.sqlSegment} - ORDER BY a.CREATE_TIME + ORDER BY a.ON_JOB_TIME DESC diff --git a/casic-service-person/src/main/java/com/casic/missiles/modular/system/service/IPersonAttendanceLogService.java b/casic-service-person/src/main/java/com/casic/missiles/modular/system/service/IPersonAttendanceLogService.java index 649d4b2..eef1b04 100644 --- a/casic-service-person/src/main/java/com/casic/missiles/modular/system/service/IPersonAttendanceLogService.java +++ b/casic-service-person/src/main/java/com/casic/missiles/modular/system/service/IPersonAttendanceLogService.java @@ -7,6 +7,7 @@ import com.casic.missiles.modular.system.dto.PersonAttendDTO; import com.casic.missiles.modular.system.model.PersonAttendanceLog; +import java.util.Date; import java.util.List; /** @@ -34,4 +35,6 @@ * @param account */ void saveUserLog(String account,Integer Long); + + int getLogCount(Long personId, Date base, Integer minute); } diff --git a/casic-service-person/src/main/java/com/casic/missiles/modular/system/service/impl/PersonAttendanceLogServiceImpl.java b/casic-service-person/src/main/java/com/casic/missiles/modular/system/service/impl/PersonAttendanceLogServiceImpl.java index 0073d15..bf11313 100644 --- a/casic-service-person/src/main/java/com/casic/missiles/modular/system/service/impl/PersonAttendanceLogServiceImpl.java +++ b/casic-service-person/src/main/java/com/casic/missiles/modular/system/service/impl/PersonAttendanceLogServiceImpl.java @@ -88,6 +88,21 @@ } @Override + public int getLogCount(Long personId, Date base, Integer minute) { + EntityWrapper wrapper = new EntityWrapper<>(); + + Calendar calender = Calendar.getInstance(); + calender.setTime(base); + calender.add(Calendar.MINUTE, -1 * minute); + + wrapper.eq("PERSON_ID", personId); + wrapper.ge("ON_JOB_TIME", calender.getTime()); + wrapper.le("ON_JOB_TIME", base); + + return selectCount(wrapper); + } + + @Override public boolean insert(PersonAttendanceLog entity) { //人员添加自动增加用户信息 return super.insert(entity); diff --git a/casic-service-person/pom.xml b/casic-service-person/pom.xml index 0f992bb..5749c9a 100644 --- a/casic-service-person/pom.xml +++ b/casic-service-person/pom.xml @@ -49,6 +49,12 @@ casic-export-support ${admin.version} + + + cn.hutool + hutool-all + 5.8.31 + diff --git a/casic-service-person/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonAttendanceLogMapper.xml b/casic-service-person/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonAttendanceLogMapper.xml index f8101d5..80efcde 100644 --- a/casic-service-person/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonAttendanceLogMapper.xml +++ b/casic-service-person/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonAttendanceLogMapper.xml @@ -47,7 +47,7 @@ ${ew.sqlSegment} - ORDER BY a.CREATE_TIME + ORDER BY a.ON_JOB_TIME DESC diff --git a/casic-service-person/src/main/java/com/casic/missiles/modular/system/service/IPersonAttendanceLogService.java b/casic-service-person/src/main/java/com/casic/missiles/modular/system/service/IPersonAttendanceLogService.java index 649d4b2..eef1b04 100644 --- a/casic-service-person/src/main/java/com/casic/missiles/modular/system/service/IPersonAttendanceLogService.java +++ b/casic-service-person/src/main/java/com/casic/missiles/modular/system/service/IPersonAttendanceLogService.java @@ -7,6 +7,7 @@ import com.casic.missiles.modular.system.dto.PersonAttendDTO; import com.casic.missiles.modular.system.model.PersonAttendanceLog; +import java.util.Date; import java.util.List; /** @@ -34,4 +35,6 @@ * @param account */ void saveUserLog(String account,Integer Long); + + int getLogCount(Long personId, Date base, Integer minute); } diff --git a/casic-service-person/src/main/java/com/casic/missiles/modular/system/service/impl/PersonAttendanceLogServiceImpl.java b/casic-service-person/src/main/java/com/casic/missiles/modular/system/service/impl/PersonAttendanceLogServiceImpl.java index 0073d15..bf11313 100644 --- a/casic-service-person/src/main/java/com/casic/missiles/modular/system/service/impl/PersonAttendanceLogServiceImpl.java +++ b/casic-service-person/src/main/java/com/casic/missiles/modular/system/service/impl/PersonAttendanceLogServiceImpl.java @@ -88,6 +88,21 @@ } @Override + public int getLogCount(Long personId, Date base, Integer minute) { + EntityWrapper wrapper = new EntityWrapper<>(); + + Calendar calender = Calendar.getInstance(); + calender.setTime(base); + calender.add(Calendar.MINUTE, -1 * minute); + + wrapper.eq("PERSON_ID", personId); + wrapper.ge("ON_JOB_TIME", calender.getTime()); + wrapper.le("ON_JOB_TIME", base); + + return selectCount(wrapper); + } + + @Override public boolean insert(PersonAttendanceLog entity) { //人员添加自动增加用户信息 return super.insert(entity); 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 new file mode 100644 index 0000000..48c5a2b --- /dev/null +++ b/casic-service-toilet/src/main/java/com/casic/missiles/modular/toilet/job/StaffPresentJobHandler.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.toilet.job; + +import cn.hutool.core.date.DateField; +import cn.hutool.core.util.RandomUtil; +import com.casic.missiles.modular.staff.dto.StaffDto; +import com.casic.missiles.modular.staff.service.IStaffService; +import com.casic.missiles.modular.system.model.PersonAttendanceLog; +import com.casic.missiles.modular.system.service.IPersonAttendanceLogService; +import com.xxl.job.core.biz.model.ReturnT; +import com.xxl.job.core.handler.annotation.XxlJob; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +import java.util.Calendar; +import java.util.Date; +import java.util.List; + +import static com.xxl.job.core.biz.model.ReturnT.SUCCESS; + +@Slf4j +@Component +public class StaffPresentJobHandler { + + @Resource + private IPersonAttendanceLogService personAttendanceLogService; + + @Resource + private IStaffService staffService; + + @XxlJob(value = "staffPresentHandler") + public ReturnT execute(String param) throws Exception { + log.debug("创建人员出勤记录任务开始"); + + List staffList = staffService.list("", "", "", "", ""); + for (StaffDto staffDto : staffList) { + // 电话号码为登录名 不能为空 + if (staffDto.getTel().isEmpty()) { + continue; + } + + // 每次只筛选10%的人员打卡出勤 + int random = RandomUtil.randomInt(0, 10); + if (staffDto.getId() % 10 != random) { + continue; + } + + // 执行时间之前的随机时间 + Date presentTime = RandomUtil.randomDate(Calendar.getInstance().getTime(), DateField.SECOND, -60 * 60, 0); + + // 判断4小时之内是否有打卡记录 + int count = personAttendanceLogService.getLogCount(staffDto.getId(), presentTime, 6 * 60); + if (count > 0) { + continue; + } + + PersonAttendanceLog log = new PersonAttendanceLog(); + log.setPersonId(staffDto.getId()); + log.setOnJobTime(presentTime); + log.setCreateTime(presentTime); + log.setStatus("0"); + log.setUpdateTime(presentTime); + personAttendanceLogService.insert(log); + } + + log.info("创建人员出勤记录成功"); + return SUCCESS; + } +} diff --git a/casic-service-person/pom.xml b/casic-service-person/pom.xml index 0f992bb..5749c9a 100644 --- a/casic-service-person/pom.xml +++ b/casic-service-person/pom.xml @@ -49,6 +49,12 @@ casic-export-support ${admin.version} + + + cn.hutool + hutool-all + 5.8.31 + diff --git a/casic-service-person/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonAttendanceLogMapper.xml b/casic-service-person/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonAttendanceLogMapper.xml index f8101d5..80efcde 100644 --- a/casic-service-person/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonAttendanceLogMapper.xml +++ b/casic-service-person/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonAttendanceLogMapper.xml @@ -47,7 +47,7 @@ ${ew.sqlSegment} - ORDER BY a.CREATE_TIME + ORDER BY a.ON_JOB_TIME DESC diff --git a/casic-service-person/src/main/java/com/casic/missiles/modular/system/service/IPersonAttendanceLogService.java b/casic-service-person/src/main/java/com/casic/missiles/modular/system/service/IPersonAttendanceLogService.java index 649d4b2..eef1b04 100644 --- a/casic-service-person/src/main/java/com/casic/missiles/modular/system/service/IPersonAttendanceLogService.java +++ b/casic-service-person/src/main/java/com/casic/missiles/modular/system/service/IPersonAttendanceLogService.java @@ -7,6 +7,7 @@ import com.casic.missiles.modular.system.dto.PersonAttendDTO; import com.casic.missiles.modular.system.model.PersonAttendanceLog; +import java.util.Date; import java.util.List; /** @@ -34,4 +35,6 @@ * @param account */ void saveUserLog(String account,Integer Long); + + int getLogCount(Long personId, Date base, Integer minute); } diff --git a/casic-service-person/src/main/java/com/casic/missiles/modular/system/service/impl/PersonAttendanceLogServiceImpl.java b/casic-service-person/src/main/java/com/casic/missiles/modular/system/service/impl/PersonAttendanceLogServiceImpl.java index 0073d15..bf11313 100644 --- a/casic-service-person/src/main/java/com/casic/missiles/modular/system/service/impl/PersonAttendanceLogServiceImpl.java +++ b/casic-service-person/src/main/java/com/casic/missiles/modular/system/service/impl/PersonAttendanceLogServiceImpl.java @@ -88,6 +88,21 @@ } @Override + public int getLogCount(Long personId, Date base, Integer minute) { + EntityWrapper wrapper = new EntityWrapper<>(); + + Calendar calender = Calendar.getInstance(); + calender.setTime(base); + calender.add(Calendar.MINUTE, -1 * minute); + + wrapper.eq("PERSON_ID", personId); + wrapper.ge("ON_JOB_TIME", calender.getTime()); + wrapper.le("ON_JOB_TIME", base); + + return selectCount(wrapper); + } + + @Override public boolean insert(PersonAttendanceLog entity) { //人员添加自动增加用户信息 return super.insert(entity); 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 new file mode 100644 index 0000000..48c5a2b --- /dev/null +++ b/casic-service-toilet/src/main/java/com/casic/missiles/modular/toilet/job/StaffPresentJobHandler.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.toilet.job; + +import cn.hutool.core.date.DateField; +import cn.hutool.core.util.RandomUtil; +import com.casic.missiles.modular.staff.dto.StaffDto; +import com.casic.missiles.modular.staff.service.IStaffService; +import com.casic.missiles.modular.system.model.PersonAttendanceLog; +import com.casic.missiles.modular.system.service.IPersonAttendanceLogService; +import com.xxl.job.core.biz.model.ReturnT; +import com.xxl.job.core.handler.annotation.XxlJob; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +import java.util.Calendar; +import java.util.Date; +import java.util.List; + +import static com.xxl.job.core.biz.model.ReturnT.SUCCESS; + +@Slf4j +@Component +public class StaffPresentJobHandler { + + @Resource + private IPersonAttendanceLogService personAttendanceLogService; + + @Resource + private IStaffService staffService; + + @XxlJob(value = "staffPresentHandler") + public ReturnT execute(String param) throws Exception { + log.debug("创建人员出勤记录任务开始"); + + List staffList = staffService.list("", "", "", "", ""); + for (StaffDto staffDto : staffList) { + // 电话号码为登录名 不能为空 + if (staffDto.getTel().isEmpty()) { + continue; + } + + // 每次只筛选10%的人员打卡出勤 + int random = RandomUtil.randomInt(0, 10); + if (staffDto.getId() % 10 != random) { + continue; + } + + // 执行时间之前的随机时间 + Date presentTime = RandomUtil.randomDate(Calendar.getInstance().getTime(), DateField.SECOND, -60 * 60, 0); + + // 判断4小时之内是否有打卡记录 + int count = personAttendanceLogService.getLogCount(staffDto.getId(), presentTime, 6 * 60); + if (count > 0) { + continue; + } + + PersonAttendanceLog log = new PersonAttendanceLog(); + log.setPersonId(staffDto.getId()); + log.setOnJobTime(presentTime); + log.setCreateTime(presentTime); + log.setStatus("0"); + log.setUpdateTime(presentTime); + personAttendanceLogService.insert(log); + } + + log.info("创建人员出勤记录成功"); + return SUCCESS; + } +} diff --git a/casic-service-toilet/src/main/java/com/casic/missiles/modular/toilet/job/ToiletCleanJobHandler.java b/casic-service-toilet/src/main/java/com/casic/missiles/modular/toilet/job/ToiletCleanJobHandler.java index e11a06b..7f9437d 100644 --- a/casic-service-toilet/src/main/java/com/casic/missiles/modular/toilet/job/ToiletCleanJobHandler.java +++ b/casic-service-toilet/src/main/java/com/casic/missiles/modular/toilet/job/ToiletCleanJobHandler.java @@ -47,9 +47,9 @@ cleanLog.setDelFlag("0"); // 随机数 - int randomMinute = RandomUtil.randomInt(0, 90); + int randomSec = RandomUtil.randomInt(0, 90 * 60); Calendar workTime = Calendar.getInstance(); - workTime.add(Calendar.MINUTE, -1 * randomMinute); + workTime.add(Calendar.SECOND, -1 * randomSec); // 工作时间 cleanLog.setStartTime(workTime.getTime());