Windchill 查询功能
一.使用SearchCondition
查询语句中用容器中的containerReference.key.id名称来代替数据库中的字段idA3containerReference
/**
* 获取项目下所有的活动 StandardProjectReportService.java
* @param project
* @return
*/
public static List<PlanActivity> getActivityByProject(Project2 project) throws Exception{
List<PlanActivity> activityList = new ArrayList<PlanActivity>();
QueryResult queryResult = null;
if (project == null)
return null;
int[] index = { 0 };
QuerySpec querySpec = new QuerySpec(PlanActivity.class);//SELECT A0.* FROM com.ptc.projectmanagement.plan.PlanActivity A0
long projectId = PersistenceHelper.getObjectIdentifier(project).getId();
WhereExpression whereExpression = new SearchCondition(
PlanActivity.class, "containerReference.key.id",/* 数据库字段是 idA3containerReference */
SearchCondition.EQUAL, projectId);//WHERE (A0.idA3containerReference = projectId
querySpec.appendWhere(whereExpression, index);
queryResult = PersistenceHelper.manager.find((StatementSpec) querySpec);
PlanActivity projectActivity = null;
while(queryResult.hasMoreElements()){
projectActivity = (PlanActivity) queryResult.nextElement();
activityList.add(projectActivity);
}
return activityList;
}
表名PlanActivity的类名是 com.ptc.projectmanagement.plan.PlanActivity
在服务器中的Wndchill shell中输入如下命令:inforeport com.ptc.projectmanagement.plan.PlanActivity
inforeport wt.projmgmt.admin.Project2

会在D:\ptc\Windchill_10.1\Windchill\temp 目录中自动生成文件admin.Project2.ou,打开即可

