测试线程静态前提交
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
using SqlSugar;
|
||||
using UFIDA.U8.Framework.Api.ControlObject.Models;
|
||||
using UFIDA.U8.Framework.Api.Common.Enum;
|
||||
|
||||
namespace UFIDA.U8.Framework.Api.Common.Entity
|
||||
{
|
||||
@@ -8,7 +8,7 @@ namespace UFIDA.U8.Framework.Api.Common.Entity
|
||||
/// </summary>
|
||||
[SugarTable("SysU8AccountConfig", "系统U8账套对接参数配置表")]
|
||||
[SugarIndex("index_{table}_I", nameof(Id), OrderByType.Asc)]
|
||||
public class SysU8AccountConfig :ControlObject.Models.SysU8AccountConfig
|
||||
public class SysU8AccountConfig //:ControlObject.Models.SysU8AccountConfig
|
||||
{
|
||||
|
||||
[SugarColumn(IsIdentity = true, IsPrimaryKey = true, ColumnDescription = "主键", ColumnName = "Id", IsNullable = false)]
|
||||
@@ -18,61 +18,61 @@ namespace UFIDA.U8.Framework.Api.Common.Entity
|
||||
/// 系统号
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "系统号", Length = 100)]
|
||||
public override string cAccountNo { get; set; }
|
||||
public virtual string cAccountNo { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 账套号
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "账套号", Length = 100)]
|
||||
public override string cAcc_Id { get; set; }
|
||||
public virtual string cAcc_Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 账套名称
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "账套名称", Length = 255)]
|
||||
public override string cAcc_Name { get; set; }
|
||||
public virtual string cAcc_Name { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 账套数据源
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "账套数据源", Length = 255)]
|
||||
public override string cAcc_DataSource { get; set; }
|
||||
public virtual string cAcc_DataSource { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 用户ID
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "用户ID", Length = 100)]
|
||||
public override string cUser_Id { get; set; }
|
||||
public virtual string cUser_Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 用户名
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "用户名", Length = 255)]
|
||||
public override string cUser_Name { get; set; }
|
||||
public virtual string cUser_Name { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 密码
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "密码", Length = 255)]
|
||||
public override string cPassword { get; set; }
|
||||
public virtual string cPassword { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 服务器地址
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "服务器地址", Length = 255)]
|
||||
public override string cSrv { get; set; }
|
||||
public virtual string cSrv { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 状态
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "状态")]
|
||||
public override StatusEnum Status { get; set; } = StatusEnum.Enable;
|
||||
public virtual StatusEnum Status { get; set; } = StatusEnum.Enable;
|
||||
|
||||
/// <summary>
|
||||
/// 备注
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "备注", Length = 255)]
|
||||
public override string Remark { get; set; }
|
||||
public virtual string Remark { get; set; }
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
using SqlSugar;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace UFIDA.U8.Framework.Api.Common.Entity
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// 系统U8账套对接参数配置表
|
||||
/// </summary>
|
||||
[SugarTable("SysU8MTask", "U8生产制造任务")]
|
||||
public class SysU8MTask
|
||||
{
|
||||
[SugarColumn(IsPrimaryKey = true, ColumnDescription = "主键", ColumnName = "Id", IsNullable = false)]
|
||||
public long Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// U8生产制造登录信息
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "U8生产制造登录信息", Length = 100)]
|
||||
public string U8MPool { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 任务时间
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "任务时间")]
|
||||
public DateTime dDate { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -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.Common.Enum
|
||||
{
|
||||
/// <summary>
|
||||
/// 通用状态枚举
|
||||
/// </summary>
|
||||
[Description("通用状态枚举")]
|
||||
public enum StatusEnum
|
||||
{
|
||||
/// <summary>
|
||||
/// 启用
|
||||
/// </summary>
|
||||
[Description("启用")]
|
||||
Enable = 1,
|
||||
|
||||
/// <summary>
|
||||
/// 停用
|
||||
/// </summary>
|
||||
[Description("停用")]
|
||||
Disable = 2,
|
||||
}
|
||||
}
|
||||
@@ -22,6 +22,7 @@
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
@@ -41,40 +42,24 @@
|
||||
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="SqlSugar, Version=5.1.4.162, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\SqlSugar.5.1.4.162\lib\SqlSugar.dll</HintPath>
|
||||
<Reference Include="SqlSugar, Version=5.1.4.166, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\SqlSugar.5.1.4.166\lib\SqlSugar.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Configuration" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Web" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Net.Http" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="UFSoft.U8.U8M.DAC">
|
||||
<HintPath>D:\U8SOFT\U8M\UFSoft.U8.U8M.DAC.dll</HintPath>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Entity\SysU8AccountConfig.cs" />
|
||||
<Compile Include="Entity\SysU8MTask.cs" />
|
||||
<Compile Include="Enum\StatusEnum.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Unit\GM\GM.cs" />
|
||||
<Compile Include="Unit\GM\GMUtil.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="app.config" />
|
||||
<None Include="packages.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\UFIDA.U8.Framework.Api.ControlObject\UFIDA.U8.Framework.Api.ControlObject.csproj">
|
||||
<Project>{22c84be9-1613-4e32-9e98-237e96fd3540}</Project>
|
||||
<Name>UFIDA.U8.Framework.Api.ControlObject</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="Enum\" />
|
||||
</ItemGroup>
|
||||
<ItemGroup />
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
</Project>
|
||||
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<runtime>
|
||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-13.0.0.0" newVersion="13.0.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
|
||||
</dependentAssembly>
|
||||
</assemblyBinding>
|
||||
</runtime>
|
||||
</configuration>
|
||||
@@ -3,5 +3,5 @@
|
||||
<package id="BouncyCastle.Cryptography" version="2.4.0" targetFramework="net48" />
|
||||
<package id="log4net" version="2.0.17" targetFramework="net48" />
|
||||
<package id="Newtonsoft.Json" version="13.0.3" targetFramework="net48" />
|
||||
<package id="SqlSugar" version="5.1.4.162" targetFramework="net48" />
|
||||
<package id="SqlSugar" version="5.1.4.166" targetFramework="net48" />
|
||||
</packages>
|
||||
@@ -0,0 +1,69 @@
|
||||
using log4net;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using ADODB;
|
||||
using MSXML2;
|
||||
using UFIDA.U8.Framework.Api.ControlObject.Common;
|
||||
using UFIDA.U8.Framework.Api.ControlObject.Models;
|
||||
using UFIDA.U8.Framework.Api.ControlObject.U8M;
|
||||
|
||||
// ReSharper disable IdentifierTypo
|
||||
// ReSharper disable InconsistentNaming
|
||||
// ReSharper disable StringLiteralTypo
|
||||
|
||||
namespace UFIDA.U8.Framework.Api.ControlObject.AP
|
||||
{
|
||||
public class UFAPBO
|
||||
{
|
||||
protected readonly ILog logInfo = LogManager.GetLogger("logInfo");
|
||||
|
||||
public BaseResult<dynamic> CloseBillSave(BaseLogin baseLogin,Dictionary<string,object> dictionary,string cSubId,bool isAdd=true, bool bFirst=false,string bodyKey="body")
|
||||
{
|
||||
try
|
||||
{
|
||||
var m_Login = baseLogin._vbLogin;
|
||||
|
||||
var domHead = dictionary.ToDocument2();
|
||||
|
||||
IXMLDOMDocument2 domBody = new DOMDocument();
|
||||
|
||||
if (dictionary[bodyKey] is List<Dictionary<string, object>> bodyList && bodyList.Count > 0)
|
||||
{
|
||||
domBody = bodyList.ToDocument2(domBody);
|
||||
}
|
||||
|
||||
var bo = "UFAPBO.clsCloseBill".GetComObject();
|
||||
|
||||
var m_conn = new Connection();
|
||||
|
||||
m_conn.Open(m_Login.UfDbName);
|
||||
|
||||
bo.Init(m_Login, m_conn, null,cSubId);
|
||||
|
||||
bo.First = bFirst;
|
||||
|
||||
var errorMessage = "";
|
||||
|
||||
var checkFlag = bo.VouchCheck(domHead, domBody, ref errorMessage, isAdd);
|
||||
|
||||
if (!checkFlag)
|
||||
throw new Exception(errorMessage);
|
||||
|
||||
errorMessage = "";
|
||||
|
||||
var saveFlag = bo.SaveVouch(domHead, domBody, ref errorMessage, isAdd);
|
||||
|
||||
if (!saveFlag)
|
||||
throw new Exception(errorMessage);
|
||||
|
||||
return new BaseResult<dynamic> { bSuccess = true, message = "保存成功", result = "保存成功" };
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logInfo.Error(ex.Message, ex);
|
||||
|
||||
return new BaseResult<dynamic> { bSuccess = false, message = "保存失败", result = ex.Message };
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,9 @@
|
||||
using System;
|
||||
using log4net;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Web.UI.WebControls;
|
||||
|
||||
// ReSharper disable InconsistentNaming
|
||||
// ReSharper disable IdentifierTypo
|
||||
@@ -11,8 +13,22 @@ namespace UFIDA.U8.Framework.Api.ControlObject.Common
|
||||
{
|
||||
public class BEHelper
|
||||
{
|
||||
protected readonly ILog logInfo = LogManager.GetLogger("logInfo");
|
||||
|
||||
private readonly dynamic _be;
|
||||
private readonly PropertyInfo[] _props;
|
||||
private string _invCode;
|
||||
private string _free1;
|
||||
private string _free2;
|
||||
private string _free3;
|
||||
private string _free4;
|
||||
private string _free5;
|
||||
private string _free6;
|
||||
private string _free7;
|
||||
private string _free8;
|
||||
private string _free9;
|
||||
private string _free10;
|
||||
private int _bomVersion;
|
||||
|
||||
public BEHelper(dynamic be)
|
||||
{
|
||||
@@ -25,7 +41,10 @@ namespace UFIDA.U8.Framework.Api.ControlObject.Common
|
||||
{
|
||||
foreach (var key in dictionary.Keys)
|
||||
{
|
||||
if (key.Contains("define") && !key.Contains("chdefine"))
|
||||
if(key != "body")
|
||||
logInfo.Debug($"正在设置字段:{key}--{dictionary[key]}");
|
||||
|
||||
if (key.Contains("define") && !key.Contains("chdefine") && !key.Contains("cbdefine"))
|
||||
{
|
||||
var defineCode = int.Parse(key.Replace("define", ""));
|
||||
if (dictionary.TryGetValue(key, out var bValue) && !string.IsNullOrWhiteSpace($"{bValue}"))
|
||||
@@ -41,46 +60,86 @@ namespace UFIDA.U8.Framework.Api.ControlObject.Common
|
||||
{
|
||||
_be.ExtendUserDefineItem[defineCode] = dictionary[key];
|
||||
}
|
||||
} else if (key.Contains("cbdefine"))
|
||||
{
|
||||
var defineCode = int.Parse(key.Replace("cbdefine", ""));
|
||||
|
||||
if (dictionary.TryGetValue(key, out var bValue) && !string.IsNullOrWhiteSpace($"{bValue}"))
|
||||
{
|
||||
_be.ExtendUserDefineItem[defineCode] = dictionary[key];
|
||||
}
|
||||
}else if (key.Contains("free"))
|
||||
{
|
||||
var freeCode = int.Parse(key.Replace("free", ""));
|
||||
|
||||
SetFreeItem(freeCode, dictionary[key]);
|
||||
|
||||
}
|
||||
else if (key != "body")
|
||||
{
|
||||
if (!string.IsNullOrWhiteSpace($"{dictionary[key]}") && _props.Any(a => string.Equals(a.Name, key, StringComparison.OrdinalIgnoreCase)))
|
||||
if (string.Equals(key, "invCode", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
_invCode = $"{dictionary[key]}";
|
||||
}else if (string.Equals(key, "bomversion", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
_bomVersion = int.Parse($"{dictionary[key]}");
|
||||
}
|
||||
else 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]);
|
||||
CommonHelper.SetPropValue(prop, _be, dictionary[key]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (prop.PropertyType == typeof(DateTime))
|
||||
public void SetFreeItem(int i, object value)
|
||||
{
|
||||
prop.SetValue(_be, DateTime.Parse($"{dictionary[key]}"));
|
||||
switch (i)
|
||||
{
|
||||
case 1:
|
||||
_free1 = $"{value}";
|
||||
break;
|
||||
case 2:
|
||||
_free2 = $"{value}";
|
||||
break;
|
||||
case 3:
|
||||
_free3 = $"{value}";
|
||||
break;
|
||||
case 4:
|
||||
_free4 = $"{value}";
|
||||
break;
|
||||
case 5:
|
||||
_free5 = $"{value}";
|
||||
break;
|
||||
case 6:
|
||||
_free6 = $"{value}";
|
||||
break;
|
||||
case 7:
|
||||
_free7 = $"{value}";
|
||||
break;
|
||||
case 8:
|
||||
_free8 = $"{value}";
|
||||
break;
|
||||
case 9:
|
||||
_free9 = $"{value}";
|
||||
break;
|
||||
case 10:
|
||||
_free10 = $"{value}";
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (prop.PropertyType == typeof(byte))
|
||||
|
||||
public void SetPartId()
|
||||
{
|
||||
prop.SetValue(_be, byte.Parse($"{dictionary[key]}"));
|
||||
_be.SetPartId(_invCode, new[] { _free1, _free2, _free3, _free4, _free5, _free6, _free7, _free8, _free9, _free10 });
|
||||
}
|
||||
|
||||
if (prop.PropertyType == typeof(int))
|
||||
public void SetBomId()
|
||||
{
|
||||
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]}"));
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
_be.SetBomId(_be.PartId, _bomVersion);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,154 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Reflection;
|
||||
using GetComObj;
|
||||
using MSXML2;
|
||||
using UFIDA.U8.Framework.Api.ControlObject.Json;
|
||||
|
||||
namespace UFIDA.U8.Framework.Api.ControlObject.Common
|
||||
{
|
||||
public static class CommonHelper
|
||||
{
|
||||
|
||||
public static void SetPropValue(this PropertyInfo prop, object obj, object value)
|
||||
{
|
||||
if (prop.PropertyType == typeof(string))
|
||||
{
|
||||
prop.SetValue(obj, value);
|
||||
}
|
||||
|
||||
if (prop.PropertyType == typeof(DateTime))
|
||||
{
|
||||
prop.SetValue(obj, DateTime.Parse($"{value}"));
|
||||
}
|
||||
|
||||
if (prop.PropertyType == typeof(byte))
|
||||
{
|
||||
prop.SetValue(obj, byte.Parse($"{value}"));
|
||||
}
|
||||
|
||||
if (prop.PropertyType == typeof(int))
|
||||
{
|
||||
prop.SetValue(obj, int.Parse($"{value}"));
|
||||
}
|
||||
|
||||
if (prop.PropertyType == typeof(long))
|
||||
{
|
||||
prop.SetValue(obj, long.Parse($"{value}"));
|
||||
}
|
||||
|
||||
if (prop.PropertyType == typeof(decimal))
|
||||
{
|
||||
prop.SetValue(obj, decimal.Parse($"{value}"));
|
||||
}
|
||||
}
|
||||
|
||||
public static IXMLDOMDocument2 ToDocument2(this Dictionary<string,object> dictionary,IXMLDOMDocument2 domDocument2=null)
|
||||
{
|
||||
|
||||
if (domDocument2 == null)
|
||||
{
|
||||
domDocument2 = new DOMDocument();
|
||||
}
|
||||
|
||||
var root = domDocument2.ClearDocument();
|
||||
|
||||
var newRow = SetRowData(dictionary, domDocument2);
|
||||
|
||||
root.appendChild(newRow);
|
||||
|
||||
return domDocument2;
|
||||
|
||||
}
|
||||
|
||||
public static IXMLDOMNode SetRowData(this Dictionary<string, object> dictionary, IXMLDOMDocument2 domDocument2 = null,string bodyKey="body")
|
||||
{
|
||||
if (domDocument2 == null)
|
||||
{
|
||||
domDocument2 = new DOMDocument();
|
||||
}
|
||||
|
||||
var newRow = domDocument2.createElement("z:row");
|
||||
|
||||
foreach (var key in dictionary.Keys)
|
||||
{
|
||||
if(key==bodyKey)
|
||||
continue;
|
||||
|
||||
var attr = domDocument2.createAttribute(key);
|
||||
|
||||
attr.value = dictionary[key];
|
||||
|
||||
newRow.attributes.setNamedItem(attr);
|
||||
}
|
||||
|
||||
return newRow;
|
||||
}
|
||||
|
||||
public static IXMLDOMDocument2 ToDocument2(this List<Dictionary<string, object>> dictionaryList, IXMLDOMDocument2 domDocument2 = null)
|
||||
{
|
||||
|
||||
if (domDocument2 == null)
|
||||
{
|
||||
domDocument2 = new DOMDocument();
|
||||
}
|
||||
|
||||
var root = domDocument2.ClearDocument();
|
||||
|
||||
foreach (var dictionary in dictionaryList)
|
||||
{
|
||||
var newRow = SetRowData(dictionary, domDocument2);
|
||||
|
||||
root.appendChild(newRow);
|
||||
}
|
||||
|
||||
return domDocument2;
|
||||
|
||||
}
|
||||
|
||||
public static IXMLDOMNode ClearDocument(this IXMLDOMDocument2 domDocument2)
|
||||
{
|
||||
var root = domDocument2.selectSingleNode("//rs:data");
|
||||
|
||||
if (root == null)
|
||||
{
|
||||
root = domDocument2.createElement("rs:data");
|
||||
|
||||
domDocument2.appendChild(root);
|
||||
}
|
||||
|
||||
var rows = domDocument2.selectNodes("//z:row");
|
||||
|
||||
if (rows != null && rows.length > 0)
|
||||
{
|
||||
for (var i = 0; i < rows.length; i++)
|
||||
{
|
||||
var row = rows[i];
|
||||
|
||||
root.removeChild(row);
|
||||
}
|
||||
}
|
||||
|
||||
return root;
|
||||
}
|
||||
|
||||
public static void ResetDictionary(this Dictionary<string, object> dictionary, string bodyKey = "body")
|
||||
{
|
||||
if (dictionary.ContainsKey(bodyKey))
|
||||
{
|
||||
var body= dictionary[bodyKey].ToJson().ToList<Dictionary<string,object>>();
|
||||
|
||||
dictionary[bodyKey] = body;
|
||||
}
|
||||
}
|
||||
|
||||
public static dynamic GetComObject(this string comName)
|
||||
{
|
||||
var comInstance = new GetComInstance();
|
||||
|
||||
var obj = comInstance.GetComObject(ref comName);
|
||||
|
||||
return obj;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,23 +1,25 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using ADODB;
|
||||
using log4net;
|
||||
using UFIDA.U8.Framework.Api.ControlObject.Models;
|
||||
using UFSoft.U8.Framework.ContextSrv;
|
||||
using UFSoft.U8.Framework.Login.UI;
|
||||
using UFSoft.U8.Framework.LoginContext;
|
||||
using NetLogin = UFSoft.U8.Framework.Login.UI.clsLogin;
|
||||
using ThreadContext = UFSoft.U8.Framework.ContextSrv.ThreadContext;
|
||||
using VBLogin = U8Login.clsLogin;
|
||||
// ReSharper disable IdentifierTypo
|
||||
// ReSharper disable InconsistentNaming
|
||||
|
||||
namespace UFIDA.U8.Framework.Api.ControlObject.U8M
|
||||
{
|
||||
public class BaseLogin
|
||||
{
|
||||
protected readonly ILog logInfo = LogManager.GetLogger("logInfo");
|
||||
|
||||
|
||||
private NetLogin _netLogin { get; set; }
|
||||
private VBLogin _vbLogin { get; set; }
|
||||
public VBLogin _vbLogin { get; set; }
|
||||
|
||||
public ProductContext _productContext { get; set; }
|
||||
|
||||
@@ -27,11 +29,17 @@ namespace UFIDA.U8.Framework.Api.ControlObject.U8M
|
||||
/// 初始化生产制造上下文
|
||||
/// </summary>
|
||||
/// <param name="paramter">登录参数</param>
|
||||
/// <param name="bMon"></param>
|
||||
/// <exception cref="ArgumentNullException"></exception>
|
||||
/// <exception cref="Exception"></exception>
|
||||
public void Init(LoginParamter paramter)
|
||||
public void Init(LoginParamter paramter,bool bMon=true, int traceTimes=0)
|
||||
{
|
||||
|
||||
if (traceTimes > 5)
|
||||
throw new Exception("U8登录异常");
|
||||
|
||||
try
|
||||
{
|
||||
//if (!string.IsNullOrWhiteSpace(ThreadContext.ServerToken))
|
||||
//{
|
||||
// ThreadContext.ServerToken = null;
|
||||
@@ -42,48 +50,177 @@ namespace UFIDA.U8.Framework.Api.ControlObject.U8M
|
||||
// ThreadContext.U8LoginInfo = null;
|
||||
//}
|
||||
|
||||
|
||||
if (paramter == null) throw new ArgumentNullException(nameof(paramter));
|
||||
|
||||
_vbLogin = new VBLogin();
|
||||
|
||||
_netLogin = new NetLogin();
|
||||
|
||||
_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 (bMon)
|
||||
{
|
||||
|
||||
#if DEBUG
|
||||
_vbLogin = new VBLogin();
|
||||
|
||||
_vbLogin.ClearError();
|
||||
|
||||
logInfo.Debug($"VB--开始进行U8登录:{paramter.cSrv}--{paramter.pUserId}--{paramter.pAccId}");
|
||||
|
||||
if (!_vbLogin.Login(paramter.pSubId, paramter.pAccId, paramter.pYearId, paramter.pUserId, paramter.pPassword, paramter.pDate, paramter.cSrv, paramter.cSerial) && string.IsNullOrWhiteSpace(_vbLogin.userToken))
|
||||
{
|
||||
throw new Exception($"VB--U8登录失败---{_vbLogin.ShareString}");
|
||||
}
|
||||
|
||||
_netLogin = new NetLogin();
|
||||
|
||||
_productContext= _netLogin.Login("DP", _vbLogin.userToken);
|
||||
|
||||
if (_productContext == null)
|
||||
{
|
||||
logInfo.Debug($"Net--U8上下文构建失败---{_netLogin.ErrDescript}");
|
||||
|
||||
if (!_netLogin.login(paramter.pSubId, paramter.pUserId, paramter.pPassword, paramter.cSrv, paramter.pDate, paramter.pAccId, paramter.cSerial) && string.IsNullOrWhiteSpace(_netLogin.userToken))
|
||||
{
|
||||
//throw new Exception($"Net--U8登录失败---{_netLogin.ErrDescript}");
|
||||
}
|
||||
|
||||
logInfo.Debug($"Net--开始进行上下文构建:{_netLogin.userToken}");
|
||||
|
||||
_productContext = _netLogin.SubLogin("DP") ?? _netLogin.Login("DP", _vbLogin.userToken);
|
||||
//throw new Exception($"Net--U8上下文构建失败---{_netLogin.ErrDescript}");
|
||||
}
|
||||
|
||||
logInfo.Debug($"Net--开始进行上下文刷新:{_productContext.calledContext.token}");
|
||||
|
||||
ClientUserContext.Instance.RefreshContext();
|
||||
|
||||
logInfo.Debug("Net--完成生产制造登录进程");
|
||||
|
||||
#else
|
||||
_netLogin = new NetLogin();
|
||||
|
||||
logInfo.Debug($"Net--开始进行U8登录:{paramter.cSrv}--{paramter.pUserId}--{paramter.pAccId}");
|
||||
|
||||
if (!_netLogin.login(paramter.pSubId, paramter.pUserId, paramter.pPassword, paramter.cSrv, paramter.pDate, paramter.pAccId, paramter.cSerial) && string.IsNullOrWhiteSpace(_netLogin.userToken))
|
||||
{
|
||||
throw new Exception($"Net--U8登录失败---{_netLogin.ErrDescript}");
|
||||
}
|
||||
|
||||
logInfo.Debug($"Net--开始进行上下文构建:{_netLogin.userToken}");
|
||||
|
||||
_productContext = _netLogin.SubLogin("DP");
|
||||
|
||||
if (_productContext == null)
|
||||
{
|
||||
throw new Exception($"Net--U8上下文构建失败---{_netLogin.ErrDescript}");
|
||||
}
|
||||
|
||||
|
||||
logInfo.Debug($"Net--开始进行上下文刷新:{_productContext.calledContext.token}");
|
||||
|
||||
ClientUserContext.Instance.RefreshContext();
|
||||
|
||||
logInfo.Debug("Net--完成生产制造登录进程");
|
||||
|
||||
return;
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
_vbLogin = new VBLogin();
|
||||
|
||||
_vbLogin.ClearError();
|
||||
|
||||
logInfo.Debug($"VB--开始进行U8登录:{paramter.cSrv}--{paramter.pUserId}--{paramter.pAccId}");
|
||||
|
||||
if (!_vbLogin.Login(paramter.pSubId, paramter.pAccId, paramter.pYearId, paramter.pUserId, paramter.pPassword, paramter.pDate, paramter.cSrv, paramter.cSerial) && string.IsNullOrWhiteSpace(_vbLogin.userToken))
|
||||
{
|
||||
throw new Exception($"VB--U8登录失败---{_vbLogin.ShareString}");
|
||||
}
|
||||
|
||||
logInfo.Debug($"VB--开始创建连接对象:{_vbLogin.userToken}");
|
||||
|
||||
Connection = new Connection();
|
||||
Connection.Open(_vbLogin.UfDbName);
|
||||
|
||||
logInfo.Debug("VB--完成登录进程");
|
||||
|
||||
return;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if (!bMon)
|
||||
{
|
||||
logInfo.Debug("非生产制造模块无需下面操作");
|
||||
//Trace.WriteLine("非生产制造模块无需下面操作");
|
||||
return;
|
||||
}
|
||||
|
||||
logInfo.Debug($"U8版本:{_vbLogin.GetVersionInfo()}");
|
||||
|
||||
logInfo.Debug($"1--登录令牌:{_vbLogin.userToken}");
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(Cryptography.m_userToken))
|
||||
{
|
||||
Cryptography.m_userToken = "";
|
||||
}
|
||||
|
||||
_productContext = _netLogin.Login("DP", _vbLogin.userToken);
|
||||
|
||||
if (_productContext != null)
|
||||
{
|
||||
logInfo.Debug($"222--成功初始化上下文信息:{_vbLogin.userToken}");
|
||||
|
||||
ClientUserContext.Instance.RefreshContext();
|
||||
//ThreadContext.ServerToken = _netLogin.userToken;
|
||||
|
||||
Connection = new Connection();
|
||||
Connection.Open(_vbLogin.UfDbName);
|
||||
|
||||
logInfo.Debug($"333--完成局部构建:{_netLogin.userToken}");
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if (_netLogin.login(paramter.pSubId, paramter.pUserId, paramter.pPassword, paramter.cSrv, paramter.pDate, paramter.pAccId, paramter.cSerial))
|
||||
{
|
||||
_productContext = _netLogin.SubLogin("AS");
|
||||
|
||||
if (_productContext == null)
|
||||
throw new Exception($"1--初始化U8登录上下文失败------{_netLogin.ErrDescript}");
|
||||
throw new Exception($"11--初始化U8登录上下文失败------{_netLogin.ErrDescript}");
|
||||
|
||||
Trace.WriteLine($"2--登录令牌:{_netLogin.userToken}");
|
||||
logInfo.Debug($"22--登录令牌:{_netLogin.userToken}");
|
||||
//Trace.WriteLine($"2--上下文令牌:{_productContext.calledContext.token}");
|
||||
|
||||
|
||||
_vbLogin.ClearError();
|
||||
_vbLogin.ConstructLogin(_netLogin.userToken);
|
||||
var taskId = DateTime.Now.Ticks.ToString();
|
||||
_vbLogin.set_TaskId(taskId);
|
||||
//_vbLogin.ClearError();
|
||||
//_vbLogin.ConstructLogin(_netLogin.userToken);
|
||||
//var taskId = DateTime.Now.Ticks.ToString();
|
||||
//_vbLogin.set_TaskId(taskId);
|
||||
|
||||
|
||||
Trace.WriteLine($"3--登录令牌:{_vbLogin.userToken}");
|
||||
logInfo.Debug($"33--登录令牌:{_vbLogin.userToken}");
|
||||
|
||||
Trace.WriteLine($"4--正在创建应用池:{_netLogin.userToken}");
|
||||
logInfo.Debug($"44--正在创建应用池:{_netLogin.userToken}");
|
||||
|
||||
ClientUserContext.Instance.RefreshContext();
|
||||
//ThreadContext.ServerToken = _netLogin.userToken;
|
||||
|
||||
|
||||
|
||||
logInfo.Debug($"55--完成局部构建:{_netLogin.userToken}");
|
||||
|
||||
return;
|
||||
|
||||
@@ -91,15 +228,23 @@ namespace UFIDA.U8.Framework.Api.ControlObject.U8M
|
||||
|
||||
_productContext = _netLogin.Login("AS", _vbLogin.userToken);
|
||||
|
||||
Trace.WriteLine($"3--上下文令牌:{_productContext.calledContext.token}");
|
||||
logInfo.Debug($"3--上下文令牌:{_productContext.calledContext.token}");
|
||||
|
||||
if (_productContext == null)
|
||||
throw new Exception($"2--初始化U8登录上下文失败------{_netLogin.ErrDescript}");
|
||||
|
||||
ClientUserContext.Instance.RefreshContext();
|
||||
//ThreadContext.ServerToken = _netLogin.userToken;
|
||||
Connection = new Connection();
|
||||
Connection.Open(_vbLogin.UfDbName);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logInfo.Error($"重试次数:{traceTimes},错误信息:{ex.Message}", ex);
|
||||
|
||||
Init(paramter, bMon, traceTimes + 1);
|
||||
}
|
||||
}
|
||||
|
||||
public void ShutDown()
|
||||
{
|
||||
@@ -109,15 +254,10 @@ namespace UFIDA.U8.Framework.Api.ControlObject.U8M
|
||||
|
||||
_vbLogin?.ShutDown();
|
||||
_productContext=null;
|
||||
_netLogin?.SubLogout("DP");
|
||||
_netLogin?.ShutDown();
|
||||
_netLogin?.Dispose();
|
||||
_vbLogin = null;
|
||||
_netLogin = null;
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(Cryptography.m_userToken))
|
||||
{
|
||||
Cryptography.m_userToken = "";
|
||||
}
|
||||
}
|
||||
|
||||
public bool CheckAccId(string cAccId)
|
||||
|
||||
@@ -0,0 +1,285 @@
|
||||
using log4net;
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
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.ContextSrv;
|
||||
using UFSoft.U8.U8M.BFDispatcher;
|
||||
using UFSoft.U8.U8M.Common;
|
||||
using UFSoft.U8.U8M.DAC;
|
||||
using UFSoft.U8.U8M.DOSchema.MO;
|
||||
|
||||
namespace UFIDA.U8.Framework.Api.ControlObject.U8M
|
||||
{
|
||||
public class MOrder
|
||||
{
|
||||
protected readonly ILog logInfo = LogManager.GetLogger("logInfo");
|
||||
|
||||
private MOrderDs GetEmptyDs()
|
||||
{
|
||||
var ds = MOMExecutor.BFMOrder_LoadData("LoadFirst", 0, new DefaultContextContainer());
|
||||
|
||||
#region 清除数据集里的数据
|
||||
|
||||
if (ds.Tables.Contains("mom_orderdetail_ExtraDefine"))
|
||||
{
|
||||
ds.Tables["mom_orderdetail_ExtraDefine"].Clear();
|
||||
}
|
||||
if (ds.Tables.Contains("mom_order_ExtraDefine"))
|
||||
{
|
||||
ds.Tables["mom_order_ExtraDefine"].Clear();
|
||||
}
|
||||
|
||||
ds.MoAllocateSubs.Clear();
|
||||
ds.MoAllocates.Clear();
|
||||
ds.MOrderDetails.Clear();
|
||||
ds.Order.Clear();
|
||||
|
||||
#endregion
|
||||
|
||||
return ds;
|
||||
}
|
||||
|
||||
private MOrderDs GetVoucherDs(string cCardNum, AutoDocNoGenerateParam docNoParam, Dictionary<string, object> input)
|
||||
{
|
||||
|
||||
var ds = GetEmptyDs();
|
||||
|
||||
var head = ds.Order.NewOrderRow();
|
||||
|
||||
ds.Order.AddOrderRow(head);
|
||||
|
||||
var docNo = U8MCommonExecutor.BFVoucher_GetVoucherID(cCardNum, docNoParam.Paramaters, false, new DefaultContextContainer());
|
||||
|
||||
var be = new UFSoft.U8.MO.BE.MOrder(ds);
|
||||
|
||||
var beHead = new BEHelper(be);
|
||||
|
||||
beHead.SetValue(input);
|
||||
|
||||
if (string.IsNullOrWhiteSpace(be.MoCode))
|
||||
{
|
||||
be.MoCode = docNo;
|
||||
}
|
||||
|
||||
var bodys = input["body"] as List<Dictionary<string, object>> ?? $"{input["body"]}".ToObject<List<Dictionary<string, object>>>();
|
||||
|
||||
for (var i = 0; i < bodys.Count; i++)
|
||||
{
|
||||
var body = bodys[i];
|
||||
var detail = be.MOrderDetails[i];
|
||||
|
||||
var beBody = new BEHelper(detail);
|
||||
|
||||
beBody.SetValue(body);
|
||||
|
||||
beBody.SetPartId();
|
||||
|
||||
beBody.SetBomId();
|
||||
}
|
||||
|
||||
|
||||
return (MOrderDs)be.DataObject;
|
||||
}
|
||||
|
||||
public BaseResult<dynamic> Save(string cCardNum, Dictionary<string, object> 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 = MOMExecutor.BFMomProcess_HMOSaveWithDocNoPara(ds, docNoParam, new DefaultContextContainer());
|
||||
|
||||
return new BaseResult<dynamic>() { bSuccess = true, message = "新增成功", result = id };
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logInfo.Error(ex.Message, ex);
|
||||
|
||||
return new BaseResult<dynamic>() { bSuccess = false, message = "新增失败", result = ex.Message };
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public BaseResult<dynamic> Delete(string cCardNum, List<string> inputs)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (inputs == null || inputs.Count <= 0)
|
||||
throw new Exception("没有需要删除的数据");
|
||||
|
||||
var dataReader = SimpleDACObject.ExecuteReader($"SELECT MID FROM dbo.fc_MoRoutingBill WHERE cVouchCode IN ('{string.Join("','", inputs)}') AND cVouchType='{cCardNum}'");
|
||||
|
||||
var newInput = new List<int>();
|
||||
|
||||
while (dataReader.Read())
|
||||
{
|
||||
newInput.Add(int.Parse($"{dataReader[0]}"));
|
||||
}
|
||||
|
||||
return Delete(newInput);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logInfo.Error(ex.Message, ex);
|
||||
|
||||
return new BaseResult<dynamic>() { bSuccess = false, message = "删除失败", result = ex.Message };
|
||||
}
|
||||
}
|
||||
|
||||
public BaseResult<dynamic> Delete(List<int> inputs)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (inputs == null || inputs.Count <= 0)
|
||||
throw new Exception("没有需要删除的数据");
|
||||
|
||||
var ht = new Hashtable();
|
||||
|
||||
foreach (var input in inputs)
|
||||
{
|
||||
ht.Add(input, input);
|
||||
}
|
||||
|
||||
var id = MOMExecutor.BFMomProcess_MODeleteProcess(ht, new DefaultContextContainer());
|
||||
|
||||
return new BaseResult<dynamic>() { bSuccess = true, message = "删除成功", result = id };
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logInfo.Error(ex.Message, ex);
|
||||
|
||||
return new BaseResult<dynamic>() { bSuccess = false, message = "删除失败", result = ex.Message };
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//public BaseResult<dynamic> Verify(string cCardNum, List<string> inputs)
|
||||
//{
|
||||
// try
|
||||
// {
|
||||
// if (inputs == null || inputs.Count <= 0)
|
||||
// throw new Exception("没有需要审核的数据");
|
||||
|
||||
// var dataReader = SimpleDACObject.ExecuteReader($"SELECT MID FROM dbo.fc_MoRoutingBill WHERE cVouchCode IN ('{string.Join("','", inputs)}') AND cVouchType='{cCardNum}'");
|
||||
|
||||
// var newInput = new List<int>();
|
||||
|
||||
// while (dataReader.Read())
|
||||
// {
|
||||
// newInput.Add(int.Parse($"{dataReader[0]}"));
|
||||
// }
|
||||
|
||||
// return Verify(newInput);
|
||||
// }
|
||||
// catch (Exception ex)
|
||||
// {
|
||||
// logInfo.Error(ex.Message, ex);
|
||||
|
||||
// return new BaseResult<dynamic>() { bSuccess = false, message = "审核失败", result = ex.Message };
|
||||
// }
|
||||
//}
|
||||
|
||||
//public BaseResult<dynamic> StatusProcess(List<int> inputs)
|
||||
//{
|
||||
// try
|
||||
// {
|
||||
// if (inputs == null || inputs.Count <= 0)
|
||||
// throw new Exception("没有需要审核的数据");
|
||||
|
||||
// var ht = new Dictionary<int, string>();
|
||||
|
||||
// foreach (var input in inputs)
|
||||
// {
|
||||
// ht.Add(input, $"{input}");
|
||||
// }
|
||||
|
||||
// var id = MOMExecutor.BFMomProcess_MOStatusProcess(ht, new DefaultContextContainer());
|
||||
|
||||
// return new BaseResult<dynamic>() { bSuccess = true, message = "审核成功", result = id };
|
||||
// }
|
||||
// catch (Exception ex)
|
||||
// {
|
||||
// logInfo.Error(ex.Message, ex);
|
||||
|
||||
// return new BaseResult<dynamic>() { bSuccess = false, message = "审核失败", result = ex.Message };
|
||||
|
||||
// }
|
||||
|
||||
//}
|
||||
|
||||
//public BaseResult<dynamic> UnVerify(string cCardNum, List<string> inputs)
|
||||
//{
|
||||
// try
|
||||
// {
|
||||
// if (inputs == null || inputs.Count <= 0)
|
||||
// throw new Exception("没有需要弃审的数据");
|
||||
|
||||
// var dataReader = SimpleDACObject.ExecuteReader($"SELECT MID FROM dbo.fc_MoRoutingBill WHERE cVouchCode IN ('{string.Join("','", inputs)}') AND cVouchType='{cCardNum}'");
|
||||
|
||||
// var newInput = new List<int>();
|
||||
|
||||
// while (dataReader.Read())
|
||||
// {
|
||||
// newInput.Add(int.Parse($"{dataReader[0]}"));
|
||||
// }
|
||||
|
||||
// return UnVerify(newInput);
|
||||
// }
|
||||
// catch (Exception ex)
|
||||
// {
|
||||
// logInfo.Error(ex.Message, ex);
|
||||
|
||||
// return new BaseResult<dynamic>() { bSuccess = false, message = "弃审失败", result = ex.Message };
|
||||
// }
|
||||
//}
|
||||
|
||||
//public BaseResult<dynamic> UnVerify(List<int> inputs)
|
||||
//{
|
||||
// try
|
||||
// {
|
||||
// if (inputs == null || inputs.Count <= 0)
|
||||
// throw new Exception("没有需要弃审的数据");
|
||||
|
||||
// var ht = new Dictionary<int, string>();
|
||||
|
||||
// foreach (var input in inputs)
|
||||
// {
|
||||
// ht.Add(input, $"{input}");
|
||||
// }
|
||||
|
||||
// var id = SFExecutor.BFMoRoutingBill_UnVerify(ht, new DefaultContextContainer());
|
||||
|
||||
// return new BaseResult<dynamic>() { bSuccess = true, message = "弃审成功", result = id };
|
||||
// }
|
||||
// catch (Exception ex)
|
||||
// {
|
||||
// logInfo.Error(ex.Message, ex);
|
||||
|
||||
// return new BaseResult<dynamic>() { bSuccess = false, message = "弃审失败", result = ex.Message };
|
||||
|
||||
// }
|
||||
|
||||
//}
|
||||
}
|
||||
}
|
||||
@@ -2,6 +2,10 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using System.Linq.Expressions;
|
||||
using System.Reflection;
|
||||
using UFIDA.U8.Framework.Api.ControlObject.Common;
|
||||
using UFIDA.U8.Framework.Api.ControlObject.Json;
|
||||
using UFIDA.U8.Framework.Api.ControlObject.Models;
|
||||
@@ -10,12 +14,15 @@ using UFSoft.U8.U8M.BFDispatcher;
|
||||
using UFSoft.U8.U8M.Common;
|
||||
using UFSoft.U8.U8M.DAC;
|
||||
using UFSoft.U8.U8M.DOSchema.SF;
|
||||
using UFSoft.U8.U8M.Exceptions;
|
||||
|
||||
// ReSharper disable IdentifierTypo
|
||||
// ReSharper disable InconsistentNaming
|
||||
// ReSharper disable StringLiteralTypo
|
||||
|
||||
namespace UFIDA.U8.Framework.Api.ControlObject.U8M
|
||||
{
|
||||
|
||||
public class MoRoutingBill
|
||||
{
|
||||
|
||||
@@ -45,6 +52,8 @@ namespace UFIDA.U8.Framework.Api.ControlObject.U8M
|
||||
return ds;
|
||||
}
|
||||
|
||||
|
||||
|
||||
private MoRoutingBillDs GetVoucherDs(string cCardNum, AutoDocNoGenerateParam docNoParam, Dictionary<string, object> input)
|
||||
{
|
||||
|
||||
@@ -83,10 +92,13 @@ namespace UFIDA.U8.Framework.Api.ControlObject.U8M
|
||||
}
|
||||
|
||||
|
||||
return (MoRoutingBillDs)be.DataObject;
|
||||
ds = (MoRoutingBillDs)be.DataObject;
|
||||
|
||||
return ds;
|
||||
}
|
||||
|
||||
public BaseResult<dynamic> Save(string cCardNum, Dictionary<string, object> input)
|
||||
|
||||
public BaseResult<string> Save(string cCardNum, Dictionary<string, object> input)
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -105,21 +117,87 @@ namespace UFIDA.U8.Framework.Api.ControlObject.U8M
|
||||
//var context = new DefaultContextContainer();
|
||||
//context.context["taskid"] = taskId;
|
||||
|
||||
logInfo.Debug($"单据编码:{cCardNum},开始保存");
|
||||
|
||||
var id = SFExecutor.BFMoRoutingBill_MoRoutingBillSave(ds, docNoParam, new DefaultContextContainer());
|
||||
|
||||
return new BaseResult<dynamic>() { bSuccess = true, message = "新增成功", result = id };
|
||||
|
||||
logInfo.Debug($"单据编码:{cCardNum},保存完成,id:{id}");
|
||||
|
||||
return new BaseResult<string> { bSuccess = true, message = "新增成功", result = $"{id}" };
|
||||
|
||||
}
|
||||
catch (U8MReferenceBENotExistException ex)
|
||||
{
|
||||
logInfo.Error(ex.Message, ex);
|
||||
|
||||
return new BaseResult<string> { bSuccess = false, message = "新增失败", result = ex.Message };
|
||||
}
|
||||
catch (TargetInvocationException ex)
|
||||
{
|
||||
if (ex.InnerException is U8MReferenceBENotExistException)
|
||||
{
|
||||
logInfo.Error(ex.InnerException.Message, ex.InnerException);
|
||||
|
||||
return new BaseResult<string>
|
||||
{ bSuccess = false, message = "新增失败", result = ex.InnerException.Message };
|
||||
}
|
||||
else
|
||||
{
|
||||
logInfo.Error(ex.Message, ex);
|
||||
|
||||
return new BaseResult<string> { bSuccess = false, message = "新增失败", result = ex.Message };
|
||||
}
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
logInfo.Error(ex.Message, ex);
|
||||
|
||||
return new BaseResult<string> { bSuccess = false, message = "新增失败", result = ex.Message };
|
||||
}
|
||||
}
|
||||
|
||||
public BaseResult<string> Save(string cCardNum, List<Dictionary<string, object>> inputs)
|
||||
{
|
||||
|
||||
var idList = new List<int>();
|
||||
|
||||
try
|
||||
{
|
||||
foreach (var input in inputs)
|
||||
{
|
||||
var iRes = Save(cCardNum, input);
|
||||
|
||||
if (!iRes.bSuccess && idList.Count > 0)
|
||||
{
|
||||
Delete(idList);
|
||||
|
||||
return iRes;
|
||||
}
|
||||
else if (!iRes.bSuccess)
|
||||
{
|
||||
return iRes;
|
||||
}
|
||||
|
||||
idList.Add(Convert.ToInt32(iRes.result));
|
||||
|
||||
}
|
||||
|
||||
return new BaseResult<string> { bSuccess = true, message = "新增成功", result = $"{string.Join(",", idList)}" };
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logInfo.Error(ex.Message, ex);
|
||||
|
||||
return new BaseResult<dynamic>() { bSuccess = false, message = "新增失败", result = ex.Message };
|
||||
|
||||
return new BaseResult<string> { bSuccess = false, message = "新增失败", result = ex.Message };
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public BaseResult<dynamic> Delete(string cCardNum, List<string> inputs)
|
||||
public BaseResult<string> Delete(string cCardNum, List<string> inputs)
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -137,15 +215,21 @@ namespace UFIDA.U8.Framework.Api.ControlObject.U8M
|
||||
|
||||
return Delete(newInput);
|
||||
}
|
||||
catch (U8MReferenceBENotExistException ex)
|
||||
{
|
||||
logInfo.Error(ex.Message, ex);
|
||||
|
||||
return new BaseResult<string> { bSuccess = false, message = "新增失败", result = ex.Message };
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logInfo.Error(ex.Message, ex);
|
||||
|
||||
return new BaseResult<dynamic>() { bSuccess = false, message = "删除失败", result = ex.Message };
|
||||
return new BaseResult<string> { bSuccess = false, message = "删除失败", result = ex.Message };
|
||||
}
|
||||
}
|
||||
|
||||
public BaseResult<dynamic> Delete(List<int> inputs)
|
||||
public BaseResult<string> Delete(List<int> inputs)
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -161,19 +245,25 @@ namespace UFIDA.U8.Framework.Api.ControlObject.U8M
|
||||
|
||||
var id = SFExecutor.BFMoRoutingBill_MoRoutingBillBatchDelete(ht, new DefaultContextContainer());
|
||||
|
||||
return new BaseResult<dynamic>() { bSuccess = true, message = "删除成功", result = id };
|
||||
return new BaseResult<string> { bSuccess = true, message = "删除成功", result = $"{id}" };
|
||||
}
|
||||
catch (U8MReferenceBENotExistException ex)
|
||||
{
|
||||
logInfo.Error(ex.Message, ex);
|
||||
|
||||
return new BaseResult<string> { bSuccess = false, message = "新增失败", result = ex.Message };
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logInfo.Error(ex.Message, ex);
|
||||
|
||||
return new BaseResult<dynamic>() { bSuccess = false, message = "删除失败", result = ex.Message };
|
||||
return new BaseResult<string> { bSuccess = false, message = "删除失败", result = ex.Message };
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public BaseResult<dynamic> Verify(string cCardNum, List<string> inputs)
|
||||
public BaseResult<string> Verify(string cCardNum, List<string> inputs)
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -191,15 +281,21 @@ namespace UFIDA.U8.Framework.Api.ControlObject.U8M
|
||||
|
||||
return Verify(newInput);
|
||||
}
|
||||
catch (U8MReferenceBENotExistException ex)
|
||||
{
|
||||
logInfo.Error(ex.Message, ex);
|
||||
|
||||
return new BaseResult<string> { bSuccess = false, message = "新增失败", result = ex.Message };
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logInfo.Error(ex.Message, ex);
|
||||
|
||||
return new BaseResult<dynamic>() { bSuccess = false, message = "审核失败", result = ex.Message };
|
||||
return new BaseResult<string> { bSuccess = false, message = "审核失败", result = ex.Message };
|
||||
}
|
||||
}
|
||||
|
||||
public BaseResult<dynamic> Verify(List<int> inputs)
|
||||
public BaseResult<string> Verify(List<int> inputs)
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -215,19 +311,25 @@ namespace UFIDA.U8.Framework.Api.ControlObject.U8M
|
||||
|
||||
var id = SFExecutor.BFMoRoutingBill_Verify(ht, new DefaultContextContainer());
|
||||
|
||||
return new BaseResult<dynamic>() { bSuccess = true, message = "审核成功", result = id };
|
||||
return new BaseResult<string> { bSuccess = true, message = "审核成功", result = $"{id}" };
|
||||
}
|
||||
catch (U8MReferenceBENotExistException ex)
|
||||
{
|
||||
logInfo.Error(ex.Message, ex);
|
||||
|
||||
return new BaseResult<string> { bSuccess = false, message = "新增失败", result = ex.Message };
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logInfo.Error(ex.Message, ex);
|
||||
|
||||
return new BaseResult<dynamic>() { bSuccess = false, message = "审核失败", result = ex.Message };
|
||||
return new BaseResult<string> { bSuccess = false, message = "审核失败", result = ex.Message };
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public BaseResult<dynamic> UnVerify(string cCardNum, List<string> inputs)
|
||||
public BaseResult<string> UnVerify(string cCardNum, List<string> inputs)
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -245,15 +347,21 @@ namespace UFIDA.U8.Framework.Api.ControlObject.U8M
|
||||
|
||||
return UnVerify(newInput);
|
||||
}
|
||||
catch (U8MReferenceBENotExistException ex)
|
||||
{
|
||||
logInfo.Error(ex.Message, ex);
|
||||
|
||||
return new BaseResult<string> { bSuccess = false, message = "新增失败", result = ex.Message };
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logInfo.Error(ex.Message, ex);
|
||||
|
||||
return new BaseResult<dynamic>() { bSuccess = false, message = "弃审失败", result = ex.Message };
|
||||
return new BaseResult<string> { bSuccess = false, message = "弃审失败", result = ex.Message };
|
||||
}
|
||||
}
|
||||
|
||||
public BaseResult<dynamic> UnVerify(List<int> inputs)
|
||||
public BaseResult<string> UnVerify(List<int> inputs)
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -269,13 +377,19 @@ namespace UFIDA.U8.Framework.Api.ControlObject.U8M
|
||||
|
||||
var id = SFExecutor.BFMoRoutingBill_UnVerify(ht, new DefaultContextContainer());
|
||||
|
||||
return new BaseResult<dynamic>() { bSuccess = true, message = "弃审成功", result = id };
|
||||
return new BaseResult<string> { bSuccess = true, message = "弃审成功", result = $"{id}" };
|
||||
}
|
||||
catch (U8MReferenceBENotExistException ex)
|
||||
{
|
||||
logInfo.Error(ex.Message, ex);
|
||||
|
||||
return new BaseResult<string> { bSuccess = false, message = "新增失败", result = ex.Message };
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logInfo.Error(ex.Message, ex);
|
||||
|
||||
return new BaseResult<dynamic>() { bSuccess = false, message = "弃审失败", result = ex.Message };
|
||||
return new BaseResult<string> { bSuccess = false, message = "弃审失败", result = ex.Message };
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -50,19 +50,27 @@
|
||||
<EmbedInteropTypes>True</EmbedInteropTypes>
|
||||
<HintPath>D:\U8SOFT\Interop\Interop.U8Login.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Interop.UFBillComponent">
|
||||
<HintPath>D:\U8SOFT\Interop\Interop.UFBillComponent.dll</HintPath>
|
||||
<EmbedInteropTypes>True</EmbedInteropTypes>
|
||||
</Reference>
|
||||
<Reference Include="log4net, Version=2.0.17.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\log4net.2.0.17\lib\net45\log4net.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Bcl.AsyncInterfaces.8.0.0\lib\net462\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.ComponentModel.DataAnnotations" />
|
||||
<Reference Include="System.Configuration" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Numerics" />
|
||||
<Reference Include="System.Runtime.Caching" />
|
||||
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.6.0.0\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Web" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
@@ -91,6 +99,10 @@
|
||||
<HintPath>D:\U8SOFT\U8M\UFSoft.U8.Framework.DBConnection.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="UFSoft.U8.Framework.Exceptions">
|
||||
<HintPath>D:\U8SOFT\U8M\UFSoft.U8.Framework.Exceptions.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="UFSoft.U8.Framework.Login.BO">
|
||||
<HintPath>D:\U8SOFT\Framework\UFSoft.U8.Framework.Login.BO.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
@@ -104,6 +116,10 @@
|
||||
<HintPath>D:\U8SOFT\Framework\UFSoft.U8.Framework.LoginContext.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="UFSoft.U8.MO.BE">
|
||||
<HintPath>D:\U8SOFT\U8M\UFSoft.U8.MO.BE.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="UFSoft.U8.SF.BE">
|
||||
<HintPath>D:\U8SOFT\U8M\UFSoft.U8.SF.BE.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
@@ -132,9 +148,15 @@
|
||||
<HintPath>D:\U8SOFT\U8M\UFSoft.U8.U8M.DOSchema.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="UFSoft.U8.U8M.Exceptions">
|
||||
<HintPath>D:\U8SOFT\U8M\UFSoft.U8.U8M.Exceptions.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="AP\UFAPBO.cs" />
|
||||
<Compile Include="Common\BEHelper.cs" />
|
||||
<Compile Include="Common\CommonHelper.cs" />
|
||||
<Compile Include="Json\JsonHelper.cs" />
|
||||
<Compile Include="Models\BaseResult.cs" />
|
||||
<Compile Include="Models\LoginParamter.cs" />
|
||||
@@ -142,6 +164,7 @@
|
||||
<Compile Include="Models\SysU8AccountConfig.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="U8M\BaseLogin.cs" />
|
||||
<Compile Include="U8M\MOrder.cs" />
|
||||
<Compile Include="U8M\MoRoutingBill.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
@@ -149,6 +172,7 @@
|
||||
<Folder Include="ST\" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="app.config" />
|
||||
<None Include="packages.config" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<runtime>
|
||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
|
||||
</dependentAssembly>
|
||||
</assemblyBinding>
|
||||
</runtime>
|
||||
</configuration>
|
||||
@@ -1,5 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="log4net" version="2.0.17" targetFramework="net48" />
|
||||
<package id="Microsoft.Bcl.AsyncInterfaces" version="8.0.0" targetFramework="net48" />
|
||||
<package id="Newtonsoft.Json" version="13.0.3" targetFramework="net48" />
|
||||
<package id="System.Runtime.CompilerServices.Unsafe" version="6.0.0" targetFramework="net48" />
|
||||
<package id="System.Threading.Tasks.Extensions" version="4.5.4" targetFramework="net48" />
|
||||
</packages>
|
||||
@@ -117,6 +117,10 @@
|
||||
<assemblyIdentity name="SQLitePCLRaw.core" publicKeyToken="1488e028ca7ab535" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-2.1.8.2226" newVersion="2.1.8.2226" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Data.SQLite" publicKeyToken="db937bc2d44ff139" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-1.0.118.0" newVersion="1.0.118.0" />
|
||||
</dependentAssembly>
|
||||
</assemblyBinding>
|
||||
</runtime>
|
||||
</configuration>
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
using System.Web.Mvc;
|
||||
using UFIDA.U8.Framework.Api;
|
||||
using UFIDA.U8.Framework.Api.Controllers;
|
||||
|
||||
namespace UFIDA.U8.Framework.Api.Tests.Controllers
|
||||
{
|
||||
[TestClass]
|
||||
public class HomeControllerTest
|
||||
{
|
||||
[TestMethod]
|
||||
public void Index()
|
||||
{
|
||||
// 排列
|
||||
HomeController controller = new HomeController();
|
||||
|
||||
// 操作
|
||||
ViewResult result = controller.Index() as ViewResult;
|
||||
|
||||
// 断言
|
||||
Assert.IsNotNull(result);
|
||||
Assert.AreEqual("Home Page", result.ViewBag.Title);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,86 @@
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Web.UI.WebControls;
|
||||
using UFIDA.U8.Framework.Api.ControlObject.AP;
|
||||
using UFIDA.U8.Framework.Api.ControlObject.Models;
|
||||
using UFIDA.U8.Framework.Api.ControlObject.U8M;
|
||||
|
||||
namespace UFIDA.U8.Framework.Api.Tests.Controllers
|
||||
{
|
||||
[TestClass]
|
||||
public class UnitTest1
|
||||
{
|
||||
[TestMethod]
|
||||
public void TestMethod1()
|
||||
{
|
||||
var baseLogin = new BaseLogin();
|
||||
|
||||
baseLogin.Init(
|
||||
new LoginParamter()
|
||||
{
|
||||
cSerial = "", cSrv = "192.168.50.31", pAccId = "(default)@801", pDate = "2015-07-01",
|
||||
pPassword = "", pSubId = "DP", pUserId = "demo", pYearId = "2015"
|
||||
}, false);
|
||||
|
||||
var bo = new UFAPBO();
|
||||
|
||||
var dd = new List<Dictionary<string, object>>();
|
||||
|
||||
var da = new Dictionary<string, object>(){
|
||||
{ "bPrePay", 0 },
|
||||
{ "iType", 0 },
|
||||
{ "cType", "应付款" },
|
||||
{ "iAmt_f", 100 },
|
||||
{ "iAmt", 100 },
|
||||
{ "cKm", "220202" },
|
||||
{ "cDepName", "采购部" },
|
||||
{ "cPersonName", "顾潇" },
|
||||
{ "iRAmt_f", 100.00 },
|
||||
{ "iRAmt", 100.00 },
|
||||
{ "cCusVen", "01004" },
|
||||
{ "iAmt_s", 0 },
|
||||
{ "iRAmt_s", 0 },
|
||||
{ "cDepCode", "0401" },
|
||||
{ "cPersonCode", "00043" }
|
||||
}; ;
|
||||
|
||||
dd.Add(da);
|
||||
|
||||
var dict = new Dictionary<string, object>()
|
||||
{
|
||||
{ "cVouchType", "49" },
|
||||
{ "cVouchID", "0000000030" },
|
||||
{ "dVouchDate", "2015-07-22" },
|
||||
{ "cDwCode", "01004" },
|
||||
{ "cSSCode", "1" },
|
||||
{"cDeptCode", "0401"},
|
||||
{"cSSName", "现金"},
|
||||
{"iPeriod", 7},
|
||||
{"cPerson", "00043"},
|
||||
{"cPersonName", "顾潇"},
|
||||
{"cexch_name", "人民币"},
|
||||
{"iExchRate", 1},
|
||||
{"iAmount_f", 100.00},
|
||||
{"iAmount", 100.00},
|
||||
{"iRAmount_f", 100.00},
|
||||
{"iRAmount", 100.00},
|
||||
{"cTypeName", "付款单"},
|
||||
{"cFlag", "AP"},
|
||||
{"iPayForOther", 0},
|
||||
{"bFromBank", 0},
|
||||
{"bToBank", 0},
|
||||
{"bSure", 0},
|
||||
{"cCode", "1001"},
|
||||
{ "bStartFlag", 0},
|
||||
{"body",dd}
|
||||
};
|
||||
|
||||
var res= bo.CloseBillSave(baseLogin, dict, "AP");
|
||||
|
||||
Trace.WriteLine("aaaaa");
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,81 +0,0 @@
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Net.Http;
|
||||
using System.Text;
|
||||
using System.Web.Http;
|
||||
using UFIDA.U8.Framework.Api;
|
||||
using UFIDA.U8.Framework.Api.Controllers;
|
||||
|
||||
namespace UFIDA.U8.Framework.Api.Tests.Controllers
|
||||
{
|
||||
[TestClass]
|
||||
public class ValuesControllerTest
|
||||
{
|
||||
[TestMethod]
|
||||
public void Get()
|
||||
{
|
||||
// 排列
|
||||
ValuesController controller = new ValuesController();
|
||||
|
||||
// 操作
|
||||
IEnumerable<string> result = controller.Get();
|
||||
|
||||
// 断言
|
||||
Assert.IsNotNull(result);
|
||||
Assert.AreEqual(2, result.Count());
|
||||
Assert.AreEqual("value1", result.ElementAt(0));
|
||||
Assert.AreEqual("value2", result.ElementAt(1));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void GetById()
|
||||
{
|
||||
// 排列
|
||||
ValuesController controller = new ValuesController();
|
||||
|
||||
// 操作
|
||||
string result = controller.Get(5);
|
||||
|
||||
// 断言
|
||||
Assert.AreEqual("value", result);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void Post()
|
||||
{
|
||||
// 排列
|
||||
ValuesController controller = new ValuesController();
|
||||
|
||||
// 操作
|
||||
controller.Post("value");
|
||||
|
||||
// 断言
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void Put()
|
||||
{
|
||||
// 排列
|
||||
ValuesController controller = new ValuesController();
|
||||
|
||||
// 操作
|
||||
controller.Put(5, "value");
|
||||
|
||||
// 断言
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void Delete()
|
||||
{
|
||||
// 排列
|
||||
ValuesController controller = new ValuesController();
|
||||
|
||||
// 操作
|
||||
controller.Delete(5);
|
||||
|
||||
// 断言
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,8 @@
|
||||
<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="..\packages\MSTest.TestAdapter.3.4.3\build\net462\MSTest.TestAdapter.props" Condition="Exists('..\packages\MSTest.TestAdapter.3.4.3\build\net462\MSTest.TestAdapter.props')" />
|
||||
<Import Project="..\packages\Microsoft.Testing.Extensions.Telemetry.1.2.1\build\netstandard2.0\Microsoft.Testing.Extensions.Telemetry.props" Condition="Exists('..\packages\Microsoft.Testing.Extensions.Telemetry.1.2.1\build\netstandard2.0\Microsoft.Testing.Extensions.Telemetry.props')" />
|
||||
<Import Project="..\packages\Microsoft.Testing.Platform.MSBuild.1.2.1\build\netstandard2.0\Microsoft.Testing.Platform.MSBuild.props" Condition="Exists('..\packages\Microsoft.Testing.Platform.MSBuild.1.2.1\build\netstandard2.0\Microsoft.Testing.Platform.MSBuild.props')" />
|
||||
<Import Project="..\packages\Microsoft.Testing.Platform.1.2.1\build\netstandard2.0\Microsoft.Testing.Platform.props" Condition="Exists('..\packages\Microsoft.Testing.Platform.1.2.1\build\netstandard2.0\Microsoft.Testing.Platform.props')" />
|
||||
<Import Project="..\packages\MSTest.TestAdapter.3.5.0\build\net462\MSTest.TestAdapter.props" Condition="Exists('..\packages\MSTest.TestAdapter.3.5.0\build\net462\MSTest.TestAdapter.props')" />
|
||||
<Import Project="..\packages\Microsoft.Testing.Extensions.Telemetry.1.3.1\build\netstandard2.0\Microsoft.Testing.Extensions.Telemetry.props" Condition="Exists('..\packages\Microsoft.Testing.Extensions.Telemetry.1.3.1\build\netstandard2.0\Microsoft.Testing.Extensions.Telemetry.props')" />
|
||||
<Import Project="..\packages\Microsoft.Testing.Platform.MSBuild.1.3.1\build\netstandard2.0\Microsoft.Testing.Platform.MSBuild.props" Condition="Exists('..\packages\Microsoft.Testing.Platform.MSBuild.1.3.1\build\netstandard2.0\Microsoft.Testing.Platform.MSBuild.props')" />
|
||||
<Import Project="..\packages\Microsoft.Testing.Platform.1.3.1\build\netstandard2.0\Microsoft.Testing.Platform.props" Condition="Exists('..\packages\Microsoft.Testing.Platform.1.3.1\build\netstandard2.0\Microsoft.Testing.Platform.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
@@ -28,6 +28,7 @@
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
@@ -42,20 +43,20 @@
|
||||
<HintPath>..\packages\Microsoft.ApplicationInsights.2.22.0\lib\net46\Microsoft.ApplicationInsights.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="Microsoft.Testing.Extensions.Telemetry, Version=1.2.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Testing.Extensions.Telemetry.1.2.1\lib\netstandard2.0\Microsoft.Testing.Extensions.Telemetry.dll</HintPath>
|
||||
<Reference Include="Microsoft.Testing.Extensions.Telemetry, Version=1.3.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Testing.Extensions.Telemetry.1.3.1\lib\netstandard2.0\Microsoft.Testing.Extensions.Telemetry.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Testing.Extensions.TrxReport.Abstractions, Version=1.2.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Testing.Extensions.TrxReport.Abstractions.1.2.1\lib\netstandard2.0\Microsoft.Testing.Extensions.TrxReport.Abstractions.dll</HintPath>
|
||||
<Reference Include="Microsoft.Testing.Extensions.TrxReport.Abstractions, Version=1.3.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Testing.Extensions.TrxReport.Abstractions.1.3.1\lib\netstandard2.0\Microsoft.Testing.Extensions.TrxReport.Abstractions.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Testing.Extensions.VSTestBridge, Version=1.2.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Testing.Extensions.VSTestBridge.1.2.1\lib\netstandard2.0\Microsoft.Testing.Extensions.VSTestBridge.dll</HintPath>
|
||||
<Reference Include="Microsoft.Testing.Extensions.VSTestBridge, Version=1.3.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Testing.Extensions.VSTestBridge.1.3.1\lib\netstandard2.0\Microsoft.Testing.Extensions.VSTestBridge.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Testing.Platform, Version=1.2.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Testing.Platform.1.2.1\lib\netstandard2.0\Microsoft.Testing.Platform.dll</HintPath>
|
||||
<Reference Include="Microsoft.Testing.Platform, Version=1.3.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Testing.Platform.1.3.1\lib\netstandard2.0\Microsoft.Testing.Platform.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Testing.Platform.MSBuild, Version=1.2.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Testing.Platform.MSBuild.1.2.1\lib\netstandard2.0\Microsoft.Testing.Platform.MSBuild.dll</HintPath>
|
||||
<Reference Include="Microsoft.Testing.Platform.MSBuild, Version=1.3.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Testing.Platform.MSBuild.1.3.1\lib\netstandard2.0\Microsoft.Testing.Platform.MSBuild.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.TestPlatform.CoreUtilities, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.TestPlatform.ObjectModel.17.10.0\lib\net462\Microsoft.TestPlatform.CoreUtilities.dll</HintPath>
|
||||
@@ -67,10 +68,10 @@
|
||||
<HintPath>..\packages\Microsoft.TestPlatform.ObjectModel.17.10.0\lib\net462\Microsoft.VisualStudio.TestPlatform.ObjectModel.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.VisualStudio.TestPlatform.TestFramework, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\MSTest.TestFramework.3.4.3\lib\net462\Microsoft.VisualStudio.TestPlatform.TestFramework.dll</HintPath>
|
||||
<HintPath>..\packages\MSTest.TestFramework.3.5.0\lib\net462\Microsoft.VisualStudio.TestPlatform.TestFramework.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\MSTest.TestFramework.3.4.3\lib\net462\Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll</HintPath>
|
||||
<HintPath>..\packages\MSTest.TestFramework.3.5.0\lib\net462\Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||
@@ -153,11 +154,20 @@
|
||||
</Reference>
|
||||
<Reference Include="System.Net.Http" />
|
||||
<Reference Include="System.Net.Http.WebRequest" />
|
||||
<Reference Include="UFSoft.U8.Framework.ContextSrv">
|
||||
<HintPath>D:\U8SOFT\U8M\UFSoft.U8.Framework.ContextSrv.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="UFSoft.U8.Framework.Login.UI">
|
||||
<HintPath>D:\U8SOFT\Framework\UFSoft.U8.Framework.Login.UI.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="UFSoft.U8.Framework.LoginContext, Version=1.0.0.0, Culture=neutral, PublicKeyToken=90e57cffdf9d854d, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>D:\U8SOFT\Framework\UFSoft.U8.Framework.LoginContext.dll</HintPath>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Controllers\UnitTest1.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Controllers\HomeControllerTest.cs" />
|
||||
<Compile Include="Controllers\ValuesControllerTest.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="App.config" />
|
||||
@@ -166,9 +176,9 @@
|
||||
<None Include="packages.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\UFIDA.U8.Framework.Api\UFIDA.U8.Framework.Api.csproj">
|
||||
<Project>{EF3F89D5-BA03-4768-9064-7FE0DFF841BB}</Project>
|
||||
<Name>UFIDA.U8.Framework.Api</Name>
|
||||
<ProjectReference Include="..\UFIDA.U8.Framework.Api.ControlObject\UFIDA.U8.Framework.Api.ControlObject.csproj">
|
||||
<Project>{22c84be9-1613-4e32-9e98-237e96fd3540}</Project>
|
||||
<Name>UFIDA.U8.Framework.Api.ControlObject</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
@@ -176,15 +186,15 @@
|
||||
<PropertyGroup>
|
||||
<ErrorText>这台计算机上缺少此项目引用的 NuGet 程序包。使用“NuGet 程序包还原”可下载这些程序包。有关更多信息,请参见 http://go.microsoft.com/fwlink/?LinkID=322105。缺少的文件是 {0}。</ErrorText>
|
||||
</PropertyGroup>
|
||||
<Error Condition="!Exists('..\packages\Microsoft.Testing.Platform.1.2.1\build\netstandard2.0\Microsoft.Testing.Platform.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Testing.Platform.1.2.1\build\netstandard2.0\Microsoft.Testing.Platform.props'))" />
|
||||
<Error Condition="!Exists('..\packages\Microsoft.Testing.Platform.MSBuild.1.2.1\build\netstandard2.0\Microsoft.Testing.Platform.MSBuild.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Testing.Platform.MSBuild.1.2.1\build\netstandard2.0\Microsoft.Testing.Platform.MSBuild.props'))" />
|
||||
<Error Condition="!Exists('..\packages\Microsoft.Testing.Platform.MSBuild.1.2.1\build\netstandard2.0\Microsoft.Testing.Platform.MSBuild.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Testing.Platform.MSBuild.1.2.1\build\netstandard2.0\Microsoft.Testing.Platform.MSBuild.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\Microsoft.Testing.Extensions.Telemetry.1.2.1\build\netstandard2.0\Microsoft.Testing.Extensions.Telemetry.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Testing.Extensions.Telemetry.1.2.1\build\netstandard2.0\Microsoft.Testing.Extensions.Telemetry.props'))" />
|
||||
<Error Condition="!Exists('..\packages\MSTest.TestAdapter.3.4.3\build\net462\MSTest.TestAdapter.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\MSTest.TestAdapter.3.4.3\build\net462\MSTest.TestAdapter.props'))" />
|
||||
<Error Condition="!Exists('..\packages\MSTest.TestAdapter.3.4.3\build\net462\MSTest.TestAdapter.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\MSTest.TestAdapter.3.4.3\build\net462\MSTest.TestAdapter.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\Microsoft.Testing.Platform.1.3.1\build\netstandard2.0\Microsoft.Testing.Platform.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Testing.Platform.1.3.1\build\netstandard2.0\Microsoft.Testing.Platform.props'))" />
|
||||
<Error Condition="!Exists('..\packages\Microsoft.Testing.Platform.MSBuild.1.3.1\build\netstandard2.0\Microsoft.Testing.Platform.MSBuild.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Testing.Platform.MSBuild.1.3.1\build\netstandard2.0\Microsoft.Testing.Platform.MSBuild.props'))" />
|
||||
<Error Condition="!Exists('..\packages\Microsoft.Testing.Platform.MSBuild.1.3.1\build\netstandard2.0\Microsoft.Testing.Platform.MSBuild.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Testing.Platform.MSBuild.1.3.1\build\netstandard2.0\Microsoft.Testing.Platform.MSBuild.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\Microsoft.Testing.Extensions.Telemetry.1.3.1\build\netstandard2.0\Microsoft.Testing.Extensions.Telemetry.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Testing.Extensions.Telemetry.1.3.1\build\netstandard2.0\Microsoft.Testing.Extensions.Telemetry.props'))" />
|
||||
<Error Condition="!Exists('..\packages\MSTest.TestAdapter.3.5.0\build\net462\MSTest.TestAdapter.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\MSTest.TestAdapter.3.5.0\build\net462\MSTest.TestAdapter.props'))" />
|
||||
<Error Condition="!Exists('..\packages\MSTest.TestAdapter.3.5.0\build\net462\MSTest.TestAdapter.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\MSTest.TestAdapter.3.5.0\build\net462\MSTest.TestAdapter.targets'))" />
|
||||
</Target>
|
||||
<Import Project="..\packages\Microsoft.Testing.Platform.MSBuild.1.2.1\build\netstandard2.0\Microsoft.Testing.Platform.MSBuild.targets" Condition="Exists('..\packages\Microsoft.Testing.Platform.MSBuild.1.2.1\build\netstandard2.0\Microsoft.Testing.Platform.MSBuild.targets')" />
|
||||
<Import Project="..\packages\MSTest.TestAdapter.3.4.3\build\net462\MSTest.TestAdapter.targets" Condition="Exists('..\packages\MSTest.TestAdapter.3.4.3\build\net462\MSTest.TestAdapter.targets')" />
|
||||
<Import Project="..\packages\Microsoft.Testing.Platform.MSBuild.1.3.1\build\netstandard2.0\Microsoft.Testing.Platform.MSBuild.targets" Condition="Exists('..\packages\Microsoft.Testing.Platform.MSBuild.1.3.1\build\netstandard2.0\Microsoft.Testing.Platform.MSBuild.targets')" />
|
||||
<Import Project="..\packages\MSTest.TestAdapter.3.5.0\build\net462\MSTest.TestAdapter.targets" Condition="Exists('..\packages\MSTest.TestAdapter.3.5.0\build\net462\MSTest.TestAdapter.targets')" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
|
||||
@@ -13,15 +13,15 @@
|
||||
<package id="Microsoft.AspNet.WebApi.WebHost.zh-Hans" version="5.3.0" targetFramework="net48" />
|
||||
<package id="Microsoft.AspNet.WebPages" version="3.3.0" targetFramework="net48" />
|
||||
<package id="Microsoft.AspNet.WebPages.zh-Hans" version="3.3.0" targetFramework="net48" />
|
||||
<package id="Microsoft.Testing.Extensions.Telemetry" version="1.2.1" targetFramework="net48" />
|
||||
<package id="Microsoft.Testing.Extensions.TrxReport.Abstractions" version="1.2.1" targetFramework="net48" />
|
||||
<package id="Microsoft.Testing.Extensions.VSTestBridge" version="1.2.1" targetFramework="net48" />
|
||||
<package id="Microsoft.Testing.Platform" version="1.2.1" targetFramework="net48" />
|
||||
<package id="Microsoft.Testing.Platform.MSBuild" version="1.2.1" targetFramework="net48" />
|
||||
<package id="Microsoft.Testing.Extensions.Telemetry" version="1.3.1" targetFramework="net48" />
|
||||
<package id="Microsoft.Testing.Extensions.TrxReport.Abstractions" version="1.3.1" targetFramework="net48" />
|
||||
<package id="Microsoft.Testing.Extensions.VSTestBridge" version="1.3.1" targetFramework="net48" />
|
||||
<package id="Microsoft.Testing.Platform" version="1.3.1" targetFramework="net48" />
|
||||
<package id="Microsoft.Testing.Platform.MSBuild" version="1.3.1" targetFramework="net48" />
|
||||
<package id="Microsoft.TestPlatform.ObjectModel" version="17.10.0" targetFramework="net48" />
|
||||
<package id="Microsoft.Web.Infrastructure" version="2.0.1" targetFramework="net48" />
|
||||
<package id="MSTest.TestAdapter" version="3.4.3" targetFramework="net48" />
|
||||
<package id="MSTest.TestFramework" version="3.4.3" targetFramework="net48" />
|
||||
<package id="MSTest.TestAdapter" version="3.5.0" targetFramework="net48" />
|
||||
<package id="MSTest.TestFramework" version="3.5.0" targetFramework="net48" />
|
||||
<package id="Newtonsoft.Json" version="13.0.3" targetFramework="net48" />
|
||||
<package id="Newtonsoft.Json.Bson" version="1.0.2" targetFramework="net48" />
|
||||
<package id="NuGet.Frameworks" version="6.10.1" targetFramework="net48" />
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
{
|
||||
"cVouchType": "49",
|
||||
"cVouchID": "0000000030",
|
||||
"dVouchDate": "2015-07-22 00:00:00.000",
|
||||
"cDwCode": "01004",
|
||||
"cSSCode": "1",
|
||||
"cDeptCode": "0401",
|
||||
"cSSName": "现金",
|
||||
"iPeriod": 7,
|
||||
"cPerson": "00043",
|
||||
"cPersonName": "顾潇",
|
||||
"cexch_name": "人民币",
|
||||
"iExchRate": 1,
|
||||
"iAmount_f": 100.00,
|
||||
"iAmount": 100.00,
|
||||
"iRAmount_f": 100.00,
|
||||
"iRAmount": 100.00,
|
||||
"cTypeName": "付款单",
|
||||
"cFlag": "AP",
|
||||
"iPayForOther": 0,
|
||||
"bFromBank": 0,
|
||||
"bToBank": 0,
|
||||
"bSure": 0,
|
||||
"cCode": "1001",
|
||||
"bStartFlag": 0,
|
||||
"body": [
|
||||
{
|
||||
"bPrePay": 0,
|
||||
"iType": 0,
|
||||
"cType": "应付款",
|
||||
"iAmt_f": 100,
|
||||
"iAmt": 100,
|
||||
"cKm": "220202",
|
||||
"cDepName": "采购部",
|
||||
"cPersonName": "顾潇",
|
||||
"iRAmt_f": 100.00,
|
||||
"iRAmt": 100.00,
|
||||
"cCusVen": "01004",
|
||||
"iAmt_s": 0,
|
||||
"iRAmt_s": 0,
|
||||
"cDepCode": "0401",
|
||||
"cPersonCode": "00043"
|
||||
}
|
||||
]
|
||||
}
|
||||
Binary file not shown.
@@ -568,6 +568,41 @@
|
||||
<param name="input"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="F:UFIDA.U8.Framework.Api.Controllers.U8.APController.logInfo">
|
||||
<summary>
|
||||
日志组件
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:UFIDA.U8.Framework.Api.Controllers.U8.APController.CloseBillSave(System.String,System.String,System.Collections.Generic.Dictionary{System.String,System.Object})">
|
||||
<summary>
|
||||
收付款单保存
|
||||
</summary>
|
||||
<param name="cAccId">系统号</param>
|
||||
<param name="cCardNum">单据类型编码</param>
|
||||
<param name="input">报文数据</param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:UFIDA.U8.Framework.Api.Controllers.U8.APController.AP48Save(System.String,System.Collections.Generic.Dictionary{System.String,System.Object})">
|
||||
<summary>
|
||||
收款单保存
|
||||
</summary>
|
||||
<param name="cAccId"></param>
|
||||
<param name="input"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:UFIDA.U8.Framework.Api.Controllers.U8.APController.AP49Save(System.String,System.Collections.Generic.Dictionary{System.String,System.Object})">
|
||||
<summary>
|
||||
收款单保存
|
||||
</summary>
|
||||
<param name="cAccId"></param>
|
||||
<param name="input"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="T:UFIDA.U8.Framework.Api.Controllers.U8.MOController">
|
||||
<summary>
|
||||
生产订单
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:UFIDA.U8.Framework.Api.Controllers.U8.SFCController">
|
||||
<summary>
|
||||
车间管理
|
||||
@@ -710,7 +745,7 @@
|
||||
<param name="input">报文数据</param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:UFIDA.U8.Framework.Api.WebApiApplication.__CurrentDomain_AssemblyResolve(System.Object,System.ResolveEventArgs)">
|
||||
<member name="M:UFIDA.U8.Framework.Api.WebApiApplication.CurrentDomain_AssemblyResolve(System.Object,System.ResolveEventArgs)">
|
||||
<summary>
|
||||
缺少程序集全局处理事件
|
||||
</summary>
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
using Autofac.Integration.WebApi;
|
||||
using Autofac;
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
@@ -12,12 +11,12 @@ namespace UFIDA.U8.Framework.Api
|
||||
public static void Register(HttpConfiguration config)
|
||||
{
|
||||
// Web API 配置和服务
|
||||
var builder = new ContainerBuilder();
|
||||
//var builder = new ContainerBuilder();
|
||||
//builder.RegisterType<GMUtil>().As<IMyService>();
|
||||
|
||||
var container = builder.Build();
|
||||
//var container = builder.Build();
|
||||
|
||||
config.DependencyResolver = new AutofacWebApiDependencyResolver(container);
|
||||
//config.DependencyResolver = new AutofacWebApiDependencyResolver(container);
|
||||
|
||||
// Web API 路由
|
||||
config.MapHttpAttributeRoutes();
|
||||
|
||||
@@ -0,0 +1,114 @@
|
||||
using log4net;
|
||||
using Microsoft.Extensions.Caching.Memory;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using System.Web.Http;
|
||||
using UFIDA.U8.Framework.Api.ControlObject.AP;
|
||||
using UFIDA.U8.Framework.Api.ControlObject.Models;
|
||||
using UFIDA.U8.Framework.Api.ControlObject.U8M;
|
||||
using UFIDA.U8.Framework.Api.Unit;
|
||||
// ReSharper disable InconsistentNaming
|
||||
|
||||
namespace UFIDA.U8.Framework.Api.Controllers.U8
|
||||
{
|
||||
|
||||
public class APController : ApiController
|
||||
{
|
||||
/// <summary>
|
||||
/// 日志组件
|
||||
/// </summary>
|
||||
protected readonly ILog logInfo = LogManager.GetLogger("logInfo");
|
||||
|
||||
private static readonly MemoryCache _cache = new MemoryCache(new MemoryCacheOptions { ExpirationScanFrequency = TimeSpan.FromMinutes(10) });
|
||||
|
||||
/// <summary>
|
||||
/// 收付款单保存
|
||||
/// </summary>
|
||||
/// <param name="cAccId">系统号</param>
|
||||
/// <param name="cCardNum">单据类型编码</param>
|
||||
/// <param name="input">报文数据</param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
[Route("api/U8/AP/{cCardNum}/CloseBillSave")]
|
||||
[Route("api/U8/AR/{cCardNum}/CloseBillSave")]
|
||||
public async Task<BaseResult<dynamic>> CloseBillSave(string cAccId, string cCardNum, [FromBody] Dictionary<string, object> input)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!_cache.TryGetValue($"U8AP_{cAccId}", out BaseLogin baseLogin))
|
||||
{
|
||||
baseLogin = new BaseLogin();
|
||||
|
||||
var param = await CommUnit.GetLoginParamter(cAccId);
|
||||
|
||||
if (param == null)
|
||||
{
|
||||
throw new Exception("未能加载指定系统号的登录信息");
|
||||
}
|
||||
|
||||
baseLogin.Init(param, false);
|
||||
|
||||
_cache.Set($"U8AP_{cAccId}", baseLogin);
|
||||
}
|
||||
|
||||
var subId = "";
|
||||
|
||||
if (cCardNum == "AP48")
|
||||
{
|
||||
subId = "AR";
|
||||
}
|
||||
|
||||
if (cCardNum == "AP49")
|
||||
{
|
||||
subId = "AP";
|
||||
}
|
||||
|
||||
|
||||
if (string.IsNullOrWhiteSpace(subId))
|
||||
throw new Exception("单据标识不正确");
|
||||
|
||||
var bo = new UFAPBO();
|
||||
|
||||
var res = bo.CloseBillSave(baseLogin, input, subId);
|
||||
|
||||
return res;
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logInfo.Error(ex.Message, ex);
|
||||
|
||||
return new BaseResult<dynamic> { bSuccess = false, message = ex.Message, result = ex.StackTrace };
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 收款单保存
|
||||
/// </summary>
|
||||
/// <param name="cAccId"></param>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
[Route("api/U8/AR/AP48/CloseBillSave")]
|
||||
public async Task<BaseResult<dynamic>> AP48Save(string cAccId, [FromBody] Dictionary<string, object> input)
|
||||
{
|
||||
return await CloseBillSave(cAccId, "AP48", input);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 收款单保存
|
||||
/// </summary>
|
||||
/// <param name="cAccId"></param>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
[Route("api/U8/AP/AP49/CloseBillSave")]
|
||||
public async Task<BaseResult<dynamic>> AP49Save(string cAccId, [FromBody] Dictionary<string, object> input)
|
||||
{
|
||||
return await CloseBillSave(cAccId, "AP49", input);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -4,10 +4,18 @@ using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using System.Web.Http;
|
||||
using Microsoft.Extensions.Caching.Memory;
|
||||
using Microsoft.JScript;
|
||||
using SqlSugar;
|
||||
using UFIDA.U8.Framework.Api.Common.Entity;
|
||||
using UFIDA.U8.Framework.Api.ControlObject.Json;
|
||||
using UFIDA.U8.Framework.Api.ControlObject.Models;
|
||||
using UFIDA.U8.Framework.Api.ControlObject.U8M;
|
||||
using UFIDA.U8.Framework.Api.Unit;
|
||||
using UFIDA.U8.Framework.Api.Models;
|
||||
using Yitter.IdGenerator;
|
||||
using System.Web.UI.WebControls;
|
||||
using Convert = System.Convert;
|
||||
|
||||
// ReSharper disable InconsistentNaming
|
||||
// ReSharper disable IdentifierTypo
|
||||
// ReSharper disable FieldCanBeMadeReadOnly.Local
|
||||
@@ -35,15 +43,67 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
[Route("api/U8/SFC/MoRoutingBillSave")]
|
||||
public async Task<BaseResult<dynamic>> MoRoutingBillSave(string cAccId,string cCardNum, [FromBody] Dictionary<string, object> input)
|
||||
public async Task<BaseResult<string>> MoRoutingBillSave(string cAccId,string cCardNum, [FromBody] Dictionary<string, object> input)
|
||||
{
|
||||
var taskId = 0L;
|
||||
|
||||
var db = CommUnit.GetDbClient();
|
||||
|
||||
BaseLogin baseLogin=null;
|
||||
|
||||
try
|
||||
{
|
||||
logInfo.Debug($"接口标识:MoRoutingBillSave,系统号:{cAccId},单据类型编码:{cCardNum},报文数据:{input.ToJson()}");
|
||||
|
||||
if (cCardNum != "FC90" && cCardNum != "FC91" && cCardNum != "FC92")
|
||||
throw new Exception("当前接口不支持此类型的单据");
|
||||
|
||||
if (!_cache.TryGetValue($"U8M_{cAccId}", out BaseLogin baseLogin))
|
||||
var runtimes = 0;
|
||||
|
||||
var u8mTask = new SysU8MTask()
|
||||
{
|
||||
U8MPool = $"U8M_{cAccId}"
|
||||
};
|
||||
|
||||
#if !DEBUG
|
||||
while (await db.Queryable<SysU8MTask>().AnyAsync())
|
||||
{
|
||||
if (runtimes > 20)
|
||||
{
|
||||
throw new Exception("当前任务队列过长");
|
||||
}
|
||||
|
||||
runtimes++;
|
||||
|
||||
await Task.Delay(100 * runtimes);
|
||||
|
||||
//u8mTask.Id = DateTime.Now.Ticks;
|
||||
|
||||
if (await db.Queryable<SysU8MTask>()
|
||||
.AnyAsync(a => SqlFunc.DateDiff(DateType.Minute, a.dDate, DateTime.Now) > 1))
|
||||
{
|
||||
await db.Deleteable<SysU8MTask>()
|
||||
.Where(a => SqlFunc.DateDiff(DateType.Minute, a.dDate, DateTime.Now) > 1)
|
||||
.ExecuteCommandAsync();
|
||||
}
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
u8mTask.dDate = DateTime.Now;
|
||||
|
||||
//if (u8mTask.Id == null)
|
||||
//{
|
||||
// u8mTask.Id = DateTime.Now.Ticks;
|
||||
//}
|
||||
|
||||
taskId = await db.Insertable(u8mTask).ExecuteReturnSnowflakeIdAsync();
|
||||
|
||||
logInfo.Debug($"开始操作,当前任务ID:{taskId}");
|
||||
//if (!_cache.TryGetValue($"U8M_{cAccId}", out BaseLogin baseLogin))
|
||||
//{
|
||||
// _cache.Clear();
|
||||
|
||||
baseLogin = new BaseLogin();
|
||||
|
||||
var param = await CommUnit.GetLoginParamter(cAccId);
|
||||
@@ -53,15 +113,37 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
|
||||
throw new Exception("未能加载指定系统号的登录信息");
|
||||
}
|
||||
|
||||
baseLogin.Init(param);
|
||||
logInfo.Debug($"开始登录,当前任务ID:{taskId}");
|
||||
|
||||
baseLogin.Init(param,true);
|
||||
|
||||
//_cache.Set($"U8M_{cAccId}", baseLogin);
|
||||
//}
|
||||
|
||||
_cache.Set($"U8M_{cAccId}", baseLogin);
|
||||
}
|
||||
|
||||
var bf = new MoRoutingBill();
|
||||
|
||||
var res=bf.Save( cCardNum, input);
|
||||
logInfo.Debug($"开始保存,当前任务ID:{taskId}");
|
||||
|
||||
BaseResult<string> res;
|
||||
if (input.ContainsKey("bBatch") && Convert.ToBoolean(input["bBatch"]))
|
||||
{
|
||||
var inputs = input["inputs"] as List<Dictionary<string, object>> ?? $"{input["inputs"]}".ToObject<List<Dictionary<string, object>>>();
|
||||
|
||||
res = bf.Save(cCardNum, inputs);
|
||||
}
|
||||
else
|
||||
{
|
||||
res = bf.Save(cCardNum, input);
|
||||
}
|
||||
|
||||
logInfo.Debug($"退出登录,当前任务ID:{taskId}");
|
||||
baseLogin.ShutDown();
|
||||
|
||||
if (taskId != 0)
|
||||
{
|
||||
await db.Deleteable<SysU8MTask>(taskId).ExecuteCommandAsync();
|
||||
}
|
||||
|
||||
return res;
|
||||
|
||||
@@ -70,7 +152,21 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
|
||||
{
|
||||
logInfo.Error(ex.Message, ex);
|
||||
|
||||
return new BaseResult<dynamic> {bSuccess = false,message = ex.Message,result = ex.StackTrace};
|
||||
if (taskId != 0)
|
||||
{
|
||||
await db.Deleteable<SysU8MTask>(taskId).ExecuteCommandAsync();
|
||||
}
|
||||
|
||||
return new BaseResult<string> { bSuccess = false, message = ex.Message, result = ex.StackTrace };
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (taskId != 0)
|
||||
{
|
||||
await db.Deleteable<SysU8MTask>(taskId).ExecuteCommandAsync();
|
||||
}
|
||||
|
||||
baseLogin?.ShutDown();
|
||||
}
|
||||
|
||||
|
||||
@@ -85,7 +181,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
|
||||
[HttpPost]
|
||||
[Route("api/U8/SFC/FC90/Save")]
|
||||
[Route("api/U8/SFC/FC90/Save/{cAccId}")]
|
||||
public async Task<BaseResult<dynamic>> FC90Save(string cAccId, [FromBody] Dictionary<string, object> input)
|
||||
public async Task<BaseResult<string>> FC90Save(string cAccId, [FromBody] Dictionary<string, object> input)
|
||||
{
|
||||
return await MoRoutingBillSave(cAccId, "FC90", input);
|
||||
}
|
||||
@@ -99,7 +195,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
|
||||
[HttpPost]
|
||||
[Route("api/U8/SFC/FC91/Save")]
|
||||
[Route("api/U8/SFC/FC91/Save/{cAccId}")]
|
||||
public async Task<BaseResult<dynamic>> FC91Save(string cAccId, [FromBody] Dictionary<string, object> input)
|
||||
public async Task<BaseResult<string>> FC91Save(string cAccId, [FromBody] Dictionary<string, object> input)
|
||||
{
|
||||
return await MoRoutingBillSave(cAccId, "FC91", input);
|
||||
}
|
||||
@@ -113,7 +209,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
|
||||
[HttpPost]
|
||||
[Route("api/U8/SFC/FC92/Save")]
|
||||
[Route("api/U8/SFC/FC92/Save/{cAccId}")]
|
||||
public async Task<BaseResult<dynamic>> FC92Save(string cAccId, [FromBody] Dictionary<string, object> input)
|
||||
public async Task<BaseResult<string>> FC92Save(string cAccId, [FromBody] Dictionary<string, object> input)
|
||||
{
|
||||
return await MoRoutingBillSave(cAccId, "FC92", input);
|
||||
}
|
||||
@@ -127,10 +223,12 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
[Route("api/U8/SFC/MoRoutingBillDelete")]
|
||||
public async Task<BaseResult<dynamic>> MoRoutingBillDelete(string cAccId,string cCardNum, [FromBody] DeleteMoRoutingBillInput input)
|
||||
public async Task<BaseResult<string>> MoRoutingBillDelete(string cAccId,string cCardNum, [FromBody] DeleteMoRoutingBillInput input)
|
||||
{
|
||||
try
|
||||
{
|
||||
logInfo.Debug($"接口标识:MoRoutingBillDelete,系统号:{cAccId},单据类型编码:{cCardNum},报文数据:{input.ToJson()}");
|
||||
|
||||
if (cCardNum != "FC90" && cCardNum != "FC91" && cCardNum != "FC92")
|
||||
throw new Exception("当前接口不支持此类型的单据");
|
||||
|
||||
@@ -166,7 +264,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
|
||||
{
|
||||
logInfo.Error(ex.Message, ex);
|
||||
|
||||
return new BaseResult<dynamic> {bSuccess = false,message = ex.Message,result = ex.StackTrace};
|
||||
return new BaseResult<string> {bSuccess = false,message = ex.Message,result = ex.StackTrace};
|
||||
}
|
||||
|
||||
|
||||
@@ -182,7 +280,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
|
||||
[HttpPost]
|
||||
[Route("api/U8/SFC/FC90/Delete")]
|
||||
[Route("api/U8/SFC/FC90/Delete/{cAccId}")]
|
||||
public async Task<BaseResult<dynamic>> FC90Delete(string cAccId, [FromBody] DeleteMoRoutingBillInput input)
|
||||
public async Task<BaseResult<string>> FC90Delete(string cAccId, [FromBody] DeleteMoRoutingBillInput input)
|
||||
{
|
||||
return await MoRoutingBillDelete(cAccId, "FC90", input);
|
||||
}
|
||||
@@ -196,7 +294,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
|
||||
[HttpPost]
|
||||
[Route("api/U8/SFC/FC91/Delete")]
|
||||
[Route("api/U8/SFC/FC91/Delete/{cAccId}")]
|
||||
public async Task<BaseResult<dynamic>> FC91Delete(string cAccId, [FromBody] DeleteMoRoutingBillInput input)
|
||||
public async Task<BaseResult<string>> FC91Delete(string cAccId, [FromBody] DeleteMoRoutingBillInput input)
|
||||
{
|
||||
return await MoRoutingBillDelete(cAccId, "FC91", input);
|
||||
}
|
||||
@@ -210,7 +308,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
|
||||
[HttpPost]
|
||||
[Route("api/U8/SFC/FC92/Delete")]
|
||||
[Route("api/U8/SFC/FC92/Delete/{cAccId}")]
|
||||
public async Task<BaseResult<dynamic>> FC92Delete(string cAccId, [FromBody] DeleteMoRoutingBillInput input)
|
||||
public async Task<BaseResult<string>> FC92Delete(string cAccId, [FromBody] DeleteMoRoutingBillInput input)
|
||||
{
|
||||
return await MoRoutingBillDelete(cAccId, "FC92", input);
|
||||
}
|
||||
@@ -224,10 +322,12 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
[Route("api/U8/SFC/MoRoutingBillVerify")]
|
||||
public async Task<BaseResult<dynamic>> MoRoutingBillVerify(string cAccId,string cCardNum, [FromBody] DeleteMoRoutingBillInput input)
|
||||
public async Task<BaseResult<string>> MoRoutingBillVerify(string cAccId,string cCardNum, [FromBody] DeleteMoRoutingBillInput input)
|
||||
{
|
||||
try
|
||||
{
|
||||
logInfo.Debug($"接口标识:MoRoutingBillVerify,系统号:{cAccId},单据类型编码:{cCardNum},报文数据:{input.ToJson()}");
|
||||
|
||||
if (cCardNum != "FC90" && cCardNum != "FC91" && cCardNum != "FC92")
|
||||
throw new Exception("当前接口不支持此类型的单据");
|
||||
|
||||
@@ -263,7 +363,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
|
||||
{
|
||||
logInfo.Error(ex.Message, ex);
|
||||
|
||||
return new BaseResult<dynamic> {bSuccess = false,message = ex.Message,result = ex.StackTrace};
|
||||
return new BaseResult<string> {bSuccess = false,message = ex.Message,result = ex.StackTrace};
|
||||
}
|
||||
|
||||
|
||||
@@ -279,7 +379,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
|
||||
[HttpPost]
|
||||
[Route("api/U8/SFC/FC90/Verify")]
|
||||
[Route("api/U8/SFC/FC90/Verify/{cAccId}")]
|
||||
public async Task<BaseResult<dynamic>> FC90Verify(string cAccId, [FromBody] DeleteMoRoutingBillInput input)
|
||||
public async Task<BaseResult<string>> FC90Verify(string cAccId, [FromBody] DeleteMoRoutingBillInput input)
|
||||
{
|
||||
return await MoRoutingBillVerify(cAccId, "FC90", input);
|
||||
}
|
||||
@@ -293,7 +393,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
|
||||
[HttpPost]
|
||||
[Route("api/U8/SFC/FC91/Verify")]
|
||||
[Route("api/U8/SFC/FC91/Verify/{cAccId}")]
|
||||
public async Task<BaseResult<dynamic>> FC91Verify(string cAccId, [FromBody] DeleteMoRoutingBillInput input)
|
||||
public async Task<BaseResult<string>> FC91Verify(string cAccId, [FromBody] DeleteMoRoutingBillInput input)
|
||||
{
|
||||
return await MoRoutingBillVerify(cAccId, "FC91", input);
|
||||
}
|
||||
@@ -307,7 +407,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
|
||||
[HttpPost]
|
||||
[Route("api/U8/SFC/FC92/Verify")]
|
||||
[Route("api/U8/SFC/FC92/Verify/{cAccId}")]
|
||||
public async Task<BaseResult<dynamic>> FC92Verify(string cAccId, [FromBody] DeleteMoRoutingBillInput input)
|
||||
public async Task<BaseResult<string>> FC92Verify(string cAccId, [FromBody] DeleteMoRoutingBillInput input)
|
||||
{
|
||||
return await MoRoutingBillVerify(cAccId, "FC92", input);
|
||||
}
|
||||
@@ -321,10 +421,13 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
[Route("api/U8/SFC/MoRoutingBillUnVerify")]
|
||||
public async Task<BaseResult<dynamic>> MoRoutingBillUnVerify(string cAccId,string cCardNum, [FromBody] DeleteMoRoutingBillInput input)
|
||||
public async Task<BaseResult<string>> MoRoutingBillUnVerify(string cAccId,string cCardNum, [FromBody] DeleteMoRoutingBillInput input)
|
||||
{
|
||||
try
|
||||
{
|
||||
logInfo.Debug($"接口标识:MoRoutingBillUnVerify,系统号:{cAccId},单据类型编码:{cCardNum},报文数据:{input.ToJson()}");
|
||||
|
||||
|
||||
if (cCardNum != "FC90" && cCardNum != "FC91" && cCardNum != "FC92")
|
||||
throw new Exception("当前接口不支持此类型的单据");
|
||||
|
||||
@@ -360,7 +463,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
|
||||
{
|
||||
logInfo.Error(ex.Message, ex);
|
||||
|
||||
return new BaseResult<dynamic> {bSuccess = false,message = ex.Message,result = ex.StackTrace};
|
||||
return new BaseResult<string> {bSuccess = false,message = ex.Message,result = ex.StackTrace};
|
||||
}
|
||||
|
||||
|
||||
@@ -376,7 +479,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
|
||||
[HttpPost]
|
||||
[Route("api/U8/SFC/FC90/UnVerify")]
|
||||
[Route("api/U8/SFC/FC90/UnVerify/{cAccId}")]
|
||||
public async Task<BaseResult<dynamic>> FC90UnVerify(string cAccId, [FromBody] DeleteMoRoutingBillInput input)
|
||||
public async Task<BaseResult<string>> FC90UnVerify(string cAccId, [FromBody] DeleteMoRoutingBillInput input)
|
||||
{
|
||||
return await MoRoutingBillVerify(cAccId, "FC90", input);
|
||||
}
|
||||
@@ -390,7 +493,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
|
||||
[HttpPost]
|
||||
[Route("api/U8/SFC/FC91/UnVerify")]
|
||||
[Route("api/U8/SFC/FC91/UnVerify/{cAccId}")]
|
||||
public async Task<BaseResult<dynamic>> FC91UnVerify(string cAccId, [FromBody] DeleteMoRoutingBillInput input)
|
||||
public async Task<BaseResult<string>> FC91UnVerify(string cAccId, [FromBody] DeleteMoRoutingBillInput input)
|
||||
{
|
||||
return await MoRoutingBillUnVerify(cAccId, "FC91", input);
|
||||
}
|
||||
@@ -404,7 +507,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
|
||||
[HttpPost]
|
||||
[Route("api/U8/SFC/FC92/UnVerify")]
|
||||
[Route("api/U8/SFC/FC92/UnVerify/{cAccId}")]
|
||||
public async Task<BaseResult<dynamic>> FC92UnVerify(string cAccId, [FromBody] DeleteMoRoutingBillInput input)
|
||||
public async Task<BaseResult<string>> FC92UnVerify(string cAccId, [FromBody] DeleteMoRoutingBillInput input)
|
||||
{
|
||||
return await MoRoutingBillUnVerify(cAccId, "FC92", input);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
using Autofac;
|
||||
using Autofac.Integration.WebApi;
|
||||
|
||||
using Microsoft.JScript;
|
||||
using Microsoft.Win32;
|
||||
using System;
|
||||
@@ -24,7 +23,7 @@ namespace UFIDA.U8.Framework.Api
|
||||
|
||||
public WebApiApplication()
|
||||
{
|
||||
s_u8Root = __GetU8InstallPath();
|
||||
s_u8Root = GetU8InstallPath();
|
||||
s_u8MPath = $@"{s_u8Root}U8M\";
|
||||
s_u8FrameworkPath = $@"{s_u8Root}Framework\";
|
||||
s_u8APIFramework = $@"{s_u8Root}UFMOM\U8APIFramework\";
|
||||
@@ -40,23 +39,23 @@ namespace UFIDA.U8.Framework.Api
|
||||
RouteConfig.RegisterRoutes(RouteTable.Routes);
|
||||
BundleConfig.RegisterBundles(BundleTable.Bundles);
|
||||
|
||||
AppDomain.CurrentDomain.AssemblyResolve -= __CurrentDomain_AssemblyResolve;
|
||||
AppDomain.CurrentDomain.AssemblyResolve += __CurrentDomain_AssemblyResolve;
|
||||
AppDomain.CurrentDomain.AssemblyResolve -= CurrentDomain_AssemblyResolve;
|
||||
AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
|
||||
|
||||
}
|
||||
|
||||
private void ConfigureDependencyInjection(HttpConfiguration config)
|
||||
{
|
||||
var builder = new ContainerBuilder();
|
||||
//builder.RegisterType<GMUtil>().As<>();
|
||||
//private void ConfigureDependencyInjection(HttpConfiguration config)
|
||||
//{
|
||||
// var builder = new ContainerBuilder();
|
||||
// //builder.RegisterType<GMUtil>().As<>();
|
||||
|
||||
var container = builder.Build();
|
||||
// var container = builder.Build();
|
||||
|
||||
config.DependencyResolver = new AutofacWebApiDependencyResolver(container);
|
||||
}
|
||||
// config.DependencyResolver = new AutofacWebApiDependencyResolver(container);
|
||||
//}
|
||||
|
||||
|
||||
private static string __GetU8InstallPath()
|
||||
private static string GetU8InstallPath()
|
||||
{
|
||||
string root;
|
||||
var installPath = Registry.LocalMachine.OpenSubKey(GlobalConstDefine.Product_Registry_InstallKey);
|
||||
@@ -70,7 +69,7 @@ namespace UFIDA.U8.Framework.Api
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="args"></param>
|
||||
/// <returns></returns>
|
||||
private Assembly __CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
|
||||
private Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
|
||||
{
|
||||
//先在已经加载的程序集中选择
|
||||
foreach (var asm in AppDomain.CurrentDomain.GetAssemblies())
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
|
||||
<MvcBuildViews>false</MvcBuildViews>
|
||||
<UseIISExpress>true</UseIISExpress>
|
||||
<Use64BitIISExpress />
|
||||
<Use64BitIISExpress>false</Use64BitIISExpress>
|
||||
<IISExpressSSLPort>44366</IISExpressSSLPort>
|
||||
<IISExpressAnonymousAuthentication />
|
||||
<IISExpressWindowsAuthentication />
|
||||
@@ -47,12 +47,6 @@
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Autofac, Version=8.0.0.0, Culture=neutral, PublicKeyToken=17863af14b0044da, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Autofac.8.0.0\lib\netstandard2.0\Autofac.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Autofac.Integration.WebApi, Version=6.1.1.0, Culture=neutral, PublicKeyToken=17863af14b0044da, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Autofac.WebApi2.6.1.1\lib\net472\Autofac.Integration.WebApi.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Dapper, Version=2.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Dapper.2.1.35\lib\net461\Dapper.dll</HintPath>
|
||||
</Reference>
|
||||
@@ -168,17 +162,17 @@
|
||||
<Reference Include="Microsoft.Extensions.Primitives, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Extensions.Primitives.8.0.0\lib\net462\Microsoft.Extensions.Primitives.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.IdentityModel.Abstractions, Version=7.6.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.IdentityModel.Abstractions.7.6.3\lib\net472\Microsoft.IdentityModel.Abstractions.dll</HintPath>
|
||||
<Reference Include="Microsoft.IdentityModel.Abstractions, Version=8.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.IdentityModel.Abstractions.8.0.1\lib\net472\Microsoft.IdentityModel.Abstractions.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.IdentityModel.JsonWebTokens, Version=7.6.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.IdentityModel.JsonWebTokens.7.6.3\lib\net472\Microsoft.IdentityModel.JsonWebTokens.dll</HintPath>
|
||||
<Reference Include="Microsoft.IdentityModel.JsonWebTokens, Version=8.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.IdentityModel.JsonWebTokens.8.0.1\lib\net472\Microsoft.IdentityModel.JsonWebTokens.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.IdentityModel.Logging, Version=7.6.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.IdentityModel.Logging.7.6.3\lib\net472\Microsoft.IdentityModel.Logging.dll</HintPath>
|
||||
<Reference Include="Microsoft.IdentityModel.Logging, Version=8.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.IdentityModel.Logging.8.0.1\lib\net472\Microsoft.IdentityModel.Logging.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.IdentityModel.Tokens, Version=7.6.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.IdentityModel.Tokens.7.6.3\lib\net472\Microsoft.IdentityModel.Tokens.dll</HintPath>
|
||||
<Reference Include="Microsoft.IdentityModel.Tokens, Version=8.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.IdentityModel.Tokens.8.0.1\lib\net472\Microsoft.IdentityModel.Tokens.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.JScript" />
|
||||
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||
@@ -202,8 +196,8 @@
|
||||
<Reference Include="SQLitePCLRaw.provider.dynamic_cdecl, Version=2.1.8.2226, Culture=neutral, PublicKeyToken=b68184102cba0b3b, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\SQLitePCLRaw.provider.dynamic_cdecl.2.1.8\lib\netstandard2.0\SQLitePCLRaw.provider.dynamic_cdecl.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="SqlSugar, Version=5.1.4.162, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\SqlSugar.5.1.4.162\lib\SqlSugar.dll</HintPath>
|
||||
<Reference Include="SqlSugar, Version=5.1.4.166, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\SqlSugar.5.1.4.166\lib\SqlSugar.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Swashbuckle.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=cd1bb07a5ac7c7bc, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Swashbuckle.Core.5.6.0\lib\net40\Swashbuckle.Core.dll</HintPath>
|
||||
@@ -238,8 +232,8 @@
|
||||
<Reference Include="System.Formats.Asn1, Version=8.0.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Formats.Asn1.8.0.1\lib\net462\System.Formats.Asn1.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.IdentityModel.Tokens.Jwt, Version=7.6.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.IdentityModel.Tokens.Jwt.7.6.3\lib\net472\System.IdentityModel.Tokens.Jwt.dll</HintPath>
|
||||
<Reference Include="System.IdentityModel.Tokens.Jwt, Version=8.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.IdentityModel.Tokens.Jwt.8.0.1\lib\net472\System.IdentityModel.Tokens.Jwt.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.IO, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.IO.4.3.0\lib\net462\System.IO.dll</HintPath>
|
||||
@@ -363,6 +357,9 @@
|
||||
<Private>True</Private>
|
||||
<HintPath>..\packages\Antlr.3.5.0.2\lib\Antlr3.Runtime.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Yitter.IdGenerator, Version=1.0.14.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Yitter.IdGenerator.1.0.14\lib\netstandard2.0\Yitter.IdGenerator.dll</HintPath>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="App_Start\BundleConfig.cs" />
|
||||
@@ -401,6 +398,7 @@
|
||||
<Compile Include="Areas\HelpPage\XmlDocumentationProvider.cs" />
|
||||
<Compile Include="Controllers\CommonController.cs" />
|
||||
<Compile Include="Controllers\HomeController.cs" />
|
||||
<Compile Include="Controllers\U8\APController.cs" />
|
||||
<Compile Include="Controllers\U8\MOController.cs" />
|
||||
<Compile Include="Controllers\U8\SFCController.cs" />
|
||||
<Compile Include="Global.asax.cs">
|
||||
@@ -412,7 +410,11 @@
|
||||
<Compile Include="Unit\CommUnit.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="App_Data\AP49.json" />
|
||||
<None Include="App_Data\FC90.json" />
|
||||
<Content Include="App_Data\U8API.xml">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Areas\HelpPage\HelpPage.css" />
|
||||
<Content Include="Content\bootstrap-grid.css" />
|
||||
<Content Include="Content\bootstrap-grid.min.css" />
|
||||
|
||||
@@ -146,6 +146,10 @@
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Data.SQLite" publicKeyToken="db937bc2d44ff139" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-1.0.118.0" newVersion="1.0.118.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="log4net" publicKeyToken="669e0ddf0bb1aa2a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-2.0.17.0" newVersion="2.0.17.0" />
|
||||
</dependentAssembly>
|
||||
</assemblyBinding>
|
||||
</runtime>
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
<param name="MaxFileSize" value="20480" />
|
||||
<param name="RollingStyle" value="Date" />
|
||||
<param name="AppendToFile" value="true" />
|
||||
<param name="lockingModel" value="log4net.Appender.FileAppender+MinimalLock" />
|
||||
<layout type="log4net.Layout.PatternLayout">
|
||||
<param name="ConversionPattern" value="%date [%thread] %-5level %r - %message%newline" />
|
||||
</layout>
|
||||
|
||||
@@ -60,10 +60,10 @@
|
||||
<package id="Microsoft.Extensions.Options" version="8.0.2" targetFramework="net48" />
|
||||
<package id="Microsoft.Extensions.Options.ConfigurationExtensions" version="8.0.0" targetFramework="net48" />
|
||||
<package id="Microsoft.Extensions.Primitives" version="8.0.0" targetFramework="net48" />
|
||||
<package id="Microsoft.IdentityModel.Abstractions" version="7.6.3" targetFramework="net48" />
|
||||
<package id="Microsoft.IdentityModel.JsonWebTokens" version="7.6.3" targetFramework="net48" />
|
||||
<package id="Microsoft.IdentityModel.Logging" version="7.6.3" targetFramework="net48" />
|
||||
<package id="Microsoft.IdentityModel.Tokens" version="7.6.3" targetFramework="net48" />
|
||||
<package id="Microsoft.IdentityModel.Abstractions" version="8.0.1" targetFramework="net48" />
|
||||
<package id="Microsoft.IdentityModel.JsonWebTokens" version="8.0.1" targetFramework="net48" />
|
||||
<package id="Microsoft.IdentityModel.Logging" version="8.0.1" targetFramework="net48" />
|
||||
<package id="Microsoft.IdentityModel.Tokens" version="8.0.1" targetFramework="net48" />
|
||||
<package id="Microsoft.Web.Infrastructure" version="2.0.1" targetFramework="net48" />
|
||||
<package id="Modernizr" version="2.8.3" targetFramework="net48" />
|
||||
<package id="Newtonsoft.Json" version="13.0.3" targetFramework="net48" />
|
||||
@@ -74,7 +74,7 @@
|
||||
<package id="SQLitePCLRaw.core" version="2.1.8" targetFramework="net48" />
|
||||
<package id="SQLitePCLRaw.lib.e_sqlite3" version="2.1.8" targetFramework="net48" />
|
||||
<package id="SQLitePCLRaw.provider.dynamic_cdecl" version="2.1.8" targetFramework="net48" />
|
||||
<package id="SqlSugar" version="5.1.4.162" targetFramework="net48" />
|
||||
<package id="SqlSugar" version="5.1.4.166" targetFramework="net48" />
|
||||
<package id="Stub.System.Data.SQLite.Core.NetFramework" version="1.0.118.0" targetFramework="net48" />
|
||||
<package id="Swashbuckle" version="5.6.0" targetFramework="net48" />
|
||||
<package id="Swashbuckle.Core" version="5.6.0" targetFramework="net48" />
|
||||
@@ -87,7 +87,7 @@
|
||||
<package id="System.Data.SQLite.Linq" version="1.0.118.0" targetFramework="net48" />
|
||||
<package id="System.Diagnostics.DiagnosticSource" version="8.0.1" targetFramework="net48" />
|
||||
<package id="System.Formats.Asn1" version="8.0.1" targetFramework="net48" />
|
||||
<package id="System.IdentityModel.Tokens.Jwt" version="7.6.3" targetFramework="net48" />
|
||||
<package id="System.IdentityModel.Tokens.Jwt" version="8.0.1" targetFramework="net48" />
|
||||
<package id="System.IO" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Memory" version="4.5.5" targetFramework="net48" />
|
||||
<package id="System.Net.Http" version="4.3.4" targetFramework="net48" />
|
||||
@@ -105,4 +105,5 @@
|
||||
<package id="WebActivator" version="1.5.1" targetFramework="net48" />
|
||||
<package id="WebActivatorEx" version="2.2.0" targetFramework="net48" />
|
||||
<package id="WebGrease" version="1.6.0" targetFramework="net48" />
|
||||
<package id="Yitter.IdGenerator" version="1.0.14" targetFramework="net48" />
|
||||
</packages>
|
||||
Reference in New Issue
Block a user