Explorar el Código

增加fork功能

郭超 hace 4 años
padre
commit
bb26daec64

+ 12 - 0
site/src/main/java/com/mooctest/crowd/site/SiteApplication.java

@@ -15,6 +15,18 @@ import org.springframework.scheduling.annotation.EnableScheduling;
 public class SiteApplication {
 
 	public static void main(String[] args) {
+//		String relativelyPath = System.getProperty("user.dir");
+//		// 1. 创建生成文档的配置
+//		DocsConfig config= new DocsConfig();
+//		config.setProjectPath(relativelyPath); // 项目根目录
+//		config.setProjectName("信创社区"); // 项目名称
+//		config.setApiVersion("V1.0");      // 声明该API的版本
+//		config.setDocsPath(relativelyPath + "/site/src/main/resources/apidoc"); // 生成API 文档所在目录
+//		config.setAutoGenerate(Boolean.TRUE);  // 配置自动生成
+//		config.addPlugin(new MarkdownDocPlugin());// 使用 MD 插件,额外生成 MD 格式的接口文档
+//		// 2. 执行生成 HTML 接口文档
+//		Docs.buildHtmlDocs(config); // 执行生成文档
+
 		SpringApplication.run(SiteApplication.class, args);
 	}
 

+ 33 - 1
site/src/main/java/com/mooctest/crowd/site/annotation/ApiDoc.java

@@ -1,8 +1,40 @@
 package com.mooctest.crowd.site.annotation;
 
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
 /**
  * @author guochao
  * @date 2021-04-28 09:52
  */
-public interface ApiDoc {
+@Retention(RetentionPolicy.SOURCE)
+@Target({ElementType.METHOD})
+public @interface ApiDoc {
+
+	/**
+	 * result class
+	 * @return
+	 */
+	Class<?> value() default Null.class;
+
+	/**
+	 * result class
+	 */
+	Class<?> result() default Null.class;
+
+	/**
+	 * request url
+	 */
+	String url() default "";
+
+	/**
+	 * request method
+	 */
+	String method() default "get";
+
+	final class Null{
+
+	}
 }

+ 3 - 0
site/src/main/java/com/mooctest/crowd/site/data/TaskOperationControl.java

@@ -23,6 +23,7 @@ public class TaskOperationControl {
     private boolean taskDemonstrate = false;
     private boolean taskRecommend = false;
     private boolean exportTask = false;
+    private boolean forkTask = false;
 
     public void hasAll(){
         this.receive = true;
@@ -34,6 +35,7 @@ public class TaskOperationControl {
         this.taskDemonstrate = true;
         this.taskRecommend = true;
         this.exportTask = true;
+        this.forkTask = true;
     }
 
     public void noAll(){
@@ -47,5 +49,6 @@ public class TaskOperationControl {
         this.taskDemonstrate = false;
         this.taskRecommend = false;
         this.exportTask = false;
+        this.forkTask = false;
     }
 }

+ 5 - 5
site/src/main/java/com/mooctest/crowd/site/data/vo/AgencyVO.java

@@ -31,11 +31,11 @@ public class AgencyVO {
     private Long taskCount;
     private int isDeleted;
     private String businessLicensePhoto;
-    private Timestamp updateTime;
-    private Timestamp expireTime;
-    private Timestamp createTime;
+    private Timestamp updateTime;// 更新时间
+    private Timestamp expireTime;// 过期时间
+    private Timestamp createTime;// 创建时间
     private StatusVO authStatus;
-    private Timestamp applyTime;
+    private Timestamp applyTime;// 申请时间
     private List<String> roleList;
     private String IdCardNum;
     private String legalPersonName;
@@ -43,7 +43,7 @@ public class AgencyVO {
     private String gender;
     private String idCardPositivePhoto;//身份证正面照
     private String idCardBackPhoto;//身份证反面照
-    private Date idCardDeadTime;
+    private Date idCardDeadTime;    // 身份证过期时间
 
 
     public AgencyVO(EvaluationAgency agency){

+ 3 - 0
site/src/main/java/com/mooctest/crowd/site/mediator/ViewMediator.java

@@ -68,6 +68,9 @@ public interface ViewMediator {
     CrowdTestTask changeTypeByProjectAndTask(CrowdTestProject project, CrowdTestTask task, Map<String, String> applicationMap
             , Map<String, String> fieldMap, Map<String, String> testMap);
 
+    CrowdTaskVO changeTypeByProjectAndTaskVO(CrowdTestProject project, CrowdTaskVO task, Map<String, String> applicationMap
+            , Map<String, String> fieldMap, Map<String, String> testMap);
+
     CrowdTestTask changeTypeByProjectAndTask(CrowdTestProject project, CrowdTestTask task);
 
     ProjectDetailsDTO renderProjectDetails(CrowdTestProject project, User user);

+ 34 - 8
site/src/main/java/com/mooctest/crowd/site/mediator/impl/WebMediatorImpl.java

@@ -746,6 +746,21 @@ public class WebMediatorImpl implements ViewMediator {
     }
 
     @Override
+    public CrowdTaskVO changeTypeByProjectAndTaskVO(CrowdTestProject project, CrowdTaskVO task, Map<String, String> applicationMap
+            , Map<String, String> fieldMap, Map<String, String> testMap) {
+        // 获取项目的领域、应用类型赋值给任务
+        task.setFieldType(project.getFieldType());
+        task.setApplicationType(project.getApplicationType());
+        // 领域类型值的转换
+        task.setFieldType(fieldMap.get(task.getFieldType()));
+        // 应用类型值的转换
+        task.setApplicationType(applicationMap.get(task.getApplicationType()));
+        // 测试类型值的转换
+        task.setServiceType(testMap.get(task.getServiceType()));
+        return task;
+    }
+
+    @Override
     public CrowdTestTask changeTypeByProjectAndTask(CrowdTestProject project, CrowdTestTask task) {
         // 获取领域、应用、测试类型code 和 name 的map
         Map<String, String> fieldMap = commonRepo.getFieldCodeNameMap();
@@ -808,8 +823,6 @@ public class WebMediatorImpl implements ViewMediator {
                 saveFlag = true;
             }
 
-            // 类型的转换
-            this.changeTypeByProjectAndTask(project, crowdTestTask, applicationMap, fieldMap, testMap);
             CrowdTaskVO crowdTaskVO = new CrowdTaskVO(crowdTestTask);
             if (crowdTestTask.getDistributionType() == 0) {
                 EvaluationAgencyPO agencyPO = agencyDao.findByUserId(crowdTestTask.getEvaluationAgencyId());
@@ -834,6 +847,18 @@ public class WebMediatorImpl implements ViewMediator {
         progress.add(new PieChartDataVO("进行中", crowdTestTaskList
                 .stream().filter(task -> task.getStatus() > CrowdTestTaskStatus.HAS_CREATED && task.getStatus() < CrowdTestTaskStatus.HAS_FINISHED).count()));
 
+        if (saveFlag) {
+            // 项目或者任务中的状态需要变更
+            projectRepo.saveCrowdTestProject(project);
+        }else{
+            // 状态不需要变更则进行类型转换
+            for (CrowdTaskVO crowdTaskVO : taskVOList) {
+                // 类型的转换
+                this.changeTypeByProjectAndTaskVO(project, crowdTaskVO, applicationMap, fieldMap, testMap);
+            }
+
+        }
+
         // 项目类型值的转换
         projectVO = changeFieldAndApplicationAndTestType(projectVO, applicationMap, fieldMap, testMap);
 
@@ -843,9 +868,6 @@ public class WebMediatorImpl implements ViewMediator {
         projectDetailsDTO.setProjectOperationControl(initProjectPermission(project, user));
         projectDetailsDTO.setProgress(progress);
 
-        if (saveFlag) {
-            projectRepo.saveCrowdTestProject(project);
-        }
         return projectDetailsDTO;
     }
 
@@ -1675,12 +1697,19 @@ public class WebMediatorImpl implements ViewMediator {
                     taskOperationControl.setTaskDemonstrate(true);
                 }
             }
+            if (user.getRoleList().stream().anyMatch(role -> role.getName().equals("SystemAdministrator"))
+                    || (user.getRegionalManager() != null && user.getId().equals(project.getRegionalManagerId()))) {
+                // 不管何时都可以导出任务
+                taskOperationControl.setExportTask(true);
+                taskOperationControl.setForkTask(true);
+            }
         }else{
             //区域管理员或系统管理员视角
             if (user.getRoleList().stream().anyMatch(role -> role.getName().equals("SystemAdministrator"))
                     || (user.getRegionalManager() != null && user.getId().equals(project.getRegionalManagerId()))) {
                 // 不管何时都可以导出任务
                 taskOperationControl.setExportTask(true);
+                taskOperationControl.setForkTask(true);
                 // 刚发布时,可修改,可查看推荐,可跳转看报告链接是否正确
                 if (task.getStatus() < CrowdTestTaskStatus.HAS_RECEIVED) {
                     taskOperationControl.setUpdate(true);
@@ -1788,9 +1817,6 @@ public class WebMediatorImpl implements ViewMediator {
                 return taskOperationControl;
             }
         }
-
-
-
         System.out.println(taskOperationControl);
         return taskOperationControl;
     }