|
|
@@ -57,6 +57,8 @@ public class ResultsServiceImpl implements ResultsService {
|
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
@Value("${Cggl.temp}")
|
|
|
private String tempfolder;
|
|
|
+ @Value("${charset}")
|
|
|
+ private String charset;
|
|
|
//成果级别
|
|
|
private String cglevel = "1";
|
|
|
|
|
|
@@ -65,7 +67,7 @@ public class ResultsServiceImpl implements ResultsService {
|
|
|
public RequestResult md5(Map<String, Object> allParams) {
|
|
|
try {
|
|
|
//TODO wanger 获取参数
|
|
|
- if (allParams.get("md5") == null) {
|
|
|
+ if (allParams.get("md5") == null && allParams.get("mD5") == null) {
|
|
|
return RequestResult.error("文件MD5参数不能为空");
|
|
|
} else if (allParams.get("size") == null) {
|
|
|
return RequestResult.error("文件分片总数量参数不能为空");
|
|
|
@@ -75,7 +77,7 @@ public class ResultsServiceImpl implements ResultsService {
|
|
|
isnew = Boolean.valueOf(String.valueOf(allParams.get("new")));
|
|
|
}
|
|
|
Integer size = Integer.valueOf(String.valueOf(allParams.get("size")));
|
|
|
- String md5 = String.valueOf(allParams.get("md5"));
|
|
|
+ String md5 = allParams.get("md5") != null ? String.valueOf(allParams.get("md5")) : String.valueOf(allParams.get("mD5"));
|
|
|
TSysOpenUser user = getOpenUser();
|
|
|
if (user == null) {
|
|
|
return RequestResult.error("非法用户!");
|
|
|
@@ -119,12 +121,13 @@ public class ResultsServiceImpl implements ResultsService {
|
|
|
time = qxsbcg.getTime();
|
|
|
chunks = qxcgsbrwfpMapper.selectChunksByMd5(md5);
|
|
|
}
|
|
|
- Map<String, Object> res = new HashMap<>();
|
|
|
- res.put("size", size);
|
|
|
- res.put("chunks", chunks);
|
|
|
- res.put("time", sdf.format(time));
|
|
|
+// Map<String, Object> res = new HashMap<>();
|
|
|
+ allParams.put("md5", md5);
|
|
|
+ allParams.put("size", size);
|
|
|
+ allParams.put("chunks", chunks);
|
|
|
+ allParams.put("time", sdf.format(time));
|
|
|
loginfo("md5接口请求成功!");
|
|
|
- return RequestResult.success("操作成功", res);
|
|
|
+ return RequestResult.success("操作成功", allParams);
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
loginfo("md5接口请求失败!");
|
|
|
@@ -133,7 +136,8 @@ public class ResultsServiceImpl implements ResultsService {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public RequestResult upload(String md5, Integer chunk, MultipartFile file) {
|
|
|
+ public RequestResult upload(String md5, String mD5, Integer chunk, MultipartFile file) {
|
|
|
+ md5 = StringUtils.isEmpty(md5) ? mD5 : md5;
|
|
|
if (StringUtils.isEmpty(md5)) {
|
|
|
return RequestResult.error("文件MD5参数不能为空");
|
|
|
} else if (chunk == null) {
|
|
|
@@ -191,8 +195,8 @@ public class ResultsServiceImpl implements ResultsService {
|
|
|
|
|
|
@Override
|
|
|
public RequestResult complete(CompleteParams completeParams) {
|
|
|
- String md5 = completeParams.getMd5();
|
|
|
- String filename = completeParams.getFilename();
|
|
|
+ String md5 = StringUtils.isNotEmpty(completeParams.getMd5()) ? completeParams.getMd5() : completeParams.getmD5();
|
|
|
+ String filename = StringUtils.isNotEmpty(completeParams.getFilename()) ? completeParams.getFilename() : completeParams.getFileName();
|
|
|
String type = completeParams.getType();
|
|
|
String reason = completeParams.getReason();
|
|
|
String instid = completeParams.getInstid();
|
|
|
@@ -239,14 +243,14 @@ public class ResultsServiceImpl implements ResultsService {
|
|
|
// qxsbcg.setRwzt(rwzt.getHbsb());
|
|
|
qxcgsbrwMapper.update(qxsbcg, sbrwwrapper);
|
|
|
// deleteQxsbrw(md5);
|
|
|
- return RequestResult.error("合包失败,没找到合包后的文件,请联系管理员");
|
|
|
+ return RequestResult.error("1------合包失败,合包失败---");
|
|
|
}
|
|
|
File targetfile = new File(targetfilepath);
|
|
|
String fileMd5 = getMD5(targetfile);
|
|
|
if (!fileMd5.equals(md5)) {
|
|
|
deleteQxsbrw(md5);
|
|
|
deleteCurDirectory(targetfile.getParent());
|
|
|
- return RequestResult.error("警告:文件的MD5不一致");
|
|
|
+ return RequestResult.error("2-----警告:文件的MD5不一致");
|
|
|
}
|
|
|
//TODO wanger 进行数据解压
|
|
|
String filetype = StringUtils.getFileKzmx(filename);
|
|
|
@@ -262,81 +266,10 @@ public class ResultsServiceImpl implements ResultsService {
|
|
|
if (!unzipfile.exists()) {
|
|
|
deleteQxsbrw(md5);
|
|
|
deleteCurDirectory(targetfile.getParent());
|
|
|
- return RequestResult.error("压缩包名称与解压后的文件名称不一致,请检查!");
|
|
|
+ return RequestResult.error("3---压缩包名称与解压后的文件名称不一致,请检查!");
|
|
|
}
|
|
|
- //解析txt
|
|
|
- String txtFilePath = FileSearch(unzippath, "基本信息.txt");
|
|
|
- if (StringUtils.isEmpty(txtFilePath)) {
|
|
|
- deleteQxsbrw(md5);
|
|
|
- deleteCurDirectory(targetfile.getParent());
|
|
|
- return RequestResult.error("成果包中必须包含“xxx基本信息.txt”文件,同时注意成果包中应包含“xxx规划成果”的根目录");
|
|
|
- }
|
|
|
- Map<String, String> txtMap = readTxt(txtFilePath);
|
|
|
- ObjectMapper objectMapper = new ObjectMapper();
|
|
|
- String txtjson = "";
|
|
|
- try {
|
|
|
- txtjson = objectMapper.writeValueAsString(txtMap);
|
|
|
- } catch (JsonProcessingException e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- String xmmc = txtMap.get("项目名称");
|
|
|
- String xzqdm = txtMap.get("行政区代码");
|
|
|
- String xzqmc = txtMap.get("行政区名称");
|
|
|
- String ghlxtext = txtMap.get("规划类型");
|
|
|
- String ghcjtext = txtMap.get("规划层级");
|
|
|
- String ghxstext = txtMap.get("成果形式");
|
|
|
- String pzsjtext = txtMap.get("批准时间");
|
|
|
- String lxrtext = txtMap.get("联系人");
|
|
|
- String lxdhtext = txtMap.get("联系电话");
|
|
|
- //TODO wanger 对成果包进行校验
|
|
|
- String sjbz_bsm = "";
|
|
|
- if ("村庄规划".equals(ghlxtext)) {
|
|
|
- sjbz_bsm = ghlxtext + "" + ghxstext;
|
|
|
- } else {
|
|
|
- sjbz_bsm = ghcjtext + "" + ghlxtext;
|
|
|
- }
|
|
|
- QueryWrapper<TCgglSjbzmlwjDto> sjbzwrapper = new QueryWrapper();
|
|
|
- sjbzwrapper.eq("sjbz_bsm", sjbz_bsm);
|
|
|
- sjbzwrapper.eq("ystj", "M");
|
|
|
- sjbzwrapper.orderByAsc("px");
|
|
|
- List<TCgglSjbzmlwjDto> sjbzlist = tCgglSjbzmlwjMapper.selectList(sjbzwrapper);
|
|
|
- if (sjbzlist.size() == 0) {
|
|
|
- deleteQxsbrw(md5);
|
|
|
- deleteCurDirectory(targetfile.getParent());
|
|
|
- return RequestResult.error(String.format("未授权的数据类型:%s,请联系管理人员!", sjbz_bsm));
|
|
|
- }
|
|
|
- //记录缺失的文件列表 字符串类型
|
|
|
- List<String> missfiles = new ArrayList<>();
|
|
|
- missfiles = checkMustFiles(unzipfile.getParent(), sjbzlist, "", missfiles, xzqdm, xzqmc);
|
|
|
- if (missfiles.size() > 0) {
|
|
|
- deleteQxsbrw(md5);
|
|
|
- deleteCurDirectory(targetfile.getParent());
|
|
|
- return RequestResult.error(String.format("成果数据缺少以下目录或文件:%s", String.join("\n", missfiles)), missfiles);
|
|
|
- }
|
|
|
- qxsbcg.setRwzt(rwzt.getWc());
|
|
|
- qxsbcg.setCglj(unzippath);
|
|
|
- qxsbcg.setCgwj(targetfilepath);
|
|
|
- qxcgsbrwMapper.update(qxsbcg, sbrwwrapper);
|
|
|
- //TODO wanger 插入到系统成果表
|
|
|
- String ghlx = qxsbcg.getGhlx();
|
|
|
- if ("9".equals(ghlx)) {//村庄规划
|
|
|
- XzczghcgsbDTO xzczghcgsbDTO = new XzczghcgsbDTO();
|
|
|
- xzczghcgsbDTO.setCglevel(cglevel);
|
|
|
- xzczghcgsbDTO.setUuid(StringUtils.getUUID());
|
|
|
- xzczghcgsbDTO.setFileName(xmmc);
|
|
|
- xzczghcgsbDTO.setFilePath(targetfilepath);
|
|
|
- xzczghcgsbDTO.setUploadStatus(2);
|
|
|
- xzczghcgsbDTO.setUploadTime(new Date());
|
|
|
- xzczghcgsbDTO.setXzqName(xzqmc);
|
|
|
- xzczghcgsbDTO.setXzqCode(xzqdm);
|
|
|
- xzczghcgsbDTO.setStatus("10");
|
|
|
- xzczghcgsbDTO.setYear(pzsjtext);
|
|
|
- xzczghcgsbDTO.setBz(txtjson);
|
|
|
- if (StringUtils.isNotEmpty(instid)) {
|
|
|
- xzczghcgsbDTO.setInstid(instid);
|
|
|
- }
|
|
|
- xzczghcgsbMapper.insert(xzczghcgsbDTO);
|
|
|
- } else {//总体规划表
|
|
|
+ //TODO wanger 判断报批项目成果 非常重要
|
|
|
+ if ("6".equals(qxsbcg.getGhlx())) {
|
|
|
String fileuuid = StringUtils.getUUID();
|
|
|
//TODO wanger 插入file表
|
|
|
EscalationFileDTO filedto = new EscalationFileDTO();
|
|
|
@@ -344,7 +277,8 @@ public class ResultsServiceImpl implements ResultsService {
|
|
|
filedto.setName(filename);
|
|
|
filedto.setPath(targetfilepath);
|
|
|
filedto.setUnzippath(unzippath);
|
|
|
- filedto.setStatus("9");
|
|
|
+ filedto.setStatus("1");
|
|
|
+ filedto.setRemark("");
|
|
|
filedto.setUsername(user.getName());
|
|
|
escalationFileMapper.insert(filedto);
|
|
|
//TODO wanger 插入主表
|
|
|
@@ -352,23 +286,163 @@ public class ResultsServiceImpl implements ResultsService {
|
|
|
escalationDTO.setId(StringUtils.getUUID());
|
|
|
escalationDTO.setCglevel(cglevel);
|
|
|
escalationDTO.setFileid(fileuuid);
|
|
|
- escalationDTO.setPlantype(ghlx);
|
|
|
+ escalationDTO.setPlantype(qxsbcg.getGhlx());
|
|
|
if (StringUtils.isNotEmpty(instid)) {
|
|
|
escalationDTO.setInstid(instid);
|
|
|
}
|
|
|
escalationDTO.setUploadstatus("0");
|
|
|
- escalationDTO.setXzqdm(xzqdm);
|
|
|
- escalationDTO.setXzqmc(xzqmc);
|
|
|
- escalationDTO.setYear(pzsjtext);
|
|
|
+ escalationDTO.setXzqdm(user.getXzqdm());
|
|
|
+ escalationDTO.setXzqmc(user.getXzqmc());
|
|
|
+ escalationDTO.setYear("");
|
|
|
escalationDTO.setUploadtime(new Date());
|
|
|
escalationDTO.setUsername(user.getName());
|
|
|
- escalationDTO.setSczt("4");
|
|
|
- escalationDTO.setName(xmmc);
|
|
|
- escalationDTO.setLxdh(lxdhtext);
|
|
|
- escalationDTO.setLxr(lxrtext);
|
|
|
+ escalationDTO.setSczt("6");
|
|
|
+ escalationDTO.setName(fileRelName);
|
|
|
+ escalationDTO.setLxdh("");
|
|
|
+ escalationDTO.setLxr("");
|
|
|
escalationMapper.insert(escalationDTO);
|
|
|
+ } else {
|
|
|
+ //解析txt
|
|
|
+ String txtFilePath = FileSearch(unzippath, "基本信息.txt");
|
|
|
+ if (StringUtils.isEmpty(txtFilePath)) {
|
|
|
+ deleteQxsbrw(md5);
|
|
|
+ deleteCurDirectory(targetfile.getParent());
|
|
|
+ return RequestResult.error("4----成果包中必须包含“xxx基本信息.txt”文件,同时注意成果包中应包含“xxx规划成果”的根目录");
|
|
|
+ }
|
|
|
+ System.out.println("txtFilePath===" + txtFilePath);
|
|
|
+ Map<String, String> txtMap = null;
|
|
|
+ try {
|
|
|
+ txtMap = readTxt(txtFilePath, charset);
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ deleteQxsbrw(md5);
|
|
|
+ deleteCurDirectory(targetfile.getParent());
|
|
|
+ return RequestResult.error("4----解析规划文本txt错误,请检查格式!");
|
|
|
+ }
|
|
|
+ System.out.println("txtMap===" + txtMap);
|
|
|
+ String xmmc = txtMap.get("xmmc") != null ? txtMap.get("xmmc") : fileRelName;
|
|
|
+ String xzqdm = txtMap.get("行政区代码");
|
|
|
+ String xzqmc = txtMap.get("行政区名称");
|
|
|
+ String ghlxtext = txtMap.get("规划类型");
|
|
|
+ String ghcjtext = txtMap.get("规划层级");
|
|
|
+ String ghxstext = txtMap.get("成果形式");
|
|
|
+ String pzsjtext = txtMap.get("批准时间");
|
|
|
+ String lxrtext = txtMap.get("联系人");
|
|
|
+ String lxdhtext = txtMap.get("联系电话");
|
|
|
+ //TODO wanger 对成果包进行校验
|
|
|
+ System.out.println("xmmc===" + xmmc);
|
|
|
+ System.out.println("ghlxtext===" + ghlxtext);
|
|
|
+ System.out.println("ghxstext===" + ghxstext);
|
|
|
+ System.out.println("ghcjtext===" + ghcjtext);
|
|
|
+ String sjbz_bsm = "";
|
|
|
+ ObjectMapper objectMapper = new ObjectMapper();
|
|
|
+ String txtjson = "";
|
|
|
+ try {
|
|
|
+ txtjson = objectMapper.writeValueAsString(txtMap);
|
|
|
+ } catch (JsonProcessingException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ if ("村庄规划".equals(ghlxtext)) {
|
|
|
+ sjbz_bsm = ghlxtext + "" + ghxstext;
|
|
|
+ } else {
|
|
|
+ sjbz_bsm = ghcjtext + "" + ghlxtext;
|
|
|
+ }
|
|
|
+ QueryWrapper<TCgglSjbzmlwjDto> sjbzwrapper = new QueryWrapper();
|
|
|
+ sjbzwrapper.eq("sjbz_bsm", sjbz_bsm);
|
|
|
+// sjbzwrapper.eq("ystj", "M");
|
|
|
+ sjbzwrapper.orderByAsc("px");
|
|
|
+ List<TCgglSjbzmlwjDto> sjbzlist = tCgglSjbzmlwjMapper.selectList(sjbzwrapper);
|
|
|
+ if (sjbzlist.size() == 0) {
|
|
|
+ deleteQxsbrw(md5);
|
|
|
+ deleteCurDirectory(targetfile.getParent());
|
|
|
+ return RequestResult.error(String.format("5-----未授权的数据类型:%s,请联系管理人员!", sjbz_bsm));
|
|
|
+ }
|
|
|
+ //TODO wanger 处理那些根目录带有“_报审”等的数据项
|
|
|
+ if (fileRelName.contains("_")) {
|
|
|
+ System.out.println("Important contains _");
|
|
|
+ int count = fileRelName.split("_").length;
|
|
|
+ for (TCgglSjbzmlwjDto sjbzmlwjDto : sjbzlist) {
|
|
|
+ String bz = sjbzmlwjDto.getBz();
|
|
|
+ if (StringUtils.isNotEmpty(bz) && bz.contains("根目录")) {
|
|
|
+ String rule = sjbzmlwjDto.getGzmc();
|
|
|
+ int rulecount = rule.split("_").length;
|
|
|
+ if (rulecount == count) {
|
|
|
+ //相等就代表命名规则一样,不需要处理
|
|
|
+ } else {
|
|
|
+ sjbzmlwjDto.setGzmc(rule + "_" + fileRelName.split("_")[fileRelName.split("_").length - 1]);
|
|
|
+ }
|
|
|
+ System.out.println("Important handle end _" + "----" + sjbzmlwjDto.getGzmc());
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //记录缺失的文件列表 字符串类型
|
|
|
+ List<String> missfiles = new ArrayList<>();
|
|
|
+ missfiles = checkMustFiles(unzipfile.getParent(), sjbzlist, "", missfiles, xzqdm, xzqmc);
|
|
|
+ if (missfiles.size() > 0) {
|
|
|
+ deleteQxsbrw(md5);
|
|
|
+ deleteCurDirectory(targetfile.getParent());
|
|
|
+ return RequestResult.error(String.format("6------成果数据缺少以下目录或文件:%s", String.join("\n", missfiles)), missfiles);
|
|
|
+ }
|
|
|
+ qxsbcg.setRwzt(rwzt.getWc());
|
|
|
+ qxsbcg.setCglj(unzippath);
|
|
|
+ qxsbcg.setCgwj(targetfilepath);
|
|
|
+ qxcgsbrwMapper.update(qxsbcg, sbrwwrapper);
|
|
|
+ //TODO wanger 插入到系统成果表
|
|
|
+ String ghlx = qxsbcg.getGhlx();
|
|
|
+ System.out.println("xmmc===" + xmmc);
|
|
|
+ if ("9".equals(ghlx)) {//村庄规划
|
|
|
+ XzczghcgsbDTO xzczghcgsbDTO = new XzczghcgsbDTO();
|
|
|
+ xzczghcgsbDTO.setCglevel(cglevel);
|
|
|
+ xzczghcgsbDTO.setUuid(StringUtils.getUUID());
|
|
|
+ xzczghcgsbDTO.setFileName(xmmc);
|
|
|
+ xzczghcgsbDTO.setFilePath(targetfilepath);
|
|
|
+ xzczghcgsbDTO.setUploadStatus(2);
|
|
|
+ xzczghcgsbDTO.setUploadTime(new Date());
|
|
|
+ xzczghcgsbDTO.setXzqName(xzqmc);
|
|
|
+ xzczghcgsbDTO.setXzqCode(xzqdm);
|
|
|
+ xzczghcgsbDTO.setStatus("10");
|
|
|
+ xzczghcgsbDTO.setYear(pzsjtext);
|
|
|
+ xzczghcgsbDTO.setBz(txtjson);
|
|
|
+ if (StringUtils.isNotEmpty(instid)) {
|
|
|
+ xzczghcgsbDTO.setInstid(instid);
|
|
|
+ }
|
|
|
+ xzczghcgsbMapper.insert(xzczghcgsbDTO);
|
|
|
+ } else {//总体规划表
|
|
|
+ String fileuuid = StringUtils.getUUID();
|
|
|
+ //TODO wanger 插入file表
|
|
|
+ EscalationFileDTO filedto = new EscalationFileDTO();
|
|
|
+ filedto.setId(fileuuid);
|
|
|
+ filedto.setName(filename);
|
|
|
+ filedto.setPath(targetfilepath);
|
|
|
+ filedto.setUnzippath(unzippath);
|
|
|
+ filedto.setStatus("9");
|
|
|
+ filedto.setRemark(txtjson);
|
|
|
+ filedto.setUsername(user.getName());
|
|
|
+ escalationFileMapper.insert(filedto);
|
|
|
+ //TODO wanger 插入主表
|
|
|
+ EscalationDTO escalationDTO = new EscalationDTO();
|
|
|
+ escalationDTO.setId(StringUtils.getUUID());
|
|
|
+ escalationDTO.setCglevel(cglevel);
|
|
|
+ escalationDTO.setFileid(fileuuid);
|
|
|
+ escalationDTO.setPlantype(ghlx);
|
|
|
+ if (StringUtils.isNotEmpty(instid)) {
|
|
|
+ escalationDTO.setInstid(instid);
|
|
|
+ }
|
|
|
+ escalationDTO.setUploadstatus("0");
|
|
|
+ escalationDTO.setXzqdm(xzqdm);
|
|
|
+ escalationDTO.setXzqmc(xzqmc);
|
|
|
+ escalationDTO.setYear(pzsjtext);
|
|
|
+ escalationDTO.setUploadtime(new Date());
|
|
|
+ escalationDTO.setUsername(user.getName());
|
|
|
+ escalationDTO.setSczt("4");
|
|
|
+ escalationDTO.setName(xmmc);
|
|
|
+ escalationDTO.setLxdh(lxdhtext);
|
|
|
+ escalationDTO.setLxr(lxrtext);
|
|
|
+ escalationMapper.insert(escalationDTO);
|
|
|
+ }
|
|
|
}
|
|
|
- return RequestResult.success("操作成功", 1);
|
|
|
+ return RequestResult.success("7----操作成功", 1);
|
|
|
}
|
|
|
|
|
|
private void deleteCurDirectory(String parent) {
|
|
|
@@ -431,6 +505,9 @@ public class ResultsServiceImpl implements ResultsService {
|
|
|
.collect(Collectors.toList());
|
|
|
}
|
|
|
for (TCgglSjbzmlwjDto dto : filteredList) {
|
|
|
+ if ("O".equals(dto.getYstj()) || "C".equals(dto.getYstj())) {//跳过非必要审查项
|
|
|
+ continue;
|
|
|
+ }
|
|
|
Integer lx = dto.getLx();
|
|
|
String gzmc = dto.getGzmc();
|
|
|
String mlmc = dto.getMlmc();
|