PTC FlexPLM rfa 常用功能api

1.根据款号查询产品
public LCSProduct GetProductByName(String SKC) throws WTException {
        //声明查询
        PreparedQueryStatement statement = new PreparedQueryStatement();
        statement.appendFromTable("LCSPRODUCT");
        //获取FlexType类型,也就是系列
        String flextypePath = "Product"; 
        FlexType flextype = FlexTypeCache.getFlexTypeFromPath(flextypePath);// the flextype of product flextype
        //设置SQL语句的列名
        String columnFtaName = null;        
        columnFtaName = flextype.getAttribute("productName").getVariableName();
        statement.appendSelectColumn("LCSPRODUCT", columnFtaName);        
        statement.appendSelectColumn("LCSPRODUCT", "BRANCHIDITERATIONINFO");        
        //设置SQL中的Where条件
        //款号条件
        if(SKC.trim().length()>0){
            statement.appendAndIfNeeded();
            statement.appendCriteria(new Criteria("LCSPRODUCT",flextype.getAttribute("EPAstyleNumber").getVariableName(),SKC,Criteria.EQUALS));
        }        
        statement.appendAndIfNeeded(); //版本号为A
        statement.appendCriteria(new Criteria("LCSPRODUCT", "VERSIONIDA2VERSIONINFO", "A", Criteria.EQUALS));        
        statement.appendAndIfNeeded();//并且为最大版本号
        statement.appendCriteria(new Criteria("LCSPRODUCT", "LATESTITERATIONINFO", "1", Criteria.EQUALS));        
        SearchResults results = LCSQuery.runDirectQuery(statement);//执行查询
        Vector vRlt = results.getResults(); //获取所有行的信息
        int iRecNum = vRlt.size();        
        if (iRecNum == 0 || iRecNum > 1) {
            System.out.println("1-无法定位产品");
            return null;
        }
        FlexObject obj = (FlexObject) vRlt.get(0);//获取产品
        String oid="VR:com.lcs.wc.product.LCSProduct:"+obj.getString("LCSPRODUCT.BRANCHIDITERATIONINFO");//取出该产品的oid
        //通过接口查询处产品实体
        return (LCSProduct)(new LCSProductQuery()).findObjectById(oid);
    }
2.根据产品获取所属季节对象
public LCSSeason GetSeasonByProduct(LCSProduct product)throws Exception{
        SeasonProductLocator seasonProductLocator = new SeasonProductLocator();
        LCSSeasonProductLink seasonProductLink = seasonProductLocator.getSeasonProductLink(product);
        LCSSeason season = (LCSSeason)seasonProductLocator.getSeasonRev(seasonProductLink);
        return season;
    }
3.获取季节和产品的关联对象
SeasonProductLocator seasonProductLocator = new SeasonProductLocator();
LCSSeasonProductLink seasonProductLink = seasonProductLocator.getSeasonProductLink(product);
4.获取产品的采购来源(1:m)
   Collection sourcing = LCSSourcingConfigQuery.getSourcingConfigsForProduct(product);
    Iterator it = sourcing.iterator();
    LCSSourcingConfig configSource=null;
    while (it.hasNext()) {
        configSource = (LCSSourcingConfig)it.next();
    }
5.获取产品采购来源下的所有规格
SearchResults gg = FlexSpecQuery.findSpecsByOwner((WTPartMaster)product.getMaster(), (WTPartMaster)season.getMaster(), null, null);
Collection coll = LCSQuery.getObjectsFromResults(gg, "VR:com.lcs.wc.specification.FlexSpecification:", "FLEXSPECIFICATION.BRANCHIDITERATIONINFO");
    for(int n=0;n<coll.size();n++){
        specification = (FlexSpecification) coll.toArray()[n];
    }
6.获取产品下的所有图像文档集合
    LCSProductQuery prodQuery = new LCSProductQuery();
    Collection prodImagePages = prodQuery.findImagePages(product, null, null, true);
    prodImagePages = CollectionUtil.distinctResults(prodImagePages, "LCSDOCUMENT.BRANCHIDITERATIONINFO");
    Iterator imagePageIter = prodImagePages.iterator();
    while(imagePageIter.hasNext()){
       FlexObject obj = (FlexObject) imagePageIter.next();
       ...
    } 
7.获取产品下的所有工艺包
Collection construction = LCSQuery.runDirectQuery(LCSConstructionQuery.findConstructionForProductQuery(product, null, true)).getResults();
    Iterator constIter = construction.iterator();
    while(constIter.hasNext()){
        FlexObject obj = (FlexObject) constIter.next();
    }   
8.获取产品下的所有版型集合
Collection measurements = LCSQuery.runDirectQuery(LCSMeasurementsQuery.findMeasurmentsForProductQuery(product, null, true)).getResults();
    Iterator measIter = measurements.iterator();
    while(measIter.hasNext()){
        FlexObject obj = (FlexObject) measIter.next();
    } 
9.获取产品下的所有BOM
LCSFlexBOMQuery bomQuery = new LCSFlexBOMQuery();
    QueryStatement bomQueryStatement = bomQuery.findBOMPartsForOwnerQuery((WTPartMaster)product.getMaster(), "", true);
    Collection bomResults = LCSQuery.runDirectQuery(bomQueryStatement).getResults();
    Iterator bomIter = bomResults.iterator();
    while(bomIter.hasNext()){
         FlexObject obj = (FlexObject) bomIter.next();
    }    
10.给FlexModel批量赋值,Collection操作
        Map specMap=new HashMap();
    specMap.put("specOwnerId",specOwnerId);
    specMap.put("sourceIds",sourceIds);
    specMap.put("specSourceId",specSourceId);
    specMap.put("specSeason",specSeason);
    specMap.put("typeId",typeId);
    specMap.put(att1Name,"颁行");
    //操作Collection
    Collection c_sourceIds = new HashSet();
    c_sourceIds.add(sourceIds);
        AttributeValueSetter.setAllAttributes(flexSpecModel, specMap);    
