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 控件中查询已存在 ...
随机推荐
- php验证复选框的小例子
发布:thatboy 来源:Net [大 中 小] 本文介绍一个简单的php实例,通过代码验证复选框值的有效性,有需要的朋友,可以参考下. 验证复选框的php代码,如下: <?php ...
- maven导入项目时,缺少部分source folder
今天导入公司的maven项目时,少了一些source folder,运行启动正常,但是页面打不开,找不到对应的目录文件,使用maven更新项目,重启编辑器也无效. 问题描述如图所示,缺少了图中的2个目 ...
- ubuntu14.04 pygame安装 python2.7
系统:ubuntu14.04 LTS amd64python版本:2.7.6pygame版本:1.9.1release别这种方法了,这么安装不知道什么原因就出现了问题,在使用pygame.image. ...
- JavaScript 从对象 new 说起,简单理解 this/call/apply
new 创建一个新对象: 将构造函数的作用域赋给新对象(因此this就指向了这个新对象): 执行构造函数中的代码(为这个新对象添加属性): 返回新对象 用代码描述的话(先别管proyotype, a ...
- 【leetcode刷题笔记】Reverse Words in a String
Given an input string, reverse the string word by word. For example,Given s = "the sky is blue& ...
- 算法(Algorithms)第4版 练习 2.2.23
测试结果: 算法(Algorithms)第4版 练习 2.2.10 算法(Algorithms)第4版 练习 2.2.11(1) 算法(Algorithms)第4版 练习 2.2.11(2) 算法(A ...
- Entity Framework 学习笔记(一)之数据模型 数据库
关于Entity Framework 数据模型 的开发有三种模式:1.引用数据库方式:2.在VS中新建EF空模型Model 方式:3.Code 方式 Entity Framework 数据模型 ...
- ibatis的resultClass与resultMap 的区别
ibatis的resultClass与resultMap还是有很大的区别.以下是我碰到的一个问题. 配置文件写法如下: 1 sqlMap2 typeAlias alias="notice&q ...
- JS+css3焦点轮播图PC端
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 常用的Hql语句(转)
原文地址:http://blog.csdn.net/v123411739/article/details/28644007 尊重原创,请访问原文地址 // HQL: Hibernate Que ...