//名称 viewdata()
//读取excel表适用于单sheet数据低版本excel
//data--读入的excel文件路径
//lis--自定义的list保存值对应于页面相应字段需要顺序加入
//index--数据标志位对应于业务数据起始行,第一行下标为0
public static List<Map<String, String>> viewPre(String data,List<String> lis,int index) {
List<Map<String,String>> prelist=new ArrayList<Map<String,String>>();
try {
int flag;
InputStream is = new FileInputStream(data);
jxl.Workbook rwb = Workbook.getWorkbook(is);
Sheet[] rslist = rwb.getSheets();
//获取行数
int rows = rslist[0].getRows();
if(index < rows){
for (int j = index; j < rslist[0].getRows(); j++) {
Map<String, String> premap = new HashMap<String, String>();
//列数
int columnnum =rslist[0].getColumns();
String content;
//如果一行没有任何内容,则跳过
flag = 0;
premap.clear();
for( int t=0;t<columnnum;t++){
premap.put(lis.get(t), rslist[0].getCell(t,j).getContents().trim());//将excel值赋给数组
content = rslist[0].getCell(t,j).getContents().trim();
if(!"".equals(content)&&content != null){
flag=1;
}
}
if(flag==1){
prelist.add(premap);
}
}
}
rwb.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return prelist;
}
**
* querySSXByRegionLength(这里用一句话描述这个方法的作用)
*
* @Title: dealViewdata
* @Description: 动态拼装日期等现在仅用于日期;多参传参形式必须成对出现为(...,int 1,list<String> lis)(1:代表格式化日期 ;lis代表所替换对应日期的列名)
* (2:代表处理字典表;对应的传入参数为Map<String,String>其中键为字典表中的dicttypeid值为对应的字段值
* 例如:map.put("dict_sex", "sex");)
* (3:替换唯一情况字段传入类型;对应传入类型为Map<String,String> key为列名,value为表名)
* (4:校验必填项是否为空传入类型为list<String> lis 其中String为校验的列名)
* @Author:dsq
* @return List<Map<String,String>> 返回类型
*/
public static List<Map<String,String>> dealViewdata(List<Map<String,String>> lisMap,Map<String,String> mapflag,SqlMapper sqlMapper,Object... obj){
for(int i=0; i<lisMap.size(); i++){
for(int j=0;j<obj.length;j+=2){
switch ((int)obj[j]) {
//替换日期
case 1:
for(int t=0;t<((List<String>)obj[j+1]).size();t++){
if(null != lisMap.get(i).get(((List<String>)obj[j+1]).get(t)) && !"".equals(lisMap.get(i).get(((List<String>)obj[j+1]).get(t)))){
if(RegExpValidatorUtils.isDate(lisMap.get(i).get(((List<String>)obj[j+1]).get(t)))){
lisMap.get(i).put(((List<String>)obj[j+1]).get(t), StrUtil.dataformat(lisMap.get(i).get(((List<String>)obj[j+1]).get(t))));
}else{
lisMap.get(i).put(((List<String>)obj[j+1]).get(t), "1error");
mapflag.put("flag", "1");
}
}
}
break;
//替换字典表对应的数据
case 2:
for(String key : ((Map<String,String>)(obj[j+1])).keySet()){
String sql="select value from sys_dict where dicttypeid ='"+key+"' and item ='"+lisMap.get(i).get(((Map<String,String>)(obj[j+1])).get(key))+"'";
String value=sqlMapper.selectOne(sql,String.class);
lisMap.get(i).put(((Map<String,String>)(obj[j+1])).get(key), value);
}
break;
//校验数据库中是否存在该数据
case 3:
for(String key : ((Map<String,String>)(obj[j+1])).keySet()){
int count = 0;
String value = lisMap.get(i).get(key);
if(null != value && !"".equals(value)){
count = StrUtil.compareData(sqlMapper, ((Map<String,String>)(obj[j+1])).get(key), key,value);
if(count != 0){
lisMap.get(i).put(key, "2error");
mapflag.put("flag", "1");
}
}
}
break;
//校验excel表中传入的数据不能为空
case 4:
for(int t=0;t<((List<String>)obj[j+1]).size();t++){
if("".equals(lisMap.get(i).get(((List<String>)obj[j+1]).get(t))) || null == lisMap.get(i).get(((List<String>)obj[j+1]).get(t))){
lisMap.get(i).put(((List<String>)obj[j+1]).get(t),"3error");
mapflag.put("flag", "1");
}
}
break;
default:
break;
}
}
}
return lisMap;
}
//验证手机号码
public static List<Map<String,String>> valiphone(List<Map<String,String>> lisMap,Map<String,String> mapflag,List<String> lis){
for(int i=0;i<lisMap.size();i++ ){
for(int t=0;t<lis.size();t++){
if(null != lisMap.get(i).get(lis.get(t)) && !"".equals(lisMap.get(i).get(lis.get(t)))){
if(!RegExpValidatorUtils.isPhone(lisMap.get(i).get(lis.get(t)))){
lisMap.get(i).put((lis.get(t)), "8error");
mapflag.put("flag", "1");
}
}
}
}
return lisMap;
}
//根据列名返回其字段值
//name--对应的表名
public static List<String> getColumnNameStr(SqlMapper sqlMapper,String name){
return sqlMapper.selectList("SELECT column_name name FROM information_schema.columns WHERE table_schema = 'agripro' AND table_name ='"+name+"'", String.class);
}
//name--对应的表名
//idList--向表中插入的对应的字段名
//lis--要插入的数据Map内容顺序上无要求
public static String spStr(String name,List<String> idlist,List<Map<String,String>> lis){
StringBuffer sbf = new StringBuffer();
sbf.append("INSERT into ");
sbf.append(name);
sbf.append(" (");
for(int i=0; i<idlist.size();i++){
sbf.append(idlist.get(i)+",");
}
sbf.deleteCharAt(sbf.length()-1);
sbf.append(") VALUES ");
for(int i=0;i<lis.size();i++){
sbf.append(" ('");
for(int j=0;j<idlist.size();j++){
sbf.append(lis.get(i).get(idlist.get(j)));
sbf.append("','");
}
sbf.deleteCharAt(sbf.length()-1);
sbf.deleteCharAt(sbf.length()-1);
sbf.append("),");
}
sbf.deleteCharAt(sbf.length()-1);
sbf.append(";");
return sbf.toString();
}