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.WorkerHealthyHistory; import com.zhgd.xmgl.modules.worker.entity.WorkerInfo; import com.zhgd.xmgl.modules.worker.mapper.WorkerHealthyHistoryMapper; import com.zhgd.xmgl.modules.worker.mapper.WorkerInfoMapper; import com.zhgd.xmgl.modules.worker.service.IProjectCloseManageAnalysisService; import lombok.extern.log4j.Log4j; import lombok.extern.slf4j.Slf4j; 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 10:45 **/ @Slf4j @Component public class ManageAnalysisTask { @Autowired private IProjectCloseManageAnalysisService projectCloseManageAnalysisService; @Autowired private ProjectMapper projectMapper; @Autowired private WorkerHealthyHistoryMapper workerHealthyHistoryMapper; @Autowired private WorkerInfoMapper workerInfoMapper; /** * 管理进出分析 */ @SchedulerLock(name = "getManageAnalysisTask", lockAtMostFor = 1000*60*60, lockAtLeastFor = 1000*60*5) @Scheduled(cron = "0 10 0 * * ?") public void getManageAnalysisTask(){ 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(ProjectCloseManageAnalysis::getQueryTime,queryTime); projectCloseManageAnalysisService.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 = projectCloseManageAnalysisService.getProjectCloseManageAnalysisData(param); projectCloseManageAnalysisService.saveBatch(dataList); } } } catch (Exception e) { log.error("管理进出分析失败", e); } } @SchedulerLock(name = "workerHealthTask", lockAtMostFor = 1000*60*60, lockAtLeastFor = 1000*60*5) @Scheduled(cron = "0 10 0 * * ?") public void workerHealthTask(){ 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(WorkerHealthyHistory::getDate,queryTime); workerHealthyHistoryMapper.delete(queryWrapper1); Map param=new HashMap<>(); param.put("queryTime",queryTime); if(list!=null&&list.size()>0){ for (Project project:list) { QueryWrapper infoQueryWrapper=new QueryWrapper<>(); infoQueryWrapper.lambda().eq(WorkerInfo::getProjectSn,project.getProjectSn()) .eq(WorkerInfo::getInserviceType,1); List infoList=workerInfoMapper.selectList(infoQueryWrapper); if(infoList!=null&&infoList.size()>0){ for (WorkerInfo workerInfo:infoList){ WorkerHealthyHistory workerHealthyHistory=new WorkerHealthyHistory(); workerHealthyHistory.setWorkerId(workerInfo.getId()); workerHealthyHistory.setCodeState(workerInfo.getCodeState()); workerHealthyHistory.setDate(date); workerHealthyHistoryMapper.insert(workerHealthyHistory); } } } } } catch (Exception e) { log.error("管理进出分析失败", e); } } }