瀏覽代碼

北京中央研究院(山东六六巨)

tl 1 年之前
父節點
當前提交
a377194d01

+ 148 - 0
in-cloud/src/main/java/com/jiayue/insu/incloud/compermisson/BJZYYJYSDComPermisson.java

@@ -0,0 +1,148 @@
+package com.jiayue.insu.incloud.compermisson;
+
+import cn.hutool.core.date.LocalDateTimeUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.http.HttpRequest;
+import cn.hutool.json.JSON;
+import cn.hutool.json.JSONUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.jiayue.insu.incloud.constants.CommonStant;
+import com.jiayue.insu.incloud.constants.enums.QNHLEnum;
+import com.jiayue.insu.incloud.constants.vo.BJZYYJYSDTokenVo;
+import com.jiayue.insu.incloud.entity.IntegrationCompany;
+import com.jiayue.insu.incloud.entity.Record;
+import com.jiayue.insu.incloud.entity.Station;
+import com.jiayue.insu.incloud.service.IntegrationCompanyService;
+import com.jiayue.insu.incloud.service.RecordService;
+import com.jiayue.insu.incloud.service.StationService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.time.Instant;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+
+/**
+ * 北京中央研究院(山东)token获取
+ *
+ * @Author: tl
+ * @Date: 2023/12/14 9:56
+ */
+@Component
+@Slf4j
+public class BJZYYJYSDComPermisson implements GeneratePermisson {
+
+    @Autowired
+    private IntegrationCompanyService integrationCompanyService;
+
+    @Autowired
+    private StationService stationService;
+
+    @Autowired
+    private RecordService recordService;
+
+    private IntegrationCompany integrationCompany;
+
+    @Override
+    public Boolean generateKey(Station station) {
+        Record record = new Record();
+        record.setStationCode(station.getStationCode());
+        record.setType(CommonStant.RECORD_TYPE_COM_PERMISSON);
+        LocalDateTime localDateTime = LocalDateTimeUtil.beginOfDay(LocalDateTime.now());
+        record.setTime(localDateTime);
+        record.setCreateTime(LocalDateTime.now());
+        boolean result = false;
+        String username = station.getUsername();
+        String password = station.getPassword();
+//        String passwordMD5 = DigestUtils.md5DigestAsHex(password.getBytes()).toUpperCase();
+//        String auth = username+":"+passwordMD5;
+        String auth = "Basic dGVzdDp0ZXN0";
+        IntegrationCompany integrationCompany = getIntegrationCompany(station.getInCode());
+        if (integrationCompany != null) {
+
+            record.setInCode(integrationCompany.getCode());
+
+            String tokenUrl = integrationCompany.getComUrl();
+            String response;
+            String token;
+
+            try {
+
+                /**
+                 * 请求头参数:
+                 * Authorization: Basic dGVzdDp0ZXN0
+                 * TENANT-ID: 4
+                 * 说明:
+                 * Authorization 值固定为 Basic dGVzdDp0ZXN0
+                 * TENANT-ID 为登录用户所属租户 ID,目前固定为 4
+                 *
+                 *
+                 *
+                 * 请求表单参数:
+                 * username:
+                 * password:
+                 * scope: server
+                 * 参数说明:
+                 * scope: 授权范围,这里固定为 server
+                 * username: 用户名
+                 * password: 密码
+                 */
+                HttpRequest httpRequest = HttpRequest.post(tokenUrl)
+                        .header("Content-Type", "application/x-www-form-urlencoded")
+                        .header("Authorization", auth)
+                        .header("TENANT-ID", "4").
+                                form("username", username).
+                                form("password", password).
+                                form("scope", "server");
+                httpRequest.setGlobalTimeout(20000);
+                response = httpRequest.execute().body();
+                if (StrUtil.isNotEmpty(response)) {
+                    boolean isJson = JSONUtil.isJsonObj(response);
+                    if (isJson) {
+                        BJZYYJYSDTokenVo BJZYYJYSDTokenVo = JSONUtil.toBean(response, BJZYYJYSDTokenVo.class);
+                        if (BJZYYJYSDTokenVo.getAccess_token() != null && !BJZYYJYSDTokenVo.getAccess_token().equals("")) {
+                            token = BJZYYJYSDTokenVo.getAccess_token();
+                            log.info("========== 一体化token请求成功: {} token=" + token + "  ==========", station.getStationCode());
+                            station.setComKey(token);
+                            station.setKeyTime(Instant.ofEpochMilli(System.currentTimeMillis() + BJZYYJYSDTokenVo.getExpires_in() * 1000).atZone(ZoneId.systemDefault()).toLocalDateTime());
+                            stationService.updateById(station);
+                            record.setState(QNHLEnum.REQUEST_SUCCESS.getSign());
+                            result = true;
+
+                        } else {
+                            log.error("========== 未成功获取到鉴权令牌 ========== ");
+                            log.info("========== 请求参数 账号密码:" + username + ":" + password + " MD5加密:" + auth + " ==========");
+                        }
+                    } else {
+                        log.error("========== 一体化token请求异常: {} 接收响应字符串非json格式 ==========", station.getStationCode());
+                    }
+                } else {
+                    log.error("========== 一体化token请求异常: {} 接收响应字符串为空 ==========", station.getStationCode());
+                }
+
+            } catch (Exception e) {
+                log.error("========== 一体化token请求异常: {} 连接断开或请求超时 ==========", station.getStationCode());
+                e.printStackTrace();
+
+            }
+        }
+
+
+        recordService.save(record);
+        return result;
+    }
+
+
+    IntegrationCompany getIntegrationCompany(String code) {
+        if (this.integrationCompany == null) {
+            LambdaQueryWrapper<IntegrationCompany> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+            lambdaQueryWrapper.eq(IntegrationCompany::getCode, code);
+            this.integrationCompany = this.integrationCompanyService.getOne(lambdaQueryWrapper);
+        }
+        return this.integrationCompany;
+    }
+
+
+}
+

