ソースを参照

权限对接修改

车车 10 ヶ月 前
コミット
d49fbf04f3

+ 2 - 0
ktg-common/src/main/java/com/ktg/common/annotation/MarsDataScope.java

@@ -17,4 +17,6 @@ public @interface MarsDataScope
      */
     public String workstationAlias() default "";
 
+    public String userAlias() default "";
+
 }

+ 24 - 5
ktg-common/src/main/java/com/ktg/common/core/domain/BaseEntity.java

@@ -1,13 +1,14 @@
 package com.ktg.common.core.domain;
 
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+
 import java.io.Serializable;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.Map;
 
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.fasterxml.jackson.annotation.JsonFormat;
-
 /**
  * Entity基类
  *
@@ -25,14 +26,14 @@ public class BaseEntity implements Serializable
     private String createBy;
 
     /** 创建时间 */
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone="GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
     private Date createTime;
 
     /** 更新者 */
     private String updateBy;
 
     /** 更新时间 */
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone="GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
     private Date updateTime;
 
     /** 备注 */
@@ -42,6 +43,24 @@ public class BaseEntity implements Serializable
     @TableField(exist = false)
     private Map<String, Object> params;
 
+    @ApiModelProperty(value = "权限数据")
+    @TableField(exist = false)
+    private Map<String, Object> paramMap;
+
+    public Map<String, Object> getParamMap()
+    {
+        if (paramMap == null)
+        {
+            paramMap = new HashMap<>();
+        }
+        return paramMap;
+    }
+
+    public void setParamMap(Map<String, Object> paramMap)
+    {
+        this.paramMap = paramMap;
+    }
+
     public String getSearchValue()
     {
         return searchValue;

+ 11 - 9
ktg-framework/src/main/java/com/ktg/framework/aspectj/MarsDataScopeAspect.java

@@ -2,9 +2,9 @@ package com.ktg.framework.aspectj;
 
 import cn.hutool.core.lang.Assert;
 import com.ktg.common.annotation.MarsDataScope;
+import com.ktg.common.core.domain.BaseEntity;
 import com.ktg.common.core.domain.entity.SysRole;
 import com.ktg.common.core.domain.entity.SysUser;
-import com.ktg.common.core.domain.model.BaseBean;
 import com.ktg.common.core.domain.model.LoginUser;
 import com.ktg.common.utils.SecurityUtils;
 import com.ktg.common.utils.StringUtils;
@@ -74,7 +74,7 @@ public class MarsDataScopeAspect {
             SysUser currentUser = loginUser.getUser();
             // 如果是超级管理员,则不过滤数据
             if (StringUtils.isNotNull(currentUser) && !currentUser.isAdmin()) {
-                dataScopeFilter(joinPoint, currentUser, controllerDataScope.workstationAlias(), allChildWorkstationByUserIds);
+                dataScopeFilter(joinPoint, currentUser, controllerDataScope.workstationAlias(), controllerDataScope.userAlias(), allChildWorkstationByUserIds);
             }
         }
     }
