Преглед на файлове

装置系统新增、修改、删除逻辑修改

丁治程 преди 9 месеца
родител
ревизия
ac6fc55e43
променени са 14 файла, в които са добавени 448 реда и са изтрити 0 реда
  1. 2 0
      jeecg-module-interlock/src/main/java/org/jeecg/modules/base/mapper/InterlockBaseMapper.java
  2. 4 0
      jeecg-module-interlock/src/main/java/org/jeecg/modules/base/mapper/xml/InterlockBaseMapper.xml
  3. 1 0
      jeecg-module-interlock/src/main/java/org/jeecg/modules/base/service/IInterlockBaseService.java
  4. 5 0
      jeecg-module-interlock/src/main/java/org/jeecg/modules/base/service/impl/InterlockBaseServiceImpl.java
  5. 42 0
      jeecg-module-interlock/src/main/java/org/jeecg/modules/iotedgeCollectData/controller/IotedgeCollectDataController.java
  6. 8 0
      jeecg-module-interlock/src/main/java/org/jeecg/modules/iotedgeCollectData/service/IIotedgeCollectDataService.java
  7. 147 0
      jeecg-module-interlock/src/main/java/org/jeecg/modules/iotedgeCollectData/service/RestClientService.java
  8. 170 0
      jeecg-module-interlock/src/main/java/org/jeecg/modules/iotedgeCollectData/service/impl/IotedgeCollectDataServiceImpl.java
  9. 1 0
      jeecg-module-interlock/src/main/java/org/jeecg/modules/iotedgeConfig/mapper/IotedgeConfigMapper.java
  10. 4 0
      jeecg-module-interlock/src/main/java/org/jeecg/modules/iotedgeConfig/mapper/xml/IotedgeConfigMapper.xml
  11. 1 0
      jeecg-module-interlock/src/main/java/org/jeecg/modules/iotedgeConfig/service/IIotedgeConfigService.java
  12. 5 0
      jeecg-module-interlock/src/main/java/org/jeecg/modules/iotedgeConfig/service/impl/IotedgeConfigServiceImpl.java
  13. 22 0
      jeecg-module-interlock/src/main/java/org/jeecg/modules/iotedgeConfig/util/ConfigInfo.java
  14. 36 0
      jeecg-module-interlock/src/main/java/org/jeecg/modules/util/MyResponseErrorHandler.java

+ 2 - 0
jeecg-module-interlock/src/main/java/org/jeecg/modules/base/mapper/InterlockBaseMapper.java

@@ -53,4 +53,6 @@ public interface InterlockBaseMapper extends BaseMapper<InterlockBase> {
 	 *   date: 2024/7/30
 	 */
 	List<InterlockBaseLimit> listByUser(@Param("wiseUser") String wiseUser);
+
+    List<InterlockBase> getListByPId(@Param("interlockId") String interlockId);
 }

+ 4 - 0
jeecg-module-interlock/src/main/java/org/jeecg/modules/base/mapper/xml/InterlockBaseMapper.xml

@@ -50,4 +50,8 @@
 		where qxnr1.limit_type='0' or qxnr1.limit_type='1'
 	</select>
 
+    <select id="getListByPId" resultType="org.jeecg.modules.base.entity.InterlockBase">
+		select * from interlock_base where pid = #{interlockId}
+	</select>
+
 </mapper>

+ 1 - 0
jeecg-module-interlock/src/main/java/org/jeecg/modules/base/service/IInterlockBaseService.java

@@ -114,4 +114,5 @@ public interface IInterlockBaseService extends IService<InterlockBase> {
 	 */
 	void addInterlockBase1(InterlockBase interlockBase);
 
+	List<InterlockBase> getListByPId(String interlockId);
 }

+ 5 - 0
jeecg-module-interlock/src/main/java/org/jeecg/modules/base/service/impl/InterlockBaseServiceImpl.java

@@ -411,4 +411,9 @@ public class InterlockBaseServiceImpl extends ServiceImpl<InterlockBaseMapper, I
         list.add(zhhy);
         return list;
     }
+
+    @Override
+    public List<InterlockBase> getListByPId(String interlockId) {
+        return baseMapper.getListByPId(interlockId);
+    }
 }

Файловите разлики са ограничени, защото са твърде много
+ 42 - 0
jeecg-module-interlock/src/main/java/org/jeecg/modules/iotedgeCollectData/controller/IotedgeCollectDataController.java


+ 8 - 0
jeecg-module-interlock/src/main/java/org/jeecg/modules/iotedgeCollectData/service/IIotedgeCollectDataService.java

