SDK的方式没法在NetCore平台中使用。所以就采用了最原始的HTTP访问调用来实现,具体如下:
1、设定接口IK3CloudApi,IAfterK3CloudApi(有需要的可以自行扩展与实现)
public interface IK3CloudApi
{
/// <summary>
/// 开启新实例
/// </summary>
/// <returns></returns>
IK3CloudApi StartNew();
/// <summary>
/// 执行保存
/// </summary>
/// <returns></returns>
IK3CloudApi Save(string formid, string data);
/// <summary>
/// 执行保存
/// </summary>
/// <returns></returns>
IK3CloudApi Save<T>(string formid, SaveParam<T> data, JsonSerializerSettings jsonSerializerSettings = default) where T : class;
/// <summary>
/// 执行保存
/// </summary>
/// <returns></returns>
IK3CloudApi BatchSave(string formid, string data);
/// <summary>
/// 执行保存
/// </summary>
/// <returns></returns>
IK3CloudApi BatchSave<T>(string formid, BatchSaveParam<T> data, JsonSerializerSettings jsonSerializerSettings = default) where T : class;
/// <summary>
/// 执行审核
/// </summary>
/// <returns></returns>
IK3CloudApi Audit(string formid, string data);
/// <summary>
/// 执行审核
/// </summary>
/// <returns></returns>
IK3CloudApi Audit(string formid, OperationParam data, JsonSerializerSettings jsonSerializerSettings = default);
/// <summary>
/// 执行反审核
/// </summary>
/// <returns></returns>
IK3CloudApi UnAudit(string formid, string data);
/// <summary>
/// 执行反审核
/// </summary>
/// <returns></returns>
IK3CloudApi UnAudit(string formid, OperationParam data, JsonSerializerSettings jsonSerializerSettings = default);
/// <summary>
/// 执行提交
/// </summary>
/// <returns></returns>
IK3CloudApi Submit(string formid, string data);
/// <summary>
/// 执行提交
/// </summary>
/// <returns></returns>
IK3CloudApi Submit(string formid, OperationParam data, JsonSerializerSettings jsonSerializerSettings = default);
/// <summary>
/// 执行删除
/// </summary>
/// <returns></returns>
IK3CloudApi Delete(string formid, string data);
/// <summary>
/// 执行删除
/// </summary>
/// <returns></returns>
IK3CloudApi Delete(string formid, OperationParam data, JsonSerializerSettings jsonSerializerSettings = default);
/// <summary>
/// 执行下推
/// </summary>
/// <returns></returns>
IK3CloudApi Push(string formid, string data);
/// <summary>
/// 执行下推
/// </summary>
/// <returns></returns>
IK3CloudApi Push(string formid, PushParam data, JsonSerializerSettings jsonSerializerSettings = default);
/// <summary>
/// 执行操作
/// </summary>
/// <returns></returns>
IK3CloudApi ExcuteOperation(string formid, string opNumber, string data);
/// <summary>
/// 随后执行
/// </summary>
/// <returns></returns>
IAfterK3CloudApi After();
/// <summary>
/// 执行
/// </summary>
/// <param name="resultCallback">回调方法</param>
/// <returns></returns>
Task<MessageResult> SendAsync(Func<CloudCallBack, bool> resultCallback = null);
/// <summary>
/// 执行
/// </summary>
/// <param name="resultCallback">回调方法</param>
/// <returns></returns>
MessageResult Send(Func<CloudCallBack, bool> resultCallback = null);
}
其中随后执行是为了满足 单据审核时 需要先调用提交动作 而产生的,具体如下:
随后执行 目前只支持通过formid的操作,也就是只能操作同一个类型的单据/档案
public interface IAfterK3CloudApi
{
/// <summary>
/// 执行保存
/// </summary>
/// <returns></returns>
IK3CloudApi Save(string data = null);
/// <summary>
/// 执行保存
/// </summary>
/// <returns></returns>
IK3CloudApi Save(string formid, string data = null);
/// <summary>
/// 执行审核
/// </summary>
/// <returns></returns>
IK3CloudApi Audit(string data = null);
/// <summary>
/// 执行反审核
/// </summary>
/// <returns></returns>
IK3CloudApi UnAudit(string data = null);
/// <summary>
/// 执行提交
/// </summary>
/// <returns></returns>
IK3CloudApi Submit(string data = null);
/// <summary>
/// 执行删除
/// </summary>
/// <returns></returns>
IK3CloudApi Delete(string data = null);
/// <summary>
/// 执行操作
/// </summary>
/// <returns></returns>
IK3CloudApi ExcuteOperation(string opNumber, string data = null);
/// <summary>
/// 执行审核
/// </summary>
/// <returns></returns>
IK3CloudApi Audit(Func<CloudOperationResult, string> func);
/// <summary>
/// 执行反审核
/// </summary>
/// <returns></returns>
IK3CloudApi UnAudit(Func<CloudOperationResult, string> func);
/// <summary>
/// 执行提交
/// </summary>
/// <returns></returns>
IK3CloudApi Submit(Func<CloudOperationResult, string> func);
/// <summary>
/// 执行删除
/// </summary>
/// <returns></returns>
IK3CloudApi Delete(Func<CloudOperationResult, string> func);
/// <summary>
/// 执行下推
/// </summary>
/// <returns></returns>
IK3CloudApi Push(Func<CloudOperationResult, string> func);
/// <summary>
/// 执行下推
/// </summary>
/// <returns></returns>
IK3CloudApi Push(string data = null);
/// <summary>
/// 执行下推
/// </summary>
/// <returns></returns>
IK3CloudApi Push(PushParam data = null, JsonSerializerSettings jsonSerializerSettings = default);
/// <summary>
/// 执行审核
/// </summary>
/// <returns></returns>
IK3CloudApi Audit(OperationParam data = null, JsonSerializerSettings jsonSerializerSettings = default);
/// <summary>
/// 执行反审核
/// </summary>
/// <returns></returns>
IK3CloudApi UnAudit(OperationParam data = null, JsonSerializerSettings jsonSerializerSettings = default);
/// <summary>
/// 执行提交
/// </summary>
/// <returns></returns>
IK3CloudApi Submit(OperationParam data = null, JsonSerializerSettings jsonSerializerSettings = default);
/// <summary>
/// 执行删除
/// </summary>
/// <returns></returns>
IK3CloudApi Delete(OperationParam data = null, JsonSerializerSettings jsonSerializerSettings = default);
}
实现类如下:
1、AppSettings 是对接配置文件,有需要可以自行替换为IConfiguration获取
2、需要配置的有地址、用户名、密码、数据帐套,对应(urlValue,starryskyusername,starryskyuserpwd,starryskyid)这里我区分了测试环境与生产环境的取值
3、SendAsync与Send方法设置了processResultCallback的回调,传入Action与返回值,并要求回传True或者False。作用是多个动作执行过程中,返回True (默认值)则前面的动作执行失败后不执行后续动作
4、插入动作的那个方法如果参数有多个则自行在新增方法实现,
/// <summary>
/// 云星空的API调用
/// </summary>
[Serializable]
internal class K3CloudApi : IK3CloudApi

最低0.47元/天 解锁文章
2542

被折叠的 条评论
为什么被折叠?



