mycopy123@163.com 9 mesiacov pred
rodič
commit
0740a7bf9b

+ 14 - 0
src/main/java/com/trs/ggzyexchange/config/QuartzConfig.java

@@ -586,4 +586,18 @@ public class QuartzConfig {
                 .build();
     }
 
+    @Bean
+    public JobDetail jobGcReconsiderSchedul() {
+        return JobBuilder.newJob(GcReconsiderSchedul.class).storeDurably().build();
+    }
+    //触发器
+    @Bean
+    public Trigger triggerGcReconsiderSchedul() {
+        return TriggerBuilder.newTrigger()
+                .withIdentity("triggerGcReconsiderSchedul", "groupTriggerGcReconsiderSchedul")
+                .withSchedule(CronScheduleBuilder.cronSchedule(this.strSron))
+                .forJob(jobGcReconsiderSchedul())
+                .build();
+    }
+
 }

+ 37 - 0
src/main/java/com/trs/ggzyexchange/entity/GcReconsider.java

@@ -0,0 +1,37 @@
+package com.trs.ggzyexchange.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+@TableName("gc_reconsider")
+public class GcReconsider implements Serializable {
+    private static final long serialVersionUID = -20846275058660122L;
+
+    @TableId("SOURCE_DATA_KEY")
+    private String sourceDataKey;
+    @TableField("SOURCE_DATA_CODE")
+    private String sourceDataCode;
+    private String platformCode;
+    private Long dataTimestamp;
+    private String bidSectionCode;
+    private String bidSectionName;
+    private String noticeContent;
+    private String noticeSendTime;
+    private String reconsiderReason;
+    private String reconsiderTitle;
+    private String regionCode;
+    private String tendererName;
+    private String tenderAgencyName;
+    private String tenderProjectName;
+    private String noticeType;
+
+    private Long createDate;
+
+}
+

+ 1 - 0
src/main/java/com/trs/ggzyexchange/enums/ClassIfy.java

