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 System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Text; namespace JDSample.ServicePlugIn.Report { [Description("树形报表练习-服务插件")] public class TreeReport : SysReportBaseService { public override void Initialize() { this.ReportProperty.ReportType = ReportType.REPORTTYPE_TREE; this.IsCreateTempTableByPlugin = false; } public override List GetTreeNodes(IRptParams filter) { //属性报表添加数据源 List nodelist = new List(); StringBuilder sb = new StringBuilder(); sb.Append("select FID,FNUMBER from VehicleRecords"); DynamicObjectCollection DOCL = DBUtils.ExecuteDynamicObject(this.Context, sb.ToString()); for (int i = 0; i < DOCL.Count; i++) { TreeNode rootNode = new TreeNode() { id = DOCL[i]["FID"].ToString(), text = DOCL[i]["FNUMBER"].ToString() }; nodelist.Add(rootNode); } return nodelist; //return base.GetTreeNodes(filter); } public override ReportHeader GetReportHeaders(IRptParams filter) { ReportHeader header = new ReportHeader(); header.AddChild("FNUMBER", new LocaleValue("车牌号", this.Context.UserLocale.LCID)); header.AddChild("FStartDate", new LocaleValue("开始时间", this.Context.UserLocale.LCID)); header.AddChild("FEndDate", new LocaleValue("结束时间", this.Context.UserLocale.LCID)); header.AddChild("FNAME", new LocaleValue("所属部门", this.Context.UserLocale.LCID)); header.AddChild("FDOCUMENTSTATUS", new LocaleValue("审核状态", this.Context.UserLocale.LCID)); return header; } public override ReportTitles GetReportTitles(IRptParams filter) { return base.GetReportTitles(filter); } //protected override string BuilderSelectFieldSQL(IRptParams filter) //{ //return "select Field1、Field2" //string sqlstr = "select FID,FStartDate,FEndDate "; //string sqlstr = "select b.FNUMBER,a.FSTARTDATE,a.FENDDATE, CASE when FDOCUMENTSTATUS='C' then '已审核' when FDOCUMENTSTATUS='B' then '审核中' when FDOCUMENTSTATUS='A' then '创建' else '' end as FDOCUMENTSTATUS "; string sqlstr="select temp.FNUMBER,temp.FSTARTDATE,temp.FENDDATE,temp.FDOCUMENTSTATUS,d.FNAME "; return sqlstr; } // ///构建from where语句 protected override string BuilderFromWhereSQL(IRptParams filter) { //return " from tc join td on tc.f1=td.f2 where tc.f3='demo' " string Cdtstr = " from T_BD_DEPARTMENT_L d,"; if (((TreeRptParams)filter).CurrentGroupID != null && ((TreeRptParams)filter).CurrentGroupID.ToString() != "-1") { // Cdtstr += @" where a.FID in (select FID from VehicleRecords where Fid =" + ((TreeRptParams)filter).CurrentGroupID.ToString() + " )" + " and a.FID=b.FID"; Cdtstr +=@"(select b.FNUMBER,a.FSTARTDATE,a.FENDDATE,a.FVEHICLEOWNEDDEPARTMENTS, CASE when FDOCUMENTSTATUS='C' then '已审核'when FDOCUMENTSTATUS='B' then '审核中'when FDOCUMENTSTATUS='A' then '创建'else '' end as FDOCUMENTSTATUS from FDepartmentTab a,VehicleRecords b where a.FID in (select FID from VehicleRecords where Fid =" + ((TreeRptParams)filter).CurrentGroupID.ToString() + " ) and a.FID=b.FID ) temp where d.FDEPTID=temp.FVEHICLEOWNEDDEPARTMENTS"; } else { //Cdtstr += " where a.FID=b.FID"; Cdtstr += @"( select b.FNUMBER,a.FSTARTDATE,a.FENDDATE,a.FVEHICLEOWNEDDEPARTMENTS, CASE when FDOCUMENTSTATUS='C' then '已审核'when FDOCUMENTSTATUS='B' then '审核中'when FDOCUMENTSTATUS='A' then '创建'else '' end as FDOCUMENTSTATUS from FDepartmentTab a,VehicleRecords b where a.FID=b.FID ) temp where d.FDEPTID=temp.FVEHICLEOWNEDDEPARTMENTS"; } // return Cdtstr; //} /// /// 构建order by语句 /// /// /// protected override string BuilderTempTableOrderBySQL(IRptParams filter) { return " temp.FNUMBER ASC"; } public override void BuilderReportSqlAndTempTable(IRptParams filter, string tableName) { //FID,FNUMBER,FDOCUMENTSTATUS,FFORBIDSTATUS,FMODIFIERID,FCREATORID,FCREATEDATE,FMODIFYDATE,FREMARK,FCOMBO,FTYPE,FPRICE,FAMOUNT base.BuilderReportSqlAndTempTable(filter, tableName); } } }