Ver código fonte

Merge branch 'develop' of http://39.106.8.246:3003/BDTP/digital-delivery into develop

lvxianyun 3 anos atrás
pai
commit
3220d2eb87
17 arquivos alterados com 411 adições e 105 exclusões
  1. 6 0
      adm-business/adm-diagram/pom.xml
  2. 27 0
      adm-business/adm-diagram/src/main/java/com/persagy/adm/diagram/config/InterceptorAdapterConfig.java
  3. 67 0
      adm-business/adm-diagram/src/main/java/com/persagy/adm/diagram/config/SwaggerConfig.java
  4. 20 0
      adm-business/adm-diagram/src/main/java/com/persagy/adm/diagram/constant/Constants.java
  5. 13 10
      adm-business/adm-diagram/src/main/java/com/persagy/adm/diagram/controller/CommonController.java
  6. 15 12
      adm-business/adm-diagram/src/main/java/com/persagy/adm/diagram/controller/DemoDiagramController.java
  7. 41 24
      adm-business/adm-diagram/src/main/java/com/persagy/adm/diagram/controller/DiagramController.java
  8. 11 8
      adm-business/adm-diagram/src/main/java/com/persagy/adm/diagram/controller/LegendController.java
  9. 35 31
      adm-business/adm-diagram/src/main/java/com/persagy/adm/diagram/controller/TemplateController.java
  10. 7 0
      adm-business/adm-diagram/src/main/java/com/persagy/adm/diagram/core/DataStrategy.java
  11. 109 14
      adm-business/adm-diagram/src/main/java/com/persagy/adm/diagram/core/impl/DataStrategyImpl.java
  12. 8 3
      adm-business/adm-diagram/src/main/java/com/persagy/adm/diagram/demo/DemoDataStrategy.java
  13. 28 0
      adm-business/adm-diagram/src/main/java/com/persagy/adm/diagram/frame/BdtpInterceptor.java
  14. 21 0
      adm-business/adm-diagram/src/main/java/com/persagy/adm/diagram/frame/BdtpRequest.java
  15. 1 1
      adm-business/adm-diagram/src/main/java/com/persagy/adm/diagram/frame/ExceptionAspect.java
  16. 1 1
      adm-business/adm-diagram/src/main/java/com/persagy/adm/diagram/manage/DemoDiagramManager.java
  17. 1 1
      adm-business/adm-diagram/src/main/java/com/persagy/adm/diagram/manage/TemplateManager.java

+ 6 - 0
adm-business/adm-diagram/pom.xml

@@ -67,5 +67,11 @@
             <artifactId>gson</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>com.spring4all</groupId>
+            <artifactId>swagger-spring-boot-starter</artifactId>
+            <version>1.7.1.RELEASE</version>
+        </dependency>
+
     </dependencies>
 </project>

+ 27 - 0
adm-business/adm-diagram/src/main/java/com/persagy/adm/diagram/config/InterceptorAdapterConfig.java

@@ -0,0 +1,27 @@
+package com.persagy.adm.diagram.config;
+
+
+import com.persagy.adm.diagram.frame.BdtpInterceptor;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+/**
+ * 拦截器配置
+ */
+@Configuration
+public class InterceptorAdapterConfig implements WebMvcConfigurer {
+
+	@Bean
+	public BdtpInterceptor bdtpInterceptor() {
+		return new BdtpInterceptor();
+	}
+
+	@Override
+	public void addInterceptors(InterceptorRegistry registry) {
+		//TODO 设置优先级
+		registry.addInterceptor(bdtpInterceptor());
+	}
+
+}

+ 67 - 0
adm-business/adm-diagram/src/main/java/com/persagy/adm/diagram/config/SwaggerConfig.java

@@ -0,0 +1,67 @@
+package com.persagy.adm.diagram.config;
+
+import com.google.common.base.Predicate;
+import com.spring4all.swagger.EnableSwagger2Doc;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import springfox.documentation.RequestHandler;
+import springfox.documentation.builders.ApiInfoBuilder;
+import springfox.documentation.service.ApiInfo;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spring.web.plugins.Docket;
+
+import javax.annotation.Nullable;
+
+@Configuration
+@EnableSwagger2Doc
+public class SwaggerConfig {
+
+//	private static final List<String> excludedPathPrefix = Arrays.asList(
+//			"/",
+//			"/legend",
+//			"/diagram"
+//	);
+
+	@Bean
+	public Docket createRestApi() {
+		return new Docket(DocumentationType.SWAGGER_2)
+				.apiInfo(apiInfo())
+				.select()
+				.apis(new Swaggerfilter())
+//				.paths((s) -> {
+//					for(String pathPrefix : excludedPathPrefix) {
+//						if(StringUtils.startsWith(s, pathPrefix)) {
+//							return false;
+//						}
+//					}
+//					return true;
+//				})
+				.build();
+	}
+
+	private ApiInfo apiInfo() {
+		return new ApiInfoBuilder()
+				.title("系统图接口")
+				.version("0.1")
+				.build();
+	}
+
+
+	/**
+	 * 过滤页面路由
+	 */
+	class Swaggerfilter implements Predicate<RequestHandler> {
+		@Override
+		public boolean apply(@Nullable RequestHandler requestHandler) {
+			if(requestHandler.findAnnotation(ApiOperation.class).isPresent()){
+				return true;
+			}
+//       		if(requestHandler.findAnnotation(ResponseBody.class).isPresent()|| requestHandler.findControllerAnnotation(ResponseBody.class).isPresent()){
+//                return true;
+//            }
+			return false;
+		}
+	}
+
+}

