導出有兩種方式,datagrid導出和自定義導出,同時支持異步導出
1、datagrid導出,需有datagrid表格組件
* 默認導出:datagrid組件上定義exportId屬性,指定導出按鈕即可,不需要寫后端java代碼,導出表頭與表格表頭定義一致,如某些列不想導出結果中展示,可設置表頭配置屬性exportable:false。
同步導出:默認為同步導出
```
<a href="javascript:void(0)" id="exportBtn"><img src="${ctx}/component/resources/images/icons/color/18/export.png" alt=""/>批量導出</a>
```
* 異步導出:需設置isAsyn=true,設置該屬性后默認為即時導出,后臺處理邏輯是開啟新的線程進行導出,前臺無需等待,可到“我的導出”菜單中查看導出進度,導出完成后顯示下載按鈕。
```
<a href="javascript:void(0)" id="exportBtn" isAsyn="true"><img src="${ctx}/component/resources/images/icons/color/18/export.png" alt=""/>批量導出</a>
```
* 定時導出:設置asynExportWay="2",邏輯是前臺可設置預約導出時間,后臺有進程掃描,到了預約時間進行數據導出操作,導出完成后依然是到“我的導出”菜單中查看進度。
```
<a href="javascript:void(0)" id="exportBtn" isAsyn="true" asynExportWay="2"><img src="${ctx}/component/resources/images/icons/color/18/export.png" alt=""/>批量導出</a>
```
同時預約導出時間也可代碼指定,定義dateConfig屬性。時間控件用的是my97日期組件
```
<a href="javascript:void(0)" id="exportBtn" isAsyn="true" asynExportWay="2" dateConfig="{readOnly:true, isShowClear:false, isShowToday:false, dateFmt:'yyyy-MM-dd HH:mm:ss', minDate:'%y-%M-%d 00:00:00'}"><img src="${ctx}/component/resources/images/icons/color/18/export.png" alt=""/>批量導出</a>
```
我的導出菜單路徑:${ctx}/common/exportLog/toPage
完整例子如下:
```
<!--導出按鈕-->
<a href="javascript:void(0)" id="exportBtn"><img src="${ctx}/component/resources/images/icons/color/18/export.png" alt=""/>批量導出</a>
<!--數據表格-->
<table id="dataGrid" class="easyui-datagrid" exportId="exportBtn" url="${ctx}/namelist/queryList" data-options="queryParams:$.walk.getQueryParams('conditionForm'),selectOnCheck:false,frozenAlign:'right'">
<thead data-options="frozen:true">
<tr>
<th data-options="field:'oper', width:430, halign:'center', formatter:operRecord, exportable:false">操作區</th>
</tr>
</thead>
<thead>
<tr>
<th data-options="field:'ck', checkbox:true, exportable:false"></th>
<th data-options="field:'LIST_ID',styler:function(){return 'font-family:新宋體'}">名單制客戶ID</th>
<th data-options="field:'CUST_TYPE_NAME'">客戶大類</th>
<th data-options="field:'SUB_CUST_TYPE_NAME'">客戶小類</th>
<th data-options="field:'CALLING_TYPE_NAME2'">行業類型</th>
<th data-options="field:'CALLING_TYPE_NAME'">行業大類</th>
<th data-options="field:'CALLING_SUB_TYPE_NAME'">行業子類</th>
</tr>
</thead>
</table>
```
后端使用@DataExport注解進行限制導出類型
```
@RequestMapping(value = "queryUserList")
@DataExport(exportWay="1")
public Object queryUserList(InParam<String, Object> inParam, Pagination pagination){
return userDemoService.queryUserList(inParam, pagination);
}
```
DataExport 注解說明
```
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface DataExport {
/**
* xml文件路徑
* @return
*/
String xml() default "";
/**
* 允許導出類型。0:同步立即導出;1:異步即時導出;2:異步定時導出
*
* @return
*/
String exportWay() default "0|1|2";
}
```
2、自定義導出:可后臺自定義表頭,靈活度更高。
baseInfoBigExport1.xml
```
<?xml version="1.0" encoding="utf-8"?>
<table name="名單制客戶批量出">
<tr>
<th field="LIST_ID" title="名單制客戶ID"/>
<th field="LIST_field" title="客戶名稱"/>
<th field="CUST_TYPE" title="客戶大類"/>
<th field="SUB_CUST_TYPE" title="客戶小類"/>
<th field="CALLING_TYPE_CODE" title="行業類型"/>
<th field="SUB_CALLING_TYPE_CODE" title="行業子類"/>
<th field="CUST_ADDR" title="客戶地址"/>
<th field="CUST_MANAGER_ID" title="客戶經理ID"/>
<th field="MAIN_WORK" title="主營業務"/>
<th field="EMPLOYEE_NUM" title="員工數量"/>
<th field="EMPLOYEE_ALLOWANCE" title="員工通信補助"/>
<th field="DEV_STAFF_ID" title="發展人編碼"/>
</tr>
</table>
```
或者復雜一點的表頭
baseInfoBigExport2.xml
```
<?xml version="1.0" encoding="utf-8"?>
<table name="名單制客戶批量出">
<tr>
<th field="LIST_ID" title="名單制客戶ID" rowspan="2"/>
<th field="LIST_field" title="客戶名稱" rowspan="2"/>
<th title="員工通信補助" colspan="2"/>
<th title="發展人編碼" colspan="2"/>
</tr>
<tr>
<th field="LIST_ID" title="名單制客戶ID"/>
<th field="LIST_field" title="客戶名稱"/>
<th field="EMPLOYEE_ALLOWANCE" title="員工通信補助"/>
<th field="DEV_STAFF_ID" title="發展人編碼"/>
</tr>
</table>
```
后端controller方法定義DataExport注解,指定xml路徑
```
/**
* 名單制客戶自定義導出示例
*
* @param inParam
* @param pagination
* @return
*/
@RequestMapping(value = "/exportList")
@DataExport(xml = "namelist/baseInfoBigExport1.xml")
public Object exportList(InParam<String, Object> inParam, Pagination pagination) {
return nameListService.queryNameList(inParam, pagination);
}
```
前端js方法
```
//queryParams可以是json也可是參數串(param1=1¶m2=2)
//isAsyn為異步導出標識,同上
$.walk.exportData(url, queryParams, isAsyn);
```
- walk簡介
- 核心模塊
- walk-data
- IData
- EntityHelper
- walk-cache
- 緩存管理器
- 緩存對象
- 緩存注解
- walk-batis
- 單表操作
- 批量操作
- 列表/分頁查詢
- 所有方法列表
- sql熱部署
- 二級緩存
- 數據庫方言
- 其他使用技巧
- 實體類生成工具
- walk-mq
- 隊列管理器
- 隊列對象
- 訂閱/發布管理器
- 訂閱器
- 發布器
- walk-shiro
- 用戶認證/授權
- url動態授權/回收
- 分布式會話
- 無狀態會話支持
- walk-base
- 前端基礎框架
- 公共頁面
- 自定義標簽
- 自定義函數
- 組件及工具
- 后端基礎框架
- 基礎結構
- 表單校驗
- 數據導入
- 數據導出
- 上傳下載
- 靜態參數加載器
- 靜態參數翻譯器
- 實體類翻譯器
- sql翻譯器
- 自定義翻譯器
- 靜態參數校驗器
- 分布式任務
- 增刪改查代碼生成器
- walk-restful
- 請求報文
- 返回報文
- 節點翻譯器
- api代碼生成
- walk-activiti
- 接口封裝
- 模型管理
- 流程圖展示
- 集成方法
- walk-console
- 在線會話管理
- 靜態參數表緩存管理
- 緩存管理
- 隊列管理
- 發布/訂閱管理
- walk-boot
- 常用功能
- 持久層操作
- 分布式緩存
- 分布式會話
- 分布式任務
- 前端常用功能
- 后端常用功能
- 工作流封裝
- 多數據源支持
- 關于讀寫分離
- 常用工具類
- 代碼生成工具
- SpringCloud集成
- 阿里edas平臺支持
- 其他
- 開發規約
- 環境要求
- 工程示例
- 工程結構
- web工程
- API工程
- 后臺任務
- 常見問題
- 事務不生效
- 分布式任務不生效
- 事務鎖
- 變更歷史