From 16d9a34db75b29ac3ee98112a5f48cd4209b27fb Mon Sep 17 00:00:00 2001 From: xiongshuai <873144595@qq.com> Date: Tue, 2 Dec 2025 16:17:31 +0800 Subject: [PATCH] =?UTF-8?q?=E9=94=80=E5=94=AE=E5=A2=9E=E5=80=BC=E7=A8=8E?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BF=9D=E5=AD=98=E5=8F=8D=E5=86=99=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ServicePlugIn/AfterSave.cs | 51 +++++++++++-------- 1 file changed, 30 insertions(+), 21 deletions(-) diff --git a/Gatedge.K3.Pilot.PlugIn/BOSPlugIn/AR_SalesVATInvoice/ServicePlugIn/AfterSave.cs b/Gatedge.K3.Pilot.PlugIn/BOSPlugIn/AR_SalesVATInvoice/ServicePlugIn/AfterSave.cs index d663ec2..389f0b7 100644 --- a/Gatedge.K3.Pilot.PlugIn/BOSPlugIn/AR_SalesVATInvoice/ServicePlugIn/AfterSave.cs +++ b/Gatedge.K3.Pilot.PlugIn/BOSPlugIn/AR_SalesVATInvoice/ServicePlugIn/AfterSave.cs @@ -1,12 +1,14 @@ using Kingdee.BOS; using Kingdee.BOS.Core.DynamicForm.PlugIn; using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; +using Kingdee.BOS.Log; +using Kingdee.BOS.Orm; using Kingdee.BOS.Orm.DataEntity; using Kingdee.BOS.ServiceHelper; using Kingdee.BOS.Util; using System; using System.ComponentModel; -using System.Linq; +using System.Dynamic; namespace Gatedge.K3.Pilot.PlugIn.BOSPlugIn.AR_SalesVATInvoice.ServicePlugIn { @@ -16,12 +18,12 @@ namespace Gatedge.K3.Pilot.PlugIn.BOSPlugIn.AR_SalesVATInvoice.ServicePlugIn public override void OnPreparePropertys(PreparePropertysEventArgs e) { base.OnPreparePropertys(e); - // 添加需要加载的字段 - e.FieldKeys.Add("FENTRYID"); + // 根据日志中的实际实体属性名来添加 e.FieldKeys.Add("FIDD"); e.FieldKeys.Add("FSEQQ"); - e.FieldKeys.Add("FSRCBILLTYPEID"); - e.FieldKeys.Add("FSRCBILLNO"); + e.FieldKeys.Add("SRCBILLTYPEID"); // 实体属性名(没有F前缀) + e.FieldKeys.Add("SRCBILLNO"); // 实体属性名(没有F前缀) + e.FieldKeys.Add("FSEQ"); } public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e) @@ -41,56 +43,63 @@ namespace Gatedge.K3.Pilot.PlugIn.BOSPlugIn.AR_SalesVATInvoice.ServicePlugIn foreach (var entry in entrys) { - var entryId = Convert.ToInt64(entry["Id"]); + // 使用 Id 获取主键值 + var entryId = Convert.ToInt64(entry.GetPrimaryKeyValue()); var fidd = entry["FIDD"]; var fiddValue = fidd == null ? 0 : Convert.ToInt64(fidd); if (fiddValue > 0) { // FIDD > 0 时,判断是否需要回写 - var srcBillNo = entry["FSRCBILLNO"]?.ToString() ?? ""; + var srcBillNo = entry["SRCBILLNO"]?.ToString() ?? ""; - // FIDD != 当前行FENTRYID 且 源单编号为空 时才回写 + // 判断条件:FIDD != 当前行ID 且 源单编号为空 if (fiddValue != entryId && string.IsNullOrWhiteSpace(srcBillNo)) { - // 查询源单据体信息(主键=FIDD的明细行) + // 查询源单据体信息(FID = fiddValue的明细行) + // 这里使用数据库字段名(带F前缀) var sql = $@"/*dialect*/ SELECT FSRCBILLTYPEID, FSRCBILLNO, FSEQ FROM T_IV_SALESICENTRY WHERE FENTRYID = {fiddValue}"; - + Logger.Error("销售增值税专用发票", sql, new Exception()); + Logger.Error("销售增值税专用发票", "78", new Exception()); var result = DBServiceHelper.ExecuteDynamicObject(this.Context, sql); if (result == null || result.Count == 0) continue; var srcData = result[0]; - var srcBillTypeId = srcData["FSRCBILLTYPEID"]; - var srcBillNoValue = srcData["FSRCBILLNO"]; + // 注意:SQL查询返回的是数据库字段名(带F前缀) + var srcBillTypeId = srcData["FSRCBILLTYPEID"]?.ToString() ?? ""; + var srcBillNoValue = srcData["FSRCBILLNO"]?.ToString() ?? ""; // 回写当前单据体:源单类型、源单编号 + // 这里使用数据库字段名(带F前缀) var updateSql = $@"/*dialect*/ UPDATE T_IV_SALESICENTRY -SET FSRCBILLTYPEID = '{srcBillTypeId}', - FSRCBILLNO = '{srcBillNoValue}' +SET FSRCBILLTYPEID = '{srcBillTypeId.Replace("'", "''")}', + FSRCBILLNO = '{srcBillNoValue.Replace("'", "''")}' WHERE FENTRYID = {entryId}"; - + Logger.Error("销售增值税专用发票", updateSql, new Exception()); + Logger.Error("销售增值税专用发票", "78", new Exception()); DBServiceHelper.Execute(this.Context, updateSql); } } else { - // FIDD <= 0 时,把当前行FENTRYID赋值给FIDD,同时把FSEQ赋值给FSEQQ + // FIDD <= 0 时,把当前行FID赋值给FIDD,同时把FSEQ赋值给FSEQQ + var seq = entry["FSEQ"]?.ToString() ?? "0"; var updateSql = $@"/*dialect*/ UPDATE T_IV_SALESICENTRY -SET FIDD = FENTRYID, - FSEQQ = FSEQ +SET FIDD = {entryId}, + FSEQQ = '{seq.Replace("'", "''")}' WHERE FENTRYID = {entryId}"; - + Logger.Error("销售增值税专用发票", updateSql, new Exception()); + Logger.Error("销售增值税专用发票", "78", new Exception()); DBServiceHelper.Execute(this.Context, updateSql); } } } } } -} - +} \ No newline at end of file