+ 5 - 0
in-cloud/src/main/java/com/jiayue/insu/incloud/constants/CompanyConstant.java

@@ -19,4 +19,9 @@ public interface CompanyConstant {
      */
     String COMPANY_BJZYYJY = "BJZYYJY";
 
+    /**
+     * 北京中央研究院(山东)
+     */
+    String COMPANY_BJZYYJY_SD = "BJZYYJYSD";
+
 }

+ 54 - 0
in-cloud/src/main/java/com/jiayue/insu/incloud/constants/dto/BJZYYJYSDPushDqDataParamsDto.java

@@ -0,0 +1,54 @@
+package com.jiayue.insu.incloud.constants.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 北京中央研究院(山东)上送数据参数dto
+ *
+ * @Author: tl
+ * @Date: 2023/12/14 13:43
+ */
+@Data
+public class BJZYYJYSDPushDqDataParamsDto {
+
+    /**
+     * 租户id
+     */
+    private String farm_id;
+    /**
+     * 开始时间
+     */
+    private String start_time;
+    /**
+     * 预测厂家
+     */
+    private String forecaster;
+    /**
+     * 更新时间
+     */
+    private String updateTime;
+    /**
+     * 预测日期
+     */
+    private List<String> forecast_days;
+    /**
+     * 预测时间和数据
+     */
+    private List<List<List<Object>>> forecast_data;
+
+
+    public BJZYYJYSDPushDqDataParamsDto(String farm_id, String start_time, String forecaster, String updateTime, List<String> forecast_days, List<List<List<Object>>> forecast_data) {
+        this.farm_id = farm_id;
+        this.start_time = start_time;
+        this.forecaster = forecaster;
+        this.updateTime = updateTime;
+        this.forecast_days = forecast_days;
+        this.forecast_data = forecast_data;
+
+    }
+
+    public BJZYYJYSDPushDqDataParamsDto() {
+    }
+}

+ 43 - 0
in-cloud/src/main/java/com/jiayue/insu/incloud/constants/vo/BJZYYJYSDTokenVo.java

@@ -0,0 +1,43 @@
+package com.jiayue.insu.incloud.constants.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+
+/**
+ * 北京中央研究院(山东)token响应VO
+ *
+ * @Author: tl
+ * @Date: 2023/12/14 9:56
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+public class BJZYYJYSDTokenVo {
+
+    /**
+     * 访问令牌
+     */
+    private String access_token;
+
+    /**
+     * 刷新 token
+     */
+    private String refresh_token;
+
+    /**
+     * 过期时间,12 小时
+     */
+    private Long expires_in;
+    /**
+     * 授权范围
+     */
+    private String scope;
+    /**
+     * 用户详细信息
+     */
+    private String user_info;
+}

