Просмотр исходного кода

租户 机构管理 字典 区划

785834757 1 год назад
Родитель
Сommit
6f50e24553
31 измененных файлов с 709 добавлено и 225 удалено
  1. 4 4
      authentication/src/main/resources/mapper/SysUserRoleMapper.xml
  2. 12 0
      commons/src/main/java/com/jzg/commons/core/base/BaseController.java
  3. 1 1
      gateway/src/main/resources/application.yml
  4. 9 0
      tenant/openfeign/src/main/java/com/jzg/openfeign/client/SystemClient.java
  5. 7 0
      tenant/openfeign/src/main/java/com/jzg/openfeign/entity/po/SysArea.java
  6. 4 0
      tenant/openfeign/src/main/java/com/jzg/openfeign/mapper/SysAreaMapper.java
  7. 30 0
      tenant/organization/src/main/java/com/jzg/organization/controller/AreaController.java
  8. 4 7
      tenant/organization/src/main/java/com/jzg/organization/controller/DeptController.java
  9. 42 0
      tenant/organization/src/main/java/com/jzg/organization/controller/DictController.java
  10. 121 0
      tenant/organization/src/main/java/com/jzg/organization/entity/po/SysArea.java
  11. 4 46
      tenant/organization/src/main/java/com/jzg/organization/entity/po/SysDept.java
  12. 26 0
      tenant/organization/src/main/java/com/jzg/organization/entity/po/SysDict.java
  13. 27 0
      tenant/organization/src/main/java/com/jzg/organization/entity/po/SysDictType.java
  14. 19 0
      tenant/organization/src/main/java/com/jzg/organization/entity/po/SysSystem.java
  15. 41 0
      tenant/organization/src/main/java/com/jzg/organization/entity/vo/SysAreaVo.java
  16. 16 0
      tenant/organization/src/main/java/com/jzg/organization/entity/vo/SysUserVo.java
  17. 18 0
      tenant/organization/src/main/java/com/jzg/organization/mapper/SysAreaMapper.java
  18. 20 0
      tenant/organization/src/main/java/com/jzg/organization/mapper/SysDictMapper.java
  19. 19 0
      tenant/organization/src/main/java/com/jzg/organization/mapper/SysDictTypeMapper.java
  20. 9 0
      tenant/organization/src/main/java/com/jzg/organization/mapper/SysSystemMapper.java
  21. 15 0
      tenant/organization/src/main/java/com/jzg/organization/mapper/SysUserMapper.java
  22. 36 0
      tenant/organization/src/main/java/com/jzg/organization/service/SysAreaService.java
  23. 0 1
      tenant/organization/src/main/java/com/jzg/organization/service/SysDeptService.java
  24. 8 0
      tenant/organization/src/main/java/com/jzg/organization/service/SysSystemService.java
  25. 25 0
      tenant/organization/src/main/java/com/jzg/organization/service/SysUserService.java
  26. 53 0
      tenant/organization/src/main/java/com/jzg/organization/service/impl/SysAreaServiceImpl.java
  27. 64 166
      tenant/organization/src/main/java/com/jzg/organization/service/impl/SysDeptServiceImpl.java
  28. 17 0
      tenant/organization/src/main/java/com/jzg/organization/service/impl/SysSystemServiceImpl.java
  29. 35 0
      tenant/organization/src/main/java/com/jzg/organization/service/impl/SysUserServiceImpl.java
  30. 3 0
      tenant/organization/src/main/resources/application.yml
  31. 20 0
      tenant/organization/src/main/resources/mapper/SysUserMapper.xml

+ 4 - 4
authentication/src/main/resources/mapper/SysUserRoleMapper.xml

@@ -9,10 +9,10 @@
             ss.sys_code
         FROM
             sys_user su
-                LEFT JOIN sys_user_role sur ON su.id = sur.user_id
-                LEFT JOIN sys_role sr ON sr.id = sur.role_id
-                LEFT JOIN sys_role_perms srp ON sur.role_id = srp.role_id
-                LEFT JOIN sys_system ss ON ss.sys_code = sr.system_code
+                INNER JOIN sys_user_role sur ON su.id = sur.user_id
+                INNER JOIN sys_role sr ON sr.id = sur.role_id
+                INNER JOIN sys_role_perms srp ON sur.role_id = srp.role_id
+                INNER JOIN sys_system ss ON ss.sys_code = sr.system_code
         WHERE
             su.id = #{userId}
 

+ 12 - 0
commons/src/main/java/com/jzg/commons/core/base/BaseController.java

@@ -86,4 +86,16 @@ public class BaseController {
         return userInfo.getString("deptId");
     }
 
+    public String getUserSystemCode(){
+        ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
+        HttpServletRequest request = attributes.getRequest();
+        String authorizationHeader = request.getHeader("Authorization");
+        if(Objects.isNull(authorizationHeader) || Objects.isNull(redissonClient.getBucket(authorizationHeader).get())){
+            throw new SystemException("用户登录信息过期");
+        }
+        String userJsonStr = redissonClient.getBucket(authorizationHeader).get().toString();
+        JSONObject userInfo = JSONObject.parseObject(userJsonStr);
+        return userInfo.getString("system");
+    }
+
 }

+ 1 - 1
gateway/src/main/resources/application.yml

@@ -21,4 +21,4 @@ spring:
         - id: tenant_route
           uri: http://localhost:8084/
           predicates:
