Переглянути джерело

设备台账瑞恒数据导入及oa接口

lipenghui 1 місяць тому
батько
коміт
e6a76d1657

+ 0 - 37
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/constant/OaFlow.java

@@ -1,37 +0,0 @@
-package cn.iocoder.yudao.module.pms.constant;
-
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.http.HttpEntity;
-import org.springframework.http.HttpHeaders;
-import org.springframework.stereotype.Component;
-import org.springframework.util.MultiValueMap;
-import org.springframework.web.client.RestTemplate;
-
-import javax.annotation.Resource;
-
-@Component
-public class OaFlow {
-    @Value("${oa.appid}")
-    private String appid;
-    @Value("${oa.cpk}")
-    private String cpk;
-    @Value("${oa.register}")
-    private String registerUrl;
-    @Value("${oa.gettoken}")
-    private String tokenUrl;
-
-
-
-    public void regist() throws Exception{
-        HttpHeaders headers = new HttpHeaders();
-        headers.add("appid", appid);
-        headers.add("cpk", cpk);
-
-        HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<>(headers);
-        RestTemplate restTemplate = SslSkippingRestTemplate.createRestTemplate();
-
-        String result = restTemplate.postForObject(registerUrl, requestEntity, String.class);
-        System.out.println("result:" + result);
-
-    }
-}

+ 2 - 2
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/IotDeviceController.java

@@ -10,7 +10,7 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.framework.datapermission.core.util.DataPermissionUtils;
 import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
 import cn.iocoder.yudao.module.pms.ThingsModelDTO;
-import cn.iocoder.yudao.module.pms.constant.OaFlow;
+import cn.iocoder.yudao.module.pms.oa.OaFlow;
 import cn.iocoder.yudao.module.pms.controller.admin.iotdeviceallotlog.vo.IotDeviceAllotSaveReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.iotdeviceperson.vo.IotDevicePersonRelationSaveReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.vo.IotDevicePageReqVO;
