瀏覽代碼

GIS地图接口

leihy 2 年之前
父節點
當前提交
fcf54d0824

+ 1 - 1
spring-cloud/configer/src/main/resources/config/dev/threeapi-dev.yml

@@ -17,4 +17,4 @@ mybatis:
         
 contrl:
   # 设置连接超时,单位:毫秒
-    connection-timeout: 5000
+  connection-timeout: 5000

+ 1 - 1
spring-cloud/configer/src/main/resources/config/prod/threeapi-prod.yml

@@ -17,4 +17,4 @@ mybatis:
         
 contrl:
   # 设置连接超时,单位:毫秒
-    connection-timeout: 5000
+  connection-timeout: 5000

+ 10 - 10
spring-cloud/server-page/src/main/resources/static/ipad/js/constant.js

@@ -1,10 +1,10 @@
-var FLAT_PATH = 'http://23.37.100.87:8084/';
+var FLAT_PATH = 'http://23.37.100.80:8084/';
 var FLAT_PATH_BASIC = FLAT_PATH + 'basic/';
 var FLAT_PATH_THREE = FLAT_PATH + 'threeapi/';
-var FLAT_PATH_IMG = 'http://23.37.100.87:8085';
-var XN_PATH = 'http://23.37.100.87:8092/';
-var WS_PATH = 'ws://23.37.100.87:8087';
-var YK_PATH = 'http://23.37.100.87:298${port}/vnc.html';
+var FLAT_PATH_IMG = 'http://23.37.100.80:8085';
+var XN_PATH = 'http://23.37.100.80:8092/';
+var WS_PATH = 'ws://23.37.100.80:8087';
+var YK_PATH = 'http://23.37.100.80:${port}/vnc.html';
 
 var DEVICE_GROUP = {
 	dpq: {
@@ -31,11 +31,11 @@ var DEVICE_GROUP = {
 
 var DEVICE_CODE_GROUP = ['mtq', 'hpq', 'dpq', 'xcqn', 'xcqw', 'dpzhd'];
 
-var DPZHD_VNC_HOST = "23.37.100.87";
+var DPZHD_VNC_HOST = "23.37.100.80";
 var DPZHD_PATH = 'http://' + DPZHD_VNC_HOST + ':8123/';
-var DPZHD_VNC_PATH = 'http://' + DPZHD_VNC_HOST + ':29850/vnc.html';
-var KJY_PATH = "http://23.37.100.87/dldp2/index.html";
+var DPZHD_VNC_PATH = 'http://' + DPZHD_VNC_HOST + ':29050/vnc.html';
+var KJY_PATH = "http://23.37.100.80/dldp2/index.html";
 
 
-var OLD_YK_URL_HOST = "23.37.100.80";
-var NEW_YK_URL_HOST = "23.37.100.87";
+var OLD_YK_URL_HOST = "23.37.100.87";
+var NEW_YK_URL_HOST = "23.37.100.80";

文件差異過大導致無法顯示
+ 6 - 2
spring-cloud/server-threeapi/src/main/java/com/jd/controller/ApiUrlController.java


+ 2 - 0
spring-cloud/server-threeapi/src/main/java/com/jd/service/ApiUrlService.java

@@ -15,4 +15,6 @@ public interface ApiUrlService {
 	JSONObject sendApiUrl(String urlCode);
 	
 	JSONObject sendApiUrl(String urlCode, String params);
+	
+	JSONObject sendGisApi(String urlCode, String params);
 }

+ 36 - 0
spring-cloud/server-threeapi/src/main/java/com/jd/service/impl/ApiUrlServiceImpl.java

@@ -7,6 +7,7 @@ import com.jd.entity.threeapi.ApiUrl;
 import com.jd.mapper.ApiUrlMapper;
 import com.jd.service.ApiUrlService;
 import com.jd.util.ApiUrlUtil;
+import com.jd.util.GisUtil;
 
 import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
@@ -27,6 +28,10 @@ public class ApiUrlServiceImpl implements ApiUrlService {
 	@Autowired
 	private ApiUrlUtil apiUrlUtil;
 	
+
+	@Autowired
+	private GisUtil gisUtil;
+	
 	@Override
 	public JSONObject sendApiUrl(String urlCode) {
 		ApiUrl apiUrl = apiUrlMapper.getApiUrlByUrlCode(urlCode);
@@ -70,4 +75,35 @@ public class ApiUrlServiceImpl implements ApiUrlService {
 			return null;
 		}
 	}
+	
+	@Override
+	public JSONObject sendGisApi(String urlCode, String params){
+		ApiUrl apiUrl = apiUrlMapper.getApiUrlByUrlCode(urlCode);
+		ApiUrl generateTokenApiUrl = apiUrlMapper.getApiUrlByUrlCode("GIS_01");
+		ApiUrl refreshTokenApiUrl = apiUrlMapper.getApiUrlByUrlCode("GIS_02");
+		if(apiUrl == null || generateTokenApiUrl == null || refreshTokenApiUrl == null) {
+			return null;
+		}
+		JSONObject gisToken = gisUtil.getGisToken(generateTokenApiUrl, refreshTokenApiUrl);
+		String urlApi = apiUrl.getUrlApi();
+		String tokenStr = "{token}";
+		int indexOf = urlApi.indexOf(tokenStr);
+		if(indexOf > -1) {
+			urlApi = urlApi.replace(tokenStr, gisToken.getStr("accessToken"));
+		}
+		String result = apiUrlUtil.sendHttpRequest(apiUrl, params);
+		if(result == null) {
+			return null;
+		}
+		if("".equals(result)) {
+			return new JSONObject();
+		}
+		try {
+			JSONObject parseObj = JSONUtil.parseObj(result);
+			return parseObj;
+		} catch (Exception e) {
+			log.error("json数据转换错误: " + e.getMessage());
+			return null;
+		}
+	}
 }

+ 193 - 0
spring-cloud/server-threeapi/src/main/java/com/jd/util/GisUtil.java

@@ -0,0 +1,193 @@
+package com.jd.util;
+
+import javax.annotation.Resource;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Component;
+
+import com.jd.entity.threeapi.ApiUrl;
+
+import cn.hutool.core.codec.Base64Encoder;
+import cn.hutool.core.convert.Convert;
+import cn.hutool.core.date.DateField;
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.CharsetUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.crypto.SecureUtil;
+import cn.hutool.http.Header;
+import cn.hutool.http.HttpRequest;
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+import lombok.extern.log4j.Log4j2;
+
+/**
+ * GIS地图接口调用
+ * @author leihy
+ *
+ */
+@Component
+@Log4j2
+public class GisUtil {
+	
+
+	@Resource
+	private RedisTemplate<String, Object> redisTemplate;
+
+	@Value("${contrl.connection-timeout}")
+	private Integer connectionTimeout = 30000;
+	
+	public JSONObject getGisToken(ApiUrl generateTokenApiUrl, ApiUrl refreshTokenApiUrl){
+		Long expiresTime = Convert.toLong(redisTemplate.opsForValue().get("gis.expiresTime"));
+		String accessToken = Convert.toStr(redisTemplate.opsForValue().get("gis.accessToken"));
+		String refreshToken = Convert.toStr(redisTemplate.opsForValue().get("gis.refreshToken"));
+		if(StrUtil.isEmpty(refreshToken)) {
+			// 未申请令牌
+			return getGenerateToken(generateTokenApiUrl);
+		}
+		
+		if(expiresTime == null || StrUtil.isEmpty(accessToken)){
+			// 令牌已不存在
+			return getRefreshToken(refreshTokenApiUrl, refreshToken);
+		}
+		
+		Long nowTime = DateUtil.date().getTime();
+		if(nowTime >= expiresTime){
+			// 令牌已过期
+			return getRefreshToken(refreshTokenApiUrl, refreshToken);
+		}
+		
+		JSONObject jsonObject = new JSONObject();
+		jsonObject.set("expiresTime", expiresTime);
+		jsonObject.set("accessToken", accessToken);
+		jsonObject.set("refreshToken", refreshToken);
+		return jsonObject;
+	}
+	
+	private JSONObject getGenerateToken(ApiUrl apiUrl) {
+		String urlParam = apiUrl.getUrlParam();
+		JSONObject urlParamObject = JSONUtil.parseObj(urlParam);
+		String password = urlParamObject.getStr("password");
+		String passwordMd5 = SecureUtil.md5(password);
+		String account = urlParamObject.getStr("password");
+		String authorization = Base64Encoder.encode(account + ":" + passwordMd5, CharsetUtil.CHARSET_UTF_8);
+		String url = apiUrl.getUrlPrefix();
+		String generateMethod = apiUrl.getUrlApi();
+		JSONObject sendUrl = sendUrl(url, generateMethod, authorization);
+		JSONObject resultMap = resultMap(sendUrl);
+		return resultMap;
+	}
+	
+
+	private JSONObject getRefreshToken(ApiUrl apiUrl, String authorization) {
+		String url = apiUrl.getUrlPrefix();
+		String refreshMethod = apiUrl.getUrlApi();
+		JSONObject sendUrl = sendUrl(url, refreshMethod, authorization);
+		JSONObject resultMap = resultMap(sendUrl);
+		return resultMap;
+	}
+	
+	private JSONObject resultMap(JSONObject resultData) {
+		JSONObject resultMap = new JSONObject();
+		String createTime = resultData.getStr("createTime");
+		DateTime myDate = DateUtil.parse(createTime);
+		Integer expiresIn = resultData.getInt("expiresIn");
+		myDate = myDate.offsetNew(DateField.MINUTE, expiresIn - 1);
+		Long expiresTime = myDate.getTime();
+		redisTemplate.opsForValue().set("gis.expiresTime", expiresTime);
+		
+		String accessToken = resultData.getStr("accessToken");
+		redisTemplate.opsForValue().set("gis.accessToken", accessToken);
+		
+		String refreshToken = resultData.getStr("refreshToken");
+		redisTemplate.opsForValue().set("gis.refreshToken", refreshToken);
+		
+		JSONObject jsonObject = new JSONObject();
+		jsonObject.set("expiresTime", expiresTime);
+		jsonObject.set("accessToken", accessToken);
+		jsonObject.set("refreshToken", refreshToken);
+		return jsonObject;
+	}
+	
+	private JSONObject sendUrl(String url, String method, String authorization){
+		try {
+			String result = HttpRequest.get(url + method).header(Header.AUTHORIZATION, authorization).setConnectionTimeout(connectionTimeout)
+					.execute()
+					.body();
+			log.info("返回参数: " + result);
+			JSONObject resultObject = JSONUtil.parseObj(result);
+			JSONObject metaObject = resultObject.getJSONObject("meta");
+			Integer code = metaObject.getInt("code",-100);
+			if(code == 200) {
+				return resultObject.getJSONObject("data");
+			}
+			return null;
+		} catch (Exception e) {
+			log.error("请求报错: " + e.getMessage());
+			e.printStackTrace();
+			return null;
+		}
+	}
+
+	public String getAddressList(String url,String params) {
+		JSONObject paramsObj = JSONUtil.parseObj(params);
+		String result = HttpRequest.get(url)
+			.body(paramsObj.toJSONString(0))
+			.execute()
+			.body();
+		System.err.println("getAddressList.result:");
+		System.err.println(result);
+		return result;
+	}
+
+	public static String getLat(String url,String params) {
+		JSONObject paramsObj = JSONUtil.parseObj(params);
+		String result = HttpRequest.get(url)
+			.body(paramsObj.toJSONString(0))
+			.execute()
+			.body();
+		System.err.println("getLat.result:");
+		System.err.println(result);
+		return result;
+	}
+	
+	public static void main(String[] args) {
+		GisUtil gisUtil = new GisUtil();
+		String url = "http://23.211.37.5:9600";
+		String method = "/auth/om-provider-user/userManage/service/token/generate";
+		String account = "Wjj@2022";
+		String password = "cgjzhzx2022";
+		
+		// 获取token
+		String passwordMd5 = SecureUtil.md5(password);
+		String authorization = Base64Encoder.encode(account + ":" + passwordMd5, CharsetUtil.CHARSET_UTF_8);
+		JSONObject resultData = gisUtil.sendUrl(url, method, authorization);
+		String refreshToken = resultData.getStr("refreshToken");
+		System.err.println("refreshToken:" + refreshToken);
+		String accessToken = resultData.getStr("accessToken");
+		System.err.println("refreshToken:" + accessToken);
+		
+		
+		// 刷新token
+		method = "/auth/om-provider-user/userManage/service/token/refresh";
+		authorization = refreshToken;
+		resultData = gisUtil.sendUrl(url, method, authorization);
+		accessToken = resultData.getStr("accessToken");
+		System.err.println("refreshToken:" + accessToken);
+		
+		//获取地址列表
+		method = "/gw/portal/GN63JL92/sxjIg/{token}";
+		method = method.replace("{token}", accessToken);
+		String params = "{\"pageIndex\":1,pageSize:20,\"name\":\"市政信息中心\"}";
+		gisUtil.getAddressList(url + method, params);
+		
+		//地址转坐标
+		method = "/gw/portal/GN52YL88/IK71c/{token}";
+		method = method.replace("{token}", accessToken);
+		String ak ="sHXMpUkCncAKl0wGWrgAULCLIPnSka6W";
+		params = "{\"address\":\"重庆市\",\"ak\":\"" + ak + "\",\"output\":\"json\",\"ret_coordtype\":\"gcj02ll\"}";
+		gisUtil.getLat(url + method, params);
+	}
+	
+}

+ 137 - 108
xiaoniaoServer/src/main/java/com/jd/xiaoniao/api/XiaoniaoApi.java

@@ -5,6 +5,8 @@ import java.util.List;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.jd.xiaoniao.api.entity.BwotIn;
 import com.jd.xiaoniao.api.entity.BwotOut;
 import com.jd.xiaoniao.api.entity.CwsnIn;
@@ -63,7 +65,7 @@ import com.jd.xiaoniao.api.util.SocketTCP;
 public class XiaoniaoApi {
 	
 	@Autowired
-	private SocketTCP socket;
+	private SocketTCP socket = new SocketTCP();
 	
 	/**
 	 * 获取设备信息
@@ -425,111 +427,138 @@ public class XiaoniaoApi {
 		return result;
 	}
 	
-//	public void main(String[] args) {
-////		System.err.println("-----------getGvsn 1.1 获取设备信息----------");
-////		sendGvsn();
-//		
-////		System.err.println("-----------getGiin 1.2 获取输入端口----------");
-////		sendGiin(SignalCategory.VIDEO);
-//		
-////		System.err.println("-----------getGiou 1.3 获取输出端口----------");
-////		sendGiou(SignalCategory.VIDEO);
-//		
-////		System.err.println("-----------getGtim 1.4 读取时序----------");
-////		sendGtim();
-//		
-////		System.err.println("-----------getRtsp 1.5 获取rtsp流信息----------");
-////		List<String> inputportIds = new ArrayList<>();
-////		inputportIds.add("192.168.1.202");
-////		inputportIds.add("192.168.1.205");
-////		sendRtsp(inputportIds);
-//		
-////		System.err.println("-----------getGvws 2.1 读取拼接屏清单----------");
-////		sendGvws();
-//		
-////		System.err.println("-----------getGvwd 2.2 读取拼接屏的屏幕信息----------");
-////		sendGvwd(1);
-//		
-////		System.err.println("-----------getOpen 2.3. 向指定大屏开窗----------");
-////		List<OpenGawdIn> openGawdIns = new ArrayList<>();
-////		OpenGawdIn openGawdIn = new OpenGawdIn(1, "192.168.1.202", 960, 0, 960, 1080, 1);
-////		openGawdIns.add(openGawdIn);
-////		openGawdIn = new OpenGawdIn(2, "192.168.1.205", 0, 0, 1930, 1080, 1);
-////		openGawdIns.add(openGawdIn);
-////		sendOpen(openGawdIns, true);
-//		
-////		System.err.println("-----------getShut 2.4 关闭指定大屏的窗口----------");
-////		List<Integer> sorts = new ArrayList<>();
-////		sorts.add(1);
-////		sorts.add(2);
-////		sendShut(sorts, 1 , true);
-//		
-////		System.err.println("-----------getBwot 2.5 窗口置顶----------");
-////		sendBwot(1, 1 , true);
-//		
-////		System.err.println("-----------getSwtb 2.6 窗口置底----------");
-////		sendSwtb(1, 1 , true);
-//		
-////		System.err.println("-----------getSall 2.7 清空置顶大屏的窗口----------");
-////		List<Integer> groupIds = new ArrayList<>();
-////		groupIds.add(1);
-////		sendSall(groupIds, true);
-//		
-////		System.err.println("-----------getEnab 2.8 使能大屏的所有操作----------");
-////		sendEnab(1);
-//		
-////		System.err.println("-----------getGawd 2.9 读取指定拼接屏的所有窗口----------");
-////		sendGawd(1);
-//		
-////		System.err.println("-----------getSosm 2.10 配置指定输出端口的显示模式----------");
-////		sendSosm("192.168.1.204", SplitMode.NONE);
-//		
-////		System.err.println("-----------getGosm 2.11 获取指定输出端口的显示模式----------");
-////		List<String> outputIds = new ArrayList<>();
-////		outputIds.add("192.168.1.203");
-////		outputIds.add("192.168.1.204");
-////		sendGosm(SignalCategory.VIDEO, outputIds);
-//		
-////		System.err.println("-----------getSwis 2.12 拼接窗口信号源变更----------");
-////		List<SwisGawdIn> swisGawdIns = new ArrayList<>();
-////		SwisGawdIn swisGawdIn = new SwisGawdIn(1, "192.168.1.202", 1);
-////		swisGawdIns.add(swisGawdIn);
-////		swisGawdIn = new SwisGawdIn(2, "192.168.1.205", 1);
-////		swisGawdIns.add(swisGawdIn);
-////		sendSwis(swisGawdIns, true);
-//
-////		System.err.println("-----------getUwib 2.13 拼接窗口大小位置变更----------");
-////		List<UwibGawdIn> uwibGawdIns = new ArrayList<>();
-////		UwibGawdIn uwibGawdIn = new UwibGawdIn(1, 960, 0, 960, 1080, 1);
-////		uwibGawdIns.add(uwibGawdIn);
-////		uwibGawdIn = new UwibGawdIn(2, 0, 0, 960, 1080, 1);
-////		uwibGawdIns.add(uwibGawdIn);
-////		sendUwib(uwibGawdIns, true);
-//
-////		System.err.println("-----------2.14 大屏冻结(没起效果)----------");
-////		sendHold(1);
-//
-////		System.err.println("-----------2.15 获取场景列表----------");
-////		sendGwsl(1);
-//		
-////		System.err.println("-----------2.16 调用拼接场景----------");
-////		sendCwsn(1, "34154c2b53624c06bbba2416d0400267");
-//		
-////		System.err.println("-----------2.17 保存拼接场景-------- --");
-////		sendSwsn(1, "我的拼接场景");
-//		
-////		System.err.println("-----------2.18 删除拼接场景----------");
-////		sendDwsn("0748e47668e54599875f856c1e225dd8");
-//		
-////		for (int i = 0; i < 1; i++) {
-////			new Thread() {
-////				@Override
-////				public void run() {
-////					System.err.println("-----------"+this.getName()+"----------");
-////					sendGvsn();
-////				}
-////				
-////			}.start();
-////		}
-//	}
+	public static void main(String[] args) {
+//		System.err.println("-----------getGvsn 1.1 获取设备信息----------");
+//		sendGvsn();
+		
+//		System.err.println("-----------getGiin 1.2 获取输入端口----------");
+//		sendGiin(SignalCategory.VIDEO);
+		
+//		System.err.println("-----------getGiou 1.3 获取输出端口----------");
+//		sendGiou(SignalCategory.VIDEO);
+		
+//		System.err.println("-----------getGtim 1.4 读取时序----------");
+//		sendGtim();
+		
+//		System.err.println("-----------getRtsp 1.5 获取rtsp流信息----------");
+//		List<String> inputportIds = new ArrayList<>();
+//		inputportIds.add("192.168.1.202");
+//		inputportIds.add("192.168.1.205");
+//		sendRtsp(inputportIds);
+		
+//		System.err.println("-----------getGvws 2.1 读取拼接屏清单----------");
+//		sendGvws();
+		
+//		System.err.println("-----------getGvwd 2.2 读取拼接屏的屏幕信息----------");
+//		sendGvwd(1);
+		
+//		System.err.println("-----------getOpen 2.3. 向指定大屏开窗----------");
+//		List<OpenGawdIn> openGawdIns = new ArrayList<>();
+//		OpenGawdIn openGawdIn = new OpenGawdIn(1, "192.168.1.202", 960, 0, 960, 1080, 1);
+//		openGawdIns.add(openGawdIn);
+//		openGawdIn = new OpenGawdIn(2, "192.168.1.205", 0, 0, 1930, 1080, 1);
+//		openGawdIns.add(openGawdIn);
+//		sendOpen(openGawdIns, true);
+		
+//		System.err.println("-----------getShut 2.4 关闭指定大屏的窗口----------");
+//		List<Integer> sorts = new ArrayList<>();
+//		sorts.add(1);
+//		sorts.add(2);
+//		sendShut(sorts, 1 , true);
+		
+//		System.err.println("-----------getBwot 2.5 窗口置顶----------");
+//		sendBwot(1, 1 , true);
+		
+//		System.err.println("-----------getSwtb 2.6 窗口置底----------");
+//		sendSwtb(1, 1 , true);
+		
+//		System.err.println("-----------getSall 2.7 清空置顶大屏的窗口----------");
+//		List<Integer> groupIds = new ArrayList<>();
+//		groupIds.add(1);
+//		sendSall(groupIds, true);
+		
+//		System.err.println("-----------getEnab 2.8 使能大屏的所有操作----------");
+//		sendEnab(1);
+		
+//		System.err.println("-----------getGawd 2.9 读取指定拼接屏的所有窗口----------");
+//		sendGawd(1);
+		
+//		System.err.println("-----------getSosm 2.10 配置指定输出端口的显示模式----------");
+//		sendSosm("192.168.1.204", SplitMode.NONE);
+		
+//		System.err.println("-----------getGosm 2.11 获取指定输出端口的显示模式----------");
+//		List<String> outputIds = new ArrayList<>();
+//		outputIds.add("192.168.1.203");
+//		outputIds.add("192.168.1.204");
+//		sendGosm(SignalCategory.VIDEO, outputIds);
+		
+//		System.err.println("-----------getSwis 2.12 拼接窗口信号源变更----------");
+//		List<SwisGawdIn> swisGawdIns = new ArrayList<>();
+//		SwisGawdIn swisGawdIn = new SwisGawdIn(1, "192.168.1.202", 1);
+//		swisGawdIns.add(swisGawdIn);
+//		swisGawdIn = new SwisGawdIn(2, "192.168.1.205", 1);
+//		swisGawdIns.add(swisGawdIn);
+//		sendSwis(swisGawdIns, true);
+
+//		System.err.println("-----------getUwib 2.13 拼接窗口大小位置变更----------");
+//		List<UwibGawdIn> uwibGawdIns = new ArrayList<>();
+//		UwibGawdIn uwibGawdIn = new UwibGawdIn(1, 960, 0, 960, 1080, 1);
+//		uwibGawdIns.add(uwibGawdIn);
+//		uwibGawdIn = new UwibGawdIn(2, 0, 0, 960, 1080, 1);
+//		uwibGawdIns.add(uwibGawdIn);
+//		sendUwib(uwibGawdIns, true);
+
+//		System.err.println("-----------2.14 大屏冻结(没起效果)----------");
+//		sendHold(1);
+
+//		System.err.println("-----------2.15 获取场景列表----------");
+//		sendGwsl(1);
+		
+//		System.err.println("-----------2.16 调用拼接场景----------");
+//		sendCwsn(1, "34154c2b53624c06bbba2416d0400267");
+		
+//		System.err.println("-----------2.17 保存拼接场景-------- --");
+//		sendSwsn(1, "我的拼接场景");
+		
+//		System.err.println("-----------2.18 删除拼接场景----------");
+//		sendDwsn("0748e47668e54599875f856c1e225dd8");
+		
+//		for (int i = 0; i < 1; i++) {
+//			new Thread() {
+//				@Override
+//				public void run() {
+//					System.err.println("-----------"+this.getName()+"----------");
+//					sendGvsn();
+//				}
+//				
+//			}.start();
+//		}
+		
+		XiaoniaoApi xiaoniaoApi = new XiaoniaoApi();
+//		System.err.println("-----------getGvws 2.1 读取拼接屏清单----------");
+//		ResultData<GvwsOut> sendGvws = xiaoniaoApi.sendGvws();
+//		JSONObject parseObject = JSON.parseObject(JSON.toJSONString(sendGvws));
+//		JSONArray jsonArray = parseObject.getJSONArray("data");
+//		for (int i = 0; i < jsonArray.size(); i++) {
+//			JSONObject jsonObject = jsonArray.getJSONObject(i);
+//			Integer groupId = jsonObject.getInteger("groupId");
+//			ResultData<GvwdOut> sendGvwd = xiaoniaoApi.sendGvwd(groupId);
+//			JSONObject parseObject2 = JSON.parseObject(JSON.toJSONString(sendGvwd));
+//			jsonObject.put("sendGvwdList", parseObject2.getJSONArray("data"));
+//			ResultData<GawdOut> sendGawd = xiaoniaoApi.sendGawd(groupId);
+//			JSONObject parseObject3 = JSON.parseObject(JSON.toJSONString(sendGawd));
+//			jsonObject.put("sendGawdList", parseObject3.getJSONArray("data"));
+//		}
+//		System.out.println(JSON.toJSONString(parseObject));
+		
+		JSONObject jsonObject = new JSONObject();
+//		ResultData<GvwdOut> sendGvwd = xiaoniaoApi.sendGvwd(6);
+//		JSONObject parseObject2 = JSON.parseObject(JSON.toJSONString(sendGvwd));
+//		jsonObject.put("sendGvwdList", parseObject2.getJSONArray("data"));
+		ResultData<GawdOut> sendGawd = xiaoniaoApi.sendGawd(6);
+		JSONObject parseObject3 = JSON.parseObject(JSON.toJSONString(sendGawd));
+		jsonObject.put("sendGawdList", parseObject3.getJSONArray("data"));
+		System.out.println(jsonObject.toJSONString());
+		
+	}
 }

部分文件因文件數量過多而無法顯示