chendayu vor 2 Jahren
Ursprung
Commit
b786663fc1

+ 1 - 1
PAS/src/main/java/cn/cslg/pas/common/config/WebSocketConfig.java

@@ -6,7 +6,7 @@ import org.springframework.web.socket.server.standard.ServerEndpointExporter;
 
 @Configuration
 public class WebSocketConfig {
-    @Bean
+    //@Bean
     public ServerEndpointExporter serverEndpointExporter() {
         return new ServerEndpointExporter();
     }

+ 1 - 1
PAS/src/main/java/cn/cslg/pas/common/model/dto/StructureAddNewDTO.java

@@ -20,7 +20,7 @@ public class StructureAddNewDTO implements Serializable {
      */
     private String structureName;
     /**
-     * 路径
+     * 父级路径
      */
     private String parentPath;
     /**

+ 38 - 0
PAS/src/main/java/cn/cslg/pas/common/model/dto/StructurePictureUpdateDTO.java

@@ -0,0 +1,38 @@
+package cn.cslg.pas.common.model.dto;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * 架构的修改图片DTO类
+ *
+ * @Author chenyu
+ * @Date 2023/3/13
+ */
+@Accessors(chain = true)
+@Data
+public class StructurePictureUpdateDTO implements Serializable {
+    /**
+     * ID
+     */
+    private Integer id;
+    /**
+     * 架构id
+     */
+    private Integer structureId;
+    /**
+     * 图片名称
+     */
+    private String name;
+    /**
+     * 后缀类型
+     */
+    private String suffix;
+    /**
+     * 路径
+     */
+    private String url;
+
+}

+ 0 - 4
PAS/src/main/java/cn/cslg/pas/common/model/dto/StructureQueryPageDTO.java

@@ -20,9 +20,5 @@ public class StructureQueryPageDTO {
      * 架构id
      */
     private Integer structureId;
-    /**
-     * 架构名称
-     */
-    private String structureName;
 
 }

+ 8 - 6
PAS/src/main/java/cn/cslg/pas/common/model/dto/StructureUpdateDTO.java

@@ -1,15 +1,13 @@
 package cn.cslg.pas.common.model.dto;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 import lombok.experimental.Accessors;
 
 import java.io.Serializable;
+import java.util.List;
 
 /**
- * 元素表实体
+ * 架构的修改架构DTO
  */
 @Accessors(chain = true)
 @Data
@@ -27,9 +25,9 @@ public class StructureUpdateDTO implements Serializable {
      */
     private String structureName;
     /**
-     * 路径
+     * 父级路径
      */
-    private String path;
+    private String parentPath;
     /**
      * 说明
      */
@@ -38,5 +36,9 @@ public class StructureUpdateDTO implements Serializable {
      * 产品id
      */
     private Integer productId;
+    /**
+     * 图片
+     */
+    private List<StructurePictureUpdateDTO> pictures;
 
 }

+ 26 - 0
PAS/src/main/java/cn/cslg/pas/common/model/vo/PathStructureNameVO.java

@@ -0,0 +1,26 @@
+package cn.cslg.pas.common.model.vo;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * 架构路径和路径架构名称
+ *
+ * @Author chenyu
+ * @Date 2023/3/13
+ */
+@Accessors(chain = true)
+@Data
+public class PathStructureNameVO implements Serializable {
+    /**
+     * 路径
+     */
+    private String path;
+    /**
+     * 路径分别对应的架构名称
+     */
+    private String pathStructureName;
+
+}

+ 1 - 1
PAS/src/main/java/cn/cslg/pas/common/model/vo/StructureVO.java

@@ -7,7 +7,7 @@ import java.io.Serializable;
 import java.util.List;
 
 /**
- * 元素表实体
+ * 架构表标准查询VO
  */
 @Accessors(chain = true)
 @Data

+ 19 - 2
PAS/src/main/java/cn/cslg/pas/controller/StructureController.java

@@ -3,6 +3,7 @@ package cn.cslg.pas.controller;
 import cn.cslg.pas.common.core.base.Constants;
 import cn.cslg.pas.common.model.dto.StructureAddNewDTO;
 import cn.cslg.pas.common.model.dto.StructureQueryPageDTO;
+import cn.cslg.pas.common.model.dto.StructureUpdateDTO;
 import cn.cslg.pas.common.model.vo.StructureVO;
 import cn.cslg.pas.common.utils.Response;
 import cn.cslg.pas.exception.XiaoShiException;
@@ -50,12 +51,28 @@ public class StructureController {
         return Response.error("请求参数为null");
     }
 
-    @Operation(summary = "分页查询架构树")
+    @Operation(summary = "查询架构树")
     @PostMapping("/query")
     public String query(@RequestBody StructureQueryPageDTO structureQueryPageDTO) {
-        log.info("开始处理【分页查询架构】的请求,请求参数为:{}", structureQueryPageDTO);
+        log.info("开始处理【查询架构】的请求,请求参数为:{}", structureQueryPageDTO);
         StructureVO queryResult = structureService.query(structureQueryPageDTO);
         return Response.success(queryResult);
     }
 
+    @Operation(summary = "修改架构")
+    @PostMapping("/update")
+    public String update(String jsons, List<MultipartFile> files) {
+        if (jsons != null) {
+            StructureUpdateDTO structureUpdateDTO = JSONObject.parseObject(jsons, StructureUpdateDTO.class);
+            log.info("开始处理【修改架构】的请求,请求参数为:{}, {}", structureUpdateDTO, files);
+            try {
+                structureService.update(structureUpdateDTO, files);
+            } catch (XiaoShiException e) {
+                return Response.error(e.getMessage());
+            }
+            return Response.success("修改架构完成");
+        }
+        return Response.error("请求参数为null");
+    }
+
 }

+ 23 - 0
PAS/src/main/java/cn/cslg/pas/mapper/AssoStructurePatentMapper.java

@@ -0,0 +1,23 @@
+package cn.cslg.pas.mapper;
+
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ * 架构和专利关联表的Mapper层接口
+ *
+ * @Author chenyu
+ * @Date 2023/3/13
+ */
+@Repository
+public interface AssoStructurePatentMapper {
+    /**
+     * 根据架构id批量删除数据
+     *
+     * @param structureIds 架构ids
+     * @return 返回受影响的行数
+     */
+    int deleteByStructureIds(List<Integer> structureIds);
+
+}

+ 17 - 0
PAS/src/main/java/cn/cslg/pas/mapper/AssoStructurePictureMapper.java

@@ -1,5 +1,6 @@
 package cn.cslg.pas.mapper;
 
+import cn.cslg.pas.common.model.vo.StructurePictureVO;
 import cn.cslg.pas.domain.asso.AssoStructurePicture;
 import org.springframework.stereotype.Repository;
 
@@ -21,4 +22,20 @@ public interface AssoStructurePictureMapper {
      */
     int insertBatch(List<AssoStructurePicture> assoStructurePictures);
 
+    /**
+     * 根据id批量删除数据
+     *
+     * @param ids ids
+     * @return 返回受影响的行数
+     */
+    int deleteByIds(List<Integer> ids);
+
+    /**
+     * 根据架构id查询数据
+     *
+     * @param structureId 架构id
+     * @return 返回查询到的数据
+     */
+    List<StructurePictureVO> selectByStructureId(Integer structureId);
+
 }

+ 13 - 8
PAS/src/main/java/cn/cslg/pas/mapper/StructureMapper.java

@@ -39,13 +39,14 @@ public interface StructureMapper {
     int update(Structure structure);
 
     /**
-     * 根据父级id和名称统计数量
+     * 根据父级id和名称和架构id统计数量
      *
      * @param parentId      父级id
      * @param structureName 架构名称
+     * @param structureId   架构id
      * @return 返回统计到的数量
      */
-    int countByparentIdAndStructureName(Integer parentId, String structureName);
+    int countByparentIdAndStructureName(Integer parentId, String structureName, Integer structureId);
 
     /**
      * 根据id查询数据
@@ -56,18 +57,22 @@ public interface StructureMapper {
     Structure getStandardById(Integer id);
 
     /**
-     * 根据父级id查询数据
+     * 根据父级id和产品id查询数据
      *
-     * @param parentId 父级id
+     * @param parentId  父级id
+     * @param productId 产品id
      * @return 返回查询到的数据
      */
-    List<StructureVO> selectByParentId(Integer parentId);
+    List<StructureVO> selectByParentIdAndProductId(Integer parentId, Integer productId);
 
     /**
-     * 根据产品id查询数据
-     * @param productId 产品id
+     * 根据模糊路径查询数据
+     *
+     * @param findInSetPath 模糊路径
      * @return 返回查询到的数据
      */
-    List<StructureVO> selectByProductId(Integer productId);
+    List<StructureVO> selectByFindInSetPath(String findInSetPath);
+
+    //List<StructureVO>
 
 }

+ 16 - 0
PAS/src/main/java/cn/cslg/pas/service/IStructureService.java

@@ -3,6 +3,7 @@ package cn.cslg.pas.service;
 import cn.cslg.pas.common.model.dto.StructureAddNewDTO;
 import cn.cslg.pas.common.model.dto.StructureQueryPageDTO;
 import cn.cslg.pas.common.model.dto.StructureUpdateDTO;
+import cn.cslg.pas.common.model.vo.PathStructureNameVO;
 import cn.cslg.pas.common.model.vo.StructureVO;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
@@ -44,4 +45,19 @@ public interface IStructureService {
      */
     StructureVO query(StructureQueryPageDTO structureQueryPageDTO);
 
+    /**
+     * 查询架构路径和路径架构名称
+     *
+     * @return 返回查询到的数据
+     */
+    List<PathStructureNameVO> queryPathStructureName();
+
+    /**
+     * 删除架构
+     *
+     * @param structureId 架构id
+     */
+    @Transactional
+    void delete(Integer structureId);
+
 }

+ 1 - 1
PAS/src/main/java/cn/cslg/pas/service/impl/ProductServiceImpl.java

@@ -144,7 +144,7 @@ public class ProductServiceImpl implements IProductService {
             throw new XiaoShiException(message);
         }
 
-        //先通过产品id查询出所有原来的图片文件id
+        //先根据产品id查询出原来的产品图片文件id
         List<ProductPictureVO> productPictureVOs = assoProductPictureMapper.selectByProductId(productId);
         ArrayList<Integer> oldPictureIds = new ArrayList<>();
         for (ProductPictureVO productPictureVO : productPictureVOs) {

+ 179 - 23
PAS/src/main/java/cn/cslg/pas/service/impl/StructureServiceImpl.java

@@ -1,9 +1,8 @@
 package cn.cslg.pas.service.impl;
 
-import cn.cslg.pas.common.model.dto.StructureAddNewDTO;
-import cn.cslg.pas.common.model.dto.StructureQueryPageDTO;
-import cn.cslg.pas.common.model.dto.StructureUpdateDTO;
-import cn.cslg.pas.common.model.dto.UploadFileDTO;
+import cn.cslg.pas.common.model.dto.*;
+import cn.cslg.pas.common.model.vo.PathStructureNameVO;
+import cn.cslg.pas.common.model.vo.StructurePictureVO;
 import cn.cslg.pas.common.model.vo.StructureVO;
 import cn.cslg.pas.common.utils.FileUtils;
 import cn.cslg.pas.domain.Structure;
@@ -52,11 +51,11 @@ public class StructureServiceImpl implements IStructureService {
 
         Integer parentId = structureAddNewDTO.getParentId();
         String structureName = structureAddNewDTO.getStructureName();
-        //检查名称是否被占用(检查当前父级下是否有同名架构)
+        //检查名称是否被占用(检查当前架构父级下是否有同名架构)
         log.info("检查名称是否被占用(检查当前父级下是否有同名架构)");
-        int count = structureMapper.countByparentIdAndStructureName(parentId, structureName);
+        int count = structureMapper.countByparentIdAndStructureName(parentId, structureName, null);
         if (count > 0) {
-            String message = "新增架构失败,当前父级下已存在【" + structureName + "】";
+            String message = "新增架构失败,当前父级下已存在【" + structureName + "】,请尝试更换名称";
             log.info("{}", message);
             throw new XiaoShiException(message);
         }
@@ -123,6 +122,126 @@ public class StructureServiceImpl implements IStructureService {
      */
     @Override
     public void update(StructureUpdateDTO structureUpdateDTO, List<MultipartFile> files) {
+        log.info("开始处理【修改架构】的业务,参数为:{}, {}", structureUpdateDTO, files);
+
+        //检查尝试修改的数据是否存在
+        Integer structureId = structureUpdateDTO.getId();
+        log.info("检查尝试修改的数据是否存在");
+        Structure queryResult = structureMapper.getStandardById(structureId);
+        if (queryResult == null) {
+            String message = "修改架构失败,尝试访问的数据已不存在";
+            log.info("{}", message);
+            throw new XiaoShiException(message);
+        }
+
+        Integer newParentId = structureUpdateDTO.getParentId();
+        String newStructureName = structureUpdateDTO.getStructureName();
+        //检查名称是否被占用(检查当前尝试修改的架构父级下是否有同名架构)
+        log.info("检查名称是否被占用(检查当前尝试修改的架构父级下是否有同名架构)");
+        int count = structureMapper.countByparentIdAndStructureName(newParentId, newStructureName, structureId);
+        if (count > 0) {
+            String message = "修改架构失败,当前尝试修改的架构父级下已存在【" + newStructureName + "】,请尝试更换名称";
+            log.info("{}", message);
+            throw new XiaoShiException(message);
+        }
+
+        //DTO对象赋值给实体类
+        Structure structure = new Structure();
+        BeanUtils.copyProperties(structureUpdateDTO, structure);
+        String parentPath = structureUpdateDTO.getParentPath();
+        if (parentPath == null) {
+            parentPath = "0";
+        }
+        String oldPath = queryResult.getPath();
+        String newPath = parentPath + "," + structureId;
+        if (!newPath.equals(oldPath)) {
+            structure.setPath(newPath);
+        }
+
+        //架构表修改数据
+        log.info("架构表修改数据");
+        int rows = structureMapper.update(structure);
+        if (rows != 1) {
+            String message = "修改架构失败,服务器忙请稍后再次尝试!";
+            log.info("{}", message);
+            throw new XiaoShiException(message);
+        }
+
+        //如果当前修改的架构更换了父级,则要将当前架构下所有子级架构的路径也都更新
+        Integer oldParentId = queryResult.getParentId();
+        if (!oldParentId.equals(newParentId)) {
+            //根据当前架构原来的路径查询所有子级架构
+            List<StructureVO> structures = structureMapper.selectByFindInSetPath(oldPath);
+            for (StructureVO n : structures) {
+                String path = n.getPath();
+                //从当前架构(即它们的父级架构)的原来的路径的长度的位置处截取后面路径
+                String behindString = path.substring(oldPath.length());
+                path = newPath + behindString;
+                n.setPath(path);
+                Structure structure2 = new Structure();
+                BeanUtils.copyProperties(n, structure2);
+                log.info("修改当前已更换父级的架构的子级架构路径path");
+                rows = structureMapper.update(structure2);
+                if (rows != 1) {
+                    String message = "修改架构失败,修改当前已更换父级的架构的子级架构路径path失败,服务器忙请稍后再次尝试!";
+                    log.info("{}", message);
+                    throw new XiaoShiException(message);
+                }
+            }
+        }
+
+        //架构图片关联表删除数据(若有原有图片被删除)
+        //根据架构id查询出所有原有图片
+        log.info("根据架构id查询出所有原有图片");
+        List<StructurePictureVO> structurePictures = assoStructurePictureMapper.selectByStructureId(structureId);
+        ArrayList<Integer> oldPictureIds = new ArrayList<>();
+        for (StructurePictureVO structurePicture : structurePictures) {
+            Integer oldPictureId = structurePicture.getId();
+            oldPictureIds.add(oldPictureId);
+        }
+        //从DTO中获取传过来的原有图片
+        List<StructurePictureUpdateDTO> pictures = structureUpdateDTO.getPictures();
+        ArrayList<Integer> newOldPictureIds = new ArrayList<>();
+        for (StructurePictureUpdateDTO picture : pictures) {
+            Integer newOldPictureId = picture.getId();
+            newOldPictureIds.add(newOldPictureId);
+        }
+        //图片id集合去重,保留下来的即被删除的图片id
+        oldPictureIds.removeAll(newOldPictureIds);
+
+        if (oldPictureIds.size() > 0) {
+            log.info("架构图片关联表删除数据");
+            rows = assoStructurePictureMapper.deleteByIds(oldPictureIds);
+            if (rows != oldPictureIds.size()) {
+                String message = "修改架构失败,架构图片关联表删除数据失败,服务器忙请稍后再次尝试!";
+                log.info("{}", message);
+                throw new XiaoShiException(message);
+            }
+        }
+
+        //数据入架构图片关联表(若有新增新图片)
+        if (files != null && files.size() != 0) {
+            ArrayList<AssoStructurePicture> assoStructurePictures = new ArrayList<>();
+            for (MultipartFile file : files) {
+                UploadFileDTO fileDTO = fileUtils.uploadFile(file);
+                AssoStructurePicture assoStructurePicture = new AssoStructurePicture()
+                        .setStructureId(structureId)
+                        .setName(fileDTO.getName())
+                        .setSuffix(fileDTO.getExtName())
+                        .setUrl(fileDTO.getPath());
+                assoStructurePictures.add(assoStructurePicture);
+            }
+            log.info("数据入架构图片关联表");
+            rows = assoStructurePictureMapper.insertBatch(assoStructurePictures);
+            if (rows != files.size()) {
+                String message = "修改架构失败,数据入架构图片关联表失败,服务器忙请稍后再次尝试!";
+                log.info("{}", message);
+                throw new XiaoShiException(message);
+            }
+        }
+
+        log.info("修改架构完成");
+
     }
 
     /**
@@ -133,33 +252,70 @@ public class StructureServiceImpl implements IStructureService {
      */
     @Override
     public StructureVO query(StructureQueryPageDTO structureQueryPageDTO) {
-        log.info("开始处理【分页查询架构】的业务,参数为:{}", structureQueryPageDTO);
-
-        //取出DTO中structureId,若structureId为null则表示查询的是整个架构树,手动给structureId设为0
-        if (structureQueryPageDTO.getStructureId() == null) {
-            structureQueryPageDTO.setStructureId(0);
-        }
+        log.info("开始处理【查询架构树】的业务,参数为:{}", structureQueryPageDTO);
 
         //从DTO中取出产品id、架构id、架构名称
         Integer productId = structureQueryPageDTO.getProductId();
         Integer structureId = structureQueryPageDTO.getStructureId();
-        String structureName = structureQueryPageDTO.getStructureName();
-        StructureVO structureVO = new StructureVO()
-                .setProductId(productId)
-                .setId(structureId)
-                .setStructureName(structureName);
-        diGui(structureVO, structureId);
+
+        StructureVO structureVO = new StructureVO();
+        diGui(structureVO, structureId, productId);
         return structureVO;
     }
 
-    //递归组装架构集合树
-    private void diGui(StructureVO structureVO, Integer structureId) {
-        List<StructureVO> structureVOs = structureMapper.selectByParentId(structureId);
+    /**
+     * 查询架构路径和路径架构名称
+     *
+     * @return 返回查询到的数据
+     */
+    @Override
+    public List<PathStructureNameVO> queryPathStructureName() {
+        log.info("开始处理【查询所有架构路径和路径架构名称】的业务");
+
+
+        return null;
+    }
+
+    /**
+     * 删除架构
+     *
+     * @param structureId 架构id
+     */
+    @Override
+    public void delete(Integer structureId) {
+        log.info("开始处理【删除架构】的业务,参数为:{}", structureId);
+
+        //检查尝试删除的数据是否存在
+        Structure queryResult = structureMapper.getStandardById(structureId);
+        if (queryResult == null) {
+            String message = "删除架构失败,尝试访问的数据已不存在";
+            log.info("{}", message);
+            throw new XiaoShiException(message);
+        }
+
+        //架构和专利关联表删除数据
+        ArrayList<Integer> structureIds = new ArrayList<>();
+        structureIds.add(structureId);
+        int rows = assoStructurePictureMapper.deleteByIds(structureIds);
+        if (rows != structureIds.size()) {
+            String message = "删除架构失败,服务器忙请稍后再次尝试";
+            log.info("{}", message);
+            throw new XiaoShiException(message);
+        }
+
+
+
+
+    }
+
+    //递归组装架构树集合
+    private void diGui(StructureVO structureVO, Integer structureId, Integer productId) {
+        List<StructureVO> structureVOs = structureMapper.selectByParentIdAndProductId(structureId, productId);
         if (structureVOs != null) {
             structureVO.setChildren(structureVOs);
             for (StructureVO n : structureVOs) {
                 structureId = n.getId();
-                diGui(n, structureId);
+                diGui(n, structureId, productId);
             }
         }
     }

+ 18 - 0
PAS/src/main/resources/mapper/AssoStructurePatentMapper.xml

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="cn.cslg.pas.mapper.AssoStructurePatentMapper">
+    <!--根据架构id批量删除数据-->
+    <!--int deleteByStructureIds(List<Integer> structureIds);-->
+    <delete id="deleteByStructureIds">
+        delete
+        from asso_structure_patent
+        where structure_id in (
+        <foreach collection="list" item="n" separator=",">
+            #{n}
+        </foreach>
+        )
+    </delete>
+
+
+</mapper>

+ 30 - 0
PAS/src/main/resources/mapper/AssoStructurePictureMapper.xml

@@ -12,4 +12,34 @@
         </foreach>
     </insert>
 
+    <!--根据id批量删除数据-->
+    <!--int deleteByIds(List<Integer> ids);-->
+    <delete id="deleteByIds">
+        delete from asso_structure_picture where id in (
+        <foreach collection="list" item="n" separator=",">
+            #{n}
+        </foreach>
+        )
+    </delete>
+
+    <!--根据架构id查询数据-->
+    <!--List<StructurePictureVO> selectByStructureId(Integer structureId);-->
+    <select id="selectByStructureId" resultMap="selectByStructureIdMap">
+        select id,
+               structure_id,
+               name,
+               suffix,
+               url
+        from asso_structure_picture
+        where structure_id = #{structureId}
+    </select>
+
+    <resultMap id="selectByStructureIdMap" type="cn.cslg.pas.common.model.vo.StructurePictureVO">
+        <id column="id" property="id"/>
+        <result column="structure_id" property="structureId"/>
+        <result column="name" property="name"/>
+        <result column="suffix" property="suffix"/>
+        <result column="url" property="url"/>
+    </resultMap>
+
 </mapper>

+ 26 - 12
PAS/src/main/resources/mapper/StructureMapper.xml

@@ -41,13 +41,16 @@
         where id = #{id}
     </update>
 
-    <!--根据父级id和名称统计数量-->
-    <!--int countByparentIdAndStructureName(Integer parentId, String structureName);-->
+    <!--根据父级id和名称和架构id统计数量-->
+    <!--int countByparentIdAndStructureName(Integer parentId, String structureName, Integer structureId);-->
     <select id="countByparentIdAndStructureName" resultType="int">
         select count(*)
         from structure
-        where structure_name = #{structureName}
-          and parent_id = #{parentId}
+        where parent_id = #{parentId}
+        and structure_name = #{structureName}
+        <if test="structureId != null">
+            and id != #{structureId}
+        </if>
     </select>
 
     <!--根据id查询数据-->
@@ -67,9 +70,9 @@
         <result column="product_id" property="productId"/>
     </resultMap>
 
-    <!--根据父级id查询数据-->
-    <!--List<StructureVO> selectByParentId(Integer parentId);-->
-    <select id="selectByParentId" resultMap="selectByParentIdMap">
+    <!--根据父级id和产品id查询数据-->
+    <!--List<StructureVO> selectByParentIdAndProductId(Integer parentId, Integer productId);-->
+    <select id="selectByParentIdAndProductId" resultMap="selectByParentIdMap">
         select id s_id,
                parent_id,
                structure_name,
@@ -78,6 +81,8 @@
                product_id
         from structure
         where parent_id = #{parentId}
+          and product_id = #{productId}
+        order by s_id
     </select>
 
     <resultMap id="selectByParentIdMap" type="cn.cslg.pas.common.model.vo.StructureVO">
@@ -110,17 +115,26 @@
         <result column="url" property="url"/>
     </resultMap>
 
-    <!--根据产品id查询数据-->
-    <!--List<StructureVO> selectByProductId(Integer productId);-->
-    <select id="selectByProductId" resultMap="selectByParentIdMap">
-        select id s_id,
+    <!--根据模糊路径查询数据-->
+    <!--List<StructureVO> selectByFindInSetPath(String findInSetPath);-->
+    <select id="selectByFindInSetPath" resultMap="selectByFindInSetPathMap">
+        select id,
                parent_id,
                structure_name,
                path,
                remark,
                product_id
         from structure
-        where product_id = #{parentproductIdId}
+        where find_in_set(#{findInSetPath}, path)
     </select>
 
+    <resultMap id="selectByFindInSetPathMap" type="cn.cslg.pas.common.model.vo.StructureVO">
+        <id column="id" property="id"/>
+        <result column="parent_id" property="parentId"/>
+        <result column="structure_name" property="structureName"/>
+        <result column="path" property="path"/>
+        <result column="remark" property="remark"/>
+        <result column="product_id" property="productId"/>
+    </resultMap>
+
 </mapper>