Reiskuchen 5 éve
szülő
commit
f6d51a3947

+ 33 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/DepartmentController.java

@@ -0,0 +1,33 @@
+package com.management.platform.controller;
+
+
+import com.management.platform.service.DepartmentService;
+import com.management.platform.util.HttpRespMsg;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * <p>
+ * 部门 前端控制器
+ * </p>
+ *
+ * @author 吴涛涛
+ * @since 2020-02-11
+ */
+@RestController
+@RequestMapping("/department")
+public class DepartmentController {
+
+    @Autowired
+    private DepartmentService departmentService;
+
+    @RequestMapping("/list")
+    public HttpRespMsg getDepartment(HttpServletRequest request){
+        return departmentService.getDepartmentList(request);
+    }
+}
+

+ 57 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/Department.java

@@ -0,0 +1,57 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 部门
+ * </p>
+ *
+ * @author 吴涛涛
+ * @since 2020-02-11
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class Department extends Model<Department> {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "department_id", type = IdType.AUTO)
+    private Integer departmentId;
+
+    /**
+     * 部门名称
+     */
+    @TableField("department_name")
+    private String departmentName;
+
+    /**
+     * 上级部门id
+     */
+    @TableField("superior_id")
+    private Integer superiorId;
+
+    /**
+     * 所属公司id
+     */
+    @TableField("company_id")
+    private Integer companyId;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.departmentId;
+    }
+
+}

+ 15 - 9
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/User.java

@@ -1,31 +1,31 @@
 package com.management.platform.entity;
 
+import java.math.BigDecimal;
+
 import com.baomidou.mybatisplus.annotation.FieldStrategy;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 
