电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

K3Cloud服务操作接口(ExcuteOperation)实战及更新冻结人字段(续篇)

来源:金蝶云社区作者:金蝶2024-09-162

K3Cloud服务操作接口(ExcuteOperation)实战及更新冻结人字段(续篇)

/// <summary>
        /// 服务接口(同步)
        /// </summary>
        /// <param name="formid"></param>
        /// <param name="data"></param>
        /// <returns></returns>
        public  CloudResult CloudExcuteOperation(string formid, string type, string data)
        {
            List<object> Parameters = new List<object>();
            Parameters.Add(formid);
            Parameters.Add(type);
            Parameters.Add(data);
            var result = HttpClientHelper_HttpPost(CloudLinkConfigModel.excuteOperationUrl, JsonConvert.SerializeObject(Parameters));
            return result == null ? new CloudResult() : JsonConvert.DeserializeObject<CloudResult>(result);
        }
using Model;

namespace K3CloudLink
{
    public interface ICloudLink
    {
        /// <summary>
        /// 登陆验证
        /// </summary>
        /// <returns></returns>
        bool CloudLogin();
        /// <summary>
        /// 登陆验证(异步)
        /// </summary>
        /// <returns></returns>
        Task<bool> CloudLoginAsync();
        /// <summary>
        /// 根据单号或者ID查询数据
        /// </summary>
        /// <param name="formid">业务对象ID 例子:SAL_SaleOrder</param>
        /// <param name="data">数据包Json 例子:"{\"Number\":\"XSDD000040\"}"  "{\"Id\":0}"</param>
        /// <returns>单据数据包JOSN</returns>
        string CloudView(string formid, string data);
        /// <summary>
        /// 根据单号或者ID查询数据(异步)
        /// </summary>
        /// <param name="formid">业务对象ID 例子:SAL_SaleOrder</param>
        /// <param name="data">数据包Json 例子:"{\"Number\":\"XSDD000040\"}"  "{\"Id\":0}"</param>
        /// <returns>单据数据包JOSN</returns>
        Task<string> CloudViewAsync(string formid, string data);

        /// <summary>
        /// 保存
        /// </summary>
        /// <param name="formid"></param>
        /// <param name="data"></param>
        /// <returns></returns>
        CloudResult CloudSave(string formid, string data);

        /// <summary>
        /// 保存(异步)
        /// </summary>
        /// <param name="formid"></param>
        /// <param name="data"></param>
        /// <returns></returns>
        Task<CloudResult> CloudSaveAsync(string formid, string data);

        /// <summary>
        /// 批量保存
        /// </summary>
        /// <param name="formid"></param>
        /// <param name="data"></param>
        /// <returns></returns>
        CloudResult CloudBatchSave(string formid, string data);
        /// <summary>
        /// 批量保存(异步)
        /// </summary>
        /// <param name="formid"></param>
        /// <param name="data"></param>
        /// <returns></returns>
        Task<CloudResult> CloudBatchSaveAsync(string formid, string data);
        /// <summary>
        /// 删除
        /// </summary>
        /// <param name="formid"></param>
        /// <param name="data"></param>
        /// <returns></returns>
        CloudResult CloudDelete(string formid, string data);
        /// <summary>
        /// 删除(异步)
        /// </summary>
        /// <param name="formid"></param>
        /// <param name="data"></param>
        /// <returns></returns>
        Task<CloudResult> CloudDeleteAsync(string formid, string data);
        /// <summary>
        /// 审核
        /// </summary>
        /// <param name="formid"></param>
        /// <param name="data"></param>
        /// <returns></returns>
        CloudResult CloudAudit(string formid, string data);
        /// <summary>
        /// 审核(异步)
        /// </summary>
        /// <param name="formid"></param>
        /// <param name="data"></param>
        /// <returns></returns>
        Task<CloudResult> CloudAuditAsync(string formid, string data);
        /// <summary>
        /// 反审核
        /// </summary>
        /// <param name="formid"></param>
        /// <param name="data"></param>
        /// <returns></returns>
        CloudResult CloudUnAudit(string formid, string data);
        /// <summary>
        /// 反审核(异步)
        /// </summary>
        /// <param name="formid"></param>
        /// <param name="data"></param>
        /// <returns></returns>
        Task<CloudResult> CloudUnAuditAsync(string formid, string data);
        /// <summary>
        /// 用语句查询数据库
        /// </summary>
        /// <param name="sql">数据库语句</param>
        /// <returns></returns>
        (string status, string errmsg, string result) CloudDbWebApi(string sql);
        /// <summary>
        /// 用语句查询数据库(异步)
        /// </summary>
        /// <param name="sql">数据库语句</param>
        /// <returns></returns>
        Task<(string status, string errmsg, string result)> CloudDbWebApiAsync(string sql);

