Kaynağa Gözat

维修工单数据权限、修复添加数据权限后定时任务出现的问题

ouyj 7 ay önce
ebeveyn
işleme
b900385ac0

+ 24 - 0
ygtx-gxt/src/main/java/com/ygtx/gxt/task/RepairOrderArchiveTask.java

@@ -2,18 +2,25 @@ package com.ygtx.gxt.task;
 
 import java.util.Date;
 import java.util.List;
+import java.util.Set;
 
+import com.ygtx.common.core.domain.entity.SysUser;
+import com.ygtx.common.core.domain.model.LoginUser;
 import com.ygtx.common.utils.DateUtils;
+import com.ygtx.framework.web.service.SysPermissionService;
 import com.ygtx.gxt.domain.GxtRepairOrder;
 import com.ygtx.gxt.domain.GxtRepairOrderFlow;
 import com.ygtx.gxt.service.IGxtRepairOrderService;
 import com.ygtx.gxt.service.IGxtRepairOrderFlowService;
 
+import com.ygtx.system.mapper.SysUserMapper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.EnableScheduling;
 import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
+import org.springframework.security.core.context.SecurityContextHolder;
 import org.springframework.stereotype.Component;
 
 /**
@@ -35,14 +42,31 @@ public class RepairOrderArchiveTask {
     @Autowired
     private IGxtRepairOrderFlowService repairOrderFlowService;
 
+    @Autowired
+    private SysUserMapper userMapper;
+
+    @Autowired
+    private SysPermissionService permissionService;
+
     /**
      * 每小时执行定时任务
      * 查找已完成复运操作且评分为非空的工单,并进行归档
      */
+    //@Scheduled(cron = "0 0/3 * * * ?")
     @Scheduled(cron = "0 0 * * * ?")
     public void archiveRepairOrders() {
         log.info("开始执行维修工单自动归档任务");
+        SysUser userAdmin = userMapper.selectUserByUserName("admin");
+        Set<String> permissions = permissionService.getMenuPermission(userAdmin);
+        LoginUser loginUser = new LoginUser(userAdmin,permissions);
+
+        UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(
+                loginUser,
+                null,
+                loginUser.getAuthorities()
+        );
 
+        SecurityContextHolder.getContext().setAuthentication(authentication);
         try {
             // 构造查询条件:已完成复运操作且评分为非空的工单
             GxtRepairOrder queryOrder = new GxtRepairOrder();

+ 5 - 2
ygtx-gxt/src/main/resources/mapper/gxt/GxtRepairOrderMapper.xml

@@ -117,8 +117,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="params.businessDataScope != null and params.businessDataScope != ''">
                 ${params.businessDataScope}
             </if>
-            <!-- 限制待下发工单只能创建人查看 -->
-            and (t.work_order_status != 'to_issue' or t.create_by = #{createBy,jdbcType=VARCHAR})
+            <!-- 限制待下发工单只能创建人本部门查看 -->
+            and (t.work_order_status != 'to_issue' or t.create_by in 
+                (select user_name from sys_user t1
+                 left join sys_dept t2 on t1.dept_id = t2.dept_id
+                 where t2.dept_id = (select dept_id from sys_user where user_name = #{createBy,jdbcType=VARCHAR})))
         </where>
         order by id desc
     </select>