zoukankan      html  css  js  c++  java
  • Agile PLM_物料历史变更

    Agile PLM_物料历史变更

    需求:查询PLM的物件,所有变更记录(有哪些具体改动)

     

    做出的效果

     

     

    思路:

    重点在于 如何确认 修改的redline(下面是我的代码)

        /**
         * 获取 历史变更单(发布) 标题块的修改值{红色行号值}
         * 修改 ---> 获取第二页\第三页属性
         */
        private static List<HisTitleAndValueModify> getRedLineByTitle(IItem item, IChange change) throws APIException {
            List<HisTitleAndValueModify> list = new ArrayList<>();
            if (change != null) {
                item.setRevision(change);
                /**********************page tow(第二页)*************************/
                ITable p2Table = item.getTable(ItemConstants.TABLE_REDLINEPAGETWO);
                ITwoWayIterator p2Iterator = p2Table.getTableIterator();
                if (p2Iterator.hasNext()) {
                    IRow tempRow = (IRow) p2Iterator.next();
                    ICell[] tempCells = tempRow.getCells();
                    for (ICell tempCell : tempCells) {
                        String oldValue = String.valueOf(tempCell.getOldValue());
                        String newValue = String.valueOf(tempCell.getValue());
                        if (!oldValue.equals(newValue)) {
                            // 有值 改动
                            String name = tempCell.getName();// 名称
                            HisTitleAndValueModify modify = new HisTitleAndValueModify(name, newValue, oldValue);
                            list.add(modify);
                        }
                    }
                }
                /**********************page three(第三页)*************************/
                ITable p3Table = item.getTable(ItemConstants.TABLE_REDLINEPAGETHREE);
                ITwoWayIterator p3Iterator = p3Table.getTableIterator();
                if (p3Iterator.hasNext()) {
                    IRow tempRow = (IRow) p3Iterator.next();
                    ICell[] tempCells = tempRow.getCells();
                    for (ICell tempCell : tempCells) {
                        String oldValue = String.valueOf(tempCell.getOldValue());
                        String newValue = String.valueOf(tempCell.getValue());
                        if (!oldValue.equals(newValue)) {
                            // 有值 改动
                            String name = tempCell.getName();// 名称
                            HisTitleAndValueModify modify = new HisTitleAndValueModify(name, newValue, oldValue);
                            list.add(modify);
                        }
                    }
                }
            }
            return list;
        }
    
        /**
         * 获取 历史变更单(发布) BOM的修改值{红色行号值}
         *
         * @param item
         * @param change
         * @throws APIException
         */
        private static List<HisItemBomModify> getRedLineByBom(IItem item, IChange change) throws APIException {
            List<HisItemBomModify> list = new ArrayList<>();
            if (change != null) {
                item.setRevision(change);
                ITable changeTable = change.getTable(ChangeConstants.TABLE_AFFECTEDITEMS);
                ITwoWayIterator iterator = changeTable.getTableIterator();
                while (iterator.hasNext()) {
                    IRow row = (IRow) iterator.next();
                    String itemNum = String.valueOf(row.getValue(ChangeConstants.ATT_AFFECTED_ITEMS_ITEM_NUMBER)); // 物件编号
                    String oldRev = String.valueOf(row.getValue(ChangeConstants.ATT_AFFECTED_ITEMS_OLD_REV)); // 旧版本号
                    String newRev = String.valueOf(row.getValue(ChangeConstants.ATT_AFFECTED_ITEMS_REVISION)); // 新版本号
                    String oldLifecycle = String.valueOf(row.getValue(ChangeConstants.ATT_AFFECTED_ITEMS_OLD_LIFECYCLE_PHASE)); // 旧的生命周期阶段
                    String newLifecycle = String.valueOf(row.getValue(ChangeConstants.ATT_AFFECTED_ITEMS_LIFECYCLE_PHASE)); // 生命周期
                    if (itemNum.equals(item.getName())) {
    
                        // 查询ITEM BOM
                        ITable bomTable = item.getTable(ItemConstants.TABLE_REDLINEBOM);
                        ITwoWayIterator bomIterator = bomTable.getTableIterator();
                        while (bomIterator.hasNext()) {
                            IRow bomRow = (IRow) bomIterator.next();
    
                            // 判断每一行 是否新增状态
                            boolean add = bomRow.isFlagSet(ItemConstants.FLAG_IS_REDLINE_ADDED);
                            if (add) {
                                HisItemBomModify itemBom = getItemBom("新增", bomRow);
                                list.add(itemBom);
                                continue;
                            }
    
                            // 判断每一行 是否删除状态
                            boolean del = bomRow.isFlagSet(ItemConstants.FLAG_IS_REDLINE_REMOVED);
                            if (del) {
                                HisItemBomModify itemBom = getItemBom("删除", bomRow);
                                list.add(itemBom);
                                continue;
                            }
    
                            // 判断每一行 是否修改状态
                            boolean edit = bomRow.isFlagSet(ItemConstants.FLAG_IS_REDLINE_MODIFIED);
                            if (edit) {
                                HisItemBomModify itemBom = getItemBom("修改", bomRow);
                                list.add(itemBom);
                                continue;
                            }
                        }
                        break;
                    }
                }
            }
            return list;
        }
  • 相关阅读:
    nodejs利用windows API读取文件属性(dll)
    nodejs调用delphi编写的dll
    Ubuntu 安装配置Jenkins
    electron将网站打包成桌面应用
    NW.js将网站打包成桌面应用
    Jenkins配置邮件SMTP(使用QQ邮箱)
    Jenkins搭建Nodejs自动化测试
    Ubuntu 安装node.js
    使用superobject 解析Json数据
    使用superobject 新建Json数据(数组)
  • 原文地址:https://www.cnblogs.com/mmdz/p/15629582.html
Copyright © 2011-2022 走看看