179 lines
8.9 KiB
Java
179 lines
8.9 KiB
Java
//package com.zhgd.xmgl.task;
|
||
//
|
||
//import cn.hutool.core.bean.BeanUtil;
|
||
//import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||
//import com.gexin.fastjson.JSON;
|
||
//import com.gexin.fastjson.JSONArray;
|
||
//import com.gexin.fastjson.JSONObject;
|
||
//import com.glodon.cloudt.rest.client.RestServiceClient;
|
||
//import com.glodon.cloudt.rest.client.data.HmacRestAuthInfo;
|
||
//import com.glodon.cloudt.rest.client.data.RestResponseInfo;
|
||
//import com.glodon.cloudt.rest.client.exception.AuthenticateException;
|
||
//import com.glodon.cloudt.rest.client.exception.InvalidUriException;
|
||
//import com.glodon.cloudt.rest.client.exception.NoAuthenticateException;
|
||
//import com.glodon.cloudt.rest.client.impl.HmacRestServiceClient;
|
||
//import com.google.common.base.Objects;
|
||
//import com.zhgd.xmgl.modules.project.entity.Project;
|
||
//import com.zhgd.xmgl.modules.project.mapper.ProjectMapper;
|
||
//import com.zhgd.xmgl.modules.stablewater.entity.StableWaterMixStationData;
|
||
//import com.zhgd.xmgl.modules.stablewater.entity.StableWaterMixStationRawMaterialData;
|
||
//import com.zhgd.xmgl.modules.stablewater.entity.StableWaterMixStationSetData;
|
||
//import com.zhgd.xmgl.modules.stablewater.mapper.StableWaterMixStationDataMapper;
|
||
//import com.zhgd.xmgl.modules.stablewater.service.IStableWaterMixStationDataService;
|
||
//import com.zhgd.xmgl.util.ThirdPartRequestUtil;
|
||
//import lombok.extern.slf4j.Slf4j;
|
||
//import net.javacrumbs.shedlock.core.SchedulerLock;
|
||
//import org.springframework.beans.factory.annotation.Autowired;
|
||
//import org.springframework.scheduling.annotation.Scheduled;
|
||
//import org.springframework.stereotype.Component;
|
||
//import org.springframework.web.bind.annotation.GetMapping;
|
||
//import org.springframework.web.bind.annotation.RequestMapping;
|
||
//import org.springframework.web.bind.annotation.RestController;
|
||
//
|
||
//import java.text.SimpleDateFormat;
|
||
//import java.util.ArrayList;
|
||
//import java.util.List;
|
||
//
|
||
///**
|
||
// * 水稳拌合站任务
|
||
// */
|
||
//@Slf4j
|
||
//@Component
|
||
//@RestController
|
||
//public class StableWaterMixStationTask {
|
||
// @Autowired
|
||
// ThirdPartRequestUtil thirdPartRequestUtil;
|
||
// @Autowired
|
||
// IStableWaterMixStationDataService stableWaterMixStationDataService;
|
||
// @Autowired
|
||
// StableWaterMixStationDataMapper stableWaterMixStationDataMapper;
|
||
// @Autowired
|
||
// ProjectMapper projectMapper;
|
||
//
|
||
//
|
||
// /**
|
||
// * 每5分钟拉取广联达的搅拌站数据,https://xmgl.glodon.com/wl/docs/third_help/part2/openapi/pull/mixTotal.html
|
||
// */
|
||
// @Scheduled(cron = "0 0/5 * * * ?")
|
||
// @SchedulerLock(name = "executeStableWaterMixStationTask", lockAtMostFor = 1000 * 60 * 2, lockAtLeastFor = 1000 * 60 * 1)
|
||
// @RequestMapping("xmgl/task/executeStableWaterMixStationTask")
|
||
// public void executeStableWaterMixStationTask() {
|
||
// log.info("定时拉取广联达的搅拌站数据任务开始");
|
||
// List<Project> projects = projectMapper.selectList(new LambdaQueryWrapper<Project>()
|
||
// .isNotNull(Project::getGldLicPath)
|
||
// .ne(Project::getGldLicPath, "")
|
||
// );
|
||
// for (Project project : projects) {
|
||
// StableWaterMixStationData data = stableWaterMixStationDataMapper.selectOne(new LambdaQueryWrapper<StableWaterMixStationData>()
|
||
// .eq(StableWaterMixStationData::getProjectSn, project.getProjectSn())
|
||
// .orderByDesc(StableWaterMixStationData::getTimestamp)
|
||
// .last("limit 1")
|
||
// );
|
||
// String timestamp;
|
||
// if (data != null) {
|
||
// timestamp = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(data.getTimestamp());
|
||
// } else {
|
||
// timestamp = "20230101141314082";
|
||
// }
|
||
// sendHttp(project, timestamp);
|
||
// }
|
||
// }
|
||
//
|
||
// private void sendHttp(Project project, String timestamp) {
|
||
// try {
|
||
// log.info("定时拉取广联达的搅拌站数据任务开始:项目名称:{} 项目sn:{} timestamp:{}", project.getProjectName(), project.getProjectSn(), timestamp);
|
||
// /**----------------准备 -------------------*/
|
||
// //第1步:下载授权文件
|
||
// //第2步:获取SDK
|
||
// /** ------------ 授权认证 --------------*/
|
||
//
|
||
// //第3步:创建客户端实例
|
||
// RestServiceClient serviceClient = HmacRestServiceClient.getInstance();
|
||
// //第4步:加载/验证授权文件
|
||
// //4.1构建认证信息
|
||
// HmacRestAuthInfo restAuthInfo = new HmacRestAuthInfo();
|
||
// //4.2设置授权文件路径
|
||
// restAuthInfo.setLicPath(project.getGldLicPath());
|
||
// //4.3权限认证
|
||
// serviceClient.authenticate(restAuthInfo);
|
||
//
|
||
// /** ------------ 拼接请求地址 --------------*/
|
||
// //第5步:获取授权文件关联的GYS系统地址hostAddress
|
||
// String hostAddress = serviceClient.getRestRootAddress();
|
||
// //第6步:设置请求接口的URI地址apiURI(以获取集成项目列表信息为例)
|
||
// String apiUri = String.format("/api/mix/v1.0/mix/product/getMachineProductList?beginTimestamp=%s", timestamp);
|
||
// //第7步:拼装完整的请求网址
|
||
// String fullUrl = hostAddress + apiUri;
|
||
// //第8步:请求数据准备(本例中为从GYS系统获取数据,无需进行请求数据的准备)
|
||
//
|
||
// log.info("url:{}", fullUrl);
|
||
// //第9步:发送请求,用来推送/获取数据
|
||
// RestResponseInfo restResponseInfo = serviceClient.get(fullUrl);
|
||
// log.info("rs:{}", JSON.toJSONString(restResponseInfo));
|
||
//
|
||
//
|
||
// /** ------------ 处理请求返回结果 --------------*/
|
||
// if (restResponseInfo.isSuccess()) {
|
||
// //请求成功:
|
||
// //第10步:处理请求结果(第三方系统自行处理)
|
||
// String stringContent = restResponseInfo.getStringContent();
|
||
// JSONObject scjo = JSON.parseObject(stringContent);
|
||
// if (scjo.getBoolean("success")) {
|
||
// saveData(scjo.getJSONObject("data"), project);
|
||
// JSONObject dataJo = scjo.getJSONObject("data");
|
||
// //继续发送http查询未保存的数据
|
||
// if (!Objects.equal(dataJo.getInteger("PageSize"), 0)) {
|
||
// sendHttp(project, dataJo.getString("MaxTimestamp"));
|
||
// }
|
||
// } else {
|
||
// log.error("失败:未知原因1");
|
||
// }
|
||
// } else {
|
||
// //请求失败:
|
||
// //第11步:根据返回结果排查失败原因(数据原因第三方系统自行处理)
|
||
// log.error("失败:未知原因2");
|
||
// }
|
||
// } catch (AuthenticateException e) {
|
||
// log.error("error:", e);
|
||
// } catch (InvalidUriException e) {
|
||
// log.error("error:", e);
|
||
// } catch (NoAuthenticateException e) {
|
||
// log.error("error:", e);
|
||
// }
|
||
// }
|
||
//
|
||
// private void saveData(JSONObject dataJo, Project project) {
|
||
// //保存拌合站设备,一个项目级别的授权文件对应我们的一个项目,他们的一个项目有多个拌合站(属性是projectId)(和我们设备对应),一个拌合站有多个机组(我们不体现)
|
||
// //保存拌合站数据
|
||
// JSONArray bills = dataJo.getJSONArray("Bills");
|
||
// for (Object bill : bills) {
|
||
// StableWaterMixStationData data = new StableWaterMixStationData();
|
||
// List<StableWaterMixStationSetData> setDataList = new ArrayList<>();
|
||
// data.setSetDataList(setDataList);
|
||
// BeanUtil.copyProperties(bill, data, true);
|
||
// data.setDevSn(((JSONObject) bill).getString("projectId"));
|
||
// JSONArray pcList = ((JSONObject) bill).getJSONArray("PCList");
|
||
// for (Object pc : pcList) {
|
||
// StableWaterMixStationSetData setData = new StableWaterMixStationSetData();
|
||
// BeanUtil.copyProperties(pc, setData, true);
|
||
// setDataList.add(setData);
|
||
// List<StableWaterMixStationRawMaterialData> rawMaterialDataList = new ArrayList<>();
|
||
// setData.setRawMaterialDataList(rawMaterialDataList);
|
||
// JSONArray ycList = ((JSONObject) pc).getJSONArray("YCList");
|
||
// for (Object yc : ycList) {
|
||
// StableWaterMixStationRawMaterialData rawMaterialData = new StableWaterMixStationRawMaterialData();
|
||
// BeanUtil.copyProperties(yc, rawMaterialData, true);
|
||
// rawMaterialDataList.add(rawMaterialData);
|
||
// }
|
||
// }
|
||
// try {
|
||
// stableWaterMixStationDataService.add(data);
|
||
// } catch (Exception e) {
|
||
// log.error("error:", e);
|
||
// log.info("新增出错:{},编号:{}", e.getMessage(), data.getDevSn());
|
||
// }
|
||
// }
|
||
// }
|
||
//
|
||
//}
|