Cloud v7.1账表服务插件之简单账表
金蝶云社区-一只黄焖鸡
一只黄焖鸡
2人赞赏了该文章 1,874次浏览 未经作者许可,禁止转载编辑于2018年10月16日 18:25:26

实现简单SQL账表,从代码到客户端展示,您可以直接拿来用。先上代码,最后面再上实现的图
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections;
using System.Data;
using System.ComponentModel;
using Kingdee.BOS.Contracts;
using Kingdee.BOS.Contracts.Report;
using Kingdee.BOS.Core.Metadata;
using Kingdee.BOS.Core.Report;
using Kingdee.BOS.Core.Metadata.FormElement;
using Kingdee.BOS;
using Kingdee.BOS.Core.List;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.K3.SCM.Sal.Report.PlugIn;
using Kingdee.BOS.App.Data;
using Kingdee.BOS.Core.SqlBuilder;
using Kingdee.BOS.Core;
using Kingdee.BOS.Core.Util;
using Kingdee.BOS.Util;
using Kingdee.BOS.Core.Permission;
using Kingdee.BOS.App.Core.BusinessFlow;
using Kingdee.K3.Core;
using Kingdee.BOS.Core.BusinessFlow.ServiceArgs;
using Kingdee.BOS.BusinessEntity.BusinessFlow;
using Kingdee.BOS.Core.Permission.Objects;
using Kingdee.K3.SCM.App.Sal.Report;
using Kingdee.BOS.Resource;

