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 AllianceCityWebsiteSchedul implements Job {
private Logger logger = LoggerFactory.getLogger(AllianceCityWebsiteSchedul.class);
@Autowired
private AllianceCityWebsiteService allianceCityWebsiteService;
@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","alliance_city_website");
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表当中的最新时间
*/
ScheduledTash scheduledTashTash = new ScheduledTash();
scheduledTashTash.setTime(0L);
time = 0L;
scheduledTashTash.setTableNameValue("alliance_city_website");
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 = allianceCityWebsiteService.maxDataTimeStamp();
ScheduledTash scheduledTashTash = new ScheduledTash();
scheduledTashTash.setTime(newTime);
scheduledTashTash.setTableNameValue("alliance_city_website");
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 = allianceCityWebsiteService.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("DATA_TIMESTAMP",time);
Page page = new Page(pageNo, pageSize);
Page page1 = allianceCityWebsiteService.page(page,gcPerformanceQueryWrapper);
List records = page1.getRecords();
List tenderDetailsVos = new ArrayList();
for (AllianceCityWebsite record : records) {
TenderDetailsVo tenderDetailsVo = new TenderDetailsVo();
String projectCode1 = record.getProjectCode();
if(!ObjectUtils.isEmpty(projectCode1)){
tenderDetailsVo.setProjectCode(projectCode1);
}
String noticeName = record.getBulletinTitle();
if(!ObjectUtils.isEmpty(noticeName)){
tenderDetailsVo.setNoticeName(noticeName);
}
String projectName = record.getBulletinTitle();
if(!ObjectUtils.isEmpty(projectName)){
tenderDetailsVo.setProjectName(projectName);
}
String projectCode = record.getProjectCode();
if(!ObjectUtils.isEmpty(projectCode)){
tenderDetailsVo.setTenderProjectCode(projectCode);
}
Long noticeSendTime = record.getPublishingTime();
Long createDate = record.getCreateDate();
if(false&&!ObjectUtils.isEmpty(createDate)&&0 != createDate){
tenderDetailsVo.setNoticeSendTime(record.getCreateDate().toString());
}else{
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.getPublishingTime();
if(!ObjectUtils.isEmpty(noticeEndTime)){
tenderDetailsVo.setDocGetEndTime(noticeEndTime.toString());
}
String dataSourceCode = record.getSourceDataKey();
if(!ObjectUtils.isEmpty(dataSourceCode)){
tenderDetailsVo.setDataSourceCode(dataSourceCode);
}
String sourceDataKey = record.getSourceDataKey();
if(!ObjectUtils.isEmpty(sourceDataKey)){
tenderDetailsVo.setSourceDataKey(sourceDataKey+noticeSendTime);
}
if(!ObjectUtils.isEmpty(record.getBulletinType())){//1:公告,2:公示
tenderDetailsVo.setTypeName(record.getBulletinType());
}
if(!ObjectUtils.isEmpty(record.getIndustryType())){//1:采购需求预公示2:产权类3:权益类
tenderDetailsVo.setTypeCode(record.getIndustryType());
}
String finalNoticeContent = "";
String noticeContent = record.getBulletinContent();
if(!ObjectUtils.isEmpty(noticeContent)){
finalNoticeContent = noticeContent;
}
if(!ObjectUtils.isEmpty(record.getUrl())){
String fileUrl = record.getUrl();
String file = "";
if(!ObjectUtils.isEmpty(fileUrl)){
file = "
附件:
";
file += "附件
";
}
finalNoticeContent = finalNoticeContent + file;
}
tenderDetailsVo.setNoticeContent(finalNoticeContent);
tenderDetailsVos.add(tenderDetailsVo);
}
for (TenderDetailsVo record : tenderDetailsVos) {
try {
String typeName = record.getTypeName();//1:公告,2:公示
String typeCode = record.getTypeCode();//1:采购需求预公示2:产权类3:权益类
if(!ObjectUtils.isEmpty(typeCode)){
if("1".equals(typeCode)){//采购需求预公示
record.setNoticeTypeCode(ClassIfy.PRE_ANNOUNCEMENT.getCode());
record.setNoticeTypeName(ClassIfy.PRE_ANNOUNCEMENT.getName());
record.setTransactionTypeCode(ClassIfy.GOVERNMENT_PROCUREMENT.getCode());
record.setTransactionTypeName(ClassIfy.GOVERNMENT_PROCUREMENT.getName());
}else if("2".equals(typeCode)){//呼市产权交易
if("1".equals(typeName)){
record.setNoticeTypeCode(ClassIfy.hhht_cq_gg.getCode());
record.setNoticeTypeName(ClassIfy.hhht_cq_gg.getName());
}else if("2".equals(typeName)){
record.setNoticeTypeCode(ClassIfy.hhht_cq_jg.getCode());
record.setNoticeTypeName(ClassIfy.hhht_cq_jg.getName());
}
record.setTransactionTypeCode(ClassIfy.HHHT_PROPERTY.getCode());
record.setTransactionTypeName(ClassIfy.HHHT_PROPERTY.getName());
}else if("3".equals(typeCode)){//赤峰资源权益交易
if("1".equals(typeName)){
record.setNoticeTypeCode(ClassIfy.cf_cq_gg.getCode());
record.setNoticeTypeName(ClassIfy.cf_cq_gg.getName());
}else if("2".equals(typeName)){
record.setNoticeTypeCode(ClassIfy.cf_cq_jg.getCode());
record.setNoticeTypeName(ClassIfy.cf_cq_jg.getName());
}
record.setTransactionTypeCode(ClassIfy.CF_PROPERTY.getCode());
record.setTransactionTypeName(ClassIfy.CF_PROPERTY.getName());
}
}else {
continue;
}
try {
String regionCode = record.getRegionCode();
AreaPlatform areaPlatformByRegionCode = areaPlatformService.getAreaPlatformByRegionCode(regionCode);
if(!ObjectUtils.isEmpty(areaPlatformByRegionCode)){
record.setPlatformCode(areaPlatformByRegionCode.getPlatformCode());
record.setPlatformName(areaPlatformByRegionCode.getRegionName());
}
}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.AllianceCityWebsiteFlag){
JobLock.AllianceCityWebsiteFlag = false;
logger.info("执行AllianceCityWebsiteFlag", new SimpleDateFormat().format(new Date()));
try {
queryPageListUpdateEs();
} catch (Exception e) {
e.printStackTrace();
}
JobLock.AllianceCityWebsiteFlag = true;
}else{
logger.info("不执行AllianceCityWebsiteFlag", new SimpleDateFormat().format(new Date()));
}
}catch (Exception e){
e.printStackTrace();
JobLock.AllianceCityWebsiteFlag = true;
}
}
}