package monad.web.web.action;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.WorkbookSettings;
import jxl.read.biff.BiffException;
import monad.utils.CommonUtils;
import monad.web.service.PljsService;
import monad.web.service.QwjsService;
import base.web.action.AutoStruts2Action;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.egf.common.util.StringUtils;
public class PljsAction extends AutoStruts2Action{
private static final long serialVersionUID = -9187258419377047631L;
private PljsService pljsService;
private String excelName;
private String excelNameFileName;// 文件名
private QwjsService qwjsService;
public void setPljsService(PljsService pljsService) {
this.pljsService = pljsService;
}
public void setQwjsService(QwjsService qwjsService) {
this.qwjsService = qwjsService;
}
public void setExcelName(String excelName) {
this.excelName = excelName;
}
public void setExcelNameFileName(String excelNameFileName) {
this.excelNameFileName = excelNameFileName;
}
public String tosearch(){
return "search";
}
/**
* 导入数据
* @return
*/
@SuppressWarnings("null")
public String impDatas(){
WorkbookSettings workbookSettings=new WorkbookSettings();
workbookSettings.setEncoding("ISO-8859-1"); //关键代码,解决中文乱码
Map<String,List<String[]>> resultDate = new LinkedHashMap<String,List<String[]>>();
//输入流
InputStream fis = null;
try {
fis = new FileInputStream(excelName);
} catch (FileNotFoundException e) {
e.printStackTrace();
try {
fis.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
//得到解析Excel的实体集合
//打开文件
try {
Workbook book = Workbook.getWorkbook(fis,workbookSettings);
//TODO 获取页签的名称
Sheet[] sheets = book.getSheets();
for(int s=0;s<sheets.length;s++){
Sheet sheet = sheets[s];
String sheet_name = sheet.getName();
//行数
int rowCount = sheet.getRows();
if(rowCount>=100){
request.put("msg", "excel文件数据不得超过100条!!");
return "search";
}
List<String[]> datas = new ArrayList<String[]>();
for (int i = 0; i < rowCount; i++) {
//一行有几列
Cell[] cells = sheet.getRow(i);
String[] str = new String[cells.length];
//TODO excel文件数据被删除后还是加载原先行数,需要进行相关的处理
for(int j=0; j<cells.length;j++){
String ct = cells[j].getContents().replaceAll(" ", " ").replaceAll(" ", " ");
str[j] = StringUtils.blank(ct) ? ct : ct.trim();
}
datas.add(str);
}
resultDate.put(sheet_name, datas);
}
logger.debug(""+resultDate);
request.put("ResultDate", resultDate);
} catch (BiffException e) {
e.printStackTrace();
try {
fis.close();
} catch (IOException e1) {
e1.printStackTrace();
}
} catch (IOException e) {
e.printStackTrace();
try {
fis.close();
} catch (IOException e1) {
e1.printStackTrace();
}
} finally{
try {
fis.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
return "reslist";
}
/**
* 批量数据处理
* @return
*/
public String plsj(){
Set<String> set = new HashSet<String>();
String data_index = servletRequest.getParameter("data_index");
String sheet_name = servletRequest.getParameter("sheet_name");
String input_name = "_keyword_"+sheet_name+"_"+data_index;
String[] keywords = servletRequest.getParameterValues(input_name);
for(String keyword : keywords){
keyword = keyword.replaceAll(" ", " ").replaceAll(" ", " ");
if(!StringUtils.blank(keyword)){
if(!StringUtils.blank(keyword.trim())){
set.add(keyword.trim());
}
}
}
pljs(set);
return "allresult";
}
/**
* 批量检索
* @return
*/
public void pljs(Set<String> set){
JSONArray keyWordsTree = new JSONArray();
JSONObject root = new JSONObject();
root.put("name", "关闭/展开");
root.put("open", true);
root.put("iconSkin", "pIcon01");
JSONArray childrenJson = new JSONArray();
for(String keyword : set){
JSONObject groupJson = new JSONObject();
groupJson.put("name", keyword+"(0)");
groupJson.put("key_id", keyword);
groupJson.put("encd_key_id", CommonUtils.encode(keyword, "utf-8"));
childrenJson.add(groupJson);
}
root.put("children", childrenJson);
keyWordsTree.add(root);
logger.debug("KeyWordsTree="+keyWordsTree);
request.put("KeyWordsTree", keyWordsTree);
request.put("KeyWords", set);
}
}