|
|
@@ -1421,6 +1421,297 @@ public class GxtWorkOrderServiceImpl implements IGxtWorkOrderService
|
|
|
return gxtWorkOrderMapper.updateGxtWorkOrder(gxtWorkOrder);
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<SysDept> getSummaryList(SysDept sysDept){
|
|
|
+ addBusinessDataScopeFilter(sysDept);
|
|
|
+ return deptMapper.getSummaryList(sysDept);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 添加业务特定的数据权限过滤条件
|
|
|
+ * 基于角色的数据范围进行自定义权限控制
|
|
|
+ *
|
|
|
+ * @param sysDept 月度工单汇总列表查询条件
|
|
|
+ */
|
|
|
+ private void addBusinessDataScopeFilter(SysDept sysDept) {
|
|
|
+ // 获取当前登录用户
|
|
|
+ LoginUser loginUser = SecurityUtils.getLoginUser();
|
|
|
+ if (loginUser == null) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ SysUser currentUser = loginUser.getUser();
|
|
|
+ if (currentUser == null) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 如果是超级管理员,不过滤数据
|
|
|
+ if (currentUser.isAdmin()) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取用户角色
|
|
|
+ List<SysRole> roles = currentUser.getRoles();
|
|
|
+ if (roles == null || roles.isEmpty()) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 构建业务特定的数据权限SQL
|
|
|
+ StringBuilder businessSql = new StringBuilder();
|
|
|
+
|
|
|
+ // 遍历用户角色,根据角色的数据范围添加业务特定的权限控制
|
|
|
+ for (SysRole role : roles) {
|
|
|
+ String dataScope = role.getDataScope();
|
|
|
+
|
|
|
+ // 如果是全部数据权限,则不过滤
|
|
|
+ if (DataScopeAspect.DATA_SCOPE_ALL.equals(dataScope)) {
|
|
|
+ businessSql.setLength(0); // 清空之前的条件
|
|
|
+ break; // 全部数据权限,跳出循环
|
|
|
+ }
|
|
|
+
|
|
|
+ // 自定义数据权限 - 根据角色的数据范围值来控制查询条件
|
|
|
+ if (DataScopeAspect.DATA_SCOPE_CUSTOM.equals(dataScope)) {
|
|
|
+ // 获取具有自定义数据权限的角色ID列表
|
|
|
+ List<String> customRoleIds = new ArrayList<>();
|
|
|
+ for (SysRole r : roles) {
|
|
|
+ if (DataScopeAspect.DATA_SCOPE_CUSTOM.equals(r.getDataScope())) {
|
|
|
+ customRoleIds.add(String.valueOf(r.getRoleId()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 构建自定义数据权限查询条件
|
|
|
+ if (businessSql.length() > 0) {
|
|
|
+ businessSql.append(" OR ");
|
|
|
+ }
|
|
|
+
|
|
|
+ if (customRoleIds.size() > 1) {
|
|
|
+ // 多个自定义数据权限角色使用IN查询
|
|
|
+ businessSql.append("(t.dept_id IN (SELECT dept_id FROM sys_role_dept WHERE role_id IN (")
|
|
|
+ .append(String.join(",", customRoleIds))
|
|
|
+ .append("))")
|
|
|
+ .append(" OR t.parent_id IN (SELECT dept_id FROM sys_role_dept WHERE role_id IN (")
|
|
|
+ .append(String.join(",", customRoleIds))
|
|
|
+ .append(")))");
|
|
|
+ } else {
|
|
|
+ // 单个自定义数据权限角色查询
|
|
|
+ businessSql.append("(t.dept_id IN (SELECT dept_id FROM sys_role_dept WHERE role_id = ")
|
|
|
+ .append(role.getRoleId())
|
|
|
+ .append(")")
|
|
|
+ .append(" OR t.parent_id IN (SELECT dept_id FROM sys_role_dept WHERE role_id = ")
|
|
|
+ .append(role.getRoleId())
|
|
|
+ .append("))");
|
|
|
+ }
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 部门数据权限 - 适用于部门负责人角色
|
|
|
+ if (DataScopeAspect.DATA_SCOPE_DEPT.equals(dataScope)) {
|
|
|
+ if (businessSql.length() > 0) {
|
|
|
+ businessSql.append(" OR ");
|
|
|
+ }
|
|
|
+ businessSql.append("(t.dept_id = ")
|
|
|
+ .append(currentUser.getDeptId())
|
|
|
+ .append(" OR t.parent_id = ")
|
|
|
+ .append(currentUser.getDeptId())
|
|
|
+ .append(")");
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 部门及以下数据权限
|
|
|
+ if (DataScopeAspect.DATA_SCOPE_DEPT_AND_CHILD.equals(dataScope)) {
|
|
|
+ if (businessSql.length() > 0) {
|
|
|
+ businessSql.append(" OR ");
|
|
|
+ }
|
|
|
+ businessSql.append("(t.dept_id IN ")
|
|
|
+ .append("(SELECT dept_id FROM sys_dept WHERE dept_id = ")
|
|
|
+ .append(currentUser.getDeptId())
|
|
|
+ .append(" OR FIND_IN_SET(")
|
|
|
+ .append(currentUser.getDeptId())
|
|
|
+ .append(", ancestors))")
|
|
|
+ .append(" OR t.parent_id IN ")
|
|
|
+ .append("(SELECT dept_id FROM sys_dept WHERE dept_id = ")
|
|
|
+ .append(currentUser.getDeptId())
|
|
|
+ .append(" OR FIND_IN_SET(")
|
|
|
+ .append(currentUser.getDeptId())
|
|
|
+ .append(", ancestors)))");
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 仅本人数据权限 - 适用于主检修员角色
|
|
|
+ if (DataScopeAspect.DATA_SCOPE_SELF.equals(dataScope)) {
|
|
|
+ if (businessSql.length() > 0) {
|
|
|
+ businessSql.append(" OR ");
|
|
|
+ }
|
|
|
+ businessSql.append("(t.dept_id = ")
|
|
|
+ .append(currentUser.getDeptId())
|
|
|
+ .append(" OR t.parent_id = ")
|
|
|
+ .append(currentUser.getDeptId())
|
|
|
+ .append(")");
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 如果构建了业务特定的过滤条件,则添加到查询参数中
|
|
|
+ if (businessSql.length() > 0) {
|
|
|
+ String businessDataScopeSql = " AND (" + businessSql.toString() + ")";
|
|
|
+ sysDept.setDataPermission(businessDataScopeSql);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 添加业务特定的数据权限过滤条件
|
|
|
+ * 基于角色的数据范围进行自定义权限控制
|
|
|
+ *
|
|
|
+ * @param orderData 首页工单列表查询条件
|
|
|
+ */
|
|
|
+ private void addBusinessDataScopeFilter(GxtOrderData orderData) {
|
|
|
+ // 获取当前登录用户
|
|
|
+ LoginUser loginUser = SecurityUtils.getLoginUser();
|
|
|
+ if (loginUser == null) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ SysUser currentUser = loginUser.getUser();
|
|
|
+ if (currentUser == null) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 如果是超级管理员,不过滤数据
|
|
|
+ if (currentUser.isAdmin()) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取用户角色
|
|
|
+ List<SysRole> roles = currentUser.getRoles();
|
|
|
+ if (roles == null || roles.isEmpty()) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 构建业务特定的数据权限SQL
|
|
|
+ StringBuilder businessSql = new StringBuilder();
|
|
|
+
|
|
|
+ // 遍历用户角色,根据角色的数据范围添加业务特定的权限控制
|
|
|
+ for (SysRole role : roles) {
|
|
|
+ String dataScope = role.getDataScope();
|
|
|
+
|
|
|
+ // 如果是全部数据权限,则不过滤
|
|
|
+ if (DataScopeAspect.DATA_SCOPE_ALL.equals(dataScope)) {
|
|
|
+ businessSql.setLength(0); // 清空之前的条件
|
|
|
+ break; // 全部数据权限,跳出循环
|
|
|
+ }
|
|
|
+
|
|
|
+ // 自定义数据权限 - 根据角色的数据范围值来控制查询条件
|
|
|
+ if (DataScopeAspect.DATA_SCOPE_CUSTOM.equals(dataScope)) {
|
|
|
+ // 获取具有自定义数据权限的角色ID列表
|
|
|
+ List<String> customRoleIds = new ArrayList<>();
|
|
|
+ for (SysRole r : roles) {
|
|
|
+ if (DataScopeAspect.DATA_SCOPE_CUSTOM.equals(r.getDataScope())) {
|
|
|
+ customRoleIds.add(String.valueOf(r.getRoleId()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 构建自定义数据权限查询条件
|
|
|
+ if (businessSql.length() > 0) {
|
|
|
+ businessSql.append(" OR ");
|
|
|
+ }
|
|
|
+
|
|
|
+ if (customRoleIds.size() > 1) {
|
|
|
+ // 多个自定义数据权限角色使用IN查询
|
|
|
+ businessSql.append("(wo.pcs_station_pid IN (SELECT dept_id FROM sys_role_dept WHERE role_id IN (")
|
|
|
+ .append(String.join(",", customRoleIds))
|
|
|
+ .append("))")
|
|
|
+ .append(" OR wo.pcs_station_id IN (SELECT dept_id FROM sys_role_dept WHERE role_id IN (")
|
|
|
+ .append(String.join(",", customRoleIds))
|
|
|
+ .append("))")
|
|
|
+ .append(" OR wo.gxt_center_id IN (SELECT dept_id FROM sys_role_dept WHERE role_id IN (")
|
|
|
+ .append(String.join(",", customRoleIds))
|
|
|
+ .append(")))");
|
|
|
+ } else {
|
|
|
+ // 单个自定义数据权限角色查询
|
|
|
+ businessSql.append("(wo.pcs_station_pid IN (SELECT dept_id FROM sys_role_dept WHERE role_id = ")
|
|
|
+ .append(role.getRoleId())
|
|
|
+ .append(")")
|
|
|
+ .append(" OR wo.pcs_station_id IN (SELECT dept_id FROM sys_role_dept WHERE role_id = ")
|
|
|
+ .append(role.getRoleId())
|
|
|
+ .append(")")
|
|
|
+ .append(" OR wo.gxt_center_id IN (SELECT dept_id FROM sys_role_dept WHERE role_id = ")
|
|
|
+ .append(role.getRoleId())
|
|
|
+ .append("))");
|
|
|
+ }
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 部门数据权限 - 适用于部门负责人角色
|
|
|
+ if (DataScopeAspect.DATA_SCOPE_DEPT.equals(dataScope)) {
|
|
|
+ if (businessSql.length() > 0) {
|
|
|
+ businessSql.append(" OR ");
|
|
|
+ }
|
|
|
+ businessSql.append("(wo.pcs_station_id = ")
|
|
|
+ .append(currentUser.getDeptId())
|
|
|
+ .append(" OR wo.pcs_station_pid = ")
|
|
|
+ .append(currentUser.getDeptId())
|
|
|
+ .append(" OR wo.gxt_center_id = ")
|
|
|
+ .append(currentUser.getDeptId())
|
|
|
+ .append(")");
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 部门及以下数据权限
|
|
|
+ if (DataScopeAspect.DATA_SCOPE_DEPT_AND_CHILD.equals(dataScope)) {
|
|
|
+ if (businessSql.length() > 0) {
|
|
|
+ businessSql.append(" OR ");
|
|
|
+ }
|
|
|
+ businessSql.append("(wo.pcs_station_id IN ")
|
|
|
+ .append("(SELECT dept_id FROM sys_dept WHERE dept_id = ")
|
|
|
+ .append(currentUser.getDeptId())
|
|
|
+ .append(" OR FIND_IN_SET(")
|
|
|
+ .append(currentUser.getDeptId())
|
|
|
+ .append(", ancestors))")
|
|
|
+ .append(" OR wo.pcs_station_pid IN ")
|
|
|
+ .append("(SELECT dept_id FROM sys_dept WHERE dept_id = ")
|
|
|
+ .append(currentUser.getDeptId())
|
|
|
+ .append(" OR FIND_IN_SET(")
|
|
|
+ .append(currentUser.getDeptId())
|
|
|
+ .append(", ancestors))")
|
|
|
+ .append(" OR wo.gxt_center_id IN ")
|
|
|
+ .append("(SELECT dept_id FROM sys_dept WHERE dept_id = ")
|
|
|
+ .append(currentUser.getDeptId())
|
|
|
+ .append(" OR FIND_IN_SET(")
|
|
|
+ .append(currentUser.getDeptId())
|
|
|
+ .append(", ancestors)))");
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 仅本人数据权限 - 适用于主检修员角色
|
|
|
+ if (DataScopeAspect.DATA_SCOPE_SELF.equals(dataScope)) {
|
|
|
+ if (businessSql.length() > 0) {
|
|
|
+ businessSql.append(" OR ");
|
|
|
+ }
|
|
|
+ businessSql.append("(wo.team_leader_id = ")
|
|
|
+ .append(currentUser.getUserId())
|
|
|
+ .append(" OR wo.assign_user_id = ")
|
|
|
+ .append(currentUser.getUserId())
|
|
|
+ .append(" OR wo.accept_user_id = ")
|
|
|
+ .append(currentUser.getUserId())
|
|
|
+ .append(" OR wo.id IN (SELECT order_id FROM gxt_work_order_person WHERE user_id = ")
|
|
|
+ .append(currentUser.getUserId())
|
|
|
+ .append(") ")
|
|
|
+ .append(" OR wo.create_by = '")
|
|
|
+ .append(currentUser.getUserName())
|
|
|
+ .append("')");
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 如果构建了业务特定的过滤条件,则添加到查询参数中
|
|
|
+ if (businessSql.length() > 0) {
|
|
|
+ String businessDataScopeSql = " AND (" + businessSql.toString() + ")";
|
|
|
+ orderData.setDataPermission(businessDataScopeSql);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public List<GxtOrderData> selectHomePageWorkOrderList(GxtOrderData gxtOrderData) {
|
|
|
System.out.println(gxtOrderData);
|
|
|
@@ -1446,6 +1737,7 @@ public class GxtWorkOrderServiceImpl implements IGxtWorkOrderService
|
|
|
} else if (!gxtOrderData.getWorkOrder() && gxtOrderData.getRepairOrder()) {
|
|
|
gxtOrderData.setOrderType("维修工单");
|
|
|
}
|
|
|
+ addBusinessDataScopeFilter(gxtOrderData);
|
|
|
return gxtWorkOrderMapper.selectHomePageWorkOrderList(gxtOrderData);
|
|
|
}
|
|
|
|