| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274 |
- using AlibabaCloud.SDK.Dingtalkyida_1_0.Models;
- using HH.YiDaSyncNC.Dtos;
- using Newtonsoft.Json;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using Tea;
- namespace HH.YiDaSyncNC.Helper
- {
- class DingTalkService
- {
- public string _AppType;
- public string _SystemToken;
- public string _UserId;
- public string _FormId;
- public DingTalkService(string AppType, string SystemToken, string UserId, string FormId)
- {
- _AppType = AppType;
- _SystemToken = SystemToken;
- _UserId = UserId;
- _FormId = FormId;
- }
- #region 封装后的宜搭接口
- #region 获取表单Id集合
- public List<string> GetFormIdList()
- {
- var pageIndex = 1;
- var pageSize = 50;
- var bFinish = false;
- var resIdList = new List<string>();
- while (!bFinish)
- {
- var resData = GetFormIdListFunc("", "", "", "", "", pageIndex, pageSize);
- if (resData.StatusCode == 200)
- {
- if (resData.Body.Data.Count == 0)
- {
- bFinish = true;
- }
- else
- {
- resIdList.AddRange(resData.Body.Data);
- }
- }
- else
- {
- throw new Exception(JsonConvert.SerializeObject(resData));
- }
- pageIndex++;
- }
- return resIdList;
- }
- #endregion
- #region 获取表单Id集合
- public List<string> GetFormIdList(string search)
- {
- var pageIndex = 1;
- var pageSize = 50;
- var bFinish = false;
- var resIdList = new List<string>();
- while (!bFinish)
- {
- var resData = GetFormIdListFunc("", "", "", "", search, pageIndex, pageSize);
- if (resData.StatusCode == 200)
- {
- if (resData.Body.Data.Count == 0)
- {
- bFinish = true;
- }
- else
- {
- resIdList.AddRange(resData.Body.Data);
- }
- }
- else
- {
- throw new Exception(JsonConvert.SerializeObject(resData));
- }
- pageIndex++;
- }
- return resIdList;
- }
- #endregion
- #region 获取表单Id集合(24小时内更新过的数据)
- public List<string> GetModifyFormIdList()
- {
- var pageIndex = 1;
- var pageSize = 50;
- var bFinish = false;
- var resIdList = new List<string>();
- var modifyFromTime = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd");
- var modifyToTime = DateTime.Now.AddDays(1).ToString("yyyy-MM-dd");
- while (!bFinish)
- {
- var resData = GetFormIdListFunc(modifyFromTime, modifyToTime, modifyFromTime, modifyToTime, "", pageIndex, pageSize);
- if (resData.StatusCode == 200)
- {
- if (resData.Body.Data.Count == 0)
- {
- bFinish = true;
- }
- else
- {
- resIdList.AddRange(resData.Body.Data);
- }
- }
- else
- {
- throw new Exception(JsonConvert.SerializeObject(resData));
- }
- pageIndex++;
- }
- return resIdList;
- }
- #endregion
- #region 通过数据Id获取数据详情(单条)
- public Dictionary<string, object> GetFormDataById(string id, out string createTime, out string modifyTime)
- {
- var resData = GetFormDataByIdsFunc(new List<string>() { id });
- if (resData.StatusCode == 200)
- {
- createTime = resData.Body.Result[0].CreateTimeGMT;
- modifyTime = resData.Body.Result[0].ModifiedTimeGMT;
- return resData.Body.Result[0].FormData;
- }
- else
- {
- throw new Exception(JsonConvert.SerializeObject(resData));
- }
- }
- #endregion
- #region 更新同步标识信息
- public UpdateFormDataResponse UpdateFormDataSyncDataById(YiDaResDto resData, string FormInstanceId)
- {
- var data = new Dictionary<string, string>();
- data.Add("textField_ltxyt75i", resData.bSuccess ? "同步成功" : "同步失败");
- data.Add("dateField_ltxyt75l", UnixTimeHelper.ConvertToMilliseconds(resData.syncTime).ToString());
- data.Add("textField_ltxyt75m", resData.ncNo);
- data.Add("textField_ltxyt75n", resData.log);
- data.Add("radioField_lycrvvtk", "N");
- return UpdateFormDataByIdFunc(JsonConvert.SerializeObject(data), FormInstanceId);
- }
- #endregion
- #endregion
- #region 宜搭接原始口
- public AlibabaCloud.SDK.Dingtalkyida_1_0.Client CreateClient()
- {
- AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config();
- config.Protocol = "https";
- config.RegionId = "central";
- return new AlibabaCloud.SDK.Dingtalkyida_1_0.Client(config);
- }
- #region 获取多个表单实例ID
- public SearchFormDataIdListResponse GetFormIdListFunc(string CreateFromTime, string CreateToTime, string ModifiedFromTime, string ModifiedToTime, string SearchFieldJson, int CurrentPage, int PageSize)
- {
- AlibabaCloud.SDK.Dingtalkyida_1_0.Client client = CreateClient();
- SearchFormDataIdListHeaders searchFormDatasHeaders = new SearchFormDataIdListHeaders();
- searchFormDatasHeaders.XAcsDingtalkAccessToken = CommHelper.GetAccessToken();
- SearchFormDataIdListRequest searchFormDatasRequest = new SearchFormDataIdListRequest
- {
- ModifiedToTimeGMT = ModifiedToTime,
- SystemToken = _SystemToken,
- ModifiedFromTimeGMT = ModifiedFromTime,
- SearchFieldJson = SearchFieldJson,
- UserId = _UserId,
- CreateToTimeGMT = CreateToTime,
- CreateFromTimeGMT = CreateFromTime,
- PageNumber = CurrentPage,
- PageSize = PageSize
- };
- var rsp = client.SearchFormDataIdListWithOptions(_AppType, _FormId, searchFormDatasRequest, searchFormDatasHeaders, new AlibabaCloud.TeaUtil.Models.RuntimeOptions());
- return rsp;
- }
- #endregion
- #region 批量获取表单实例数据
- public BatchGetFormDataByIdListResponse GetFormDataByIdsFunc(List<string> IdList)
- {
- AlibabaCloud.SDK.Dingtalkyida_1_0.Client client = CreateClient();
- AlibabaCloud.SDK.Dingtalkyida_1_0.Models.BatchGetFormDataByIdListHeaders batchGetFormDataByIdListHeaders = new AlibabaCloud.SDK.Dingtalkyida_1_0.Models.BatchGetFormDataByIdListHeaders();
- batchGetFormDataByIdListHeaders.XAcsDingtalkAccessToken = CommHelper.GetAccessToken();
- AlibabaCloud.SDK.Dingtalkyida_1_0.Models.BatchGetFormDataByIdListRequest batchGetFormDataByIdListRequest = new AlibabaCloud.SDK.Dingtalkyida_1_0.Models.BatchGetFormDataByIdListRequest
- {
- FormUuid = _FormId,
- AppType = _AppType,
- SystemToken = _SystemToken,
- FormInstanceIdList = IdList,
- NeedFormInstanceValue = true,
- UserId = _UserId,
- };
- var rsp = client.BatchGetFormDataByIdListWithOptions(batchGetFormDataByIdListRequest, batchGetFormDataByIdListHeaders, new AlibabaCloud.TeaUtil.Models.RuntimeOptions());
- return rsp;
- }
- #endregion
- #region 更新表单实例数据
- public UpdateFormDataResponse UpdateFormDataByIdFunc(string UpdateFormDataJson, string FormInstanceId)
- {
- AlibabaCloud.SDK.Dingtalkyida_1_0.Client client = CreateClient();
- AlibabaCloud.SDK.Dingtalkyida_1_0.Models.UpdateFormDataHeaders updateFormDataHeaders = new AlibabaCloud.SDK.Dingtalkyida_1_0.Models.UpdateFormDataHeaders();
- updateFormDataHeaders.XAcsDingtalkAccessToken = CommHelper.GetAccessToken();
- AlibabaCloud.SDK.Dingtalkyida_1_0.Models.UpdateFormDataRequest updateFormDataRequest = new AlibabaCloud.SDK.Dingtalkyida_1_0.Models.UpdateFormDataRequest
- {
- AppType = _AppType,
- SystemToken = _SystemToken,
- UserId = _UserId,
- Language = "zh_CN",
- FormInstanceId = FormInstanceId,
- UseLatestVersion = true,
- UpdateFormDataJson = UpdateFormDataJson,
- };
- try
- {
- var rsp = client.UpdateFormDataWithOptions(updateFormDataRequest, updateFormDataHeaders, new AlibabaCloud.TeaUtil.Models.RuntimeOptions());
- return rsp;
- }
- catch (TeaException err)
- {
- if (!AlibabaCloud.TeaUtil.Common.Empty(err.Code) && !AlibabaCloud.TeaUtil.Common.Empty(err.Message))
- {
- // err 中含有 code 和 message 属性,可帮助开发定位问题
- }
- }
- catch (Exception _err)
- {
- TeaException err = new TeaException(new Dictionary<string, object>
- {
- { "message", _err.Message }
- });
- if (!AlibabaCloud.TeaUtil.Common.Empty(err.Code) && !AlibabaCloud.TeaUtil.Common.Empty(err.Message))
- {
- // err 中含有 code 和 message 属性,可帮助开发定位问题
- }
- }
- return null;
- }
- #endregion
- #endregion
- }
- }
|