From 99fa37569bc1c92d5cb056ad43616798da26a8fe Mon Sep 17 00:00:00 2001 From: "lj7788@126.com" Date: Thu, 3 Jul 2025 16:06:17 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=A8=A1=E5=9E=8B=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/bim/BimModelController.java | 71 ++++++++++++++++++- 1 file changed, 69 insertions(+), 2 deletions(-) diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/controller/bim/BimModelController.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/controller/bim/BimModelController.java index 583c3d9d..beadce81 100644 --- a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/controller/bim/BimModelController.java +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/controller/bim/BimModelController.java @@ -23,6 +23,7 @@ import java.util.Collection; import java.util.List; import java.util.Set; import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; @RestController @RequestMapping("/bim/modelInfo") @@ -115,7 +116,7 @@ public class BimModelController { for (int i = 0; i < glids.size(); i++) { stringBuilder.append("?,"); } - String key="BimModelController.getModelFeatureInfos."+name+"."+stringBuilder.toString(); + String key="BimModelController.getModelFeatureInfos.V2"+name+"."+String.join(",",glids.stream().map(d->""+d).collect(Collectors.toList())); if(redisService.hasKey(key)){ Object list=redisService.getCacheObject(key); return AjaxResult.success(list); @@ -246,6 +247,72 @@ public class BimModelController { } } + /** + * 叶子节点的model_tree查询 + * @param name + * @param pid + * @return + */ + @PostMapping("/modelTreeAllLeafChildByGlids/{name}") + public AjaxResult getModelTreeAllLeafChildByGlids(@PathVariable("name") String name,@RequestBody List glids) { + if(StringUtils.isEmpty(name)){ + return AjaxResult.error("name is null"); + } + StringBuilder stringBuilder = new StringBuilder(); + + for (int i = 0; i < glids.size(); i++) { + stringBuilder.append("?,"); + } + + String key="BimModelController.getModelTreeAllLeafChildByGlids.V2"+name+"."+String.join(",",glids); + if(redisService.hasKey(key)){ + Object list=redisService.getCacheObject(key); + return AjaxResult.success(list); + } + String placeHolders = stringBuilder.deleteCharAt(stringBuilder.length() - 1) + .toString(); + String sql=""; + if(StringUtils.isEmpty(glids)){ + sql="select * from model_tree "; + }else{ + sql="with recursive\n" + + " cao as (\n" + + " select * from model_tree where glid in ( "+placeHolders+" ) \n" + + " union all\n" + + " select model_tree.* from cao join model_tree on cao.glid = model_tree.pGlid\n" + + " )\n" + + "select * from cao where externalid<>0"; + } + String path=bimDataSource.getDbPath(name); + if(!new File(path).exists()){ + return AjaxResult.error("file not found!"); + } + try { + DataSource ds = bimDataSource.getDataSource(name); + PreparedStatement pss= ds.getConnection().prepareStatement(sql); + for (int i = 1; i <= glids.size(); i++) { + pss.setString(i, glids.get(i - 1)); + } + ResultSet rs = pss.executeQuery(); + List list = new ArrayList<>(); + while (rs.next()) { + ModelTreeVo modelTreeVo = new ModelTreeVo(); + //modelTreeVo.setId(rs.getLong("id")); + modelTreeVo.setGlid(rs.getString("glid")); + modelTreeVo.setName(rs.getString("name")); + //modelTreeVo.setLevel(rs.getInt("level")); + modelTreeVo.setGroupname(rs.getString("groupname")); + modelTreeVo.setExternalId(rs.getString("externalId")); + //modelTreeVo.setPGlid(rs.getString("pGlid")); + list.add(modelTreeVo); + } + redisService.setCacheObject(key,list,60*60*24L, TimeUnit.SECONDS); + return AjaxResult.success(list); + } catch (Exception e) { + return AjaxResult.error(e.getMessage()); + } + } + /** * 不带子节点的Model_Tree查询 * @param name @@ -463,7 +530,7 @@ public class BimModelController { for (int i = 0; i < glids.size(); i++) { stringBuilder.append("?,"); } - String key="BimModelController.getModelProperty."+name+"."+stringBuilder.toString(); + String key="BimModelController.getModelProperty.V2"+name+"."+String.join(",",glids.stream().map(d->""+d).collect(Collectors.toList())); if(redisService.hasKey(key)){ Object list=redisService.getCacheObject(key); return AjaxResult.success(list);