@@ -31,6 +31,7 @@ public enum ClassIfy {
     PERFORMANCE_PUBLICITY("performance_publicity", "履约公示"),
     TRANSACTION_EXCEPTION_ANNOUNCEMENT("transaction_exception_announcement", "交易异常公告"),
     TENDER_PLAN("tender_plan", "招标计划"),
+    RECONSIDER("reconsider", "复评结果公示"),
     TENDER_TENDERBIDFILEPUBLICITY("tender_tenderbidfilepublicity", "招标文件预公示"),
 
 

+ 2 - 0
src/main/java/com/trs/ggzyexchange/enums/JobLock.java

@@ -40,4 +40,6 @@ public class JobLock {
     public static  boolean CqcgBidcandidatePostFlag = true;
     public static  boolean CqcgBidpublicityFlag = true;
 
+    public static  boolean GcReconsiderFlag = true;
+
 }

+ 18 - 0
src/main/java/com/trs/ggzyexchange/mapper/GcReconsiderMapper.java

@@ -0,0 +1,18 @@
+package com.trs.ggzyexchange.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.trs.ggzyexchange.entity.GcJihuaInfo;
+import com.trs.ggzyexchange.entity.GcReconsider;
+import com.trs.ggzyexchange.entity.TenderDetailsVo;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+
+@Mapper
+public interface GcReconsiderMapper extends BaseMapper<GcReconsider> {
+    Long maxDataTimeStamp();
+
+    IPage<TenderDetailsVo> queryGcReconsiderListByTime(Page<GcReconsider> page, @Param("time")  Long time);
+}

+ 218 - 0
src/main/java/com/trs/ggzyexchange/schedul/GcReconsiderSchedul.java

@@ -0,0 +1,218 @@
+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.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;
+
+@Component
+public class GcReconsiderSchedul implements Job {
+
+    @Autowired
+    private ScheduledTashService scheduledTashService;
+
+    @Autowired
+    private TRegionService tRegionService;
+
+    @Autowired
+    private AreaPlatformService areaPlatformService;
+
+    @Autowired
+    private GcReconsiderService gcReconsiderService;
+
+    @Autowired
+    private GcNoticeandfileService gcNoticeandfileService;
+
+    private Logger logger = LoggerFactory.getLogger(ZfcgGongao.class);
+
+    public void queryPageListUpdateEs() throws JsonProcessingException {
+        /**
+         * 查询当前在定时任务表当中的最新时间
+         */
+        QueryWrapper<ScheduledTash> scheduledTashQueryWrapper = new QueryWrapper<ScheduledTash>();
+        scheduledTashQueryWrapper.eq("table_name_value","gc_reconsider");
+        Page<ScheduledTash> pageScheduledTash = new Page<ScheduledTash>(1, 1);
+        Page<ScheduledTash> page = scheduledTashService.page(pageScheduledTash, scheduledTashQueryWrapper);
+        List<ScheduledTash> 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 = gcReconsiderService.maxDataTimeStamp();
+                ScheduledTash scheduledTashTash = new ScheduledTash();
+                scheduledTashTash.setTime(0L);
+                time = 0L;
+                scheduledTashTash.setTableNameValue("gc_reconsider");
+                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 = gcReconsiderService.maxDataTimeStamp();
+            ScheduledTash scheduledTashTash = new ScheduledTash();
+            scheduledTashTash.setTime(newTime);
+            scheduledTashTash.setTableNameValue("gc_reconsider");
+            scheduledTashTash.setUpdateTime(new Date());
+            scheduledTashService.saveOrUpdate(scheduledTashTash,scheduledTashQueryWrapper);
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+
+        if(!ObjectUtils.isEmpty(time)){
+            try {
+                QueryWrapper<GcReconsider> gcReconsiderQueryWrapper = new QueryWrapper<GcReconsider>();
+                gcReconsiderQueryWrapper.gt("DATA_TIMESTAMP",time);
+                int count = gcReconsiderService.count(gcReconsiderQueryWrapper);
+                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);
+                        Boolean aBoolean = gcNoticeandfileService.parseTenderDetailsVo(tenderDetailsVoListAll);
+                    }catch (Exception e){
+                        e.printStackTrace();
+                    }
+                }
+            }catch (Exception e){
+                e.printStackTrace();
+            }
+        }
+    }
+
+    public List<TenderDetailsVo> getTenderDetailsVoListAll(Integer pageNo,Integer pageSize,Long time){
+        Page<GcReconsider> page = new Page<GcReconsider>(pageNo, pageSize);
+        IPage<TenderDetailsVo> tenderDetailsVoIPage = gcReconsiderService.queryGcReconsiderListByTime(page,time);
+        List<TenderDetailsVo> tenderDetailsVos = new ArrayList<TenderDetailsVo>();
+        for (TenderDetailsVo record : tenderDetailsVoIPage.getRecords()) {
+            record.setTransactionTypeCode(ClassIfy.ENGINEERING_CONSTRUCTION.getCode());
+            record.setTransactionTypeName(ClassIfy.ENGINEERING_CONSTRUCTION.getName());
+
+            record.setNoticeTypeCode(ClassIfy.RECONSIDER.getCode());
+            record.setNoticeTypeName(ClassIfy.RECONSIDER.getName());
+
+            /*record.setPlatformName("内蒙古公共资源交易平台");*/
+            //获取国标区域名称
+            QueryWrapper<TRegion> tRegionQueryWrapper = new QueryWrapper<TRegion>();
+            String TregionCode = record.getRegionCode();
+            if(TregionCode.equals("150001")){
+                record.setRegionName("内蒙古自治区本级");
+                record.setRegionCode("150000");
+                TregionCode = "150000";
+            }
+            if(TregionCode.equals("150101")){
+                record.setRegionName("呼和浩特市");record.setRegionCode("150100");TregionCode = "150100";
+            }
+            if(TregionCode.equals("150201")){
+                record.setRegionName("包头市");record.setRegionCode("150200");TregionCode = "150200";
+            }
+            if(TregionCode.equals("150301")){
+                record.setRegionName("乌海市");record.setRegionCode("150300");TregionCode = "150300";
+            }
+            if(TregionCode.equals("150401")){
+                record.setRegionName("赤峰市");record.setRegionCode("150400");TregionCode = "150400";
+            }
+            if(TregionCode.equals("150501")){
+                record.setRegionName("通辽市");record.setRegionCode("150500");TregionCode = "150500";
+            }
+            if(TregionCode.equals("150601")){
+                record.setRegionName("鄂尔多斯市");record.setRegionCode("150600");TregionCode = "150600";
+            }
+            if(TregionCode.equals("150701")){
+                record.setRegionName("呼伦贝尔市");record.setRegionCode("150700");TregionCode = "150700";
+            }
+            if(TregionCode.equals("150801")){
+                record.setRegionName("巴彦淖尔市");record.setRegionCode("150800");TregionCode = "150800";
+            }
+            if(TregionCode.equals("150901")){
+                record.setRegionName("乌兰察布市");record.setRegionCode("150900");TregionCode = "150900";
+            }
+            if(TregionCode.equals("152901")){
+                record.setRegionName("阿拉善盟");record.setRegionCode("152900");TregionCode = "152900";
+            }
+            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();
+                    }
+                }
+            }
+            try {
+                String regionCode = TregionCode;
+                AreaPlatform areaPlatformByRegionCode = areaPlatformService.getAreaPlatformByRegionCode(regionCode);
+                if(!ObjectUtils.isEmpty(areaPlatformByRegionCode)){
+                    record.setPlatformCode(areaPlatformByRegionCode.getPlatformCode());
+                    record.setPlatformName(areaPlatformByRegionCode.getRegionName());
+                }
+            }catch (Exception e){
+                e.printStackTrace();
+            }
+
+            TenderDetailsVo aNull = TenderDetailsVoUtils.isNull(record);
+            tenderDetailsVos.add(aNull);
+        }
+        return tenderDetailsVos;
+    }
+
+    @Override
+    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
+        try {
+            if(JobLock.GcReconsiderFlag){
+                JobLock.GcReconsiderFlag = false;
+                logger.info("GcReconsider", new SimpleDateFormat().format(new Date()));
+                try {
+                    queryPageListUpdateEs();
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+                JobLock.GcReconsiderFlag = true;
+            }else{
+                logger.info("GcReconsider", new SimpleDateFormat().format(new Date()));
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+            JobLock.GcReconsiderFlag = true;
+        }
+    }
+}
+