        /// <summary>
        /// 下推
        /// </summary>
        /// <param name="formid"></param>
        /// <param name="data"></param>
        /// <returns></returns>
        CloudResult CloudPush(string formid, string data);

        /// <summary>
        /// 下推(异步)
        /// </summary>
        /// <param name="formid"></param>
        /// <param name="data"></param>
        /// <returns></returns>
        Task<CloudResult> CloudPushAsync(string formid, string data);
        /// <summary>
        /// 分配
        /// </summary>
        /// <param name="formid"></param>
        /// <param name="data"></param>
        /// <returns></returns>
        CloudResult CloudAllocate(string formid, string data);
        /// <summary>
        /// 分配(异步)
        /// </summary>
        /// <param name="formid"></param>
        /// <param name="data"></param>
        /// <returns></returns>
        Task<CloudResult> CloudAllocateAsync(string formid, string data);
        /// <summary>
        /// 暂存
        /// </summary>
        /// <param name="formid"></param>
        /// <param name="data"></param>
        /// <returns></returns>
        CloudResult CloudDraftSave(string formid, string data);

        /// <summary>
        /// 暂存(异步)
        /// </summary>
        /// <param name="formid"></param>
        /// <param name="data"></param>
        /// <returns></returns>
        Task<CloudResult> CloudDraftSaveAsync(string formid, string data);

        /// <summary>
        /// 提交
        /// </summary>
        /// <param name="formid"></param>
        /// <param name="data"></param>
        /// <returns></returns>
        CloudResult CloudSubmit(string formid, string data);

        /// <summary>
        /// 表单查询
        /// </summary>
        /// <param name="formid"></param>
        /// <param name="data"></param>
        /// <returns></returns>
        string CloudExecuteBillQuery(string data);

        /// <summary>
        /// 表单查询(异步)
        /// </summary>
        /// <param name="formid"></param>
        /// <param name="data"></param>
        /// <returns></returns>
        Task<string> CloudExecuteBillQueryAsync(string data);


        /// <summary>
        /// 服务接口(异步)
        /// </summary>
        /// <param name="formid"></param>
        /// <param name="type">服务类型</param>
        /// <param name="data"></param>
        /// <returns></returns>
        Task<CloudResult> CloudExcuteOperationAsync(string formid, string type, string data);

        /// <summary>
        /// 服务接口(同步)
        /// </summary>
        /// <param name="formid"></param>
        /// <param name="data"></param>
        /// <returns></returns>
        public CloudResult CloudExcuteOperation(string formid, string type, string data);
    }
}
using Common;
using Model;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.Diagnostics;

namespace K3CloudLink
{
    public class CloudLinkN : ICloudLink
    {
        static CloudLinkN()
        {
            ConfigInitialization();
        }

