From 9e01715ea2f4a6e96b5769aab18c5bad4fc3e021 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=95=8F=E5=81=A5=20=E9=82=B1?= Date: Thu, 8 May 2025 22:39:36 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=8F=97=E6=B5=81=E7=A8=8B?= =?UTF-8?q?=E6=8E=A7=E5=88=B6=E4=B8=8D=E5=8F=97=E6=8E=A7=E5=88=B6=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98(=E7=9B=8A=E9=82=A6)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Entity/SysU8VoucherDefine.cs | 12 ++ .../PU/clsVoucherCO_PU.cs | 71 ++++++--- .../ST/USERPCO.cs | 135 ++++++------------ UFIDA.U8.Framework.Api/App_Data/API_Meta.db | Bin 69632 -> 77824 bytes UFIDA.U8.Framework.Api/App_Data/U8API.xml | 84 +++++++++++ .../App_Data/请购单模板.json | 17 +++ .../Controllers/U8/PUController.cs | 2 +- .../UFIDA.U8.Framework.Api.csproj | 1 + 8 files changed, 210 insertions(+), 112 deletions(-) create mode 100644 UFIDA.U8.Framework.Api/App_Data/请购单模板.json diff --git a/UFIDA.U8.Framework.Api.Common/Entity/SysU8VoucherDefine.cs b/UFIDA.U8.Framework.Api.Common/Entity/SysU8VoucherDefine.cs index b3cc992..1db723c 100644 --- a/UFIDA.U8.Framework.Api.Common/Entity/SysU8VoucherDefine.cs +++ b/UFIDA.U8.Framework.Api.Common/Entity/SysU8VoucherDefine.cs @@ -49,5 +49,17 @@ namespace UFIDA.U8.Framework.Api.Common.Entity [SugarColumn(ColumnDescription = "是否输出DOM")] public bool bPrintDom { get; set; } + /// + /// 是否流程控制 + /// + [SugarColumn(ColumnDescription = "是否流程控制")] + public bool iswfcontrolled { get; set; } + + /// + /// 流程控制字段 + /// + [SugarColumn(ColumnDescription = "流程控制字段")] + public string cFlowFieldName { get; set; } + } } diff --git a/UFIDA.U8.Framework.Api.ControlObject/PU/clsVoucherCO_PU.cs b/UFIDA.U8.Framework.Api.ControlObject/PU/clsVoucherCO_PU.cs index f401b8f..7ab68bf 100644 --- a/UFIDA.U8.Framework.Api.ControlObject/PU/clsVoucherCO_PU.cs +++ b/UFIDA.U8.Framework.Api.ControlObject/PU/clsVoucherCO_PU.cs @@ -1,8 +1,10 @@ using ADODB; using log4net; +using Microsoft.VisualBasic; using MSXML2; using System; using System.Collections.Generic; +using System.Diagnostics; using System.Linq; using System.Reflection.Emit; using System.Text; @@ -61,8 +63,10 @@ namespace UFIDA.U8.Framework.Api.ControlObject.PU /// /// /// + /// + /// /// - public async Task> VoucherSave(BaseLogin baseLogin, Dictionary dictionary, string cardNumber, vouchertype enmVoucherType, bool bPositive = true, string sBillType = null, string sBusType = null, int VoucherState = 2, UseMode UserMode = UseMode.CS, string sOverDetailsXml = null, bool bGetCode = false, string codeKey = null, bool bAudit = false, bool bPrintDom = false) + public async Task> VoucherSave(BaseLogin baseLogin, Dictionary dictionary, string cardNumber, vouchertype enmVoucherType, bool bPositive = true, string sBillType = null, string sBusType = null, int VoucherState = 2, UseMode UserMode = UseMode.CS, string sOverDetailsXml = null, bool bGetCode = false, string codeKey = null, bool bAudit = false, bool bPrintDom = false,bool iswfcontrolled=false,string cFlowFieldName= "IsWfControlled") { try { @@ -129,9 +133,8 @@ namespace UFIDA.U8.Framework.Api.ControlObject.PU IXMLDOMDocument2 domMsg = new DOMDocument(); IXMLDOMDocument2 curDom = new DOMDocument(); - co.bOutTrans = true; - - baseLogin.Connection.BeginTrans(); + + logInfo.Debug($"{baseLogin.Connection.State},{baseLogin.Connection.ConnectionString}"); @@ -140,11 +143,24 @@ namespace UFIDA.U8.Framework.Api.ControlObject.PU var res = new BaseResult(); + if (bAudit) + { + logInfo.Debug("开始事务..."); + co.bOutTrans = true; + + baseLogin.Connection.BeginTrans(); + } + try { logInfo.Debug("开始保存..."); - errorMsg = co.VoucherSave(ref domHead, ref domBody, VoucherState, ref vouchId, ref curDom, UserMode, sOverDetailsXml, ref domMsg); + + errorMsg = bAudit + ? (string)co.VoucherSave2(ref domHead, ref domBody, VoucherState, ref vouchId, sOverDetailsXml, ref domMsg) + : (string)co.VoucherSave(ref domHead, ref domBody, VoucherState, ref vouchId, ref curDom, UserMode, sOverDetailsXml, ref domMsg); + + logInfo.Debug("保存结束..."); logInfo.Debug(errorMsg); logInfo.Debug($"{vouchId}"); @@ -153,15 +169,6 @@ namespace UFIDA.U8.Framework.Api.ControlObject.PU if (!res.bSuccess) { - try - { - baseLogin.Connection.RollbackTrans(); - } - catch (Exception ex) - { - logInfo.Error(ex.Message, ex); - } - if (!string.IsNullOrWhiteSpace(errorMsg)) { throw new Exception(errorMsg); @@ -177,8 +184,20 @@ namespace UFIDA.U8.Framework.Api.ControlObject.PU throw new Exception(curDom.xml); } + throw new Exception("未知错误"); + } + if (iswfcontrolled == false && VoucherState == 2) + { + var strSql = $"UPDATE {vouchers.cBTTblName} SET {cFlowFieldName} = 0 WHERE {vouchers.voucherIdFieldName}={vouchId}"; + + object rsts = new Recordset(); + + baseLogin.Connection.Execute(strSql,out rsts); + } + + res.voucherCode = CommonHelper.GetVoucherCode(baseLogin.Connection, vouchId, vouchers); res.voucherId = $"{vouchId}"; res.result = errorMsg; @@ -186,7 +205,16 @@ namespace UFIDA.U8.Framework.Api.ControlObject.PU } catch (Exception) { - baseLogin.Connection.RollbackTrans(); + try + { + if (bAudit) + baseLogin.Connection.RollbackTrans(); + } + catch(Exception ex) + { + Trace.WriteLine(ex.Message); + } + throw; } @@ -194,7 +222,8 @@ namespace UFIDA.U8.Framework.Api.ControlObject.PU if (!res.bSuccess) { res.message = "保存失败"; - baseLogin.Connection.RollbackTrans(); + if (bAudit) + baseLogin.Connection.RollbackTrans(); return res; } @@ -225,9 +254,15 @@ namespace UFIDA.U8.Framework.Api.ControlObject.PU } } - logInfo.Debug("提交事务..."); + - baseLogin.Connection.CommitTrans(); + if (bAudit) + { + logInfo.Debug("提交事务..."); + + baseLogin.Connection.CommitTrans(); + } + return res; diff --git a/UFIDA.U8.Framework.Api.ControlObject/ST/USERPCO.cs b/UFIDA.U8.Framework.Api.ControlObject/ST/USERPCO.cs index 91787c2..be6fc5d 100644 --- a/UFIDA.U8.Framework.Api.ControlObject/ST/USERPCO.cs +++ b/UFIDA.U8.Framework.Api.ControlObject/ST/USERPCO.cs @@ -122,6 +122,9 @@ namespace UFIDA.U8.Framework.Api.ControlObject.ST IXMLDOMDocument2 domMsg = new DOMDocument(); errorMsg = ""; + + var vouchers = CommonHelper.GetVouchers(baseLogin.Connection, cCardNum); + baseLogin.Connection.BeginTrans(); object vouchId = ""; @@ -140,125 +143,71 @@ namespace UFIDA.U8.Framework.Api.ControlObject.ST } logInfo.Debug("执行插入操作..."); - //var cmd = new Command - //{ - // CommandText = "Select '开始执行插入操作'", - // ActiveConnection = baseLogin.Connection - //}; - //object rsts = new Recordset(); - //cmd.Execute(out rsts); res.bSuccess = co.Insert(sVouchType, domHead, domBody, null, ref errorMsg, baseLogin.Connection, ref vouchId, ref domMsg, bCheck, bBeforCheckStock, bIsRedVouch, sAddedState, bReMote); if (res.bSuccess) { res.voucherId = $"{vouchId}"; logInfo.Debug($"操作完成,操作结果:成功!------[{vouchId}]------[{errorMsg}]------[{domMsg.xml}]"); + + res.voucherCode = CommonHelper.GetVoucherCode(baseLogin.Connection, vouchId, vouchers); + + if (bAudit) + { + var res2 = co.Verify(sVouchType, vouchId, ref errorMsg, baseLogin.Connection, null, ref domMsg); + + if (!res2) + { + baseLogin.Connection.RollbackTrans(); + + if (!string.IsNullOrWhiteSpace(errorMsg)) + throw new Exception(errorMsg); + + if (!string.IsNullOrWhiteSpace(domMsg.xml)) + throw new Exception(domMsg.xml); + + throw new Exception("审核单据时发生异常,请检查数据"); + } + + baseLogin.Connection.CommitTrans(); + + res.message = "新增成功"; + } + + res.message = "新增成功"; + } else { logInfo.Debug($"操作完成,操作结果:失败!------[{vouchId}]------[{errorMsg}]------[{domMsg.xml}]"); + + baseLogin.Connection.RollbackTrans(); + + if (!string.IsNullOrWhiteSpace(errorMsg)) + throw new Exception(errorMsg); + + if (!string.IsNullOrWhiteSpace(domMsg.xml)) + throw new Exception(domMsg.xml); + + throw new Exception("新增单据时发生异常,请检查数据"); } } catch (Exception) { baseLogin.Connection.RollbackTrans(); - await Task.Delay(1); throw; } - res.message = errorMsg; - - if (res.bSuccess && bAudit) - { - errorMsg = ""; - try - { - if (!co.Verify(sVouchType, vouchId, ref errorMsg, baseLogin.Connection, null, ref domMsg)) - { - baseLogin.Connection.RollbackTrans(); - - if (!string.IsNullOrWhiteSpace(errorMsg)) - throw new Exception(errorMsg); - - throw new Exception("审核单据时发生异常,请检查数据"); - } - } - catch (Exception) - { - baseLogin.Connection.RollbackTrans(); - res.bSuccess = false; - throw; - } - } - - if (!res.bSuccess) - { - baseLogin.Connection.RollbackTrans(); - - if (!string.IsNullOrWhiteSpace(errorMsg)) - throw new Exception(errorMsg); - - throw new Exception(domMsg.xml); - } - - baseLogin.Connection.CommitTrans(); - - 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.bSuccess = false; - res.result = $"已在U8生成单据ID为{vouchId}的单据,但是未能查询到该单据的配置信息!"; - } - else - { - rst.MoveFirst(); - var fieldName = $"{rst.Fields["c"].Value}"; - var codeName = $"{rst.Fields["ReceiptNOFieldName"].Value}"; - if (string.IsNullOrWhiteSpace(fieldName) || string.IsNullOrWhiteSpace(codeName)) - { - res.voucherCode = $"{res.voucherId}"; - } - else - { - if (codeName.Contains("{##}")) - { - 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 - { - rst.MoveFirst(); - res.voucherCode = $"{rst.Fields["cCode"].Value}"; - } - } - } - - res.message = "新增成功"; - res.result = $"{vouchId}"; - - return res; - //var bodys = dictionary.TryGetValue() dictionary["body"]; - - } catch (Exception ex) { logInfo.Error(ex.Message, ex); + await Task.Delay(1); + return new BaseResult { bSuccess = false, message = "新增失败", result = ex.Message }; } diff --git a/UFIDA.U8.Framework.Api/App_Data/API_Meta.db b/UFIDA.U8.Framework.Api/App_Data/API_Meta.db index 7b2add4b59d679a9520eb93872bfe4b43a893daa..9fabfeab3d7ff5aa4e90d566ca063b8f4c47497f 100644 GIT binary patch delta 1065 zcmaKrPiWIn9LJNUZTc_yHAzFq##|}WF`1Y&8?N|g=tfb-tX1Yk(A6$;h1zJhId-w@ zEO;7hypy712f@QYR*UnZFmbrC9lVMN4lf?`unC@oVcuKX#fyRPl26|6`+o0}WO~s# zz3rT968b5MlFYMqw9R*Dbbn>&+3`j{j~M#j|6wMPGbR&RJvV$YeOr%4^7qn(%xJp6 z`PygFAvT;!(dA=kY9;C-Tfuv9lPeMJtcOr}C2T#|d3y@Azs{k#t%jrjT^A>xk=XFS z0R6zg$&8tYbDicW)KUpN$ZV>vy?f$tXaYL49HRjR*B9MMaECLe(bJ6v^lL*y%j>VI zLu<>9>eAL=Uz9VAar_szDEcrJ%(;rDbYZG?iC!Cvk;u5{u`yDubca~X zig=;RmlQG)kKnHLqmYSl(PgXcBx}S(r;TZtX)%!@%>0;?PL;%|YS4khaDOpUsi-1d zuk6J8IAXS}?5oPq}Pe}KQ7KaO9X-;$q` zf5pbe6MRf6Oq2K7DNJUupDWJ=(J98mY{(c~SsZE+mS38jky_-EnwFWD%Def1y<>wU zM=Ap+;}HhlLhjWp3G5p~JLz?i?WF`JRANko`k+|ZD*Ie7B)1DcG2lMfzv KuzAJl2p0el^g+b{ diff --git a/UFIDA.U8.Framework.Api/App_Data/U8API.xml b/UFIDA.U8.Framework.Api/App_Data/U8API.xml index 1554f62..b5076d7 100644 --- a/UFIDA.U8.Framework.Api/App_Data/U8API.xml +++ b/UFIDA.U8.Framework.Api/App_Data/U8API.xml @@ -765,6 +765,90 @@ 为空 + + + 弃审单据(单号) + + 系统号 + 单据类型编码 + 单号 + 红蓝标识:True,蓝字 + 发票类型(普通发票 ppurbill,专用发票 purbill,运费发票 ypurbill);到货单类型(到货单 0,退货单 1,拒收单 2) + 业务类型:普通采购,直运采购,受托代销 + CS 0,BS 1;一般CS + 为空 + + + + + 弃审单据(ID) + + 系统号 + 单据类型编码 + 单据ID + 红蓝标识:True,蓝字 + 发票类型(普通发票 ppurbill,专用发票 purbill,运费发票 ypurbill);到货单类型(到货单 0,退货单 1,拒收单 2) + 业务类型:普通采购,直运采购,受托代销 + CS 0,BS 1;一般CS + 为空 + + + + + 弃审单据(批量) + + 系统号 + 单据类型编码 + 报文 + 红蓝标识:True,蓝字 + 发票类型(普通发票 ppurbill,专用发票 purbill,运费发票 ypurbill);到货单类型(到货单 0,退货单 1,拒收单 2) + 业务类型:普通采购,直运采购,受托代销 + CS 0,BS 1;一般CS + 为空 + + + + + 删除单据(单号) + + 系统号 + 单据类型编码 + 单号 + 红蓝标识:True,蓝字 + 发票类型(普通发票 ppurbill,专用发票 purbill,运费发票 ypurbill);到货单类型(到货单 0,退货单 1,拒收单 2) + 业务类型:普通采购,直运采购,受托代销 + CS 0,BS 1;一般CS + 为空 + + + + + 删除单据(ID) + + 系统号 + 单据类型编码 + 单据ID + 红蓝标识:True,蓝字 + 发票类型(普通发票 ppurbill,专用发票 purbill,运费发票 ypurbill);到货单类型(到货单 0,退货单 1,拒收单 2) + 业务类型:普通采购,直运采购,受托代销 + CS 0,BS 1;一般CS + 为空 + + + + + 删除单据(批量) + + 系统号 + 单据类型编码 + 报文 + 红蓝标识:True,蓝字 + 发票类型(普通发票 ppurbill,专用发票 purbill,运费发票 ypurbill);到货单类型(到货单 0,退货单 1,拒收单 2) + 业务类型:普通采购,直运采购,受托代销 + CS 0,BS 1;一般CS + 为空 + + 车间管理 diff --git a/UFIDA.U8.Framework.Api/App_Data/请购单模板.json b/UFIDA.U8.Framework.Api/App_Data/请购单模板.json new file mode 100644 index 0000000..e2efae5 --- /dev/null +++ b/UFIDA.U8.Framework.Api/App_Data/请购单模板.json @@ -0,0 +1,17 @@ +{ + "ddate": "2025-05-08", + "ccode": "0000000001", + "cbustype": "普通采购", + "cmaker": "demo", + "iswfcontrolled": 0, + "body": [ + { + "cinvcode": "01019002063", + "fquantity": 3, + "editprop": "A", + "drequirdate": "2025-05-08", + "darrivedate": "2025-05-08", + "iexchrate": 1 + } + ] +} \ No newline at end of file diff --git a/UFIDA.U8.Framework.Api/Controllers/U8/PUController.cs b/UFIDA.U8.Framework.Api/Controllers/U8/PUController.cs index c7fbbb6..455a23c 100644 --- a/UFIDA.U8.Framework.Api/Controllers/U8/PUController.cs +++ b/UFIDA.U8.Framework.Api/Controllers/U8/PUController.cs @@ -148,7 +148,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8 var co = new clsVoucherCO_PU(); - var res = await co.VoucherSave(baseLogin, input, cCardNum, (vouchertype)Convert.ToInt32(voucherInfo.VoucherType), bPositive, sBillType, sBusType, VoucherState, UserMode, sOverDetailsXml, bGetCode, codeKey, voucherInfo.bVerify, voucherInfo.bPrintDom); + var res = await co.VoucherSave(baseLogin, input, cCardNum, (vouchertype)Convert.ToInt32(voucherInfo.VoucherType), bPositive, sBillType, sBusType, VoucherState, UserMode, sOverDetailsXml, bGetCode, codeKey, voucherInfo.bVerify, voucherInfo.bPrintDom,voucherInfo.iswfcontrolled,voucherInfo.cFlowFieldName); return res; } diff --git a/UFIDA.U8.Framework.Api/UFIDA.U8.Framework.Api.csproj b/UFIDA.U8.Framework.Api/UFIDA.U8.Framework.Api.csproj index be862b1..9999079 100644 --- a/UFIDA.U8.Framework.Api/UFIDA.U8.Framework.Api.csproj +++ b/UFIDA.U8.Framework.Api/UFIDA.U8.Framework.Api.csproj @@ -485,6 +485,7 @@ + Designer