@@ -86,7 +86,7 @@ public class MarsDataScopeAspect {
      * @param user      用户
      * @param workstationAlias 别名
      */
-    public static void dataScopeFilter(JoinPoint joinPoint, SysUser user, String workstationAlias, List<Long> allChildWorkstationByUserIds) {
+    public static void dataScopeFilter(JoinPoint joinPoint, SysUser user, String workstationAlias, String userAlias, List<Long> allChildWorkstationByUserIds) {
         StringBuilder sqlString = new StringBuilder();
 
         for (SysRole role : user.getRoles()) {
@@ -113,8 +113,8 @@ public class MarsDataScopeAspect {
                         workstationAlias, result));
             } else if (MARS_DATA_SCOPE_SELF.equals(marsDataScope)) {
                 // 5.自身权限
-                if (StringUtils.isNotBlank(workstationAlias)) {
-                    sqlString.append(StringUtils.format(" OR {}.create_by = {} ", workstationAlias, user.getUserId()));
+                if (StringUtils.isNotBlank(userAlias)) {
+                    sqlString.append(StringUtils.format(" OR {}.user_id = {} ", userAlias, user.getUserId()));
                 } else {
                     // 数据权限为仅本人且没有userAlias别名不查询任何数据
                     sqlString.append(" OR 1=0 ");
@@ -124,8 +124,8 @@ public class MarsDataScopeAspect {
 
         if (StringUtils.isNotBlank(sqlString.toString())) {
             Object params = joinPoint.getArgs()[0];
-            if (StringUtils.isNotNull(params) && params instanceof BaseBean) {
-                BaseBean baseBean = (BaseBean) params;
+            if (StringUtils.isNotNull(params) && params instanceof BaseEntity) {
+                BaseEntity baseBean = (BaseEntity) params;
                 baseBean.getParamMap().put(MARS_DATA_SCOPE, " AND (" + sqlString.substring(4) + ")");
             }
         }
@@ -136,8 +136,10 @@ public class MarsDataScopeAspect {
      */
     private void clearDataScope(final JoinPoint joinPoint) {
         Object paramMap = joinPoint.getArgs()[0];
-        if (StringUtils.isNotNull(paramMap) && paramMap instanceof BaseBean) {
-            BaseBean baseBean = (BaseBean) paramMap;
+        // if (StringUtils.isNotNull(paramMap) && paramMap instanceof BaseBean) {
+        // 为了兼容BaseEntity
+            if (StringUtils.isNotNull(paramMap) && paramMap instanceof BaseEntity) {
+                BaseEntity baseBean = (BaseEntity) paramMap;
             baseBean.getParamMap().put(MARS_DATA_SCOPE, "");
         }
     }

+ 3 - 0
ktg-iscs/src/main/java/com/ktg/iscs/controller/IsLotoStationController.java

@@ -8,6 +8,7 @@ import com.ktg.common.annotation.Log;
 import com.ktg.common.core.controller.BaseController;
 import com.ktg.common.enums.BusinessType;
 import com.ktg.common.pojo.CommonResult;
+import com.ktg.common.utils.SecurityUtils;
 import com.ktg.common.utils.poi.ExcelUtil;
 import com.ktg.iscs.domain.IsLotoStation;
 import com.ktg.iscs.domain.vo.loto.IsLotoStationVO;
@@ -95,6 +96,7 @@ public class IsLotoStationController extends BaseController
     @PostMapping("/insertIsLotoStation")
     public CommonResult<Boolean> insertIsLotoStation(@RequestBody @Parameter(name = "isLotoStation", description = "新增数据类,放到body") IsLotoStation isLotoStation)
     {
+        isLotoStation.setCreateBy(String.valueOf(SecurityUtils.getUserId()));
         return CommonResult.success(isLotoStationService.save(isLotoStation));
     }
 
@@ -107,6 +109,7 @@ public class IsLotoStationController extends BaseController
     @PostMapping("/updateIsLotoStation")
     public CommonResult<Boolean> updateIsLotoStation(@RequestBody @Parameter(name = "isLotoStation", description = "修改数据类,放到body") IsLotoStation isLotoStation)
     {
+        isLotoStation.setUpdateBy(String.valueOf(SecurityUtils.getUserId()));
         return CommonResult.success(isLotoStationService.updateById(isLotoStation));
     }
 

+ 1 - 1
ktg-iscs/src/main/java/com/ktg/iscs/controller/MarsSopController.java

@@ -44,7 +44,7 @@ public class MarsSopController extends BaseController {
     @PreAuthorize("@ss.hasPermi('iscs:mars:sop:list')")
     @GetMapping("/getIsMarsSopPage")
     public CommonResult<Page<SopPageVO>> getIsMarsSopPage(Page<IsSop> page, PageSopDTO dto) {
-        return CommonResult.success(isMarsSopService.getIsMarsSopPage(page, dto));
+        return CommonResult.success(isMarsSopService.getIsMarsSopPage(dto, page));
     }
 
     @ApiOperation("导出mars-SOP信息列表")

+ 2 - 2
ktg-iscs/src/main/java/com/ktg/iscs/domain/IsLotoStation.java

@@ -3,7 +3,7 @@ package com.ktg.iscs.domain;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.ktg.common.annotation.Excel;
-import com.ktg.common.core.domain.model.BaseBean;
+import com.ktg.common.core.domain.BaseEntity;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -16,7 +16,7 @@ import lombok.EqualsAndHashCode;
  */
 @EqualsAndHashCode(callSuper = true)
 @Data
-public class IsLotoStation extends BaseBean
+public class IsLotoStation extends BaseEntity
 {
     private static final long serialVersionUID = 1L;
 

+ 2 - 1
ktg-iscs/src/main/java/com/ktg/iscs/domain/dto/sop/PageSopDTO.java

@@ -1,5 +1,6 @@
 package com.ktg.iscs.domain.dto.sop;
 
+import com.ktg.common.core.domain.BaseEntity;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -12,7 +13,7 @@ import java.io.Serializable;
  * @date 2024-10-18
  */
 @Data
-public class PageSopDTO implements Serializable {
+public class PageSopDTO extends BaseEntity implements Serializable {
     private static final long serialVersionUID = 1L;
 
     @ApiModelProperty(value = "SOP编号")

+ 1 - 1
ktg-iscs/src/main/java/com/ktg/iscs/service/IIsMarsSopService.java

@@ -72,7 +72,7 @@ public interface IIsMarsSopService extends IService<IsSop>
      * @param dto
      * @return
      */
-    Page<SopPageVO> getIsMarsSopPage(Page<IsSop> page, PageSopDTO dto);
+    Page<SopPageVO> getIsMarsSopPage(PageSopDTO dto, Page<IsSop> page);
 
     Boolean updateIsMarsSopIndex(IsSop isSop);
 }

+ 1 - 1
ktg-iscs/src/main/java/com/ktg/iscs/service/impl/IsLotoStationServiceImpl.java

@@ -46,7 +46,7 @@ public class IsLotoStationServiceImpl extends ServiceImpl<IsLotoStationMapper, I
     private IIsJobTicketPointsService iIsJobTicketPointsService;
 
     @Override
-    @MarsDataScope(workstationAlias = "w")
+    @MarsDataScope(workstationAlias = "w", userAlias = "u")
     public Page<IsLotoStationVO> getIsLotoStationPage(IsLotoStation isLotoStation, Page<IsLotoStation> page) {
         return isLotoStationMapper.getIsLotoStationPage(page, isLotoStation);
     }

+ 5 - 2
ktg-iscs/src/main/java/com/ktg/iscs/service/impl/IsMarsSopServiceImpl.java

@@ -4,6 +4,7 @@ import cn.hutool.core.lang.Assert;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ktg.common.annotation.MarsDataScope;
 import com.ktg.common.core.text.Convert;
 import com.ktg.common.utils.DictUtils;
 import com.ktg.common.utils.bean.BeanUtils;
@@ -143,7 +144,7 @@ public class IsMarsSopServiceImpl extends ServiceImpl<IsSopMapper, IsSop> implem
         Assert.notNull(workstation, "岗位信息不存在!");
         IsMachinery machinery = isMachineryService.getById(machineryId);
         Assert.notNull(machinery, "设备工艺信息不存在!");
-        String sopTypeValue = DictUtils.getDictValue("sop_type", sopType);
+        String sopTypeValue = DictUtils.getDictLabel("sop_type", sopType);
         String sopName = workstation.getWorkstationName() + machinery.getMachineryName() + sopTypeValue;
         List<IsSop> listName = list(Wrappers.<IsSop>lambdaQuery().eq(IsSop::getSopName, sopName));
         Assert.isTrue(listName.isEmpty(), "该SOP已存在!");
@@ -186,6 +187,7 @@ public class IsMarsSopServiceImpl extends ServiceImpl<IsSopMapper, IsSop> implem
         return true;
     }
 
+
     /**
      * 删除SOP信息信息
      *
@@ -198,7 +200,8 @@ public class IsMarsSopServiceImpl extends ServiceImpl<IsSopMapper, IsSop> implem
     }
 
     @Override
-    public Page<SopPageVO> getIsMarsSopPage(Page<IsSop> page, PageSopDTO dto) {
+    @MarsDataScope(workstationAlias = "w", userAlias = "u")
+    public Page<SopPageVO> getIsMarsSopPage(PageSopDTO dto, Page<IsSop> page) {
         return isSopMapper.getIsSopPage(page, dto);
     }
 

+ 1 - 0
ktg-iscs/src/main/resources/mapper/IsLotoStationMapper.xml

@@ -11,6 +11,7 @@
         FROM
         is_loto_station l
         LEFT JOIN is_workstation w ON w.workstation_id = l.workstation_id
+        LEFT JOIN sys_user u ON u.user_id = l.create_by
         where
             l.del_flag = '0'
             <if test="isLotoStation.lotoName != null and isLotoStation.lotoName.trim != ''">

+ 4 - 2
ktg-iscs/src/main/resources/mapper/IsSopMapper.xml

@@ -97,14 +97,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             s.*,
             ws.workshop_name,
             wa.workarea_name,
-            wn.workstation_name,
+            w.workstation_name,
             d.machinery_name,
             COUNT( p.record_id ) AS pointCount
         FROM
             is_sop s
             LEFT JOIN md_workshop ws ON ws.workshop_id = s.workshop_id
             LEFT JOIN is_workarea wa ON wa.workarea_id = s.workarea_id
-            LEFT JOIN is_workstation wn ON wn.workstation_id = s.workstation_id
+            LEFT JOIN is_workstation w ON w.workstation_id = s.workstation_id
+            LEFT JOIN sys_user u ON u.user_id = s.create_by
             LEFT JOIN is_machinery d ON d.machinery_id = s.machinery_id
             LEFT JOIN is_sop_points p ON p.sop_id = s.sop_id
         <where>
@@ -138,6 +139,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="dto.machineryId != null">
                 and s.machinery_id = #{dto.machineryId}
             </if>
+            ${dto.paramMap.workstationScope}
         </where>
         GROUP BY s.sop_id
         ORDER BY s.sop_index ASC, s.sop_id DESC

+ 2 - 0
ktg-system/src/main/java/com/ktg/system/service/impl/SysUserServiceImpl.java

@@ -3,6 +3,7 @@ package com.ktg.system.service.impl;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ktg.common.annotation.DataScope;
+import com.ktg.common.annotation.MarsDataScope;
 import com.ktg.common.constant.UserConstants;
 import com.ktg.common.core.domain.entity.SysRole;
 import com.ktg.common.core.domain.entity.SysUser;
@@ -67,6 +68,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
      */
     @Override
     @DataScope(deptAlias = "d", userAlias = "u")
+    @MarsDataScope(workstationAlias = "w", userAlias = "u")
     public List<SysUser> selectUserList(SysUser user)
     {
         // 准备用户对角色和岗位的一对多查询,进行业务处理

+ 4 - 1
ktg-system/src/main/resources/mapper/system/SysUserMapper.xml

@@ -58,11 +58,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
     <select id="selectUserList" parameterType="SysUser" resultType="SysUser">
 		select u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, d.dept_name, d.leader,
-		uu.unit_id, t.unit_name
+		max(uu.unit_id) as unit_id, max(t.unit_name) unit_name
 		from sys_user u
 		left join sys_dept d on u.dept_id = d.dept_id
 		left join is_user_unit uu on uu.user_id = u.user_id
 		left join is_unit t on t.unit_id = uu.unit_id
+		left join is_user_workstation w on w.user_id = u.user_id
 		where u.del_flag = '0'
 		<if test="userIds.size > 0">
 			AND u.user_id in
@@ -96,6 +97,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 		</if>
 		<!-- 数据范围过滤 -->
 		${params.dataScope}
+		${paramMap.workstationScope}
+		group by u.user_id
 		order by u.user_id
 	</select>