@@ -557,7 +557,7 @@ public class IotDeviceController {
     @GetMapping("/oa/register")
     public void oaRegister() {
         try {
-            oaFlow.regist();
+            oaFlow.getToken();
         } catch (Exception e) {
             throw new RuntimeException(e);
         }

+ 44 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/oa/E9ApiTokenUtil.java

@@ -0,0 +1,44 @@
+package cn.iocoder.yudao.module.pms.oa;
+
+import javax.crypto.Cipher;
+import java.security.KeyFactory;
+import java.security.PublicKey;
+import java.security.spec.X509EncodedKeySpec;
+import java.util.Base64;
+
+public class E9ApiTokenUtil {
+    public static String encryptString(String pubkey, String plaintext) {
+        PublicKey publicKey = null;
+        try {
+            publicKey = getFromBase64String(pubkey);
+        }
+        catch (Exception e) {
+            e.printStackTrace();
+        }
+        if (publicKey == null || plaintext == null) {
+            return null;
+        }
+        byte[] data = plaintext.getBytes();
+        try {
+            byte[] en_data = encrypt(publicKey, data);
+            return Base64.getEncoder().encodeToString(en_data);
+        }
+        catch (Exception ex) {
+            ex.printStackTrace();
+        }
+        return null;
+    }
+    public static PublicKey getFromBase64String(String publicKeyString) throws
+            Exception {
+        byte[] keyBytes = publicKeyString.getBytes();
+        byte[] ks = Base64.getDecoder().decode(keyBytes);
+        X509EncodedKeySpec spec = new X509EncodedKeySpec(ks);
+        KeyFactory kf = KeyFactory.getInstance("RSA");
+        return kf.generatePublic(spec);
+    }
+    public static byte[] encrypt(PublicKey publicKey, byte[] data) throws Exception {
+        Cipher ci = Cipher.getInstance("RSA/ECB/PKCS1Padding");
+        ci.init(Cipher.ENCRYPT_MODE, publicKey);
+        return ci.doFinal(data);
+    }
+}

+ 70 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/oa/OaFlow.java

@@ -0,0 +1,70 @@
+package cn.iocoder.yudao.module.pms.oa;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.stereotype.Component;
+import org.springframework.util.MultiValueMap;
+import org.springframework.web.client.RestTemplate;
+
+@Component
+public class OaFlow {
+    @Value("${oa.appid}")
+    private String appid;
+    @Value("${oa.cpk}")
+    private String cpk;
+    @Value("${oa.register}")
+    private String registerUrl;
+    @Value("${oa.gettoken}")
+    private String tokenUrl;
+    @Value("${oa.userUrl}")
+    private String userUrl;
+    private static String spk = "";
+    private static String secret = "";
+
+
+    public void regist() throws Exception{
+        HttpHeaders headers = new HttpHeaders();
+        headers.add("appid", appid);
+        headers.add("cpk", cpk);
+
+        HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<>(headers);
+        RestTemplate restTemplate = SslSkippingRestTemplate.createRestTemplate();
+
+        String result = restTemplate.postForObject(registerUrl, requestEntity, String.class);
+        JSONObject jsonObject = JSON.parseObject(result);
+        spk = String.valueOf(jsonObject.get("spk"));
+        secret = String.valueOf(jsonObject.get("secret"));
+        System.out.println("result:" + result);
+
+    }
+
+    public void getToken() throws Exception{
+        if (StringUtils.isBlank(spk) || StringUtils.isBlank(secret)) {
+            regist();
+        }
+        String secretEn = E9ApiTokenUtil.encryptString(spk, secret);
+        HttpHeaders headers = new HttpHeaders();
+        headers.add("appid", appid);
+        headers.add("secret", secretEn);
+
+        HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<>(headers);
+        RestTemplate restTemplate = SslSkippingRestTemplate.createRestTemplate();
+
+        String result = restTemplate.postForObject(tokenUrl, requestEntity, String.class);
+        JSONObject jsonObject = JSON.parseObject(result);
+        String token = String.valueOf(jsonObject.get("token"));
+        System.out.println("result:" + result);
+
+        HttpHeaders headersOut = new HttpHeaders();
+        headersOut.add("Authorization", token);
+
+        HttpEntity<MultiValueMap<String, String>> requestEntityOut = new HttpEntity<>(headersOut);
+        String user = restTemplate.postForObject(userUrl, requestEntityOut, String.class);
+        JSONObject userInfo = JSON.parseObject(result);
+        System.out.println("user:" + user);
+    }
+}

+ 18 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/oa/OaVo.java

@@ -0,0 +1,18 @@
+package cn.iocoder.yudao.module.pms.oa;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class OaVo {
+    private String workflowId;
+    private String requestName;
+    private List<MainData> mainData;
+
+    @Data
+    public static class MainData{
+        private String fieldName;
+        private String fieldValue;
+    }
+}

+ 1 - 1
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/constant/SslSkippingRestTemplate.java → yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/oa/SslSkippingRestTemplate.java

@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.module.pms.constant;
+package cn.iocoder.yudao.module.pms.oa;
 
 import org.springframework.http.client.SimpleClientHttpRequestFactory;
 import org.springframework.web.client.RestTemplate;

+ 3 - 2
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/IotTreeServiceImpl.java

@@ -199,15 +199,16 @@ public class IotTreeServiceImpl implements IotTreeService {
                 IotTreeDO iotTreeDO = new IotTreeDO();
                 iotTreeDO.setOriginId(deviceDO.getId());
                 iotTreeDO.setType("device");
-                iotTreeDO.setName(deviceDO.getDeviceName());
+                iotTreeDO.setName(deviceDO.getDeviceCode()+deviceDO.getDeviceName());
                 iotTreeDO.setDeleted(false);
                 iotTreeDO.setDeptId(deviceDO.getDeptId());
                 iotTreeDO.setParentId(iotTreeDOS.get(0).getId());
                 trees.add(iotTreeDO);
             IotInfoClassifyDO classifyDO = new IotInfoClassifyDO();
-            classifyDO.setName(deviceDO.getDeviceName()+"的设备资料");
+            classifyDO.setName(deviceDO.getDeviceCode()+deviceDO.getDeviceName()+"的设备资料");
             classifyDO.setDeviceId(deviceDO.getId());
             classifyDO.setParentId(0L);
+            classifyDO.setStatus(0);
             classifyDO.setDeptId(deviceDO.getDeptId());
             classifies.add(classifyDO);
 //            }

+ 5 - 2
yudao-server/src/main/resources/application-dev.yaml

@@ -278,6 +278,9 @@ system:
 oa:
   register: https://172.17.25.231/api/ec/dev/auth/regist
   gettoken: https://172.17.25.231/api/ec/dev/auth/applytoken
-#  appid: EEAA5436-7577-4BE0-8C6C-89E9D88805EE
-  appid: EEAA5436-7577-4BE0-8C6C-89E9D88805E1
+  outMaintain: https://172.17.25.231/api/workflow/paService/doCreateRequest
+  userUrl: https://172.17.25.231/api/hrm/resful/getHrmUserInfoWithPage
+  #  appid: EEAA5436-7577-4BE0-8C6C-89E9D88805EE
+#  appid: EEAA5436-7577-4BE0-8C6C-89E9D88805E1
+  appid: tw
   cpk: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApmtQUp9M82/z22P7am5owQCknjQnjF4U4ckEh7XVtJVQZrZx7d1lCPfoYrwOKEM4DEV7khW6++4Zv5caJ/9nqPn4QFwCqJWVmCEm9vC1BA6i2yfa4bmTxdR1/oeU/Af9pDFlvv5GC9XyilO7CIKu19Ce50v7aN6h1Tjix+h5Ba8e12XAEpEZk9pFroEYfR4lrecvi1pQOwRw8YzDRC4lhGNOo5Cen1rGjk7dwzzgs4uEv9ZyPZoVJnty5P9JE/ctboEf3x4jbqIliuCRgOyXYsLlp+N282CKcWZ35URkGw2orKyG1U6L1hNoj7kkpvAo8Zagf97SdZ0nYdRBIHv6PQIDAQAB