public static TableModel convertDetailTableData(List itemList) {
    // TODO Auto-generated method stub
    BeanTableModel<SfOutInfoDetail> tm =
        new BeanTableModel<SfOutInfoDetail>() {
          /** */
          private static final long serialVersionUID = -115294332374634087L;

          @Override
          public boolean isCellEditable(int row, int column) {
            return super.isCellEditable(row, column);
          }

          @Override
          public void setValueAt(Object aValue, int rowIndex, int columnIndex) {

            SfOutInfoDetail bean = dataBeanList.get(rowIndex);

            String currentColName = this.getColumnIdentifier(columnIndex);

            if (aValue instanceof BaseElement) {

              BeanUtil.set(
                  columnBeanPropertyPairList.get(columnIndex).getBeanPropertyName(),
                  ((BaseElement) aValue).getName(),
                  bean);

              fireTableCellUpdated(rowIndex, columnIndex);

              putEditedData(dataBeanList.get(rowIndex));

            } else {
              super.setValueAt(aValue, rowIndex, columnIndex);
            }
          }
        };

    tm.setOidFieldName("outInfoDetailId");
    tm.setDataBean(itemList, detailInfo);
    return tm;
  }
  public void updateWFEditorEditable(WfAware baseBill, RequestMeta requestMeta) {

    Long processInstId = baseBill.getProcessInstId();

    isEdit = false;

    if (processInstId != null && processInstId.longValue() > 0) {

      // 工作流的单据

      //      wfCanEditFieldMap = BillElementMeta.getWfCanEditField(baseBill, requestMeta);

      if ("cancel".equals(this.oldZcPProMake.getZcMakeStatus())) { // 撤销单据设置字段为不可编辑

        wfCanEditFieldMap = null;
      }

      //      if ("0".equals(this.oldZcPProMake.getZcMakeStatus())) {//撤销单据设置字段为不可编辑

      //        isEdit = true;

      //      }

      for (AbstractFieldEditor editor : fieldEditors) {

        // 工作流中定义可编辑的字段

        if (wfCanEditFieldMap != null
            && wfCanEditFieldMap.containsKey(
                Utils.getDBColNameByFieldName(editor.getEditObject(), editor.getFieldName()))) {

          if (!"zcMakeSequence".equals(editor.getFieldName())
              && !"zcPifuCgfs".equals(editor.getFieldName())) {
            isEdit = true;
          }

          editor.setEnabled(true);

          // 退回状态时,明细都可以编辑 add shijia 2011-10-14

          if (WorkEnv.getInstance()
              .containRole(AsOptionMeta.getOptVal(ZcElementConstants.OPT_ZC_YSDWCG_ROLE))) {

            BeanTableModel itmodel = (BeanTableModel) itemTablePanel.getTable().getModel();

            itmodel.setEditable(true);
          }

        } else {

          editor.setEnabled(false);
        }
      }

      // 子表的设置

      updateWFSubTableEditable();
    }
    // 根据采购方式,决定相关属性字段的显示,注释了,暂不应用
    //    AsValFieldEditor pf = (AsValFieldEditor) fieldEditors.get(fieldEditors.size() - 5);
    //    this.changeWay(pf.getField());
    this.changeWay(null);
  }
  public static TableModel convertSubBiTableData(List<ZcBMerDiscount> biList) {

    BeanTableModel<ZcBMerDiscount> tm =
        new BeanTableModel<ZcBMerDiscount>() {

          private static final long serialVersionUID = 6888363838628062064L;

          @Override
          public boolean isCellEditable(int row, int column) {

            //        String columnId = this.getColumnIdentifier(column);
            //
            //        if ("zcSuName".equals(columnId)) {
            //
            //          return false;
            //
            //        }

            return super.isCellEditable(row, column);
          }

          @Override
          public void setValueAt(Object aValue, int rowIndex, int columnIndex) {

            System.out.println("======================value=" + aValue + "----");
            ZcBMerDiscount bean = dataBeanList.get(rowIndex);

            if ("zcSuName".equals(this.getColumnIdentifier(columnIndex))) {

              if (aValue == null) {

                bean.setZcSuCode(null);

                bean.setZcSuName(null);
              }

              //          fireTableCellUpdated(rowIndex, columnIndex);
              //
              //          putEditedData(dataBeanList.get(rowIndex));

              super.setValueAt(aValue, rowIndex, columnIndex);

            } else if ("zcTreatyLowerLimit".equals(this.getColumnIdentifier(columnIndex))
                || "zcTreatyUpperLimit".equals(this.getColumnIdentifier(columnIndex))) {
              if (aValue == null) {
                super.setValueAt(0, rowIndex, columnIndex);
              } else {
                super.setValueAt(aValue, rowIndex, columnIndex);
              }

            } else {

              super.setValueAt(aValue, rowIndex, columnIndex);
            }
          }
        };

    tm.setOidFieldName("tempId");

    for (ZcBMerDiscount o : biList) {

      o.setTempId(Guid.genID());
    }

    tm.setDataBean(biList, BillDetailInfo);

    return tm;
  }