+ 35 - 0
in-cloud/src/main/java/com/jiayue/insu/incloud/constants/vo/ResponseSDVo.java

@@ -0,0 +1,35 @@
+package com.jiayue.insu.incloud.constants.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+
+/**
+ * 北京中央研究院(山东)上送数据响应VO
+ *
+ * @author yh
+ * @version 1.0
+ * @since 2022/5/22 11:29
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+public class ResponseSDVo {
+
+    /**
+     * 响应码
+     */
+    private String code;
+    /**
+     * 响应信息
+     */
+    private String msg;
+
+    /**
+     * 响应数据
+     */
+    private String data;
+}

+ 3 - 8
in-cloud/src/main/java/com/jiayue/insu/incloud/job/data/pull/PullInitDataJob.java

@@ -1,19 +1,14 @@
 package com.jiayue.insu.incloud.job.data.pull;
 
-import cn.hutool.core.date.LocalDateTimeUtil;
 import com.jiayue.insu.incloud.constants.CommonStant;
-import com.jiayue.insu.incloud.constants.enums.StatusEnum;
-import com.jiayue.insu.incloud.entity.Record;
 import com.jiayue.insu.incloud.entity.Station;
 import com.jiayue.insu.incloud.pulldata.PullInitData;
-import com.jiayue.insu.incloud.service.RecordService;
 import com.jiayue.insu.incloud.service.StationService;
 import lombok.extern.slf4j.Slf4j;
 import org.quartz.Job;
 import org.quartz.JobExecutionContext;
 import org.quartz.JobExecutionException;
 import org.springframework.beans.factory.annotation.Autowired;
-import java.time.LocalDateTime;
 
 
 /**
@@ -35,12 +30,12 @@ public class PullInitDataJob implements Job {
     public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
         String code = jobExecutionContext.getTrigger().getJobKey().getName();
         // 校验并获取场站信息
-        Station station = stationService.checkAndFindStation(code,CommonStant.RECORD_TYPE_PULL_INIT);
+        Station station = stationService.checkAndFindStation(code, CommonStant.RECORD_TYPE_PULL_INIT);
         //没有成功记录进行业务
         if (station != null) {
             pullInitData.pullDQAndNWPData(station);
-        }else{
-            log.error("========== 一体化定时任务异常:  场站信息为空  {}==========",code);
+        } else {
+            log.error("========== 一体化定时任务异常:  场站信息为空  {}==========", code);
         }
     }
 }

+ 59 - 0
in-cloud/src/main/java/com/jiayue/insu/incloud/job/data/push/BJZYYJYSDPushInitDqDataJob.java

@@ -0,0 +1,59 @@
+package com.jiayue.insu.incloud.job.data.push;
+
+import cn.hutool.core.date.LocalDateTimeUtil;
+import com.jiayue.insu.incloud.constants.CommonStant;
+import com.jiayue.insu.incloud.constants.enums.QNHLEnum;
+import com.jiayue.insu.incloud.constants.enums.StatusEnum;
+import com.jiayue.insu.incloud.entity.Record;
+import com.jiayue.insu.incloud.entity.Station;
+import com.jiayue.insu.incloud.pushdata.PushDataForBJZYYJYSD;
+import com.jiayue.insu.incloud.service.RecordService;
+import com.jiayue.insu.incloud.service.StationService;
+import org.quartz.Job;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.time.LocalDateTime;
+
+/**
+ * 北京中央研究院(山东)上送原始短期数据定时任务
+ *
+ * @author yh
+ * @version 1.0
+ * @since 2022/5/22 11:29
+ */
+public class BJZYYJYSDPushInitDqDataJob implements Job {
+
+    @Autowired
+    private PushDataForBJZYYJYSD pushDataForBJZYYJYSD;
+    @Autowired
+    private StationService stationService;
+    @Autowired
+    private RecordService recordService;
+    @Override
+    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
+        String code = jobExecutionContext.getTrigger().getJobKey().getName();
+        String[] split = code.split("-");
+        if(split!=null && split.length>0){
+            String stationCode = split[0];
+            if (split.length>2){
+                stationCode = split[0]+"-"+split[1];
+            }
+
+            Station one = stationService.findByStationCode(stationCode);
+            if (one != null) {
+                //查询是否有今天成功记录 (为提高稳定性,该定时任务采取在规定时间段内 重复循环执行的定时策略,故:需要查询是否存在成功记录)
+                Record successRecord = recordService.findTimeAndTypeAndStateAndStation(
+                        LocalDateTimeUtil.beginOfDay(LocalDateTime.now()),
+                        CommonStant.RECORD_TYPE_PUSH_INIT,
+                        StatusEnum.SUCCESS.getSign(), stationCode);
+                //没有成功记录进行业务
+                if(successRecord == null) {
+                    pushDataForBJZYYJYSD.pushDQData(one);
+                }
+            }
+        }
+
+    }
+}

