二开案例.过滤符.今年

【应用场景】平台内置的过滤符无法满足数据过滤需求。

【案例演示】编写一个自定义过滤符,用于执行【今年】的数据查询。
【实现步骤】
<1>继承 AbstractVariableAnalysisPlugin,编写自定义过滤符,实现条件过滤功能。
using Kingdee.BOS.Core;
using Kingdee.BOS.Core.CommonFilter;
using Kingdee.BOS.Core.CommonFilter.ConditionVariableAnalysis;
using System;
namespace Jac.XkDemo.BOS.Core.Filter.ConditionVariables
{
/// <summary>
/// 【过滤符】今年
/// </summary>
public class YearAnalysis : AbstractVariableAnalysisPlugin
{
/// <summary>
/// 生成过滤条件
/// </summary>
/// <param name="ctx"></param>
/// <returns></returns>
public override string GetVariableFilter(ConditionVariableContext ctx)
{
var dts = new DateTimeFunctions(ctx.Context, ctx.NowTime);
if (TimeZoneUtils.IsLongDateField(ctx.filterRow))
{
var year = dts.GetSystemYear(0);
var beginTime = year.Item1;
var endTime = year.Item2;
var filterString = dts.GetCompareDateTimeString(ctx.FieldName, ctx.Operater, beginTime, endTime);
return filterString;
}
else
{
var beginTime = new DateTime(ctx.NowTime.Value.Year, 1, 1);
var endTime = beginTime.AddYears(1);
var filterString = dts.GetCompareDateTimeString(ctx.FieldName, ctx.Operater, beginTime, endTime);
return filterString;
}
}
/// <summary>
/// 照搬GetVariableFilter的实现就好
/// </summary>
/// <param name="ctx"></param>
/// <returns></returns>
public override string GetScriptFilter(ConditionVariableContext ctx)
{
return GetVariableFilter(ctx);
}
}
}
<2>执行以下SQL脚本,向平台内置过滤比较符号库注册自定义过滤符。
/*
-- 添加自定义过滤符
DELETE FROM T_MDL_FILTERCONDITION WHERE FID=888006;
INSERT INTO T_MDL_FILTERCONDITION
( FID ,
FCONDITIONTYPEID ,
FSEQ ,
FOPERATE ,
FINPUTCTLTYPE ,
FDATASOURCETYPE ,
FDATAFIELDINDEX ,
FVALUE ,
FINPUT ,
FCLASSNAME ,
FISCUST
)
VALUES ( 888006 , -- FID - int
88888 , -- FCONDITIONTYPEID - int
二开案例.过滤符.今年
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



