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 控件中查询已存在 ...
随机推荐
- windows与VMware ubuntu虚拟机实现文件共享
本文基本摘自:无限挑战者的博客 本人用的系统是win10系统,应该区别不大,实现的是win10系统和VMWare虚拟机Ubantu系统之间的文件共享.到网上找了很多的方法各种各样的方式,由于对Linu ...
- Mysql 导入实战
这个几天公司迁移预览版数据库,当前公司使用的是 Mysql 数据库,版本为 5.6.迁移的数据库大小也不算很大,2G 多一点,总体以小表为主,就几张表数据比较大,有业务记录表达到了 150W 的数量级 ...
- web框架之Django<一、初识>
一.什么是web框架 框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特定的系统,简单地说,就是你用别人搭建好的舞台来做表演. 对于所有的 ...
- 收缩VC数据库
注意: 在收缩日志前必须截断事务日志. 一. SQL Server 2008 收缩日志 (1) 使用SQL管理器收缩日志 第一步执行如下命令 ALTER DATABASE dbname SET REC ...
- MSSQL遇到以零作除数错误的处理方法
在sql server中做除法处理的时候,我们经常需要处理除数为零的情况,因为如果遇到这种情况的时候,sqlserver会抛出遇到以零作除数错误的异常,我们总不希望把这个异常显示给用户吧. 做个会报这 ...
- form 中Enctype=multipart/form-data 的作用
form 中Enctype=multipart/form-data 的作用 ENCTYPE="multipart/form-data"用于表单里有图片上传. <form na ...
- DBGrideh 实现自动排序
一.点击标题自动排序 1.在optioneh中设置:AutosortMarking:=True2.设置DbGridEh的属性:(不一定总要设置,与使用的数据连接有关)sortlocal:=True;3 ...
- c#子线程执行完怎么通知主线程
定义一个委托实现回调函数 public delegate void CallBackDelegate(string message); 程序开始的时候 //把回调的方法给委托变量 CallBackDe ...
- php-fpm进程内存泄漏
线上服务器内存报警 线上web8G内存的服务器,内存几乎吃光,top查看,发现php-fpm进程每个都是几十M,php-fpm配置static, 一共150个 解决 排除过程中,其他机器相同配置都没有 ...
- JavaWEB - JSP及隐含对象
---------------------------------------------------------------------------------------------------- ...