1. 功能介绍

    导入/导出补充说明,包括导入/导出的步骤,导入/导出的配置补充说明等。

  2. 导出实现步骤(参考具体实现功能|导出)

    由于目前的导入失败后需要增量导入失败数据,故导入功能导入功能需要支持导入数据的有效性校验,并且能够对输入数据以及业务逻辑校验失败的数据筛选保存为excel并列出错误原因提供给用户做增量导入,故实现步骤需要:

    1. 配置导入数据对应的xml文件,该文件需要配置输入校验属性
    2. 配置导入失败数据对应的导出xml文件,该文件必须配置IMPORT_ERROR列,用来显示导出错误信息
    3. 导入逻辑处理后获取失败的数据,将失败的数据与对应的xml生成excel,提供给用户下载并做增量导入
    4. 需要在domain下新建uupload/import目录临时存放导入失败的文件
    5. 注:之前的程序可以不需要做修改,但修改后能够保证完整的数据校验,并能定位具体的错误
  3. 配置文件说明(参考“导入数据|导出数据”配置文件写法)

    name 数据映射名
    desc 表格列头描述
    type 表格列类型(1:String 2: NUMERIC 3:Datatime)
    align 表格列横向排列方式(1:left 2:center 3:right)
    width 表格列宽度
    format 表格列数据格式(如果是数字,格式为0.00,#.##类似数据格式形式,如果为时间,格式为yyyy-MM-dd类似形式)
    scale 缩放比例,如将单位为分的数字表示成元,相当于缩小100,则值为scale=100
    nullable 是否可以不填option[yes|no]
    equsize 输入值的定长位数限制,如equsize="10"
    minsize 输入值的最小位数限制,如minsize="10"
    maxsize 输入值的最大位数限制,如maxsize="100"
    datasrc 输入数据源的校验,如SCHEDULE_SCHETYPE|#td_s_brand|TD_M_STAFF.STAFF_ID.STAFF_NAME(或TD_M_STAFF.STAFF_ID.DEPART_ID;TD_M_DEPART.DEPART_ID.DEPART_NAME)
    dataid 数据翻译的对象,仅对导出时即要列出翻译前的数据又要列出翻译后的数据时需要用到
    1. 其中name、desc、type等是导入时做为输入校验要用到的,除format可以做为导入的格式校验,也可以做为导出的格式显示
    2. datasrc做为数据源,主要是校验输入的数据在数据库中是否有匹配记录,其中:
      SCHEDULE_SCHETYPE:表示数据库表TD_S_STATIC WHERE TYPE_ID = ‘SCHEDULE_SCHETYPE’ 有匹配记录
      #td_s_brand:表示td_s_brand是否有匹配记录
      TD_M_STAFF.STAFF_ID.STAFF_NAME:表示根据输入的值匹配TD_M_STAFF中是否有匹配记录
      该三种方式在数据转换中都有说明,另外,如果需要用到datasrc,函数原型必须改成:
      ExcelParser.importExcel(PageData pd, String xml, InputStream in);
      而之前的函数原型没有pd参数,如:
      ExcelParser.importExcel(String xml, InputStream in);
      注:若需要做多次转换翻译,可以写成:
      datasrc="TD_M_STAFF.STAFF_ID.DEPART_ID;TD_M_DEPART.DEPART_ID.DEPART_NAME"
      即:可以将datasrc的映射关系用;号分开,如通过员工ID获取部门ID,然后根据部门ID获取部门名称,仅对表字段翻译有效
  4. 导入代码示例

    1. 导入xls文件生成IDataset结构

      import com.linkage.webframework.util.parser.ExcelParser;
      IDataset dataset = ExcelParser.importExcel(pd, "examples/basic/VipcustList.xml", pd.getUploadFile("FILE_PATH").getStream())[0];
      

      说明:
      参数一:pd
      参数二:导入配置文件
      参数三:页面获取的文件输入流
      返回值:IDataset,IDataset的每行记录为IData(一行Excel数据)
    2. 导入txt文件生成IDataset结构

      import com.linkage.webframework.util.parser.SimpleParser;
      IDataset dataset = SimpleParser.importTxt(pd.getUploadFile("FILE_PATH").getStream())[0];
      

      说明:
      参数一:导入输入的文件流或者文件全路径,如:c:/test.txt
      返回值:IDataset,IDataset的每行记录为String(一个数据元素,如一个号码,一个客户名称等)
      如IDataset.toString()输出的结果,如:
      ["wewewe", "wewewe", "sdsdsdsfsf", "sdfsdfsds", "sdsdfsdfsdfs", "sdsdsdsd"]
    3. txt文件的格式要求

      每个数据元素必须是:字母|单词|下划线|汉字,这些元素组成,如果带有分割符,会自动分隔为多个数据元素 txt不需要明显的分隔符,空格,逗号,分号,换行等等都可以作为txt每个数据元素分隔的格式符 格式如:
      wewewe sdsdsdsfsf,sdfsdfsds;sdsdfsdfsdfs.sdsdsdsd
      wewewe,sdssd,sdsds.sdsds.s,sdfdsfsdfsd
      wewe,sdfsdf;dsfdsdfsfs
      
  5. 导出代码示例

    1. 根据IDataset导出为Excel

      import com.linkage.webframework.util.parser.ExcelParser;
      ExcelParser.exportExcel(pd, "examples/basic/VipcustList.xml", "VIP客户资料列表.xls", new IDataset[] { dataset });
      

      说明:
      参数一:pd
      参数二:导入配置文件
      参数三:导出xls文件名
      参数四:要导出的数据集
    2. 根据IDataset导出为txt

      import com.linkage.webframework.util.parser.SimpleParser;
      SimpleParser.exportTxt(PageData bd, String txt, IDataset dataset);
      SimpleParser.exportTxt(PageData bd, String txt, IDataset dataset, String separator);
      

      说明:
      参数一:pd
      参数二:导出文本文件名,如:test.txt
      参数三:要导出的数据集
      参数四:每行数据的分隔符,默认为:换行