瀏覽代碼

feature 代码提交

xiahan 1 年之前
父節點
當前提交
4f3854f0a9

+ 6 - 0
bs-common/src/main/java/com/rongwei/safecommon/utils/SaveConstans.java

@@ -12,5 +12,11 @@ public class SaveConstans {
     public final static String ORGTYPE_CHEJIAN = "chejian";
     // 部门类型:工段
     public final static String ORGTYPE_GONGDUAN = "gongduan";
+    /**
+     * 集团领导
+     */
+    public static final String GROUP_LEADER = "GroupLeader";
 
+    public static final String MINUS_ONE = "-1";
+    public static final String AND = "and";
 }

+ 38 - 6
cx-safe-check/cx-save-check-common/src/main/java/com/rongwei/sfcommon/utils/CommonUtil.java

@@ -1,9 +1,17 @@
 package com.rongwei.sfcommon.utils;
 
+import com.rongwei.commonservice.service.RedisService;
+import com.rongwei.rwadmincommon.system.vo.SysUserVo;
 import lombok.extern.slf4j.Slf4j;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
 
+import javax.annotation.PostConstruct;
+import javax.servlet.http.HttpServletRequest;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.Calendar;
@@ -16,17 +24,25 @@ import java.util.Date;
  * @date 2021/01/08
  */
 @Slf4j