+ 19 - 0
src/main/java/com/trs/ggzyexchange/service/GcReconsiderService.java

@@ -0,0 +1,19 @@
+package com.trs.ggzyexchange.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.trs.ggzyexchange.entity.GcReconsider;
+import com.trs.ggzyexchange.entity.TenderDetailsVo;
+
+/**
+
+ * @author trs
+ * @since 2023-03-04
+ */
+public interface GcReconsiderService extends IService<GcReconsider> {
+
+    IPage<TenderDetailsVo> queryGcReconsiderListByTime(Page<GcReconsider> page, Long time);
+
+    Long maxDataTimeStamp();
+}

+ 43 - 0
src/main/java/com/trs/ggzyexchange/service/impl/GcReconsiderServiceImpl.java

@@ -0,0 +1,43 @@
+package com.trs.ggzyexchange.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.trs.ggzyexchange.entity.GcReconsider;
+import com.trs.ggzyexchange.entity.TenderDetailsVo;
+import com.trs.ggzyexchange.mapper.GcReconsiderMapper;
+import com.trs.ggzyexchange.service.GcReconsiderService;
+
+import org.apache.commons.lang3.ObjectUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+
+ * @author trs
+ * @since 2023-03-04
+ */
+@Service
+public class GcReconsiderServiceImpl extends ServiceImpl<GcReconsiderMapper, GcReconsider> implements GcReconsiderService {
+    @Autowired
+    private GcReconsiderMapper gcReconsiderMapper;
+
+    public IPage<TenderDetailsVo> queryGcReconsiderListByTime(Page<GcReconsider> page, Long time) {
+        return gcReconsiderMapper.queryGcReconsiderListByTime(page,time);
+    }
+
+    public Long maxDataTimeStamp() {
+        Long aLong = gcReconsiderMapper.maxDataTimeStamp();
+        try{
+            if(!ObjectUtils.isEmpty(aLong)){
+                if(aLong != 0){
+                    String sLong = ((aLong+"").substring(0,8)) + "000000";
+                    aLong = Long.parseLong(sLong);
+                }
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        return aLong;
+    }
+}

+ 23 - 0
src/main/resources/mapper/GcReconsiderMapper.xml

@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.trs.ggzyexchange.mapper.GcReconsiderMapper">
+
+    <select id="maxDataTimeStamp" resultType="java.lang.Long">
+        select max(DATA_TIMESTAMP) from "ggzyexchange"."gc_reconsider";
+    </select>
+    <select id="queryGcReconsiderListByTime" resultType="com.trs.ggzyexchange.entity.TenderDetailsVo">
+
+        select
+            nn.SOURCE_DATA_KEY sourceDataKey,
+            nn.TENDER_PROJECT_NAME projectName,
+            nn.NOTICE_CONTENT noticeContent,
+            nn.NOTICE_SEND_TIM noticeSendTime,
+            nn.RECONSIDER_TITLE noticeName,
+            nn.REGION_CODE regionCode,
+            nn.CREATE_DATE createDate
+            from
+            gc_reconsider nn
+        where
+             nn.DATA_TIMESTAMP &gt; #{time}
+    </select>
+</mapper>