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 控件中查询已存在 ...
随机推荐
- python基础17 ---继承补充知识
一.继承的顺序 1.在python中的类可以集成多个类,既然是继承多个类就有类的寻找顺序这么一说.其寻找方法就有广度优先和深度优先两种. 2.当类是新式类,多继承的情况下会按照广度优先的顺序查找. 如 ...
- MySQL的information_schema库
information_schema数据库是MySQL自带的,它提供了访问数据库元数据的方式. 什么是元数据呢?元数据是关于数据的数据,如数据库名或表名.列的数据类型,或访问权限.有些时候用于表述该信 ...
- 【leetcode刷题笔记】Remove Duplicates from Sorted List
Given a sorted linked list, delete all duplicates such that each element appear only once. For examp ...
- a标签包着img事件 ie下 a标签的click事件失效
整个大的背景框有个点击事件, 如果标签结构是(详细的css样式略) a{background:green;} <a href=""> <img src=" ...
- EntityFramework 学习 一 并发
EntityFramework默认支持乐观并发 乐观并发中,实体加载后如果都没发生变化,ef保存该实体 首先,我们需要一个rowversion列为了控制student实体的并发问题,rowversio ...
- java--Hibernate实现分页查询
首先在Action类定义当前页的值 private Integer currPage = 1 setter,getter 在spring IOC容器进行注入该变量 在Action类写一个findAll ...
- zepto不支持animate({scrollTop:"100px"})的解决办法
在移动web项目的开发中,遇到一个通过点击页面自动到相应的楼层处的需求,最初的想法就是使用html的target属性进行切换,但实际效果十分死板,显得毫无交互性.该前端架构采用zepto这个轻库进行开 ...
- 关于自动化与vTable两种暴露接口的区别-1未完......
COM组件有两种暴露组件接口的方式,一种是以虚拟列表的方式暴露:一种就是自动化方式. 虚拟列表(VTable): COM组件将自己所有的方法的地址以一个虚拟表的方式存放在一起,这个虚拟表是一种结构,有 ...
- stl_pair.h
stl_pair.h // Filename: stl_pair.h // Comment By: 凝霜 // E-mail: mdl2009@vip.qq.com // Blog: http://b ...
- 雅礼集训 2017 Day2 水箱 可并堆
题目描述 给出一个长度为 n 宽度为 1 ,高度无限的水箱,有 n−1 个挡板将其分为 n 个 1 - 1 的小格,然后向每个小格中注水,水如果超过挡板就会溢出到挡板的另一边,这里的水是满足物理定律 ...