+ 20 - 0
adm-business/adm-diagram/src/main/java/com/persagy/adm/diagram/constant/Constants.java

@@ -23,4 +23,24 @@ public class Constants {
      * system
      */
     public static final String SYSTEM = "system";
+    /**
+     * major
+     */
+    public static final String MAJOR = "major";
+    /**
+     * type
+     */
+    public static final String TYPE = "type";
+    /**
+     * code
+     */
+    public static final String CODE = "code";
+    /**
+     * majorCode
+     */
+    public static final String MAJOR_CODE = "majorCode";
+    /**
+     * children
+     */
+    public static final String CHILDREN = "children";
 }

+ 13 - 10
adm-business/adm-diagram/src/main/java/com/persagy/adm/diagram/controller/CommonController.java

@@ -7,10 +7,12 @@ import com.persagy.adm.diagram.entity.DiagramType;
 import com.persagy.adm.diagram.frame.BdtpRequest;
 import com.persagy.adm.diagram.service.BdtpDataService;
 import com.persagy.dmp.common.model.response.CommonResult;
+import com.persagy.dmp.common.utils.ResultHelper;
+import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.web.bind.annotation.CrossOrigin;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import java.util.Iterator;
@@ -28,19 +30,19 @@ public class CommonController {
 	@Qualifier(DataStrategy.implQualifier)
 	private DataStrategy dataStrategy;
 
-	@RequestMapping("equipTypes")
+	@GetMapping("equipTypes")
 	public CommonResult<List<ObjectNode>> equipTypes(){
-		return CommonResult.success(bdtpDataService.getEquipTypeList(new BdtpRequest(), null));
+		return ResultHelper.single(bdtpDataService.getEquipTypeList(BdtpRequest.getCurrent(), null));
 	}
 
-	@RequestMapping("relTypes")
+	@GetMapping("relTypes")
 	public CommonResult<List<Map<String, Object>>> relTypes(){
-		return CommonResult.success(bdtpDataService.getRelTypeTree(new BdtpRequest()));
+		return ResultHelper.single(bdtpDataService.getRelTypeTree(BdtpRequest.getCurrent()));
 	}
 
-	@RequestMapping("majSys")
+	@GetMapping("majSys")
 	public CommonResult<List<ObjectNode>> majSys(){
-		BdtpRequest req = new BdtpRequest();
+		BdtpRequest req = BdtpRequest.getCurrent();
 		List<ObjectNode> majList = bdtpDataService.getMajorList(req);
 		List<ObjectNode> sysList = bdtpDataService.getSystemList(req);
 
@@ -56,12 +58,13 @@ public class CommonController {
 				}
 			}
 		}
-		return CommonResult.success(majList);
+		return ResultHelper.single(majList);
 	}
 
-	@RequestMapping("diagramTypes")
+	@ApiOperation("查询系统图类型列表")
+	@GetMapping("diagramTypes")
 	public CommonResult<List<DiagramType>> diagramTypes(){
-		return CommonResult.success(dataStrategy.getDiagramTypes());
+		return ResultHelper.single(dataStrategy.getDiagramTypes());
 	}
 
 }

+ 15 - 12
adm-business/adm-diagram/src/main/java/com/persagy/adm/diagram/controller/DemoDiagramController.java

@@ -5,6 +5,8 @@ import com.persagy.adm.diagram.manage.DemoDiagramManager;
 import com.persagy.adm.diagram.manage.Folder;
 import com.persagy.adm.diagram.core.model.Diagram;
 import com.persagy.dmp.common.model.response.CommonResult;
