|
|
@@ -237,11 +237,13 @@ public class ResultsServiceImpl implements ResultsService {
|
|
|
e.printStackTrace();
|
|
|
qxsbcg.setRwzt(rwzt.getHbsb());
|
|
|
qxcgsbrwMapper.update(qxsbcg, sbrwwrapper);
|
|
|
+// deleteQxsbrw(md5);
|
|
|
return RequestResult.error("合包失败,没找到合包后的文件,请联系管理员");
|
|
|
}
|
|
|
File targetfile = new File(targetfilepath);
|
|
|
String fileMd5 = getMD5(targetfile);
|
|
|
if (!fileMd5.equals(md5)) {
|
|
|
+ deleteQxsbrw(md5);
|
|
|
return RequestResult.error("警告:文件的MD5不一致");
|
|
|
}
|
|
|
//TODO wanger 进行数据解压
|
|
|
@@ -256,11 +258,13 @@ public class ResultsServiceImpl implements ResultsService {
|
|
|
}
|
|
|
File unzipfile = new File(unzippath);
|
|
|
if (!unzipfile.exists()) {
|
|
|
+ deleteQxsbrw(md5);
|
|
|
return RequestResult.error("压缩包名称与解压后的文件名称不一致,请检查!");
|
|
|
}
|
|
|
//解析txt
|
|
|
String txtFilePath = FileSearch(unzippath, "基本信息.txt");
|
|
|
if (StringUtils.isEmpty(txtFilePath)) {
|
|
|
+ deleteQxsbrw(md5);
|
|
|
return RequestResult.error("成果包中必须包含“xxx基本信息.txt”文件,同时注意成果包中应包含“xxx规划成果”的根目录");
|
|
|
}
|
|
|
Map<String, String> txtMap = readTxt(txtFilePath);
|
|
|
@@ -293,12 +297,14 @@ public class ResultsServiceImpl implements ResultsService {
|
|
|
sjbzwrapper.orderByAsc("px");
|
|
|
List<TCgglSjbzmlwjDto> sjbzlist = tCgglSjbzmlwjMapper.selectList(sjbzwrapper);
|
|
|
if (sjbzlist.size() == 0) {
|
|
|
- return RequestResult.error(String.format("未授权的数据类型:%s,请联系管理人员!"), sjbz_bsm);
|
|
|
+ deleteQxsbrw(md5);
|
|
|
+ return RequestResult.error(String.format("未授权的数据类型:%s,请联系管理人员!", sjbz_bsm));
|
|
|
}
|
|
|
//记录缺失的文件列表 字符串类型
|
|
|
List<String> missfiles = new ArrayList<>();
|
|
|
- missfiles = checkMustFiles(unzippath, sjbzlist, "", missfiles, xzqdm, xzqmc);
|
|
|
+ missfiles = checkMustFiles(unzipfile.getParent(), sjbzlist, "", missfiles, xzqdm, xzqmc);
|
|
|
if (missfiles.size() > 0) {
|
|
|
+ deleteQxsbrw(md5);
|
|
|
return RequestResult.error(String.format("成果数据缺少以下目录或文件:%s", String.join("\n", missfiles)), missfiles);
|
|
|
}
|
|
|
qxsbcg.setRwzt(rwzt.getWc());
|
|
|
@@ -359,6 +365,32 @@ public class ResultsServiceImpl implements ResultsService {
|
|
|
return RequestResult.success("操作成功", 1);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 根据MD5删除数据库表和数据文件夹
|
|
|
+ *
|
|
|
+ * @param md5
|
|
|
+ */
|
|
|
+ public void deleteQxsbrw(String md5) {
|
|
|
+ QueryWrapper<Qxcgsbrw> sbrwwrapper = new QueryWrapper<>();
|
|
|
+ sbrwwrapper.eq("bsm", md5);
|
|
|
+ Qxcgsbrw qxsbcg = qxcgsbrwMapper.selectOne(sbrwwrapper);
|
|
|
+ String wjwz = qxsbcg.getCgwj();
|
|
|
+ File file = new File(wjwz);
|
|
|
+ if (file != null) {
|
|
|
+ String dir = file.getParent();
|
|
|
+ try {
|
|
|
+ FileUtils.deleteDirectory(new File(dir));
|
|
|
+ } catch (IOException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ System.out.println(String.format("%s:文件夹删除失败:%s", md5, dir));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ qxcgsbrwMapper.delete(sbrwwrapper);
|
|
|
+ QueryWrapper<Qxcgsbrwfp> fpwrapper = new QueryWrapper<>();
|
|
|
+ fpwrapper.eq("md5", md5);
|
|
|
+ qxcgsbrwfpMapper.delete(fpwrapper);
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 检查缺失的成果文件 递归调用 非常重要
|
|
|
*
|
|
|
@@ -374,7 +406,7 @@ public class ResultsServiceImpl implements ResultsService {
|
|
|
List<TCgglSjbzmlwjDto> filteredList = new ArrayList<>();
|
|
|
if (StringUtils.isNotEmpty(parentname)) {
|
|
|
filteredList = sjbzlist.stream()
|
|
|
- .filter(cur -> cur.getSjml() == parentname)
|
|
|
+ .filter(cur -> parentname.equals(cur.getSjml()))
|
|
|
.collect(Collectors.toList());
|
|
|
} else {
|
|
|
filteredList = sjbzlist.stream()
|
|
|
@@ -399,7 +431,7 @@ public class ResultsServiceImpl implements ResultsService {
|
|
|
if (lx == 0) {//文件夹
|
|
|
if (folder.exists() && folder.isDirectory()) {
|
|
|
if (!curpath.endsWith(".gdb")) {
|
|
|
- checkMustFiles(curpath, sjbzlist, dto.getSjml(), missfiles, xzqdm, xzqmc);
|
|
|
+ checkMustFiles(curpath, sjbzlist, dto.getBsm(), missfiles, xzqdm, xzqmc);
|
|
|
}
|
|
|
} else {
|
|
|
missfiles.add(StringUtils.isNotEmpty(gzmc) ? gzmc : mlmc);
|