@POST @Path("/uploadCOS")
public long uploadCOS(
@FormDataParam("file") final InputStream fileInputStream,
@FormDataParam("saveFileName") String saveFileName, //文件名称
@FormDataParam("orgId") final long orgId,
@FormDataParam("categoryId") final long categoryId,
@FormDataParam("__file_length") long __file_length
) throws Exception {
final Long userPkId = ThreadLocalLoginedInfo.get().getUserPkId();
final String userName = ThreadLocalLoginedInfo.get().getUserName();
//先保存他的上传信息
UploadInfo ui = new UploadInfo();
ui.setTitle(saveFileName);
ui.setCreateDate(new Date());
ui.setIsDel(false);
ui.setOrgId(orgId);
ui.setResult("正在解析");
ui.setUserPkId(userPkId);
ui.setUserName(userName);
final long uid = uploadInfoDao.add(ui);
saveFileName = saveFileName.toLowerCase();
if(!saveFileName.endsWith(".cos")){
UploadInfo con = new UploadInfo();
con.setId(uid);
UploadInfo val = new UploadInfo();
val.setResult("上传的不是COS文件");
uploadInfoDao.update(val, con);
return 2;
}
try {
//将上传文件保存到本地
final File cosFile = inputStreamChangeFile(fileInputStream);
//解压文件
ZipFile zFile = new ZipFile(cosFile);
final File destDir = unzip(zFile);
//获取解压完的文件
final File[] extractedFiles = getFileList(zFile, destDir);
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try {
long start = System.currentTimeMillis();
//开始解析XML
standardBillService.analyzeXML(extractedFiles, orgId, categoryId,userPkId,userName);
UploadInfo con = new UploadInfo();
con.setId(uid);
UploadInfo val = new UploadInfo();
val.setResult("解析完成");
uploadInfoDao.update(val, con);
long end = System.currentTimeMillis();
System.out.println("上传完成,耗时:"+((end-start)/1000)+"秒");
System.out.println("上传完成,耗时:"+((end-start)/1000/60)+"分钟");
} catch (Exception e) {
e.printStackTrace();
StackTraceElement[] st = e.getStackTrace();
String message = "";
// 把出现的异常详细信息记录到备注中
for (StackTraceElement s : st) {
String exclass = s.getClassName();
String method = s.getMethodName();
message += "[类:" + exclass + "]调用" + method + "方法时,在第" + s.getLineNumber() + "行代码处发生异常\r\n";
}
UploadInfo con = new UploadInfo();
con.setId(uid);
UploadInfo val = new UploadInfo();
val.setResult("解析文件出现异常,异常类型 :" + e.getClass().getName() + ":" + e.getMessage() + ",具体异常位置信息 :" + message);
uploadInfoDao.update(val, con);
} finally{
cosFile.delete();
deleteAll(destDir);//删除文件夹里面的所有文件
}
}
});
thread.start();
return 1;
} catch (Exception e) {
e.printStackTrace();
StackTraceElement[] st = e.getStackTrace();
String message = "";
// 把出现的异常详细信息记录到备注中
for (StackTraceElement s : st) {
String exclass = s.getClassName();
String method = s.getMethodName();
message += "[类:" + exclass + "]调用" + method + "方法时,在第" + s.getLineNumber() + "行代码处发生异常\r\n";
}
UploadInfo con = new UploadInfo();
con.setId(uid);
UploadInfo val = new UploadInfo();
val.setResult("解析文件出现异常,异常类型 :" + e.getClass().getName() + ":" + e.getMessage() + ",具体异常位置信息 :" + message);
uploadInfoDao.update(val, con);
return 0;
}
}