TreeviewCopyright © aleen42 all right reserved, powered by aleen42
导入导出扩展
对单据上的Excel导出、导入进行后端代码扩展
注:扩展代码写在脚手架自带模块里的,升级脚手架时需要迁移
一、导出扩展
1.页面导出入口
2.代码导出入口
该类MddBillController的export方法为“Excel导出”、“导出明细”的入口
com.yonyou.ucf.mdf.app.controller.MddBillController#export
3.扩展示例
导出扩展, 比如:两个字段进行计算后赋值给另一个字段
具体代码:
/**
* 导出扩展, 比如:两个字段(num1、num2)进行计算后赋值给另一个字段(num3)
* @param exportData
*/
private void deassign(ExcelExportData exportData) {
LinkedHashMap<String, List<Object>> dataMap = exportData.getDataMap();
// dataMap:导出数据 key:String 表示每个Sheet的名称 value:List<?> 表示每个Sheet里的所有数据行
for(Map.Entry<String, List<Object>> entry : dataMap.entrySet()) {
String key = entry.getKey();
if("测试导入导出扩展".equals(key)){ // 指定实体扩展(Sheet)
//遍历导出数据的条数
List<Object> datas = entry.getValue();
for (Object data : datas) {
// 示例: 两个字段进行计算后赋值给另一个字段
JSONObject json = (JSONObject) JSONObject.toJSON(data);
Integer num1 = json.getJSONObject("num1").getInteger("value");
Integer num2 = json.getJSONObject("num2").getInteger("value");
// 计算新值
Integer num3 = num1 + num2;
// 设置新值
Map<String,Object> valueMap = (Map<String, Object>) data;
Object value1 = valueMap.get("num3");
CellData cellData = null;
if(value1 instanceof CellData){
cellData=(CellData) value1;
}else{
cellData=new CellData(value1);
}
cellData.setValue(num3);
}
}
}
}
4.导出效果
二、导入扩展
1.页面导入入口
2.代码导入入口
com.yonyou.ucf.mdf.app.controller.BillController#billImport
3.扩展示例
具体代码:
/**
* 导入扩展 , 扩展示例:把一个字段值拆分成另外两个字段值
* @param datas
*/
private void importSplit(Map<String, Object> datas) {
// 导入扩展
List<HashMap<String, Object>> zs_import_export = (List<HashMap<String, Object>>) datas.get("zs_import_export");//根据元数据 编码获取导入Excel中数据
// 遍历每条数据
for (HashMap<String, Object> data : zs_import_export){
Integer num3 = Integer.parseInt(data.get("num3").toString());
// 扩展示例:把一个字段值拆分成另外两个字段值
Integer num1 = num3 / 2;
data.put("num1",num1);
data.put("num2",num3 - num1);
}
}