@@ -1,10 +1,12 @@
 package org.jeecg.modules.iotedgeCollectData.service;
 
 import com.alibaba.fastjson.JSONObject;
+import org.jeecg.modules.base.entity.InterlockBase;
 import org.jeecg.modules.iotedgeCollectData.entity.IoTEdgeDevices;
 import org.jeecg.modules.iotedgeCollectData.entity.IotedgeCollectData;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import javax.servlet.http.HttpServletRequest;
 import java.util.List;
 
 /**
@@ -18,4 +20,10 @@ public interface IIotedgeCollectDataService extends IService<IotedgeCollectData>
     List<IoTEdgeDevices> getDevicesInfoById();
 
     IotedgeCollectData getOneInfo(String deviceId, String moduleName, String tagName, String beginDate);
+
+    String addGroup(InterlockBase interlockBase, String groupName, HttpServletRequest request);
+
+    String deleteGroup(String interlockId, HttpServletRequest request);
+
+    String updateGroup(InterlockBase interlockBase, String groupName, HttpServletRequest request);
 }

+ 147 - 0
jeecg-module-interlock/src/main/java/org/jeecg/modules/iotedgeCollectData/service/RestClientService.java

@@ -1,13 +1,19 @@
 package org.jeecg.modules.iotedgeCollectData.service;
 
+import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSONObject;
+import org.apache.http.client.HttpClient;
+import org.apache.http.impl.client.HttpClients;
 import org.jeecg.modules.iotedgeConfig.service.IIotedgeConfigService;
 import org.jeecg.modules.iotedgeConfig.util.ConfigInfo;
+import org.jeecg.modules.util.MyResponseErrorHandler;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.*;
+import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
 import org.springframework.stereotype.Service;
 import org.springframework.web.client.RestTemplate;
 
+import javax.management.Query;
 import java.io.File;
 import java.nio.file.Files;
 import java.util.ArrayList;
@@ -174,4 +180,145 @@ public class RestClientService {
         return response;
     }
 
+    /**
+    *   author: dzc
+    *   version: 1.0
+    *   des: 调用接口 在新增装置系统时 在iotedge中新增 名称为 装置_系统 的组织
+    *   date: 2024/7/29
+    */
+    public JSONObject addGroup(String groupName,String elToken){
+        //String url = "http://127.0.0.1:8082/v1/groups";
+        String url = configService.getConfigValue(ConfigInfo.IOTEDGE_ADDGROUP);
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("groupName",groupName);
+        HttpHeaders headers = new HttpHeaders();
+        MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
+        headers.setContentType(type);
+        headers.add("Authorization", "Bearer " + elToken);
+        HttpEntity<String> httpEntity = new HttpEntity<String>(jsonObject.toString(), headers);
+        restTemplate.setErrorHandler(new MyResponseErrorHandler());
+        ResponseEntity<JSONObject> response = restTemplate.postForEntity(url, httpEntity, JSONObject.class);
+        return response.getBody();
+    }
+
+    /**
+    *   author: dzc
+    *   version: 1.0
+    *   des: 调用接口 在删除装置系统时 在iotedge中删除对应的组织
+    *   date: 2024/7/30
+    */
+    public JSONObject deleteGroup(String groupId,String elToken){
+        //String url = "http://127.0.0.1:8082/v1/groups"+"/"+groupId;
+        String url = configService.getConfigValue(ConfigInfo.IOTEDGE_DELETEGROUP)+"/"+groupId;
+        HttpHeaders headers = new HttpHeaders();
+        MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
+        headers.setContentType(type);
+        headers.add("Authorization", "Bearer " + elToken);
+        HttpEntity<String> httpEntity = new HttpEntity<String>(null, headers);
+        restTemplate.setErrorHandler(new MyResponseErrorHandler());
+        ResponseEntity<JSONObject> response = restTemplate.exchange(url, HttpMethod.DELETE,httpEntity, JSONObject.class);
+        return response.getBody();
+    }
+
+
+    /**
+    *   author: dzc
+    *   version: 1.0
+    *   des: sso登录
+    *   date: 2024/8/1
+    */
+    private String getSSOToken(){
+        //String url = "http://127.0.0.1:8188/v4.0/auth/native";
+        String url = configService.getConfigValue(ConfigInfo.SSO_LOGIN_URL);
+        String username = configService.getConfigValue(ConfigInfo.SSO_SYS_USERNAME);
+        String password = configService.getConfigValue(ConfigInfo.SSO_SYS_PASSWORD);
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("username",username);
+        jsonObject.put("password",password);
+        HttpHeaders headers = new HttpHeaders();
+        MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
+        headers.setContentType(type);
+        HttpEntity<String> httpEntity = new HttpEntity<String>(jsonObject.toString(), headers);
+        ResponseEntity<JSONObject> response = restTemplate.postForEntity(url, httpEntity, JSONObject.class);
+        String accessToken = (String) response.getBody().get("accessToken");
+        return accessToken;
+    }
+
+
+    /**
+    *   author: dzc
+    *   version: 1.0
+    *   des: 调用 SSO 的接口去获取 clientId 、 clientSecret
+    *   date: 2024/8/1
+    */
+    public JSONObject getClientInfo(){
+        String token = getSSOToken();
+        //String url = "http://127.0.0.1:8188/v4.0/clients?page=1&maxResults=10&appName=iothub";
+        String url = configService.getConfigValue(ConfigInfo.SSO_GetClientInfo);
+        HttpHeaders headers = new HttpHeaders();
+        MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
+        headers.setContentType(type);
+        headers.add("Authorization", "Bearer " + token);
+        HttpEntity<String> httpEntity = new HttpEntity<String>(null, headers);
+        restTemplate.setErrorHandler(new MyResponseErrorHandler());
+        ResponseEntity<JSONObject> response = restTemplate.exchange(url, HttpMethod.GET,httpEntity, JSONObject.class);
+        return response.getBody();
+    }
+
+    /**
+    *   author: dzc
+    *   version: 1.0
+    *   des: 调用 SSO 的接口去获取 accessToken
+    *   date: 2024/8/1
+    */
+    public String getClientToken(){
+        JSONObject clientInfo = getClientInfo();
+        ArrayList<Map<String,Object>> resources = (ArrayList<Map<String,Object>>) clientInfo.get("resources");
+        String clientId = (String) resources.get(0).get("clientId");
+        String clientSecret = (String) resources.get(0).get("clientSecret");
+        //String url = "http://127.0.0.1:8188/v4.0/oauth/token?grant_type=client_credentials&client_id="+clientId+"&client_secret="+clientSecret+"&duration=eternal";
+        String url = configService.getConfigValue(ConfigInfo.SSO_GetClientToken)+"?grant_type=client_credentials&client_id="+clientId+"&client_secret="+clientSecret+"&duration=eternal";
+        HttpHeaders headers = new HttpHeaders();
+        MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
+        //headers.setContentType(type);
+        //headers.add("Authorization", "Bearer " + token);
+        HttpEntity<String> httpEntity = new HttpEntity<String>(null, headers);
+        restTemplate.setErrorHandler(new MyResponseErrorHandler());
+        ResponseEntity<JSONObject> response = restTemplate.exchange(url, HttpMethod.POST,httpEntity, JSONObject.class);
+        String accessToken = (String) response.getBody().get("accessToken");
+        System.out.println("-----------"+accessToken.length());
+        configService.updateClientToken(accessToken);
+        return accessToken;
+    }
+
+    /**
+    *   author: dzc
+    *   version: 1.0
+    *   des: 调用 IotEdge 的接口 在修改装置系统时 去修改IoTEdge中对应的组织名称
+    *   date: 2024/8/1
+    */
+    public JSONObject updateGroup(String groupName,String groupId){
+        String clientToken = configService.getConfigValue(ConfigInfo.CLIENT_TOKEN);
+        if (ObjectUtil.isNull(clientToken) || "".equals(clientToken)){
+            clientToken = getClientToken();
+        }
+        //String url = "http://127.0.0.1:8082/v1/org"+"/"+groupId;
+        String url = configService.getConfigValue(ConfigInfo.IOTEDGE_UPDATEGROUP)+"/"+groupId;
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("orgName",groupName);
+        HttpHeaders headers = new HttpHeaders();
+        MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
+        headers.setContentType(type);
+        headers.add("Authorization", "Bearer " + clientToken);
+        HttpEntity<String> httpEntity = new HttpEntity<String>(jsonObject.toString(), headers);
+
+        HttpClient httpClient = HttpClients.custom().build();
+        HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory(httpClient);
+
+        RestTemplate restTemplate1 = new RestTemplate(factory);
+        restTemplate1.setErrorHandler(new MyResponseErrorHandler());
+        ResponseEntity<JSONObject> response = restTemplate1.exchange(url,HttpMethod.PATCH,httpEntity, JSONObject.class);
+        return response.getBody();
+    }
+
 }

