田源
2025-01-16 404966637eda6881a0f17683c5aacc7c1c34aed8
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
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
package plm.portal.utility;
 
import java.util.List;
import java.util.Map;
 
import org.dom4j.DocumentException;
 
import com.vci.corba.common.VCIError;
 
 
import plm.bs.bom.common.BusinessObject;
import plm.bs.bom.common.LinkObject;
import plm.corba.portal.PortalVI;
import plm.corba.qt.BOAndLO;
import plm.corba.refquery.RefPath;
import plm.oq.objectQuery.common.OrderInfo;
import plm.oq.objectQuery.common.PageInfo;
 
public interface IDataModelProcessor {
 
    /**
     * 根据输入参数自定义查询模板,根据自定义的查询模板获取符合条件的业务对象查询结果
     * @param btmName,业务类型名称
     * @param clauseList,返回的字段列表,暂时默认支持*
     * @param queryChildrenFlag,是否查询子业务类型的数据
     * @param rightFlag,是否根据数据授权过滤,true:进行数据授权过滤,false:不进行数据授权过滤
     * @param queryCondition,查询条件map,即需要附加到业务类型的查询语句的查询条件
     * @param version,1:当前版本当前版次;2代表当前版本最新版次;3:代表最新版本最新版次;4代表当前发布有效版
     * @param pageInfo,分页信息,不需要分页时将其设为null即可,其包含两个属性:pageNO:页数和rowCount:当前页显示条数
     * @param orderInfoList,排序信息,不需要是将其设置为null, 其包含三个属性:level:排序优先级,数越小越优先; orderField:排序字段名称;orderMode:属性ASC或DESC;
     * @return
     * @throws VCIError
     * @throws DocumentException
     */
    public BusinessObject[] getBusinessObjectByCondition(String btmName, List<String> clauseList, boolean queryChildrenFlag, boolean rightFlag, 
            Map<String, String> queryCondition, int version, PageInfo pageInfo, List<OrderInfo> orderInfoList) throws VCIError;
    
    /**
     * 自定义查询模板,根据查询条件查询符合条件的链接类型查询结果
     * @param linkName,link名称
     * @param clauseList,返回的字段列表,暂时默认支持*
     * @param queryISLeaf,是否查询叶子节点,true代表查询,false代表不查询
     * @param rightFlag,是否根据数据授权过滤,true:进行数据授权过滤,false:不进行数据授权过滤
     * @param direction,查询方向,true代表正向查询,false代表反向查询
     * @param queryCondition,是否查询子业务类型的数据
     * @param version,1:当前版本当前版次;2代表当前版本最新版次;3:代表最新版本最新版次;4代表当前发布有效版
     * @param pageInfo,分页信息,不需要分页时将其设为null即可,其包含两个属性:pageNO:页数和rowCount:当前页显示条数
     * @param level,查询的层级,-1代表所有,其他数字代码查询的具体层数
     * @param orderInfoList,排序信息,不需要是将其设置为null, 其包含三个属性:level:排序优先级,数越小越优先; orderField:排序字段名称;orderMode:属性ASC或DESC;
     * @param recReturnMode,是否去重,true代表去重,false代表不去重
     * @param objId,源对象ID
     * @param btmType,查询目标对象的业务类型
     * @return
     * @throws VCIError
     */
    public LinkObject[] getLinkObjectByCondition(String linkName, List<String> clauseList, boolean queryISLeaf, boolean rightFlag, boolean direction,
            Map<String, String> queryCondition, int version, PageInfo pageInfo, int level, List<OrderInfo> orderInfoList, boolean recReturnMode, String objId, String btmType) throws VCIError;
    
