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 +