|
@@ -0,0 +1,218 @@
|
|
|
|
+package com.steerinfo.dil.service.impl;
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
|
+import com.openapi.sdk.service.DataExchangeService;
|
|
|
|
+import com.steerinfo.dil.mapper.ZJXLUtilMapper;
|
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
+import org.springframework.beans.factory.annotation.Value;
|
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
|
+import org.springframework.util.StringUtils;
|
|
|
|
+
|
|
|
|
+import java.util.HashMap;
|
|
|
|
+import java.util.Map;
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * @ author :TXF
|
|
|
|
+ * @ time :2022/1/11 15:27
|
|
|
|
+ */
|
|
|
|
+
|
|
|
|
+@Service
|
|
|
|
+public class ZJXLUtilServiceImpl {
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private ZJXLUtilMapper zjxlUtilMapper;
|
|
|
|
+
|
|
|
|
+ @Value("${str.ZhongJiaoXingLu.cid}")
|
|
|
|
+ private String cid;
|
|
|
|
+ @Value("${str.ZhongJiaoXingLu.srt}")
|
|
|
|
+ private String srt;
|
|
|
|
+ @Value("${str.ZhongJiaoXingLu.user}")
|
|
|
|
+ private String user;
|
|
|
|
+ @Value("${str.ZhongJiaoXingLu.pwd}")
|
|
|
|
+ private String pwd;
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ private String userflag = "DaZhouGangTie"; //标识
|
|
|
|
+
|
|
|
|
+ private String lonlat = "107.4628199,31.1925279"; //中心点坐标
|
|
|
|
+
|
|
|
|
+ private String radius = "3000"; //半径
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 车辆订阅接口
|
|
|
|
+ * @Author TXF
|
|
|
|
+ * @Date 2022/1/12 14:18
|
|
|
|
+ * @param map
|
|
|
|
+ * @return
|
|
|
|
+ **/
|
|
|
|
+ public String subsCapacity(Map<String, Object> map,int i){
|
|
|
|
+
|
|
|
|
+ if (i==3){
|
|
|
|
+ return "超出递归次数限制";
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (map.get("capacityNumber")==null||"".equals(map.get("capacityNumber").toString())){
|
|
|
|
+ return "参数【capacityNumber】车号,为空";
|
|
|
|
+ }
|
|
|
|
+ Map<String, String> mesMap = new HashMap<>();
|
|
|
|
+ mesMap.put("token", zjxlUtilMapper.getToken());
|
|
|
|
+ mesMap.put("cid", cid);
|
|
|
|
+ mesMap.put("srt", srt);
|
|
|
|
+ mesMap.put("userflag", userflag);
|
|
|
|
+ String areaId = zjxlUtilMapper.getAreaId();
|
|
|
|
+ if(areaId==null){
|
|
|
|
+ return "区域id为空";
|
|
|
|
+ }
|
|
|
|
+ mesMap.put("areaid", areaId);
|
|
|
|
+ mesMap.put("vnos", (String) map.get("capacityNumber"));
|
|
|
|
+ String url = "https://openapi.sinoiov.cn/save/apis/vnoReg";
|
|
|
|
+ try {
|
|
|
|
+ DataExchangeService des = new DataExchangeService(5000, 8000);
|
|
|
|
+ // 通过 https 方式调用,此方法内部会使用私钥生成签名参数 sign,私钥不会发送
|
|
|
|
+ String res = des.postHttps(url, mesMap);
|
|
|
|
+ Map<String, Object> jsonMap = JSON.parseObject(res);
|
|
|
|
+ Object status = jsonMap.get("status");
|
|
|
|
+ if("1016".equals(status.toString())){
|
|
|
|
+ if(login() == 1){
|
|
|
|
+ return subsCapacity(map,i+1); //递归订阅
|
|
|
|
+ }else {
|
|
|
|
+ return "登录失败,状态码:"+status;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if("1001".equals(status.toString())){
|
|
|
|
+ if("2".equals(jsonMap.get("result").toString())){
|
|
|
|
+ //如果是自定义区域不存在则重新注册自定义区域
|
|
|
|
+ if(registerAreaReg() == 1){
|
|
|
|
+ return subsCapacity(map,i+1);
|
|
|
|
+ }
|
|
|
|
+ }else {
|
|
|
|
+ return "订阅成功";
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ System.out.println("错误信息:" + e.getMessage());
|
|
|
|
+ }
|
|
|
|
+ return "订阅失败";
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 自定义区域注册接口
|
|
|
|
+ * @Author TXF
|
|
|
|
+ * @Date 2022/1/12 14:36
|
|
|
|
+ * @param
|
|
|
|
+ * @return 1 成功 0 失败
|
|
|
|
+ **/
|
|
|
|
+ public int registerAreaReg(){
|
|
|
|
+ Map<String, String> mesMap = new HashMap<>(9);
|
|
|
|
+ mesMap.put("token", zjxlUtilMapper.getToken());
|
|
|
|
+ mesMap.put("cid", cid);
|
|
|
|
+ mesMap.put("srt", srt);
|
|
|
|
+ mesMap.put("userflag", userflag);
|
|
|
|
+ mesMap.put("areaname", "达州钢铁老厂区");
|
|
|
|
+ mesMap.put("lonlat", lonlat);
|
|
|
|
+ mesMap.put("radius", radius);
|
|
|
|
+ mesMap.put("type", "1");
|
|
|
|
+ mesMap.put("actiontype", "1");
|
|
|
|
+ String url = "https://openapi.sinoiov.cn/save/apis/areaReg";
|
|
|
|
+ try {
|
|
|
|
+ DataExchangeService des = new DataExchangeService(5000, 8000);
|
|
|
|
+ // 通过 https 方式调用,此方法内部会使用私钥生成签名参数 sign,私钥不会发送
|
|
|
|
+ String res = des.postHttps(url, mesMap);
|
|
|
|
+ Map<String, Object> jsonMap = JSON.parseObject(res);
|
|
|
|
+ if("1001".equals(jsonMap.get("status").toString())){
|
|
|
|
+ // 更新注册区域ID
|
|
|
|
+ Map<String, Object> areaIdMap = (Map<String, Object>) jsonMap.get("result");
|
|
|
|
+ if("1".equals(areaIdMap.get("state").toString())){
|
|
|
|
+ String areaid = String.valueOf(areaIdMap.get("areaid"));
|
|
|
|
+ int i = zjxlUtilMapper.updateAreaId(areaid);
|
|
|
|
+ if(i==0){
|
|
|
|
+ return 0;
|
|
|
|
+ }
|
|
|
|
+ System.out.println("new areaid: " + areaid);
|
|
|
|
+ return 1;
|
|
|
|
+ }else {
|
|
|
|
+ return 0;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ System.out.println("错误信息:" + e.getMessage());
|
|
|
|
+ }
|
|
|
|
+ return 0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 登录接口
|
|
|
|
+ * @Author TXF
|
|
|
|
+ * @Date 2022/1/12 15:23
|
|
|
|
+ * @param
|
|
|
|
+ * @return 1 成功 0 失败
|
|
|
|
+ **/
|
|
|
|
+ public int login() {
|
|
|
|
+ try {
|
|
|
|
+ Map<String, String> map = new HashMap<>(4);
|
|
|
|
+ map.put("user", user);
|
|
|
|
+ map.put("pwd", pwd);
|
|
|
|
+ map.put("cid", cid);
|
|
|
|
+ map.put("srt", srt);
|
|
|
|
+ String url = "https://openapi.sinoiov.cn/save/apis/login/";
|
|
|
|
+ DataExchangeService des = new DataExchangeService(5000, 8000);
|
|
|
|
+ // 通过 https 方式调用,此方法内部会使用私钥生成签名参数 sign,私钥不会发送
|
|
|
|
+ String res = des.postHttps(url, map);
|
|
|
|
+ JSONObject jsonObject = JSONObject.parseObject(res);
|
|
|
|
+ String token = jsonObject.get("result").toString();
|
|
|
|
+ zjxlUtilMapper.updateToken(token);
|
|
|
|
+ return 1;
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ System.out.println("登录中交兴路出错"+e.getMessage());
|
|
|
|
+ return 0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 删除车辆订阅接口
|
|
|
|
+ * @Author TXF
|
|
|
|
+ * @Date 2022/1/12 17:11
|
|
|
|
+ * @param map
|
|
|
|
+ * @return
|
|
|
|
+ **/
|
|
|
|
+ public int cancelSubsCapacity(Map<String, Object> map,int i){
|
|
|
|
+ if (i==3){
|
|
|
|
+ return -2;
|
|
|
|
+ }
|
|
|
|
+ Map<String, String> mesMap = new HashMap<>(4);
|
|
|
|
+ mesMap.put("cid", cid);
|
|
|
|
+ mesMap.put("srt", srt);
|
|
|
|
+ mesMap.put("token", zjxlUtilMapper.getToken());
|
|
|
|
+ mesMap.put("userflag", userflag);
|
|
|
|
+ mesMap.put("vnos", (String) map.get("capacityNumber"));
|
|
|
|
+ mesMap.put("areaid", zjxlUtilMapper.getAreaId());
|
|
|
|
+ String url = "https://openapi.sinoiov.cn/save/apis/vnoDel";
|
|
|
|
+ try {
|
|
|
|
+ DataExchangeService des = new DataExchangeService(5000, 8000);
|
|
|
|
+ String res = des.postHttps(url, mesMap);
|
|
|
|
+ JSONObject jsonObject = JSONObject.parseObject(res);
|
|
|
|
+ if("1016".equals(StringUtils.isEmpty(jsonObject.get("status"))?"":jsonObject.get("status").toString())){
|
|
|
|
+ if (login()==1) {
|
|
|
|
+ return cancelSubsCapacity(map,i+1);
|
|
|
|
+ }else {
|
|
|
|
+ return -1;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if("1001".equals(StringUtils.isEmpty(jsonObject.get("status"))?"":jsonObject.get("status").toString())){
|
|
|
|
+ if("1".equals(StringUtils.isEmpty(jsonObject.get("result"))?"":jsonObject.get("result").toString())){
|
|
|
|
+ return 1;
|
|
|
|
+ }else {
|
|
|
|
+ return 0;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ e.printStackTrace();
|
|
|
|
+ return 0;
|
|
|
|
+ }
|
|
|
|
+ return 0;
|
|
|
|
+ }
|
|
|
|
+}
|