引入依赖
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.8</version>
</dependency>
代码
import cn.hutool.http.HttpResponse;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
@Service
public class GAPlusServiceImpl implements GAPlusService {
private static Logger LOG = LoggerFactory.getLogger(GAPlusServiceImpl.class);
/**
* header 的头信息
*/
private static final String HEADER_PRE = "Bearer ";
@Override
public String submitTaskAddData(File file, String access_token, String questionId){
String headerValue = HEADER_PRE + access_token;
String filePath = upload(file, headerValue);
if(StringUtils.isNotBlank(filePath)){
return doSubmitTaskAddData(filePath, questionId, headerValue);
}
return null;
}
private String upload(File file, String headerValue){
try {
HttpResponse tokenResponse = HttpUtil.createPost(GAPlusConfig.uploadUrl)
.contentType("application/x-www-form-urlencoded")
.header("Authorization", headerValue)
.form("type", "zip")
.form("file", file)
.execute();
int status = tokenResponse.getStatus();
if (200 == status) {
String body = tokenResponse.body();
// Map<String, Object> tokenMap = JSONUtil.toBean(body, Map.class);
JSONObject jsonObject = JSONUtil.parseObj(body);
if(jsonObject.containsKey("data")){
return jsonObject.getStr("data");
}else {
LOG.error("--------upload---------upload msg: " + jsonObject.toString());
}
}else if(401 == status){
LOG.info("-----------upload----status is 401");
throw new TokenExpiredException(HttpStatus.UNAUTHORIZED.value(), "登录状态已过期");
} else {
LOG.info("----------upload----status is " + status);
LOG.info(tokenResponse.body());
throw new TokenExpiredException(HttpStatus.UNAUTHORIZED.value(), "登录状态已过期");
}
}catch (TokenExpiredException e){
throw new TokenExpiredException(HttpStatus.UNAUTHORIZED.value(), "登录状态已过期");
} catch (Exception e){
LOG.error("---------------upload error..." + e.getMessage());
e.printStackTrace();
}
return null;
}
@Override
public String executeTask(String url, String headerValue) {
try {
HttpResponse tokenResponse = HttpUtil.createPost(url)
.contentType("application/x-www-form-urlencoded")
.header("Authorization", headerValue)
.execute();
int status = tokenResponse.getStatus();
if (200 == status) {
String body = tokenResponse.body();
// Map<String, Object> tokenMap = JSONUtil.toBean(body, Map.class);
JSONObject jsonObject = JSONUtil.parseObj(body);
if(jsonObject.containsKey("data")){
JSONObject data = jsonObject.getJSONObject("data");
if(data != null && data.containsKey("id")){
return data.getStr("id");
}
LOG.info("-------submitTask------ " + jsonObject.toString());
}else {
LOG.error("-----------------v msg: " + jsonObject.toString());
}
}else {
LOG.info("--------submitTask------status is " + status);
LOG.info(tokenResponse.body());
}
}catch (Exception e){
LOG.error("---------submitTask----submitTask error..." + e.getMessage());
e.printStackTrace();
}
return null;
}
@Override
public List<GAPlusDataCatalogVO> queryGAPlusData(String headerValue) {
List<GAPlusDataCatalogVO> catalogList = getDatabaseCatalog(headerValue);
if(catalogList == null || catalogList.isEmpty()){
LOG.info("------------catalogList is null...");
return Commons.EMPTY;
}
for (GAPlusDataCatalogVO vo : catalogList) {
List<GAPlusDataCatalogVO> dataCatalogVOS = getDatabaseDataByDatabaseCatalogId(vo.getValue(), headerValue);
if(dataCatalogVOS != null){
vo.setChildren(dataCatalogVOS);
}
}
return catalogList;
}
@Override
public String submitYjjbntDataTask(String dataId, String gdDataId, String headerValue) {
LOG.info("----------------------submitYjjbntDataTask");
com.alibaba.fastjson2.JSONObject gd_layer = new com.alibaba.fastjson2.JSONObject();
gd_layer.put("type", "dataItem");
gd_layer.put("value", gdDataId);
LOG.info("----------gd_layer");
LOG.info(gd_layer.toString());
com.alibaba.fastjson2.JSONObject input_layer = new com.alibaba.fastjson2.JSONObject();
input_layer.put("type", "dataItem");
input_layer.put("value", dataId);
LOG.info("----------input_layer");
LOG.info(input_layer.toString());
LOG.info(GAPlusConfig.taskYjjbntUrl);
try {
HttpResponse tokenResponse = HttpUtil.createPost(GAPlusConfig.taskYjjbntUrl)
.contentType("multipart/form-data")
.header("Authorization", headerValue)
.form("input_layer", input_layer)
.form("gd_layer", gd_layer)
.execute();
int status = tokenResponse.getStatus();
if (200 == status) {
String body = tokenResponse.body();
JSONObject jsonObject = JSONUtil.parseObj(body);
if(jsonObject.containsKey("data")){
JSONObject data = jsonObject.getJSONObject("data");
if(data != null && data.containsKey("id")){
return data.getStr("id");
}
LOG.info("-------submitYjjbntDataTask------ " + jsonObject.toString());
}else {
LOG.error("-----------------submitYjjbntDataTask msg: " + jsonObject.toString());
}
}else {
LOG.info("--------submitYjjbntDataTask------status is " + status);
LOG.info(tokenResponse.body());
}
}catch (Exception e){
LOG.error("---------submitYjjbntDataTask----submitTask error..." + e.getMessage());
e.printStackTrace();
}
return null;
}
@Override
public String submitGdbylDataTask(String dataId, String headerValue) {
LOG.info("----------------------submitGdbylDataTask");
com.alibaba.fastjson2.JSONObject req = new com.alibaba.fastjson2.JSONObject();
req.put("type", "dataItem");
req.put("value", dataId);
LOG.info("----------input_layer");
LOG.info(req.toString());
LOG.info(GAPlusConfig.taskGdblyUrl);
try {
HttpResponse tokenResponse = HttpUtil.createPost(GAPlusConfig.taskGdblyUrl)
.contentType("multipart/form-data")
.header("Authorization", headerValue)
.form("input_layer", req)
.execute();
int status = tokenResponse.getStatus();
if (200 == status) {
String body = tokenResponse.body();
JSONObject jsonObject = JSONUtil.parseObj(body);
if(jsonObject.containsKey("data")){
JSONObject data = jsonObject.getJSONObject("data");
if(data != null && data.containsKey("id")){
return data.getStr("id");
}
LOG.info("-------submitGdbylDataTask------ " + jsonObject.toString());
}else {
LOG.error("-----------------submitGdbylDataTask msg: " + jsonObject.toString());
}
}else {
LOG.info("--------submitGdbylDataTask------status is " + status);
LOG.info(tokenResponse.body());
}
}catch (Exception e){
LOG.error("---------submitGdbylDataTask----submitTask error..." + e.getMessage());
e.printStackTrace();
}
return null;
}
@Override
public String submitWdgdDataTask(String dataId, String headerValue) {
com.alibaba.fastjson2.JSONObject req = new com.alibaba.fastjson2.JSONObject();
req.put("type", "dataItem");
req.put("value", dataId);
try {
HttpResponse tokenResponse = HttpUtil.createPost(GAPlusConfig.taskWdgdUrl)
.contentType("multipart/form-data")
.header("Authorization", headerValue)
.form("input_layer", req)
.execute();
int status = tokenResponse.getStatus();
if (200 == status) {
String body = tokenResponse.body();
JSONObject jsonObject = JSONUtil.parseObj(body);
if(jsonObject.containsKey("data")){
JSONObject data = jsonObject.getJSONObject("data");
if(data != null && data.containsKey("id")){
return data.getStr("id");
}
LOG.info("-------submitWdgdDataTask------ " + jsonObject.toString());
}else {
LOG.error("-----------------submitWdgdDataTask msg: " + jsonObject.toString());
}
}else {
LOG.info("--------submitWdgdDataTask------status is " + status);
LOG.info(tokenResponse.body());
}
}catch (Exception e){
LOG.error("---------submitWdgdDataTask----submitTask error..." + e.getMessage());
e.printStackTrace();
}
return null;
}
@Override
public String submitYjjbntbhwcqkDataTask(String dataId, String gdDataId, String outDataId, String headerValue) {
com.alibaba.fastjson2.JSONObject dltb_layer = new com.alibaba.fastjson2.JSONObject();
dltb_layer.put("type", "dataItem");
dltb_layer.put("value", gdDataId);
com.alibaba.fastjson2.JSONObject input_layer = new com.alibaba.fastjson2.JSONObject();
input_layer.put("type", "dataItem");
input_layer.put("value", dataId);
com.alibaba.fastjson2.JSONObject overlay_layer = new com.alibaba.fastjson2.JSONObject();
overlay_layer.put("type", "dataItem");
overlay_layer.put("value", outDataId);
try {
HttpResponse tokenResponse = HttpUtil.createPost(GAPlusConfig.taskYjjbntbhkhUrl)
.contentType("multipart/form-data")
.header("Authorization", headerValue)
.form("input_layer", input_layer)
.form("dltb_layer", dltb_layer)
.form("overlay_layer", overlay_layer)
.execute();
int status = tokenResponse.getStatus();
if (200 == status) {
String body = tokenResponse.body();
JSONObject jsonObject = JSONUtil.parseObj(body);
if(jsonObject.containsKey("data")){
JSONObject data = jsonObject.getJSONObject("data");
if(data != null && data.containsKey("id")){
return data.getStr("id");
}
LOG.info("-------submitYjjbntbhwcqkDataTask------ " + jsonObject.toString());
}else {
LOG.error("-----------------submitYjjbntbhwcqkDataTask msg: " + jsonObject.toString());
}
}else {
LOG.info("--------submitYjjbntbhwcqkDataTask------status is " + status);
LOG.info(tokenResponse.body());
}
}catch (Exception e){
LOG.error("---------submitYjjbntbhwcqkDataTask----submitTask error..." + e.getMessage());
e.printStackTrace();
}
return null;
}
@Override
public String submitGdbhwcqkDataTask(String dataId, String outDataId, String headerValue) {
com.alibaba.fastjson2.JSONObject input_layer = new com.alibaba.fastjson2.JSONObject();
input_layer.put("type", "dataItem");
input_layer.put("value", dataId);
com.alibaba.fastjson2.JSONObject overlay_layer = new com.alibaba.fastjson2.JSONObject();
overlay_layer.put("type", "dataItem");
overlay_layer.put("value", outDataId);
try {
HttpResponse tokenResponse = HttpUtil.createPost(GAPlusConfig.taskGdbhkhUrl)
.contentType("multipart/form-data")
.header("Authorization", headerValue)
.form("input_layer", input_layer)
.form("overlay_layer", overlay_layer)
.execute();
int status = tokenResponse.getStatus();
if (200 == status) {
String body = tokenResponse.body();
JSONObject jsonObject = JSONUtil.parseObj(body);
if(jsonObject.containsKey("data")){
JSONObject data = jsonObject.getJSONObject("data");
if(data != null && data.containsKey("id")){
return data.getStr("id");
}
LOG.info("-------submitGdbhwcqkDataTask------ " + jsonObject.toString());
}else {
LOG.error("-----------------submitGdbhwcqkDataTask msg: " + jsonObject.toString());
}
}else {
LOG.info("--------submitGdbhwcqkDataTask------status is " + status);
LOG.info(tokenResponse.body());
}
}catch (Exception e){
LOG.error("---------submitGdbhwcqkDataTask----submitTask error..." + e.getMessage());
e.printStackTrace();
}
return null;
}
@Override
public String submitGdLrLcDataTask(String dataId, String lastYearDataId, String headerValue) {
LOG.info("-----------------submitGdLrLcDataTask");
com.alibaba.fastjson2.JSONObject input_layer = new com.alibaba.fastjson2.JSONObject();
input_layer.put("type", "dataItem");
input_layer.put("value", dataId);
LOG.info("----------input_layer");
LOG.info(input_layer.toString());
com.alibaba.fastjson2.JSONObject input_last_year_layer = new com.alibaba.fastjson2.JSONObject();
input_last_year_layer.put("type", "dataItem");
input_last_year_layer.put("value", lastYearDataId);
LOG.info("----------input_last_year_layer");
LOG.info(input_last_year_layer.toString());
try {
LOG.info(GAPlusConfig.taskLcLrUrl);
HttpResponse tokenResponse = HttpUtil.createPost(GAPlusConfig.taskLcLrUrl)
.contentType("multipart/form-data")
.header("Authorization", headerValue)
.form("input_layer", input_layer)
.form("input_last_year_layer", input_last_year_layer)
.execute();
int status = tokenResponse.getStatus();
if (200 == status) {
String body = tokenResponse.body();
JSONObject jsonObject = JSONUtil.parseObj(body);
if(jsonObject.containsKey("data")){
JSONObject data = jsonObject.getJSONObject("data");
if(data != null && data.containsKey("id")){
return data.getStr("id");
}
LOG.info("-------submitGdLrLcDataTask------ " + jsonObject.toString());
}else {
LOG.error("-----------------submitGdLrLcDataTask msg: " + jsonObject.toString());
}
}else {
LOG.info("--------submitGdLrLcDataTask------status is " + status);
LOG.info(tokenResponse.body());
}
}catch (Exception e){
LOG.error("---------submitGdLrLcDataTask----submitTask error..." + e.getMessage());
e.printStackTrace();
}
return null;
}
private List<GAPlusDataCatalogVO> getDatabaseDataByDatabaseCatalogId(String sourceId, String headerValue){
String url = GAPlusConfig.queryDataUrl + sourceId;
try {
HttpResponse tokenResponse = HttpUtil.createGet(url)
.contentType("application/x-www-form-urlencoded")
.header("Authorization", headerValue)
.execute();
int status = tokenResponse.getStatus();
if (200 == status) {
String body = tokenResponse.body();
JSONObject jsonObject = JSONUtil.parseObj(body);
if(jsonObject.containsKey("data")){
List<GAPlusDataCatalogVO> vos = new ArrayList<>();
JSONArray data = jsonObject.getJSONArray("data");
int size = data.size();
for(int i = 0; i < size; i++){
JSONObject object = data.getJSONObject(i);
String sourceStatus = object.getStr("sourceStatus");
if(StringUtils.isBlank(sourceStatus)){
LOG.info("sourceStatus is null");
continue;
}
if(!"available".equals(sourceStatus)){
LOG.info("sourceStatus is not available");
continue;
}
Boolean deleted = object.getBool("deleted");
if(deleted == null){
LOG.info("not have deleted...");
continue;
}
if(deleted){
continue;
}
String name = object.getStr("name");
String id = object.getStr("id");
if(StringUtils.isNotBlank(name) && StringUtils.isNotBlank(id)){
vos.add(new GAPlusDataCatalogVO(name, id, true));
}
}
return vos;
}else {
LOG.error("-----------------getDatabaseDataByDatabaseCatalogId msg: " + jsonObject.toString());
}
}else {
LOG.info("--------getDatabaseDataByDatabaseCatalogId------status is " + status);
LOG.info(tokenResponse.body());
}
}catch (Exception e){
LOG.error("---------getDatabaseDataByDatabaseCatalogId- error..." + e.getMessage());
e.printStackTrace();
}
return null;
}
private List<GAPlusDataCatalogVO> getDatabaseCatalog(String headerValue){
try {
HttpResponse tokenResponse = HttpUtil.createGet(GAPlusConfig.queryDatabaseDataUrl)
.contentType("application/x-www-form-urlencoded")
.header("Authorization", headerValue)
.execute();
int status = tokenResponse.getStatus();
if (200 == status) {
String body = tokenResponse.body();
JSONObject jsonObject = JSONUtil.parseObj(body);
if(jsonObject.containsKey("data")){
List<GAPlusDataCatalogVO> vos = new ArrayList<>();
JSONArray data = jsonObject.getJSONArray("data");
int size = data.size();
for(int i = 0; i < size; i++){
JSONObject object = data.getJSONObject(i);
String name = object.getStr("name");
String id = object.getStr("id");
if(StringUtils.isNotBlank(name) && StringUtils.isNotBlank(id)){
vos.add(new GAPlusDataCatalogVO(name, id, false));
}
}
return vos;
}else {
LOG.error("-----------------getDatabaseCatalog msg: " + jsonObject.toString());
}
}else {
LOG.info("--------getDatabaseCatalog------status is " + status);
LOG.info(tokenResponse.body());
}
}catch (Exception e){
LOG.error("---------getDatabaseCatalog- error..." + e.getMessage());
e.printStackTrace();
}
return null;
}
private String doSubmitTaskAddData(String filePath, String id, String headerValue){
try {
HttpResponse tokenResponse = HttpUtil.createPost(GAPlusConfig.taskSubmitAddDataUrl)
.contentType("application/x-www-form-urlencoded")
.header("Authorization", headerValue)
.form("expression", "\"" + id + "\"")
.form("file_path", filePath)
.execute();
int status = tokenResponse.getStatus();
if (200 == status) {
String body = tokenResponse.body();
// Map<String, Object> tokenMap = JSONUtil.toBean(body, Map.class);
JSONObject jsonObject = JSONUtil.parseObj(body);
if(jsonObject.containsKey("data")){
JSONObject data = jsonObject.getJSONObject("data");
if(data != null && data.containsKey("id")){
return data.getStr("id");
}
LOG.info("-------doSubmitTaskAddData------ " + jsonObject.toString());
}else {
LOG.error("-----------------doSubmitTaskAddData msg: " + jsonObject.toString());
}
}else {
LOG.info("--------doSubmitTaskAddData------status is " + status);
LOG.info(tokenResponse.body());
}
}catch (Exception e){
LOG.error("---------doSubmitTaskAddData----submitTask error..." + e.getMessage());
e.printStackTrace();
}
return null;
}
}