From f3eae0a034275fe1e8f0dbd515ad43fab5f2f16b Mon Sep 17 00:00:00 2001 From: PastSaid <603806070@qq.com> Date: Mon, 8 Jan 2024 10:58:24 +0800 Subject: [PATCH] a --- GateDge2023.sln | 2 +- .../AutoRecordsInventoryPlugIn.cs | 6 +- .../BarItemClickEventPlugIn.cs | 25 +- .../MonthlyProductionSchedule.csproj | 11 +- MonthlyProductionSchedule/Policy.cs | 130 ------- .../完成/3.存储过程_生产计划_查询即时数据.sql | 17 +- .../完成/4.存储过程_生产计划_查询.sql | 10 +- .../完成/5.存储过程_生产计划表_insert.sql | 23 +- .../完成/8.存储过程_生产计划表_数据保存前检查.sql | 65 ++++ ...义函数.sql => 自定义函数-生产计划-包装规格换算.sql} | 4 +- .../完成/自定义函数-返回两位小数.sql | 6 + .../生产计划表2.0/查询_生产计划数据.sql | 23 +- .../UpdatePlanOrderCustInfoPolicyEx .cs | 68 ++++ ProductionMaterialsReport/Class1.cs | 12 - ...oj => HW.ProductionMaterialsReport.csproj} | 35 +- .../ProductionMaterialsReportEx.cs | 362 ++++++++++++++++++ .../SqlServer/SQLQuery5.sql | 21 + .../SqlServer/仓库值.sql | 12 + .../SqlServer/存储过程-生产用料清单.sql | 96 +++++ .../SqlServer/生产用料清单.sql | 179 ++++++--- .../SqlServer/获取产品类型.sql | 13 + .../SqlServer/获取单据状态.sql | 15 + .../POOrderTraceServiceEx.cs | 4 +- 23 files changed, 904 insertions(+), 235 deletions(-) delete mode 100644 MonthlyProductionSchedule/Policy.cs create mode 100644 MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/8.存储过程_生产计划表_数据保存前检查.sql rename MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/{自定义函数.sql => 自定义函数-生产计划-包装规格换算.sql} (58%) create mode 100644 MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/自定义函数-返回两位小数.sql create mode 100644 MonthlyProductionSchedule/UpdatePlanOrderCustInfoPolicyEx .cs delete mode 100644 ProductionMaterialsReport/Class1.cs rename ProductionMaterialsReport/{ProductionMaterialsReport.csproj => HW.ProductionMaterialsReport.csproj} (54%) create mode 100644 ProductionMaterialsReport/ProductionMaterialsReportEx.cs create mode 100644 ProductionMaterialsReport/SqlServer/SQLQuery5.sql create mode 100644 ProductionMaterialsReport/SqlServer/仓库值.sql create mode 100644 ProductionMaterialsReport/SqlServer/存储过程-生产用料清单.sql create mode 100644 ProductionMaterialsReport/SqlServer/获取产品类型.sql create mode 100644 ProductionMaterialsReport/SqlServer/获取单据状态.sql diff --git a/GateDge2023.sln b/GateDge2023.sln index e5a3e8b..a182d87 100644 --- a/GateDge2023.sln +++ b/GateDge2023.sln @@ -42,7 +42,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "生产投料单", "生产 生产投料单-1.sql = 生产投料单-1.sql EndProjectSection EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProductionMaterialsReport", "ProductionMaterialsReport\ProductionMaterialsReport.csproj", "{49AF92F2-2DCF-42F4-AB29-12298575D803}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HW.ProductionMaterialsReport", "ProductionMaterialsReport\HW.ProductionMaterialsReport.csproj", "{49AF92F2-2DCF-42F4-AB29-12298575D803}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CY.CB_PROACNTGROUP", "CY.CB_PROACNTGROUP\CY.CB_PROACNTGROUP.csproj", "{5A26AFF4-AE8C-43A3-8C60-BBA153DAE608}" EndProject diff --git a/MonthlyProductionSchedule/AutoRecordsInventoryPlugIn.cs b/MonthlyProductionSchedule/AutoRecordsInventoryPlugIn.cs index c11e0f0..0accc70 100644 --- a/MonthlyProductionSchedule/AutoRecordsInventoryPlugIn.cs +++ b/MonthlyProductionSchedule/AutoRecordsInventoryPlugIn.cs @@ -24,9 +24,11 @@ namespace MonthlyProductionSchedule try { - var executeDay = schedule.Parameters.IsEmpty() ? 20 : schedule.Parameters.Long2Int(); + var executeDay = schedule.Parameters.Long2Int(); + if (executeDay == 0) + executeDay = 20; - if(executeDay > 28) + if (executeDay > 28) executeDay = DateTime.Now.AddDays(1 - DateTime.Now.Day).Date.AddMonths(1).AddSeconds(-1).Day; var newDate = DateTime.Now; diff --git a/MonthlyProductionSchedule/BarItemClickEventPlugIn.cs b/MonthlyProductionSchedule/BarItemClickEventPlugIn.cs index 88ee542..1794675 100644 --- a/MonthlyProductionSchedule/BarItemClickEventPlugIn.cs +++ b/MonthlyProductionSchedule/BarItemClickEventPlugIn.cs @@ -29,7 +29,7 @@ namespace MonthlyProductionSchedule base.ButtonClick(e); if (e.Key.EqualsIgnoreCase("FSaveDataButton")) { - this.View.ShowMessage("生成数据会覆盖当月历史数据,是否继续?", MessageBoxOptions.OKCancel, new Action(result => + this.View.ShowMessage("生成数据会覆盖该月历史数据,是否继续?", MessageBoxOptions.OKCancel, new Action(result => { if (result == MessageBoxResult.OK) { @@ -44,8 +44,7 @@ namespace MonthlyProductionSchedule var startDate = date.ToString("yyyy-MM-dd"); var endDate = date.AddMonths(1).AddDays(-1).ToString("yyyy-MM-dd"); var tableName = this.SysReportView.Model.DataSource.TableName; - //para.Add(new SqlParam("@tableName", KDDbType.String, tableName)); - //para.Add(new SqlParam("@FRECORDDATE", KDDbType.DateTime, System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"))); + var para = new List(); para.Add(new SqlParam("@STARTDATE", KDDbType.Date, startDate)); para.Add(new SqlParam("@ENDDATE", KDDbType.Date, endDate)); @@ -53,6 +52,17 @@ namespace MonthlyProductionSchedule para.Add(new SqlParam("@MONTH", KDDbType.Int64, month)); para.Add(new SqlParam("@DAY", KDDbType.Int64, 20)); para.Add(new SqlParam("@LCID", KDDbType.Int64, this.Context.UserLocale.LCID)); + //var scheduleId = "65967bf69b80ca";//天大正式 + //scheduleId = "658e1974b04f4f"//天大测试 + //scheduleId = "657BF589F52174";//本地 + var sql = $@" EXEC PROC_SAVE_PLANPLMRPT_BEFORE_CHECK '{startDate}' ,'{endDate}' ,{year} ,{month} "; + var dataSet = DBUtils.ExecuteDynamicObject(this.Context, $"/*dialect*/{sql}"); + + if (dataSet.IsEmpty()) + throw new Exception("检测结果未知,请联系管理员!"); + + if (dataSet[0]["code"].Long2Int() == -1) + throw new Exception(dataSet[0]["msg"].ToString()); var res = DBUtils.ExecuteStoreProcedure(this.Context, "PROC_SAVE_PLANPLMRPT_DATA", para); @@ -62,14 +72,7 @@ namespace MonthlyProductionSchedule } catch (Exception ex) { - if (ex.Message.Contains("不能将值 NULL 插入列")) - { - this.View.ShowErrMessage("库存记录信息未记录!"); - } - else - { - this.View.ShowErrMessage(ex.Message); - } + this.View.ShowErrMessage(ex.Message); } } })); diff --git a/MonthlyProductionSchedule/MonthlyProductionSchedule.csproj b/MonthlyProductionSchedule/MonthlyProductionSchedule.csproj index 2b5e41b..295d1a3 100644 --- a/MonthlyProductionSchedule/MonthlyProductionSchedule.csproj +++ b/MonthlyProductionSchedule/MonthlyProductionSchedule.csproj @@ -73,6 +73,10 @@ ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.K3.SCM.Stock.Report.PlugIn.dll + + False + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Newtonsoft.Json.dll + @@ -84,7 +88,7 @@ - + @@ -97,13 +101,16 @@ + + + - + diff --git a/MonthlyProductionSchedule/Policy.cs b/MonthlyProductionSchedule/Policy.cs deleted file mode 100644 index aa0abe0..0000000 --- a/MonthlyProductionSchedule/Policy.cs +++ /dev/null @@ -1,130 +0,0 @@ -using Kingdee.BOS; -using Kingdee.BOS.Core.Metadata; -using Kingdee.BOS.Orm.DataEntity; -using Kingdee.BOS.ServiceHelper; -using Kingdee.K3.Core.MFG; -using System; -using System.Collections.Generic; -using System.Data; -using System.Linq; -using System.Text; - -namespace Kingdee.K3.MFG.PLN.App.MrpModel.PolicyImpl.NetCalc -{ - /// - /// MRP运算将产生的计划订单或组织间需求单数据提交保存前更新数据策略 - /// - [MrpProgressItem("P0033", "30")] - public class UpdateData : AbstractNetCalcPolicy - { - - /// - /// 后置策略:单条执行模式 - /// - public override Enu_NetCalcPolicyCallStyle CallStyle - { - get { return Enu_NetCalcPolicyCallStyle.KdLastSingleExecutionMode; } - } - - /// - /// 策略执行前事件 - /// - /// - protected override bool BeforeExecuteDataPolicy() - { - foreach (var demandGroupRow in this.MrpDemandDimContext.MrpNetDemandContextGroupRows) - { - if (demandGroupRow.PlanOrderItem != null) - { - ///TODO:本分支可对计划订单数据在提交保存前进行干预 - - #region 更新确认投放时间 - string MaterialId_Id = Convert.ToString(demandGroupRow.PlanOrderItem["MaterialId_Id"]); - FormMetadata FMaterial = MetaDataServiceHelper.Load(this.Context, "BD_MATERIAL", true) as FormMetadata; - DynamicObject FMaterialId = BusinessDataServiceHelper.LoadSingle(this.Context, MaterialId_Id, FMaterial.BusinessInfo.GetDynamicObjectType(), null); - DynamicObjectCollection MaterialPlan = FMaterialId["MaterialPlan"] as DynamicObjectCollection; - string FixLeadTime = Convert.ToString(MaterialPlan[0]["FixLeadTime"]); - string FPlanFinishDate = Convert.ToString(demandGroupRow.PlanOrderItem["PlanFinishDate"]); - demandGroupRow.PlanOrderItem["F_UKUB_LeadDate"] = Convert.ToDateTime(FPlanFinishDate).AddDays(-1 * Convert.ToDouble(FixLeadTime)); - #endregion - - - #region 更新销售订单/行号 - string FSaleOrderNo = Convert.ToString(demandGroupRow.PlanOrderItem["SaleOrderNo"]); - //声明SQL语句,获取预测单信息 - string sql = string.Format(@"/*dialect*/ select FSaleNoRow from T_PLN_FORECAST a - INNER JOIN T_PLN_FORECASTENTRY B ON A.FID = B.FID where FBILLNO = @FBILLNO"); - //定义SQL参数 - SqlParam[] param = new SqlParam[1]; - //添加需求单号参数 - param[0] = new SqlParam("@FBILLNO", KDDbType.String, FSaleOrderNo); - //执行SQL语句 - DynamicObjectCollection dr = DBServiceHelper.ExecuteDynamicObject(this.Context, sql.ToString(), null, null, CommandType.Text, param); - if (dr.Count > 0) - { - demandGroupRow.PlanOrderItem["FSaleNoRow"] = dr[0]["FSaleNoRow"]; - } - #endregion - - - - //string FSaleOrderNo = Convert.ToString(demandGroupRow.PlanOrderItem["SaleOrderNo"]); - ////声明SQL语句,获取预测单信息 - //string sql = string.Format(@"/*dialect*/ select FBILLTYPEID from T_PLN_FORECAST a - //INNER JOIN T_PLN_FORECASTENTRY B ON A.FID = B.FID where FBILLNO = @FBILLNO"); - ////定义SQL参数 - //SqlParam[] param = new SqlParam[1]; - ////添加需求单号参数 - //param[0] = new SqlParam("@FBILLNO", KDDbType.String, FSaleOrderNo); - ////执行SQL语句 - //DynamicObjectCollection dr = DBServiceHelper.ExecuteDynamicObject(this.Context, sql.ToString(), null, null, CommandType.Text, param); - //if (dr.Count > 0) - //{ - // if (Convert.ToString(dr[0]["FBILLTYPEID"]) == "637c89c0168c79") - // { - // demandGroupRow.PlanOrderItem["ReleaseType"] = 3; - // demandGroupRow.PlanOrderItem["ReleaseBillType"] = "CGSQD05_SYS"; - // } - //} - - //demandGroupRow.PlanOrderItem["ReleaseType"] = 3; - //DynamicObjectCollection PLSubHead = demandGroupRow.PlanOrderItem["PLSubHead"] as DynamicObjectCollection; - - //FormMetadata BOS_BillType = MetaDataServiceHelper.Load(this.Context, "BOS_BillType", true) as FormMetadata; - //DynamicObject BillType = BusinessDataServiceHelper.LoadSingle(this.Context, "03c6c047c65c4a17a792f85dcf3cabec", BOS_BillType.BusinessInfo.GetDynamicObjectType(), null); - - - //(demandGroupRow.PlanOrderItem["PLSubHead"] as DynamicObjectCollection)[0]["ReleaseBillType_Id"] = "03c6c047c65c4a17a792f85dcf3cabec"; - //(demandGroupRow.PlanOrderItem["PLSubHead"] as DynamicObjectCollection)[0]["ReleaseBillType"] = BillType; - } - if (demandGroupRow.RequirementOrderItem != null) - { - ///TODO:本分支可对组织间需求单数据在提交保存前进行干预 - } - } - return base.BeforeExecuteDataPolicy(); - } - - //protected override void AfterExecuteDataPolicy() - //{ - // base.AfterExecuteDataPolicy(); - // foreach (var demandGroupRow in this.MrpDemandDimContext.MrpNetDemandContextGroupRows) - // { - // if (demandGroupRow.PlanOrderItem != null) - // { - - // demandGroupRow.PlanOrderItem["ReleaseType"] = 3; - // DynamicObjectCollection PLSubHead = demandGroupRow.PlanOrderItem["PLSubHead"] as DynamicObjectCollection; - // FormMetadata BOS_BillType = MetaDataServiceHelper.Load(this.Context, "BOS_BillType", true) as FormMetadata; - // DynamicObject BillType = BusinessDataServiceHelper.LoadSingle(this.Context, "03c6c047c65c4a17a792f85dcf3cabec", BOS_BillType.BusinessInfo.GetDynamicObjectType(), null); - // (demandGroupRow.PlanOrderItem["PLSubHead"] as DynamicObjectCollection)[0]["ReleaseBillType_Id"] = "03c6c047c65c4a17a792f85dcf3cabec"; - // (demandGroupRow.PlanOrderItem["PLSubHead"] as DynamicObjectCollection)[0]["ReleaseBillType"] = BillType; - // } - // if (demandGroupRow.RequirementOrderItem != null) - // { - // ///TODO:本分支可对组织间需求单数据在提交保存前进行干预 - // } - // } - //} - } -} \ No newline at end of file diff --git a/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/3.存储过程_生产计划_查询即时数据.sql b/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/3.存储过程_生产计划_查询即时数据.sql index 6c6edb7..07fd28b 100644 --- a/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/3.存储过程_生产计划_查询即时数据.sql +++ b/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/3.存储过程_生产计划_查询即时数据.sql @@ -38,13 +38,13 @@ BEGIN END) AS 'SHELFLIFE' ,CONCAT(t2.FLotSize,t5_L.FNAME, '/') AS StandardLot ,dbo.ToDecimal2(t2S.FSAFESTOCK) AS SAFESTOCK --ȫ - ,t2S.FSTOREUNITID --浥λ + ,ISNULL(t2S.FSTOREUNITID ,0) AS FSTOREUNITID--浥λ ,t5_L.FNAME AS FSTOREUNITNAME ,(dbo.PackageValConver(t2S.FSAFESTOCK, t4.FPACKUNITCONVERRATIO)) AS SAFESTOCKCOUNT ,CONCAT(CONVERT(VARCHAR,dbo.ToDecimal2(t4.FPACKUNITCONVERRATIO)),t5_L.FNAME ,'/' ,t6_L.FNAME) AS FPACKUNITCONVT - ,t4.FLOTYIELD -- 'ÿ' - ,t4.FPACKUNITCONVERRATIO -- 'װ' - ,t4.FPACKUNITID -- 'λ' + ,ISNULL(t4.FLOTYIELD,0) AS FLOTYIELD-- 'ÿ' + ,ISNULL(t4.FPACKUNITCONVERRATIO,0) AS FPACKUNITCONVERRATIO -- 'װ' + ,ISNULL(t4.FPACKUNITID,0) AS FPACKUNITID-- 'λ' ,t6_L.FNAME AS FPACKUNITNAME ,dbo.PackageValConver(t0.M01,t4.FPACKUNITCONVERRATIO) as M01 ,dbo.PackageValConver(t0.S01,t4.FPACKUNITCONVERRATIO) as S01 @@ -53,9 +53,10 @@ BEGIN ,dbo.PackageValConver(ISNULL(t0.FFINISHQTY,0) - ISNULL(t0.FSTOCKINQUASELQTY,0) ,t4.FPACKUNITCONVERRATIO) AS InProductionQty -- ,dbo.PackageValConver(ISNULL(t4.FSTOCKQTY,0),t4.FPACKUNITCONVERRATIO) AS InStockQty -- ,dbo.PackageValConver((ISNULL(t0.FFINISHQTY,0) - ISNULL(t0.FSTOCKINQUASELQTY,0) + ISNULL(t4.FSTOCKQTY,0)),t4.FPACKUNITCONVERRATIO) AS TotalStockQty --ϼ - ,dbo.PackageValConver(t0.FOrderQty,t4.FLOTYIELD) AS OrderLotQty --ƻ - ,dbo.PackageValConver(t0.FFirmQty, t4.FPACKUNITCONVERRATIO) AS FirmLotQty --ȷ - ,dbo.ToDecimal2(t0.FFirmQty) FFirmQty --ȷ + ,dbo.PackageValConver(ISNULL(t0.FOrderQty,0),t4.FPACKUNITCONVERRATIO) AS OrderLotQty --ƻ + --,dbo.PackageValConver(ISNULL(t0.FFirmQty,0), t4.FPACKUNITCONVERRATIO) AS FirmLotQty --ȷ + ,ISNULL(t0.FLotQty,0) AS FirmLotQty + ,dbo.ToDecimal2(ISNULL(t0.FFirmQty,0)) FFirmQty --ȷ ,t0.countM ,2 AS FDECIMALS into #TMPMPS @@ -66,6 +67,7 @@ BEGIN ,sum(t1.FOrderQty) AS FOrderQty ,sum(t1.FFINISHQTY) AS FFINISHQTY ,sum(t1.FSTOCKINQUASELQTY) AS FSTOCKINQUASELQTY + ,sum(t1.FLotQty) As FLotQty ,sum(M01) AS M01 ,sum(S01) AS S01 ,sum(S02) AS S02 @@ -84,6 +86,7 @@ BEGIN ,sum(t1.FOrderQty) AS FOrderQty ,sum(t2.FFINISHQTY) AS FFINISHQTY ,sum(t2.FSTOCKINQUASELQTY) AS FSTOCKINQUASELQTY + ,sum(t1.FLotQty) As FLotQty FROM T_PLN_PLANORDER t1 LEFT JOIN T_PLN_PLANORDER_B t1_B ON t1.FID = t1_B.FID diff --git a/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/4.存储过程_生产计划_查询.sql b/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/4.存储过程_生产计划_查询.sql index ad55632..c4bd7c3 100644 --- a/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/4.存储过程_生产计划_查询.sql +++ b/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/4.存储过程_生产计划_查询.sql @@ -15,7 +15,15 @@ CREATE PROCEDURE PROC_ProductionSchedule AS BEGIN SET @HASID = 0 - SELECT @DAY = (CASE WHEN LTRIM(RTRIM(T0.FPARAMETERS)) = '' THEN @DAY ELSE CAST(T0.FPARAMETERS AS INT) END) FROM T_BAS_SCHEDULEINFO T0 WHERE T0.FSCHEDULETYPEID = '658e1974b04f4f' + --ȡʱƻIJֵ + DECLARE @FSCHEDULETYPEID varchar(80) + --ʽ AIS20221208083030 + SET @FSCHEDULETYPEID = '65967bf69b80ca' + --Կ AIS20231206144015 + --SET @FSCHEDULETYPEID = '658e1974b04f4f' + --زԿ + --SET @FSCHEDULETYPEID = '657BF589F52174' + SELECT @DAY = (CASE WHEN LTRIM(RTRIM(T0.FPARAMETERS)) = '' THEN @DAY ELSE CAST(T0.FPARAMETERS AS INT) END) FROM T_BAS_SCHEDULEINFO T0 WHERE T0.FSCHEDULETYPEID = @FSCHEDULETYPEID IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[T_PLAN_PLANPLMRPT]') AND TYPE IN ('U')) BEGIN diff --git a/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/5.存储过程_生产计划表_insert.sql b/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/5.存储过程_生产计划表_insert.sql index e727f67..4fae59b 100644 --- a/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/5.存储过程_生产计划表_insert.sql +++ b/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/5.存储过程_生产计划表_insert.sql @@ -12,7 +12,15 @@ CREATE PROCEDURE PROC_SAVE_PLANPLMRPT_DATA ,@LCID int AS BEGIN - SELECT @DAY = (CASE WHEN LTRIM(RTRIM(T0.FPARAMETERS)) = '' THEN @DAY ELSE CAST(T0.FPARAMETERS AS INT) END) FROM T_BAS_SCHEDULEINFO T0 WHERE T0.FSCHEDULETYPEID = '658e1974b04f4f' + --ȡʱƻIJֵ + DECLARE @FSCHEDULETYPEID varchar(80) + --ʽ AIS20221208083030 + SET @FSCHEDULETYPEID = '65967bf69b80ca' + --Կ AIS20231206144015 + --SET @FSCHEDULETYPEID = '658e1974b04f4f' + --زԿ + --SET @FSCHEDULETYPEID = '657BF589F52174' + SELECT @DAY = (CASE WHEN LTRIM(RTRIM(T0.FPARAMETERS)) = '' THEN @DAY ELSE CAST(T0.FPARAMETERS AS INT) END) FROM T_BAS_SCHEDULEINFO T0 WHERE T0.FSCHEDULETYPEID = @FSCHEDULETYPEID DELETE FROM T_PLAN_PLANPLMRPT WHERE (FRECORDYEAR = @YEAR AND FRECORDMONTH = @MONTH AND FRECORDDAY = @DAY) @@ -39,13 +47,13 @@ BEGIN END) AS 'SHELFLIFE' ,CONCAT(t2.FLotSize,t5_L.FNAME, '/') AS StandardLot ,dbo.ToDecimal2(t2S.FSAFESTOCK) AS SAFESTOCK --ȫ - ,t2S.FSTOREUNITID --浥λ + ,ISNULL(t2S.FSTOREUNITID ,0) AS FSTOREUNITID--浥λ ,t5_L.FNAME AS FSTOREUNITNAME ,(dbo.PackageValConver(t2S.FSAFESTOCK, t4.FPACKUNITCONVERRATIO)) AS SAFESTOCKCOUNT ,CONCAT(CONVERT(VARCHAR,dbo.ToDecimal2(t4.FPACKUNITCONVERRATIO)),t5_L.FNAME ,'/' ,t6_L.FNAME) AS FPACKUNITCONVT - ,t4.FLOTYIELD -- 'ÿ' - ,t4.FPACKUNITCONVERRATIO -- 'װ' - ,t4.FPACKUNITID -- 'λ' + ,ISNULL(t4.FLOTYIELD,0) AS FLOTYIELD-- 'ÿ' + ,ISNULL(t4.FPACKUNITCONVERRATIO,0) AS FPACKUNITCONVERRATIO -- 'װ' + ,ISNULL(t4.FPACKUNITID,0) AS FPACKUNITID-- 'λ' ,t6_L.FNAME AS FPACKUNITNAME ,dbo.PackageValConver(t0.M01,t4.FPACKUNITCONVERRATIO) as M01 ,dbo.PackageValConver(t0.S01,t4.FPACKUNITCONVERRATIO) as S01 @@ -55,7 +63,8 @@ BEGIN ,dbo.PackageValConver(ISNULL(t4.FSTOCKQTY,0),t4.FPACKUNITCONVERRATIO) AS InStockQty -- ,dbo.PackageValConver((ISNULL(t0.FFINISHQTY,0) - ISNULL(t0.FSTOCKINQUASELQTY,0) + ISNULL(t4.FSTOCKQTY,0)),t4.FPACKUNITCONVERRATIO) AS TotalStockQty --ϼ ,dbo.PackageValConver(ISNULL(t0.FOrderQty,0),t4.FPACKUNITCONVERRATIO) AS OrderLotQty --ƻ - ,dbo.PackageValConver(ISNULL(t0.FFirmQty,0), t4.FPACKUNITCONVERRATIO) AS FirmLotQty --ȷ + --,dbo.PackageValConver(ISNULL(t0.FFirmQty,0), t4.FPACKUNITCONVERRATIO) AS FirmLotQty --ȷ + ,ISNULL(t0.FLotQty,0) AS FirmLotQty ,dbo.ToDecimal2(ISNULL(t0.FFirmQty,0)) FFirmQty --ȷ ,@DAY AS FRECORDDAY ,@MONTH AS FRECORDMONTH @@ -68,6 +77,7 @@ BEGIN ,sum(t1.FOrderQty) AS FOrderQty ,sum(t1.FFINISHQTY) AS FFINISHQTY ,sum(t1.FSTOCKINQUASELQTY) AS FSTOCKINQUASELQTY + ,sum(t1.FLotQty) As FLotQty ,sum(M01) AS M01 ,sum(S01) AS S01 ,sum(S02) AS S02 @@ -86,6 +96,7 @@ BEGIN ,sum(t1.FOrderQty) AS FOrderQty ,sum(t2.FFINISHQTY) AS FFINISHQTY ,sum(t2.FSTOCKINQUASELQTY) AS FSTOCKINQUASELQTY + ,sum(t1.FLotQty) As FLotQty FROM T_PLN_PLANORDER t1 LEFT JOIN T_PLN_PLANORDER_B t1_B ON t1.FID = t1_B.FID diff --git a/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/8.存储过程_生产计划表_数据保存前检查.sql b/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/8.存储过程_生产计划表_数据保存前检查.sql new file mode 100644 index 0000000..31033cd --- /dev/null +++ b/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/8.存储过程_生产计划表_数据保存前检查.sql @@ -0,0 +1,65 @@ +IF EXISTS(SELECT * FROM SYS.PROCEDURES WHERE NAME='PROC_SAVE_PLANPLMRPT_BEFORE_CHECK') + DROP PROCEDURE dbo.PROC_SAVE_PLANPLMRPT_BEFORE_CHECK; +GO + +CREATE PROCEDURE PROC_SAVE_PLANPLMRPT_BEFORE_CHECK + @STARTDATE date + ,@ENDDATE date + ,@YEAR int + ,@MONTH int +AS +BEGIN + --ȡʱƻIJֵ + DECLARE @FSCHEDULETYPEID varchar(80) + --ʽ AIS20221208083030 + SET @FSCHEDULETYPEID = '65967bf69b80ca' + --Կ AIS20231206144015 + --SET @FSCHEDULETYPEID = '658e1974b04f4f' + --زԿ + --SET @FSCHEDULETYPEID = '657BF589F52174' + + DECLARE @CODE int ,@MSG varchar(80) + SET @CODE = 0 + SET @MSG = '' + + DECLARE @DAY int + SET @DAY = 1 + SELECT + @DAY = (CASE WHEN LTRIM(RTRIM(T0.FPARAMETERS)) = '' THEN 20 ELSE CAST(T0.FPARAMETERS AS INT) END) + FROM + T_BAS_SCHEDULEINFO T0 + WHERE + T0.FSCHEDULETYPEID = @FSCHEDULETYPEID + + SELECT + @CODE = (case t0.CountNum when 0 then -1 else 0 end) + ,@MSG = (case t0.CountNum when 0 then CONCAT('·Ͽδ¼,Լ¼ʱ䣺',t0.RECORDDATE) else '' end) + FROM( + SELECT + COUNT(1) AS CountNum + ,CONCAT(CAST(@YEAR AS varchar),'-',CAST(@MONTH AS varchar),'-',CAST(@DAY AS varchar)) AS RECORDDATE + FROM + T_MATERIAL_INVENTORY_MONTH_RECORD T0 + WHERE + T0.RECORDDAY = @DAY + AND T0.RECORDMONTH = @MONTH + AND T0.RECORDYEAR = @YEAR + ) t0 + + IF(@CODE = 0) + BEGIN + SELECT + @CODE = (case t0.CountNum when 0 then -1 else 0 end) + ,@MSG = (case t0.CountNum when 0 then '·δӦԤⵥ' else '' end) + FROM( + SELECT COUNT(1) AS CountNum + FROM + T_PLN_FORECAST t0 + INNER JOIN T_PLN_FORECASTENTRY t0E ON t0.FID = t0E.FID + WHERE + t0.FDATE BETWEEN @STARTDATE AND @ENDDATE + ) t0 + END + + SELECT @CODE AS code,@MSG as msg +END \ No newline at end of file diff --git a/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/自定义函数.sql b/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/自定义函数-生产计划-包装规格换算.sql similarity index 58% rename from MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/自定义函数.sql rename to MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/自定义函数-生产计划-包装规格换算.sql index 5deb987..d33aa77 100644 --- a/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/自定义函数.sql +++ b/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/自定义函数-生产计划-包装规格换算.sql @@ -1,11 +1,11 @@ -alter FUNCTION PackageValConver(@cnvNumber decimal(23,6) ,@coefficient int) +ALTER FUNCTION PackageValConver(@cnvNumber decimal(23,6) ,@coefficient int) RETURNS decimal(23,2) --طֵ as BEGIN declare @result decimal(23,6) select @result = (CASE isnull(@coefficient,0) WHEN 0 - THEN @cnvNumber ELSE (@cnvNumber/@coefficient) + THEN isnull(@cnvNumber,0) ELSE (ISNULL(@cnvNumber,0)/@coefficient) END) RETURN ROUND(@result,2) END \ No newline at end of file diff --git a/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/自定义函数-返回两位小数.sql b/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/自定义函数-返回两位小数.sql new file mode 100644 index 0000000..3a29520 --- /dev/null +++ b/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/自定义函数-返回两位小数.sql @@ -0,0 +1,6 @@ +ALTER FUNCTION ToDecimal2(@cnvNumber decimal(23,10)) +RETURNS decimal(23,2) --طֵ +as +BEGIN + RETURN ISNULL(@cnvNumber, 0) +END \ No newline at end of file diff --git a/MonthlyProductionSchedule/SQLServer/生产计划表2.0/查询_生产计划数据.sql b/MonthlyProductionSchedule/SQLServer/生产计划表2.0/查询_生产计划数据.sql index 9c1951d..3471090 100644 --- a/MonthlyProductionSchedule/SQLServer/生产计划表2.0/查询_生产计划数据.sql +++ b/MonthlyProductionSchedule/SQLServer/生产计划表2.0/查询_生产计划数据.sql @@ -1,13 +1,21 @@ - DECLARE @STARTDATE DATE,@ENDDATE DATE,@LCID INT,@YEAR INT,@MONTH INT,@DAY INT + DECLARE @STARTDATE DATE,@ENDDATE DATE,@LCID INT,@YEAR INT,@MONTH INT,@DAY INT SET @STARTDATE ='2023-12-01' SET @ENDDATE ='2023-12-31' SET @LCID = 2052 SET @YEAR = 2023 - SET @MONTH = 12 - SET @DAY = 20 + SET @MONTH = 12 + SET @DAY = 30 --ȡʱƻIJֵ - SELECT @DAY = (CASE WHEN LTRIM(RTRIM(T0.FPARAMETERS)) = '' THEN @DAY ELSE CAST(T0.FPARAMETERS AS INT) END) FROM T_BAS_SCHEDULEINFO T0 WHERE T0.FSCHEDULETYPEID = '657bf589f52174' + DECLARE @FSCHEDULETYPEID varchar(80) + --ʽ AIS20221208083030 + SET @FSCHEDULETYPEID = '65967bf69b80ca' + --Կ AIS20231206144015 + --SET @FSCHEDULETYPEID = '658e1974b04f4f' + --زԿ + --SET @FSCHEDULETYPEID = '657BF589F52174' + SELECT @DAY = (CASE WHEN LTRIM(RTRIM(T0.FPARAMETERS)) = '' THEN @DAY ELSE CAST(T0.FPARAMETERS AS INT) END) FROM T_BAS_SCHEDULEINFO T0 WHERE T0.FSCHEDULETYPEID = @FSCHEDULETYPEID + SELECT ROW_NUMBER() OVER(ORDER BY t0.FMATERIALID) AS FIDENTITYID ,t0.FMATERIALID @@ -48,6 +56,7 @@ ,dbo.PackageValConver((ISNULL(t0.FFINISHQTY,0) - ISNULL(t0.FSTOCKINQUASELQTY,0) + ISNULL(t4.FSTOCKQTY,0)),t4.FPACKUNITCONVERRATIO) AS TotalStockQty --ϼ ,dbo.PackageValConver(ISNULL(t0.FOrderQty,0),t4.FPACKUNITCONVERRATIO) AS OrderLotQty --ƻ ,dbo.PackageValConver(ISNULL(t0.FFirmQty,0), t4.FPACKUNITCONVERRATIO) AS FirmLotQty --ȷ + --,t0.FLotQty AS FirmLotQty ,dbo.ToDecimal2(ISNULL(t0.FFirmQty,0)) FFirmQty --ȷ ,t0.countM FROM @@ -57,6 +66,7 @@ ,sum(t1.FOrderQty) AS FOrderQty ,sum(t1.FFINISHQTY) AS FFINISHQTY ,sum(t1.FSTOCKINQUASELQTY) AS FSTOCKINQUASELQTY + --,sum(t1.FLotQty) As FLotQty ,sum(M01) AS M01 ,sum(S01) AS S01 ,sum(S02) AS S02 @@ -64,7 +74,7 @@ ,count(1) AS countM FROM T_PLN_FORECAST t0 - LEFT JOIN T_PLN_FORECASTENTRY t0E ON t0.FID = t0E.FID + INNER JOIN T_PLN_FORECASTENTRY t0E ON t0.FID = t0E.FID LEFT JOIN ( SELECT t1.FMATERIALID @@ -75,6 +85,7 @@ ,sum(t1.FOrderQty) AS FOrderQty ,sum(t2.FFINISHQTY) AS FFINISHQTY ,sum(t2.FSTOCKINQUASELQTY) AS FSTOCKINQUASELQTY + --,sum(t1.FLotQty) As FLotQty FROM T_PLN_PLANORDER t1 LEFT JOIN T_PLN_PLANORDER_B t1_B ON t1.FID = t1_B.FID @@ -116,7 +127,7 @@ ,t1_B.FSALEORDERENTRYID ,t1_B.FSALEORDERENTRYSEQ ,t1_B.FSALEORDERID - ) t1 ON (t1.FMATERIALID = t0E.FMATERIALID AND t1.FSALEORDERID = t0.FID AND t0E.FENTRYID = t1.FSALEORDERENTRYID AND t1.FSALEORDERENTRYSEQ = t0E.FSEQ) + ) t1 ON (t1.FMATERIALID = t0E.FMATERIALID AND t1.FSALEORDERID = t0E.FID AND t0E.FENTRYID = t1.FSALEORDERENTRYID AND t1.FSALEORDERENTRYSEQ = t0E.FSEQ) WHERE t0.FDATE BETWEEN @STARTDATE AND @ENDDATE GROUP BY diff --git a/MonthlyProductionSchedule/UpdatePlanOrderCustInfoPolicyEx .cs b/MonthlyProductionSchedule/UpdatePlanOrderCustInfoPolicyEx .cs new file mode 100644 index 0000000..cb7e210 --- /dev/null +++ b/MonthlyProductionSchedule/UpdatePlanOrderCustInfoPolicyEx .cs @@ -0,0 +1,68 @@ +using ExtensionMethods; +using Kingdee.BOS; +using Kingdee.BOS.Core.Metadata; +using Kingdee.BOS.Log; +using Kingdee.BOS.Orm.DataEntity; +using Kingdee.BOS.ServiceHelper; +using Kingdee.K3.Core.MFG; +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Text; + +namespace Kingdee.K3.MFG.PLN.App.MrpModel.PolicyImpl.NetCalc +{ + /// + /// MRP运算将产生的计划订单或组织间需求单数据提交保存前更新数据策略 + /// + [MrpProgressItem("P0033", "30")] + public class UpdatePlanOrderCustInfoPolicyEx : AbstractNetCalcPolicy + { + + /// + /// 后置策略:单条执行模式 + /// + public override Enu_NetCalcPolicyCallStyle CallStyle + { + get { return Enu_NetCalcPolicyCallStyle.KdLastSingleExecutionMode; } + } + + /// + /// 策略执行前事件 + /// + /// + protected override bool BeforeExecuteDataPolicy() + { + foreach (var demandGroupRow in this.MrpDemandDimContext.MrpNetDemandContextGroupRows) + { + if (demandGroupRow.PlanOrderItem != null) + { + ///TODO:本分支可对计划订单数据在提交保存前进行干预 + //string MaterialId_Id = Convert.ToString(demandGroupRow.PlanOrderItem["MaterialId_Id"]); + //FormMetadata FMaterial = MetaDataServiceHelper.Load(this.Context, "BD_MATERIAL", true) as FormMetadata; + //DynamicObject FMaterialId = BusinessDataServiceHelper.LoadSingle(this.Context, MaterialId_Id, FMaterial.BusinessInfo.GetDynamicObjectType(), null); + //DynamicObjectCollection MaterialProduce = FMaterialId["MaterialProduce"] as DynamicObjectCollection; + + //LotQty 批数 + //LotYield 每批产量 + //FirmQty 确认订单数量 + //计划运算时根据确认订单数量、每批产量计算批数 + + var LotYield = Convert.ToDecimal(demandGroupRow.PlanOrderItem["LotYield"]); + + if (LotYield != 0) + demandGroupRow.PlanOrderItem["LotQty"] = Convert.ToDecimal(demandGroupRow.PlanOrderItem["BaseFirmQty"]) / LotYield; + + } + + if (demandGroupRow.RequirementOrderItem != null) + { + ///TODO:本分支可对组织间需求单数据在提交保存前进行干预 + } + } + return base.BeforeExecuteDataPolicy(); + } + } +} \ No newline at end of file diff --git a/ProductionMaterialsReport/Class1.cs b/ProductionMaterialsReport/Class1.cs deleted file mode 100644 index 66dafd4..0000000 --- a/ProductionMaterialsReport/Class1.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace ProductionMaterialsReport -{ - public class Class1 - { - } -} diff --git a/ProductionMaterialsReport/ProductionMaterialsReport.csproj b/ProductionMaterialsReport/HW.ProductionMaterialsReport.csproj similarity index 54% rename from ProductionMaterialsReport/ProductionMaterialsReport.csproj rename to ProductionMaterialsReport/HW.ProductionMaterialsReport.csproj index 38f811a..b15f603 100644 --- a/ProductionMaterialsReport/ProductionMaterialsReport.csproj +++ b/ProductionMaterialsReport/HW.ProductionMaterialsReport.csproj @@ -7,11 +7,12 @@ {49AF92F2-2DCF-42F4-AB29-12298575D803} Library Properties - ProductionMaterialsReport - ProductionMaterialsReport - v4.8 + HW.ProductionMaterialsReport + HW.ProductionMaterialsReport + v4.0 512 true + true @@ -31,6 +32,27 @@ 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.Contracts.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.K3.BD.Contracts.dll + @@ -41,13 +63,18 @@ - + + + + + + \ No newline at end of file diff --git a/ProductionMaterialsReport/ProductionMaterialsReportEx.cs b/ProductionMaterialsReport/ProductionMaterialsReportEx.cs new file mode 100644 index 0000000..8029987 --- /dev/null +++ b/ProductionMaterialsReport/ProductionMaterialsReportEx.cs @@ -0,0 +1,362 @@ +using Kingdee.BOS; +using Kingdee.BOS.App.Data; +using Kingdee.BOS.Contracts.Report; +using Kingdee.BOS.Core.Metadata; +using Kingdee.BOS.Core.Report; +using Kingdee.BOS.Orm.DataEntity; +using Kingdee.BOS.Util; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ProductionMaterialsReport +{ + [Description("生产投料报表-服务插件"), HotUpdate] + public class ProductionMaterialsReport : SysReportBaseService + { + /***********事件执行顺序************* + 2015/8/31 18:04:12 : Initialize + 2015/8/31 18:04:12 : GetTableName + 2015/8/31 18:04:15 : BuilderReportSqlAndTempTable + 2015/8/31 18:04:15 : GetIdentityFieldIndexSQL + 2015/8/31 18:04:15 : ExecuteBatch + 2015/8/31 18:04:19 : GetReportHeaders + 2015/8/31 18:04:19 : GetReportTitles + 2015/8/31 18:04:27 : GetTableName + 2015/8/31 18:04:27 : GetIdentityFieldIndexSQL + 2015/8/31 18:04:28 : ExecuteBatch + 2015/8/31 18:04:28 : AnalyzeDspCloumn + 2015/8/31 18:04:28 : AfterCreateTempTable + 2015/8/31 18:04:28 : GetSummaryColumnInfo + 2015/8/31 18:04:28 : GetSummaryColumsSQL + 2015/8/31 18:04:28 : GetTableName + 2015/8/31 18:04:28 : GetTableName + 2015/8/31 18:04:29 : ExecuteBatch + 2015/8/31 18:04:29 : GetIdentityFieldIndexSQL + 2015/8/31 18:04:29 : ExecuteBatch + 2015/8/31 18:04:29 : CreateGroupSummaryData + 2015/8/31 18:04:29 : GetListData + 2015/8/31 18:04:30 : GetReportData + 2015/8/31 18:04:30 : GetRowsCount + 2015/8/31 18:04:30 : GetListData + */ + + public override void Initialize() + { + base.Initialize(); + //简单账表类型:普通、树形、分页 + this.ReportProperty.ReportType = ReportType.REPORTTYPE_NORMAL; + //报表名称 + this.ReportProperty.ReportName = new LocaleValue("生产投料报表", base.Context.UserLocale.LCID); + //是否由插件创建表名 + this.IsCreateTempTableByPlugin = true; + // + this.ReportProperty.IsUIDesignerColumns = false; + // + this.ReportProperty.IsGroupSummary = true; + // + this.ReportProperty.SimpleAllCols = false; + // 单据主键:两行FID相同,则为同一单的两条分录,单据编号可以不重复显示 + this.ReportProperty.PrimaryKeyFieldName = "FID"; + // + this.ReportProperty.IsDefaultOnlyDspSumAndDetailData = true; + + // 报表主键字段名:默认为FIDENTITYID,可以修改 + //this.ReportProperty.IdentityFieldName = "FIDENTITYID"; + // 设置精度控制 + var list = new List + { + new DecimalControlField("FDECIMALS", "FLOTYIELD"), + }; + + this.ReportProperty.DecimalControlFieldList = list; + + + this.ReportProperty.DspInsteadColumnsInfo.DefaultDspInsteadColumns.Add("FSTOCKID", "仓库"); + } + + public override string GetTableName() + { + return base.GetTableName(); + } + + /// + /// 向报表临时表,插入报表数据 + /// + /// + /// + public override void BuilderReportSqlAndTempTable(IRptParams filter, string tableName) + { + base.BuilderReportSqlAndTempTable(filter, tableName); + string seqFld = string.Format(base.KSQL_SEQ, " t0.FID "); + var sql = $@" + DECLARE @FBILLNO varchar(80) + ,@MainNumber varchar(80) + ,@MainName varchar(80) + ,@FMOBILLNO varchar(80) + ,@FNumber varchar(80) + ,@FName varchar(80) + ,@FSALEORDERNO varchar(80) + ,@LCID int + set @FBILLNO = '' + set @MainNumber = '' + set @MainName = '' + set @FMOBILLNO = '' + set @FNumber = '' + set @FName = '' + set @FSALEORDERNO = '' + set @LCID = 2052 + + --set @FBILLNO ='' + --set @MainNumber='' + --set @MainName='' + --set @FMOBILLNO='' + --set @FNumber='' + --set @FName='' + --set @FSALEORDERNO='' + --set @LCID=2052 + + SELECT + top 1000 + ROW_NUMBER() OVER(ORDER BY T0.FMATERIALID) AS '行号' --1.行号 + ,T0.FID + --,T0.FFORMID + ,t7.FDATE AS '单据日期' --2.单据日期 + ,T0.FBILLNO AS '生产投料单号'--3.生产投料单号 + --,T0.FMOID --生产订单内码 + ----,T0.FMOENTRYID --生产订单子表内码 + --,t0.FSALEORDERID + --,t0.FSALEORDERENTRYID + ,T0.FSALEORDERNO AS '销售订单号' --4.销售订单号 + --,T0.FMATERIALID --产品ID + --5.购货单位代码 + ,T1.FMNEMONICCODE AS '助记码'--6.助记码 + ,T0.FMOBILLNO AS '生产任务单号'--7.生产任务单号 + ,T1.FNUMBER --AS '产品编码'--8.产品编码 + ,T1_L.FNAME AS '产品名称'--9.产品名称 + ,T1_L.FSPECIFICATION AS '产品规格型号'--10.产品规格型号 + ,T3_L.FNAME AS '产品单位'--11.产品单位 + ,T0.FQTY AS '产品生产数量'--12.产品生产数量 + ,T2.FNUMBER AS '物料代码'--13.物料代码 + ,T2_L.FNAME AS '物料名称'--14.物料名称 + ,(CASE T2.FMATERIALSRC WHEN 'A' THEN 'PLM' WHEN 'B' THEN 'ERP' ELSE '' END) AS '物料来源' --15.物料来源 + ,T2_L.FSPECIFICATION AS '物料规格型号'--16.物料规格型号 + ,t10_L.FNAME AS '物料技术标准'--17.物料技术标准 + ,(T0E.FNUMERATOR / T0E.FDENOMINATOR) AS '物料单位用量' --18.物料单位用量 + --,T0E.FUNITID AS ENTRYUNITID + ,T4_L.FNAME AS '物料单位' --19.物料单位 + ,t9.FBASEQTY AS '物料库存量'--20.物料库存量 + ,T11E_A.FBASEINVQTY + --21.物料待检数 + ,T0E.FNEEDQTY AS '物料总需求'--22.物料总需求 + ,T0E_Q.FBASEWIPQTY AS '当前在制品数量'--23.当前在制品数量 + --,(case when t9.FBASEQTY > T0E.FNEEDQTY then 0 else T0E.FNEEDQTY - t9.FBASEQTY end) AS '欠料'--24.欠料 + ,T11E.FBASELACKQTY AS '欠料'--24.欠料 + ,T11E_A.FBASEONORDERQTY AS '物料在途数' --25.物料在途数 + ,T11E_A.FENTRYID + --26.计划投料数量 + ,T0E_Q.FPICKEDQTY AS '已领数量'--27.已领数量 + ,T0E_Q.FNOPICKEDQTY AS '未领数量'--28.未领数量 + ,T0E.FSTDQTY AS '标准数量'--标准用量 --29.标准数量 + ,T0E.FMUSTQTY AS '应发数量'--应发数量 --30.应发数量 + ,t0E_L.FMEMO AS '备注'--31.备注 + ,T0E_Q.FPICKEDQTY * (100 - t7E.FYIELDRATE) AS '损耗数量'--32.损耗数量 + ,T0E_Q.FSCRAPQTY AS '报废数量' --33.报废数量 + --34.计划发料日期 + ,T0E_C.FSTOCKID + ,T5_L.FNAME --AS '仓库'--35.仓库 + ,T0E_C.FSTOCKLOCID --36.仓位 + ,T0E_Q.FREPICKEDQTY AS '补料数量'--37.补料数量 + ,t7E.FPLANSTARTDATE AS '计划开工日期'--38.计划开工日期 + ,t7E.FPLANFINISHDATE AS '计划完工日期'--39.计划完工日期 + --40.工位 + --,7E.FMEMO AS '其他备注项' --41.其他备注项 + ,t8_L.FMEMO AS 'BOM备注项'--42.BOM备注项 + --,t8.FNUMERATOR + ,(CASE T7e.FPRODUCTTYPE WHEN 1 THEN '主产品' WHEN 2 THEN '主产品' WHEN 3 THEN '主产品' ELSE '' END) AS '生产类型'--43.生产类型 + --,T0.FWORKSHOPID + ,T6_L.FNAME AS '生产车间'--44.生产车间 + ,(CASE T7E_A.FSTATUS WHEN 6 THEN '已结案'ELSE '' END) AS '生产任务单结案否'--45.生产任务单结案否 + ,(CASE t0.FDOCUMENTSTATUS WHEN 'A' THEN '创建' WHEN 'B' THEN '审核中' WHEN 'C' THEN '已审核' WHEN 'D' THEN '重新审核' WHEN 'Z' THEN '暂存' ELSE '' END) AS '生产投料单状态'--46.生产投料单状态 + --47.PR已审未转PO数量 + ,6 AS FDECIMALS + ,{seqFld} + into {tableName} + FROM + T_PRD_MO t7 --生产订单 + LEFT JOIN T_PRD_MOENTRY t7E on t7E.FID = t7.FID + LEFT JOIN T_PRD_MOENTRY_A t7E_A on t7E_A.FENTRYID = t7E.FENTRYID + LEFT JOIN T_PRD_PPBOM T0 on T0.FMOID = t7.FID --生产用料清单 + LEFT JOIN T_PRD_PPBOMENTRY T0E ON T0.FID = T0E.FID AND t0.FMOENTRYSEQ = t7e.FSEQ--生产用料清单子表 + LEFT JOIN T_PRD_PPBOMENTRY_Q T0E_Q ON T0E_Q.FENTRYID = T0E.FENTRYID --生产用料清单数量拆分表 + LEFT JOIN T_PRD_PPBOMENTRY_C T0E_C ON T0E_C.FENTRYID = T0E.FENTRYID + LEFT JOIN T_PRD_PPBOMENTRY_L t0E_L on t0E_L.FENTRYID = T0E.FENTRYID AND t0E_L.FLOCALEID = @LCID + LEFT JOIN T_BD_MATERIAL T1 ON T1.FMATERIALID = T0.FMATERIALID + LEFT JOIN T_BD_MATERIAL_L T1_L ON T1_L.FMATERIALID = T0.FMATERIALID AND T1_L.FLOCALEID = @LCID + LEFT JOIN T_BD_MATERIAL T2 ON T2.FMATERIALID = T0E.FMATERIALID + LEFT JOIN T_BD_MATERIAL_L T2_L ON T2_L.FMATERIALID = T0E.FMATERIALID AND T2_L.FLOCALEID = @LCID + LEFT JOIN T_BD_UNIT_L T3_L ON T3_L.FUNITID = T0.FUNITID AND T3_L.FLOCALEID = @LCID + LEFT JOIN T_BD_UNIT_L T4_L ON T4_L.FUNITID = T0E.FUNITID AND T4_L.FLOCALEID = @LCID + LEFT JOIN T_BD_STOCK_L T5_L ON T5_L.FSTOCKID = T0E_C.FSTOCKID AND T5_L.FLOCALEID =@LCID + LEFT JOIN T_BD_DEPARTMENT_L T6_L ON T6_L.FDEPTID = T0.FWORKSHOPID AND T6_L.FLOCALEID = @LCID + LEFT JOIN T_ENG_BOMCHILD_L t8_L ON t8_L.FENTRYID = T0E.FBOMENTRYID AND t8_L.FLOCALEID = @LCID + LEFT JOIN ( + SELECT + t0.FMATERIALID + ,t0.FSTOCKORGID + ,sum(t0.FBASEQTY) AS FBASEQTY + FROM + T_STK_INVENTORY t0 + GROUP BY + t0.FMATERIALID + ,t0.FSTOCKORGID + ) t9 on t9.FMATERIALID = T2.FMASTERID AND t9.FSTOCKORGID = t2.FUSEORGID + LEFT JOIN T_ENG_ROUTE_L t10_L on t10_L.FID = t7E.FROUTINGID AND t10_L.FLOCALEID = @LCID + LEFT JOIN T_PRD_PMPPBOMENTRY T11E on T11E.FMOID = t7e.FID AND T11E.FMOENTRYID = t7e.FENTRYID AND T11E.FMOENTRYSEQ = t7E.FSEQ AND T11E.FMATERIALIDSUB = T0E.FMATERIALID AND T11E.FMATERIALID = t0.FMATERIALID + LEFT JOIN T_PRD_PMPPBOMENTRY_A T11E_A ON T11E_A.FENTRYID = T11E.FENTRYID + WHERE + T0.FBILLNO = (CASE WHEN @FBILLNO != '' THEN @FBILLNO ELSE T0.FBILLNO END) + AND T0.FMOBILLNO = (CASE WHEN @FMOBILLNO != '' THEN @FMOBILLNO ELSE T0.FMOBILLNO END) + AND T0.FSALEORDERNO = (CASE WHEN @FSALEORDERNO != '' THEN @FSALEORDERNO ELSE T0.FSALEORDERNO END) + AND T1.FNUMBER = (CASE WHEN @MAINNUMBER != '' THEN @MAINNUMBER ELSE T1.FNUMBER END) + AND T1_L.FNAME = (CASE WHEN @MAINNAME != '' THEN @MAINNAME ELSE T1_L.FNAME END) + AND T2.FNUMBER = (CASE WHEN @FNUMBER != '' THEN @FNUMBER ELSE T2.FNUMBER END) + AND T2_L.FNAME = (CASE WHEN @FNAME != '' THEN @FNAME ELSE T2_L.FNAME END) +"; + + var res = DBUtils.ExecuteDynamicObject(this.Context, $"/*dialect*/{sql}"); + } + + public override ReportHeader GetReportHeaders(IRptParams filter) + { + var header = base.GetReportHeaders(filter); + int _colIndex = 0; + header.AddChild("FNUMBER", new LocaleValue("产品编码"), _colIndex++); + header.AddChild("FSTOCKID", new LocaleValue("仓库"), _colIndex++); + header.AddChild("FSTOCKLOCID", new LocaleValue("仓位"), _colIndex++); + return header; + } + + protected override void ExecuteBatch(List listSql) + { + base.ExecuteBatch(listSql); + } + + public override ReportTitles GetReportTitles(IRptParams filter) + { + var result = base.GetReportTitles(filter); + //DynamicObject dyFilter = filter.FilterParameter.CustomFilter; + //if (dyFilter != null) + //{ + // if (result == null) + // { + // result = new ReportTitles(); + // } + // //数据保存状态 + // string saveDataStauts = dyFilter["DataBDStatu"].Long2Int() > 0 ? "1" : "0"; + // result.AddTitle("FDataBDStatu", saveDataStauts); + // result.AddTitle("FDataHoldYear", dyFilter["DataHoldYear"].ToString()); + // result.AddTitle("FDataHoldMonth", dyFilter["DataHoldMonth"].ToString()); + //} + return result; + } + + protected override string AnalyzeDspCloumn(IRptParams filter, string tablename) + { + string result = base.AnalyzeDspCloumn(filter, tablename); + return result; + } + protected override void AfterCreateTempTable(string tablename) + { + base.AfterCreateTempTable(tablename); + } + + /// + /// 设置报表合计列 + /// + /// + /// + public override List GetSummaryColumnInfo(IRptParams filter) + { + var result = base.GetSummaryColumnInfo(filter); + return result; + } + protected override string GetSummaryColumsSQL(List summaryFields) + { + var result = base.GetSummaryColumsSQL(summaryFields); + return result; + } + protected override System.Data.DataTable GetListData(string sSQL) + { + var result = base.GetListData(sSQL); + return result; + } + protected override System.Data.DataTable GetReportData(IRptParams filter) + { + var result = base.GetReportData(filter); + return result; + } + protected override System.Data.DataTable GetReportData(string tablename, IRptParams filter) + { + var result = base.GetReportData(tablename, filter); + return result; + } + public override int GetRowsCount(IRptParams filter) + { + var result = base.GetRowsCount(filter); + return result; + } + protected override string BuilderFromWhereSQL(IRptParams filter) + { + string result = base.BuilderFromWhereSQL(filter); + return result; + } + protected override string BuilderSelectFieldSQL(IRptParams filter) + { + string result = base.BuilderSelectFieldSQL(filter); + return result; + } + protected override string BuilderTempTableOrderBySQL(IRptParams filter) + { + string result = base.BuilderTempTableOrderBySQL(filter); + return result; + } + public override void CloseReport() + { + base.CloseReport(); + } + protected override string CreateGroupSummaryData(IRptParams filter, string tablename) + { + string result = base.CreateGroupSummaryData(filter, tablename); + return result; + } + protected override void CreateTempTable(string sSQL) + { + base.CreateTempTable(sSQL); + } + public override void DropTempTable() + { + base.DropTempTable(); + } + public override System.Data.DataTable GetList(IRptParams filter) + { + var result = base.GetList(filter); + return result; + } + public override List GetOrgIdList(IRptParams filter) + { + var result = base.GetOrgIdList(filter); + return result; + } + public override List GetTreeNodes(IRptParams filter) + { + var result = base.GetTreeNodes(filter); + return result; + } + + } +} diff --git a/ProductionMaterialsReport/SqlServer/SQLQuery5.sql b/ProductionMaterialsReport/SqlServer/SQLQuery5.sql new file mode 100644 index 0000000..029a63c --- /dev/null +++ b/ProductionMaterialsReport/SqlServer/SQLQuery5.sql @@ -0,0 +1,21 @@ + +SELECT + TOP 1000 + T0E.FMATERIALID + ,T0E.FMATERIALIDSUB +FROM + T_PRD_PMPPBOMENTRY T0E + INNER JOIN T_PRD_PMPPBOMENTRY_A T0E_A ON T0E_A.FENTRYID = T0E.FENTRYID +WHERE T0E.FID = 101118 +GROUP BY T0E.FMATERIALID,T0E.FMATERIALIDSUB + + +SELECT + TOP 1000 + t0E.* + ,T0E_A.* +FROM + T_PRD_LACKANALYSEBILL t0 + INNER JOIN T_PRD_PMPPBOMENTRY T0E on t0.FID = T0E.FID + INNER JOIN T_PRD_PMPPBOMENTRY_A T0E_A ON T0E_A.FENTRYID = T0E.FENTRYID +WHERE t0.FBILLNO = 'SCQL000671' \ No newline at end of file diff --git a/ProductionMaterialsReport/SqlServer/仓库值.sql b/ProductionMaterialsReport/SqlServer/仓库值.sql new file mode 100644 index 0000000..69752f9 --- /dev/null +++ b/ProductionMaterialsReport/SqlServer/仓库值.sql @@ -0,0 +1,12 @@ +SELECT T2.FSTOCKID, T2.FNUMBER, T3.FNAME, T4.FFLEXENTRYID AS λֵ, T41.FNUMBER λֵ, T41L.FNAME λֵ, T1.FFLEXID λֵά,T31.FNUMBER λֵ,T31L.FNAME λֵ +FROM + T_BD_STOCKFLEXITEM T1 + JOIN T_BD_STOCKFLEXDETAIL T4 ON T1.FENTRYID = T4.FENTRYID + JOIN T_BAS_FLEXVALUES T31 ON T1.FFLEXID = T31.FID + JOIN T_BAS_FLEXVALUES_L T31L ON T31L.FID = T31.FID AND T31L.FLOCALEID = 2052 + JOIN T_BAS_FLEXVALUESENTRY T41 ON T4.FFLEXENTRYID = T41.FENTRYID + JOIN T_BAS_FLEXVALUESENTRY_L T41L ON T41L.FENTRYID = T41.FENTRYID AND T41L.FLOCALEID = 2052 + JOIN T_BD_STOCK T2 ON T1.FSTOCKID = T2.FSTOCKID + JOIN T_BD_STOCK_L T3 ON T2.FSTOCKID = T3.FSTOCKID AND T3.FLOCALEID = 2052 +ORDER BY + T2.FSTOCKID, T31.FNUMBER, T41.FNUMBER diff --git a/ProductionMaterialsReport/SqlServer/存储过程-生产用料清单.sql b/ProductionMaterialsReport/SqlServer/存储过程-生产用料清单.sql new file mode 100644 index 0000000..0336454 --- /dev/null +++ b/ProductionMaterialsReport/SqlServer/存储过程-生产用料清单.sql @@ -0,0 +1,96 @@ +IF EXISTS(SELECT * FROM SYS.PROCEDURES WHERE NAME='PROC_PPBOM_RPT') + DROP PROCEDURE DBO.PROC_PPBOM_RPT; +GO + +CREATE PROCEDURE PROC_PPBOM_RPT + @FBILLNO varchar(80) + ,@MainNumber varchar(80) + ,@MainName varchar(80) + ,@FMOBILLNO varchar(80) + ,@FNumber varchar(80) + ,@FName varchar(80) + ,@FSALEORDERNO varchar(80) + ,@LCID int +AS +BEGIN + SELECT + ROW_NUMBER() OVER(ORDER BY T0.FMATERIALID) AS 'к' --1.к + --,T0.FID + --,T0.FFORMID + --2. + ,T0.FBILLNO AS 'Ͷϵ'--3.Ͷϵ + --,T0.FMOID -- + --,T0.FMOENTRYID --ӱ + ,T0.FSALEORDERNO AS '۶' --4.۶ + --,T0.FMATERIALID --ƷID + --5.λ + ,T1.FMNEMONICCODE AS ''--6. + ,T0.FMOBILLNO AS '񵥺'--7.񵥺 + ,T1.FNUMBER AS 'Ʒ'--8.Ʒ + ,T1_L.FNAME AS 'Ʒ'--9.Ʒ + ,T1_L.FSPECIFICATION AS 'Ʒͺ'--10.Ʒͺ + --,T0.FBOMID + --,T0.FUNITID + ,T3_L.FNAME AS 'Ʒλ'--11.Ʒλ + ,T0.FQTY AS 'Ʒ'--12.Ʒ + ,T0E.FMATERIALID AS ENTRYMATERIALID --ID + ,T2.FNUMBER AS 'ϴ'--13.ϴ + ,T2_L.FNAME AS ''--14. + ,(CASE T2.FMATERIALSRC WHEN 'T0' THEN 'PLM' WHEN 'T1' THEN 'ERP' ELSE '' END) AS 'Դ' --15.Դ + ,T2_L.FSPECIFICATION AS 'Ϲͺ'--16.Ϲͺ + --17.ϼ׼ + ,(T0E.FNUMERATOR / T0E.FDENOMINATOR) AS 'ϵλ' --18.ϵλ + --,T0E.FUNITID AS ENTRYUNITID + ,T4_L.FNAME AS 'ϵλ' --19.ϵλ + --20.Ͽ + --21.ϴ + ,T0E.FNEEDQTY AS ''--22. + --,T0E.FWIPQTY --23.ǰƷ + --24.Ƿ + --25.; + --26.ƻͶ + ,T0E_Q.FPICKEDQTY AS ''--27. + ,T0E_Q.FNOPICKEDQTY AS 'δ'--28.δ + ,T0E.FSTDQTY AS '׼'--׼ --29.׼ + ,T0E.FMUSTQTY AS 'Ӧ'--Ӧ --30.Ӧ + --,T0E.FMEMO AS 'ע'--31.ע + --32. + ,T0E_Q.FSCRAPQTY AS '' --33. + --34.ƻ + --,T0E_C.FSTOCKID + ,T5_L.FNAME AS 'ֿ'--35.ֿ + ,T0E_C.FSTOCKLOCID --36.λ + ,T0E_Q.FREPICKEDQTY AS ''--37. + --,T0E.F_ORA_JHKGSJ AS 'ƻ'--38.ƻ + --,T0E.F_ORA_JHWGSJ AS 'ƻ깤'--39.ƻ깤 + --40.λ + --41.ע + --42.BOMע + --43. + ,T0.FWORKSHOPID + ,T6_L.FNAME AS ''--44. + --45.񵥽᰸ + --46.Ͷϵ״̬ + --47.PRδתPO + FROM + T_PRD_PPBOM T0 --嵥 + LEFT JOIN T_PRD_PPBOMENTRY T0E ON T0.FID = T0E.FID --嵥ӱ + LEFT JOIN T_PRD_PPBOMENTRY_Q T0E_Q ON T0E_Q.FENTRYID = T0E.FENTRYID --嵥ֱ + LEFT JOIN T_PRD_PPBOMENTRY_C T0E_C ON T0E_C.FENTRYID = T0E.FENTRYID + LEFT JOIN T_BD_MATERIAL T1 ON T1.FMATERIALID = T0.FMATERIALID + LEFT JOIN T_BD_MATERIAL_L T1_L ON T1_L.FMATERIALID = T0.FMATERIALID AND T1_L.FLOCALEID = @LCID + LEFT JOIN T_BD_MATERIAL T2 ON T2.FMATERIALID = T0E.FMATERIALID + LEFT JOIN T_BD_MATERIAL_L T2_L ON T2_L.FMATERIALID = T0E.FMATERIALID AND T2_L.FLOCALEID = @LCID + LEFT JOIN T_BD_UNIT_L T3_L ON T3_L.FUNITID = T0.FUNITID AND T3_L.FLOCALEID = @LCID + LEFT JOIN T_BD_UNIT_L T4_L ON T4_L.FUNITID = T0E.FUNITID AND T4_L.FLOCALEID = @LCID + LEFT JOIN T_BD_STOCK_L T5_L ON T5_L.FSTOCKID = T0E_C.FSTOCKID AND T5_L.FLOCALEID =@LCID + LEFT JOIN T_BD_DEPARTMENT_L T6_L ON T6_L.FDEPTID = T0.FWORKSHOPID AND T6_L.FLOCALEID = @LCID + WHERE + t0.FBILLNO = (case when @FBILLNO != '' then @FBILLNO else t0.FBILLNO end) + and t0.FMOBILLNO = (case when @FMOBILLNO != '' then @FMOBILLNO else t0.FMOBILLNO end) + and t0.FSALEORDERNO = (case when @FSALEORDERNO != '' then @FSALEORDERNO else t0.FSALEORDERNO end) + and t1.FNUMBER = (case when @MainNumber != '' then @MainNumber else t1.FNUMBER end) + and T1_L.FNAME = (case when @MainName != '' then @MainName else T1_L.FNAME end) + and T2.FNUMBER = (case when @FNumber != '' then @FNumber else T2.FNUMBER end) + and t2_L.FNAME = (case when @FName != '' then @FName else t2_L.FNAME end) +END diff --git a/ProductionMaterialsReport/SqlServer/生产用料清单.sql b/ProductionMaterialsReport/SqlServer/生产用料清单.sql index 3d18649..1b14f18 100644 --- a/ProductionMaterialsReport/SqlServer/生产用料清单.sql +++ b/ProductionMaterialsReport/SqlServer/生产用料清单.sql @@ -1,49 +1,130 @@ -SELECT - TOP 100 - A.FID - ,A.FFORMID - ,A.FBILLNO --Ͷϵ - ,A.FMATERIALID --ƷID - ,A.FMOBILLNO --񵥺 - ,B.FNUMBER --Ʒ - ,B_L.FNAME --Ʒ - ,B_L.FSPECIFICATION --Ʒͺ - ,A.FBOMID - ,A.FSALEORDERNO --۶ - ,A.FUNITID --Ʒλ - ,D_L.FNAME UNITNAME - ,A.FQTY --Ʒ - ,AE.FMATERIALID AS ENTRYMATERIALID --ID - ,C.FNUMBER - ,C.FMNEMONICCODE - ,C_L.FNAME - ,(CASE C.FMATERIALSRC WHEN 'A' THEN 'PLM' WHEN 'B' THEN 'ERP' ELSE '' END) FMATERIALSRC --Դ - ,C_L.FSPECIFICATION - ,(AE.FNUMERATOR / AE.FDENOMINATOR) DOSAGE - ,AE.FNEEDQTY -- - ,AE.FUNITID AS ENTRYUNITID - ,E_L.FNAME ENTRYUNITNAME --ϵλ - ,AE.FMATERIALTYPE --/ϼ׼ - ,AE.FSTDQTY --׼ - ,AE.FMUSTQTY --Ӧ - ,AE_Q.FPICKEDQTY -- - ,AE_Q.FNOPICKEDQTY --δ - ,AE_Q.FREPICKEDQTY -- - ,AE_Q.FSCRAPQTY -- - --,AE.FMEMO --ע - -- - ,AE_C.FSTOCKID - ,F_L.FNAME --ֿ - ,AE_C.FSTOCKLOCID --λ -FROM - T_PRD_PPBOM A --嵥 - LEFT JOIN T_PRD_PPBOMENTRY AE ON A.FID = AE.FID --嵥ӱ - LEFT JOIN T_PRD_PPBOMENTRY_Q AE_Q ON AE_Q.FENTRYID = AE.FENTRYID --嵥ֱ - LEFT JOIN T_PRD_PPBOMENTRY_C AE_C ON AE_C.FENTRYID = AE.FENTRYID - LEFT JOIN T_BD_MATERIAL B ON B.FMATERIALID = A.FMATERIALID - LEFT JOIN T_BD_MATERIAL_L B_L ON B_L.FMATERIALID = A.FMATERIALID AND B_L.FLOCALEID = 2052 - LEFT JOIN T_BD_MATERIAL C ON C.FMATERIALID = AE.FMATERIALID - LEFT JOIN T_BD_MATERIAL_L C_L ON C_L.FMATERIALID = AE.FMATERIALID AND C_L.FLOCALEID = 2052 - LEFT JOIN T_BD_UNIT_L D_L ON D_L.FUNITID = A.FUNITID AND D_L.FLOCALEID = 2052 - LEFT JOIN T_BD_UNIT_L E_L ON E_L.FUNITID = AE.FUNITID AND E_L.FLOCALEID = 2052 - LEFT JOIN T_BD_STOCK_L F_L ON F_L.FSTOCKID = AE_C.FSTOCKID AND F_L.FLOCALEID =2052 + DECLARE @FBILLNO varchar(80) + ,@MainNumber varchar(80) + ,@MainName varchar(80) + ,@FMOBILLNO varchar(80) + ,@FNumber varchar(80) + ,@FName varchar(80) + ,@FSALEORDERNO varchar(80) + ,@LCID int + set @FBILLNO = '' + set @MainNumber = '' + set @MainName = '' + set @FMOBILLNO = '' + set @FNumber = '' + set @FName = '' + set @FSALEORDERNO = '' + set @LCID = 2052 + + --set @FBILLNO ='' + --set @MainNumber='' + --set @MainName='' + --set @FMOBILLNO='' + --set @FNumber='' + --set @FName='' + --set @FSALEORDERNO='' + --set @LCID=2052 + + SELECT + top 1000 + ROW_NUMBER() OVER(ORDER BY T0.FMATERIALID) AS 'к' --1.к + ,T0.FID + --,T0.FFORMID + ,t7.FDATE AS '' --2. + ,T0.FBILLNO AS 'Ͷϵ'--3.Ͷϵ + --,T0.FMOID -- + ----,T0.FMOENTRYID --ӱ + --,t0.FSALEORDERID + --,t0.FSALEORDERENTRYID + ,T0.FSALEORDERNO AS '۶' --4.۶ + --,T0.FMATERIALID --ƷID + --5.λ + ,T1.FMNEMONICCODE AS ''--6. + ,T0.FMOBILLNO AS '񵥺'--7.񵥺 + ,T1.FNUMBER AS 'Ʒ'--8.Ʒ + ,T1_L.FNAME AS 'Ʒ'--9.Ʒ + ,T1_L.FSPECIFICATION AS 'Ʒͺ'--10.Ʒͺ + ,T3_L.FNAME AS 'Ʒλ'--11.Ʒλ + ,T0.FQTY AS 'Ʒ'--12.Ʒ + ,T2.FNUMBER AS 'ϴ'--13.ϴ + ,T2_L.FNAME AS ''--14. + ,(CASE T2.FMATERIALSRC WHEN 'A' THEN 'PLM' WHEN 'B' THEN 'ERP' ELSE '' END) AS 'Դ' --15.Դ + ,T2_L.FSPECIFICATION AS 'Ϲͺ'--16.Ϲͺ + ,t10_L.FNAME AS 'ϼ׼'--17.ϼ׼ + ,(T0E.FNUMERATOR / T0E.FDENOMINATOR) AS 'ϵλ' --18.ϵλ + --,T0E.FUNITID AS ENTRYUNITID + ,T4_L.FNAME AS 'ϵλ' --19.ϵλ + ,t9.FBASEQTY AS 'Ͽ'--20.Ͽ + ,T11E_A.FBASEINVQTY + --21.ϴ + ,T0E.FNEEDQTY AS ''--22. + ,T0E_Q.FBASEWIPQTY AS 'ǰƷ'--23.ǰƷ + --,(case when t9.FBASEQTY > T0E.FNEEDQTY then 0 else T0E.FNEEDQTY - t9.FBASEQTY end) AS 'Ƿ'--24.Ƿ + ,T11E.FBASELACKQTY AS 'Ƿ'--24.Ƿ + ,T11E_A.FBASEONORDERQTY AS ';' --25.; + ,T11E_A.FENTRYID + --26.ƻͶ + ,T0E_Q.FPICKEDQTY AS ''--27. + ,T0E_Q.FNOPICKEDQTY AS 'δ'--28.δ + ,T0E.FSTDQTY AS '׼'--׼ --29.׼ + ,T0E.FMUSTQTY AS 'Ӧ'--Ӧ --30.Ӧ + ,t0E_L.FMEMO AS 'ע'--31.ע + ,T0E_Q.FPICKEDQTY * (100 - t7E.FYIELDRATE) AS ''--32. + ,T0E_Q.FSCRAPQTY AS '' --33. + --34.ƻ + ,T0E_C.FSTOCKID + ,T5_L.FNAME AS 'ֿ'--35.ֿ + ,T0E_C.FSTOCKLOCID --36.λ + ,T0E_Q.FREPICKEDQTY AS ''--37. + ,t7E.FPLANSTARTDATE AS 'ƻ'--38.ƻ + ,t7E.FPLANFINISHDATE AS 'ƻ깤'--39.ƻ깤 + --40.λ + --,7E.FMEMO AS 'ע' --41.ע + ,t8_L.FMEMO AS 'BOMע'--42.BOMע + --,t8.FNUMERATOR + ,(CASE T7e.FPRODUCTTYPE WHEN 1 THEN 'Ʒ' WHEN 2 THEN 'Ʒ' WHEN 3 THEN 'Ʒ' ELSE '' END) AS ''--43. + --,T0.FWORKSHOPID + ,T6_L.FNAME AS ''--44. + ,(CASE T7E_A.FSTATUS WHEN 6 THEN 'ѽ᰸'ELSE '' END) AS '񵥽᰸'--45.񵥽᰸ + ,(CASE t0.FDOCUMENTSTATUS WHEN 'A' THEN '' WHEN 'B' THEN '' WHEN 'C' THEN '' WHEN 'D' THEN '' WHEN 'Z' THEN 'ݴ' ELSE '' END) AS 'Ͷϵ״̬'--46.Ͷϵ״̬ + --47.PRδתPO + ,6 AS FDECIMALS + FROM + T_PRD_MO t7 -- + LEFT JOIN T_PRD_MOENTRY t7E on t7E.FID = t7.FID + LEFT JOIN T_PRD_MOENTRY_A t7E_A on t7E_A.FENTRYID = t7E.FENTRYID + LEFT JOIN T_PRD_PPBOM T0 on T0.FMOID = t7.FID --嵥 + LEFT JOIN T_PRD_PPBOMENTRY T0E ON T0.FID = T0E.FID AND t0.FMOENTRYSEQ = t7e.FSEQ--嵥ӱ + LEFT JOIN T_PRD_PPBOMENTRY_Q T0E_Q ON T0E_Q.FENTRYID = T0E.FENTRYID --嵥ֱ + LEFT JOIN T_PRD_PPBOMENTRY_C T0E_C ON T0E_C.FENTRYID = T0E.FENTRYID + LEFT JOIN T_PRD_PPBOMENTRY_L t0E_L on t0E_L.FENTRYID = T0E.FENTRYID AND t0E_L.FLOCALEID = @LCID + LEFT JOIN T_BD_MATERIAL T1 ON T1.FMATERIALID = T0.FMATERIALID + LEFT JOIN T_BD_MATERIAL_L T1_L ON T1_L.FMATERIALID = T0.FMATERIALID AND T1_L.FLOCALEID = @LCID + LEFT JOIN T_BD_MATERIAL T2 ON T2.FMATERIALID = T0E.FMATERIALID + LEFT JOIN T_BD_MATERIAL_L T2_L ON T2_L.FMATERIALID = T0E.FMATERIALID AND T2_L.FLOCALEID = @LCID + LEFT JOIN T_BD_UNIT_L T3_L ON T3_L.FUNITID = T0.FUNITID AND T3_L.FLOCALEID = @LCID + LEFT JOIN T_BD_UNIT_L T4_L ON T4_L.FUNITID = T0E.FUNITID AND T4_L.FLOCALEID = @LCID + LEFT JOIN T_BD_STOCK_L T5_L ON T5_L.FSTOCKID = T0E_C.FSTOCKID AND T5_L.FLOCALEID =@LCID + LEFT JOIN T_BD_DEPARTMENT_L T6_L ON T6_L.FDEPTID = T0.FWORKSHOPID AND T6_L.FLOCALEID = @LCID + LEFT JOIN T_ENG_BOMCHILD_L t8_L ON t8_L.FENTRYID = T0E.FBOMENTRYID AND t8_L.FLOCALEID = @LCID + LEFT JOIN ( + SELECT + t0.FMATERIALID + ,t0.FSTOCKORGID + ,sum(t0.FBASEQTY) AS FBASEQTY + FROM + T_STK_INVENTORY t0 + GROUP BY + t0.FMATERIALID + ,t0.FSTOCKORGID + ) t9 on t9.FMATERIALID = T2.FMASTERID AND t9.FSTOCKORGID = t2.FUSEORGID + LEFT JOIN T_ENG_ROUTE_L t10_L on t10_L.FID = t7E.FROUTINGID AND t10_L.FLOCALEID = @LCID + LEFT JOIN T_PRD_PMPPBOMENTRY T11E on T11E.FMOID = t7e.FID AND T11E.FMOENTRYID = t7e.FENTRYID AND T11E.FMOENTRYSEQ = t7E.FSEQ AND T11E.FMATERIALIDSUB = T0E.FMATERIALID AND T11E.FMATERIALID = t0.FMATERIALID + LEFT JOIN T_PRD_PMPPBOMENTRY_A T11E_A ON T11E_A.FENTRYID = T11E.FENTRYID + WHERE + T0.FBILLNO = (CASE WHEN @FBILLNO != '' THEN @FBILLNO ELSE T0.FBILLNO END) + AND T0.FMOBILLNO = (CASE WHEN @FMOBILLNO != '' THEN @FMOBILLNO ELSE T0.FMOBILLNO END) + AND T0.FSALEORDERNO = (CASE WHEN @FSALEORDERNO != '' THEN @FSALEORDERNO ELSE T0.FSALEORDERNO END) + AND T1.FNUMBER = (CASE WHEN @MAINNUMBER != '' THEN @MAINNUMBER ELSE T1.FNUMBER END) + AND T1_L.FNAME = (CASE WHEN @MAINNAME != '' THEN @MAINNAME ELSE T1_L.FNAME END) + AND T2.FNUMBER = (CASE WHEN @FNUMBER != '' THEN @FNUMBER ELSE T2.FNUMBER END) + AND T2_L.FNAME = (CASE WHEN @FNAME != '' THEN @FNAME ELSE T2_L.FNAME END) \ No newline at end of file diff --git a/ProductionMaterialsReport/SqlServer/获取产品类型.sql b/ProductionMaterialsReport/SqlServer/获取产品类型.sql new file mode 100644 index 0000000..379c122 --- /dev/null +++ b/ProductionMaterialsReport/SqlServer/获取产品类型.sql @@ -0,0 +1,13 @@ +CREATE FUNCTION GetProductTypeText(@docStatu int) +RETURNS varchar(10) --طֵ +as +BEGIN +declare @result varchar(10) +select @result = (CASE @docStatu + WHEN 1 THEN 'Ʒ' + WHEN 2 THEN 'Ʒ' + WHEN 3 THEN 'Ʒ' + ELSE '' + END) +RETURN @result +END \ No newline at end of file diff --git a/ProductionMaterialsReport/SqlServer/获取单据状态.sql b/ProductionMaterialsReport/SqlServer/获取单据状态.sql new file mode 100644 index 0000000..3a17eba --- /dev/null +++ b/ProductionMaterialsReport/SqlServer/获取单据状态.sql @@ -0,0 +1,15 @@ +create FUNCTION ReturnStatuText(@docStatu varchar(10)) +RETURNS varchar(10) --طֵ +as +BEGIN +declare @result varchar(10) +select @result = (CASE @docStatu + WHEN 'A' THEN '' + WHEN 'B' THEN '' + WHEN 'C' THEN '' + WHEN 'D' THEN '' + WHEN 'Z' THEN 'ݴ' + ELSE '' + END) +RETURN @result +END \ No newline at end of file diff --git a/Trinomab.PUR_RPT_POOrderTrace/POOrderTraceServiceEx.cs b/Trinomab.PUR_RPT_POOrderTrace/POOrderTraceServiceEx.cs index 3a5c6c5..0e5d3c2 100644 --- a/Trinomab.PUR_RPT_POOrderTrace/POOrderTraceServiceEx.cs +++ b/Trinomab.PUR_RPT_POOrderTrace/POOrderTraceServiceEx.cs @@ -27,12 +27,12 @@ namespace Trinomab.PUR_RPT_POOrderTrace string strSql = $@"/*dialect*/ SELECT A.* - ,BE.F_ORA_TEXT2 AS FAPPLYDEPT + ,BE.F_ORA_TEXT2 AS FAPPLYDEPTID INTO {tableName} FROM {strTable} A - LEFT JOIN t_PUR_POOrderEntry BE ON A.FID = B.FID AND BE.FENTRYID = A.FENTRYID LEFT JOIN t_PUR_POOrder B ON A.FID = B.FID AND A.FBILLNO = B.FBILLNO + LEFT JOIN t_PUR_POOrderEntry BE ON A.FID = B.FID AND BE.FENTRYID = A.FENTRYID "; DBUtils.Execute(this.Context, strSql);