-            - Path=/tenant/**,/dept/**
+            - Path=/tenant/**,/dept/**,/area/**,/dict/**

+ 9 - 0
tenant/openfeign/src/main/java/com/jzg/openfeign/client/SystemClient.java

@@ -0,0 +1,9 @@
+package com.jzg.openfeign.client;
+
+import org.springframework.cloud.openfeign.FeignClient;
+
+@FeignClient("system")
+public interface SystemClient {
+
+
+}

+ 7 - 0
tenant/openfeign/src/main/java/com/jzg/openfeign/entity/po/SysArea.java

@@ -0,0 +1,7 @@
+package com.jzg.openfeign.entity.po;
+
+import lombok.Data;
+
+@Data
+public class SysArea {
+}

+ 4 - 0
tenant/openfeign/src/main/java/com/jzg/openfeign/mapper/SysAreaMapper.java

@@ -0,0 +1,4 @@
+package com.jzg.openfeign.mapper;
+
+public class SysAreaMapper {
+}

+ 30 - 0
tenant/organization/src/main/java/com/jzg/organization/controller/AreaController.java

@@ -0,0 +1,30 @@
+package com.jzg.organization.controller;
+
+import com.jzg.commons.core.page.HttpResult;
+import com.jzg.organization.entity.vo.SysAreaVo;
+import com.jzg.organization.service.SysAreaService;
+import io.swagger.v3.oas.annotations.media.Schema;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * 区划管理接口
+ */
+@RestController
+@RequestMapping("/area")
+public class AreaController {
+
+    @Autowired
+    private SysAreaService sysAreaService;
+
+    @Schema(description = "省市区树结构查询")
+    @PostMapping(value = "/queryTree")
+    public HttpResult<List<SysAreaVo>> queryTree() {
+        List<SysAreaVo> sysAreaVos = sysAreaService.querySysArea();
+        return HttpResult.ok(sysAreaVos);
+    }
+}

+ 4 - 7
tenant/organization/src/main/java/com/jzg/organization/controller/DeptController.java

@@ -31,11 +31,7 @@ public class DeptController extends BaseController {
     @PostMapping(value = "/update")
     public HttpResult updateDept(@RequestBody SysDept sysDept) {
         SysDept byId = sysDeptService.getById(sysDept.getId());
-        if (sysDept.getManagementSource() != null){
-            if (!sysDept.getManagementSource().equals(byId.getManagementSource())) {
-                return HttpResult.error("机构已被设置来源无法修改");
-            }
-        }
+
         sysDeptService.updateDept(sysDept);
         return HttpResult.ok();
     }
@@ -51,6 +47,7 @@ public class DeptController extends BaseController {
         return sysDeptService.batchLeader(sysDeptVo);
     }
 
+    @Operation(summary = "批量删除机构接口", description = "批量删除机构接口")
     @PostMapping(value = "/batchDeleteDept")
     public HttpResult batchDeleteDept(@RequestBody SysDeptVo sysDeptVo) {
         return sysDeptService.batchDeleteDept(sysDeptVo);
@@ -60,8 +57,8 @@ public class DeptController extends BaseController {
     @PostMapping(value = "/getDeptTree")
     public HttpResult<List<SysDept>> getDeptTree(){
         String deptId = getUserDeptId();
-
-        return HttpResult.ok(sysDeptService.getDeptTree(deptId));
+        List<SysDept> deptTree = sysDeptService.getDeptTree(deptId);
+        return HttpResult.ok(deptTree);
     }
 
 

+ 42 - 0
tenant/organization/src/main/java/com/jzg/organization/controller/DictController.java

@@ -0,0 +1,42 @@
+package com.jzg.organization.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.jzg.commons.core.page.HttpResult;
+import com.jzg.organization.entity.po.SysDict;
+import com.jzg.organization.entity.po.SysDictType;
+import com.jzg.organization.mapper.SysDictMapper;
+import com.jzg.organization.mapper.SysDictTypeMapper;
+import io.swagger.v3.oas.annotations.Operation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * 字典管理接口
+ */
+@RestController
+@RequestMapping("/dict")
+public class DictController {
+
+    @Autowired
+    private SysDictMapper sysDictMapper;
+
+    @Autowired
+    private SysDictTypeMapper sysDictTypeMapper;
+
+    @GetMapping("/get")
+    @Operation(summary = "获取字典", description = "获取字典")
+    public HttpResult addDept(String dictCode) {
+        SysDictType sysDictType = sysDictTypeMapper.selectOne(new LambdaQueryWrapper<SysDictType>()
+                .eq(SysDictType::getDictCode, dictCode));
+        List<SysDict> sysDicts = new ArrayList<>();
+        if(!Objects.isNull(sysDictType)) {
+            sysDicts = sysDictMapper.selectList(new LambdaQueryWrapper<SysDict>()
+                    .eq(SysDict::getTypeId, sysDictType.getId()));
+        }
+        return HttpResult.ok(sysDicts);
+    }
+}

+ 121 - 0
tenant/organization/src/main/java/com/jzg/organization/entity/po/SysArea.java

@@ -0,0 +1,121 @@
+package com.jzg.organization.entity.po;
+
+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 lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * 省市县代码
+ * @TableName sys_area
+ */
+@TableName(value ="sys_area")
+@NoArgsConstructor
+@Data
+public class SysArea implements Serializable {
+    /**
+     * 
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 地区代码
+     */
+    @TableField(value = "area_code")
+    private String areaCode;
+
+    /**
+     * 地区名称
+     */
+    @TableField(value = "area_cname")
+    private String areaCname;
+
+    /**
+     * 地区对应上级代码
+     */
+    @TableField(value = "upper_code")
+    private String upperCode;
+
+    /**
+     * 地区层级
+     */
+    @TableField(value = "level")
+    private Integer level;
+
+    /**
+     * 是否有效
+     */
+    @TableField(value = "valid_status")
+    private Integer validStatus;
+
+    /***
+     * 省市县全名称
+     */
+    @TableField(exist = false)
+    private String allName;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+
+    public SysArea(SysArea sysArea) {
+        this.id = sysArea.id;
+        this.areaCode = sysArea.areaCode;
+        this.areaCname = sysArea.areaCname;
+        this.upperCode = sysArea.upperCode;
+        this.level = sysArea.level;
+        this.validStatus = sysArea.validStatus;
+    }
+
+
+    @Override
+    public boolean equals(Object that) {
+        if (this == that) {
+            return true;
+        }
+        if (that == null) {
+            return false;
+        }
+        if (getClass() != that.getClass()) {
+            return false;
+        }
+        SysArea other = (SysArea) that;
+        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))
+            && (this.getAreaCode() == null ? other.getAreaCode() == null : this.getAreaCode().equals(other.getAreaCode()))
+            && (this.getAreaCname() == null ? other.getAreaCname() == null : this.getAreaCname().equals(other.getAreaCname()))
+            && (this.getUpperCode() == null ? other.getUpperCode() == null : this.getUpperCode().equals(other.getUpperCode()))
+            && (this.getValidStatus() == null ? other.getValidStatus() == null : this.getValidStatus().equals(other.getValidStatus()));
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());
+        result = prime * result + ((getAreaCode() == null) ? 0 : getAreaCode().hashCode());
+        result = prime * result + ((getAreaCname() == null) ? 0 : getAreaCname().hashCode());
+        result = prime * result + ((getUpperCode() == null) ? 0 : getUpperCode().hashCode());
+        result = prime * result + ((getValidStatus() == null) ? 0 : getValidStatus().hashCode());
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", id=").append(id);
+        sb.append(", areaCode=").append(areaCode);
+        sb.append(", areaCname=").append(areaCname);
+        sb.append(", upperCode=").append(upperCode);
+        sb.append(", validStatus=").append(validStatus);
+        sb.append(", serialVersionUID=").append(serialVersionUID);
+        sb.append("]");
+        return sb.toString();
+    }
+}