namespace MySysReportServicePluginThreeMxz
{
[Description("简表mxz练习-服务插件")]
public class MySimpleReportTabserPluginmxz : SysReportBaseService
{
public override void Initialize()
{
this.ReportProperty.ReportType = ReportType.REPORTTYPE_NORMAL;//设置类型为简单账表,默认为简单账表
// 支持分组汇总
this.ReportProperty.IsGroupSummary = true;
//this.ReportProperty.BillKeyFieldName = "FID";
this.ReportProperty.ReportName = new LocaleValue(ResManager.LoadKDString("账表TestMxz3", "002460030014686", SubSystemType.BOS), this.Context.UserLocale.LCID);
//this.ReportProperty.GroupSummaryInfoData.DefaultGroupbyString = "fwname";
this.ReportProperty.DecimalControlFieldList = new List();
// 标示famount用famount_decimal做精度格式化
this.ReportProperty.DecimalControlFieldList.Add(new DecimalControlField() { ByDecimalControlFieldName = "famount", DecimalControlFieldName = "famount_decimal" });
}

///


/// 动态构造列
///

///
///
public override ReportHeader GetReportHeaders(IRptParams filter)
{
List summaryField = this.SummarySpecialFields;
// TODO:fentryid,fid,fbaseunitqty,fmaterialid,fbomid,fqty
ReportHeader header = new ReportHeader();
header.AddChild("fwname", new LocaleValue(ResManager.LoadKDString("物料", "002460030014689", SubSystemType.BOS), this.Context.UserLocale.LCID));
header.AddChild("fcustid", new LocaleValue(ResManager.LoadKDString("客户", "002460030014692", SubSystemType.BOS), this.Context.UserLocale.LCID));
header.AddChild("FQty", new LocaleValue(ResManager.LoadKDString("数量", "002460030014695", SubSystemType.BOS), this.Context.UserLocale.LCID), SqlStorageType.SqlDecimal);
header.AddChild("fprice", new LocaleValue(ResManager.LoadKDString("单价", "002460030014698", SubSystemType.BOS), this.Context.UserLocale.LCID), SqlStorageType.SqlDecimal);
header.AddChild("famount", new LocaleValue(ResManager.LoadKDString("金额", "002460030014701", SubSystemType.BOS), this.Context.UserLocale.LCID), SqlStorageType.SqlDecimal);
return header;
}

///


/// 设置报表头
///

///
///
public override ReportTitles GetReportTitles(IRptParams filter)
{
ReportTitles titles = new ReportTitles();
return titles;
}

///


/// 构造取数Sql,取数据填充到临时表:tableName
///

///
///
public override void BuilderReportSqlAndTempTable(IRptParams filter, string tableName)
{
base.BuilderReportSqlAndTempTable(filter, tableName);
//获取快捷页签的过滤字段数据
DynamicObject dynamicObject = filter.FilterParameter.CustomFilter;
string startDateStr = dynamicObject["F_PAEZ_Date"].ToString();//起止日期
string endDateStr = dynamicObject["F_PAEZ_Date1"].ToString();//结束日期
DynamicObject orgObj = (DynamicObject)dynamicObject["F_PAEZ_OrgId"];//组织
string orgStr = orgObj["Name"].ToString();//组织名称
string moreFilter = filter.FilterParameter.FilterString.Trim();//高级过滤
DynamicObject userParameter = filter.ParameterData;
// 拼接sql
string sSQL = @"select b.fname as fwname,c.fcustid,d.fname as fcname,a.* ,f.famount,3 as famount_decimal,f.fprice, {0} into {1} from T_SAL_ORDERENTRY a
left join T_BD_MATERIAL_L b on a.fmaterialid=b.fmaterialid and b.FLOCALEID=2052
left join T_SAL_ORDER c on a.fid=c.fid
left join T_BD_CUSTOMER_L d on c.fcustid=d.fcustid and d.FLOCALEID=2052
left join T_SAL_ORDERENTRY_F f on a.fentryid=f.fentryid";
// 设置分页排序
KSQL_SEQ = string.Format(KSQL_SEQ, "a.FID asc");
sSQL = string.Format(sSQL, this.KSQL_SEQ, tableName);
DBUtils.Execute(this.Context, sSQL);
}

///


/// 设置汇总行,只有显示财务信息时才需要汇总
///

///
///
public override List GetSummaryColumnInfo(IRptParams filter)
{
List summarys = new List();
summarys.Add(new Kingdee.BOS.Core.Report.SummaryField("FQty", Kingdee.BOS.Core.Enums.BOSEnums.Enu_SummaryType.SUM));
// 单价求平均
summarys.Add(new Kingdee.BOS.Core.Report.SummaryField("fprice", Kingdee.BOS.Core.Enums.BOSEnums.Enu_SummaryType.AVERAGE));
// 金额汇总
summarys.Add(new Kingdee.BOS.Core.Report.SummaryField("famount", Kingdee.BOS.Core.Enums.BOSEnums.Enu_SummaryType.SUM));
return summarys;
}
}
[Description("简表过滤mxz练习-服务插件")]
public class MySimpleReportScreenTabserPluginmxz : SysReportBaseService
{
public override void Initialize()
{
this.ReportProperty.ReportType = ReportType.REPORTTYPE_NORMAL;//设置类型为简单账表
// 支持分组汇总
this.ReportProperty.IsGroupSummary = true;
this.ReportProperty.ReportName = new LocaleValue(ResManager.LoadKDString("账表TestMxz3", "002460030014686", SubSystemType.BOS), this.Context.UserLocale.LCID);
this.ReportProperty.DecimalControlFieldList = new List();
}

///


/// 动态构造列
///

///
///
public override ReportHeader GetReportHeaders(IRptParams filter)
{
List summaryField = this.SummarySpecialFields;
// TODO:fentryid,fid,fbaseunitqty,fmaterialid,fbomid,fqty
ReportHeader header = new ReportHeader();
header.AddChild("fwname", new LocaleValue(ResManager.LoadKDString("物料", "002460030014689", SubSystemType.BOS), this.Context.UserLocale.LCID));
return header;
}
///
/// 设置报表头
///

///
///
public override ReportTitles GetReportTitles(IRptParams filter)
{
ReportTitles titles = new ReportTitles();
return titles;
}
///
/// 构造取数Sql,取数据填充到临时表:tableName
///

///
///
public override void BuilderReportSqlAndTempTable(IRptParams filter, string tableName)
{
base.BuilderReportSqlAndTempTable(filter, tableName);
///
/// 构造取数Sql,取数据填充到临时表:tableName
///

///
///
public override void BuilderReportSqlAndTempTable(IRptParams filter, string tableName)
{
base.BuilderReportSqlAndTempTable(filter, tableName);
//构建SQL
string sSQL = @"select b.fname as fwname, {0} into {1} from T_BD_MATERIAL_L b where 1=1 and b.FLOCALEID=2052";
KSQL_SEQ = string.Format(KSQL_SEQ, "b.FPKID asc");
sSQL = string.Format(sSQL, this.KSQL_SEQ, tableName);
DBUtils.Execute(this.Context, sSQL);
}

///


/// 设置汇总行,只有显示财务信息时才需要汇总
///

///
///
public override List GetSummaryColumnInfo(IRptParams filter)
{
List summarys = new List();
return summarys;
}
}
}

您的鼓励与嘉奖将成为创作者们前进的动力,如果觉得本文还不错,可以给予作者创作打赏哦!

请选择打赏金币数 *

10金币20金币30金币40金币50金币60金币
可用金币: 0