Browse Source

已检查安全检查任务详情无法获取检查内容;授权时完善用户是否需要授权

jiawuxian 1 year ago
parent
commit
e45eb0ee87

+ 8 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/mapper/CoreSafetyTaskMapper.java

@@ -80,6 +80,14 @@ public interface CoreSafetyTaskMapper extends BaseMapper<CoreSafetyTask> {
      */
     List<AppTaskRegisterPointVo> selectPoint(@Param("planId") Long planId, @Param("taskId") Long taskId);
 
+    /**
+     * 查找来源于计划的任务检查内容信息
+     *
+     * @param taskId
+     * @return
+     */
+    List<AppTaskRegisterPointVo> selectPointByTask(@Param("taskId") Long taskId);
+
     List<TaskRegisterNfcVo> selectNfc(@Param("planId") Long planId, @Param("taskId") Long taskId, @Param("orgId") Long orgId);
 
     List<TaskRegisterNfcVo> selectNfcByTask( @Param("taskId") Long taskId);

+ 25 - 15
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/service/impl/SafetyCheckRegisterSericeImpl.java

@@ -38,6 +38,7 @@ import com.xunmei.system.api.RemoteOrgService;
 import com.xunmei.system.api.RemoteRoleService;
 import com.xunmei.system.api.RemoteUserService;
 import com.xunmei.system.api.domain.SysOrg;
+import com.xunmei.system.api.domain.SysUser;
 import com.xunmei.system.api.model.LoginUser;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
@@ -98,9 +99,9 @@ public class SafetyCheckRegisterSericeImpl extends ServiceImpl<CoreSafetyTaskMap
             wrapper.eq(CoreSafetyTask::getOrgId, dto.getBeCheckedOrgId());
         }
         if (ObjectUtil.isNotNull(dto.getCheckOrgId())) {
-            wrapper.and(w->w.eq(CoreSafetyTask::getCheckOrgId, dto.getCheckOrgId())
+            wrapper.and(w -> w.eq(CoreSafetyTask::getCheckOrgId, dto.getCheckOrgId())
                     .or()
-                    .eq(CoreSafetyTask::getGrantUserId,SecurityUtils.getUserId()));
+                    .eq(CoreSafetyTask::getGrantUserId, SecurityUtils.getUserId()));
         }
         if (ObjectUtil.isNotNull(dto.getStatus())) {
             wrapper.eq(CoreSafetyTask::getStatus, dto.getStatus());
@@ -121,7 +122,7 @@ public class SafetyCheckRegisterSericeImpl extends ServiceImpl<CoreSafetyTaskMap
         page.getRecords().forEach(vo -> {
             List<CoreSafetyTask> v = list.stream()
                     .filter(i -> ObjectUtil.equal(i.getPlanId(), vo.getPlanId()) && ObjectUtil.equal(vo.getCount(), i.getCount())
-                            && ObjectUtil.equal(vo.getTaskName(),i.getTitle())
+                            && ObjectUtil.equal(vo.getTaskName(), i.getTitle())
                             && ObjectUtil.equal(i.getPlanStartTime(), vo.getPlanStartTime()) && ObjectUtil.equal(i.getPlanEndTime(), vo.getPlanEndTime()))
                     .collect(Collectors.toList());
             List<Long> roleIds = planToRoles.stream().filter(p -> ObjectUtil.equal(p.getPlanId(), vo.getPlanId()))
@@ -229,7 +230,7 @@ public class SafetyCheckRegisterSericeImpl extends ServiceImpl<CoreSafetyTaskMap
         List<AppTaskRegisterPointVo> points = new ArrayList<>();
         List<TaskRegisterNfcVo> nfcs = new ArrayList<>();
         if (ObjectUtil.equal(task.getStatus(), SafetyCheckTaskStatus.Completed.getValue()) || ObjectUtils.isNull(plan)) {
-            points = baseMapper.selectPoint(null, taskId);
+            points = baseMapper.selectPointByTask(taskId);
             nfcs = baseMapper.selectNfcByTask(taskId);
         } else {
             points = baseMapper.selectPoint(plan.getId(), taskId);
@@ -609,17 +610,26 @@ public class SafetyCheckRegisterSericeImpl extends ServiceImpl<CoreSafetyTaskMap
 
         Long loginUserId = SecurityUtils.getUserId();
         if (ObjectUtil.isNotNull(dto.getUserId())) {
-            List<IdNameVo> roles = remoteUserService.getRoleInfoOfUser(dto.getUserId(), SecurityConstants.INNER);
-            if (CollectionUtil.isNotEmpty(roles)) {
-                LambdaQueryWrapper<CoreSafecheckPlanToRole> prWrapper = new LambdaQueryWrapper<>();
-                prWrapper.eq(CoreSafecheckPlanToRole::getPlanId, dto.getPlanId())
-                        .select(CoreSafecheckPlanToRole::getRoleId);
-                List<Long> planRoles = coreSafecheckPlanToRoleMapper.selectList(prWrapper).stream()
-                        .map(CoreSafecheckPlanToRole::getRoleId)
-                        .collect(Collectors.toList());
-
-                if (CollectionUtil.intersection(roles.stream().map(IdNameVo::getId).collect(Collectors.toList()), planRoles).size() > 0) {
-                    throw new ServiceException("用户已在检查角色中,无需授权");
+            SysUser user = remoteUserService.getUserById(dto.getUserId(), SecurityConstants.INNER);
+            if (ObjectUtil.isNull(user)) {
+                throw new ServiceException("用户不存在");
+            }
+
+            if (ObjectUtil.equal(user.getOrgId(), task.getCheckOrgId())) {
+                //同一个机构,才判断是否在角色内
+                List<IdNameVo> roles = remoteUserService.getRoleInfoOfUser(dto.getUserId(), SecurityConstants.INNER);
+                if (CollectionUtil.isNotEmpty(roles)) {
+                    LambdaQueryWrapper<CoreSafecheckPlanToRole> prWrapper = new LambdaQueryWrapper<>();
+                    prWrapper.eq(CoreSafecheckPlanToRole::getPlanId, dto.getPlanId())
+                            .select(CoreSafecheckPlanToRole::getRoleId);
+                    List<Long> planRoles = coreSafecheckPlanToRoleMapper.selectList(prWrapper).stream()
+                            .map(CoreSafecheckPlanToRole::getRoleId)
+                            .collect(Collectors.toList());
+
+                    if (CollectionUtil.intersection(roles.stream().map(IdNameVo::getId).collect(Collectors.toList()), planRoles).size() > 0) {
+
+                        throw new ServiceException("用户已在检查角色中,无需授权");
+                    }
                 }
             }
         }

+ 55 - 27
soc-modules/soc-modules-core/src/main/resources/mapper/safetycheck/CoreSafetyTaskMapper.xml

@@ -641,31 +641,37 @@
     </delete>
 
     <select id="selectPoint" resultType="com.xunmei.core.safetyCheck.vo.regsiter.AppTaskRegisterPointVo">
-        <if test="planId!=null">
-            (SELECT f.id as areaId,
-            f.name as areaName,
-            e.id as itemId,
-            e.name as itemName,
-            rd.id as pointDataId,
-            a.id as pointId,
-            a.name as pointName,
-            b.required as mustCheck,
-            if(rd.is_add is null, 0, rd.is_add) as isAdd,
-            if(rd.value is null, 0, rd.value) as status,
-            if(rd.remark is null, null, rd.remark) as remark,
-            rd.rectification_deadline as rectificationDeadline,
-            rd.submit_by,
-            rd.submit_time
-            FROM core_safecheck_plan_to_point b
-            LEFT JOIN core_safetycheck_rule_point a ON a.id = b.point_id
-            LEFT JOIN core_safecheck_plan c ON b.plan_id = c.id
-            LEFT JOIN core_safetycheck_rule_item e ON a.item_id = e.id
-            LEFT JOIN sys_area f ON a.area_id = f.id
-            LEFT JOIN core_safety_task_data rd ON rd.point_id = b.point_id and rd.task_id = #{taskId}
-            WHERE c.id = #{planId}
-            and a.deleted = 0)
-            union
-        </if>
+        (SELECT f.id as areaId,
+        f.name as areaName,
+        e.id as itemId,
+        e.name as itemName,
+        rd.id as pointDataId,
+        a.id as pointId,
+        a.name as pointName,
+        b.required as mustCheck,
+        if(rd.is_add is null, 0, rd.is_add) as isAdd,
+        if(rd.value is null, 0, rd.value) as status,
+        if(rd.remark is null, null, rd.remark) as remark,
+        rd.rectification_deadline as rectificationDeadline,
+        rd.submit_by,
+        rd.submit_time
+        FROM core_safecheck_plan_to_point b
+        LEFT JOIN core_safetycheck_rule_point a ON a.id = b.point_id
+        LEFT JOIN core_safecheck_plan c ON b.plan_id = c.id
+        LEFT JOIN core_safetycheck_rule_item e ON a.item_id = e.id
+        LEFT JOIN sys_area f ON a.area_id = f.id
+        LEFT JOIN core_safety_task_data rd ON rd.point_id = b.point_id and rd.task_id = #{taskId}
+        WHERE
+        <choose>
+            <when test="planId!=null">
+                c.id = #{planId}
+            </when>
+            <otherwise>
+                1=0
+            </otherwise>
+        </choose>
+        and a.deleted = 0)
+        union
         (SELECT f.id as areaId,
         f.name as areaName,
         e.id as itemId,
@@ -688,6 +694,28 @@
         and rd.is_add = 1
         and a.deleted = 0)
     </select>
+    <select id="selectPointByTask" resultType="com.xunmei.core.safetyCheck.vo.regsiter.AppTaskRegisterPointVo">
+        SELECT f.id as areaId,
+        f.name as areaName,
+        e.id as itemId,
+        e.name as itemName,
+        rd.id as pointDataId,
+        a.id as pointId,
+        a.name as pointName,
+        1 as mustCheck,
+        rd.is_add as isAdd,
+        rd.value as status,
+        rd.remark as remark,
+        rd.rectification_deadline as rectificationDeadline,
+        rd.submit_by,
+        rd.submit_time
+        FROM core_safety_task_data rd
+        LEFT JOIN core_safetycheck_rule_point a ON a.id = rd.point_id
+        LEFT JOIN core_safetycheck_rule_item e ON a.item_id = e.id
+        LEFT JOIN sys_area f ON a.area_id = f.id
+        WHERE rd.task_id = #{taskId}
+        and a.deleted = 0
+    </select>
 
     <select id="selectNfc" resultType="com.xunmei.core.safetyCheck.vo.regsiter.TaskRegisterNfcVo">
         SELECT dn.id                               as nfcDataId,
@@ -760,8 +788,8 @@
         select t.scan_method,
                n.area_name,
                n.collection_area_name,
-               n.code as nfc_code,
-               n.label_name as nfc_name,
+               n.code        as nfc_code,
+               n.label_name  as nfc_name,
                t.img,
                t.submit_time as execute_time
         from core_safety_task_data_nfc t