Файловите разлики са ограничени, защото са твърде много
+ 170 - 0
jeecg-module-interlock/src/main/java/org/jeecg/modules/iotedgeCollectData/service/impl/IotedgeCollectDataServiceImpl.java


+ 1 - 0
jeecg-module-interlock/src/main/java/org/jeecg/modules/iotedgeConfig/mapper/IotedgeConfigMapper.java

@@ -14,4 +14,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface IotedgeConfigMapper extends BaseMapper<IotedgeConfig> {
 
+    int updateClientToken(@Param("accessToken") String accessToken);
 }

+ 4 - 0
jeecg-module-interlock/src/main/java/org/jeecg/modules/iotedgeConfig/mapper/xml/IotedgeConfigMapper.xml

@@ -2,4 +2,8 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="org.jeecg.modules.iotedgeConfig.mapper.IotedgeConfigMapper">
 
+    <update id="updateClientToken">
+        update "iotedge_config" set configvalue = #{accessToken} where configkey = 'ClientToken'
+    </update>
+
 </mapper>

+ 1 - 0
jeecg-module-interlock/src/main/java/org/jeecg/modules/iotedgeConfig/service/IIotedgeConfigService.java

@@ -13,4 +13,5 @@ public interface IIotedgeConfigService extends IService<IotedgeConfig> {
 
     public String getConfigValue(String configkey);
 
+    int updateClientToken(String accessToken);
 }

