package com.trs.ggzyexchange.schedul;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.trs.ggzyexchange.entity.*;
import com.trs.ggzyexchange.enums.BulletinType;
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.apache.commons.lang3.StringEscapeUtils;
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.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
*
* 招标公告与资格预审公告 定时任务
*
* bid_finish_time
* @author trs
* @since 2023-02-16
*/
@Component
public class GcNoticeandfileSchedul implements Job {
private Logger logger = LoggerFactory.getLogger(GcNoticeandfileSchedul.class);
@Autowired
private GcNoticeandfileService gcNoticeandfileService;
@Autowired
private TRegionService tRegionService;
@Autowired
private AreaPlatformService areaPlatformService;
@Autowired
private GcTenderbidfileService gcTenderbidfileService;
@Autowired
private GcBidopenrecordService gcBidopenrecordService;
@Autowired
private CIndustriesTypeService cIndustriesTypeService;
@Autowired
private ScheduledTashService scheduledTashService;
@Autowired
private GcAttachmentService gcAttachmentService;
public void queryPageListUpdateEs() throws JsonProcessingException {
/**
* 查询当前在定时任务表当中的最新时间
*/
QueryWrapper scheduledTashQueryWrapper = new QueryWrapper();
scheduledTashQueryWrapper.eq("table_name_value","gc_noticeandfile");
Page pageScheduledTash = new Page(1, 1);
Page page = scheduledTashService.page(pageScheduledTash, scheduledTashQueryWrapper);
List records = page.getRecords();
ScheduledTash scheduledTash = null;
if(!ObjectUtils.isEmpty(page)){
if(!ObjectUtils.isEmpty(records)){
if(records.size() > 0){
scheduledTash = records.get(0);
}
}
}
Long time = null;
if(ObjectUtils.isEmpty(scheduledTash)){
try {
/**
* 如果scheduledTash为空,证明没有当前定时任务,设置当前的定时任务的时间为0 查询表gcNoticeandfile表当中的最新时间
*/
time = gcNoticeandfileService.maxDataTimeStamp();
ScheduledTash scheduledTashTash = new ScheduledTash();
scheduledTashTash.setTime(0L);
time = 0L;
scheduledTashTash.setTableNameValue("gc_noticeandfile");
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 = gcNoticeandfileService.maxDataTimeStamp();
ScheduledTash scheduledTashTash = new ScheduledTash();
scheduledTashTash.setTime(newTime);
scheduledTashTash.setTableNameValue("gc_noticeandfile");
scheduledTashTash.setUpdateTime(new Date());
scheduledTashService.saveOrUpdate(scheduledTashTash,scheduledTashQueryWrapper);
}catch (Exception e){
e.printStackTrace();
}
if(!ObjectUtils.isEmpty(time)){
try {
QueryWrapper noticeandfileQueryWrapper = new QueryWrapper();
noticeandfileQueryWrapper.gt("DATA_TIMESTAMP",time);
int count = gcNoticeandfileService.count(noticeandfileQueryWrapper);
Integer pageSize = 1000;
Integer pageNum = (int)Math.ceil((double)count/pageSize);
for(int i = 1; i <= pageNum;i++){
try {
List tenderDetailsVoListAll = getTenderDetailsVoListAll(i, pageSize,time);
gcNoticeandfileService.parseTenderDetailsVo(tenderDetailsVoListAll);
}catch (Exception e){
e.printStackTrace();
}
}
}catch (Exception e){
e.printStackTrace();
}
}
}
public List getTenderDetailsVoListAll(Integer pageNo,Integer pageSize, Long time){
GcNoticeandfile gcNoticeandfile = new GcNoticeandfile();
Page page = new Page(pageNo, pageSize);
IPage pageList = gcNoticeandfileService.queryGcTenderProjectAllListGeTime(page, gcNoticeandfile,time);
for (TenderDetailsVo record : pageList.getRecords()) {
if(!ObjectUtils.isEmpty(record)){
String escaped = StringEscapeUtils.unescapeHtml3(record.getNoticeContent());
if(!ObjectUtils.isEmpty(escaped)){
record.setNoticeContent(escaped);
}
//获取国标区域名称
QueryWrapper tRegionQueryWrapper = new QueryWrapper();
String TregionCode = record.getRegionCode();
Page pageTRegion = new Page(1, 1);
if(!ObjectUtils.isEmpty(TregionCode)){
tRegionQueryWrapper.eq("code",TregionCode+"000000");
List records = tRegionService.page(pageTRegion, tRegionQueryWrapper).getRecords();
if(records.size() >= 1){
try {
String name = records.get(0).getName();
if(!ObjectUtils.isEmpty(name)){
record.setRegionName(name);
}
}catch (Exception e){
e.printStackTrace();
}
}
}
//获取区域编号
String areaPlatformCode = record.getPlatformCode();
if(!ObjectUtils.isEmpty(areaPlatformCode)){
if("12152900085184725H".equals(areaPlatformCode))areaPlatformCode="152901";
QueryWrapper areaPlatformQueryWrapper = new QueryWrapper();
Page areaPlatformPage = new Page(1, 1);
areaPlatformQueryWrapper.eq("PLATFORM_CODE",areaPlatformCode);
List recordsAreaPlatform = areaPlatformService.page(areaPlatformPage, areaPlatformQueryWrapper).getRecords();
if(recordsAreaPlatform.size() >= 1){
try {
String regionName = recordsAreaPlatform.get(0).getRegionName();
if(!ObjectUtils.isEmpty(regionName)){
record.setPlatformName(regionName);
}
}catch (Exception e){
e.printStackTrace();
}
}
}
//电力交易
if(!ObjectUtils.isEmpty(record.getSourceDataCode()) && "7089bc24".equals(record.getSourceDataCode())) {
record.setTransactionTypeCode(ClassIfy.ELECTRICITY.getCode());
record.setTransactionTypeName(ClassIfy.ELECTRICITY.getName());
}else if(!ObjectUtils.isEmpty(record.getSourceDataCode()) && "d844782a".equals(record.getSourceDataCode())) {
record.setTransactionTypeCode(ClassIfy.WEITUO.getCode());
record.setTransactionTypeName(ClassIfy.WEITUO.getName());
}else {
record.setTransactionTypeCode(ClassIfy.ENGINEERING_CONSTRUCTION.getCode());
record.setTransactionTypeName(ClassIfy.ENGINEERING_CONSTRUCTION.getName());
}
//获取行业信息代码
String industriesTypeCode = record.getIndustriesTypeCode();
if(!ObjectUtils.isEmpty(industriesTypeCode)){
try {
QueryWrapper cIndustriesTypeQueryWrapper = new QueryWrapper();
cIndustriesTypeQueryWrapper.eq("code",industriesTypeCode);
CIndustriesType cIndustriesType = cIndustriesTypeService.getOne(cIndustriesTypeQueryWrapper);
if(!ObjectUtils.isEmpty(cIndustriesType)){
String name = cIndustriesType.getName();
record.setIndustriesTypeName(name);
}
}catch (Exception e){
e.printStackTrace();
}
}
record.setNoticeTypeCode(ClassIfy.TENDER_ANNOUNCEMENT.getCode());
record.setNoticeTypeName(ClassIfy.TENDER_ANNOUNCEMENT.getName());
String bulletinTypeCode = record.getBulletinTypeCode();
if(!ObjectUtils.isEmpty(bulletinTypeCode)){
try {
String bulletinTypeName = BulletinType.getBulletinTypeName(bulletinTypeCode);
if(!ObjectUtils.isEmpty(bulletinTypeName)){
record.setBulletinTypeName(bulletinTypeName);
}
}catch (Exception e){
e.printStackTrace();
}
}
String dataSourceCode = record.getDataSourceCode();
if(!ObjectUtils.isEmpty(dataSourceCode)){
QueryWrapper tRegionQueryWrapperQ = new QueryWrapper();
String subSourceCode = dataSourceCode.substring(1, dataSourceCode.length());
tRegionQueryWrapperQ.eq("code",subSourceCode+"000000");
List tRegionList = tRegionService.page(pageTRegion, tRegionQueryWrapperQ).getRecords();
if(tRegionList.size() >= 1){
String name = tRegionList.get(0).getName();
if(!ObjectUtils.isEmpty(name)){
record.setDataSourceName(name+"公共资源交易中心");
}
}
if(subSourceCode.equals("150401")){
record.setDataSourceName("赤峰市公共资源交易中心");
}
}
String bidSectionCodes = record.getBidSectionCodes();
if(!ObjectUtils.isEmpty(bidSectionCodes)){
int i1 = bidSectionCodes.indexOf(",");
int i2 = bidSectionCodes.indexOf(";");
int i3 = bidSectionCodes.indexOf("
");
int i4 = bidSectionCodes.indexOf("ltbrgt");
String splitBidSectionCode = null;
String[] split = null;
boolean flag = false;
if(i1 > 0){
splitBidSectionCode = bidSectionCodes.split(",")[0];
split = bidSectionCodes.split(",");
flag = true;
}
if(i2 > 0){
splitBidSectionCode = bidSectionCodes.split(";")[0];
split = bidSectionCodes.split(";");
flag = true;
}
if(i3 > 0){
splitBidSectionCode = bidSectionCodes.split("
")[0];
split = bidSectionCodes.split("
");
flag = true;
}
if(i4 > 0){
splitBidSectionCode = bidSectionCodes.split("ltbrgt")[0];
split = bidSectionCodes.split("ltbrgt");
flag = true;
}
if(!flag){
splitBidSectionCode = bidSectionCodes;
split = bidSectionCodes.split(",");
}
List attachmentList = new ArrayList();
if(record.getDataTimestamp()>20250324000000L){
//通过标包编号查询对应的附件信息
QueryWrapper gcAttachmentQueryWrapper = new QueryWrapper();
/*if("2".equals(record.getNoticeNature())){
gcAttachmentQueryWrapper.eq("ATTACHMENT_SET_CODE","CHANGE_NOTICE");//add
}else{
gcAttachmentQueryWrapper.eq("ATTACHMENT_SET_CODE","TENDER_NOTICE");//add
}*/
// gcAttachmentQueryWrapper.eq("isshow", "0");//add
gcAttachmentQueryWrapper.eq("ASSOCIATION_CODE", record.getSourceDataKey());
List list = gcAttachmentService.list(gcAttachmentQueryWrapper);
if (!CollectionUtils.isEmpty(list)) {
attachmentList.addAll(list);
}
}else{
if(!ObjectUtils.isEmpty(split)){
if(split.length >=1){
for (String bidSectionCode : split) {
try {
String bidSectionCodeClean = bidSectionCode.replaceAll(">","").replaceAll("<","");
String bidSectionCodeClean2 = bidSectionCodeClean.replaceAll("gt","").replaceAll("lt","");
//通过标包编号查询对应的附件信息
QueryWrapper gcAttachmentQueryWrapper = new QueryWrapper();
if("2".equals(record.getNoticeNature())){
gcAttachmentQueryWrapper.eq("ATTACHMENT_SET_CODE","CHANGE_NOTICE");//add
}else{
gcAttachmentQueryWrapper.eq("ATTACHMENT_SET_CODE","TENDER_NOTICE");//add
}
//gcAttachmentQueryWrapper.eq("isshow", "0");//add
//gcAttachmentQueryWrapper.eq("BID_SECTION_CODE",bidSectionCode);
gcAttachmentQueryWrapper.like("BID_SECTION_CODE",bidSectionCodeClean2);
List list = gcAttachmentService.list(gcAttachmentQueryWrapper);
if(!ObjectUtils.isEmpty(list)){
attachmentList.addAll(list);
}
}catch (Exception e){
e.printStackTrace();
}
}
}
}
}
String noticeContent = record.getNoticeContent();
String file = "";
if(!CollectionUtils.isEmpty(attachmentList)){
if(attachmentList.size() > 0){
file = "
附件:
";
}
}
for (GcAttachment gcAttachment : attachmentList) {
try{
String attachmentName = gcAttachment.getAttachmentName();
String url = gcAttachment.getUrl();
file += ""+ attachmentName +"
";
}catch (Exception e){
e.printStackTrace();
}
}
//招标文件拼接地址
if(!ObjectUtils.isEmpty(noticeContent) && noticeContent != ""){
file = noticeContent + file;
}
record.setNoticeContent(file);
//获取标包编号
if(!ObjectUtils.isEmpty(splitBidSectionCode)){
QueryWrapper gcTenderbidfileQueryWrapper = new QueryWrapper();
Page gcTenderbidfilePage = new Page(1, 1);
gcTenderbidfileQueryWrapper.eq("BID_SECTION_CODE",splitBidSectionCode);
List gcTenderbidfileRecords = gcTenderbidfileService.page(gcTenderbidfilePage, gcTenderbidfileQueryWrapper).getRecords();
if(gcTenderbidfileRecords.size() >= 1){
try {
Integer validPeriod = gcTenderbidfileRecords.get(0).getValidPeriod();
if(!ObjectUtils.isEmpty(validPeriod)){
record.setValidPeriod(validPeriod+"");
}
}catch (Exception e){
e.printStackTrace();
}
try {
Long clarifyTime = gcTenderbidfileRecords.get(0).getClarifyTime();
if(!ObjectUtils.isEmpty(clarifyTime)){
record.setClarifyTime(clarifyTime+"");
}
}catch (Exception e){
e.printStackTrace();
}
try {
Long submitTime = gcTenderbidfileRecords.get(0).getSubmitTime();
if(!ObjectUtils.isEmpty(submitTime)){
record.setSubmitTime(submitTime+"");
}
}catch (Exception e){
e.printStackTrace();
}
}
QueryWrapper gcBidopenrecordQueryWrapper = new QueryWrapper();
Page gcBidopenrecordPage = new Page(1, 1);
gcBidopenrecordQueryWrapper.eq("BID_SECTION_CODES",splitBidSectionCode);
List gcBidopenrecordRecords = gcBidopenrecordService.page(gcBidopenrecordPage, gcBidopenrecordQueryWrapper).getRecords();
if(gcBidopenrecordRecords.size() >= 1){
try {
String bidOpeningAddress = gcBidopenrecordRecords.get(0).getBidOpeningAddress();
if(!ObjectUtils.isEmpty(bidOpeningAddress)){
record.setBidOpeningAddress(bidOpeningAddress);
}
}catch (Exception e){
e.printStackTrace();
}
try {
Long bidOpeningTime = gcBidopenrecordRecords.get(0).getBidOpeningTime();
if(!ObjectUtils.isEmpty(bidOpeningTime)){
record.setBidOpeningTime(bidOpeningTime+"");
}
}catch (Exception e){
e.printStackTrace();
}
try {
Long bidFinishTime = gcBidopenrecordRecords.get(0).getBidFinishTime();
if(!ObjectUtils.isEmpty(bidFinishTime)){
record.setBidFinishTime(bidFinishTime+"");
}
}catch (Exception e){
e.printStackTrace();
}
}
String noticeNature = record.getNoticeNature();
if(!ObjectUtils.isEmpty(noticeNature)){
try {
String noticeNatureTypeName = BulletinType.getNoticeNatureTypeName(noticeNature);
if(!ObjectUtils.isEmpty(noticeNatureTypeName)){
record.setNoticeNatureName(noticeNatureTypeName);
}
}catch (Exception e){
e.printStackTrace();
}
}
}
}
try {
bidSectionCodes = bidSectionCodes.replaceAll(",",";");
bidSectionCodes = bidSectionCodes.replaceAll("