+ 4 - 46
tenant/organization/src/main/java/com/jzg/organization/entity/po/SysDept.java

@@ -3,6 +3,7 @@ package com.jzg.organization.entity.po;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.jzg.commons.core.base.BaseModel;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
@@ -13,7 +14,7 @@ import java.util.List;
 @TableName(value = "sys_dept")
 @Data
 @Schema(description = "机构管理")
-public class SysDept implements Serializable {
+public class SysDept extends BaseModel implements Serializable {
     @TableId(value = "id")
     @Schema(description = "主键")
     private String id;
@@ -30,33 +31,12 @@ public class SysDept implements Serializable {
     @Schema(description = "排序")
     private Integer orderNum;
 
-    @TableField(value = "create_by")
-    @Schema(description = "创建人")
-    private String createBy;
-
-    @TableField(value = "create_time")
-    @Schema(description = "创建时间")
-    private Date createTime;
-
-    @TableField(value = "update_by")
-    @Schema(description = "更新人")
-    private String updateBy;
-
-    @TableField(value = "update_time")
-    @Schema(description = "更新时间")
-    private Date updateTime;
-
-    @TableField(value = "del_flag")
-    @Schema(description = "是否删除  -1:已删除  0:正常")
-    private Integer delFlag;
-
     @TableField(value = "com_type")
     @Schema(description = "机构类型")
     private String comType;
 
-    @TableField(value = "com_level")
-    @Schema(description = "机构级别")
-    private String comLevel;
+    @Schema(description = "机构路径")
+    private String route;
 
     @TableField(value = "address")
     @Schema(description = "机构地址")
@@ -66,13 +46,6 @@ public class SysDept implements Serializable {
     @Schema(description = "负责人id")
     private String leaderId;
 
-    @TableField(value = "com_attribute")
-    @Schema(description = "机构性质")
-    private String comAttribute;
-
-    @TableField(value = "is_stop")
-    @Schema(description = "是否停业")
-    private String isStop;
 
     @TableField(value = "province")
     @Schema(description = "省")
@@ -86,25 +59,10 @@ public class SysDept implements Serializable {
     @Schema(description = "区县")
     private String area;
 
-    @TableField(value = "house")
-    @Schema(description = "门店")
-    private String house;
-
-    @TableField(value = "dept_type")
-    @Schema(description = "子公司C,门店M,部门D")
-    private String deptType;
-
     /** 系统code */
     @Schema(description = "系统code")
     private String systemCode;
 
-    /**
-     * @see com.jzg.constants.ManagementSourceEnum
-     */
-    @TableField(value = "management_source")
-    @Schema(description = "机构来源(渠道、个代、电销)")
-    private String managementSource;
-
     @TableField(exist = false)
     @Schema(description = "子机构")
     private List<SysDept> children;

+ 26 - 0
tenant/organization/src/main/java/com/jzg/organization/entity/po/SysDict.java

@@ -0,0 +1,26 @@
+package com.jzg.organization.entity.po;
+
+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 com.jzg.commons.core.base.BaseModel;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * 省市县代码
+ * @TableName sys_area
+ */
+@Data
+public class SysDict extends BaseModel implements Serializable {
+    private String id;
+    private String typeId;
+    private String value;
+    private String label;
+    private String description;
+    private String sort;
+    private String remarks;
+}

+ 27 - 0
tenant/organization/src/main/java/com/jzg/organization/entity/po/SysDictType.java

@@ -0,0 +1,27 @@
+package com.jzg.organization.entity.po;
+
+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 lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * 省市县代码
+ * @TableName sys_area
+ */
+@Data
+public class SysDictType implements Serializable {
+    private String id;
+    private String name;
+    private String dictCode;
+    private String parentId;
+    private String description;
+    private String remarks;
+    private String is_delete;
+    private String system_code;
+
+}

+ 19 - 0
tenant/organization/src/main/java/com/jzg/organization/entity/po/SysSystem.java

@@ -0,0 +1,19 @@
+package com.jzg.organization.entity.po;
+
+import lombok.Data;
+
+@Data
+public class SysSystem {
+
+    private String id;
+
+    private String sysCode;
+
+    private String sysName;
+
+    private String provinceId;
+
+    private String cityId;
+
+    private String districtId;
+}

+ 41 - 0
tenant/organization/src/main/java/com/jzg/organization/entity/vo/SysAreaVo.java

@@ -0,0 +1,41 @@
+package com.jzg.organization.entity.vo;
+
+import com.jzg.organization.entity.po.SysArea;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.List;
+import java.util.Map;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class SysAreaVo extends SysArea {
+
+    private static final long serialVersionUID = -8235445978142897003L;
+
+    private List<SysAreaVo> child;
+
+    public SysAreaVo(SysArea sysArea) {
+        super(sysArea);
+    }
+
+    /***
+     * 添加回显状态
+     */
+    private Boolean flag;
+
+
+    public void setFlagByTree(SysAreaVo sysArea, Map<String,SysArea> map) {
+        sysArea.setFlag(false);
+        if (map.get(sysArea.getAreaCode())!=null) {
+            sysArea.setFlag(true);
+            return;
+        }
+        if(sysArea.getChild()==null || sysArea.getChild().size()==0){
+            return;
+        }
+        for (SysAreaVo child : sysArea.getChild()) {
+            setFlagByTree(child, map);
+        }
+    }
+}

+ 16 - 0
tenant/organization/src/main/java/com/jzg/organization/entity/vo/SysUserVo.java

@@ -0,0 +1,16 @@
+package com.jzg.organization.entity.vo;
+
+import lombok.Data;
+
+@Data
+public class SysUserVo {
+
+    private String id;
+    private String username;
+    private String password;
+    private String salt;
+    private String mobile;
+    private String deptId;
+    private String systemCode;
+
+}

+ 18 - 0
tenant/organization/src/main/java/com/jzg/organization/mapper/SysAreaMapper.java

@@ -0,0 +1,18 @@
+package com.jzg.organization.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jzg.organization.entity.po.SysArea;
+
+/**
+* @author Administrator
+* @description 针对表【sys_area(省市县代码)】的数据库操作Mapper
+* @createDate 2023-11-15 11:23:28
+* @Entity generator.domain.SysArea
+*/
+public interface SysAreaMapper extends BaseMapper<SysArea> {
+
+}
+
+
+
+

+ 20 - 0
tenant/organization/src/main/java/com/jzg/organization/mapper/SysDictMapper.java

@@ -0,0 +1,20 @@
+package com.jzg.organization.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jzg.organization.entity.po.SysArea;
+import com.jzg.organization.entity.po.SysDict;
+import com.jzg.organization.entity.po.SysDictType;
+
+/**
+* @author Administrator
+* @description 针对表【sys_area(省市县代码)】的数据库操作Mapper
+* @createDate 2023-11-15 11:23:28
+* @Entity generator.domain.SysArea
+*/
+public interface SysDictMapper extends BaseMapper<SysDict> {
+
+}
+
+
+
+

+ 19 - 0
tenant/organization/src/main/java/com/jzg/organization/mapper/SysDictTypeMapper.java

@@ -0,0 +1,19 @@
+package com.jzg.organization.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jzg.organization.entity.po.SysDict;
+import com.jzg.organization.entity.po.SysDictType;
+
+/**
+* @author Administrator
+* @description 针对表【sys_area(省市县代码)】的数据库操作Mapper
+* @createDate 2023-11-15 11:23:28
+* @Entity generator.domain.SysArea
+*/
+public interface SysDictTypeMapper extends BaseMapper<SysDictType> {
+
+}
+
+
+
+

+ 9 - 0
tenant/organization/src/main/java/com/jzg/organization/mapper/SysSystemMapper.java

@@ -0,0 +1,9 @@
+package com.jzg.organization.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jzg.organization.entity.po.SysSystem;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface SysSystemMapper extends BaseMapper<SysSystem> {
+}

+ 15 - 0
tenant/organization/src/main/java/com/jzg/organization/mapper/SysUserMapper.java

@@ -0,0 +1,15 @@
+package com.jzg.organization.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jzg.organization.entity.po.SysUser;
+import com.jzg.organization.entity.vo.SysUserVo;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface SysUserMapper extends BaseMapper<SysUser> {
+
+    List<SysUserVo> getUserInfo(@Param("param") SysUserVo sysUserVo);
+}

+ 36 - 0
tenant/organization/src/main/java/com/jzg/organization/service/SysAreaService.java

@@ -0,0 +1,36 @@
+package com.jzg.organization.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.jzg.organization.entity.po.SysArea;
+import com.jzg.organization.entity.vo.SysAreaVo;
+
+
+import java.util.List;
+
+/**
+ * @author Administrator
+ * @description 针对表【sys_area(省市县代码)】的数据库操作Service
+ * @createDate 2023-11-15 11:23:28
+ */
+public interface SysAreaService extends IService<SysArea> {
+
+    /**
+     * 省市区树结构查询
+     */
+    List<SysAreaVo> querySysArea();
+
+    /**
+     * 按照level查询
+     */
+    List<SysArea> queryByLevel(Integer level);
+
+    /**
+     * 获取所有上级数据
+     *
+     * @param sysArea
+     * @return
+     */
+    List<SysArea> queryAllParent(SysArea sysArea);
+
+
+}

+ 0 - 1
tenant/organization/src/main/java/com/jzg/organization/service/SysDeptService.java

@@ -10,7 +10,6 @@ import java.util.List;
 
 public interface SysDeptService extends IService<SysDept> {
 
-    public int test();
     /**
      * 新增机构
      */

+ 8 - 0
tenant/organization/src/main/java/com/jzg/organization/service/SysSystemService.java

@@ -0,0 +1,8 @@
+package com.jzg.organization.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.jzg.organization.entity.po.SysSystem;
+
+public interface SysSystemService extends IService<SysSystem> {
+    public SysSystem getBySysCode(String sysCode);
+}

+ 25 - 0
tenant/organization/src/main/java/com/jzg/organization/service/SysUserService.java

@@ -0,0 +1,25 @@
+package com.jzg.organization.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.jzg.organization.entity.po.SysArea;
+import com.jzg.organization.entity.po.SysUser;
+import com.jzg.organization.entity.vo.SysAreaVo;
+import com.jzg.organization.entity.vo.SysUserVo;
+
+import java.util.List;
+
+/**
+ * @author Administrator
+ * @description 针对表【sys_area(省市县代码)】的数据库操作Service
+ * @createDate 2023-11-15 11:23:28
+ */
+public interface SysUserService extends IService<SysUser> {
+
+    /**
+     * 获取人员信息
+     * @param sysUserVo
+     * @return
+     */
+    List<SysUserVo> getUserInfo(SysUserVo sysUserVo);
+
+}

+ 53 - 0
tenant/organization/src/main/java/com/jzg/organization/service/impl/SysAreaServiceImpl.java

@@ -0,0 +1,53 @@
+package com.jzg.organization.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jzg.organization.entity.po.SysArea;
+import com.jzg.organization.entity.vo.SysAreaVo;
+import com.jzg.organization.mapper.SysAreaMapper;
+import com.jzg.organization.service.SysAreaService;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * @author Administrator
+ * @description 针对表【sys_area(省市县代码)】的数据库操作Service实现
+ * @createDate 2023-11-15 11:23:28
+ */
+@Service
+public class SysAreaServiceImpl extends ServiceImpl<SysAreaMapper, SysArea> implements SysAreaService {
+
+    @Override
+    public List<SysAreaVo> querySysArea() {
+        List<SysArea> list = list();
+        List<SysAreaVo> collect = list.stream().map(SysAreaVo::new).collect(Collectors.toList());
+        Map<String, List<SysAreaVo>> map = collect.stream().collect(Collectors.groupingBy(SysAreaVo::getUpperCode));
+        collect.forEach(i -> i.setChild(map.getOrDefault(i.getAreaCode(), new ArrayList<>())));
+        return map.get("0");
+    }
+
+    @Override
+    public List<SysArea> queryByLevel(Integer level) {
+        return baseMapper.selectList(new LambdaQueryWrapper<SysArea>().eq(SysArea::getLevel, level));
+    }
+
+    //递归查询他的所有上级
+    @Override
+    public List<SysArea> queryAllParent(SysArea sysArea) {
+        List<SysArea> list = new ArrayList<>();
+        list.add(sysArea);
+        if (sysArea.getLevel() == 1) {
+            return list;
+        }
+        SysArea parent = baseMapper.selectOne(new LambdaQueryWrapper<SysArea>().eq(SysArea::getAreaCode, sysArea.getUpperCode()));
+        list.addAll(queryAllParent(parent));
+        return list;
+    }
+
+}
+
+

+ 64 - 166
tenant/organization/src/main/java/com/jzg/organization/service/impl/SysDeptServiceImpl.java

@@ -5,19 +5,25 @@ import cn.hutool.core.lang.tree.Tree;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jzg.commons.core.base.BaseController;
 import com.jzg.commons.core.page.HttpResult;
 import com.jzg.commons.exception.SystemException;
+import com.jzg.commons.util.idgen.IdGenerate;
 import com.jzg.organization.entity.po.SysDept;
+import com.jzg.organization.entity.po.SysSystem;
+import com.jzg.organization.entity.po.SysUser;
 import com.jzg.organization.entity.vo.SysDeptVo;
+import com.jzg.organization.entity.vo.SysUserVo;
 import com.jzg.organization.mapper.SysDeptMapper;
 import com.jzg.organization.service.SysDeptService;
 import com.jzg.commons.util.AssertionUtils;
 import com.jzg.commons.util.TreeBuildUtils;
+import com.jzg.organization.service.SysSystemService;
+import com.jzg.organization.service.SysUserService;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.ObjectUtils;
 
 import java.util.*;
 import java.util.stream.Collectors;
@@ -28,106 +34,36 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
     @Autowired
     private SysDeptMapper sysDeptMapper;
 
-    @Override
-    public int test() {
-        return 0;
-    }
+    @Autowired
+    private SysSystemService sysSystemService;
+
+    @Autowired
+    private BaseController baseController;
+
+    @Autowired
+    private SysUserService userService;
+
 
     @Override
     @Transactional(rollbackFor = Exception.class)
     public SysDeptVo addDept(SysDeptVo sysDeptVo) {
         SysDept sysDept = new SysDept();
         BeanUtils.copyProperties(sysDeptVo, sysDept);
-        String comlevel = ObjectUtils.isEmpty(sysDept.getComLevel()) ? "" : sysDept.getComLevel();
+        sysDept.setId(IdGenerate.nextId());
+        //获取父级id
         String parentId = sysDept.getParentId();
 
-        String number;
-        if (comlevel.equals("2")) {
-            AssertionUtils.isStringEmpty(sysDept.getProvince(), "二级机构省份必填");
-            number = sysDept.getProvince().substring(0, 2);
-        } else if (comlevel.equals("3")) {
-            AssertionUtils.isStringEmpty(sysDept.getCity(), "三级机构市必填");
-            number = sysDept.getCity().substring(0, 4);
-            String maxId = sysDeptMapper.getMaxId(parentId, sysDeptVo.getDeptType(), comlevel);
-            if (!maxId.equals("0")) {
-                String substring = maxId.substring(sysDept.getParentId().length() + 1);
-                int i = Integer.parseInt("1" + substring) + 1;
-                number = String.valueOf(i);
-            } else {
-                number = "101";
-            }
-        } else if (comlevel.equals("4")) {
-            AssertionUtils.isStringEmpty(sysDept.getArea(), "四级机构区必填");
-            number = sysDept.getArea().substring(0, 6);
-            String maxId = sysDeptMapper.getMaxId(parentId, sysDeptVo.getDeptType(), comlevel);
-            if (!maxId.equals("0")) {
-                String substring = maxId.substring(sysDept.getParentId().length() + 1);
-                int i = Integer.parseInt("1" + substring) + 1;
-                number = String.valueOf(i);
-            } else {
-                number = "101";
-            }
-        } else {
-            String deptType = sysDeptVo.getDeptType();
-
-            if ("C".equals(sysDept.getDeptType()) && comlevel.equals("5")) {
-                sysDeptVo.setDeptType("M");
-            } else if ("D".equals(sysDept.getDeptType())) {
-                sysDeptVo.setDeptType("D");
-                deptType = "M";
+        //设置机构路径
+        if(!parentId.equals("0")){
+            SysDept parentSysDept = baseMapper.selectById(parentId);
+            if(!Objects.isNull(parentSysDept)){
+                sysDept.setRoute(parentSysDept.getRoute() + "-" + sysDept.getId());
             }
-
-            String maxId = sysDeptMapper.getMaxId(parentId, deptType, comlevel);
-            if (!maxId.equals("0")) {
-                String substring = maxId.substring(sysDept.getParentId().length() + 1);
-                int i = Integer.parseInt("1" + substring) + 1;
-                number = String.valueOf(i);
-            } else {
-                number = "101";
-            }
-        }
-
-        String substring = number.substring(number.length() - 2);
-        String serialNumber;
-        if ("M,D".contains(sysDeptVo.getDeptType())) {
-            serialNumber = parentId + sysDeptVo.getDeptType() + substring;
-        } else {
-            serialNumber = parentId + substring;
-        }
-
-        sysDept.setId(serialNumber);
-
-        SysDept dept = getById(sysDept.getId());
-        if (!ObjectUtils.isEmpty(dept)) {
-            throw new SystemException("机构编号为:" + dept.getId() + " " + dept.getName() + "已被占用");
+        }else{
+            sysDept.setRoute(sysDept.getId());
         }
-        SysDept parentDept = sysDeptMapper.selectById(sysDept.getParentId());
-
-        if (parentDept.getComLevel().equals("5")) {
-            sysDept.setManagementSource(parentDept.getManagementSource());
-        }
-
-        // 查询当前部门序号是否存在
-        LambdaQueryWrapper<SysDept> qw = new LambdaQueryWrapper<>();
-        qw.eq(SysDept::getDelFlag, 0);  // 删除标志为未删除
-        qw.eq(SysDept::getParentId, sysDept.getParentId()); // 父级部门ID相同
-        qw.eq(SysDept::getOrderNum, sysDept.getOrderNum());  // 排序号相同
-        boolean exists = sysDeptMapper.exists(qw);
 
-        if (exists) {
-            // 如果存在,查询该父级部门下排序号大于当前部门的部门列表
-            LambdaQueryWrapper<SysDept> lqw = new LambdaQueryWrapper<>();
-            lqw.eq(SysDept::getDelFlag, 0); // 删除标志为未删除
-            lqw.eq(SysDept::getParentId, sysDept.getParentId()); // 父级部门ID相同
-            lqw.ge(SysDept::getOrderNum, sysDept.getOrderNum());  // 排序号大于等于当前部门
-            List<SysDept> sysDeptList = list(lqw);
-            // 更新这些部门的排序号
-            sysDeptList.forEach(i -> {
-                i.setOrderNum(i.getOrderNum() + 1);
-                updateById(i);
-            });
-        }
-        boolean b = save(sysDept);
+        boolean b = this.save(sysDept);
         AssertionUtils.isSucceed(b, "删除失败");
         sysDeptVo.setId(sysDept.getId());
         return sysDeptVo;
@@ -138,60 +74,18 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
     public HttpResult updateDept(SysDept sysDeptVo) {
         // 查询修改的序号是否存在
         LambdaQueryWrapper<SysDept> qw = new LambdaQueryWrapper<>();
-        qw.eq(SysDept::getDelFlag, 0);  // 删除标志为未删除
         qw.eq(SysDept::getParentId, sysDeptVo.getParentId()); // 父级部门ID相同
-        qw.eq(SysDept::getOrderNum, sysDeptVo.getOrderNum());  // 排序号相同
+        String route = "";
         boolean exists = sysDeptMapper.exists(qw);
         //不存在则直接修改
         if (!exists) {
             sysDeptMapper.updateById(sysDeptVo);
             return HttpResult.ok();
-        }
-
-        //查询机构
-        SysDept sysDept = getById(sysDeptVo.getId());
-        //原本的序号
-        Integer orderNum = sysDept.getOrderNum();
-        //本次修改的序号
-        Integer newOrderNum = sysDeptVo.getOrderNum();
-        // 向上换位
-        if (newOrderNum < orderNum) {
-            // 查询该父级部门下排序号大于当前部门的部门列表
-            LambdaQueryWrapper<SysDept> lqw = new LambdaQueryWrapper<>();
-            lqw.eq(SysDept::getDelFlag, 0); // 删除标志为未删除
-            lqw.eq(SysDept::getParentId, sysDeptVo.getParentId()); // 父级部门ID相同
-            lqw.ge(SysDept::getOrderNum, sysDeptVo.getOrderNum());  // 排序号大于等于当前部门
-            List<SysDept> sysDeptList = list(lqw);
-            sysDeptList.sort(Comparator.comparing(SysDept::getOrderNum));
-            for (SysDept dept : sysDeptList) {
-                dept.setOrderNum(dept.getOrderNum() + 1);
-                updateById(dept);
-                if (dept.getOrderNum().equals(orderNum)) {
-                    break;
-                }
-            }
-            sysDeptMapper.updateById(sysDeptVo);
-        }
-        //向下换位
-        if (newOrderNum > orderNum) {
-            // 查询该父级部门下排序号小于当前部门的部门列表
-            LambdaQueryWrapper<SysDept> lqw = new LambdaQueryWrapper<>();
-            lqw.eq(SysDept::getDelFlag, 0); // 删除标志为未删除
-            lqw.eq(SysDept::getParentId, sysDeptVo.getParentId()); // 父级部门ID相同
-            lqw.le(SysDept::getOrderNum, sysDeptVo.getOrderNum());  // 排序号大于等于当前部门
-            List<SysDept> sysDeptList = list(lqw);
-            sysDeptList.sort(Comparator.comparing(SysDept::getOrderNum).reversed());
-            for (SysDept dept : sysDeptList) {
-                dept.setOrderNum(dept.getOrderNum() - 1);
-                updateById(dept);
-                if (dept.getOrderNum().equals(orderNum)) {
-                    break;
-                }
-            }
-            sysDeptMapper.updateById(sysDeptVo);
-        }
-        if (newOrderNum.equals(orderNum)) {
-            sysDeptMapper.updateById(sysDeptVo);
+        }else{
+            //则修改路径
+            SysDept parentDept = sysDeptMapper.selectById(sysDeptVo.getParentId());
+            route = parentDept.getRoute() + "-" + sysDeptVo.getId();
+            sysDeptVo.setRoute(parentDept.getRoute() + "-" + sysDeptVo.getId());
         }
         return HttpResult.ok();
     }
@@ -219,58 +113,63 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
             throw new SystemException("机构不存在");
         }
         List<SysDept> deptList = lambdaQuery().eq(SysDept::getParentId, sysDept.getId()).list();
-//        List<SysUser> userList = userService.lambdaQuery().eq(SysUser::getDeptId, sysDept.getId()).list();
         if (!deptList.isEmpty()) {
             throw new SystemException(sysDept.getName() + "机构下还有其他隶属机构请将这些子机构删除后,再进行删除");
         }
-//        if (!userList.isEmpty()) {
-//            throw new SystemException(sysDept.getName() + "机构下还有其他用户请将这些用户删除后,再进行删除");
-//        }
-        sysDept.setDelFlag(1);
-        sysDeptMapper.updateById(sysDept);
+        SysUserVo vo = new SysUserVo();
+        vo.setDeptId(sysDept.getId());
+        List<SysUserVo> userInfo = userService.getUserInfo(vo);
+        if (userInfo.stream().count() > 0) {
+            throw new SystemException(sysDept.getName() + "机构下还有其他用户请将这些用户删除后,再进行删除");
+        }
+        sysDeptMapper.deleteById(sysDeptVo.getId());
         return HttpResult.ok("删除机构成功");
     }
 
     @Override
     @Transactional
     public HttpResult batchDeleteDept(SysDeptVo sysDeptVo) {
-        // 更新每个部门的负责人
-        for (String id : sysDeptVo.getDeptIds()) {
-            SysDept sysDept = getById(id);
-            if (sysDept == null) {
-                throw new SystemException("机构不存在");
-            }
-            List<SysDept> deptList = lambdaQuery().eq(SysDept::getParentId, sysDept.getId()).list();
-//            List<SysUser> userList = userService.lambdaQuery().eq(SysUser::getDeptId, sysDept.getId()).list();
-            if (!deptList.isEmpty()) {
-                throw new SystemException(sysDept.getName() + "机构下还有其他隶属机构请将这些子机构删除后,再进行删除");
-            }
-//            if (!userList.isEmpty()) {
-//                throw new SystemException(sysDept.getName() + "机构下还有其他用户请将这些用户删除后,再进行删除");
-//            }
-            sysDept.setDelFlag(1);
-            sysDeptMapper.updateById(sysDept);
-        }
+        sysDeptVo.getDeptIds().forEach(id->{
+            SysDeptVo vo = new SysDeptVo();
+            vo.setId(id);
+            this.deleteDept(vo);
+        });
         return HttpResult.ok("批量删除机构成功");
     }
 
     @Override
     public List<SysDept> getDeptTree(String deptId) {
+        String userSystemCode = baseController.getUserSystemCode();
+        SysSystem bySysCode = sysSystemService.getBySysCode(userSystemCode);
+        List<SysDept> sysDepts = new ArrayList<>();
         SysDept sysDept = getById(deptId);
         LambdaQueryWrapper<SysDept> lqw = new LambdaQueryWrapper<>();
-        lqw.eq(SysDept::getDelFlag, 0);
-        lqw.likeRight(SysDept::getId, deptId);
+        if(!deptId.equals("")) {
+            lqw.likeRight(SysDept::getRoute, deptId);
+        }
         List<SysDept> sysDeptList = list(lqw);
         Map<String, List<SysDept>> map = sysDeptList.stream().collect(Collectors.groupingBy(SysDept::getParentId));
         sysDeptList.forEach(i -> i.setChildren(map.getOrDefault(i.getId(), new ArrayList<>())));
-        return map.get(sysDept.getParentId());
+        if(!Objects.isNull(sysDept)) {
+            sysDepts = map.get(sysDept.getParentId());
+        }else{
+            sysDepts = map.get("0");
+        }
+        List<SysDept> newResultDept = new ArrayList<>();
+        SysDept baseDept = new SysDept();
+        baseDept.setId("0");
+        baseDept.setName(bySysCode.getSysName());
+        baseDept.setChildren(sysDepts);
+        newResultDept.add(baseDept);
+        return newResultDept;
     }
 
     @Override
     public List<Tree<String>> selectDeptTreeList(String systemCode) {
         LambdaQueryWrapper<SysDept> lqw = buildQueryWrapper(systemCode);
         List<SysDept> depts = sysDeptMapper.selectDeptList(lqw);
-        return buildDeptTreeSelect(depts);
+        List<Tree<String>> trees = buildDeptTreeSelect(depts);
+        return trees;
     }
 
     /**
@@ -294,7 +193,6 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
     private LambdaQueryWrapper<SysDept> buildQueryWrapper(String systemCode) {
         LambdaQueryWrapper<SysDept> lqw = Wrappers.lambdaQuery();
         lqw.eq(SysDept::getSystemCode, systemCode);
-        lqw.eq(SysDept::getDelFlag, 0);
         lqw.orderByAsc(SysDept::getParentId);
         lqw.orderByAsc(SysDept::getOrderNum);
         return lqw;

+ 17 - 0
tenant/organization/src/main/java/com/jzg/organization/service/impl/SysSystemServiceImpl.java

@@ -0,0 +1,17 @@
+package com.jzg.organization.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jzg.organization.entity.po.SysSystem;
+import com.jzg.organization.mapper.SysSystemMapper;
+import com.jzg.organization.service.SysSystemService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class SysSystemServiceImpl extends ServiceImpl<SysSystemMapper, SysSystem> implements SysSystemService {
+
+    public SysSystem getBySysCode(String sysCode){
+        return baseMapper.selectOne(new LambdaQueryWrapper<SysSystem>()
+                .eq(SysSystem::getSysCode,sysCode));
+    }
+}

+ 35 - 0
tenant/organization/src/main/java/com/jzg/organization/service/impl/SysUserServiceImpl.java

@@ -0,0 +1,35 @@
+package com.jzg.organization.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jzg.organization.entity.po.SysArea;
+import com.jzg.organization.entity.po.SysUser;
+import com.jzg.organization.entity.vo.SysAreaVo;
+import com.jzg.organization.entity.vo.SysUserVo;
+import com.jzg.organization.mapper.SysAreaMapper;
+import com.jzg.organization.mapper.SysUserMapper;
+import com.jzg.organization.service.SysAreaService;
+import com.jzg.organization.service.SysUserService;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * @author Administrator
+ * @description 针对表【sys_area(省市县代码)】的数据库操作Service实现
+ * @createDate 2023-11-15 11:23:28
+ */
+@Service
+public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> implements SysUserService {
+
+    @Override
+    public List<SysUserVo> getUserInfo(SysUserVo sysUserVo) {
+        return baseMapper.getUserInfo(sysUserVo);
+    }
+
+}
+
+

+ 3 - 0
tenant/organization/src/main/resources/application.yml

@@ -34,4 +34,7 @@ tenant:
   ignoreTables:
     - sys_system
     - sys_role_perms
+    - sys_area
+    - sys_dict
+    - sys_user_jzg_info
   ignoreLoginNames:

+ 20 - 0
tenant/organization/src/main/resources/mapper/SysUserMapper.xml

@@ -0,0 +1,20 @@
+<?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.jzg.organization.mapper.SysUserMapper">
+
+    <select id="getUserInfo" resultType="com.jzg.organization.entity.vo.SysUserVo">
+        SELECT
+            *
+        FROM
+            sys_user su
+        LEFT JOIN sys_user_jzg_info suji ON su.id = suji.user_id
+        WHERE
+            1=1
+        <if test="param.id != null and param.id != ''">
+            AND su.id = #{param.id}
+        </if>
+        <if test="param.deptId != null and param.deptId != ''">
+            AND suji.dept_id = #{param.deptId}
+        </if>
+    </select>
+</mapper>