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("