From 6901765754c98b779f7921e6b557d21d4cef7f4c Mon Sep 17 00:00:00 2001 From: caozhen <18736171426@139.com> Date: Wed, 6 Sep 2023 17:14:48 +0800 Subject: [PATCH] =?UTF-8?q?=E5=86=85=E9=83=A8=E5=B7=A5=E4=BD=9C=E7=BB=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../LawsWorkingGroupController.java | 190 ++++++++++++++++++ .../modules/sys/entity/LawsWorkingGroup.java | 81 ++++++++ .../sys/mapper/LawsWorkingGroupMapper.java | 17 ++ .../sys/mapper/xml/LawsWorkingGroupMapper.xml | 16 ++ .../sys/service/ILawsWorkingGroupService.java | 70 +++++++ .../impl/LawsWorkingGroupServiceImpl.java | 106 ++++++++++ 6 files changed, 480 insertions(+) create mode 100644 laws-modules/src/main/java/com/jero/modules/sys/controller/LawsWorkingGroupController.java create mode 100644 laws-modules/src/main/java/com/jero/modules/sys/entity/LawsWorkingGroup.java create mode 100644 laws-modules/src/main/java/com/jero/modules/sys/mapper/LawsWorkingGroupMapper.java create mode 100644 laws-modules/src/main/java/com/jero/modules/sys/mapper/xml/LawsWorkingGroupMapper.xml create mode 100644 laws-modules/src/main/java/com/jero/modules/sys/service/ILawsWorkingGroupService.java create mode 100644 laws-modules/src/main/java/com/jero/modules/sys/service/impl/LawsWorkingGroupServiceImpl.java diff --git a/laws-modules/src/main/java/com/jero/modules/sys/controller/LawsWorkingGroupController.java b/laws-modules/src/main/java/com/jero/modules/sys/controller/LawsWorkingGroupController.java new file mode 100644 index 00000000..be765666 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/sys/controller/LawsWorkingGroupController.java @@ -0,0 +1,190 @@ +package com.jero.modules.sys.controller; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import javax.servlet.http.HttpServletRequest; + +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.jero.common.api.vo.Result; +import com.jero.modules.sys.entity.LawsWorkingGroup; +import com.jero.modules.sys.service.ILawsWorkingGroupService; +import lombok.extern.slf4j.Slf4j; +import com.jero.common.system.base.controller.JeroController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import com.jero.common.aspect.annotation.AutoLog; +import org.apache.commons.lang3.StringUtils; +import org.apache.poi.ss.formula.functions.T; + + + /** + * @Description: 内部工作组 + * @Author: jero-boot + * @Date: 2023-09-06 + * @Version: V1.0 + */ +@Api(tags="内部工作组") +@RestController +@RequestMapping("/sys/lawsWorkingGroup") +@Slf4j +public class LawsWorkingGroupController extends JeroController { + @Autowired + private ILawsWorkingGroupService lawsWorkingGroupService; + + /** + * 查询 + */ + @AutoLog(value = "内部工作组-列表查询") + @ApiOperation(value="内部工作组-列表查询", notes="内部工作组-列表查询") + @GetMapping(value = "/list") + public Result> queryList(LawsWorkingGroup lawsWorkingGroup, HttpServletRequest req) { + lawsWorkingGroup.setDelFlag("0"); + List list = lawsWorkingGroupService.queryList(lawsWorkingGroup, req); + List toTree = this.convertToTree(list); + return Result.OK(toTree); + } + //对列表数据转树结构列表 + public List convertToTree(List list) { + List treeList = new ArrayList<>(); + for (LawsWorkingGroup group : list) { + if (StringUtils.isBlank(group.getPid())) { + group.setLevel(1); + addChildGroups(group, list); + treeList.add(group); + } + } + return treeList; + } + private void addChildGroups(LawsWorkingGroup parentGroup, List list) { + List childGroups = new ArrayList<>(); + for (LawsWorkingGroup group : list) { + if (StringUtils.isNotBlank(group.getPid()) && parentGroup.getId().equals(group.getPid())) { + group.setLevel(parentGroup.getLevel() + 1); + addChildGroups(group, list); + childGroups.add(group); + } + } + parentGroup.setSubset(childGroups); + } + + + /** + * 通过id查询 + * + * @param id + * @return + */ + @AutoLog(value = "内部工作组-通过id查询") + @ApiOperation(value="内部工作组-通过id查询", notes="内部工作组-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name="id",required=true) String id) { + LawsWorkingGroup lawsWorkingGroup = lawsWorkingGroupService.queryById(id); + if(lawsWorkingGroup==null) { + return Result.error("未找到对应数据"); + } + // 通过递归查找所有子节点数据 + List list = lawsWorkingGroupService.realList(); + LawsWorkingGroup workingGroup = convertToTreeById(list, id); + return Result.OK(workingGroup); + } + + public LawsWorkingGroup convertToTreeById(List list, String id) { + LawsWorkingGroup root = null; + for (LawsWorkingGroup group : list) { + if (group.getId().equals(id)) { + root = group; + break; + } + } + if (root == null) { + return null; // 如果没有找到指定的id,返回null + } + addChildGroupsById(root, list); + return root; + } + private void addChildGroupsById(LawsWorkingGroup parentGroup, List list) { + List childGroups = new ArrayList<>(); + for (LawsWorkingGroup group : list) { + if (StringUtils.isNotBlank(group.getPid()) && parentGroup.getId().equals(group.getPid())) { + addChildGroupsById(group, list); + childGroups.add(group); + } + } + parentGroup.setSubset(childGroups); + } + + /** + * 添加 + * + * @param lawsWorkingGroup + * @return + */ + @AutoLog(value = "内部工作组-添加") + @ApiOperation(value="内部工作组-添加", notes="内部工作组-添加") + @PostMapping(value = "/add") + public Result add(@Validated @RequestBody LawsWorkingGroup lawsWorkingGroup) { + String pid = lawsWorkingGroup.getPid(); + if (StringUtils.isNotBlank(pid)){ + LawsWorkingGroup workingGroup = lawsWorkingGroupService.queryById(pid); + lawsWorkingGroup.setLevel(workingGroup.getLevel() + 1); + }else { + lawsWorkingGroup.setLevel(1); + } + lawsWorkingGroup.setDelFlag("0"); + lawsWorkingGroupService.add(lawsWorkingGroup); + return Result.OK("操作成功!"); + } + + /** + * 编辑 + * + * @param lawsWorkingGroup + * @return + */ + @AutoLog(value = "内部工作组-编辑") + @ApiOperation(value="内部工作组-编辑", notes="内部工作组-编辑") + @PostMapping(value = "/edit") + public Result edit(@Validated @RequestBody LawsWorkingGroup lawsWorkingGroup) { + lawsWorkingGroupService.editById(lawsWorkingGroup); + return Result.OK("操作成功!"); + } + + /** + * 通过id删除 + * + * @param map + * @return + */ + @AutoLog(value = "内部工作组-通过id删除") + @ApiOperation(value="内部工作组-通过id删除", notes="内部工作组-通过id删除") + @PostMapping(value = "/delete") + public Result delete(@RequestBody Map map) { + if(!map.containsKey("id") || StringUtils.isEmpty(map.get("id"))){ + return Result.error("请选择数据!"); + } + List ids = new ArrayList<>(); + List list = lawsWorkingGroupService.realList(); + ids = this.allChildIdById(list, map.get("id"), ids); + if (ids.size() > 0){ + LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); + wrapper.in(LawsWorkingGroup::getId, ids); + wrapper.set(LawsWorkingGroup::getDelFlag, "1"); + lawsWorkingGroupService.update(wrapper); + } + return Result.OK("删除成功!"); + } + public List allChildIdById(List list, String id, List ids) { + List collect = list.stream().filter(LawsWorkingGroup -> id.equals(LawsWorkingGroup.getPid())).map(LawsWorkingGroup::getId).collect(Collectors.toList()); + for (String s : collect) { + allChildIdById(list, s, ids); + } + ids.add(id); + return ids; + } + +} diff --git a/laws-modules/src/main/java/com/jero/modules/sys/entity/LawsWorkingGroup.java b/laws-modules/src/main/java/com/jero/modules/sys/entity/LawsWorkingGroup.java new file mode 100644 index 00000000..e06042b7 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/sys/entity/LawsWorkingGroup.java @@ -0,0 +1,81 @@ +package com.jero.modules.sys.entity; + +import java.io.Serializable; +import java.util.List; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + + +/** + * @Description: 内部工作组 + * @Author: jero-boot + * @Date: 2023-09-06 + * @Version: V1.0 + */ +@Data +@TableName("laws_working_group") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="laws_working_group对象", description="内部工作组") +public class LawsWorkingGroup implements Serializable { + private static final long serialVersionUID = 1L; + + /**主键*/ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "主键") + private java.lang.String id; + + /**父级节点*/ + @ApiModelProperty(value = "父级节点") + private java.lang.String pid; + + /**名称*/ + @ApiModelProperty(value = "名称") + private java.lang.String name; + + /**层级*/ + @ApiModelProperty(value = "层级") + private java.lang.Integer level; + + /**创建人*/ + @ApiModelProperty(value = "创建人") + private java.lang.String createBy; + + /**创建日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "创建日期") + private java.util.Date createTime; + + /**更新人*/ + @ApiModelProperty(value = "更新人") + private java.lang.String updateBy; + + /**更新日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "更新日期") + private java.util.Date updateTime; + + /**所属部门*/ + @ApiModelProperty(value = "所属部门") + private java.lang.String orgCode; + + /**删除状态(0-正常,1-删除)*/ + @ApiModelProperty(value = "删除状态(0-正常,1-删除)") + private java.lang.String delFlag; + + + @TableField(exist = false) + private List subset; +} diff --git a/laws-modules/src/main/java/com/jero/modules/sys/mapper/LawsWorkingGroupMapper.java b/laws-modules/src/main/java/com/jero/modules/sys/mapper/LawsWorkingGroupMapper.java new file mode 100644 index 00000000..85c073bb --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/sys/mapper/LawsWorkingGroupMapper.java @@ -0,0 +1,17 @@ +package com.jero.modules.sys.mapper; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; +import com.jero.modules.sys.entity.LawsWorkingGroup; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: 内部工作组 + * @Author: jero-boot + * @Date: 2023-09-06 + * @Version: V1.0 + */ +public interface LawsWorkingGroupMapper extends BaseMapper { + +} diff --git a/laws-modules/src/main/java/com/jero/modules/sys/mapper/xml/LawsWorkingGroupMapper.xml b/laws-modules/src/main/java/com/jero/modules/sys/mapper/xml/LawsWorkingGroupMapper.xml new file mode 100644 index 00000000..1c48fdb7 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/sys/mapper/xml/LawsWorkingGroupMapper.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/laws-modules/src/main/java/com/jero/modules/sys/service/ILawsWorkingGroupService.java b/laws-modules/src/main/java/com/jero/modules/sys/service/ILawsWorkingGroupService.java new file mode 100644 index 00000000..c6e80cee --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/sys/service/ILawsWorkingGroupService.java @@ -0,0 +1,70 @@ +package com.jero.modules.sys.service; + +import com.jero.modules.sys.entity.LawsWorkingGroup; +import com.baomidou.mybatisplus.extension.service.IService; +import javax.servlet.http.HttpServletRequest; +import com.baomidou.mybatisplus.core.metadata.IPage; +import java.util.List; + +/** + * @Description: 内部工作组 + * @Author: jero-boot + * @Date: 2023-09-06 + * @Version: V1.0 + */ +public interface ILawsWorkingGroupService extends IService { + + /** + * 列表查询 + * + * @param lawsWorkingGroup + * @param req + * @return + */ + List queryList(LawsWorkingGroup lawsWorkingGroup, HttpServletRequest req); + + /** + * 保存 + * + * @param lawsWorkingGroup + * @return + */ + void add(LawsWorkingGroup lawsWorkingGroup); + + /** + * 更新 + * + * @param lawsWorkingGroup + * @return + */ + void editById(LawsWorkingGroup lawsWorkingGroup); + + /** + * 通过id删除 + * + * @param id + * @return + */ + void deleteById(String id); + + /** + * 批量删除 + * + * @param ids + * @return + */ + void deleteByIds(List ids); + + /** + * 通过id查询 + * + * @param id + * @return + */ + LawsWorkingGroup queryById(String id); + + /** + * 查询所有未逻辑删除的数据 + */ + List realList(); +} diff --git a/laws-modules/src/main/java/com/jero/modules/sys/service/impl/LawsWorkingGroupServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/sys/service/impl/LawsWorkingGroupServiceImpl.java new file mode 100644 index 00000000..3097dffd --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/sys/service/impl/LawsWorkingGroupServiceImpl.java @@ -0,0 +1,106 @@ +package com.jero.modules.sys.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.jero.modules.sys.entity.LawsWorkingGroup; +import com.jero.modules.sys.mapper.LawsWorkingGroupMapper; +import com.jero.modules.sys.service.ILawsWorkingGroupService; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import com.jero.common.exception.JeroBootException; +import java.util.List; +import java.util.Date; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.jero.common.system.query.QueryGenerator; +import javax.servlet.http.HttpServletRequest; + + +/** + * @Description: 内部工作组 + * @Author: jero-boot + * @Date: 2023-09-06 + * @Version: V1.0 + */ +@Service +@Transactional(rollbackFor = JeroBootException.class) +public class LawsWorkingGroupServiceImpl extends ServiceImpl implements ILawsWorkingGroupService { + + /** + * 列表查询 + * + * @param lawsWorkingGroup + * @param req + * @return + */ + @Override + public List queryList(LawsWorkingGroup lawsWorkingGroup, HttpServletRequest req) { + return list(QueryGenerator.initQueryWrapper(lawsWorkingGroup, req.getParameterMap())); + } + + /** + * 保存 + * + * @param lawsWorkingGroup + * @return + */ + @Override + public void add(LawsWorkingGroup lawsWorkingGroup) { + Date now = new Date(); + lawsWorkingGroup.setCreateTime(now); + lawsWorkingGroup.setUpdateTime(now); + save(lawsWorkingGroup); + } + + /** + * 更新 + * + * @param lawsWorkingGroup + * @return + */ + @Override + public void editById(LawsWorkingGroup lawsWorkingGroup) { + Date now = new Date(); + lawsWorkingGroup.setUpdateTime(now); + saveOrUpdate(lawsWorkingGroup); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @Override + public void deleteById(String id) { + removeById(id); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @Override + public void deleteByIds(List ids) { + removeByIds(ids); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + @Override + public LawsWorkingGroup queryById(String id) { + return getById(id); + } + + @Override + public List realList() { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(LawsWorkingGroup::getDelFlag, "0"); + List list = list(wrapper); + return list; + } +}