|
@@ -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;
|
|
|
+ }
|
|
|
+
|
|
|
}
|