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;
        }
  • 相关阅读:
    欧几里德算法实现求两个正整数的最大公因子
    C#委托、泛型
    C与C++中的time相关函数(转载)
    【转】温州的南拳
    前端面试题
    vuecli卸载旧版,再重新安装后还显示的是旧的版本
    不定宽高的div水平、垂直居中问题
    解决JS中取URL地址中的参数中文乱码
    移动vue项目,启动错误:Module build failed: Error: No PostCSS Config found in:
    codeblocks colour theme
  • 原文地址:https://www.cnblogs.com/mmdz/p/15629582.html
Copyright © 2011-2022 走看看