        /// <summary>
        /// 初始化配置
        /// </summary>
        private static void ConfigInitialization()
        {
            if (string.IsNullOrEmpty(CloudLinkConfigModel.dbId))
            {
                CloudLinkConfigModel.dbId = ConfigManager.AppSettings("dbId").ToString();
                CloudLinkConfigModel.userName = ConfigManager.AppSettings("userName").ToString();
                CloudLinkConfigModel.userPassword = ConfigManager.AppSettings("userPassword").ToString();
                CloudLinkConfigModel.saveUrl = ConfigManager.AppSettings("saveUrl").ToString();
                CloudLinkConfigModel.submitUrl = ConfigManager.AppSettings("submitUrl").ToString();
                CloudLinkConfigModel.unAuditUrl = ConfigManager.AppSettings("unAuditUrl").ToString();
                CloudLinkConfigModel.viewUrl = ConfigManager.AppSettings("viewUrl").ToString();
                CloudLinkConfigModel.validateUserUrl = ConfigManager.AppSettings("validateUserUrl").ToString();
                CloudLinkConfigModel.executeBillQueryUrl = ConfigManager.AppSettings("executeBillQueryUrl").ToString();
                CloudLinkConfigModel.deleteUrl = ConfigManager.AppSettings("deleteUrl").ToString();
                CloudLinkConfigModel.auditUrl = ConfigManager.AppSettings("auditUrl").ToString();
                CloudLinkConfigModel.customWebApiUrl = ConfigManager.AppSettings("customWebApiUrl").ToString();
                CloudLinkConfigModel.pushUrl = ConfigManager.AppSettings("pushUrl").ToString();
                CloudLinkConfigModel.allocateUrl = ConfigManager.AppSettings("allocateUrl").ToString();
                CloudLinkConfigModel.draftUrl = ConfigManager.AppSettings("draftUrl").ToString();
                CloudLinkConfigModel.excuteOperationUrl = ConfigManager.AppSettings("ExcuteOperationUrl").ToString();
                CloudLinkConfigModel.batchSaveUrl = ConfigManager.AppSettings("batchSaveUrl").ToString();
            }
        }

        public async Task<string> HttpClientHelper_HttpPostAsync(string Url, string Content) {
            JObject jObj = new JObject();
            jObj.Add("format", 1);
            jObj.Add("useragent", "ApiClient");
            jObj.Add("rid", Guid.NewGuid().ToString().GetHashCode().ToString());
            jObj.Add("parameters", Content);
            jObj.Add("timestamp", DateTime.Now);
            jObj.Add("v", "1.0");
            return await HttpClientHelper.HttpPostAsync(Url, jObj.ToString(), null, "application/json");
        }

        public string HttpClientHelper_HttpPost(string Url, string Content)
        {
            JObject jObj = new JObject();
            jObj.Add("format", 1);
            jObj.Add("useragent", "ApiClient");
            jObj.Add("rid", Guid.NewGuid().ToString().GetHashCode().ToString());
            jObj.Add("parameters", Content);
            jObj.Add("timestamp", DateTime.Now);
            jObj.Add("v", "1.0");
            try
            {
                return HttpClientHelper.HttpPost(Url, jObj.ToString(), null, "application/json");
            }
            catch (OperationCanceledException oce)
            {
                //https://github.com/dotnet/runtime/issues/21965
                // Check ex.CancellationToken.IsCancellationRequested here.
                // If false, it's pretty safe to assume it was a timeout.
                if (false==oce.CancellationToken.IsCancellationRequested)
                {
                    Log.Default.Process(Log.F_LEVEL.Error, $"oce_HttpClientHelper_HttpPost_{oce.ToString()}_具体报错调用串:{jObj.ToString()}");
                    throw new Exception("oce_HttpClientHelper_HttpPost请求超时错误!");
                }
                else
                    throw oce;
            }
            catch (Exception ex)
            {
                Log.Default.Process(Log.F_LEVEL.Error, "HttpClientHelper_HttpPost_"+ ex.ToString() + "_具体报错调用串:" + jObj.ToString());
                throw ex;
            }
        }

