| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453 |
- 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;
- /**
- * <p>
- * 招标公告与资格预审公告 定时任务
- * </p>
- * 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<ScheduledTash> scheduledTashQueryWrapper = new QueryWrapper<ScheduledTash>();
- scheduledTashQueryWrapper.eq("table_name_value","gc_noticeandfile");
- Page<ScheduledTash> pageScheduledTash = new Page<ScheduledTash>(1, 1);
- Page<ScheduledTash> page = scheduledTashService.page(pageScheduledTash, scheduledTashQueryWrapper);
- List<ScheduledTash> 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<GcNoticeandfile> noticeandfileQueryWrapper = new QueryWrapper<GcNoticeandfile>();
- 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<TenderDetailsVo> tenderDetailsVoListAll = getTenderDetailsVoListAll(i, pageSize,time);
- gcNoticeandfileService.parseTenderDetailsVo(tenderDetailsVoListAll);
- }catch (Exception e){
- e.printStackTrace();
- }
- }
- }catch (Exception e){
- e.printStackTrace();
- }
- }
- }
- public List<TenderDetailsVo> getTenderDetailsVoListAll(Integer pageNo,Integer pageSize, Long time){
- GcNoticeandfile gcNoticeandfile = new GcNoticeandfile();
- Page<GcNoticeandfile> page = new Page<GcNoticeandfile>(pageNo, pageSize);
- IPage<TenderDetailsVo> 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<TRegion> tRegionQueryWrapper = new QueryWrapper<TRegion>();
- String TregionCode = record.getRegionCode();
- Page<TRegion> pageTRegion = new Page<TRegion>(1, 1);
- if(!ObjectUtils.isEmpty(TregionCode)){
- tRegionQueryWrapper.eq("code",TregionCode+"000000");
- List<TRegion> 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<AreaPlatform> areaPlatformQueryWrapper = new QueryWrapper<AreaPlatform>();
- Page<AreaPlatform> areaPlatformPage = new Page<AreaPlatform>(1, 1);
- areaPlatformQueryWrapper.eq("PLATFORM_CODE",areaPlatformCode);
- List<AreaPlatform> 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<CIndustriesType> cIndustriesTypeQueryWrapper = new QueryWrapper<CIndustriesType>();
- 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<TRegion> tRegionQueryWrapperQ = new QueryWrapper<TRegion>();
- String subSourceCode = dataSourceCode.substring(1, dataSourceCode.length());
- tRegionQueryWrapperQ.eq("code",subSourceCode+"000000");
- List<TRegion> 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("<br>");
- 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("<br>")[0];
- split = bidSectionCodes.split("<br>");
- flag = true;
- }
- if(i4 > 0){
- splitBidSectionCode = bidSectionCodes.split("ltbrgt")[0];
- split = bidSectionCodes.split("ltbrgt");
- flag = true;
- }
- if(!flag){
- splitBidSectionCode = bidSectionCodes;
- split = bidSectionCodes.split(",");
- }
- List<GcAttachment> attachmentList = new ArrayList<GcAttachment>();
- if(record.getDataTimestamp()>20250324000000L){
- //通过标包编号查询对应的附件信息
- QueryWrapper<GcAttachment> gcAttachmentQueryWrapper = new QueryWrapper<GcAttachment>();
- /*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<GcAttachment> 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<GcAttachment> gcAttachmentQueryWrapper = new QueryWrapper<GcAttachment>();
- 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<GcAttachment> 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 = "<br>附件:<br>";
- }
- }
- for (GcAttachment gcAttachment : attachmentList) {
- try{
- String attachmentName = gcAttachment.getAttachmentName();
- String url = gcAttachment.getUrl();
- file += "<a target='_blank' style='color: blue' href='"+ url +"'>"+ attachmentName +"</a><br/>";
- }catch (Exception e){
- e.printStackTrace();
- }
- }
- //招标文件拼接地址
- if(!ObjectUtils.isEmpty(noticeContent) && noticeContent != ""){
- file = noticeContent + file;
- }
- record.setNoticeContent(file);
- //获取标包编号
- if(!ObjectUtils.isEmpty(splitBidSectionCode)){
- QueryWrapper<GcTenderbidfile> gcTenderbidfileQueryWrapper = new QueryWrapper<GcTenderbidfile>();
- Page<GcTenderbidfile> gcTenderbidfilePage = new Page<GcTenderbidfile>(1, 1);
- gcTenderbidfileQueryWrapper.eq("BID_SECTION_CODE",splitBidSectionCode);
- List<GcTenderbidfile> 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<GcBidopenrecord> gcBidopenrecordQueryWrapper = new QueryWrapper<GcBidopenrecord>();
- Page<GcBidopenrecord> gcBidopenrecordPage = new Page<GcBidopenrecord>(1, 1);
- gcBidopenrecordQueryWrapper.eq("BID_SECTION_CODES",splitBidSectionCode);
- List<GcBidopenrecord> 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("<br",";");
- bidSectionCodes = bidSectionCodes.replaceAll("ltbrgt",";");
- }catch (Exception e){
- e.printStackTrace();
- }
- record.setBidSectionCodes(bidSectionCodes);
- TenderDetailsVoUtils.isNull(record);
- }
- }
- return pageList.getRecords();
- }
- @Override
- public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
- try {
- if(JobLock.GcNoticeandfileFlag){
- JobLock.GcNoticeandfileFlag = false;
- logger.info("执行GcNoticeandfile", new SimpleDateFormat().format(new Date()));
- try {
- queryPageListUpdateEs();
- } catch (Exception e) {
- e.printStackTrace();
- }
- JobLock.GcNoticeandfileFlag = true;
- }else{
- logger.info("不执行GcNoticeandfile", new SimpleDateFormat().format(new Date()));
- }
- }catch (Exception e){
- e.printStackTrace();
- JobLock.GcNoticeandfileFlag = true;
- }
- }
- }
|