|
@@ -0,0 +1,745 @@
|
|
|
+package com.tyson.util;
|
|
|
+
|
|
|
+import com.aliyun.dingtalkoauth2_1_0.models.GetAccessTokenRequest;
|
|
|
+import com.aliyun.dingtalkoauth2_1_0.models.GetAccessTokenResponse;
|
|
|
+import com.aliyun.tea.*;
|
|
|
+import com.aliyun.teautil.*;
|
|
|
+import com.aliyun.teautil.models.*;
|
|
|
+import com.aliyun.dingtalkyida_1_0.*;
|
|
|
+import com.aliyun.dingtalkyida_1_0.models.*;
|
|
|
+import com.aliyun.teaopenapi.*;
|
|
|
+import com.aliyun.teaopenapi.models.*;
|
|
|
+import com.sun.xml.bind.v2.model.core.ID;
|
|
|
+import com.tyson.consts.dingConst;
|
|
|
+import org.json.JSONArray;
|
|
|
+import org.json.JSONObject;
|
|
|
+import org.springframework.aop.scope.ScopedProxyUtils;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.http.HttpEntity;
|
|
|
+import org.springframework.http.HttpHeaders;
|
|
|
+import org.springframework.http.MediaType;
|
|
|
+import org.springframework.http.ResponseEntity;
|
|
|
+import org.springframework.stereotype.Component;
|
|
|
+import org.springframework.web.client.RestTemplate;
|
|
|
+
|
|
|
+/*
|
|
|
+ * Decription:
|
|
|
+ * dingding util
|
|
|
+ * @author hzk
|
|
|
+ * @ClassName dingUtil
|
|
|
+ * @Date 2022/3/29 14:29
|
|
|
+ */
|
|
|
+@Component
|
|
|
+public class dingUtil {
|
|
|
+ @Autowired
|
|
|
+ private dingConst dingConst;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 使用 Token 初始化账号DingClient
|
|
|
+ *
|
|
|
+ * @return Client
|
|
|
+ * @throws Exception
|
|
|
+ */
|
|
|
+ public static com.aliyun.dingtalkoauth2_1_0.Client createDingClient() throws Exception {
|
|
|
+ Config config = new Config();
|
|
|
+ config.protocol = "https";
|
|
|
+ config.regionId = "central";
|
|
|
+ return new com.aliyun.dingtalkoauth2_1_0.Client(config);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 使用 Token 初始化账号YiDaClient
|
|
|
+ *
|
|
|
+ * @return Client
|
|
|
+ * @throws Exception
|
|
|
+ */
|
|
|
+ public static com.aliyun.dingtalkyida_1_0.Client createYiDaClient() throws Exception {
|
|
|
+ Config config = new Config();
|
|
|
+ config.protocol = "https";
|
|
|
+ config.regionId = "central";
|
|
|
+ return new com.aliyun.dingtalkyida_1_0.Client(config);
|
|
|
+ }
|
|
|
+
|
|
|
+ /***
|
|
|
+ * 获取在职人员50人的UserId
|
|
|
+ * ByPage
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public String getEmployeeQueryonjob(int page) {
|
|
|
+ JSONObject object = new JSONObject();
|
|
|
+ object.put("status_list", "2,3,5,-1");
|
|
|
+ object.put("size", 50);
|
|
|
+ object.put("offset", page);
|
|
|
+ try {
|
|
|
+
|
|
|
+ return HttpUtil.post("https://oapi.dingtalk.com/topapi/smartwork/hrm/employee/queryonjob?access_token=" + getAccessToken(), null, object.toString(), null);
|
|
|
+ } catch (Exception exception) {
|
|
|
+ exception.printStackTrace();
|
|
|
+ }
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取企业内部应用的accessToken
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public String getAccessToken() throws Exception {
|
|
|
+ String token = "";
|
|
|
+ com.aliyun.dingtalkoauth2_1_0.Client client = dingUtil.createDingClient();
|
|
|
+ GetAccessTokenRequest getAccessTokenRequest = new GetAccessTokenRequest()
|
|
|
+ .setAppKey(dingConst.getAppKey())
|
|
|
+ .setAppSecret(dingConst.getAppSecret());
|
|
|
+ try {
|
|
|
+ GetAccessTokenResponse accessToken = client.getAccessToken(getAccessTokenRequest);
|
|
|
+ // System.out.println(accessToken.getBody().getExpireIn());
|
|
|
+ token = accessToken.getBody().getAccessToken();
|
|
|
+ } catch (TeaException err) {
|
|
|
+ if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
|
|
|
+ // err 中含有 code 和 message 属性,可帮助开发定位问题
|
|
|
+ }
|
|
|
+
|
|
|
+ } catch (Exception _err) {
|
|
|
+ TeaException err = new TeaException(_err.getMessage(), _err);
|
|
|
+ if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
|
|
|
+ // err 中含有 code 和 message 属性,可帮助开发定位问题
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ return token;
|
|
|
+ }
|
|
|
+
|
|
|
+ /***
|
|
|
+ * 解析附件-将宜搭附件下载至本地
|
|
|
+ * @param downloadUrl 附件下载地址 /ossFileHandle
|
|
|
+ * @param fileName 附件名称 xxx.jpg
|
|
|
+ * @param filePath 附件下载路径 C:/HIH3WEB_IMG_CACHE/
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public String downloadFj(String downloadUrl, String fileName, String filePath) throws Exception {
|
|
|
+ String fileName_OR = filePath + System.currentTimeMillis() + "_" + fileName;
|
|
|
+ HttpUtil.downloadUsingNIO(getFjNotLoginUrl(dingConst.getUrl() + downloadUrl), fileName_OR);
|
|
|
+ return fileName_OR;
|
|
|
+ }
|
|
|
+
|
|
|
+ /***
|
|
|
+ * 解析附件-将宜搭附件批量下载至本地
|
|
|
+ * @param files 宜搭附件字段数组
|
|
|
+ * @param filePath 附件下载路径 C:/HIH3WEB_IMG_CACHE/
|
|
|
+ * @return 附件地址数组
|
|
|
+ */
|
|
|
+ public JSONArray downloadFjs(JSONArray files, String filePath) throws Exception {
|
|
|
+ JSONArray jsonArray = new JSONArray();
|
|
|
+ for (int i = 0; i < files.length(); i++) {
|
|
|
+ String downloadUrl = files.getJSONObject(i).getString("downloadUrl");
|
|
|
+ String name = files.getJSONObject(i).getString("name");
|
|
|
+ String s = downloadFj(downloadUrl, name, filePath);
|
|
|
+ jsonArray.put(s);
|
|
|
+ }
|
|
|
+ return jsonArray;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取附件免登地址
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public String getFjNotLoginUrl(String Url) throws Exception {
|
|
|
+ if (!Url.contains(dingConst.getUrl())) {
|
|
|
+ Url = dingConst.getUrl() + Url;
|
|
|
+ }
|
|
|
+ com.aliyun.dingtalkyida_1_0.Client client = dingUtil.createYiDaClient();
|
|
|
+ GetOpenUrlHeaders getOpenUrlHeaders = new GetOpenUrlHeaders();
|
|
|
+ getOpenUrlHeaders.xAcsDingtalkAccessToken = getAccessToken();
|
|
|
+ GetOpenUrlRequest getOpenUrlRequest = new GetOpenUrlRequest()
|
|
|
+ .setSystemToken(dingConst.getSystemToken())
|
|
|
+ .setUserId(dingConst.getUserId())
|
|
|
+ .setLanguage("zh_CN")
|
|
|
+ .setFileUrl(Url)
|
|
|
+ .setTimeout(60000L);
|
|
|
+ try {
|
|
|
+ GetOpenUrlResponse openUrlWithOptions = client.getOpenUrlWithOptions(dingConst.getAppType(), getOpenUrlRequest, getOpenUrlHeaders, new RuntimeOptions());
|
|
|
+ return openUrlWithOptions.getBody().getResult();
|
|
|
+ } catch (TeaException err) {
|
|
|
+ if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
|
|
|
+ // err 中含有 code 和 message 属性,可帮助开发定位问题
|
|
|
+ System.out.println(err.message);
|
|
|
+ System.out.println(err.toString());
|
|
|
+ return err.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ } catch (Exception _err) {
|
|
|
+ _err.printStackTrace();
|
|
|
+ TeaException err = new TeaException(_err.getMessage(), _err);
|
|
|
+ if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
|
|
|
+ // err 中含有 code 和 message 属性,可帮助开发定位问题
|
|
|
+ System.out.println(err.message);
|
|
|
+ System.out.println(err.toString());
|
|
|
+ return err.toString();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询表单实例数据
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public String yiDaSearch(String FormUuid, JSONObject searchFieldJson) throws Exception {
|
|
|
+ String reluert = "";
|
|
|
+ com.aliyun.dingtalkyida_1_0.Client client = dingUtil.createYiDaClient();
|
|
|
+ SearchFormDatasHeaders searchFormDatasHeaders = new SearchFormDatasHeaders();
|
|
|
+ String accessToken = this.getAccessToken();
|
|
|
+ searchFormDatasHeaders.xAcsDingtalkAccessToken = accessToken;
|
|
|
+ SearchFormDatasRequest searchFormDatasRequest = new SearchFormDatasRequest()
|
|
|
+ .setAppType(dingConst.getAppType())
|
|
|
+ .setSystemToken(dingConst.getSystemToken())
|
|
|
+ .setUserId(dingConst.getUserId())
|
|
|
+ .setLanguage("zh_CN")
|
|
|
+ .setFormUuid(FormUuid)
|
|
|
+ .setPageSize(100)
|
|
|
+ .setCurrentPage(1)
|
|
|
+ .setSearchFieldJson(searchFieldJson.toString());
|
|
|
+ try {
|
|
|
+ SearchFormDatasResponse searchFormDatasResponse = client.searchFormDatasWithOptions(searchFormDatasRequest, searchFormDatasHeaders, new RuntimeOptions());
|
|
|
+ reluert = new JSONArray(searchFormDatasResponse.getBody().getData()).toString();
|
|
|
+
|
|
|
+ } catch (TeaException err) {
|
|
|
+ err.printStackTrace();
|
|
|
+ if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
|
|
|
+ // err 中含有 code 和 message 属性,可帮助开发定位问题
|
|
|
+ System.out.println(err.message);
|
|
|
+ System.out.println(err.toString());
|
|
|
+ return err.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ } catch (Exception _err) {
|
|
|
+ _err.printStackTrace();
|
|
|
+ TeaException err = new TeaException(_err.getMessage(), _err);
|
|
|
+ if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
|
|
|
+ // err 中含有 code 和 message 属性,可帮助开发定位问题
|
|
|
+ System.out.println(err.message);
|
|
|
+ System.out.println(err.toString());
|
|
|
+ return err.toString();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return reluert;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public long yiDaSearch2(String FormUuid, JSONObject searchFieldJson) throws Exception {
|
|
|
+ String reluert = "";
|
|
|
+ com.aliyun.dingtalkyida_1_0.Client client = dingUtil.createYiDaClient();
|
|
|
+ SearchFormDatasHeaders searchFormDatasHeaders = new SearchFormDatasHeaders();
|
|
|
+ String accessToken = this.getAccessToken();
|
|
|
+ searchFormDatasHeaders.xAcsDingtalkAccessToken = accessToken;
|
|
|
+ SearchFormDatasRequest searchFormDatasRequest = new SearchFormDatasRequest()
|
|
|
+ .setAppType(dingConst.getAppType())
|
|
|
+ .setSystemToken(dingConst.getSystemToken())
|
|
|
+ .setUserId(dingConst.getUserId())
|
|
|
+ .setLanguage("zh_CN")
|
|
|
+ .setFormUuid(FormUuid)
|
|
|
+ .setPageSize(100)
|
|
|
+ .setCurrentPage(1)
|
|
|
+ .setSearchFieldJson(searchFieldJson.toString());
|
|
|
+ try {
|
|
|
+ SearchFormDatasResponse searchFormDatasResponse = client.searchFormDatasWithOptions(searchFormDatasRequest, searchFormDatasHeaders, new RuntimeOptions());
|
|
|
+ return searchFormDatasResponse.getBody().getTotalCount();
|
|
|
+
|
|
|
+ } catch (TeaException err) {
|
|
|
+ err.printStackTrace();
|
|
|
+ if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
|
|
|
+ // err 中含有 code 和 message 属性,可帮助开发定位问题
|
|
|
+ System.out.println(err.message);
|
|
|
+ System.out.println(err.toString());
|
|
|
+ return 0l;
|
|
|
+ }
|
|
|
+
|
|
|
+ } catch (Exception _err) {
|
|
|
+ _err.printStackTrace();
|
|
|
+ TeaException err = new TeaException(_err.getMessage(), _err);
|
|
|
+ if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
|
|
|
+ // err 中含有 code 和 message 属性,可帮助开发定位问题
|
|
|
+ System.out.println(err.message);
|
|
|
+ System.out.println(err.toString());
|
|
|
+ return 0l;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return 0l;
|
|
|
+ }
|
|
|
+
|
|
|
+ public String yiDaSearch(String FormUuid, JSONObject searchFieldJson, int page) throws Exception {
|
|
|
+ String reluert = "";
|
|
|
+ com.aliyun.dingtalkyida_1_0.Client client = dingUtil.createYiDaClient();
|
|
|
+ SearchFormDatasHeaders searchFormDatasHeaders = new SearchFormDatasHeaders();
|
|
|
+ String accessToken = this.getAccessToken();
|
|
|
+ searchFormDatasHeaders.xAcsDingtalkAccessToken = accessToken;
|
|
|
+ SearchFormDatasRequest searchFormDatasRequest = new SearchFormDatasRequest()
|
|
|
+ .setAppType(dingConst.getAppType())
|
|
|
+ .setSystemToken(dingConst.getSystemToken())
|
|
|
+ .setUserId(dingConst.getUserId())
|
|
|
+ .setLanguage("zh_CN")
|
|
|
+ .setFormUuid(FormUuid)
|
|
|
+ .setPageSize(100)
|
|
|
+ .setCurrentPage(page)
|
|
|
+ .setSearchFieldJson(searchFieldJson.toString());
|
|
|
+ try {
|
|
|
+ SearchFormDatasResponse searchFormDatasResponse = client.searchFormDatasWithOptions(searchFormDatasRequest, searchFormDatasHeaders, new RuntimeOptions());
|
|
|
+ reluert = new JSONArray(searchFormDatasResponse.getBody().getData()).toString();
|
|
|
+ } catch (TeaException err) {
|
|
|
+ err.printStackTrace();
|
|
|
+ if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
|
|
|
+ // err 中含有 code 和 message 属性,可帮助开发定位问题
|
|
|
+ System.out.println(err.message);
|
|
|
+ System.out.println(err.toString());
|
|
|
+ return err.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ } catch (Exception _err) {
|
|
|
+ _err.printStackTrace();
|
|
|
+ TeaException err = new TeaException(_err.getMessage(), _err);
|
|
|
+ if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
|
|
|
+ // err 中含有 code 和 message 属性,可帮助开发定位问题
|
|
|
+ System.out.println(err.message);
|
|
|
+ System.out.println(err.toString());
|
|
|
+ return err.toString();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return reluert;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return : String
|
|
|
+ * @Description : 获取时间段内数据
|
|
|
+ * @Author : Lizzy
|
|
|
+ * @Param : FormUuid
|
|
|
+ * @Param : modifiedFromTimeGMT
|
|
|
+ * @Param : modifiedToTimeGMT
|
|
|
+ * @Param : page
|
|
|
+ * @Date : 2024/7/29 18:56
|
|
|
+ */
|
|
|
+ public String yiDaSearch(String FormUuid, String modifiedFromTimeGMT, String modifiedToTimeGMT, int page) throws Exception {
|
|
|
+ String reluert = "";
|
|
|
+ com.aliyun.dingtalkyida_1_0.Client client = dingUtil.createYiDaClient();
|
|
|
+ SearchFormDatasHeaders searchFormDatasHeaders = new SearchFormDatasHeaders();
|
|
|
+ String accessToken = this.getAccessToken();
|
|
|
+ searchFormDatasHeaders.xAcsDingtalkAccessToken = accessToken;
|
|
|
+ SearchFormDatasRequest searchFormDatasRequest = new SearchFormDatasRequest()
|
|
|
+ .setAppType(dingConst.getAppType())
|
|
|
+ .setSystemToken(dingConst.getSystemToken())
|
|
|
+ .setUserId(dingConst.getUserId())
|
|
|
+ .setLanguage("zh_CN")
|
|
|
+ .setFormUuid(FormUuid)
|
|
|
+ .setPageSize(100)
|
|
|
+ .setCurrentPage(page)
|
|
|
+ .setModifiedFromTimeGMT(modifiedFromTimeGMT)
|
|
|
+ .setModifiedToTimeGMT(modifiedToTimeGMT);
|
|
|
+ try {
|
|
|
+ SearchFormDatasResponse searchFormDatasResponse = client.searchFormDatasWithOptions(searchFormDatasRequest, searchFormDatasHeaders, new RuntimeOptions());
|
|
|
+ reluert = new JSONArray(searchFormDatasResponse.getBody().getData()).toString();
|
|
|
+ } catch (TeaException err) {
|
|
|
+ err.printStackTrace();
|
|
|
+ if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
|
|
|
+ // err 中含有 code 和 message 属性,可帮助开发定位问题
|
|
|
+ System.out.println(err.message);
|
|
|
+ System.out.println(err.toString());
|
|
|
+ return err.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ } catch (Exception _err) {
|
|
|
+ _err.printStackTrace();
|
|
|
+ TeaException err = new TeaException(_err.getMessage(), _err);
|
|
|
+ if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
|
|
|
+ // err 中含有 code 和 message 属性,可帮助开发定位问题
|
|
|
+ System.out.println(err.message);
|
|
|
+ System.out.println(err.toString());
|
|
|
+ return err.toString();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return reluert;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取多个表单实例ID
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ * @throws Exception
|
|
|
+ */
|
|
|
+ public String getYiDaIds(String fromUuid) throws Exception {
|
|
|
+ com.aliyun.dingtalkyida_1_0.Client client = dingUtil.createYiDaClient();
|
|
|
+ SearchFormDataIdListHeaders searchFormDataIdListHeaders = new SearchFormDataIdListHeaders();
|
|
|
+ searchFormDataIdListHeaders.xAcsDingtalkAccessToken = this.getAccessToken();
|
|
|
+ SearchFormDataIdListRequest searchFormDataIdListRequest = new SearchFormDataIdListRequest()
|
|
|
+ .setSystemToken(dingConst.getSystemToken())
|
|
|
+ .setUserId(dingConst.getUserId());
|
|
|
+ try {
|
|
|
+ SearchFormDataIdListResponse searchFormDataIdListResponse = client.searchFormDataIdListWithOptions(dingConst.getAppType(), fromUuid, searchFormDataIdListRequest, searchFormDataIdListHeaders, new RuntimeOptions());
|
|
|
+ Long totalCount = searchFormDataIdListResponse.getBody().getPageNumber();
|
|
|
+ // System.out.println(totalCount);
|
|
|
+ return searchFormDataIdListResponse.getBody().getData().toString();
|
|
|
+ } catch (TeaException err) {
|
|
|
+ err.printStackTrace();
|
|
|
+ if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
|
|
|
+ // err 中含有 code 和 message 属性,可帮助开发定位问题
|
|
|
+ System.out.println(err.message);
|
|
|
+ System.out.println(err.toString());
|
|
|
+ return err.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ } catch (Exception _err) {
|
|
|
+ _err.printStackTrace();
|
|
|
+ TeaException err = new TeaException(_err.getMessage(), _err);
|
|
|
+ if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
|
|
|
+ // err 中含有 code 和 message 属性,可帮助开发定位问题
|
|
|
+ System.out.println(err.message);
|
|
|
+ System.out.println(err.toString());
|
|
|
+ return err.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 根据ID查询宜搭数据
|
|
|
+ *
|
|
|
+ * @param id
|
|
|
+ * @return
|
|
|
+ * @throws Exception
|
|
|
+ */
|
|
|
+ public String getYidaById(String id) throws Exception {
|
|
|
+ com.aliyun.dingtalkyida_1_0.Client client = dingUtil.createYiDaClient();
|
|
|
+ GetFormDataByIDHeaders getFormDataByIDHeaders = new GetFormDataByIDHeaders();
|
|
|
+ getFormDataByIDHeaders.xAcsDingtalkAccessToken = this.getAccessToken();
|
|
|
+ GetFormDataByIDRequest getFormDataByIDRequest = new GetFormDataByIDRequest()
|
|
|
+ .setAppType(dingConst.getAppType())
|
|
|
+ .setSystemToken(dingConst.getSystemToken())
|
|
|
+ .setUserId(dingConst.getUserId())
|
|
|
+ .setLanguage("zh_CN");
|
|
|
+ try {
|
|
|
+ GetFormDataByIDResponse formDataByIDWithOptions = client.getFormDataByIDWithOptions(id, getFormDataByIDRequest, getFormDataByIDHeaders, new RuntimeOptions());
|
|
|
+ return new JSONObject(formDataByIDWithOptions.getBody().getFormData()).put("userId", formDataByIDWithOptions.body.getOriginator().getUserId()).toString();
|
|
|
+ } catch (TeaException err) {
|
|
|
+ err.printStackTrace();
|
|
|
+ if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
|
|
|
+ // err 中含有 code 和 message 属性,可帮助开发定位问题
|
|
|
+ System.out.println(err.message);
|
|
|
+ System.out.println(err.toString());
|
|
|
+ return err.toString();
|
|
|
+
|
|
|
+ }
|
|
|
+ } catch (Exception _err) {
|
|
|
+ _err.printStackTrace();
|
|
|
+ TeaException err = new TeaException(_err.getMessage(), _err);
|
|
|
+ if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
|
|
|
+ // err 中含有 code 和 message 属性,可帮助开发定位问题
|
|
|
+ System.out.println(err.message);
|
|
|
+ System.out.println(err.toString());
|
|
|
+ return err.toString();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+
|
|
|
+ public JSONArray innerTables(String id, String formuuid, String fieldId) throws Exception {
|
|
|
+ JSONArray jarr = new JSONArray();
|
|
|
+ int page = 1;
|
|
|
+ while (true) {
|
|
|
+ com.aliyun.dingtalkyida_1_0.Client client = dingUtil.createYiDaClient();
|
|
|
+ ListTableDataByFormInstanceIdTableIdHeaders listTableDataByFormInstanceIdTableIdHeaders = new ListTableDataByFormInstanceIdTableIdHeaders();
|
|
|
+ listTableDataByFormInstanceIdTableIdHeaders.xAcsDingtalkAccessToken = this.getAccessToken();
|
|
|
+ ListTableDataByFormInstanceIdTableIdRequest listTableDataByFormInstanceIdTableIdRequest = new ListTableDataByFormInstanceIdTableIdRequest()
|
|
|
+ .setFormUuid(formuuid)
|
|
|
+ .setTableFieldId(fieldId)
|
|
|
+ .setPageNumber(page)
|
|
|
+ .setPageSize(50)
|
|
|
+ .setAppType(dingConst.getAppType())
|
|
|
+ .setSystemToken(dingConst.getSystemToken())
|
|
|
+ .setUserId(dingConst.getUserId());
|
|
|
+ try {
|
|
|
+ ListTableDataByFormInstanceIdTableIdResponse listTableDataByFormInstanceIdTableIdResponse = client.listTableDataByFormInstanceIdTableIdWithOptions(id, listTableDataByFormInstanceIdTableIdRequest, listTableDataByFormInstanceIdTableIdHeaders, new RuntimeOptions());
|
|
|
+
|
|
|
+
|
|
|
+ if (jarr.length() == 0) {
|
|
|
+ jarr = new JSONArray(listTableDataByFormInstanceIdTableIdResponse.getBody().data);
|
|
|
+ } else {
|
|
|
+ for (int i = 0; i < listTableDataByFormInstanceIdTableIdResponse.getBody().data.size(); i++) {
|
|
|
+ jarr.put(listTableDataByFormInstanceIdTableIdResponse.getBody().data.get(i));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+// System.out.println(page);
|
|
|
+// System.out.println(jarr.length());
|
|
|
+// System.out.println(listTableDataByFormInstanceIdTableIdResponse.getBody().totalCount);
|
|
|
+
|
|
|
+ if (listTableDataByFormInstanceIdTableIdResponse.getBody().totalCount > jarr.length()) {
|
|
|
+ page++;
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return jarr;
|
|
|
+ } catch (TeaException err) {
|
|
|
+ if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
|
|
|
+ // err 中含有 code 和 message 属性,可帮助开发定位问题
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ } catch (Exception _err) {
|
|
|
+ TeaException err = new TeaException(_err.getMessage(), _err);
|
|
|
+ if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
|
|
|
+ // err 中含有 code 和 message 属性,可帮助开发定位问题
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return jarr;
|
|
|
+ }
|
|
|
+
|
|
|
+ /***
|
|
|
+ * 发起流程数据
|
|
|
+ * @param jsonObject
|
|
|
+ * @param userId 发起人
|
|
|
+ * @param FormUuid 表单编码
|
|
|
+ * @return
|
|
|
+ * @throws Exception
|
|
|
+ */
|
|
|
+ public String startInstance(JSONObject jsonObject, String userId, String FormUuid) throws Exception {
|
|
|
+ com.aliyun.dingtalkyida_1_0.Client client = dingUtil.createYiDaClient();
|
|
|
+ StartInstanceHeaders startInstanceHeaders = new StartInstanceHeaders();
|
|
|
+ startInstanceHeaders.xAcsDingtalkAccessToken = this.getAccessToken();
|
|
|
+ StartInstanceRequest startInstanceRequest = new StartInstanceRequest()
|
|
|
+ .setAppType(dingConst.getAppType())
|
|
|
+ .setSystemToken(dingConst.getSystemToken())
|
|
|
+ .setUserId(userId)
|
|
|
+ .setLanguage("zh_CN")
|
|
|
+ .setFormUuid(FormUuid)
|
|
|
+ .setFormDataJson(jsonObject.toString());
|
|
|
+ try {
|
|
|
+ StartInstanceResponse startInstanceResponse = client.startInstanceWithOptions(startInstanceRequest, startInstanceHeaders, new RuntimeOptions());
|
|
|
+ return new JSONObject(startInstanceResponse.getBody().toMap()).toString();
|
|
|
+ } catch (TeaException err) {
|
|
|
+ if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
|
|
|
+ // err 中含有 code 和 message 属性,可帮助开发定位问题
|
|
|
+ System.out.println(err.message);
|
|
|
+ System.out.println(err.toString());
|
|
|
+ return err.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ } catch (Exception _err) {
|
|
|
+ TeaException err = new TeaException(_err.getMessage(), _err);
|
|
|
+ if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
|
|
|
+ // err 中含有 code 和 message 属性,可帮助开发定位问题
|
|
|
+ System.out.println(err.message);
|
|
|
+ System.out.println(err.toString());
|
|
|
+ return err.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 保存
|
|
|
+ *
|
|
|
+ * @param FormUuid
|
|
|
+ * @param jo
|
|
|
+ * @return
|
|
|
+ * @throws Exception
|
|
|
+ */
|
|
|
+ public String saveYiDa(String FormUuid, JSONObject jo, String userId) throws Exception {
|
|
|
+ if ("".equals(userId)) {
|
|
|
+ userId = dingConst.getUserId();
|
|
|
+ }
|
|
|
+ com.aliyun.dingtalkyida_1_0.Client client = dingUtil.createYiDaClient();
|
|
|
+ SaveFormDataHeaders saveFormDataHeaders = new SaveFormDataHeaders();
|
|
|
+ saveFormDataHeaders.xAcsDingtalkAccessToken = this.getAccessToken();
|
|
|
+ SaveFormDataRequest saveFormDataRequest = new SaveFormDataRequest()
|
|
|
+ .setAppType(dingConst.getAppType())
|
|
|
+ .setSystemToken(dingConst.getSystemToken())
|
|
|
+ .setUserId(userId)
|
|
|
+ .setLanguage("zh_CN")
|
|
|
+ .setFormUuid(FormUuid)
|
|
|
+ .setFormDataJson(jo.toString());
|
|
|
+ try {
|
|
|
+ SaveFormDataResponse saveFormDataResponse = client.saveFormDataWithOptions(saveFormDataRequest, saveFormDataHeaders, new RuntimeOptions());
|
|
|
+ return new JSONObject(saveFormDataResponse.getBody().toMap()).toString();
|
|
|
+ } catch (TeaException err) {
|
|
|
+ err.printStackTrace();
|
|
|
+ if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
|
|
|
+ // err 中含有 code 和 message 属性,可帮助开发定位问题
|
|
|
+ System.out.println(err.message);
|
|
|
+ System.out.println(err.toString());
|
|
|
+ return err.toString();
|
|
|
+ }
|
|
|
+ } catch (Exception _err) {
|
|
|
+ _err.printStackTrace();
|
|
|
+ TeaException err = new TeaException(_err.getMessage(), _err);
|
|
|
+ if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
|
|
|
+ // err 中含有 code 和 message 属性,可帮助开发定位问题
|
|
|
+ System.out.println(err.message);
|
|
|
+ System.out.println(err.toString());
|
|
|
+ return err.toString();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 修改数据
|
|
|
+ *
|
|
|
+ * @param formInstanceId
|
|
|
+ * @param jo
|
|
|
+ * @return
|
|
|
+ * @throws Exception
|
|
|
+ */
|
|
|
+ public String UpdateYiDa(String formInstanceId, JSONObject jo) throws Exception {
|
|
|
+ com.aliyun.dingtalkyida_1_0.Client client = dingUtil.createYiDaClient();
|
|
|
+ UpdateFormDataHeaders updateFormDataHeaders = new UpdateFormDataHeaders();
|
|
|
+ updateFormDataHeaders.xAcsDingtalkAccessToken = this.getAccessToken();
|
|
|
+ UpdateFormDataRequest updateFormDataRequest = new UpdateFormDataRequest()
|
|
|
+ .setAppType(dingConst.getAppType())
|
|
|
+ .setSystemToken(dingConst.getSystemToken())
|
|
|
+ .setUserId(dingConst.getUserId())
|
|
|
+ .setLanguage("zh_CN")
|
|
|
+ .setFormInstanceId(formInstanceId)
|
|
|
+ .setUpdateFormDataJson(jo.toString());
|
|
|
+ try {
|
|
|
+ UpdateFormDataResponse updateFormDataResponse = client.updateFormDataWithOptions(updateFormDataRequest, updateFormDataHeaders, new RuntimeOptions());
|
|
|
+ return new JSONObject(updateFormDataResponse.getHeaders()).toString();
|
|
|
+ } catch (TeaException err) {
|
|
|
+ err.printStackTrace();
|
|
|
+ if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
|
|
|
+ // err 中含有 code 和 message 属性,可帮助开发定位问题
|
|
|
+ System.out.println(err.message);
|
|
|
+ System.out.println(err.toString());
|
|
|
+ return err.toString();
|
|
|
+ }
|
|
|
+ } catch (Exception _err) {
|
|
|
+ _err.printStackTrace();
|
|
|
+ TeaException err = new TeaException(_err.getMessage(), _err);
|
|
|
+ if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
|
|
|
+ // err 中含有 code 和 message 属性,可帮助开发定位问题
|
|
|
+ System.out.println(err.message);
|
|
|
+ System.out.println(err.toString());
|
|
|
+ return err.toString();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+
|
|
|
+ public String UpdateYiDa_String(String formInstanceId, String joStr) throws Exception {
|
|
|
+ com.aliyun.dingtalkyida_1_0.Client client = dingUtil.createYiDaClient();
|
|
|
+ UpdateFormDataHeaders updateFormDataHeaders = new UpdateFormDataHeaders();
|
|
|
+ updateFormDataHeaders.xAcsDingtalkAccessToken = this.getAccessToken();
|
|
|
+ UpdateFormDataRequest updateFormDataRequest = new UpdateFormDataRequest()
|
|
|
+ .setAppType(dingConst.getAppType())
|
|
|
+ .setSystemToken(dingConst.getSystemToken())
|
|
|
+ .setUserId(dingConst.getUserId())
|
|
|
+ .setUseLatestVersion(true)
|
|
|
+ .setLanguage("zh_CN")
|
|
|
+ .setFormInstanceId(formInstanceId)
|
|
|
+ .setUpdateFormDataJson(joStr);
|
|
|
+ try {
|
|
|
+ UpdateFormDataResponse updateFormDataResponse = client.updateFormDataWithOptions(updateFormDataRequest, updateFormDataHeaders, new RuntimeOptions());
|
|
|
+ return new JSONObject(updateFormDataResponse.getHeaders()).toString();
|
|
|
+ } catch (TeaException err) {
|
|
|
+ err.printStackTrace();
|
|
|
+ if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
|
|
|
+ // err 中含有 code 和 message 属性,可帮助开发定位问题
|
|
|
+ System.out.println(err.message);
|
|
|
+ System.out.println(err.toString());
|
|
|
+ return err.toString();
|
|
|
+ }
|
|
|
+ } catch (Exception _err) {
|
|
|
+ _err.printStackTrace();
|
|
|
+ TeaException err = new TeaException(_err.getMessage(), _err);
|
|
|
+ if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
|
|
|
+ // err 中含有 code 和 message 属性,可帮助开发定位问题
|
|
|
+ System.out.println(err.message);
|
|
|
+ System.out.println(err.toString());
|
|
|
+ return err.toString();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+ public String delete(String instanceid) {
|
|
|
+ try {
|
|
|
+ com.aliyun.dingtalkyida_1_0.Client client = dingUtil.createYiDaClient();
|
|
|
+ DeleteFormDataHeaders deleteFormDataHeaders = new DeleteFormDataHeaders();
|
|
|
+ deleteFormDataHeaders.xAcsDingtalkAccessToken = this.getAccessToken();
|
|
|
+ DeleteFormDataRequest deleteFormDataRequest = new DeleteFormDataRequest()
|
|
|
+ .setAppType(dingConst.getAppType())
|
|
|
+ .setSystemToken(dingConst.getSystemToken())
|
|
|
+ .setUserId(dingConst.getUserId())
|
|
|
+ .setLanguage("zh_CN")
|
|
|
+ .setFormInstanceId(instanceid);
|
|
|
+
|
|
|
+ DeleteFormDataResponse deleteFormDataResponse = client.deleteFormDataWithOptions(deleteFormDataRequest, deleteFormDataHeaders, new RuntimeOptions());
|
|
|
+ return deleteFormDataResponse.toString();
|
|
|
+ } catch (TeaException err) {
|
|
|
+ if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
|
|
|
+ // err 中含有 code 和 message 属性,可帮助开发定位问题
|
|
|
+ System.out.println(err.message);
|
|
|
+ System.out.println(err.toString());
|
|
|
+ return err.toString();
|
|
|
+ }
|
|
|
+ } catch (Exception _err) {
|
|
|
+ TeaException err = new TeaException(_err.getMessage(), _err);
|
|
|
+ if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
|
|
|
+ // err 中含有 code 和 message 属性,可帮助开发定位问题
|
|
|
+ System.out.println(err.message);
|
|
|
+ System.out.println(err.toString());
|
|
|
+ return err.toString();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @Description : 获取实例id列表
|
|
|
+ * @Author : Lizzy
|
|
|
+ * @Param : null
|
|
|
+ * @return : null
|
|
|
+ * @Date : 2024/9/11 13:57
|
|
|
+ */
|
|
|
+ public String getInstanceIds(int pageNumber) {
|
|
|
+ try {
|
|
|
+ com.aliyun.dingtalkyida_1_0.Client client = dingUtil.createYiDaClient();
|
|
|
+ GetInstanceIdListHeaders getInstanceIdListHeaders = new GetInstanceIdListHeaders();
|
|
|
+ getInstanceIdListHeaders.xAcsDingtalkAccessToken = this.getAccessToken();
|
|
|
+ com.aliyun.dingtalkyida_1_0.models.GetInstanceIdListRequest getInstanceIdListRequest = new com.aliyun.dingtalkyida_1_0.models.GetInstanceIdListRequest()
|
|
|
+ .setSystemToken("UM6660D1PGF2O34KAVVKG8XZ756E3O06MZX5LW")
|
|
|
+ .setFormUuid("FORM-UX866Q61LRK2LACIB8A6M6T1ZOLM2VY5NYB6LZ")
|
|
|
+ .setUserId("01021447385039757257")
|
|
|
+ .setInstanceStatus("COMPLETED")
|
|
|
+ .setCreateToTimeGMT("2024-09-09")
|
|
|
+ .setAppType("APP_N9NPHVTQLPBPO8MR6WFG")
|
|
|
+ .setPageNumber(pageNumber)
|
|
|
+ .setPageSize(100);
|
|
|
+ GetInstanceIdListResponse instanceIdListWithOptions = client.getInstanceIdListWithOptions(getInstanceIdListRequest, getInstanceIdListHeaders, new RuntimeOptions());
|
|
|
+ return instanceIdListWithOptions.getBody().getData().toString();
|
|
|
+ } catch (TeaException err) {
|
|
|
+ if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
|
|
|
+ // err 中含有 code 和 message 属性,可帮助开发定位问题
|
|
|
+ System.out.println(err.message);
|
|
|
+ System.out.println(err.toString());
|
|
|
+ return err.toString();
|
|
|
+ }
|
|
|
+ } catch (Exception _err) {
|
|
|
+ TeaException err = new TeaException(_err.getMessage(), _err);
|
|
|
+ if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
|
|
|
+ // err 中含有 code 和 message 属性,可帮助开发定位问题
|
|
|
+ System.out.println(err.message);
|
|
|
+ System.out.println(err.toString());
|
|
|
+ return err.toString();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+}
|
|
|
+
|