+import com.persagy.dmp.common.utils.ResultHelper;
+import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -26,11 +28,12 @@ public class DemoDiagramController {
 	 * @param groupCode 集团编码
 	 * @return 树形结构数据(专业-系统-类型-图)
 	 */
-	@RequestMapping("getDiagrams")
+	@ApiOperation("查询系统图,返回树形结构")
+	@GetMapping("getDiagrams")
 	public CommonResult<List<Folder>> getDiagrams(@RequestParam String projectId,
 												  @RequestParam(required = false) String systemId,
 												  @RequestParam(required = false) String groupCode){
-		return CommonResult.success(diagramManager.getDiagrams(projectId, systemId, groupCode));
+		return ResultHelper.single(diagramManager.getDiagrams(projectId, systemId, groupCode));
 	}
 
 	/**
@@ -41,12 +44,12 @@ public class DemoDiagramController {
 	 * @param groupCode 集团编码
 	 * @return 新建的系统图对象
 	 */
-	@RequestMapping("newDiagram")
+	@PostMapping("newDiagram")
 	public CommonResult<Diagram> newDiagram(@RequestBody Map<String, String> params,
 											@RequestParam String projectId,
 											@RequestParam(required = false) String systemId,
 											@RequestParam(required = false) String groupCode){
-		return CommonResult.success(diagramManager.createDiagram(params.get("name"), params.get("type"), projectId, systemId, groupCode));
+		return ResultHelper.single(diagramManager.createDiagram(params.get("name"), params.get("type"), projectId, systemId, groupCode));
 	}
 
 	/**
@@ -54,9 +57,9 @@ public class DemoDiagramController {
 	 * @param params 删除参数,对象类型,包含字段 id:系统图id
 	 * @return
 	 */
-	@RequestMapping("delDiagram")
+	@PostMapping("delDiagram")
 	public CommonResult<Boolean> delDiagram(@RequestBody Map<String, String> params){
-		return CommonResult.success(diagramManager.deleteDiagram(params.get("id")));
+		return ResultHelper.single(diagramManager.deleteDiagram(params.get("id")));
 	}
 
 	/**
@@ -64,9 +67,9 @@ public class DemoDiagramController {
 	 * @param req 编辑参数,对象类型,包含字段 diagramId:系统图id, templateId:使用的模板id
 	 * @return 系统图对象
 	 */
-	@RequestMapping("setTemplate")
+	@PostMapping("setTemplate")
 	public CommonResult<Diagram> setTemplate(@RequestBody EditRequest req){
-		return CommonResult.success(diagramManager.setTemplate(req.getDiagramId(), req.getTemplateId()));
+		return ResultHelper.single(diagramManager.setTemplate(req.getDiagramId(), req.getTemplateId()));
 	}
 
 	/**
@@ -74,9 +77,9 @@ public class DemoDiagramController {
 	 * @param req 编辑参数,对象类型,包含字段 diagramId:系统图id
 	 * @return 系统图对象
 	 */
-	@RequestMapping("loadData")
+	@PostMapping("loadData")
 	public CommonResult<Diagram> loadData(@RequestBody EditRequest req) {
-		return CommonResult.success(diagramManager.loadData(req.getDiagramId(), true));
+		return ResultHelper.single(diagramManager.loadData(req.getDiagramId(), true));
 	}
 
 	/**
@@ -84,9 +87,9 @@ public class DemoDiagramController {
 	 * @param req 编辑参数,对象类型,包含字段 diagram:系统图对象
 	 * @return 保存后的系统图对象
 	 */
-	@RequestMapping("saveDiagram")
+	@PostMapping("saveDiagram")
 	public CommonResult<Diagram> saveDiagram(@RequestBody EditRequest req) {
-		return CommonResult.success(diagramManager.saveDiagram(req.getDiagram()));
+		return ResultHelper.single(diagramManager.saveDiagram(req.getDiagram()));
 	}
 
 }

+ 41 - 24
adm-business/adm-diagram/src/main/java/com/persagy/adm/diagram/controller/DiagramController.java

@@ -4,10 +4,17 @@ import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.persagy.adm.diagram.core.DataStrategy;
 import com.persagy.adm.diagram.core.model.Diagram;
 import com.persagy.adm.diagram.core.model.template.DiagramTemplate;
+import com.persagy.adm.diagram.frame.BdtpRequest;
 import com.persagy.dmp.common.model.response.CommonResult;
+import com.persagy.dmp.common.utils.ResultHelper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
 
 import java.util.List;
 
