diff --git a/UFIDA.U8.Framework.Api.Common/Entity/SysU8AccountConfig.cs b/UFIDA.U8.Framework.Api.Common/Entity/SysU8AccountConfig.cs new file mode 100644 index 0000000..91546c5 --- /dev/null +++ b/UFIDA.U8.Framework.Api.Common/Entity/SysU8AccountConfig.cs @@ -0,0 +1,78 @@ +using SqlSugar; +using UFIDA.U8.Framework.Api.ControlObject.Models; + +namespace UFIDA.U8.Framework.Api.Common.Entity +{ + /// + /// 系统U8账套对接参数配置表 + /// + [SugarTable("SysU8AccountConfig", "系统U8账套对接参数配置表")] + [SugarIndex("index_{table}_I", nameof(Id), OrderByType.Asc)] + public class SysU8AccountConfig :ControlObject.Models.SysU8AccountConfig + { + + [SugarColumn(IsIdentity = true, IsPrimaryKey = true, ColumnDescription = "主键", ColumnName = "Id", IsNullable = false)] + public int Id { get; set; } + + /// + /// 系统号 + /// + [SugarColumn(ColumnDescription = "系统号", Length = 100)] + public override string cAccountNo { get; set; } + + /// + /// 账套号 + /// + [SugarColumn(ColumnDescription = "账套号", Length = 100)] + public override string cAcc_Id { get; set; } + + /// + /// 账套名称 + /// + [SugarColumn(ColumnDescription = "账套名称", Length = 255)] + public override string cAcc_Name { get; set; } + + /// + /// 账套数据源 + /// + [SugarColumn(ColumnDescription = "账套数据源", Length = 255)] + public override string cAcc_DataSource { get; set; } + + /// + /// 用户ID + /// + [SugarColumn(ColumnDescription = "用户ID", Length = 100)] + public override string cUser_Id { get; set; } + + /// + /// 用户名 + /// + [SugarColumn(ColumnDescription = "用户名", Length = 255)] + public override string cUser_Name { get; set; } + + /// + /// 密码 + /// + [SugarColumn(ColumnDescription = "密码", Length = 255)] + public override string cPassword { get; set; } + + /// + /// 服务器地址 + /// + [SugarColumn(ColumnDescription = "服务器地址", Length = 255)] + public override string cSrv { get; set; } + + /// + /// 状态 + /// + [SugarColumn(ColumnDescription = "状态")] + public override StatusEnum Status { get; set; } = StatusEnum.Enable; + + /// + /// 备注 + /// + [SugarColumn(ColumnDescription = "备注", Length = 255)] + public override string Remark { get; set; } + + } +} diff --git a/UFIDA.U8.Framework.Api.Common/UFIDA.U8.Framework.Api.Common.csproj b/UFIDA.U8.Framework.Api.Common/UFIDA.U8.Framework.Api.Common.csproj index 57cf3a9..215fc5d 100644 --- a/UFIDA.U8.Framework.Api.Common/UFIDA.U8.Framework.Api.Common.csproj +++ b/UFIDA.U8.Framework.Api.Common/UFIDA.U8.Framework.Api.Common.csproj @@ -38,6 +38,12 @@ ..\packages\log4net.2.0.17\lib\net45\log4net.dll + + ..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll + + + ..\packages\SqlSugar.5.1.4.162\lib\SqlSugar.dll + @@ -50,6 +56,7 @@ + @@ -57,6 +64,14 @@ - + + + {22c84be9-1613-4e32-9e98-237e96fd3540} + UFIDA.U8.Framework.Api.ControlObject + + + + + \ No newline at end of file diff --git a/UFIDA.U8.Framework.Api.Common/packages.config b/UFIDA.U8.Framework.Api.Common/packages.config index d667060..146c4ee 100644 --- a/UFIDA.U8.Framework.Api.Common/packages.config +++ b/UFIDA.U8.Framework.Api.Common/packages.config @@ -2,4 +2,6 @@ + + \ No newline at end of file diff --git a/UFIDA.U8.Framework.Api.ControlObject/Common/BEHelper.cs b/UFIDA.U8.Framework.Api.ControlObject/Common/BEHelper.cs new file mode 100644 index 0000000..1878c24 --- /dev/null +++ b/UFIDA.U8.Framework.Api.ControlObject/Common/BEHelper.cs @@ -0,0 +1,86 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; + +// ReSharper disable InconsistentNaming +// ReSharper disable IdentifierTypo +// ReSharper disable StringLiteralTypo + +namespace UFIDA.U8.Framework.Api.ControlObject.Common +{ + public class BEHelper + { + private readonly dynamic _be; + private readonly PropertyInfo[] _props; + + public BEHelper(dynamic be) + { + _be = be; + var tp = be.GetType(); + _props = tp.GetProperties(); + } + + public void SetValue(Dictionary dictionary) + { + foreach (var key in dictionary.Keys) + { + if (key.Contains("define") && !key.Contains("chdefine")) + { + var defineCode = int.Parse(key.Replace("define", "")); + if (dictionary.TryGetValue(key, out var bValue) && !string.IsNullOrWhiteSpace($"{bValue}")) + { + _be.UserDefinedItem[defineCode] = dictionary[key]; + } + } + else if (key.Contains("chdefine")) + { + var defineCode = int.Parse(key.Replace("chdefine", "")); + + if (dictionary.TryGetValue(key, out var bValue) && !string.IsNullOrWhiteSpace($"{bValue}")) + { + _be.ExtendUserDefineItem[defineCode] = dictionary[key]; + } + } + else if (key != "body") + { + if (!string.IsNullOrWhiteSpace($"{dictionary[key]}") && _props.Any(a => string.Equals(a.Name, key, StringComparison.OrdinalIgnoreCase))) + { + var prop = _props.First(a => string.Equals(a.Name, key, StringComparison.OrdinalIgnoreCase)); + + if (prop.PropertyType == typeof(string)) + { + prop.SetValue(_be, dictionary[key]); + } + + if (prop.PropertyType == typeof(DateTime)) + { + prop.SetValue(_be, DateTime.Parse($"{dictionary[key]}")); + } + + if (prop.PropertyType == typeof(byte)) + { + prop.SetValue(_be, byte.Parse($"{dictionary[key]}")); + } + + if (prop.PropertyType == typeof(int)) + { + prop.SetValue(_be, int.Parse($"{dictionary[key]}")); + } + + if (prop.PropertyType == typeof(long)) + { + prop.SetValue(_be, long.Parse($"{dictionary[key]}")); + } + + if (prop.PropertyType == typeof(decimal)) + { + prop.SetValue(_be, decimal.Parse($"{dictionary[key]}")); + } + + } + } + } + } + } +} diff --git a/UFIDA.U8.Framework.Api.ControlObject/Json/JsonHelper.cs b/UFIDA.U8.Framework.Api.ControlObject/Json/JsonHelper.cs new file mode 100644 index 0000000..dcc7841 --- /dev/null +++ b/UFIDA.U8.Framework.Api.ControlObject/Json/JsonHelper.cs @@ -0,0 +1,47 @@ +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; + +namespace UFIDA.U8.Framework.Api.ControlObject.Json +{ + public static class JsonHelper + { + public static object ToJson(this string Json) + { + return Json == null ? null : JsonConvert.DeserializeObject(Json); + } + public static string ToJson(this object obj) + { + var timeConverter = new IsoDateTimeConverter { DateTimeFormat = "yyyy-MM-dd HH:mm:ss" }; + return JsonConvert.SerializeObject(obj, timeConverter); + } + + public static string ToJson(this object obj, string datetimeformats) + { + var timeConverter = new IsoDateTimeConverter { DateTimeFormat = datetimeformats }; + return JsonConvert.SerializeObject(obj, timeConverter); + } + public static T ToObject(this string Json) + { + return Json == null ? default : JsonConvert.DeserializeObject(Json); + } + public static List ToList(this string Json) + { + return Json == null ? null : JsonConvert.DeserializeObject>(Json); + } + public static DataTable ToTable(this string Json) + { + return Json == null ? null : JsonConvert.DeserializeObject(Json); + } + public static JObject ToJObject(this string Json) + { + return JObject.Parse(Json.Replace(" ", "")); + } + } +} diff --git a/UFIDA.U8.Framework.Api.ControlObject/Models/LoginParamter.cs b/UFIDA.U8.Framework.Api.ControlObject/Models/LoginParamter.cs index dcdf692..daeeaf3 100644 --- a/UFIDA.U8.Framework.Api.ControlObject/Models/LoginParamter.cs +++ b/UFIDA.U8.Framework.Api.ControlObject/Models/LoginParamter.cs @@ -14,7 +14,7 @@ namespace UFIDA.U8.Framework.Api.ControlObject.Models /// /// 登录子系统ID,具体可以查看系统启用 /// - public string pSubId { get; set; } = "AS"; + public string pSubId { get; set; } = "DP"; /// /// 账套ID,一般为数据源@账套号 @@ -50,10 +50,5 @@ namespace UFIDA.U8.Framework.Api.ControlObject.Models /// 序列号,一般不填 /// public string cSerial { get; set; } = ""; - - /// - /// 账套信息标识 - /// - public string cToken { get; set; } = ""; } } diff --git a/UFIDA.U8.Framework.Api.ControlObject/Models/StatusEnum.cs b/UFIDA.U8.Framework.Api.ControlObject/Models/StatusEnum.cs new file mode 100644 index 0000000..8b019db --- /dev/null +++ b/UFIDA.U8.Framework.Api.ControlObject/Models/StatusEnum.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace UFIDA.U8.Framework.Api.ControlObject.Models +{ + /// + /// 通用状态枚举 + /// + [Description("通用状态枚举")] + public enum StatusEnum + { + /// + /// 启用 + /// + [Description("启用")] + Enable = 1, + + /// + /// 停用 + /// + [Description("停用")] + Disable = 2, + } +} diff --git a/UFIDA.U8.Framework.Api.ControlObject/Models/SysU8AccountConfig.cs b/UFIDA.U8.Framework.Api.ControlObject/Models/SysU8AccountConfig.cs new file mode 100644 index 0000000..126646b --- /dev/null +++ b/UFIDA.U8.Framework.Api.ControlObject/Models/SysU8AccountConfig.cs @@ -0,0 +1,61 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace UFIDA.U8.Framework.Api.ControlObject.Models +{ + public class SysU8AccountConfig + { + /// + /// 系统号 + /// + public virtual string cAccountNo { get; set; } + + /// + /// 账套号 + /// + public virtual string cAcc_Id { get; set; } + + /// + /// 账套名称 + /// + public virtual string cAcc_Name { get; set; } + + /// + /// 账套数据源 + /// + public virtual string cAcc_DataSource { get; set; } + + /// + /// 用户ID + /// + public virtual string cUser_Id { get; set; } + + /// + /// 用户名 + /// + public virtual string cUser_Name { get; set; } + + /// + /// 密码 + /// + public virtual string cPassword { get; set; } + + /// + /// 服务器地址 + /// + public virtual string cSrv { get; set; } + + /// + /// 状态 + /// + public virtual StatusEnum Status { get; set; } = StatusEnum.Enable; + + /// + /// 备注 + /// + public virtual string Remark { get; set; } + } +} diff --git a/UFIDA.U8.Framework.Api.ControlObject/U8M/BaseLogin.cs b/UFIDA.U8.Framework.Api.ControlObject/U8M/BaseLogin.cs index 0e2709c..d588062 100644 --- a/UFIDA.U8.Framework.Api.ControlObject/U8M/BaseLogin.cs +++ b/UFIDA.U8.Framework.Api.ControlObject/U8M/BaseLogin.cs @@ -19,7 +19,7 @@ namespace UFIDA.U8.Framework.Api.ControlObject.U8M private NetLogin _netLogin { get; set; } private VBLogin _vbLogin { get; set; } - private ProductContext _productContext { get; set; } + public ProductContext _productContext { get; set; } public Connection Connection { get; set; } @@ -83,49 +83,12 @@ namespace UFIDA.U8.Framework.Api.ControlObject.U8M Trace.WriteLine($"3--登录令牌:{_vbLogin.userToken}"); - - - //Trace.WriteLine($"4--正在创建应用池:{_netLogin.userToken}"); - - //var info = U8LoginInfo.CreateInstance(_netLogin.userToken); - - //U8LoginInfoPool.Add(_netLogin.userToken, info); - - //Trace.WriteLine($"4--创建应用池:{info.U8LoginToken}"); - - //Trace.WriteLine($"4--正在设置线程登录信息:{_netLogin.userToken}"); - //ThreadContext.SetLoginInfo(_netLogin.userToken); - //Trace.WriteLine($"4--设置线程登录信息:{_netLogin.userToken}"); + Trace.WriteLine($"4--正在创建应用池:{_netLogin.userToken}"); return; } - //if (_vbLogin ==null) - //{ - // _vbLogin = new VBLogin(); - - // _vbLogin.ClearError(); - - // if (!_vbLogin.Login(paramter.pSubId, paramter.pAccId, paramter.pYearId, paramter.pUserId, paramter.pPassword, paramter.pDate, paramter.cSrv, paramter.cSerial) && string.IsNullOrWhiteSpace(_vbLogin.userToken)) - // { - // //_vbLogin.ShutDown(); - // throw new Exception(_vbLogin.ShareString); - // } - // Trace.WriteLine($"U8版本:{_vbLogin.GetVersionInfo()}"); - // Trace.WriteLine($"1--登录令牌:{_netLogin.userToken}"); - - // if (!string.IsNullOrWhiteSpace(Cryptography.m_userToken)) - // { - // Cryptography.m_userToken = ""; - // } - //} - - //if (!string.IsNullOrWhiteSpace(Cryptography.m_userToken)) - //{ - // Cryptography.m_userToken = ""; - //} - _productContext = _netLogin.Login("AS", _vbLogin.userToken); Trace.WriteLine($"3--上下文令牌:{_productContext.calledContext.token}"); @@ -133,25 +96,33 @@ namespace UFIDA.U8.Framework.Api.ControlObject.U8M if (_productContext == null) throw new Exception($"2--初始化U8登录上下文失败------{_netLogin.ErrDescript}"); + ClientUserContext.Instance.RefreshContext(); Connection = new Connection(); Connection.Open(_vbLogin.UfDbName); } public void ShutDown() { + U8LoginInfoPool.Clear(); - U8LoginInfoPool.Remove(_netLogin.userToken); - - _vbLogin.ShutDown(); - - _netLogin.ShutDown(); - _netLogin.Dispose(); + ThreadContext.ServerToken = null; + + _vbLogin?.ShutDown(); + _productContext=null; + _netLogin?.ShutDown(); + _netLogin?.Dispose(); _vbLogin = null; + _netLogin = null; if (!string.IsNullOrWhiteSpace(Cryptography.m_userToken)) { Cryptography.m_userToken = ""; } } + + public bool CheckAccId(string cAccId) + { + return _vbLogin.get_cAcc_Id() == cAccId; + } } } diff --git a/UFIDA.U8.Framework.Api.ControlObject/U8M/MoRoutingBill.cs b/UFIDA.U8.Framework.Api.ControlObject/U8M/MoRoutingBill.cs new file mode 100644 index 0000000..0641e45 --- /dev/null +++ b/UFIDA.U8.Framework.Api.ControlObject/U8M/MoRoutingBill.cs @@ -0,0 +1,127 @@ +using log4net; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using UFIDA.U8.Framework.Api.ControlObject.Common; +using UFIDA.U8.Framework.Api.ControlObject.Json; +using UFIDA.U8.Framework.Api.ControlObject.Models; +using UFSoft.U8.Framework.BizBase; +using UFSoft.U8.Framework.ContextSrv; +using UFSoft.U8.Framework.DBConnection; +using UFSoft.U8.Framework.LoginContext; +using UFSoft.U8.U8M.BFDispatcher; +using UFSoft.U8.U8M.Common; +using UFSoft.U8.U8M.DOSchema.SF; +using ThreadContext = UFSoft.U8.Framework.ContextSrv.ThreadContext; +// ReSharper disable IdentifierTypo +// ReSharper disable InconsistentNaming +// ReSharper disable StringLiteralTypo + +namespace UFIDA.U8.Framework.Api.ControlObject.U8M +{ + public class MoRoutingBill + { + protected readonly ILog logInfo = LogManager.GetLogger("logInfo"); + + private MoRoutingBillDs GetEmptyDs(string cCardNum) + { + var ds = SFExecutor.BFMoRoutingBill_LoadData("LoadFirst", 0, "", cCardNum, new DefaultContextContainer()); + + #region 清除数据集里的数据 + + if (ds.Tables.Contains("fc_MoRoutingBilldetail_ExtraDefine")) + { + ds.Tables["fc_MoRoutingBilldetail_ExtraDefine"].Clear(); + } + if (ds.Tables.Contains("fc_MoRoutingBill_ExtraDefine")) + { + ds.Tables["fc_MoRoutingBill_ExtraDefine"].Clear(); + } + + ds.MoRoutingBillRes.Clear(); + ds.MoRoutingBillDetail.Clear(); + ds.MoRoutingBill.Clear(); + + #endregion + + return ds; + } + + + private MoRoutingBillDs GetVoucherDs(string cCardNum, AutoDocNoGenerateParam docNoParam, Dictionary input) + { + + var ds = GetEmptyDs(cCardNum); + + var head = ds.MoRoutingBill.NewMoRoutingBillRow(); + + ds.MoRoutingBill.AddMoRoutingBillRow(head); + + var docNo = U8MCommonExecutor.BFVoucher_GetVoucherID(cCardNum, docNoParam.Paramaters, false, new DefaultContextContainer()); + + var be = new UFSoft.U8.SF.BE.MoRoutingBill(ds); + + be.cVouchType = cCardNum; + be.cVouchCode = ""; + + var beHead = new BEHelper(be); + + beHead.SetValue(input); + + if (string.IsNullOrWhiteSpace(be.cVouchCode)) + { + be.cVouchCode = docNo; + } + + var bodys = input["body"] as List> ?? $"{input["body"]}".ToObject>>(); + + for (var i = 0; i < bodys.Count; i++) + { + var body = bodys[i]; + var detail = be.MoRoutingBillDetails[i]; + + var beBody = new BEHelper(detail); + + beBody.SetValue(body); + } + + + return (MoRoutingBillDs)be.DataObject; + } + + + public BaseResult Save(string cCardNum, Dictionary input) + { + try + { + var docNoParam = new AutoDocNoGenerateParam(EnumAutoDocNoType.HandAuto, cCardNum) + { + IsCurrentDocNoByHand = false + }; + + var ds = GetVoucherDs(cCardNum, docNoParam, input); + + if (ds == null) + { + throw new Exception("未能构建数据集"); + } + + //var context = new DefaultContextContainer(); + //context.context["taskid"] = taskId; + + var id = SFExecutor.BFMoRoutingBill_MoRoutingBillSave(ds, docNoParam, new DefaultContextContainer()); + + return new BaseResult() { bSuccess = true, message = "新增成功", result = id }; + } + catch (Exception ex) + { + logInfo.Error(ex.Message, ex); + + return new BaseResult() { bSuccess = false, message = "新增失败", result = ex.Message }; + + } + + } + } +} diff --git a/UFIDA.U8.Framework.Api.ControlObject/UFIDA.U8.Framework.Api.ControlObject.csproj b/UFIDA.U8.Framework.Api.ControlObject/UFIDA.U8.Framework.Api.ControlObject.csproj index ca0a555..56b19fd 100644 --- a/UFIDA.U8.Framework.Api.ControlObject/UFIDA.U8.Framework.Api.ControlObject.csproj +++ b/UFIDA.U8.Framework.Api.ControlObject/UFIDA.U8.Framework.Api.ControlObject.csproj @@ -57,6 +57,9 @@ ..\packages\log4net.2.0.17\lib\net45\log4net.dll + + ..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll + @@ -67,10 +70,15 @@ + + D:\U8SOFT\U8M\UFSoft.U8.Framework.BE.dll + False + D:\U8SOFT\U8M\UFSoft.U8.Framework.BF.Dispatcher.dll False + D:\U8SOFT\U8M\UFSoft.U8.Framework.Common.dll False @@ -79,6 +87,10 @@ D:\U8SOFT\U8M\UFSoft.U8.Framework.ContextSrv.dll False + + D:\U8SOFT\U8M\UFSoft.U8.Framework.DBConnection.dll + False + D:\U8SOFT\Framework\UFSoft.U8.Framework.Login.BO.dll False @@ -92,12 +104,41 @@ D:\U8SOFT\Framework\UFSoft.U8.Framework.LoginContext.dll False + + D:\U8SOFT\U8M\UFSoft.U8.SF.BE.dll + False + + + D:\U8SOFT\U8M\UFSoft.U8.U8M.BE.dll + False + + + D:\U8SOFT\U8M\UFSoft.U8.U8M.BFDispatcher.dll + False + + + D:\U8SOFT\U8M\UFSoft.U8.U8M.Common.dll + False + + + D:\U8SOFT\U8M\UFSoft.U8.U8M.DOConvert.dll + False + + + D:\U8SOFT\U8M\UFSoft.U8.U8M.DOSchema.dll + False + + + + + + diff --git a/UFIDA.U8.Framework.Api.ControlObject/packages.config b/UFIDA.U8.Framework.Api.ControlObject/packages.config index cb38b9e..98c0e1a 100644 --- a/UFIDA.U8.Framework.Api.ControlObject/packages.config +++ b/UFIDA.U8.Framework.Api.ControlObject/packages.config @@ -1,4 +1,5 @@  + \ No newline at end of file diff --git a/UFIDA.U8.Framework.Api/App_Data/API_Meta.db b/UFIDA.U8.Framework.Api/App_Data/API_Meta.db new file mode 100644 index 0000000..df2fdc2 Binary files /dev/null and b/UFIDA.U8.Framework.Api/App_Data/API_Meta.db differ diff --git a/UFIDA.U8.Framework.Api/App_Data/FC90.json b/UFIDA.U8.Framework.Api/App_Data/FC90.json new file mode 100644 index 0000000..e38f63b --- /dev/null +++ b/UFIDA.U8.Framework.Api/App_Data/FC90.json @@ -0,0 +1,21 @@ +{ + "cVouchDate": "2024-06-30", + "wcid": null, + "body": [ + { + "moid": 1000000074, + "modid": 1000000092, + "mocode": null, + "moseq": 1, + "opseq": "0010", + "inopseq": "0020", + "employcode": "00006", + "actualduedate": "2024-06-30 00:00:00", + "moroutingid": 1000000010, + "outmoroutingdid": 1000000026, + "moroutingdid": 1000000027, + "opstatus": 3, + "qualifiedqty": 1 + } + ] +} diff --git a/UFIDA.U8.Framework.Api/App_Data/U8API.xml b/UFIDA.U8.Framework.Api/App_Data/U8API.xml index aa59039..5c78678 100644 --- a/UFIDA.U8.Framework.Api/App_Data/U8API.xml +++ b/UFIDA.U8.Framework.Api/App_Data/U8API.xml @@ -516,6 +516,58 @@ The physical path to XML document. + + + 公共服务 + + + + + 日志对象 + + + + + 获取加密字符串 + + + + + + + 获取解密字符串 + + + + + + + 获取对接账套设置 + + + + + + + 新增对接账套设置 + + + + + + + 更新对接账套设置 + + + + + + + 获取对接账套设置列表 + + + + 车间管理 @@ -538,5 +590,67 @@ + + + 查询参数 + + + + + + + + + + + + + + 公共帮助类 + + + + + 读取对应配置 + + + + + + + 解密 + + + + + + + 加密 + + + + + + + 获取数据库配置信息 + + + + + + + 获取连接对象 + + + + + + 获取登录参数 + + + + + + diff --git a/UFIDA.U8.Framework.Api/Controllers/CommonController.cs b/UFIDA.U8.Framework.Api/Controllers/CommonController.cs new file mode 100644 index 0000000..f40053b --- /dev/null +++ b/UFIDA.U8.Framework.Api/Controllers/CommonController.cs @@ -0,0 +1,186 @@ +using log4net; +using System; +using System.Threading.Tasks; +using System.Web.Http; +using UFIDA.U8.Framework.Api.ControlObject.Models; +using UFIDA.U8.Framework.Api.Models; +using UFIDA.U8.Framework.Api.Unit; +// ReSharper disable InconsistentNaming +// ReSharper disable IdentifierTypo + +namespace UFIDA.U8.Framework.Api.Controllers +{ + + /// + /// 公共服务 + /// + public class CommonController : ApiController + { + /// + /// 日志对象 + /// + protected readonly ILog logInfo = LogManager.GetLogger("logInfo"); + + /// + /// 获取加密字符串 + /// + /// + /// + [HttpGet] + [Route("api/Common/GetEncryptString")] + public BaseResult GetEncryptString(string input) + { + try + { + return new BaseResult { bSuccess = true, message = "加密成功", result = CommUnit.GetEncrypt(input) }; + } + catch (Exception ex) + { + logInfo.Error(ex.Message, ex); + + return new BaseResult { bSuccess = true, message = "加密失败", result = ex.Message }; + } + } + + /// + /// 获取解密字符串 + /// + /// + /// + [HttpGet] + [Route("api/Common/GetDecryptString")] + public BaseResult GetDecryptString(string input) + { + try + { + return new BaseResult { bSuccess = true, message = "解密成功", result = CommUnit.GetDecrypt(input) }; + } + catch (Exception ex) + { + logInfo.Error(ex.Message, ex); + + return new BaseResult { bSuccess = true, message = "解密失败", result =ex.Message }; + } + } + + /// + /// 获取对接账套设置 + /// + /// + /// + [HttpPost] + [Route("api/Common/GetAccountConfig")] + public async Task> GetAccountConfig([FromBody]U8AccountConfigInput input) + { + try + { + var db = CommUnit.GetDbClient(); + + var res=await db.Queryable() + .Where(a => a.cAccountNo == input.cAccId) + .FirstAsync(); + + return new BaseResult { bSuccess = false, message = "查询成功", result = res }; + } + catch (Exception ex) + { + logInfo.Error(ex.Message, ex); + + return new BaseResult { bSuccess = false, message = "查询失败", result = ex.Message }; + } + + } + + /// + /// 新增对接账套设置 + /// + /// + /// + [HttpPost] + [Route("api/Common/AddAccountConfig")] + public async Task> AddAccountConfig([FromBody] AddU8AccountConfigInput input) + { + try + { + var db = CommUnit.GetDbClient(); + + var isExists = await db.Queryable().AnyAsync(a => a.cAccountNo == input.cAccountNo); + + if (isExists) + { + throw new Exception($"已存在系统号为{input.cAccountNo}的数据"); + } + + var id = await db.Insertable(input).ExecuteReturnIdentityAsync(); + + return new BaseResult { bSuccess = true, message = "新增成功", result = id }; + } + catch (Exception ex) + { + logInfo.Error(ex.Message, ex); + + return new BaseResult { bSuccess = false, message = "新增失败", result = ex.Message }; + } + + } + + /// + /// 更新对接账套设置 + /// + /// + /// + [HttpPost] + [Route("api/Common/UpdateAccountConfig")] + public async Task> UpdateAccountConfig([FromBody]AddU8AccountConfigInput input) + { + try + { + var db = CommUnit.GetDbClient(); + + var isExists = await db.Queryable().AnyAsync(a => a.Id==input.Id); + + if (!isExists) + { + throw new Exception($"不存在系统号为{input.cAccountNo}的数据"); + } + + var id = await db.Updateable(input).ExecuteCommandAsync(); + + return new BaseResult { bSuccess = true, message = "更新成功", result = id }; + } + catch (Exception ex) + { + logInfo.Error(ex.Message, ex); + + return new BaseResult { bSuccess = false, message = "更新失败", result = ex.Message }; + } + } + + /// + /// 获取对接账套设置列表 + /// + /// + /// + [HttpPost] + [Route("api/Common/ListAccountConfig")] + public async Task> ListAccountConfig([FromBody] ListU8AccountConfigInput input) + { + try + { + var db = CommUnit.GetDbClient(); + + var res =await db.Queryable() + .WhereIF(!string.IsNullOrWhiteSpace(input.cAccId), a => a.cAccountNo == input.cAccId) + .ToListAsync(); + + return new BaseResult { bSuccess = true, message = "查询成功", result = res }; + } + catch (Exception ex) + { + logInfo.Error(ex.Message, ex); + + return new BaseResult { bSuccess = false, message = "查询失败", result = ex.Message }; + } + } + } +} diff --git a/UFIDA.U8.Framework.Api/Controllers/U8/SFCController.cs b/UFIDA.U8.Framework.Api/Controllers/U8/SFCController.cs index 39589ee..111ebbc 100644 --- a/UFIDA.U8.Framework.Api/Controllers/U8/SFCController.cs +++ b/UFIDA.U8.Framework.Api/Controllers/U8/SFCController.cs @@ -1,11 +1,18 @@ using log4net; using System; using System.Collections.Generic; +using System.Configuration; using System.Linq; using System.Net; using System.Net.Http; +using System.Threading.Tasks; using System.Web.Http; +using Microsoft.Extensions.Caching.Memory; +using SqlSugar; +using UFIDA.U8.Framework.Api.Common.Unit.GM; using UFIDA.U8.Framework.Api.ControlObject.Models; +using UFIDA.U8.Framework.Api.ControlObject.U8M; +using UFIDA.U8.Framework.Api.Unit; namespace UFIDA.U8.Framework.Api.Controllers.U8 { @@ -16,6 +23,8 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8 { protected readonly ILog logInfo = LogManager.GetLogger("logInfo"); + private static MemoryCache _cache = new MemoryCache(new MemoryCacheOptions() { ExpirationScanFrequency = TimeSpan.FromMinutes(10) }); + /// /// 新增单据 /// @@ -25,19 +34,56 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8 /// [HttpPost] [Route("api/U8/SFC/Save")] - public BaseResult Save(string cAccId,string cCardNum, [FromBody] Dictionary voucherData) + public async Task> Save(string cAccId,string cCardNum, [FromBody] Dictionary input) { try { - var db= + if (!_cache.TryGetValue($"U8M_Single", out BaseLogin baseLogin)) + { + baseLogin = new BaseLogin(); + var param = await CommUnit.GetLoginParamter(cAccId); + + if (param == null) + { + throw new Exception("未能加载指定系统号的登录信息"); + } + + baseLogin.Init(param); + + _cache.Set("U8M_Single", baseLogin); + } + else + { + var param = await CommUnit.GetLoginParamter(cAccId); + + if (param == null) + { + throw new Exception("未能加载指定系统号的登录信息"); + } + + if (!baseLogin.CheckAccId(param.pAccId)) + { + baseLogin.ShutDown(); + baseLogin.Init(param); + } + _cache.Remove("U8M_Single"); + _cache.Set("U8M_Single", baseLogin); + } + + var bf = new MoRoutingBill(); + + var res=bf.Save( cCardNum, input); + + + return res; } catch (Exception ex) { logInfo.Error(ex.Message, ex); - return new BaseResult(){bSuccess = false,message = ex.Message,result = ex.StackTrace}; + return new BaseResult {bSuccess = false,message = ex.Message,result = ex.StackTrace}; } diff --git a/UFIDA.U8.Framework.Api/Controllers/ValuesController.cs b/UFIDA.U8.Framework.Api/Controllers/ValuesController.cs deleted file mode 100644 index f4430f4..0000000 --- a/UFIDA.U8.Framework.Api/Controllers/ValuesController.cs +++ /dev/null @@ -1,39 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Net; -using System.Net.Http; -using System.Web.Http; - -namespace UFIDA.U8.Framework.Api.Controllers -{ - public class ValuesController : ApiController - { - // GET api/values - public IEnumerable Get() - { - return new string[] { "value1", "value2" }; - } - - // GET api/values/5 - public string Get(int id) - { - return "value"; - } - - // POST api/values - public void Post([FromBody] string value) - { - } - - // PUT api/values/5 - public void Put(int id, [FromBody] string value) - { - } - - // DELETE api/values/5 - public void Delete(int id) - { - } - } -} diff --git a/UFIDA.U8.Framework.Api/Models/U8AccountConfigInput.cs b/UFIDA.U8.Framework.Api/Models/U8AccountConfigInput.cs new file mode 100644 index 0000000..6812f06 --- /dev/null +++ b/UFIDA.U8.Framework.Api/Models/U8AccountConfigInput.cs @@ -0,0 +1,38 @@ +using SqlSugar; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using UFIDA.U8.Framework.Api.ControlObject.Models; + +namespace UFIDA.U8.Framework.Api.Models +{ + /// + /// 查询参数 + /// + public class U8AccountConfigInput + { + public string cAccId { get; set; } + } + + /// + [SugarTable("SysU8AccountConfig", "系统U8账套对接参数配置表")] + public class AddU8AccountConfigInput : Common.Entity.SysU8AccountConfig + { + + } + + /// + [SugarTable("SysU8AccountConfig", "系统U8账套对接参数配置表")] + public class UpdateU8AccountConfigInput : Common.Entity.SysU8AccountConfig + { + + } + + /// + public class ListU8AccountConfigInput : U8AccountConfigInput + { + + } + +} \ No newline at end of file diff --git a/UFIDA.U8.Framework.Api/UFIDA.U8.Framework.Api.csproj b/UFIDA.U8.Framework.Api/UFIDA.U8.Framework.Api.csproj index e334ee1..406cf35 100644 --- a/UFIDA.U8.Framework.Api/UFIDA.U8.Framework.Api.csproj +++ b/UFIDA.U8.Framework.Api/UFIDA.U8.Framework.Api.csproj @@ -1,5 +1,6 @@  + Debug @@ -61,6 +62,12 @@ ..\packages\DapperExtensions.1.7.0\lib\net461\DapperExtensions.dll + + ..\packages\EntityFramework.6.5.1\lib\net45\EntityFramework.dll + + + ..\packages\EntityFramework.6.5.1\lib\net45\EntityFramework.SqlServer.dll + ..\packages\log4net.2.0.17\lib\net45\log4net.dll @@ -181,7 +188,7 @@ ..\packages\Newtonsoft.Json.Bson.1.0.2\lib\net45\Newtonsoft.Json.Bson.dll - ..\packages\Oracle.ManagedDataAccess.23.4.0\lib\net472\Oracle.ManagedDataAccess.dll + ..\packages\Oracle.ManagedDataAccess.23.5.0\lib\net472\Oracle.ManagedDataAccess.dll ..\packages\Slapper.AutoMapper.2.0.5\lib\net47\Slapper.dll @@ -195,9 +202,6 @@ ..\packages\SQLitePCLRaw.provider.dynamic_cdecl.2.1.8\lib\netstandard2.0\SQLitePCLRaw.provider.dynamic_cdecl.dll - - ..\packages\SQLitePCLRaw.provider.e_sqlite3.2.1.8\lib\netstandard2.0\SQLitePCLRaw.provider.e_sqlite3.dll - ..\packages\SqlSugar.5.1.4.162\lib\SqlSugar.dll @@ -209,12 +213,24 @@ ..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll + + ..\packages\System.Configuration.ConfigurationManager.8.0.0\lib\net462\System.Configuration.ConfigurationManager.dll + ..\packages\System.Data.Common.4.3.0\lib\net451\System.Data.Common.dll True True + + ..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.118.0\lib\net46\System.Data.SQLite.dll + + + ..\packages\System.Data.SQLite.EF6.1.0.118.0\lib\net46\System.Data.SQLite.EF6.dll + + + ..\packages\System.Data.SQLite.Linq.1.0.118.0\lib\net46\System.Data.SQLite.Linq.dll + ..\packages\System.Diagnostics.DiagnosticSource.8.0.1\lib\net462\System.Diagnostics.DiagnosticSource.dll @@ -383,15 +399,18 @@ + - Global.asax + + + @@ -437,6 +456,9 @@ + + PreserveNewest + Designer @@ -479,11 +501,9 @@ + - - - - + @@ -555,7 +575,12 @@ 这台计算机上缺少此项目引用的 NuGet 程序包。使用“NuGet 程序包还原”可下载这些程序包。有关更多信息,请参见 http://go.microsoft.com/fwlink/?LinkID=322105。缺少的文件是 {0}。 + + + + + + + + + + + + +
+ + + + + + + + + 登 录 + + +
+ + + diff --git a/UFIDA.U8.Framework.Api/Web.config b/UFIDA.U8.Framework.Api/Web.config index e09db51..36c97e0 100644 --- a/UFIDA.U8.Framework.Api/Web.config +++ b/UFIDA.U8.Framework.Api/Web.config @@ -5,6 +5,8 @@ --> + +
@@ -24,6 +26,8 @@ + + @@ -139,6 +143,10 @@ + + + + @@ -157,8 +165,18 @@ + + + + + + + + + + \ No newline at end of file diff --git a/UFIDA.U8.Framework.Api/packages.config b/UFIDA.U8.Framework.Api/packages.config index 0ef4b4f..4aa50f5 100644 --- a/UFIDA.U8.Framework.Api/packages.config +++ b/UFIDA.U8.Framework.Api/packages.config @@ -7,6 +7,7 @@ + @@ -67,18 +68,23 @@ - + - + + + + + +