jad.md 4.91 KB
Newer Older
yang's avatar
yang committed
1 2 3 4 5
## Excel文件导入
使用poi解析xml方式进行导入,只支持单表导入。  
数据库批量导入默认batch为100.  
支持多sheet导入,sheet1从第三行开始读取数据,其他sheet页从第一行导入数据。  
使用方法: 
yang's avatar
yang committed
6
1. Excel文件上传  
yang's avatar
yang committed
7

yang's avatar
yang committed
8 9 10 11 12 13 14 15 16 17 18
    ```javascript
     $("#files").kendoUpload({
                async: {
                    saveUrl: "${base.contextPath}/hls/excel/import?${_csrf.parameterName}=${_csrf.token}&templateCode=HLS_FIN_STATEMENT_LN",
                    removeUrl: "remove"
                },
                showFileList: false,
                upload: onUpload,
                success: onSuccess
            });
    ```
yang's avatar
yang committed
19 20 21 22 23 24 25 26
| 参数名 | 描述 |
| :--: | :--: |
| _csrf.token | 防跨域token |
|  templateCode | 作为模块标识,会出现先在fnd_interface_header中,供后续业务逻辑进行处理  |
2. 处理数据  
经过第一步的文件上传,后台会在fnd_interface_header表中生成一条数据,其中包含了传递的templateCode参数作为code,并且,在fnd_interface_lines表中按照顺序,将Excel文件中的每一行数据保存为一条数据,数据的第一列保存在attributes_1上,依次类推。 
![ExcelImport](/assets/excelImport.png) 

yang's avatar
yang committed
27 28
## Excel文件批量导出
本系统支持Excel文件导出排队处理,支持超大数据量,能实时查询文件生成情况,支持取消导出。
yang's avatar
yang committed
29 30
#### 前端使用方法
调用js方法  
31
* 方法一(针对grid)
yang's avatar
yang committed
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
```javascript
 Hel.exportExcel=function(opts){
     var contextPath =opts.contextPath, 
     id=opts.id, 
     view_model=opts.viewModel,
     viewModelData=opts.viewModelData,
     controller_name = opts.controller, 
     fileName = opts.fileName, 
     temp_div_id=opts.tempDivId,
     dataSourceId = opts.dataSourceId,
     _csrf_token = opts._csrf_token;
```
| 参数名 | 描述 |
| :--: | :--: |
| contextPath | 项目的url路径 |
| id |  页面上grid的id  |
| view_model | grid绑定的model数据模型  |
| viewModelData | model模型中的数据 | 
| controller_name | 后端控制器名称 |
| fileName | excel文件名 |
| temp_div_id | 临时div的id |
| dataSourceId | 数据源id |
| _csrf_token | 防跨域的token |

56 57 58 59 60 61 62
* 方式二(针对hlsPage)

```javascript
Hel.exportPageExcel({
     contextPath:basePath,
     param:{},
     controller:"/acr/inf/index/excel/export",     
63 64
     fileName:"产品线",    
     pageConfig:[     
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
    {"name":"documentNumber","title":"单据编    号","width":260,"align":"","type":"string"},    
    {"name":"invoiceDate","title":"开票日期","align":"","type":"string"},    
    {"name":"invoiceKindDesc","title":"发票种类","width":160,"align":"center","type":"boolean"},    
    {"name":"bpName","title":"购货单位"},
    ]
});

```

|  参数名  |  描述  |
| --- | --- |
| contextPath | 项目上的url  |
| param| 配合controller添加查询条件 |
| controller  |  对应查询url |
| fileName | 文件名 |
80
| pageConfig | 导出字段名称及样式|
81

yang's avatar
yang committed
82
#### 后端使用方法
yang's avatar
yang committed
83
1. 在代码中注入Excel导出Service  
yang's avatar
yang committed
84

yang's avatar
yang committed
85 86 87 88
    ```java
    @AutoWired
    private ExcelExportServiceImpl excelService;
    ```
yang's avatar
yang committed
89
2. 在自己的controller中调用方法 
yang's avatar
yang committed
90 91 92 93 94 95 96 97 98 99 100
    
    ```java
    excelService.saveExportInfo(sqlId,iRequest,config,rowMaxNumber);
    ```
    
    | 参数名 | 类型 | 描述 |
    | :--: | :--: | :--: |
    | sqlId | String | mybatis对应的数据库查询语句的ID |
    | iRequest | IRequest | 带有上下文信息的reuqest对象  |
    | config | ExportConfig | 包含Excel各列信息的对象,由前台传递json对象转换而来  |
    | rowMaxNumber | int | 生成Excel的最大行数,可使用重载方法,不包含次参数默认为1,000,000  |
yang's avatar
yang committed
101

yang's avatar
yang committed
102
3. 运行Excel导出程序(获取该程序,请联系部门相关负责人)  
yang's avatar
yang committed
103

yang's avatar
yang committed
104 105 106
    ```shell
    java -jar hel-batch-parent.jar &
    ```
yang's avatar
yang committed
107 108
4. Excel导出情况查询   
用户若是为管理员身份,则查询全部人的导出情况,否则只显示当前用户的导出数据  
yang's avatar
yang committed
109

yang's avatar
yang committed
110 111 112 113 114 115 116 117
    ```java
    excelService.queryExportInfo(status, iRequest);
    ```
    
    | 参数名 | 类型 | 描述 |
    | :--: | :--: | :--: |
    | status | String | 指定Excel导出的状态,该参数可为空查询全部状态数据<br><ul><li>new->等待</li><li>generating->文件导出中</li><li>finished->导出完成</li><li>failed-> 导出失败</li></ul> |
    | iRequest | IRequest | 带有上下文信息的reuqest对象  |
yang's avatar
yang committed
118

yang's avatar
yang committed
119
5. 下载已完成的Excel文件  
yang's avatar
yang committed
120

yang's avatar
yang committed
121 122 123 124 125 126 127 128 129 130
    ```java
    excel.downloadExcel(filePath, fileName, request, response);
    ```
    
    | 参数名 | 类型 | 描述 |
    | :--: | :--: | :--: |
    | filePath | String | 需要下载的文件的路径 |
    | fileName | String | 想要保存的文件的名称  |
    | request | HttpServletRequest | 用户的请求对象  |
    | response | HttpServletResponse | 用户的响应对象 |
yang's avatar
yang committed
131

yang's avatar
yang committed
132
**下载前,需要检查config.properties文件中的export.offerUrl配置项是否配置正确,且为hel-batch-parent.jar提供的文件下载url**