diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/job/birthday/BirthdayJob.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/job/birthday/BirthdayJob.java index b410ae3a..79d32034 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/job/birthday/BirthdayJob.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/job/birthday/BirthdayJob.java @@ -61,42 +61,10 @@ public class BirthdayJob { // 生日提醒 birthdayRemind(); - // 外勤打卡权限变更 - fieldworkPermissionChange(); - // 返回执行成功 return ReturnT.SUCCESS; } - private void fieldworkPermissionChange() { - - try { - - // 获取用户编号 - Map> goOutList = goOutApi.getLeaveListByTime().getCheckedData(); - - if (CollectionUtil.isNotEmpty(goOutList.get("now"))) { - - // 讲需要当天外出的用户,设置外勤打卡权限 - adminUserMapper.update(new AdminUserDO().setFieldworkFlag(1).setFieldworkType(2), - new LambdaQueryWrapper() - .in(AdminUserDO::getId, goOutList.get("now")) - .ne(AdminUserDO::getFieldworkType, 1)); - } - - if (CollectionUtil.isNotEmpty(goOutList.get("yesterday"))) { - - // 将昨日外出的用户,关闭外勤打卡权限 - adminUserMapper.update(new AdminUserDO().setFieldworkFlag(0).setFieldworkType(0), - new LambdaQueryWrapper() - .in(AdminUserDO::getId, goOutList.get("yesterday")) - .eq(AdminUserDO::getFieldworkType, 2)); - } - }catch (Exception ex) { - log.info(ex.toString()); - } - } - private void birthdayRemind() { String time = LocalDateTime.now().format(DateTimeFormatter.ofPattern("MM-dd")); diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/job/fieldwork/FieldworkJob.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/job/fieldwork/FieldworkJob.java new file mode 100644 index 00000000..4e634340 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/job/fieldwork/FieldworkJob.java @@ -0,0 +1,70 @@ +package cn.iocoder.yudao.module.system.job.fieldwork; + +import cn.hutool.core.collection.CollectionUtil; +import cn.iocoder.yudao.framework.tenant.core.job.TenantJob; +import cn.iocoder.yudao.module.bpm.api.oa.BpmOAGoOutApi; +import cn.iocoder.yudao.module.system.api.subscribe.SubscribeMessageSendApi; +import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO; +import cn.iocoder.yudao.module.system.dal.mysql.user.AdminUserMapper; +import cn.iocoder.yudao.module.system.service.permission.PermissionService; +import cn.iocoder.yudao.module.system.service.user.AdminUserService; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.xxl.job.core.biz.model.ReturnT; +import com.xxl.job.core.handler.annotation.XxlJob; +import lombok.extern.slf4j.Slf4j; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Map; + +@Component +@Slf4j +@EnableScheduling +public class FieldworkJob { + + @Resource + private AdminUserMapper adminUserMapper; + + @Resource + private BpmOAGoOutApi goOutApi; + + /** + * 外勤打卡权限调整, 针对外出申请流程 + */ + @XxlJob("fieldworkJob") + @TenantJob // --- ⚠️ 这个注解 会将租户列表拉出来 完了后逐个租户执行 定时任务需要注意 + public ReturnT execute() { + + // 外勤打卡权限变更 + try { + + // 获取用户编号 + Map> goOutList = goOutApi.getLeaveListByTime().getCheckedData(); + + if (CollectionUtil.isNotEmpty(goOutList.get("now"))) { + + // 讲需要当天外出的用户,设置外勤打卡权限 + adminUserMapper.update(new AdminUserDO().setFieldworkFlag(1).setFieldworkType(2), + new LambdaQueryWrapper() + .in(AdminUserDO::getId, goOutList.get("now")) + .ne(AdminUserDO::getFieldworkType, 1)); + } + + if (CollectionUtil.isNotEmpty(goOutList.get("yesterday"))) { + + // 将昨日外出的用户,关闭外勤打卡权限 + adminUserMapper.update(new AdminUserDO().setFieldworkFlag(0).setFieldworkType(0), + new LambdaQueryWrapper() + .in(AdminUserDO::getId, goOutList.get("yesterday")) + .eq(AdminUserDO::getFieldworkType, 2)); + } + }catch (Exception ex) { + log.info(ex.toString()); + } + + // 返回执行成功 + return ReturnT.SUCCESS; + } +}