zzf 1 год назад
Родитель
Сommit
898b186a09

+ 35 - 0
src/main/java/com/rf/psychological/structure/dao/model/StructureEntity.java

@@ -0,0 +1,35 @@
+package com.rf.psychological.structure.dao.model;
+
+import com.rf.psychological.base.model.BaseEntity;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Index;
+import javax.persistence.Table;
+
+/**
+ * @Author:zzf
+ * @Date:2024/1/4:15:44
+ * @Description:
+ */
+@Entity
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Table(name = "t_structure_info", indexes = {
+        @Index(columnList = "structure_no,structure_name,parent_structure_no")
+})
+@EqualsAndHashCode(callSuper=true)
+@org.hibernate.annotations.Table(appliesTo = "t_structure_info", comment = "组织架构信息表")
+public class StructureEntity extends BaseEntity {
+    @Column(name = "structure_no",columnDefinition = "varchar(50) not null comment '组织架构编号'")
+    private String structureNo;
+    @Column(name = "structure_name",columnDefinition = "varchar(50) not null comment '组织架构名称'")
+    private String structureName;
+    @Column(name = "parent_structure_no",columnDefinition = "varchar(50) not null comment '上级组织架构编号,上级组织架构编号为0表示最上层组织机构'")
+    private String parentStructureNo;
+}

+ 15 - 0
src/main/java/com/rf/psychological/structure/dao/repository/StructureRepository.java

@@ -0,0 +1,15 @@
+package com.rf.psychological.structure.dao.repository;
+
+import com.rf.psychological.base.repository.BaseRepository;
+import com.rf.psychological.structure.dao.model.StructureEntity;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+
+import java.util.List;
+
+public interface StructureRepository extends BaseRepository<StructureEntity,String> {
+    @Query(value = "SELECT t3.id, t3.parent_structure_no, t3.structure_name, t3.structure_no FROM ( SELECT t1.*, IF ( FIND_IN_SET(parent_structure_no, @pids) > 0, @pids \\:= concat(@pids, ',', structure_no), '' ) AS ischild FROM ( SELECT * FROM t_structure_info ) t1,( SELECT @pids \\:= :structureNo ) t2 ) t3 WHERE t3.ischild LIKE :structureNo2 ",nativeQuery = true)
+    List<StructureEntity> findByIdRecursion(@Param("structureNo") String structureNo,@Param("structureNo2")String structureNo2);
+
+
+}

+ 3 - 0
src/main/java/com/rf/psychological/structure/package-info.java

@@ -0,0 +1,3 @@
+package com.rf.psychological.structure;
+/*
+组织架构*/

+ 88 - 0
src/main/java/com/rf/psychological/structure/rest/StructureController.java

@@ -0,0 +1,88 @@
+package com.rf.psychological.structure.rest;
+
+import com.alibaba.fastjson.JSONObject;
+import com.rf.psychological.base.rest.BaseController;
+import com.rf.psychological.security.AesEncryptUtils;
+import com.rf.psychological.security.SafetyProcess;
+import com.rf.psychological.structure.dao.model.StructureEntity;
+import com.rf.psychological.structure.service.StructureService;
+import com.rf.psychological.utils.Result;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Author:zzf
+ * @Date:2024/1/5:09:42
+ * @Description:
+ */
+@Slf4j
+@RestController
+@RequestMapping("/structure")
+@Api(tags = "组织架构")
+public class StructureController extends BaseController {
+
+    @Autowired
+    private StructureService service;
+    @ApiOperation(value = "新增/编辑组织架构",notes = "structureNo 组织架构编号;structureName:组织架构名称;parentStructureNo:上级组织架构编号")
+    @PostMapping("/save")
+    @SafetyProcess
+    public Result save(@RequestBody String json) throws Exception {
+        String data = AesEncryptUtils.decrypt(JSONObject.parseObject(json).getString("data"));
+        StructureEntity entity = JSONObject.parseObject(data).toJavaObject(StructureEntity.class);
+        if (StringUtils.isBlank(entity.getStructureNo())){
+            return fail("组织架构编号为空");
+        }
+        if(StringUtils.isBlank(entity.getStructureName())){
+            return fail("组织架构编号为空");
+        }
+        if(StringUtils.isBlank(entity.getParentStructureNo())){
+            entity.setParentStructureNo("0");
+        }
+        entity = this.service.save(entity);
+        return success(entity);
+    }
+
+    @ApiOperation(value = "删除组织架构")
+    @SafetyProcess
+    @DeleteMapping("delete/{id}")
+    public Result delete(@PathVariable String id ){
+        //TODO 检查组织架构下是否存在用户
+
+         this.service.deleteById(id);
+         return success();
+    }
+
+    @ApiOperation(value = "查询详情")
+    @GetMapping("get/{id}")
+    @SafetyProcess
+    public Result findById(@PathVariable String id){
+        StructureEntity entity = this.service.findById(id);
+        return success(entity);
+    }
+    @ApiOperation(value = "递归查询",notes = "id:组织架构id;includeSelf:是否包含本身;0否 1是")
+    @GetMapping("get/recursion/{id}/{includeSelf}")
+    @SafetyProcess
+    public Result findByIdRecursion(@PathVariable String id,@PathVariable String includeSelf){
+        StructureEntity entity = this.service.findById(id);
+        List<StructureEntity> entitys  = new ArrayList<>();
+        if(entity != null){
+            if(includeSelf.equals("1")){
+                entitys.add(entity);
+            }
+            List<StructureEntity> entityList = this.service.findByIdRecursion(entity.getStructureNo());
+            if(entityList != null && entityList.size()>0){
+                entitys.addAll(entityList);
+            }
+            return success(entitys);
+        }
+
+        return fail("未找到");
+    }
+}

+ 15 - 0
src/main/java/com/rf/psychological/structure/service/StructureService.java

@@ -0,0 +1,15 @@
+package com.rf.psychological.structure.service;
+
+import com.rf.psychological.structure.dao.model.StructureEntity;
+
+import java.util.List;
+
+public interface StructureService {
+    StructureEntity save(StructureEntity entity);
+
+    void deleteById(String id);
+
+    StructureEntity findById(String id);
+
+    List<StructureEntity> findByIdRecursion(String structureNo);
+}

+ 40 - 0
src/main/java/com/rf/psychological/structure/service/impl/StructureServiceImpl.java

@@ -0,0 +1,40 @@
+package com.rf.psychological.structure.service.impl;
+
+import com.rf.psychological.structure.dao.model.StructureEntity;
+import com.rf.psychological.structure.dao.repository.StructureRepository;
+import com.rf.psychological.structure.service.StructureService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @Author:zzf
+ * @Date:2024/1/5:09:41
+ * @Description:
+ */
+@Service
+public class StructureServiceImpl implements StructureService {
+    @Autowired
+    private StructureRepository repository;
+    @Override
+    public StructureEntity save(StructureEntity entity) {
+
+        return this.repository.save(entity);
+    }
+
+    @Override
+    public void deleteById(String id) {
+        this.repository.deleteById(id);
+    }
+
+    @Override
+    public StructureEntity findById(String id) {
+        return this.repository.findById(id).orElse(null);
+    }
+
+    @Override
+    public List<StructureEntity> findByIdRecursion(String structureNo) {
+        return this.repository.findByIdRecursion( structureNo,"%"+structureNo+"%");
+    }
+}