采购接口功能全部完成

This commit is contained in:
qmj
2025-04-24 01:49:44 +08:00
parent cb3269ae8b
commit 46c20e2895
32 changed files with 3538 additions and 291 deletions
@@ -9,6 +9,7 @@ using System.Web.UI.WebControls;
using ADODB;
using GetComObj;
using log4net;
using Microsoft.VisualBasic.CompilerServices;
using MSXML2;
using Newtonsoft.Json.Linq;
using UFIDA.U8.Framework.Api.Common.Entity;
@@ -81,6 +82,23 @@ namespace UFIDA.U8.Framework.Api.ControlObject.Common
}
}
public static dynamic SetVBPropValue(dynamic obj, string propName, object value)
{
NewLateBinding.LateSet(obj, null, propName, new[] { value }, null, null);
return obj;
}
public static dynamic ToVoucherData(this Dictionary<string,object> dict,dynamic obj)
{
foreach (var dictKey in dict.Keys)
{
SetVBPropValue(obj, dictKey, dict[dictKey]);
}
return obj;
}
//public static void SetPropValue(this PropertyInfo prop, VoucherData obj, object value)
//{
// if (prop.PropertyType == typeof(string))
@@ -631,5 +649,181 @@ namespace UFIDA.U8.Framework.Api.ControlObject.Common
return s;
}
/// <summary>
/// 获取单据配置信息
/// </summary>
/// <param name="conn">连接对象</param>
/// <param name="cCardNum">单据类型编码</param>
/// <returns></returns>
/// <exception cref="Exception"></exception>
public static VouchersInfo GetVouchers(Connection conn,string cCardNum)
{
if (conn == null) throw new ArgumentNullException(nameof(conn));
if (cCardNum == null) throw new ArgumentNullException(nameof(cCardNum));
var rst = new Recordset();
var strSql =
$"SELECT CardNumber,BTTblName,BTQName,BWTblName,BWQName,VchListQName,VchTblPrimarykeyNames,ReceiptNOFieldName,cDefWhere,cHeadBusObjectId FROM dbo.vouchers WHERE CardNumber='{cCardNum}'";
rst.Open(strSql, conn);
if (rst.EOF || rst.BOF)
{
throw new Exception($"未查询到单据类型编码{cCardNum}的配置信息");
}
rst.MoveFirst();
var res = new VouchersInfo
{
cDefWhere = string.IsNullOrWhiteSpace($"{rst.Fields["cDefWhere"].Value}") ? "1=1" : $"{rst.Fields["cDefWhere"].Value}",
cBTQName = $"{rst.Fields["BTQName"].Value}",
cBTTblName = $"{rst.Fields["BTTblName"].Value}",
cBWQName = $"{rst.Fields["BWQName"].Value}",
cBWTblName = $"{rst.Fields["BWTblName"].Value}",
cVchTblPrimarykeyNames = $"{rst.Fields["VchTblPrimarykeyNames"].Value}",
cVchListQName = $"{rst.Fields["VchListQName"].Value}",
cCardNumber = $"{rst.Fields["CardNumber"].Value}",
cHeadBusObjectId = $"{rst.Fields["cHeadBusObjectId"].Value}",
cReceiptNOFieldName = $"{rst.Fields["ReceiptNOFieldName"].Value}"
};
var codeName = $"{rst.Fields["ReceiptNOFieldName"].Value}";
if (codeName.Contains("{##}"))
{
codeName = codeName.Split('{', '#', '#', '}')[0];
}
res.cCodeFieldName = codeName;
res.voucherIdFieldName= $"{rst.Fields["VchTblPrimarykeyNames"].Value}";
rst.Close();
return res;
}
/// <summary>
/// 获取单据编号
/// </summary>
/// <param name="conn">连接对象</param>
/// <param name="voucherId">单据Id</param>
/// <param name="vouchers">单据配置信息</param>
/// <returns></returns>
/// <exception cref="ArgumentNullException"></exception>
public static string GetVoucherCode(Connection conn,object voucherId, VouchersInfo vouchers)
{
if (conn == null) throw new ArgumentNullException(nameof(conn));
if (voucherId == null) throw new ArgumentNullException(nameof(voucherId));
if (vouchers == null) throw new ArgumentNullException(nameof(vouchers));
var tableName = vouchers.cBTTblName;
var fieldName = vouchers.voucherIdFieldName;
var codeName = vouchers.cCodeFieldName;
var cDefWhere = vouchers.cDefWhere;
if (string.IsNullOrWhiteSpace(cDefWhere))
{
cDefWhere = "1=1";
}
var strSql = $"SELECT {codeName} AS cCode FROM {tableName} WHERE {cDefWhere} AND {fieldName}='{voucherId}'";
var rst = new Recordset();
rst.Open(strSql, conn);
if (rst.BOF || rst.EOF)
{
throw new Exception($"没有查询到ID为{voucherId}的单据");
}
var cCode = $"{rst.Fields["cCode"].Value}";
return cCode;
}
/// <summary>
/// 获取单据编号
/// </summary>
/// <param name="conn">连接对象</param>
/// <param name="cVoucherCode">单据编号</param>
/// <param name="vouchers">单据配置信息</param>
/// <returns></returns>
/// <exception cref="ArgumentNullException"></exception>
public static object GetVoucherId(Connection conn, string cVoucherCode, VouchersInfo vouchers)
{
if (conn == null) throw new ArgumentNullException(nameof(conn));
if (cVoucherCode == null) throw new ArgumentNullException(nameof(cVoucherCode));
if (vouchers == null) throw new ArgumentNullException(nameof(vouchers));
var tableName = vouchers.cBTTblName;
var fieldName = vouchers.voucherIdFieldName;
var codeName = vouchers.cCodeFieldName;
var cDefWhere = vouchers.cDefWhere;
if (string.IsNullOrWhiteSpace(cDefWhere))
{
cDefWhere = "1=1";
}
var strSql = $"SELECT {fieldName} AS ID FROM {tableName} WHERE {cDefWhere} AND {codeName}='{cVoucherCode}'";
logInfo.Debug($"查询ID:{strSql}");
var rst = new Recordset();
rst.Open(strSql, conn);
if (rst.BOF || rst.EOF)
{
throw new Exception($"没有查询到单据编号为{cVoucherCode}的单据");
}
var voucherId = rst.Fields["ID"].Value;
return voucherId;
}
public static string GetVoucherWhereSqlByCode(VouchersInfo vouchers,string cVoucherCode)
{
var tableName = vouchers.cBTTblName;
var fieldName = vouchers.voucherIdFieldName;
var codeName = vouchers.cCodeFieldName;
var cDefWhere = vouchers.cDefWhere;
return $"{cDefWhere} AND {codeName}='{cVoucherCode}'";
}
public static string GetVoucherWhereSqlById(VouchersInfo vouchers, object voucherId)
{
var tableName = vouchers.cBTTblName;
var fieldName = vouchers.voucherIdFieldName;
var codeName = vouchers.cCodeFieldName;
var cDefWhere = vouchers.cDefWhere;
return $"{cDefWhere} AND {fieldName}='{voucherId}'";
}
public static string GetPUVoucherWhereSqlByCode(VouchersInfo vouchers, string cVoucherCode)
{
var tableName = vouchers.cBTQName;
var fieldName = vouchers.voucherIdFieldName;
var codeName = vouchers.cCodeFieldName;
var cDefWhere = vouchers.cDefWhere;
return $"{cDefWhere} AND {tableName}.{codeName}='{cVoucherCode}'";
}
public static string GetPUVoucherWhereSqlById(VouchersInfo vouchers, object voucherId)
{
var tableName = vouchers.cBTQName;
var fieldName = vouchers.voucherIdFieldName;
var codeName = vouchers.cCodeFieldName;
var cDefWhere = vouchers.cDefWhere;
return $"{cDefWhere} AND {tableName}.{fieldName}='{voucherId}'";
}
}
}