From e383743627f94e837c18111318c8261391029c03 Mon Sep 17 00:00:00 2001
From: 王 垚 <1402714037@qq.com>
Date: 星期五, 26 二月 2021 13:44:03 +0800
Subject: [PATCH] 日计划用料清单下推直接调拨单 关联关系以及反写 代码上传 测试通过
---
src/BLL/Demo.BillView/Demo.BillView.csproj | 3
src/BLL/Demo.BillView/PRD/Pro_DayPlanPushZJDB2.cs | 273 +++++++++++++++++++++++++++
src/BLL/Demo.BillView/PRD/Pro_ZJDBFSH.cs | 67 ++++++
src/BLL/Demo.BillView/PRD/Pro_DayPlanPushZJDB.cs | 71 +++++--
src/BLL/Demo.BillView/PRD/Pro_MaterialRequisitionAuditDayPlan.cs | 65 +++++-
src/BLL/Demo.BillView/PRD/Pro_ZJDBSH.cs | 66 ++++++
6 files changed, 510 insertions(+), 35 deletions(-)
diff --git a/src/BLL/Demo.BillView/Demo.BillView.csproj b/src/BLL/Demo.BillView/Demo.BillView.csproj
index 5196cd6..559b555 100644
--- a/src/BLL/Demo.BillView/Demo.BillView.csproj
+++ b/src/BLL/Demo.BillView/Demo.BillView.csproj
@@ -220,6 +220,9 @@
<Compile Include="PRD\ProCompleteAnalysisMateriel.cs" />
<Compile Include="PRD\ProCompleteAnalysisDetails.cs" />
<Compile Include="PRD\Pro_DayPlanCheckSelectMenu.cs" />
+ <Compile Include="PRD\Pro_ZJDBSH.cs" />
+ <Compile Include="PRD\Pro_ZJDBFSH.cs" />
+ <Compile Include="PRD\Pro_DayPlanPushZJDB2.cs" />
<Compile Include="PRD\Pro_DayPlanSelectMenu.cs" />
<Compile Include="PRD\Pro_DayPlanPushZJDB.cs" />
<Compile Include="PRD\Pro_MaterialRequisitionAuditDayPlan.cs" />
diff --git a/src/BLL/Demo.BillView/PRD/Pro_DayPlanPushZJDB.cs b/src/BLL/Demo.BillView/PRD/Pro_DayPlanPushZJDB.cs
index fcccd16..9320029 100644
--- a/src/BLL/Demo.BillView/PRD/Pro_DayPlanPushZJDB.cs
+++ b/src/BLL/Demo.BillView/PRD/Pro_DayPlanPushZJDB.cs
@@ -16,13 +16,13 @@
namespace Demo.DynamicForm.PRD
{
/// <summary>
- /// 鎻掍欢绀轰緥锛氬紩鍏ラ攢鍞嚭搴撳崟锛屽缓绔嬩笌閿�鍞鍗曠殑鍏宠仈
+ /// 鏃ヨ鍒掔敤鏂欐竻鍗曚笅鎺ㄥ悗锛屽缓绔嬬洿鎺ヨ皟鎷ㄥ崟涓庢棩璁″垝鐢ㄦ枡娓呭崟鍏宠仈鍏崇郴
/// </summary>
/// <remarks>
/// 瑕佹眰锛�
/// 1. 闇�瑕佸紩鍏ュ崟鎹綋鐨勬簮鍗曠被鍨嬨�佹簮鍗曠紪鍙峰瓧娈�
- /// 2. 鏈彃浠舵寕鍦ㄩ攢鍞嚭搴撳崟鐨勪繚瀛樻搷浣滀笂
- /// 鍑哄簱鍏宠仈閿�鍞鍗�
+ /// 2. 鏈彃浠舵寕鍦ㄧ洿鎺ヨ皟鎷ㄥ崟鐨勪繚瀛樻搷浣滀笂
+ /// 鐩存帴璋冩嫧鍗曞叧鑱旀棩璁″垝鐢ㄦ枡娓呭崟
/// </remarks>
[Description("鏃ヨ鍒掔敤鏂欐竻鍗曚笅鎺ㄥ悗锛屽缓绔嬬洿鎺ヨ皟鎷ㄥ崟涓庣敓浜х敤鏂欐竻鍗曞叧鑱斿叧绯�")]
[HotUpdate]
@@ -42,6 +42,7 @@
e.FieldKeys.Add("FBaseJoinQty");
}
private const string POFormId = "PRD_PPBOM";
+ public List<string> FentryIdList = new List<string>();
public override void BeforeExecuteOperationTransaction(BeforeExecuteOperationTransaction e)
{
base.BeforeExecuteOperationTransaction(e);
@@ -57,15 +58,18 @@
as DynamicObjectCollection;
foreach (var entryRow in entryRows)
{
+ //鐢熶骇鐢ㄦ枡娓呭崟涓虹┖鏃�
+ if (Convert.ToString(entryRow["FDayPlanBillNo"]) == "")
+ continue;
string srcFormId = "";
string srcSrcBillNo = "";
string FPPBOMFENTRYID = "";
try
{
srcFormId = "PRD_PPBOM";
- srcSrcBillNo = entryRow["FPPBOMBILLNO"].ToString();
- string FPPBOMFID = entryRow["FPPOMFID"].ToString();
- FPPBOMFENTRYID = entryRow["FPPBOMFENTRYID"].ToString();
+ srcSrcBillNo = entryRow["FPPBOMBILLNO"]?.ToString();
+ string FPPBOMFID = entryRow["FPPOMFID"]?.ToString();
+ FPPBOMFENTRYID = entryRow["FPPBOMFENTRYID"]?.ToString();
}
catch (Exception)
{
@@ -101,10 +105,11 @@
as DynamicObjectCollection;
foreach (var entryRow in entryRows)
{
+
string srcFormId = "PRD_PPBOM";
- string srcSrcBillNo = entryRow["FPPBOMBILLNO"].ToString();
- string FPPBOMFID = entryRow["FPPOMFID"].ToString();
- string FPPBOMFENTRYID = entryRow["FPPBOMFENTRYID"].ToString();
+ string srcSrcBillNo = entryRow["FPPBOMBILLNO"]?.ToString();
+ string FPPBOMFID = entryRow["FPPOMFID"]?.ToString();
+ string FPPBOMFENTRYID = entryRow["FPPBOMFENTRYID"]?.ToString();
if (string.IsNullOrWhiteSpace(srcFormId)
|| string.IsNullOrWhiteSpace(srcSrcBillNo)
@@ -123,6 +128,10 @@
bool Ret = SourceVerification(Convert.ToString(entryRow["Id"]));
if (!Ret) continue;
+ //璁板綍婧愬崟ID 鐢ㄤ簬鏇存柊
+ if (!FentryIdList.Contains(entryRow["Id"]?.ToString()))
+ FentryIdList.Add(entryRow["Id"]?.ToString());
+
DynamicObjectCollection linkRows = linkEntry.DynamicProperty.GetValue(entryRow)
as DynamicObjectCollection;
DynamicObject linkRow = new DynamicObject(linkEntry.DynamicObjectType);
@@ -137,20 +146,42 @@
dbService.AutoSetPrimaryKey(this.Context, allNewLinkRows.ToArray(), linkEntry.DynamicObjectType);
}
-
- public override void EndOperationTransaction(EndOperationTransactionArgs e)
+ /// <summary>
+ /// 淇濆瓨鎿嶄綔鍏宠仈鍏崇郴鍐欏叆瀹屾垚鍚� 鏇存敼婧愬崟淇℃伅
+ /// </summary>
+ /// <param name="e"></param>
+ public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
{
- base.EndOperationTransaction(e);
- string sql = @"/*dialect*/
+ base.AfterExecuteOperationTransaction(e);
+ //鏇存敼LK琛ㄤ俊鎭� 浠ュ強 婧愬崟鍏宠仈淇℃伅
+ List<string> sqlList = new List<string>();
+ string sql = "";
+ if (FentryIdList.Count > 0)
+ {
+ string FentryId = string.Join(",", FentryIdList.ToArray());
+ sql = string.Format(@"/*dialect*/
update a set FBASEQTY = FQTY
from T_STK_STKTRANSFERINENTRY_LK a
join T_STK_STKTRANSFERINENTRY b on a.FENTRYID = b.FENTRYID
- where a.FSTABLENAME = 'T_PRD_PPBOMENTRY' and a.FBASEQTY = 0";
- DBServiceHelper.Execute(Context, sql);
+ where
+ --a.FSTABLENAME = 'T_PRD_PPBOMENTRY' and
+ a.FENTRYID in ({0})", FentryId);
+ sqlList.Add(sql);
+ sql = string.Format(@"/*dialect*/update T_STK_STKTRANSFERINENTRY_R
+ set FSrcBillTypeId = 'PRD_PPBOM',FSRCBILLNO=b.FPPBOMBILLNO
+ ,FTRANSRESERVELINK=1
+ from T_STK_STKTRANSFERINENTRY_R a
+ join T_STK_STKTRANSFERINENTRY b on a.FENTRYID=b.FENTRYID
+ where a.FENTRYID in({0})", FentryId);
+ sqlList.Add(sql);
+ DBServiceHelper.ExecuteBatch(Context, sqlList);
+ }
+
}
+
/// <summary>
- /// 鍔犺浇鐩稿叧鐨勯攢鍞鍗曟暟鎹�
+ /// 鍔犺浇鐩稿叧鐨勭敓浜х敤鏂欐竻鍗曚俊鎭�
/// </summary>
/// <param name="poBillNos"></param>
/// <returns></returns>
@@ -159,7 +190,7 @@
IViewService viewService = ServiceHelper.GetService<IViewService>();
string formId = "PRD_PPBOM";
- // 鎸囧畾闇�瑕佸姞杞界殑閿�鍞鍗曞瓧娈�
+ // 鎸囧畾闇�瑕佸姞杞界殑鐢ㄦ枡娓呭崟瀛楁
List<SelectorItemInfo> fields = new List<SelectorItemInfo>();
fields.Add(new SelectorItemInfo("FID")); // 鍗曟嵁涓婚敭
fields.Add(new SelectorItemInfo("FTreeEntity_FEntryID")); // 鍗曟嵁浣撲富閿�
@@ -179,7 +210,7 @@
return objs;
}
/// <summary>
- /// 鎶婇攢鍞鍗曞崟鎹綋琛屾瀯寤轰负瀛楀吀锛欴ictionary(鍗曟嵁缂栧彿, Dictionary(鐗╂枡缂栫爜, 婧愬崟琛�));
+ /// 鎶婄敤鏂欐竻鍗曞崟鎹綋琛屾瀯寤轰负瀛楀吀锛欴ictionary(鍗曟嵁缂栧彿, Dictionary(鐗╂枡缂栫爜, 婧愬崟琛�));
/// </summary>
/// <param name="poObjs"></param>
/// <returns></returns>
@@ -204,7 +235,7 @@
return dctAllBills;
}
/// <summary>
- /// 鑾峰彇閿�鍞鍗曞叧鑱斾富瀹炰綋琛ㄦ牸缂栫爜
+ /// 鑾峰彇鐢ㄦ枡娓呭崟鍏宠仈涓诲疄浣撹〃鏍肩紪鐮�
/// </summary>
/// <returns></returns>
private string GetPOEntryTableNumber()
@@ -242,7 +273,7 @@
/// <returns></returns>
public bool SourceVerification(string FTID)
{
- string sql = $" select count(*) from T_BF_INSTANCEENTRY where FSTABLENAME= 'T_PRD_PPBOMENTRY' and FTID = '{FTID}'";
+ string sql = $" select count(*) from T_BF_INSTANCEENTRY where FSTABLENAME= 'T_PRD_PPBOMENTRY' and FTTABLENAME = 'T_STK_STKTRANSFERINENTRY' and FTID = '{FTID}'";
int count = DBServiceHelper.ExecuteScalar<int>(Context, sql, 0);
if (count == 0)
return true;
diff --git a/src/BLL/Demo.BillView/PRD/Pro_DayPlanPushZJDB2.cs b/src/BLL/Demo.BillView/PRD/Pro_DayPlanPushZJDB2.cs
new file mode 100644
index 0000000..14eaf46
--- /dev/null
+++ b/src/BLL/Demo.BillView/PRD/Pro_DayPlanPushZJDB2.cs
@@ -0,0 +1,273 @@
+锘縰sing System;
+using System.Collections.Generic;
+using Kingdee.BOS.Util;
+using Kingdee.BOS.Core.Metadata;
+using Kingdee.BOS.Core.Metadata.EntityElement;
+using Kingdee.BOS.Core.DynamicForm.PlugIn;
+using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
+using Kingdee.BOS.Orm.DataEntity;
+using Kingdee.BOS.Contracts;
+using Kingdee.BOS.App;
+using Kingdee.BOS.Core.Metadata.FieldElement;
+using System.ComponentModel;
+using Kingdee.BOS.ServiceHelper;
+using Kingdee.K3.SCM.App;
+using System.Data;
+
+namespace Demo.DynamicForm.PRD
+{
+ /// <summary>
+ /// 鎻掍欢绀轰緥锛氬紩鍏ラ攢鍞嚭搴撳崟锛屽缓绔嬩笌閿�鍞鍗曠殑鍏宠仈
+ /// </summary>
+ /// <remarks>
+ /// 瑕佹眰锛�
+ /// 1. 闇�瑕佸紩鍏ュ崟鎹綋鐨勬簮鍗曠被鍨嬨�佹簮鍗曠紪鍙峰瓧娈�
+ /// 2. 鏈彃浠舵寕鍦ㄩ攢鍞嚭搴撳崟鐨勬彁浜ゆ搷浣滀笂
+ /// 鍑哄簱鍏宠仈閿�鍞鍗�
+ /// 鏆傛椂涓嶄娇鐢�
+ /// </remarks>
+ [Description("鏃ヨ鍒掔敤鏂欐竻鍗曚笅鎺ㄥ悗锛屽缓绔嬬洿鎺ヨ皟鎷ㄥ崟涓庢棩璁″垝鐢ㄦ枡娓呭崟鍏宠仈鍏崇郴")]
+ [HotUpdate]
+ public class Pro_DayPlanPushZJDB2 : AbstractOperationServicePlugIn
+ {
+ public override void OnPreparePropertys(PreparePropertysEventArgs e)
+ {
+ base.OnPreparePropertys(e);
+ e.FieldKeys.Add("FSrcBillType");
+ e.FieldKeys.Add("FSrcBillNo");
+ e.FieldKeys.Add("FID");
+ e.FieldKeys.Add("FTreeEntity_FEntryID");
+ e.FieldKeys.Add("FBillNo");
+ e.FieldKeys.Add("FBFLowId");
+ e.FieldKeys.Add("FMaterialId");
+ e.FieldKeys.Add("FBaseUnitQty");
+ e.FieldKeys.Add("FBaseJoinQty");
+ e.FieldKeys.Add("FDayPlanBillNo");
+ }
+ private const string POFormId = "Paez_Sc_DayPlanPPBomBill";
+ public List<string> FentryIdList = new List<string>();
+ public override void BeforeExecuteOperationTransaction(BeforeExecuteOperationTransaction e)
+ {
+ base.BeforeExecuteOperationTransaction(e);
+ HashSet<string> poBillNos = new HashSet<string>();
+ Entity entity = this.BusinessInfo.GetEntity("FBillEntry");//鑾峰彇鏄庣粏淇℃伅
+ Entity linkEntry = this.BusinessInfo.GetEntity("FBillEntry_Link");
+ Field fldSrcFormId = this.BusinessInfo.GetField("FSrcBillType");
+ Field fldSrcBillNo = this.BusinessInfo.GetField("FSrcBillNo");
+ // 瀵瑰崟鎹綋杩涜寰幆锛屽彇鍏宠仈鐨勬簮鍗曠紪鍙�
+ foreach (var billObj in e.SelectedRows)
+ {
+ DynamicObjectCollection entryRows = entity.DynamicProperty.GetValue(billObj.DataEntity)
+ as DynamicObjectCollection;
+ foreach (var entryRow in entryRows)
+ {
+ string srcFormId = "";
+ string srcSrcBillNo = "";
+ string FPPBOMFENTRYID = "";
+ try
+ {
+ srcFormId = "Sc_DayPlanPPBomBillSub";
+ srcSrcBillNo = entryRow["FDayPlanBillNo"]?.ToString();
+ //string FPPBOMFID = entryRow["FDayPlanFid"]?.ToString();
+ //FPPBOMFENTRYID = entryRow["FDayPlanFentryId"]?.ToString();
+ }
+ catch (Exception)
+ {
+ }
+ if (string.IsNullOrWhiteSpace(srcFormId)
+ || string.IsNullOrWhiteSpace(srcSrcBillNo)
+ )
+ {// 婧愬崟涓嶆槸閲囪喘璁㈠崟锛岀暐杩�
+ continue;
+ }
+ // 婧愬崟缂栧彿宸茬粡鐧昏锛屼笉鍐嶉噸澶嶈褰曪紝鐣ヨ繃
+ if (poBillNos.Contains(srcSrcBillNo)) continue;
+ // Link宸茬粡璁板綍浜嗘簮鍗曚俊鎭紝鐣ヨ繃
+ //DynamicObjectCollection linkRows = linkEntry.DynamicProperty.GetValue(entryRow)
+ // as DynamicObjectCollection;
+ //if (linkRows.Count > 0) continue;
+ bool Ret = SourceVerification(Convert.ToString(entryRow["Id"]));
+ if (!Ret) continue;
+
+ poBillNos.Add(srcSrcBillNo);
+ }
+ }
+ if (poBillNos.Count == 0) return;
+ DynamicObject[] poObjs = this.LoadPurchaseOrder(poBillNos);
+ if (poObjs == null || poObjs.Length == 0) return;
+ Dictionary<string, Dictionary<string, DynamicObject>> dctAllBills = this.BuildDictionary(poObjs);
+ string srcTableNumber = this.GetPOEntryTableNumber();
+ List<DynamicObject> allNewLinkRows = new List<DynamicObject>();
+ // 寰幆鍗曟嵁浣擄紝涓哄崟鎹綋锛屽缓绔嬭捣婧愬崟鍏宠仈淇℃伅锛�
+ foreach (var billObj in e.SelectedRows)
+ {
+ DynamicObjectCollection entryRows = entity.DynamicProperty.GetValue(billObj.DataEntity)
+ as DynamicObjectCollection;
+ foreach (var entryRow in entryRows)
+ {
+
+ string srcFormId = "Sc_DayPlanPPBomBillSub";
+ string srcSrcBillNo = entryRow["FDayPlanBillNo"]?.ToString();
+ //string FPPBOMFID = entryRow["FDayPlanFid"]?.ToString();
+ //string FPPBOMFENTRYID = entryRow["FDayPlanFentryId"]?.ToString();
+
+ if (string.IsNullOrWhiteSpace(srcFormId)
+ || string.IsNullOrWhiteSpace(srcSrcBillNo)
+ )
+ {// 婧愬崟涓嶆槸閿�鍞鍗曪紝鐣ヨ繃
+ continue;
+ }
+ Dictionary<string, DynamicObject> dctOneBill = null;
+ if (dctAllBills.TryGetValue(srcSrcBillNo, out dctOneBill) == false) continue;
+ DynamicObject materialObj = entryRow["MaterialId"] as DynamicObject;
+ if (materialObj == null) continue;
+ string materialNumber = Convert.ToString(materialObj["number"]);
+ DynamicObject srcRow = null;
+ if (dctOneBill.TryGetValue(materialNumber, out srcRow) == false) continue;
+ // Link宸茬粡璁板綍浜嗘簮鍗曚俊鎭紝鐣ヨ繃
+ bool Ret = SourceVerification(Convert.ToString(entryRow["Id"]));
+ if (!Ret) continue;
+
+ //璁板綍婧愬崟ID 鐢ㄤ簬鏇存柊
+ if (!FentryIdList.Contains(entryRow["Id"]?.ToString()))
+ FentryIdList.Add(entryRow["Id"]?.ToString());
+
+ DynamicObjectCollection linkRows = linkEntry.DynamicProperty.GetValue(entryRow)
+ as DynamicObjectCollection;
+
+ DynamicObject linkRow = new DynamicObject(linkEntry.DynamicObjectType);
+ linkRow["STableName"] = srcTableNumber;
+ this.FillLinkRow(srcRow, entryRow, linkRow);
+ linkRows.Add(linkRow);
+ allNewLinkRows.Add(linkRow);
+ }
+ }
+ // 涓烘柊寤虹殑婧愬崟鍏宠仈淇℃伅锛岃缃唴鐮�
+ IDBService dbService = ServiceHelper.GetService<IDBService>();
+ dbService.AutoSetPrimaryKey(this.Context, allNewLinkRows.ToArray(), linkEntry.DynamicObjectType);
+ }
+
+ // public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
+ // {
+ // base.AfterExecuteOperationTransaction(e);
+ // string FentryId = string.Join(",", FentryIdList.ToArray());
+ // List<string> sqlList = new List<string>();
+ // string sql = string.Format(@"/*dialect*/
+ // update a set FBASEQTY = FQTY
+ // from T_STK_STKTRANSFERINENTRY_LK a
+ // join T_STK_STKTRANSFERINENTRY b on a.FENTRYID = b.FENTRYID
+ // where
+ // --a.FSTABLENAME = 'T_PRD_PPBOMENTRY' and
+ // a.FENTRYID in ({0})", FentryId);
+ // sqlList.Add(sql);
+ // sql = string.Format(@"/*dialect*/update T_STK_STKTRANSFERINENTRY_R
+ //set FSrcBillTypeId = 'PRD_PPBOM',FSRCBILLNO=b.FPPBOMBILLNO
+ //,FTRANSRESERVELINK=1
+ //from T_STK_STKTRANSFERINENTRY_R a
+ //join T_STK_STKTRANSFERINENTRY b on a.FENTRYID=b.FENTRYID
+ //where a.FENTRYID in({0})", FentryId);
+ // sqlList.Add(sql);
+ // DBServiceHelper.ExecuteBatch(Context, sqlList);
+ // //DBServiceHelper.Execute(Context, sql);
+ // }
+
+
+ /// <summary>
+ /// 鍔犺浇鐩稿叧鐨勯攢鍞鍗曟暟鎹�
+ /// </summary>
+ /// <param name="poBillNos"></param>
+ /// <returns></returns>
+ private DynamicObject[] LoadPurchaseOrder(HashSet<string> poBillNos)
+ {
+ IViewService viewService = ServiceHelper.GetService<IViewService>();
+ string formId = "Paez_Sc_DayPlanPPBomBill";
+
+ // 鎸囧畾闇�瑕佸姞杞界殑閿�鍞鍗曞瓧娈�
+ List<SelectorItemInfo> fields = new List<SelectorItemInfo>();
+ fields.Add(new SelectorItemInfo("FID")); // 鍗曟嵁涓婚敭
+ fields.Add(new SelectorItemInfo("FEntity_FEntryID")); // 鍗曟嵁浣撲富閿�
+ fields.Add(new SelectorItemInfo("FBillNo")); // 鍗曟嵁缂栧彿
+ fields.Add(new SelectorItemInfo("FBFLowId")); // 涓氬姟娴佺▼
+ fields.Add(new SelectorItemInfo("FHMaterSubID")); // 鐗╂枡
+ fields.Add(new SelectorItemInfo("FHQtyMust"));//搴斿彂鏁伴噺
+ fields.Add(new SelectorItemInfo("FSelTranslateQty"));//璋冩嫧鏁伴噺
+ fields.Add(new SelectorItemInfo("FBFLOWID")); //
+
+ // 鎸囧畾杩囨护鏉′欢
+ string filter = string.Format(" FBillNo IN ('{0}') ", string.Join("','", poBillNos));
+ OQLFilter ofilter = OQLFilter.CreateHeadEntityFilter(filter);
+ var objs = viewService.Load(this.Context, formId, fields, ofilter);
+ return objs;
+ }
+ /// <summary>
+ /// 鎶婃棩璁″垝鐢ㄦ枡娓呭崟 鍗曟嵁浣撹鏋勫缓涓哄瓧鍏革細Dictionary(鍗曟嵁缂栧彿, Dictionary(鐗╂枡缂栫爜, 婧愬崟琛�));
+ /// </summary>
+ /// <param name="poObjs"></param>
+ /// <returns></returns>
+ private Dictionary<string, Dictionary<string, DynamicObject>> BuildDictionary(DynamicObject[] poObjs)
+ {
+ Dictionary<string, Dictionary<string, DynamicObject>> dctAllBills =
+ new Dictionary<string, Dictionary<string, DynamicObject>>();
+ foreach (var poObj in poObjs)
+ {
+ string billNo = Convert.ToString(poObj["BillNo"]);
+ Dictionary<string, DynamicObject> dctOneBill = new Dictionary<string, DynamicObject>();
+ DynamicObjectCollection entryRows = poObj["FEntity"] as DynamicObjectCollection;
+ foreach (var entryRow in entryRows)
+ {
+ DynamicObject materialObj = entryRow["FHMaterSubID"] as DynamicObject;
+ if (materialObj == null) continue;
+ string materialNumber = Convert.ToString(materialObj["number"]);
+ dctOneBill[materialNumber] = entryRow;
+ }
+ dctAllBills.Add(billNo, dctOneBill);
+ }
+ return dctAllBills;
+ }
+ /// <summary>
+ /// 鑾峰彇閿�鍞鍗曞叧鑱斾富瀹炰綋琛ㄦ牸缂栫爜
+ /// </summary>
+ /// <returns></returns>
+ private string GetPOEntryTableNumber()
+ {
+ IBusinessFlowService bfMetaService = ServiceHelper.GetService<IBusinessFlowService>();
+ var tableDefine = bfMetaService.LoadTableDefine(this.Context, POFormId, "FEntity");
+ return tableDefine.TableNumber;
+ }
+ /// <summary>
+ /// 濉啓婧愬崟淇℃伅
+ /// </summary>
+ /// <param name="srcRow">婧愬崟琛�</param>
+ /// <param name="toRow">鐩爣鍗曡</param>
+ /// <param name="linkRow">鍏宠仈琛�</param>
+ private void FillLinkRow(DynamicObject srcRow, DynamicObject toRow, DynamicObject linkRow)
+ {
+ ////鍓╀綑璋冩嫧鏁伴噺
+ //decimal remainQty = DBServiceHelper.ExecuteScalar<decimal>(Context, $"select FMustQty -isnull(FSELTRANSLATEQTY,0) from T_PRD_PPBOMENTRY t1 left join T_PRD_PPBOMENTRY_Q t2 on t1.FENTRYID = t2.FENTRYID where t1.FENTRYID={toRow["FPPBOMFENTRYID"]?.ToString()}", 0);
+ DataTable dt = DBServiceHelper.ExecuteDataSet(Context, $"select * from T_STK_STKTRANSFERINENTRY where FENTRYID={toRow[0]}").Tables[0];
+ linkRow["FlowId"] = "";
+ linkRow["FlowLineId"] = 0;
+ linkRow["RuleId"] = "DayPlanPPBomBill-STK_TransferDirect";
+ linkRow["SBillId"] = dt.Rows[0]["FDAYPLANFID"].ToString();
+ linkRow["SId"] = dt.Rows[0]["FDAYPLANFENTRYID"].ToString();
+ // 鍘熷鎼哄甫閲�
+ linkRow["BaseQtyOld"] = Convert.ToDecimal(dt.Rows[0]["FBASEQTY"]);//鍓╀綑璋冩嫧鏁伴噺
+ linkRow["BaseQty"] = Convert.ToDecimal(dt.Rows[0]["FBASEQTY"]); //鏈闇�瑕佽皟鎷ㄦ暟閲�
+ }
+
+ /// <summary>
+ /// 楠岃瘉鏄惁鐢熸垚杩囩敓浜х敤鏂欐竻鍗曞搴旂殑婧愬崟
+ /// </summary>
+ /// <returns></returns>
+ public bool SourceVerification(string FTID)
+ {
+ string sql = $" select count(*) from T_BF_INSTANCEENTRY where FSTABLENAME= 'T_PRD_PPBOMENTRY' and FTTABLENAME = 'Sc_DayPlanPPBomBillSub' and FTID = '{FTID}'";
+ int count = DBServiceHelper.ExecuteScalar<int>(Context, sql, 0);
+ if (count == 0)
+ return true;
+ else
+ return false;
+ }
+
+ }
+}
diff --git a/src/BLL/Demo.BillView/PRD/Pro_MaterialRequisitionAuditDayPlan.cs b/src/BLL/Demo.BillView/PRD/Pro_MaterialRequisitionAuditDayPlan.cs
index 96dcb69..9688acf 100644
--- a/src/BLL/Demo.BillView/PRD/Pro_MaterialRequisitionAuditDayPlan.cs
+++ b/src/BLL/Demo.BillView/PRD/Pro_MaterialRequisitionAuditDayPlan.cs
@@ -42,6 +42,8 @@
e.FieldKeys.Add("FBaseJoinQty");
}
private const string POFormId = "PRD_PPBOM";
+ public List<string> FentryIdList = new List<string>();
+
public override void BeforeExecuteOperationTransaction(BeforeExecuteOperationTransaction e)
{
base.BeforeExecuteOperationTransaction(e);
@@ -59,12 +61,12 @@
{
string srcFormId = "";
string srcSrcBillNo = "";
+ string FPPBOMFENTRYID = "";
try
{
srcFormId = "PRD_PPBOM";
- srcSrcBillNo = fldSrcBillNo.DynamicProperty.GetValue<string>(entryRow);
- srcSrcBillNo = DBServiceHelper.ExecuteScalar<string>(Context, $" select distinct FPPBOMBILLNO from T_PRD_PICKMTRLDATA where FSRCBILLNO = '{srcSrcBillNo}' ", srcSrcBillNo);
-
+ srcSrcBillNo = entryRow["PPBOMBILLNO"].ToString();
+ FPPBOMFENTRYID = entryRow["PPBomEntryId"].ToString();
}
catch (Exception)
{
@@ -100,10 +102,13 @@
as DynamicObjectCollection;
foreach (var entryRow in entryRows)
{
- string srcSrcBillNo = fldSrcBillNo.DynamicProperty.GetValue<string>(entryRow);
- string srcFormId = "PRD_PPBOM";
- srcSrcBillNo = DBServiceHelper.ExecuteScalar<string>(Context, $" select distinct FPPBOMBILLNO from T_PRD_PICKMTRLDATA where FSRCBILLNO = '{srcSrcBillNo}' ", srcSrcBillNo);
+ string srcFormId = "";
+ string srcSrcBillNo = "";
+ string FPPBOMFENTRYID = "";
+ srcFormId = "PRD_PPBOM";
+ srcSrcBillNo = entryRow["PPBOMBILLNO"].ToString();
+ FPPBOMFENTRYID = entryRow["PPBomEntryId"].ToString();
if (string.IsNullOrWhiteSpace(srcFormId)
|| string.IsNullOrWhiteSpace(srcSrcBillNo)
@@ -122,21 +127,50 @@
bool Ret = SourceVerification(Convert.ToString(entryRow["Id"]));
if (!Ret) continue;
+ //璁板綍婧愬崟ID 鐢ㄤ簬鏇存柊
+ if (!FentryIdList.Contains(entryRow["Id"]?.ToString()))
+ FentryIdList.Add(entryRow["Id"]?.ToString());
+
DynamicObjectCollection linkRows = linkEntry.DynamicProperty.GetValue(entryRow)
as DynamicObjectCollection;
- linkRows.Clear();
+ //linkRows.Clear();
DynamicObject linkRow = new DynamicObject(linkEntry.DynamicObjectType);
linkRow["STableName"] = srcTableNumber;
this.FillLinkRow(srcRow, entryRow, linkRow);
linkRows.Add(linkRow);
allNewLinkRows.Add(linkRow);
}
- }
+ }
// 涓烘柊寤虹殑婧愬崟鍏宠仈淇℃伅锛岃缃唴鐮�
IDBService dbService = ServiceHelper.GetService<IDBService>();
dbService.AutoSetPrimaryKey(this.Context, allNewLinkRows.ToArray(), linkEntry.DynamicObjectType);
}
-
+ /// <summary>
+ /// 鏂板鎿嶄綔鍚� sql鏇存柊鏁伴噺 浠ュ強 婧愬崟淇℃伅琛�
+ /// </summary>
+ /// <param name="e"></param>
+ public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
+ {
+ base.AfterExecuteOperationTransaction(e);
+ string FentryId = string.Join(",", FentryIdList.ToArray());
+ List<string> sqlList = new List<string>();
+ string sql = string.Format(@"/*dialect*/
+ update a set FBASEACTUALQTY = b.FBASEACTUALQTY
+ from T_PRD_PICKMTRLDATA_LK a
+ join T_PRD_PICKMTRLDATA b on a.FENTRYID = b.FENTRYID
+ where a.FSTABLENAME = 'T_PRD_PPBOMENTRY' and a.FENTRYID in ({0})", FentryId);
+ sqlList.Add(sql);
+ sql = string.Format(@"/*dialect*/
+ update T_PRD_PICKMTRLDATA set
+ FSrcBillType = 'PRD_PPBOM',
+ FSRCENTRYID=FPPBomEntryId,
+ FSrcBillNo=FPPBOMBILLNO
+ where FENTRYID in ({0})
+ ", FentryId);
+ sqlList.Add(sql);
+ DBServiceHelper.ExecuteBatch(Context, sqlList);
+ //DBServiceHelper.Execute(Context, sql);
+ }
/// <summary>
/// 鍔犺浇鐩稿叧鐨勯攢鍞鍗曟暟鎹�
/// </summary>
@@ -208,16 +242,17 @@
/// <param name="linkRow">鍏宠仈琛�</param>
private void FillLinkRow(DynamicObject srcRow, DynamicObject toRow, DynamicObject linkRow)
{
+ //鍓╀綑棰嗘枡鏁伴噺
+ decimal remainQty = DBServiceHelper.ExecuteScalar<decimal>(Context, $"select FMustQty -isnull(FSelPickedQty,0) from T_PRD_PPBOMENTRY t1 left join T_PRD_PPBOMENTRY_Q t2 on t1.FENTRYID = t2.FENTRYID where t1.FENTRYID={toRow["PPBomEntryId"]?.ToString()}", 0);
linkRow["FlowId"] = srcRow["BFLowId_Id"];
linkRow["FlowLineId"] = 0;
linkRow["RuleId"] = "PRD_PPBOM2PICKMTRL_NORMAL";
linkRow["SBillId"] = ((DynamicObject)srcRow.Parent)[0];
+ linkRow["STableId"] = ((DynamicObject)srcRow.Parent)[0];
linkRow["SId"] = srcRow[0];
- // 鍘熷鎼哄甫閲�
- decimal baseUnitQty = Convert.ToDecimal(srcRow["BaseNeedQty"]);//鐢ㄦ枡娓呭崟鍗曚綅鏁伴噺
- decimal joinUnitQty = Convert.ToDecimal(srcRow["BasePickedQty"]);//鐢ㄦ枡娓呭崟鍗曚綅棰嗘枡鏁伴噺
- linkRow["BaseActualQtyOld"] = baseUnitQty - joinUnitQty;
- linkRow["BaseActualQty"] = toRow["BASEACTUALQTY"]; //鍩烘湰鍗曚綅瀹炲彂鏁伴噺
+ linkRow["BaseActualQtyOld"] = remainQty;
+ linkRow["BaseActualQty"] = toRow["ACTUALQTY"]; //鍩烘湰鍗曚綅瀹炲彂鏁伴噺
+
}
/// <summary>
@@ -226,7 +261,7 @@
/// <returns></returns>
public bool SourceVerification(string FTID)
{
- string sql = $" select count(*) from T_BF_INSTANCEENTRY where FSTABLENAME= 'T_PRD_PPBOMENTRY' and FTID = '{FTID}'";
+ string sql = $" select count(*) from T_BF_INSTANCEENTRY where FSTABLENAME= 'T_PRD_PPBOMENTRY' and FTTABLENAME = 'T_PRD_PICKMTRLDATA' and FTID = '{FTID}'";
int count = DBServiceHelper.ExecuteScalar<int>(Context, sql, 0);
if (count == 0)
return true;
diff --git a/src/BLL/Demo.BillView/PRD/Pro_ZJDBFSH.cs b/src/BLL/Demo.BillView/PRD/Pro_ZJDBFSH.cs
new file mode 100644
index 0000000..83ee091
--- /dev/null
+++ b/src/BLL/Demo.BillView/PRD/Pro_ZJDBFSH.cs
@@ -0,0 +1,67 @@
+锘縰sing System;
+using System.Collections.Generic;
+using Kingdee.BOS.Util;
+using Kingdee.BOS.Core.Metadata;
+using Kingdee.BOS.Core.Metadata.EntityElement;
+using Kingdee.BOS.Core.DynamicForm.PlugIn;
+using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
+using Kingdee.BOS.Orm.DataEntity;
+using Kingdee.BOS.Contracts;
+using Kingdee.BOS.App;
+using Kingdee.BOS.Core.Metadata.FieldElement;
+using System.ComponentModel;
+using Kingdee.BOS.ServiceHelper;
+using Kingdee.K3.SCM.App;
+
+namespace Demo.DynamicForm.PRD
+{
+
+ [Description("[鐩存帴璋冩嫧鍗�-鍙嶅鏍竇鎸夐挳鍔熻兘]")]
+ [HotUpdate]
+ public class Pro_ZJDBFSH : AbstractOperationServicePlugIn
+ {
+ public override void OnPreparePropertys(PreparePropertysEventArgs e)
+ {
+ base.OnPreparePropertys(e);
+ e.FieldKeys.Add("FSrcBillType");
+ e.FieldKeys.Add("FSrcBillNo");
+ e.FieldKeys.Add("FID");
+ e.FieldKeys.Add("FTreeEntity_FEntryID");
+ e.FieldKeys.Add("FBillNo");
+ e.FieldKeys.Add("FBFLowId");
+ e.FieldKeys.Add("FMaterialId");
+ e.FieldKeys.Add("FBaseUnitQty");
+ e.FieldKeys.Add("FBaseJoinQty");
+ e.FieldKeys.Add("FDayPlanBillNo");
+ e.FieldKeys.Add("FDayPlanFentryId");
+ }
+ /// <summary>
+ ///鍙嶅鏍� 鍙嶆洿鏂版棩璁″垝鐢ㄦ枡娓呭崟璋冩嫧鏁伴噺
+ /// </summary>
+ /// <param name="e"></param>
+ public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
+ {
+ base.AfterExecuteOperationTransaction(e);
+ List<string> sqlList = new List<string>();
+ string sql = "";
+ //淇濆瓨鏃舵洿鏂扮敓浜х敤鏂欐竻鍗曡〃鏄庣粏璋冩嫧鏁伴噺
+ Entity entity = this.BusinessInfo.GetEntity("FBillEntry");//鑾峰彇鏄庣粏淇℃伅
+ foreach (var billObj in e.SelectedRows)
+ {
+ DynamicObjectCollection entryRows = entity.DynamicProperty.GetValue(billObj.DataEntity)
+ as DynamicObjectCollection;
+ foreach (var entryRow in entryRows)
+ {
+ //鐢熶骇鐢ㄦ枡娓呭崟涓虹┖鏃�
+ if (Convert.ToString(entryRow["FDayPlanBillNo"]) == "")
+ continue;
+ string fentryId = entryRow["FDayPlanFentryId"].ToString();
+ decimal FBaseQty = Convert.ToDecimal(entryRow["BaseQty"]);
+ sql = string.Format($"/*dialect*/update Sc_DayPlanPPBomBillSub set FTranslateQty -= {FBaseQty} where FEntryID = { fentryId} ");
+ sqlList.Add(sql);
+ }
+ }
+ DBServiceHelper.ExecuteBatch(Context, sqlList);
+ }
+ }
+}
diff --git a/src/BLL/Demo.BillView/PRD/Pro_ZJDBSH.cs b/src/BLL/Demo.BillView/PRD/Pro_ZJDBSH.cs
new file mode 100644
index 0000000..a5cbd51
--- /dev/null
+++ b/src/BLL/Demo.BillView/PRD/Pro_ZJDBSH.cs
@@ -0,0 +1,66 @@
+锘縰sing System;
+using System.Collections.Generic;
+using Kingdee.BOS.Util;
+using Kingdee.BOS.Core.Metadata;
+using Kingdee.BOS.Core.Metadata.EntityElement;
+using Kingdee.BOS.Core.DynamicForm.PlugIn;
+using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
+using Kingdee.BOS.Orm.DataEntity;
+using Kingdee.BOS.Contracts;
+using Kingdee.BOS.App;
+using Kingdee.BOS.Core.Metadata.FieldElement;
+using System.ComponentModel;
+using Kingdee.BOS.ServiceHelper;
+using Kingdee.K3.SCM.App;
+
+namespace Demo.DynamicForm.PRD
+{
+
+ [Description("[鐩存帴璋冩嫧鍗�-瀹℃牳]鎸夐挳鍔熻兘]")]
+ [HotUpdate]
+ public class Pro_ZJDBSH : AbstractOperationServicePlugIn
+ {
+ public override void OnPreparePropertys(PreparePropertysEventArgs e)
+ {
+ base.OnPreparePropertys(e);
+ e.FieldKeys.Add("FSrcBillType");
+ e.FieldKeys.Add("FSrcBillNo");
+ e.FieldKeys.Add("FID");
+ e.FieldKeys.Add("FTreeEntity_FEntryID");
+ e.FieldKeys.Add("FBillNo");
+ e.FieldKeys.Add("FBFLowId");
+ e.FieldKeys.Add("FMaterialId");
+ e.FieldKeys.Add("FBaseUnitQty");
+ e.FieldKeys.Add("FBaseJoinQty");
+ e.FieldKeys.Add("FDayPlanBillNo");
+ e.FieldKeys.Add("FDayPlanFentryId");
+ }
+ /// <summary>
+ ///鍙嶅鏍� 鍙嶆洿鏂版棩璁″垝鐢ㄦ枡娓呭崟璋冩嫧鏁伴噺
+ /// </summary>
+ /// <param name="e"></param>
+ public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
+ {
+ base.AfterExecuteOperationTransaction(e);
+ List<string> sqlList = new List<string>();
+ string sql = "";
+ //瀹℃牳鏃舵洿鏂扮敓浜х敤鏂欐竻鍗曡〃鏄庣粏璋冩嫧鏁伴噺
+ Entity entity = this.BusinessInfo.GetEntity("FBillEntry");//鑾峰彇鏄庣粏淇℃伅
+ foreach (var billObj in e.SelectedRows)
+ {
+ DynamicObjectCollection entryRows = entity.DynamicProperty.GetValue(billObj.DataEntity)
+ as DynamicObjectCollection;
+ foreach (var entryRow in entryRows)
+ {
+ //鐢熶骇鐢ㄦ枡娓呭崟涓虹┖鏃�
+ if (Convert.ToString(entryRow["FDayPlanBillNo"]) == "")
+ continue;
+ string fentryId = entryRow["FDayPlanFentryId"].ToString();
+ sql = string.Format($"/*dialect*/update Sc_DayPlanPPBomBillSub set FTranslateQty = (select sum(FBaseQty) from T_STK_STKTRANSFERINENTRY where FDayPlanFentryId = { fentryId})where FEntryID = { fentryId} ");
+ sqlList.Add(sql);
+ }
+ }
+ DBServiceHelper.ExecuteBatch(Context, sqlList);
+ }
+ }
+}
--
Gitblit v1.9.1