1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using System.Threading.Tasks;
6 using System.ComponentModel;
7 using Kingdee.BOS.Contracts;
8 using Kingdee.BOS.Contracts.Report;
9 using Kingdee.BOS.Core.Metadata;
10 using Kingdee.BOS.Core.Report;
11 using Kingdee.BOS.App.Data;
12 using Kingdee.BOS.Core.Permission.Objects;
13 using Kingdee.K3.SCM.App.Sal.Report;
14 using Kingdee.BOS.Resource;
15 using Kingdee.BOS.BusinessEntity.BusinessFlow;
16 using Kingdee.BOS.Util;
17 using Kingdee.BOS.Orm.DataEntity;
18 using Kingdee.BOS.Core.Report.PlugIn;
19 using System.Data;
20 using Kingdee.BOS;
21
22
23 namespace MySysReportServicePluginThreeMxz
24 {
25 [Description("分表mxz练习-服务插件")]
26 public class MyPageReportTabserPluginmxz : SysReportBaseService
27 {
28 public override void Initialize()
29 {
30 this.ReportProperty.ReportType = ReportType.REPORTTYPE_MOVE;//设置为分页账表
31 this.ReportProperty.IsGroupSummary = true;//支持分组汇总
32 }
33
34 /// <summary>
35 /// 动态构造列
36 /// </summary>
37 /// <param name="filter"></param>
38 /// <returns></returns>
39 public override ReportHeader GetReportHeaders(IRptParams filter)
40 {
41 ReportHeader header = new ReportHeader();
42 header.AddChild("FID", new LocaleValue(Kingdee.BOS.Resource.ResManager.LoadKDString("编码", "002460030014674", Kingdee.BOS.Resource.SubSystemType.BOS), this.Context.UserLocale.LCID));
43 header.AddChild("fname", new LocaleValue(Kingdee.BOS.Resource.ResManager.LoadKDString("全名", "002460030014677", Kingdee.BOS.Resource.SubSystemType.BOS), this.Context.UserLocale.LCID));
44 header.AddChild("fdesc", new LocaleValue(Kingdee.BOS.Resource.ResManager.LoadKDString("别名", "002460030014680", Kingdee.BOS.Resource.SubSystemType.BOS), this.Context.UserLocale.LCID));
45 header.AddChild("FLocaleId", new LocaleValue(Kingdee.BOS.Resource.ResManager.LoadKDString("类别", "002460030014683", Kingdee.BOS.Resource.SubSystemType.BOS), this.Context.UserLocale.LCID), SqlStorageType.SqlInt);
46 return header;
47 }
48
49 /// <summary>
50 /// 设置报表头
51 /// </summary>
52 /// <param name="filter"></param>
53 /// <returns></returns>
54 public override ReportTitles GetReportTitles(IRptParams filter)
55 {
56 ReportTitles titles = new ReportTitles();
57 if(CacheDataList != null)
58 {
59 DataTable dt = GetList(filter);
60 if (dt != null && dt.Rows.Count > 0)
61 {
62 //titles.AddTitle("FCondition", dt.Rows[0]["flocaleid"].ToString());
63 return titles;
64 }
65 return null;
66 }
67 DataRow dr = this.CacheDataList[filter.CurrentPosition];
68 //titles.AddTitle("FCondition", dr["flocaleid"].ToString());
69 return titles;
70 }
71
72 /// <summary>
73 /// 构造取数Sql,取数据填充到临时表:tableName
74 /// </summary>
75 /// <param name="filter"></param>
76 /// <param name="tableName"></param>
77 public override void BuilderReportSqlAndTempTable(IRptParams filter, string tableName)
78 {
79 base.BuilderReportSqlAndTempTable(filter, tableName);
80 DataRow dr = this.CacheDataList[filter.CurrentPosition];
81 string sSQL = @"select a.fdeptid as FID, fname,ffullname as fdesc,FLocaleId,'BD_DEPARTMENT' as fformid, {0} into {1} from T_BD_DEPARTMENT a inner join T_BD_DEPARTMENT_l b on a.fdeptid=b.fdeptid where b.FLocaleId=" + dr["FLocaleId"].ToString();
82 KSQL_SEQ = string.Format(KSQL_SEQ, "b.FLocaleId");
83 sSQL = string.Format(sSQL, this.KSQL_SEQ, tableName);
84 DBUtils.Execute(this.Context, sSQL);
85 //DynamicObject dynamicObject = filter.FilterParameter.CustomFilter;//获取快捷页签的过滤字段数据
86 }
87
88 /// <summary>
89 /// 设置汇总行,只有显示财务信息时才需要汇总
90 /// </summary>
91 /// <param name="filter"></param>
92 /// <returns></returns>
93 public override List<SummaryField> GetSummaryColumnInfo(IRptParams filter)
94 {
95 List<SummaryField> fls = new List<SummaryField>();
96 SummaryField fs = new SummaryField("FLocaleId", Kingdee.BOS.Core.Enums.BOSEnums.Enu_SummaryType.SUM);
97 fls.Add(fs);
98 return fls;
99 }
100 /// <summary>
101 /// 分页账表获取分页条件的方法
102 /// </summary>
103 /// <param name="filter"></param>
104 /// <returns></returns>
105 public override DataTable GetList(IRptParams filter)
106 {
107 DataTable dt;
108 string sSQL = @"select FLocaleId from T_BD_DEPARTMENT_L group by FLocaleId";
109 dt = DBUtils.ExecuteDataSet(this.Context, sSQL).Tables[0];
110 return dt;
111 }
112 }
113 }