package com.trs.ggzyexchange.schedul; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.fasterxml.jackson.core.JsonProcessingException; import com.trs.ggzyexchange.entity.*; import com.trs.ggzyexchange.enums.ClassIfy; import com.trs.ggzyexchange.enums.JobLock; import com.trs.ggzyexchange.service.*; import com.trs.ggzyexchange.utils.TenderDetailsVoUtils; import org.apache.commons.lang3.ObjectUtils; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; /** *

* 成交结果公告 定时任务 *

* * @author trs * @since 2023-02-24 */ @Component public class ZrzyTkqNoticeSchedul implements Job { private Logger logger = LoggerFactory.getLogger(ZrzyTkqNoticeSchedul.class); @Autowired private ZrzyTkqNoticeService zrzyTkqNoticeService; @Autowired private GcNoticeandfileService gcNoticeandfileService; @Autowired private TenderDetailsVoService tenderDetailsVoService; @Autowired private ScheduledTashService scheduledTashService; @Autowired private AreaPlatformService areaPlatformService; public void queryPageListUpdateEs() throws JsonProcessingException { /** * 查询当前在定时任务表当中的最新时间 */ QueryWrapper scheduledTashQueryWrapper = new QueryWrapper(); scheduledTashQueryWrapper.eq("table_name_value","zrzy_tkq_notice"); Page pageScheduledTash = new Page(1, 1); Page page = scheduledTashService.page(pageScheduledTash, scheduledTashQueryWrapper); List records = page.getRecords(); ScheduledTash scheduledTash = null; if(records.size() > 0){ scheduledTash = records.get(0); } Long time = null; if(ObjectUtils.isEmpty(scheduledTash)){ try { /** * 如果scheduledTash为空,证明没有当前定时任务,设置当前的定时任务的时间为0 查询表gcNoticeandfile表当中的最新时间 */ time = zrzyTkqNoticeService.maxDataTimeStamp(); ScheduledTash scheduledTashTash = new ScheduledTash(); scheduledTashTash.setTime(0L); time = 0L; scheduledTashTash.setTableNameValue("zrzy_tkq_notice"); scheduledTashTash.setUpdateTime(new Date()); scheduledTashTash.setCreateTime(new Date()); scheduledTashService.saveOrUpdate(scheduledTashTash,scheduledTashQueryWrapper); }catch (Exception e){ e.printStackTrace(); } }else { /** * 如果scheduledTash为空,证明没有当前定时任务,设置当前的定时任务的时间为0 查询表gcNoticeandfile表当中的最新时间 */ time = scheduledTash.getTime(); } try { //查询表gcNoticeandfile表当中的最新时间 Long newTime = zrzyTkqNoticeService.maxDataTimeStamp(); ScheduledTash scheduledTashTash = new ScheduledTash(); scheduledTashTash.setTime(newTime); scheduledTashTash.setTableNameValue("zrzy_tkq_notice"); scheduledTashTash.setUpdateTime(new Date()); scheduledTashService.saveOrUpdate(scheduledTashTash,scheduledTashQueryWrapper); }catch (Exception e){ e.printStackTrace(); } if(!ObjectUtils.isEmpty(time)){ QueryWrapper gcPerformanceQueryWrapper = new QueryWrapper(); gcPerformanceQueryWrapper.gt("DATA_TIMESTAMP",time); int count = zrzyTkqNoticeService.count(gcPerformanceQueryWrapper); Integer pageSize = 1000; Integer pageNum = (int)Math.ceil((double)count/pageSize); for(int i = 1; i <= pageNum;i++){ List tenderDetailsVoListAll = getTenderDetailsVoListAll(i, pageSize,time); gcNoticeandfileService.parseTenderDetailsVo(tenderDetailsVoListAll); } } } public List getTenderDetailsVoListAll(Integer pageNo,Integer pageSize,Long time){ QueryWrapper gcPerformanceQueryWrapper = new QueryWrapper(); gcPerformanceQueryWrapper.gt("NOTICE_SEND_TIME",time); Page page = new Page(pageNo, pageSize); Page page1 = zrzyTkqNoticeService.page(page,gcPerformanceQueryWrapper); List records = page1.getRecords(); List tenderDetailsVos = new ArrayList(); for (ZrzyTkqNotice record : records) { TenderDetailsVo tenderDetailsVo = new TenderDetailsVo(); String sourceDataCode = record.getSourceDataCode(); if(!ObjectUtils.isEmpty(sourceDataCode)){ tenderDetailsVo.setProjectCode(sourceDataCode); } String noticeName = record.getNoticeName(); if(!ObjectUtils.isEmpty(noticeName)){ tenderDetailsVo.setNoticeName(noticeName); } String projectName = record.getNoticeName(); if(!ObjectUtils.isEmpty(projectName)){ tenderDetailsVo.setProjectName(projectName); } String traAgencyCode = record.getTraAgencyCode(); if(!ObjectUtils.isEmpty(traAgencyCode)){ tenderDetailsVo.setTenderProjectCode(traAgencyCode); } String announcementConnect = record.getAnnouncementConnect(); if(!ObjectUtils.isEmpty(announcementConnect)){ tenderDetailsVo.setNoticeContent(announcementConnect); } Long noticeSendTime = record.getNoticeSendTime(); if(!ObjectUtils.isEmpty(noticeSendTime)){ tenderDetailsVo.setNoticeSendTime(noticeSendTime.toString()); tenderDetailsVo.setDocGetStartTime(noticeSendTime.toString()); } String regionCode = record.getRegionCode(); if(!ObjectUtils.isEmpty(regionCode)){ tenderDetailsVo.setRegionCode(regionCode); } Long noticeEndTime = record.getNoticeEndTime(); if(!ObjectUtils.isEmpty(noticeEndTime)){ tenderDetailsVo.setDocGetEndTime(noticeEndTime.toString()); } String dataSourceCode = record.getDataSourceCode(); if(!ObjectUtils.isEmpty(dataSourceCode)){ tenderDetailsVo.setDataSourceCode(dataSourceCode); } String sourceDataKey = record.getSourceDataKey(); if(!ObjectUtils.isEmpty(sourceDataKey)){ tenderDetailsVo.setSourceDataKey(sourceDataKey+noticeSendTime); } tenderDetailsVos.add(tenderDetailsVo); } for (TenderDetailsVo record : tenderDetailsVos) { try { record.setNoticeTypeCode(ClassIfy.TRANSFER_ANNOUNCEMENT.getCode()); record.setNoticeTypeName(ClassIfy.TRANSFER_ANNOUNCEMENT.getName()); record.setTransactionTypeCode(ClassIfy.NATURAL_RESOURCES.getCode()); record.setTransactionTypeName(ClassIfy.NATURAL_RESOURCES.getName()); record = tenderDetailsVoService.getTenderDetailsVoAllOrther(record); try { String regionCode = record.getRegionCode(); AreaPlatform areaPlatformByRegionCode = areaPlatformService.getAreaPlatformByRegionCode(regionCode); if(!ObjectUtils.isEmpty(areaPlatformByRegionCode)){ record.setPlatformCode(areaPlatformByRegionCode.getPlatformCode()); record.setPlatformName(areaPlatformByRegionCode.getRegionName()); } record.setIndustriesTypeName(ClassIfy.zrzy_ky.getName()); }catch (Exception e){ e.printStackTrace(); } TenderDetailsVoUtils.isNull(record); }catch (Exception e){ e.printStackTrace(); } } return tenderDetailsVos; } @Override public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { try { if(JobLock.ZrzyTkqNoticeFlag){ JobLock.ZrzyTkqNoticeFlag = false; logger.info("执行ZrzyTkqNoticeFlag", new SimpleDateFormat().format(new Date())); try { queryPageListUpdateEs(); } catch (Exception e) { e.printStackTrace(); } JobLock.ZrzyTkqNoticeFlag = true; }else{ logger.info("不执行ZrzyTkqNoticeFlag", new SimpleDateFormat().format(new Date())); } }catch (Exception e){ e.printStackTrace(); JobLock.ZrzyTkqNoticeFlag = true; } } }