-import java.io.Serializable;
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-
 /**
  * <p>
- *
+ * 
  * </p>
  *
  * @author 吴涛涛
- * @since 2020-02-09
+ * @since 2020-02-11
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
 @Accessors(chain = true)
 public class User extends Model<User> {
 
-    private static final long serialVersionUID = 1L;
+    private static final long serialVersionUID=1L;
 
     /**
      * 主键 雪花算法生成
@@ -81,6 +81,12 @@ public class User extends Model<User> {
     @TableField(value = "cost", updateStrategy = FieldStrategy.IGNORED)
     private BigDecimal cost;
 
+    /**
+     * 部门表外键
+     */
+    @TableField("department_id")
+    private Integer departmentId;
+
 
     @Override
     protected Serializable pkVal() {

+ 15 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/vo/DepartmentVO.java

@@ -0,0 +1,15 @@
+package com.management.platform.entity.vo;
+
+import com.management.platform.entity.Department;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.util.List;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class DepartmentVO extends Department {
+    private List<DepartmentVO> children;
+}

+ 16 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/DepartmentMapper.java

@@ -0,0 +1,16 @@
+package com.management.platform.mapper;
+
+import com.management.platform.entity.Department;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 部门 Mapper 接口
+ * </p>
+ *
+ * @author 吴涛涛
+ * @since 2020-02-11
+ */
+public interface DepartmentMapper extends BaseMapper<Department> {
+
+}

+ 19 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/DepartmentService.java

@@ -0,0 +1,19 @@
+package com.management.platform.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.management.platform.entity.Department;
+import com.management.platform.util.HttpRespMsg;
+
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * <p>
+ * 部门 服务类
+ * </p>
+ *
+ * @author 吴涛涛
+ * @since 2020-02-11
+ */
+public interface DepartmentService extends IService<Department> {
+    HttpRespMsg getDepartmentList(HttpServletRequest request);
+}

+ 105 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/DepartmentServiceImpl.java

@@ -0,0 +1,105 @@
+package com.management.platform.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.management.platform.entity.Department;
+import com.management.platform.entity.vo.DepartmentVO;
+import com.management.platform.mapper.DepartmentMapper;
+import com.management.platform.mapper.UserMapper;
+import com.management.platform.service.DepartmentService;
+import com.management.platform.util.HttpRespMsg;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Stack;
+
+/**
+ * <p>
+ * 部门 服务实现类
+ * </p>
+ *
+ * @author 吴涛涛
+ * @since 2020-02-11
+ */
+@Service
+public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Department> implements DepartmentService {
+
+    @Resource
+    private UserMapper userMapper;
+    @Resource
+    private DepartmentMapper departmentMapper;
+
+    @Override
+    public HttpRespMsg getDepartmentList(HttpServletRequest request) {
+        HttpRespMsg httpRespMsg = new HttpRespMsg();
+        try {
+            //筛选公司下所有的部门
+            Integer companyId = userMapper.selectById(request.getHeader("Token")).getCompanyId();
+            List<Department> departmentList = departmentMapper.selectList(new QueryWrapper<Department>()
+                    .eq("company_id", companyId));
+            List<DepartmentVO> list = new ArrayList<>();
+            Stack<DepartmentVO> stack1 = new Stack<>(); //存放上依赖下的栈
+            Stack<DepartmentVO> stack2 = new Stack<>(); //临时存放对1中的依赖
+            Stack<DepartmentVO> stack3 = new Stack<>(); //存放所有要塞进去的东西
+            for (int i = 0; i < departmentList.size(); i++) {
+                Department department = departmentList.get(i);
+                if (department.getSuperiorId() == null) {
+                    DepartmentVO departmentVO = new DepartmentVO();
+                    BeanUtils.copyProperties(department, departmentVO);
+                    stack1.push(departmentVO);
+                    departmentList.remove(i--);
+                }
+            }
+            while (departmentList.size() > 0) {
+                Boolean isPushed = false;
+                DepartmentVO temp = stack1.peek();
+                for (int i = 0; i < departmentList.size(); i++) {
+                    Department department = departmentList.get(i);
+                    if (department.getSuperiorId().equals(temp.getDepartmentId())) {
+                        isPushed = true;
+                        DepartmentVO departmentVO = new DepartmentVO();
+                        BeanUtils.copyProperties(department, departmentVO);
+                        stack1.push(departmentVO);
+                        departmentList.remove(i--);
+                    }
+                }
+                if (!isPushed) {
+                    stack2.push(stack1.pop());
+                }
+            }
+            while (!stack1.isEmpty()) {
+                DepartmentVO first = stack1.pop();
+                Integer superiorId = first.getSuperiorId();
+                if (superiorId != null) {
+                    stack3.push(first);
+                    while (stack2.peek().getSuperiorId() != null && stack2.peek().getSuperiorId().equals(superiorId)) {
+                        stack3.push(stack2.pop());
+                    }
+                    while (stack1.peek().getSuperiorId() != null && stack1.peek().getSuperiorId().equals(superiorId)) {
+                        stack3.push(stack1.pop());
+                    }
+                    List<DepartmentVO> targetList = new ArrayList<>();
+                    while (!stack3.isEmpty()) {
+                        targetList.add(stack3.pop());
+                    }
+                    stack1.peek().setChildren(targetList);
+                } else {
+                    list.add(first);
+                }
+            }
+            while (!stack2.isEmpty()) {
+                list.add(stack2.pop());
+            }
+            httpRespMsg.data = list;
+        } catch (NullPointerException e) {
+            e.printStackTrace();
+            httpRespMsg.setError("验证失败");
+            return httpRespMsg;
+        }
+        return httpRespMsg;
+    }
+}

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/util/CodeGenerator.java

@@ -204,7 +204,7 @@ public class CodeGenerator {
         //若想要生成的实体类继承某个Controller,则可打开下面注释。写上需要继承的Controller的位置即可
 //        strategy.setSuperControllerClass("com.baomidou.ant.common.BaseController");
         //此处user是表名,多个英文逗号分割
-        strategy.setInclude("user");
+        strategy.setInclude("user", "department");
 //        strategy.setExclude();//数据库表全生成
 //        strategy.setInclude(scanner("user").split(","));//表名,多个英文逗号分割
         strategy.setControllerMappingHyphenStyle(true);

+ 18 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/DepartmentMapper.xml

@@ -0,0 +1,18 @@
+<?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.management.platform.mapper.DepartmentMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.management.platform.entity.Department">
+        <id column="department_id" property="departmentId" />
+        <result column="department_name" property="departmentName" />
+        <result column="superior_id" property="superiorId" />
+        <result column="company_id" property="companyId" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        department_id, department_name, superior_id, company_id
+    </sql>
+
+</mapper>

+ 2 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/UserMapper.xml

@@ -13,11 +13,12 @@
         <result column="role" property="role" />
         <result column="company_id" property="companyId" />
         <result column="cost" property="cost" />
+        <result column="department_id" property="departmentId" />
     </resultMap>
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        id, name, phone, password, portrait_url, create_time, role, company_id, cost
+        id, name, phone, password, portrait_url, create_time, role, company_id, cost, department_id
     </sql>
 
 </mapper>