页面完成后,新加了一个文件导入的需求
步骤如下:
1. 新建导入按钮
在分页ToolBar下新增一个ToolBarButton
属性栏Caption设置成${res[“common/Edit”]},Icon设置为url(>skin>common/icons.gif) -200px -0px。
2. 在Children下新增一个BDF2的RichUpload控件,如图所示
属性栏设置:
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,如图所示
<bean id="RichUpload的process的value值" class="类的位置+类名"/>
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<Channel> 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;
}
}
捣鼓了一下午终于写完啦~
看算法去了!!!