11.获取产品的颜色
public String GetProductColor(LCSProduct product){
        try{
             String str="";
             LCSSKUQuery query = new LCSSKUQuery();
             Collection skuList = query.findSKUs(product);
             for (Iterator iter = skuList.iterator(); iter.hasNext();) {
                LCSSKU sku=(LCSSKU)iter.next();
                str+=sku.getName().replace(" ("+product.getValue("productName")+")","\\");
            }
            if(str=="") return "无";
            return str.substring(0,str.length()-1);
        }
        catch(Exception e){
            return "ERROR";
        }
    }
12.根据用户名,获取用户对象
public WTUser getUser(String name) throws WTException {   
        Enumeration enumUser = OrganizationServicesHelper.manager.findUser(WTUser.NAME, name);   
        WTUser user = null;   
        if (enumUser.hasMoreElements())   
            user = (WTUser) enumUser.nextElement();   
  
        if (user == null) {   
            enumUser = OrganizationServicesHelper.manager.findUser(WTUser.FULL_NAME, name);   
            if (enumUser.hasMoreElements())   
                user = (WTUser) enumUser.nextElement();   
        }
        if (user == null) {   
            throw new WTException("系统中不存在用户名为'" + name + "'的用户!");   
        }   
        return user;   
    }
13.FlexPLM键值对查找
public String GetBusinessObjDispKey(String Key,String Disp,String path,String Att){
        try{
            //准备关键字和值的转换
            FlexTypeAttribute LoadAtt=FlexTypeCache.getFlexTypeFromPath(path).getAttribute(Att);
            Collection pathData = LoadAtt.getAttValueList().getDataSet();            
            for(Iterator iter=pathData.iterator();iter.hasNext();){
                FlexObject fo=(FlexObject)iter.next();
                String key=fo.getString("KEY");
                String disp=fo.getString("VALUE_ZH_CN");
                if(!Key.equals("") && key.equals(Key))
                    return disp;
                else if(!Disp.equals("") && disp.equals(Disp))
                    return key;
            }
            return Key;
        }
        catch(Exception e){
            System.out.println("GetValueByKey====Error:"+e);
            return "";        
        }
    }
14.获取打样品颜色列表
FlexTypeAttribute LoadAtt=FlexTypeCache.getFlexTypeFromPath("Business Object\\PTCOListOfValue\\PTCOCommonLov\\PTCOCommon1Lov").getAttribute("LovSampleColor");
        Collection pathData = LoadAtt.getAttValueList().getDataSet();
        for(Iterator iter=pathData.iterator();iter.hasNext();){
            FlexObject fo=(FlexObject)iter.next();
            String key=fo.getString("KEY");
            String disp=fo.getString("VALUE_ZH_CN");
        }
15.根据产品和用户获取用户下的所有工作流,并驱动执行
String OjbectID="VR:com.lcs.wc.product.LCSProduct:"+(int)spl.getProductSeasonRevId();
        //获取用户实体
        WTUser user = getUserFromName(UserName);
        //根据用户和ObjectID定位项目
        SearchResults res = (new LCSWorkitemQuery()).getUserWorkList(user,OjbectID);
        Collection coll = res.getResults();
        System.out.println("根据用户和ObjectID获取" + coll.size());
        if(coll.size()<=0) {
            out.println("1-没有找到该工作项!");
            return;
        }
        String WorkName="",WorkItemID="";
        for (int i = 0; i < coll.size(); i++) {
            FlexObject item=(FlexObject)coll.toArray()[i];            
            System.out.println(item);
            WorkName=item.getString("WFASSIGNEDACTIVITY.NAME");
            WorkItemID="OR:wt.workflow.work.WorkItem:"+item.getString("WORKITEM.IDA2A2");
        }
        if(!WorkName.equals("商品部主导初样评审"))
        {
            out.println("1-状态错误");
            return;
        }
        //执行工作流
        String workIds = "|~*~|"+WorkItemID;
        Collection workIdsCollection = MOAHelper.getMOACollection(workIds);
        WFHelper.getService().processWFTasks(workIdsCollection, workEvent);
16.获取产品下的尺码
Collection productSizeCats = new SizingQuery().findProductSizeCategoriesForProduct(product).getResults();
    Iterator itor=productSizeCats.iterator();
    String productSizeCategory="";
    while(itor.hasNext()){
        FlexObject obj = (FlexObject)itor.next();
        if(obj.getString("SIZECATEGORY.NAME").equals(brand)){
            productSizeCategory="OR:com.lcs.wc.measurements.ProductSizeCategory:"+obj.getString("PRODUCTSIZECATEGORY.IDA2A2");
            break;
        }
    }
17.jsp页面接收xml流,格式化为字符串,打印
InputStream input = request.getInputStream();
        ByteArrayOutputStream output = new ByteArrayOutputStream();
        byte buffer[] = new byte[1024];
        int len = -1;
        try {
            while ((len = input.read(buffer, 0, buffer.length)) > 0) {
                output.write(buffer, 0, len);
            }
        } finally {
            if (output != null)
                output.close();
        }
        buffer = output.toByteArray();
        if (buffer == null || buffer.length == 0) {
            throw new LCSException(RB.XML, "noDataForProduct_ERR", RB.objA);
        }

        if (DEBUG) {
            String message = new String(buffer, DEFAULT_ENCODING);
            System.out.println("-----------------");
            System.out.println("XML message="+message);
        }

 

posted @ 2013-06-18 22:07  jackchain  阅读(996)  评论(0编辑  收藏  举报