+@Component
 public class CommonUtil {
-    private static final Logger logger = LoggerFactory.getLogger(CommonUtil.class);
 
-    /**
-     * 获取当前时间对应的周数
-     *
-     * @return
-     */
+
+    @Autowired
+    private RedisService autoRedisService;
+
+    private static RedisService redisService;
+
+    @PostConstruct
+    public void init() {
+        redisService = autoRedisService;
+
+    }
+
     public static String getWeekForYear(boolean returnLastWeek) {
         return getWeekForYear(new Date(), returnLastWeek);
     }
+    private static final Logger logger = LoggerFactory.getLogger(CommonUtil.class);
 
     /**
      * @param date           日期
@@ -55,4 +71,20 @@ public class CommonUtil {
         }
         return YearNum + ";" + weekNum;
     }
+
+    public static SysUserVo getCurrentUser() {
+        // 获取当前登录人信息
+        SysUserVo currUser = null;
+        ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
+        if (attributes != null) {
+            HttpServletRequest request = attributes.getRequest();
+            if (request != null) {
+                String token = request.getHeader("token");
+                if (com.rongwei.rwcommon.utils.StringUtils.isNotEmpty(token)) {
+                    currUser = redisService.getLoginUser(token);
+                }
+            }
+        }
+        return currUser;
+    }
 }

+ 111 - 0
cx-safe-check/cx-save-check-server/src/main/java/com/rongwei/savecheck/controller/CxCommonController.java

@@ -0,0 +1,111 @@
+package com.rongwei.savecheck.controller;
+
+import com.alibaba.fastjson.JSON;
+import com.rongwei.rwadmincommon.system.domain.SysOrganizationDo;
+import com.rongwei.rwadmincommon.system.domain.SysRoleDo;
+import com.rongwei.rwadmincommon.system.vo.SysOrganizationVo;
+import com.rongwei.rwadmincommon.system.vo.SysUserVo;
+import com.rongwei.rwcommon.base.R;
+import com.rongwei.rwcommon.utils.StringUtils;
+import com.rongwei.rwcommon.vo.ColumnQueryType;
+import com.rongwei.rwcommon.vo.CriteriaQuery;
+import com.rongwei.rwcommon.vo.SearchColumnVo;
+import com.rongwei.sfcommon.utils.CommonUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.cloud.context.config.annotation.RefreshScope;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+import static com.rongwei.safecommon.utils.SaveConstans.*;
+
+/**
+ * CxCommonController class
+ *
+ * @author XH
+ * @date 2023/11/17
+ */
+@RestController
+@RequestMapping("/common")
+@RefreshScope
+public class CxCommonController {
+    @Value("#{'${pagepart.blacklist}'.split(',')}")
+    private List<String> blackListPagePartIds;
+
+    private final Logger logger = LoggerFactory.getLogger(getClass());
+
+    public static final SearchColumnVo SEARCH_COLUMN_VO = new SearchColumnVo() {{
+        setField("TENANTID");
+        setFieldType("string");
+        setSymbol("in");
+    }};
+
+    public static final ColumnQueryType COLUMN_QUERY_TYPE = new ColumnQueryType() {{
+        setLastTyepRelation(AND);
+        setColumnInnerRelation(AND);
+    }};
+
+    @PostMapping("/criteria/query")
+    public R weekForYear(@RequestBody Map<String, Object> map) {
+        logger.info("增加tenantId查询条件");
+        if (map.isEmpty()) {
+            logger.error("接口参数异常");
+            return R.ok(new CriteriaQuery());
+        }
+        CriteriaQuery criteriaQuery = JSON.parseObject(JSON.toJSONString(map.get("query")), CriteriaQuery.class);
+        if (criteriaQuery == null) {
+            logger.error("查询参数异常");
+            return R.ok(new CriteriaQuery());
+        }
+        if(StringUtils.isBlank(criteriaQuery.getPagePartId())){
+            logger.error("查询参数异常");
+            return R.ok(criteriaQuery);
+        }
+        // 如果ID在黑名单中直接返回
+        if (blackListPagePartIds.contains(criteriaQuery.getPagePartId())) {
+            return R.ok(criteriaQuery);
+        }
+        SysUserVo currentUser = CommonUtil.getCurrentUser();
+        if (currentUser == null) {
+            logger.error("无法获取到当前登陆人的信息");
+            return R.ok(criteriaQuery);
+        }
+        List<SysRoleDo> roleDos = currentUser.getRoleDos();
+        if (roleDos == null || roleDos.isEmpty()) {
+            logger.error("无法获取到当前登陆人的角色信息");
+            return R.ok(criteriaQuery);
+        }
+        // 判断是否拥有集团领导角色
+        SysRoleDo sysRoleDo = roleDos.stream().filter(role -> GROUP_LEADER.equals(role.getCode())).findFirst().orElse(null);
+        if (sysRoleDo != null) {
+            return R.ok(criteriaQuery);
+        }
+        List<SysOrganizationVo> organizationDoList = currentUser.getOrganizationDoList();
+        if (organizationDoList == null || organizationDoList.isEmpty()) {
+            logger.error("无法获取到当前登陆人所属的组织机构");
+            return R.ok(criteriaQuery);
+        }
+        String topOrgId = organizationDoList.stream()
+                .filter(org -> MINUS_ONE.equals(org.getPid()))
+                .map(SysOrganizationDo::getId)
+                .distinct()
+                .collect(Collectors.joining(","));
+        if (StringUtils.isBlank(topOrgId)) {
+            topOrgId = organizationDoList.stream().map(info -> info.getFullpid().split(",")[1]).distinct().collect(Collectors.joining(","));
+        }
+        SEARCH_COLUMN_VO.setValue(topOrgId);
+        COLUMN_QUERY_TYPE.setColumns(Arrays.asList(SEARCH_COLUMN_VO));
+        List<ColumnQueryType> columnQueryTypes = criteriaQuery.getColumnQueryTypes();
+        columnQueryTypes.add(COLUMN_QUERY_TYPE);
+        criteriaQuery.setColumnQueryTypes(columnQueryTypes);
+        return R.ok(criteriaQuery);
+    }
+}

+ 5 - 0
cx-safe-check/pom.xml

@@ -23,5 +23,10 @@
             <artifactId>bs-common</artifactId>
             <version>1.0-SNAPSHOT</version>
         </dependency>
+        <dependency>
+            <groupId>com.rongwei</groupId>
+            <artifactId>rw-common-utils</artifactId>
+            <version>1.1-SNAPSHOT</version>
+        </dependency>
     </dependencies>
 </project>