+ 5 - 0
jeecg-module-interlock/src/main/java/org/jeecg/modules/iotedgeConfig/service/impl/IotedgeConfigServiceImpl.java

@@ -29,4 +29,9 @@ public class IotedgeConfigServiceImpl extends ServiceImpl<IotedgeConfigMapper, I
         IotedgeConfig iotedgeConfig = mapper.selectOne(query);
         return iotedgeConfig.getConfigvalue();
     }
+
+    @Override
+    public int updateClientToken(String accessToken) {
+        return mapper.updateClientToken(accessToken);
+    }
 }

+ 22 - 0
jeecg-module-interlock/src/main/java/org/jeecg/modules/iotedgeConfig/util/ConfigInfo.java

@@ -41,5 +41,27 @@ public class ConfigInfo {
 
     public static String CS = "CS";
 
+    /** SSO-系统管理员账号 */
+    public static String SSO_SYS_USERNAME = "SSO.SysUserName";
 
+    /** SSO-系统管理员密码 */
+    public static String SSO_SYS_PASSWORD = "SSO.SysPassWord";
+
+    /** SSO-获取clientId、clientSecret */
+    public static String SSO_GetClientInfo = "SSO.GetClientInfo";
+
+    /** SSO-获取clientToken */
+    public static String SSO_GetClientToken = "SSO.GetClientToken";
+
+    /** IoTEdge-新增组织 */
+    public static String IOTEDGE_ADDGROUP = "IoTEdge.AddGroup";
+
+    /** IoTEdge-删除组织 */
+    public static String IOTEDGE_DELETEGROUP = "IoTEdge.DeleteGroup";
+
+    /** IoTEdge-修改组织 */
+    public static String IOTEDGE_UPDATEGROUP = "IoTEdge.UpdateGroup";
+
+    /** 永久ClientToken */
+    public static String CLIENT_TOKEN = "ClientToken";
 }

+ 36 - 0
jeecg-module-interlock/src/main/java/org/jeecg/modules/util/MyResponseErrorHandler.java

@@ -0,0 +1,36 @@
+package org.jeecg.modules.util;
+
+import org.springframework.http.HttpStatus;
+import org.springframework.http.client.ClientHttpResponse;
+import org.springframework.web.client.ResponseErrorHandler;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.stream.Collectors;
+
+/**
+ * @author dzc
+ * @date 2024/7/31 16:30
+ * @package org.jeecg.modules.util
+ * @project interlock_server
+ * @des
+ */
+public class MyResponseErrorHandler implements ResponseErrorHandler {
+
+    @Override
+    public boolean hasError(ClientHttpResponse response) throws IOException {
+        return (
+                response.getStatusCode().series() == HttpStatus.Series.CLIENT_ERROR
+                        || response.getStatusCode().series() == HttpStatus.Series.SERVER_ERROR);
+    }
+
+    @Override
+    public void handleError(ClientHttpResponse response) throws IOException {
+        String responseBody = "";
+        try (BufferedReader reader = new BufferedReader(new InputStreamReader(response.getBody()))) {
+            responseBody = reader.lines().collect(Collectors.joining("\n"));
+        }
+        throw new RuntimeException(responseBody);
+    }
+}