二.使用TableColumn
直接使用数据库中 字段
throws Exception {
String department = queryParams.get("department"); //0
String user = queryParams.get("user"); //1
System.out.println("user=====ddd==========>" + user);
String pjName = queryParams.get("pjName"); //2项目名称
String projComp = queryParams.get("projComp"); //3 项目进度查询
String create_date = queryParams.get("create_date");//4
String end_date = queryParams.get("end_date"); //5
List<Project2> list = new ArrayList<Project2>();
QueryResult queryResult = null;
QuerySpec querySpec = null;
try {
querySpec = new QuerySpec();
int projectClassIndex = querySpec.appendClassList(Project2.class,true);//wt.projmgmt.admin.Project2 A0
int userClassIndex = querySpec.appendClassList(WTUser.class, true);//wt.org.WTUser A1
int epplanClassIndex = querySpec.appendClassList(Plan.class, true);//com.ptc.projectmanagement.plan.Plan A2
//System.out.println(">>>>querySpec22222----------"+querySpec);
//SELECT A0.*,A1.*,A2.* FROM wt.projmgmt.admin.Project2 A0 ,wt.org.WTUser A1 ,com.ptc.projectmanagement.plan.Plan A2
querySpec.setAdvancedQueryEnabled(true);
String[] aliases = new String[3];
aliases[0] = querySpec.getFromClause().getAliasAt(projectClassIndex);//A0
aliases[1] = querySpec.getFromClause().getAliasAt(epplanClassIndex);//A2
aliases[2] = querySpec.getFromClause().getAliasAt(userClassIndex);//A1
TableColumn projectIdColumn = new TableColumn(aliases[0], "idA2A2");//A0.idA2A2
TableColumn projectNameColumn = new TableColumn(aliases[0], "namecontainerInfo");//A0.namecontainerInfo
TableColumn projectUserIDColumn = new TableColumn(aliases[0],"idA3B2containerInfo"); //A0.idA3B2containerInfo
TableColumn projectStateColumn = new TableColumn(aliases[0],"statecontainerTeamManagedInf");//A0.statecontainerTeamManagedInf
TableColumn foreignKeyColumn = new TableColumn(aliases[1], "idA3containerReference");//A2.idA3containerReference
TableColumn userIDColumn = new TableColumn(aliases[2], "idA2A2");//A1.idA2A2
TableColumn percentCompleteColumn = new TableColumn(aliases[1],"percentWorkComplete"); // 项目完成进度
TableColumn actualStartTimeColumn = new TableColumn(aliases[1],"startDate"); // 实际开始时间 //epplan表
TableColumn finishDateColumn = new TableColumn(aliases[1],"finishDate"); // 实际完成时间
CompositeWhereExpression andExpression = new CompositeWhereExpression(LogicalOperator.AND);//where
andExpression.append(new SearchCondition(projectIdColumn, "=",foreignKeyColumn));//A0.idA2A2 = A2.idA3containerReference
andExpression.append(new SearchCondition(projectUserIDColumn, "=",userIDColumn));//A0.idA3B2containerInfo = A1.idA2A2
andExpression.append(new SearchCondition(projectStateColumn, SearchCondition.NOT_EQUAL,ConstantExpression.newExpression("SUSPENDED")));//A0.statecontainerTeamManagedInf <> N'SUSPENDED'
// WHERE ((A0.idA2A2 = A2.idA3containerReference) AND (A0.idA3B2containerInfo = A1.idA2A2) AND (A0.statecontainerTeamManagedInf <> N'SUSPENDED')
//AND (A0.namecontainerInfo LIKE N'D1409 %'))
//项目名称模糊查询
if(pjName!= null && !pjName.equals("")){
andExpression.append(new SearchCondition(projectNameColumn,
SearchCondition.LIKE, ConstantExpression.newExpression(pjName+"%")));//A0.namecontainerInfo LIKE N'D1409 %'
}
// 项目进度查询
if (projComp != null && !projComp.equals("")) {
andExpression.append(new SearchCondition(percentCompleteColumn,
">=", ConstantExpression.newExpression(Integer.parseInt(projComp))));
}
DateFormat dateFormat = new SimpleDateFormat(DATE_STYLE,SessionHelper.getLocale());
// String formatText = WTMessage.getLocalizedMessage();
// SimpleDateFormat exportTableTimeFormat = new SimpleDateFormat(formatText, SessionHelper.getLocale());
dateFormat.setTimeZone(TimeZoneHelper.getLocalTimeZone());
Date date = null;
Date date2 = null;
try {
if(create_date!=null && !create_date.equalsIgnoreCase("")){
date = dateFormat.parse(create_date); //date为项目开始时间转化成了Date格式
}
if(end_date!=null && !end_date.equalsIgnoreCase("")){
date2 = dateFormat.parse(end_date); //date2为项目结束时间
}
} catch (ParseException e) {
e.printStackTrace();
}
if (date != null) {
andExpression.append(new SearchCondition(actualStartTimeColumn,
SearchCondition.GREATER_THAN_OR_EQUAL,ConstantExpression.newExpression(date)));//>=
}
if (date2 != null) {
andExpression.append(new SearchCondition(finishDateColumn,
SearchCondition.LESS_THAN_OR_EQUAL, ConstantExpression.newExpression(date2)));//<=
}
querySpec.appendWhere(andExpression, null);
queryResult = PersistenceHelper.manager.find((StatementSpec) querySpec);
System.out.println(">>>>querySpec5555----------"+querySpec);
while (queryResult.hasMoreElements()) {
Object obj= queryResult.nextElement();
Project2 project2 = (Project2) ((Object[])obj)[0];
WTPrincipal principal=project2.getOwner();
WTPrincipalReference wf = WTPrincipalReference.newWTPrincipalReference(principal);
String ownerName = wf.getFullName();
//按人员过滤,通过条件:1.人员为project owner,
////HM=============================================HM==============
//System.out.println("Pro=============>" + ProjectUtil.findJoinUserByProject2(project2, user.trim()));
if(ProjectUtil.findJoinUserByProject2(project2, user.trim())== true|| ownerName.equals(user.trim())){
list.add(project2);
}
}
} catch (QueryException e) {
e.printStackTrace();
}
return list;
}
Windchill 查询功能的更多相关文章
- 通过维基API实现维基百科查询功能
通过英文维基的免费API,可以实现对维基百科的搜索查询或者标题全文查询等,尝试了一下通过title实现全文查询,返回的结果是wikitext格式,暂时不知道该如何应用,所以仅实现了查询功能,可以返回最 ...
- 创建ASP.NET Core MVC应用程序(5)-添加查询功能 & 新字段
创建ASP.NET Core MVC应用程序(5)-添加查询功能 & 新字段 添加查询功能 本文将实现通过Name查询用户信息. 首先更新GetAll方法以启用查询: public async ...
- MySQL 5.5开启慢查询功能
vim /etc/my.cnf [mysqld] slow-query-log = on # 开启慢查询功能 slow_query_log_file = /usr/local/mysql/data/s ...
- ASP.NET MVC系列:为视图添加查询功能
首先,在MoviesController里添加一个查询方法,代码如下 public ActionResult SearchIndex(string title) { //查询数据库中的电影表 var ...
- 完善ext.grid.panel中的查询功能(紧接上一篇)
今天的代码主要是实现,Ext.grid.panel中的查询,其实我也是一名extjs新手,开始想的实现方式是另外再创建一个新的grid类来存放查询出的数据(就是有几个分类查询就创建几个grid类),这 ...
- 033医疗项目-模块三:药品供应商目录模块——供货商药品目录t添加查询功能----------Dao层和Service层和Action层和调试
什么叫做供货商药品目录t添加查询功能?就是说我们前面的博客里面不是说供货商登录后看到了自己供应的药品了么如下: 现在供货商想要往里面添加别的药品,那么这个药品的来源就是卫生局提供的那个Ypxx表(药品 ...
- [Architecture Pattern] Repository实作查询功能
[Architecture Pattern] Repository实作查询功能 范例下载 范例程序代码:点此下载 问题情景 在系统的BLL与DAL之间,加入Repository Pattern的设计, ...
- RPM软件包管理的查询功能
以后大家升级rpm包的时候,不要用Uvh了! 我推荐用Fvh 前者会把没有安装过得包也给装上,后者只会更新已经安装的包 总结:未安装的加上小写p,已安装的不需要加p 查询q rpm {- ...
- 实现带查询功能的Combox控件
前言 ComBox 还可以实现查询功能,通过设置 ComBox 控件的 AutoCompleteSource 属性和 AutoCompleteMode 属性,可以实现从 Combox 控件中查询已存在 ...
随机推荐
- 坑爹的shell 空格
shell 空格很敏感,被线上代码坑了,占个位,回头好好整理一下
- Django模型系统——ORM
一.概论 1.ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术. 简单的说,ORM是通过使用描 ...
- 淘宝开源平台(taobao-code)使用
偶尔之下翻到的这个东西,瞬间觉得足以解决自己在开发过程中的版本控制问题.就注册了一个试试.先是在度娘上搜寻“淘code”,进入官网之后直接注册.然后构建自己的项目,上传代码就OK了. 一.搜寻“淘co ...
- Python 列表解析list comprehension和生成表达式generator expression
如果想通过操作和处理一个序列(或其他的可迭代对象)来创建一个新的列表时可以使用列表解析(List comprehensions)和生成表达式(generator expression) (1)list ...
- zabbix实现mysql数据库的监控(二)
上章我们把zabbix的服务端和客户端都部署完成了,本章接着进行两部分的设置: 1 添加对mysql数据库主机的监控 2 添加对mysql数据库的监控 一.对数据库服务器主机监控 1 创建主机 步 ...
- 0522 HTML表单 CSS基础
一.列表标签 列表标签分为三种. 1.无序列表<ul>,无序列表中的每一项是<li> 英文单词解释如下: ul:unordered list,“无序列表”的意思. li:lis ...
- 斯坦福机器学习视频笔记 Week1 线性回归和梯度下降 Linear Regression and Gradient Descent
最近开始学习Coursera上的斯坦福机器学习视频,我是刚刚接触机器学习,对此比较感兴趣:准备将我的学习笔记写下来, 作为我每天学习的签到吧,也希望和各位朋友交流学习. 这一系列的博客,我会不定期的更 ...
- LightOJ 1138 二分
1138 - Trailing Zeroes (III) PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: ...
- Oracle的PL_SQL的结构
--PL/SQL的结构 declare --声明变量和常量关键字 v_name nvarchar2(); v_age integer;--常规变量声明 v_product table_name.col ...
- php 数据处理--合并,拆分,追加,去重
1. 合并数组 array_merge()函数将数组合并到一起,返回一个联合的数组.所得到的数组以第一个输入数组参数开始,按后面数组参数出现的顺序依次迫加. 示例代码: <?php $arr = ...