/
CZ_CEEG_BosCrmLst_AllBill.cs
235 lines (217 loc) · 7.73 KB
/
CZ_CEEG_BosCrmLst_AllBill.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.ComponentModel;
using System.Data;
using Kingdee.BOS.Core.Bill.PlugIn;
using Kingdee.BOS.Core.List.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.List.PlugIn.Args;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Core.SqlBuilder;
using Kingdee.BOS.Core.Metadata;
//using Kingdee.BOS.Core.DynamicForm.PlugIn;
//using Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel;
using Kingdee.BOS.App.Data;
/*
本插件用于列表 强制过滤单据
预定涵盖除线索外的CRM表单
列表增加按钮组 过滤方案[全部XX=tbbMyAll | 我的XX=tbbMyHold | 我管理的=tbbMyCtrl]
*/
namespace CZ.CEEG.BosCrmLst.AllBill
{
/// <summary>
/// BOS_CRM_List 线索列表
/// </summary>
[Description("BOS_CRM_List 通用过滤插件")]
[Kingdee.BOS.Util.HotUpdate]
public class CZ_CEEG_BosCrmLst_AllBill : AbstractListPlugIn
{
string Str_Filter = "";
#region override
/// <summary>
///
/// </summary>
/// <param name="e"></param>
public override void AfterBindData(EventArgs e)
{
base.AfterBindData(e);
}
/// <summary>
/// 菜单点击事件,表单插件同样适用
/// </summary>
/// <param name="e"></param>
public override void BarItemClick(BarItemClickEventArgs e)
{
switch (e.BarItemKey.ToUpperInvariant())
{
//case "TBDELETE": 列表工具栏按钮事件,通过按钮Key[大写]来区分那个按钮事件
//break;
case "":
break;
default:
break;
}
}
/// <summary>
/// 菜单点击后处理事件,表单插件同样适用
/// </summary>
/// <param name="e"></param>
public override void AfterBarItemClick(AfterBarItemClickEventArgs e)
{
switch (e.BarItemKey.ToUpperInvariant())
{
case "TBBMYALL":
//tbbMyAll 全部CRM单据
Act_ABIC_tbbMyAll();
this.View.RefreshByFilter();
break;
//case "TBBMYCREATE":
// //tbbMyCreate 我创建的CRM单据
// Act_ABIC_tbbMyCreate();
// this.View.RefreshByFilter();
// break;
case "TBBMYHOLD":
//tbbMyHold 我持有的CRM单据
Act_ABIC_tbbMyHold();
this.View.RefreshByFilter();
break;
case "TBBMYCTRL":
//tbbMyCtrl 我管理的CRM单据
Act_ABIC_tbbMyCtrl();
this.View.RefreshByFilter();
break;
default:
break;
}
}
/// <summary>
/// 对列表数据追加过滤或是排序,推荐通过过滤方案进行处理,如果是特殊的强制过滤,可以在这个位置进行处理
/// </summary>
/// <param name="e"></param>
public override void PrepareFilterParameter(FilterArgs e)
{
//string _userID = this.Context.UserId.ToString();
//string _FCrmR = this.Act_GetSchRoleFilter(_userID, "or");
//string _FilterStr = " FCreatorID='" + _userID + "' or FCrmHolder='" + _userID + "'" + _FCrmR;
if (Str_Filter == "")
{
Act_ABIC_tbbMyAll();
}
e.AppendQueryFilter(Str_Filter);
e.AppendQueryOrderby("");
}
/// <summary>
/// queryservice取数方案,通过业务对象来获取数据,推荐使用
/// </summary>
/// <returns></returns>
public DynamicObjectCollection GetQueryDatas()
{
QueryBuilderParemeter paramCatalog = new QueryBuilderParemeter()
{
FormId = "",//取数的业务对象
FilterClauseWihtKey = "",//过滤条件,通过业务对象的字段Key拼装过滤条件
SelectItems = SelectorItemInfo.CreateItems("", "", ""),//要筛选的字段【业务对象的字段Key】,可以多个,如果要取主键,使用主键名
};
DynamicObjectCollection dyDatas = Kingdee.BOS.ServiceHelper.QueryServiceHelper.GetDynamicObjectCollection(this.Context, paramCatalog);
return dyDatas;
}
#endregion
#region Action
/// <summary>
/// tbbMyAll 全部线索
/// </summary>
private void Act_ABIC_tbbMyAll()
{
string _userID = this.Context.UserId.ToString();
string _FCrmR = this.Act_GetSchRoleFilter(_userID, "or");
string _FilterStr = " FCrmHolder='" + _userID + "'" + _FCrmR;
Str_Filter = _FilterStr;
}
/// <summary>
/// tbbMyCreate 我创建的
/// </summary>
private void Act_ABIC_tbbMyCreate()
{
string _userID = this.Context.UserId.ToString();
Str_Filter = " FCreatorID='" + _userID + "'";
}
/// <summary>
/// tbbMyHold 我持有的
/// </summary>
private void Act_ABIC_tbbMyHold()
{
string _userID = this.Context.UserId.ToString();
Str_Filter = " FCrmHolder='" + _userID + "'";
}
/// <summary>
/// tbbMyCtrl 我管理的
/// </summary>
private void Act_ABIC_tbbMyCtrl()
{
string _userID = this.Context.UserId.ToString();
string _FCrmR = this.Act_GetSchRoleFilter(_userID, "");
Str_Filter = _FCrmR;
}
#endregion
#region CZTY Action Base
/// <summary>
/// Crm授权组织-部门 查询权
/// </summary>
/// <param name="_userID">User ID EXP=this.Context.UserId.ToString();</param>
/// <param name="_BefWhile">追加前导 or|and</param>
/// <returns>授权CrmSN过滤串</returns>
private string Act_GetSchRoleFilter(string _userID, string _BefWhile)
{
string _Filter = ""; //(charIndex('.Z1.',FCrmSN)>0
string _rowCrmSN = "";
string _sql = "exec proc_cztyCrm_GetCrmSN4U @FUserID='" + _userID + "'";
DataTable _dt = this.CZDB_SearchBase(_sql);
if (_dt.Rows.Count == 0)
{
return " " + _BefWhile + " 1<>1";
}
foreach (DataRow _dr in _dt.Rows)
{
_rowCrmSN = _dr["FCrmSN"].ToString();
_rowCrmSN = "charIndex('" + _rowCrmSN + "',FCrmSN)>0";
if (_Filter == "")
{
_Filter = _rowCrmSN;
}
else
{
_Filter = _Filter + " or " + _rowCrmSN;
}
}
_Filter = " (" + _Filter + ")";
if (_BefWhile != "")
{
_Filter = " " + _BefWhile + " " + _Filter;
}
return _Filter;
}
/// <summary>
/// search 基本方法
/// </summary>
/// <param name="_sql"></param>
/// <returns></returns>
public DataTable CZDB_SearchBase(string _sql)
{
DataTable dt;
try
{
dt = DBUtils.ExecuteDataSet(this.Context, _sql).Tables[0];
return dt;
}
catch (Exception _ex)
{
return null;
throw _ex;
}
}
#endregion
}
}