dcs преди 7 месеца
родител
ревизия
f2c6a98582

+ 12 - 0
virgo.api/src/main/java/com/bosshand/virgo/api/controller/ProjectController.java

@@ -100,4 +100,16 @@ public class ProjectController {
         return Response.ok();
     }
 
+    @ApiOperation(value = "获取项目中所有集成过的BIM", notes = "获取项目中所有集成过的BIM")
+    @RequestMapping(value = "/getBimByList", method = RequestMethod.GET)
+    public Response getBimByList() {
+        return Response.ok(projectService.getBimByList());
+    }
+
+    @ApiOperation(value = "获取项目下模型列表", notes = "获取项目下模型列表")
+    @RequestMapping(value = "/bimList/{id}", method = RequestMethod.GET)
+    public Response bimList(@PathVariable long id) {
+        return Response.ok(projectService.bimList(id));
+    }
+
 }

+ 4 - 0
virgo.api/src/main/java/com/bosshand/virgo/api/dao/ProjectItemTargetDao.java

@@ -3,11 +3,15 @@ package com.bosshand.virgo.api.dao;
 import com.bosshand.virgo.api.model.ProjectItemTarget;
 import org.apache.ibatis.annotations.Mapper;
 
+import java.util.List;
+
 @Mapper
 public interface ProjectItemTargetDao {
 	
 	ProjectItemTarget get(long id);
 
+	List<ProjectItemTarget> getProjectItemIds(List<Long> itemIds);
+
 	int insert(ProjectItemTarget projectItemTarget);
 
 	int update(ProjectItemTarget projectItemTarget);

+ 75 - 0
virgo.api/src/main/java/com/bosshand/virgo/api/service/ProjectService.java

@@ -1,10 +1,15 @@
 package com.bosshand.virgo.api.service;
 
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.bosshand.virgo.api.dao.BimModelTargetDao;
 import com.bosshand.virgo.api.dao.ProjectDao;
 import com.bosshand.virgo.api.dao.ProjectItemDao;
+import com.bosshand.virgo.api.dao.ProjectItemTargetDao;
+import com.bosshand.virgo.api.model.BimModelTarget;
 import com.bosshand.virgo.api.model.Project;
 import com.bosshand.virgo.api.model.ProjectItem;
+import com.bosshand.virgo.api.model.ProjectItemTarget;
 import com.bosshand.virgo.api.util.PositionUtil;
 import com.bosshand.virgo.core.model.UserContext;
 import com.bosshand.virgo.core.utils.ContextUtils;
@@ -23,6 +28,15 @@ public class ProjectService {
 	@Autowired
 	private ProjectItemDao projectItemDao;
 
+	@Autowired
+	private ProjectItemTargetDao projectItemTargetDao;
+
+	@Autowired
+	private BimModelTargetDao bimModelTargetDao;
+
+	@Autowired
+	private BimClient bimClient;
+
 	public Project get(long id) {
 		Project project = projectDao.get(id);
 		List<Long> itemIds = new ArrayList<>();
@@ -136,4 +150,65 @@ public class ProjectService {
 		return list;
 	}
 
+	public List<Project> getBimByList() {
+		List<Project> projectList = new ArrayList<>();
+		for (Project p : projectDao.getAll()) {
+			List<ProjectItem> items = new ArrayList<>();
+			List<ProjectItem> projectItemList = p.getProjectItemList();
+			for (int i = 0; i < projectItemList.size(); i++) {
+				if (projectItemList.get(i).getBimIntegrateId() != null && projectItemList.get(i).getBimIntegrateId() != "") {
+					items.add(projectItemList.get(i));
+				}
+			}
+			p.setProjectItemList(items);
+			if (items.size() > 0) {
+				projectList.add(p);
+			}
+		}
+		return projectList;
+	}
+
+	public JSONArray bimList(long id) {
+		Project p = projectDao.get(id);
+		List<ProjectItem> projectItemList = p.getProjectItemList();
+		Map<Long, ProjectItem> itemMap = new HashMap<>();
+		List<Long> itemIds = new ArrayList<>();
+		for (ProjectItem projectItem : projectItemList) {
+			itemIds.add(projectItem.getId());
+			itemMap.put(projectItem.getId(), projectItem);
+		}
+
+		List<ProjectItemTarget> projectItemTargetList = projectItemTargetDao.getProjectItemIds(itemIds);
+		Map<Long, ProjectItemTarget> itemTargetMap = new HashMap<>();
+		List<Long> targetIds = new ArrayList<>();
+		for (ProjectItemTarget projectItemTarget : projectItemTargetList) {
+			targetIds.add(projectItemTarget.getId());
+			itemTargetMap.put(projectItemTarget.getId(), projectItemTarget);
+		}
+
+		Map<String, Long> bimModelMap = new HashMap<>();
+		List<String> bimIds = new ArrayList<>();
+		List<BimModelTarget> bimList = bimModelTargetDao.getProjectItemTargetIds(targetIds);
+		for (BimModelTarget bim : bimList) {
+			String[] split = bim.getBims().split(",");
+			for (int i = 0; i < split.length; i++) {
+				bimIds.add(split[i]);
+				bimModelMap.put(split[i], bim.getProjectItemTargetId());
+			}
+		}
+		String join = String.join(",", bimIds);
+		JSONArray jsonArray = JSONObject.parseArray(bimClient.getBimIds(join));
+		for (int i = 0; i < jsonArray.size(); i++) {
+			JSONObject jo = jsonArray.getJSONObject(i);
+			long targetId = bimModelMap.get(jo.getString("id"));
+			ProjectItemTarget projectItemTarget = itemTargetMap.get(targetId);
+			ProjectItem projectItem = itemMap.get(projectItemTarget.getProjectItemId());
+			jo.put("projectItemId", projectItem.getId());
+			jo.put("projectItemName", projectItem.getName());
+			jo.put("projectItemTargetId", projectItemTarget.getId());
+			jo.put("projectItemTargetName", projectItemTarget.getName());
+		}
+		return jsonArray;
+	}
+
 }

+ 16 - 0
virgo.api/src/main/resources/mapper/ProjectItemTargetMapper.xml

@@ -18,6 +18,22 @@
         SELECT * FROM project_item_target WHERE id = #{id}
     </select>
 
+    <select id="getProjectItemIds" resultMap="projectItemTargetResult">
+        SELECT id, name, projectItemId FROM project_item_target
+        <choose>
+            <when test="list.size > 0">
+                where projectItemId in (
+                <foreach collection="list" item="item" index="index" separator=",">
+                    #{item}
+                </foreach>
+                )
+            </when>
+            <otherwise>
+                where 1=0
+            </otherwise>
+        </choose>
+    </select>
+
     <insert id="insert" useGeneratedKeys="true" keyProperty="id">
         INSERT INTO project_item_target(name, projectId, projectItemId, sequence, propertyCertificateNumber, roomNumber)
         VALUES (#{name}, #{projectId}, #{projectItemId}, #{sequence}, #{propertyCertificateNumber}, #{roomNumber})