+ 35 - 0
in-cloud/src/main/java/com/jiayue/insu/incloud/job/permission/BJZYYJYPSDermissonJob.java

@@ -0,0 +1,35 @@
+package com.jiayue.insu.incloud.job.permission;
+
+import com.jiayue.insu.incloud.compermisson.BJZYYJYSDComPermisson;
+import com.jiayue.insu.incloud.entity.Station;
+import com.jiayue.insu.incloud.service.StationService;
+import lombok.extern.slf4j.Slf4j;
+import org.quartz.Job;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * 北京中央研究院(山东)通讯token Job
+ *
+ * @Author: tl
+ * @Date: 2023/12/14 9:56
+ */
+@Slf4j
+public class BJZYYJYPSDermissonJob implements Job {
+    @Autowired
+    private BJZYYJYSDComPermisson bJZYYJYComPermisson;
+    @Autowired
+    private StationService stationService;
+
+    @Override
+    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
+        String code = jobExecutionContext.getTrigger().getJobKey().getName();
+        // 校验并获取场站信息
+        Station station = stationService.checkAndFindStation(code,null);
+        if (station == null) {
+            log.error("========== 一体化定时任务异常:  场站不存在  {}==========",code);
+        }
+        bJZYYJYComPermisson.generateKey(station);
+    }
+}

+ 238 - 0
in-cloud/src/main/java/com/jiayue/insu/incloud/pushdata/PushDataForBJZYYJYSD.java

