瀏覽代碼

获取当前用户所属公司的所有下级

yangzian 3 年之前
父節點
當前提交
a5d6020712

+ 15 - 0
jeecg-boot-material-view/src/main/java/org/jeecg/ctop/material/controller/KuaiShouMaterialStareController.java

@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject;
 import lombok.extern.slf4j.Slf4j;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.ctop.material.service.MaterialStareService;
+import org.jeecg.ctop.material.service.impl.MaterialStareServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -230,5 +231,19 @@ public class KuaiShouMaterialStareController {
 
 
 
+    //获取当前用户所属公司的所有下级
+    @GetMapping("/getCompanyAllSubordinateByUserId")
+    public Result getCompanyAllSubordinateByUserId(@RequestParam(name="userId") String userId) {
+       return materialStareService.getCompanyAllSubordinateByUserId(userId);
+    }
+
+
+
+
+
+
+
+
+
 
 }

+ 3 - 2
jeecg-boot-material-view/src/main/java/org/jeecg/ctop/material/mapper/MaterialStareMapper.java

@@ -16,8 +16,9 @@ import java.util.Set;
 public interface MaterialStareMapper {
 
 
-    Set<String> getAffiliateId(@Param("leaderId")String userId);
-    Set<String> querySubordinateRecursive(@Param("leaderIds")Set<String> leaderIds);
+    String getUserCompanyByUserId(@Param("userId")String userId);
+    Set<String> getAffiliateId(@Param("leaderId")String leaderId,@Param("companyId")String companyId);
+    Set<String> querySubordinateRecursive(@Param("companyId")String companyId,@Param("leaderIds")Set<String> leaderIds);
 
 
 

+ 36 - 10
jeecg-boot-material-view/src/main/java/org/jeecg/ctop/material/mapper/xml/MaterialStareMapper.xml

@@ -591,22 +591,48 @@
 
 
 
+    <select id="getUserCompanyByUserId" resultType="java.lang.String">
+        SELECT
+            company_id as companyId
+        FROM
+            user_company
+        WHERE
+            user_id = #{userId}
+            LIMIT 1
+    </select>
 
     <select id="getAffiliateId" resultType="java.lang.String">
-        SELECT distinct id
-        FROM sys_user
-        WHERE leader_id = #{leaderId}
-          and status = 1
-          and del_flag = 0
+        SELECT DISTINCT
+            u.id
+        FROM
+            sys_user u,
+            user_company c
+        WHERE
+            u.id = c.user_id
+        <if test="leaderId != null and leaderId != '' ">
+            AND u.leader_id = #{leaderId}
+        </if>
+        <if test="companyId != null and companyId != '' ">
+              AND c.company_id = #{companyId}
+        </if>
+          AND u.STATUS = 1
+          AND u.del_flag = 0
     </select>
 
     <select id="querySubordinateRecursive" resultType="java.lang.String">
-        SELECT distinct id
-        FROM sys_user
+        SELECT DISTINCT
+        u.id
+        FROM
+        sys_user u,
+        user_company c
         WHERE
-        status = 1
-        and del_flag = 0
-        and leader_id in
+        u.id = c.user_id
+        AND u.STATUS = 1
+        AND u.del_flag = 0
+        <if test="companyId != null and companyId != '' ">
+            AND c.company_id = #{companyId}
+        </if>
+        and u.leader_id in
         <foreach collection="leaderIds" item="item" separator=","
                  open="(" close=")">
             #{item}

+ 3 - 0
jeecg-boot-material-view/src/main/java/org/jeecg/ctop/material/service/MaterialStareService.java

@@ -30,5 +30,8 @@ public interface MaterialStareService {
     Result getKuaiShouAccountPieChar(long accountId,String startTime, String endTime);
 
 
+    Result getCompanyAllSubordinateByUserId(String userId);
+
+
 
 }

+ 17 - 6
jeecg-boot-material-view/src/main/java/org/jeecg/ctop/material/service/impl/MaterialStareServiceImpl.java

@@ -540,31 +540,42 @@ public class MaterialStareServiceImpl implements MaterialStareService {
 
 //===========================================查询下级员工========================
 
+    public Result getCompanyAllSubordinateByUserId(String userId){
+        Set<String> operatorUserIds = getAffiliateId(userId);
+        return Result.successMsg("查询该用户所有下级userId",operatorUserIds);
+    }
+
+
+
+
+
     /**
-     * 查询当前人员所有下级 返回自己和下属id
+     * 查询当前人员  所属公司 返回自己和下属id
      */
     public Set<String> getAffiliateId(String userId) {
+        //查询用户所属公司
+        String companyId = materialStareMapper.getUserCompanyByUserId(userId);
         Set<String> result;
         //查询当前用户是否存在下级
-        Set<String> subordinate = materialStareMapper.getAffiliateId(userId);
+        Set<String> subordinate = materialStareMapper.getAffiliateId(userId,companyId);
         if (subordinate.isEmpty()) {
             subordinate.add(userId);
             return subordinate;
         } else {
-            result = querySubordinate(subordinate, subordinate);
+            result = querySubordinate(subordinate, subordinate,companyId);
             result.add(userId);
         }
         return result;
     }
 
     //递归查询
-    private Set<String> querySubordinate(Set<String> leaderIds, Set<String> result) {
+    private Set<String> querySubordinate(Set<String> leaderIds, Set<String> result,String companyId) {
         if (leaderIds.isEmpty()) {
             return result;
         }
-        Set<String> temp = materialStareMapper.querySubordinateRecursive(leaderIds);
+        Set<String> temp = materialStareMapper.querySubordinateRecursive(companyId,leaderIds);
         result.addAll(temp);
-        querySubordinate(temp, result);
+        querySubordinate(temp, result,companyId);
         return result;
     }
 //===========================================查询下级员工========================