• 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;
        }
  • 相关阅读:
    防止重复点击
    刷新当前页面的几种方法
    PHP删除数组中空值
    json转化数组
    两个不能同时共存的条件orWhere查询
    SQLSTATE[42000]
    laravel一个页面两个表格分页处理
    Hash::make与Hash::check
    unbind()清除指定元素绑定效果
    二级联动
  • 原文地址:https://www.cnblogs.com/mmdz/p/15629582.html
Copyright © 2020-2023  润新知