内部工作组

This commit is contained in:
caozhen
2023-09-06 17:14:48 +08:00
parent 9d7b57493a
commit 6901765754
6 changed files with 480 additions and 0 deletions
@@ -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<LawsWorkingGroup, ILawsWorkingGroupService> {
@Autowired
private ILawsWorkingGroupService lawsWorkingGroupService;
/**
* 查询
*/
@AutoLog(value = "内部工作组-列表查询")
@ApiOperation(value="内部工作组-列表查询", notes="内部工作组-列表查询")
@GetMapping(value = "/list")
public Result<List<LawsWorkingGroup>> queryList(LawsWorkingGroup lawsWorkingGroup, HttpServletRequest req) {
lawsWorkingGroup.setDelFlag("0");
List<LawsWorkingGroup> list = lawsWorkingGroupService.queryList(lawsWorkingGroup, req);
List<LawsWorkingGroup> toTree = this.convertToTree(list);
return Result.OK(toTree);
}
//对列表数据转树结构列表
public List<LawsWorkingGroup> convertToTree(List<LawsWorkingGroup> list) {
List<LawsWorkingGroup> 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<LawsWorkingGroup> list) {
List<LawsWorkingGroup> 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<LawsWorkingGroup> queryById(@RequestParam(name="id",required=true) String id) {
LawsWorkingGroup lawsWorkingGroup = lawsWorkingGroupService.queryById(id);
if(lawsWorkingGroup==null) {
return Result.error("未找到对应数据");
}
// 通过递归查找所有子节点数据
List<LawsWorkingGroup> list = lawsWorkingGroupService.realList();
LawsWorkingGroup workingGroup = convertToTreeById(list, id);
return Result.OK(workingGroup);
}
public LawsWorkingGroup convertToTreeById(List<LawsWorkingGroup> 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<LawsWorkingGroup> list) {
List<LawsWorkingGroup> 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<T> 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<T> 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<T> delete(@RequestBody Map<String, String> map) {
if(!map.containsKey("id") || StringUtils.isEmpty(map.get("id"))){
return Result.error("请选择数据!");
}
List<String> ids = new ArrayList<>();
List<LawsWorkingGroup> list = lawsWorkingGroupService.realList();
ids = this.allChildIdById(list, map.get("id"), ids);
if (ids.size() > 0){
LambdaUpdateWrapper<LawsWorkingGroup> wrapper = new LambdaUpdateWrapper<>();
wrapper.in(LawsWorkingGroup::getId, ids);
wrapper.set(LawsWorkingGroup::getDelFlag, "1");
lawsWorkingGroupService.update(wrapper);
}
return Result.OK("删除成功!");
}
public List<String> allChildIdById(List<LawsWorkingGroup> list, String id, List<String> ids) {
List<String> 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;
}
}
@@ -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<LawsWorkingGroup> subset;
}
@@ -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<LawsWorkingGroup> {
}
@@ -0,0 +1,16 @@
<?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="com.jero.modules.sys.mapper.LawsWorkingGroupMapper">
<resultMap id="LawsWorkingGroupResultMap" type="com.jero.modules.sys.entity.LawsWorkingGroup">
<id column="id" property="id" />
<result column="create_by" property="createBy" />
<result column="create_time" property="createTime" />
<result column="update_by" property="updateBy" />
<result column="update_time" property="updateTime" />
<result column="org_code" property="orgCode" />
<result column="pid" property="pid" />
<result column="name" property="name" />
<result column="level" property="level" />
<result column="del_flag" property="delFlag" />
</resultMap>
</mapper>
@@ -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<LawsWorkingGroup> {
/**
* 列表查询
*
* @param lawsWorkingGroup
* @param req
* @return
*/
List<LawsWorkingGroup> 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<String> ids);
/**
* 通过id查询
*
* @param id
* @return
*/
LawsWorkingGroup queryById(String id);
/**
* 查询所有未逻辑删除的数据
*/
List<LawsWorkingGroup> realList();
}
@@ -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<LawsWorkingGroupMapper, LawsWorkingGroup> implements ILawsWorkingGroupService {
/**
* 列表查询
*
* @param lawsWorkingGroup
* @param req
* @return
*/
@Override
public List<LawsWorkingGroup> 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<String> ids) {
removeByIds(ids);
}
/**
* 通过id查询
*
* @param id
* @return
*/
@Override
public LawsWorkingGroup queryById(String id) {
return getById(id);
}
@Override
public List<LawsWorkingGroup> realList() {
LambdaQueryWrapper<LawsWorkingGroup> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(LawsWorkingGroup::getDelFlag, "0");
List<LawsWorkingGroup> list = list(wrapper);
return list;
}
}