From c5c39bb23c024e95b23e8427760bf5bb0d128309 Mon Sep 17 00:00:00 2001
From: youys <1272586223@qq.com>
Date: Mon, 22 May 2023 09:43:08 +0800
Subject: [PATCH] =?UTF-8?q?=E6=89=8B=E5=8A=A8=E8=B7=91=E8=AF=84=E5=88=86?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 2 +-
.../ecsonar/services/SonarService.java | 4 +-
.../ecsonar/task/ReadExcelRunnable.java | 80 +--------
.../net/educoder/ecsonar/utils/ExcelUtil.java | 10 +-
.../net/educoder/ecsonar/utils/RarUtil.java | 161 ++++++++++++++++++
src/main/resources/template1.xlsx | Bin 13059 -> 13199 bytes
.../ecsonar/EcsonarApplicationTests.java | 13 +-
7 files changed, 189 insertions(+), 81 deletions(-)
create mode 100644 src/main/java/net/educoder/ecsonar/utils/RarUtil.java
diff --git a/pom.xml b/pom.xml
index b30a9b6..1c19d1e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -111,7 +111,7 @@
com.github.junrar
junrar
- 4.0.0
+ 7.5.4
diff --git a/src/main/java/net/educoder/ecsonar/services/SonarService.java b/src/main/java/net/educoder/ecsonar/services/SonarService.java
index 1141db2..c71db27 100644
--- a/src/main/java/net/educoder/ecsonar/services/SonarService.java
+++ b/src/main/java/net/educoder/ecsonar/services/SonarService.java
@@ -193,7 +193,7 @@ public class SonarService {
"-Dsonar.projectBaseDir=" + projectPath;
log.info("projectPath:{},key:{}, command: {}", projectPath, key, command);
SystemUtil.ExecuteResp executeResp = SystemUtil.executeAndGetExitStatus(command);
- log.info("projectPath:{},key:{}, result: {}", projectPath, key, executeResp.getOutput());
+ log.info("projectPath:{},key:{}, result: {}", projectPath, key, executeResp.getStatus() != 0 ? executeResp.getOutput() : "success");
}
/**
@@ -258,7 +258,7 @@ public class SonarService {
*/
public void scanExcel(String excelPath) {
- int homeworkId = 20230102;
+ int homeworkId = 20230302;
try {
List personList = ExcelUtil.readExcel(excelPath);
diff --git a/src/main/java/net/educoder/ecsonar/task/ReadExcelRunnable.java b/src/main/java/net/educoder/ecsonar/task/ReadExcelRunnable.java
index f3136bf..f0a62d9 100644
--- a/src/main/java/net/educoder/ecsonar/task/ReadExcelRunnable.java
+++ b/src/main/java/net/educoder/ecsonar/task/ReadExcelRunnable.java
@@ -1,9 +1,12 @@
package net.educoder.ecsonar.task;
+import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.ZipUtil;
+import com.github.junrar.Junrar;
import net.educoder.ecsonar.model.api.Person;
import net.educoder.ecsonar.model.api.SonarRequest;
import net.educoder.ecsonar.services.SonarService;
+import net.educoder.ecsonar.utils.RarUtil;
import net.educoder.ecsonar.utils.UrlUtil;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
@@ -42,7 +45,7 @@ public class ReadExcelRunnable implements Runnable{
String path = String.format("/tmp/%d/%s/", homeworkId, uid);
File file = new File(path);
if(!file.exists()){
- file.mkdir();
+ file.mkdirs();
}
// for (Person person : sonarRequest.getPersonList()) {
// String[] split = StringUtils.split(person.getDownloadUrl(), "/");
@@ -54,6 +57,10 @@ public class ReadExcelRunnable implements Runnable{
// }
// }
String key = String.format("%d-%s", homeworkId, uid);
+ if(new File(path + "/.scannerwork/").exists()){
+ System.out.println(path+ "----exist");
+ return;
+ }
log.info("开始调用sonar:{}",key);
sonarService.sonar(path,key);
}
@@ -87,76 +94,5 @@ public class ReadExcelRunnable implements Runnable{
}
- public static void main(String[] args) {
-
-// unzip();
- valid("/tmp/20230102");
- }
-
-
- public static void unzip(){
- String sourceDir = "/tmp/20230101";
- String targetDir = "/tmp/20230102";
-
- File directory = new File(sourceDir);
- File[] studentDirs = directory.listFiles();
- if (studentDirs == null) {
- System.out.println("No student directories found.");
- return;
- }
-
- int i=0;
- for (File studentDir : studentDirs) {
- if (!studentDir.isDirectory()) {
- continue;
- }
-
- String studentId = studentDir.getName();
- String studentTargetDir = targetDir + "/" + studentId;
-
- File[] zipFiles = studentDir.listFiles((dir, name) -> name.endsWith(".zip"));
- if (zipFiles == null) {
- System.out.println("No zip files found for student: " + studentId);
- continue;
- }
-
-
-// if(i++ < 82){
-// continue;
-// }
- for (File zipFile : zipFiles) {
- try {
- unzip(zipFile.getAbsolutePath(), studentTargetDir);
- } catch (Exception e) {
- System.out.println("Error occurred while unzipping file: " + zipFile.getName());
- e.printStackTrace();
- }
- }
- }
- }
-
- private static void unzip(String zipFilePath, String targetDir) throws IOException {
- System.out.println(zipFilePath + " to " + targetDir);
- ZipUtil.unzip(zipFilePath,targetDir,Charset.forName("GBK"));
- }
-
-
- public static void valid(String path){
- File directory = new File(path);
- File[] studentDirs = directory.listFiles();
- if (studentDirs == null) {
- System.out.println("No student directories found.");
- return;
- }
-
- for (File studentDir : studentDirs) {
- if (studentDir.isDirectory()) {
- for (File file : studentDir.listFiles()) {
- System.out.println(studentDir.getName()+" ->" + file.getName());
- }
- }
- }
-
- }
}
diff --git a/src/main/java/net/educoder/ecsonar/utils/ExcelUtil.java b/src/main/java/net/educoder/ecsonar/utils/ExcelUtil.java
index a92847c..e49edee 100644
--- a/src/main/java/net/educoder/ecsonar/utils/ExcelUtil.java
+++ b/src/main/java/net/educoder/ecsonar/utils/ExcelUtil.java
@@ -397,8 +397,16 @@ public class ExcelUtil {
Row row = sheet.getRow(i);
String name = row.getCell(0).getStringCellValue();
+// String uid;
+// try {
+// uid = String.valueOf(row.getCell(1).getNumericCellValue());
+// }catch (Exception e){
+// uid = row.getCell(1).getStringCellValue();
+// }
+
String uid = row.getCell(1).getStringCellValue();
- String downloadUrl = row.getCell(2).getStringCellValue();
+
+ String downloadUrl = row.getCell(2).getStringCellValue() + "?secret_key=806ac9e5a8b40233c99bb513a315ed66";
Person person = new Person();
person.setName(name);
diff --git a/src/main/java/net/educoder/ecsonar/utils/RarUtil.java b/src/main/java/net/educoder/ecsonar/utils/RarUtil.java
new file mode 100644
index 0000000..848c8d8
--- /dev/null
+++ b/src/main/java/net/educoder/ecsonar/utils/RarUtil.java
@@ -0,0 +1,161 @@
+package net.educoder.ecsonar.utils;
+
+import cn.hutool.core.io.FileUtil;
+import cn.hutool.core.util.RuntimeUtil;
+import cn.hutool.core.util.ZipUtil;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.charset.Charset;
+
+/**
+ * @Author: youys
+ * @Date: 2023/5/19
+ * @Description:
+ */
+public class RarUtil {
+
+ public static void unrar(String sourceFilePath, String outputDirectory) {
+ String s = RuntimeUtil.execForStr("unar", sourceFilePath,"-o", outputDirectory);
+ System.out.println("result====" + s);
+ }
+
+
+ public static void un7Z(String sourceFilePath, String outputDirectory) {
+ String s = RuntimeUtil.execForStr("unar", sourceFilePath,"-o", outputDirectory);
+ System.out.println("result====" + s);
+ }
+
+
+ public static void main(String[] args) {
+ // unrar("/tmp/20230301/201905962222/20230519153409_wuiol3vn.rar", "/Users/youyongsheng/Desktop/aa");
+ un7Z("/tmp/20230301/201905962241/20230519153506_i39sv5p2.7z", "/Users/youyongsheng/Desktop/aa");
+
+// unzip();
+// valid("/tmp/20230201");
+ removeFullCode("/tmp/20230302");
+ }
+
+
+ public static void unzip(){
+ String sourceDir = "/tmp/20230301";
+ String targetDir = "/tmp/20230302";
+
+ File directory = new File(sourceDir);
+ File[] studentDirs = directory.listFiles();
+ if (studentDirs == null) {
+ System.out.println("No student directories found.");
+ return;
+ }
+
+ int i=0;
+ for (File studentDir : studentDirs) {
+ if (!studentDir.isDirectory()) {
+ System.out.println("111--------------------------------");
+ continue;
+ }
+
+
+
+ String studentId = studentDir.getName();
+ String studentTargetDir = targetDir + "/" + studentId;
+
+ File[] zipFiles = studentDir.listFiles();
+// File[] zipFiles = studentDir.listFiles((dir, name) -> name.endsWith(".zip"));
+// if (zipFiles == null) {
+// System.out.println("No zip files found for student: " + studentId);
+// continue;
+// }
+
+
+ for (File zipFile : zipFiles) {
+ try {
+ if(zipFile.getName().endsWith(".zip")){
+// unzip(zipFile.getAbsolutePath(), studentTargetDir);
+ }else if(zipFile.getName().endsWith(".rar")){
+ System.out.println(zipFile.getAbsolutePath() + " to " + targetDir);
+ unRar(zipFile.getAbsolutePath(), studentTargetDir);
+ }else{
+ System.out.println(zipFile.getAbsolutePath() + " to " + targetDir);
+ RarUtil.un7Z(zipFile.getAbsolutePath(), studentTargetDir);
+ }
+ } catch (Exception e) {
+ System.out.println("Error occurred while unzipping file: " + zipFile.getName());
+ }
+ }
+
+ System.out.println("--------------------------------");
+ }
+ }
+
+ private static void unzip(String zipFilePath, String targetDir) throws IOException {
+ System.out.println(zipFilePath + " to " + targetDir);
+ ZipUtil.unzip(zipFilePath,targetDir, Charset.forName("GBK"));
+ }
+
+ private static void unRar(String zipFilePath, String targetDir) throws Exception {
+ System.out.println(zipFilePath + " to " + targetDir);
+ RarUtil.unrar(zipFilePath,targetDir);
+ }
+
+
+ public static void valid(String path){
+ File directory = new File(path);
+ File[] studentDirs = directory.listFiles();
+ if (studentDirs == null) {
+ System.out.println("No student directories found.");
+ return;
+ }
+
+ for (File studentDir : studentDirs) {
+ if (studentDir.isDirectory()) {
+
+ for (File file : studentDir.listFiles()) {
+ System.out.println(studentDir.getName()+" ->" + file.getName());
+ }
+ System.out.println("--------------------------------");
+ }
+ }
+
+ }
+
+ public static void removeFullCode(String path){
+ // 删除完整代码
+ File directory = new File(path);
+ File[] studentDirs = directory.listFiles();
+ if (studentDirs == null) {
+ System.out.println("No student directories found.");
+ return;
+ }
+
+ for (File studentDir : studentDirs) {
+ if (studentDir.isDirectory()) {
+
+ String stuNo = studentDir.getName();
+ File[] files = studentDir.listFiles();
+ if(files.length == 2){
+ for (File file : files) {
+ if (file.getName().contains("完整")) {
+ System.out.println(stuNo + "==11===" + file.getAbsolutePath());
+ cn.hutool.core.io.FileUtil.del(file.getAbsolutePath());
+ }
+ }
+
+ }else if(files.length == 1){
+ File file = files[0];
+ File[] files1 = file.listFiles();
+ if(files1 != null && files1.length == 2){
+ for (File f : files1) {
+ if (f.getName().contains("完整")) {
+ System.out.println(stuNo + "==22===" + f.getAbsolutePath());
+ FileUtil.del(f.getAbsolutePath());
+ }
+ }
+
+ }
+ }
+
+ }
+ }
+ }
+}
diff --git a/src/main/resources/template1.xlsx b/src/main/resources/template1.xlsx
index b828e405f8fa6824020ddfb8f07d53028fd39135..75a4d0860fab219c81c34efa79b3fceba62eab4c 100644
GIT binary patch
delta 9134
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
delta 8995
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 personList = ExcelUtil.readExcel("/Users/youyongsheng/Desktop/ZQ/质量分析/2023-05-16/data.xlsx");
+ List personList = ExcelUtil.readExcel("/Users/youyongsheng/Desktop/ZQ/质量分析/2023-05-16/湘潭大学网络工程专业2023届-原始数据.xlsx");
Map> collect = personList.stream().collect(Collectors.groupingBy(Person::getUid));
@@ -100,7 +100,7 @@ public class EcsonarApplicationTests {
Metrics metrics = reportService.getMetrics(projectName);
String templatePath = this.getClass().getClassLoader().getResource("template1.xlsx").getPath();
- String outPath = "/Users/youyongsheng/Desktop/2222222.xlsx";
+ String outPath = "/Users/youyongsheng/Desktop/bbbbb.xlsx";
System.out.println("第"+(i++)+"个学生," + uid);
if (CollectionUtils.isEmpty(collect.get(uid))) {
@@ -122,4 +122,7 @@ public class EcsonarApplicationTests {
System.out.println("---------end------------");
}
+
+
+
}