@@ -0,0 +1,238 @@
+package com.jiayue.insu.incloud.pushdata;
+
+import cn.hutool.core.convert.Convert;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.date.LocalDateTimeUtil;
+import cn.hutool.core.io.file.FileReader;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.crypto.digest.HMac;
+import cn.hutool.crypto.digest.HmacAlgorithm;
+import cn.hutool.http.HttpRequest;
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+import com.jiayue.insu.incloud.compermisson.BJZYYJYSDComPermisson;
+import com.jiayue.insu.incloud.constants.CommonStant;
+import com.jiayue.insu.incloud.constants.CompanyConstant;
+import com.jiayue.insu.incloud.constants.dto.BJZYYJYSDPushDqDataParamsDto;
+import com.jiayue.insu.incloud.constants.enums.QNHLEnum;
+import com.jiayue.insu.incloud.constants.enums.StatusEnum;
+import com.jiayue.insu.incloud.constants.vo.ResponseSDVo;
+import com.jiayue.insu.incloud.entity.ForecastData;
+import com.jiayue.insu.incloud.entity.IntegrationCompany;
+import com.jiayue.insu.incloud.entity.Record;
+import com.jiayue.insu.incloud.entity.Station;
+import com.jiayue.insu.incloud.service.IntegrationCompanyService;
+import com.jiayue.insu.incloud.service.RecordService;
+import com.jiayue.insu.incloud.utils.FileUtils;
+import com.jiayue.insu.incloud.utils.HttpUtils;
+import com.jiayue.insu.incloud.utils.SFTPUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.velocity.VelocityContext;
+import org.checkerframework.checker.units.qual.A;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+import java.io.File;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * 北京中央研究院(山东)上送数据
+ *
+ * @author yh
+ * @version 1.0
+ * @since 2022/5/22 11:29
+ */
+@Component
+@Slf4j
+public class PushDataForBJZYYJYSD implements IPushInitForecastData {
+    @Autowired
+    private RecordService recordService;
+    @Autowired
+    private IntegrationCompanyService integrationCompanyService;
+    @Autowired
+    BJZYYJYSDComPermisson bjzyyjysdComPermisson;
+
+    @Value("${localFilePath.bjzyyjysdFilePath}")
+    String bjzyyjysdFilePath;
+
+    /**
+     * 推送原始预测数据
+     *
+     * @param station 场站信息
+     * @return 是否成功
+     */
+    @Override
+    public Boolean pushDQAndNWPData(Station station) {
+        return null;
+    }
+
+    /**
+     * 将下载好的原始短期文件通过sftp推送
+     *
+     * @param station
+     * @return
+     */
+    @Override
+    public Boolean pushDQData(Station station) {
+
+        IntegrationCompany integrationCompany = integrationCompanyService.findByCode(CompanyConstant.COMPANY_BJZYYJY_SD);
+
+        if (StrUtil.isNotEmpty(station.getComKey()) && LocalDateTime.now().isBefore(station.getKeyTime())) {
+            // 获取场站编号
+            String stationCode = station.getStationCode();
+            Record record = new Record(CommonStant.RECORD_TYPE_PUSH_INIT, CompanyConstant.COMPANY_BJZYYJY_SD, stationCode, null, LocalDateTimeUtil.beginOfDay(LocalDateTime.now()), LocalDateTime.now(), null, null);
+            record.setState(StatusEnum.SUCCESS.getSign());
+            // 如果场站编号为空,则返回
+            if (stationCode == null || "".equals(stationCode)) {
+                record.setState(StatusEnum.STATION_CODE_NULL.getSign());
+                record.setStateContent(StatusEnum.STATION_CODE_NULL.getMsg());
+                recordService.save(record);
+                return false;
+            }
+            // 获取指定目录下的短期原始数据(/jiayue/insu/file/init/J00269/)
+            String filePath = bjzyyjysdFilePath + stationCode + File.separatorChar;
+            File files = new File(filePath);
+            String[] fileNames = files.list();
+            // 如果文件名列表为空
+            if (fileNames == null || fileNames.length == 0) {
+                log.info("指定目录下无文件");
+                record.setState(StatusEnum.FILE_NULL.getSign());
+                record.setStateContent(StatusEnum.FILE_NULL.getMsg());
+                recordService.save(record);
+                return false;
+            }
+            // 获取当天日期
+            LocalDateTime today = LocalDateTime.now();
+            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
+            DateTimeFormatter formatterSeparator = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+            String todaySeparatorStr = today.format(formatterSeparator);
+            String tomorrowSeparatorStr = today.plusDays(1).format(formatterSeparator);
+            String todayStr = today.format(formatter);
+            // 转为list并根据日期筛选排序
+            List<String> fileList = Arrays.stream(fileNames).collect(Collectors.toList());
+            List<String> filterFileList = fileList.stream().filter(s -> s.contains(todayStr)).filter(s -> s.contains("DQ")).collect(Collectors.toList());
+            // 如果筛选后无文件
+            if (filterFileList.size() == 0) {
+                log.info("无当日文件");
+                record.setState(StatusEnum.FILE_NULL.getSign());
+                record.setStateContent(StatusEnum.FILE_NULL.getMsg());
+                recordService.save(record);
+                return false;
+            }
+            filterFileList.sort(Collections.reverseOrder());
+            // 获取原始文件
+            File originalFile = new File(filterFileList.get(0));
+            // 读取文件
+            FileReader fileReader = new FileReader(filePath + originalFile);
+            List<String> originalContents = fileReader.readLines();
+            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+            List<List<List<Object>>> vList = new ArrayList<>();
+
+            List<String> daysList = new ArrayList<>();
+
+            List<List<Object>> lists = new ArrayList<>();
+            int i = 0;
+            // 循环解析原始短期文件
+            for (String originalContent : originalContents) {
+
+                // 从有#的数据开始获取 数据示例:#1	帽子山光伏电站	2023-06-22 00:00:00	0.0
+                if (originalContent.contains("#")) {
+                    // 刨除当天的数据
+                    if (originalContent.contains(todaySeparatorStr) || originalContent.contains(tomorrowSeparatorStr + " 00:00:00")) {
+                        continue;
+                    }
+                    // 根据分隔符分割,取时间和功率
+                    String[] originalContentArr = originalContent.split("\t");
+
+                    // 如果分割后的数组长度小于4,则数据格式不正确
+                    if (originalContentArr.length < 4) {
+                        continue;
+                    }
+
+                    // 将时间2023-06-22 00:00:00根据分隔分割并组成2023-06-22_00:00:00格式
+                    long time;
+                    try {
+                        String[] dayHuor = originalContentArr[2].split(" ");
+                        String day = dayHuor[0];
+                        String huor = dayHuor[1];
+                        if (!daysList.contains(day) && !huor.equals("00:00:00")) {
+                            if (i != 0) {
+                                vList.add(lists);
+                            }
+                            if (station.getDays() == i) {
+                                break;
+                            }
+                            daysList.add(day);
+                            lists = new ArrayList<>();
+                            i++;
+                        }
+                        time = simpleDateFormat.parse(originalContentArr[2]).getTime();
+                        List<Object> list = new ArrayList<>();
+                        list.add(time);
+                        list.add(originalContentArr[3]);
+                        lists.add(list);
+
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                        break;
+                    }
+                }
+            }
+
+            BJZYYJYSDPushDqDataParamsDto dto = new BJZYYJYSDPushDqDataParamsDto(station.getSignCode(), daysList.get(0), "syjy", simpleDateFormat.format(new Date()), daysList, vList);
+
+            JSONObject json = JSONUtil.parseObj(dto, false);
+            String body = json.toString();
+
+            try {
+                String response;
+                HttpRequest httpRequest = HttpRequest.post(integrationCompany.getPushUrl())
+                        .header("Content-Type", "application/x-www-form-urlencoded")
+                        .header("Authorization", "Bearer " + station.getComKey())
+                        .header("TENANT-ID", "4").
+                                body(body);
+                httpRequest.setGlobalTimeout(20000);
+                response = httpRequest.execute().body();
+
+                ResponseSDVo responseSDVo = JSONUtil.toBean(response, ResponseSDVo.class);
+
+                if (responseSDVo.getCode().equals("0")) {
+
+                    record.setState(StatusEnum.SUCCESS.getSign());
+                    record.setStateContent(responseSDVo.getMsg());
+                    log.info("=========={}:{} ==>上送短期原始数据成功  {}天==========", integrationCompany.getName(), station.getStationCode(), daysList.size());
+                    log.info("{} 原始数据:{}",stationCode,body);
+                    recordService.save(record);
+                    return true;
+                } else {
+                    log.error("=========={}:{} ==>上送数据失败 失败标识:{} ,失败原因:{} ==========", integrationCompany.getName(), station.getStationCode(), responseSDVo.getCode(), responseSDVo.getMsg());
+                    log.info("{} 原始数据:{}",stationCode,body);
+                    record.setState(StatusEnum.FILE_NULL.getSign());
+                    record.setStateContent(responseSDVo.getMsg());
+                    recordService.save(record);
+                    return false;
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        } else {
+            bjzyyjysdComPermisson.generateKey(station);
+        }
+
+        return false;
+    }
+
+    @Override
+    public Boolean pushNWPData(Station station) {
+        return null;
+    }
+
+
+}

+ 8 - 1
in-cloud/src/main/java/com/jiayue/insu/incloud/service/InitRunner.java

@@ -1,5 +1,6 @@
 package com.jiayue.insu.incloud.service;
 
+import com.jiayue.insu.incloud.compermisson.BJZYYJYSDComPermisson;
 import com.jiayue.insu.incloud.compermisson.QNHLComPermisson;
 import com.jiayue.insu.incloud.constants.CompanyConstant;
 import com.jiayue.insu.incloud.entity.Station;
@@ -14,13 +15,19 @@ public class InitRunner implements CommandLineRunner {
     @Autowired
     private QNHLComPermisson qnhlComPermisson;
     @Autowired
+    private BJZYYJYSDComPermisson bjzyyjysdComPermisson;
+    @Autowired
     private StationService stationService;
     @Override
     public void run(String... args) throws Exception {
-
         List<Station> stations = stationService.findByInCode(CompanyConstant.COMPANY_QNHL);
         for (Station station: stations) {
             qnhlComPermisson.generateKey(station);
         }
+
+        List<Station> stations1 = stationService.findByInCode(CompanyConstant.COMPANY_BJZYYJY_SD);
+        for (Station station: stations1) {
+            bjzyyjysdComPermisson.generateKey(station);
+        }
     }
 }