diff --git a/CY.CB_PROACNTGROUP/BasicDataFilterPlugIn.cs b/CY.CB_PROACNTGROUP/BasicDataFilterPlugIn.cs new file mode 100644 index 0000000..d45ce10 --- /dev/null +++ b/CY.CB_PROACNTGROUP/BasicDataFilterPlugIn.cs @@ -0,0 +1,45 @@ +using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; +using Kingdee.BOS.Core.DynamicForm.PlugIn; +using Kingdee.BOS.Util; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using Kingdee.BOS.Core.List; + +namespace CY.CB_PROACNTGROUP +{ + /// + /// 【表单插件】单据上查询辅助资料时设置过滤条件 + /// + [Description("【表单插件】单据上查询基础资料时设置过滤条件"), HotUpdate] + + public class BasicDataFilterPlugIn : AbstractDynamicFormPlugIn + { + public override void BeforeF7Select(BeforeF7SelectEventArgs e) + { + base.BeforeF7Select(e); + + // 给某个辅助资料字段的查询附加过滤条件 + + if (e.FieldKey.EqualsIgnoreCase("FPRODUCTID")) + { + var id = this.Model.DataObject["Id"].Long2Int(); + + var details = this.View.BusinessInfo.GetEntity("FEntity"); + var entry = this.View.Model.GetEntityDataObject(details); + var idList = entry.Select(x => x["PRODUCTID_Id"].Long2Int()).Where(w => w != 0); + // 只显示编码0开头的辅助资料 + + if (idList.Any()) + e.ListFilterParameter.Filter = e.ListFilterParameter.Filter.JoinFilterString($" FMATERIALID NOT IN ({string.Join(",", idList)})"); + + e.ListFilterParameter.Filter = e.ListFilterParameter.Filter.JoinFilterString($" FMATERIALID NOT IN (SELECT FPRODUCTID FROM T_CB_PROACNTENTRY WHERE FPRODUCTGROUPID != {id})"); + + return; + } + } + + } +} diff --git a/CY.CB_PROACNTGROUP/CY.CB_PROACNTGROUP.csproj b/CY.CB_PROACNTGROUP/CY.CB_PROACNTGROUP.csproj new file mode 100644 index 0000000..607756f --- /dev/null +++ b/CY.CB_PROACNTGROUP/CY.CB_PROACNTGROUP.csproj @@ -0,0 +1,68 @@ + + + + + Debug + AnyCPU + {5A26AFF4-AE8C-43A3-8C60-BBA153DAE608} + Library + Properties + CY.CB_PROACNTGROUP + CY.CB_PROACNTGROUP + 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.App.Core.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 + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/CY.CB_PROACNTGROUP/Properties/AssemblyInfo.cs b/CY.CB_PROACNTGROUP/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..df489c2 --- /dev/null +++ b/CY.CB_PROACNTGROUP/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的一般信息由以下 +// 控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("CY.CB_PROACNTGROUP")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("CY.CB_PROACNTGROUP")] +[assembly: AssemblyCopyright("Copyright © 2023")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 会使此程序集中的类型 +//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 +//请将此类型的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("5a26aff4-ae8c-43a3-8c60-bba153dae608")] + +// 程序集的版本信息由下列四个值组成: +// +// 主版本 +// 次版本 +// 生成号 +// 修订号 +// +//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 +//通过使用 "*",如下所示: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/CY.SAL_OUTSTOCK/AutoPushLostOutStock2Pay.cs b/CY.SAL_OUTSTOCK/AutoPushLostOutStock2Pay.cs index 3d03bf6..b650c13 100644 --- a/CY.SAL_OUTSTOCK/AutoPushLostOutStock2Pay.cs +++ b/CY.SAL_OUTSTOCK/AutoPushLostOutStock2Pay.cs @@ -21,6 +21,8 @@ using Kingdee.BOS.App.Core.ScheduleService; using Kingdee.BOS.App; using Kingdee.BOS.Core.DynamicForm; using Kingdee.BOS.Log; +using System.Data.SqlClient; +using Kingdee.BOS.Orm.Exceptions; namespace CY.SAL_OUTSTOCK { @@ -72,23 +74,60 @@ namespace CY.SAL_OUTSTOCK IOperationResult saveResult = ServiceHelper.GetService().Save(ctx, destFormMetadata.BusinessInfo, destObjs, OperateOption.Create()); + string msg = string.Empty; + if (saveResult.ValidationErrors != null && saveResult.ValidationErrors.Count > 0) { var errorInfo = string.Join(";", saveResult.ValidationErrors.Select(x => x.Message)); throw new KDBusinessException("", "未知原因导致自动保存失败原因:" + errorInfo); } - else + + object[] pkArray = (from p in destObjs select p[0]).ToArray(); + //设置提交参数 + IOperationResult submitResult = ServiceHelper.GetService().Submit(ctx, destFormMetadata.BusinessInfo, pkArray, "Submit", OperateOption.Create()); + + // 判断提交结果,如果失败,则内部会抛出错误,回滚代码 + if (submitResult.IsSuccess == false) { - succeedNum++; - Logger.Info(schedule.Name, $"销售出库单:{list.Key}下推应付单:{saveResult.OperateResult[0].Number}成功!"); + throw new KDBusinessException("", "未知原因导致自动提交失败!"); } + + //设置审核参数 + IOperationResult auditResult = ServiceHelper.GetService().Audit(ctx, destFormMetadata.BusinessInfo, pkArray, OperateOption.Create()); + // 判断提交结果,如果失败,则内部会抛出错误,回滚代码 + if (auditResult.IsSuccess == false) + { + throw new KDBusinessException("", "未知原因导致自动审核失败!"); + } + + succeedNum++; + Logger.Info(schedule.Name, $"销售出库单:{list.Key},下推应付单:{saveResult.OperateResult[0].Number}成功!"); + } + catch(OrmException ex) + { + failNum++; + Logger.Error($"服务器插件:{schedule.Name}错误(Orm)", $"销售出库单:{list.Key}", ex); } catch (KDBusinessException ex) + { + failNum++; + Logger.Error($"服务器插件:{schedule.Name}错误(KDB)", $"销售出库单:{list.Key}", ex); + } + catch (SqlException ex) + { + failNum++; + Logger.Error($"服务器插件:{schedule.Name}错误(Sql)", $"销售出库单:{list.Key}", ex); + } + catch (Exception ex) { failNum++; Logger.Error($"服务器插件:{schedule.Name}", $"销售出库单:{list.Key}", ex); } + finally + { + + } } } @@ -109,7 +148,7 @@ namespace CY.SAL_OUTSTOCK private DynamicObjectCollection GetDBData(Context ctx) { var unSql = $@" -select * from V_NOT_RECEIVABLE_OUTSTOCK +SELECT * from V_NOT_RECEIVABLE_OUTSTOCK "; var dbList = DBUtils.ExecuteDynamicObject(ctx, $"/*dialect*/{unSql}"); diff --git a/CY.SAL_OUTSTOCK/CY.SAL_OUTSTOCK.csproj b/CY.SAL_OUTSTOCK/CY.SAL_OUTSTOCK.csproj index 63ae828..48d5d34 100644 --- a/CY.SAL_OUTSTOCK/CY.SAL_OUTSTOCK.csproj +++ b/CY.SAL_OUTSTOCK/CY.SAL_OUTSTOCK.csproj @@ -72,6 +72,7 @@ + \ No newline at end of file diff --git a/CY.SAL_OUTSTOCK/SQLServer/SQLQuery4.sql b/CY.SAL_OUTSTOCK/SQLServer/SQLQuery4.sql new file mode 100644 index 0000000..cd48bfa --- /dev/null +++ b/CY.SAL_OUTSTOCK/SQLServer/SQLQuery4.sql @@ -0,0 +1,5 @@ + +UPDATE T_BD_MATERIAL SET F_CYG_CHECKBOX = 0 + +UPDATE A SET F_CYG_CHECKBOX = 1 FROM T_BD_MATERIAL A +INNER JOIN T_CB_PROACNTENTRY B ON A.FMATERIALID = B.FPRODUCTID \ No newline at end of file diff --git a/CY.SAL_OUTSTOCK/SQLServer/无关联应收单.sql b/CY.SAL_OUTSTOCK/SQLServer/无关联应收单.sql index 023291c..52591e8 100644 --- a/CY.SAL_OUTSTOCK/SQLServer/无关联应收单.sql +++ b/CY.SAL_OUTSTOCK/SQLServer/无关联应收单.sql @@ -23,5 +23,5 @@ FROM LEFT JOIN T_AR_RECEIVABLEENTRY_LK BE_LK ON BE_LK.FSBILLID = AE.FID AND BE_LK.FSID = AE.FENTRYID LEFT JOIN T_AR_RECEIVABLEENTRY BE ON BE.FENTRYID = BE_LK.FENTRYID WHERE - BE_LK.FSTABLENAME = 'T_SAL_OUTSTOCKENTRY') B ON A.FID = B.FID + BE_LK.FSTABLENAME = 'T_SAL_OUTSTOCKENTRY' and FARNOTJOINQTY > 0) B ON A.FID = B.FID WHERE B.FID IS NULL and a.FDOCUMENTSTATUS ='C' \ No newline at end of file diff --git a/CY.SAL_OUTSTOCK/SQLServer/无关联应收单2-未关联应收数量.sql b/CY.SAL_OUTSTOCK/SQLServer/无关联应收单2-未关联应收数量.sql new file mode 100644 index 0000000..c319ff9 --- /dev/null +++ b/CY.SAL_OUTSTOCK/SQLServer/无关联应收单2-未关联应收数量.sql @@ -0,0 +1,18 @@ +IF EXISTS (SELECT * FROM SYSOBJECTS WHERE NAME='V_NOT_RECEIVABLE_OUTSTOCK') --Ϊͼ + DROP VIEW V_NOT_RECEIVABLE_OUTSTOCK --ͼ +GO +CREATE VIEW V_NOT_RECEIVABLE_OUTSTOCK +AS +SELECT + A.FID + ,A.FBILLNO + ,AE.FENTRYID + ,AE_R.FARNOTJOINQTY + ,A.FDOCUMENTSTATUS +FROM + T_SAL_OUTSTOCK A + LEFT JOIN T_SAL_OUTSTOCKENTRY AE ON A.FID = AE.FID + LEFT JOIN T_SAL_OUTSTOCKENTRY_R AE_R ON AE.FENTRYID = AE_R.FENTRYID +WHERE +AE_R.FARNOTJOINQTY > 0 AND +A.FDOCUMENTSTATUS ='C' \ No newline at end of file diff --git a/CY.SAL_OUTSTOCK/TestAutoPushPlugIn.cs b/CY.SAL_OUTSTOCK/TestAutoPushPlugIn.cs index e7860d4..b326132 100644 --- a/CY.SAL_OUTSTOCK/TestAutoPushPlugIn.cs +++ b/CY.SAL_OUTSTOCK/TestAutoPushPlugIn.cs @@ -1,5 +1,4 @@ -using Kingdee.BOS.App.Core.ScheduleService; -using Kingdee.BOS.App.Data; +using Kingdee.BOS.App.Data; using Kingdee.BOS.Contracts; using Kingdee.BOS.Core.DynamicForm.Operation; using Kingdee.BOS.Core.List; @@ -21,6 +20,9 @@ using Kingdee.BOS.ServiceHelper; using Kingdee.BOS.Core.Metadata.FieldElement; using Kingdee.BOS.App; using Kingdee.BOS.Core.DynamicForm; +using Kingdee.BOS.Log; +using Kingdee.BOS.Orm.Exceptions; +using System.Data.SqlClient; namespace CY.SAL_OUTSTOCK { @@ -35,83 +37,127 @@ namespace CY.SAL_OUTSTOCK if (e.BarItemKey.Equals("tbTestAutoP")) { - Run(this.Context); + Run(this.Context, new Schedule + { + Name =new LocaleValue("tbTestAutoP销售出库单自定下推Test") + }); } } - public void Run(Context ctx) + public void Run(Context ctx, Schedule schedule) { - + Logger.Info(schedule.Name, $"销售出库单自动下推应付单start..."); + var succeedNum = 0; + var failNum = 0; try { - IConvertService service = Kingdee.BOS.App.ServiceHelper.GetService(); + IConvertService service = ServiceHelper.GetService(); + //源单据标识 string sourceFormId = "SAL_OUTSTOCK"; - + //目标单据标识 string targetFormId = "AR_RECEIVABLE"; + //目标单据类型id-标准应收单 string targetBillTypeId = "180ecd4afd5d44b5be78a6efe4a7e041"; - //var rules = service.GetConvertRules(ctx, sourceFormId, targetFormId); - + //转换规则 string convertRuleId = "AR_OutStockToReceivableMap"; //销售出库单下推应付单 - var ruleMeta = service.GetConvertRule(ctx, convertRuleId); var rule = ruleMeta.Rule; var dbList = GetDBData(ctx); if (dbList != null && dbList.Any()) { - var groupbyList = dbList.GroupBy(x => x["FBILLNO"]); - StringBuilder stringBuilder = new StringBuilder(); + var groupbyList = dbList.GroupBy(x => x["FBILLNO"].ToString()); + Logger.Info(schedule.Name, $"找到{groupbyList.Count()}条数据"); + foreach (var list in groupbyList) { - var pkid = dbList.Select(x => x["FID"]).ToArray(); List selectedRows = list.Select(x => new ListSelectedRow(x["FID"].ToString(), x["FENTRYID"].ToString(), 0, sourceFormId)).ToList(); + PushArgs pushArgs = new PushArgs(rule, selectedRows.ToArray());//下推入口参数 pushArgs.TargetBillTypeId = targetBillTypeId; + OperateOption option = OperateOption.Create();//选项参数 try { + //下推 ConvertOperationResult convertResult = service.Push(ctx, pushArgs, option); + //下推数据 DynamicObject[] destObjs = convertResult.TargetDataEntities.Select(r => r.DataEntity).ToArray(); - FormMetadata destFormMetadata = ServiceHelper.GetService().Load(this.Context, targetFormId) as FormMetadata; + FormMetadata destFormMetadata = ServiceHelper.GetService().Load(ctx, targetFormId) as FormMetadata; - IOperationResult saveResult = ServiceHelper.GetService().Save(this.Context, destFormMetadata.BusinessInfo, destObjs, OperateOption.Create()); + //保存 + IOperationResult saveResult = ServiceHelper.GetService().Save(ctx, destFormMetadata.BusinessInfo, destObjs, OperateOption.Create()); - if ((saveResult.ValidationErrors != null && saveResult.ValidationErrors.Count > 0)) + string msg = string.Empty; + + if (saveResult.ValidationErrors != null && saveResult.ValidationErrors.Count > 0) { var errorInfo = string.Join(";", saveResult.ValidationErrors.Select(x => x.Message)); throw new KDBusinessException("", "未知原因导致自动保存失败原因:" + errorInfo); } + + object[] pkArray = (from p in destObjs select p[0]).ToArray(); + //设置提交参数 + IOperationResult submitResult = ServiceHelper.GetService().Submit(ctx, destFormMetadata.BusinessInfo, pkArray, "Submit", OperateOption.Create()); + + // 判断提交结果,如果失败,则内部会抛出错误,回滚代码 + if (submitResult.IsSuccess == false) + { + throw new KDBusinessException("", "未知原因导致自动提交失败!"); + } + + //设置审核参数 + IOperationResult auditResult = ServiceHelper.GetService().Audit(ctx, destFormMetadata.BusinessInfo, pkArray, OperateOption.Create()); + // 判断提交结果,如果失败,则内部会抛出错误,回滚代码 + if (auditResult.IsSuccess == false) + { + throw new KDBusinessException("", "未知原因导致自动审核失败!"); + } + + succeedNum++; + Logger.Info(schedule.Name, $"销售出库单:{list.Key},下推应付单:{saveResult.OperateResult[0].Number}成功!"); + } + catch (OrmException ex) + { + failNum++; + Logger.Error($"服务器插件:{schedule.Name}错误(Orm)", $"销售出库单:{list.Key}", ex); } catch (KDBusinessException ex) { - stringBuilder.AppendLine($"单据:{list.Key}{ex.GetErrorInfo()}"); + failNum++; + Logger.Error($"服务器插件:{schedule.Name}错误(KDB)", $"销售出库单:{list.Key}", ex); + } + catch (SqlException ex) + { + failNum++; + Logger.Error($"服务器插件:{schedule.Name}错误(Sql)", $"销售出库单:{list.Key}", ex); + } + catch (Exception ex) + { + failNum++; + Logger.Error($"服务器插件:{schedule.Name}", $"销售出库单:{list.Key}", ex); } } - - if (!stringBuilder.IsNullOrEmpty()) - throw new Exception(stringBuilder.ToString()); } } catch (Exception ex) { - //ScheduleMsgDal _msgDal = new ScheduleMsgDal(); - //ScheduleMsg msg = new ScheduleMsg(); - //msg.MsgDetail = ex.Message; - //msg.HappenTime = DateTime.Now; - //msg.MsgType = 5;// 1 成功 5异常, - //msg.ScheduleTypeId = schedule.ScheduleTypeId; - //_msgDal.InsertScheduleMsg(ctx, msg); - + Logger.Error($"服务器插件:{schedule.Name}", ex.Message, ex); + } + finally + { + Logger.Info(schedule.Name, $"成功{succeedNum}条,失败{failNum}条"); + Logger.Info(schedule.Name, $"销售出库单自动下推应付单end..."); } - } + private DynamicObjectCollection GetDBData(Context ctx) { var unSql = $@" diff --git a/DataReport/Class1.cs b/DataReport/Class1.cs new file mode 100644 index 0000000..aa554f5 --- /dev/null +++ b/DataReport/Class1.cs @@ -0,0 +1,15 @@ +using Microsoft.Analytics.Interfaces; +using Microsoft.Analytics.Interfaces.Streaming; +using Microsoft.Analytics.Types.Sql; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; + +namespace DataReport +{ + public class Class1 + { + } +} \ No newline at end of file diff --git a/DataReport/DataReport.csproj b/DataReport/DataReport.csproj new file mode 100644 index 0000000..5d88068 --- /dev/null +++ b/DataReport/DataReport.csproj @@ -0,0 +1,57 @@ + + + + + Debug + AnyCPU + 2.0 + {416D63FD-0477-49AA-A954-A7C5B95A9B51};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + {C1B12AAC-35ED-4B3B-83DF-5D7781F11C17} + Library + Properties + DataReport + DataReport + v4.8 + 512 + + + 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/DataReport/Properties/AssemblyInfo.cs b/DataReport/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..4ee8931 --- /dev/null +++ b/DataReport/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("DataReport")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("DataReport")] +[assembly: AssemblyCopyright("Copyright © 2023")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("c1b12aac-35ed-4b3b-83df-5d7781f11c17")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Extensions.zip b/Extensions.zip deleted file mode 100644 index 68c3939..0000000 Binary files a/Extensions.zip and /dev/null differ diff --git a/GateDge2023.sln b/GateDge2023.sln index 48ba309..e79f879 100644 --- a/GateDge2023.sln +++ b/GateDge2023.sln @@ -7,36 +7,47 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProductionMaterialRequisiti EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UseGetFmaterialData", "UseGetFmaterialData\UseGetFmaterialData.csproj", "{4D6BDA2D-FED0-4514-B4CD-FF32C5389247}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "珠海市供水有限公司", "珠海市供水有限公司", "{F03B5F75-6DCD-4FF8-989F-403C5EA0AA5B}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "02.珠海市供水有限公司", "02.珠海市供水有限公司", "{F03B5F75-6DCD-4FF8-989F-403C5EA0AA5B}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "未分类", "未分类", "{2217EA0E-E53F-4ECC-A49D-F38BC743F47A}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "00.未分类", "00.未分类", "{2217EA0E-E53F-4ECC-A49D-F38BC743F47A}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SAL_OUTSTOCK", "SAL_OUTSTOCK\SAL_OUTSTOCK.csproj", "{12B329E1-C4F2-4CA7-BF3E-313F22AD527A}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnPayableInStock", "UnPayableInStock\UnPayableInStock.csproj", "{2E8D2379-C8CB-47E1-BF89-A11111F18A08}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "扩展", "扩展", "{4ACB1DA8-8A4D-451A-A5FB-3CBD7A261263}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "01.扩展", "01.扩展", "{4ACB1DA8-8A4D-451A-A5FB-3CBD7A261263}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ExtensionMethods", "Extensions\ExtensionMethods.csproj", "{50532462-8F7F-455C-B4B3-732ED764E2FA}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTestProject1", "UnitTestProject1\UnitTestProject1.csproj", "{6EE96AB5-8FD3-4A48-912A-CA2AF5B82300}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "天大药业(珠海)有限公司", "天大药业(珠海)有限公司", "{56C57ADC-8E92-4340-AC25-B7647758D4EB}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "04.天大药业(珠海)有限公司", "04.天大药业(珠海)有限公司", "{56C57ADC-8E92-4340-AC25-B7647758D4EB}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "月度生产计划", "月度生产计划", "{A362AFBC-FC73-46A6-9185-15C17E694538}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MonthlyProductionSchedule", "MonthlyProductionSchedule\MonthlyProductionSchedule.csproj", "{86DA044C-9D3B-43BD-8BDB-24B65E152604}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "旭东", "旭东", "{0C4E3DC3-F1FA-4BD7-8D81-BF5EFD452A51}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "06.泰诺麦博", "06.泰诺麦博", "{0C4E3DC3-F1FA-4BD7-8D81-BF5EFD452A51}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "汇威", "汇威", "{42311C80-7B4C-4353-BCA9-4ABD024290C8}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "03.汇威", "03.汇威", "{42311C80-7B4C-4353-BCA9-4ABD024290C8}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HW.App.Sal.Report.PlugInEx", "Kingdee.K3.SCM.Sal.Report.PlugInEx\HW.App.Sal.Report.PlugInEx.csproj", "{01F02D15-2726-4077-80FC-9E38EF29BABC}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "长园", "长园", "{270F576A-EFFF-4728-8E5C-ABDF5C3F3C8B}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "05.长园", "05.长园", "{270F576A-EFFF-4728-8E5C-ABDF5C3F3C8B}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CY.SAL_OUTSTOCK", "CY.SAL_OUTSTOCK\CY.SAL_OUTSTOCK.csproj", "{6A52A594-F6A9-4754-BF53-22A126B54081}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "生产投料单", "生产投料单", "{88CCFE9E-3837-4EA9-80EB-A064110523F8}" + ProjectSection(SolutionItems) = preProject + 生产投料单-1.sql = 生产投料单-1.sql + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProductionMaterialsReport", "ProductionMaterialsReport\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 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Trinomab.PUR_RPT_POOrderTrace", "Trinomab.PUR_RPT_POOrderTrace\Trinomab.PUR_RPT_POOrderTrace.csproj", "{9E2DDD7F-02EE-4BDF-A696-4CC6D310FEAD}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -79,6 +90,18 @@ Global {6A52A594-F6A9-4754-BF53-22A126B54081}.Debug|Any CPU.Build.0 = Debug|Any CPU {6A52A594-F6A9-4754-BF53-22A126B54081}.Release|Any CPU.ActiveCfg = Release|Any CPU {6A52A594-F6A9-4754-BF53-22A126B54081}.Release|Any CPU.Build.0 = Release|Any CPU + {49AF92F2-2DCF-42F4-AB29-12298575D803}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {49AF92F2-2DCF-42F4-AB29-12298575D803}.Debug|Any CPU.Build.0 = Debug|Any CPU + {49AF92F2-2DCF-42F4-AB29-12298575D803}.Release|Any CPU.ActiveCfg = Release|Any CPU + {49AF92F2-2DCF-42F4-AB29-12298575D803}.Release|Any CPU.Build.0 = Release|Any CPU + {5A26AFF4-AE8C-43A3-8C60-BBA153DAE608}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5A26AFF4-AE8C-43A3-8C60-BBA153DAE608}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5A26AFF4-AE8C-43A3-8C60-BBA153DAE608}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5A26AFF4-AE8C-43A3-8C60-BBA153DAE608}.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 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -94,6 +117,10 @@ Global {86DA044C-9D3B-43BD-8BDB-24B65E152604} = {A362AFBC-FC73-46A6-9185-15C17E694538} {01F02D15-2726-4077-80FC-9E38EF29BABC} = {42311C80-7B4C-4353-BCA9-4ABD024290C8} {6A52A594-F6A9-4754-BF53-22A126B54081} = {270F576A-EFFF-4728-8E5C-ABDF5C3F3C8B} + {88CCFE9E-3837-4EA9-80EB-A064110523F8} = {42311C80-7B4C-4353-BCA9-4ABD024290C8} + {49AF92F2-2DCF-42F4-AB29-12298575D803} = {42311C80-7B4C-4353-BCA9-4ABD024290C8} + {5A26AFF4-AE8C-43A3-8C60-BBA153DAE608} = {270F576A-EFFF-4728-8E5C-ABDF5C3F3C8B} + {9E2DDD7F-02EE-4BDF-A696-4CC6D310FEAD} = {0C4E3DC3-F1FA-4BD7-8D81-BF5EFD452A51} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {16F7DBDD-F487-41D6-A856-9E9B7B3F61C5} diff --git a/HW.DataBase/HW.DataBase.sqlproj b/HW.DataBase/HW.DataBase.sqlproj new file mode 100644 index 0000000..baaafaf --- /dev/null +++ b/HW.DataBase/HW.DataBase.sqlproj @@ -0,0 +1,60 @@ + + + + Debug + AnyCPU + HW.DataBase + 2.0 + 4.1 + {ba245971-0afa-4434-a524-b53d0ff7f8d6} + Microsoft.Data.Tools.Schema.Sql.Sql160DatabaseSchemaProvider + Database + + + HW.DataBase + HW.DataBase + 1033, CI + BySchemaAndSchemaType + True + v4.7.2 + CS + Properties + False + True + True + + + bin\Release\ + $(MSBuildProjectName).sql + False + pdbonly + true + false + true + prompt + 4 + + + bin\Debug\ + $(MSBuildProjectName).sql + false + true + full + false + true + true + prompt + 4 + + + 11.0 + + True + 11.0 + + + + + + + \ No newline at end of file diff --git a/HW.DataBase/Script1.sql b/HW.DataBase/Script1.sql new file mode 100644 index 0000000..5f28270 --- /dev/null +++ b/HW.DataBase/Script1.sql @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Kingdee.K3.SCM.App.Sal.Report.dll b/Kingdee.K3.SCM.App.Sal.Report.dll new file mode 100644 index 0000000..791cbdc Binary files /dev/null and b/Kingdee.K3.SCM.App.Sal.Report.dll differ diff --git a/Kingdee.K3.SCM.Sal.Report.PlugInEx/HW.App.Sal.Report.PlugInEx.csproj b/Kingdee.K3.SCM.Sal.Report.PlugInEx/HW.App.Sal.Report.PlugInEx.csproj index 4ecc6c7..227a42e 100644 --- a/Kingdee.K3.SCM.Sal.Report.PlugInEx/HW.App.Sal.Report.PlugInEx.csproj +++ b/Kingdee.K3.SCM.Sal.Report.PlugInEx/HW.App.Sal.Report.PlugInEx.csproj @@ -53,7 +53,8 @@ ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.K3.BD.Contracts.dll - + + False ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.K3.SCM.App.Sal.Report.dll @@ -72,5 +73,8 @@ + + + \ No newline at end of file diff --git a/Kingdee.K3.SCM.Sal.Report.PlugInEx/SaleOutStockDetailRptEx.cs b/Kingdee.K3.SCM.Sal.Report.PlugInEx/SaleOutStockDetailRptEx.cs index 872cb52..5900c7f 100644 --- a/Kingdee.K3.SCM.Sal.Report.PlugInEx/SaleOutStockDetailRptEx.cs +++ b/Kingdee.K3.SCM.Sal.Report.PlugInEx/SaleOutStockDetailRptEx.cs @@ -1,4 +1,6 @@ using Kingdee.BOS; +using Kingdee.BOS.App.Data; +using Kingdee.BOS.Contracts; using Kingdee.BOS.Core.Report; using Kingdee.BOS.Util; using Kingdee.K3.SCM.App.Sal.Report; @@ -8,6 +10,7 @@ using System.ComponentModel; using System.Data; using System.Linq; using System.Net; +using System.Security.Cryptography; using System.Text; using System.Threading.Tasks; @@ -16,47 +19,45 @@ namespace HW.App.Sal.Report.PlugInEx [Description("销售出库明细报表数据源插件-扩展"), HotUpdate] public class SaleOutStockDetailRptEx : SaleOutStockDetailRpt { - public override void Initialize() - { - base.Initialize(); - } - public override ReportTitles GetReportTitles(IRptParams filter) - { - return base.GetReportTitles(filter); - } - - public override List GetSummaryColumnInfo(IRptParams filter) - { - return base.GetSummaryColumnInfo(filter); - } + private string[] TempTableName; public override void BuilderReportSqlAndTempTable(IRptParams filter, string tableName) { - base.BuilderReportSqlAndTempTable(filter, tableName); + //创建临时表用于保存自己的数据 + IDBService dbservice = Kingdee.BOS.App.ServiceHelper.GetService(); + TempTableName = dbservice.CreateTemporaryTableName(this.Context, 1); + string strTable = TempTableName[0]; - } + //调用基类方式获取初步查询数据 + base.BuilderReportSqlAndTempTable(filter, strTable); - protected override DataTable GetReportData(string tablename, IRptParams filter) - { - var dataTable = base.GetReportData(tablename, filter); + string strSql = $@"/*dialect*/ +SELECT + A.* + ,BE.F_ORA_TEXT2 AS FSALESCATEGORY + INTO {tableName} +FROM + {strTable} A + LEFT JOIN T_SAL_OUTSTOCK B ON A.FID = B.FID AND A.FBILLNUMBER = B.FBILLNO + LEFT JOIN T_SAL_OUTSTOCKENTRY BE ON A.FID = B.FID AND BE.FENTRYID = A.FENTRYID "; - - var sql = @"select "; - return dataTable; + DBUtils.Execute(this.Context, strSql); } public override void CloseReport() { + //删除临时表 + if (TempTableName == null || TempTableName.Length == 0) + { + return; + } + + IDBService dbservice = Kingdee.BOS.App.ServiceHelper.GetService(); + + dbservice.DeleteTemporaryTableName(this.Context, TempTableName); + + base.CloseReport(); } - - public override ReportHeader GetReportHeaders(IRptParams filter) - { - var header = base.GetReportHeaders(filter); - - //header.AddChild("FSALESCATEGORY", new LocaleValue("销售类别")); - - return header; - } } } diff --git a/MonthlyProductionSchedule/ProductionPlanRptPlugIn.cs b/MonthlyProductionSchedule/ProductionPlanRptPlugIn.cs index 1040d41..867c308 100644 --- a/MonthlyProductionSchedule/ProductionPlanRptPlugIn.cs +++ b/MonthlyProductionSchedule/ProductionPlanRptPlugIn.cs @@ -75,24 +75,7 @@ namespace MonthlyProductionSchedule // // 设置精度控制 var list = new List(); - //// 数量 - //list.Add(new DecimalControlField - //{ - // ByDecimalControlFieldName = "FQty", - // DecimalControlFieldName = "FUnitPrecision" - //}); - //// 单价 - //list.Add(new DecimalControlField - //{ - // ByDecimalControlFieldName = "FTAXPRICE", - // DecimalControlFieldName = "FPRICEDIGITS" - //}); - //// 金额 - //list.Add(new DecimalControlField - //{ - // ByDecimalControlFieldName = "FALLAMOUNT", - // DecimalControlFieldName = "FAMOUNTDIGITS" - //}); + this.ReportProperty.DecimalControlFieldList = list; } @@ -198,9 +181,9 @@ namespace MonthlyProductionSchedule header.AddChild("SAFESTOCKCOUNT", new LocaleValue("安全库存量"), _colIndex++); header.AddChild("SAFESTOCK", new LocaleValue("安全库存数量"), _colIndex++); header.AddChild("M01", new LocaleValue("本月预计需求量"), _colIndex++); - header.AddChild("S01", new LocaleValue(date.AddMonths(-1).ToString("yyyyMM") + "发货量"), _colIndex++); - header.AddChild("S02", new LocaleValue(date.AddMonths(-2).ToString("yyyyMM") + "发货量"), _colIndex++); - header.AddChild("S03", new LocaleValue(date.AddMonths(-3).ToString("yyyyMM") + "发货量"), _colIndex++); + header.AddChild("S01", new LocaleValue(date.AddMonths(-1).ToString("yyyy年MM月") + "发货量"), _colIndex++); + header.AddChild("S02", new LocaleValue(date.AddMonths(-2).ToString("yyyy年MM月") + "发货量"), _colIndex++); + header.AddChild("S03", new LocaleValue(date.AddMonths(-3).ToString("yyyy年MM月") + "发货量"), _colIndex++); header.AddChild("InStockQty", new LocaleValue("已入库量"), _colIndex++); header.AddChild("InProductionQty", new LocaleValue("在生产量"), _colIndex++); header.AddChild("TotalStockQty", new LocaleValue("合计入库量"), _colIndex++); diff --git a/MonthlyProductionSchedule/SQLServer/月度生产计划表-预测单.sql b/MonthlyProductionSchedule/SQLServer/月度生产计划表-预测单.sql index 8af8bd5..fd8aa5f 100644 --- a/MonthlyProductionSchedule/SQLServer/月度生产计划表-预测单.sql +++ b/MonthlyProductionSchedule/SQLServer/月度生产计划表-预测单.sql @@ -31,7 +31,7 @@ BEGIN FROM T_PRD_MORPT A LEFT JOIN T_PRD_MORPTENTRY AE ON AE.FID = A.FID - WHERE A.FDOCUMENTSTATUS='C' + WHERE A.FDOCUMENTSTATUS='C' AND A.FBILLTYPE = '50fa7c2eda7947b89fab5431bf25d48e' ) B on B.FMOENTRYID = AE.FENTRYID WHERE AE.FSRCBILLTYPE ='PLN_PLANORDER' @@ -91,34 +91,25 @@ BEGIN CONVERT ( VARCHAR,CAST(CS.FEXPPERIOD AS INT) ) + '' WHEN 'D' THEN CONVERT ( VARCHAR, CAST(( - CASE CS.FEXPPERIOD%30 WHEN 0 THEN CS.FEXPPERIOD/30 ELSE CS.FEXPPERIOD / 365 * 12 END + CASE CS.FEXPPERIOD % 30 WHEN 0 THEN CS.FEXPPERIOD / 30 ELSE CS.FEXPPERIOD / 365 * 12 END ) AS INT)) + '' ELSE '' END END) AS 'SHELFLIFE' - --,'' AS '׼' + ,C.FLotSize AS StandardLot ,CS.FSAFESTOCK AS SAFESTOCK --ȫ ,CS.FSTOREUNITID --浥λ - ,(CASE CP.FPACKUNITCONVERRATIO - WHEN 0 - THEN CS.FSAFESTOCK ELSE (CS.FSAFESTOCK/CP.FPACKUNITCONVERRATIO) - END) AS SAFESTOCKCOUNT + ,(PackageValConver(CS.FSAFESTOCK, CP.FPACKUNITCONVERRATIO)) AS SAFESTOCKCOUNT ,CP.FLOTYIELD -- 'ÿ' ,CP.FPACKUNITCONVERRATIO -- 'װ' ,CP.FPACKUNITID -- 'λ' - ,AE.M01 - ,AE.S01 - ,AE.S02 - ,AE.S03 - ,(CustomUnitNumConversion((D.FQTY + E.FBASEQTY - D.FFINISHQTY),CP.FPACKUNITCONVERRATIO)) AS InProductionQty -- - ,(CustomUnitNumConversion(E.FBASEQTY,CP.FPACKUNITCONVERRATIO)) AS InStockQty -- - --,(CASE CP.FPACKUNITCONVERRATIO - -- WHEN 0 - -- THEN (D.FQTY + E.FBASEQTY) ELSE ((D.FQTY + E.FBASEQTY)/CP.FPACKUNITCONVERRATIO) - --END) AS TotalStockQty --ϼ - ,(CASE CP.FPACKUNITCONVERRATIO - WHEN 0 - THEN B.FOrderQty ELSE (B.FOrderQty/CP.FPACKUNITCONVERRATIO) - END) AS OrderLotQty --ƻ + ,PackageValConver(AE.M01,CP.FPACKUNITCONVERRATIO) as M01 + ,PackageValConver(AE.S01,CP.FPACKUNITCONVERRATIO) as S01 + ,PackageValConver(AE.S02,CP.FPACKUNITCONVERRATIO) as S02 + ,PackageValConver(AE.S03,CP.FPACKUNITCONVERRATIO) as S03 + ,PackageValConver((ISNULL(D.FQTY,0) - ISNULL(D.FFINISHQTY,0)),CP.FPACKUNITCONVERRATIO) AS InProductionQty -- + ,PackageValConver(ISNULL(E.FQTY,0),CP.FPACKUNITCONVERRATIO) AS InStockQty -- + ,PackageValConver((ISNULL(D.FQTY,0) + ISNULL(E.FQTY,0)),CP.FPACKUNITCONVERRATIO) AS TotalStockQty --ϼ + ,PackageValConver(B.FOrderQty,CP.FPACKUNITCONVERRATIO) AS OrderLotQty --ƻ ,B.FFirmQty ,B.FOrderQty into #TMPMPS @@ -136,9 +127,9 @@ BEGIN ,A.FSTOCKORGID ,SUM(A1.FQTY) AS FQTY FROM T_STK_INVENTORY A - left join T_STK_INVINITDETAIL A1 on A.FMATERIALID = A1.FMATERIALID AND A.Fstockid = A1.ftockid - GROUP BY A.FMATERIALID,A.FSTOCKORGID - ) E on E.FMATERIALID = C.FMASTERID AND E.FSTOCKORGID = A.FFOREORGID + LEFT JOIN T_STK_INVINITDETAIL A1 on A.FMATERIALID = A1.FMATERIALID AND A.Fstockid = A1.FSTOCKID + group by A.FMATERIALID,A.FSTOCKORGID + ) E on E.FMATERIALID = B.FMATERIALID WHERE --A.FDATE BETWEEN '2023-12-01 00:00:00' AND '2023-12-31 23:59:59' A.FDATE BETWEEN @STARTDATE AND @ENDDATE @@ -153,8 +144,8 @@ BEGIN ALTER TABLE #TMPMPS ADD FPACKUNITCONVT VARCHAR(100) UPDATE T SET T.FPACKUNITCONVT = CONCAT(CONVERT(VARCHAR,T.FPACKUNITCONVERRATIO),T.FSTOREUNITNAME,'/',T.FPACKUNITNAME) FROM #TMPMPS T - ALTER TABLE #TMPMPS ADD TotalStockQty decimal(23,6) - UPDATE T SET T.TotalStockQty = T.InProductionQty +T.InStockQty FROM #TMPMPS T + --ALTER TABLE #TMPMPS ADD TotalStockQty decimal(23,6) + --UPDATE T SET T.TotalStockQty = T.InProductionQty +T.InStockQty FROM #TMPMPS T --ѯend DECLARE @SQL VARCHAR(2000) diff --git a/MonthlyProductionSchedule/SQLServer/自定义函数.sql b/MonthlyProductionSchedule/SQLServer/自定义函数.sql index 25536a2..f49ac23 100644 --- a/MonthlyProductionSchedule/SQLServer/自定义函数.sql +++ b/MonthlyProductionSchedule/SQLServer/自定义函数.sql @@ -1,4 +1,4 @@ -CREATE FUNCTION dbo.CustomUnitNumConversion(@cnvNumber decimal(23,6) ,@coefficient int) +CREATE FUNCTION PackageValConver(@cnvNumber decimal(23,6) ,@coefficient int) RETURNS decimal(23,6) --طֵ as BEGIN diff --git a/ProductionMaterialsReport/Class1.cs b/ProductionMaterialsReport/Class1.cs new file mode 100644 index 0000000..66dafd4 --- /dev/null +++ b/ProductionMaterialsReport/Class1.cs @@ -0,0 +1,12 @@ +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/ProductionMaterialsReport.csproj new file mode 100644 index 0000000..38f811a --- /dev/null +++ b/ProductionMaterialsReport/ProductionMaterialsReport.csproj @@ -0,0 +1,53 @@ + + + + + Debug + AnyCPU + {49AF92F2-2DCF-42F4-AB29-12298575D803} + Library + Properties + ProductionMaterialsReport + ProductionMaterialsReport + v4.8 + 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/ProductionMaterialsReport/Properties/AssemblyInfo.cs b/ProductionMaterialsReport/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..d125c48 --- /dev/null +++ b/ProductionMaterialsReport/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的一般信息由以下 +// 控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("ProductionMaterialsReport")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("ProductionMaterialsReport")] +[assembly: AssemblyCopyright("Copyright © 2023")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 会使此程序集中的类型 +//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 +//请将此类型的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("49af92f2-2dcf-42f4-ab29-12298575d803")] + +// 程序集的版本信息由下列四个值组成: +// +// 主版本 +// 次版本 +// 生成号 +// 修订号 +// +//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 +//通过使用 "*",如下所示: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/ProductionMaterialsReport/SqlServer/SQLQuery4.sql b/ProductionMaterialsReport/SqlServer/SQLQuery4.sql new file mode 100644 index 0000000..4b5d47d --- /dev/null +++ b/ProductionMaterialsReport/SqlServer/SQLQuery4.sql @@ -0,0 +1,55 @@ +SELECT * INTO #TMP123 FROM #TPRDMOINFO +DROP TABLE #TPRDMOINFO + +SELECT + '' AS 'к', + '' AS '', + A.FBILLNO AS 'Ͷϵ', + '' AS '۶', + '' AS 'λ', + A.FMNEMONICCODE AS '', + A.FBILLNO AS '񵥺', + A.FNUMBER AS 'Ʒ', + A.FNAME AS 'Ʒ', + A.FSPECIFICATION AS 'Ʒͺ', + A.FNAME AS 'Ʒλ', + A.FQTY AS 'Ʒ', + A.FNUMBER AS 'ϴ', + A.FNAME AS '', + ( CASE A.FMATERIALSRC WHEN 'A' THEN 'PLM' WHEN 'B' THEN 'ERP' ELSE '' END ) AS 'Դ', + A.FSPECIFICATION AS 'Ϲͺ', + '' AS 'ϼ׼', + A.FSTDQTY AS 'ϵλ', + A.FUNITID AS 'ϵλ', + A.FINVENTORYQTY AS 'Ͽ', + '' AS 'ϴ', + A.FNEEDQTY AS '', + '' AS 'ǰƷ', + '' AS 'Ƿ', + '' AS ';', + '' AS 'ƻͶ', + A.FPICKEDQTY AS '', + A.FNOPICKEDQTY AS 'δ', + '' AS '׼', + A.FMUSTQTY AS 'Ӧ', + '' AS 'ע', + '' AS '', + A.FSCRAPQTY AS '', + '' AS 'ƻ', + '' AS 'ֿ', + '' AS 'λ', + A.FREPICKEDQTY AS '', + A.FPLANSTARTDATE AS 'ƻ', + A.FPLANFINISHDATE AS 'ƻ깤', + '' AS 'λ', + '' AS 'ע', + '' AS 'BOMע', + A.FBILLTYPE AS '', + A.FWORKSHOPID AS '', + ( CASE AE_A.FSTATUS WHEN 6 THEN 'ѽ᰸' ELSE '' END ) AS '񵥽᰸', + A.FDOCUMENTSTATUS AS 'Ͷϵ״̬', + '' AS 'PRδתPO' +FROM + #TMP123 A + + DROP TABLE #TMP123 \ No newline at end of file diff --git a/ProductionMaterialsReport/SqlServer/生产用料清单.sql b/ProductionMaterialsReport/SqlServer/生产用料清单.sql new file mode 100644 index 0000000..3d18649 --- /dev/null +++ b/ProductionMaterialsReport/SqlServer/生产用料清单.sql @@ -0,0 +1,49 @@ +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 diff --git a/ProductionMaterialsReport/SqlServer/生产订单.sql b/ProductionMaterialsReport/SqlServer/生产订单.sql new file mode 100644 index 0000000..cda13e1 --- /dev/null +++ b/ProductionMaterialsReport/SqlServer/生产订单.sql @@ -0,0 +1,10 @@ +SELECT + A.FID + ,A.FBILLNO + ,AE.FPLANSTARTDATE --ƻʱ + ,AE.FPLANFINISHDATE --ƻ깤ʱ + ,AE.FPRODUCTTYPE -- + ,AE.FWORKSHOPID -- +FROM + T_PRD_MO A + LEFT JOIN T_PRD_MOENTRY AE ON A.FID = AE.FID \ No newline at end of file diff --git a/SAL_OUTSTOCK.dll b/SAL_OUTSTOCK.dll deleted file mode 100644 index ce1b347..0000000 Binary files a/SAL_OUTSTOCK.dll and /dev/null differ diff --git a/SAL_OUTSTOCK.zip b/SAL_OUTSTOCK.zip deleted file mode 100644 index 9298245..0000000 Binary files a/SAL_OUTSTOCK.zip and /dev/null differ diff --git a/TNMB.PUR_RPT_POOrderTrace/POOrderTraceServiceRptEx.cs b/TNMB.PUR_RPT_POOrderTrace/POOrderTraceServiceRptEx.cs new file mode 100644 index 0000000..da7c0ae --- /dev/null +++ b/TNMB.PUR_RPT_POOrderTrace/POOrderTraceServiceRptEx.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace TNMB.PUR_RPT_POOrderTrace +{ + public class POOrderTraceServiceRptEx + { + + } +} diff --git a/TNMB.PUR_RPT_POOrderTrace/Properties/AssemblyInfo.cs b/TNMB.PUR_RPT_POOrderTrace/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..951b346 --- /dev/null +++ b/TNMB.PUR_RPT_POOrderTrace/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的一般信息由以下 +// 控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("TNMB.PUR_RPT_POOrderTrace")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("TNMB.PUR_RPT_POOrderTrace")] +[assembly: AssemblyCopyright("Copyright © 2023")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 会使此程序集中的类型 +//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 +//请将此类型的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("bcc79c5a-0154-4484-981e-13b7a4ffb4d3")] + +// 程序集的版本信息由下列四个值组成: +// +// 主版本 +// 次版本 +// 生成号 +// 修订号 +// +//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 +//通过使用 "*",如下所示: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/TNMB.PUR_RPT_POOrderTrace/TNMB.PUR_RPT_POOrderTrace.csproj b/TNMB.PUR_RPT_POOrderTrace/TNMB.PUR_RPT_POOrderTrace.csproj new file mode 100644 index 0000000..8276b66 --- /dev/null +++ b/TNMB.PUR_RPT_POOrderTrace/TNMB.PUR_RPT_POOrderTrace.csproj @@ -0,0 +1,47 @@ + + + + + Debug + AnyCPU + {BCC79C5A-0154-4484-981E-13B7A4FFB4D3} + Library + Properties + TNMB.PUR_RPT_POOrderTrace + TNMB.PUR_RPT_POOrderTrace + 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/Trinomab.PUR_RPT_POOrderTrace/POOrderTraceServiceEx.cs b/Trinomab.PUR_RPT_POOrderTrace/POOrderTraceServiceEx.cs new file mode 100644 index 0000000..3a5c6c5 --- /dev/null +++ b/Trinomab.PUR_RPT_POOrderTrace/POOrderTraceServiceEx.cs @@ -0,0 +1,57 @@ +using Kingdee.BOS.App; +using Kingdee.BOS.App.Data; +using Kingdee.BOS.Contracts; +using Kingdee.BOS.Core.Report; +using Kingdee.K3.SCM.App.Purchase.Report; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace Trinomab.PUR_RPT_POOrderTrace +{ + public class POOrderTraceServiceEx : POOrderTraceService + { + private string[] TempTableName; + + public override void BuilderReportSqlAndTempTable(IRptParams filter, string tableName) + { + //创建临时表用于保存自己的数据 + IDBService dbservice = ServiceHelper.GetService(); + TempTableName = dbservice.CreateTemporaryTableName(this.Context, 1); + string strTable = TempTableName[0]; + + //调用基类方式获取初步查询数据 + base.BuilderReportSqlAndTempTable(filter, strTable); + + string strSql = $@"/*dialect*/ +SELECT + A.* + ,BE.F_ORA_TEXT2 AS FAPPLYDEPT + 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 +"; + + DBUtils.Execute(this.Context, strSql); + } + + public override void CloseReport() + { + //删除临时表 + if (TempTableName == null || TempTableName.Length == 0) + { + return; + } + + IDBService dbservice = ServiceHelper.GetService(); + + dbservice.DeleteTemporaryTableName(this.Context, TempTableName); + + + base.CloseReport(); + } + } +} diff --git a/Trinomab.PUR_RPT_POOrderTrace/Properties/AssemblyInfo.cs b/Trinomab.PUR_RPT_POOrderTrace/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..3decda4 --- /dev/null +++ b/Trinomab.PUR_RPT_POOrderTrace/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的一般信息由以下 +// 控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("Trinomab.PUR_RPT_POOrderTrace")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Trinomab.PUR_RPT_POOrderTrace")] +[assembly: AssemblyCopyright("Copyright © 2023")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 会使此程序集中的类型 +//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 +//请将此类型的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("9e2ddd7f-02ee-4bdf-a696-4cc6d310fead")] + +// 程序集的版本信息由下列四个值组成: +// +// 主版本 +// 次版本 +// 生成号 +// 修订号 +// +//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 +//通过使用 "*",如下所示: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Trinomab.PUR_RPT_POOrderTrace/Trinomab.PUR_RPT_POOrderTrace.csproj b/Trinomab.PUR_RPT_POOrderTrace/Trinomab.PUR_RPT_POOrderTrace.csproj new file mode 100644 index 0000000..bde5e5d --- /dev/null +++ b/Trinomab.PUR_RPT_POOrderTrace/Trinomab.PUR_RPT_POOrderTrace.csproj @@ -0,0 +1,68 @@ + + + + + Debug + AnyCPU + {9E2DDD7F-02EE-4BDF-A696-4CC6D310FEAD} + Library + Properties + Trinomab.PUR_RPT_POOrderTrace + Trinomab.PUR_RPT_POOrderTrace + 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.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.K3.BD.Contracts.dll + + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.K3.SCM.App.Purchase.Report.dll + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/UnitTestProject1/UnitTest1.cs b/UnitTestProject1/UnitTest1.cs index 32d5b0a..70456ec 100644 --- a/UnitTestProject1/UnitTest1.cs +++ b/UnitTestProject1/UnitTest1.cs @@ -15,6 +15,47 @@ namespace UnitTestProject1 [TestClass] public class UnitTest1 { + public class TestEntity + { + public TestEntity(int _id, string _name) + { + id = _id; + name = _name; + } + public int id; + public string name; + } + + [TestMethod] + public void TestMethod2() + { + var list = new List(); + list.Add(new TestEntity(1,"ttetett")); + list.Add(new TestEntity(1,"ttetett")); + list.Add(new TestEntity(1,"ttetett")); + list.Add(new TestEntity(1,"ttetett")); + list.Add(new TestEntity(1,"ttetett")); + list.Add(new TestEntity(1,"ttetett")); + list.Add(new TestEntity(1,"ttetett")); + list.Add(new TestEntity(1,"ttetett")); + list.Add(new TestEntity(1,"ttetett")); + list.Add(new TestEntity(1,"ttetett")); + list.Add(new TestEntity(1,"ttetett")); + list.Add(new TestEntity(2,"ttetett")); + list.Add(new TestEntity(2,"ttetett")); + list.Add(new TestEntity(2,"ttetett")); + list.Add(new TestEntity(2,"ttetett")); + list.Add(new TestEntity(2,"ttetett")); + list.Add(new TestEntity(2,"ttetett")); + list.Add(new TestEntity(2,"ttetett")); + + var ttt = list.GroupBy(x => x.id); + + var count = ttt.Count(); + + return; + } + [TestMethod] public void TestMethod1() { @@ -66,6 +107,7 @@ namespace UnitTestProject1 auditList.Add(data); + auditList.Add(data1); jsonMap.Add("itemList", auditList); string json = JsonConvert.SerializeObject(jsonMap); @@ -76,17 +118,14 @@ namespace UnitTestProject1 param.Add("name", "supvWarehouse.save"); param.Add("app_key", appKey); param.Add("data", json); - param.Add("timestamp", System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); + param.Add("timestamp", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); param.Add("version", ""); string sign = BuildSign(param, secret); param.Add("sign", sign); - var ttt = @"{""entName"":""珠海昶展物流有限公司"",""entCusCode"":""4404660006"",""bookNum"":""T5781W000004"",""declaEntCreditCode"":""91440404MABRGQJR1H"",""deliveryType"":""QTCK"",""declaEntCusCode"":""4404660006"",""inputDate"":""2018-02-02 14:03:07"",""deliveryTm"":""2018-02-09 00:00:00"",""declaType"":""00"",""declaDate"":""2023-12-20 09:38:55"",""declaCode"":""QTCK000003"",""itemList"":[{""productDesc"":""喇叭"",""inventoryOrderNo"":""10"",""deliveryOrderNo"":""2"",""specificationsModels"":"" "",""hscode"":""8"",""deliveryCnt"":""80.0000000000"",""itemNo"":""1"",""inventory"":""9"",""productCd"":""100242"",""calcUnit"":""Pcs""},{""productDesc"":""听筒"",""inventoryOrderNo"":""10"",""deliveryOrderNo"":""2"",""specificationsModels"":"" "",""hscode"":""8"",""deliveryCnt"":""80.0000000000"",""itemNo"":""2"",""inventory"":""9"",""productCd"":""100243"",""calcUnit"":""Pcs""}],""entCreditCode"":""91440404MABRGQJR1H"",""declaEntName"":""珠海昶展物流有限公司"",""inputMan"":""demo"",""customsCode"":""5781""}"; - //var json = "{\"entName\":\"珠海昶展物流有限公司\",\"entCusCode\":\"4404660006\",\"bookNum\":\"T5781W000004\",\"declaEntCreditCode\":\"91440404MABRGQJR1H\",\"declaEntCusCode\":\"4404660006\",\"entCreditCode\":\"91440404MABRGQJR1H\",\"declaEntName\":\"珠海昶展物流有限公司\",\"inputMan\":\"demo\",\"customsCode\":\"5781\",\"inputDate\":\"2018-02-02 14:03:07\",\"declaType\":\"00\",\"deliveryTm\":\"2018-02-09 00:00:00\",\"declaDate\":\"2023-12-20 10:55:59\",\"deliveryType\":\"QTCK\",\"declaCode\":\"QTCK000003\",\"item\":[{\"itemNo\":\"1\",\"deliveryOrderNo\":\"2\",\"productCd\":\"100242\",\"productDesc\":\"喇叭\",\"specificationsModels\":\" \",\"deliveryCnt\":\"80.0000000000\",\"calcUnit\":\"Pcs\",\"hscode\":\"8\",\"inventory\":\"9\",\"inventoryOrderNo\":\"10\"},{\"itemNo\":\"2\",\"deliveryOrderNo\":\"2\",\"productCd\":\"100243\",\"productDesc\":\"听筒\",\"specificationsModels\":\" \",\"deliveryCnt\":\"80.0000000000\",\"calcUnit\":\"Pcs\",\"hscode\":\"8\",\"inventory\":\"9\",\"inventoryOrderNo\":\"10\"}]}"; + var jsonParam = JsonConvert.SerializeObject(param); - var ttt2 = JsonConvert.SerializeObject(param); - - HttpWebHelper.DoPost("http://119.146.223.48:39082/api/", ttt2); + var result = HttpWebHelper.DoPost("http://119.146.223.48:39082/api/", jsonParam); var a = 0.00M; var a2 = 0L; var f = (a == a2); @@ -146,4 +185,8 @@ namespace UnitTestProject1 return sign.ToString(); } } + + + + } diff --git a/UseGetFmaterialData.dll b/UseGetFmaterialData.dll deleted file mode 100644 index b7a4420..0000000 Binary files a/UseGetFmaterialData.dll and /dev/null differ diff --git a/生产投料单-1.sql b/生产投料单-1.sql new file mode 100644 index 0000000..b228f43 --- /dev/null +++ b/生产投料单-1.sql @@ -0,0 +1,90 @@ +SELECT + '' AS '行号', + '' AS '单据日期', + D.FBILLNO AS '生产投料单号', + '' AS '销售订单号', + '' AS '购货单位代码', + C.FMNEMONICCODE AS '助记码', + A.FBILLNO AS '生产任务单号', + C.FNUMBER AS '产品代码', + C_L.FNAME AS '产品名称', + C_L.FSPECIFICATION AS '产品规格型号', + E_L.FNAME AS '产品单位', + AE.FQTY AS '产品生产数量', + I.FNUMBER AS '物料代码', + I.FNAME AS '物料名称', + ( CASE I.FMATERIALSRC WHEN 'A' THEN 'PLM' WHEN 'B' THEN 'ERP' ELSE '' END ) AS '物料来源', + I.FSPECIFICATION AS '物料规格型号', + '' AS '物料技术标准', + I.FSTDQTY AS '物料单位用量', + I.FUNITID AS '物料单位', + I.FINVENTORYQTY AS '物料库存量', + '' AS '物料待检数', + I.FNEEDQTY AS '物料总需求', + '' AS '当前在制品数量', + '' AS '欠料', + '' AS '物料在途数', + '' AS '计划投料数量', + I.FPICKEDQTY AS '已领数量', + I.FNOPICKEDQTY AS '未领数量', + '' AS '标准数量', + I.FMUSTQTY AS '应发数量', + '' AS '备注', + '' AS '损耗数量', + I.FSCRAPQTY AS '报废数量', + '' AS '计划发料日期', + '' AS '仓库', + '' AS '仓位', + I.FREPICKEDQTY AS '补料数量', + AE.FPLANSTARTDATE AS '计划开工日期', + AE.FPLANFINISHDATE AS '计划完工日期', + '' AS '工位', + '' AS '其他备注项', + '' AS 'BOM备注项', + A.FBILLTYPE AS '生产类型', + AE.FWORKSHOPID AS '生产车间', + ( CASE AE_A.FSTATUS WHEN 6 THEN '已结案' ELSE '' END ) AS '生产任务单结案否', + D.FDOCUMENTSTATUS AS '生产投料单状态', + '' AS 'PR已审未转PO数量' +FROM + T_PRD_MO A --生产订单 + left JOIN T_PRD_MOENTRY AE ON A.FID = AE.FID --生产订单子表 + LEFT JOIN T_PRD_MOENTRY_A AE_A ON AE_A.FENTRYID = AE.FENTRYID + INNER JOIN T_BD_MATERIAL C ON AE.FMATERIALID = C.FMATERIALID --物料表 + INNER JOIN T_BD_MATERIAL_L C_L ON C.FMATERIALID = C_L.FMATERIALID + LEFT JOIN T_PRD_PPBOM D ON D.FMOENTRYID = AE_A.FENTRYID --生产用料清单 + LEFT JOIN T_BD_UNIT_L E_L ON AE.FUNITID = E_L.FUNITID + LEFT JOIN ( + SELECT + A.FMATERIALID, + A.FMASTERID, + A.FNUMBER, + B.FUNITID, + AL.FNAME , + AL.FSPECIFICATION , + A.FMATERIALSRC, + B.FENTRYID, + B.FID, + B.FMOID, + B.FMOENTRYID, + B.FMOTYPE, + B.FMOBILLNO, + B.FNEEDQTY, + B.FMUSTQTY, + B_Q.FPICKEDQTY, + B_Q.FNOPICKEDQTY, + B.FSTDQTY, + B_Q.FINVENTORYQTY, + B_Q.FSCRAPQTY, + B_Q.FREPICKEDQTY + FROM + T_BD_MATERIAL A + LEFT JOIN T_BD_MATERIAL_L AL ON A.FMATERIALID = AL.FMATERIALID + RIGHT JOIN T_PRD_PPBOMENTRY B ON B.FMATERIALID = A.FMATERIALID + RIGHT JOIN T_PRD_PPBOMENTRY_Q B_Q ON B.FENTRYID = B_Q.FENTRYID + WHERE + AL.FLOCALEID = 2052 + ) I ON D.FID = I.FID +WHERE + C_L.FLOCALEID = 2052 + AND E_L.FLOCALEID = 2052 \ No newline at end of file