diff --git a/UFIDA.U8.Framework.Api.ControlObject/ST/USERPCO.cs b/UFIDA.U8.Framework.Api.ControlObject/ST/USERPCO.cs index c7f9bfb..3afd372 100644 --- a/UFIDA.U8.Framework.Api.ControlObject/ST/USERPCO.cs +++ b/UFIDA.U8.Framework.Api.ControlObject/ST/USERPCO.cs @@ -4,11 +4,15 @@ using MSXML2; using System; using System.Collections.Generic; using System.Threading.Tasks; -using System.Web; using UFIDA.U8.Framework.Api.ControlObject.Common; using UFIDA.U8.Framework.Api.ControlObject.Entity; using UFIDA.U8.Framework.Api.ControlObject.Json; using UFIDA.U8.Framework.Api.ControlObject.U8M; +// ReSharper disable StringLiteralTypo +// ReSharper disable CommentTypo +// ReSharper disable IdentifierTypo +// ReSharper disable InconsistentNaming +// ReSharper disable UnusedMember.Global namespace UFIDA.U8.Framework.Api.ControlObject.ST { @@ -20,7 +24,7 @@ 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) + 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) { try { @@ -67,7 +71,7 @@ namespace UFIDA.U8.Framework.Api.ControlObject.ST if (!string.IsNullOrWhiteSpace(newCode)) { - object value = CommonHelper.SetDomKeyValue(domHead, codeKey, newCode); + CommonHelper.SetDomKeyValue(domHead, codeKey, newCode); } } @@ -84,67 +88,87 @@ namespace UFIDA.U8.Framework.Api.ControlObject.ST { res.bSuccess = co.Insert(sVouchType, domHead, domBody, domPosition, ref errorMsg, baseLogin.Connection, ref vouchId, ref domMsg, bCheck, bBeforCheckStock, bIsRedVouch, sAddedState, bReMote); } - catch (Exception ex) + catch (Exception) { await Task.Delay(1); baseLogin.Connection.RollbackTrans(); - throw ex; + throw; + } + + res.message = errorMsg; + + if (res.bSuccess && bAudit) + { + errorMsg = ""; + + if (!co.Verify(sVouchType, vouchId,ref errorMsg, baseLogin.Connection)) + { + baseLogin.Connection.RollbackTrans(); + + if (!string.IsNullOrWhiteSpace(errorMsg)) + throw new Exception(errorMsg); + + throw new Exception("审核单据时发生异常,请检查数据"); + } + } + + if (!res.bSuccess) + { + baseLogin.Connection.RollbackTrans(); + + if(!string.IsNullOrWhiteSpace(errorMsg)) + throw new Exception(errorMsg); + + throw new Exception(domMsg.xml); } baseLogin.Connection.CommitTrans(); - if (!res.bSuccess) + var rst = new Recordset(); + rst.Open($"SELECT CardNumber,BTTblName,BTQName,BWTblName,BWQName,VchListQName,VchTblPrimarykeyNames,ReceiptNOFieldName FROM dbo.vouchers WITH(NOLOCK) WHERE CardNumber='{cCardNum}'", baseLogin.Connection); + + if (rst.BOF || rst.EOF) { - res.message = "新增失败"; - res.result = errorMsg; + res.bSuccess = false; + res.result = $"已在U8生成单据ID为{vouchId}的单据,但是未能查询到该单据的配置信息!"; } else { - var rst = new Recordset(); - rst.Open($"SELECT CardNumber,BTTblName,BTQName,BWTblName,BWQName,VchListQName,VchTblPrimarykeyNames,ReceiptNOFieldName FROM dbo.vouchers WHERE CardNumber='{cCardNum}'", baseLogin.Connection); - - if (rst.BOF || rst.EOF) + rst.MoveFirst(); + var fieldName = $"{rst.Fields["VchTblPrimarykeyNames"].Value}"; + var codeName = $"{rst.Fields["ReceiptNOFieldName"].Value}"; + if (string.IsNullOrWhiteSpace(fieldName) || string.IsNullOrWhiteSpace(codeName)) { - res.bSuccess = false; - res.result = $"已在U8生成单据ID为{vouchId}的单据,但是未能查询到该单据的配置信息!"; + res.voucherCode = $"{res.voucherId}"; } else { - rst.MoveFirst(); - var fieldName = $"{rst.Fields["VchTblPrimarykeyNames"].Value}"; - var codeName = $"{rst.Fields["ReceiptNOFieldName"].Value}"; - if (string.IsNullOrWhiteSpace(fieldName) || string.IsNullOrWhiteSpace(codeName)) + if (codeName.Contains("{##}")) { - res.voucherCode = $"{res.voucherId}"; + codeName = codeName.Split('{', '#', '#', '}')[0]; + } + + var strSql = $"SELECT {codeName} AS cCode FROM {rst.Fields["BTTblName"].Value} WITH(NOLOCK) WHERE {fieldName}='{vouchId}'"; + rst.Close(); + + rst.Open(strSql, baseLogin.Connection); + + if (rst.EOF || rst.BOF) + { + res.voucherCode = ""; } else { - if (codeName.Contains("{##}")) - { - codeName = codeName.Split('{', '#', '#', '}')[0]; - } - - var strSql = $"SELECT {codeName} AS cCode FROM {rst.Fields["BTTblName"].Value} WHERE {fieldName}='{vouchId}'"; - rst.Close(); - - rst.Open(strSql, baseLogin.Connection); - - if (rst.EOF || rst.BOF) - { - res.voucherCode = ""; - } - else - { - rst.MoveFirst(); - res.voucherCode = $"{rst.Fields["cCode"].Value}"; - } + rst.MoveFirst(); + res.voucherCode = $"{rst.Fields["cCode"].Value}"; } } - - res.message = "新增成功"; - res.result = vouchId; } + res.message = "新增成功"; + res.result = vouchId; + + return res; //var bodys = dictionary.TryGetValue() dictionary["body"]; @@ -205,7 +229,7 @@ namespace UFIDA.U8.Framework.Api.ControlObject.ST domBody = bodys.ToDocument2(domBody); - IXMLDOMDocument2 domMsg = new DOMDocument(); + //IXMLDOMDocument2 domMsg = new DOMDocument(); errorMsg = ""; baseLogin.Connection.BeginTrans(); @@ -216,10 +240,10 @@ namespace UFIDA.U8.Framework.Api.ControlObject.ST { res.bSuccess = co.Update(sVouchType, domHead, domBody, domPosition); } - catch (Exception ex) + catch (Exception) { baseLogin.Connection.RollbackTrans(); - throw ex; + throw; } if (!res.bSuccess) diff --git a/UFIDA.U8.Framework.Api/Controllers/U8/DPController.cs b/UFIDA.U8.Framework.Api/Controllers/U8/DPController.cs index a7e70a9..31b77da 100644 --- a/UFIDA.U8.Framework.Api/Controllers/U8/DPController.cs +++ b/UFIDA.U8.Framework.Api/Controllers/U8/DPController.cs @@ -10,6 +10,9 @@ using UFIDA.U8.Framework.Api.Unit; namespace UFIDA.U8.Framework.Api.Controllers.U8 { + /// + /// 平台功能 + /// public class DPController : ApiController { /// diff --git a/UFIDA.U8.Framework.Api/Controllers/U8/STController.cs b/UFIDA.U8.Framework.Api/Controllers/U8/STController.cs index 7412638..bcd96c5 100644 --- a/UFIDA.U8.Framework.Api/Controllers/U8/STController.cs +++ b/UFIDA.U8.Framework.Api/Controllers/U8/STController.cs @@ -1,24 +1,27 @@ using log4net; -using log4net.Util; using Microsoft.Extensions.Caching.Memory; using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; -using System.Web; using System.Web.Http; using UFIDA.U8.Framework.Api.Common.Entity; -using UFIDA.U8.Framework.Api.ControlObject.AP; using UFIDA.U8.Framework.Api.ControlObject.Common; 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.Unit; +// ReSharper disable StringLiteralTypo +// ReSharper disable IdentifierTypo +// ReSharper disable InconsistentNaming namespace UFIDA.U8.Framework.Api.Controllers.U8 { + /// + /// 库存管理 + /// public class STController : ApiController { /// @@ -31,14 +34,14 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8 /// /// 新增单据 /// - /// - /// - /// - /// - /// - /// - /// - /// + /// 系统号 + /// 单据类型编码 + /// 报文 + /// 是否控制可用量 + /// 是否检查可用量 + /// 是否红字单据 + /// 传空字符串 + /// 是否远程 /// [HttpPost] [Route("api/U8/ST/{cCardNum}/Insert")] @@ -80,9 +83,9 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8 logInfo.Debug($"作业Id:{workId}-----登录信息获取完成,缓存设置完成,开始加载单据配置信息"); - var voucherInfo = db.Queryable().First(s => s.CardNumber == cCardNum); + var voucherInfo = await db.Queryable().FirstAsync(s => s.CardNumber == cCardNum); - var defs = db.Queryable().Where(s => s.CardNumber == cCardNum && s.cPosition == "H" && s.bEnable==true).ToList(); //查询表头字段配置,供后续设置字段值 + var defs = await db.Queryable().Where(s => s.CardNumber == cCardNum && s.cPosition == "H" && s.bEnable==true).ToListAsync(); //查询表头字段配置,供后续设置字段值 var dateKey = ""; var exchKey = ""; @@ -103,9 +106,9 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8 Exch exch; - if (!string.IsNullOrWhiteSpace(exchKey) && input.ContainsKey(exchKey)) + if (!string.IsNullOrWhiteSpace(exchKey) && input.TryGetValue(exchKey, out var value)) { - exch = CommonHelper.GetExch(dDate, param.cAccId, $"{input[exchKey]}", baseLogin.Connection); + exch = CommonHelper.GetExch(dDate, param.cAccId, $"{value}", baseLogin.Connection); } else { @@ -156,7 +159,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8 throw new Exception("无表体数据!"); logInfo.Debug($"作业Id:{workId}-----获取表体字段配置"); - var defsBody = db.Queryable().Where(s => s.CardNumber == cCardNum && s.cPosition == "B" && s.bEnable==true).ToList(); //获取表体的字段配置 + var defsBody = await db.Queryable().Where(s => s.CardNumber == cCardNum && s.cPosition == "B" && s.bEnable==true).ToListAsync(); //获取表体的字段配置 var rowNo = 1; @@ -237,59 +240,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8 var co = new USERPCO(); - var res = await co.Insert(baseLogin, input, cCardNum, voucherInfo.VoucherType, bGetCode, codeKey, bCheck, bBeforCheckStock, bIsRedVouch, sAddedState, bReMote); - - return res; - } - catch (Exception ex) - { - logInfo.Error(ex.Message, ex); - - return new BaseResult { bSuccess = false, message = ex.Message, result = ex.StackTrace }; - } - } - - /// - /// 更新单据 - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - [HttpPost] - [Route("api/U8/ST/{cCardNum}/Update")] - public async Task> Update(string cAccId, string cCardNum, [FromBody] Dictionary input, bool bCheck = true, bool bBeforCheckStock = true, bool bIsRedVouch = false, string sAddedState = "", bool bUpdateNeedEas = true) - { - try - { - if (!_cache.TryGetValue($"U8_{cAccId}", out BaseLogin baseLogin)) - { - 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); - } - - var bo = new USERPCO(); - - var res = await bo.Update(baseLogin, input, "0412", "11", bCheck, bBeforCheckStock, bIsRedVouch, sAddedState, - bUpdateNeedEas); + var res = await co.Insert(baseLogin, input, cCardNum, voucherInfo.VoucherType, bGetCode, codeKey, bCheck, bBeforCheckStock, bIsRedVouch, sAddedState, bReMote, voucherInfo.bVerify); return res; }