        /// <summary>
        /// 登陆验证
        /// </summary>
        /// <returns></returns>
        public bool CloudLogin()
        {
            List<object> Parameters = new List<object>();
            Parameters.Add(CloudLinkConfigModel.dbId);//帐套Id
            Parameters.Add(CloudLinkConfigModel.userName);//用户名
            Parameters.Add(CloudLinkConfigModel.userPassword);//密码
            Parameters.Add(2052);
            string url = CloudLinkConfigModel.validateUserUrl;
            string postData = JsonConvert.SerializeObject(Parameters);

            string res =HttpClientHelper_HttpPost(url, postData);
            var iResult = JObject.Parse(res)["LoginResultType"].Value<int>();
            //HttpClientHelper.HttpPostAsync()

            if (iResult == 1)
                return true;
            else
                return false;
        }
        /// <summary>
        /// 登陆验证
        /// </summary>
        /// <returns></returns>
        public async Task<bool> CloudLoginAsync()
        {
            List<object> Parameters = new List<object>();
            Parameters.Add(CloudLinkConfigModel.dbId);//帐套Id
            Parameters.Add(CloudLinkConfigModel.userName);//用户名
            Parameters.Add(CloudLinkConfigModel.userPassword);//密码
            Parameters.Add(2052);
            string url = CloudLinkConfigModel.validateUserUrl;
            string postData = JsonConvert.SerializeObject(Parameters);

            string res = await HttpClientHelper_HttpPostAsync(url, postData);
            var iResult = JObject.Parse(res)["LoginResultType"].Value<int>();
            //HttpClientHelper.HttpPostAsync()

            if (iResult == 1)
                return true;
            else
                return false;
        }
        /// <summary>
        /// 根据单号或者ID查询数据
        /// </summary>
        /// <param name="formid">业务对象ID 例子:SAL_SaleOrder</param>
        /// <param name="data">数据包Json 例子:"{\"Number\":\"XSDD000040\"}"  "{\"Id\":0}"</param>
        /// <returns>单据数据包JOSN</returns>
        public string CloudView(string formid, string data)
        {
            List<object> Parameters = new List<object>();
            Parameters.Add(formid);
            Parameters.Add(data);
            var result  = HttpClientHelper_HttpPost(CloudLinkConfigModel.viewUrl, JsonConvert.SerializeObject(Parameters));
            return result == null ? "" : result;
        }

        /// <summary>
        /// 根据单号或者ID查询数据(异步)
        /// </summary>
        /// <param name="formid">业务对象ID 例子:SAL_SaleOrder</param>
        /// <param name="data">数据包Json 例子:"{\"Number\":\"XSDD000040\"}"  "{\"Id\":0}"</param>
        /// <returns>单据数据包JOSN</returns>
        public async Task<string> CloudViewAsync(string formid, string data)
        {
            List<object> Parameters = new List<object>();
            Parameters.Add(formid);
            Parameters.Add(data);
            return await HttpClientHelper_HttpPostAsync(CloudLinkConfigModel.viewUrl, JsonConvert.SerializeObject(Parameters));
            
        }

        /// <summary>
        /// Cloud表单查询
        /// </summary>
        /// <param name="data">CloudExecuteBillQueryModel 反序列化后Json格式</param>
        /// <returns></returns>
        public string CloudExecuteBillQuery(string data)
        {
            List<object> Parameters = new List<object>();
            Parameters.Add(data);
            var result = HttpClientHelper_HttpPost(CloudLinkConfigModel.executeBillQueryUrl, JsonConvert.SerializeObject(Parameters));
            return result == null ? "" : result;
        }

        /// <summary>
        /// Cloud表单查询(异步)
        /// </summary>
        /// <param name="data">CloudExecuteBillQueryModel 反序列化后Json格式</param>
        /// <returns></returns>
        public async Task<string> CloudExecuteBillQueryAsync(string data)
        {
            List<object> Parameters = new List<object>();
            Parameters.Add(data);
            return await HttpClientHelper_HttpPostAsync(CloudLinkConfigModel.executeBillQueryUrl, JsonConvert.SerializeObject(Parameters));
        }

        /// <summary>
        /// 用语句查询数据库
        /// </summary>
        /// <para

K3Cloud服务操作接口(ExcuteOperation)实战及更新冻结人字段(续篇)

/// <summary> /// 服务接口(同步) /// </summary> /// <param name="formid"></param> /// <param name="dat...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信