一.使用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

直接使用数据库中 字段

    public static List<Project2> queryProjects(HashMap<String, String> queryParams)
    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 查询功能的更多相关文章

  1. 通过维基API实现维基百科查询功能

    通过英文维基的免费API,可以实现对维基百科的搜索查询或者标题全文查询等,尝试了一下通过title实现全文查询,返回的结果是wikitext格式,暂时不知道该如何应用,所以仅实现了查询功能,可以返回最 ...

  2. 创建ASP.NET Core MVC应用程序(5)-添加查询功能 & 新字段

    创建ASP.NET Core MVC应用程序(5)-添加查询功能 & 新字段 添加查询功能 本文将实现通过Name查询用户信息. 首先更新GetAll方法以启用查询: public async ...

  3. MySQL 5.5开启慢查询功能

    vim /etc/my.cnf [mysqld] slow-query-log = on # 开启慢查询功能 slow_query_log_file = /usr/local/mysql/data/s ...

  4. ASP.NET MVC系列:为视图添加查询功能

    首先,在MoviesController里添加一个查询方法,代码如下 public ActionResult SearchIndex(string title) { //查询数据库中的电影表 var ...

  5. 完善ext.grid.panel中的查询功能(紧接上一篇)

    今天的代码主要是实现,Ext.grid.panel中的查询,其实我也是一名extjs新手,开始想的实现方式是另外再创建一个新的grid类来存放查询出的数据(就是有几个分类查询就创建几个grid类),这 ...

  6. 033医疗项目-模块三:药品供应商目录模块——供货商药品目录t添加查询功能----------Dao层和Service层和Action层和调试

    什么叫做供货商药品目录t添加查询功能?就是说我们前面的博客里面不是说供货商登录后看到了自己供应的药品了么如下: 现在供货商想要往里面添加别的药品,那么这个药品的来源就是卫生局提供的那个Ypxx表(药品 ...

  7. [Architecture Pattern] Repository实作查询功能

    [Architecture Pattern] Repository实作查询功能 范例下载 范例程序代码:点此下载 问题情景 在系统的BLL与DAL之间,加入Repository Pattern的设计, ...

  8. RPM软件包管理的查询功能

    以后大家升级rpm包的时候,不要用Uvh了! 我推荐用Fvh 前者会把没有安装过得包也给装上,后者只会更新已经安装的包   总结:未安装的加上小写p,已安装的不需要加p   查询q    rpm {- ...

  9. 实现带查询功能的Combox控件

    前言 ComBox 还可以实现查询功能,通过设置 ComBox 控件的 AutoCompleteSource 属性和 AutoCompleteMode 属性,可以实现从 Combox 控件中查询已存在 ...

随机推荐

  1. shell编程1

    shell编程1 一.shell基础正则表达式 1.正则表达式和通配符 正则表达式是用来在文件中匹配符合条件的字符串,正则式包含匹配.(grep awk sed) 通配符是用来匹配符合条件的文件名,通 ...

  2. HTML哪些是块级元素,哪些是行内元素、

    块级元素:块级大多为结构性标记 <address>...</adderss> <center>...</center>  地址文字 <h1> ...

  3. MyBatis:学习笔记(4)——动态SQL

    MyBatis:学习笔记(4)——动态SQL 如果使用JDBC或者其他框架,很多时候需要你根据需求手动拼装SQL语句,这是一件非常麻烦的事情.MyBatis提供了对SQL语句动态的组装能力,而且他只有 ...

  4. 虚拟机ubuntu14.04系统设置静态ip

    ubuntu14.04 设置静态ip vim /etc/network/interfaces 原来只有 auto lo iface lo inet loopback 修改成如下: auto lo if ...

  5. [原创]java WEB学习笔记19:初识MVC 设计模式:查询,删除 练习(理解思想),小结 ,问题

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  6. 【Flask模板】include标签

    # include标签:1. 这个标签相当于是直接将指定的模版中的代码复制粘贴到当前位置.2. `include`标签,如果想要使用父模版中的变量,直接用就可以了,不需要使用`with context ...

  7. css 行内元素 块元素 替换元素 非替换元素 以及这些元素的width height margin padding 特性

    一.各种元素的width height margin padding 特性(具体css元素的分来参看二) 1.块级元素 width. height. margin的四个方向. padding的四个方向 ...

  8. ie6不认识

    1.   ie6 不认识这样连续写的类选择 .class1.class2{  } 2.   ie6 下不解析 css  input[type="text"] 等等类别的选择

  9. php生成各种验证码

    片段 1 片段 2 片段 3 index.html ```<script type="text/javascript" src="jquery.min.js&quo ...

  10. jQuery图片水平滑动延迟加载动画

    在线演示 本地下载