diff --git a/ruoyi-admin/src/main/java/com/ruoyi/zongzhi/controller/TcSafetyDangerController.java b/ruoyi-admin/src/main/java/com/ruoyi/zongzhi/controller/TcSafetyDangerController.java index 346eecc..f0f3b2d 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/zongzhi/controller/TcSafetyDangerController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/zongzhi/controller/TcSafetyDangerController.java @@ -23,14 +23,14 @@ import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.common.core.page.TableDataInfo; /** - * 监管单位Controller + * 安全隐患Controller * * @author ruoyi * @date 2023-08-10 */ @RestController @RequestMapping("/zongzhi/danger") -@Api(tags = " 监管单位") +@Api(tags = " 安全隐患") public class TcSafetyDangerController extends BaseController { @Autowired diff --git a/ruoyi-admin/src/main/java/com/ruoyi/zongzhi/controller/TcTownController.java b/ruoyi-admin/src/main/java/com/ruoyi/zongzhi/controller/TcTownController.java index 6373557..e8a836f 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/zongzhi/controller/TcTownController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/zongzhi/controller/TcTownController.java @@ -1,9 +1,17 @@ package com.ruoyi.zongzhi.controller; import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; import javax.servlet.http.HttpServletResponse; +import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.domain.entity.SysDept; + import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.BeanUtils; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; @@ -41,7 +49,7 @@ public class TcTownController extends BaseController /** * 查询区域列表 */ - @PreAuthorize("@ss.hasPermi('zongzhi:town:list')") + @GetMapping("/list") public TableDataInfo list(TcTown tcTown) { @@ -53,8 +61,8 @@ public class TcTownController extends BaseController /** * 导出区域列表 */ - @PreAuthorize("@ss.hasPermi('zongzhi:town:export')") - @Log(title = "区域", businessType = BusinessType.EXPORT) + + @PostMapping("/export") public void export(HttpServletResponse response, TcTown tcTown) { @@ -67,7 +75,7 @@ public class TcTownController extends BaseController /** * 获取区域详细信息 */ - @PreAuthorize("@ss.hasPermi('zongzhi:town:query')") + @GetMapping(value = "/{id}") public AjaxResult getInfo(@PathVariable("id") Long id) { @@ -77,8 +85,7 @@ public class TcTownController extends BaseController /** * 新增区域 */ - @PreAuthorize("@ss.hasPermi('zongzhi:town:add')") - @Log(title = "区域", businessType = BusinessType.INSERT) + @PostMapping public AjaxResult add(@RequestBody TcTown tcTown) { @@ -88,8 +95,7 @@ public class TcTownController extends BaseController /** * 修改区域 */ - @PreAuthorize("@ss.hasPermi('zongzhi:town:edit')") - @Log(title = "区域", businessType = BusinessType.UPDATE) + @PutMapping public AjaxResult edit(@RequestBody TcTown tcTown) { @@ -99,8 +105,7 @@ public class TcTownController extends BaseController /** * 删除区域 */ - @PreAuthorize("@ss.hasPermi('zongzhi:town:remove')") - @Log(title = "区域", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") public AjaxResult remove(@PathVariable Long[] ids) { @@ -108,7 +113,12 @@ public class TcTownController extends BaseController } - @Log(title = "用户管理", businessType = BusinessType.IMPORT) + /** + * 导入excel + * @param file + * @return + * @throws Exception + */ @PostMapping("/importData") public AjaxResult importData(MultipartFile file) throws Exception { @@ -118,5 +128,15 @@ public class TcTownController extends BaseController return AjaxResult.success(message); } - + /** + * 树形结构列表 + * @return + */ + @GetMapping("/new/tree") + @ApiOperation(value = "树形结构列表") + public AjaxResult treeselect(TcTown tcTown) + { + List tcTowns = tcTownService.selectTcTownList(tcTown); + return AjaxResult.success(tcTownService.buildDeptTreeSelect(tcTowns)); + } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/zongzhi/domain/TcSafetyDanger.java b/ruoyi-admin/src/main/java/com/ruoyi/zongzhi/domain/TcSafetyDanger.java index 49625da..f2f4336 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/zongzhi/domain/TcSafetyDanger.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/zongzhi/domain/TcSafetyDanger.java @@ -11,7 +11,7 @@ import io.swagger.annotations.ApiModelProperty; import com.ruoyi.common.core.domain.BaseEntity; /** - * 监管单位对象 tc_safety_danger + *安全隐患 tc_safety_danger * * @author ruoyi * @date 2023-08-10 diff --git a/ruoyi-admin/src/main/java/com/ruoyi/zongzhi/domain/TcTown.java b/ruoyi-admin/src/main/java/com/ruoyi/zongzhi/domain/TcTown.java index 7679ba8..a1d62ea 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/zongzhi/domain/TcTown.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/zongzhi/domain/TcTown.java @@ -1,5 +1,6 @@ package com.ruoyi.zongzhi.domain; +import com.ruoyi.common.core.domain.entity.SysDept; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import org.apache.commons.lang3.builder.ToStringBuilder; @@ -7,6 +8,9 @@ import org.apache.commons.lang3.builder.ToStringStyle; import com.ruoyi.common.annotation.Excel; import com.ruoyi.common.core.domain.BaseEntity; +import java.util.ArrayList; +import java.util.List; + /** * 区域对象 tc_town * @@ -37,7 +41,7 @@ public class TcTown extends BaseEntity private Long parentId; /** 层级1:市,2:镇,3:村 */ - @Excel(name = "层级1:市,2:镇,3:村") + @Excel(name = "层级") @ApiModelProperty(value = "层级") private Long level; @@ -49,4 +53,8 @@ public class TcTown extends BaseEntity @Excel(name = "修改人ID") private Long updateId; + + /** 子节点 */ + private List children = new ArrayList(); + } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/zongzhi/domain/vo/TreeNode.java b/ruoyi-admin/src/main/java/com/ruoyi/zongzhi/domain/vo/TreeNode.java new file mode 100644 index 0000000..4c1c1c0 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/zongzhi/domain/vo/TreeNode.java @@ -0,0 +1,54 @@ +package com.ruoyi.zongzhi.domain.vo; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.ruoyi.zongzhi.domain.TcTown; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; +import java.util.stream.Collectors; + +/** + * Treeselect树结构实体类 + * + * @author ruoyi + */ +@Data +public class TreeNode +{ + + + /** 节点ID */ + private Long id; + + /** 节点名称 */ + private String label; + + + /** 父节点名称 */ + private String parentName; + + /** 父节点id*/ + Long parentId; + + /** 子节点 */ + @JsonInclude(JsonInclude.Include.NON_EMPTY) + private List children; + + public TreeNode() + { + + } + + public TreeNode(TcTown tcTown) + { + this.id = tcTown.getId(); + this.label = tcTown.getName(); + this.parentName=tcTown.getParentName(); + this.parentId=tcTown.getParentId(); + this.children = tcTown.getChildren().stream().map(TreeNode::new).collect(Collectors.toList()); + } + + + +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/zongzhi/service/ITcTownService.java b/ruoyi-admin/src/main/java/com/ruoyi/zongzhi/service/ITcTownService.java index 89c99eb..32f2d97 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/zongzhi/service/ITcTownService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/zongzhi/service/ITcTownService.java @@ -1,19 +1,23 @@ package com.ruoyi.zongzhi.service; import java.util.List; + +import com.ruoyi.common.core.domain.TreeSelect; +import com.ruoyi.common.core.domain.entity.SysDept; import com.ruoyi.zongzhi.domain.TcTown; +import com.ruoyi.zongzhi.domain.vo.TreeNode; + /** * 区域Service接口 - * + * * @author ruoyi * @date 2023-08-10 */ -public interface ITcTownService -{ +public interface ITcTownService { /** * 查询区域 - * + * * @param id 区域主键 * @return 区域 */ @@ -21,7 +25,7 @@ public interface ITcTownService /** * 查询区域列表 - * + * * @param tcTown 区域 * @return 区域集合 */ @@ -29,7 +33,7 @@ public interface ITcTownService /** * 新增区域 - * + * * @param tcTown 区域 * @return 结果 */ @@ -37,7 +41,7 @@ public interface ITcTownService /** * 修改区域 - * + * * @param tcTown 区域 * @return 结果 */ @@ -45,7 +49,7 @@ public interface ITcTownService /** * 批量删除区域 - * + * * @param ids 需要删除的区域主键集合 * @return 结果 */ @@ -53,14 +57,13 @@ public interface ITcTownService /** * 删除区域信息 - * + * * @param id 区域主键 * @return 结果 */ public int deleteTcTownById(Long id); - /** * 导入区域信息 * @@ -68,4 +71,14 @@ public interface ITcTownService */ public String importUser(List tcTownList); + + /** + * 构建前端所需要下拉树结构 + * + * @param tcTowns 区域列表 + * @return 下拉树结构列表 + */ + public List buildDeptTreeSelect(List tcTowns); + + List buildDeptTree(List depts); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/zongzhi/service/impl/TcSafetyDangerServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/zongzhi/service/impl/TcSafetyDangerServiceImpl.java index 00d8b8c..a30342f 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/zongzhi/service/impl/TcSafetyDangerServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/zongzhi/service/impl/TcSafetyDangerServiceImpl.java @@ -9,7 +9,7 @@ import com.ruoyi.zongzhi.domain.TcSafetyDanger; import com.ruoyi.zongzhi.service.ITcSafetyDangerService; /** - * 监管单位Service业务层处理 + * 安全隐患Service业务层处理 * * @author ruoyi * @date 2023-08-10 @@ -21,10 +21,10 @@ public class TcSafetyDangerServiceImpl implements ITcSafetyDangerService private TcSafetyDangerMapper tcSafetyDangerMapper; /** - * 查询监管单位 + * 查询安全隐患 * - * @param id 监管单位主键 - * @return 监管单位 + * @param id 安全隐患主键 + * @return 安全隐患 */ @Override public TcSafetyDanger selectTcSafetyDangerById(Long id) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/zongzhi/service/impl/TcTownServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/zongzhi/service/impl/TcTownServiceImpl.java index ba42d2f..c6eb19f 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/zongzhi/service/impl/TcTownServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/zongzhi/service/impl/TcTownServiceImpl.java @@ -1,95 +1,93 @@ package com.ruoyi.zongzhi.service.impl; -import java.util.List; import com.ruoyi.common.utils.DateUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import com.ruoyi.zongzhi.mapper.TcTownMapper; +import com.ruoyi.common.utils.StringUtils; import com.ruoyi.zongzhi.domain.TcTown; +import com.ruoyi.zongzhi.mapper.TcTownMapper; import com.ruoyi.zongzhi.service.ITcTownService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.ruoyi.zongzhi.domain.vo.TreeNode; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.stream.Collectors; /** * 区域Service业务层处理 - * + * * @author ruoyi * @date 2023-08-10 */ @Service -public class TcTownServiceImpl implements ITcTownService -{ +public class TcTownServiceImpl implements ITcTownService { @Autowired private TcTownMapper tcTownMapper; /** * 查询区域 - * + * * @param id 区域主键 * @return 区域 */ @Override - public TcTown selectTcTownById(Long id) - { + public TcTown selectTcTownById(Long id) { return tcTownMapper.selectTcTownById(id); } /** * 查询区域列表 - * + * * @param tcTown 区域 * @return 区域 */ @Override - public List selectTcTownList(TcTown tcTown) - { + public List selectTcTownList(TcTown tcTown) { return tcTownMapper.selectTcTownList(tcTown); } /** * 新增区域 - * + * * @param tcTown 区域 * @return 结果 */ @Override - public int insertTcTown(TcTown tcTown) - { + public int insertTcTown(TcTown tcTown) { tcTown.setCreateTime(DateUtils.getNowDate()); return tcTownMapper.insertTcTown(tcTown); } /** * 修改区域 - * + * * @param tcTown 区域 * @return 结果 */ @Override - public int updateTcTown(TcTown tcTown) - { + public int updateTcTown(TcTown tcTown) { return tcTownMapper.updateTcTown(tcTown); } /** * 批量删除区域 - * + * * @param ids 需要删除的区域主键 * @return 结果 */ @Override - public int deleteTcTownByIds(Long[] ids) - { + public int deleteTcTownByIds(Long[] ids) { return tcTownMapper.deleteTcTownByIds(ids); } /** * 删除区域信息 - * + * * @param id 区域主键 * @return 结果 */ @Override - public int deleteTcTownById(Long id) - { + public int deleteTcTownById(Long id) { return tcTownMapper.deleteTcTownById(id); } @@ -108,4 +106,81 @@ public class TcTownServiceImpl implements ITcTownService return successMsg.toString(); } + + /** + * 构建前端所需要下拉树结构 + * + * @param tcTowns 区域列表 + * @return 下拉树结构列表 + */ + @Override + public List buildDeptTreeSelect(List tcTowns) { + List deptTrees = buildDeptTree(tcTowns); + return deptTrees.stream().map(TreeNode::new).collect(Collectors.toList()); + } + + + /** + * 构建前端所需要树结构 + * + * @param depts 部门列表 + * @return 树结构列表 + */ + @Override + public List buildDeptTree(List depts) { + List returnList = new ArrayList(); + List tempList = new ArrayList(); + for (TcTown dept : depts) { + tempList.add(dept.getId()); + } + for (Iterator iterator = depts.iterator(); iterator.hasNext(); ) { + TcTown dept = (TcTown) iterator.next(); + // 如果是顶级节点, 遍历该父节点的所有子节点 + if (!tempList.contains(dept.getParentId())) { + recursionFn(depts, dept); + returnList.add(dept); + } + } + if (returnList.isEmpty()) { + returnList = depts; + } + return returnList; + } + + /** + * 递归列表 + */ + private void recursionFn(List list, TcTown t) { + // 得到子节点列表 + List childList = getChildList(list, t); + t.setChildren(childList); + for (TcTown tChild : childList) { + if (hasChild(list, tChild)) { + recursionFn(list, tChild); + } + } + } + + + /** + * 得到子节点列表 + */ + private List getChildList(List list, TcTown t) { + List tlist = new ArrayList(); + Iterator it = list.iterator(); + while (it.hasNext()) { + TcTown n = (TcTown) it.next(); + if (StringUtils.isNotNull(n.getParentId()) && n.getParentId().longValue() == t.getId().longValue()) { + tlist.add(n); + } + } + return tlist; + } + + /** + * 判断是否有子节点 + */ + private boolean hasChild(List list, TcTown t) { + return getChildList(list, t).size() > 0; + } }