| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424 |
- 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", resData.bNeedSync);
- return UpdateFormDataByIdFunc(JsonConvert.SerializeObject(data), FormInstanceId);
- }
- // 仅更新状态
- public UpdateFormDataResponse UpdateFormDataSyncDataByIdOnlyState(string FormInstanceId)
- {
- var data = new Dictionary<string, string>();
- data.Add("textField_ltxyt75i", "同步成功");
- return UpdateFormDataByIdFunc(JsonConvert.SerializeObject(data), FormInstanceId);
- }
- #endregion
- #region 更新表单数据
- public UpdateFormDataResponse UpdateFormDataById(Dictionary<string, string> resData, string FormInstanceId)
- {
- return UpdateFormDataByIdFunc(JsonConvert.SerializeObject(resData), FormInstanceId);
- }
- #endregion
- #region 获取【流程表单】id集合
- /// <summary>
- /// 获取【流程表单】id集合
- /// </summary>
- /// <param name="search"></param>
- /// <returns></returns>
- /// <exception cref="Exception"></exception>
- public List<string> GetFormCodeList(string search)
- {
- var pageIndex = 1;
- var pageSize = 50;
- var bFinish = false;
- var resIdList = new List<string>();
- while (!bFinish)
- {
- var resData = GetFormCodeListFunc("", "", "", "", 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获取【表单数据】详情(单条)
- /// <summary>
- /// 通过数据Id获取【表单数据】详情(单条)
- /// </summary>
- /// <param name="id"></param>
- /// <returns></returns>
- /// <exception cref="Exception"></exception>
- public Dictionary<string, object> GetFormDataByCode(string id)
- {
- var resData = GetFormDataByCodesFunc(new List<string>() { id });
- if (resData.StatusCode == 200)
- {
- return resData.Body.Result[0].Data;
- }
- else
- {
- throw new Exception(JsonConvert.SerializeObject(resData));
- }
- }
- #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
- #region 获取多个【流程表单】实例ID 【默认审批通过的】
- /// <summary>
- /// 获取多个【流程表单】实例ID
- /// </summary>
- /// <param name="CreateFromTime"></param>
- /// <param name="CreateToTime"></param>
- /// <param name="ModifiedFromTime"></param>
- /// <param name="ModifiedToTime"></param>
- /// <param name="SearchFieldJson"></param>
- /// <param name="CurrentPage"></param>
- /// <param name="PageSize"></param>
- /// <returns></returns>
- public GetInstanceIdListResponse GetFormCodeListFunc(string CreateFromTime, string CreateToTime, string ModifiedFromTime, string ModifiedToTime, string SearchFieldJson, int CurrentPage, int PageSize)
- {
- AlibabaCloud.SDK.Dingtalkyida_1_0.Client client = CreateClient();
- AlibabaCloud.SDK.Dingtalkyida_1_0.Models.GetInstanceIdListHeaders getInstanceIdListHeaders = new AlibabaCloud.SDK.Dingtalkyida_1_0.Models.GetInstanceIdListHeaders();
- getInstanceIdListHeaders.XAcsDingtalkAccessToken = CommHelper.GetAccessToken();
- // 实例状态,取值:
- //RUNNING:运行中
- //TERMINATED:已终止
- //COMPLETED:已完成
- //ERROR:异常
- //审批结果,取值:
- //agree:同意
- //disagree:拒绝
- AlibabaCloud.SDK.Dingtalkyida_1_0.Models.GetInstanceIdListRequest getInstanceIdListRequest = new AlibabaCloud.SDK.Dingtalkyida_1_0.Models.GetInstanceIdListRequest
- {
- ModifiedToTimeGMT = ModifiedToTime,
- SystemToken = _SystemToken,
- ModifiedFromTimeGMT = ModifiedFromTime,
- SearchFieldJson = SearchFieldJson,
- UserId = _UserId,
- CreateToTimeGMT = CreateToTime,
- CreateFromTimeGMT = CreateFromTime,
- PageNumber = CurrentPage,
- PageSize = PageSize,
- InstanceStatus = "COMPLETED",//"COMPLETED",//实例状态
- ApprovedResult = "agree",//"agree",//审批结果
- AppType = _AppType,
- FormUuid = _FormId
- };
- var rsp = client.GetInstanceIdListWithOptions(getInstanceIdListRequest, getInstanceIdListHeaders, new AlibabaCloud.TeaUtil.Models.RuntimeOptions());
- return rsp;
- }
- #endregion
- #region 批量获取【流程表单】实例数据
- public GetInstancesByIdListResponse GetFormDataByCodesFunc(List<string> IdList)
- {
- AlibabaCloud.SDK.Dingtalkyida_1_0.Client client = CreateClient();
- AlibabaCloud.SDK.Dingtalkyida_1_0.Models.GetInstancesByIdListHeaders getInstancesByIdListHeaders = new AlibabaCloud.SDK.Dingtalkyida_1_0.Models.GetInstancesByIdListHeaders();
- getInstancesByIdListHeaders.XAcsDingtalkAccessToken = CommHelper.GetAccessToken();
- AlibabaCloud.SDK.Dingtalkyida_1_0.Models.GetInstancesByIdListRequest getInstancesByIdListRequest = new AlibabaCloud.SDK.Dingtalkyida_1_0.Models.GetInstancesByIdListRequest
- {
- AppType = _AppType,
- SystemToken = _SystemToken,
- UserId = _UserId,
- Language = "zh_CN",
- ProcessInstanceIds = string.Join(",", IdList),
- };
- var rsp = client.GetInstancesByIdListWithOptions(getInstancesByIdListRequest, getInstancesByIdListHeaders, new AlibabaCloud.TeaUtil.Models.RuntimeOptions());
- return rsp;
- }
- #endregion
- #endregion
- }
- }
|