Explorar el Código

对接招标计划数据

mycopy123@163.com hace 1 año
padre
commit
9c2ff73d11

+ 13 - 1
src/main/java/com/trs/ggzyexchange/config/QuartzConfig.java

@@ -436,6 +436,11 @@ public class QuartzConfig {
     public JobDetail jobZcNoticeSchedul() {
         return JobBuilder.newJob(ZcNoticeSchedul.class).storeDurably().build();
     }
+
+    @Bean
+    public JobDetail jobGcJihuaSchedul() {
+        return JobBuilder.newJob(GcJihuaSchedul.class).storeDurably().build();
+    }
     //触发器
     @Bean
     public Trigger triggerNmNoticeSchedul() {
@@ -454,7 +459,14 @@ public class QuartzConfig {
                 .forJob(jobZcNoticeSchedul())
                 .build();
     }
-
+    @Bean
+    public Trigger triggerGcJihuaSchedul() {
+        return TriggerBuilder.newTrigger()
+                .withIdentity("triggerGcJihuaSchedul", "groupTriggerGcJihuaSchedul")
+                .withSchedule(CronScheduleBuilder.cronSchedule(this.strSron))
+                .forJob(jobGcJihuaSchedul())
+                .build();
+    }
     /**
      * 创建Job实例
      * 定时任务 电力交易  中标结果公示 NM_RESULT_NOTICE

+ 41 - 0
src/main/java/com/trs/ggzyexchange/entity/GcJihuaInfo.java

@@ -0,0 +1,41 @@
+package com.trs.ggzyexchange.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author trs
+ * @since 2024-02-27
+ */
+@Data
+public class GcJihuaInfo extends BaseEntity {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId("projectjhguid")
+    private String projectjhguid;//项目计划唯一标识
+
+    @TableField("projectjhname")
+    private String projectjhname;//项目名称
+
+    @TableField("gonggaocontent")
+    private String gonggaocontent;//公告内容
+
+    @TableField("pubtime")
+    private Long pubtime;//发布时间
+
+    @TableField("xiaquname")
+    private String xiaquname;//项目交易场所
+
+    @TableField("xiaqucode")
+    private String xiaqucode;//行政区域代码
+
+    @TableField("DATA_TIMESTAMP")
+    private Long dataTimestamp;
+
+}

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

@@ -31,4 +31,6 @@ public class JobLock {
 
     public static  boolean ZfcgGongaoFlag = true;
 
+    public static  boolean GcJihuaInfoFlag = true;
+
 }

+ 24 - 0
src/main/java/com/trs/ggzyexchange/mapper/GcJihuaInfoMapper.java

@@ -0,0 +1,24 @@
+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.TenderDetailsVo;
+import com.trs.ggzyexchange.entity.ZfcgGongao;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ * </p>
+ *
+ * @author trs
+ * @since 2023-03-04
+ */
+@Mapper
+public interface GcJihuaInfoMapper extends BaseMapper<GcJihuaInfo> {
+    Long maxDataTimeStamp();
+
+    IPage<TenderDetailsVo> queryGcJihuaListByTime(Page<ZfcgGongao> page, @Param("time")  Long time);
+}

+ 219 - 0
src/main/java/com/trs/ggzyexchange/schedul/GcJihuaSchedul.java

@@ -0,0 +1,219 @@
+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.Arrays;
+import java.util.Date;
+import java.util.List;
+
+@Component
+public class GcJihuaSchedul implements Job {
+
+    @Autowired
+    private ScheduledTashService scheduledTashService;
+
+    @Autowired
+    private TRegionService tRegionService;
+
+    @Autowired
+    private AreaPlatformService areaPlatformService;
+
+    @Autowired
+    private GcJihuaInfoService gcJihuaInfoService;
+
+    @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_jihua_info");
+        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 = gcJihuaInfoService.maxDataTimeStamp();
+                ScheduledTash scheduledTashTash = new ScheduledTash();
+                scheduledTashTash.setTime(0L);
+                time = 0L;
+                scheduledTashTash.setTableNameValue("gc_jihua_info");
+                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 = gcJihuaInfoService.maxDataTimeStamp();
+            ScheduledTash scheduledTashTash = new ScheduledTash();
+            scheduledTashTash.setTime(newTime);
+            scheduledTashTash.setTableNameValue("gc_jihua_info");
+            scheduledTashTash.setUpdateTime(new Date());
+            scheduledTashService.saveOrUpdate(scheduledTashTash,scheduledTashQueryWrapper);
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+
+        if(!ObjectUtils.isEmpty(time)){
+            try {
+                QueryWrapper<GcJihuaInfo> gcJihuaInfoQueryWrapper = new QueryWrapper<GcJihuaInfo>();
+                gcJihuaInfoQueryWrapper.gt("DATA_TIMESTAMP",time);
+                int count = gcJihuaInfoService.count(gcJihuaInfoQueryWrapper);
+                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<ZfcgGongao> page = new Page<ZfcgGongao>(pageNo, pageSize);
+        IPage<TenderDetailsVo> tenderDetailsVoIPage = gcJihuaInfoService.queryGcJihuaListByTime(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.TENDER_PLAN.getCode());
+            record.setNoticeTypeName(ClassIfy.TENDER_PLAN.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.GcJihuaInfoFlag){
+                JobLock.GcJihuaInfoFlag = false;
+                logger.info("GcJihuaInfo", new SimpleDateFormat().format(new Date()));
+                try {
+                    queryPageListUpdateEs();
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+                JobLock.GcJihuaInfoFlag = true;
+            }else{
+                logger.info("GcJihuaInfo", new SimpleDateFormat().format(new Date()));
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+            JobLock.GcJihuaInfoFlag = true;
+        }
+    }
+}
+

+ 1 - 1
src/main/java/com/trs/ggzyexchange/schedul/ZcNoticeSchedul.java

@@ -121,7 +121,7 @@ public class ZcNoticeSchedul implements Job {
             record.setTransactionTypeCode(ClassIfy.GOVERNMENT_PROCUREMENT.getCode());
             record.setTransactionTypeName(ClassIfy.GOVERNMENT_PROCUREMENT.getName());
 
-            record.setPlatformName("内蒙古公共资源交易平台");
+            /*record.setPlatformName("内蒙古公共资源交易平台");*/
             //获取国标区域名称
             QueryWrapper<TRegion> tRegionQueryWrapper = new QueryWrapper<TRegion>();
             String TregionCode = record.getRegionCode();

+ 23 - 0
src/main/java/com/trs/ggzyexchange/service/GcJihuaInfoService.java

@@ -0,0 +1,23 @@
+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.GcJihuaInfo;
+import com.trs.ggzyexchange.entity.TenderDetailsVo;
+import com.trs.ggzyexchange.entity.ZfcgGongao;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author trs
+ * @since 2024-02-27
+ */
+public interface GcJihuaInfoService extends IService<GcJihuaInfo> {
+
+    Long maxDataTimeStamp();
+
+    IPage<TenderDetailsVo> queryGcJihuaListByTime(Page<ZfcgGongao> page, Long time);
+}

+ 48 - 0
src/main/java/com/trs/ggzyexchange/service/impl/GcJihuaInfoServiceImpl.java

@@ -0,0 +1,48 @@
+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.GcJihuaInfo;
+import com.trs.ggzyexchange.entity.TenderDetailsVo;
+import com.trs.ggzyexchange.entity.ZfcgGongao;
+import com.trs.ggzyexchange.mapper.GcJihuaInfoMapper;
+import com.trs.ggzyexchange.mapper.ZfcgGongaoMapper;
+import com.trs.ggzyexchange.service.GcJihuaInfoService;
+import org.apache.commons.lang3.ObjectUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 挂牌披露信息 服务实现类
+ * </p>
+ *
+ * @author trs
+ * @since 2023-03-04
+ */
+@Service
+public class GcJihuaInfoServiceImpl extends ServiceImpl<GcJihuaInfoMapper, GcJihuaInfo> implements GcJihuaInfoService {
+
+    @Autowired
+    private GcJihuaInfoMapper gcJihuaInfoMapper;
+
+    public IPage<TenderDetailsVo> queryGcJihuaListByTime(Page<ZfcgGongao> page, Long time) {
+        return gcJihuaInfoMapper.queryGcJihuaListByTime(page,time);
+    }
+
+    public Long maxDataTimeStamp() {
+        Long aLong = gcJihuaInfoMapper.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;
+    }
+}

+ 22 - 0
src/main/resources/mapper/GcJihuaInfoMapper.xml

@@ -0,0 +1,22 @@
+<?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.GcJihuaInfoMapper">
+
+    <select id="maxDataTimeStamp" resultType="java.lang.Long">
+        select max(DATA_TIMESTAMP) from "ggzyexchange"."gc_jihua_info";
+    </select>
+    <select id="queryGcJihuaListByTime" resultType="com.trs.ggzyexchange.entity.TenderDetailsVo">
+
+        select
+            nn.projectjhguid sourceDataKey,
+            nn.projectjhname projectName,
+            nn.gonggaocontent noticeContent,
+            nn.pubtime noticeSendTime,
+            nn.projectjhname noticeName,
+            nn.xiaqucode regionCode
+            from
+            gc_jihua_info nn
+        where
+             nn.DATA_TIMESTAMP &gt; #{time}
+    </select>
+</mapper>