    /**
     * 自定义查询模板,根据查询条件查询符合条件的业务对象和链接类型查询结果
     * @param linkName,link名称
     * @param clauseList,返回的字段列表,暂时默认支持*
     * @param queryISLeaf,是否查询叶子节点,true代表查询,false代表不查询
     * @param rightFlag,是否根据数据授权过滤,true:进行数据授权过滤,false:不进行数据授权过滤
     * @param direction,查询方向,true代表正向查询,false代表反向查询
     * @param queryCondition,是否查询子业务类型的数据
     * @param version,1:当前版本当前版次;2代表当前版本最新版次;3:代表最新版本最新版次;4代表当前发布有效版
     * @param pageInfo,分页信息,不需要分页时将其设为null即可,其包含两个属性:pageNO:页数和rowCount:当前页显示条数
     * @param level,查询的层级,-1代表所有,其他数字代码查询的具体层数
     * @param orderInfoList,排序信息,不需要是将其设置为null, 其包含三个属性:level:排序优先级,数越小越优先; orderField:排序字段名称;orderMode:属性ASC或DESC;
     * @param recReturnMode,是否去重,true代表去重,false代表不去重
     * @param objId,源对象ID
     * @param btmType,查询目标对象的业务类型
     * @return
     * @throws VCIError
     */
    public BOAndLO[] getBOLOsByCondition(String linkName, List<String> clauseList, boolean queryISLeaf, boolean rightFlag, boolean direction,
            Map<String, String> queryCondition, int version, PageInfo pageInfo, int level, List<OrderInfo> orderInfoList, boolean recReturnMode, String objId, String btmType) throws VCIError;
    
    /**
     * 根据查询模板及附加条件查询业务对象
     * @param queryTemplate,查询模板名称
     * @param replaceMap,替换属性map
     * @param conditionMap,查询条件map
     * @param pageInfo,分页信息,其包含两个属性:pageNO:页数和rowCount:当前页显示条数
     * @return
     * @throws VCIError
     * @throws DocumentException
     */
    public BusinessObject[] getBusinessObjectByQueryTemplate(String queryTemplate, Map<String, String> replaceMap, Map<String, String> conditionMap, PageInfo pageInfo) throws VCIError;
    
    /**
     * 根据查询模板及附加条件查询业务对象
     * @param queryTemplate,查询模板名称
     * @param replaceMap,替换属性map
     * @param conditionMap,查询条件map
     * @param pageInfo,分页信息,其包含两个属性:pageNO:页数和rowCount:当前页显示条数
     * @param orderInfos: 排序信息
     * @return
     * @throws VCIError
     * @throws DocumentException
     */
    public BusinessObject[] getBusinessObjectByQueryTemplate(String queryTemplate, Map<String, String> replaceMap, Map<String, String> conditionMap, PageInfo pageInfo, List<OrderInfo> orderInfos) throws VCIError;
    
    /**
     * 根据查询模板查询符合要求的link对象
     * @param queryTemplate,查询模板
     * @param replaceMap,替换map,
     * @param conditionMap,附件的查询条件
     * @param pageInfo,分页信息,其包含两个属性:pageNO:页数和rowCount:当前页显示条数
     * @return
     * @throws VCIError
     * @throws DocumentException
     */
    public LinkObject[] getLinkObjectByQueryTemplate(String queryTemplate, Map<String, String> replaceMap, Map<String, String> conditionMap, PageInfo pageInfo) throws VCIError;
    
    /**
     * 根据查询模板查询符合要求的业务对象和链接对象
     * @param queryTemplate,查询模板
     * @param replaceMap,替换map,
     * @param conditionMap,附件的查询条件
     * @param pageInfo,分页信息,其包含两个属性:pageNO:页数和rowCount:当前页显示条数
     * @return
     * @throws VCIError
     * @throws DocumentException
     */
    public BOAndLO[] getBOLOsByQueryTemplate(String queryTemplate, Map<String, String> replaceMap, Map<String, String> conditionMap, PageInfo pageInfo) throws VCIError;
    
    /**
     * 根据查询模板查询符合要求的业务对象和链接对象
     * @param queryTemplate,查询模板
     * @param replaceMap,替换map,
     * @param conditionMap,附件的查询条件
     * @param pageInfo,分页信息,其包含两个属性:pageNO:页数和rowCount:当前页显示条数
     * @return
     * @throws VCIError
     * @throws DocumentException
     */
    public BOAndLO[] getBOLOsByQueryTemplate(String queryTemplate, Map<String, String> replaceMap, Map<String, String> conditionMap, PageInfo pageInfo, List<OrderInfo> orderInfos) throws VCIError;
    
    
    
