// 以下代码示例演示过滤条件中增加一个自定义过滤变量,例如预算部门
// 另外还需要在t_mdl_filtercondition,t_mdl_filtercondition_l中增加相应记录,例如
/*--插入配置过滤条件<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
DELETE FROM T_MDL_FILTERCONDITION WHERE FID=1000001;
INSERT INTO T_MDL_FILTERCONDITION(FID,FCONDITIONTYPEID,FSEQ,FOPERATE,FINPUTCTLTYPE,FDATASOURCETYPE,FDATAFIELDINDEX,FVALUE,FINPUT,FCLASSNAME) VALUES (1000001, 1000001,1,'=',0,0,0,'ISNULL',0,'XXApp.Core.BuggetDeptFilter.CurrBuggetDeptFilter,XXApp.Core') ;--插入配置过滤条件多语言
DELETE FROM T_MDL_FILTERCONDITION_L WHERE FID=1000001;
INSERT INTO T_MDL_FILTERCONDITION_L(FPKID,FID,FLOCALEID,FNAME,FDATASOURCE,FTOOLTIP) VALUES (1000001,1000001,2052,N'当前预算部门',null,null) ;*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Kingdee.BOS.Core.CommonFilter.ConditionVariableAnalysis;
using Kingdee.BOS.Core.CommonFilter;
using System.ComponentModel;
using Kingdee.BOS.App.Data;namespace XXApp.Core.BuggetDeptFilter
{
/// <summary>
/// 当前用户根据预算部门进行过滤
/// </summary>
[Description("当前用户根据预算部门进行过滤")]
public class CurrBuggetDeptFilter : AbstractVariableAnalysisPlugin
{
public override string GetVariableFilter(ConditionVariableContext ctx)
{
StringBuilder sb = new StringBuilder();// 获取当前登录用户所在的部门
sb.AppendFormat("select staff.FDEPTID ");
sb.AppendFormat(" from t_bd_staff staff ");
sb.AppendFormat(" inner join t_sec_user suser on staff.fpersonid=suser.FLINKOBJECT ");
sb.AppendFormat(" inner join V_BD_CONTACTOBJECT vcon on vcon.fid=suser.FLINKOBJECT and vcon.ftype=1 ");
sb.AppendFormat(" where suser.fuserid={0} ", ctx.Context.UserId);// 获取部门对应的预算部门内码
string strSelect = string.Format(@"select fdeptid
from t_bd_department where fdeptid IN ({0}) and FISBUDGET=1
union all
select FBudgetDept
from t_bd_department where fdeptid IN ({0}) and FISBUDGET=0", sb.ToString());long currDeptId = DBUtils.ExecuteScalar<long>(ctx.Context, strSelect, 0, null);// 当前用户没有关联职员
if (currDeptId <= 0)
{
return "1=1";
}// 取出当前预算部门的名称
string strSql = string.Format(@"SELECT FNAME FROM T_BD_DEPARTMENT_L
WHERE FDEPTID={0} AND FLOCALEID={1}", currDeptId, ctx.Context.UserLocale.LCID);string strName = DBUtils.ExecuteScalar<string>(ctx.Context, strSql, string.Empty, null);return string.Format("{0} {1} '{2}'", ctx.FieldName , ctx.Operater, strName);
}
}
}

转载于:https://www.cnblogs.com/fyq891014/p/4188790.html

分享过滤条件中增加一个自定义过滤变量插件代码相关推荐

  1. 如何在React Native中写一个自定义模块

    前言 在 React Native 项目中可以看到 node_modules 文件夹,这是存放 node 模块的地方,Node.js 的包管理器 npm 是全球最大的开源库生态系统.提到npm,一般指 ...

  2. 怎么在java中创建一个自定义的collector

    文章目录 简介 Collector介绍 自定义Collector 总结 怎么在java中创建一个自定义的collector 简介 在之前的java collectors文章里面,我们讲到了stream ...

  3. c++中的new_怎么在java中创建一个自定义的collector

    简介 在之前的java collectors文章里面,我们讲到了stream的collect方法可以调用Collectors里面的toList()或者toMap()方法,将结果转换为特定的集合类. 今 ...

  4. 如何在 React Native 中写一个自定义模块

    前言 在 React Native 项目中可以看到 node_modules 文件夹,这是存放 node 模块的地方,Node.js 的包管理器 npm 是全球最大的开源库生态系统.提到npm,一般指 ...

  5. 在一个list中增加一个节点

    在一个list中增加一个节点 typedef struct _list_t {struct _list_t *next;int data; }list;void insert_node(list *h ...

  6. 【吉大刘大有数据结构绿皮书】向LinkedList类中增加一个函数Contrary,功能为将其所有结点按相反次序链接。

    题目 向LinkedList类中增加一个函数Contrary,功能为将其所有结点按相反次序链接. 思路 考研要求用C语言,那我就用C语言(没有面向对象),本题就是个链表倒置算法,先将哨位结点和后面的结 ...

  7. html中模块怎么创建,在Joomla中创建一个自定义HTML模块,不显示

    我有几个Joomla!我感到有信心的网站.我的Joomla!网站有一个artisteer模板. 我最近做了一个"戳出"的图片,突出了纸张的边缘,并展示了一个android" ...

  8. java中collector使用_怎么在java中创建一个自定义的collector

    怎么在java中创建一个自定义的collector 简介 在之前的java collectors文章里面,我们讲到了stream的collect方法可以调用Collectors里面的toList()或 ...

  9. 先设计一个基本账户类,再通过继承基本账户类设计一个储蓄账户类,储蓄账户类中增加一个静态成员变量(年利率),并增加如下成员函数:(1)计算月利息月利息=存款金额x年利率+12(2)更改利率(静态方法)

    实验二:继承和派生程序设计(4学时)必做题: 先设计一个基本账户类,再通过继承基本账户类设计一个储蓄账户类,储蓄账户类中增加一个静态成员变量(年利率),并增加如下成员函数:(1)计算月利息 月利息=存 ...

  10. python类中包含一个特殊的变量、它可以访问类的成员_区域联防的运用中遵循并贯彻以球为主的防守原则,做到球人区三者兼顾。( )...

    刘墉书法的特点是用墨厚重,体丰骨劲,浑厚敦实,别具面目.A:对B:错 Python类中包含一个特殊的变量(),它表示当前对象自身,可以访问类的成员.A:meB:selfC:thisD:与类同名 在过火 ...

最新文章

  1. 英伟达十年力作:新一代光线追踪显卡 Quadro RTX及核心架构Turing,可支持AI运算...
  2. .NET基础示例系列之六:委托及事件
  3. Science组合图表解读
  4. python 字符串转字典,字典转字符串 Expecting property name enclosed in double quotes
  5. 华为(苏州)人工智能创新中心正式揭牌
  6. linux svn安装和配置
  7. jquery animate
  8. java ajax翻页_分页 工具类 前后台代码 Java JavaScript (ajax) 实现 讲解
  9. java自定义方法参数注解_Java方法中的参数太多,第1部分:自定义类型
  10. oracle 表空间异常增长过快解决方法
  11. 一步一步写算法(之基数排序)
  12. java 不让滚动条随着拖拽滑动_「最近项目小结」使用Vue实现一个简单的鼠标拖拽滚动效果插件...
  13. c( )函数--R语言
  14. 【C++/Python 双语言实现】Luogu5092 Cube Stacking
  15. pytorch中的tensor以numpy形式进行输出保存
  16. PS 拖入图片保持原大小
  17. Tomcat学习笔记(三)—— Server组件
  18. 应用软件安全编程概述
  19. 845透色android10,和平精英TCA845透色
  20. 用传感器建立地球中枢神经系统可预警天灾

热门文章

  1. mysql导入超大sql文件方法
  2. codeigniter CI 框架 在helper 中 使用 全局变量 方法
  3. 06.Android之消息机制问题
  4. java处理图片base64编码的相互转换
  5. html5学习笔记6-- canvas
  6. Centos下 为Firefox安装Flash插件
  7. javascript开发中的封装模式(转)
  8. Jquery 根据value值设置下拉列表(select)默认选中项
  9. 经典人生感悟 看看你少了那一条
  10. 地震预警,生死十秒,我们能做些什么?