Explorar o código

待办增加隐患管理

jiawuxian hai 1 ano
pai
achega
ba1b244ae7

+ 8 - 0
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/RemoteUserService.java

@@ -82,4 +82,12 @@ public interface RemoteUserService {
      */
     @GetMapping("/user/getroleinfoofuser")
     List<IdNameVo> getRoleInfoOfUser(@RequestParam("userId") Long userId, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
+
+    /**
+     * 检查用户的按钮权限
+     * @param menuIds
+     * @return
+     */
+    @PostMapping("/user/checkuserpermission")
+    List<Long> checkUserPermission(@RequestParam("menuIds") List<Long> menuIds,@RequestParam("userId") Long userId ,@RequestHeader(SecurityConstants.FROM_SOURCE)  String source);
 }

+ 11 - 9
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/factory/RemoteUserFallbackFactory.java

@@ -14,6 +14,7 @@ import org.springframework.cloud.openfeign.FallbackFactory;
 import org.springframework.stereotype.Component;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestHeader;
+import org.springframework.web.bind.annotation.RequestParam;
 
 import java.util.ArrayList;
 import java.util.Date;
@@ -25,19 +26,15 @@ import java.util.List;
  * @author xunmei
  */
 @Component
-public class RemoteUserFallbackFactory implements FallbackFactory<RemoteUserService>
-{
+public class RemoteUserFallbackFactory implements FallbackFactory<RemoteUserService> {
     private static final Logger log = LoggerFactory.getLogger(RemoteUserFallbackFactory.class);
 
     @Override
-    public RemoteUserService create(Throwable throwable)
-    {
+    public RemoteUserService create(Throwable throwable) {
         log.error("用户服务调用失败:{}", throwable.getMessage());
-        return new RemoteUserService()
-        {
+        return new RemoteUserService() {
             @Override
-            public R<LoginUser> getUserInfo(String username, String source)
-            {
+            public R<LoginUser> getUserInfo(String username, String source) {
                 return R.fail("获取用户失败:" + throwable.getMessage());
             }
 
@@ -77,7 +74,12 @@ public class RemoteUserFallbackFactory implements FallbackFactory<RemoteUserServ
             }
 
             @Override
-            public  List<IdNameVo> getRoleInfoOfUser(@PathVariable Long userId, @RequestHeader(SecurityConstants.FROM_SOURCE) String source){
+            public List<IdNameVo> getRoleInfoOfUser(@PathVariable Long userId, @RequestHeader(SecurityConstants.FROM_SOURCE) String source) {
+                return new ArrayList<>();
+            }
+
+            @Override
+            public List<Long> checkUserPermission(@RequestParam("menuIds") List<Long> menuIds,Long userId, @RequestHeader(SecurityConstants.FROM_SOURCE) String source) {
                 return new ArrayList<>();
             }
         };

+ 3 - 2
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/panel/enums/PanelTypeEnums.java

@@ -18,7 +18,7 @@ public enum PanelTypeEnums {
     SAFETY_CHECK(2, "安全检查"),
 
     MONITORING_RETRIEVAL(3, "监控调阅"),
-OUT_EVALUATION(8,"外包评价"),
+
 
 
     DRILL(4, "预案演练"),
@@ -27,7 +27,8 @@ OUT_EVALUATION(8,"外包评价"),
 
     OTHER(6, "其他任务"),
     DRILL_REC(7, "推优评优"),
-
+    OUT_EVALUATION(8,"外包评价"),
+	QUESTION(9,"隐患管理")
 
     ;
 

+ 16 - 7
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/panel/service/impl/PanelServiceImpl.java

@@ -14,6 +14,7 @@ import com.xunmei.core.drill.service.ICoreDrillTaskService;
 import com.xunmei.core.edu.service.ICoreEduTrainingTaskService;
 import com.xunmei.core.evaluate.service.ICoreEvaluateTaskService;
 import com.xunmei.core.panel.service.PanelService;
+import com.xunmei.core.question.service.IQuestionService;
 import com.xunmei.core.resumption.service.IProtectionService;
 import com.xunmei.core.resumption.service.ResumptionService;
 import com.xunmei.core.retrieval.service.ICoreMonitoringRetrievalTaskService;
@@ -54,6 +55,9 @@ public class PanelServiceImpl implements PanelService {
     private ICoreEduTrainingTaskService eduTrainingTaskService;
 
     @Autowired
+    private IQuestionService questionService;
+
+    @Autowired
     private RemoteRoleService roleService;
     @Autowired
     private IProtectionService protectionService;
@@ -88,9 +92,9 @@ public class PanelServiceImpl implements PanelService {
                 coreMonitoringRetrievalTaskService.selectCurUserTaskList(panelListDto), threadPoolTaskExecutor
         );
         //外包评价
-        CompletableFuture<List<PanelListVo>> evaluateTaskFuture=CompletableFuture.supplyAsync(()->
-                        iCoreEvaluateTaskService.selectCurUserTaskList(panelListDto),threadPoolTaskExecutor
-                );
+        CompletableFuture<List<PanelListVo>> evaluateTaskFuture = CompletableFuture.supplyAsync(() ->
+                iCoreEvaluateTaskService.selectCurUserTaskList(panelListDto), threadPoolTaskExecutor
+        );
         //安全检查任务
         CompletableFuture<List<PanelListVo>> safetyTaskFuture = CompletableFuture.supplyAsync(() ->
                 safetyTaskService.selectCurUserTaskList(panelListDto), threadPoolTaskExecutor
@@ -111,16 +115,21 @@ public class PanelServiceImpl implements PanelService {
                 eduTrainingTaskService.selectCurUserTaskList(panelListDto), threadPoolTaskExecutor
         );
 
+        //隐患管理
+        CompletableFuture<List<PanelListVo>> questionTaskFuture = CompletableFuture.supplyAsync(() ->
+                questionService.selectCurUserTaskList(panelListDto), threadPoolTaskExecutor
+        );
         CompletableFuture<Void> allQueries = CompletableFuture.allOf(
-                resumptionTaskFuture, protectionTaskFuture, monitorTaskFuture,evaluateTaskFuture,
+                resumptionTaskFuture, protectionTaskFuture, monitorTaskFuture, evaluateTaskFuture,
                 safetyTaskFuture, drillTaskFuture, eduTrainingTaskFuture, recLitFuture
         );
 
         allQueries.get(TIMEOUT, TimeUnit.SECONDS);
 
         List<PanelListVo> resultList = Stream.of(
-                        resumptionTaskFuture.join(), protectionTaskFuture.join(), monitorTaskFuture.join(),evaluateTaskFuture.join(),
-                        safetyTaskFuture.join(), drillTaskFuture.join(), eduTrainingTaskFuture.join(), recLitFuture.join()
+                        resumptionTaskFuture.join(), protectionTaskFuture.join(), monitorTaskFuture.join(), evaluateTaskFuture.join(),
+                        safetyTaskFuture.join(), drillTaskFuture.join(), eduTrainingTaskFuture.join(), recLitFuture.join(),
+                        questionTaskFuture.join()
                 )
                 .flatMap(Collection::stream)
                 .collect(Collectors.toList());
@@ -129,7 +138,7 @@ public class PanelServiceImpl implements PanelService {
                 .sorted(Comparator.comparing(PanelListVo::getType))
                 .collect(Collectors.groupingBy(PanelListVo::getType));
         List<PanelResultVo> list = new ArrayList<PanelResultVo>();
-        for(Map.Entry<Integer, List<PanelListVo>> map:listMap.entrySet()){
+        for (Map.Entry<Integer, List<PanelListVo>> map : listMap.entrySet()) {
             PanelResultVo vo = new PanelResultVo();
             vo.setTaskType(map.getKey());
             List<PanelListVo> data = map.getValue();

+ 2 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/question/controller/QuestionController.java

@@ -110,4 +110,6 @@ public class QuestionController extends BaseController {
     public void export(QuestionPageDto pageDto, HttpServletResponse response) throws Exception {
         questionService.export(pageDto, response);
     }
+
+
 }

+ 9 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/question/service/IQuestionService.java

@@ -1,6 +1,8 @@
 package com.xunmei.core.question.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.xunmei.common.core.domain.panel.dto.PanelListDto;
+import com.xunmei.common.core.domain.panel.vo.PanelListVo;
 import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.core.question.domain.Question;
 import com.xunmei.core.question.dto.QuestionConfirmDto;
@@ -57,4 +59,11 @@ public interface IQuestionService extends IService<Question> {
     void selectQuestionExceptionData(Date startTime,Date endTime,List<Long> orgIds);
 
     void export(QuestionPageDto pageDto, HttpServletResponse response) throws Exception;
+
+    /**
+     * 当前用户的工作台
+     * @param panelListDto
+     * @return
+     */
+    List<PanelListVo> selectCurUserTaskList(PanelListDto panelListDto);
 }

+ 65 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/question/service/impl/QuestionServiceImpl.java

@@ -9,6 +9,9 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xunmei.common.core.constant.SecurityConstants;
+import com.xunmei.common.core.domain.panel.dto.PanelListDto;
+import com.xunmei.common.core.domain.panel.enums.PanelTypeEnums;
+import com.xunmei.common.core.domain.panel.vo.PanelListVo;
 import com.xunmei.common.core.exception.ServiceException;
 import com.xunmei.common.core.utils.IDHelper;
 import com.xunmei.common.core.web.page.TableDataInfo;
@@ -31,6 +34,7 @@ import com.xunmei.core.resumption.service.IAppResumptionDataRemarkimgService;
 import com.xunmei.core.safetyCheck.domain.CoreSafetyTaskDataRemarkimg;
 import com.xunmei.core.safetyCheck.service.ICoreSafetyTaskDataRemarkimgService;
 import com.xunmei.system.api.RemoteOrgService;
+import com.xunmei.system.api.RemoteUserService;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -38,6 +42,8 @@ import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -56,6 +62,9 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
     private RemoteOrgService orgService;
 
     @Autowired
+    RemoteUserService remoteUserService;
+
+    @Autowired
     private IAppResumptionDataRemarkimgService appResumptionDataRemarkimgService;
 
     @Autowired
@@ -297,4 +306,60 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
         // 调用EasyExcel的导出方法
         EasyExcel.write(response.getOutputStream(), QuestionExportDto.class).sheet("Sheet1").doWrite(list);
     }
+
+    /**
+     * 当前用户的工作台。有所属机构+有整改权限的待整改、所属机构+有确认权限的待确认、异议提出人+异议状态的异议审批
+     * @param panelListDto
+     * @return
+     */
+    @Override
+    public List<PanelListVo> selectCurUserTaskList(PanelListDto panelListDto){
+        LambdaQueryWrapper<Question> wrapper=new LambdaQueryWrapper<>();
+        Long confirmButton=2353L;
+        Long dissentButton=2354L;
+        Long reformButton=2355L;
+        List<Long> ownPermission= remoteUserService.checkUserPermission(Arrays.asList(confirmButton,dissentButton,reformButton)
+                ,SecurityUtils.getUserId(),SecurityConstants.INNER);
+        if(ownPermission.contains(reformButton)){
+            wrapper.or(w->w.eq(Question::getOrgId,panelListDto.getOrgId()).eq(Question::getReformStatus,QuestionReformEnum.Unreform.getValue()));
+        }
+
+        if(ownPermission.contains(confirmButton)){
+            wrapper.or(w->w.eq(Question::getOrgId,panelListDto.getOrgId()).eq(Question::getConfirmStatus,QuestionConfirmEnum.Unconfirm.getValue()));
+        }
+
+        if(ownPermission.contains(dissentButton)){
+            wrapper.or(w->w.eq(Question::getSubmitorId,SecurityUtils.getUserId()).eq(Question::getConfirmStatus,QuestionConfirmEnum.Dissent.getValue()));
+        }
+
+        if(wrapper.isEmptyOfWhere()){
+            return  new ArrayList<>();
+        }else{
+            wrapper.select(Question::getId,
+                    Question::getQuestionDesc,
+                    Question::getOrgId,
+                    Question::getConfirmStatus,
+                    Question::getReformStatus,
+                    Question::getSubmitTime,
+                    Question::getReformDeadline);
+            List<Question> list= baseMapper.selectList(wrapper);
+            List<PanelListVo> vos=list.stream().map(item->{
+                PanelListVo vo=new PanelListVo();
+                vo.setId(item.getId());
+                vo.setEndTime(item.getReformDeadline());
+                vo.setTaskName(item.getQuestionDesc());
+                vo.setStartTime(item.getSubmitTime());
+                vo.setType(PanelTypeEnums.QUESTION.getCode());
+                if(ObjectUtil.isNull(item.getReformStatus())){
+                    vo.setStatus(item.getConfirmStatus());
+                }else{
+                    vo.setStatus(item.getReformStatus());
+                }
+
+                return  vo;
+            }).collect(Collectors.toList());
+
+            return  vos;
+        }
+    }
 }

+ 14 - 5
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/SysUserController.java

@@ -92,12 +92,12 @@ public class SysUserController extends BaseController {
             admin = true;
         }
         ajax.put("check", admin);
-        String orgName="福建农信";
-        if (null!=user.getOrgId()){
+        String orgName = "福建农信";
+        if (null != user.getOrgId()) {
             SysOrg sysOrg = orgMapper.selectSysOrgById(user.getOrgId());
-            orgName=sysOrg.getShortName();
+            orgName = sysOrg.getShortName();
         }
-        ajax.put("orgName",orgName);
+        ajax.put("orgName", orgName);
         return ajax;
     }
 
@@ -124,7 +124,7 @@ public class SysUserController extends BaseController {
         }
     }
 
-   // @RequiresPermissions("system:user:list")
+    // @RequiresPermissions("system:user:list")
     @GetMapping("/userListData")
     public R<List<SysUser>> userListData(SysUser user) {
         if (ObjectUtil.isEmpty(user.getOrgId())) {
@@ -534,6 +534,7 @@ public class SysUserController extends BaseController {
             response.setCharacterEncoding("utf-8");
         }
     }
+
     @RequiresPermissions("system:user:exportSecurity")
     @PostMapping("/exportSecurity")
     public void exportSecurity(SysUser user, HttpServletResponse response) {
@@ -565,6 +566,7 @@ public class SysUserController extends BaseController {
         }
 
     }
+
     /**
      * 导出管理人员数据
      */
@@ -605,6 +607,13 @@ public class SysUserController extends BaseController {
         }
     }
 
+    @ApiOperation("检查用户的按钮权限")
+    @InnerAuth
+    @PostMapping("/checkuserpermission")
+    public List<Long> checkUserPermission(@RequestParam List<Long> menuIds, @RequestParam Long userId) {
+        return userService.checkUserPermission(menuIds, userId);
+    }
+
     /**
      * 导入
      */

+ 3 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/mapper/SysUserMapper.java

@@ -11,6 +11,7 @@ import com.xunmei.system.api.dto.SysPlanOrgDTO;
 import com.xunmei.system.util.SecurityUserExport;
 import com.xunmei.system.util.UserExport;
 import org.apache.ibatis.annotations.Param;
+import org.springframework.web.bind.annotation.RequestParam;
 
 import java.util.List;
 
@@ -163,4 +164,6 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
     List<SecurityUserExport> selectSecurityUser(@Param("path") String path);
 
     List<String> selectCountByNames(@Param("names") List<String> names);
+
+    List<Long> checkUserPermission(@Param("menuIds") List<Long> menuIds,@Param("userId")  Long userId);
 }

+ 3 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/ISysUserService.java

@@ -10,6 +10,7 @@ import com.xunmei.system.domain.vo.SysUserVO;
 import com.xunmei.system.api.dto.SysPlanOrgDTO;
 import com.xunmei.system.util.SecurityUserExport;
 import com.xunmei.system.util.UserExport;
+import org.springframework.web.bind.annotation.RequestParam;
 
 import java.util.List;
 
@@ -242,4 +243,6 @@ public interface ISysUserService extends IService<SysUser> {
     List<String> selectCountByNames(List<String> names);
 
     List<SysUser> selectUserListData(SysUser user);
+
+    List<Long> checkUserPermission(@RequestParam List<Long> menuIds,Long userId);
 }

+ 8 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysUserServiceImpl.java

@@ -42,6 +42,7 @@ import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
+import org.springframework.web.bind.annotation.RequestParam;
 
 import javax.validation.Validator;
 import java.util.ArrayList;
@@ -742,4 +743,11 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         return userMapper.selectCountByNames(names);
     }
 
+    @Override
+    public List<Long> checkUserPermission(List<Long> menuIds,Long userId) {
+        if (CollectionUtil.isEmpty(menuIds)) {
+            return new ArrayList<>();
+        }
+        return baseMapper.checkUserPermission(menuIds, userId);
+    }
 }

+ 14 - 3
soc-modules/soc-modules-system/src/main/resources/mapper/system/SysUserMapper.xml

@@ -220,21 +220,24 @@
         select id, username
         from sys_user
         where username = #{userName}
-          and deleted = '0' limit 1
+          and deleted = '0'
+        limit 1
     </select>
 
     <select id="checkPhoneUnique" parameterType="String" resultType="com.xunmei.system.api.domain.SysUser">
         select id, phone
         from sys_user
         where phone = #{phonenumber}
-          and deleted = '0' limit 1
+          and deleted = '0'
+        limit 1
     </select>
 
     <select id="checkEmailUnique" parameterType="String" resultMap="SysUserResult">
         select user_id, email
         from sys_user
         where email = #{email}
-          and deleted = '0' limit 1
+          and deleted = '0'
+        limit 1
     </select>
 
     <insert id="insertUser" parameterType="com.xunmei.system.api.domain.SysUser" useGeneratedKeys="true"
@@ -734,6 +737,14 @@
                  LEFT JOIN sys_org c ON c.id = b.org_id
         WHERE b.deleted = 0
           and c.path like concat(#{path}, '%')
+    </select>
 
+    <select id="checkUserPermission" resultType="Long">
+        select rm.menu_id from sys_user_role ur
+        INNER JOIN sys_role_menu rm on ur.role_id=rm.role_id
+        WHERE ur.user_id=#{userId} and rm.menu_id in
+        <foreach collection="menuIds" item="menuId" separator="," close=")" open="(">
+            #{menuId}
+        </foreach>
     </select>
 </mapper>