    /**
     * 根据form定义获取form的显示信息
     * @param formDef,form的定义
     * @return Map,key代表显示的主键,value为显示的具体信息
     */
    public Map<String, String> getFormColumnMap(PortalVI formDef);
    
    /**
     * 根据列表关联的form以及列表显示列,获取表头显示的信息
     * @param formDef,列表对应的表单信息;
     * @param tableCol,显示的列名
     * @return Map,key代表显示的主键,value为显示的具体信息
     */
    public Map<String, String> getSheetColumnMap(PortalVI formDef, String[] tableCol);
    
    /**
     * 根据查询结果获取定义显示的值
     * 
     * @param key,显示的值
     * @param value,实际存储值
     * @param selectValues,定义的list
     * @return
     */
    public String getSelectDisplayValue(String key , String value, List<String> selectValues);
    
    /**
     * 获取多文件的列
     * @param formDef
     * @return
     */
    public Map<String, PRMItem> getMultiFileCol(PortalVI formDef);
    
    /**
     * 获取文件列
     * @param formDef
     * @return
     */
    public Map<String, PRMItem> getFileCol(PortalVI formDef);
    
    /**
     * 获取自定义属性列
     * @param formDef
     * @return
     */
    public Map<String, PRMItem> getCustomCol(PortalVI formDef);
    
    /**
     * 获取参照列
     * 参照列为带有.分割的列,如t_oid.name, dept.name等
     * @param queryCol,key的值为t_oid或者dept.name,值为以t_oid开头的list集合,如key=t_oid时,value为t_oid.name,t_oid.id的list集合。
     * @return
     */
    public Map<String, List<String>> getReferenceCol(Map<String, String> queryCol);
    
    /**
     * 获取列表的分隔符
     * @param prm
     * @return
     */
    public String getTableQueryTemplate(PRM prm);
    
    /**
     * 后去form的查询模版
     * @param prm
     * @return
     */
    public String getFormQueryTemplate(PRM prm);
    
    /**
     * 根据查询模版以及替换条件获取链接对象数据
     * 
     * @param queryTemplate,查询模版
     * @param replaceMap,替换条件
     * @return
     * @throws PLMError
     * @throws VCIException
     * @throws DocumentException
     */
    public LinkObject[] getLinkObjectByQueryTemplate(String queryTemplate, Map<String, String> replaceMap) throws VCIError, DocumentException;
    
    /**
     *  根据查询模版以及替换条件、查询条件获取链接对象数据
     * 
     * @param queryTemplate,查询模版
     * @param replaceMap,替换条件
     * @param conditionMap,查询条件
     * @return
     * @throws VCIError
     * @throws DocumentException
     */
    public LinkObject[] getLinkObjectByQueryTemplate(String queryTemplate, Map<String, String> replaceMap, Map<String, String> conditionMap) throws VCIError, DocumentException;
    
    /**
     * 根据查询条件获取链接对象数据
     * @param conditions,查询条件
     * @param direction,方向,true为正向,false为反向
     * @return
     * @throws PLMError
     * @throws VCIException
     */
    public LinkObject[] getLinkObjectByCondition(Map<String, String> conditions, boolean direction) throws VCIError;
    
    /**
     * 根据查询模版获取业务对象
     * @param queryTemplate,查询模版
     * @param replaceMap,替换条件
     * @return
     * @throws PLMError
     * @throws VCIException
     * @throws DocumentException
     */
    public BusinessObject[] getBusinessObjectByQueryTemplate(String queryTemplate, Map<String, String> replaceMap) throws VCIError, DocumentException;
    
