diff --git a/01.扩展/HandleUtils/sql/查询字段所在表.sql b/01.扩展/HandleUtils/sql/查询字段所在表.sql index 6b48018..66e672d 100644 --- a/01.扩展/HandleUtils/sql/查询字段所在表.sql +++ b/01.扩展/HandleUtils/sql/查询字段所在表.sql @@ -6,6 +6,6 @@ FROM syscolumns b WHERE a.id= b.id - AND b.name LIKE '%FSTOCKID' + AND b.name LIKE '%FSALUNITID' AND a.type= 'U' - AND a.name LIKE 'T_PRD_PPBOM%' \ No newline at end of file + --AND a.name LIKE 'T_PRD_%' \ No newline at end of file diff --git a/02.珠海市供水有限公司/ZHSW.Python/PUR_Requisition/BillEventPlugInEx.py b/02.珠海市供水有限公司/ZHSW.Python/PUR_Requisition/BillEventPlugInEx.py new file mode 100644 index 0000000..5275fff --- /dev/null +++ b/02.珠海市供水有限公司/ZHSW.Python/PUR_Requisition/BillEventPlugInEx.py @@ -0,0 +1,97 @@ +import clr +clr.AddReference("System") +clr.AddReference("Kingdee.BOS") +clr.AddReference("Kingdee.BOS.Core") +clr.AddReference("Kingdee.BOS.DataEntity") +clr.AddReference("Kingdee.BOS.App") +clr.AddReference("Kingdee.BOS.Contracts") +clr.AddReference("Kingdee.BOS.ServiceHelper") + +from Kingdee.BOS import* +from Kingdee.BOS.Core import * +from Kingdee.BOS.Core.Metadata.EntityElement import * +from Kingdee.BOS.Orm.DataEntity import* +from Kingdee.BOS.Orm.Metadata.DataEntity import* +from Kingdee.BOS.Core.DynamicForm.PlugIn import * +from Kingdee.BOS.Core.DynamicForm.PlugIn.Args import * +from Kingdee.BOS.Util import * +from System import * +from System.ComponentModel import* +from System.Collections.Generic import* +from System.Text import* +from Kingdee.BOS.ServiceHelper import * + +def DataChanged(e): + if e.Field.Key == "FMaterialId": + if DoCheckConditions(): + if e.NewValue != None and e.NewValue != 0: + hasQRCost = this.View.Model.GetValue("FHasQRCost") + idlist = [{ "materialId" : e.NewValue , "inRow" : e.Row}] + GetcContractAnnualCost(idlist,hasQRCost) + else: + this.View.Model.SetValue("FTAXPRICE", 0, e.Row) + this.View.Model.SetValue("FTAXRATE", 0, e.Row) + this.View.InvokeFieldUpdateService("FTAXPRICE" ,e.Row) + + if e.Field.Key == "FHasQRCost": + if DoCheckConditions(): + hasQRCost = e.NewValue + entity = this.View.BusinessInfo.GetEntity("FEntity") + entrys = this.View.Model.GetEntityDataObject(entity) + idlist = list(filter(lambda x:x["materialId"] > 0,map(lambda x:{ "materialId":x["MaterialId_Id"] ,"inRow": x["Seq"] - 1} ,entrys))) + GetcContractAnnualCost(idlist,hasQRCost) + +def GetcContractAnnualCost(idList,hasQRCost): + # whereSql = " AND t0e.F_QNV_BASE1 IN ({0}) ".format(",".join(idList)) + intoSqlList = List[str]() + if idList != None and idList.Count > 0: + for idObj in idList: + intoSqlList.Add("SELECT {0} AS 'MATERIALID' ,{1} inRow".format(str(idObj["materialId"]),str(idObj["inRow"]))); + + sql = """/*dialect*/ + SELECT * + INTO #TMPMATERIALNUM + FROM ({0}) tt + + SELECT tt.inRow,ISNULL(t.,0) AS '' + ,ISNULL(t.˰,0) AS '˰' + ,ISNULL(t.ۺϵ,0) AS 'ۺϵ' + ,ISNULL(t.Ĭ˰,0) AS 'Ĭ˰' + FROM #TMPMATERIALNUM tt + LEFT JOIN (SELECT t0e.FID + ,t0e.FENTRYID + ,t0.FBILLNO + ,t0.F_QNV_TEXT2 + ,t0e.F_QNV_BASE1 AS '' + ,t0e.F_QNV_DECIMAL1 AS '˰' + ,t0e.F_QNV_DECIMAL3 AS 'ۺϵ' + ,t0e.F_QNV_DATE2 AS 'Ч' + ,t0e.F_QNV_DATE3 AS 'ʧЧ' + ,t1.FTAXRATE AS 'Ĭ˰' + ,ROW_NUMBER() OVER (PARTITION BY t0e.F_QNV_BASE1 ORDER BY t0e.F_QNV_DATE2 DESC) AS 'RN' + FROM QNV_t_Cust_Entry100003 t0 + INNER JOIN QNV_t_Cust_Entry100004 t0e on t0.FID = t0e.FID + INNER JOIN T_BD_TAXRATE t1 on t1.FID = t0e.F_QNV_BASE3 + WHERE 1=1 + AND t0.FDOCUMENTSTATUS ='C' + AND GETDATE() BETWEEN t0e.F_QNV_DATE2 AND t0e.F_QNV_DATE3 + ) t on t. = tt.MATERIALID AND t.RN = 1 + WHERE 1 = 1 + + """.format(" union ".join(intoSqlList)) + + result = DBServiceHelper.ExecuteDynamicObject(this.Context, sql) + + if result != None and result.Count > 0: + priceKey = "ۺϵ" if hasQRCost else "˰" + for row in result: + rowIndex = row["inRow"] + this.View.Model.SetValue("FTAXPRICE", row[priceKey], rowIndex) + this.View.Model.SetValue("FTAXRATE", row["Ĭ˰"], rowIndex) + this.View.InvokeFieldUpdateService("FTAXPRICE" ,rowIndex) + +def DoCheckConditions(): + orgObj = this.View.Model.GetValue("FApplicationOrgId") + if orgObj["Id"] == 101542: + return True + return False diff --git a/02.珠海市供水有限公司/ZHSW.Python/ZHSW.Python.pyproj b/02.珠海市供水有限公司/ZHSW.Python/ZHSW.Python.pyproj new file mode 100644 index 0000000..22e2816 --- /dev/null +++ b/02.珠海市供水有限公司/ZHSW.Python/ZHSW.Python.pyproj @@ -0,0 +1,40 @@ + + + Debug + 2.0 + 0efb3769-37f2-4d7a-9eff-4c1cb749475c + + + + + + + . + . + ZHSW.Python + ZHGS.Python + + + true + false + + + true + false + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/02.珠海市供水有限公司/ZHSW.Python/sql/获取合同年度单价.sql b/02.珠海市供水有限公司/ZHSW.Python/sql/获取合同年度单价.sql new file mode 100644 index 0000000..fb8574c --- /dev/null +++ b/02.珠海市供水有限公司/ZHSW.Python/sql/获取合同年度单价.sql @@ -0,0 +1,19 @@ +SELECT t.* +FROM (SELECT t0e.FID + ,t0e.FENTRYID + ,t0.FBILLNO + ,t0.F_QNV_TEXT2 + ,t0e.F_QNV_BASE1 AS '' + ,t0e.F_QNV_DECIMAL1 AS '˰' + ,t0e.F_QNV_DECIMAL3 AS 'ۺϵ' + ,t0e.F_QNV_DATE2 AS 'Ч' + ,t0e.F_QNV_DATE3 AS 'ʧЧ' + ,t1.FTAXRATE AS 'Ĭ˰' + ,ROW_NUMBER() over(PARTITION BY t0e.F_QNV_BASE1 ORDER BY t0e.F_QNV_DATE2 DESC) AS 'RN' +FROM QNV_t_Cust_Entry100003 t0 + INNER JOIN QNV_t_Cust_Entry100004 t0e on t0.FID = t0e.FID + INNER JOIN T_BD_TAXRATE t1 on t1.FID = t0e.F_QNV_BASE3 +WHERE 1=1 + AND t0.FDOCUMENTSTATUS ='C' + AND GETDATE() BETWEEN t0e.F_QNV_DATE2 AND t0e.F_QNV_DATE3) t +WHERE t.RN = 1 \ No newline at end of file diff --git a/02.珠海市供水有限公司/ZHSW/PUR_Requisition/BillEventPlugInEx.cs b/02.珠海市供水有限公司/ZHSW/PUR_Requisition/BillEventPlugInEx.cs new file mode 100644 index 0000000..1c0a596 --- /dev/null +++ b/02.珠海市供水有限公司/ZHSW/PUR_Requisition/BillEventPlugInEx.cs @@ -0,0 +1,27 @@ +using Kingdee.BOS.Core.DynamicForm.PlugIn; +using Kingdee.BOS.Core.Metadata.EntityElement; +using Kingdee.BOS.JSON; +using Kingdee.BOS.Util; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; + +namespace ZHGS.PUR_Requisition +{ + [Description("根据日期,物料Id更新参考单价、取价方向、参考金额-控件触发、新增加载触发"), HotUpdate] + public class BillEventPlugInEx : AbstractDynamicFormPlugIn + { + public override void AfterBindData(EventArgs e) + { + base.AfterBindData(e); + + var entity = this.View.BusinessInfo.GetEntity("FEntity"); + var entrys = this.View.Model.GetEntityDataObject(entity); + + var materialEntity = this.View.Model.BillBusinessInfo.GetEntryEntity("FAnalyzeMaterialEntity"); + var materialRows = this.View.Model.GetEntityDataObject(materialEntity); + } + } +} diff --git a/02.珠海市供水有限公司/ZHSW/Properties/AssemblyInfo.cs b/02.珠海市供水有限公司/ZHSW/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..3bf5676 --- /dev/null +++ b/02.珠海市供水有限公司/ZHSW/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的一般信息由以下 +// 控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("ZHGS")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("ZHGS")] +[assembly: AssemblyCopyright("Copyright © 2024")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 会使此程序集中的类型 +//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 +//请将此类型的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("bf093890-ebf9-485c-a92e-49264b810108")] + +// 程序集的版本信息由下列四个值组成: +// +// 主版本 +// 次版本 +// 生成号 +// 修订号 +// +//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 +//通过使用 "*",如下所示: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/02.珠海市供水有限公司/ZHSW/ZHSW.csproj b/02.珠海市供水有限公司/ZHSW/ZHSW.csproj new file mode 100644 index 0000000..16ff7a1 --- /dev/null +++ b/02.珠海市供水有限公司/ZHSW/ZHSW.csproj @@ -0,0 +1,63 @@ + + + + + Debug + AnyCPU + {BF093890-EBF9-485C-A92E-49264B810108} + Library + Properties + ZHSW + ZHSW + v4.0 + 512 + true + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.dll + + + ..\..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.App.dll + + + ..\..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.Core.dll + + + ..\..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.DataEntity.dll + + + ..\..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.ServiceHelper.dll + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/03.珠海市汇威精密制造有限公司/HW.PRD_LACKANAYLEBILL/HW.PRD_LACKANAYLEBILL.csproj b/03.珠海市汇威精密制造有限公司/HW.PRD_LACKANAYLEBILL/HW.PRD_LACKANAYLEBILL.csproj new file mode 100644 index 0000000..2b7fd06 --- /dev/null +++ b/03.珠海市汇威精密制造有限公司/HW.PRD_LACKANAYLEBILL/HW.PRD_LACKANAYLEBILL.csproj @@ -0,0 +1,66 @@ + + + + + Debug + AnyCPU + {B6FD6277-A4DA-4FAC-BDA9-841D51E3D57F} + Library + Properties + HW.PRD_LACKANAYLEBILL + HW.PRD_LACKANAYLEBILL + v4.0 + 512 + true + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.dll + + + ..\..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.App.dll + + + ..\..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.Core.dll + + + ..\..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.DataEntity.dll + + + ..\..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.Model.dll + + + ..\..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.ServiceHelper.dll + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/03.珠海市汇威精密制造有限公司/HW.PRD_LACKANAYLEBILL/ProductBomLackAnalyePlugIn.cs b/03.珠海市汇威精密制造有限公司/HW.PRD_LACKANAYLEBILL/ProductBomLackAnalyePlugIn.cs new file mode 100644 index 0000000..abb5afc --- /dev/null +++ b/03.珠海市汇威精密制造有限公司/HW.PRD_LACKANAYLEBILL/ProductBomLackAnalyePlugIn.cs @@ -0,0 +1,149 @@ +using Kingdee.BOS; +using Kingdee.BOS.Core.DynamicForm.PlugIn; +using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; +using Kingdee.BOS.Core.Metadata.EntityElement; +using Kingdee.BOS.Orm.DataEntity; +using Kingdee.BOS.ServiceHelper; +using Kingdee.BOS.Util; +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Text; + +namespace HW.PRD_LACKANAYLEBILL +{ + public class ProductBomLackAnalyePlugIn : AbstractDynamicFormPlugIn + { + public override void OnInitialize(InitializeEventArgs e) + { + base.OnInitialize(e); + + } + + public override void ButtonClick(ButtonClickEventArgs e) + { + base.ButtonClick(e); + if (e.Key.EndsWith("FToAnalyze", StringComparison.OrdinalIgnoreCase)) + { + + var materialEntity = this.View.Model.BusinessInfo.GetEntryEntity("FAnalyzeMaterialEntity"); + var materialRows = this.View.Model.GetEntityDataObject(materialEntity); + var row = new DynamicObject(materialEntity.DynamicObjectType); + var a = row[""].Long2Int(); + materialEntity.SeqDynamicProperty.SetValue(row, 1); + int num = (int)base.Context.CurrentOrganizationInfo.ID; + Entity entryEntity = this.View.Model.BusinessInfo.GetEntryEntity("F_ora_Entity"); + DynamicObjectCollection entityDataObject = this.View.Model.GetEntityDataObject(entryEntity); + this.View.Model.BeginIniti(); + entityDataObject.Clear(); + DynamicObjectCollection dynamicObjectCollection = this.View.Model.GetValue("F_ora_Stock") as DynamicObjectCollection; + DynamicObject dynamicObject = this.View.Model.GetValue("F_ora_Base") as DynamicObject; + DynamicObject dynamicObject2 = this.View.Model.GetValue("F_ora_Base1") as DynamicObject; + string text = " AND FSTOCKID IN ("; + string text2 = ""; + string text3 = ""; + string text4 = ""; + string text5 = ""; + string text6 = ""; + if (this.View.Model.GetValue("F_ora_SDate") != null) + { + text5 = this.View.Model.GetValue("F_ora_SDate").ToString(); + } + if (this.View.Model.GetValue("F_ora_EDate") != null) + { + text6 = this.View.Model.GetValue("F_ora_EDate").ToString(); + } + if (dynamicObject != null) + { + text3 = Convert.ToString(dynamicObject["Number"]); + } + if (dynamicObject2 != null) + { + text4 = Convert.ToString(dynamicObject2["Number"]); + } + if (this.View.Model.GetValue("F_ora_HName") != null) + { + text2 = this.View.Model.GetValue("F_ora_HName").ToString(); + } + HashSet hashSet = new HashSet(); + if (dynamicObjectCollection.Count > 0) + { + foreach (DynamicObject dynamicObject3 in dynamicObjectCollection) + { + long num2 = Convert.ToInt64(dynamicObject3["F_ora_Stock_Id"]); + bool flag8 = num2 == 0L; + if (!flag8) + { + bool flag9 = !hashSet.Contains(num2); + if (flag9) + { + text = text + num2 + ","; + } + } + } + text += "0)"; + } + else + { + text = " AND 1=1 "; + } + string text7 = string.Concat(new string[] + { + "exec Pro_BOMStockStatusBillEXP '", + text3, + "','", + text4, + "','", + text, + "','", + text5, + "' ,'", + text6, + "','", + text2, + "'" + }); + StringBuilder stringBuilder = new StringBuilder(); + DynamicObjectCollection dynamicObjectCollection2 = DBServiceHelper.ExecuteDynamicObject(base.Context, text7); + bool flag10 = dynamicObjectCollection2.Count > 0; + if (flag10) + { + this.View.Model.BatchCreateNewEntryRow("F_ora_Entity", dynamicObjectCollection2.Count); + } + int num3 = 0; + foreach (DynamicObject dynamicObject4 in dynamicObjectCollection2) + { + this.Model.SetValue("F_ora_Number", dynamicObject4[1], num3); + this.Model.SetValue("F_ora_Name", dynamicObject4[2], num3); + this.Model.SetValue("F_ora_Model", dynamicObject4[3], num3); + this.Model.SetValue("F_ora_OldNumber", dynamicObject4[4], num3); + this.Model.SetValue("F_ora_StartQty", dynamicObject4[5], num3); + this.Model.SetValue("F_ora_PoInQty", dynamicObject4[6], num3); + this.Model.SetValue("F_ora_AllOutQty", dynamicObject4[7], num3); + this.Model.SetValue("F_ora_EndQty", dynamicObject4[8], num3); + this.Model.SetValue("F_ora_ZTQty", dynamicObject4[9], num3); + this.Model.SetValue("F_ora_ZZQty", dynamicObject4[10], num3); + this.Model.SetValue("F_ora_JJQty", dynamicObject4[11], num3); + this.Model.SetValue("F_ora_WFQty", dynamicObject4[12], num3); + this.Model.SetValue("F_ora_LLQty", dynamicObject4[13], num3); + this.Model.SetValue("F_ora_XSCKQty", dynamicObject4[14], num3); + this.Model.SetValue("F_ora_DBCKQty", dynamicObject4[15], num3); + this.Model.SetValue("F_ora_DBRKQty", dynamicObject4[16], num3); + this.Model.SetValue("F_ora_SGWZQty", dynamicObject4[17], num3); + this.Model.SetValue("F_ora_SDQty", dynamicObject4[18], num3); + this.Model.SetValue("F_ora_ZYQty", dynamicObject4[19], num3); + this.Model.SetValue("F_ora_KYKCQty", dynamicObject4[20], num3); + this.Model.SetValue("F_ora_StockNumber", dynamicObject4[21], num3); + this.Model.SetValue("F_ora_StockName", dynamicObject4[22], num3); + this.Model.SetValue("F_ora_Text", dynamicObject4[23], num3); + this.Model.SetValue("F_ora_CPNumber", dynamicObject4[24], num3); + num3++; + } + DBServiceHelper.LoadReferenceObject(base.Context, entityDataObject.ToArray(), entityDataObject.DynamicCollectionItemPropertyType, false); + this.View.Model.EndIniti(); + this.View.UpdateView("F_ora_Entity"); + } + } + } +} diff --git a/03.珠海市汇威精密制造有限公司/HW.PRD_LACKANAYLEBILL/Properties/AssemblyInfo.cs b/03.珠海市汇威精密制造有限公司/HW.PRD_LACKANAYLEBILL/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..f999b96 --- /dev/null +++ b/03.珠海市汇威精密制造有限公司/HW.PRD_LACKANAYLEBILL/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的一般信息由以下 +// 控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("HW.PRD_LACKANAYLEBILL")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("HW.PRD_LACKANAYLEBILL")] +[assembly: AssemblyCopyright("Copyright © 2024")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 会使此程序集中的类型 +//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 +//请将此类型的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("b6fd6277-a4da-4fac-bda9-841d51e3d57f")] + +// 程序集的版本信息由下列四个值组成: +// +// 主版本 +// 次版本 +// 生成号 +// 修订号 +// +//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 +//通过使用 "*",如下所示: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/03.珠海市汇威精密制造有限公司/HW.PRD_LACKANAYLEBILL/aaaa.cs b/03.珠海市汇威精密制造有限公司/HW.PRD_LACKANAYLEBILL/aaaa.cs new file mode 100644 index 0000000..5b134ba --- /dev/null +++ b/03.珠海市汇威精密制造有限公司/HW.PRD_LACKANAYLEBILL/aaaa.cs @@ -0,0 +1,11 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace HW.PRD_LACKANAYLEBILL +{ + internal class aaaa + { + } +} diff --git a/03.珠海市汇威精密制造有限公司/HW.PRD_LackAnalyeBill.Python/HW.PRD_LackAnalyeBill.Python.py b/03.珠海市汇威精密制造有限公司/HW.PRD_LackAnalyeBill.Python/HW.PRD_LackAnalyeBill.Python.py index 8b13789..ab773df 100644 --- a/03.珠海市汇威精密制造有限公司/HW.PRD_LackAnalyeBill.Python/HW.PRD_LackAnalyeBill.Python.py +++ b/03.珠海市汇威精密制造有限公司/HW.PRD_LackAnalyeBill.Python/HW.PRD_LackAnalyeBill.Python.py @@ -1 +1,305 @@ +import clr +clr.AddReference("System") +clr.AddReference("Kingdee.BOS") +clr.AddReference("Kingdee.BOS.Core") +clr.AddReference("Kingdee.BOS.DataEntity") +clr.AddReference("Kingdee.BOS.App") +clr.AddReference("Kingdee.BOS.Contracts") +clr.AddReference("Kingdee.BOS.ServiceHelper") +clr.AddReference("ExtensionMethods") +from Kingdee.BOS import* +from Kingdee.BOS.Core import * +from Kingdee.BOS.Core.Metadata.EntityElement import * +from Kingdee.BOS.Orm.DataEntity import* +from Kingdee.BOS.Orm.Metadata.DataEntity import* +from Kingdee.BOS.Core.DynamicForm.PlugIn import * +from Kingdee.BOS.Core.DynamicForm.PlugIn.Args import * +from System import * +from System.ComponentModel import* +from System.Collections.Generic import* +from System.Text import* +from Kingdee.BOS.ServiceHelper import * +from ExtensionMethods import BooleanExtension as boolObjEx +from ExtensionMethods import DateTimeExtension as dateObjEx +from ExtensionMethods import ObjectExtension as objEx +from ExtensionMethods import StringExtension as strObjEx + +def ButtonClick(e): + if e.Key.EndsWith("FToAnalyzeBtn", StringComparison.OrdinalIgnoreCase): + proEntity = this.View.Model.BusinessInfo.GetEntryEntity("FAnalyzeProEntity") + proRows = this.View.Model.GetEntityDataObject(proEntity) + this.View.Model.BeginIniti() + if proRows != None and proRows.Count > 0: + sDate = this.View.Model.GetValue("FBillSDate") + eDate = this.View.Model.GetValue("FBillEDate") + proStrList = List[str](); + + for row in proRows: + proStrList.Add("SELECT {0} AS 'MATERIALID' ,{1} needNum".format(row["FAnalyzeProId"]["Id"],row["FAnalyzeProQty"])) + + sql = """/*dialect*/ +DECLARE @needNum DECIMAL(23,6) +,@sDate varchar(100) +,@eDate varchar(100) +SET @needNum = 20 +SET @sDate = '{1}' +SET @eDate = '{2}' + +SELECT tt.MATERIALID,SUM(tt.needNum) needNum +INTO #TMPMATERIALNUM +FROM ({0}) tt +GROUP BY tt.MATERIALID + +SELECT t0.FMASTERID + ,t0.FMATERIALID + ,t0.FNUMBER + ,t0.FUSEORGID + ,t1.needNum AS 'ProMaterialQty' + INTO #ProMaterial +FROM T_BD_MATERIAL t0 + INNER JOIN #TMPMATERIALNUM t1 on t0.FMATERIALID = t1.MATERIALID +WHERE t0.FDOCUMENTSTATUS = 'C' + +CREATE TABLE #MATERIAL_LACKANALYE( + FIDENTITYID int not null default 0 + ,MaterialId int not null default 0 + ,BomId int + ,ϴ varchar(100) default '' + , varchar(100) default '' + ,_ decimal(23,6) default 0 + ,_ʱ decimal(23,6) default 0 + ,_δ decimal(23,6) default 0 + ,_ decimal(23,6) default 0 + ,_ܶ decimal(23,6) default 0 + ,_; decimal(23,6) default 0 + ,_ÿ decimal(23,6) default 0 + ,_ʵ decimal(23,6) default 0 + ,_ decimal(23,6) default 0 + ,BOMLEVEL int + ,IsProduct int + ,ϸϼ int +) + +SELECT t0.FMATERIALID + ,ISNULL(t3.sumQTY,0) AS ʱ + ,ISNULL(t4.sumBASENOPICKEDQTY,0) AS δ + ,ISNULL(t5.sumNoStockInQty,0) AS + ,ISNULL(t1. - t1.δ,0) AS 'ܶ' + ,ISNULL(t2. - t2.,0) AS ';' + ,(ISNULL(t3.sumQTY,0) - ISNULL(t4.sumBASENOPICKEDQTY,0) + ISNULL(t5.sumNoStockInQty,0) - ISNULL(t1. - t1.δ,0) + ISNULL(t2. - t2.,0)) AS 'ÿ' + ,ISNULL(t6.,0) AS '' + INTO #Material_Stock_Statu +FROM T_BD_MATERIAL t0 + LEFT JOIN ( + SELECT + t0e.FMATERIALID,SUM(t0e.FQTY) AS '' + ,SUM((t0e_r.FBASEREMAINOUTQTY + t0e_r.FBASERETURNQTY)) AS 'δ' + FROM T_SAL_ORDER t0 + INNER JOIN T_SAL_ORDERENTRY t0e on t0.FID = t0e.FID + INNER JOIN T_SAL_ORDERENTRY_R t0e_r on t0e.FID = t0e_r.FID AND t0e_r.FENTRYID = t0e.FENTRYID + WHERE t0.FDOCUMENTSTATUS = 'C' + AND t0.FCANCELSTATUS = 'A' + AND t0.FCLOSESTATUS = 'A' + AND t0.FDATE between @sDate AND @eDate + GROUP BY t0e.FMATERIALID + ) t1 on t1.FMATERIALID = t0.FMATERIALID + LEFT JOIN ( + SELECT + t0e.FMATERIALID,SUM(t0e.FQTY) AS '' + ,SUM(t0e_r.FREMAINSTOCKINQTY) AS 'ʣ' + ,SUM(t0e_r.FBASESTOCKINQTY) AS '' + FROM T_PUR_POORDER t0 + INNER JOIN T_PUR_POORDERENTRY t0e on t0.FID = t0e.FID AND t0.FBUSINESSTYPE != 'ZCCG' AND t0.FBUSINESSTYPE != 'FYCG' + INNER JOIN T_PUR_POORDERENTRY_R t0e_r on t0e.FID = t0e_r.FID AND t0e_r.FENTRYID = t0e.FENTRYID + WHERE t0.FDOCUMENTSTATUS = 'C' + AND t0.FCANCELSTATUS = 'A' + AND t0.FCLOSESTATUS = 'A' + AND t0.FDATE BETWEEN @sDate AND @eDate + GROUP BY t0e.FMATERIALID + ) t2 on t2.FMATERIALID = t0.FMATERIALID + LEFT JOIN ( + SELECT tt0.FMATERIALID,tt0.FSTOCKORGID,SUM(tt0.FBASEQTY) AS sumQTY + FROM T_STK_INVENTORY tt0 + GROUP BY tt0.FMATERIALID,tt0.FSTOCKORGID + ) t3 on t3.FMATERIALID = t0.FMASTERID AND t3.FSTOCKORGID = t0.FUSEORGID + LEFT JOIN ( + SELECT t0e.FMATERIALID,SUM(t0e_q.FNOPICKEDQTY) sumBASENOPICKEDQTY + FROM T_PRD_PPBOMENTRY t0e + INNER JOIN T_PRD_PPBOMENTRY_Q t0e_q on t0e.FENTRYID = t0e_q.FENTRYID + INNER JOIN T_PRD_MOENTRY_A t0e_a on t0e_a.FENTRYID = t0e.FMOENTRYID + WHERE t0e_a.FSTATUS = 4 + GROUP BY t0e.FMATERIALID + ) t4 on t4.FMATERIALID = t0.FMATERIALID + LEFT JOIN ( + SELECT t0e.FMATERIALID,SUM(t0e_q.FNOSTOCKINQTY) AS sumNoStockInQty + FROM T_PRD_MOENTRY t0e + INNER JOIN T_PRD_MOENTRY_Q t0e_q on t0e.FENTRYID = t0e_q.FENTRYID + INNER JOIN T_PRD_MOENTRY_A t0e_a on t0e_a.FENTRYID = t0e.FENTRYID + WHERE t0e_a.FSTATUS = 4 + GROUP BY t0e.FMATERIALID + ) t5 on t5.FMATERIALID = t0.FMATERIALID + LEFT JOIN ( + SELECT t0e.FMATERIALID,SUM(FBASEUNITQTY-FINSTOCKBASEQTY + FRETURNBASEQTY) AS '' + FROM T_PUR_RECEIVE t0 + INNER JOIN T_PUR_RECEIVEENTRY t0e on t0.FID = t0e.FID + INNER JOIN T_PUR_RECEIVEENTRY_R t0e_r on t0e.FID = t0e_r.FID AND t0e.FENTRYID = t0e_r.FENTRYID + INNER JOIN T_PUR_RECEIVEENTRY_S t0e_s on t0e.FID = t0e_s.FID AND t0e.FENTRYID = t0e_s.FENTRYID + WHERE t0.FDOCUMENTSTATUS = 'C' + AND t0.FCANCELSTATUS = 'A' + AND t0.FCLOSESTATUS = 'A' + AND t0.FDATE BETWEEN @sDate AND @eDate + GROUP BY t0e.FMATERIALID + ) t6 on t6.FMATERIALID = t0.FMATERIALID +WHERE t0.FDOCUMENTSTATUS = 'C' + AND t0.FFORBIDSTATUS = 'A' + +INSERT INTO #MATERIAL_LACKANALYE +SELECT + ROW_NUMBER() OVER (ORDER BY t0.FMATERIALID) + ,t0.FMATERIALID + ,t1.FID + ,t2.FNUMBER + ,t2_l.FNAME + ,t0.ProMaterialQty + ,t3.ʱ + ,t3.δ + ,t3. + ,t3.ܶ + ,t3.; + ,t3.ÿ + ,(CASE + WHEN t3.ÿ > t0.ProMaterialQty THEN 0 + ELSE t3.ÿ - t0.ProMaterialQty + END) + ,t3. + ,0 + ,1 + ,1 +FROM #ProMaterial t0 + INNER JOIN ( + SELECT tt.FID,tt.FMATERIALID,ROW_NUMBER() OVER (PARTITION BY tt.FMATERIALID ORDER BY tt.FID DESC) AS 'rn' FROM T_ENG_BOM tt + WHERE 1 = 1 + AND tt.FDOCUMENTSTATUS = 'C' + AND tt.FFORBIDSTATUS = 'A' + ) t1 on t0.FMATERIALID = t1.FMATERIALID AND t1.rn = 1 --AND t0.FUSEORGID = t1.FUSEORGID + INNER JOIN T_BD_MATERIAL t2 on t2.FMATERIALID = t1.FMATERIALID + INNER JOIN T_BD_MATERIAL_L t2_l on t2_l.FMATERIALID = t1.FMATERIALID AND t2_l.FLOCALEID = 2052 + LEFT JOIN #Material_Stock_Statu t3 on t1.FMATERIALID = t3.FMATERIALID +WHERE 1 = 1 +ORDER BY + t0.FNUMBER + +DECLARE @num INT,@level int,@LoopCount int +SET @num = 1 +SET @level =0 +SET @LoopCount = 0; + +WHILE (@num <> 0 AND @LoopCount < 10) +BEGIN + INSERT INTO #MATERIAL_LACKANALYE(MaterialId,BomId,_,_ʱ,_δ,_,_ܶ,_;,_ÿ,_ʵ,_,BOMLEVEL,ϸϼ,IsProduct) + SELECT + tt.FMATERIALID + ,ISNULL(t2.FID,0) AS BomId + ,ABS(tt._) + ,t3.ʱ + ,t3.δ + ,t3. + ,t3.ܶ + ,t3.; + ,t3.ÿ + ,(CASE + WHEN t3.ÿ > (ABS(tt._) + ISNULL(t4.ϼ_ʵ,0)) THEN 0 + ELSE t3.ÿ - (ABS(tt._) + ISNULL(t4.ϼ_ʵ,0)) + END) AS 'ʵ' + ,t3. + ,@level + 1 + ,tt.co + ,0 + FROM ( + SELECT + t1.FMATERIALID + ,SUM(t0._ʵ * (t1.FNUMERATOR / t1.FDENOMINATOR)) AS '_' + ,count(1) co + FROM + #MATERIAL_LACKANALYE t0 + INNER JOIN T_ENG_BOMCHILD t1 on t0.BomId = t1.FID + WHERE 1 = 1 + AND t0.BOMLEVEL = @level + GROUP BY t1.FMATERIALID + ) tt + LEFT JOIN ( + SELECT tt3.FID,tt3.FNUMBER,tt3.FMATERIALID,ROW_NUMBER() OVER (PARTITION BY tt3.FMATERIALID ORDER BY tt3.FID DESC) AS 'rn' + FROM T_ENG_BOM tt3 + WHERE 1 = 1 AND tt3.FDOCUMENTSTATUS = 'C' AND tt3.FFORBIDSTATUS = 'A' + ) t2 ON t2.rn = 1 AND tt.FMATERIALID = t2.FMATERIALID + LEFT JOIN #Material_Stock_Statu t3 on t3.FMATERIALID = tt.FMATERIALID + LEFT JOIN ( + SELECT tt.MaterialId,sum(tt._ʵ) AS 'ϼ_ʵ' FROM #MATERIAL_LACKANALYE tt GROUP BY tt.MaterialId + ) t4 on t4.MaterialId = tt.FMATERIALID + + SET @num = @@ROWCOUNT + SET @level += 1 + SET @LoopCount += 1 + +END + +UPDATE t0 SET + t0.ϴ = t1.FNUMBER + ,t0. = t1_l.FNAME + ,t0.FIDENTITYID = t2.rn +FROM #MATERIAL_LACKANALYE t0 + INNER JOIN T_BD_MATERIAL t1 on t0.MaterialId = t1.FMATERIALID + INNER JOIN T_BD_MATERIAL_L t1_l on t0.MaterialId = t1_l.FMATERIALID AND t1_l.FLOCALEID = 2052 + INNER JOIN (SELECT MaterialId,ROW_NUMBER() OVER (ORDER BY bomlevel,ϴ) 'rn' FROM #MATERIAL_LACKANALYE) t2 on t0.MaterialId = t2.MaterialId + +SELECT t0.* FROM #MATERIAL_LACKANALYE t0 ORDER BY FIDENTITYID + +DROP TABLE #ProMaterial +DROP TABLE #TMPMATERIALNUM +DROP TABLE #MATERIAL_LACKANALYE +DROP TABLE #Material_Stock_Statu +""".format(" union ".join(proStrList),sDate,eDate) + + proRows.Clear() + # this.View.UpdateView("FAnalyzeProEntity"); + materialEntity = this.View.Model.BillBusinessInfo.GetEntryEntity("FAnalyzeMaterialEntity") + materialRows = this.View.Model.GetEntityDataObject(materialEntity) + materialRows.Clear() + res = DBServiceHelper.ExecuteDynamicObject(this.Context,sql) + + if res != None and res.Count > 0: + for item in res: + row = DynamicObject(materialEntity.DynamicObjectType) + isPro = item["IsProduct"] + matId = item["MaterialId"] + matFld = this.View.BillBusinessInfo.GetField("FAnalyzeMaterialId");#ֶԪԪ,ʹֶαʶ + matObj = BusinessDataServiceHelper.LoadSingle(this.Context, matId, matFld.RefFormDynamicObjectType) + row["FAnalyzeMaterialId_Id"] = matId + row["FAnalyzeMaterialId"] = matObj + row["FAnalyzeMQty"] = item["_"] + row["FStkQty"] = item["_ʱ"] + row["FNotIssueQty"] = item["_δ"] + row["FInMakingQty"] = item["_"] + row["FOrderMQty"] = item["_ܶ"] + row["FInTransitQty"] = item["_;"] + row["FAvailableQty"] = item["_ÿ"] + row["FActualQty"] = item["_ʵ"] + row["FDetectionQty"] = item["_"] + materialRows.Add(row) + if isPro == 1: + proRow = DynamicObject(proEntity.DynamicObjectType) + proRow["FAnalyzeProId_Id"] = matId + proRow["FAnalyzeProId"] = matObj + proRow["FAnalyzeProQty"] = item["_"] + proRow["FProStkQty"] = item["_ʱ"] + proRow["FProNotIssueQty"] = item["_δ"] + proRow["FProInMakingQty"] = item["_"] + proRow["FProOrderQty"] = item["_ܶ"] + proRow["FProInTransitQty"] = item["_;"] + proRow["FProAvailableQty"] = item["_ÿ"] + proRow["FProActualQty"] = item["_ʵ"] + proRows.Add(proRow); + + this.View.UpdateView("FAnalyzeProEntity") + this.View.UpdateView("FAnalyzeMaterialEntity") diff --git a/03.珠海市汇威精密制造有限公司/HW.PRD_LackAnalyeBill.Python/HW.PRD_LackAnalyeBill.Python.pyproj b/03.珠海市汇威精密制造有限公司/HW.PRD_LackAnalyeBill.Python/HW.PRD_LackAnalyeBill.Python.pyproj index 60b01b9..444939c 100644 --- a/03.珠海市汇威精密制造有限公司/HW.PRD_LackAnalyeBill.Python/HW.PRD_LackAnalyeBill.Python.pyproj +++ b/03.珠海市汇威精密制造有限公司/HW.PRD_LackAnalyeBill.Python/HW.PRD_LackAnalyeBill.Python.pyproj @@ -26,6 +26,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/05.长园/CYG.Python/SAL_SaleOrder/OperationEventPlugInEx.py b/05.长园/CYG.Python/SAL_SaleOrder/OperationEventPlugInEx.py new file mode 100644 index 0000000..5c8bcdb --- /dev/null +++ b/05.长园/CYG.Python/SAL_SaleOrder/OperationEventPlugInEx.py @@ -0,0 +1,92 @@ +#clrп +import clr +#Ӷcloudij +clr.AddReference('System') +clr.AddReference('System.Data') +clr.AddReference('Kingdee.BOS') +clr.AddReference('Kingdee.BOS.Core') +clr.AddReference('Kingdee.BOS.App') +clr.AddReference('Kingdee.BOS.Contracts') +clr.AddReference('Kingdee.BOS.DataEntity') +clr.AddReference('Kingdee.BOS.ServiceHelper') +#dairycloudеijʵ󣨷ռ䵼룬ݹ鵼룩 +from Kingdee.BOS.Core import * +from Kingdee.BOS.Util import * +from Kingdee.BOS.Core.Bill import * +from Kingdee.BOS.Core.Bill.PlugIn import * +from Kingdee.BOS.Orm.DataEntity import * +from Kingdee.BOS.Core.DynamicForm.PlugIn import * +from Kingdee.BOS.Core.DynamicForm.PlugIn.Args import * +from Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel import * +from System import * +from System.Data import * +from Kingdee.BOS.App.Data import * +from System.Collections.Generic import List +from Kingdee.BOS.ServiceHelper import * + +def EndOperationTransaction(e): + # 8ύ9126ɾ3 + if this.FormOperation.OperationId == 8: + for data in e.DataEntitys: + documentStatus = data["DocumentStatus"] + if documentStatus == "C": + # entry = data["SaleOrderEntry"] + billId = data["Id"] + # formId = data["FFormId"] + sqlLList = List[str](); + # ֪ͨ + sqlLList.Add("""/*dialect*/ +UPDATE tt SET tt.F_CYG_TEXT1 = STUFF((SELECT distinct ','+ t0e.F_CYG_TEXT4 + FROM T_SAL_ORDERENTRY t0e --۶ + INNER JOIN T_SAL_DELIVERYNOTICEENTRY_LK t1e_lk --֪ͨϵ + ON t0e.FID = t1e_lk.FSBILLID AND t0e.FENTRYID = t1e_lk.FSID AND t1e_lk.FSTABLENAME = 'T_SAL_ORDERENTRY' + WHERE t1e_lk.FENTRYID = tt.FENTRYID --ƴӹֶ + FOR XML PATH('') + ),1,1,'') --stuff תкƴ +FROM T_SAL_DELIVERYNOTICEENTRY tt +WHERE EXISTS (SELECT 1 FROM T_SAL_DELIVERYNOTICEENTRY_LK t1e_lk WHERE t1e_lk.FSBILLID = {0} AND t1e_lk.FSTABLENAME = 'T_SAL_ORDERENTRY' AND t1e_lk.FENTRYID = tt.FENTRYID) + """.format(billId)) + # ۳ⵥ + sqlLList.Add(""" +UPDATE tt SET tt.F_CYG_TEXT1 = STUFF((SELECT distinct ','+ t0e.F_CYG_TEXT4 + FROM T_SAL_ORDERENTRY t0e --۶ + INNER JOIN T_SAL_DELIVERYNOTICEENTRY_LK t1e_lk --֪ͨϵ + ON t0e.FID = t1e_lk.FSBILLID AND t0e.FENTRYID = t1e_lk.FSID AND t1e_lk.FSTABLENAME = 'T_SAL_ORDERENTRY' + INNER JOIN T_SAL_DELIVERYNOTICEENTRY t1e ON t1e.FENTRYID = t1e_lk.FENTRYID --֪ͨ + INNER JOIN T_SAL_OUTSTOCKENTRY_LK t2e_lk --۳ⵥϵ + ON t1e.FID = t2e_lk.FSBILLID AND t1e.FENTRYID = t2e_lk.FSID AND t2e_lk.FSTABLENAME = 'T_SAL_DELIVERYNOTICEENTRY' + WHERE t2e_lk.FENTRYID = tt.FENTRYID --ƴӹֶ + FOR XML PATH('') + ),1,1,'') --stuff תкƴ +FROM T_SAL_OUTSTOCKENTRY tt +WHERE EXISTS ( + SELECT 1 FROM T_SAL_OUTSTOCKENTRY_LK t2e_lk + INNER JOIN T_SAL_DELIVERYNOTICEENTRY t1e on t2e_lk.FSBILLID = t1e.FID AND t2e_lk.FSID = t1e.FENTRYID + INNER JOIN T_SAL_DELIVERYNOTICEENTRY_LK t1e_lk on t1e_lk.FENTRYID = t1e.FENTRYID AND t1e_lk.FSTABLENAME = 'T_SAL_ORDERENTRY' + WHERE t2e_lk.FENTRYID = tt.FENTRYID AND t2e_lk.FSTABLENAME = 'T_SAL_DELIVERYNOTICEENTRY' AND t1e_lk.FSBILLID = {0}) + """.format(billId)) + # Ӧյ + sqlLList.Add(""" +UPDATE tt SET tt.F_CYG_TEXT1 = STUFF((SELECT distinct ','+ t0e.F_CYG_TEXT4 + FROM T_SAL_ORDERENTRY t0e --۶ + INNER JOIN T_SAL_DELIVERYNOTICEENTRY_LK t1e_lk --֪ͨϵ + ON t0e.FID = t1e_lk.FSBILLID AND t0e.FENTRYID = t1e_lk.FSID AND t1e_lk.FSTABLENAME = 'T_SAL_ORDERENTRY' + INNER JOIN T_SAL_DELIVERYNOTICEENTRY t1e ON t1e.FENTRYID = t1e_lk.FENTRYID --֪ͨ + INNER JOIN T_SAL_OUTSTOCKENTRY_LK t2e_lk --۳ⵥϵ + ON t1e.FID = t2e_lk.FSBILLID AND t1e.FENTRYID = t2e_lk.FSID AND t2e_lk.FSTABLENAME = 'T_SAL_DELIVERYNOTICEENTRY' + INNER JOIN T_SAL_OUTSTOCKENTRY t2e on t2e.FENTRYID = t2e_lk.FENTRYID + INNER JOIN T_AR_RECEIVABLEENTRY_LK t3e_lk + on t2e.FID = t3e_lk.FSBILLID AND t2e.FENTRYID = t3e_lk.FSID AND t3e_lk.FSTABLENAME = 'T_SAL_OUTSTOCKENTRY' + WHERE t3e_lk.FENTRYID = tt.FENTRYID --ƴӹֶ + FOR XML PATH('') + ),1,1,'') --stuff תкƴ +FROM T_AR_RECEIVABLEENTRY tt +WHERE EXISTS ( + SELECT 1 FROM T_AR_RECEIVABLEENTRY_LK t3e_lk + INNER JOIN T_SAL_OUTSTOCKENTRY t2e on t2e.FID = t3e_lk.FSBILLID AND t2e.FENTRYID = t3e_lk.FSID + INNER JOIN T_SAL_OUTSTOCKENTRY_LK t2e_lk on t2e.FENTRYID = t2e_lk.FENTRYID AND t2e_lk.FSTABLENAME = 'T_SAL_DELIVERYNOTICEENTRY' + INNER JOIN T_SAL_DELIVERYNOTICEENTRY t1e on t2e_lk.FSBILLID = t1e.FID AND t2e_lk.FSID = t1e.FENTRYID + INNER JOIN T_SAL_DELIVERYNOTICEENTRY_LK t1e_lk on t1e_lk.FENTRYID = t1e.FENTRYID AND t1e_lk.FSTABLENAME = 'T_SAL_ORDERENTRY' + WHERE t3e_lk.FENTRYID = tt.FENTRYID AND t3e_lk.FSTABLENAME = 'T_SAL_OUTSTOCKENTRY' AND t1e_lk.FSBILLID = {0}) +""".format(billId)) + DBUtils.ExecuteBatch(this.Context,sqlLList,sqlLList.Count); \ No newline at end of file diff --git a/05.长园/CYG.Python/SAL_SaleOrder/sql/销售订单保存时更新关联订单信息.sql b/05.长园/CYG.Python/SAL_SaleOrder/sql/销售订单保存时更新关联订单信息.sql new file mode 100644 index 0000000..8ce7480 --- /dev/null +++ b/05.长园/CYG.Python/SAL_SaleOrder/sql/销售订单保存时更新关联订单信息.sql @@ -0,0 +1,81 @@ +--/***********֪ͨstart*********************/ +--UPDATE tt SET tt.F_CYG_TEXT1 = +SELECT tt.FENTRYID + ,STUFF((SELECT distinct ','+ t0e.F_CYG_TEXT4 + FROM T_SAL_ORDERENTRY t0e --۶ + INNER JOIN T_SAL_DELIVERYNOTICEENTRY_LK t1e_lk --֪ͨϵ + ON t0e.FID = t1e_lk.FSBILLID AND t0e.FENTRYID = t1e_lk.FSID AND t1e_lk.FSTABLENAME = 'T_SAL_ORDERENTRY' + WHERE t1e_lk.FENTRYID = tt.FENTRYID --ƴӹֶ + FOR XML PATH('') + ),1,1,'') --stuff תкƴ +FROM T_SAL_DELIVERYNOTICEENTRY tt +WHERE EXISTS (SELECT 1 FROM T_SAL_DELIVERYNOTICEENTRY_LK t1e_lk WHERE t1e_lk.FSBILLID = 100040 AND t1e_lk.FSTABLENAME = 'T_SAL_ORDERENTRY' AND t1e_lk.FENTRYID = tt.FENTRYID) +--/***********֪ͨend*********************/ + +--/***********۳ⵥstart*********************/ +--UPDATE tt SET tt.F_CYG_TEXT1 = +SELECT tt.FENTRYID + ,STUFF((SELECT distinct ','+ t0e.F_CYG_TEXT4 + FROM T_SAL_ORDERENTRY t0e --۶ + INNER JOIN T_SAL_DELIVERYNOTICEENTRY_LK t1e_lk --֪ͨϵ + ON t0e.FID = t1e_lk.FSBILLID AND t0e.FENTRYID = t1e_lk.FSID AND t1e_lk.FSTABLENAME = 'T_SAL_ORDERENTRY' + INNER JOIN T_SAL_DELIVERYNOTICEENTRY t1e ON t1e.FENTRYID = t1e_lk.FENTRYID --֪ͨ + INNER JOIN T_SAL_OUTSTOCKENTRY_LK t2e_lk --۳ⵥϵ + ON t1e.FID = t2e_lk.FSBILLID AND t1e.FENTRYID = t2e_lk.FSID AND t2e_lk.FSTABLENAME = 'T_SAL_DELIVERYNOTICEENTRY' + WHERE t2e_lk.FENTRYID = tt.FENTRYID --ƴӹֶ + FOR XML PATH('') + ),1,1,'') --stuff תкƴ +FROM T_SAL_OUTSTOCKENTRY tt +WHERE EXISTS ( + SELECT 1 FROM T_SAL_OUTSTOCKENTRY_LK t2e_lk + INNER JOIN T_SAL_DELIVERYNOTICEENTRY t1e on t2e_lk.FSBILLID = t1e.FID AND t2e_lk.FSID = t1e.FENTRYID + INNER JOIN T_SAL_DELIVERYNOTICEENTRY_LK t1e_lk on t1e_lk.FENTRYID = t1e.FENTRYID AND t1e_lk.FSTABLENAME = 'T_SAL_ORDERENTRY' + WHERE t2e_lk.FENTRYID = tt.FENTRYID AND t2e_lk.FSTABLENAME = 'T_SAL_DELIVERYNOTICEENTRY' AND t1e_lk.FSBILLID = 100040) +--/***********۳ⵥend*********************/ + +--/***********Ӧյstart*********************/ +--UPDATE tt SET tt.F_CYG_TEXT1 = +SELECT tt.FENTRYID + ,STUFF((SELECT distinct ','+ t0e.F_CYG_TEXT4 + FROM T_SAL_ORDERENTRY t0e --۶ + INNER JOIN T_SAL_DELIVERYNOTICEENTRY_LK t1e_lk --֪ͨϵ + ON t0e.FID = t1e_lk.FSBILLID AND t0e.FENTRYID = t1e_lk.FSID AND t1e_lk.FSTABLENAME = 'T_SAL_ORDERENTRY' + INNER JOIN T_SAL_DELIVERYNOTICEENTRY t1e ON t1e.FENTRYID = t1e_lk.FENTRYID --֪ͨ + INNER JOIN T_SAL_OUTSTOCKENTRY_LK t2e_lk --۳ⵥϵ + ON t1e.FID = t2e_lk.FSBILLID AND t1e.FENTRYID = t2e_lk.FSID AND t2e_lk.FSTABLENAME = 'T_SAL_DELIVERYNOTICEENTRY' + INNER JOIN T_SAL_OUTSTOCKENTRY t2e on t2e.FENTRYID = t2e_lk.FENTRYID + INNER JOIN T_AR_RECEIVABLEENTRY_LK t3e_lk + on t2e.FID = t3e_lk.FSBILLID AND t2e.FENTRYID = t3e_lk.FSID AND t3e_lk.FSTABLENAME = 'T_SAL_OUTSTOCKENTRY' + WHERE t3e_lk.FENTRYID = tt.FENTRYID --ƴӹֶ + FOR XML PATH('') + ),1,1,'') --stuff תкƴ +FROM T_AR_RECEIVABLEENTRY tt +WHERE EXISTS ( + SELECT 1 FROM T_AR_RECEIVABLEENTRY_LK t3e_lk + INNER JOIN T_SAL_OUTSTOCKENTRY t2e on t2e.FID = t3e_lk.FSBILLID AND t2e.FENTRYID = t3e_lk.FSID + INNER JOIN T_SAL_OUTSTOCKENTRY_LK t2e_lk on t2e.FENTRYID = t2e_lk.FENTRYID AND t2e_lk.FSTABLENAME = 'T_SAL_DELIVERYNOTICEENTRY' + INNER JOIN T_SAL_DELIVERYNOTICEENTRY t1e on t2e_lk.FSBILLID = t1e.FID AND t2e_lk.FSID = t1e.FENTRYID + INNER JOIN T_SAL_DELIVERYNOTICEENTRY_LK t1e_lk on t1e_lk.FENTRYID = t1e.FENTRYID AND t1e_lk.FSTABLENAME = 'T_SAL_ORDERENTRY' + WHERE t3e_lk.FENTRYID = tt.FENTRYID AND t3e_lk.FSTABLENAME = 'T_SAL_OUTSTOCKENTRY' AND t1e_lk.FSBILLID = 100040) +--/***********Ӧյend*********************/ + + +--SELECT +-- t0e.FID +-- ,t0e.FENTRYID +-- ,t1e.FENTRYID AS '֪ͨʵid' +-- ,ISNULL(t2e.FENTRYID, 0) AS '۳ⵥʵid' +-- ,ISNULL(t3e.FENTRYID, 0) AS 'Ӧյʵid' +--FROM T_SAL_ORDERENTRY t0e +-- INNER JOIN T_SAL_DELIVERYNOTICEENTRY_LK t1e_lk on t0e.FID = t1e_lk.FSBILLID AND t0e.FENTRYID = t1e_lk.FSID +-- AND t1e_lk.FSTABLENAME = 'T_SAL_ORDERENTRY' +-- INNER JOIN T_SAL_DELIVERYNOTICEENTRY t1e on t1e.FENTRYID = t1e_lk.FENTRYID +-- INNER JOIN T_SAL_OUTSTOCKENTRY_LK t2e_lk on t1e.FID = t2e_lk.FSBILLID AND t1e.FENTRYID = t2e_lk.FSID +-- AND t2e_lk.FSTABLENAME = 'T_SAL_DELIVERYNOTICEENTRY' +-- INNER JOIN T_SAL_OUTSTOCKENTRY t2e on t2e.FENTRYID = t2e_lk.FENTRYID +-- INNER JOIN T_AR_RECEIVABLEENTRY_LK t3e_lk on t2e.FID = t3e_lk.FSBILLID AND t2e.FENTRYID = t3e_lk.FSID +-- AND t3e_lk.FSTABLENAME = 'T_SAL_OUTSTOCKENTRY' +-- INNER JOIN T_AR_RECEIVABLEENTRY t3e on t3e.FENTRYID = t3e_lk.FENTRYID +--WHERE +-- t0e.FID = 100007 + diff --git a/05.长园/CYG/CYG.csproj b/05.长园/CYG/CYG.csproj new file mode 100644 index 0000000..90ecb34 --- /dev/null +++ b/05.长园/CYG/CYG.csproj @@ -0,0 +1,46 @@ + + + + + Debug + AnyCPU + {2F638D52-C946-4F1B-89A1-ADB47D5FDBD9} + Library + Properties + CYG + CYG + v4.0 + 512 + true + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/05.长园/CYG/Properties/AssemblyInfo.cs b/05.长园/CYG/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..3ac2a67 --- /dev/null +++ b/05.长园/CYG/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的一般信息由以下 +// 控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("CYG")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("CYG")] +[assembly: AssemblyCopyright("Copyright © 2024")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 会使此程序集中的类型 +//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 +//请将此类型的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("2f638d52-c946-4f1b-89a1-adb47d5fdbd9")] + +// 程序集的版本信息由下列四个值组成: +// +// 主版本 +// 次版本 +// 生成号 +// 修订号 +// +//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 +//通过使用 "*",如下所示: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/06.泰诺麦博/Trinomab.Python/Trinomab.Python.pyproj b/06.泰诺麦博/Trinomab.Python/Trinomab.Python.pyproj new file mode 100644 index 0000000..4be9b9b --- /dev/null +++ b/06.泰诺麦博/Trinomab.Python/Trinomab.Python.pyproj @@ -0,0 +1,33 @@ + + + Debug + 2.0 + f1e2602e-2506-41b1-b696-4ed18316cb07 + . + + + + + . + . + Trinomab.Python + Trinomab.Python + + + true + false + + + true + false + + + + + + + + + \ No newline at end of file diff --git a/06.泰诺麦博/Trinomab/Properties/AssemblyInfo.cs b/06.泰诺麦博/Trinomab/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..446595f --- /dev/null +++ b/06.泰诺麦博/Trinomab/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的一般信息由以下 +// 控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("Trinomab")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Trinomab")] +[assembly: AssemblyCopyright("Copyright © 2024")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 会使此程序集中的类型 +//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 +//请将此类型的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("45c22f98-7aac-465e-b8bb-81a1a320d00a")] + +// 程序集的版本信息由下列四个值组成: +// +// 主版本 +// 次版本 +// 生成号 +// 修订号 +// +//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 +//通过使用 "*",如下所示: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/06.泰诺麦博/Trinomab/Trinomab.csproj b/06.泰诺麦博/Trinomab/Trinomab.csproj new file mode 100644 index 0000000..65a86fa --- /dev/null +++ b/06.泰诺麦博/Trinomab/Trinomab.csproj @@ -0,0 +1,46 @@ + + + + + Debug + AnyCPU + {45C22F98-7AAC-465E-B8BB-81A1A320D00A} + Library + Properties + Trinomab + Trinomab + v4.0 + 512 + true + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/07.珠海英搏尔/Enpower.PRD_MO/SQLserver/PLAN2.sql b/07.珠海英搏尔/Enpower.PRD_MO/SQLserver/PLAN2.sql index 8a09372..06cf79b 100644 --- a/07.珠海英搏尔/Enpower.PRD_MO/SQLserver/PLAN2.sql +++ b/07.珠海英搏尔/Enpower.PRD_MO/SQLserver/PLAN2.sql @@ -1,4 +1,4 @@ -USE [AIS202401040030] +USE [AIS202401040030] GO /****** Object: StoredProcedure [dbo].[P_UpdatePlan2] Script Date: 2024-01-17 17:38:56 ******/ SET ANSI_NULLS ON @@ -6,9 +6,9 @@ GO SET QUOTED_IDENTIFIER ON GO -- ============================================= --- Author: +-- Author: 阿斌 -- Create date: 2023-05-23 --- Description: ¼ƻϢ +-- Description: 更新计划订单信息 -- ============================================= ALTER PROCEDURE [dbo].[P_UpdatePlan2] ( @@ -27,14 +27,14 @@ BEGIN --SET NOCOUNT ON; --SELECT --- A.FBILLNO AS 'ƻ' --- ,A.FSALENOROW,A.F_SOURCE_ORDER_LINE_NUMBER as 'ƻ۶к' --- ,A.F_Source_order_number as 'ƻ۶' --- ,A.F_FORECASTNUMBER as 'ƻԤⵥ' --- ,A.F_Linenumber as 'ƻԤⵥк' --- ,E.FBILLNO AS 'Ԥⵥ' --- ,D.FSEQ,D.F_Source_order_number as 'Ԥⵥ۶' --- ,D.F_SOURCE_ORDER_LINE_NUMBER as 'Ԥⵥ۶к' +-- A.FBILLNO AS '计划订单单号' +-- ,A.FSALENOROW,A.F_SOURCE_ORDER_LINE_NUMBER as '计划订单销售订单行号' +-- ,A.F_Source_order_number as '计划订单销售订单单号' +-- ,A.F_FORECASTNUMBER as '计划订单预测单单号' +-- ,A.F_Linenumber as '计划订单预测单行号' +-- ,E.FBILLNO AS '预测单单号' +-- ,D.FSEQ,D.F_Source_order_number as '预测单销售订单单号' +-- ,D.F_SOURCE_ORDER_LINE_NUMBER as '预测单销售订单行号' --INTO #TEMP1 --FROM T_PLN_PLANORDER A --INNER JOIN T_PLN_RESERVELINKENTRY B ON B.FSUPPLYBILLNO = A.FBILLNO @@ -50,19 +50,19 @@ BEGIN -- SELECT ---ƻ, Ԥⵥ, ---'Ԥⵥк'=ISNULL( stuff((select ','+CONVERT(nvarchar(100), FSEQ) from #TEMP1 where ƻ=t.ƻ and Ԥⵥ =t.Ԥⵥ for xml path('')),1,1,''),''), ---'۶'=ISNULL( stuff((select distinct ','+CONVERT(nvarchar(100), Ԥⵥ۶) from #TEMP1 where Ԥⵥ۶<>'' and ƻ=t.ƻ and Ԥⵥ =t.Ԥⵥ for xml path('')),1,1,''),''), ---'۶к'=ISNULL( stuff((select distinct ','+CONVERT(nvarchar(100), Ԥⵥ۶к) from #TEMP1 where Ԥⵥ۶к<>'' and ƻ=t.ƻ and Ԥⵥ =t.Ԥⵥ for xml path('')),1,1,''),'') +--计划订单单号, 预测单单号, +--'预测单行号'=ISNULL( stuff((select ','+CONVERT(nvarchar(100), FSEQ) from #TEMP1 where 计划订单单号=t.计划订单单号 and 预测单单号 =t.预测单单号 for xml path('')),1,1,''),''), +--'销售订单单号'=ISNULL( stuff((select distinct ','+CONVERT(nvarchar(100), 预测单销售订单单号) from #TEMP1 where 预测单销售订单单号<>'' and 计划订单单号=t.计划订单单号 and 预测单单号 =t.预测单单号 for xml path('')),1,1,''),''), +--'销售订单行号'=ISNULL( stuff((select distinct ','+CONVERT(nvarchar(100), 预测单销售订单行号) from #TEMP1 where 预测单销售订单行号<>'' and 计划订单单号=t.计划订单单号 and 预测单单号 =t.预测单单号 for xml path('')),1,1,''),'') --into #temp3 -- FROM #TEMP1 t --- GROUP BY ƻ,Ԥⵥ +-- GROUP BY 计划订单单号,预测单单号 --- UPDATE T_PLN_PLANORDER SET F_FORECASTNUMBER=B.Ԥⵥ, F_Linenumber=B.Ԥⵥк, F_SOURCE_ORDER_LINE_NUMBER=b.۶к, F_SOURCE_ORDER_NUMBER=b.۶ +-- UPDATE T_PLN_PLANORDER SET F_FORECASTNUMBER=B.预测单单号, F_Linenumber=B.预测单行号, F_SOURCE_ORDER_LINE_NUMBER=b.销售订单行号, F_SOURCE_ORDER_NUMBER=b.销售订单单号 --FROM T_PLN_PLANORDER A --inner join #temp3 B ---ON A.FBILLNO=B.ƻ +--ON A.FBILLNO=B.计划订单单号 ----inner join #temp2 f on f.fname = a.FBILLNO @@ -124,12 +124,12 @@ BEGIN ----UPDATE T_PLN_PLANORDER SET F_WAUG_LAYER = -----CASE WHEN B. IS NULL THEN ELSE CONCAT(,'-',) END +----CASE WHEN B.层数 IS NULL THEN 订单号 ELSE CONCAT(订单号,'-',层数) END ---- from T_PLN_PLANORDER A ---- inner join ----( -----select A.FID, dbo.GetBomSeq( B .FBOMID,a.FMATERIALID) as '', A.FMATERIALID,B.FBOMID,A.f_WAUG_LAYER,A.F_FORECASTNUMBER,A.F_LINENUMBER, -----A.F_MATERIALCODE,a.FBILLNO as '1',b.FBILLNO as '' from T_PLN_PLANORDER A +----select A.FID, dbo.GetBomSeq( B .FBOMID,a.FMATERIALID) as '层数', A.FMATERIALID,B.FBOMID,A.f_WAUG_LAYER,A.F_FORECASTNUMBER,A.F_LINENUMBER, +----A.F_MATERIALCODE,a.FBILLNO as '1',b.FBILLNO as '订单号' from T_PLN_PLANORDER A ----INNER JOIN T_PLN_PLANORDER B ON A.F_FORECASTNUMBER=B.F_FORECASTNUMBER AND A.F_LINENUMBER=B.F_LINENUMBER AND A.F_MATERIALCODE =B.FMATERIALID ----INNER JOIN #temp2 C ON C.Fname=A.FBILLNO ------WHERE a.F_WAUG_LAYER = '' @@ -141,9 +141,9 @@ BEGIN -------select a.FBILLNO AS 'ƻ',A.FSALENOROW,A.F_SOURCE_ORDER_LINE_NUMBER as 'ƻ۶к',A.F_Source_order_number as 'ƻ۶' -------, A.F_FORECASTNUMBER as 'ƻԤⵥ', A.F_Linenumber as 'ƻԤⵥк', -------E.FBILLNO AS 'Ԥⵥ',D.FSEQ,D.F_Source_order_number as 'Ԥⵥ۶',D.F_SOURCE_ORDER_LINE_NUMBER as 'Ԥⵥ۶к' +------select a.FBILLNO AS '计划订单单号',A.FSALENOROW,A.F_SOURCE_ORDER_LINE_NUMBER as '计划订单销售订单行号',A.F_Source_order_number as '计划订单销售订单单号' +------, A.F_FORECASTNUMBER as '计划订单预测单单号', A.F_Linenumber as '计划订单预测单行号', +------E.FBILLNO AS '预测单单号',D.FSEQ,D.F_Source_order_number as '预测单销售订单单号',D.F_SOURCE_ORDER_LINE_NUMBER as '预测单销售订单行号' ------INTO #TEMP1 ------from T_PLN_PLANORDER A ------INNER JOIN T_PLN_RESERVELINKENTRY B ON B.FSUPPLYBILLNO = A.FBILLNO @@ -157,19 +157,19 @@ BEGIN ------ --select * from #TEMP1 -------- -------UPDATE A SET A.F_FORECASTNUMBER=B.Ԥⵥ,A.F_Linenumber=B.Ԥⵥк,a.F_SOURCE_ORDER_LINE_NUMBER=b.۶к,a.F_SOURCE_ORDER_NUMBER=b.۶ +------UPDATE A SET A.F_FORECASTNUMBER=B.预测单单号,A.F_Linenumber=B.预测单行号,a.F_SOURCE_ORDER_LINE_NUMBER=b.销售订单行号,a.F_SOURCE_ORDER_NUMBER=b.销售订单单号 ------FROM T_PLN_PLANORDER A ------inner join ------( ------SELECT -------ƻ, Ԥⵥ, -------'Ԥⵥк'=ISNULL( stuff((select ','+CONVERT(nvarchar(100), FSEQ) from #TEMP1 where ƻ=t.ƻ and Ԥⵥ =t.Ԥⵥ for xml path('')),1,1,''),''), -------'۶'=ISNULL( stuff((select distinct ','+CONVERT(nvarchar(100), Ԥⵥ۶) from #TEMP1 where Ԥⵥ۶<>'' and ƻ=t.ƻ and Ԥⵥ =t.Ԥⵥ for xml path('')),1,1,''),''), -------'۶к'=ISNULL( stuff((select distinct ','+CONVERT(nvarchar(100), Ԥⵥ۶к) from #TEMP1 where Ԥⵥ۶к<>'' and ƻ=t.ƻ and Ԥⵥ =t.Ԥⵥ for xml path('')),1,1,''),'') +------计划订单单号, 预测单单号, +------'预测单行号'=ISNULL( stuff((select ','+CONVERT(nvarchar(100), FSEQ) from #TEMP1 where 计划订单单号=t.计划订单单号 and 预测单单号 =t.预测单单号 for xml path('')),1,1,''),''), +------'销售订单单号'=ISNULL( stuff((select distinct ','+CONVERT(nvarchar(100), 预测单销售订单单号) from #TEMP1 where 预测单销售订单单号<>'' and 计划订单单号=t.计划订单单号 and 预测单单号 =t.预测单单号 for xml path('')),1,1,''),''), +------'销售订单行号'=ISNULL( stuff((select distinct ','+CONVERT(nvarchar(100), 预测单销售订单行号) from #TEMP1 where 预测单销售订单行号<>'' and 计划订单单号=t.计划订单单号 and 预测单单号 =t.预测单单号 for xml path('')),1,1,''),'') ------ FROM #TEMP1 t ------- GROUP BY ƻ,Ԥⵥ +------ GROUP BY 计划订单单号,预测单单号 ------) B -------ON A.FBILLNO=B.ƻ +------ON A.FBILLNO=B.计划订单单号 ------WHERE A.F_FORECASTNUMBER='' ------AND A.FBILLNO = @FBILLNO diff --git a/07.珠海英搏尔/Enpower.PRD_MO/SQLserver/生产订单BOM_选中订单_更新层号_存储过程20240115.sql b/07.珠海英搏尔/Enpower.PRD_MO/SQLserver/生产订单BOM_选中订单_更新层号_存储过程20240115.sql index 0b7eb2a..0cdd553 100644 --- a/07.珠海英搏尔/Enpower.PRD_MO/SQLserver/生产订单BOM_选中订单_更新层号_存储过程20240115.sql +++ b/07.珠海英搏尔/Enpower.PRD_MO/SQLserver/生产订单BOM_选中订单_更新层号_存储过程20240115.sql @@ -3,7 +3,7 @@ IF EXISTS(SELECT * FROM SYS.PROCEDURES WHERE NAME='PROC_SELECT_UPDATE_BOMLEVEL') GO CREATE PROCEDURE PROC_SELECT_UPDATE_BOMLEVEL - @billnoStr varchar(1000) + @billnoStr nvarchar(8000) AS BEGIN CREATE TABLE #TMP_MO --ʱ#TMP diff --git a/07.珠海英搏尔/Enpower.PRD_MO/SQLserver/英博尔测试20240220.sql b/07.珠海英搏尔/Enpower.PRD_MO/SQLserver/英博尔测试20240220.sql index 94bb978..d9813e8 100644 --- a/07.珠海英搏尔/Enpower.PRD_MO/SQLserver/英博尔测试20240220.sql +++ b/07.珠海英搏尔/Enpower.PRD_MO/SQLserver/英博尔测试20240220.sql @@ -2,25 +2,38 @@ declare @FBILLNO NVARCHAR(1000) set @FBILLNO = 'WO2402200045,WO2402200046,WO2402200047' select fname into #temp2 from dbo.fn_hr_StrSplit(@FBILLNO,',') - -UPDATE B SET FFORECASTGROUP = REPLACE( D.FFORECASTGROUP,H.FBILLNO,L.FBILLNO) - -FROM T_PRD_MO A -INNER JOIN T_PRD_MOENTRY B ON A.FID=B.FID -INNER JOIN T_PRD_MOENTRY_Q C ON C.FENTRYID=B.FENTRYID -INNER JOIN T_PRD_MOENTRY D ON D.FENTRYID=C.FSRCSPLITENTRYID -INNER JOIN T_PRD_MO E ON E.FID=D.FID -INNER JOIN T_PRD_MO H ON H.FBILLNO=D.FFORECASTGROUPFRIST --ײ -INNER JOIN T_PRD_MOENTRY I ON I.FID=H.FID --ײ㵥 -INNER JOIN T_PRD_MOENTRY_Q J ON J.FSRCSPLITENTRYID=I.FENTRYID -INNER JOIN T_PRD_MOENTRY K ON K.FENTRYID=J.FENTRYID -INNER JOIN T_PRD_MO L ON L.FID=K.FID AND SUBSTRING(L.FBILLNO, CHARINDEX('-',L.FBILLNO)+1,LEN(L.FBILLNO)) = SUBSTRING(A.FBILLNO, CHARINDEX('-',A.FBILLNO)+1,LEN(A.FBILLNO)) -inner join #temp2 m on m.Fname=a.FBILLNO -WHERE 1=1 -AND B.FFORECASTGROUP = '' - - +/*********************************ֶstart*****************************************/ +--UPDATE B SET FFORECASTGROUP = REPLACE( D.FFORECASTGROUP,H.FBILLNO,L.FBILLNO) + +--FROM T_PRD_MO A +--INNER JOIN T_PRD_MOENTRY B ON A.FID=B.FID +--INNER JOIN T_PRD_MOENTRY_Q C ON C.FENTRYID=B.FENTRYID +--INNER JOIN T_PRD_MOENTRY D ON D.FENTRYID=C.FSRCSPLITENTRYID +--INNER JOIN T_PRD_MO E ON E.FID=D.FID +--INNER JOIN T_PRD_MO H ON H.FBILLNO=D.FFORECASTGROUPFRIST --ײ +--INNER JOIN T_PRD_MOENTRY I ON I.FID=H.FID --ײ㵥 +--INNER JOIN T_PRD_MOENTRY_Q J ON J.FSRCSPLITENTRYID=I.FENTRYID +--INNER JOIN T_PRD_MOENTRY K ON K.FENTRYID=J.FENTRYID +--INNER JOIN T_PRD_MO L ON L.FID=K.FID AND SUBSTRING(L.FBILLNO, CHARINDEX('-',L.FBILLNO)+1,LEN(L.FBILLNO)) = SUBSTRING(A.FBILLNO, CHARINDEX('-',A.FBILLNO)+1,LEN(A.FBILLNO)) +--inner join #temp2 m on m.Fname=a.FBILLNO +--WHERE 1=1 +--AND B.FFORECASTGROUP = '' + +UPDATE t0e SET t0e.FFORECASTGROUP = REPLACE( t1e.FFORECASTGROUP,t2.FBILLNO,t3.FBILLNO) +--SELECT REPLACE( t1e.FFORECASTGROUP,t2.FBILLNO,t3.FBILLNO) +FROM T_PRD_MO t0 + INNER JOIN T_PRD_MOENTRY t0e on t0.FID = t0e.FID + INNER JOIN T_PRD_MOENTRY_Q t0e_q on t0e_q.FENTRYID = t0e.FENTRYID + INNER JOIN T_PRD_MOENTRY t1e on t1e.FENTRYID = t0e_q.FSRCSPLITENTRYID + INNER JOIN T_PRD_MO t2 on t2.FBILLNO = t1e.FFORECASTGROUPFRIST + INNER JOIN T_PRD_MOENTRY t2e on t2e.FID = t2.FID + INNER JOIN T_PRD_MOENTRY_Q t3e_q on t3e_q.FSRCSPLITENTRYID = t2e.FENTRYID + INNER JOIN T_PRD_MOENTRY t3e on t3e.FENTRYID = t3e_q.FENTRYID + INNER JOIN T_PRD_MO t3 on t3.FID = t3e.FID AND SUBSTRING(t3.FBILLNO, CHARINDEX('-',t3.FBILLNO)+1,LEN(t3.FBILLNO)) = SUBSTRING(t0.FBILLNO, CHARINDEX('-',t0.FBILLNO)+1,LEN(t0.FBILLNO)) +WHERE 1=1 + AND t0e.FFORECASTGROUP = '' +/*********************************ֶend*****************************************/ --2024-01-15 ޸ ,ʹÿ洢 exec PROC_SELECT_UPDATE_BOMLEVEL @FBILLNO diff --git a/07.珠海英搏尔/Enpower.Python/Enpower.Python.pyproj b/07.珠海英搏尔/Enpower.Python/Enpower.Python.pyproj new file mode 100644 index 0000000..c3a8e6b --- /dev/null +++ b/07.珠海英搏尔/Enpower.Python/Enpower.Python.pyproj @@ -0,0 +1,39 @@ + + + Debug + 2.0 + e16a75bc-5fb5-47fc-962d-4ad20e686d59 + . + + + + + . + . + Enpower.Python + Enpower.Python + + + true + false + + + true + false + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/07.珠海英搏尔/Enpower.Python/PRD_MO/OperationEventPlugInEx.py b/07.珠海英搏尔/Enpower.Python/PRD_MO/OperationEventPlugInEx.py new file mode 100644 index 0000000..914a145 --- /dev/null +++ b/07.珠海英搏尔/Enpower.Python/PRD_MO/OperationEventPlugInEx.py @@ -0,0 +1,82 @@ +#clrп +import clr +#Ӷcloudij +clr.AddReference('System') +clr.AddReference('System.Data') +# ýstart +clr.AddReference('Kingdee.BOS') +clr.AddReference('Kingdee.BOS.App') +clr.AddReference('Kingdee.BOS.App.Core') +clr.AddReference('Kingdee.BOS.Business.DynamicForm') +clr.AddReference('Kingdee.BOS.Contracts') +clr.AddReference('Kingdee.BOS.Core') +clr.AddReference('Kingdee.BOS.DataEntity') +clr.AddReference('Kingdee.BOS.ServiceHelper') +# ýend + +#dairycloudеijʵ󣨷ռ䵼룬ݹ鵼룩 +from System import * +from System.Data import * +from System.Collections.Generic import List +from Kingdee.BOS.Core import * +from Kingdee.BOS.Util import * +from Kingdee.BOS.Core.List import * +from Kingdee.BOS.Core.List.PlugIn import * +from Kingdee.BOS.Orm.DataEntity import * +from Kingdee.BOS.Core.DynamicForm.PlugIn import * +from Kingdee.BOS.Core.DynamicForm.PlugIn.Args import * +from Kingdee.BOS.App.Data import * +from Kingdee.BOS.ServiceHelper import * + +# def OnPreparePropertys(e): +# e.FieldKeys.Add("FWorkTimeType") + +def AfterDoOperation(e): + # 8ύ9126 + if e.Operation.Operation == "DoUpdatePPBOMLevel": + datas = this.View.SelectedRowsInfo + whereSql = "" + if datas.Count > 0: + whereSql = "AND t0.FID IN({0})".format( ",".join(set(map(lambda x :str(x.PrimaryKeyValue),datas)))) + + sql = """/*dialect*/ +UPDATE t0e SET t0e.FFORECASTGROUP = t1e.FFORECASTGROUP + ,t0e.FFORECASTGROUPFRIST = CASE + WHEN CHARINDEX( '-',REPLACE( t1e.FFORECASTGROUP,'_','-') ,0) = 0 + THEN t1e.FFORECASTGROUP + ELSE SUBSTRING(t1e.FFORECASTGROUP,0, CHARINDEX( '-',REPLACE( t1e.FFORECASTGROUP,'_','-') ,0)) + END +FROM T_PRD_PPBOM t0 + INNER JOIN T_PRD_PPBOMENTRY t0e on t0.FID = t0e.FID + INNER JOIN T_PRD_MOENTRY t1e on t1e.FID = t0.FMOID +WHERE 1 = 1 AND t1e.FFORECASTGROUP != '' + AND t0e.FFORECASTGROUP = '' + AND t0e.FFORECASTGROUPFRIST != t1e.FFORECASTGROUPFRIST + {0} """.format(whereSql) + # raise Exception(sql) + # count = DBUtils.Execute(this.Context, sql) + +# def EndOperationTransaction(e): +# if this.FormOperation.Operation == "DoUpdatePPBOMLevel": +# datas = e.DataEntitys; +# whereSql = "" +# if datas.Count > 0: +# whereSql = "AND t0.FID IN({0})".format( ",".join(set(map(lambda x :str(x.Id),datas)))) + +# sql = """/*dialect*/ +# UPDATE t0e SET t0e.FFORECASTGROUP = t1e.FFORECASTGROUP +# ,t0e.FFORECASTGROUPFRIST = CASE +# WHEN CHARINDEX( '-',REPLACE( t1e.FFORECASTGROUP,'_','-') ,0) = 0 +# THEN t1e.FFORECASTGROUP +# ELSE SUBSTRING(t1e.FFORECASTGROUP,0, CHARINDEX( '-',REPLACE( t1e.FFORECASTGROUP,'_','-') ,0)) +# END +# FROM T_PRD_PPBOM t0 +# INNER JOIN T_PRD_PPBOMENTRY t0e on t0.FID = t0e.FID +# INNER JOIN T_PRD_MOENTRY t1e on t1e.FID = t0.FMOID +# WHERE 1 = 1 AND t1e.FFORECASTGROUP != '' +# AND t0e.FFORECASTGROUP = '' +# AND t0e.FFORECASTGROUPFRIST != t1e.FFORECASTGROUPFRIST +# {0} +# """.format(whereSql) + +# raise Exception(sql) \ No newline at end of file diff --git a/07.珠海英搏尔/Enpower/Enpower.csproj b/07.珠海英搏尔/Enpower/Enpower.csproj new file mode 100644 index 0000000..534473f --- /dev/null +++ b/07.珠海英搏尔/Enpower/Enpower.csproj @@ -0,0 +1,67 @@ + + + + + Debug + AnyCPU + {AFEF4E4D-92E3-4F04-9F19-ED01C0B2F24A} + Library + Properties + Enpower + Enpower + v4.0 + 512 + true + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/07.珠海英搏尔/Enpower/PRD_MO/SQLserver/PLAN2.sql b/07.珠海英搏尔/Enpower/PRD_MO/SQLserver/PLAN2.sql new file mode 100644 index 0000000..06cf79b --- /dev/null +++ b/07.珠海英搏尔/Enpower/PRD_MO/SQLserver/PLAN2.sql @@ -0,0 +1,222 @@ +USE [AIS202401040030] +GO +/****** Object: StoredProcedure [dbo].[P_UpdatePlan2] Script Date: 2024-01-17 17:38:56 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +-- ============================================= +-- Author: 阿斌 +-- Create date: 2023-05-23 +-- Description: 更新计划订单信息 +-- ============================================= +ALTER PROCEDURE [dbo].[P_UpdatePlan2] +( + @FBILLNO NVARCHAR(1000) +) + +AS +BEGIN + DECLARE @RC int + SET @RC = 1; + + WHILE(@RC >0) + BEGIN + EXEC @RC = PROC_UPDATE_PLAN_BY_PAGE + END +--SET NOCOUNT ON; + +--SELECT +-- A.FBILLNO AS '计划订单单号' +-- ,A.FSALENOROW,A.F_SOURCE_ORDER_LINE_NUMBER as '计划订单销售订单行号' +-- ,A.F_Source_order_number as '计划订单销售订单单号' +-- ,A.F_FORECASTNUMBER as '计划订单预测单单号' +-- ,A.F_Linenumber as '计划订单预测单行号' +-- ,E.FBILLNO AS '预测单单号' +-- ,D.FSEQ,D.F_Source_order_number as '预测单销售订单单号' +-- ,D.F_SOURCE_ORDER_LINE_NUMBER as '预测单销售订单行号' +--INTO #TEMP1 +--FROM T_PLN_PLANORDER A +--INNER JOIN T_PLN_RESERVELINKENTRY B ON B.FSUPPLYBILLNO = A.FBILLNO +--INNER JOIN T_PLN_RESERVELINK C ON C.FID=B.FID +--INNER JOIN T_PLN_FORECASTENTRY D ON D.FENTRYID=C.FSRCENTRYID +--INNER JOIN T_PLN_FORECAST e on e .fid=d.FID +----inner join #temp2 f on f.fname = a.FBILLNO +--WHERE A.F_FORECASTNUMBER='' +----AND A.FBILLNO = @FBILLNO +----where A.FBILLNO = 'MRP00260726' +----WHERE A.F_SOURCE_ORDER_LINE_NUMBER = '' + + + +-- SELECT +--计划订单单号, 预测单单号, +--'预测单行号'=ISNULL( stuff((select ','+CONVERT(nvarchar(100), FSEQ) from #TEMP1 where 计划订单单号=t.计划订单单号 and 预测单单号 =t.预测单单号 for xml path('')),1,1,''),''), +--'销售订单单号'=ISNULL( stuff((select distinct ','+CONVERT(nvarchar(100), 预测单销售订单单号) from #TEMP1 where 预测单销售订单单号<>'' and 计划订单单号=t.计划订单单号 and 预测单单号 =t.预测单单号 for xml path('')),1,1,''),''), +--'销售订单行号'=ISNULL( stuff((select distinct ','+CONVERT(nvarchar(100), 预测单销售订单行号) from #TEMP1 where 预测单销售订单行号<>'' and 计划订单单号=t.计划订单单号 and 预测单单号 =t.预测单单号 for xml path('')),1,1,''),'') +--into #temp3 +-- FROM #TEMP1 t +-- GROUP BY 计划订单单号,预测单单号 + + +-- UPDATE T_PLN_PLANORDER SET F_FORECASTNUMBER=B.预测单单号, F_Linenumber=B.预测单行号, F_SOURCE_ORDER_LINE_NUMBER=b.销售订单行号, F_SOURCE_ORDER_NUMBER=b.销售订单单号 +--FROM T_PLN_PLANORDER A +--inner join #temp3 B +--ON A.FBILLNO=B.计划订单单号 +----inner join #temp2 f on f.fname = a.FBILLNO + + + +--DROP TABLE #TEMP1 +--DROP TABLE #temp3 + + +--UPDATE A SET A.F_CUSTOMERNAME=D.FCUSTID,A.F_MATERIALCODE=D.FMATERIALID +--from T_PLN_PLANORDER A +--INNER JOIN T_PLN_RESERVELINKENTRY B ON B.FSUPPLYBILLNO = A.FBILLNO +--INNER JOIN T_PLN_RESERVELINK C ON C.FID=B.FID +--INNER JOIN T_PLN_FORECASTENTRY D ON D.FENTRYID=C.FSRCENTRYID +--INNER JOIN T_PLN_FORECAST e on e .fid=d.FID +----inner join #temp2 f on f.fname = a.FBILLNO +----where (a.F_CUSTOMERNAME=0 or a.F_MATERIALCODE=0 ) +----AND A.FBILLNO = @FBILLNO + +--update a set F_CUSTOMERNAME=d.FCUSTID,F_MATERIALCODE=d.FMATERIALID,F_FORECASTNUMBER=c.FBILLNO,F_Linenumber=d.FSEQ,F_SOURCE_ORDER_LINE_NUMBER=d.F_SOURCE_ORDER_LINE_NUMBER,F_Source_order_number=d.F_Source_order_number +--FROM T_PLN_PLANORDER A +--INNER JOIN T_PLN_PLANORDER_B B ON A.FID=B.FID +--INNER JOIN T_PLN_FORECAST C ON C .FBILLNO = B.FSALEORDERNO +--INNER JOIN T_PLN_FORECASTENTRY D ON D .FID= C.FID AND D.FSEQ=B.FSALEORDERENTRYSEQ +----INNER JOIN #temp2 e ON A.FBILLNO = e.Fname +----WHERE A.FBILLNO = 'MRP00640407' + + + +----UPDATE A SET A.F_Remark=ISNULL( dbo.GetForecast(A.F_FORECASTNUMBER ,A.F_LINENUMBER),'') +----from T_PLN_PLANORDER A +----INNER JOIN T_PLN_FORECAST B ON B.FBILLNO=A.F_FORECASTNUMBER +----INNER JOIN T_PLN_FORECAST_L C ON C.FID=B.FID +----INNER JOIN T_PLN_FORECASTENTRY D on D.FID=B.FID AND D.FSEQ=A.F_Linenumber +----where ( a.F_Remark='' ) + + +--UPDATE E SET F_DESCRIPTION=ISNULL(C.FDESCRIPTION ,'' ) +--from T_PLN_PLANORDER A +--INNER JOIN T_PLN_PLANORDER_L E ON E.FID=A.FID +--INNER JOIN T_PLN_FORECAST B ON B.FBILLNO=A.F_FORECASTNUMBER +--INNER JOIN T_PLN_FORECAST_L C ON C.FID=B.FID +----inner join #temp2 f on f.fname = a.FBILLNO +----where ( e.F_DESCRIPTION='' ) +----AND A.FBILLNO = @FBILLNO + + + + + +--UPDATE T_PLN_PLANORDER SET F_Remark= +-- ISNULL( dbo.GetForecast(A.F_FORECASTNUMBER ,A.F_LINENUMBER),'') +--from T_PLN_PLANORDER A +----inner join #temp2 f on f.fname = a.FBILLNO +--where +--1=1 +----and ( a.F_Remark='' ) +--AND CONVERT(nvarchar(100), a.FCREATEDATE,23) = CONVERT(nvarchar(100), GETDATE(),23) +----AND A.FBILLNO = @FBILLNO + + +----UPDATE T_PLN_PLANORDER SET F_WAUG_LAYER = +----CASE WHEN B.层数 IS NULL THEN 订单号 ELSE CONCAT(订单号,'-',层数) END +---- from T_PLN_PLANORDER A +---- inner join +----( +----select A.FID, dbo.GetBomSeq( B .FBOMID,a.FMATERIALID) as '层数', A.FMATERIALID,B.FBOMID,A.f_WAUG_LAYER,A.F_FORECASTNUMBER,A.F_LINENUMBER, +----A.F_MATERIALCODE,a.FBILLNO as '1',b.FBILLNO as '订单号' from T_PLN_PLANORDER A +----INNER JOIN T_PLN_PLANORDER B ON A.F_FORECASTNUMBER=B.F_FORECASTNUMBER AND A.F_LINENUMBER=B.F_LINENUMBER AND A.F_MATERIALCODE =B.FMATERIALID +----INNER JOIN #temp2 C ON C.Fname=A.FBILLNO +------WHERE a.F_WAUG_LAYER = '' + +----) B ON A.FID = B.FID + +----DROP TABLE #temp2 + + + + +------select a.FBILLNO AS '计划订单单号',A.FSALENOROW,A.F_SOURCE_ORDER_LINE_NUMBER as '计划订单销售订单行号',A.F_Source_order_number as '计划订单销售订单单号' +------, A.F_FORECASTNUMBER as '计划订单预测单单号', A.F_Linenumber as '计划订单预测单行号', +------E.FBILLNO AS '预测单单号',D.FSEQ,D.F_Source_order_number as '预测单销售订单单号',D.F_SOURCE_ORDER_LINE_NUMBER as '预测单销售订单行号' +------INTO #TEMP1 +------from T_PLN_PLANORDER A +------INNER JOIN T_PLN_RESERVELINKENTRY B ON B.FSUPPLYBILLNO = A.FBILLNO +------INNER JOIN T_PLN_RESERVELINK C ON C.FID=B.FID +------INNER JOIN T_PLN_FORECASTENTRY D ON D.FENTRYID=C.FSRCENTRYID +------INNER JOIN T_PLN_FORECAST e on e .fid=d.FID +------WHERE A.F_FORECASTNUMBER='' +------AND A.FBILLNO = @FBILLNO +--------where A.FBILLNO = 'MRP00260726' +--------WHERE A.F_SOURCE_ORDER_LINE_NUMBER = '' + +------ --select * from #TEMP1 +-------- +------UPDATE A SET A.F_FORECASTNUMBER=B.预测单单号,A.F_Linenumber=B.预测单行号,a.F_SOURCE_ORDER_LINE_NUMBER=b.销售订单行号,a.F_SOURCE_ORDER_NUMBER=b.销售订单单号 +------FROM T_PLN_PLANORDER A +------inner join +------( +------SELECT +------计划订单单号, 预测单单号, +------'预测单行号'=ISNULL( stuff((select ','+CONVERT(nvarchar(100), FSEQ) from #TEMP1 where 计划订单单号=t.计划订单单号 and 预测单单号 =t.预测单单号 for xml path('')),1,1,''),''), +------'销售订单单号'=ISNULL( stuff((select distinct ','+CONVERT(nvarchar(100), 预测单销售订单单号) from #TEMP1 where 预测单销售订单单号<>'' and 计划订单单号=t.计划订单单号 and 预测单单号 =t.预测单单号 for xml path('')),1,1,''),''), +------'销售订单行号'=ISNULL( stuff((select distinct ','+CONVERT(nvarchar(100), 预测单销售订单行号) from #TEMP1 where 预测单销售订单行号<>'' and 计划订单单号=t.计划订单单号 and 预测单单号 =t.预测单单号 for xml path('')),1,1,''),'') +------ FROM #TEMP1 t +------ GROUP BY 计划订单单号,预测单单号 +------) B +------ON A.FBILLNO=B.计划订单单号 +------WHERE A.F_FORECASTNUMBER='' +------AND A.FBILLNO = @FBILLNO + + + +------DROP TABLE #TEMP1 + + +----UPDATE A SET A.F_CUSTOMERNAME=D.FCUSTID,A.F_MATERIALCODE=D.FMATERIALID +----from T_PLN_PLANORDER A +----INNER JOIN T_PLN_RESERVELINKENTRY B ON B.FSUPPLYBILLNO = A.FBILLNO +----INNER JOIN T_PLN_RESERVELINK C ON C.FID=B.FID +----INNER JOIN T_PLN_FORECASTENTRY D ON D.FENTRYID=C.FSRCENTRYID +----INNER JOIN T_PLN_FORECAST e on e .fid=d.FID +----where (a.F_CUSTOMERNAME=0 or a.F_MATERIALCODE=0 ) +----AND A.FBILLNO = @FBILLNO + + +------UPDATE A SET A.F_Remark=ISNULL( dbo.GetForecast(A.F_FORECASTNUMBER ,A.F_LINENUMBER),'') +------from T_PLN_PLANORDER A +------INNER JOIN T_PLN_FORECAST B ON B.FBILLNO=A.F_FORECASTNUMBER +------INNER JOIN T_PLN_FORECAST_L C ON C.FID=B.FID +------INNER JOIN T_PLN_FORECASTENTRY D on D.FID=B.FID AND D.FSEQ=A.F_Linenumber +------where ( a.F_Remark='' ) + + +----UPDATE E SET F_DESCRIPTION=ISNULL(C.FDESCRIPTION ,'' ) +----from T_PLN_PLANORDER A +----INNER JOIN T_PLN_PLANORDER_L E ON E.FID=A.FID +----INNER JOIN T_PLN_FORECAST B ON B.FBILLNO=A.F_FORECASTNUMBER +----INNER JOIN T_PLN_FORECAST_L C ON C.FID=B.FID +----where ( e.F_DESCRIPTION='' ) +----AND A.FBILLNO = @FBILLNO + + + + + +----UPDATE T_PLN_PLANORDER SET F_Remark= +---- ISNULL( dbo.GetForecast(A.F_FORECASTNUMBER ,A.F_LINENUMBER),'') +----from T_PLN_PLANORDER A +----where +----1=1 +----and ( a.F_Remark='' ) +----AND CONVERT(nvarchar(100), a.FCREATEDATE,23) = CONVERT(nvarchar(100), GETDATE(),23) +----AND A.FBILLNO = @FBILLNO + + + +END \ No newline at end of file diff --git a/07.珠海英搏尔/Enpower/PRD_MO/SQLserver/P_UpdatePlan2.sql b/07.珠海英搏尔/Enpower/PRD_MO/SQLserver/P_UpdatePlan2.sql new file mode 100644 index 0000000..52447d8 --- /dev/null +++ b/07.珠海英搏尔/Enpower/PRD_MO/SQLserver/P_UpdatePlan2.sql @@ -0,0 +1,223 @@ +USE [AIS20220929093310] +GO +/****** Object: StoredProcedure [dbo].[P_UpdatePlan2] Script Date: 2024-03-12 11:36:05 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +-- ============================================= +-- Author: +-- Create date: 2023-05-23 +-- Description: ¼ƻϢ +-- ============================================= +ALTER PROCEDURE [dbo].[P_UpdatePlan2] +( + @FBILLNO NVARCHAR(1000) +) + +AS +BEGIN + EXEC PROC_UPDATE_PLAN_20240120 + -- SET NOCOUNT ON added to prevent extra result sets from + -- interfering with SELECT statements. +-- SET NOCOUNT ON; +-- -- EXEC P_UpdatePlan + + +-- select fname into #temp2 from dbo.fn_hr_StrSplit(@FBILLNO,',') + + + + + + +--select a.FBILLNO AS 'ƻ',A.FSALENOROW,A.F_SOURCE_ORDER_LINE_NUMBER as 'ƻ۶к',A.F_Source_order_number as 'ƻ۶' +--, A.F_FORECASTNUMBER as 'ƻԤⵥ', A.F_Linenumber as 'ƻԤⵥк', +--E.FBILLNO AS 'Ԥⵥ',D.FSEQ,D.F_Source_order_number as 'Ԥⵥ۶',D.F_SOURCE_ORDER_LINE_NUMBER as 'Ԥⵥ۶к' +--INTO #TEMP1 +--from T_PLN_PLANORDER A +--INNER JOIN T_PLN_RESERVELINKENTRY B ON B.FSUPPLYBILLNO = A.FBILLNO +--INNER JOIN T_PLN_RESERVELINK C ON C.FID=B.FID +--INNER JOIN T_PLN_FORECASTENTRY D ON D.FENTRYID=C.FSRCENTRYID +--INNER JOIN T_PLN_FORECAST e on e .fid=d.FID +--inner join #temp2 f on f.fname = a.FBILLNO +----WHERE A.F_FORECASTNUMBER='' +----AND A.FBILLNO = @FBILLNO +----where A.FBILLNO = 'MRP00260726' +----WHERE A.F_SOURCE_ORDER_LINE_NUMBER = '' + +-- --select * from #TEMP1 +---- + + +-- SELECT +--ƻ, Ԥⵥ, +--'Ԥⵥк'=ISNULL( stuff((select ','+CONVERT(nvarchar(100), FSEQ) from #TEMP1 where ƻ=t.ƻ and Ԥⵥ =t.Ԥⵥ for xml path('')),1,1,''),''), +--'۶'=ISNULL( stuff((select distinct ','+CONVERT(nvarchar(100), Ԥⵥ۶) from #TEMP1 where Ԥⵥ۶<>'' and ƻ=t.ƻ and Ԥⵥ =t.Ԥⵥ for xml path('')),1,1,''),''), +--'۶к'=ISNULL( stuff((select distinct ','+CONVERT(nvarchar(100), Ԥⵥ۶к) from #TEMP1 where Ԥⵥ۶к<>'' and ƻ=t.ƻ and Ԥⵥ =t.Ԥⵥ for xml path('')),1,1,''),'') +--into #temp3 +-- FROM #TEMP1 t +-- GROUP BY ƻ,Ԥⵥ + + +-- UPDATE T_PLN_PLANORDER SET F_FORECASTNUMBER=B.Ԥⵥ, F_Linenumber=B.Ԥⵥк, F_SOURCE_ORDER_LINE_NUMBER=b.۶к, F_SOURCE_ORDER_NUMBER=b.۶ +--FROM T_PLN_PLANORDER A +--inner join #temp3 B +--ON A.FBILLNO=B.ƻ +--inner join #temp2 f on f.fname = a.FBILLNO + + + +--DROP TABLE #TEMP1 +--DROP TABLE #temp3 + + +--UPDATE A SET A.F_CUSTOMERNAME=D.FCUSTID,A.F_MATERIALCODE=D.FMATERIALID +--from T_PLN_PLANORDER A +--INNER JOIN T_PLN_RESERVELINKENTRY B ON B.FSUPPLYBILLNO = A.FBILLNO +--INNER JOIN T_PLN_RESERVELINK C ON C.FID=B.FID +--INNER JOIN T_PLN_FORECASTENTRY D ON D.FENTRYID=C.FSRCENTRYID +--INNER JOIN T_PLN_FORECAST e on e .fid=d.FID +--inner join #temp2 f on f.fname = a.FBILLNO +----where (a.F_CUSTOMERNAME=0 or a.F_MATERIALCODE=0 ) +----AND A.FBILLNO = @FBILLNO + +--update a set F_CUSTOMERNAME=d.FCUSTID,F_MATERIALCODE=d.FMATERIALID,F_FORECASTNUMBER=c.FBILLNO,F_Linenumber=d.FSEQ,F_SOURCE_ORDER_LINE_NUMBER=d.F_SOURCE_ORDER_LINE_NUMBER,F_Source_order_number=d.F_Source_order_number +--FROM T_PLN_PLANORDER A +--INNER JOIN T_PLN_PLANORDER_B B ON A.FID=B.FID +--INNER JOIN T_PLN_FORECAST C ON C .FBILLNO = B.FSALEORDERNO +--INNER JOIN T_PLN_FORECASTENTRY D ON D .FID= C.FID AND D.FSEQ=B.FSALEORDERENTRYSEQ +--INNER JOIN #temp2 e ON A.FBILLNO = e.Fname +----WHERE A.FBILLNO = 'MRP00640407' + + + +----UPDATE A SET A.F_Remark=ISNULL( dbo.GetForecast(A.F_FORECASTNUMBER ,A.F_LINENUMBER),'') +----from T_PLN_PLANORDER A +----INNER JOIN T_PLN_FORECAST B ON B.FBILLNO=A.F_FORECASTNUMBER +----INNER JOIN T_PLN_FORECAST_L C ON C.FID=B.FID +----INNER JOIN T_PLN_FORECASTENTRY D on D.FID=B.FID AND D.FSEQ=A.F_Linenumber +----where ( a.F_Remark='' ) + + +--UPDATE E SET F_DESCRIPTION=ISNULL(C.FDESCRIPTION ,'' ) +--from T_PLN_PLANORDER A +--INNER JOIN T_PLN_PLANORDER_L E ON E.FID=A.FID +--INNER JOIN T_PLN_FORECAST B ON B.FBILLNO=A.F_FORECASTNUMBER +--INNER JOIN T_PLN_FORECAST_L C ON C.FID=B.FID +--inner join #temp2 f on f.fname = a.FBILLNO +----where ( e.F_DESCRIPTION='' ) +----AND A.FBILLNO = @FBILLNO + + + + + +--UPDATE T_PLN_PLANORDER SET F_Remark= +-- ISNULL( dbo.GetForecast(A.F_FORECASTNUMBER ,A.F_LINENUMBER),'') +--from T_PLN_PLANORDER A +--inner join #temp2 f on f.fname = a.FBILLNO +--where +--1=1 +----and ( a.F_Remark='' ) +--AND CONVERT(nvarchar(100), a.FCREATEDATE,23) = CONVERT(nvarchar(100), GETDATE(),23) +----AND A.FBILLNO = @FBILLNO + + +--UPDATE T_PLN_PLANORDER SET F_WAUG_LAYER = +--CASE WHEN B. IS NULL THEN ELSE CONCAT(,'-',) END +-- from T_PLN_PLANORDER A +-- inner join +--( +--select A.FID, dbo.GetBomSeq( B .FBOMID,a.FMATERIALID) as '', A.FMATERIALID,B.FBOMID,A.f_WAUG_LAYER,A.F_FORECASTNUMBER,A.F_LINENUMBER, +--A.F_MATERIALCODE,a.FBILLNO as '1',b.FBILLNO as '' from T_PLN_PLANORDER A +--INNER JOIN T_PLN_PLANORDER B ON A.F_FORECASTNUMBER=B.F_FORECASTNUMBER AND A.F_LINENUMBER=B.F_LINENUMBER AND A.F_MATERIALCODE =B.FMATERIALID +--INNER JOIN #temp2 C ON C.Fname=A.FBILLNO +----WHERE a.F_WAUG_LAYER = '' + +--) B ON A.FID = B.FID + +--DROP TABLE #temp2 + + + + +------select a.FBILLNO AS 'ƻ',A.FSALENOROW,A.F_SOURCE_ORDER_LINE_NUMBER as 'ƻ۶к',A.F_Source_order_number as 'ƻ۶' +------, A.F_FORECASTNUMBER as 'ƻԤⵥ', A.F_Linenumber as 'ƻԤⵥк', +------E.FBILLNO AS 'Ԥⵥ',D.FSEQ,D.F_Source_order_number as 'Ԥⵥ۶',D.F_SOURCE_ORDER_LINE_NUMBER as 'Ԥⵥ۶к' +------INTO #TEMP1 +------from T_PLN_PLANORDER A +------INNER JOIN T_PLN_RESERVELINKENTRY B ON B.FSUPPLYBILLNO = A.FBILLNO +------INNER JOIN T_PLN_RESERVELINK C ON C.FID=B.FID +------INNER JOIN T_PLN_FORECASTENTRY D ON D.FENTRYID=C.FSRCENTRYID +------INNER JOIN T_PLN_FORECAST e on e .fid=d.FID +------WHERE A.F_FORECASTNUMBER='' +------AND A.FBILLNO = @FBILLNO +--------where A.FBILLNO = 'MRP00260726' +--------WHERE A.F_SOURCE_ORDER_LINE_NUMBER = '' + +------ --select * from #TEMP1 +-------- +------UPDATE A SET A.F_FORECASTNUMBER=B.Ԥⵥ,A.F_Linenumber=B.Ԥⵥк,a.F_SOURCE_ORDER_LINE_NUMBER=b.۶к,a.F_SOURCE_ORDER_NUMBER=b.۶ +------FROM T_PLN_PLANORDER A +------inner join +------( +------SELECT +------ƻ, Ԥⵥ, +------'Ԥⵥк'=ISNULL( stuff((select ','+CONVERT(nvarchar(100), FSEQ) from #TEMP1 where ƻ=t.ƻ and Ԥⵥ =t.Ԥⵥ for xml path('')),1,1,''),''), +------'۶'=ISNULL( stuff((select distinct ','+CONVERT(nvarchar(100), Ԥⵥ۶) from #TEMP1 where Ԥⵥ۶<>'' and ƻ=t.ƻ and Ԥⵥ =t.Ԥⵥ for xml path('')),1,1,''),''), +------'۶к'=ISNULL( stuff((select distinct ','+CONVERT(nvarchar(100), Ԥⵥ۶к) from #TEMP1 where Ԥⵥ۶к<>'' and ƻ=t.ƻ and Ԥⵥ =t.Ԥⵥ for xml path('')),1,1,''),'') +------ FROM #TEMP1 t +------ GROUP BY ƻ,Ԥⵥ +------) B +------ON A.FBILLNO=B.ƻ +------WHERE A.F_FORECASTNUMBER='' +------AND A.FBILLNO = @FBILLNO + + + +------DROP TABLE #TEMP1 + + +----UPDATE A SET A.F_CUSTOMERNAME=D.FCUSTID,A.F_MATERIALCODE=D.FMATERIALID +----from T_PLN_PLANORDER A +----INNER JOIN T_PLN_RESERVELINKENTRY B ON B.FSUPPLYBILLNO = A.FBILLNO +----INNER JOIN T_PLN_RESERVELINK C ON C.FID=B.FID +----INNER JOIN T_PLN_FORECASTENTRY D ON D.FENTRYID=C.FSRCENTRYID +----INNER JOIN T_PLN_FORECAST e on e .fid=d.FID +----where (a.F_CUSTOMERNAME=0 or a.F_MATERIALCODE=0 ) +----AND A.FBILLNO = @FBILLNO + + +------UPDATE A SET A.F_Remark=ISNULL( dbo.GetForecast(A.F_FORECASTNUMBER ,A.F_LINENUMBER),'') +------from T_PLN_PLANORDER A +------INNER JOIN T_PLN_FORECAST B ON B.FBILLNO=A.F_FORECASTNUMBER +------INNER JOIN T_PLN_FORECAST_L C ON C.FID=B.FID +------INNER JOIN T_PLN_FORECASTENTRY D on D.FID=B.FID AND D.FSEQ=A.F_Linenumber +------where ( a.F_Remark='' ) + + +----UPDATE E SET F_DESCRIPTION=ISNULL(C.FDESCRIPTION ,'' ) +----from T_PLN_PLANORDER A +----INNER JOIN T_PLN_PLANORDER_L E ON E.FID=A.FID +----INNER JOIN T_PLN_FORECAST B ON B.FBILLNO=A.F_FORECASTNUMBER +----INNER JOIN T_PLN_FORECAST_L C ON C.FID=B.FID +----where ( e.F_DESCRIPTION='' ) +----AND A.FBILLNO = @FBILLNO + + + + + +----UPDATE T_PLN_PLANORDER SET F_Remark= +---- ISNULL( dbo.GetForecast(A.F_FORECASTNUMBER ,A.F_LINENUMBER),'') +----from T_PLN_PLANORDER A +----where +----1=1 +----and ( a.F_Remark='' ) +----AND CONVERT(nvarchar(100), a.FCREATEDATE,23) = CONVERT(nvarchar(100), GETDATE(),23) +----AND A.FBILLNO = @FBILLNO + + + +END \ No newline at end of file diff --git a/07.珠海英搏尔/Enpower/PRD_MO/SQLserver/db/生产订单BOM.sql b/07.珠海英搏尔/Enpower/PRD_MO/SQLserver/db/生产订单BOM.sql new file mode 100644 index 0000000..41aeddd --- /dev/null +++ b/07.珠海英搏尔/Enpower/PRD_MO/SQLserver/db/生产订单BOM.sql @@ -0,0 +1,49 @@ + /*ƻһͶţT_PLN_RESERVELINKENTRYƻתƵ */ + SELECT + t0e.FID + ,t0.FBILLNO + ,t0e.FENTRYID + ,t0e.FMATERIALID + ,t0e.FBomId MOBomId + ,t1.FSRCFORMID 'Դ' + ,t1.FSRCBILLNO 'Դ' + ,t1.FSRCINTERID /*Դ*/ + ,t1.FSRCENTRYID /*Դ¼*/ ---ԴͬһԤⵥͬһеֵһͬ + ,t2e.FSEQ + ,t2e.FBomId /*ԤⶩFBomIdȡƥBOM༶չײ*/ + ,t2e.FMATERIALID OMATERAILID + ,'' BOMLevel + /*һʱ*/ + --INTO #_MO + FROM T_PRD_MO t0 --ͷ + INNER JOIN T_PRD_MOENTRY t0e ON t0e.FID=t0.FID -- + INNER JOIN T_PLN_RESERVELINKENTRY t1e ON t1e.FINTSUPPLYID=t0e.FID AND t1e.FINTSUPPLYENTRYID=t0e.FENTRYID--Ԥ + INNER JOIN T_PLN_RESERVELINK t1 ON t1.FID=t1e.FID AND t1.FSRCFORMID='PLN_FORECAST'--Ԥͷ + INNER JOIN T_PLN_FORECASTENTRY t2e ON t2e.FID=t1.FSRCINTERID AND t2e.FENTRYID=t1.FSRCENTRYID--Ԥⵥ + WHERE 1 = 1 + --t0.FBILLNO='WO2401100002' /**/ + AND t0e.FFORECASTGROUP='' /*Ϊ*/ + AND t0e.FSRCBILLTYPE='PLN_PLANORDER' /*ȷͨMRPƵĵ*/ + + --CREATE INDEX [#PLid] ON #_MO (FSRCINTERID ASC,FSRCENTRYID ASC) /*ͬ*/ + --CREATE INDEX [#BomId] ON #_MO (FBomId ASC) /*BOM༶չԼײſ*/ + + --SELECT FSRCINTERID,FSRCENTRYID,MO2.FBILLNO AS 'ײIJ' + --into #n_mo + --FROM #_MO MO INNER JOIN T_PRD_MOENTRY MO1 ON MO1.FID=MO.FID AND MO1.FENTRYID=MO.FENTRYID + --INNER JOIN T_PRD_MO MO2 ON MO2.FID=MO.FID + --CREATE INDEX [#n_mo] ON #n_mo (FSRCINTERID ASC,FSRCENTRYID ASC) /*ͬ*/ + + ----update mo set BOMLevel=nmo.ײIJ+'-'+'ֵIJ' + ----from #_MO mo left join #n_mo nmo on nmo.FSRCINTERID=mo.FSRCINTERID and nmo.FSRCENTRYID=mo.FSRCENTRYID + --/*-------------dbo.GetBomSeqΪֵ洢̣ذֶεı----------------- + -- BOM_ID(Ӧ#_MOеFBomId) + -- BOM_ID(Ӧ#_MOеMOBomId) + -- + ----------------dbo.GetBomSeqΪֵ洢̣ذֶεı------------------*/ + ----select dbo.GetBomSeq(7293846,3994919) + + --select * from #_MO + + --DROP TABLE #_MO + --DROP TABLE #n_mo \ No newline at end of file diff --git a/07.珠海英搏尔/Enpower/PRD_MO/SQLserver/db/生产订单BOM_创建临时表.sql b/07.珠海英搏尔/Enpower/PRD_MO/SQLserver/db/生产订单BOM_创建临时表.sql new file mode 100644 index 0000000..ced761c --- /dev/null +++ b/07.珠海英搏尔/Enpower/PRD_MO/SQLserver/db/生产订单BOM_创建临时表.sql @@ -0,0 +1,186 @@ +IF EXISTS(SELECT * FROM SYS.PROCEDURES WHERE NAME='PROC_UPDATE_BOMLEVEL') + DROP PROCEDURE dbo.PROC_UPDATE_BOMLEVEL; +GO + +CREATE PROCEDURE PROC_UPDATE_BOMLEVEL +AS +BEGIN + CREATE TABLE #TMP_MO --ʱ#TMP + ( + FID INT + ,FBILLNO VARCHAR(255) + ,FDATE DATE + ,FENTRYID INT + ,FMATERIALID INT + ,MOBOMID INT + ,FSRCFORMID VARCHAR(255) + ,FSRCBILLNO VARCHAR(255) + ,FSRCINTERID INT + ,FSRCENTRYID INT + ,FSEQ INT + ,FBOMID INT + ,BOMLEVEL VARCHAR(255) + ,TOPBILLNO VARCHAR(255) + ); + CREATE INDEX [#TMP_MO_FID] ON #TMP_MO(FID); + + --INSERT INTO #TMP_MO + /*ƻһͶţT_PLN_RESERVELINKENTRYƻתƵ */ + SELECT + t0e.FID + ,t0.FBILLNO + ,t0.FDATE + ,t0e.FENTRYID + ,t0e.FMATERIALID + ,t0e.FBomId MOBomId + ,t1.FSRCFORMID --'Դ' + ,t1.FSRCBILLNO --'Դ' + ,t1.FSRCINTERID /*Դ*/ + ,t1.FSRCENTRYID /*Դ¼*/ ---ԴͬһԤⵥͬһеֵһͬ + ,t2e.FSEQ + ,t2e.FBomId /*ԤⶩFBomIdȡƥBOM༶չײ*/ + ,t2e.FMATERIALID OMATERAILID + ,t0e.FFORECASTGROUP + ,'' BOMLevel + INTO #TMP_MO_PART + FROM T_PRD_MO t0 --ͷ + INNER JOIN T_PRD_MOENTRY t0e ON t0e.FID=t0.FID -- + INNER JOIN T_PLN_RESERVELINKENTRY t1e ON t1e.FINTSUPPLYID = t0e.FID AND t1e.FINTSUPPLYENTRYID = t0e.FENTRYID--Ԥ + INNER JOIN T_PLN_RESERVELINK t1 ON t1.FID=t1e.FID AND t1.FSRCFORMID = 'PLN_FORECAST'--Ԥͷ + INNER JOIN T_PLN_FORECASTENTRY t2e ON t2e.FID = t1.FSRCINTERID AND t2e.FENTRYID = t1.FSRCENTRYID--Ԥⵥ + WHERE 1 = 1 + --t0.FBILLNO='WO2401100002' /**/ + --AND t0e.FFORECASTGROUP='' /*Ϊ*/ + AND t0e.FSRCBILLTYPE='PLN_PLANORDER' /*ȷͨMRPƵĵ*/ + + INSERT INTO #TMP_MO + SELECT + tt.FID + ,tt.FBILLNO + ,tt.FDATE + ,tt.FENTRYID + ,tt.FMATERIALID + ,tt.MOBomId + ,tt.FSRCFORMID --'Դ' + ,tt.FSRCBILLNO --'Դ' + ,tt.FSRCINTERID /*Դ*/ + ,tt.FSRCENTRYID /*Դ¼*/ ---ԴͬһԤⵥͬһеֵһͬ + ,tt.FSEQ + ,tt.FBomId /*ԤⶩFBomIdȡƥBOM༶չײ*/ + ,tt.BOMLevel + ,t0.FBILLNO + --into #TMP_MO + FROM + #TMP_MO_PART tt + INNER JOIN ( + SELECT + MOBomId,FBOMID,FSEQ,FSRCINTERID,FSRCENTRYID,FBILLNO,FDATE,len(FBILLNO) Billnolen + ,ROW_NUMBER() over(partition BY MOBomId,FBOMID,FSEQ,FSRCINTERID,FSRCENTRYID,FDATE,len(FBILLNO) order by FBILLNO) ROWID + FROM + #TMP_MO_PART + WHERE FBOMID =MOBomId + ) t0 ON tt.FBOMID = t0.FBOMID + AND tt.FSEQ = t0.FSEQ + AND tt.FSRCINTERID = t0.FSRCINTERID + AND tt.FSRCENTRYID = t0.FSRCENTRYID + AND tt.FDATE = t0.FDATE + AND t0.ROWID =1 + AND t0.Billnolen = len(tt.FBILLNO) + WHERE + tt.FFORECASTGROUP = '' + + CREATE TABLE #TMP_TOP_BOM_SET( + FID int + ,FNUMBER varchar(80) + ,FMATERIALID int + ,FSEQ int + ,BOMLEVEL int + ,TOPID int + ,showlevel varchar(80) + ,oId int + ) + CREATE INDEX [#TMP_TOP_BOM_SET_FID] ON #TMP_TOP_BOM_SET(FID); + + INSERT INTO #TMP_TOP_BOM_SET + SELECT + t0.FID + ,t0.FNUMBER + ,t0.FMATERIALID + ,ROW_NUMBER() over(partition BY t0.FID order by t0.FMATERIALID) + ,1 'BOMLEVEL' + ,t0.FID AS 'TOPID' + ,'' + ,t0.FID + FROM + T_ENG_BOM t0 + INNER JOIN #TMP_MO t3 on t3.FBOMID = t0.FID + WHERE 1 = 1 + GROUP BY + t0.FID + ,t0.FNUMBER + ,t0.FMATERIALID + + + DECLARE @num INT,@level int,@LoopCount int + SET @num = 1 + SET @level =1 + SET @LoopCount = 0; + WHILE (@num <> 0 AND @LoopCount < 30) + BEGIN + INSERT INTO #TMP_TOP_BOM_SET + SELECT + t3.FID + ,t3.FNUMBER + ,t3.FMATERIALID + ,ROW_NUMBER() over(partition BY t0.TOPID order by t0.fseq) + ,t0.BOMLEVEL + 1 + ,t0.TOPID + ,CONCAT(t0.showlevel,'-',CAST(dense_rank() over(partition BY t0.topid order by t1.fseq) as VARCHAR)) + ,t0.FID + FROM + #TMP_TOP_BOM_SET t0 + INNER JOIN T_ENG_BOMCHILD t1 on t0.FID = t1.FID + INNER JOIN T_BD_MATERIALBASE t2 on t2.FMATERIALID = t1.FMATERIALID + INNER JOIN T_ENG_BOM t3 on t1.FMATERIALID = t3.FMATERIALID + WHERE 1 = 1 + AND (t2.FERPCLSID = 2 ) + AND t0.BOMLEVEL = @level + + SET @num = @@ROWCOUNT + SET @level += 1 + SET @LoopCount += 1 + END + + SELECT + ROW_NUMBER() over(partition BY TOPID order by FSEQ) AS rowId, + * + INTO #TMP_TOP_BOM_GROUP + FROM #TMP_TOP_BOM_SET + WHERE 1 = 1 + GROUP BY FID,FNUMBER,FMATERIALID,FSEQ,BOMLEVEL,TOPID,showlevel,oId + + --ʱ + UPDATE t0 SET t0.BOMLEVEL = t0.TOPBILLNO + t1.showlevel + FROM #TMP_MO t0 INNER JOIN #TMP_TOP_BOM_GROUP t1 on t0.MOBOMID = t1.FID AND t0.FBOMID = t1.TOPID + + --µݿ + --UPDATE t0e SET t0e.FFORECASTGROUP = t1.BOMLEVEL + --FROM T_PRD_MOENTRY t0e INNER JOIN #TMP_MO t1 on t0e.FBOMID = t1.MOBOMID AND t0e.FENTRYID = t1.FENTRYID + + SELECT t0.*,t1.fnumber + FROM #TMP_TOP_BOM_GROUP t0 INNER JOIN T_BD_MATERIAL t1 on t0.fmaterialid = t1.fmaterialid + --WHERE t0.OID = 6339745 + order by t0.FSEQ,t0.BOMLEVEL + SELECT * FROM #TMP_MO WHERE 1 = 1 + --AND FBOMID <> MOBOMID + --AND FBOMID = 6339745 AND topbillno='WO2308090009' --ѯʱ + + DROP TABLE #TMP_MO_PART + DROP TABLE #TMP_TOP_BOM_SET + DROP TABLE #TMP_TOP_BOM_GROUP + DROP TABLE #TMP_MO --ɾʱ#TMP +END + +--SET STATISTICS TIME ON +--EXEC PROC_UPDATE_BOMLEVEL +--SET STATISTICS TIME OFF \ No newline at end of file diff --git a/07.珠海英搏尔/Enpower/PRD_MO/SQLserver/db/生产订单BOM_查询.sql b/07.珠海英搏尔/Enpower/PRD_MO/SQLserver/db/生产订单BOM_查询.sql new file mode 100644 index 0000000..055f506 --- /dev/null +++ b/07.珠海英搏尔/Enpower/PRD_MO/SQLserver/db/生产订单BOM_查询.sql @@ -0,0 +1,218 @@ + CREATE TABLE #TMP_MO --ʱ#TMP + ( + FID INT + ,FBILLNO VARCHAR(255) + ,FDATE DATE + ,FENTRYID INT + ,FMATERIALID INT + ,OMATERAILID int + ,MOBOMID INT + ,FSRCFORMID VARCHAR(255) + ,FSRCBILLNO VARCHAR(255) + ,FSRCINTERID INT + ,FSRCENTRYID INT + ,FSEQ INT + ,FBOMID INT + ,BOMLEVEL VARCHAR(255) + ,TOPBILLNO VARCHAR(255) + ,FFORECASTGROUP varchar(255) + ); + + CREATE INDEX [#TMP_MO_FID] ON #TMP_MO(FID); + + --INSERT INTO #TMP_MO + /*ƻһͶţT_PLN_RESERVELINKENTRYƻתƵ */ + SELECT + t0e.FID + ,t0.FBILLNO + ,t0.FDATE + ,t0e.FENTRYID + ,t0e.FMATERIALID + ,t0e.FBomId MOBomId + ,t1.FSRCFORMID --'Դ' + ,t1.FSRCBILLNO --'Դ' + ,t1.FSRCINTERID /*Դ*/ + ,t1.FSRCENTRYID /*Դ¼*/ ---ԴͬһԤⵥͬһеֵһͬ + ,t2e.FSEQ + ,t2e.FBomId /*ԤⶩFBomIdȡƥBOM༶չײ*/ + ,t2e.FMATERIALID OMATERAILID + ,t0e.FFORECASTGROUP + ,t0e.FFORECASTGROUPFRIST + --,t0_lk.FSTABLENAME + --,t0_lk.FSTABLEID + --,t0_lk.FSBILLID + ,t0_lk.FSID + ,t0e_Q.FSRCSPLITID + ,'' BOMLevel + INTO #TMP_MO_PART + FROM T_PRD_MO t0 --ͷ + INNER JOIN T_PRD_MOENTRY t0e ON t0e.FID=t0.FID -- + INNER JOIN T_PRD_MOENTRY_Q t0e_Q on t0e.FENTRYID = t0e_Q.FENTRYID + INNER JOIN T_PRD_MOENTRY_LK t0_lk on t0e.FENTRYID = t0_lk.FENTRYID + INNER JOIN T_PLN_RESERVELINKENTRY t1e ON t1e.FINTSUPPLYID = t0e.FID AND t1e.FINTSUPPLYENTRYID = t0e.FENTRYID--Ԥ + INNER JOIN T_PLN_RESERVELINK t1 ON t1.FID=t1e.FID AND t1.FSRCFORMID = 'PLN_FORECAST'--Ԥͷ + INNER JOIN T_PLN_FORECASTENTRY t2e ON t2e.FID = t1.FSRCINTERID AND t2e.FENTRYID = t1.FSRCENTRYID--Ԥⵥ + WHERE 1 = 1 + --t0.FBILLNO='WO2401100002' /**/ + AND t0e.FFORECASTGROUP = '' /*Ϊ*/ + --AND t0e.FFORECASTGROUPFRIST = 'WO2312270043' + AND t0e.FSRCBILLTYPE='PLN_PLANORDER' /*ȷͨMRPƵĵ*/ + AND t0e_Q.FSRCSPLITID = 0 + + + INSERT INTO #TMP_MO + SELECT + tt.FID + ,tt.FBILLNO + ,tt.FDATE + ,tt.FENTRYID + ,tt.FMATERIALID + ,tt.OMATERAILID + ,tt.MOBomId + ,tt.FSRCFORMID --'Դ' + ,tt.FSRCBILLNO --'Դ' + ,tt.FSRCINTERID /*Դ*/ + ,tt.FSRCENTRYID /*Դ¼*/ ---ԴͬһԤⵥͬһеֵһͬ + ,tt.FSEQ + ,tt.FBomId /*ԤⶩFBomIdȡƥBOM༶չײ*/ + ,tt.BOMLevel + ,t0.FBILLNO + ,tt.FFORECASTGROUP + --into #TMP_MO + FROM + #TMP_MO_PART tt + INNER JOIN ( + SELECT + FID,MOBomId,FBOMID,FSEQ,FSRCINTERID,FSRCENTRYID,FBILLNO,FDATE,len(FBILLNO) Billnolen,OMATERAILID,FMATERIALID,FSID + ,ROW_NUMBER() over(partition BY MOBomId,FBOMID,FSEQ,FSRCINTERID,FSRCENTRYID,FDATE,len(FBILLNO),OMATERAILID,FMATERIALID order by FBILLNO) ROWID + FROM + #TMP_MO_PART + WHERE FMATERIALID = OMATERAILID + ) t0 ON 1=1 + AND tt.FBOMID = t0.FBOMID + AND tt.FSEQ = t0.FSEQ + AND tt.FSRCINTERID = t0.FSRCINTERID + AND tt.FSRCENTRYID = t0.FSRCENTRYID + AND tt.FDATE = t0.FDATE + --AND t0.ROWID =1 + AND tt.OMATERAILID = t0.FMATERIALID + AND t0.Billnolen = len(tt.FBILLNO) + --AND tt.fsid = t0.FSID + WHERE 1 = 1 + --AND tt.FFORECASTGROUP = '' + + CREATE TABLE #TMP_TOP_BOM_SET( + FID int + ,FNUMBER varchar(80) + ,FMATERIALID int + ,FSEQ int + ,BOMLEVEL int + ,TOPID int + ,showlevel varchar(80) + ,oId int + ) + CREATE INDEX [#TMP_TOP_BOM_SET_FID] ON #TMP_TOP_BOM_SET(FID); + + INSERT INTO #TMP_TOP_BOM_SET + SELECT + t0.FID + ,t0.FNUMBER + ,t0.FMATERIALID + ,ROW_NUMBER() over(partition BY t0.FID order by t0.fid) + ,1 'BOMLEVEL' + ,t0.FID AS 'TOPID' + ,'' + ,t0.FID + FROM + T_ENG_BOM t0 + INNER JOIN #TMP_MO t3 on t3.FBOMID = t0.FID AND t3.FMATERIALID = t0.FMATERIALID + WHERE 1 = 1 + AND t3.FMATERIALID = t3.OMATERAILID + GROUP BY + t0.FID + ,t0.FNUMBER + ,t0.FMATERIALID + + + DECLARE @num INT,@level int,@LoopCount int + SET @num = 1 + SET @level =1 + SET @LoopCount = 0; + WHILE (@num <> 0 AND @LoopCount < 30) + BEGIN + INSERT INTO #TMP_TOP_BOM_SET + SELECT + t3.FID + ,t3.FNUMBER + ,t3.FMATERIALID + ,ROW_NUMBER() over(partition BY t0.TOPID,t0.oid order by t0.fseq) + ,t0.BOMLEVEL + 1 + ,t0.TOPID + ,CONCAT(t0.showlevel,'-',CAST(dense_rank() over(partition BY t0.topid,t0.oid,t0.fid order by t1.fseq) as VARCHAR)) + ,t0.FID + FROM + #TMP_TOP_BOM_SET t0 + INNER JOIN T_ENG_BOMCHILD t1 on t0.FID = t1.FID + INNER JOIN T_BD_MATERIALBASE t2 on t2.FMATERIALID = t1.FMATERIALID + INNER JOIN T_ENG_BOM t3 on t1.FMATERIALID = t3.FMATERIALID + WHERE 1 = 1 + AND (t2.FERPCLSID = 2 OR t2.FERPCLSID = 5 ) + AND t0.BOMLEVEL = @level + + SET @num = @@ROWCOUNT + SET @level += 1 + SET @LoopCount += 1 + END + + SELECT + * + INTO #TMP_TOP_BOM_GROUP + FROM #TMP_TOP_BOM_SET + WHERE 1 = 1 + GROUP BY FID,FNUMBER,FMATERIALID,FSEQ,BOMLEVEL,TOPID,showlevel,oId + + SELECT FID,FBILLNO,FENTRYID,FDATE,FMATERIALID,OMATERAILID,MOBOMID,FSRCENTRYID,FSRCINTERID,FSEQ,FBOMID,TOPBILLNO,BOMLEVEL,FFORECASTGROUP + INTO #TMP_MO_GROUP + FROM #TMP_MO + GROUP BY FID,FBILLNO,FENTRYID,FDATE,FMATERIALID,OMATERAILID,MOBOMID,FSRCENTRYID,FSRCINTERID,FSEQ,FBOMID,TOPBILLNO,BOMLEVEL,FFORECASTGROUP + + --ʱ + UPDATE t0 SET t0.BOMLEVEL = ISNULL(t0.TOPBILLNO,'') + ISNULL(t1.showlevel ,'') + FROM #TMP_MO_GROUP t0 LEFT JOIN #TMP_TOP_BOM_GROUP t1 on t0.FMATERIALID = t1.FMATERIALID AND t0.MOBOMID = t1.FID AND t0.FBOMID = t1.TOPID + + ----µݿ + --UPDATE t0e SET t0e.FFORECASTGROUP = t1.BOMLEVEL,t0e.FFORECASTGROUPFRIST = t1.TOPBILLNO + --FROM T_PRD_MOENTRY t0e INNER JOIN #TMP_MO_GROUP t1 on t0e.FBOMID = t1.MOBOMID AND t0e.FENTRYID = t1.FENTRYID + + --SELECT t0.*,t1.fnumber + + --FROM #TMP_TOP_BOM_GROUP t0 + --INNER JOIN T_BD_MATERIAL t1 on t0.fmaterialid = t1.fmaterialid + + ----WHERE t0.TOPID = 8062230 + --order by t0.FSEQ,t0.BOMLEVEL + --SELECT t0.*,t1.FENTRYID FROM #TMP_MO_GROUP t0 RIGHT join T_PRD_MOENTRY t1 on t0.FID = t1.FID AND t0.FENTRYID = t1.FENTRYID WHERE 1 = 1 AND t1.FFORECASTGROUPFRIST = 'WO2312270043' + SELECT t0.* + ,t0_lk.FSTABLENAME + ,t0_lk.FSTABLEID + ,t0_lk.FSBILLID + ,t0_lk.FSID + ,t0e_Q.FSRCSPLITBILLNO + ,t0e_Q.FSRCSPLITID + ,t0e_Q.FSRCSPLITSEQ + ,t0e_Q.FSRCSPLITENTRYID + --INTO #TMP_MO_PART + FROM #TMP_MO_GROUP t0 + LEft JOIN T_PRD_MOENTRY_LK t0_lk on t0.FENTRYID = t0_lk.FENTRYID + INNER JOIN T_PRD_MOENTRY_Q t0e_Q on t0.FENTRYID = t0e_Q.FENTRYID + WHERE 1 = 1 + --AND FBOMID =8237478 AND MOBOMID =8237478 + --AND topbillno='WO2311080183' + --SELECT * FROM #TMP_MO WHERE 1 = 1 + --AND FBOMID <> MOBOMID + --AND FBOMID = 6339745 --AND topbillno='WO2308090009' --ѯʱ + DROP TABLE #TMP_MO_GROUP + DROP TABLE #TMP_MO_PART + DROP TABLE #TMP_TOP_BOM_SET + DROP TABLE #TMP_TOP_BOM_GROUP + DROP TABLE #TMP_MO --ɾʱ#TMP \ No newline at end of file diff --git a/07.珠海英搏尔/Enpower/PRD_MO/SQLserver/db/生产订单BOM_选中订单_更新层号_存储过程20240115.sql b/07.珠海英搏尔/Enpower/PRD_MO/SQLserver/db/生产订单BOM_选中订单_更新层号_存储过程20240115.sql new file mode 100644 index 0000000..1b3bc9d --- /dev/null +++ b/07.珠海英搏尔/Enpower/PRD_MO/SQLserver/db/生产订单BOM_选中订单_更新层号_存储过程20240115.sql @@ -0,0 +1,231 @@ +IF EXISTS(SELECT * FROM SYS.PROCEDURES WHERE NAME='PROC_SELECT_UPDATE_BOMLEVEL') + DROP PROCEDURE dbo.PROC_SELECT_UPDATE_BOMLEVEL; +GO + +CREATE PROCEDURE PROC_SELECT_UPDATE_BOMLEVEL + @billnoStr varchar(255) +AS +BEGIN + CREATE TABLE #TMP_MO --ʱ#TMP + ( + FID INT + ,FBILLNO VARCHAR(255) + ,FDATE DATE + ,FENTRYID INT + ,FMATERIALID INT + ,OMATERAILID int + ,MOBOMID INT + ,FSRCFORMID VARCHAR(255) + ,FSRCBILLNO VARCHAR(255) + ,FSRCINTERID INT + ,FSRCENTRYID INT + ,FSEQ INT + ,FBOMID INT + ,BOMLEVEL VARCHAR(255) + ,TOPBILLNO VARCHAR(255) + ,FFORECASTGROUP varchar(255) + ); + + CREATE INDEX [#TMP_MO_FID] ON #TMP_MO(FID); + + --INSERT INTO #TMP_MO + /*ƻһͶţT_PLN_RESERVELINKENTRYƻתƵ */ + SELECT + t0e.FID + ,t0.FBILLNO + ,t0.FDATE + ,t0e.FENTRYID + ,t0e.FMATERIALID + ,t0e.FBomId MOBomId + ,t1.FSRCFORMID --'Դ' + ,t1.FSRCBILLNO --'Դ' + ,t1.FSRCINTERID /*Դ*/ + ,t1.FSRCENTRYID /*Դ¼*/ ---ԴͬһԤⵥͬһеֵһͬ + ,t2e.FSEQ + ,t2e.FBomId /*ԤⶩFBomIdȡƥBOM༶չײ*/ + ,t2e.FMATERIALID OMATERAILID + ,t0e.FFORECASTGROUP + --,t0_lk.FSTABLENAME + --,t0_lk.FSTABLEID + --,t0_lk.FSBILLID + ,t0_lk.FSID + ,t0e_Q.FSRCSPLITID + ,'' BOMLevel + INTO #TMP_MO_PART + FROM T_PRD_MO t0 --ͷ + INNER JOIN T_PRD_MOENTRY t0e ON t0e.FID=t0.FID -- + INNER JOIN T_PRD_MOENTRY_Q t0e_Q on t0e.FENTRYID = t0e_Q.FENTRYID + LEft JOIN T_PRD_MOENTRY_LK t0_lk on t0e.FENTRYID = t0_lk.FENTRYID + INNER JOIN T_PLN_RESERVELINKENTRY t1e ON t1e.FINTSUPPLYID = t0e.FID AND t1e.FINTSUPPLYENTRYID = t0e.FENTRYID--Ԥ + INNER JOIN T_PLN_RESERVELINK t1 ON t1.FID=t1e.FID AND t1.FSRCFORMID = 'PLN_FORECAST'--Ԥͷ + INNER JOIN T_PLN_FORECASTENTRY t2e ON t2e.FID = t1.FSRCINTERID AND t2e.FENTRYID = t1.FSRCENTRYID--Ԥⵥ + WHERE 1 = 1 + --t0.FBILLNO='WO2401100002' /**/ + AND t0e.FFORECASTGROUP='' /*Ϊ*/ + --AND t0e.FFORECASTGROUPFRIST = 'WO2312270043' + AND t0e.FSRCBILLTYPE='PLN_PLANORDER' /*ȷͨMRPƵĵ*/ + AND t0e_Q.FSRCSPLITID = 0 + AND t0.FBILLNO in (SELECT b.billno FROM (SELECT CAST(''+REPLACE(@billnoStr,',','')+'' AS xml) billno ) a OUTER APPLY (SELECT T.C.value('.','varchar(50)') billno FROM a.billno.nodes('/v') AS T(C)) b ) --Ų + + + INSERT INTO #TMP_MO + SELECT + tt.FID + ,tt.FBILLNO + ,tt.FDATE + ,tt.FENTRYID + ,tt.FMATERIALID + ,tt.OMATERAILID + ,tt.MOBomId + ,tt.FSRCFORMID --'Դ' + ,tt.FSRCBILLNO --'Դ' + ,tt.FSRCINTERID /*Դ*/ + ,tt.FSRCENTRYID /*Դ¼*/ ---ԴͬһԤⵥͬһеֵһͬ + ,tt.FSEQ + ,tt.FBomId /*ԤⶩFBomIdȡƥBOM༶չײ*/ + ,tt.BOMLevel + ,t0.FBILLNO + ,tt.FFORECASTGROUP + --into #TMP_MO + FROM + #TMP_MO_PART tt + INNER JOIN ( + SELECT + FID,MOBomId,FBOMID,FSEQ,FSRCINTERID,FSRCENTRYID,FBILLNO,FDATE,len(FBILLNO) Billnolen,OMATERAILID,FMATERIALID,FSID + ,ROW_NUMBER() over(partition BY MOBomId,FBOMID,FSEQ,FSRCINTERID,FSRCENTRYID,FDATE,len(FBILLNO),OMATERAILID,FMATERIALID order by FBILLNO) ROWID + FROM + #TMP_MO_PART + WHERE FMATERIALID = OMATERAILID + ) t0 ON 1=1 + AND tt.FBOMID = t0.FBOMID + AND tt.FSEQ = t0.FSEQ + AND tt.FSRCINTERID = t0.FSRCINTERID + AND tt.FSRCENTRYID = t0.FSRCENTRYID + AND tt.FDATE = t0.FDATE + --AND t0.ROWID =1 + AND tt.OMATERAILID = t0.FMATERIALID + AND t0.Billnolen = len(tt.FBILLNO) + --AND tt.fsid = t0.FSID + WHERE 1 = 1 + --AND tt.FFORECASTGROUP = '' + + CREATE TABLE #TMP_TOP_BOM_SET( + FID int + ,FNUMBER varchar(80) + ,FMATERIALID int + ,FSEQ int + ,BOMLEVEL int + ,TOPID int + ,showlevel varchar(80) + ,oId int + ) + CREATE INDEX [#TMP_TOP_BOM_SET_FID] ON #TMP_TOP_BOM_SET(FID); + + INSERT INTO #TMP_TOP_BOM_SET + SELECT + t0.FID + ,t0.FNUMBER + ,t0.FMATERIALID + ,ROW_NUMBER() over(partition BY t0.FID order by t0.fid) + ,1 'BOMLEVEL' + ,t0.FID AS 'TOPID' + ,'' + ,t0.FID + FROM + T_ENG_BOM t0 + INNER JOIN #TMP_MO t3 on t3.FBOMID = t0.FID AND t3.FMATERIALID = t0.FMATERIALID + WHERE 1 = 1 + AND t3.FMATERIALID = t3.OMATERAILID + GROUP BY + t0.FID + ,t0.FNUMBER + ,t0.FMATERIALID + + + DECLARE @num INT,@level int,@LoopCount int + SET @num = 1 + SET @level =1 + SET @LoopCount = 0; + WHILE (@num <> 0 AND @LoopCount < 30) + BEGIN + INSERT INTO #TMP_TOP_BOM_SET + SELECT + t3.FID + ,t3.FNUMBER + ,t3.FMATERIALID + ,ROW_NUMBER() over(partition BY t0.TOPID,t0.oid order by t0.fseq) + ,t0.BOMLEVEL + 1 + ,t0.TOPID + ,CONCAT(t0.showlevel,'-',CAST(dense_rank() over(partition BY t0.topid,t0.oid,t0.fid order by t1.fseq) as VARCHAR)) + ,t0.FID + FROM + #TMP_TOP_BOM_SET t0 + INNER JOIN T_ENG_BOMCHILD t1 on t0.FID = t1.FID + INNER JOIN T_BD_MATERIALBASE t2 on t2.FMATERIALID = t1.FMATERIALID + INNER JOIN T_ENG_BOM t3 on t1.FMATERIALID = t3.FMATERIALID + WHERE 1 = 1 + AND (t2.FERPCLSID = 2 OR t2.FERPCLSID = 5 ) + AND t0.BOMLEVEL = @level + + SET @num = @@ROWCOUNT + SET @level += 1 + SET @LoopCount += 1 + END + + SELECT + * + INTO #TMP_TOP_BOM_GROUP + FROM #TMP_TOP_BOM_SET + WHERE 1 = 1 + GROUP BY FID,FNUMBER,FMATERIALID,FSEQ,BOMLEVEL,TOPID,showlevel,oId + + SELECT FID,FBILLNO,FENTRYID,FDATE,FMATERIALID,OMATERAILID,MOBOMID,FSRCENTRYID,FSRCINTERID,FSEQ,FBOMID,TOPBILLNO,BOMLEVEL,FFORECASTGROUP + INTO #TMP_MO_GROUP + FROM #TMP_MO + GROUP BY FID,FBILLNO,FENTRYID,FDATE,FMATERIALID,OMATERAILID,MOBOMID,FSRCENTRYID,FSRCINTERID,FSEQ,FBOMID,TOPBILLNO,BOMLEVEL,FFORECASTGROUP + + --ʱ + UPDATE t0 SET t0.BOMLEVEL = ISNULL(t0.TOPBILLNO,'') + ISNULL(t1.showlevel ,'') + FROM #TMP_MO_GROUP t0 LEFT JOIN #TMP_TOP_BOM_GROUP t1 on t0.FMATERIALID = t1.FMATERIALID AND t0.MOBOMID = t1.FID AND t0.FBOMID = t1.TOPID + + ----µݿ + --UPDATE t0e SET t0e.FFORECASTGROUP = t1.BOMLEVEL,t0e.FFORECASTGROUPFRIST = t1.TOPBILLNO + --FROM T_PRD_MOENTRY t0e INNER JOIN #TMP_MO_GROUP t1 on t0e.FBOMID = t1.MOBOMID AND t0e.FENTRYID = t1.FENTRYID + + --SELECT t0.*,t1.fnumber + + --FROM #TMP_TOP_BOM_GROUP t0 + --INNER JOIN T_BD_MATERIAL t1 on t0.fmaterialid = t1.fmaterialid + + ----WHERE t0.TOPID = 8062230 + --order by t0.FSEQ,t0.BOMLEVEL + --SELECT t0.*,t1.FENTRYID FROM #TMP_MO_GROUP t0 RIGHT join T_PRD_MOENTRY t1 on t0.FID = t1.FID AND t0.FENTRYID = t1.FENTRYID WHERE 1 = 1 AND t1.FFORECASTGROUPFRIST = 'WO2312270043' + --SELECT t0.* + -- ,t0_lk.FSTABLENAME + -- ,t0_lk.FSTABLEID + -- ,t0_lk.FSBILLID + -- ,t0_lk.FSID + -- ,t0e_Q.FSRCSPLITBILLNO + -- ,t0e_Q.FSRCSPLITID + -- ,t0e_Q.FSRCSPLITSEQ + -- ,t0e_Q.FSRCSPLITENTRYID + -- --INTO #TMP_MO_PART + -- FROM #TMP_MO_GROUP t0 + -- LEft JOIN T_PRD_MOENTRY_LK t0_lk on t0.FENTRYID = t0_lk.FENTRYID + -- INNER JOIN T_PRD_MOENTRY_Q t0e_Q on t0.FENTRYID = t0e_Q.FENTRYID + -- WHERE 1 = 1 + --AND FBOMID =8237478 AND MOBOMID =8237478 + --AND topbillno='WO2311080183' + --SELECT * FROM #TMP_MO WHERE 1 = 1 + --AND FBOMID <> MOBOMID + --AND FBOMID = 6339745 --AND topbillno='WO2308090009' --ѯʱ + DROP TABLE #TMP_MO_GROUP + DROP TABLE #TMP_MO_PART + DROP TABLE #TMP_TOP_BOM_SET + DROP TABLE #TMP_TOP_BOM_GROUP + DROP TABLE #TMP_MO --ɾʱ#TMP +END + +--SET STATISTICS TIME ON +--EXEC PROC_UPDATE_BOMLEVEL +--SET STATISTICS TIME OFF \ No newline at end of file diff --git a/07.珠海英搏尔/Enpower/PRD_MO/SQLserver/db/生产订单BOM更新层号_存储过程20240114.sql b/07.珠海英搏尔/Enpower/PRD_MO/SQLserver/db/生产订单BOM更新层号_存储过程20240114.sql new file mode 100644 index 0000000..7b9536e --- /dev/null +++ b/07.珠海英搏尔/Enpower/PRD_MO/SQLserver/db/生产订单BOM更新层号_存储过程20240114.sql @@ -0,0 +1,229 @@ +IF EXISTS(SELECT * FROM SYS.PROCEDURES WHERE NAME='PROC_UPDATE_BOMLEVEL') + DROP PROCEDURE dbo.PROC_UPDATE_BOMLEVEL; +GO + +CREATE PROCEDURE PROC_UPDATE_BOMLEVEL +AS +BEGIN + CREATE TABLE #TMP_MO --ʱ#TMP + ( + FID INT + ,FBILLNO VARCHAR(255) + ,FDATE DATE + ,FENTRYID INT + ,FMATERIALID INT + ,OMATERAILID int + ,MOBOMID INT + ,FSRCFORMID VARCHAR(255) + ,FSRCBILLNO VARCHAR(255) + ,FSRCINTERID INT + ,FSRCENTRYID INT + ,FSEQ INT + ,FBOMID INT + ,BOMLEVEL VARCHAR(255) + ,TOPBILLNO VARCHAR(255) + ,FFORECASTGROUP varchar(255) + ); + + CREATE INDEX [#TMP_MO_FID] ON #TMP_MO(FID); + + --INSERT INTO #TMP_MO + /*ƻһͶţT_PLN_RESERVELINKENTRYƻתƵ */ + SELECT + t0e.FID + ,t0.FBILLNO + ,t0.FDATE + ,t0e.FENTRYID + ,t0e.FMATERIALID + ,t0e.FBomId MOBomId + ,t1.FSRCFORMID --'Դ' + ,t1.FSRCBILLNO --'Դ' + ,t1.FSRCINTERID /*Դ*/ + ,t1.FSRCENTRYID /*Դ¼*/ ---ԴͬһԤⵥͬһеֵһͬ + ,t2e.FSEQ + ,t2e.FBomId /*ԤⶩFBomIdȡƥBOM༶չײ*/ + ,t2e.FMATERIALID OMATERAILID + ,t0e.FFORECASTGROUP + --,t0_lk.FSTABLENAME + --,t0_lk.FSTABLEID + --,t0_lk.FSBILLID + ,t0_lk.FSID + ,t0e_Q.FSRCSPLITID + ,'' BOMLevel + INTO #TMP_MO_PART + FROM T_PRD_MO t0 --ͷ + INNER JOIN T_PRD_MOENTRY t0e ON t0e.FID=t0.FID -- + INNER JOIN T_PRD_MOENTRY_Q t0e_Q on t0e.FENTRYID = t0e_Q.FENTRYID + LEft JOIN T_PRD_MOENTRY_LK t0_lk on t0e.FENTRYID = t0_lk.FENTRYID + INNER JOIN T_PLN_RESERVELINKENTRY t1e ON t1e.FINTSUPPLYID = t0e.FID AND t1e.FINTSUPPLYENTRYID = t0e.FENTRYID--Ԥ + INNER JOIN T_PLN_RESERVELINK t1 ON t1.FID=t1e.FID AND t1.FSRCFORMID = 'PLN_FORECAST'--Ԥͷ + INNER JOIN T_PLN_FORECASTENTRY t2e ON t2e.FID = t1.FSRCINTERID AND t2e.FENTRYID = t1.FSRCENTRYID--Ԥⵥ + WHERE 1 = 1 + --t0.FBILLNO='WO2401100002' /**/ + AND t0e.FFORECASTGROUP='' /*Ϊ*/ + --AND t0e.FFORECASTGROUPFRIST = 'WO2312270043' + AND t0e.FSRCBILLTYPE='PLN_PLANORDER' /*ȷͨMRPƵĵ*/ + AND t0e_Q.FSRCSPLITID = 0 + + + INSERT INTO #TMP_MO + SELECT + tt.FID + ,tt.FBILLNO + ,tt.FDATE + ,tt.FENTRYID + ,tt.FMATERIALID + ,tt.OMATERAILID + ,tt.MOBomId + ,tt.FSRCFORMID --'Դ' + ,tt.FSRCBILLNO --'Դ' + ,tt.FSRCINTERID /*Դ*/ + ,tt.FSRCENTRYID /*Դ¼*/ ---ԴͬһԤⵥͬһеֵһͬ + ,tt.FSEQ + ,tt.FBomId /*ԤⶩFBomIdȡƥBOM༶չײ*/ + ,tt.BOMLevel + ,t0.FBILLNO + ,tt.FFORECASTGROUP + --into #TMP_MO + FROM + #TMP_MO_PART tt + INNER JOIN ( + SELECT + FID,MOBomId,FBOMID,FSEQ,FSRCINTERID,FSRCENTRYID,FBILLNO,FDATE,len(FBILLNO) Billnolen,OMATERAILID,FMATERIALID,FSID + ,ROW_NUMBER() over(partition BY MOBomId,FBOMID,FSEQ,FSRCINTERID,FSRCENTRYID,FDATE,len(FBILLNO),OMATERAILID,FMATERIALID order by FBILLNO) ROWID + FROM + #TMP_MO_PART + WHERE FMATERIALID = OMATERAILID + ) t0 ON 1=1 + AND tt.FBOMID = t0.FBOMID + AND tt.FSEQ = t0.FSEQ + AND tt.FSRCINTERID = t0.FSRCINTERID + AND tt.FSRCENTRYID = t0.FSRCENTRYID + AND tt.FDATE = t0.FDATE + --AND t0.ROWID =1 + AND tt.OMATERAILID = t0.FMATERIALID + AND t0.Billnolen = len(tt.FBILLNO) + --AND tt.fsid = t0.FSID + WHERE 1 = 1 + --AND tt.FFORECASTGROUP = '' + + CREATE TABLE #TMP_TOP_BOM_SET( + FID int + ,FNUMBER varchar(80) + ,FMATERIALID int + ,FSEQ int + ,BOMLEVEL int + ,TOPID int + ,showlevel varchar(80) + ,oId int + ) + CREATE INDEX [#TMP_TOP_BOM_SET_FID] ON #TMP_TOP_BOM_SET(FID); + + INSERT INTO #TMP_TOP_BOM_SET + SELECT + t0.FID + ,t0.FNUMBER + ,t0.FMATERIALID + ,ROW_NUMBER() over(partition BY t0.FID order by t0.fid) + ,1 'BOMLEVEL' + ,t0.FID AS 'TOPID' + ,'' + ,t0.FID + FROM + T_ENG_BOM t0 + INNER JOIN #TMP_MO t3 on t3.FBOMID = t0.FID AND t3.FMATERIALID = t0.FMATERIALID + WHERE 1 = 1 + AND t3.FMATERIALID = t3.OMATERAILID + GROUP BY + t0.FID + ,t0.FNUMBER + ,t0.FMATERIALID + + + DECLARE @num INT,@level int,@LoopCount int + SET @num = 1 + SET @level =1 + SET @LoopCount = 0; + WHILE (@num <> 0 AND @LoopCount < 30) + BEGIN + INSERT INTO #TMP_TOP_BOM_SET + SELECT + t3.FID + ,t3.FNUMBER + ,t3.FMATERIALID + ,ROW_NUMBER() over(partition BY t0.TOPID,t0.oid order by t0.fseq) + ,t0.BOMLEVEL + 1 + ,t0.TOPID + ,CONCAT(t0.showlevel,'-',CAST(dense_rank() over(partition BY t0.topid,t0.oid,t0.fid order by t1.fseq) as VARCHAR)) + ,t0.FID + FROM + #TMP_TOP_BOM_SET t0 + INNER JOIN T_ENG_BOMCHILD t1 on t0.FID = t1.FID + INNER JOIN T_BD_MATERIALBASE t2 on t2.FMATERIALID = t1.FMATERIALID + INNER JOIN T_ENG_BOM t3 on t1.FMATERIALID = t3.FMATERIALID + WHERE 1 = 1 + AND (t2.FERPCLSID = 2 OR t2.FERPCLSID = 5 ) + AND t0.BOMLEVEL = @level + + SET @num = @@ROWCOUNT + SET @level += 1 + SET @LoopCount += 1 + END + + SELECT + * + INTO #TMP_TOP_BOM_GROUP + FROM #TMP_TOP_BOM_SET + WHERE 1 = 1 + GROUP BY FID,FNUMBER,FMATERIALID,FSEQ,BOMLEVEL,TOPID,showlevel,oId + + SELECT FID,FBILLNO,FENTRYID,FDATE,FMATERIALID,OMATERAILID,MOBOMID,FSRCENTRYID,FSRCINTERID,FSEQ,FBOMID,TOPBILLNO,BOMLEVEL,FFORECASTGROUP + INTO #TMP_MO_GROUP + FROM #TMP_MO + GROUP BY FID,FBILLNO,FENTRYID,FDATE,FMATERIALID,OMATERAILID,MOBOMID,FSRCENTRYID,FSRCINTERID,FSEQ,FBOMID,TOPBILLNO,BOMLEVEL,FFORECASTGROUP + + --ʱ + UPDATE t0 SET t0.BOMLEVEL = ISNULL(t0.TOPBILLNO,'') + ISNULL(t1.showlevel ,'') + FROM #TMP_MO_GROUP t0 LEFT JOIN #TMP_TOP_BOM_GROUP t1 on t0.FMATERIALID = t1.FMATERIALID AND t0.MOBOMID = t1.FID AND t0.FBOMID = t1.TOPID + + ----µݿ + --UPDATE t0e SET t0e.FFORECASTGROUP = t1.BOMLEVEL,t0e.FFORECASTGROUPFRIST = t1.TOPBILLNO + --FROM T_PRD_MOENTRY t0e INNER JOIN #TMP_MO_GROUP t1 on t0e.FBOMID = t1.MOBOMID AND t0e.FENTRYID = t1.FENTRYID + + --SELECT t0.*,t1.fnumber + + --FROM #TMP_TOP_BOM_GROUP t0 + --INNER JOIN T_BD_MATERIAL t1 on t0.fmaterialid = t1.fmaterialid + + ----WHERE t0.TOPID = 8062230 + --order by t0.FSEQ,t0.BOMLEVEL + --SELECT t0.*,t1.FENTRYID FROM #TMP_MO_GROUP t0 RIGHT join T_PRD_MOENTRY t1 on t0.FID = t1.FID AND t0.FENTRYID = t1.FENTRYID WHERE 1 = 1 AND t1.FFORECASTGROUPFRIST = 'WO2312270043' + --SELECT t0.* + -- ,t0_lk.FSTABLENAME + -- ,t0_lk.FSTABLEID + -- ,t0_lk.FSBILLID + -- ,t0_lk.FSID + -- ,t0e_Q.FSRCSPLITBILLNO + -- ,t0e_Q.FSRCSPLITID + -- ,t0e_Q.FSRCSPLITSEQ + -- ,t0e_Q.FSRCSPLITENTRYID + -- --INTO #TMP_MO_PART + -- FROM #TMP_MO_GROUP t0 + -- LEft JOIN T_PRD_MOENTRY_LK t0_lk on t0.FENTRYID = t0_lk.FENTRYID + -- INNER JOIN T_PRD_MOENTRY_Q t0e_Q on t0.FENTRYID = t0e_Q.FENTRYID + -- WHERE 1 = 1 + --AND FBOMID =8237478 AND MOBOMID =8237478 + --AND topbillno='WO2311080183' + --SELECT * FROM #TMP_MO WHERE 1 = 1 + --AND FBOMID <> MOBOMID + --AND FBOMID = 6339745 --AND topbillno='WO2308090009' --ѯʱ + DROP TABLE #TMP_MO_GROUP + DROP TABLE #TMP_MO_PART + DROP TABLE #TMP_TOP_BOM_SET + DROP TABLE #TMP_TOP_BOM_GROUP + DROP TABLE #TMP_MO --ɾʱ#TMP +END + +--SET STATISTICS TIME ON +--EXEC PROC_UPDATE_BOMLEVEL +--SET STATISTICS TIME OFF \ No newline at end of file diff --git a/07.珠海英搏尔/Enpower/PRD_MO/SQLserver/更新计划订单_预测单信息_存储过程.sql b/07.珠海英搏尔/Enpower/PRD_MO/SQLserver/更新计划订单_预测单信息_存储过程.sql new file mode 100644 index 0000000..c5fe217 --- /dev/null +++ b/07.珠海英搏尔/Enpower/PRD_MO/SQLserver/更新计划订单_预测单信息_存储过程.sql @@ -0,0 +1,148 @@ +IF EXISTS(SELECT * FROM SYS.PROCEDURES WHERE NAME='PROC_UPDATE_PLAN_BY_PAGE') + DROP PROCEDURE dbo.PROC_UPDATE_PLAN_BY_PAGE; +GO + +CREATE PROCEDURE PROC_UPDATE_PLAN_BY_PAGE + @ListCount int output +AS +BEGIN + SET NOCOUNT ON; + SET @ListCount = 0; + SELECT + TOP 5000 + A.FID + ,A.FBILLNO AS 'ƻ' + ,A.FSALENOROW,A.F_SOURCE_ORDER_LINE_NUMBER as 'ƻ۶к' + ,A.F_SOURCE_ORDER_NUMBER as 'ƻ۶' + ,A.F_FORECASTNUMBER as 'ƻԤⵥ' + ,A.F_Linenumber as 'ƻԤⵥк' + ,E.FBILLNO AS 'Ԥⵥ' + ,D.FSEQ,D.F_SOURCE_ORDER_NUMBER as 'Ԥⵥ۶' + ,D.F_SOURCE_ORDER_LINE_NUMBER as 'Ԥⵥ۶к' + INTO #TEMP1 + FROM T_PLN_PLANORDER A + INNER JOIN T_PLN_RESERVELINKENTRY B ON B.FSUPPLYBILLNO = A.FBILLNO + INNER JOIN T_PLN_RESERVELINK C ON C.FID=B.FID + INNER JOIN T_PLN_FORECASTENTRY D ON D.FENTRYID = C.FSRCENTRYID + INNER JOIN T_PLN_FORECAST E ON E .FID=D.FID + WHERE A.F_FORECASTNUMBER = '' + --AND A.FBILLNO = @FBILLNO + --AND A.FBILLNO = 'MRP00260726' + + SELECT FID + INTO #BillNoSet + FROM #TEMP1 + GROUP BY FID + + CREATE INDEX [#BillNoSet_INDEX_FID] ON #BillNoSet(FID); + + SELECT @ListCount = count(1) FROM #BillNoSet + --SELECT @ListCount + IF(@ListCount > 0) + BEGIN + SELECT + --ƻ + t.FID + ,Ԥⵥ + ,'Ԥⵥк'=ISNULL(stuff((select ','+CONVERT(nvarchar(100), FSEQ) from #TEMP1 where ƻ=t.ƻ and Ԥⵥ = t.Ԥⵥ for xml path('')),1,1,''),'') + ,'۶'=ISNULL(stuff((select distinct ','+CONVERT(nvarchar(100), Ԥⵥ۶) from #TEMP1 where Ԥⵥ۶<>'' and ƻ=t.ƻ and Ԥⵥ =t.Ԥⵥ for xml path('')),1,1,''),'') + ,'۶к'=ISNULL(stuff((select distinct ','+CONVERT(nvarchar(100), Ԥⵥ۶к) from #TEMP1 where Ԥⵥ۶к<>'' and ƻ=t.ƻ and Ԥⵥ =t.Ԥⵥ for xml path('')),1,1,''),'') + INTO #TEMP3 + FROM #TEMP1 t + WHERE t.Ԥⵥ = '' + GROUP BY t.FID,t.Ԥⵥ + + UPDATE T_PLN_PLANORDER + SET F_FORECASTNUMBER = B.Ԥⵥ + ,F_Linenumber = B.Ԥⵥк + ,F_SOURCE_ORDER_LINE_NUMBER = b.۶к + ,F_SOURCE_ORDER_NUMBER = b.۶ + FROM + T_PLN_PLANORDER A + INNER JOIN #BillNoSet tt ON tt.FID = A.FID + INNER JOIN #TEMP3 B ON A.FID=B.FID + --inner join #temp2 f on f.fname = a.FBILLNO + + --DROP TABLE #TEMP1 + DROP TABLE #temp3 + + UPDATE A SET + A.F_CUSTOMERNAME = D.FCUSTID + ,A.F_MATERIALCODE = D.FMATERIALID + from + T_PLN_PLANORDER A + INNER JOIN #BillNoSet tt ON tt.FID = A.FID + INNER JOIN T_PLN_RESERVELINKENTRY B ON B.FSUPPLYBILLNO = A.FBILLNO + INNER JOIN T_PLN_RESERVELINK C ON C.FID=B.FID + INNER JOIN T_PLN_FORECASTENTRY D ON D.FENTRYID=C.FSRCENTRYID + INNER JOIN T_PLN_FORECAST e on e.fid=d.FID + --inner join #temp2 f on f.fname = a.FBILLNO + --where (a.F_CUSTOMERNAME=0 or a.F_MATERIALCODE=0 ) + --AND A.FBILLNO = @FBILLNO + + UPDATE A + SET F_CUSTOMERNAME = D.FCUSTID + ,F_MATERIALCODE = D.FMATERIALID + ,F_FORECASTNUMBER = C.FBILLNO + ,F_LINENUMBER = D.FSEQ + ,F_SOURCE_ORDER_LINE_NUMBER = D.F_SOURCE_ORDER_LINE_NUMBER + ,F_SOURCE_ORDER_NUMBER = D.F_SOURCE_ORDER_NUMBER + FROM + T_PLN_PLANORDER A + INNER JOIN #BillNoSet tt ON tt.FID = A.FID + INNER JOIN T_PLN_PLANORDER_B B ON A.FID=B.FID + INNER JOIN T_PLN_FORECAST C ON C .FBILLNO = B.FSALEORDERNO + INNER JOIN T_PLN_FORECASTENTRY D ON D .FID= C.FID AND D.FSEQ=B.FSALEORDERENTRYSEQ + --INNER JOIN #temp2 e ON A.FBILLNO = e.Fname + --WHERE A.FBILLNO = 'MRP00640407' + + --UPDATE A SET A.F_Remark=ISNULL( dbo.GetForecast(A.F_FORECASTNUMBER ,A.F_LINENUMBER),'') + --from T_PLN_PLANORDER A + --INNER JOIN T_PLN_FORECAST B ON B.FBILLNO=A.F_FORECASTNUMBER + --INNER JOIN T_PLN_FORECAST_L C ON C.FID=B.FID + --INNER JOIN T_PLN_FORECASTENTRY D on D.FID=B.FID AND D.FSEQ=A.F_Linenumber + --where ( a.F_Remark='' ) + + UPDATE E SET F_DESCRIPTION = ISNULL(C.FDESCRIPTION ,'' ) + from T_PLN_PLANORDER A + INNER JOIN #BillNoSet tt ON tt.FID = A.FID + INNER JOIN T_PLN_PLANORDER_L E ON E.FID=A.FID + INNER JOIN T_PLN_FORECAST B ON B.FBILLNO=A.F_FORECASTNUMBER + INNER JOIN T_PLN_FORECAST_L C ON C.FID = B.FID + + --inner join #temp2 f on f.fname = a.FBILLNO + --where ( e.F_DESCRIPTION='' ) + --AND A.FBILLNO = @FBILLNO + + UPDATE T_PLN_PLANORDER + SET F_REMARK = ISNULL( DBO.GETFORECAST(A.F_FORECASTNUMBER ,A.F_LINENUMBER),'') + FROM T_PLN_PLANORDER A + INNER JOIN #BillNoSet tt ON tt.FID = A.FID + --inner join #temp2 f on f.fname = a.FBILLNO + WHERE 1=1 + --and ( a.F_Remark='' ) + --AND CONVERT(nvarchar(100),a.FCREATEDATE,23) = CONVERT(nvarchar(100),GETDATE(),23) + AND CONVERT(nvarchar(100),a.FCREATEDATE,23) = CONVERT(nvarchar(100),'2024-01-17',23) + --AND A.FBILLNO = @FBILLNO + + --UPDATE T_PLN_PLANORDER SET F_WAUG_LAYER = + --CASE WHEN B. IS NULL THEN ELSE CONCAT(,'-',) END + -- from T_PLN_PLANORDER A + -- inner join + --( + --select A.FID, dbo.GetBomSeq( B .FBOMID,a.FMATERIALID) as '', A.FMATERIALID,B.FBOMID,A.f_WAUG_LAYER,A.F_FORECASTNUMBER,A.F_LINENUMBER, + --A.F_MATERIALCODE,a.FBILLNO as '1',b.FBILLNO as '' from T_PLN_PLANORDER A + --INNER JOIN T_PLN_PLANORDER B ON A.F_FORECASTNUMBER=B.F_FORECASTNUMBER AND A.F_LINENUMBER=B.F_LINENUMBER AND A.F_MATERIALCODE =B.FMATERIALID + --INNER JOIN #temp2 C ON C.Fname=A.FBILLNO + ----WHERE a.F_WAUG_LAYER = '' + + --) B ON A.FID = B.FID + + --DROP TABLE #temp2 + END + + DROP TABLE #TEMP1 + DROP TABLE #BillNoSet + + SET NOCOUNT OFF +END \ No newline at end of file diff --git a/07.珠海英搏尔/Enpower/PRD_MO/SQLserver/更新计划订单_预测单信息_存储过程_20240120.sql b/07.珠海英搏尔/Enpower/PRD_MO/SQLserver/更新计划订单_预测单信息_存储过程_20240120.sql new file mode 100644 index 0000000..528eadf --- /dev/null +++ b/07.珠海英搏尔/Enpower/PRD_MO/SQLserver/更新计划订单_预测单信息_存储过程_20240120.sql @@ -0,0 +1,187 @@ +IF EXISTS(SELECT * FROM SYS.PROCEDURES WHERE NAME='PROC_UPDATE_PLAN_20240120') + DROP PROCEDURE dbo.PROC_UPDATE_PLAN_20240120; +GO + +CREATE PROCEDURE PROC_UPDATE_PLAN_20240120 +AS +BEGIN + SELECT + t0.FID --id + ,t0.FBILLNO + ,t2.FID 'FORECAST_ID' + ,t2e.FENTRYID 'FORECASTENTRY_ID' + ,t2.FBILLNO 'F_FORECASTNUMBER' + ,t2e.FSEQ 'F_LINENUMBER' + ,t2e.FCUSTID 'F_CUSTOMERNAME' + ,t2e.FMATERIALID 'F_MATERIALCODE' --Ԥⵥid + ,t2e.F_SOURCE_ORDER_LINE_NUMBER --۶к + ,t2e.F_SOURCE_ORDER_NUMBER --۶# + ,t0.F_REMARK + INTO #TEMP_PLANORDER_ID_LIST + FROM T_PLN_PLANORDER t0 + INNER JOIN T_PLN_RESERVELINKENTRY t1e ON t1e.FINTSUPPLYID = t0.FID + INNER JOIN T_PLN_RESERVELINK t1 ON t1.FID = t1e.FID + INNER JOIN T_PLN_FORECASTENTRY t2e ON t2e.FENTRYID = t1.FSRCENTRYID + INNER JOIN T_PLN_FORECAST t2 on t2.fid = t2e.FID + WHERE 1 = 1 + AND t0.F_FORECASTNUMBER = '' + --AND CONVERT(nvarchar(100),t0.FCREATEDATE,23) = '2024-01-18' + + CREATE INDEX #TEMP_PLANORDER_ID_LIST_INDEX_FID ON #TEMP_PLANORDER_ID_LIST(FID); + + SELECT + t0.FID --id + ,t0.FBILLNO + ,t0.FORECAST_ID + ,t0.FORECASTENTRY_ID + ,t0.F_FORECASTNUMBER + ,t0.F_LINENUMBER + ,t0.F_CUSTOMERNAME + ,t0.F_MATERIALCODE --Ԥⵥid + ,t0.F_SOURCE_ORDER_LINE_NUMBER --۶к + ,t0.F_SOURCE_ORDER_NUMBER --۶# + ,ISNULL(t1_l.FDESCRIPTION,'') AS F_DESCRIPTION + --,t1_l.FDESCRIPTION F_DESCRIPTION + ,ISNULL(t1e_l.FDESCRIPTION,'') AS F_REMARK --屸ע + --,t1e_l.FDESCRIPTION F_REMARK + ,t2.FNUMBER 'MATERIAL_NUMBER' + ,t2_l.FNAME 'MATERIAL_NAME' + ,t3.TOTAL + INTO #TEMP_PLANORDER_RESERVELINK + + FROM #TEMP_PLANORDER_ID_LIST t0 + INNER JOIN (SELECT FID,COUNT(1) TOTAL FROM #TEMP_PLANORDER_ID_LIST GROUP BY FID ) t3 on t3.FID = t0.FID + LEFT JOIN T_PLN_FORECAST_L t1_l on t0.FORECAST_ID = t1_l.FID AND t1_l.FLOCALEID = 2052 + LEFT JOIN T_PLN_FORECASTENTRY_L t1e_l on t1e_l.FENTRYID = t0.FORECASTENTRY_ID AND t1e_l.FLOCALEID = 2052 + LEFT JOIN T_BD_MATERIAL t2 on t0.F_MATERIALCODE = t2.FMATERIALID + LEFT JOIN T_BD_MATERIAL_L t2_l on t0.F_MATERIALCODE = t2_l.FMATERIALID AND t2_l.FLOCALEID = 2052 + WHERE 1=1 + --AND t0.F_FORECASTNUMBER = '' + + CREATE INDEX #TEMP_PLANORDER_RESERVELINK_INDEX ON #TEMP_PLANORDER_RESERVELINK(FID); + + --ƻ һԴ--- + UPDATE t0 + SET t0.F_FORECASTNUMBER = tt.F_FORECASTNUMBER + ,t0.F_LINENUMBER = tt.F_LINENUMBER + ,t0.F_CUSTOMERNAME = tt.F_CUSTOMERNAME + ,t0.F_MATERIALCODE = tt.F_MATERIALCODE + ,t0.F_REMARK = tt.F_REMARK + ,t0.F_MATERIALCODESHOW = tt.MATERIAL_NUMBER + ,t0.F_MATERIALNAMESHOW = tt.MATERIAL_NAME + FROM T_PLN_PLANORDER t0 + INNER JOIN #TEMP_PLANORDER_RESERVELINK tt on t0.FID = tt.FID AND tt.TOTAL = 1 + + --ƻչ һԴ--- + UPDATE t0_l + SET t0_l.F_DESCRIPTION = tt.F_DESCRIPTION + FROM T_PLN_PLANORDER_L t0_l + INNER JOIN #TEMP_PLANORDER_RESERVELINK tt on t0_l.FID = tt.FID AND tt.TOTAL = 1 + + SELECT + t0.FID --id + ,t0.FBILLNO + ,t0.FORECAST_ID + ,t0.FORECASTENTRY_ID + ,t0.F_FORECASTNUMBER + ,DENSE_RANK() over(partition BY t0.FID order by t0.FORECAST_ID) 'FORECASTNUMBER_SEQ' + ,t0.F_LINENUMBER + ,ROW_NUMBER() over(partition BY t0.FID,t0.FORECAST_ID order by t0.F_LINENUMBER) 'LINENUMBER_SEQ' + ,t0.F_CUSTOMERNAME + ,t0.F_MATERIALCODE --Ԥⵥid + ,t0.F_SOURCE_ORDER_LINE_NUMBER --۶к + ,t0.F_SOURCE_ORDER_NUMBER --۶# + ,t0.F_REMARK + ,t0.F_DESCRIPTION + ,t0.MATERIAL_NUMBER + ,t0.MATERIAL_NAME + ,t0.TOTAL + ,DENSE_RANK() over(partition BY t0.FID order by t0.F_MATERIALCODE) 'DENSE_RANK_NUM' + INTO #TEMP_PLANORDER_RESERVELINK2 + FROM + #TEMP_PLANORDER_RESERVELINK t0 + WHERE 1 = 1 + AND TOTAL > 1 + ORDER BY FID + + CREATE INDEX #TEMP_PLANORDER_RESERVELINK2_INDEX ON #TEMP_PLANORDER_RESERVELINK2(FID); + + UPDATE t0 SET t0.F_MATERIALCODE = 0,t0.F_CUSTOMERNAME = 0 + FROM #TEMP_PLANORDER_RESERVELINK2 t0,(SELECT FID FROM #TEMP_PLANORDER_RESERVELINK2 WHERE DENSE_RANK_NUM = 2) t1 WHERE t0.FID = t1.FID + + SELECT + t0.FID + ,t0.FBILLNO + ,t0.FORECAST_ID + ,t0.F_FORECASTNUMBER + ,t0.F_DESCRIPTION + ,t0.F_MATERIALCODE + ,t0.F_CUSTOMERNAME + ,ISNULL(stuff((select ','+ CONVERT(nvarchar(100), tt.F_LINENUMBER) from #TEMP_PLANORDER_RESERVELINK2 tt where tt.FID=t0.FID and tt.FORECAST_ID = t0.FORECAST_ID for xml path('')),1,1,''),'') 'F_LINENUMBER' + ,ISNULL(stuff((select distinct ';'+ ISNULL(tt.F_REMARK,'') from #TEMP_PLANORDER_RESERVELINK2 tt where tt.FID=t0.FID and tt.FORECAST_ID = t0.FORECAST_ID for xml path('')),1,1,''),'') 'F_REMARK' + ,ISNULL(stuff((select distinct ','+ tt.MATERIAL_NUMBER from #TEMP_PLANORDER_RESERVELINK2 tt where tt.FID=t0.FID and tt.FORECAST_ID = t0.FORECAST_ID for xml path('')),1,1,''),'') 'MATERIAL_NUMBER' + ,ISNULL(stuff((select distinct ','+ tt.MATERIAL_NAME from #TEMP_PLANORDER_RESERVELINK2 tt where tt.FID=t0.FID and tt.FORECAST_ID = t0.FORECAST_ID for xml path('')),1,1,''),'') 'MATERIAL_NAME' + ,ISNULL(stuff((select distinct ','+ CONVERT(nvarchar(100), tt.F_SOURCE_ORDER_NUMBER) from #TEMP_PLANORDER_RESERVELINK2 tt where tt.FID=t0.FID and tt.FORECAST_ID = t0.FORECAST_ID for xml path('')),1,1,''),'') 'F_SOURCE_ORDER_NUMBER' + ,ISNULL(stuff((select distinct ','+ CONVERT(nvarchar(100), tt.F_SOURCE_ORDER_LINE_NUMBER) from #TEMP_PLANORDER_RESERVELINK2 tt where tt.FID=t0.FID and tt.FORECAST_ID = t0.FORECAST_ID for xml path('')),1,1,''),'') 'F_SOURCE_ORDER_LINE_NUMBER' + INTO #TEMP + FROM #TEMP_PLANORDER_RESERVELINK2 t0 + GROUP BY + t0.FID + ,t0.FBILLNO + ,t0.FORECAST_ID + ,t0.F_FORECASTNUMBER + ,t0.F_DESCRIPTION + ,t0.F_MATERIALCODE + ,t0.F_CUSTOMERNAME + CREATE INDEX #TEMP_INDEX ON #TEMP(FID); + + SELECT + t0.FID + ,t0.FBILLNO + ,t0.F_MATERIALCODE + ,t0.F_CUSTOMERNAME + ,ISNULL(stuff((select ';'+ CONVERT(nvarchar(100), tt.F_LINENUMBER) from #TEMP tt where tt.FID=t0.FID for xml path('')),1,1,''),'') 'F_LINENUMBER' + ,ISNULL(stuff((select ';'+ CONVERT(nvarchar(100), tt.F_FORECASTNUMBER) from #TEMP tt where tt.FID=t0.FID for xml path('')),1,1,''),'') 'F_FORECASTNUMBER' + ,ISNULL(stuff((select distinct ';' + tt.MATERIAL_NUMBER from #TEMP_PLANORDER_RESERVELINK2 tt where tt.FID=t0.FID for xml path('')),1,1,''),'') 'MATERIAL_NUMBER' + ,ISNULL(stuff((select distinct ';' + tt.MATERIAL_NAME from #TEMP_PLANORDER_RESERVELINK2 tt where tt.FID=t0.FID for xml path('')),1,1,''),'') 'MATERIAL_NAME' + ,ISNULL(stuff((select distinct ';' + tt.F_REMARK from #TEMP tt where tt.FID=t0.FID for xml path('')),1,1,''),'') 'F_REMARK' + ,ISNULL(stuff((select distinct ';' + ISNULL(tt.F_DESCRIPTION,'') from #TEMP tt where tt.FID = t0.FID for xml path('')),1,1,''),'') 'F_DESCRIPTION' + ,ISNULL(stuff((select distinct ';' + CONVERT(nvarchar(100), tt.F_SOURCE_ORDER_NUMBER) from #TEMP_PLANORDER_RESERVELINK2 tt where tt.FID=t0.FID for xml path('')),1,1,''),'') 'F_SOURCE_ORDER_NUMBER' + ,ISNULL(stuff((select distinct ';' + CONVERT(nvarchar(100), tt.F_SOURCE_ORDER_LINE_NUMBER) from #TEMP_PLANORDER_RESERVELINK2 tt where tt.FID=t0.FID for xml path('')),1,1,''),'') 'F_SOURCE_ORDER_LINE_NUMBER' + INTO #TEMP2 + FROM #TEMP t0 + --WHERE t0.fbillno ='MRP01679279' + GROUP BY + t0.FID + ,t0.FBILLNO + ,t0.F_MATERIALCODE + ,t0.F_CUSTOMERNAME + CREATE INDEX #TEMP2_INDEX ON #TEMP2(FID); + + --UPDATE #TEMP2 SET F_REMARK = '' WHERE F_REMARK = ';' + + --ƻ-Դ-- + UPDATE t0 + SET t0.F_FORECASTNUMBER = tt.F_FORECASTNUMBER + ,t0.F_LINENUMBER = tt.F_LINENUMBER + ,t0.F_CUSTOMERNAME = tt.F_CUSTOMERNAME + ,t0.F_MATERIALCODE = tt.F_MATERIALCODE + ,t0.F_REMARK = tt.F_REMARK + ,t0.F_MATERIALCODESHOW = tt.MATERIAL_NUMBER + ,t0.F_MATERIALNAMESHOW = tt.MATERIAL_NAME + FROM T_PLN_PLANORDER t0 + INNER JOIN #TEMP2 tt on t0.FID = tt.FID --AND tt.TOTAL = 1 + + --ƻչ-Դ-- + UPDATE t0_l + SET t0_l.F_DESCRIPTION = tt.F_DESCRIPTION + FROM T_PLN_PLANORDER_L t0_l + INNER JOIN #TEMP2 tt on t0_l.FID = tt.FID --AND tt.TOTAL = 1 + + SELECT * FROM #TEMP2 + DROP TABLE #TEMP + DROP TABLE #TEMP2 + DROP TABLE #TEMP_PLANORDER_ID_LIST + DROP TABLE #TEMP_PLANORDER_RESERVELINK + DROP TABLE #TEMP_PLANORDER_RESERVELINK2 +END \ No newline at end of file diff --git a/07.珠海英搏尔/Enpower/PRD_MO/SQLserver/查询生产层号为空的生产用料清单202402261540.sql b/07.珠海英搏尔/Enpower/PRD_MO/SQLserver/查询生产层号为空的生产用料清单202402261540.sql new file mode 100644 index 0000000..59f1450 --- /dev/null +++ b/07.珠海英搏尔/Enpower/PRD_MO/SQLserver/查询生产层号为空的生产用料清单202402261540.sql @@ -0,0 +1,19 @@ +SELECT t0.FBILLNO,t0.FID,t0e.FENTRYID + ,t1.FDATE,t0.FMOBILLNO + ,t0e.FFORECASTGROUP,t0e.FFORECASTGROUPFRIST + ,t1e.FFORECASTGROUPFRIST AS MOGROUPFRIST,t1e.FFORECASTGROUP AS MOGROUP, +--UPDATE t0e SET t0e.FFORECASTGROUP = t1e.FFORECASTGROUP +-- ,t0e.FFORECASTGROUPFRIST = + CASE + WHEN CHARINDEX( '-',REPLACE( t1e.FFORECASTGROUP,'_','-') ,0) = 0 + THEN t1e.FFORECASTGROUP + ELSE SUBSTRING(t1e.FFORECASTGROUP,0, CHARINDEX( '-',REPLACE( t1e.FFORECASTGROUP,'_','-') ,0)) + END +FROM T_PRD_PPBOM t0 + INNER JOIN T_PRD_PPBOMENTRY t0e on t0.FID = t0e.FID + INNER JOIN T_PRD_MO t1 on t1.FID = t0.FMOID + INNER JOIN T_PRD_MOENTRY t1e on t1e.FID = t0.FMOID +WHERE 1 = 1 AND t1e.FFORECASTGROUP != '' + AND t0e.FFORECASTGROUP = '' + AND t0e.FFORECASTGROUPFRIST != t1e.FFORECASTGROUPFRIST +ORDER BY t1.FDATE desc \ No newline at end of file diff --git a/07.珠海英搏尔/Enpower/PRD_MO/SQLserver/查询语句.sql b/07.珠海英搏尔/Enpower/PRD_MO/SQLserver/查询语句.sql new file mode 100644 index 0000000..4c205c9 --- /dev/null +++ b/07.珠海英搏尔/Enpower/PRD_MO/SQLserver/查询语句.sql @@ -0,0 +1,117 @@ +--ƻԤⵥѯstart-- +SELECT + --TOP 5000 + t0.FID + ,t0.FBILLNO + ,t0.FBOMID + ,t0.FMATERIALID --ƻid + ,t0_b.FSALEORDERID --󵥺id + ,t0_b.FSALEORDERENTRYID --󵥺űid + ,t0_b.FSALEORDERENTRYSEQ --󵥺űк + ,t0.F_Linenumber 'Ԥⵥк#' + ,t0_b.FSALEORDERNO '󵥺'--󵥺 + ,t1.FBILLNO 'Ԥⵥ' + ,t0.F_FORECASTNUMBER 'Ԥⵥ#' + ,t1e.FCUSTID + ,t0.F_CUSTOMERNAME + ,t1e.FMATERIALID AS F_MATERIALCODE --Ԥⵥid + ,t0.F_MATERIALCODE + ,t0.F_SOURCE_ORDER_LINE_NUMBER + ,t1e.F_SOURCE_ORDER_LINE_NUMBER --۶к + ,t0.F_SOURCE_ORDER_NUMBER + ,t1e.F_SOURCE_ORDER_NUMBER --۶# + ,ISNULL(t1_l.FDESCRIPTION,'') AS F_DESCRIPTION --ͷע + ,t0_l.F_DESCRIPTION + ,ISNULL(t1e_l.FDESCRIPTION,'') AS F_REMARK --屸ע + ,t0.F_REMARK +FROM + T_PLN_PLANORDER t0 + INNER JOIN T_PLN_PLANORDER_B t0_b on t0.FID = t0_b.FID + INNER JOIN T_PLN_PLANORDER_L t0_l on t0.FID = t0_l.FID + INNER JOIN T_PLN_FORECAST t1 on t0_b.FSALEORDERID = t1.FID --Ԥⵥ + LEFT JOIN T_PLN_FORECAST_L t1_l on t1_l.FID = t0_b.FSALEORDERID --ԤⵥעϢ + INNER JOIN T_PLN_FORECASTENTRY t1e on t1e.FID = t0_b.FSALEORDERID AND t0_b.FSALEORDERENTRYID = t1e.FENTRYID --Ԥⵥ + LEFT JOIN T_PLN_FORECASTENTRY_L t1e_l on t1e_l.FENTRYID = t0_b.FSALEORDERENTRYID --Ԥⵥ屸עϢ + --INNER JOIN T_PLN_RESERVELINKENTRY B ON B.FSUPPLYBILLNO = t0.FBILLNO + --INNER JOIN T_PLN_RESERVELINK C ON C.FID=B.FID --Ԥϵ + --INNER JOIN T_PLN_FORECASTENTRY D ON D.FENTRYID=C.FSRCENTRYID + --INNER JOIN T_PLN_FORECAST E ON E .FID=D.FID +WHERE 1 = 1 + AND t0.F_FORECASTNUMBER = '' + AND t0_b.FDEMANDTYPE = 2 + AND CONVERT(nvarchar(100),t0.FCREATEDATE,23) = '2024-01-18' + --AND t0.FCOMPUTERNO ='MRP000401' + --AND t0_b.FSALEORDERID = 0 +--ORDER BY t0_b.FSALEORDERID,t0_b.FSALEORDERENTRYSEQ + +--ƻԤⵥѯend-- + +--ƻԤϵѯstart-- +SELECT A.FID + into #temp + FROM T_PLN_PLANORDER A + INNER JOIN T_PLN_RESERVELINKENTRY B ON B.FSUPPLYBILLNO = A.FBILLNO + INNER JOIN T_PLN_RESERVELINK C ON C.FID=B.FID + INNER JOIN T_PLN_FORECASTENTRY D ON D.FENTRYID=C.FSRCENTRYID + INNER JOIN T_PLN_FORECAST e on e .fid=d.FID + WHERE 1=1 + --AND A.F_FORECASTNUMBER='' + AND A.FCOMPUTERNO ='MRP000401' + AND CONVERT(nvarchar(100),a.FCREATEDATE,23) = '2024-01-18' + GROUP BY A.FID + HAVing count(1) > 1 + CREATE INDEX [#temp_INDEX_FID] ON #temp(FID); +SELECT +t0_b.FSALEORDERID --󵥺id +,t0_b.FSALEORDERENTRYID --󵥺űid +,t0_b.FSALEORDERENTRYSEQ --󵥺űк +--,t0.F_Linenumber 'Ԥⵥк#' +,t0_b.FSALEORDERNO '󵥺'--󵥺 +,t0.F_FORECASTNUMBER 'Ԥⵥ#' +,d.FSEQ +,case when t0_b.FSALEORDERENTRYSEQ = d.FSEQ then 1 else 0 end +,t0.FBILLNO +--SELECt * +FROM T_PLN_PLANORDER t0 + INNER JOIN T_PLN_PLANORDER_B t0_b on t0.FID = t0_b.FID + --INNER JOIN T_PLN_FORECAST t1 on t0_b.FSALEORDERID = t1.FID --Ԥⵥ + --LEFT JOIN T_PLN_FORECAST_L t1_l on t1_l.FID = t0_b.FSALEORDERID --ԤⵥעϢ + --INNER JOIN T_PLN_FORECASTENTRY t1e on t1e.FID = t0_b.FSALEORDERID AND t0_b.FSALEORDERENTRYID = t1e.FENTRYID --and t0_b.FSALEORDERENTRYSEQ = t1e.FSEQ--Ԥⵥ + + INNER JOIN T_PLN_RESERVELINKENTRY B ON B.FSUPPLYBILLNO = t0.FBILLNO + INNER JOIN T_PLN_RESERVELINK C ON C.FID=B.FID + INNER JOIN T_PLN_FORECASTENTRY D ON D.FENTRYID=C.FSRCENTRYID + INNER JOIN T_PLN_FORECAST e on e .fid=d.FID +WHERE exists (SELECT 1 FROM #temp tt WHERE tt.FID = t0.FID) and (t0_b.FSALEORDERENTRYSEQ != d.FSEQ or t0_b.FSALEORDERNO != e.FBILLNO) + +DROP TABLE #TEMP +--ƻԤϵѯend-- + +--ֶβѯstart-- + +SELECT + a.FBILLNO AS 'ƻ' + ,A.FSALENOROW + ,A.F_SOURCE_ORDER_LINE_NUMBER as 'ƻ۶к' + ,A.F_Source_order_number as 'ƻ۶' + ,A.F_FORECASTNUMBER as 'ƻԤⵥ' + ,A.F_Linenumber as 'ƻԤⵥк' + ,E.FBILLNO AS 'Ԥⵥ' + ,D.FSEQ,D.F_Source_order_number as 'Ԥⵥ۶' + ,D.F_SOURCE_ORDER_LINE_NUMBER as 'Ԥⵥ۶к' +--UPDATE A SET A.F_Forecastnumber = '',A.F_Linenumber='',A.F_MaterialCode = 0,A.F_Remark = '' +SELECT A.* +FROM T_PLN_PLANORDER A + INNER JOIN T_PLN_RESERVELINKENTRY B ON B.FSUPPLYBILLNO = A.FBILLNO + INNER JOIN T_PLN_RESERVELINK C ON C.FID=B.FID + INNER JOIN T_PLN_FORECASTENTRY D ON D.FENTRYID=C.FSRCENTRYID + INNER JOIN T_PLN_FORECAST e on e .fid=d.FID +WHERE 1=1 + AND A.F_FORECASTNUMBER='' + AND a.fbillno='MRP01348067' + AND CONVERT(nvarchar(100),a.FCREATEDATE,23) = '2024-01-18' + --AND A.F_Forecastnumber ='N+30000028' + + --ֶβѯend-- + + 'WO2401220106,WO2401220362,WO2401220363,WO2401220364,WO2401220365,WO2401220366,WO2401220367,WO2401220368,WO2401220369,WO2401220370,WO2401220371,WO2401220372,WO2401220373,WO2401220374,WO2401220375,WO2401220376,WO2401220377,WO2401220378' \ No newline at end of file diff --git a/07.珠海英搏尔/Enpower/PRD_MO/SQLserver/生产订单BOM.sql b/07.珠海英搏尔/Enpower/PRD_MO/SQLserver/生产订单BOM.sql new file mode 100644 index 0000000..41aeddd --- /dev/null +++ b/07.珠海英搏尔/Enpower/PRD_MO/SQLserver/生产订单BOM.sql @@ -0,0 +1,49 @@ + /*ƻһͶţT_PLN_RESERVELINKENTRYƻתƵ */ + SELECT + t0e.FID + ,t0.FBILLNO + ,t0e.FENTRYID + ,t0e.FMATERIALID + ,t0e.FBomId MOBomId + ,t1.FSRCFORMID 'Դ' + ,t1.FSRCBILLNO 'Դ' + ,t1.FSRCINTERID /*Դ*/ + ,t1.FSRCENTRYID /*Դ¼*/ ---ԴͬһԤⵥͬһеֵһͬ + ,t2e.FSEQ + ,t2e.FBomId /*ԤⶩFBomIdȡƥBOM༶չײ*/ + ,t2e.FMATERIALID OMATERAILID + ,'' BOMLevel + /*һʱ*/ + --INTO #_MO + FROM T_PRD_MO t0 --ͷ + INNER JOIN T_PRD_MOENTRY t0e ON t0e.FID=t0.FID -- + INNER JOIN T_PLN_RESERVELINKENTRY t1e ON t1e.FINTSUPPLYID=t0e.FID AND t1e.FINTSUPPLYENTRYID=t0e.FENTRYID--Ԥ + INNER JOIN T_PLN_RESERVELINK t1 ON t1.FID=t1e.FID AND t1.FSRCFORMID='PLN_FORECAST'--Ԥͷ + INNER JOIN T_PLN_FORECASTENTRY t2e ON t2e.FID=t1.FSRCINTERID AND t2e.FENTRYID=t1.FSRCENTRYID--Ԥⵥ + WHERE 1 = 1 + --t0.FBILLNO='WO2401100002' /**/ + AND t0e.FFORECASTGROUP='' /*Ϊ*/ + AND t0e.FSRCBILLTYPE='PLN_PLANORDER' /*ȷͨMRPƵĵ*/ + + --CREATE INDEX [#PLid] ON #_MO (FSRCINTERID ASC,FSRCENTRYID ASC) /*ͬ*/ + --CREATE INDEX [#BomId] ON #_MO (FBomId ASC) /*BOM༶չԼײſ*/ + + --SELECT FSRCINTERID,FSRCENTRYID,MO2.FBILLNO AS 'ײIJ' + --into #n_mo + --FROM #_MO MO INNER JOIN T_PRD_MOENTRY MO1 ON MO1.FID=MO.FID AND MO1.FENTRYID=MO.FENTRYID + --INNER JOIN T_PRD_MO MO2 ON MO2.FID=MO.FID + --CREATE INDEX [#n_mo] ON #n_mo (FSRCINTERID ASC,FSRCENTRYID ASC) /*ͬ*/ + + ----update mo set BOMLevel=nmo.ײIJ+'-'+'ֵIJ' + ----from #_MO mo left join #n_mo nmo on nmo.FSRCINTERID=mo.FSRCINTERID and nmo.FSRCENTRYID=mo.FSRCENTRYID + --/*-------------dbo.GetBomSeqΪֵ洢̣ذֶεı----------------- + -- BOM_ID(Ӧ#_MOеFBomId) + -- BOM_ID(Ӧ#_MOеMOBomId) + -- + ----------------dbo.GetBomSeqΪֵ洢̣ذֶεı------------------*/ + ----select dbo.GetBomSeq(7293846,3994919) + + --select * from #_MO + + --DROP TABLE #_MO + --DROP TABLE #n_mo \ No newline at end of file diff --git a/07.珠海英搏尔/Enpower/PRD_MO/SQLserver/生产订单BOM_创建临时表.sql b/07.珠海英搏尔/Enpower/PRD_MO/SQLserver/生产订单BOM_创建临时表.sql new file mode 100644 index 0000000..ced761c --- /dev/null +++ b/07.珠海英搏尔/Enpower/PRD_MO/SQLserver/生产订单BOM_创建临时表.sql @@ -0,0 +1,186 @@ +IF EXISTS(SELECT * FROM SYS.PROCEDURES WHERE NAME='PROC_UPDATE_BOMLEVEL') + DROP PROCEDURE dbo.PROC_UPDATE_BOMLEVEL; +GO + +CREATE PROCEDURE PROC_UPDATE_BOMLEVEL +AS +BEGIN + CREATE TABLE #TMP_MO --ʱ#TMP + ( + FID INT + ,FBILLNO VARCHAR(255) + ,FDATE DATE + ,FENTRYID INT + ,FMATERIALID INT + ,MOBOMID INT + ,FSRCFORMID VARCHAR(255) + ,FSRCBILLNO VARCHAR(255) + ,FSRCINTERID INT + ,FSRCENTRYID INT + ,FSEQ INT + ,FBOMID INT + ,BOMLEVEL VARCHAR(255) + ,TOPBILLNO VARCHAR(255) + ); + CREATE INDEX [#TMP_MO_FID] ON #TMP_MO(FID); + + --INSERT INTO #TMP_MO + /*ƻһͶţT_PLN_RESERVELINKENTRYƻתƵ */ + SELECT + t0e.FID + ,t0.FBILLNO + ,t0.FDATE + ,t0e.FENTRYID + ,t0e.FMATERIALID + ,t0e.FBomId MOBomId + ,t1.FSRCFORMID --'Դ' + ,t1.FSRCBILLNO --'Դ' + ,t1.FSRCINTERID /*Դ*/ + ,t1.FSRCENTRYID /*Դ¼*/ ---ԴͬһԤⵥͬһеֵһͬ + ,t2e.FSEQ + ,t2e.FBomId /*ԤⶩFBomIdȡƥBOM༶չײ*/ + ,t2e.FMATERIALID OMATERAILID + ,t0e.FFORECASTGROUP + ,'' BOMLevel + INTO #TMP_MO_PART + FROM T_PRD_MO t0 --ͷ + INNER JOIN T_PRD_MOENTRY t0e ON t0e.FID=t0.FID -- + INNER JOIN T_PLN_RESERVELINKENTRY t1e ON t1e.FINTSUPPLYID = t0e.FID AND t1e.FINTSUPPLYENTRYID = t0e.FENTRYID--Ԥ + INNER JOIN T_PLN_RESERVELINK t1 ON t1.FID=t1e.FID AND t1.FSRCFORMID = 'PLN_FORECAST'--Ԥͷ + INNER JOIN T_PLN_FORECASTENTRY t2e ON t2e.FID = t1.FSRCINTERID AND t2e.FENTRYID = t1.FSRCENTRYID--Ԥⵥ + WHERE 1 = 1 + --t0.FBILLNO='WO2401100002' /**/ + --AND t0e.FFORECASTGROUP='' /*Ϊ*/ + AND t0e.FSRCBILLTYPE='PLN_PLANORDER' /*ȷͨMRPƵĵ*/ + + INSERT INTO #TMP_MO + SELECT + tt.FID + ,tt.FBILLNO + ,tt.FDATE + ,tt.FENTRYID + ,tt.FMATERIALID + ,tt.MOBomId + ,tt.FSRCFORMID --'Դ' + ,tt.FSRCBILLNO --'Դ' + ,tt.FSRCINTERID /*Դ*/ + ,tt.FSRCENTRYID /*Դ¼*/ ---ԴͬһԤⵥͬһеֵһͬ + ,tt.FSEQ + ,tt.FBomId /*ԤⶩFBomIdȡƥBOM༶չײ*/ + ,tt.BOMLevel + ,t0.FBILLNO + --into #TMP_MO + FROM + #TMP_MO_PART tt + INNER JOIN ( + SELECT + MOBomId,FBOMID,FSEQ,FSRCINTERID,FSRCENTRYID,FBILLNO,FDATE,len(FBILLNO) Billnolen + ,ROW_NUMBER() over(partition BY MOBomId,FBOMID,FSEQ,FSRCINTERID,FSRCENTRYID,FDATE,len(FBILLNO) order by FBILLNO) ROWID + FROM + #TMP_MO_PART + WHERE FBOMID =MOBomId + ) t0 ON tt.FBOMID = t0.FBOMID + AND tt.FSEQ = t0.FSEQ + AND tt.FSRCINTERID = t0.FSRCINTERID + AND tt.FSRCENTRYID = t0.FSRCENTRYID + AND tt.FDATE = t0.FDATE + AND t0.ROWID =1 + AND t0.Billnolen = len(tt.FBILLNO) + WHERE + tt.FFORECASTGROUP = '' + + CREATE TABLE #TMP_TOP_BOM_SET( + FID int + ,FNUMBER varchar(80) + ,FMATERIALID int + ,FSEQ int + ,BOMLEVEL int + ,TOPID int + ,showlevel varchar(80) + ,oId int + ) + CREATE INDEX [#TMP_TOP_BOM_SET_FID] ON #TMP_TOP_BOM_SET(FID); + + INSERT INTO #TMP_TOP_BOM_SET + SELECT + t0.FID + ,t0.FNUMBER + ,t0.FMATERIALID + ,ROW_NUMBER() over(partition BY t0.FID order by t0.FMATERIALID) + ,1 'BOMLEVEL' + ,t0.FID AS 'TOPID' + ,'' + ,t0.FID + FROM + T_ENG_BOM t0 + INNER JOIN #TMP_MO t3 on t3.FBOMID = t0.FID + WHERE 1 = 1 + GROUP BY + t0.FID + ,t0.FNUMBER + ,t0.FMATERIALID + + + DECLARE @num INT,@level int,@LoopCount int + SET @num = 1 + SET @level =1 + SET @LoopCount = 0; + WHILE (@num <> 0 AND @LoopCount < 30) + BEGIN + INSERT INTO #TMP_TOP_BOM_SET + SELECT + t3.FID + ,t3.FNUMBER + ,t3.FMATERIALID + ,ROW_NUMBER() over(partition BY t0.TOPID order by t0.fseq) + ,t0.BOMLEVEL + 1 + ,t0.TOPID + ,CONCAT(t0.showlevel,'-',CAST(dense_rank() over(partition BY t0.topid order by t1.fseq) as VARCHAR)) + ,t0.FID + FROM + #TMP_TOP_BOM_SET t0 + INNER JOIN T_ENG_BOMCHILD t1 on t0.FID = t1.FID + INNER JOIN T_BD_MATERIALBASE t2 on t2.FMATERIALID = t1.FMATERIALID + INNER JOIN T_ENG_BOM t3 on t1.FMATERIALID = t3.FMATERIALID + WHERE 1 = 1 + AND (t2.FERPCLSID = 2 ) + AND t0.BOMLEVEL = @level + + SET @num = @@ROWCOUNT + SET @level += 1 + SET @LoopCount += 1 + END + + SELECT + ROW_NUMBER() over(partition BY TOPID order by FSEQ) AS rowId, + * + INTO #TMP_TOP_BOM_GROUP + FROM #TMP_TOP_BOM_SET + WHERE 1 = 1 + GROUP BY FID,FNUMBER,FMATERIALID,FSEQ,BOMLEVEL,TOPID,showlevel,oId + + --ʱ + UPDATE t0 SET t0.BOMLEVEL = t0.TOPBILLNO + t1.showlevel + FROM #TMP_MO t0 INNER JOIN #TMP_TOP_BOM_GROUP t1 on t0.MOBOMID = t1.FID AND t0.FBOMID = t1.TOPID + + --µݿ + --UPDATE t0e SET t0e.FFORECASTGROUP = t1.BOMLEVEL + --FROM T_PRD_MOENTRY t0e INNER JOIN #TMP_MO t1 on t0e.FBOMID = t1.MOBOMID AND t0e.FENTRYID = t1.FENTRYID + + SELECT t0.*,t1.fnumber + FROM #TMP_TOP_BOM_GROUP t0 INNER JOIN T_BD_MATERIAL t1 on t0.fmaterialid = t1.fmaterialid + --WHERE t0.OID = 6339745 + order by t0.FSEQ,t0.BOMLEVEL + SELECT * FROM #TMP_MO WHERE 1 = 1 + --AND FBOMID <> MOBOMID + --AND FBOMID = 6339745 AND topbillno='WO2308090009' --ѯʱ + + DROP TABLE #TMP_MO_PART + DROP TABLE #TMP_TOP_BOM_SET + DROP TABLE #TMP_TOP_BOM_GROUP + DROP TABLE #TMP_MO --ɾʱ#TMP +END + +--SET STATISTICS TIME ON +--EXEC PROC_UPDATE_BOMLEVEL +--SET STATISTICS TIME OFF \ No newline at end of file diff --git a/07.珠海英搏尔/Enpower/PRD_MO/SQLserver/生产订单BOM_查询.sql b/07.珠海英搏尔/Enpower/PRD_MO/SQLserver/生产订单BOM_查询.sql new file mode 100644 index 0000000..45dd0b6 --- /dev/null +++ b/07.珠海英搏尔/Enpower/PRD_MO/SQLserver/生产订单BOM_查询.sql @@ -0,0 +1,219 @@ + CREATE TABLE #TMP_MO --ʱ#TMP + ( + FID INT + ,FBILLNO VARCHAR(255) + ,FDATE DATE + ,FENTRYID INT + ,FMATERIALID INT + ,OMATERAILID int + ,MOBOMID INT + ,FSRCFORMID VARCHAR(255) + ,FSRCBILLNO VARCHAR(255) + ,FSRCINTERID INT + ,FSRCENTRYID INT + ,FSEQ INT + ,FBOMID INT + ,BOMLEVEL VARCHAR(255) + ,TOPBILLNO VARCHAR(255) + ,FFORECASTGROUP varchar(255) + ); + + CREATE INDEX [#TMP_MO_FID] ON #TMP_MO(FID); + + --INSERT INTO #TMP_MO + /*ƻһͶţT_PLN_RESERVELINKENTRYƻתƵ */ + SELECT + t0e.FID + ,t0.FBILLNO + ,t0.FDATE + ,t0e.FENTRYID + ,t0e.FMATERIALID + ,t0e.FBomId MOBomId + ,t1.FSRCFORMID --'Դ' + ,t1.FSRCBILLNO --'Դ' + ,t1.FSRCINTERID /*Դ*/ + ,t1.FSRCENTRYID /*Դ¼*/ ---ԴͬһԤⵥͬһеֵһͬ + ,t2e.FSEQ + ,t2e.FBomId /*ԤⶩFBomIdȡƥBOM༶չײ*/ + ,t2e.FMATERIALID OMATERAILID + ,t0e.FFORECASTGROUP + ,t0e.FFORECASTGROUPFRIST + --,t0_lk.FSTABLENAME + --,t0_lk.FSTABLEID + --,t0_lk.FSBILLID + ,t0_lk.FSID + ,t0e_Q.FSRCSPLITID + ,'' BOMLevel + INTO #TMP_MO_PART + FROM T_PRD_MO t0 --ͷ + INNER JOIN T_PRD_MOENTRY t0e ON t0e.FID=t0.FID -- + INNER JOIN T_PRD_MOENTRY_Q t0e_Q on t0e.FENTRYID = t0e_Q.FENTRYID + INNER JOIN T_PRD_MOENTRY_LK t0_lk on t0e.FENTRYID = t0_lk.FENTRYID + INNER JOIN T_PLN_RESERVELINKENTRY t1e ON t1e.FINTSUPPLYID = t0e.FID AND t1e.FINTSUPPLYENTRYID = t0e.FENTRYID--Ԥ + INNER JOIN T_PLN_RESERVELINK t1 ON t1.FID=t1e.FID AND t1.FSRCFORMID = 'PLN_FORECAST'--Ԥͷ + INNER JOIN T_PLN_FORECASTENTRY t2e ON t2e.FID = t1.FSRCINTERID AND t2e.FENTRYID = t1.FSRCENTRYID--Ԥⵥ + WHERE 1 = 1 + --t0.FBILLNO='WO2401100002' /**/ + AND t0e.FFORECASTGROUP = '' /*Ϊ*/ + --AND t0e.FFORECASTGROUPFRIST = 'WO2312270043' + AND t0e.FSRCBILLTYPE='PLN_PLANORDER' /*ȷͨMRPƵĵ*/ + AND t0e_Q.FSRCSPLITID = 0 + + + INSERT INTO #TMP_MO + SELECT + tt.FID + ,tt.FBILLNO + ,tt.FDATE + ,tt.FENTRYID + ,tt.FMATERIALID + ,tt.OMATERAILID + ,tt.MOBomId + ,tt.FSRCFORMID --'Դ' + ,tt.FSRCBILLNO --'Դ' + ,tt.FSRCINTERID /*Դ*/ + ,tt.FSRCENTRYID /*Դ¼*/ ---ԴͬһԤⵥͬһеֵһͬ + ,tt.FSEQ + ,tt.FBomId /*ԤⶩFBomIdȡƥBOM༶չײ*/ + ,tt.BOMLevel + ,ISNULL(t0.FBILLNO,'޶') FBILLNO + ,tt.FFORECASTGROUP + --into #TMP_MO + FROM + #TMP_MO_PART tt + LEFT JOIN ( + SELECT + FID,MOBomId,FBOMID,FSEQ,FSRCINTERID,FSRCENTRYID,FBILLNO,FDATE,len(FBILLNO) Billnolen,OMATERAILID,FMATERIALID,FSID + ,ROW_NUMBER() over(partition BY MOBomId,FBOMID,FSEQ,FSRCINTERID,FSRCENTRYID,FDATE,len(FBILLNO),OMATERAILID,FMATERIALID order by FBILLNO) ROWID + FROM + #TMP_MO_PART + WHERE FMATERIALID = OMATERAILID + ) t0 ON 1=1 + AND tt.FBOMID = t0.FBOMID + AND tt.FSEQ = t0.FSEQ + AND tt.FSRCINTERID = t0.FSRCINTERID + AND tt.FSRCENTRYID = t0.FSRCENTRYID + AND tt.FDATE = t0.FDATE + --AND t0.ROWID =1 + AND tt.OMATERAILID = t0.FMATERIALID + AND t0.Billnolen = len(tt.FBILLNO) + --AND tt.fsid = t0.FSID + WHERE 1 = 1 + --AND tt.FFORECASTGROUP = '' + + CREATE TABLE #TMP_TOP_BOM_SET( + FID int + ,FNUMBER varchar(80) + ,FMATERIALID int + ,FSEQ int + ,BOMLEVEL int + ,TOPID int + ,showlevel varchar(80) + ,oId int + ) + CREATE INDEX [#TMP_TOP_BOM_SET_FID] ON #TMP_TOP_BOM_SET(FID); + + INSERT INTO #TMP_TOP_BOM_SET + SELECT + t0.FID + ,t0.FNUMBER + ,t0.FMATERIALID + ,ROW_NUMBER() over(partition BY t0.FID order by t0.fid) + ,1 'BOMLEVEL' + ,t0.FID AS 'TOPID' + ,'' + ,t0.FID + FROM + T_ENG_BOM t0 + INNER JOIN #TMP_MO t3 on t3.FBOMID = t0.FID AND t3.FMATERIALID = t0.FMATERIALID + WHERE 1 = 1 + AND t3.FMATERIALID = t3.OMATERAILID + GROUP BY + t0.FID + ,t0.FNUMBER + ,t0.FMATERIALID + + + DECLARE @num INT,@level int,@LoopCount int + SET @num = 1 + SET @level =1 + SET @LoopCount = 0; + WHILE (@num <> 0 AND @LoopCount < 30) + BEGIN + INSERT INTO #TMP_TOP_BOM_SET + SELECT + t3.FID + ,t3.FNUMBER + ,t3.FMATERIALID + ,ROW_NUMBER() over(partition BY t0.TOPID,t0.oid order by t0.fseq) + ,t0.BOMLEVEL + 1 + ,t0.TOPID + ,CONCAT(t0.showlevel,'-',CAST(dense_rank() over(partition BY t0.topid,t0.oid,t0.fid order by t1.fseq) as VARCHAR)) + ,t0.FID + FROM + #TMP_TOP_BOM_SET t0 + INNER JOIN T_ENG_BOMCHILD t1 on t0.FID = t1.FID + INNER JOIN T_BD_MATERIALBASE t2 on t2.FMATERIALID = t1.FMATERIALID + INNER JOIN T_ENG_BOM t3 on t1.FMATERIALID = t3.FMATERIALID + WHERE 1 = 1 + AND (t2.FERPCLSID = 2 OR t2.FERPCLSID = 5 ) + AND t0.BOMLEVEL = @level + + SET @num = @@ROWCOUNT + SET @level += 1 + SET @LoopCount += 1 + END + + SELECT + * + INTO #TMP_TOP_BOM_GROUP + FROM #TMP_TOP_BOM_SET + WHERE 1 = 1 + GROUP BY FID,FNUMBER,FMATERIALID,FSEQ,BOMLEVEL,TOPID,showlevel,oId + + SELECT FID,FBILLNO,FENTRYID,FDATE,FMATERIALID,OMATERAILID,MOBOMID,FSRCENTRYID,FSRCINTERID,FSEQ,FBOMID,TOPBILLNO,BOMLEVEL,FFORECASTGROUP + INTO #TMP_MO_GROUP + FROM #TMP_MO + GROUP BY FID,FBILLNO,FENTRYID,FDATE,FMATERIALID,OMATERAILID,MOBOMID,FSRCENTRYID,FSRCINTERID,FSEQ,FBOMID,TOPBILLNO,BOMLEVEL,FFORECASTGROUP + + --ʱ + UPDATE t0 SET t0.BOMLEVEL = (CASE t0.TOPBILLNO WHEN '޶' THEN '' ELSE ISNULL(t0.TOPBILLNO,'') + ISNULL(t1.showlevel ,'') END) + FROM #TMP_MO_GROUP t0 LEFT JOIN #TMP_TOP_BOM_GROUP t1 on t0.FMATERIALID = t1.FMATERIALID AND t0.MOBOMID = t1.FID AND t0.FBOMID = t1.TOPID + + ----µݿ + --UPDATE t0e SET t0e.FFORECASTGROUP = t1.BOMLEVEL,t0e.FFORECASTGROUPFRIST = t1.TOPBILLNO + --FROM T_PRD_MOENTRY t0e INNER JOIN #TMP_MO_GROUP t1 on t0e.FBOMID = t1.MOBOMID AND t0e.FENTRYID = t1.FENTRYID + --WHERE t0e.FFORECASTGROUP = '' + + --SELECT t0.*,t1.fnumber + + --FROM #TMP_TOP_BOM_GROUP t0 + --INNER JOIN T_BD_MATERIAL t1 on t0.fmaterialid = t1.fmaterialid + + ----WHERE t0.TOPID = 8062230 + --order by t0.FSEQ,t0.BOMLEVEL + --SELECT t0.*,t1.FENTRYID FROM #TMP_MO_GROUP t0 RIGHT join T_PRD_MOENTRY t1 on t0.FID = t1.FID AND t0.FENTRYID = t1.FENTRYID WHERE 1 = 1 AND t1.FFORECASTGROUPFRIST = 'WO2312270043' + SELECT t0.* + ,t0_lk.FSTABLENAME + ,t0_lk.FSTABLEID + ,t0_lk.FSBILLID + ,t0_lk.FSID + ,t0e_Q.FSRCSPLITBILLNO + ,t0e_Q.FSRCSPLITID + ,t0e_Q.FSRCSPLITSEQ + ,t0e_Q.FSRCSPLITENTRYID + --INTO #TMP_MO_PART + FROM #TMP_MO_GROUP t0 + LEft JOIN T_PRD_MOENTRY_LK t0_lk on t0.FENTRYID = t0_lk.FENTRYID + INNER JOIN T_PRD_MOENTRY_Q t0e_Q on t0.FENTRYID = t0e_Q.FENTRYID + WHERE 1 = 1 + --AND FBOMID =8237478 AND MOBOMID =8237478 + --AND topbillno='WO2311080183' + --SELECT * FROM #TMP_MO WHERE 1 = 1 + --AND FBOMID <> MOBOMID + --AND FBOMID = 6339745 --AND topbillno='WO2308090009' --ѯʱ + DROP TABLE #TMP_MO_GROUP + DROP TABLE #TMP_MO_PART + DROP TABLE #TMP_TOP_BOM_SET + DROP TABLE #TMP_TOP_BOM_GROUP + DROP TABLE #TMP_MO --ɾʱ#TMP \ No newline at end of file diff --git a/07.珠海英搏尔/Enpower/PRD_MO/SQLserver/生产订单BOM_选中订单_更新层号_存储过程20240115.sql b/07.珠海英搏尔/Enpower/PRD_MO/SQLserver/生产订单BOM_选中订单_更新层号_存储过程20240115.sql new file mode 100644 index 0000000..0cdd553 --- /dev/null +++ b/07.珠海英搏尔/Enpower/PRD_MO/SQLserver/生产订单BOM_选中订单_更新层号_存储过程20240115.sql @@ -0,0 +1,231 @@ +IF EXISTS(SELECT * FROM SYS.PROCEDURES WHERE NAME='PROC_SELECT_UPDATE_BOMLEVEL') + DROP PROCEDURE dbo.PROC_SELECT_UPDATE_BOMLEVEL; +GO + +CREATE PROCEDURE PROC_SELECT_UPDATE_BOMLEVEL + @billnoStr nvarchar(8000) +AS +BEGIN + CREATE TABLE #TMP_MO --ʱ#TMP + ( + FID INT + ,FBILLNO VARCHAR(255) + ,FDATE DATE + ,FENTRYID INT + ,FMATERIALID INT + ,OMATERAILID int + ,MOBOMID INT + ,FSRCFORMID VARCHAR(255) + ,FSRCBILLNO VARCHAR(255) + ,FSRCINTERID INT + ,FSRCENTRYID INT + ,FSEQ INT + ,FBOMID INT + ,BOMLEVEL VARCHAR(255) + ,TOPBILLNO VARCHAR(255) + ,FFORECASTGROUP varchar(255) + ); + + CREATE INDEX [#TMP_MO_FID] ON #TMP_MO(FID); + + --INSERT INTO #TMP_MO + /*ƻһͶţT_PLN_RESERVELINKENTRYƻתƵ */ + SELECT + t0e.FID + ,t0.FBILLNO + ,t0.FDATE + ,t0e.FENTRYID + ,t0e.FMATERIALID + ,t0e.FBomId MOBomId + ,t1.FSRCFORMID --'Դ' + ,t1.FSRCBILLNO --'Դ' + ,t1.FSRCINTERID /*Դ*/ + ,t1.FSRCENTRYID /*Դ¼*/ ---ԴͬһԤⵥͬһеֵһͬ + ,t2e.FSEQ + ,t2e.FBomId /*ԤⶩFBomIdȡƥBOM༶չײ*/ + ,t2e.FMATERIALID OMATERAILID + ,t0e.FFORECASTGROUP + --,t0_lk.FSTABLENAME + --,t0_lk.FSTABLEID + --,t0_lk.FSBILLID + ,t0_lk.FSID + ,t0e_Q.FSRCSPLITID + ,'' BOMLevel + INTO #TMP_MO_PART + FROM T_PRD_MO t0 --ͷ + INNER JOIN T_PRD_MOENTRY t0e ON t0e.FID=t0.FID -- + INNER JOIN T_PRD_MOENTRY_Q t0e_Q on t0e.FENTRYID = t0e_Q.FENTRYID + INNER JOIN T_PRD_MOENTRY_LK t0_lk on t0e.FENTRYID = t0_lk.FENTRYID + INNER JOIN T_PLN_RESERVELINKENTRY t1e ON t1e.FINTSUPPLYID = t0e.FID AND t1e.FINTSUPPLYENTRYID = t0e.FENTRYID--Ԥ + INNER JOIN T_PLN_RESERVELINK t1 ON t1.FID=t1e.FID AND t1.FSRCFORMID = 'PLN_FORECAST'--Ԥͷ + INNER JOIN T_PLN_FORECASTENTRY t2e ON t2e.FID = t1.FSRCINTERID AND t2e.FENTRYID = t1.FSRCENTRYID--Ԥⵥ + WHERE 1 = 1 + --t0.FBILLNO='WO2401100002' /**/ + AND t0e.FFORECASTGROUP='' /*Ϊ*/ + --AND t0e.FFORECASTGROUPFRIST = 'WO2312270043' + AND t0e.FSRCBILLTYPE='PLN_PLANORDER' /*ȷͨMRPƵĵ*/ + AND t0e_Q.FSRCSPLITID = 0 + AND t0.FBILLNO in (SELECT b.billno FROM (SELECT CAST(''+REPLACE(@billnoStr,',','')+'' AS xml) billno ) a OUTER APPLY (SELECT T.C.value('.','varchar(50)') billno FROM a.billno.nodes('/v') AS T(C)) b ) --Ų + + + INSERT INTO #TMP_MO + SELECT + tt.FID + ,tt.FBILLNO + ,tt.FDATE + ,tt.FENTRYID + ,tt.FMATERIALID + ,tt.OMATERAILID + ,tt.MOBomId + ,tt.FSRCFORMID --'Դ' + ,tt.FSRCBILLNO --'Դ' + ,tt.FSRCINTERID /*Դ*/ + ,tt.FSRCENTRYID /*Դ¼*/ ---ԴͬһԤⵥͬһеֵһͬ + ,tt.FSEQ + ,tt.FBomId /*ԤⶩFBomIdȡƥBOM༶չײ*/ + ,tt.BOMLevel + ,t0.FBILLNO + ,tt.FFORECASTGROUP + --into #TMP_MO + FROM + #TMP_MO_PART tt + INNER JOIN ( + SELECT + FID,MOBomId,FBOMID,FSEQ,FSRCINTERID,FSRCENTRYID,FBILLNO,FDATE,len(FBILLNO) Billnolen,OMATERAILID,FMATERIALID,FSID + ,ROW_NUMBER() over(partition BY MOBomId,FBOMID,FSEQ,FSRCINTERID,FSRCENTRYID,FDATE,len(FBILLNO),OMATERAILID,FMATERIALID order by FBILLNO) ROWID + FROM + #TMP_MO_PART + WHERE FMATERIALID = OMATERAILID + ) t0 ON 1=1 + AND tt.FBOMID = t0.FBOMID + AND tt.FSEQ = t0.FSEQ + AND tt.FSRCINTERID = t0.FSRCINTERID + AND tt.FSRCENTRYID = t0.FSRCENTRYID + AND tt.FDATE = t0.FDATE + --AND t0.ROWID =1 + AND tt.OMATERAILID = t0.FMATERIALID + AND t0.Billnolen = len(tt.FBILLNO) + --AND tt.fsid = t0.FSID + WHERE 1 = 1 + --AND tt.FFORECASTGROUP = '' + + CREATE TABLE #TMP_TOP_BOM_SET( + FID int + ,FNUMBER varchar(80) + ,FMATERIALID int + ,FSEQ int + ,BOMLEVEL int + ,TOPID int + ,showlevel varchar(80) + ,oId int + ) + CREATE INDEX [#TMP_TOP_BOM_SET_FID] ON #TMP_TOP_BOM_SET(FID); + + INSERT INTO #TMP_TOP_BOM_SET + SELECT + t0.FID + ,t0.FNUMBER + ,t0.FMATERIALID + ,ROW_NUMBER() over(partition BY t0.FID order by t0.fid) + ,1 'BOMLEVEL' + ,t0.FID AS 'TOPID' + ,'' + ,t0.FID + FROM + T_ENG_BOM t0 + INNER JOIN #TMP_MO t3 on t3.FBOMID = t0.FID AND t3.FMATERIALID = t0.FMATERIALID + WHERE 1 = 1 + AND t3.FMATERIALID = t3.OMATERAILID + GROUP BY + t0.FID + ,t0.FNUMBER + ,t0.FMATERIALID + + + DECLARE @num INT,@level int,@LoopCount int + SET @num = 1 + SET @level =1 + SET @LoopCount = 0; + WHILE (@num <> 0 AND @LoopCount < 30) + BEGIN + INSERT INTO #TMP_TOP_BOM_SET + SELECT + t3.FID + ,t3.FNUMBER + ,t3.FMATERIALID + ,ROW_NUMBER() over(partition BY t0.TOPID,t0.oid order by t0.fseq) + ,t0.BOMLEVEL + 1 + ,t0.TOPID + ,CONCAT(t0.showlevel,'-',CAST(dense_rank() over(partition BY t0.topid,t0.oid,t0.fid order by t1.fseq) as VARCHAR)) + ,t0.FID + FROM + #TMP_TOP_BOM_SET t0 + INNER JOIN T_ENG_BOMCHILD t1 on t0.FID = t1.FID + INNER JOIN T_BD_MATERIALBASE t2 on t2.FMATERIALID = t1.FMATERIALID + INNER JOIN T_ENG_BOM t3 on t1.FMATERIALID = t3.FMATERIALID + WHERE 1 = 1 + AND (t2.FERPCLSID = 2 OR t2.FERPCLSID = 5 ) + AND t0.BOMLEVEL = @level + + SET @num = @@ROWCOUNT + SET @level += 1 + SET @LoopCount += 1 + END + + SELECT + * + INTO #TMP_TOP_BOM_GROUP + FROM #TMP_TOP_BOM_SET + WHERE 1 = 1 + GROUP BY FID,FNUMBER,FMATERIALID,FSEQ,BOMLEVEL,TOPID,showlevel,oId + + SELECT FID,FBILLNO,FENTRYID,FDATE,FMATERIALID,OMATERAILID,MOBOMID,FSRCENTRYID,FSRCINTERID,FSEQ,FBOMID,TOPBILLNO,BOMLEVEL,FFORECASTGROUP + INTO #TMP_MO_GROUP + FROM #TMP_MO + GROUP BY FID,FBILLNO,FENTRYID,FDATE,FMATERIALID,OMATERAILID,MOBOMID,FSRCENTRYID,FSRCINTERID,FSEQ,FBOMID,TOPBILLNO,BOMLEVEL,FFORECASTGROUP + + --ʱ + UPDATE t0 SET t0.BOMLEVEL = ISNULL(t0.TOPBILLNO,'') + ISNULL(t1.showlevel ,'') + FROM #TMP_MO_GROUP t0 LEFT JOIN #TMP_TOP_BOM_GROUP t1 on t0.FMATERIALID = t1.FMATERIALID AND t0.MOBOMID = t1.FID AND t0.FBOMID = t1.TOPID + + ----µݿ + --UPDATE t0e SET t0e.FFORECASTGROUP = t1.BOMLEVEL,t0e.FFORECASTGROUPFRIST = t1.TOPBILLNO + --FROM T_PRD_MOENTRY t0e INNER JOIN #TMP_MO_GROUP t1 on t0e.FBOMID = t1.MOBOMID AND t0e.FENTRYID = t1.FENTRYID + + --SELECT t0.*,t1.fnumber + + --FROM #TMP_TOP_BOM_GROUP t0 + --INNER JOIN T_BD_MATERIAL t1 on t0.fmaterialid = t1.fmaterialid + + ----WHERE t0.TOPID = 8062230 + --order by t0.FSEQ,t0.BOMLEVEL + --SELECT t0.*,t1.FENTRYID FROM #TMP_MO_GROUP t0 RIGHT join T_PRD_MOENTRY t1 on t0.FID = t1.FID AND t0.FENTRYID = t1.FENTRYID WHERE 1 = 1 AND t1.FFORECASTGROUPFRIST = 'WO2312270043' + --SELECT t0.* + -- ,t0_lk.FSTABLENAME + -- ,t0_lk.FSTABLEID + -- ,t0_lk.FSBILLID + -- ,t0_lk.FSID + -- ,t0e_Q.FSRCSPLITBILLNO + -- ,t0e_Q.FSRCSPLITID + -- ,t0e_Q.FSRCSPLITSEQ + -- ,t0e_Q.FSRCSPLITENTRYID + -- --INTO #TMP_MO_PART + -- FROM #TMP_MO_GROUP t0 + -- LEft JOIN T_PRD_MOENTRY_LK t0_lk on t0.FENTRYID = t0_lk.FENTRYID + -- INNER JOIN T_PRD_MOENTRY_Q t0e_Q on t0.FENTRYID = t0e_Q.FENTRYID + -- WHERE 1 = 1 + --AND FBOMID =8237478 AND MOBOMID =8237478 + --AND topbillno='WO2311080183' + --SELECT * FROM #TMP_MO WHERE 1 = 1 + --AND FBOMID <> MOBOMID + --AND FBOMID = 6339745 --AND topbillno='WO2308090009' --ѯʱ + DROP TABLE #TMP_MO_GROUP + DROP TABLE #TMP_MO_PART + DROP TABLE #TMP_TOP_BOM_SET + DROP TABLE #TMP_TOP_BOM_GROUP + DROP TABLE #TMP_MO --ɾʱ#TMP +END + +--SET STATISTICS TIME ON +--EXEC PROC_UPDATE_BOMLEVEL +--SET STATISTICS TIME OFF \ No newline at end of file diff --git a/07.珠海英搏尔/Enpower/PRD_MO/SQLserver/生产订单BOM更新层号_存储过程20240114.sql b/07.珠海英搏尔/Enpower/PRD_MO/SQLserver/生产订单BOM更新层号_存储过程20240114.sql new file mode 100644 index 0000000..cd9c330 --- /dev/null +++ b/07.珠海英搏尔/Enpower/PRD_MO/SQLserver/生产订单BOM更新层号_存储过程20240114.sql @@ -0,0 +1,229 @@ +IF EXISTS(SELECT * FROM SYS.PROCEDURES WHERE NAME='PROC_UPDATE_BOMLEVEL') + DROP PROCEDURE dbo.PROC_UPDATE_BOMLEVEL; +GO + +CREATE PROCEDURE PROC_UPDATE_BOMLEVEL +AS +BEGIN + CREATE TABLE #TMP_MO --ʱ#TMP + ( + FID INT + ,FBILLNO VARCHAR(255) + ,FDATE DATE + ,FENTRYID INT + ,FMATERIALID INT + ,OMATERAILID int + ,MOBOMID INT + ,FSRCFORMID VARCHAR(255) + ,FSRCBILLNO VARCHAR(255) + ,FSRCINTERID INT + ,FSRCENTRYID INT + ,FSEQ INT + ,FBOMID INT + ,BOMLEVEL VARCHAR(255) + ,TOPBILLNO VARCHAR(255) + ,FFORECASTGROUP varchar(255) + ); + + CREATE INDEX [#TMP_MO_FID] ON #TMP_MO(FID); + + --INSERT INTO #TMP_MO + /*ƻһͶţT_PLN_RESERVELINKENTRYƻתƵ */ + SELECT + t0e.FID + ,t0.FBILLNO + ,t0.FDATE + ,t0e.FENTRYID + ,t0e.FMATERIALID + ,t0e.FBomId MOBomId + ,t1.FSRCFORMID --'Դ' + ,t1.FSRCBILLNO --'Դ' + ,t1.FSRCINTERID /*Դ*/ + ,t1.FSRCENTRYID /*Դ¼*/ ---ԴͬһԤⵥͬһеֵһͬ + ,t2e.FSEQ + ,t2e.FBomId /*ԤⶩFBomIdȡƥBOM༶չײ*/ + ,t2e.FMATERIALID OMATERAILID + ,t0e.FFORECASTGROUP + --,t0_lk.FSTABLENAME + --,t0_lk.FSTABLEID + --,t0_lk.FSBILLID + ,t0_lk.FSID + ,t0e_Q.FSRCSPLITID + ,'' BOMLevel + INTO #TMP_MO_PART + FROM T_PRD_MO t0 --ͷ + INNER JOIN T_PRD_MOENTRY t0e ON t0e.FID=t0.FID -- + INNER JOIN T_PRD_MOENTRY_Q t0e_Q on t0e.FENTRYID = t0e_Q.FENTRYID + INNER JOIN T_PRD_MOENTRY_LK t0_lk on t0e.FENTRYID = t0_lk.FENTRYID + INNER JOIN T_PLN_RESERVELINKENTRY t1e ON t1e.FINTSUPPLYID = t0e.FID AND t1e.FINTSUPPLYENTRYID = t0e.FENTRYID--Ԥ + INNER JOIN T_PLN_RESERVELINK t1 ON t1.FID=t1e.FID AND t1.FSRCFORMID = 'PLN_FORECAST'--Ԥͷ + INNER JOIN T_PLN_FORECASTENTRY t2e ON t2e.FID = t1.FSRCINTERID AND t2e.FENTRYID = t1.FSRCENTRYID--Ԥⵥ + WHERE 1 = 1 + --t0.FBILLNO='WO2401100002' /**/ + AND t0e.FFORECASTGROUP='' /*Ϊ*/ + --AND t0e.FFORECASTGROUPFRIST = 'WO2312270043' + AND t0e.FSRCBILLTYPE='PLN_PLANORDER' /*ȷͨMRPƵĵ*/ + AND t0e_Q.FSRCSPLITID = 0 + + + INSERT INTO #TMP_MO + SELECT + tt.FID + ,tt.FBILLNO + ,tt.FDATE + ,tt.FENTRYID + ,tt.FMATERIALID + ,tt.OMATERAILID + ,tt.MOBomId + ,tt.FSRCFORMID --'Դ' + ,tt.FSRCBILLNO --'Դ' + ,tt.FSRCINTERID /*Դ*/ + ,tt.FSRCENTRYID /*Դ¼*/ ---ԴͬһԤⵥͬһеֵһͬ + ,tt.FSEQ + ,tt.FBomId /*ԤⶩFBomIdȡƥBOM༶չײ*/ + ,tt.BOMLevel + ,t0.FBILLNO + ,tt.FFORECASTGROUP + --into #TMP_MO + FROM + #TMP_MO_PART tt + INNER JOIN ( + SELECT + FID,MOBomId,FBOMID,FSEQ,FSRCINTERID,FSRCENTRYID,FBILLNO,FDATE,len(FBILLNO) Billnolen,OMATERAILID,FMATERIALID,FSID + ,ROW_NUMBER() over(partition BY MOBomId,FBOMID,FSEQ,FSRCINTERID,FSRCENTRYID,FDATE,len(FBILLNO),OMATERAILID,FMATERIALID order by FBILLNO) ROWID + FROM + #TMP_MO_PART + WHERE FMATERIALID = OMATERAILID + ) t0 ON 1=1 + AND tt.FBOMID = t0.FBOMID + AND tt.FSEQ = t0.FSEQ + AND tt.FSRCINTERID = t0.FSRCINTERID + AND tt.FSRCENTRYID = t0.FSRCENTRYID + AND tt.FDATE = t0.FDATE + --AND t0.ROWID =1 + AND tt.OMATERAILID = t0.FMATERIALID + AND t0.Billnolen = len(tt.FBILLNO) + --AND tt.fsid = t0.FSID + WHERE 1 = 1 + --AND tt.FFORECASTGROUP = '' + + CREATE TABLE #TMP_TOP_BOM_SET( + FID int + ,FNUMBER varchar(80) + ,FMATERIALID int + ,FSEQ int + ,BOMLEVEL int + ,TOPID int + ,showlevel varchar(80) + ,oId int + ) + CREATE INDEX [#TMP_TOP_BOM_SET_FID] ON #TMP_TOP_BOM_SET(FID); + + INSERT INTO #TMP_TOP_BOM_SET + SELECT + t0.FID + ,t0.FNUMBER + ,t0.FMATERIALID + ,ROW_NUMBER() over(partition BY t0.FID order by t0.fid) + ,1 'BOMLEVEL' + ,t0.FID AS 'TOPID' + ,'' + ,t0.FID + FROM + T_ENG_BOM t0 + INNER JOIN #TMP_MO t3 on t3.FBOMID = t0.FID AND t3.FMATERIALID = t0.FMATERIALID + WHERE 1 = 1 + AND t3.FMATERIALID = t3.OMATERAILID + GROUP BY + t0.FID + ,t0.FNUMBER + ,t0.FMATERIALID + + + DECLARE @num INT,@level int,@LoopCount int + SET @num = 1 + SET @level =1 + SET @LoopCount = 0; + WHILE (@num <> 0 AND @LoopCount < 30) + BEGIN + INSERT INTO #TMP_TOP_BOM_SET + SELECT + t3.FID + ,t3.FNUMBER + ,t3.FMATERIALID + ,ROW_NUMBER() over(partition BY t0.TOPID,t0.oid order by t0.fseq) + ,t0.BOMLEVEL + 1 + ,t0.TOPID + ,CONCAT(t0.showlevel,'-',CAST(dense_rank() over(partition BY t0.topid,t0.oid,t0.fid order by t1.fseq) as VARCHAR)) + ,t0.FID + FROM + #TMP_TOP_BOM_SET t0 + INNER JOIN T_ENG_BOMCHILD t1 on t0.FID = t1.FID + INNER JOIN T_BD_MATERIALBASE t2 on t2.FMATERIALID = t1.FMATERIALID + INNER JOIN T_ENG_BOM t3 on t1.FMATERIALID = t3.FMATERIALID + WHERE 1 = 1 + AND (t2.FERPCLSID = 2 OR t2.FERPCLSID = 5 ) + AND t0.BOMLEVEL = @level + + SET @num = @@ROWCOUNT + SET @level += 1 + SET @LoopCount += 1 + END + + SELECT + * + INTO #TMP_TOP_BOM_GROUP + FROM #TMP_TOP_BOM_SET + WHERE 1 = 1 + GROUP BY FID,FNUMBER,FMATERIALID,FSEQ,BOMLEVEL,TOPID,showlevel,oId + + SELECT FID,FBILLNO,FENTRYID,FDATE,FMATERIALID,OMATERAILID,MOBOMID,FSRCENTRYID,FSRCINTERID,FSEQ,FBOMID,TOPBILLNO,BOMLEVEL,FFORECASTGROUP + INTO #TMP_MO_GROUP + FROM #TMP_MO + GROUP BY FID,FBILLNO,FENTRYID,FDATE,FMATERIALID,OMATERAILID,MOBOMID,FSRCENTRYID,FSRCINTERID,FSEQ,FBOMID,TOPBILLNO,BOMLEVEL,FFORECASTGROUP + + --ʱ + UPDATE t0 SET t0.BOMLEVEL = ISNULL(t0.TOPBILLNO,'') + ISNULL(t1.showlevel ,'') + FROM #TMP_MO_GROUP t0 LEFT JOIN #TMP_TOP_BOM_GROUP t1 on t0.FMATERIALID = t1.FMATERIALID AND t0.MOBOMID = t1.FID AND t0.FBOMID = t1.TOPID + + ----µݿ + --UPDATE t0e SET t0e.FFORECASTGROUP = t1.BOMLEVEL,t0e.FFORECASTGROUPFRIST = t1.TOPBILLNO + --FROM T_PRD_MOENTRY t0e INNER JOIN #TMP_MO_GROUP t1 on t0e.FBOMID = t1.MOBOMID AND t0e.FENTRYID = t1.FENTRYID + + --SELECT t0.*,t1.fnumber + + --FROM #TMP_TOP_BOM_GROUP t0 + --INNER JOIN T_BD_MATERIAL t1 on t0.fmaterialid = t1.fmaterialid + + ----WHERE t0.TOPID = 8062230 + --order by t0.FSEQ,t0.BOMLEVEL + --SELECT t0.*,t1.FENTRYID FROM #TMP_MO_GROUP t0 RIGHT join T_PRD_MOENTRY t1 on t0.FID = t1.FID AND t0.FENTRYID = t1.FENTRYID WHERE 1 = 1 AND t1.FFORECASTGROUPFRIST = 'WO2312270043' + --SELECT t0.* + -- ,t0_lk.FSTABLENAME + -- ,t0_lk.FSTABLEID + -- ,t0_lk.FSBILLID + -- ,t0_lk.FSID + -- ,t0e_Q.FSRCSPLITBILLNO + -- ,t0e_Q.FSRCSPLITID + -- ,t0e_Q.FSRCSPLITSEQ + -- ,t0e_Q.FSRCSPLITENTRYID + -- --INTO #TMP_MO_PART + -- FROM #TMP_MO_GROUP t0 + -- LEft JOIN T_PRD_MOENTRY_LK t0_lk on t0.FENTRYID = t0_lk.FENTRYID + -- INNER JOIN T_PRD_MOENTRY_Q t0e_Q on t0.FENTRYID = t0e_Q.FENTRYID + -- WHERE 1 = 1 + --AND FBOMID =8237478 AND MOBOMID =8237478 + --AND topbillno='WO2311080183' + --SELECT * FROM #TMP_MO WHERE 1 = 1 + --AND FBOMID <> MOBOMID + --AND FBOMID = 6339745 --AND topbillno='WO2308090009' --ѯʱ + DROP TABLE #TMP_MO_GROUP + DROP TABLE #TMP_MO_PART + DROP TABLE #TMP_TOP_BOM_SET + DROP TABLE #TMP_TOP_BOM_GROUP + DROP TABLE #TMP_MO --ɾʱ#TMP +END + +--SET STATISTICS TIME ON +--EXEC PROC_UPDATE_BOMLEVEL +--SET STATISTICS TIME OFF \ No newline at end of file diff --git a/07.珠海英搏尔/Enpower/PRD_MO/SQLserver/统计需要更新的数据.sql b/07.珠海英搏尔/Enpower/PRD_MO/SQLserver/统计需要更新的数据.sql new file mode 100644 index 0000000..e87a496 --- /dev/null +++ b/07.珠海英搏尔/Enpower/PRD_MO/SQLserver/统计需要更新的数据.sql @@ -0,0 +1,20 @@ +IF EXISTS(SELECT * FROM SYS.PROCEDURES WHERE NAME='PROC_COUNT_UPDATE_PLAN_LIST') + DROP PROCEDURE dbo.PROC_COUNT_UPDATE_PLAN_LIST; +GO + +CREATE PROCEDURE PROC_COUNT_UPDATE_PLAN_LIST +AS +BEGIN + SELECT COUNT(1) as totalCount,5000 as pageSize + FROM ( + SELECT A.FID + FROM T_PLN_PLANORDER A + INNER JOIN T_PLN_RESERVELINKENTRY B ON B.FSUPPLYBILLNO = A.FBILLNO + INNER JOIN T_PLN_RESERVELINK C ON C.FID=B.FID + INNER JOIN T_PLN_FORECASTENTRY D ON D.FENTRYID=C.FSRCENTRYID + INNER JOIN T_PLN_FORECAST e on e .fid=d.FID + WHERE 1=1 + AND A.F_FORECASTNUMBER = '' + GROUP BY A.FID + ) t +END \ No newline at end of file diff --git a/07.珠海英搏尔/Enpower/PRD_MO/SQLserver/英博尔测试20240220.sql b/07.珠海英搏尔/Enpower/PRD_MO/SQLserver/英博尔测试20240220.sql new file mode 100644 index 0000000..d9813e8 --- /dev/null +++ b/07.珠海英搏尔/Enpower/PRD_MO/SQLserver/英博尔测试20240220.sql @@ -0,0 +1,245 @@ + +declare @FBILLNO NVARCHAR(1000) +set @FBILLNO = 'WO2402200045,WO2402200046,WO2402200047' +select fname into #temp2 from dbo.fn_hr_StrSplit(@FBILLNO,',') + +/*********************************ֶstart*****************************************/ +--UPDATE B SET FFORECASTGROUP = REPLACE( D.FFORECASTGROUP,H.FBILLNO,L.FBILLNO) + +--FROM T_PRD_MO A +--INNER JOIN T_PRD_MOENTRY B ON A.FID=B.FID +--INNER JOIN T_PRD_MOENTRY_Q C ON C.FENTRYID=B.FENTRYID +--INNER JOIN T_PRD_MOENTRY D ON D.FENTRYID=C.FSRCSPLITENTRYID +--INNER JOIN T_PRD_MO E ON E.FID=D.FID +--INNER JOIN T_PRD_MO H ON H.FBILLNO=D.FFORECASTGROUPFRIST --ײ +--INNER JOIN T_PRD_MOENTRY I ON I.FID=H.FID --ײ㵥 +--INNER JOIN T_PRD_MOENTRY_Q J ON J.FSRCSPLITENTRYID=I.FENTRYID +--INNER JOIN T_PRD_MOENTRY K ON K.FENTRYID=J.FENTRYID +--INNER JOIN T_PRD_MO L ON L.FID=K.FID AND SUBSTRING(L.FBILLNO, CHARINDEX('-',L.FBILLNO)+1,LEN(L.FBILLNO)) = SUBSTRING(A.FBILLNO, CHARINDEX('-',A.FBILLNO)+1,LEN(A.FBILLNO)) +--inner join #temp2 m on m.Fname=a.FBILLNO +--WHERE 1=1 +--AND B.FFORECASTGROUP = '' + +UPDATE t0e SET t0e.FFORECASTGROUP = REPLACE( t1e.FFORECASTGROUP,t2.FBILLNO,t3.FBILLNO) +--SELECT REPLACE( t1e.FFORECASTGROUP,t2.FBILLNO,t3.FBILLNO) +FROM T_PRD_MO t0 + INNER JOIN T_PRD_MOENTRY t0e on t0.FID = t0e.FID + INNER JOIN T_PRD_MOENTRY_Q t0e_q on t0e_q.FENTRYID = t0e.FENTRYID + INNER JOIN T_PRD_MOENTRY t1e on t1e.FENTRYID = t0e_q.FSRCSPLITENTRYID + INNER JOIN T_PRD_MO t2 on t2.FBILLNO = t1e.FFORECASTGROUPFRIST + INNER JOIN T_PRD_MOENTRY t2e on t2e.FID = t2.FID + INNER JOIN T_PRD_MOENTRY_Q t3e_q on t3e_q.FSRCSPLITENTRYID = t2e.FENTRYID + INNER JOIN T_PRD_MOENTRY t3e on t3e.FENTRYID = t3e_q.FENTRYID + INNER JOIN T_PRD_MO t3 on t3.FID = t3e.FID AND SUBSTRING(t3.FBILLNO, CHARINDEX('-',t3.FBILLNO)+1,LEN(t3.FBILLNO)) = SUBSTRING(t0.FBILLNO, CHARINDEX('-',t0.FBILLNO)+1,LEN(t0.FBILLNO)) +WHERE 1=1 + AND t0e.FFORECASTGROUP = '' +/*********************************ֶend*****************************************/ +--2024-01-15 ޸ ,ʹÿ洢 +exec PROC_SELECT_UPDATE_BOMLEVEL @FBILLNO + + +--(ζ) + UPDATE B SET FFORECASTGROUP = ISNULL( cast( e.FBILLNO as nvarchar(100))+'-'+ cast( dbo.GetBomSeq(D.fbomid,b.fmaterialid) as nvarchar(100)) ,'') + --SELECT + --F.FNUMBER, + --a.FBILLNO, + --B.FENTRYID , + --D.fbomid,b.fmaterialid, + --cast( e.FBILLNO as nvarchar(100))+'-'+ cast( dbo.GetBomSeq(D.fbomid,b.fmaterialid) as nvarchar(100)) as 'Bom', + --CONVERT( nvarchar(1000),'') as 'ε',a.FBILLNO as '',e.FBILLNO as 'Դͷ' + FROM T_PRD_MO A + INNER JOIN T_PRD_MOENTRY B ON A.FID=B.FID + INNER JOIN T_PRD_MOENTRY_LK C ON C .FENTRYID=B.FENTRYID + INNER JOIN T_PRD_MOENTRY D ON D.FID=C.FSBILLID AND D.FENTRYID=C.FSID + INNER JOIN T_PRD_MO E ON E.FID=D.FID + INNER JOIN T_BD_MATERIAL F ON F.FMATERIALID=B.FMATERIALID + inner join #temp2 g on g.Fname=a.FBILLNO + WHERE B.FFORECASTGROUP = '' +--AND A.FBILLNO =@FBILLNO + + +--2024-01-23 1814 ޸start-- + ----(ûε,Ϊĵݱ) + --UPDATE B SET FFORECASTGROUP = A.FBILLNO + ----SELECT * + --FROM T_PRD_MO A + --INNER JOIN T_PRD_MOENTRY B ON A.FID=B.FID + --LEFT JOIN T_PRD_MOENTRY_LK D ON D.FENTRYID=B.FENTRYID AND D.FSTABLENAME = 'T_PRD_MOENTRY' + --inner join #temp2 f on f.Fname=a.FBILLNO + --WHERE + --1=1 + --AND D.FSID IS NULL + --AND B.FFORECASTGROUP = '' + ----AND A.FBILLNO =@FBILLNO + --2024-01-23 1814 ޸end-- + + --2024-01-23 1814 start-- + UPDATE B SET FFORECASTGROUP = A.FBILLNO + --SELECT A.FBILLNO + FROM T_PRD_MO A + INNER JOIN T_PRD_MOENTRY B ON A.FID=B.FID + INNER JOIN T_PRD_MOENTRY_A t0e_a on B.FENTRYID = t0e_a.FENTRYID + INNER JOIN #temp2 f on f.Fname=a.FBILLNO + WHERE + 1=1 + AND B.FFORECASTGROUP = '' + AND t0e_a.FCREATETYPE != 3 + --AND B.FFORECASTGROUPFRIST != '޶' + AND NOT EXISTS ( + SELECT 1 + FROM T_PRD_MOENTRY_LK t1_lk + WHERE 1=1 + AND t1_lk.FSTABLENAME = 'T_PRD_MOENTRY' + AND t1_lk.FENTRYID = B.FENTRYID) + --2024-01-23 1814 end-- + + + + + --ϵͳ׼ıעֶθµע2ֶ + update B set FNOTE2=c.FMEMO FROM T_PRD_MO A + INNER JOIN T_PRD_MOENTRY B ON A.FID=B.FID + INNER JOIN T_PRD_MOENTRY_L C ON C.FENTRYID=B.FENTRYID + INNER JOIN #temp2 f on f.Fname=a.FBILLNO + --where FNOTE2 = '' + --AND A.FBILLNO =@FBILLNO + +--𵥻ȡԭע + UPDATE B SET FNOTE2 = D.FNOTE2 +FROM T_PRD_MO A +INNER JOIN T_PRD_MOENTRY B ON A.FID=B.FID +INNER JOIN T_PRD_MOENTRY_Q C ON C.FENTRYID=B.FENTRYID +INNER JOIN T_PRD_MOENTRY D ON D.FENTRYID=C.FSRCSPLITENTRYID +inner join #temp2 f on f.Fname=a.FBILLNO + --where A.FBILLNO = 'WO2301050101' + where B.FNOTE2= '' + --AND A.FBILLNO =@FBILLNO + + + + + --εݵıע¼ıע + --UPDATE D SET D.FNOTE2 = B.FNOTE2 + --SELECT a.FBILLNO,b.FNOTE2,c.FBILLNO ,d.FNOTE2 + UPDATE B SET FNOTE2 = D.FNOTE2 + FROM T_PRD_MO A + INNER JOIN T_PRD_MOENTRY B ON A.FID=B.FID + INNER JOIN T_PRD_MO C ON C.FBILLNO= B.FFORECASTGROUPFRIST + INNER JOIN T_PRD_MOENTRY D ON D.FID=C.FID + inner join #temp2 f on f.Fname=a.FBILLNO + --where A.FBILLNO = 'WO2301050101' + where B.FNOTE2= '' + AND A.FBILLNO <> B.FFORECASTGROUPFRIST + -- AND A.FBILLNO =@FBILLNO + + --嵥 + UPDATE D SET FFORECASTGROUP= c.FFORECASTGROUP + FROM T_PRD_PPBOM A + INNER JOIN T_PRD_PPBOMENTRY D ON A.FID=D.FID + INNER JOIN T_PRD_MO B ON B.FBILLNO=A.FMOBillNO + INNER JOIN T_PRD_MOENTRY C ON C.FID=B.FID + inner join #temp2 f on f.Fname=a.FMOBILLNO + where d.FFORECASTGROUP = '' + --AND A.FMOBILLNO =@FBILLNO + + + + UPDATE A SET FINVSTOCKQTY=B.FBASEQTY + FROM T_PRD_MOENTRY A + INNER JOIN + ( + SELECT B.FMATERIALID,SUM(FBASEQTY) AS 'FBASEQTY' FROM T_STK_INVENTORY A + INNER JOIN T_BD_MATERIAL B ON A.FMATERIALID=B.FMASTERID + WHERE A.FISEFFECTIVED=1 + GROUP BY B.FMATERIALID + ) B ON A.FMATERIALID=B.FMATERIALID + inner join t_prd_mo c on c.fid=a.fid + inner join #temp2 f on f.Fname=c.FBILLNO WHERE FINVSTOCKQTY = 0 + + --AND c.FBILLNO =@FBILLNO + + + + --UPDATE a SET a.FBILLNO = ISNULL( cast( e.FBILLNO as nvarchar(100))+'-'+ cast( dbo.GetBomSeq(D.fbomid,b.fmaterialid) as nvarchar(100)) ,'') + ----SELECT + ----F.FNUMBER, + ----a.FBILLNO, + ----B.FENTRYID , + ----D.fbomid,b.fmaterialid, + ----cast( e.FBILLNO as nvarchar(100))+'-'+ cast( dbo.GetBomSeq(D.fbomid,b.fmaterialid) as nvarchar(100)) as 'Bom', + ----CONVERT( nvarchar(1000),'') as 'ε',a.FBILLNO as '',e.FBILLNO as 'Դͷ' + --FROM T_PRD_MO A + --INNER JOIN T_PRD_MOENTRY B ON A.FID=B.FID + --INNER JOIN T_PRD_MOENTRY_LK C ON C .FENTRYID=B.FENTRYID + --INNER JOIN T_PRD_MOENTRY D ON D.FID=C.FSBILLID AND D.FENTRYID=C.FSID + --INNER JOIN T_PRD_MO E ON E.FID=D.FID + --INNER JOIN T_BD_MATERIAL F ON F.FMATERIALID=B.FMATERIALID + --WHERE B.FFORECASTGROUP = '' + + +--ײ㶩 + + +update a set FFORECASTGROUPFRIST = + CASE WHEN CHARINDEX( '-',REPLACE( FFORECASTGROUP,'_','-') ,0) = 0 THEN FFORECASTGROUP + + WHEN CHARINDEX( '-',REPLACE( FFORECASTGROUP,'_','-') ,0) > 0 AND B.FSRCSPLITENTRYID=0 THEN SUBSTRING(FFORECASTGROUP,0,dbo.[func_find](FFORECASTGROUP,'-',1)) + WHEN CHARINDEX( '-',REPLACE( FFORECASTGROUP,'_','-') ,0) > 0 AND B.FSRCSPLITENTRYID>0 AND SUBSTRING(FFORECASTGROUP,0,dbo.[func_find](FFORECASTGROUP,'-',2)) IS NULL THEN FFORECASTGROUP + ELSE SUBSTRING(FFORECASTGROUP,0,dbo.[func_find](FFORECASTGROUP,'-',2)) END + +FROM T_PRD_MOENTRY A +INNER JOIN T_PRD_MOENTRY_Q B ON A.FENTRYID=B.FENTRYID +inner join T_PRD_MO c on c.fid =a.fid +inner join #temp2 f on f.Fname=c.FBILLNO +WHERE +1=1 +AND FFORECASTGROUPFRIST= '' +--AND c.FBILLNO =@FBILLNO + + +--嵥ײ㶩 +update T_PRD_PPBOMENTRY set FFORECASTGROUPFRIST = + CASE + WHEN CHARINDEX( '-',REPLACE( A.FFORECASTGROUP,'_','-') ,0) = 0 + THEN A.FFORECASTGROUP + ELSE SUBSTRING(A.FFORECASTGROUP,0, CHARINDEX( '-',REPLACE( A.FFORECASTGROUP,'_','-') ,0)) + END +FROM T_PRD_PPBOMENTRY a +inner join T_PRD_PPBOM b on a.fid=b.fid +inner join #temp2 f on f.Fname=b.FMOBILLNO +WHERE FFORECASTGROUPFRIST= '' +--and b.FMOBILLNO = @FBILLNO + + + --Ŀͻ¼Ŀͻ¼ӹ + UPDATE E SET E.F_PKGR_CUSTOMER= A.F_PKGR_CUSTOMER + --SELECT * + --D.FNOTE2, + --B.FNOTE2,* + FROM T_PRD_MO A + INNER JOIN T_PRD_MOENTRY B ON A.FID=B.FID + INNER JOIN T_PRD_MOENTRY_LK C ON C.FSID=B.FENTRYID AND C.FSBILLID=B.FID + INNER JOIN T_PRD_MOENTRY D ON D.FENTRYID=C.FENTRYID + INNER JOIN T_PRD_MO E ON E.FID=D.FID + inner join #temp2 f on f.Fname=a.FBILLNO + --where A.FBILLNO = 'TO2305300002' + AND ISNULL(E.F_PKGR_CUSTOMER,0)= 0 + and E.F_PKGR_CUSTOMER<>A.F_PKGR_CUSTOMER + + + + --嵥ĵλ + --SELECT FNUMERATOR,FDENOMINATOR, + --ROUND(FNUMERATOR/FDENOMINATOR,3), F_PKGR_CONSUMPTION, + --* + update T_PRD_PPBOMENTRY set FBomStdQty = ROUND(FNUMERATOR/FDENOMINATOR,3) + + FROM T_PRD_PPBOMENTRY a + inner join T_PRD_PPBOM b on a.fid=b.fid + inner join #temp2 c on c.Fname=b.FMOBILLNO + + WHERE FBomStdQty = 0 + --and b.FMOBILLNO = @FBILLNO + + +drop table #temp2 \ No newline at end of file diff --git a/07.珠海英搏尔/Enpower/PRD_MO/SQLserver/计划订单更新预测单信息新sql.sql b/07.珠海英搏尔/Enpower/PRD_MO/SQLserver/计划订单更新预测单信息新sql.sql new file mode 100644 index 0000000..3d68829 --- /dev/null +++ b/07.珠海英搏尔/Enpower/PRD_MO/SQLserver/计划订单更新预测单信息新sql.sql @@ -0,0 +1,179 @@ + SELECT + t0.FID --id + ,t0.FBILLNO + ,t2.FID 'FORECAST_ID' + ,t2e.FENTRYID 'FORECASTENTRY_ID' + ,t2.FBILLNO 'F_FORECASTNUMBER' + ,t2e.FSEQ 'F_LINENUMBER' + ,t2e.FCUSTID 'F_CUSTOMERNAME' + ,t2e.FMATERIALID 'F_MATERIALCODE' --Ԥⵥid + ,t2e.F_SOURCE_ORDER_LINE_NUMBER --۶к + ,t2e.F_SOURCE_ORDER_NUMBER --۶# + ,t0.F_REMARK + INTO #TEMP_PLANORDER_ID_LIST + FROM T_PLN_PLANORDER t0 + INNER JOIN T_PLN_RESERVELINKENTRY t1e ON t1e.FINTSUPPLYID = t0.FID + INNER JOIN T_PLN_RESERVELINK t1 ON t1.FID = t1e.FID + INNER JOIN T_PLN_FORECASTENTRY t2e ON t2e.FENTRYID = t1.FSRCENTRYID + INNER JOIN T_PLN_FORECAST t2 on t2.fid = t2e.FID + WHERE 1 = 1 + --AND t0.F_FORECASTNUMBER = '' + AND CONVERT(nvarchar(100),t0.FCREATEDATE,23) = '2024-01-18' + + CREATE INDEX #TEMP_PLANORDER_ID_LIST_INDEX_FID ON #TEMP_PLANORDER_ID_LIST(FID); + + SELECT + t0.FID --id + ,t0.FBILLNO + ,t0.FORECAST_ID + ,t0.FORECASTENTRY_ID + ,t0.F_FORECASTNUMBER + ,t0.F_LINENUMBER + ,t0.F_CUSTOMERNAME + ,t0.F_MATERIALCODE --Ԥⵥid + ,t0.F_SOURCE_ORDER_LINE_NUMBER --۶к + ,t0.F_SOURCE_ORDER_NUMBER --۶# + ,ISNULL(t1_l.FDESCRIPTION,'') AS F_DESCRIPTION + --,t1_l.FDESCRIPTION F_DESCRIPTION + ,ISNULL(t1e_l.FDESCRIPTION,'') AS F_REMARK --屸ע + --,t1e_l.FDESCRIPTION F_REMARK + ,t2.FNUMBER 'MATERIAL_NUMBER' + ,t2_l.FNAME 'MATERIAL_NAME' + ,t3.TOTAL + INTO #TEMP_PLANORDER_RESERVELINK + + FROM #TEMP_PLANORDER_ID_LIST t0 + INNER JOIN (SELECT FID,COUNT(1) TOTAL FROM #TEMP_PLANORDER_ID_LIST GROUP BY FID ) t3 on t3.FID = t0.FID + LEFT JOIN T_PLN_FORECAST_L t1_l on t0.FORECAST_ID = t1_l.FID AND t1_l.FLOCALEID = 2052 + LEFT JOIN T_PLN_FORECASTENTRY_L t1e_l on t1e_l.FENTRYID = t0.FORECASTENTRY_ID AND t1e_l.FLOCALEID = 2052 + LEFT JOIN T_BD_MATERIAL t2 on t0.F_MATERIALCODE = t2.FMATERIALID + LEFT JOIN T_BD_MATERIAL_L t2_l on t0.F_MATERIALCODE = t2_l.FMATERIALID + WHERE 1=1 + --AND t0.F_FORECASTNUMBER = '' + + CREATE INDEX #TEMP_PLANORDER_RESERVELINK_INDEX ON #TEMP_PLANORDER_RESERVELINK(FID); + + ----ƻ һԴ--- + --UPDATE t0 + --SET t0.F_FORECASTNUMBER = tt.F_FORECASTNUMBER + -- ,t0.F_LINENUMBER = tt.F_LINENUMBER + -- ,t0.F_CUSTOMERNAME = tt.F_CUSTOMERNAME + -- ,t0.F_MATERIALCODE = tt.F_MATERIALCODE + -- ,t0.F_REMARK = tt.F_REMARK + -- ,t0.F_MATERIALCODESHOW = tt.MATERIAL_NUMBER + -- ,t0.F_MATERIALNAMESHOW = tt.MATERIAL_NAME + --FROM T_PLN_PLANORDER t0 + -- INNER JOIN #TEMP_PLANORDER_RESERVELINK tt on t0.FID = tt.FID AND tt.TOTAL = 1 + + ----ƻչ һԴ--- + --UPDATE t0_l + --SET t0_l.F_DESCRIPTION = tt.F_DESCRIPTION + --FROM T_PLN_PLANORDER_L t0_l + -- INNER JOIN #TEMP_PLANORDER_RESERVELINK tt on t0_l.FID = tt.FID AND tt.TOTAL = 1 + + SELECT + t0.FID --id + ,t0.FBILLNO + ,t0.FORECAST_ID + ,t0.FORECASTENTRY_ID + ,t0.F_FORECASTNUMBER + ,DENSE_RANK() over(partition BY t0.FID order by t0.FORECAST_ID) 'FORECASTNUMBER_SEQ' + ,t0.F_LINENUMBER + ,ROW_NUMBER() over(partition BY t0.FID,t0.FORECAST_ID order by t0.F_LINENUMBER) 'LINENUMBER_SEQ' + ,t0.F_CUSTOMERNAME + ,t0.F_MATERIALCODE --Ԥⵥid + ,t0.F_SOURCE_ORDER_LINE_NUMBER --۶к + ,t0.F_SOURCE_ORDER_NUMBER --۶# + ,t0.F_REMARK + ,t0.F_DESCRIPTION + ,t0.MATERIAL_NUMBER + ,t0.MATERIAL_NAME + ,t0.TOTAL + ,DENSE_RANK() over(partition BY t0.FID order by t0.F_MATERIALCODE) 'DENSE_RANK_NUM' + INTO #TEMP_PLANORDER_RESERVELINK2 + FROM + #TEMP_PLANORDER_RESERVELINK t0 + WHERE 1 = 1 + AND TOTAL > 1 + ORDER BY FID + + CREATE INDEX #TEMP_PLANORDER_RESERVELINK2_INDEX ON #TEMP_PLANORDER_RESERVELINK2(FID); + + UPDATE t0 SET t0.F_MATERIALCODE = 0,t0.F_CUSTOMERNAME = 0 + FROM #TEMP_PLANORDER_RESERVELINK2 t0,(SELECT FID FROM #TEMP_PLANORDER_RESERVELINK2 WHERE DENSE_RANK_NUM = 2) t1 WHERE t0.FID = t1.FID + + SELECT + t0.FID + ,t0.FBILLNO + ,t0.FORECAST_ID + ,t0.F_FORECASTNUMBER + ,t0.F_DESCRIPTION + ,t0.F_MATERIALCODE + ,t0.F_CUSTOMERNAME + ,ISNULL(stuff((select ','+ CONVERT(nvarchar(100), tt.F_LINENUMBER) from #TEMP_PLANORDER_RESERVELINK2 tt where tt.FID=t0.FID and tt.FORECAST_ID = t0.FORECAST_ID for xml path('')),1,1,''),'') 'F_LINENUMBER' + ,ISNULL(stuff((select distinct ';'+ ISNULL(tt.F_REMARK,'') from #TEMP_PLANORDER_RESERVELINK2 tt where tt.FID=t0.FID and tt.FORECAST_ID = t0.FORECAST_ID for xml path('')),1,1,''),'') 'F_REMARK' + ,ISNULL(stuff((select distinct ','+ tt.MATERIAL_NUMBER from #TEMP_PLANORDER_RESERVELINK2 tt where tt.FID=t0.FID and tt.FORECAST_ID = t0.FORECAST_ID for xml path('')),1,1,''),'') 'MATERIAL_NUMBER' + ,ISNULL(stuff((select distinct ','+ tt.MATERIAL_NAME from #TEMP_PLANORDER_RESERVELINK2 tt where tt.FID=t0.FID and tt.FORECAST_ID = t0.FORECAST_ID for xml path('')),1,1,''),'') 'MATERIAL_NAME' + ,ISNULL(stuff((select distinct ','+ CONVERT(nvarchar(100), tt.F_SOURCE_ORDER_NUMBER) from #TEMP_PLANORDER_RESERVELINK2 tt where tt.FID=t0.FID and tt.FORECAST_ID = t0.FORECAST_ID for xml path('')),1,1,''),'') 'F_SOURCE_ORDER_NUMBER' + ,ISNULL(stuff((select distinct ','+ CONVERT(nvarchar(100), tt.F_SOURCE_ORDER_LINE_NUMBER) from #TEMP_PLANORDER_RESERVELINK2 tt where tt.FID=t0.FID and tt.FORECAST_ID = t0.FORECAST_ID for xml path('')),1,1,''),'') 'F_SOURCE_ORDER_LINE_NUMBER' + INTO #TEMP + FROM #TEMP_PLANORDER_RESERVELINK2 t0 + GROUP BY + t0.FID + ,t0.FBILLNO + ,t0.FORECAST_ID + ,t0.F_FORECASTNUMBER + ,t0.F_DESCRIPTION + ,t0.F_MATERIALCODE + ,t0.F_CUSTOMERNAME + CREATE INDEX #TEMP_INDEX ON #TEMP(FID); + + SELECT + t0.FID + ,t0.FBILLNO + ,t0.F_MATERIALCODE + ,t0.F_CUSTOMERNAME + ,ISNULL(stuff((select ';'+ CONVERT(nvarchar(100), tt.F_LINENUMBER) from #TEMP tt where tt.FID=t0.FID for xml path('')),1,1,''),'') 'F_LINENUMBER' + ,ISNULL(stuff((select ';'+ CONVERT(nvarchar(100), tt.F_FORECASTNUMBER) from #TEMP tt where tt.FID=t0.FID for xml path('')),1,1,''),'') 'F_FORECASTNUMBER' + ,ISNULL(stuff((select distinct ';' + tt.MATERIAL_NUMBER from #TEMP_PLANORDER_RESERVELINK2 tt where tt.FID=t0.FID for xml path('')),1,1,''),'') 'MATERIAL_NUMBER' + ,ISNULL(stuff((select distinct ';' + tt.MATERIAL_NAME from #TEMP_PLANORDER_RESERVELINK2 tt where tt.FID=t0.FID for xml path('')),1,1,''),'') 'MATERIAL_NAME' + ,ISNULL(stuff((select distinct ';' + tt.F_REMARK from #TEMP tt where tt.FID=t0.FID for xml path('')),1,1,''),'') 'F_REMARK' + ,ISNULL(stuff((select distinct ';' + ISNULL(tt.F_DESCRIPTION,'') from #TEMP tt where tt.FID = t0.FID for xml path('')),1,1,''),'') 'F_DESCRIPTION' + ,ISNULL(stuff((select distinct ';' + CONVERT(nvarchar(100), tt.F_SOURCE_ORDER_NUMBER) from #TEMP_PLANORDER_RESERVELINK2 tt where tt.FID=t0.FID for xml path('')),1,1,''),'') 'F_SOURCE_ORDER_NUMBER' + ,ISNULL(stuff((select distinct ';' + CONVERT(nvarchar(100), tt.F_SOURCE_ORDER_LINE_NUMBER) from #TEMP_PLANORDER_RESERVELINK2 tt where tt.FID=t0.FID for xml path('')),1,1,''),'') 'F_SOURCE_ORDER_LINE_NUMBER' + INTO #TEMP2 + FROM #TEMP t0 + --WHERE t0.fbillno ='MRP01679279' + GROUP BY + t0.FID + ,t0.FBILLNO + ,t0.F_MATERIALCODE + ,t0.F_CUSTOMERNAME + CREATE INDEX #TEMP2_INDEX ON #TEMP2(FID); + + --UPDATE #TEMP2 SET F_REMARK = '' WHERE F_REMARK = ';' + + ----ƻ-Դ-- + --UPDATE t0 + --SET t0.F_FORECASTNUMBER = tt.F_FORECASTNUMBER + -- ,t0.F_LINENUMBER = tt.F_LINENUMBER + -- ,t0.F_CUSTOMERNAME = tt.F_CUSTOMERNAME + -- ,t0.F_MATERIALCODE = tt.F_MATERIALCODE + -- ,t0.F_REMARK = tt.F_REMARK + -- ,t0.F_MATERIALCODESHOW = tt.MATERIAL_NUMBER + -- ,t0.F_MATERIALNAMESHOW = tt.MATERIAL_NAME + --FROM T_PLN_PLANORDER t0 + -- INNER JOIN #TEMP2 tt on t0.FID = tt.FID --AND tt.TOTAL = 1 + + ----ƻչ-Դ-- + --UPDATE t0_l + --SET t0_l.F_DESCRIPTION = tt.F_DESCRIPTION + --FROM T_PLN_PLANORDER_L t0_l + -- INNER JOIN #TEMP2 tt on t0_l.FID = tt.FID --AND tt.TOTAL = 1 + + SELECT * FROM #TEMP2 + DROP TABLE #TEMP + DROP TABLE #TEMP2 + DROP TABLE #TEMP_PLANORDER_ID_LIST + DROP TABLE #TEMP_PLANORDER_RESERVELINK + DROP TABLE #TEMP_PLANORDER_RESERVELINK2 \ No newline at end of file diff --git a/07.珠海英搏尔/Enpower/Properties/AssemblyInfo.cs b/07.珠海英搏尔/Enpower/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..7d85e53 --- /dev/null +++ b/07.珠海英搏尔/Enpower/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的一般信息由以下 +// 控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("Enpower")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Enpower")] +[assembly: AssemblyCopyright("Copyright © 2024")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 会使此程序集中的类型 +//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 +//请将此类型的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("afef4e4d-92e3-4f04-9f19-ed01c0b2f24a")] + +// 程序集的版本信息由下列四个值组成: +// +// 主版本 +// 次版本 +// 生成号 +// 修订号 +// +//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 +//通过使用 "*",如下所示: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/08.昶东/EastChanger.Python/STK_StockCountGain/ListEventPlugInEx.py b/08.昶东/EastChanger.Python/STK_StockCountGain/ListEventPlugInEx.py index e69de29..4295394 100644 --- a/08.昶东/EastChanger.Python/STK_StockCountGain/ListEventPlugInEx.py +++ b/08.昶东/EastChanger.Python/STK_StockCountGain/ListEventPlugInEx.py @@ -0,0 +1,35 @@ +import clr +clr.AddReference("System") +clr.AddReference("System.Core") +clr.AddReference("Kingdee.BOS") +clr.AddReference("Kingdee.BOS.Core") +clr.AddReference("EastChanger") + +from System import * +from System.Linq import * +from System.Collections.Generic import List +from System.ComponentModel import * +from Kingdee.BOS import* +from Kingdee.BOS.Util import* +from Kingdee.BOS.Core.DynamicForm import* +from Kingdee.BOS.Core.DynamicForm.PlugIn.Args import* +from Kingdee.BOS.Core.List.PlugIn import* +from Kingdee.BOS.Core.List import * +from EastChanger.STK_StockCountGain import* + + +def BarItemClick(e): + if e.BarItemKey.Equals("InventoryProfit"): + sellist = this.ListView.SelectedRowsInfo + if sellist == None or sellist.Count == 0: + this.View.ShowErrMessage("ѡҪͬĵ"); + return + opResult = OperationResult() + + fidList = List[str](set(map(lambda x:x.PrimaryKeyValue ,sellist))) + + service = STKStockCountGainService(this.Context) + # raise Exception(str(type(fidList))) + service.HandleSyncData(fidList, opResult, 0) + if opResult.OperateResult.Count > 0: + this.View.ShowOperateResult(opResult.OperateResult) \ No newline at end of file diff --git a/08.昶东/EastChanger.Python/STK_StockCountLoss/ListEventPlugInEx.py b/08.昶东/EastChanger.Python/STK_StockCountLoss/ListEventPlugInEx.py index c0a0456..349111f 100644 --- a/08.昶东/EastChanger.Python/STK_StockCountLoss/ListEventPlugInEx.py +++ b/08.昶东/EastChanger.Python/STK_StockCountLoss/ListEventPlugInEx.py @@ -14,12 +14,13 @@ from Kingdee.BOS.Util import* from Kingdee.BOS.Core.DynamicForm import* from Kingdee.BOS.Core.DynamicForm.PlugIn.Args import* from Kingdee.BOS.Core.List.PlugIn import* +from Kingdee.BOS.Core.List import * from EastChanger.STK_StockCountLoss import* def BarItemClick(e): - if e.BarItemKey.Equals("InventoryProfit"): + if e.BarItemKey.Equals("InventoryLoss"): sellist = this.ListView.SelectedRowsInfo - if sellist != None and sellist.Any(): + if sellist == None or sellist.Count == 0: this.View.ShowErrMessage("ѡҪͬĵ"); return opResult = OperationResult() @@ -28,6 +29,6 @@ def BarItemClick(e): service = STKStockCountLossService(this.Context) # raise Exception(str(type(fidList))) - # service.HandleSyncData(fidList, opResult, 0) - # if opResult.OperateResult.Count > 0: - # this.View.ShowOperateResult(opResult.OperateResult) \ No newline at end of file + service.HandleSyncData(fidList, opResult, 0) + if opResult.OperateResult.Count > 0: + this.View.ShowOperateResult(opResult.OperateResult) \ No newline at end of file diff --git a/08.昶东/EastChanger/EastChanger.csproj b/08.昶东/EastChanger/EastChanger.csproj index 9e7af6c..cbb891e 100644 --- a/08.昶东/EastChanger/EastChanger.csproj +++ b/08.昶东/EastChanger/EastChanger.csproj @@ -51,7 +51,7 @@ False - ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Newtonsoft.Json.dll + ..\..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Newtonsoft.Json.dll diff --git a/GateDge2023.sln b/GateDge2023.sln index 843c616..b3ed83a 100644 --- a/GateDge2023.sln +++ b/GateDge2023.sln @@ -62,14 +62,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UseGetFmaterialData", "02. EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MonthlyProductionSchedule", "04.天大药业(珠海)有限公司\MonthlyProductionSchedule\MonthlyProductionSchedule.csproj", "{548EE4F5-AFFE-425F-B1A7-4552902F12A6}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TNMB.PUR_RPT_POOrderTrace", "06.泰诺麦博\TNMB.PUR_RPT_POOrderTrace\TNMB.PUR_RPT_POOrderTrace.csproj", "{BCC79C5A-0154-4484-981E-13B7A4FFB4D3}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Trinomab.PUR_RPT_POOrderTrace", "06.泰诺麦博\Trinomab.PUR_RPT_POOrderTrace\Trinomab.PUR_RPT_POOrderTrace.csproj", "{9E2DDD7F-02EE-4BDF-A696-4CC6D310FEAD}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Enpower.PRD_MO", "07.珠海英搏尔\Enpower.PRD_MO\Enpower.PRD_MO.csproj", "{D0FC5BEC-2362-48BD-90A5-EDE6BA3D3073}" -EndProject -Project("{888888A0-9F3D-457C-B088-3A5042F75D52}") = "Enpower.PRD_MO.Python", "07.珠海英搏尔\Enpower.PRD_MO.Python\Enpower.PRD_MO.Python.pyproj", "{EC6EC8C7-D066-4235-81EE-67D6F83B0330}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HW.PRD_MO", "03.珠海市汇威精密制造有限公司\HW.PRD_MO\HW.PRD_MO.csproj", "{3134279E-5C1B-421C-9E2D-5013D599FA53}" EndProject Project("{888888A0-9F3D-457C-B088-3A5042F75D52}") = "HW.PRD_MO.Python", "03.珠海市汇威精密制造有限公司\HW.PRD_MO.Python\HW.PRD_MO.Python.pyproj", "{63FA856A-E38D-4464-A164-11EED1DFE0F8}" @@ -86,6 +78,24 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTestProject2", "00.未 EndProject Project("{888888A0-9F3D-457C-B088-3A5042F75D52}") = "HW.PRD_LackAnalyeBill.Python", "03.珠海市汇威精密制造有限公司\HW.PRD_LackAnalyeBill.Python\HW.PRD_LackAnalyeBill.Python.pyproj", "{0BC2F871-B50D-41C3-9267-ABDE125D9B17}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HW.PRD_LACKANAYLEBILL", "03.珠海市汇威精密制造有限公司\HW.PRD_LACKANAYLEBILL\HW.PRD_LACKANAYLEBILL.csproj", "{B6FD6277-A4DA-4FAC-BDA9-841D51E3D57F}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CYG", "05.长园\CYG\CYG.csproj", "{2F638D52-C946-4F1B-89A1-ADB47D5FDBD9}" +EndProject +Project("{888888A0-9F3D-457C-B088-3A5042F75D52}") = "CYG.Python", "05.长园\CYG.Python\CYG.Python.pyproj", "{62BC7EFA-7E95-4593-A146-8A6AC44278FB}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Trinomab", "06.泰诺麦博\Trinomab\Trinomab.csproj", "{45C22F98-7AAC-465E-B8BB-81A1A320D00A}" +EndProject +Project("{888888A0-9F3D-457C-B088-3A5042F75D52}") = "Trinomab.Python", "06.泰诺麦博\Trinomab.Python\Trinomab.Python.pyproj", "{F1E2602E-2506-41B1-B696-4ED18316CB07}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZHSW", "02.珠海市供水有限公司\ZHSW\ZHSW.csproj", "{BF093890-EBF9-485C-A92E-49264B810108}" +EndProject +Project("{888888A0-9F3D-457C-B088-3A5042F75D52}") = "ZHSW.Python", "02.珠海市供水有限公司\ZHSW.Python\ZHSW.Python.pyproj", "{0EFB3769-37F2-4D7A-9EFF-4C1CB749475C}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Enpower", "07.珠海英搏尔\Enpower\Enpower.csproj", "{AFEF4E4D-92E3-4F04-9F19-ED01C0B2F24A}" +EndProject +Project("{888888A0-9F3D-457C-B088-3A5042F75D52}") = "Enpower.Python", "07.珠海英搏尔\Enpower.Python\Enpower.Python.pyproj", "{E16A75BC-5FB5-47FC-962D-4AD20E686D59}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -156,20 +166,6 @@ Global {548EE4F5-AFFE-425F-B1A7-4552902F12A6}.Debug|Any CPU.Build.0 = Debug|Any CPU {548EE4F5-AFFE-425F-B1A7-4552902F12A6}.Release|Any CPU.ActiveCfg = Release|Any CPU {548EE4F5-AFFE-425F-B1A7-4552902F12A6}.Release|Any CPU.Build.0 = Release|Any CPU - {BCC79C5A-0154-4484-981E-13B7A4FFB4D3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {BCC79C5A-0154-4484-981E-13B7A4FFB4D3}.Debug|Any CPU.Build.0 = Debug|Any CPU - {BCC79C5A-0154-4484-981E-13B7A4FFB4D3}.Release|Any CPU.ActiveCfg = Release|Any CPU - {BCC79C5A-0154-4484-981E-13B7A4FFB4D3}.Release|Any CPU.Build.0 = Release|Any CPU - {9E2DDD7F-02EE-4BDF-A696-4CC6D310FEAD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9E2DDD7F-02EE-4BDF-A696-4CC6D310FEAD}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9E2DDD7F-02EE-4BDF-A696-4CC6D310FEAD}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9E2DDD7F-02EE-4BDF-A696-4CC6D310FEAD}.Release|Any CPU.Build.0 = Release|Any CPU - {D0FC5BEC-2362-48BD-90A5-EDE6BA3D3073}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D0FC5BEC-2362-48BD-90A5-EDE6BA3D3073}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D0FC5BEC-2362-48BD-90A5-EDE6BA3D3073}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D0FC5BEC-2362-48BD-90A5-EDE6BA3D3073}.Release|Any CPU.Build.0 = Release|Any CPU - {EC6EC8C7-D066-4235-81EE-67D6F83B0330}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {EC6EC8C7-D066-4235-81EE-67D6F83B0330}.Release|Any CPU.ActiveCfg = Release|Any CPU {3134279E-5C1B-421C-9E2D-5013D599FA53}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {3134279E-5C1B-421C-9E2D-5013D599FA53}.Debug|Any CPU.Build.0 = Debug|Any CPU {3134279E-5C1B-421C-9E2D-5013D599FA53}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -196,6 +192,34 @@ Global {3F9DAEFD-D6AF-4FA8-B6B2-485832AB9B26}.Release|Any CPU.Build.0 = Release|Any CPU {0BC2F871-B50D-41C3-9267-ABDE125D9B17}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {0BC2F871-B50D-41C3-9267-ABDE125D9B17}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B6FD6277-A4DA-4FAC-BDA9-841D51E3D57F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B6FD6277-A4DA-4FAC-BDA9-841D51E3D57F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B6FD6277-A4DA-4FAC-BDA9-841D51E3D57F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B6FD6277-A4DA-4FAC-BDA9-841D51E3D57F}.Release|Any CPU.Build.0 = Release|Any CPU + {2F638D52-C946-4F1B-89A1-ADB47D5FDBD9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2F638D52-C946-4F1B-89A1-ADB47D5FDBD9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2F638D52-C946-4F1B-89A1-ADB47D5FDBD9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2F638D52-C946-4F1B-89A1-ADB47D5FDBD9}.Release|Any CPU.Build.0 = Release|Any CPU + {62BC7EFA-7E95-4593-A146-8A6AC44278FB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {62BC7EFA-7E95-4593-A146-8A6AC44278FB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {45C22F98-7AAC-465E-B8BB-81A1A320D00A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {45C22F98-7AAC-465E-B8BB-81A1A320D00A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {45C22F98-7AAC-465E-B8BB-81A1A320D00A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {45C22F98-7AAC-465E-B8BB-81A1A320D00A}.Release|Any CPU.Build.0 = Release|Any CPU + {F1E2602E-2506-41B1-B696-4ED18316CB07}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F1E2602E-2506-41B1-B696-4ED18316CB07}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BF093890-EBF9-485C-A92E-49264B810108}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BF093890-EBF9-485C-A92E-49264B810108}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BF093890-EBF9-485C-A92E-49264B810108}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BF093890-EBF9-485C-A92E-49264B810108}.Release|Any CPU.Build.0 = Release|Any CPU + {0EFB3769-37F2-4D7A-9EFF-4C1CB749475C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0EFB3769-37F2-4D7A-9EFF-4C1CB749475C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AFEF4E4D-92E3-4F04-9F19-ED01C0B2F24A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AFEF4E4D-92E3-4F04-9F19-ED01C0B2F24A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AFEF4E4D-92E3-4F04-9F19-ED01C0B2F24A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AFEF4E4D-92E3-4F04-9F19-ED01C0B2F24A}.Release|Any CPU.Build.0 = Release|Any CPU + {E16A75BC-5FB5-47FC-962D-4AD20E686D59}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E16A75BC-5FB5-47FC-962D-4AD20E686D59}.Release|Any CPU.ActiveCfg = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -220,10 +244,6 @@ Global {C7AACA24-410B-4497-8400-EAF0A81C2133} = {F03B5F75-6DCD-4FF8-989F-403C5EA0AA5B} {7014B4E2-94AC-430F-BD20-72BA2BA6EBA3} = {F03B5F75-6DCD-4FF8-989F-403C5EA0AA5B} {548EE4F5-AFFE-425F-B1A7-4552902F12A6} = {A362AFBC-FC73-46A6-9185-15C17E694538} - {BCC79C5A-0154-4484-981E-13B7A4FFB4D3} = {0C4E3DC3-F1FA-4BD7-8D81-BF5EFD452A51} - {9E2DDD7F-02EE-4BDF-A696-4CC6D310FEAD} = {0C4E3DC3-F1FA-4BD7-8D81-BF5EFD452A51} - {D0FC5BEC-2362-48BD-90A5-EDE6BA3D3073} = {CAE5A042-7B8F-49E7-8510-4B93DA85D6D8} - {EC6EC8C7-D066-4235-81EE-67D6F83B0330} = {CAE5A042-7B8F-49E7-8510-4B93DA85D6D8} {3134279E-5C1B-421C-9E2D-5013D599FA53} = {42311C80-7B4C-4353-BCA9-4ABD024290C8} {63FA856A-E38D-4464-A164-11EED1DFE0F8} = {42311C80-7B4C-4353-BCA9-4ABD024290C8} {89236B39-F2B6-4757-AB69-DF89FDBCE3A5} = {42311C80-7B4C-4353-BCA9-4ABD024290C8} @@ -232,6 +252,15 @@ Global {17EF8474-392A-4595-A4D4-D224F16AF8C4} = {42311C80-7B4C-4353-BCA9-4ABD024290C8} {3F9DAEFD-D6AF-4FA8-B6B2-485832AB9B26} = {2217EA0E-E53F-4ECC-A49D-F38BC743F47A} {0BC2F871-B50D-41C3-9267-ABDE125D9B17} = {42311C80-7B4C-4353-BCA9-4ABD024290C8} + {B6FD6277-A4DA-4FAC-BDA9-841D51E3D57F} = {42311C80-7B4C-4353-BCA9-4ABD024290C8} + {2F638D52-C946-4F1B-89A1-ADB47D5FDBD9} = {270F576A-EFFF-4728-8E5C-ABDF5C3F3C8B} + {62BC7EFA-7E95-4593-A146-8A6AC44278FB} = {270F576A-EFFF-4728-8E5C-ABDF5C3F3C8B} + {45C22F98-7AAC-465E-B8BB-81A1A320D00A} = {0C4E3DC3-F1FA-4BD7-8D81-BF5EFD452A51} + {F1E2602E-2506-41B1-B696-4ED18316CB07} = {0C4E3DC3-F1FA-4BD7-8D81-BF5EFD452A51} + {BF093890-EBF9-485C-A92E-49264B810108} = {F03B5F75-6DCD-4FF8-989F-403C5EA0AA5B} + {0EFB3769-37F2-4D7A-9EFF-4C1CB749475C} = {F03B5F75-6DCD-4FF8-989F-403C5EA0AA5B} + {AFEF4E4D-92E3-4F04-9F19-ED01C0B2F24A} = {CAE5A042-7B8F-49E7-8510-4B93DA85D6D8} + {E16A75BC-5FB5-47FC-962D-4AD20E686D59} = {CAE5A042-7B8F-49E7-8510-4B93DA85D6D8} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {16F7DBDD-F487-41D6-A856-9E9B7B3F61C5} diff --git a/Trinomab.Python/Trinomab.Python.pyproj b/Trinomab.Python/Trinomab.Python.pyproj new file mode 100644 index 0000000..4be9b9b --- /dev/null +++ b/Trinomab.Python/Trinomab.Python.pyproj @@ -0,0 +1,33 @@ + + + Debug + 2.0 + f1e2602e-2506-41b1-b696-4ed18316cb07 + . + + + + + . + . + Trinomab.Python + Trinomab.Python + + + true + false + + + true + false + + + + + + + + + \ No newline at end of file diff --git a/宝锐_更新富余量.sql b/宝锐_更新富余量.sql new file mode 100644 index 0000000..54e851d --- /dev/null +++ b/宝锐_更新富余量.sql @@ -0,0 +1,37 @@ +--UPDATE t1e SET t1e.F_UHIK_QTY_RE5 = t0e.FMOREQTYBASE +SELECT t0e.FENTRYID + ,t0e.FMOREQTYBASE + ,t1e.F_UHIK_QTY_RE5 + ,t1e.FENTRYID AS '˻֪ͨ' + ,DENSE_RANK() OVER (PARTITION BY t0e.FENTRYID ORDER BY t1e.FENTRYID DESC) +FROM T_SAL_OUTSTOCKENTRY t0e + INNER JOIN T_SAL_RETURNNOTICEENTRY_LK t1e_lk on t0e.FID = t1e_lk.FSBILLID AND t0e.FENTRYID = t1e_lk.FSID AND t1e_lk.FSTABLENAME = 'T_SAL_OUTSTOCKENTRY' + INNER JOIN T_SAL_RETURNNOTICEENTRY t1e on t1e.FENTRYID = t1e_lk.FENTRYID +WHERE t0e.FMOREQTYBASE != 0 + +--UPDATE t2e SET t2e.F_UHIK_QTY_QTR = t0e.FMOREQTYBASE +SELECT t0e.FENTRYID + ,t0e.FMOREQTYBASE + ,t1e.F_UHIK_QTY_RE5 + ,t2e.F_UHIK_QTY_QTR + ,t1e.FENTRYID AS '˻֪ͨ' + ,DENSE_RANK() OVER (PARTITION BY t0e.FENTRYID ORDER BY t1e.FENTRYID DESC) + ,t2e.FENTRYID AS '˻' + ,ROW_NUMBER() OVER (PARTITION BY t1e.FENTRYID ORDER BY t2e.FENTRYID DESC) +FROM T_SAL_OUTSTOCKENTRY t0e + INNER JOIN T_SAL_RETURNNOTICEENTRY_LK t1e_lk on t0e.FID = t1e_lk.FSBILLID AND t0e.FENTRYID = t1e_lk.FSID AND t1e_lk.FSTABLENAME = 'T_SAL_OUTSTOCKENTRY' + INNER JOIN T_SAL_RETURNNOTICEENTRY t1e on t1e.FENTRYID = t1e_lk.FENTRYID + INNER JOIN T_SAL_RETURNSTOCKENTRY_LK t2e_lk on t1e.FID = t2e_lk.FSBILLID AND t1e.FENTRYID = t2e_lk.FSID AND t2e_lk.FSTABLENAME = 'T_SAL_RETURNNOTICEENTRY' + INNER JOIN T_SAL_RETURNSTOCKENTRY t2e on t2e_lk.FENTRYID = t2e.FENTRYID +WHERE t0e.FMOREQTYBASE != 0 + + +UPDATE t0e SET t0e.F_UHIK_QTY_QTR = (CASE WHEN t0e.FBASEUNITID = 109724 AND t0e_f.FSALUNITID = 109592 THEN t0e.FMOREQTY * 1000 ELSE t0e.FMOREQTY END) +--SELECT t0e.FBASEUNITID,t2.FNUMBER 'λ',t0e.F_UHIK_QTY_QTR +-- ,t0e_f.FSALUNITID,t1.FNUMBER '',t0e.FMOREQTY +-- ,(CASE WHEN t0e.FBASEUNITID = 109724 AND t0e_f.FSALUNITID = 109592 THEN t0e.FMOREQTY * 1000 ELSE t0e.FMOREQTY END) +FROM T_SAL_RETURNSTOCKENTRY t0e + INNER JOIN T_SAL_RETURNSTOCKENTRY_F t0e_f on t0e.FENTRYID = t0e_f.FENTRYID + INNER JOIN T_BD_UNIT t1 on t1.FUNITID = t0e_f.FSALUNITID + INNER JOIN T_BD_UNIT t2 on t2.FUNITID = t0e.FBASEUNITID +WHERE t0e.FMOREQTY != 0 AND F_UHIK_QTY_QTR = 0 \ No newline at end of file