@@ -28,21 +35,20 @@ public class DiagramController {
 
     /**
      * 系统图列表接口
-     * 根据系统图类型、项目id、系统实例id、集团code、系统图名称查询
      *
-     * @param projectId 项目id
-     * @param systemId  系统实例id
-     * @param groupCode 集团code
-     * @param name      系统图名称
+     * @param diagram 请求参数
      * @return 系统图列表
      */
-    @RequestMapping("/getDiagrams")
-    public CommonResult<List<Diagram>> getDiagrams(@RequestParam String projectId,
-                                                   @RequestParam(required = false) String systemId,
-                                                   @RequestParam(required = false) String groupCode,
-                                                   @RequestParam(required = false) String name) {
-        return CommonResult.success(dataStrategy.getDiagrams(null, projectId, systemId,
-                groupCode, name));
+    @PostMapping("/getDiagrams")
+    public CommonResult<List<Diagram>> getDiagrams(@RequestBody Diagram diagram) {
+        BdtpRequest current = BdtpRequest.getCurrent();
+        String groupCode = current.getGroupCode();
+        String projectId = current.getProjectId();
+
+        List<Diagram> diagramList = dataStrategy.getDiagrams(null, projectId,
+                diagram.getSystemId(), groupCode, diagram.getName());
+
+        return ResultHelper.multi(diagramList);
     }
 
     /**
@@ -53,7 +59,7 @@ public class DiagramController {
      */
     @PostMapping("/newDiagram")
     public CommonResult<Diagram> newDiagram(@RequestBody Diagram diagram) {
-        return CommonResult.success(dataStrategy.saveDiagram(diagram));
+        return ResultHelper.single(dataStrategy.saveDiagram(diagram));
     }
 
     /**
@@ -64,7 +70,7 @@ public class DiagramController {
      */
     @GetMapping("/deleteDiagram")
     public CommonResult<Boolean> deleteDiagram(String diagramId) {
-        return CommonResult.success(dataStrategy.deleteDiagram(diagramId));
+        return ResultHelper.single(dataStrategy.deleteDiagram(diagramId));
     }
 
     /**
@@ -75,19 +81,30 @@ public class DiagramController {
      */
     @GetMapping("/getDiagram")
     public CommonResult<Diagram> getDiagram(String diagramId) {
-        return CommonResult.success(dataStrategy.getDiagram(diagramId));
+        return ResultHelper.single(dataStrategy.getDiagram(diagramId));
     }
 
     /**
      * 系统图实例查询
      *
-     * @param projectId 项目id
-     * @param groupCode 集团code
      * @return 系统实例
      */
-    @GetMapping("/system/instance")
-    public CommonResult<List<ObjectNode>> loadSystemInstance(String projectId, String groupCode) {
-        return CommonResult.success(dataStrategy.loadSystemInstance(projectId, groupCode));
+    @PostMapping("/system/instance")
+    public CommonResult<List<ObjectNode>> loadSystemInstance() {
+        BdtpRequest current = BdtpRequest.getCurrent();
+        String groupCode = current.getGroupCode();
+        String projectId = current.getProjectId();
+        return ResultHelper.multi(dataStrategy.loadSystemInstance(projectId, groupCode));
+    }
+
+    /**
+     * 项目下的专业 -> 系统 ->系统实例 的树状结构数据
+     *
+     * @return 列表
+     */
+    @PostMapping("/major/system/instance")
+    public CommonResult<List<ObjectNode>> loadMajorSystemInstance() {
+        return ResultHelper.multi(dataStrategy.loadMajorSystemInstance());
     }
 
     /**
@@ -98,7 +115,7 @@ public class DiagramController {
      */
     @GetMapping("/getTemplates/ByType")
     public CommonResult<List<DiagramTemplate>> getTemplatesByType(String diagramType) {
-        return CommonResult.success(dataStrategy.getTemplates(diagramType));
+        return ResultHelper.multi(dataStrategy.getTemplates(diagramType));
     }
 
     /**
@@ -109,7 +126,7 @@ public class DiagramController {
      */
     @GetMapping("/getTemplate/ById")
     public CommonResult<DiagramTemplate> getTemplateById(String templateId) {
-        return CommonResult.success(dataStrategy.getTemplate(templateId));
+        return ResultHelper.single(dataStrategy.getTemplate(templateId));
     }
 
     /**
@@ -119,6 +136,6 @@ public class DiagramController {
      */
     @GetMapping("/getTemplates")
     public CommonResult<List<DiagramTemplate>> getTemplates() {
-        return CommonResult.success(dataStrategy.getTemplates());
+        return ResultHelper.multi(dataStrategy.getTemplates());
     }
 }

+ 11 - 8
adm-business/adm-diagram/src/main/java/com/persagy/adm/diagram/controller/LegendController.java

@@ -4,6 +4,8 @@ import com.persagy.adm.diagram.frame.EditRequest;
 import com.persagy.adm.diagram.core.model.legend.Legend;
 import com.persagy.adm.diagram.manage.LegendManager;
 import com.persagy.dmp.common.model.response.CommonResult;
+import com.persagy.dmp.common.utils.ResultHelper;
+import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -17,29 +19,30 @@ public class LegendController {
 	@Autowired
 	private LegendManager legendManager;
 
-	@RequestMapping("getLegends")
+	@ApiOperation("按照系统代码,查询图例列表")
+	@GetMapping("getLegends")
 	public CommonResult<List<Legend>> getLegends(@RequestParam String sys){
-		return CommonResult.success(legendManager.getLegends(sys));
+		return ResultHelper.single(legendManager.getLegends(sys));
 	}
 
-	@RequestMapping("saveLegend")
+	@PostMapping("saveLegend")
 	public CommonResult<Legend> saveLegend(@RequestBody EditRequest req){
-		return CommonResult.success(legendManager.saveLegend(req.getLegend(), req.getSys()));
+		return ResultHelper.single(legendManager.saveLegend(req.getLegend(), req.getSys()));
 	}
 
-	@RequestMapping("delLegend")
+	@PostMapping("delLegend")
 	public CommonResult<Boolean> delLegend(@RequestBody EditRequest req){
-		return CommonResult.success(legendManager.deleteLegend(req.getCurrentCompId(), req.getSys()));
+		return ResultHelper.single(legendManager.deleteLegend(req.getCurrentCompId(), req.getSys()));
 	}
 
 //	@RequestMapping("fixRel")
 //	public CommonResult<Boolean> fixRel(){
-//		return CommonResult.success(legendManager.fixRel());
+//		return ResultHelper.single(legendManager.fixRel());
 //	}
 
 	@RequestMapping("fixDiagramType")
 	public CommonResult<Boolean> fixDiagramType(){
-		return CommonResult.success(legendManager.fixDiagramType());
+		return ResultHelper.single(legendManager.fixDiagramType());
 	}
 
 }

+ 35 - 31
adm-business/adm-diagram/src/main/java/com/persagy/adm/diagram/controller/TemplateController.java

@@ -1,10 +1,12 @@
 package com.persagy.adm.diagram.controller;
 
+import com.persagy.adm.diagram.core.model.template.DiagramTemplate;
 import com.persagy.adm.diagram.frame.EditRequest;
 import com.persagy.adm.diagram.manage.Folder;
 import com.persagy.adm.diagram.manage.TemplateManager;
-import com.persagy.adm.diagram.core.model.template.DiagramTemplate;
 import com.persagy.dmp.common.model.response.CommonResult;
+import com.persagy.dmp.common.utils.ResultHelper;
+import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -19,88 +21,90 @@ public class TemplateController {
     @Autowired
     private TemplateManager templateManager;
 
-    @RequestMapping("getTemplates")
+    @ApiOperation("查询模板列表")
+    @GetMapping("getTemplates")
     public CommonResult<List<Folder>> getTemplates(){
-        return CommonResult.success(templateManager.getTemplates());
+        return ResultHelper.single(templateManager.getTemplates());
     }
 
-    @RequestMapping("getTemplatesByType")
+    @ApiOperation("按系统图类型查询模板列表")
+    @GetMapping("getTemplatesByType")
     public CommonResult<List<DiagramTemplate>> getTemplatesByType(@RequestParam String diagramType){
-        return CommonResult.success(templateManager.getTemplates(diagramType));
+        return ResultHelper.single(templateManager.getTemplates(diagramType));
     }
 
-    @RequestMapping("newTemplate")
+    @PostMapping("newTemplate")
     public CommonResult<DiagramTemplate> newTemplate(@RequestBody Map<String, String> params){
-        return CommonResult.success(templateManager.createTemplate(params.get("name"), params.get("type")));
+        return ResultHelper.single(templateManager.createTemplate(params.get("name"), params.get("type")));
     }
 
-    @RequestMapping("delTemplate")
+    @PostMapping("delTemplate")
     public CommonResult<Boolean> delTemplate(@RequestBody Map<String, String> params){
-        return CommonResult.success(templateManager.deleteTemplate(params.get("id")));
+        return ResultHelper.single(templateManager.deleteTemplate(params.get("id")));
     }
 
-    @RequestMapping("editTemplateInfo")
+    @PostMapping("editTemplateInfo")
     public CommonResult<Boolean> editTemplateInfo(@RequestBody Map<String, String> params){
-        return CommonResult.success(templateManager.editTemplateInfo(params.remove("id"), params));
+        return ResultHelper.single(templateManager.editTemplateInfo(params.remove("id"), params));
     }
 
-    @RequestMapping("addCon")
+    @PostMapping("addCon")
     public CommonResult<DiagramTemplate> addCon(@RequestBody EditRequest params){
-        return CommonResult.success(templateManager.addCon(params.getNewCompId(), params.getCurrentCompId(), params.getTemplateId()));
+        return ResultHelper.single(templateManager.addCon(params.getNewCompId(), params.getCurrentCompId(), params.getTemplateId()));
     }
 
-    @RequestMapping("delCon")
+    @PostMapping("delCon")
     public CommonResult<DiagramTemplate> delCon(@RequestBody EditRequest params){
-        return CommonResult.success(templateManager.delCon(params.getCurrentCompId(), params.getTemplateId()));
+        return ResultHelper.single(templateManager.delCon(params.getCurrentCompId(), params.getTemplateId()));
     }
 
-    @RequestMapping("moveCon")
+    @PostMapping("moveCon")
     public CommonResult<DiagramTemplate> moveCon(@RequestBody EditRequest params){
-        return CommonResult.success(templateManager.moveCon(params.getCurrentCompId(), params.getTemplateId(), params.getMoveOffset()));
+        return ResultHelper.single(templateManager.moveCon(params.getCurrentCompId(), params.getTemplateId(), params.getMoveOffset()));
     }
 
-    @RequestMapping("addMainPipe")
+    @PostMapping("addMainPipe")
     public CommonResult<DiagramTemplate> addMainPipe(@RequestBody EditRequest params){
-        return CommonResult.success(templateManager.addMainPipe(params.getLines(), params.getTemplateId()));
+        return ResultHelper.single(templateManager.addMainPipe(params.getLines(), params.getTemplateId()));
     }
 
-    @RequestMapping("delLine")
+    @PostMapping("delLine")
     public CommonResult<DiagramTemplate> delLine(@RequestBody EditRequest params){
-        return CommonResult.success(templateManager.delMainPipe(params.getCurrentCompId(), params.getTemplateId()));
+        return ResultHelper.single(templateManager.delMainPipe(params.getCurrentCompId(), params.getTemplateId()));
     }
 
-    @RequestMapping("modifyCon")
+    @PostMapping("modifyCon")
     public CommonResult<DiagramTemplate> modifyCon(@RequestBody EditRequest params){
-        return CommonResult.success(templateManager.modifyCon(params.getTemplatePropsData(), params.getCurrentCompId(), params.getTemplateId()));
+        return ResultHelper.single(templateManager.modifyCon(params.getTemplatePropsData(), params.getCurrentCompId(), params.getTemplateId()));
     }
 
-    @RequestMapping("modifyMainPipe")
+    @PostMapping("modifyMainPipe")
     public CommonResult<DiagramTemplate> modifyMainPipe(@RequestBody EditRequest params){
-        return CommonResult.success(templateManager.modifyMainPipe(params.getTemplatePropsData(), params.getCurrentCompId(), params.getTemplateId()));
+        return ResultHelper.single(templateManager.modifyMainPipe(params.getTemplatePropsData(), params.getCurrentCompId(), params.getTemplateId()));
     }
 
     /**
      * 编辑设备过滤条件
      */
-    @RequestMapping("modifyFilter")
+    @PostMapping("modifyFilter")
     public CommonResult<DiagramTemplate> modifyFilter(@RequestBody EditRequest params){
-        return CommonResult.success(templateManager.modifyFilter(params.getDataFilter(), params.getCurrentCompId(), params.getTemplateId()));
+        return ResultHelper.single(templateManager.modifyFilter(params.getDataFilter(), params.getCurrentCompId(), params.getTemplateId()));
     }
 
     /**
      * 编辑设备打包配置
      */
-    @RequestMapping("modifyPack")
+    @PostMapping("modifyPack")
     public CommonResult<DiagramTemplate> modifyPack(@RequestBody EditRequest params){
-        return CommonResult.success(templateManager.modifyPack(params.getEquipPack(), params.getCurrentCompId(), params.getTemplateId()));
+        return ResultHelper.single(templateManager.modifyPack(params.getEquipPack(), params.getCurrentCompId(), params.getTemplateId()));
     }
 
     /**
      * 编辑容器的动态组配置
      */
-    @RequestMapping("modifyDynGroup")
+    @PostMapping("modifyDynGroup")
     public CommonResult<DiagramTemplate> modifyDynGroup(@RequestBody EditRequest params){
-        return CommonResult.success(templateManager.modifyDynGroup(params.getDynGroup(), params.getCurrentCompId(), params.getTemplateId()));
+        return ResultHelper.single(templateManager.modifyDynGroup(params.getDynGroup(), params.getCurrentCompId(), params.getTemplateId()));
     }
 
 }

+ 7 - 0
adm-business/adm-diagram/src/main/java/com/persagy/adm/diagram/core/DataStrategy.java

@@ -72,4 +72,11 @@ public interface DataStrategy {
      * @return 实例列表
      */
     List<ObjectNode> loadSystemInstance(String projectId, String groupCode);
+
+    /**
+     * 项目下的专业 -> 系统 ->系统实例 的树状结构数据
+     *
+     * @return 列表
+     */
+    List<ObjectNode> loadMajorSystemInstance();
 }

+ 109 - 14
adm-business/adm-diagram/src/main/java/com/persagy/adm/diagram/core/impl/DataStrategyImpl.java

@@ -8,6 +8,8 @@ import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.node.ArrayNode;
 import com.fasterxml.jackson.databind.node.JsonNodeFactory;
 import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.persagy.adm.diagram.client.DicClient;
+import com.persagy.adm.diagram.client.RwdClient;
 import com.persagy.adm.diagram.constant.Constants;
 import com.persagy.adm.diagram.core.DataStrategy;
 import com.persagy.adm.diagram.core.model.Diagram;
@@ -22,12 +24,14 @@ import com.persagy.adm.diagram.entity.DiagramType;
 import com.persagy.adm.diagram.entity.LegendEntity;
 import com.persagy.adm.diagram.entity.ModelAdapter;
 import com.persagy.adm.diagram.entity.TemplateEntity;
+import com.persagy.adm.diagram.frame.BdtpRequest;
 import com.persagy.adm.diagram.util.ServiceUtil;
 import com.persagy.dmp.basic.model.QueryCriteria;
 import com.persagy.dmp.basic.model.QueryOperator;
 import com.persagy.dmp.basic.utils.JsonNodeUtils;
 import com.persagy.dmp.common.constant.ResponseCode;
 import com.persagy.dmp.common.exception.BusinessException;
+import com.persagy.dmp.common.model.response.CommonResult;
 import com.persagy.dmp.digital.client.DigitalObjectFacade;
 import com.persagy.dmp.digital.client.DigitalRelationFacade;
 import com.persagy.dmp.digital.entity.ObjectDigital;
@@ -58,6 +62,10 @@ import java.util.stream.Collectors;
 public class DataStrategyImpl implements DataStrategy {
 
     @Autowired
+    private DicClient dicClient;
+    @Autowired
+    private RwdClient rwdClient;
+    @Autowired
     private ModelAdapter modelAdapter;
     @Autowired
     private ObjectMapper objectMapper;
@@ -271,22 +279,26 @@ public class DataStrategyImpl implements DataStrategy {
      * @return 系统图列表
      */
     @Override
-    public List<Diagram> getDiagrams(String diagramType, String projectId, String systemId, String groupCode, String name) {
+    public List<Diagram> getDiagrams(String diagramType, String projectId,
+                                     String systemId, String groupCode, String name) {
 
         Set<DiagramEntity> result = new HashSet<>();
         //所有系统实例
         List<ObjectNode> objectNodes = loadSystemInstance(projectId, groupCode);
-        //获取所有id
-        List<String> ids = objectNodes.stream().filter(node -> {
-            String objectName = Optional.ofNullable(node.get(Constants.NAME)).map(JsonNode::asText).orElse(StrUtil.EMPTY);
-            return objectName.contains(name);
-        }).map(jsonNodes -> jsonNodes.get(Constants.ID).asText()).collect(Collectors.toList());
-
-        if (CollectionUtil.isNotEmpty(ids)) {
-            //由系统实例名模糊匹配到的系统图列表
-            List<DiagramEntity> diagramsBySystemIds = diagramMapper.getDiagramsBySystemIds(ids);
-            //合并
-            result.addAll(diagramsBySystemIds);
+        //名称不为空时
+        if (StrUtil.isNotBlank(name)) {
+            //获取所有id
+            List<String> ids = objectNodes.stream().filter(node -> {
+                String objectName = Optional.ofNullable(node.get(Constants.NAME)).map(JsonNode::asText).orElse(StrUtil.EMPTY);
+                return StrUtil.contains(objectName, name);
+            }).map(jsonNodes -> jsonNodes.get(Constants.ID).asText()).filter(Objects::nonNull).collect(Collectors.toList());
+
+            if (CollectionUtil.isNotEmpty(ids)) {
+                //由系统实例名模糊匹配到的系统图列表
+                List<DiagramEntity> diagramsBySystemIds = diagramMapper.getDiagramsBySystemIds(ids);
+                //合并
+                result.addAll(diagramsBySystemIds);
+            }
         }
         //直接去系统图表根据名称模糊查询查出来的数据
         List<DiagramEntity> diagrams = diagramMapper.getDiagrams(diagramType,
@@ -298,7 +310,7 @@ public class DataStrategyImpl implements DataStrategy {
         Map<String, ObjectNode> map = objectNodes.stream().collect(Collectors.toMap(node
                 -> node.get(Constants.ID).asText(), node -> node));
 
-        return result.stream().map(diagramEntity -> {
+        return result.stream().filter(Objects::nonNull).map(diagramEntity -> {
             Diagram diagram = modelAdapter.toDiagram(diagramEntity);
             ObjectNode node = map.get(diagramEntity.getSystemId());
             if (node != null) {
@@ -501,6 +513,89 @@ public class DataStrategyImpl implements DataStrategy {
     @Override
     public List<ObjectNode> loadSystemInstance(String projectId, String groupCode) {
         QueryCriteria criteria = ServiceUtil.getQueryCriteria(objectMapper, Constants.SYSTEM);
-        return DigitalObjectFacade.query(groupCode, projectId, null, null, criteria);
+        List<ObjectNode> result = DigitalObjectFacade.query(groupCode, projectId, null, null, criteria);
+        return result == null ? new ArrayList<>() : result;
+    }
+
+    /**
+     * 项目下的专业 -> 系统 ->系统实例 的树状结构数据
+     *
+     * @return 列表
+     */
+    @Override
+    public List<ObjectNode> loadMajorSystemInstance() {
+        BdtpRequest req = BdtpRequest.getCurrent();
+        String groupCode = req.getGroupCode();
+        String projectId = req.getProjectId();
+        String appId = req.getAppId();
+        String userId = req.getUserId();
+        //查询专业
+        CompletableFuture<List<ObjectNode>> majorFuture = CompletableFuture.supplyAsync(() -> {
+            QueryCriteria criteria = ServiceUtil.getQueryCriteria(objectMapper);
+            criteria.getCriteria().put(Constants.TYPE, Constants.MAJOR);
+            CommonResult<List<ObjectNode>> result = dicClient.dataQuery(groupCode, projectId,
+                    appId, userId, criteria);
+            return result.getData();
+        }, executor);
+        //查询系统
+        CompletableFuture<List<ObjectNode>> systemFuture = CompletableFuture.supplyAsync(() -> {
+            QueryCriteria criteria = ServiceUtil.getQueryCriteria(objectMapper, Constants.SYSTEM);
+            CommonResult<List<ObjectNode>> result = rwdClient.queryObjectType(groupCode, projectId,
+                    appId, userId, criteria);
+            return result.getData();
+        }, executor);
+        //查询系统实例
+        CompletableFuture<List<ObjectNode>> instanceFuture = CompletableFuture.supplyAsync(() -> {
+            QueryCriteria criteria = ServiceUtil.getQueryCriteria(objectMapper, Constants.SYSTEM);
+            return DigitalObjectFacade.query(groupCode, projectId, appId, userId, criteria);
+        }, executor);
+
+        CompletableFuture.allOf(majorFuture, systemFuture, instanceFuture).join();
+
+        List<ObjectNode> result = null;
+        try {
+            result = buildMajorSystemInstance(majorFuture.get(), systemFuture.get(), instanceFuture.get());
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return result;
+    }
+
+    /**
+     * 组装树状结构
+     *
+     * @param majorNodes    专业节点列表
+     * @param systemNodes   系统节点列表
+     * @param instanceNodes 系统实例节点列表
+     * @return
+     */
+    private List<ObjectNode> buildMajorSystemInstance(List<ObjectNode> majorNodes, List<ObjectNode> systemNodes,
+                                                      List<ObjectNode> instanceNodes) {
+        //TODO 是否会存在有些系统没有对应的专业、有些实例没有对应的系统
+        //组装系统和系统实例的树状结构
+        Optional.ofNullable(systemNodes).ifPresent(nodes -> nodes.stream().filter(Objects::nonNull).forEach(node -> {
+            String systemCode = node.get(Constants.CODE).asText();
+            Optional.ofNullable(instanceNodes).ifPresent(items -> {
+                List<ObjectNode> childrenList = items.stream().filter(Objects::nonNull).filter(item -> {
+                    JsonNode jsonNode = item.get(ObjectDigital.CLASS_CODE_HUM);
+                    return jsonNode != null && StrUtil.equalsIgnoreCase(jsonNode.asText(), systemCode);
+                }).collect(Collectors.toList());
+                ArrayNode children = node.putArray(Constants.CHILDREN);
+                children.addAll(childrenList);
+            });
+        }));
+        //组装专业和系统的树状结构
+        Optional.ofNullable(majorNodes).ifPresent(nodes -> nodes.stream().filter(Objects::nonNull).forEach(node -> {
+            String majorCode = node.get(Constants.CODE).asText();
+            Optional.ofNullable(systemNodes).ifPresent(items -> {
+                List<ObjectNode> childrenList = items.stream().filter(Objects::nonNull).filter(item -> {
+                    JsonNode jsonNode = item.get(Constants.MAJOR_CODE);
+                    return jsonNode != null && StrUtil.equalsIgnoreCase(jsonNode.asText(), majorCode);
+                }).collect(Collectors.toList());
+                ArrayNode children = node.putArray(Constants.CHILDREN);
+                children.addAll(childrenList);
+            });
+        }));
+        return majorNodes;
     }
 }

+ 8 - 3
adm-business/adm-diagram/src/main/java/com/persagy/adm/diagram/demo/DemoDataStrategy.java

@@ -349,7 +349,7 @@ public class DemoDataStrategy implements DataStrategy {
 
 	@Override
 	public List<ObjectNode> loadObjectsByType(List<String> equipmentTypes, String projectId, String systemId, String groupCode) {
-		BdtpRequest req = new BdtpRequest();
+		BdtpRequest req = BdtpRequest.getCurrent();
 		req.setProjectId(projectId);
 		req.setGroupCode(groupCode);
 		return dataService.queryObjectsByType(req, equipmentTypes, systemId);
@@ -357,7 +357,7 @@ public class DemoDataStrategy implements DataStrategy {
 
 	@Override
 	public List<ObjectNode> loadRelationsByType(List<String[]> relationTypes, List<String> objectIds, String projectId, String groupCode) {
-		BdtpRequest req = new BdtpRequest();
+		BdtpRequest req = BdtpRequest.getCurrent();
 		req.setProjectId(projectId);
 		req.setGroupCode(groupCode);
 		return dataService.queryRelsByTypeAndObj(req, relationTypes, objectIds);
@@ -365,7 +365,7 @@ public class DemoDataStrategy implements DataStrategy {
 
 	@Override
 	public List<ObjectNode> loadObjectsById(List<String> objectIds, String projectId, String groupCode) {
-		BdtpRequest req = new BdtpRequest();
+		BdtpRequest req = BdtpRequest.getCurrent();
 		req.setProjectId(projectId);
 		req.setGroupCode(groupCode);
 		return dataService.queryObjectsById(req, objectIds);
@@ -381,4 +381,9 @@ public class DemoDataStrategy implements DataStrategy {
 	public List<ObjectNode> loadSystemInstance(String projectId, String groupCode) {
 		return null;
 	}
+
+	@Override
+	public List<ObjectNode> loadMajorSystemInstance() {
+		return null;
+	}
 }

+ 28 - 0
adm-business/adm-diagram/src/main/java/com/persagy/adm/diagram/frame/BdtpInterceptor.java

@@ -0,0 +1,28 @@
+package com.persagy.adm.diagram.frame;
+
+import org.springframework.stereotype.Component;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * 处理bdtp请求参数,创建/销毁请求对象封装
+ */
+@Component
+public class BdtpInterceptor extends HandlerInterceptorAdapter {
+
+	@Override
+	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
+		BdtpRequest req = BdtpRequest.get(request.getParameter("groupCode"), request.getParameter("projectId"), request.getParameter("userId"));
+		BdtpRequest.setCurrent(req);
+		return true;
+	}
+
+	@Override
+	public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
+		BdtpRequest.removeCurrent();
+	}
+
+}

+ 21 - 0
adm-business/adm-diagram/src/main/java/com/persagy/adm/diagram/frame/BdtpRequest.java

@@ -16,6 +16,10 @@ public class BdtpRequest {
 
 	private String projectId = "0";
 
+	private BdtpRequest(){
+
+	}
+
 	public static BdtpRequest get(String groupCode, String projectId, String userId){
 		BdtpRequest req = new BdtpRequest();
 		req.setGroupCode(groupCode);
@@ -24,4 +28,21 @@ public class BdtpRequest {
 		return req;
 	}
 
+	/**
+	 * 线程变量,方便过程中使用请求对象
+	 */
+	private static ThreadLocal<BdtpRequest> threadLocal = new ThreadLocal<>();
+
+	public static void setCurrent(BdtpRequest bdtpRequest){
+		threadLocal.set(bdtpRequest);
+	}
+
+	public static BdtpRequest getCurrent(){
+		return threadLocal.get();
+	}
+
+	public static void removeCurrent(){
+		threadLocal.remove();
+	}
+
 }

+ 1 - 1
adm-business/adm-diagram/src/main/java/com/persagy/adm/diagram/frame/ExceptionAspect.java

@@ -16,7 +16,7 @@ import org.springframework.stereotype.Component;
 @Slf4j
 public class ExceptionAspect {
 
-    @Pointcut("execution(public * com.persagy.diagram.controller.*Controller.*(..))")
+    @Pointcut("execution(public * com.persagy.adm.diagram.controller.*Controller.*(..))")
     public void handle(){
 
     }

+ 1 - 1
adm-business/adm-diagram/src/main/java/com/persagy/adm/diagram/manage/DemoDiagramManager.java

@@ -52,7 +52,7 @@ public class DemoDiagramManager {
 			buildDiagram(diagram, true);
 		}
 
-		BdtpRequest req = new BdtpRequest();
+		BdtpRequest req = BdtpRequest.getCurrent();
 //		List<ObjectNode> maj = bdtpDataService.getMajorList(req);
 //		List<ObjectNode> sys = bdtpDataService.getSystemList(req);
 		//TODO debug

+ 1 - 1
adm-business/adm-diagram/src/main/java/com/persagy/adm/diagram/manage/TemplateManager.java

@@ -57,7 +57,7 @@ public class TemplateManager {
 			buildTemplate(template);
 		}
 
-		BdtpRequest req = new BdtpRequest();
+		BdtpRequest req = BdtpRequest.getCurrent();
 //		List<ObjectNode> maj = bdtpDataService.getMajorList(req);
 //		List<ObjectNode> sys = bdtpDataService.getSystemList(req);
 		//TODO debug