Files
RBMESAPICore/Controllers/Interface/IShareController.cs
yuyubohh e8494ba988 qqq
2025-09-09 22:41:29 +08:00

272 lines
12 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using Newtonsoft.Json.Linq;
using RB_MES_API.Models;
using RB_MES_API.Models.Cloud;
using System.Data;
namespace RB_MES_API.Controllers
{
/// <summary>
/// 控制器间通用服务
/// </summary>
public interface IShareController
{
/// <summary>
/// POST请求备份(接收数据校验完成后备份到数据库)
/// </summary>
/// <param name="intface">接口名称</param>
/// <param name="doctype">访问类型</param>
/// <param name="data">传入的JSON解密后</param>
public void PostRequestBack(string intface, string doctype, string data);
/// <summary>
/// 获取枚举显示值
/// </summary>
/// <param name="saveval"></param>
/// <returns></returns>
public string? GetDropDownText<T>(int saveval);
/// <summary>
/// 字符串转decimal错误时返回0
/// </summary>
/// <param name="sqty">待转换的代表数量</param>
/// <returns></returns>
public decimal DecimalPar(string sqty);
/// <summary>
/// 将JSON对象转为单个对象
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="data"></param>
/// <param name="reason"></param>
/// <returns></returns>
public T DataToClass<T>(string data, ref string reason) where T : class, new();
/// <summary>
/// 将JSON转为实体类
/// </summary>
/// <typeparam name="T">泛型</typeparam>
/// <param name="data">Json数据包</param>
/// <param name="reason">错误消息</param>
/// <returns></returns>
public List<T>? DataConvertClass<T>(string data, ref string reason) where T : class;
/// <summary>
/// 得到查询接口的名称
/// </summary>
/// <param name="id">查询接口序号</param>
/// <returns></returns>
public string? InterfaceName(int id);
/// <summary>
/// 得到接收接口的名称
/// </summary>
/// <param name="id">K3单据类型ID</param>
/// <returns></returns>
public string? K3BillName(int id);
/// <summary>
/// 将DataTable转成XML
/// </summary>
/// <param name="tb">数据表</param>
/// <param name="tbName">表名</param>
/// <returns></returns>
public string? DatatableToXml(DataTable tb, string? tbName=null);
///// <summary>
///// 沃比日志,单独作用域
///// </summary>
///// <param name="intfc"></param>
///// <param name="doctypd">接口类型</param>
///// <param name="mess">消息说明</param>
///// <param name="sour">消息源</param>
///// <param name="staus">是否错误</param>
///// <param name="guid">全球唯一码</param>
//public Task<int> _Sqllogger(int intfc, string doctypd, string mess, string sour, bool staus = false, string guid = "");
/// <summary>
/// 沃比SQL日志
/// </summary>
/// <param name="intfc">接口分组</param>
/// <param name="doctypd">接口类型</param>
/// <param name="mess">消息说明</param>
/// <param name="sour">消息源</param>
/// <param name="staus">是否错误</param>
/// <param name="guid">全球唯一码,成对出现时用于识别传递前后</param>
public void _SqlloggerInvoke(int intfc, string doctypd, string mess, string sour, bool staus = false, string guid = "");
public void _SqllogInvoke(RBLog log);
/// <summary>
/// 取得查询连接字符串
/// </summary>
/// <param name="id">接口ID</param>
/// <returns></returns>
public string GetSelectSql(int id);
/// <summary>
/// 通过DataTable转为指定的实体类
/// </summary>
/// <typeparam name="T">实体类</typeparam>
/// <param name="dataTable">输入表单</param>
/// <returns></returns>
public List<T> GetClassList<T>(DataTable dataTable) where T : class, new();
/// <summary>
/// 字符串64位解密
/// </summary>
/// <param name="B64"></param>
/// <returns></returns>
public string UnBase64Decode(string B64);
/// <summary>
/// 字符串64位加密
/// </summary>
/// <param name="B64"></param>
/// <returns></returns>
public string Base64Decode(string B64);
/// <summary>
/// 在目标ints中通过组合检验是否包含参数v
/// </summary>
/// <param name="ints">要校验的参数值范围</param>
/// <param name="v">要判断的枚举值</param>
/// <param name="setv">当前设置的值</param>
/// <returns></returns>
public bool SCombination(List<int> ints, int v, int setv);
/// <summary>
/// 将目标枚举T除exceptobj以外的参数值放入List<int>中。注意是参数值不是枚举项目所在index
/// </summary>
/// <typeparam name="T">枚举类型</typeparam>
/// <param name="exceptobj">排除的参数值</param>
/// <returns>除exceptobj以外的参数值集合</returns>
public List<int> GetSetInts<T>(int exceptobj) where T : struct, Enum;
/// <summary>
/// 将DataTable对象转为JSON带字段名
/// </summary>
/// <param name="table"></param>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
public string ObjectToJSON(DataTable table);
/// <summary>
/// 判断是否批量保存成功
/// </summary>
/// <param name="result">需要分析的json</param>
/// <param name="needfileds">必须返回的字段</param>
/// <param name="message">如果不成功代表错误消息否则代表返回的字段键值对Dictionary<string, string></param>
/// <returns></returns>
public bool CloudExecuteBatchSaveStatus(string result, string needfileds, ref List<Dictionary<string, string>> message);
/// <summary>
/// 判断金蝶云星空是否批量保存成功
/// </summary>
/// <param name="result">需要分析的json</param>
/// <param name="needfileds">必须返回的字段</param>
/// <param name="message">如果不成功,代表错误消息;否则代表返回的字段键值对
/// <returns></returns>
public bool KDCloudExecuteBatchSaveStatus(string result, string needfileds, ref int errcord, ref List<Dictionary<string, string>> message);
/// <summary>
/// Cloud判断是否保存成功
/// </summary>
/// <param name="result"></param>
/// <param name="message"></param>
/// <returns></returns>
public bool CloudExecuteSaveStatus(string result, ref string message);
/// <summary>
/// 动态生成客户端需要的对象inputjson必须有字段名
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="fid">FFunctionID</param>
/// <param name="dectablename">FDesTableName</param>
/// <param name="inputjson">从金蝶Cloud里获取的数据集</param>
/// <param name="reason">错误时返回消息</param>
/// <returns></returns>
public List<T> GetNewObj<T>(int fid, string dectablename, string inputjson, ref string reason) where T : class, new();
/// <summary>
/// 将子查询的返回数据按顺序赋值给对象inputjson可以无字段名
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="fieldkeys">字段顺序当inputjson无字段名时以此为准</param>
/// <param name="inputjson">返回JSON</param>
/// <param name="reason">错误时返回消息</param>
/// <returns></returns>
public List<T> GetNewObjForChild<T>(string fieldkeys, string inputjson, ref string reason) where T : class, new();
/// <summary>
/// 将传入的JSON转为DataTable接收到的数据可以无字段名字段来源于r_ClumnConvert
/// </summary>
/// <param name="fid">FFunctionID</param>
/// <param name="DocType">FDesTableName</param>
/// <param name="data">从云星空查询到的数据列表</param>
/// <returns></returns>
public DataTable GetInputDataTable(int fid, string DocType, string data, ref string messtr);
/// <summary>
/// 根据字段顺序将JSON数据集转为DataTable,data可以无字段名fieldkeys来源于r_CloudBillQuery
/// </summary>
/// <param name="fieldkeys">字段。格式SQL查询Select后From前的字段名不能为空</param>
/// <param name="data"></param>
/// <param name="messtr">如果有错误就返回消息</param>
/// <returns></returns>
public DataTable JsonConvertDatatable(string fieldkeys, string data, ref string messtr);
/// <summary>
/// JSON直接转datatable
/// </summary>
/// <param name="data">json</param>
/// <param name="messtr">返回的错误消息</param>
/// <returns></returns>
public DataTable JsonToDatatable(string data,ref string messtr);
/// <summary>
/// 将有字段名的表转为LISTKey为字段名Val为字段值
/// </summary>
/// <param name="table">数据表</param>
/// <returns></returns>
public List<Dictionary<string, string>> GetClassList(DataTable table);
/// <summary>
/// 将JArray转为Dictionary子项必须有字段名
/// </summary>
/// <param name="arrjson"></param>
/// <returns></returns>
public List<Dictionary<string, object>> GetClassList(JArray arrjson);
/// <summary>
/// 将计量单位添加到缓存
/// </summary>
public void AddUnitCache();
/// <summary>
/// 从缓存中读取API接口所需要的配置
/// </summary>
/// <typeparam name="T">配置类</typeparam>
/// <returns></returns>
public Task<List<T>> GetAPIList<T>() where T : class, new();
/// <summary>
/// 取有源单的推送单据类型
/// </summary>
/// <param name="postdoctype">推送的接口类型</param>
/// <param name="sourtype">源单的单据类型编号</param>
/// <returns></returns>
public string GetDesFormID(string postdoctype, string sourtype);
/// <summary>
/// JSON转动态对象列表
/// 真正的动态对象,注意字段要完全匹配!!!
/// </summary>
/// <param name="spacename">命名空间名称</param>
/// <param name="clssname">模型名</param>
/// <param name="data">能转为JArray的json</param>
/// <param name="reason">错误消息</param>
/// <returns></returns>
public List<T>? DataConvertClass<T>(string spacename, string clssname, string data, ref string reason) where T : class, new();
/// <summary>
/// 实体类的必填字段校验,未写完
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="ts"></param>
/// <param name="reason"></param>
/// <returns></returns>
public bool CheckRequired<T>(List<T> ts, ref string reason);
/// <summary>
/// 通过系统参数获取销售价格资料ID
/// </summary>
/// <param name="reason"></param>
/// <returns></returns>
public int GetSalePriceID(string reason);
/// <summary>
/// ASC进位算法
/// </summary>
/// <param name="s">源字符串</param>
/// <param name="len">总长度</param>
/// <param name="coverstr">补位符号</param>
/// <param name="mess">错误消息</param>
/// <returns></returns>
public void ASCCarry( ref string s, int len, string coverstr);
/// <summary>
/// 不必等待,直接保存请求成功的备份
/// </summary>
/// <param name="dataBacks">List<ReciveDataBack></param>
public void SaveReciveData(object dataBacks);
}
}