diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/ServiceWorkOrdersTypeController.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/ServiceWorkOrdersTypeController.java index 90c08a0b..19eea6d4 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/ServiceWorkOrdersTypeController.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/ServiceWorkOrdersTypeController.java @@ -103,4 +103,13 @@ public class ServiceWorkOrdersTypeController extends BaseController { @PathVariable("ids") Long[] ids) { return toAjax(serviceWorkOrdersTypeService.deleteWithValidByIds(List.of(ids), true)); } + + /** + * 查询【工单类型】树结构 + */ + @SaCheckPermission("system:workOrdersType:list") + @GetMapping("/typeTree") + public R typeTree() { + return R.ok(serviceWorkOrdersTypeService.typeTree()) ; + } } diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/ServiceWorkOrdersType.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/ServiceWorkOrdersType.java index 95677afb..4837b99e 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/ServiceWorkOrdersType.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/ServiceWorkOrdersType.java @@ -62,4 +62,9 @@ public class ServiceWorkOrdersType extends TenantEntity { */ private String searchValue; + /** + *上级类型id + */ + private Long parentId; + } diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/ServiceWorkOrdersTypeBo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/ServiceWorkOrdersTypeBo.java index ab0d9a20..3d7d0ca9 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/ServiceWorkOrdersTypeBo.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/ServiceWorkOrdersTypeBo.java @@ -60,4 +60,9 @@ public class ServiceWorkOrdersTypeBo extends BaseEntity { */ private Integer isTransfers; + /** + *上级类型id + */ + private Long parentId; + } diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrdersTypeVo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrdersTypeVo.java index b56c3c54..c6c49fab 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrdersTypeVo.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrdersTypeVo.java @@ -8,7 +8,8 @@ import org.dromara.property.domain.ServiceWorkOrdersType; import java.io.Serial; import java.io.Serializable; - +import java.util.ArrayList; +import java.util.List; /** @@ -75,4 +76,14 @@ public class ServiceWorkOrdersTypeVo implements Serializable { @ExcelProperty(value = "搜索值") private String searchValue; + /** + * 上级类型id + */ + private Long parentId; + + /** + * 子级类型 + */ + private List children = new ArrayList<>(); + } diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/IServiceWorkOrdersTypeService.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/IServiceWorkOrdersTypeService.java index a838a21e..a578ced8 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/IServiceWorkOrdersTypeService.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/IServiceWorkOrdersTypeService.java @@ -65,4 +65,10 @@ public interface IServiceWorkOrdersTypeService { * @return 是否删除成功 */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + /** + * 查询【工单类型】树结构 + * @return 工单类型树结构 + */ + List typeTree(); } diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/ServiceWorkOrdersTypeServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/ServiceWorkOrdersTypeServiceImpl.java index ca7db910..4256baea 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/ServiceWorkOrdersTypeServiceImpl.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/ServiceWorkOrdersTypeServiceImpl.java @@ -18,6 +18,7 @@ import org.dromara.property.service.IServiceWorkOrdersTypeService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Collection; @@ -138,4 +139,35 @@ public class ServiceWorkOrdersTypeServiceImpl implements IServiceWorkOrdersTypeS } return baseMapper.deleteByIds(ids) > 0; } + + /** + * 查询【工单类型】树结构 + * @return 工单类型树结构 + */ + @Override + public List typeTree() { + List list = baseMapper.selectVoList(); + return buildTree(list,null); + } + + + /** + * 递归构建树结构 + * @param types 所有类型列表 + * @param parentId 父节点id + * @return 树结构列表 + */ + public static List buildTree(List types, Long parentId) { + List tree = new ArrayList<>(); + for (ServiceWorkOrdersTypeVo type : types) { + Long currentParentId = type.getParentId(); + if ((parentId == null && currentParentId == null) || + (parentId != null && parentId.equals(currentParentId))) { + List children = buildTree(types, type.getId()); + type.getChildren().addAll(children); + tree.add(type); + } + } + return tree; + } }