/**
* 移动设备校验文件
*/
public String moveCheck() {
if("application/vnd.ms-excel".equals(filePathContentType) || "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet".equals(filePathContentType)){
String result=vidiconImportService.moveValiconCheck(filePath,new MoveVidicon(),moveVidiconService,"vidicon_no","_getRecordByNo","setVidiconId");
if(result!=null){
message=result;
}else {
String insertMesg = vidiconImportService.saveMoveValicons();
if(insertMesg != null){
message=insertMesg;
}
}
}else{
message="非法的文件格式,只能上传2003格式的Excel文件!";
}
return ConstantUtil.ACTION_COMPLETE;
}
/**
* @Description: 校验导入的文件(移动设备)
* @param file 上传的excel
* @param entity 实体类对象
* @param serviceEntity 用来校验唯一值的service类
* @prama checkOnlyKeyMethordName service曾校验的方法名称
* @prame onlyKey 为一列字段名
* @return
*/
public String moveValiconCheck(File file,Object entity,Object serviceEntity,String onlyKey,String checkOnlyKeyMethordName,String keyMethord){
String error = null;
try{
Class<?> thisRowEntity = entity.getClass();
List thisList = new ArrayList();
// 类
Class<?> cls = serviceEntity.getClass();
//Object obj=cls.newInstance();
//Method mt=cls.getMethod(checkOnlyKeyMethordName, String.class);
//Object obj=cls.newInstance();
// 方法
Method method;
Workbook rwb = Workbook.getWorkbook(file);
Sheet rs = rwb.getSheet(0);
int rows = getRightRows(rs);// 得到所有的行
int rsCols = rs.getColumns(); //总列数
// 类
for(int i = 1;i < rows;i++){// 从1开始,不要表头 (循环行)
Object thisNewEntity = thisRowEntity.newInstance();
//thisRowEntity.newInstance();
for(int ii = 0;ii < rsCols;ii++){// 从0开始,不要表头 (循环列)
if(onlyKey!= null && onlyKey.equals(rs.getCell(ii, 0).getContents())){ //存在唯一主键
method=cls.getMethod(checkOnlyKeyMethordName,new Class[]{String.class});
System.out.println(rs.getCell(ii, i).getContents());
//此处serviceEntity只能是上下文中的bean,否则会找不到mapper
Object ojj = method.invoke(serviceEntity, rs.getCell(ii, i).getContents());
if(ojj != null){
return "存在冲突数据!---行:" + i+"--列:"+ii;
}else{
method=thisRowEntity.getMethod(dealColumnName(rs.getCell(ii, 0).getContents()),new Class[]{String.class});
method.invoke(thisNewEntity, new Object[]{rs.getCell(ii, i).getContents()});
}
}else{
System.out.println(dealColumnName(rs.getCell(ii, 0).getContents()));
method=thisRowEntity.getMethod(dealColumnName(rs.getCell(ii, 0).getContents()),new Class[]{String.class});
method.invoke(thisNewEntity, new Object[]{rs.getCell(ii, i).getContents()});
}
}
method=thisRowEntity.getMethod(keyMethord,new Class[]{String.class});
method.invoke(thisNewEntity, new Object[]{UUIDUtil.genStrByTime(false)});
thisList.add(thisNewEntity);
//this.entityList = thisList;
//entityList.
//entityList.add(entity<?>);
//entityList.add(e)
}
this.entityList = thisList;
}catch(Exception e){
e.printStackTrace();
error = "解析文件出错了,只支持2003格式的xls文件!";
}
return error;
}
/**
* 批量导入移动设备
*
* @param record record
*/
public String saveMoveValicons() {
try {
List<MoveVidicon> moveVidicons = (ArrayList<MoveVidicon>)entityList;
vidiconExtendMapper.insertMoveVidicons(moveVidicons);
} catch (Exception e) {
// TODO Auto-generated catch block
return "存在不合法数据";
}
//LogUtil.addLog("movevidicon", "增加监控点信息【"+record.getVidiconName()+"】");
return null;
}