    /**
     * 根据查询模版以及查询条件获取业务对象
     * @param queryTemplate,查询模版
     * @param replaceMap,替换条件
     * @param conditionMap,查询条件
     * @return
     * @throws VCIError
     * @throws DocumentException
     */
    public BusinessObject[] getBusinessObjectByQueryTemplate(String queryTemplate, Map<String, String> replaceMap, Map<String, String> conditionMap) throws VCIError, DocumentException;
    /**
     * 根据查询条件获取业务对象
     * @param conditions,查询条件
     * @return
     * @throws PLMError
     * @throws VCIException
     */
    public BusinessObject[] getBusinessObjectByCondition(Map<String, String> conditions) throws VCIError;
    
    /**
     * 获取查询业务对象的查询条件
     * @param type,查询的业务类型名称
     * @param rowRefMap,主map中的key为行数据的OID,如果是bo对象值为bo的oid,如果是lo对象值为lo的oid;主对象对应的map值中的key、value描述如下:
     * key为对应的参照属性名称(如t_oid、f_oid或其他的参照属性),value为对应参照的oid值(如t_oid、f_oid或者对应参照属性对应的值)
     * @param referenceKeyMap
     * @return String[] referenceDatas
     *            = new String[] {
     *            "btd.gg=22385E82-485C-549D-E2F4-91278E9E0A78,22385E82-485C-549D-E2F4-91278E9E0A75"
     *            ,
     *            "btd.gg.name=22385E82-485C-549D-E2F4-91278E9E0A78,22385E82-485C-549D-E2F4-91278E9E0A75"
     *            ,
     *            "btd.gg.ddd.name=22385E82-485C-549D-E2F4-91278E9E0A78,22385E82-485C-549D-E2F4-91278E9E0A75"
     *            ,
     *            "btd.gg.gg.name=22385E82-485C-549D-E2F4-91278E9E0A78,22385E82-485C-549D-E2F4-91278E9E0A75"
     *            ,
     *            "btd.gg.gg.gg.name=22385E82-485C-549D-E2F4-91278E9E0A78,22385E82-485C-549D-E2F4-91278E9E0A75"
     *            ,
     *            "btd.gg.gg.gg.ddd.name=22385E82-485C-549D-E2F4-91278E9E0A78,22385E82-485C-549D-E2F4-91278E9E0A75"
     *            ,
     *            "btd.gg.gg.gg.ddd.gg.name=22385E82-485C-549D-E2F4-91278E9E0A78,22385E82-485C-549D-E2F4-91278E9E0A75"
     *            , "btd.ddd=22385E82-485C-549D-E2F4-91278E9E0A78",
     *            "btd.ddd.ddd.gg.name=22385E82-485C-549D-E2F4-91278E9E0A78" };
     */
    public Map<String, String> getQueryBusinessObjectCondition(String type, Map<String, Map<String, String>> rowRefMap, Map<String, List<String>> referenceKeyMap);
    
    /**
     * 获取查询链接对象的查询条件
     * @param linkType
     * @param rowRefMap
     * @param referenceKeyMap
     * @return
     */
    public Map<String, String> getQueryLinkObjectCondition(String linkType, Map<String, String> rowKeyMap, Map<String, String> rowRefMap, Map<String, List<String>> referenceKeyMap);
    
    /**
     * 获取二次查询结果
     * @param map
     * @param typeName
     * @return 行数为传入值的属性个数,列数为传入值的的Id个数,每列的值对应到对应的Id列。
     */
    public RefPath[] queryReference(Map<String, String> map, String typeName);
    
    /**
     * 根据查询模版获取符合条件对象的条数
     * @param queryTemplate,查询模版
     * @param replaceMap,替换map
     * @param conditionMap,扩展过滤条件
     * @return
     * @throws VCIError
     */
    public int getObjectCountByTemplate(String queryTemplate, Map<String, String> replaceMap, Map<String, String> conditionMap) throws VCIError;
    
    /**
     * 获取二次查询结果
     * @param map
     * @param typeNames, 查询类型数组
     * @return 行数为传入值的属性个数,列数为传入值的的Id个数,每列的值对应到对应的Id列。
     */
    public RefPath[] queryReference(Map<String, String> map, String[] typeNames);
}