public override OutputResult NextCall()
        {
            if (string.IsNullOrEmpty(this.requestSerialCode))
            {
                return(null);
            }

            var json = Policy
                       .HandleResult <JObject>(r =>
            {
                return(string.Compare(AsyncProcessStatus.待处理.Description(), r.SelectToken("data")?.SelectToken("status")?.ToString()) == 0);
            })
                       .WaitAndRetry(30, retryCount =>
            {
                return(TimeSpan.FromSeconds(1));
            })
                       .Execute(() =>
            {
                HjApi api = new HjApi()
                {
                    Endpoint = "open/api/async", Method = "Async", Version = "2.1"
                };
                return(api.Invoke(new { requestSerialCode }));
            });

            return(JsonConvert.DeserializeObject <OutputResult>(json?.ToString()));
        }
        static void Main011(string[] args)
        {
            var info = new
            {
                pageIndex     = 1,
                pageSize      = 10,
                projectCode   = "ff8080817682f02601768933e2540009",
                buildCorpCode = "91420100177738297E"
            };

            JObject result = null;

            try
            {
                HjApi api = new HjApi()
                {
                    Endpoint = "open/api/get", Method = "Project.Query", Version = "1.0"
                };
                result = HjApiCaller.CallOpenApi(api, info);
            }
            catch (Exception e)
            {
                throw;
            }

            Console.WriteLine(result?.ToString());
        }
        /// <summary>
        /// 查询上传结果。
        /// </summary>
        /// <param name="requestSerialCode"></param>
        private void QueryResult(string requestSerialCode)
        {
            string result  = "";
            string status  = "01";
            string code    = "0";
            string message = "调用成功";

            #region 轮询上传结果

            TimerCallback callback = (state) =>
            {
                #region 查询上传处理结果

                HjApi api = new HjApi()
                {
                    Endpoint = "open/api/async", Method = "Async", Version = "2.1"
                };
                var res = HjApiCaller.CallOpenApi(api, new { requestSerialCode });

                #endregion

                string sts = res["data"]["status"]?.ToString();
                if (invokeCount == maxCount || AsyncProcessStatus.处理成功.Description().Equals(sts))
                { // 查询完成
                    result  = res["data"]["result"]?.ToString();
                    status  = res["data"]["status"]?.ToString();
                    code    = res["code"]?.ToString();
                    message = res["message"]?.ToString();

                    invokeCount = 0;
                    autoEvent.Set();
                }
            };

            var stateTimer = new Timer(callback, requestSerialCode, 1000, 1000);

            autoEvent.WaitOne();
            stateTimer.Dispose();

            #endregion

            //#region 封装上传结果

            //UploadCompletedEventArgs e = new UploadCompletedEventArgs
            //{
            //    Result = result,
            //    Status = status,
            //    Code = code,
            //    Message = message
            //};

            //OnUploadCompleted(e);

            //#endregion
        }
        /// <summary>
        /// 上传方法。
        /// </summary>
        /// <returns></returns>
        public OutputResult Upload()
        {
            HjApi api = new HjApi
            {
                Endpoint = "open/api/get",
                Method   = "WorkerAttendance.Upload",
                Version  = "2.1",
                Format   = "json"
            };

            return(JsonConvert.DeserializeObject <OutputResult>(api.Invoke(this).ToString()));
        }
        public static OutputResult SysNo(string projectCode, string teamName)
        {
            HjApi api = new HjApi
            {
                Endpoint = "open/api/get",
                Method   = "Team.SysNo",
                Version  = "1.0",
                Format   = "json"
            };

            var input = new
            {
                projectCode,
                teamName
            };

            return(JsonConvert.DeserializeObject <OutputResult>(api.Invoke(input).ToString()));
        }
        public static OutputResult Query(int pageIndex, int pageSize, string projectCode)
        {
            HjApi api = new HjApi
            {
                Endpoint = "open/api/get",
                Method   = "Team.Query",
                Version  = "2.1",
                Format   = "json"
            };

            var input = new
            {
                pageIndex,
                pageSize,
                projectCode
            };

            return(JsonConvert.DeserializeObject <OutputResult>(api.Invoke(input).ToString()));
        }
        /// <summary>
        /// 异步上传数据。
        /// </summary>
        /// <param name="info"></param>
        private string UploadAsync(EnterpriseInfo info)
        {
            string requestSerialCode = null;

            try
            {
                HjApi api = new HjApi()
                {
                    Endpoint = "open/api/get", Method = "Corp.Upload", Version = "2.1"
                };
                var result = HjApiCaller.CallOpenApi(api, info);
                requestSerialCode = result["data"]["requestSerialCode"]?.ToString();
            }
            catch (Exception e)
            {
                throw;
            }

            return(requestSerialCode);
        }
Exemple #8
0
 public ApiInvokeCommand(HjApi api, object input)
 {
     this.api   = api;
     this.input = input;
 }