package com.zhgd.xmgl.task; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.zhgd.xmgl.modules.project.entity.Project; import com.zhgd.xmgl.modules.project.mapper.ProjectMapper; import com.zhgd.xmgl.modules.worker.entity.ProjectCloseManageAnalysis; import com.zhgd.xmgl.modules.worker.entity.ProjectEnterpriseWorkerStatistics; import com.zhgd.xmgl.modules.worker.service.IProjectCloseManageAnalysisService; import com.zhgd.xmgl.modules.worker.service.IProjectEnterpriseWorkerStatisticsService; import lombok.extern.log4j.Log4j; import net.javacrumbs.shedlock.core.SchedulerLock; import org.apache.commons.lang.time.DateUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; /** * @program: wisdomSite * @description:项目下的各企业的人员统计 * @author: Mr.Peng * @create: 2022-04-18 17:07 **/ @Log4j @Component public class EnterpriseWorkerStatisticsTask { @Autowired private IProjectEnterpriseWorkerStatisticsService projectEnterpriseWorkerStatisticsService; @Autowired private ProjectMapper projectMapper; /** * 项目下的各企业的人员统计 */ @SchedulerLock(name = "getWorkerStatisticsTask", lockAtMostFor = 1000*60*60, lockAtLeastFor = 1000*60*5) // @Scheduled(cron = "0 10 0 * * ?") @Scheduled(cron = "30 10 * * * ?")//每小时的10分30秒触发任务 public void getWorkerStatisticsTask(){ try { SimpleDateFormat sft = new SimpleDateFormat("yyyy-MM-dd"); //计算前一天的考勤状况 Date date = DateUtils.addDays(new Date(), -1); QueryWrapper queryWrapper=new QueryWrapper<>(); List list=projectMapper.selectList(queryWrapper); String queryTime=sft.format(date); QueryWrapper queryWrapper1=new QueryWrapper<>(); queryWrapper1.lambda().eq(ProjectEnterpriseWorkerStatistics::getQueryTime,queryTime); projectEnterpriseWorkerStatisticsService.remove(queryWrapper1); Map param=new HashMap<>(); param.put("queryTime",queryTime); if(list!=null&&list.size()>0){ for (Project project:list) { param.put("projectSn",project.getProjectSn()); List dataList = projectEnterpriseWorkerStatisticsService.getRealProjectEnterpriseStatisticsList(param); projectEnterpriseWorkerStatisticsService.saveBatch(dataList); } } } catch (Exception e) { log.error("项目下的各企业的人员统计失败", e); } } }