From 1045f256c2d9477b177dec61246bc0d174133f97 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期一, 20 一月 2025 18:02:49 +0800
Subject: [PATCH] Query适配数据权限、项目查询增加数据权限
---
flowable/src/main/java/com/ycl/service/IFlowTaskService.java | 2
start/src/main/resources/application-dev.yml | 2
business/src/main/resources/mapper/ProjectInfoMapper.xml | 11 ++++-
business/src/main/java/com/ycl/mapper/PlanMapper.java | 4 +
flowable/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java | 2
business/src/main/java/com/ycl/mapper/ProjectInfoMapper.java | 8 +++-
flowable/src/main/java/com/ycl/controller/FlowTaskController.java | 10 ++--
business/src/main/resources/mapper/PlanMapper.xml | 2 +
business/src/main/resources/mapper/ProjectProcessMapper.xml | 2 +
system/src/main/java/com/ycl/system/domain/base/AbsQuery.java | 5 ++
system/src/main/java/com/ycl/framework/aspectj/DataScopeAspect.java | 8 +++-
business/src/main/java/com/ycl/service/impl/ProjectInfoServiceImpl.java | 24 ++++++-----
business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java | 3 +
business/src/main/java/com/ycl/service/impl/PlanServiceImpl.java | 2
business/src/main/java/com/ycl/mapper/ProjectProcessMapper.java | 4 +
business/src/main/java/com/ycl/domain/vo/ProjectProcessVO.java | 3 +
16 files changed, 63 insertions(+), 29 deletions(-)
diff --git a/business/src/main/java/com/ycl/domain/vo/ProjectProcessVO.java b/business/src/main/java/com/ycl/domain/vo/ProjectProcessVO.java
index b4353b7..703f8e9 100644
--- a/business/src/main/java/com/ycl/domain/vo/ProjectProcessVO.java
+++ b/business/src/main/java/com/ycl/domain/vo/ProjectProcessVO.java
@@ -25,6 +25,9 @@
@ApiModelProperty("娴佺▼瀹氫箟id")
private String processDefId;
+ @ApiModelProperty("鍙戝竷id")
+ private String deployId;
+
@ApiModelProperty("娴佺▼鍚嶇О")
private String flowableProcessName;
diff --git a/business/src/main/java/com/ycl/mapper/PlanMapper.java b/business/src/main/java/com/ycl/mapper/PlanMapper.java
index 1e2695b..de4a871 100644
--- a/business/src/main/java/com/ycl/mapper/PlanMapper.java
+++ b/business/src/main/java/com/ycl/mapper/PlanMapper.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.ycl.common.annotation.DataScope;
import com.ycl.domain.entity.Plan;
import com.ycl.domain.query.PlanQuery;
import com.ycl.domain.vo.PlanVO;
@@ -27,6 +28,7 @@
/**
* 鍒嗛〉
*/
- IPage getPage(IPage page, @Param("query") PlanQuery query);
+ @DataScope(deptAlias = "d")
+ IPage getPage(@Param("query") PlanQuery query, IPage page);
}
diff --git a/business/src/main/java/com/ycl/mapper/ProjectInfoMapper.java b/business/src/main/java/com/ycl/mapper/ProjectInfoMapper.java
index 0a1b711..f3b4467 100644
--- a/business/src/main/java/com/ycl/mapper/ProjectInfoMapper.java
+++ b/business/src/main/java/com/ycl/mapper/ProjectInfoMapper.java
@@ -2,6 +2,8 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.ycl.common.annotation.DataScope;
+import com.ycl.common.core.domain.BaseEntity;
import com.ycl.domain.entity.ProjectInfo;
import com.ycl.domain.excel.ProjectExcelTemplate;
import com.ycl.domain.query.ProjectInfoQuery;
@@ -31,9 +33,11 @@
/**
* 鍒嗛〉
*/
- IPage getPage(IPage page, @Param("query") ProjectInfoQuery query);
+ @DataScope(deptAlias = "d")
+ IPage getPage(@Param("query") ProjectInfoQuery query, IPage page);
- List<ProjectVO> homeCount();
+ @DataScope(deptAlias = "d")
+ List<ProjectVO> homeCount(BaseEntity params);
List<ProjectVO> selectProjectDetailByIds(@Param("dataIdList") List<Long> dataIdList);
diff --git a/business/src/main/java/com/ycl/mapper/ProjectProcessMapper.java b/business/src/main/java/com/ycl/mapper/ProjectProcessMapper.java
index 76bb113..64405b6 100644
--- a/business/src/main/java/com/ycl/mapper/ProjectProcessMapper.java
+++ b/business/src/main/java/com/ycl/mapper/ProjectProcessMapper.java
@@ -1,5 +1,6 @@
package com.ycl.mapper;
+import com.ycl.common.annotation.DataScope;
import com.ycl.domain.entity.ProjectInfo;
import com.ycl.domain.entity.ProjectProcess;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -30,7 +31,8 @@
/**
* 鍒嗛〉
*/
- IPage getPage(IPage page, @Param("query") ProjectProcessQuery query);
+ @DataScope(deptAlias = "d")
+ IPage getPage(@Param("query") ProjectProcessQuery query, IPage page);
/**
* 閫氳繃娴佺▼瀹炰緥id鑾峰彇椤圭洰id銆佸悕绉�
diff --git a/business/src/main/java/com/ycl/service/impl/PlanServiceImpl.java b/business/src/main/java/com/ycl/service/impl/PlanServiceImpl.java
index 4a161da..a8a5814 100644
--- a/business/src/main/java/com/ycl/service/impl/PlanServiceImpl.java
+++ b/business/src/main/java/com/ycl/service/impl/PlanServiceImpl.java
@@ -105,7 +105,7 @@
@Override
public Result page(PlanQuery query) {
IPage<ProjectPlanResponseVO> page = PageUtil.getPage(query, ProjectPlanResponseVO.class);
- baseMapper.getPage(page, query);
+ baseMapper.getPage(query, page);
// 瀵瑰垎椤靛悗鐨勫睘鎬ц繘琛屽鐞�
List<ProjectPlanResponseVO> records = page.getRecords();
for (ProjectPlanResponseVO record : records) {
diff --git a/business/src/main/java/com/ycl/service/impl/ProjectInfoServiceImpl.java b/business/src/main/java/com/ycl/service/impl/ProjectInfoServiceImpl.java
index 2d11117..d2c2534 100644
--- a/business/src/main/java/com/ycl/service/impl/ProjectInfoServiceImpl.java
+++ b/business/src/main/java/com/ycl/service/impl/ProjectInfoServiceImpl.java
@@ -13,9 +13,11 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ycl.common.annotation.DataScope;
import com.ycl.common.base.Result;
import com.ycl.common.config.SysConfig;
import com.ycl.common.constant.Constants;
+import com.ycl.common.core.domain.BaseEntity;
import com.ycl.common.enums.business.FileTypeEnum;
import com.ycl.common.enums.business.ImportanceTypeEnum;
import com.ycl.common.enums.business.ProjectCategoryEnum;
@@ -233,18 +235,18 @@
Long userId = SecurityUtils.getUserId();
String ancestors = sysDeptMapper.selectAncestors(userId);
String[] ancestorArr = ancestors.split(",");
- for (String ancestor : ancestorArr) {
- if ("101".equals(ancestor)) { // 涓氫富
- query.setCreateBy(userId);
- query.setRole(0);
- } else if ("102".equals(ancestor)) { // 瀹℃壒
- query.setUsedStatus(1);
- query.setRole(1);
- }
- }
+// for (String ancestor : ancestorArr) {
+// if ("101".equals(ancestor)) { // 涓氫富
+// query.setCreateBy(userId);
+// query.setRole(0);
+// } else if ("102".equals(ancestor)) { // 瀹℃壒
+// query.setUsedStatus(1);
+// query.setRole(1);
+// }
+// }
IPage<ProjectInfoVO> page = PageUtil.getPage(query, ProjectInfoVO.class);
- baseMapper.getPage(page, query);
+ baseMapper.getPage(query, page);
List<ProjectInfoVO> records = page.getRecords();
List<ProjectVO> list = new ArrayList<>();
records.forEach(vo -> {
@@ -315,7 +317,7 @@
// {"type":"鐪侀噸鐐归」鐩�","count":0,"amount":"0.00","text":"鐪�"}]}}
IndexCountVO indexCountVO = new IndexCountVO();
List<IndexProPhaseCountVO> proPhaseCountVO = new ArrayList<>();
- List<ProjectVO> projectVOS = baseMapper.homeCount();
+ List<ProjectVO> projectVOS = baseMapper.homeCount(new BaseEntity());
List<ProjectVO> reserve = new ArrayList<>();
List<ProjectVO> previous = new ArrayList<>();
List<ProjectVO> implement = new ArrayList<>();
diff --git a/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java b/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java
index 15f8119..473bb14 100644
--- a/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java
+++ b/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java
@@ -90,13 +90,14 @@
@Override
public Result page(ProjectProcessQuery query) {
IPage<ProjectProcessVO> page = PageUtil.getPage(query, ProjectProcessVO.class);
- baseMapper.getPage(page, query);
+ baseMapper.getPage(query, page);
for (ProjectProcessVO vo : page.getRecords()) {
if (Objects.nonNull(vo.getProcessDefId())) {
ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionId(vo.getProcessDefId()).singleResult();
if (Objects.nonNull(processDefinition)) {
vo.setSuspended(processDefinition.isSuspended());
vo.setFlowableProcessName(processDefinition.getName() + "(v" + processDefinition.getVersion() + ")");
+ vo.setDeployId(processDefinition.getDeploymentId());
}
}
}
diff --git a/business/src/main/resources/mapper/PlanMapper.xml b/business/src/main/resources/mapper/PlanMapper.xml
index 0b433f7..139c557 100644
--- a/business/src/main/resources/mapper/PlanMapper.xml
+++ b/business/src/main/resources/mapper/PlanMapper.xml
@@ -63,6 +63,7 @@
pi.invest_type
FROM t_project_info AS pi
LEFT JOIN t_plan AS p ON p.project_info_id = pi.id
+ LEFT JOIN sys_dept d ON d.dept_id = PI.project_owner_unit
<where>
pi.deleted = 0
<if test="query.projectName!= null and query.projectName!= ''">
@@ -83,6 +84,7 @@
<if test="query.yearStatus!= null">
AND p.year_status = #{query.yearStatus}
</if>
+ ${query.params.dataScope}
</where>
</select>
diff --git a/business/src/main/resources/mapper/ProjectInfoMapper.xml b/business/src/main/resources/mapper/ProjectInfoMapper.xml
index b02a2b9..d196b96 100644
--- a/business/src/main/resources/mapper/ProjectInfoMapper.xml
+++ b/business/src/main/resources/mapper/ProjectInfoMapper.xml
@@ -103,6 +103,7 @@
LEFT JOIN t_project_investment_policy_compliance TPIPC ON TPI.id = TPIPC.project_id and TPIPC.deleted = 0
LEFT JOIN t_project_unit_registration_info TPURI ON TPI.id = TPURI.project_id and TPURI.deleted = 0
LEFT JOIN t_project_process TPP ON TPI.id = TPP.project_id and TPP.deleted = 0
+ LEFT JOIN sys_dept d ON d.dept_id = TPI.project_owner_unit
<where>
TPI.deleted = 0
<if test="query.projectName !=null and query.projectName!=''">
@@ -164,16 +165,22 @@
and TPI.used_status = #{query.usedStatus}
</if>
</if>
+ ${query.params.dataScope}
</where>
order by TPI.gmt_create
</select>
- <select id="homeCount" resultType="com.ycl.domain.vo.ProjectVO">
+ <select id="homeCount" parameterType="com.ycl.common.core.domain.BaseEntity" resultType="com.ycl.domain.vo.ProjectVO">
SELECT TPI.*,TPIF.total_investment,TPP.process_ins_id as processId
FROM t_project_info TPI
LEFT JOIN t_project_investment_funding TPIF ON TPI.id = TPIF.project_id and TPIF.deleted = 0
LEFT JOIN t_project_process TPP ON TPI.id = TPP.project_id and TPP.deleted = 0
- WHERE TPI.deleted = 0
+ LEFT JOIN sys_dept d ON TPI.project_owner_unit = d.dept_id
+ <where>
+ TPI.deleted = 0
+ ${params.dataScope}
+ </where>
+
</select>
<select id="selectProjectDetailByIds" resultType="com.ycl.domain.vo.ProjectVO">
diff --git a/business/src/main/resources/mapper/ProjectProcessMapper.xml b/business/src/main/resources/mapper/ProjectProcessMapper.xml
index aa8f67a..37c80a6 100644
--- a/business/src/main/resources/mapper/ProjectProcessMapper.xml
+++ b/business/src/main/resources/mapper/ProjectProcessMapper.xml
@@ -65,6 +65,7 @@
FROM
t_project_info PI
LEFT JOIN t_project_process TPP ON TPP.project_id = PI.id AND TPP.deleted = 0 AND PI.deleted = 0
+ LEFT JOIN sys_dept d ON d.dept_id = PI.project_owner_unit
<where>
<if test="query.projectName != null and query.projectName != ''">
AND PI.project_name like concat('%', #{query.projectName}, '%')
@@ -72,6 +73,7 @@
<if test="query.projectCode != null and query.projectCode != ''">
AND PI.project_code like concat('%', #{query.projectCode}, '%')
</if>
+ ${query.params.dataScope}
</where>
</select>
diff --git a/flowable/src/main/java/com/ycl/controller/FlowTaskController.java b/flowable/src/main/java/com/ycl/controller/FlowTaskController.java
index 4a23d6f..2232c0f 100644
--- a/flowable/src/main/java/com/ycl/controller/FlowTaskController.java
+++ b/flowable/src/main/java/com/ycl/controller/FlowTaskController.java
@@ -75,8 +75,8 @@
@ApiOperation(value = "娴佺▼鍘嗗彶娴佽浆璁板綍", response = FlowTaskDto.class)
@GetMapping(value = "/flowRecord")
- public AjaxResult flowRecord(String procInsId, String deployId) {
- return flowTaskService.flowRecord(procInsId, deployId);
+ public AjaxResult flowRecord(String procInsId) {
+ return flowTaskService.flowRecord(procInsId);
}
@ApiOperation(value = "鏍规嵁浠诲姟ID鏌ヨ鎸傝浇鐨勮〃鍗曚俊鎭�")
@@ -258,13 +258,13 @@
/**
* 娴佺▼鑺傜偣淇℃伅
*
- * @param procInsId 娴佺▼瀹炰緥id
+ * @param processInsId 娴佺▼瀹炰緥id
* @return
*/
@GetMapping("/flowXmlAndNode")
- public AjaxResult flowXmlAndNode(@RequestParam(value = "procInsId", required = false) String procInsId,
+ public AjaxResult flowXmlAndNode(@RequestParam(value = "processInsId", required = false) String processInsId,
@RequestParam(value = "deployId", required = false) String deployId) {
- return flowTaskService.flowXmlAndNode(procInsId, deployId);
+ return flowTaskService.flowXmlAndNode(processInsId, deployId);
}
/**
diff --git a/flowable/src/main/java/com/ycl/service/IFlowTaskService.java b/flowable/src/main/java/com/ycl/service/IFlowTaskService.java
index 35f11b5..393fc17 100644
--- a/flowable/src/main/java/com/ycl/service/IFlowTaskService.java
+++ b/flowable/src/main/java/com/ycl/service/IFlowTaskService.java
@@ -145,7 +145,7 @@
* @param procInsId 娴佺▼瀹炰緥Id
* @return
*/
- AjaxResult flowRecord(String procInsId,String deployId);
+ AjaxResult flowRecord(String procInsId);
/**
* 鏍规嵁浠诲姟ID鏌ヨ鎸傝浇鐨勮〃鍗曚俊鎭�
diff --git a/flowable/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java b/flowable/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java
index ef68382..32f9399 100644
--- a/flowable/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java
+++ b/flowable/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java
@@ -800,7 +800,7 @@
* @return
*/
@Override
- public AjaxResult flowRecord(String procInsId, String deployId) {
+ public AjaxResult flowRecord(String procInsId) {
Map<String, Object> map = new HashMap<String, Object>();
if (StringUtils.isNotBlank(procInsId)) {
List<HistoricActivityInstance> list = historyService
diff --git a/start/src/main/resources/application-dev.yml b/start/src/main/resources/application-dev.yml
index c288bd0..fafad6b 100644
--- a/start/src/main/resources/application-dev.yml
+++ b/start/src/main/resources/application-dev.yml
@@ -7,7 +7,7 @@
# 鐗堟潈骞翠唤
copyrightYear: 2024
# 鏂囦欢璺緞 绀轰緥锛� Windows閰嶇疆D:/projectManagement/uploadPath锛孡inux閰嶇疆 /home/projectManagement/uploadPath锛�
- profile: D:/projectManagement/uploadPath
+ profile: E:/ycl/file
# 鑾峰彇ip鍦板潃寮�鍏�
addressEnabled: false
# 楠岃瘉鐮佺被鍨� math 鏁板瓧璁$畻 char 瀛楃楠岃瘉
diff --git a/system/src/main/java/com/ycl/framework/aspectj/DataScopeAspect.java b/system/src/main/java/com/ycl/framework/aspectj/DataScopeAspect.java
index 8ae1e70..7c9cf60 100644
--- a/system/src/main/java/com/ycl/framework/aspectj/DataScopeAspect.java
+++ b/system/src/main/java/com/ycl/framework/aspectj/DataScopeAspect.java
@@ -2,6 +2,8 @@
import java.util.ArrayList;
import java.util.List;
+
+import com.ycl.system.domain.base.AbsQuery;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
@@ -151,10 +153,12 @@
if (StringUtils.isNotBlank(sqlString.toString()))
{
Object params = joinPoint.getArgs()[0];
- if (StringUtils.isNotNull(params) && params instanceof BaseEntity)
- {
+ if (StringUtils.isNotNull(params) && params instanceof BaseEntity) {
BaseEntity baseEntity = (BaseEntity) params;
baseEntity.getParams().put(DATA_SCOPE, " AND (" + sqlString.substring(4) + ")");
+ } else if (StringUtils.isNotNull(params) && params instanceof AbsQuery) {
+ AbsQuery query = (AbsQuery) params;
+ query.getParams().put(DATA_SCOPE, " AND (" + sqlString.substring(4) + ")");
}
}
}
diff --git a/system/src/main/java/com/ycl/system/domain/base/AbsQuery.java b/system/src/main/java/com/ycl/system/domain/base/AbsQuery.java
index 940053d..909f96b 100644
--- a/system/src/main/java/com/ycl/system/domain/base/AbsQuery.java
+++ b/system/src/main/java/com/ycl/system/domain/base/AbsQuery.java
@@ -3,6 +3,9 @@
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
+import java.util.HashMap;
+import java.util.Map;
+
/**
* 鍩虹鍒嗛〉鏌ヨ锛岄粯璁ょ涓�椤碉紝姣忛〉10鏉�
*
@@ -18,4 +21,6 @@
@ApiModelProperty(value = "姣忛〉鏉℃暟", required = true)
private long pageSize = 10L;
+ public Map<String, Object> params = new HashMap<>(2);
+
}
--
Gitblit v1.8.0