一、前言
继承报表服务插件基类:SysReportBaseService
二、方法介绍
1.初始化
(1)Initialize
//初始化
base.Initialize();
//获取/生成核算维度
this.FlexService = BD.Contracts.ServiceFactory.GetSCMServiceForFIN(base.Context);
//
this.AuxArg = this.FlexService.CreateFlexStrValueArg(base.Context, 1);
this.LocArg = this.FlexService.CreateFlexStrValueArg(base.Context, 0);
(2)SetDspInsteadColumns
//基础资料及基础资料替换字段
base.ReportProperty.DspInsteadColumnsInfo.DefaultDspInsteadColumns = new Dictionary<string, string>();
(3)SetDecimalControl
//设置精度
List<DecimalControlField> list = new List<DecimalControlField>();
list.Add(new DecimalControlField
{
//被控制字段,BuilderReportSqlAndTempTable事件里面的字段
ByDecimalControlFieldName = "FBASEQCQTY",
//精度字段,取币别里面的精度,或者其他
DecimalControlFieldName = "FBASEUNITPRE"
});
(4)GetCanViewAmountOrgIds
//获取可以查看报表金额的组织
(5)IsCanViewAmount
//检查报表金额是否授权
(6)RegisterRptBill
//注册单据
this.lstRptBill.Clear();
InitDefaultPlugIn
//初始化所有单据
GetReportPlugInSets
//获取要统计的单据
SELECT * FROM T_BAS_UPDATESTOCKRPTSET WHERE FRPTTYPE = 'STK_StockSummaryRpt' OR FRPTTYPE = '' OR FRPTTYPE = ' '
GetBillPlugIn
//获取单据 billPlugIn
this.lstRptBill.Add(billPlugIn);
2.创建表单相关
(1)BuildRptTitle
//初始化表头
ReportTitles reportTitles = new ReportTitles();
(2)ReBuildCurPageTable
构建当前页面表
CreateDataTbl
//创建数据临时表
this.tmpRptTbl = "表名";
string sqlStr= "Sql语句";
this.tmpRptTbl = DBUtils.CreateSessionTemplateTable(base.Context, this.tmpRptTbl, sqlStr);//执行
CreateFullTbl
//创建全部数据临时表
IDBService service = ServiceHelper.GetService<IDBService>();
this.tmpFullTbl = service.CreateTemporaryTableName(base.Context);
string sqlStr= "Sql语句";
using (KDTransactionScope kDTransactionScope = new KDTransactionScope(TransactionScopeOption.Suppress))
{
DBUtils.Execute(base.Context, text);
kDTransactionScope.Complete();
}
CreateQcpTbl
//创建期初数据临时表
this.tmpQcpTbl = "TM_STK_RPTCOMMONQCP";
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.AppendLine(" ( ");
stringBuilder.AppendLine(" FGUID VARCHAR(36) NULL, ");
stringBuilder.AppendLine(" FIOPRICE DECIMAL(23,10) NULL DEFAULT(0), ");
stringBuilder.AppendLine(" FQCAMOUNT DECIMAL(23,10) NULL DEFAULT(0), ");
stringBuilder.AppendLine(" FDATE VARCHAR(36) NULL, ");
stringBuilder.AppendLine(" FMATERIALID INT NULL DEFAULT(0), ");
stringBuilder.AppendLine(" FLOTNO NVARCHAR(255) NULL DEFAULT(' '), ");
stringBuilder.AppendLine(" FOWNERTYPEID VARCHAR(36) NULL DEFAULT(' '), ");
stringBuilder.AppendLine(" FOWNERID INT NULL DEFAULT(0), ");
stringBuilder.AppendLine(" FKEEPERTYPEID VARCHAR(36) NULL DEFAULT(' '), ");
stringBuilder.AppendLine(" FKEEPERID INT NULL DEFAULT(0), ");
stringBuilder.AppendLine(" FSTOCKORGID INT NULL DEFAULT(0), ");
stringBuilder.AppendLine(" FSTOCKSTATUSID INT NULL DEFAULT(0), ");
stringBuilder.AppendLine(" FAUXPROPID INT NULL DEFAULT(0), ");
stringBuilder.AppendLine(" FSTOCKID INT NULL DEFAULT(0), ");
stringBuilder.AppendLine(" FSTOCKLOCID INT NULL DEFAULT(0), ");
stringBuilder.AppendLine(" FBOMID INT NULL DEFAULT(0), ");
stringBuilder.AppendLine(" FPRODUCEDATE VARCHAR(36) NULL, ");
stringBuilder.AppendLine(" FEXPIRYDATE VARCHAR(36) NULL ");
stringBuilder.AppendLine(" ) ");
this.tmpQcpTbl = DBUtils.CreateSessionTemplateTable(base.Context, this.tmpQcpTbl, stringBuilder.ToString());
(3)CreateListTbl
//创建列表数据临时表
(4)CreateRptTableIndex
//创建索引
string text= string.Format("sql语句");
DBUtils.CreateSessionTemplateTableIndex(base.Context, text);
(5)CreateDetialTable
//创建库存报表明细数据临时表
(6)CreatePriceAmountAllTbl
创建金额总价临时表
(7)CreateFullTableIndex
创建临时表索引
(8)GetMoreDeleteSql
多表删除
(9)GetUpdateSql
更新
(10)GetInvGroupField
组织
3.过滤条件相关
(1)SetFilter
//初始化过滤条件
DynamicObject dynamicObject = filter.FilterParameter.CustomFilter;//获取过滤集合
this.stkOrgIdCollect = dynamicObject["StockOrgId"].ToString();//库存组织
(2)GetClassFilterBillList
//获取过滤条件
List<KeyValuePair<string, string>> list = new List<KeyValuePair<string, string>>();
list.AddRange(this.GetBillListPair(filter["CGRKBillSource"].ToString().Split(new char[]
{
','
}).ToList<string>(), "IN"));
return list;
(3)GetClassExtFilterString
获取其他过滤条件
(4)GetBillListPair
//获取值
List<KeyValuePair<string, string>> list = new List<KeyValuePair<string, string>>();
if (billList != null && billList.Count<string>() > 0)
{
foreach (string current in billList)
{
list.Add(new KeyValuePair<string, string>(current.ToUpperInvariant(), sFlag));
}
}
return list;
(5)SetMoreFilterFormat
设置更多的过滤条件
(6)FormatMoreFilter
格式化更多过滤条件
GetFilterOperator
获取分隔符
FindLogicOperatorIndex
获取分隔符
(7)GetNewFilter
获取过滤条件
(8)GetExQuickFilter
获取过滤条件
4.数据相关
(1)GetPreFormatSql
更新价格
(2)GetUpdateStkQtySql
更新期初数据
(3)GetQcFieldSql
期初字段
(4)GetUpdateQcPriceSql
更新期初数据
GetQcAvgPriceSql
更新期初平均价格
GetNewInPriceSql
更新入库价格
GetNewOutPriceSql
更新出库价格
(5)GetUpdteQcAmount
更新期初汇总
(6)GetUpdateIoPriceSql
更新出入价格
(7)GetTitleScrope
获取范围
(8)GetQCPriceSource
获取期初价格来源
(9)GetIOPriceSource
获取出入价格来源
(10)GetNextAcctPeriod
获取下一个间隔
(11)GetOrgDate
获取查询日期
GetStkBeginDate
获取物料开始日期
(12)GetNegativeWarnBeginDate
获取查询日期
(13)GetPageDt
//获取页面数据
//这里可以修改数据
List<string> listSql = new List<string>();
string item = string.Format("语句", this.tmpFullTbl);
listSql .Add(item);
DBUtils.ExecuteBatch(base.Context, listSql , listSql.Count);
(14)GetListRecord
获取列表数据
(15)GetListRecordSimple
获取列表数据
(16)GetDetailDataSql
获取详细数据
GetRptFieldSql
获取详细数据字段
GetRptValueSql
获取数据值,这里返回的空字符串
(17)GetAllFlexValues
获取核算纬度
(18)GetJoinFelxSql
拼接核算
(19)GetAuxPropExtValues
获取辅助属性
(20)GetStockLocExtValues
获取仓位值
5.工具方法相关
(1)GetDataByKey
获取key
(2)JoinFilterString
组成过滤条件
(3)ShowFieldHasAmount
展示字段
(4)GetKsqlDatetime
日期格式化
SpecialBillListControlUnit
获取特殊单位
SetClassIncludeTransWayData
获取数据
(5)GetMultiItemJoinSql
拼sql
(6)WriteDebugInfo
输出打印
(7)GetYMSqlByRegionDateFormat
获取年月
(8)GetDateFomatArray
日期格式化
(9)RptType
类型枚举
6.更新相关
(1)UpdateOwnerCustSup
更新某些数据
(2)UpdateCreatorName
更新某些数据
7.删除相关
(1)DeleteDataForAccount
根据用户删除数据
(2)DeleteDataForHSAccount
根据多个用户删除数据
(3)DropBuilderSessionTempTable
删除临时表
(4)DropTmpTbl
删除临时表
三、结尾
学习。基本都是源码,没有多少注释,二开过程中,不需要修改太多东西。