Dorado7+BDF2:文件导入

页面完成后,新加了一个文件导入的需求
步骤如下:
1. 新建导入按钮
在分页ToolBar下新增一个ToolBarButton
属性栏Caption设置成${res[“common/Edit”]},Icon设置为url(>skin>common/icons.gif) -200px -0px。
2. 在Children下新增一个BDF2的RichUpload控件,如图所示Dorado7+BDF2:文件导入_第1张图片
属性栏设置:
id:自由设置
allowFileTypes(允许上传格式):你想导入文件的格式
processor:响应导入的类名
visible(隐藏):false

事件栏设置:
onReady设置为:

//获取dom
var dom = view.id("RichUpload的id").getDom();
//获取button
var button = dom.firstChild;
//给button设置样式
button.setAttribute("style", "width: 70px;height: 22px;border: #FFF 1px solid;color: #000;background: url(dorado/client/skins/default/base/toolbar-button-bg.gif) no-repeat;cursor: pointer;");

OnSelect设置为

//后台处理数据时候页面的显示状态
self.taskMsg = dorado.util.TaskIndicator.showTaskIndicator("装载中..");

OnSuccess设置为

dorado.util.TaskIndicator.hideTaskIndicator(view.get("#RichUpload的id").taskMsg);
dorado.MessageBox.alert("${res["common/drcg"]}!")
view.get("#sensitiveKeyWordDs").flushAsync();

OnFail设置为

dorado.util.TaskIndicator.hideTaskIndicator(view.get("#RichUpload的id").taskMsg);
dorado.MessageBox.alert(arg.errorMessage);

3. 步骤1的button的设置onclick事件

事件栏编辑onclick事件

                   //获取上传文件控件的dom元素
	               	var dom = view.id("RichUpload的id").getDom();
	               	//找到dom下的input框
	               	var firs = dom.childNodes[2].firstChild;
	               	firs.click();

4.给步骤2中process的类配置
①:在类加载的xml文件中增加文件导入类的bean,如图所示


Dorado7+BDF2:文件导入_第2张图片

5. 编写后台处理导入的文件
新增class文件

package com.ceapon.fire.gms.web.view.chat;

import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;

import com.bstek.bdf2.uploader.model.UploadDefinition;
import com.bstek.bdf2.uploader.processor.IFileProcessor;
import com.ceapon.fire.gms.entity.Channel;
import com.ceapon.fire.gms.entity.SensitiveKeyWord;
import com.ceapon.fire.gms.service.ChatService;
import com.ceapon.fire.gms.service.CommonService;

public class SensitiveFileProcessor implements IFileProcessor{
		
	@Autowired
	private CommonService commonService;
	@Autowired
	private ChatService chatService;

	private static final Log logger = LogFactory.getLog(SensitiveFileProcessor.class);
	
	public void saveFile(UploadDefinition uploadDefinition,	InputStream inputStream) throws Exception {
        Cell cell = null;
        String cellValue = null;
        SensitiveKeyWord sensitiveKeyWord = null;
        List<Channel> list = new ArrayList<Channel>();
        
        int sensitiveColIdx=-1,timesColIdx=-1,dateColIdx=-1;
        
			Workbook workbook = new XSSFWorkbook(inputStream);
	        // 获取每一个工作薄
	        for (int numSheet = 0; numSheet < workbook.getNumberOfSheets(); numSheet++) {
	        	Sheet sheet = workbook.getSheetAt(numSheet);
	            if (sheet == null) {
	                continue;
	            }

	            // 获取当前工作薄的每一行
	            for (int rowNum = 1; rowNum <= sheet.getLastRowNum(); rowNum++) {
	            	Row row = sheet.getRow(rowNum);
	            	if (row != null) {
	            		if (sensitiveColIdx<0) {
	            			cell = row.getCell(0);
	            			if(cell.toString().trim().equals("敏感词")){
	            				sensitiveColIdx=0;
	            			}else{
	            				throw new Exception("敏感词跟原有不符合,导入失败");
	            			}
	            		} else {
	            			/*InputStream inputStream1 = new BufferedInputStream(new FileInputStream(new File(getClass().getResource("/").getPath().replace("classes/", "dorado-home/configure.properties").substring(1))));
	            	        Properties properties = new Properties();  
	            	        properties.load(inputStream1);
	            	        String s = properties.getProperty("bdf2.application.title");*/
	            			boolean isNew = false;
	            			int saveType = 0;
	            			if(sensitiveColIdx>-1){
	            				String str = row.getCell(sensitiveColIdx).toString().trim();
	            				if(str ==null||str.isEmpty()){
	            					throw new Exception("敏感词栏为空,导入失败!(可能有多余空行)");
	            				}
	            				List<SensitiveKeyWord> sensitiveKeyWords = chatService.querySensitiveKeyWord(str);
	            				//List channels = commonService.query("from Channel where cid = "+str);
	            				if(sensitiveKeyWords.size()>0){
	            					sensitiveKeyWord = sensitiveKeyWords.get(0);
	            					saveType = 0;
	            				}else{
	            					sensitiveKeyWord = new SensitiveKeyWord();
	            					isNew = true;
	            					saveType = 2;
	            					sensitiveKeyWord.setName(row.getCell(sensitiveColIdx).toString());
	            					sensitiveKeyWord.setTimes(0);
	            				}
	            			}
	            			if(isNew == true){
	            				commonService.save(sensitiveKeyWord);
	            			}else if(saveType == 1){
	            				List<SensitiveKeyWord> sensitiveKeyWords = commonService.query("from SensitiveKeyWord where name ='"+sensitiveKeyWord.getName()+"'");
	            				 //platformService.UpdateChannel(channel);
	            				if(sensitiveKeyWords!= null &&sensitiveKeyWords.size()>0)
	            				{
	            					commonService.update(sensitiveKeyWord);
	  
	            				}
	            			}
	            			logger.info(new Date());
	            			//list.add(channel);
	            		}
	            	}
	            }
	       }
	        
//		for (Channel channel1 : list) {
//			if(channel1.getId()!=0){
//				commonService.update(channel1);
//			}else{
//				commonService.save(channel1);
//			}
//		}
	}
	
	public InputStream loadFile(UploadDefinition uploadDefinition) {
		// TODO Auto-generated method stub
		
		return null;
	}

	public void deleteFile(UploadDefinition uploadDefinition) {
		// TODO Auto-generated method stub
		
	}

	public String key() {
		// TODO Auto-generated method stub
		return "SensitiveFileProcessor";
	}

	public boolean isDisabled() {
		// TODO Auto-generated method stub
		return false;
	}
}

捣鼓了一下午终于写完啦~
看算法去了!!!

你可能感兴趣的:(Dorado7)