diff --git a/src/main/java/com/bonus/digitalSignage/backstage/controller/DigitalSignageController.java b/src/main/java/com/bonus/digitalSignage/backstage/controller/DigitalSignageController.java index e14c56e..8881042 100644 --- a/src/main/java/com/bonus/digitalSignage/backstage/controller/DigitalSignageController.java +++ b/src/main/java/com/bonus/digitalSignage/backstage/controller/DigitalSignageController.java @@ -1,7 +1,16 @@ package com.bonus.digitalSignage.backstage.controller; +import com.bonus.digitalSignage.annotation.DecryptAndVerify; +import com.bonus.digitalSignage.annotation.LogAnnotation; +import com.bonus.digitalSignage.backstage.entity.dto.QueryParamDto; import com.bonus.digitalSignage.backstage.service.DigitalSignageService; +import com.bonus.digitalSignage.system.vo.EncryptedReq; +import com.bonus.digitalSignage.utils.ServerResponse; +import com.github.pagehelper.PageHelper; +import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -20,5 +29,12 @@ import javax.annotation.Resource; public class DigitalSignageController { @Resource(name = "DigitalSignageService") - private DigitalSignageService digitalSignageService; + private DigitalSignageService service; + + @ApiOperation("电子看板-工程树") + @PostMapping(value = "getProTree") + @DecryptAndVerify(decryptedClass = QueryParamDto.class)//加解密统一管理 + public ServerResponse getProTree(EncryptedReq dto) { + return service.getProTree(dto.getData()); + } } diff --git a/src/main/java/com/bonus/digitalSignage/backstage/dao/DigitalSignageDao.java b/src/main/java/com/bonus/digitalSignage/backstage/dao/DigitalSignageDao.java index bd54107..7657184 100644 --- a/src/main/java/com/bonus/digitalSignage/backstage/dao/DigitalSignageDao.java +++ b/src/main/java/com/bonus/digitalSignage/backstage/dao/DigitalSignageDao.java @@ -1,7 +1,11 @@ package com.bonus.digitalSignage.backstage.dao; +import com.bonus.digitalSignage.backstage.entity.dto.QueryParamDto; +import com.bonus.digitalSignage.backstage.entity.vo.ProTreeVo; import org.springframework.stereotype.Repository; +import java.util.List; + /** * @className:DigitalSignageDao * @author:cwchen @@ -11,4 +15,12 @@ import org.springframework.stereotype.Repository; */ @Repository(value = "DigitalSignageDao") public interface DigitalSignageDao { + /** + * 电子看板-工程树 + * @param dto + * @return List + * @author cwchen + * @date 2025/4/24 10:49 + */ + List getProTree(QueryParamDto dto); } diff --git a/src/main/java/com/bonus/digitalSignage/backstage/entity/vo/ProTreeVo.java b/src/main/java/com/bonus/digitalSignage/backstage/entity/vo/ProTreeVo.java new file mode 100644 index 0000000..3ed16ad --- /dev/null +++ b/src/main/java/com/bonus/digitalSignage/backstage/entity/vo/ProTreeVo.java @@ -0,0 +1,24 @@ +package com.bonus.digitalSignage.backstage.entity.vo; + +import lombok.Data; + +import java.util.List; + +/** + * @className:ProTreeVo + * @author:cwchen + * @date:2025-04-24-10:40 + * @version:1.0 + * @description:工程树 + */ +@Data +public class ProTreeVo { + + private String id; + + private String title; + + private String parentId; + + private List children; +} diff --git a/src/main/java/com/bonus/digitalSignage/backstage/service/DigitalSignageService.java b/src/main/java/com/bonus/digitalSignage/backstage/service/DigitalSignageService.java index 670747c..2f8f5cf 100644 --- a/src/main/java/com/bonus/digitalSignage/backstage/service/DigitalSignageService.java +++ b/src/main/java/com/bonus/digitalSignage/backstage/service/DigitalSignageService.java @@ -1,5 +1,8 @@ package com.bonus.digitalSignage.backstage.service; +import com.bonus.digitalSignage.backstage.entity.dto.QueryParamDto; +import com.bonus.digitalSignage.utils.ServerResponse; + /** * @className:DigitalSignageService * @author:cwchen @@ -8,4 +11,12 @@ package com.bonus.digitalSignage.backstage.service; * @description:电子看板-业务层 */ public interface DigitalSignageService { + /** + * 电子看板-工程树 + * @param data + * @return ServerResponse + * @author cwchen + * @date 2025/4/24 10:39 + */ + ServerResponse getProTree(QueryParamDto data); } diff --git a/src/main/java/com/bonus/digitalSignage/backstage/service/impl/DigitalSignageServiceImpl.java b/src/main/java/com/bonus/digitalSignage/backstage/service/impl/DigitalSignageServiceImpl.java index 8ee09c1..c92d795 100644 --- a/src/main/java/com/bonus/digitalSignage/backstage/service/impl/DigitalSignageServiceImpl.java +++ b/src/main/java/com/bonus/digitalSignage/backstage/service/impl/DigitalSignageServiceImpl.java @@ -1,11 +1,15 @@ package com.bonus.digitalSignage.backstage.service.impl; import com.bonus.digitalSignage.backstage.dao.DigitalSignageDao; +import com.bonus.digitalSignage.backstage.entity.dto.QueryParamDto; +import com.bonus.digitalSignage.backstage.entity.vo.ProTreeVo; import com.bonus.digitalSignage.backstage.service.DigitalSignageService; +import com.bonus.digitalSignage.utils.ServerResponse; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.*; /** * @className:DigitalSignageServiceImpl @@ -20,4 +24,42 @@ public class DigitalSignageServiceImpl implements DigitalSignageService { @Resource(name = "DigitalSignageDao") private DigitalSignageDao dao; + + @Override + public ServerResponse getProTree(QueryParamDto dto) { + List tree = new ArrayList<>(); + try { + List list = Optional.ofNullable(dao.getProTree(dto)).orElseGet(ArrayList::new); + tree = buildTreeWithMap(list); + } catch (Exception e) { + log.error(e.toString(), e); + } + return ServerResponse.createSuccess(tree); + } + + public List buildTreeWithMap(List nodes) { + List tree = new ArrayList<>(); + Map nodeMap = new HashMap<>(); + + // 第一次遍历:将所有节点存入map + for (ProTreeVo node : nodes) { + nodeMap.put(node.getId(), node); + } + // 第二次遍历:建立父子关系 + for (ProTreeVo node : nodes) { + String parentId = node.getParentId(); + if (parentId == null || parentId.isEmpty()) { + tree.add(node); + } else { + ProTreeVo parent = nodeMap.get(parentId); + if (parent != null) { + if (parent.getChildren() == null) { + parent.setChildren(new ArrayList<>()); + } + parent.getChildren().add(node); + } + } + } + return tree; + } } diff --git a/src/main/resources/mappers/backstage/DigitalSignageMapper.xml b/src/main/resources/mappers/backstage/DigitalSignageMapper.xml index 79ab883..2ac2a85 100644 --- a/src/main/resources/mappers/backstage/DigitalSignageMapper.xml +++ b/src/main/resources/mappers/backstage/DigitalSignageMapper.xml @@ -3,4 +3,42 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> + +