diff --git a/UFIDA.U8.Framework.Api.ControlObject/AP/UFAPBO.cs b/UFIDA.U8.Framework.Api.ControlObject/AP/UFAPBO.cs
index b811bbc..4075ec1 100644
--- a/UFIDA.U8.Framework.Api.ControlObject/AP/UFAPBO.cs
+++ b/UFIDA.U8.Framework.Api.ControlObject/AP/UFAPBO.cs
@@ -148,106 +148,149 @@ namespace UFIDA.U8.Framework.Api.ControlObject.AP
var domHead = dictionary.ToDocument2();
+ #region 弃用
- if (cSubId == "AR")
+
+
+
+ //if (cSubId == "AR")
+ //{
+ // //var pub = "NoteManageAR.clsPub".GetComObject();
+
+ // //pub.main(m_Login);
+
+ // //var ar = "NoteManageAR.Voucher".GetComObject();
+
+ // //ar.Init(m_Login, pub.RepSys, pub.RepManager);
+
+ // //var da = new VoucherDataClass();
+
+ // //var apar = new APARHelper(da);
+
+
+
+ // //ar.m_bStartFlag = false;
+ // //ar.bLastYearBill = false;
+ // //ar.m_strCardNum = "RP02";
+ // //ar.m_strVoucherType = "50";
+ // //ar.m_strVoucherDirect = pub.strNoteDirect;
+
+
+ // ////ar.bUpdateiAmount = true;
+ // ////ar.NotExec = true;
+ // ////ar.NotExec = true;
+ // //ar.objPub = pub;
+
+
+
+ // //apar.SetValue(dictionary);
+
+ // //ar.m_strVoucherID = da.CVouchId;
+ // //ar.m_VoucherHead = domHead;
+ // //ar.OneVoucherData = da;
+
+ // //ar.bNeedBillClosed = true;
+
+ // //da.cVouchTypeName = "银行承兑汇票";
+ // //da.cPayBillBank = "华夏银行股份有限公司深圳分行营业部";
+
+ // var msg = "";
+
+ // //logInfo.Debug($"da:{da.ToJson()}");
+
+ // //if (!ar.VoucherHeadCheck(da, true, ref msg))
+ // //{
+ // // throw new Exception(msg);
+ // //}
+
+ // //msg = "";
+
+ // //if (!ar.NoteCheck(da, ref msg))
+ // //{
+ // // throw new Exception(msg);
+ // //}
+ // //msg = "";
+
+ // //if (!ar.NoteSave(da, ref msg))
+ // //{
+ // // throw new Exception(msg);
+ // //}
+
+ // ////ar.re
+
+
+ // ////var bo = "UFAPBO.clsApNote".GetComObject();
+ // //var apPub = "NoteManageAR.PZ_Proc".GetComObject();
+
+ // //apPub.objPub = pub;
+
+ // //var aa=apPub.ProcSign("9A");
+
+ // //var bb = pub.cNoteCancelNo;
+
+ // //var m_conn = new Connection();
+
+ // //m_conn.Open(m_Login.UfDbName);
+
+ // //bo.Init(m_Login, m_conn);
+
+ // //var errorMessage = "";
+
+ // //var saveFlag = bo.Sign($"", ref errorMessage);
+
+ // //if (!saveFlag)
+ // // throw new Exception(errorMessage);
+
+ // return new BaseResult { bSuccess = true, message = "保存成功", result = "保存成功" };
+ //}
+ #endregion
+
+ var ap = "UFAPBO.clsAccount_AP".GetComObject();
+
+ var bo = "UFAPBO.clsApNote".GetComObject();
+
+ bool initResult = ap.Init(m_Login, cSubId);
+
+ if (!initResult)
{
- //var pub = "NoteManageAR.clsPub".GetComObject();
+ logInfo.Debug($"1-----初始化参数失败,正在重新初始化");
- //pub.main(m_Login);
+ initResult = ap.Init(m_Login);
- //var ar = "NoteManageAR.Voucher".GetComObject();
-
- //ar.Init(m_Login, pub.RepSys, pub.RepManager);
-
- //var da = new VoucherDataClass();
-
- //var apar = new APARHelper(da);
-
-
-
- //ar.m_bStartFlag = false;
- //ar.bLastYearBill = false;
- //ar.m_strCardNum = "RP02";
- //ar.m_strVoucherType = "50";
- //ar.m_strVoucherDirect = pub.strNoteDirect;
-
-
- ////ar.bUpdateiAmount = true;
- ////ar.NotExec = true;
- ////ar.NotExec = true;
- //ar.objPub = pub;
-
-
-
- //apar.SetValue(dictionary);
-
- //ar.m_strVoucherID = da.CVouchId;
- //ar.m_VoucherHead = domHead;
- //ar.OneVoucherData = da;
-
- //ar.bNeedBillClosed = true;
-
- //da.cVouchTypeName = "银行承兑汇票";
- //da.cPayBillBank = "华夏银行股份有限公司深圳分行营业部";
-
- var msg = "";
-
- //logInfo.Debug($"da:{da.ToJson()}");
-
- //if (!ar.VoucherHeadCheck(da, true, ref msg))
- //{
- // throw new Exception(msg);
- //}
-
- //msg = "";
-
- //if (!ar.NoteCheck(da, ref msg))
- //{
- // throw new Exception(msg);
- //}
- //msg = "";
-
- //if (!ar.NoteSave(da, ref msg))
- //{
- // throw new Exception(msg);
- //}
-
- ////ar.re
-
-
- ////var bo = "UFAPBO.clsApNote".GetComObject();
- //var apPub = "NoteManageAR.PZ_Proc".GetComObject();
-
- //apPub.objPub = pub;
-
- //var aa=apPub.ProcSign("9A");
-
- //var bb = pub.cNoteCancelNo;
-
- //var m_conn = new Connection();
-
- //m_conn.Open(m_Login.UfDbName);
-
- //bo.Init(m_Login, m_conn);
-
- //var errorMessage = "";
-
- //var saveFlag = bo.Sign($"", ref errorMessage);
-
- //if (!saveFlag)
- // throw new Exception(errorMessage);
-
- return new BaseResult { bSuccess = true, message = "保存成功", result = "保存成功" };
+ if (!initResult)
+ {
+ logInfo.Debug($"2-----初始化参数失败");
+ }
}
+ var m_conn = new Connection();
+ m_conn.Open(m_Login.UfDbName);
+ var boResult = false;
- //var ap= "UFAPBO.clsAccount_AP".GetComObject();
+ if (initResult)
+ {
+ bool b = ap.InitSubOption2(cSubId);
- //var bo = "UFAPBO.clsApNote".GetComObject();
+ if (!b)
+ {
+ logInfo.Debug($"初始化参数2失败");
+ }
+
+ logInfo.Debug($"调用初始化方法1");
+
+ boResult = bo.Init(m_Login, m_conn, ap);
+ }
+ else
+ {
+ logInfo.Debug($"调用初始化方法2");
+
+ boResult = bo.Init(m_Login, m_conn);
+ }
+
+
- //var a=ap.Init(m_Login, cSubId);
//logInfo.Debug($"ap.Init:{a}");
//var b=ap.InitSubOption2(cSubId);
@@ -255,17 +298,15 @@ namespace UFIDA.U8.Framework.Api.ControlObject.AP
//var c=ap.ARAPStart(cSubId);
//logInfo.Debug($"ap.ARAPStart:{c}");
- //var m_conn = new Connection();
-
- //m_conn.Open(m_Login.UfDbName);
+
//var d=bo.Init(m_Login);
//logInfo.Debug($"bo.Init:{d}");
- //var errorMessage = "";
+ var errorMessage = "";
- //var saveFlag = bo.SaveVouch(domHead, ref errorMessage);
+ var saveFlag = bo.SaveVouch(domHead, ref errorMessage);
//logInfo.Debug($"bo.SaveVouch:{errorMessage}");
diff --git a/UFIDA.U8.Framework.Api.ControlObject/ST/USERPCO.cs b/UFIDA.U8.Framework.Api.ControlObject/ST/USERPCO.cs
index db24b95..d8c236d 100644
--- a/UFIDA.U8.Framework.Api.ControlObject/ST/USERPCO.cs
+++ b/UFIDA.U8.Framework.Api.ControlObject/ST/USERPCO.cs
@@ -23,8 +23,25 @@ namespace UFIDA.U8.Framework.Api.ControlObject.ST
{
protected readonly ILog logInfo = LogManager.GetLogger("logInfo");
-
- public async Task> Insert(BaseLogin baseLogin, Dictionary dictionary,string cCardNum, string sVouchType,bool bGetCode=false,string codeKey="",bool bCheck=true,bool bBeforCheckStock=true,bool bIsRedVouch=false,string sAddedState="", bool bReMote=false,bool bAudit=false,bool bPrintDom=false)
+ ///
+ /// 新增单据
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public async Task> Insert(BaseLogin baseLogin, Dictionary dictionary, string cCardNum, string sVouchType, bool bGetCode = false, string codeKey = "", bool bCheck = true, bool bBeforCheckStock = true, bool bIsRedVouch = false, string sAddedState = "", bool bReMote = false, bool bAudit = false, bool bPrintDom = false)
{
try
{
@@ -101,7 +118,7 @@ namespace UFIDA.U8.Framework.Api.ControlObject.ST
logInfo.Debug("填充表体DOM...");
domBody = dictionarys.ToDocument2(domBody);
-
+
IXMLDOMDocument2 domMsg = new DOMDocument();
errorMsg = "";
baseLogin.Connection.BeginTrans();
@@ -140,7 +157,7 @@ namespace UFIDA.U8.Framework.Api.ControlObject.ST
{
logInfo.Debug($"操作完成,操作结果:失败!------[{vouchId}]------[{errorMsg}]------[{domMsg.xml}]");
}
-
+
}
catch (Exception)
{
@@ -155,7 +172,7 @@ namespace UFIDA.U8.Framework.Api.ControlObject.ST
{
errorMsg = "";
- if (!co.Verify(sVouchType, vouchId,ref errorMsg, baseLogin.Connection))
+ if (!co.Verify(sVouchType, vouchId, ref errorMsg, baseLogin.Connection, null, ref domMsg))
{
baseLogin.Connection.RollbackTrans();
@@ -169,8 +186,8 @@ namespace UFIDA.U8.Framework.Api.ControlObject.ST
if (!res.bSuccess)
{
baseLogin.Connection.RollbackTrans();
-
- if(!string.IsNullOrWhiteSpace(errorMsg))
+
+ if (!string.IsNullOrWhiteSpace(errorMsg))
throw new Exception(errorMsg);
throw new Exception(domMsg.xml);
@@ -220,8 +237,8 @@ namespace UFIDA.U8.Framework.Api.ControlObject.ST
}
res.message = "新增成功";
- res.result =$"{vouchId}" ;
-
+ res.result = $"{vouchId}";
+
return res;
@@ -235,12 +252,24 @@ namespace UFIDA.U8.Framework.Api.ControlObject.ST
return new BaseResult { bSuccess = false, message = "新增失败", result = ex.Message };
}
-
+
}
- public async Task> Update(BaseLogin baseLogin, Dictionary dictionary, string sCardNum , string sVouchType,
- bool bCheck = true, bool bBeforCheckStock = true, bool bIsRedVouch = false, string sAddedState = "",
- bool bUpdateNeedEas = true)
+ ///
+ /// 修改单据
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public async Task> Update(BaseLogin baseLogin, Dictionary dictionary, string sCardNum, string sVouchType, bool bCheck = true, bool bBeforCheckStock = true, bool bIsRedVouch = false, string sAddedState = "", bool bUpdateNeedEas = true)
{
try
{
@@ -267,12 +296,12 @@ namespace UFIDA.U8.Framework.Api.ControlObject.ST
var bodys = dictionary["body"] as List> ?? $"{dictionary["body"]}".ToObject>>();
- if (bodys==null || bodys.Count<=0)
+ if (bodys == null || bodys.Count <= 0)
{
await Task.Delay(1);
throw new Exception("无法获取表体数据");
}
-
+
//if (!(bodys is List> dictionarys) || dictionarys.Count <= 0)
//{
@@ -282,7 +311,7 @@ namespace UFIDA.U8.Framework.Api.ControlObject.ST
domBody = bodys.ToDocument2(domBody);
-
+
//IXMLDOMDocument2 domMsg = new DOMDocument();
errorMsg = "";
@@ -326,5 +355,1061 @@ namespace UFIDA.U8.Framework.Api.ControlObject.ST
return new BaseResult { bSuccess = false, message = "新增失败", result = ex.Message };
}
}
+
+ ///
+ /// 批量审核单据(单号)
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public async Task>> Verify(BaseLogin baseLogin, string sCardNum, string sVouchType, List cCodes, bool bCheck = true, bool bBeforCheckStock = true, bool bList = false)
+ {
+ var co = "USERPCO.VoucherCO".GetComObject();
+
+ var errorMsg = "";
+
+ if (!co.IniLogin(baseLogin._vbLogin, ref errorMsg))
+ {
+ await Task.Delay(1);
+ throw new Exception(errorMsg);
+ }
+
+ var conn = new Connection();
+
+ conn.Open(baseLogin.UfDbName);
+
+ var rst = new Recordset();
+ rst.Open($"SELECT CardNumber,BTTblName,BTQName,BWTblName,BWQName,VchListQName,VchTblPrimarykeyNames,ReceiptNOFieldName FROM dbo.vouchers WHERE CardNumber='{sCardNum}'", conn);
+
+ if (rst.BOF || rst.EOF)
+ throw new Exception("未能获取到单据的配置信息!");
+
+ rst.MoveFirst();
+ var tableName = $"{rst.Fields["BTTblName"].Value}";
+ var fieldName = $"{rst.Fields["VchTblPrimarykeyNames"].Value}";
+ var codeName = $"{rst.Fields["ReceiptNOFieldName"].Value}";
+ if (codeName.Contains("{##}"))
+ {
+ codeName = codeName.Split('{', '#', '#', '}')[0];
+ }
+
+ rst.Close();
+
+ var resList = new List>();
+
+ foreach (var cCode in cCodes)
+ {
+ var strSql = $"SELECT {fieldName} AS ID FROM {tableName} WHERE {codeName}='{cCode}'";
+
+ rst.Open(strSql, conn);
+
+ if (rst.BOF || rst.EOF)
+ {
+ var res = new BaseResult
+ {
+ bSuccess = false,
+ message = "审核失败",
+ result = $"没有查询到单号为{cCode}的单据!",
+ voucherId = "",
+ voucherCode = cCode
+ };
+
+ resList.Add(res);
+ continue;
+ }
+
+ rst.MoveFirst();
+ object curId = rst.Fields["ID"].Value;
+
+ var verifyResult = await Verify(co, conn, sVouchType, cCode, curId, bCheck, bBeforCheckStock, bList);
+
+ resList.Add(verifyResult);
+ }
+
+ return resList;
+ }
+
+ ///
+ /// 批量审核单据(ID)
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public async Task>> Verify(BaseLogin baseLogin, string sCardNum, string sVouchType, List vouchIds, bool bCheck = true, bool bBeforCheckStock = true, bool bList = false)
+ {
+ var co = "USERPCO.VoucherCO".GetComObject();
+
+ var errorMsg = "";
+
+ if (!co.IniLogin(baseLogin._vbLogin, ref errorMsg))
+ {
+ await Task.Delay(1);
+ throw new Exception(errorMsg);
+ }
+
+ var conn = new Connection();
+
+ conn.Open(baseLogin.UfDbName);
+
+ var rst = new Recordset();
+ rst.Open($"SELECT CardNumber,BTTblName,BTQName,BWTblName,BWQName,VchListQName,VchTblPrimarykeyNames,ReceiptNOFieldName FROM dbo.vouchers WHERE CardNumber='{sCardNum}'", conn);
+
+ if (rst.BOF || rst.EOF)
+ throw new Exception("未能获取到单据的配置信息!");
+
+ rst.MoveFirst();
+ var tableName = $"{rst.Fields["BTTblName"].Value}";
+ var fieldName = $"{rst.Fields["VchTblPrimarykeyNames"].Value}";
+ var codeName = $"{rst.Fields["ReceiptNOFieldName"].Value}";
+ if (codeName.Contains("{##}"))
+ {
+ codeName = codeName.Split('{', '#', '#', '}')[0];
+ }
+
+ rst.Close();
+
+ var resList = new List>();
+
+ foreach (var vouchId in vouchIds)
+ {
+ var strSql = $"SELECT {codeName} AS cCode FROM {tableName} WHERE {fieldName}='{vouchId}'";
+
+ rst.Open(strSql, conn);
+
+ if (rst.BOF || rst.EOF)
+ {
+ var res = new BaseResult
+ {
+ bSuccess = false,
+ message = "审核失败",
+ result = $"没有查询到ID为{vouchId}的单据!",
+ voucherId = $"{vouchId}",
+ voucherCode = ""
+ };
+
+ resList.Add(res);
+ continue;
+ }
+
+ rst.MoveFirst();
+ var cCode = $"{rst.Fields["cCode"].Value}";
+
+ var verifyResult = await Verify(co, conn, sVouchType, cCode, vouchId, bCheck, bBeforCheckStock, bList);
+
+ resList.Add(verifyResult);
+ }
+
+ return resList;
+ }
+
+ ///
+ /// 审核单据(单号)
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public async Task> Verify(BaseLogin baseLogin, string sCardNum, string sVouchType, string cCode, bool bCheck = true, bool bBeforCheckStock = true, bool bList = false)
+ {
+ var co = "USERPCO.VoucherCO".GetComObject();
+
+ var errorMsg = "";
+
+ if (!co.IniLogin(baseLogin._vbLogin, ref errorMsg))
+ {
+ await Task.Delay(1);
+ throw new Exception(errorMsg);
+ }
+
+ var conn = new Connection();
+
+ conn.Open(baseLogin.UfDbName);
+
+ var rst = new Recordset();
+ rst.Open($"SELECT CardNumber,BTTblName,BTQName,BWTblName,BWQName,VchListQName,VchTblPrimarykeyNames,ReceiptNOFieldName FROM dbo.vouchers WHERE CardNumber='{sCardNum}'", conn);
+
+ if (rst.BOF || rst.EOF)
+ throw new Exception("未能获取到单据的配置信息!");
+
+ rst.MoveFirst();
+ var tableName = $"{rst.Fields["BTTblName"].Value}";
+ var fieldName = $"{rst.Fields["VchTblPrimarykeyNames"].Value}";
+ var codeName = $"{rst.Fields["ReceiptNOFieldName"].Value}";
+ if (codeName.Contains("{##}"))
+ {
+ codeName = codeName.Split('{', '#', '#', '}')[0];
+ }
+
+ rst.Close();
+
+ var strSql = $"SELECT {fieldName} AS ID FROM {tableName} WHERE {codeName}='{cCode}'";
+
+ rst.Open(strSql, conn);
+
+ if (rst.BOF || rst.EOF)
+ {
+ var res = new BaseResult
+ {
+ bSuccess = false,
+ message = "审核失败",
+ result = $"没有查询到单号为{cCode}的单据!",
+ voucherId = "",
+ voucherCode = cCode
+ };
+ }
+
+ rst.MoveFirst();
+ object curId = rst.Fields["ID"].Value;
+
+ var verifyResult = await Verify(co, conn, sVouchType, cCode, curId, bCheck, bBeforCheckStock, bList);
+
+ return verifyResult;
+ }
+
+ ///
+ /// 审核单据(ID)
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public async Task> Verify(BaseLogin baseLogin, string sCardNum, string sVouchType, long vouchId, bool bCheck = true, bool bBeforCheckStock = true, bool bList = false)
+ {
+ var co = "USERPCO.VoucherCO".GetComObject();
+
+ var errorMsg = "";
+
+ if (!co.IniLogin(baseLogin._vbLogin, ref errorMsg))
+ {
+ await Task.Delay(1);
+ throw new Exception(errorMsg);
+ }
+
+ var conn = new Connection();
+
+ conn.Open(baseLogin.UfDbName);
+
+ var rst = new Recordset();
+ rst.Open($"SELECT CardNumber,BTTblName,BTQName,BWTblName,BWQName,VchListQName,VchTblPrimarykeyNames,ReceiptNOFieldName FROM dbo.vouchers WHERE CardNumber='{sCardNum}'", conn);
+
+ if (rst.BOF || rst.EOF)
+ throw new Exception("未能获取到单据的配置信息!");
+
+ rst.MoveFirst();
+ var tableName = $"{rst.Fields["BTTblName"].Value}";
+ var fieldName = $"{rst.Fields["VchTblPrimarykeyNames"].Value}";
+ var codeName = $"{rst.Fields["ReceiptNOFieldName"].Value}";
+ if (codeName.Contains("{##}"))
+ {
+ codeName = codeName.Split('{', '#', '#', '}')[0];
+ }
+
+ rst.Close();
+
+ var strSql = $"SELECT {codeName} AS cCode FROM {tableName} WHERE {fieldName}='{vouchId}'";
+
+ rst.Open(strSql, conn);
+
+ if (rst.BOF || rst.EOF)
+ {
+ var res = new BaseResult
+ {
+ bSuccess = false,
+ message = "审核失败",
+ result = $"没有查询到ID为{vouchId}的单据!",
+ voucherId = $"{vouchId}",
+ voucherCode = ""
+ };
+
+ }
+
+ rst.MoveFirst();
+ var cCode = $"{rst.Fields["cCode"].Value}";
+
+ var verifyResult = await Verify(co, conn, sVouchType, cCode, vouchId, bCheck, bBeforCheckStock, bList);
+
+ return verifyResult;
+ }
+
+ ///
+ /// 审核单据
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public async Task> Verify(dynamic voucherCO, Connection conn, string sVouchType, string cCode, object vouchId, bool bCheck = true, bool bBeforCheckStock = true, bool bList = false)
+ {
+ var errMsg = "";
+ IXMLDOMDocument2 domMsg = new DOMDocument();
+
+ var res = new BaseResult
+ {
+ voucherCode = cCode,
+ voucherId = $"{vouchId}"
+ };
+
+ if (bList)
+ {
+ await Task.Delay(1);
+ }
+
+ conn.BeginTrans();
+
+ res.bSuccess = voucherCO.Verify(sVouchType, vouchId, ref errMsg, conn, null, ref domMsg, bCheck, bBeforCheckStock, bList);
+
+ if (res.bSuccess)
+ {
+ conn.CommitTrans();
+ res.message = "审核成功";
+ res.result = res.voucherId;
+
+ }
+ else
+ {
+ conn.RollbackTrans();
+ res.message = "审核失败";
+ res.result = string.IsNullOrWhiteSpace(errMsg) ? domMsg.xml : errMsg;
+ }
+
+ return res;
+ }
+
+ ///
+ /// 批量弃审单据(单号)
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public async Task>> UnVerify(BaseLogin baseLogin, string sCardNum, string sVouchType, List cCodes, bool bCheck = true, bool bBeforCheckStock = true, bool bList = false)
+ {
+ var co = "USERPCO.VoucherCO".GetComObject();
+
+ var errorMsg = "";
+
+ if (!co.IniLogin(baseLogin._vbLogin, ref errorMsg))
+ {
+ await Task.Delay(1);
+ throw new Exception(errorMsg);
+ }
+
+ var conn = new Connection();
+
+ conn.Open(baseLogin.UfDbName);
+
+ var rst = new Recordset();
+ rst.Open($"SELECT CardNumber,BTTblName,BTQName,BWTblName,BWQName,VchListQName,VchTblPrimarykeyNames,ReceiptNOFieldName FROM dbo.vouchers WHERE CardNumber='{sCardNum}'", conn);
+
+ if (rst.BOF || rst.EOF)
+ throw new Exception("未能获取到单据的配置信息!");
+
+ rst.MoveFirst();
+ var tableName = $"{rst.Fields["BTTblName"].Value}";
+ var fieldName = $"{rst.Fields["VchTblPrimarykeyNames"].Value}";
+ var codeName = $"{rst.Fields["ReceiptNOFieldName"].Value}";
+ if (codeName.Contains("{##}"))
+ {
+ codeName = codeName.Split('{', '#', '#', '}')[0];
+ }
+
+ rst.Close();
+
+ var resList = new List>();
+
+ foreach (var cCode in cCodes)
+ {
+ var strSql = $"SELECT {fieldName} AS ID FROM {tableName} WHERE {codeName}='{cCode}'";
+
+ rst.Open(strSql, conn);
+
+ if (rst.BOF || rst.EOF)
+ {
+ var res = new BaseResult
+ {
+ bSuccess = false,
+ message = "弃审失败",
+ result = $"没有查询到单号为{cCode}的单据!",
+ voucherId = "",
+ voucherCode = cCode
+ };
+
+ resList.Add(res);
+ continue;
+ }
+
+ rst.MoveFirst();
+ object curId = rst.Fields["ID"].Value;
+
+ var verifyResult = await UnVerify(co, conn, sVouchType, cCode, curId, bCheck, bBeforCheckStock, bList);
+
+ resList.Add(verifyResult);
+ }
+
+ return resList;
+ }
+
+ ///
+ /// 批量弃审单据(ID)
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public async Task>> UnVerify(BaseLogin baseLogin, string sCardNum, string sVouchType, List vouchIds, bool bCheck = true, bool bBeforCheckStock = true, bool bList = false)
+ {
+ var co = "USERPCO.VoucherCO".GetComObject();
+
+ var errorMsg = "";
+
+ if (!co.IniLogin(baseLogin._vbLogin, ref errorMsg))
+ {
+ await Task.Delay(1);
+ throw new Exception(errorMsg);
+ }
+
+ var conn = new Connection();
+
+ conn.Open(baseLogin.UfDbName);
+
+ var rst = new Recordset();
+ rst.Open($"SELECT CardNumber,BTTblName,BTQName,BWTblName,BWQName,VchListQName,VchTblPrimarykeyNames,ReceiptNOFieldName FROM dbo.vouchers WHERE CardNumber='{sCardNum}'", conn);
+
+ if (rst.BOF || rst.EOF)
+ throw new Exception("未能获取到单据的配置信息!");
+
+ rst.MoveFirst();
+ var tableName = $"{rst.Fields["BTTblName"].Value}";
+ var fieldName = $"{rst.Fields["VchTblPrimarykeyNames"].Value}";
+ var codeName = $"{rst.Fields["ReceiptNOFieldName"].Value}";
+ if (codeName.Contains("{##}"))
+ {
+ codeName = codeName.Split('{', '#', '#', '}')[0];
+ }
+
+ rst.Close();
+
+ var resList = new List>();
+
+ foreach (var vouchId in vouchIds)
+ {
+ var strSql = $"SELECT {codeName} AS cCode FROM {tableName} WHERE {fieldName}='{vouchId}'";
+
+ rst.Open(strSql, conn);
+
+ if (rst.BOF || rst.EOF)
+ {
+ var res = new BaseResult
+ {
+ bSuccess = false,
+ message = "弃审失败",
+ result = $"没有查询到ID为{vouchId}的单据!",
+ voucherId = $"{vouchId}",
+ voucherCode = ""
+ };
+
+ resList.Add(res);
+ continue;
+ }
+
+ rst.MoveFirst();
+ var cCode = $"{rst.Fields["cCode"].Value}";
+
+ var verifyResult = await UnVerify(co, conn, sVouchType, cCode, vouchId, bCheck, bBeforCheckStock, bList);
+
+ resList.Add(verifyResult);
+ }
+
+ return resList;
+ }
+
+ ///
+ /// 弃审单据(单号)
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public async Task> UnVerify(BaseLogin baseLogin, string sCardNum, string sVouchType, string cCode, bool bCheck = true, bool bBeforCheckStock = true, bool bList = false)
+ {
+ var co = "USERPCO.VoucherCO".GetComObject();
+
+ var errorMsg = "";
+
+ if (!co.IniLogin(baseLogin._vbLogin, ref errorMsg))
+ {
+ await Task.Delay(1);
+ throw new Exception(errorMsg);
+ }
+
+ var conn = new Connection();
+
+ conn.Open(baseLogin.UfDbName);
+
+ var rst = new Recordset();
+ rst.Open($"SELECT CardNumber,BTTblName,BTQName,BWTblName,BWQName,VchListQName,VchTblPrimarykeyNames,ReceiptNOFieldName FROM dbo.vouchers WHERE CardNumber='{sCardNum}'", conn);
+
+ if (rst.BOF || rst.EOF)
+ throw new Exception("未能获取到单据的配置信息!");
+
+ rst.MoveFirst();
+ var tableName = $"{rst.Fields["BTTblName"].Value}";
+ var fieldName = $"{rst.Fields["VchTblPrimarykeyNames"].Value}";
+ var codeName = $"{rst.Fields["ReceiptNOFieldName"].Value}";
+ if (codeName.Contains("{##}"))
+ {
+ codeName = codeName.Split('{', '#', '#', '}')[0];
+ }
+
+ rst.Close();
+
+ var strSql = $"SELECT {fieldName} AS ID FROM {tableName} WHERE {codeName}='{cCode}'";
+
+ rst.Open(strSql, conn);
+
+ if (rst.BOF || rst.EOF)
+ {
+ var res = new BaseResult
+ {
+ bSuccess = false,
+ message = "弃审失败",
+ result = $"没有查询到单号为{cCode}的单据!",
+ voucherId = "",
+ voucherCode = cCode
+ };
+ }
+
+ rst.MoveFirst();
+ object curId = rst.Fields["ID"].Value;
+
+ var verifyResult = await UnVerify(co, conn, sVouchType, cCode, curId, bCheck, bBeforCheckStock, bList);
+
+ return verifyResult;
+ }
+
+ ///
+ /// 弃审单据(ID)
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public async Task> UnVerify(BaseLogin baseLogin, string sCardNum, string sVouchType, long vouchId, bool bCheck = true, bool bBeforCheckStock = true, bool bList = false)
+ {
+ var co = "USERPCO.VoucherCO".GetComObject();
+
+ var errorMsg = "";
+
+ if (!co.IniLogin(baseLogin._vbLogin, ref errorMsg))
+ {
+ await Task.Delay(1);
+ throw new Exception(errorMsg);
+ }
+
+ var conn = new Connection();
+
+ conn.Open(baseLogin.UfDbName);
+
+ var rst = new Recordset();
+ rst.Open($"SELECT CardNumber,BTTblName,BTQName,BWTblName,BWQName,VchListQName,VchTblPrimarykeyNames,ReceiptNOFieldName FROM dbo.vouchers WHERE CardNumber='{sCardNum}'", conn);
+
+ if (rst.BOF || rst.EOF)
+ throw new Exception("未能获取到单据的配置信息!");
+
+ rst.MoveFirst();
+ var tableName = $"{rst.Fields["BTTblName"].Value}";
+ var fieldName = $"{rst.Fields["VchTblPrimarykeyNames"].Value}";
+ var codeName = $"{rst.Fields["ReceiptNOFieldName"].Value}";
+ if (codeName.Contains("{##}"))
+ {
+ codeName = codeName.Split('{', '#', '#', '}')[0];
+ }
+
+ rst.Close();
+
+ var strSql = $"SELECT {codeName} AS cCode FROM {tableName} WHERE {fieldName}='{vouchId}'";
+
+ rst.Open(strSql, conn);
+
+ if (rst.BOF || rst.EOF)
+ {
+ var res = new BaseResult
+ {
+ bSuccess = false,
+ message = "弃审失败",
+ result = $"没有查询到ID为{vouchId}的单据!",
+ voucherId = $"{vouchId}",
+ voucherCode = ""
+ };
+
+ }
+
+ rst.MoveFirst();
+ var cCode = $"{rst.Fields["cCode"].Value}";
+
+ var verifyResult = await UnVerify(co, conn, sVouchType, cCode, vouchId, bCheck, bBeforCheckStock, bList);
+
+ return verifyResult;
+ }
+
+ ///
+ /// 弃审单据
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public async Task> UnVerify(dynamic voucherCO, Connection conn, string sVouchType, string cCode, object vouchId, bool bCheck = true, bool bBeforCheckStock = true, bool bList = false)
+ {
+ var errMsg = "";
+ IXMLDOMDocument2 domMsg = new DOMDocument();
+
+ var res = new BaseResult
+ {
+ voucherCode = cCode,
+ voucherId = $"{vouchId}"
+ };
+
+ if (bList)
+ {
+ await Task.Delay(1);
+ }
+
+ conn.BeginTrans();
+
+ try
+ {
+ res.bSuccess = voucherCO.UnVerify(sVouchType, vouchId, ref errMsg, conn, null, ref domMsg, bCheck, bBeforCheckStock, bList);
+ }
+ catch
+ {
+ conn.RollbackTrans();
+ throw;
+ }
+
+
+ if (res.bSuccess)
+ {
+ conn.CommitTrans();
+ res.message = "审核成功";
+ res.result = res.voucherId;
+
+ }
+ else
+ {
+ conn.RollbackTrans();
+ res.message = "审核失败";
+ res.result = string.IsNullOrWhiteSpace(errMsg) ? domMsg.xml : errMsg;
+ }
+
+ return res;
+ }
+
+ ///
+ /// 批量删除单据(单号)
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public async Task>> Delete(BaseLogin baseLogin, string sCardNum, string sVouchType, List cCodes, bool bCheck = true, bool bBeforCheckStock = true, bool bList = false)
+ {
+ var co = "USERPCO.VoucherCO".GetComObject();
+
+ var errorMsg = "";
+
+ if (!co.IniLogin(baseLogin._vbLogin, ref errorMsg))
+ {
+ await Task.Delay(1);
+ throw new Exception(errorMsg);
+ }
+
+ var conn = new Connection();
+
+ conn.Open(baseLogin.UfDbName);
+
+ var rst = new Recordset();
+ rst.Open($"SELECT CardNumber,BTTblName,BTQName,BWTblName,BWQName,VchListQName,VchTblPrimarykeyNames,ReceiptNOFieldName FROM dbo.vouchers WHERE CardNumber='{sCardNum}'", conn);
+
+ if (rst.BOF || rst.EOF)
+ throw new Exception("未能获取到单据的配置信息!");
+
+ rst.MoveFirst();
+ var tableName = $"{rst.Fields["BTTblName"].Value}";
+ var fieldName = $"{rst.Fields["VchTblPrimarykeyNames"].Value}";
+ var codeName = $"{rst.Fields["ReceiptNOFieldName"].Value}";
+ if (codeName.Contains("{##}"))
+ {
+ codeName = codeName.Split('{', '#', '#', '}')[0];
+ }
+
+ rst.Close();
+
+ var resList = new List>();
+
+ foreach (var cCode in cCodes)
+ {
+ var strSql = $"SELECT {fieldName} AS ID FROM {tableName} WHERE {codeName}='{cCode}'";
+
+ rst.Open(strSql, conn);
+
+ if (rst.BOF || rst.EOF)
+ {
+ var res = new BaseResult
+ {
+ bSuccess = false,
+ message = "删除失败",
+ result = $"没有查询到单号为{cCode}的单据!",
+ voucherId = "",
+ voucherCode = cCode
+ };
+
+ resList.Add(res);
+ continue;
+ }
+
+ rst.MoveFirst();
+ object curId = rst.Fields["ID"].Value;
+
+ var verifyResult = await Delete(co, conn, sVouchType, cCode, curId, bCheck, bBeforCheckStock, bList);
+
+ resList.Add(verifyResult);
+ }
+
+ return resList;
+ }
+
+ ///
+ /// 批量删除单据(ID)
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public async Task>> Delete(BaseLogin baseLogin, string sCardNum, string sVouchType, List vouchIds, bool bCheck = true, bool bBeforCheckStock = true, bool bList = false)
+ {
+ var co = "USERPCO.VoucherCO".GetComObject();
+
+ var errorMsg = "";
+
+ if (!co.IniLogin(baseLogin._vbLogin, ref errorMsg))
+ {
+ await Task.Delay(1);
+ throw new Exception(errorMsg);
+ }
+
+ var conn = new Connection();
+
+ conn.Open(baseLogin.UfDbName);
+
+ var rst = new Recordset();
+ rst.Open($"SELECT CardNumber,BTTblName,BTQName,BWTblName,BWQName,VchListQName,VchTblPrimarykeyNames,ReceiptNOFieldName FROM dbo.vouchers WHERE CardNumber='{sCardNum}'", conn);
+
+ if (rst.BOF || rst.EOF)
+ throw new Exception("未能获取到单据的配置信息!");
+
+ rst.MoveFirst();
+ var tableName = $"{rst.Fields["BTTblName"].Value}";
+ var fieldName = $"{rst.Fields["VchTblPrimarykeyNames"].Value}";
+ var codeName = $"{rst.Fields["ReceiptNOFieldName"].Value}";
+ if (codeName.Contains("{##}"))
+ {
+ codeName = codeName.Split('{', '#', '#', '}')[0];
+ }
+
+ rst.Close();
+
+ var resList = new List>();
+
+ foreach (var vouchId in vouchIds)
+ {
+ var strSql = $"SELECT {codeName} AS cCode FROM {tableName} WHERE {fieldName}='{vouchId}'";
+
+ rst.Open(strSql, conn);
+
+ if (rst.BOF || rst.EOF)
+ {
+ var res = new BaseResult
+ {
+ bSuccess = false,
+ message = "删除失败",
+ result = $"没有查询到ID为{vouchId}的单据!",
+ voucherId = $"{vouchId}",
+ voucherCode = ""
+ };
+
+ resList.Add(res);
+ continue;
+ }
+
+ rst.MoveFirst();
+ var cCode = $"{rst.Fields["cCode"].Value}";
+
+ var verifyResult = await Delete(co, conn, sVouchType, cCode, vouchId, bCheck, bBeforCheckStock, bList);
+
+ resList.Add(verifyResult);
+ }
+
+ return resList;
+ }
+
+ ///
+ /// 删除单据(单号)
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public async Task> Delete(BaseLogin baseLogin, string sCardNum, string sVouchType, string cCode, bool bCheck = true, bool bBeforCheckStock = true, bool bList = false)
+ {
+ var co = "USERPCO.VoucherCO".GetComObject();
+
+ var errorMsg = "";
+
+ if (!co.IniLogin(baseLogin._vbLogin, ref errorMsg))
+ {
+ await Task.Delay(1);
+ throw new Exception(errorMsg);
+ }
+
+ var conn = new Connection();
+
+ conn.Open(baseLogin.UfDbName);
+
+ var rst = new Recordset();
+ rst.Open($"SELECT CardNumber,BTTblName,BTQName,BWTblName,BWQName,VchListQName,VchTblPrimarykeyNames,ReceiptNOFieldName FROM dbo.vouchers WHERE CardNumber='{sCardNum}'", conn);
+
+ if (rst.BOF || rst.EOF)
+ throw new Exception("未能获取到单据的配置信息!");
+
+ rst.MoveFirst();
+ var tableName = $"{rst.Fields["BTTblName"].Value}";
+ var fieldName = $"{rst.Fields["VchTblPrimarykeyNames"].Value}";
+ var codeName = $"{rst.Fields["ReceiptNOFieldName"].Value}";
+ if (codeName.Contains("{##}"))
+ {
+ codeName = codeName.Split('{', '#', '#', '}')[0];
+ }
+
+ rst.Close();
+
+ var strSql = $"SELECT {fieldName} AS ID FROM {tableName} WHERE {codeName}='{cCode}'";
+
+ rst.Open(strSql, conn);
+
+ if (rst.BOF || rst.EOF)
+ {
+ var res = new BaseResult
+ {
+ bSuccess = false,
+ message = "删除失败",
+ result = $"没有查询到单号为{cCode}的单据!",
+ voucherId = "",
+ voucherCode = cCode
+ };
+ }
+
+ rst.MoveFirst();
+ object curId = rst.Fields["ID"].Value;
+
+ var verifyResult = await Delete(co, conn, sVouchType, cCode, curId, bCheck, bBeforCheckStock, bList);
+
+ return verifyResult;
+ }
+
+ ///
+ /// 删除单据(ID)
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public async Task> Delete(BaseLogin baseLogin, string sCardNum, string sVouchType, long vouchId, bool bCheck = true, bool bBeforCheckStock = true, bool bList = false)
+ {
+ var co = "USERPCO.VoucherCO".GetComObject();
+
+ var errorMsg = "";
+
+ if (!co.IniLogin(baseLogin._vbLogin, ref errorMsg))
+ {
+ await Task.Delay(1);
+ throw new Exception(errorMsg);
+ }
+
+ var conn = new Connection();
+
+ conn.Open(baseLogin.UfDbName);
+
+ var rst = new Recordset();
+ rst.Open($"SELECT CardNumber,BTTblName,BTQName,BWTblName,BWQName,VchListQName,VchTblPrimarykeyNames,ReceiptNOFieldName FROM dbo.vouchers WHERE CardNumber='{sCardNum}'", conn);
+
+ if (rst.BOF || rst.EOF)
+ throw new Exception("未能获取到单据的配置信息!");
+
+ rst.MoveFirst();
+ var tableName = $"{rst.Fields["BTTblName"].Value}";
+ var fieldName = $"{rst.Fields["VchTblPrimarykeyNames"].Value}";
+ var codeName = $"{rst.Fields["ReceiptNOFieldName"].Value}";
+ if (codeName.Contains("{##}"))
+ {
+ codeName = codeName.Split('{', '#', '#', '}')[0];
+ }
+
+ rst.Close();
+
+ var strSql = $"SELECT {codeName} AS cCode FROM {tableName} WHERE {fieldName}='{vouchId}'";
+
+ rst.Open(strSql, conn);
+
+ if (rst.BOF || rst.EOF)
+ {
+ var res = new BaseResult
+ {
+ bSuccess = false,
+ message = "删除失败",
+ result = $"没有查询到ID为{vouchId}的单据!",
+ voucherId = $"{vouchId}",
+ voucherCode = ""
+ };
+
+ }
+
+ rst.MoveFirst();
+ var cCode = $"{rst.Fields["cCode"].Value}";
+
+ var verifyResult = await Delete(co, conn, sVouchType, cCode, vouchId, bCheck, bBeforCheckStock, bList);
+
+ return verifyResult;
+ }
+
+ ///
+ /// 删除单据
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public async Task> Delete(dynamic voucherCO, Connection conn, string sVouchType, string cCode, object vouchId, bool bCheck = true, bool bBeforCheckStock = true, bool bList = false)
+ {
+ var errMsg = "";
+ IXMLDOMDocument2 domMsg = new DOMDocument();
+
+ var res = new BaseResult
+ {
+ voucherCode = cCode,
+ voucherId = $"{vouchId}"
+ };
+
+ if (bList)
+ {
+ await Task.Delay(1);
+ }
+
+ conn.BeginTrans();
+
+ try
+ {
+ res.bSuccess = voucherCO.Delete(sVouchType, vouchId, ref errMsg, conn, null, ref domMsg, bCheck, bBeforCheckStock, bList);
+ }
+ catch
+ {
+ conn.RollbackTrans();
+ throw;
+ }
+
+
+ if (res.bSuccess)
+ {
+ conn.CommitTrans();
+ res.message = "删除成功";
+ res.result = res.voucherId;
+
+ }
+ else
+ {
+ conn.RollbackTrans();
+ res.message = "删除失败";
+ res.result = string.IsNullOrWhiteSpace(errMsg) ? domMsg.xml : errMsg;
+ }
+
+ return res;
+ }
}
}
diff --git a/UFIDA.U8.Framework.Api/Controllers/U8/STController.cs b/UFIDA.U8.Framework.Api/Controllers/U8/STController.cs
index 225457c..3f7e265 100644
--- a/UFIDA.U8.Framework.Api/Controllers/U8/STController.cs
+++ b/UFIDA.U8.Framework.Api/Controllers/U8/STController.cs
@@ -12,6 +12,7 @@ using UFIDA.U8.Framework.Api.ControlObject.Entity;
using UFIDA.U8.Framework.Api.ControlObject.Json;
using UFIDA.U8.Framework.Api.ControlObject.ST;
using UFIDA.U8.Framework.Api.ControlObject.U8M;
+using UFIDA.U8.Framework.Api.Models;
using UFIDA.U8.Framework.Api.Unit;
// ReSharper disable StringLiteralTypo
// ReSharper disable IdentifierTypo
@@ -55,7 +56,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
logInfo.Debug($"作业Id:{workId}-----单据:{cCardNum},操作:新增,对接账套:{cAccId},数据:{input.ToJson()}");
- LoginParamter param;
+ //LoginParamter param;
if (!_cache.TryGetValue($"U8_{cAccId}", out BaseLogin baseLogin))
{
@@ -63,7 +64,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
baseLogin = new BaseLogin();
- param = await CommUnit.GetLoginParamter(cAccId);
+ var param = await CommUnit.GetLoginParamter(cAccId);
if (param == null)
{
@@ -76,10 +77,10 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
_cache.Set($"U8_{cAccId}", baseLogin);
}
- else
- {
- param = await CommUnit.GetLoginParamter(cAccId);
- }
+ //else
+ //{
+ // param = await CommUnit.GetLoginParamter(cAccId);
+ //}
logInfo.Debug($"作业Id:{workId}-----登录信息获取完成,缓存设置完成,开始加载单据配置信息");
@@ -108,7 +109,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
if (!string.IsNullOrWhiteSpace(exchKey) && input.TryGetValue(exchKey, out var value))
{
- exch = CommonHelper.GetExch(dDate, param.cAccId, $"{value}", baseLogin.Connection);
+ exch = CommonHelper.GetExch(dDate, cAccId, $"{value}", baseLogin.Connection);
}
else
{
@@ -251,5 +252,711 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
return new BaseResult { bSuccess = false, message = ex.Message, result = ex.StackTrace };
}
}
+
+ ///
+ /// 审核单据(单号)
+ ///
+ /// 系统号
+ /// 单据类型编码
+ /// 单据编号
+ /// 是否控制可用量
+ /// 是否检查可用量
+ /// 是否列表
+ ///
+ ///
+ [HttpGet]
+ [Route("api/U8/ST/{cCardNum}/Verify/Code")]
+ public async Task> Verify(string cAccId, string cCardNum,string cCode, bool bCheck = true, bool bBeforCheckStock = true, bool bList = false)
+ {
+ try
+ {
+ var db = CommUnit.GetDbClient();
+
+ var workId = SnowFlakeSingle.Instance.NextId();
+
+ logInfo.Debug($"作业Id:{workId}-----单据:{cCardNum},操作:审核,对接账套:{cAccId},单号:{cCode}");
+
+ //LoginParamter param;
+
+ if (!_cache.TryGetValue($"U8_{cAccId}", out BaseLogin baseLogin) || baseLogin ==null)
+ {
+ logInfo.Debug($"作业Id:{workId}-----未获取到缓存的登录信息,正在重新构建");
+
+ baseLogin = new BaseLogin();
+
+ var param = await CommUnit.GetLoginParamter(cAccId);
+
+ if (param == null)
+ {
+ throw new Exception("未能加载指定系统号的登录信息");
+ }
+
+ baseLogin.Init(param, false);
+
+ _cache.Clear();
+
+ _cache.Set($"U8_{cAccId}", baseLogin);
+ }
+ //else
+ //{
+ // param = await CommUnit.GetLoginParamter(cAccId);
+ //}
+
+ logInfo.Debug($"作业Id:{workId}-----登录信息获取完成,缓存设置完成,开始加载单据配置信息");
+
+ var voucherInfo = await db.Queryable().FirstAsync(s => s.CardNumber == cCardNum);
+
+ var co = new USERPCO();
+
+ return await co.Verify(baseLogin, cCardNum, voucherInfo.VoucherType, cCode, bCheck, bBeforCheckStock, bList);
+ }
+ catch (Exception ex)
+ {
+ logInfo.Error(ex.Message, ex);
+
+ return new BaseResult { bSuccess = false, message = "审核失败", result = ex.Message };
+ }
+ }
+
+ ///
+ /// 审核单据(ID)
+ ///
+ /// 系统号
+ /// 单据类型编码
+ /// 单据ID
+ /// 是否控制可用量
+ /// 是否检查可用量
+ /// 是否列表
+ ///
+ ///
+ [HttpGet]
+ [Route("api/U8/ST/{cCardNum}/Verify/ID")]
+ public async Task> Verify(string cAccId, string cCardNum, long voucherId, bool bCheck = true, bool bBeforCheckStock = true, bool bList = false)
+ {
+ try
+ {
+ var db = CommUnit.GetDbClient();
+
+ var workId = SnowFlakeSingle.Instance.NextId();
+
+ logInfo.Debug($"作业Id:{workId}-----单据:{cCardNum},操作:审核,对接账套:{cAccId},ID:{voucherId}");
+
+ //LoginParamter param;
+
+ if (!_cache.TryGetValue($"U8_{cAccId}", out BaseLogin baseLogin))
+ {
+ logInfo.Debug($"作业Id:{workId}-----未获取到缓存的登录信息,正在重新构建");
+
+ baseLogin = new BaseLogin();
+
+ var param = await CommUnit.GetLoginParamter(cAccId);
+
+ if (param == null)
+ {
+ throw new Exception("未能加载指定系统号的登录信息");
+ }
+
+ baseLogin.Init(param, false);
+
+ _cache.Clear();
+
+ _cache.Set($"U8_{cAccId}", baseLogin);
+ }
+ //else
+ //{
+ // param = await CommUnit.GetLoginParamter(cAccId);
+ //}
+
+ logInfo.Debug($"作业Id:{workId}-----登录信息获取完成,缓存设置完成,开始加载单据配置信息");
+
+ var voucherInfo = await db.Queryable().FirstAsync(s => s.CardNumber == cCardNum);
+
+ var co = new USERPCO();
+
+ return await co.Verify(baseLogin, cCardNum, voucherInfo.VoucherType, voucherId, bCheck, bBeforCheckStock, bList);
+ }
+ catch (Exception ex)
+ {
+ logInfo.Error(ex.Message, ex);
+
+ return new BaseResult { bSuccess = false, message = "审核失败", result = ex.Message };
+ }
+ }
+
+ ///
+ /// 审核单据(批量)
+ ///
+ /// 系统号
+ /// 单据类型编码
+ /// 报文
+ /// 是否控制可用量
+ /// 是否检查可用量
+ /// 是否列表
+ ///
+ [HttpPost]
+ [Route("api/U8/ST/{cCardNum}/Verify")]
+ public async Task>>> Verify(string cAccId, string cCardNum, [FromBody] STInput input, bool bCheck = true, bool bBeforCheckStock = true, bool bList = false)
+ {
+ try
+ {
+ var db = CommUnit.GetDbClient();
+
+ var workId = SnowFlakeSingle.Instance.NextId();
+
+ if (input == null)
+ {
+ throw new Exception("参数不能为空");
+ }
+
+ var cCodes = input.cCode;
+
+ var voucherIds = input.voucherId;
+
+ if ((cCodes == null || cCodes.Count<=0) && (voucherIds == null || voucherIds.Count <= 0))
+ {
+ throw new Exception("没有数据需要审核");
+ }
+
+ var strCode = "";
+ var strId = "";
+
+ var apiType = cCodes == null || cCodes.Count <= 0 ? 1 : 0;
+
+ if (cCodes != null && cCodes.Count > 0)
+ {
+ strCode = string.Join(",", cCodes);
+ }
+
+ if (voucherIds != null && voucherIds.Count > 0)
+ {
+ strId = string.Join(",", voucherIds);
+ }
+
+ logInfo.Debug($"作业Id:{workId}-----单据:{cCardNum},操作:审核,对接账套:{cAccId},单号:{strCode},ID:{strId}");
+
+ //LoginParamter param;
+
+ if (!_cache.TryGetValue($"U8_{cAccId}", out BaseLogin baseLogin))
+ {
+ logInfo.Debug($"作业Id:{workId}-----未获取到缓存的登录信息,正在重新构建");
+
+ baseLogin = new BaseLogin();
+
+ var param = await CommUnit.GetLoginParamter(cAccId);
+
+ if (param == null)
+ {
+ throw new Exception("未能加载指定系统号的登录信息");
+ }
+
+ baseLogin.Init(param, false);
+
+ _cache.Clear();
+
+ _cache.Set($"U8_{cAccId}", baseLogin);
+ }
+ //else
+ //{
+ // param = await CommUnit.GetLoginParamter(cAccId);
+ //}
+
+ logInfo.Debug($"作业Id:{workId}-----登录信息获取完成,缓存设置完成,开始加载单据配置信息");
+
+ var voucherInfo = await db.Queryable().FirstAsync(s => s.CardNumber == cCardNum);
+
+ var co = new USERPCO();
+
+ var result = apiType == 0
+ ? await co.Verify(baseLogin, cCardNum, voucherInfo.VoucherType, cCodes, bCheck, bBeforCheckStock, bList)
+ : await co.Verify(baseLogin, cCardNum, voucherInfo.VoucherType, voucherIds, bCheck, bBeforCheckStock, bList);
+
+ var res = new BaseResult>>()
+ {
+ bSuccess = true,
+ message = "审核完成",
+ result = result
+ };
+
+ return res;
+ }
+ catch (Exception ex)
+ {
+ logInfo.Error(ex.Message, ex);
+
+ return new BaseResult>> { bSuccess = false, message = ex.Message, result = null };
+ }
+ }
+
+ ///
+ /// 弃审单据(单号)
+ ///
+ /// 系统号
+ /// 单据类型编码
+ /// 单据编号
+ /// 是否控制可用量
+ /// 是否检查可用量
+ /// 是否列表
+ ///
+ ///
+ [HttpGet]
+ [Route("api/U8/ST/{cCardNum}/UnVerify/Code")]
+ public async Task> UnVerify(string cAccId, string cCardNum,string cCode, bool bCheck = true, bool bBeforCheckStock = true, bool bList = false)
+ {
+ try
+ {
+ var db = CommUnit.GetDbClient();
+
+ var workId = SnowFlakeSingle.Instance.NextId();
+
+ logInfo.Debug($"作业Id:{workId}-----单据:{cCardNum},操作:弃审,对接账套:{cAccId},单号:{cCode}");
+
+ //LoginParamter param;
+
+ if (!_cache.TryGetValue($"U8_{cAccId}", out BaseLogin baseLogin))
+ {
+ logInfo.Debug($"作业Id:{workId}-----未获取到缓存的登录信息,正在重新构建");
+
+ baseLogin = new BaseLogin();
+
+ var param = await CommUnit.GetLoginParamter(cAccId);
+
+ if (param == null)
+ {
+ throw new Exception("未能加载指定系统号的登录信息");
+ }
+
+ baseLogin.Init(param, false);
+
+ _cache.Clear();
+
+ _cache.Set($"U8_{cAccId}", baseLogin);
+ }
+ //else
+ //{
+ // param = await CommUnit.GetLoginParamter(cAccId);
+ //}
+
+ logInfo.Debug($"作业Id:{workId}-----登录信息获取完成,缓存设置完成,开始加载单据配置信息");
+
+ var voucherInfo = await db.Queryable().FirstAsync(s => s.CardNumber == cCardNum);
+
+ var co = new USERPCO();
+
+ return await co.UnVerify(baseLogin, cCardNum, voucherInfo.VoucherType, cCode, bCheck, bBeforCheckStock, bList);
+ }
+ catch (Exception ex)
+ {
+ logInfo.Error(ex.Message, ex);
+
+ return new BaseResult { bSuccess = false, message = "弃审失败", result = ex.Message };
+ }
+ }
+
+
+ ///
+ /// 弃审单据(ID)
+ ///
+ /// 系统号
+ /// 单据类型编码
+ /// 单据ID
+ /// 是否控制可用量
+ /// 是否检查可用量
+ /// 是否列表
+ ///
+ ///
+ [HttpGet]
+ [Route("api/U8/ST/{cCardNum}/UnVerify/ID")]
+ public async Task> UnVerify(string cAccId, string cCardNum, long voucherId, bool bCheck = true, bool bBeforCheckStock = true, bool bList = false)
+ {
+ try
+ {
+ var db = CommUnit.GetDbClient();
+
+ var workId = SnowFlakeSingle.Instance.NextId();
+
+ logInfo.Debug($"作业Id:{workId}-----单据:{cCardNum},操作:弃审,对接账套:{cAccId},ID:{voucherId}");
+
+ //LoginParamter param;
+
+ if (!_cache.TryGetValue($"U8_{cAccId}", out BaseLogin baseLogin))
+ {
+ logInfo.Debug($"作业Id:{workId}-----未获取到缓存的登录信息,正在重新构建");
+
+ baseLogin = new BaseLogin();
+
+ var param = await CommUnit.GetLoginParamter(cAccId);
+
+ if (param == null)
+ {
+ throw new Exception("未能加载指定系统号的登录信息");
+ }
+
+ baseLogin.Init(param, false);
+
+ _cache.Clear();
+
+ _cache.Set($"U8_{cAccId}", baseLogin);
+ }
+ //else
+ //{
+ // param = await CommUnit.GetLoginParamter(cAccId);
+ //}
+
+ logInfo.Debug($"作业Id:{workId}-----登录信息获取完成,缓存设置完成,开始加载单据配置信息");
+
+ var voucherInfo = await db.Queryable().FirstAsync(s => s.CardNumber == cCardNum);
+
+ var co = new USERPCO();
+
+ return await co.UnVerify(baseLogin, cCardNum, voucherInfo.VoucherType, voucherId, bCheck, bBeforCheckStock, bList);
+ }
+ catch (Exception ex)
+ {
+ logInfo.Error(ex.Message, ex);
+
+ return new BaseResult { bSuccess = false, message = "弃审失败", result = ex.Message };
+ }
+ }
+
+ ///
+ /// 弃审单据(批量)
+ ///
+ /// 系统号
+ /// 单据类型编码
+ /// 报文
+ /// 是否控制可用量
+ /// 是否检查可用量
+ /// 是否列表
+ ///
+ [HttpPost]
+ [Route("api/U8/ST/{cCardNum}/UnVerify")]
+ public async Task>>> UnVerify(string cAccId, string cCardNum, [FromBody] STInput input, bool bCheck = true, bool bBeforCheckStock = true, bool bList = false)
+ {
+ try
+ {
+ var db = CommUnit.GetDbClient();
+
+ var workId = SnowFlakeSingle.Instance.NextId();
+
+ if (input == null)
+ {
+ throw new Exception("参数不能为空");
+ }
+
+ var cCodes = input.cCode;
+
+ var voucherIds = input.voucherId;
+
+ if ((cCodes == null || cCodes.Count<=0) && (voucherIds == null || voucherIds.Count <= 0))
+ {
+ throw new Exception("没有数据需要弃审");
+ }
+
+ var strCode = "";
+ var strId = "";
+
+ var apiType = cCodes == null || cCodes.Count <= 0 ? 1 : 0;
+
+ if (cCodes != null && cCodes.Count > 0)
+ {
+ strCode = string.Join(",", cCodes);
+ }
+
+ if (voucherIds != null && voucherIds.Count > 0)
+ {
+ strId = string.Join(",", voucherIds);
+ }
+
+ logInfo.Debug($"作业Id:{workId}-----单据:{cCardNum},操作:弃审,对接账套:{cAccId},单号:{strCode},ID:{strId}");
+
+ //LoginParamter param;
+
+ if (!_cache.TryGetValue($"U8_{cAccId}", out BaseLogin baseLogin))
+ {
+ logInfo.Debug($"作业Id:{workId}-----未获取到缓存的登录信息,正在重新构建");
+
+ baseLogin = new BaseLogin();
+
+ var param = await CommUnit.GetLoginParamter(cAccId);
+
+ if (param == null)
+ {
+ throw new Exception("未能加载指定系统号的登录信息");
+ }
+
+ baseLogin.Init(param, false);
+
+ _cache.Clear();
+
+ _cache.Set($"U8_{cAccId}", baseLogin);
+ }
+ //else
+ //{
+ // param = await CommUnit.GetLoginParamter(cAccId);
+ //}
+
+ logInfo.Debug($"作业Id:{workId}-----登录信息获取完成,缓存设置完成,开始加载单据配置信息");
+
+ var voucherInfo = await db.Queryable().FirstAsync(s => s.CardNumber == cCardNum);
+
+ var co = new USERPCO();
+
+ var result = apiType == 0
+ ? await co.Verify(baseLogin, cCardNum, voucherInfo.VoucherType, cCodes, bCheck, bBeforCheckStock, bList)
+ : await co.Verify(baseLogin, cCardNum, voucherInfo.VoucherType, voucherIds, bCheck, bBeforCheckStock, bList);
+
+ var res = new BaseResult>>()
+ {
+ bSuccess = true,
+ message = "弃审完成",
+ result = result
+ };
+
+ return res;
+ }
+ catch (Exception ex)
+ {
+ logInfo.Error(ex.Message, ex);
+
+ return new BaseResult>> { bSuccess = false, message = ex.Message, result = null };
+ }
+ }
+
+ ///
+ /// 删除单据(单号)
+ ///
+ /// 系统号
+ /// 单据类型编码
+ /// 单据编号
+ /// 是否控制可用量
+ /// 是否检查可用量
+ /// 是否列表
+ ///
+ ///
+ [HttpGet]
+ [Route("api/U8/ST/{cCardNum}/Delete/Code")]
+ public async Task> Delete(string cAccId, string cCardNum,string cCode, bool bCheck = true, bool bBeforCheckStock = true, bool bList = false)
+ {
+ try
+ {
+ var db = CommUnit.GetDbClient();
+
+ var workId = SnowFlakeSingle.Instance.NextId();
+
+ logInfo.Debug($"作业Id:{workId}-----单据:{cCardNum},操作:删除,对接账套:{cAccId},单号:{cCode}");
+
+ //LoginParamter param;
+
+ if (!_cache.TryGetValue($"U8_{cAccId}", out BaseLogin baseLogin))
+ {
+ logInfo.Debug($"作业Id:{workId}-----未获取到缓存的登录信息,正在重新构建");
+
+ baseLogin = new BaseLogin();
+
+ var param = await CommUnit.GetLoginParamter(cAccId);
+
+ if (param == null)
+ {
+ throw new Exception("未能加载指定系统号的登录信息");
+ }
+
+ baseLogin.Init(param, false);
+
+ _cache.Clear();
+
+ _cache.Set($"U8_{cAccId}", baseLogin);
+ }
+ //else
+ //{
+ // param = await CommUnit.GetLoginParamter(cAccId);
+ //}
+
+ logInfo.Debug($"作业Id:{workId}-----登录信息获取完成,缓存设置完成,开始加载单据配置信息");
+
+ var voucherInfo = await db.Queryable().FirstAsync(s => s.CardNumber == cCardNum);
+
+ var co = new USERPCO();
+
+ return await co.Delete(baseLogin, cCardNum, voucherInfo.VoucherType, cCode, bCheck, bBeforCheckStock, bList);
+ }
+ catch (Exception ex)
+ {
+ logInfo.Error(ex.Message, ex);
+
+ return new BaseResult { bSuccess = false, message = "删除失败", result = ex.Message };
+ }
+ }
+
+
+ ///
+ /// 删除单据(ID)
+ ///
+ /// 系统号
+ /// 单据类型编码
+ /// 单据ID
+ /// 是否控制可用量
+ /// 是否检查可用量
+ /// 是否列表
+ ///
+ ///
+ [HttpGet]
+ [Route("api/U8/ST/{cCardNum}/Delete/ID")]
+ public async Task> Delete(string cAccId, string cCardNum, long voucherId, bool bCheck = true, bool bBeforCheckStock = true, bool bList = false)
+ {
+ try
+ {
+ var db = CommUnit.GetDbClient();
+
+ var workId = SnowFlakeSingle.Instance.NextId();
+
+ logInfo.Debug($"作业Id:{workId}-----单据:{cCardNum},操作:删除,对接账套:{cAccId},ID:{voucherId}");
+
+ //LoginParamter param;
+
+ if (!_cache.TryGetValue($"U8_{cAccId}", out BaseLogin baseLogin))
+ {
+ logInfo.Debug($"作业Id:{workId}-----未获取到缓存的登录信息,正在重新构建");
+
+ baseLogin = new BaseLogin();
+
+ var param = await CommUnit.GetLoginParamter(cAccId);
+
+ if (param == null)
+ {
+ throw new Exception("未能加载指定系统号的登录信息");
+ }
+
+ baseLogin.Init(param, false);
+
+ _cache.Clear();
+
+ _cache.Set($"U8_{cAccId}", baseLogin);
+ }
+ //else
+ //{
+ // param = await CommUnit.GetLoginParamter(cAccId);
+ //}
+
+ logInfo.Debug($"作业Id:{workId}-----登录信息获取完成,缓存设置完成,开始加载单据配置信息");
+
+ var voucherInfo = await db.Queryable().FirstAsync(s => s.CardNumber == cCardNum);
+
+ var co = new USERPCO();
+
+ return await co.UnVerify(baseLogin, cCardNum, voucherInfo.VoucherType, voucherId, bCheck, bBeforCheckStock, bList);
+ }
+ catch (Exception ex)
+ {
+ logInfo.Error(ex.Message, ex);
+
+ return new BaseResult { bSuccess = false, message = "删除失败", result = ex.Message };
+ }
+ }
+
+ ///
+ /// 删除单据(批量)
+ ///
+ /// 系统号
+ /// 单据类型编码
+ /// 报文
+ /// 是否控制可用量
+ /// 是否检查可用量
+ /// 是否列表
+ ///
+ [HttpPost]
+ [Route("api/U8/ST/{cCardNum}/Delete")]
+ public async Task>>> Delete(string cAccId, string cCardNum, [FromBody] STInput input, bool bCheck = true, bool bBeforCheckStock = true, bool bList = false)
+ {
+ try
+ {
+ var db = CommUnit.GetDbClient();
+
+ var workId = SnowFlakeSingle.Instance.NextId();
+
+ if (input == null)
+ {
+ throw new Exception("参数不能为空");
+ }
+
+ var cCodes = input.cCode;
+
+ var voucherIds = input.voucherId;
+
+ if ((cCodes == null || cCodes.Count<=0) && (voucherIds == null || voucherIds.Count <= 0))
+ {
+ throw new Exception("没有数据需要删除");
+ }
+
+ var strCode = "";
+ var strId = "";
+
+ var apiType = cCodes == null || cCodes.Count <= 0 ? 1 : 0;
+
+ if (cCodes != null && cCodes.Count > 0)
+ {
+ strCode = string.Join(",", cCodes);
+ }
+
+ if (voucherIds != null && voucherIds.Count > 0)
+ {
+ strId = string.Join(",", voucherIds);
+ }
+
+ logInfo.Debug($"作业Id:{workId}-----单据:{cCardNum},操作:删除,对接账套:{cAccId},单号:{strCode},ID:{strId}");
+
+ //LoginParamter param;
+
+ if (!_cache.TryGetValue($"U8_{cAccId}", out BaseLogin baseLogin))
+ {
+ logInfo.Debug($"作业Id:{workId}-----未获取到缓存的登录信息,正在重新构建");
+
+ baseLogin = new BaseLogin();
+
+ var param = await CommUnit.GetLoginParamter(cAccId);
+
+ if (param == null)
+ {
+ throw new Exception("未能加载指定系统号的登录信息");
+ }
+
+ baseLogin.Init(param, false);
+
+ _cache.Clear();
+
+ _cache.Set($"U8_{cAccId}", baseLogin);
+ }
+ //else
+ //{
+ // param = await CommUnit.GetLoginParamter(cAccId);
+ //}
+
+ logInfo.Debug($"作业Id:{workId}-----登录信息获取完成,缓存设置完成,开始加载单据配置信息");
+
+ var voucherInfo = await db.Queryable().FirstAsync(s => s.CardNumber == cCardNum);
+
+ var co = new USERPCO();
+
+ var result = apiType == 0
+ ? await co.Delete(baseLogin, cCardNum, voucherInfo.VoucherType, cCodes, bCheck, bBeforCheckStock, bList)
+ : await co.Delete(baseLogin, cCardNum, voucherInfo.VoucherType, voucherIds, bCheck, bBeforCheckStock, bList);
+
+ var res = new BaseResult>>()
+ {
+ bSuccess = true,
+ message = "删除完成",
+ result = result
+ };
+
+ return res;
+ }
+ catch (Exception ex)
+ {
+ logInfo.Error(ex.Message, ex);
+
+ return new BaseResult>> { bSuccess = false, message = ex.Message, result = null };
+ }
+ }
+
+
}
}
\ No newline at end of file
diff --git a/UFIDA.U8.Framework.Api/Models/STInput.cs b/UFIDA.U8.Framework.Api/Models/STInput.cs
new file mode 100644
index 0000000..7a6fad5
--- /dev/null
+++ b/UFIDA.U8.Framework.Api/Models/STInput.cs
@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+
+namespace UFIDA.U8.Framework.Api.Models
+{
+ ///
+ /// 批量审核弃审参数
+ ///
+ public class STInput
+ {
+ public List cCode { get; set; }
+ public List voucherId { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/UFIDA.U8.Framework.Api/UFIDA.U8.Framework.Api.csproj b/UFIDA.U8.Framework.Api/UFIDA.U8.Framework.Api.csproj
index 42cd9d5..a6543fa 100644
--- a/UFIDA.U8.Framework.Api/UFIDA.U8.Framework.Api.csproj
+++ b/UFIDA.U8.Framework.Api/UFIDA.U8.Framework.Api.csproj
@@ -421,6 +421,7 @@
Global.asax
+