Jelajahi Sumber

安全检查临时登记

jiawuxian 2 tahun lalu
induk
melakukan
c53c6ae192

+ 35 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/enums/SafetyTaskSourceType.java

@@ -0,0 +1,35 @@
+package com.xunmei.core.safetyCheck.enums;
+
+import lombok.Data;
+
+/**
+ * 安全检查任务来源
+ */
+
+public enum SafetyTaskSourceType {
+    /**
+     * 计划
+     */
+    Plan(0, "计划"),
+    /**
+     * 临时检查
+     */
+    TempTask(1, "临时检查");
+
+    private Integer code;
+
+    private String label;
+
+    SafetyTaskSourceType(Integer code, String label) {
+        this.code = code;
+        this.label = label;
+    }
+
+    public Integer getCode() {
+        return code;
+    }
+
+    public String getLabel() {
+        return label;
+    }
+}

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

@@ -82,6 +82,8 @@ public interface CoreSafetyTaskMapper extends BaseMapper<CoreSafetyTask> {
 
     List<TaskRegisterNfcVo> selectNfc(@Param("planId") Long planId, @Param("taskId") Long taskId, @Param("orgId") Long orgId);
 
+    List<TaskRegisterNfcVo> selectNfcByTask( @Param("taskId") Long taskId);
+
     Page<AppPageVo> selectTaskGroup(@Param("page") Page<AppPageVo> page, @Param("params") AppPageDto params, @Param("userId") Long userId);
 
     List<CheckNfcRecord> selectNfcRecord(String taskId);

+ 44 - 16
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/service/impl/CoreSafetyTaskServiceImpl.java

@@ -1,7 +1,6 @@
 package com.xunmei.core.safetyCheck.service.impl;
 
-import java.util.Date;
-import java.util.List;
+import java.util.*;
 
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.date.DateUtil;
@@ -11,16 +10,19 @@ 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.utils.DateUtils;
+import com.xunmei.common.core.vo.IdNameVo;
 import com.xunmei.core.safetyCheck.domain.CoreSafetyTask;
+import com.xunmei.core.safetyCheck.enums.SafetyTaskSourceType;
 import com.xunmei.core.safetyCheck.mapper.CoreSafecheckPlanToRoleMapper;
 import com.xunmei.core.safetyCheck.mapper.CoreSafetyTaskMapper;
 import com.xunmei.core.safetyCheck.service.ICoreSafetyTaskService;
 import com.xunmei.core.safetyCheck.vo.CheckNfcRecord;
 import com.xunmei.core.safetyCheck.vo.plan.SafetyPlanRoleVo;
+import com.xunmei.system.api.Eto.RoleConditionEto;
+import com.xunmei.system.api.RemoteRoleService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.Arrays;
 import java.util.stream.Collectors;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -42,6 +44,9 @@ public class CoreSafetyTaskServiceImpl extends ServiceImpl<CoreSafetyTaskMapper,
     @Autowired
     private CoreSafecheckPlanToRoleMapper coreSafecheckPlanToRoleMapper;
 
+    @Autowired
+    private RemoteRoleService remoteRoleService;
+
     @Override
     public TableDataInfo<CoreSafetyTask> selectPage(CoreSafetyTask coreSafetyTask) {
         //未删除
@@ -69,19 +74,40 @@ public class CoreSafetyTaskServiceImpl extends ServiceImpl<CoreSafetyTaskMapper,
         }
         //获取数据
         page = coreSafetyTaskMapper.selectCoreSafetyTaskPage(page, coreSafetyTask);
-        if(CollectionUtil.isNotEmpty(page.getRecords())){
-            List<Long> planIds= page.getRecords().stream().map(r->r.getPlanId()).distinct().collect(Collectors.toList());
-
-            List<SafetyPlanRoleVo> planRoles=coreSafecheckPlanToRoleMapper.selectRoles(planIds);
-            page.getRecords().forEach(r->{
-                List<SafetyPlanRoleVo> roles=planRoles.stream().filter(pr-> ObjectUtil.equal(r.getPlanId(),pr.getPlanId())).collect(Collectors.toList());
-                if(coreSafetyTask.getRoleId()!=null){
-                    roles = roles.stream().filter(e -> e.getRoleId().equals(coreSafetyTask.getRoleId())).collect(Collectors.toList());
+        if (CollectionUtil.isNotEmpty(page.getRecords())) {
+            List<Long> planIds = page.getRecords().stream().map(r -> r.getPlanId()).distinct().collect(Collectors.toList());
+
+            List<Long> tempTaskRoldIds = page.getRecords().stream().filter(r -> ObjectUtil.equal(r.getSourceType(), SafetyTaskSourceType.TempTask.getCode().longValue())).map(r -> r.getRoleId()).distinct().collect(Collectors.toList());
+            final List<IdNameVo> tempTaskRoles = new ArrayList();
+            if (CollectionUtil.isNotEmpty(tempTaskRoldIds)) {
+                RoleConditionEto eto = new RoleConditionEto();
+                eto.setIds(tempTaskRoldIds);
+                tempTaskRoles.addAll(remoteRoleService.getNames(eto));
+            }
+
+            List<SafetyPlanRoleVo> planRoles = coreSafecheckPlanToRoleMapper.selectRoles(planIds);
+            page.getRecords().forEach(r -> {
+                if (ObjectUtil.notEqual(r.getSourceType(), SafetyTaskSourceType.TempTask.getCode().longValue())) {
+                    List<SafetyPlanRoleVo> roles = planRoles.stream().filter(pr -> ObjectUtil.equal(r.getPlanId(), pr.getPlanId())).collect(Collectors.toList());
+                    if (coreSafetyTask.getRoleId() != null) {
+                        roles = roles.stream().filter(e -> e.getRoleId().equals(coreSafetyTask.getRoleId())).collect(Collectors.toList());
+                        r.setRoles(roles);
+                    } else {
                         r.setRoles(roles);
-                }else {
-                    r.setRoles(roles);
+                    }
+                } else {
+                    Optional<IdNameVo> opt = tempTaskRoles.stream().filter(role -> ObjectUtil.equal(r.getRoleId(), role.getId())).findFirst();
+                    if (opt.isPresent()) {
+                        r.setRoles(new ArrayList<>());
+                        SafetyPlanRoleVo roleVo = new SafetyPlanRoleVo();
+                        roleVo.setRoleId(opt.get().getId());
+                        roleVo.setRoleName(opt.get().getName());
+                        r.getRoles().add(roleVo);
+                    }
                 }
             });
+
+
             page.setRecords(page.getRecords().stream().filter(e -> e.getRoles().size() > 0).collect(Collectors.toList()));
         }
 
@@ -166,14 +192,16 @@ public class CoreSafetyTaskServiceImpl extends ServiceImpl<CoreSafetyTaskMapper,
     @Override
     public List<PanelListVo> selectCurUserTaskList(PanelListDto panelListDto) {
         List<PanelListVo> list = coreSafetyTaskMapper.selectCurUserTaskList(panelListDto);
-        list.removeIf(item-> DateUtil.compare(new Date(), item.getEndTime()) > 0);
-        list.forEach(item -> { item.setType(PanelTypeEnums.SAFETY_CHECK.getCode());});
+        list.removeIf(item -> DateUtil.compare(new Date(), item.getEndTime()) > 0);
+        list.forEach(item -> {
+            item.setType(PanelTypeEnums.SAFETY_CHECK.getCode());
+        });
         return list;
     }
 
     @Override
     public void deleteByOrgIdAndRange(Long orgId, Date startDate, Date endDate, Integer cycle) {
-        coreSafetyTaskMapper.delete(new LambdaQueryWrapper<CoreSafetyTask>().eq(CoreSafetyTask::getOrgId, orgId).eq(CoreSafetyTask::getCheckCycle,cycle).between(CoreSafetyTask::getYmdDate, startDate, endDate).in(CoreSafetyTask::getStatus,1,2));
+        coreSafetyTaskMapper.delete(new LambdaQueryWrapper<CoreSafetyTask>().eq(CoreSafetyTask::getOrgId, orgId).eq(CoreSafetyTask::getCheckCycle, cycle).between(CoreSafetyTask::getYmdDate, startDate, endDate).in(CoreSafetyTask::getStatus, 1, 2));
     }
 
 

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

@@ -1,10 +1,12 @@
 package com.xunmei.core.safetyCheck.service.impl;
 
 import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.date.DateField;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xunmei.common.core.constant.SecurityConstants;
@@ -22,6 +24,7 @@ import com.xunmei.core.question.service.IQuestionService;
 import com.xunmei.core.safetyCheck.domain.*;
 import com.xunmei.core.safetyCheck.dto.register.AppPageDto;
 import com.xunmei.core.safetyCheck.dto.register.GrantDto;
+import com.xunmei.core.safetyCheck.enums.SafetyTaskSourceType;
 import com.xunmei.core.safetyCheck.mapper.*;
 import com.xunmei.core.safetyCheck.service.ICoreSafetyTaskDataNfcService;
 import com.xunmei.core.safetyCheck.service.ICoreSafetyTaskDataRemarkimgService;
@@ -37,13 +40,11 @@ import com.xunmei.system.api.RemoteUserService;
 import com.xunmei.system.api.domain.SysOrg;
 import com.xunmei.system.api.model.LoginUser;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.RequestBody;
 
 import javax.annotation.Resource;
-import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.function.Predicate;
 import java.util.stream.Collectors;
@@ -118,6 +119,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(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()))
@@ -205,40 +207,46 @@ public class SafetyCheckRegisterSericeImpl extends ServiceImpl<CoreSafetyTaskMap
         return vo;
     }
 
-    private TaskRegisterVo<AppTaskRegisterPointVo> getPointVos(Long id) {
-        CoreSafetyTask task = coreSafetyTaskMapper.selectById(id);
+    private TaskRegisterVo<AppTaskRegisterPointVo> getPointVos(Long taskId) {
+        CoreSafetyTask task = coreSafetyTaskMapper.selectById(taskId);
         if (ObjectUtil.isNull(task)) {
             throw new ServiceException("任务不存在");
         }
 
-        CoreSafecheckPlan plan = coreSafecheckPlanMapper.selectById(task.getPlanId());
-        if (ObjectUtil.isNull(plan)) {
-            throw new ServiceException("计划不存在");
+        CoreSafecheckPlan plan = null;
+        if (ObjectUtil.isNotNull(task.getPlanId())) {
+            plan = coreSafecheckPlanMapper.selectById(task.getPlanId());
         }
 
-        List<Long> roleIds = coreSafecheckPlanToRoleMapper.selectList(new LambdaQueryWrapper<CoreSafecheckPlanToRole>()
-                        .eq(CoreSafecheckPlanToRole::getPlanId, plan.getId())
-                        .select(CoreSafecheckPlanToRole::getRoleId))
-                .stream()
-                .map(CoreSafecheckPlanToRole::getRoleId)
-                .collect(Collectors.toList());
-        RoleConditionEto eto = new RoleConditionEto();
-        eto.setIds(roleIds);
-        List<IdNameVo> roleNames = remoteRoleService.getNames(eto);
+        /**
+         * 已经完成任务的信息应该从任务信息中获取
+         * 其它状态的任务消息从计划和任务中联合获取
+         */
+        List<IdNameVo> roleNames = getTaskRoles(plan, task);
         // 找出检查内容
-        List<AppTaskRegisterPointVo> points = baseMapper.selectPoint(plan.getId(), id);
+        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);
+            nfcs = baseMapper.selectNfcByTask(taskId);
+        } else {
+            points = baseMapper.selectPoint(plan.getId(), taskId);
+            nfcs = baseMapper.selectNfc(plan.getId(), taskId, task.getOrgId());
+        }
+
         Map<Long, List<CoreSafetyTaskDataRemarkimg>> taskImgs = new HashMap<>();
-        if (ObjectUtil.notEqual(task.getStatus(), SafetyCheckTaskStatus.Waiting.getValue())) {
+        if (ObjectUtil.equal(task.getStatus(), SafetyCheckTaskStatus.UnderWay.getValue()) ||
+                (ObjectUtil.equal(task.getStatus(), SafetyCheckTaskStatus.Completed.getValue()))) {
             //已保存未提交的才可能有问题图片
             LambdaQueryWrapper<CoreSafetyTaskDataRemarkimg> wrapper = new LambdaQueryWrapper<>();
-            wrapper.eq(CoreSafetyTaskDataRemarkimg::getTaskId, id);
+            wrapper.eq(CoreSafetyTaskDataRemarkimg::getTaskId, taskId);
             List<CoreSafetyTaskDataRemarkimg> imgs = iCoreSafetyTaskDataRemarkimgService.list(wrapper);
             taskImgs = imgs.stream().collect(Collectors.groupingBy(CoreSafetyTaskDataRemarkimg::getTaskDataId));
         }
 
-        List<TaskRegisterNfcVo> nfcs = baseMapper.selectNfc(plan.getId(), id, task.getOrgId());
-        TaskRegisterVo<AppTaskRegisterPointVo> vo = TaskRegisterVo.of(task, plan.getCheckOrgType().toString(), roleNames);
-        vo.setPlanType(plan.getCheckType().intValue());
+
+        TaskRegisterVo<AppTaskRegisterPointVo> vo = TaskRegisterVo.of(task, plan != null ? plan.getCheckOrgType().toString() : "", roleNames);
+//        vo.setPlanType(plan.getCheckType().intValue());
         Set<Long> usedNfcId = new HashSet<>();
         for (AppTaskRegisterPointVo point : points) {
             List<CoreSafetyTaskDataRemarkimg> dataImgs = taskImgs.get(point.getPointDataId());
@@ -261,6 +269,29 @@ public class SafetyCheckRegisterSericeImpl extends ServiceImpl<CoreSafetyTaskMap
         return vo;
     }
 
+    private List<IdNameVo> getTaskRoles(CoreSafecheckPlan plan, CoreSafetyTask task) {
+        List<Long> roleIds = new ArrayList<>();
+        if (ObjectUtil.equal(task.getSourceType(), SafetyTaskSourceType.TempTask.getCode().longValue())) {
+            roleIds = Arrays.asList(task.getRoleId());
+        } else {
+            if (ObjectUtil.isNull(plan)) {
+                throw new ServiceException("计划不存在");
+            }
+
+            roleIds = coreSafecheckPlanToRoleMapper.selectList(new LambdaQueryWrapper<CoreSafecheckPlanToRole>()
+                            .eq(CoreSafecheckPlanToRole::getPlanId, plan.getId())
+                            .select(CoreSafecheckPlanToRole::getRoleId))
+                    .stream()
+                    .map(CoreSafecheckPlanToRole::getRoleId)
+                    .collect(Collectors.toList());
+        }
+        RoleConditionEto eto = new RoleConditionEto();
+        eto.setIds(roleIds);
+        List<IdNameVo> roleNames = remoteRoleService.getNames(eto);
+
+        return roleNames;
+    }
+
     /**
      * 登记
      *
@@ -326,8 +357,8 @@ public class SafetyCheckRegisterSericeImpl extends ServiceImpl<CoreSafetyTaskMap
         if (ObjectUtil.isNull(data.getId())) {
             data.setId(IDHelper.id());
         }
+        data.setPlanEndTime(DateUtil.endOfDay(data.getPlanStartTime()).setField(DateField.MILLISECOND, 0));
         data.setPlanStartTime(DateUtil.beginOfDay(data.getPlanStartTime()));
-        data.setPlanEndTime(DateUtil.endOfDay(data.getPlanStartTime()));
         return webSubmit(data, true);
     }
 
@@ -505,7 +536,8 @@ public class SafetyCheckRegisterSericeImpl extends ServiceImpl<CoreSafetyTaskMap
         SysOrg checkOrg = remoteOrgService.selectOrgById(data.getCheckOrgId(), SecurityConstants.INNER);
 
         CoreSafetyTask task = new CoreSafetyTask();
-        task.setId(task.getId());
+        task.setId(data.getId());
+        task.setPlanId(-1L);
         task.setTitle(data.getTaskName());
         task.setCount(1);
         task.setExceptionCount(exceptionCount.longValue());

+ 3 - 2
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/vo/regsiter/TaskRegisterVo.java

@@ -32,8 +32,9 @@ public class TaskRegisterVo<T> {
     @JsonSerialize(using = ToStringSerializer.class)
     private Long planId;
 
-    @ApiModelProperty(value = "计划类型")
-    private Integer planType;
+//    @ApiModelProperty(value = "计划类型")
+//
+//    private Integer planType;
 
     @ApiModelProperty(value = "计划开始时间")
     private Date planStartTime;

+ 76 - 53
soc-modules/soc-modules-core/src/main/resources/mapper/safetycheck/CoreSafetyTaskMapper.xml

@@ -214,7 +214,9 @@
         t.ymd_date,
         t.plan_start_time,
         t.plan_end_time,
-        t.grant_user_id
+        t.grant_user_id,
+        t.source_type,
+        t.role_id
         FROM core_safety_task t
         LEFT JOIN sys_org o1 ON o1.id = t.org_id
         LEFT JOIN sys_org o2 ON o2.id = t.check_org_id
@@ -230,14 +232,14 @@
         <if test="task.status != null  and task.status != ''">
             and t.status =#{task.status}
         </if>
-<!--        <if test="task.roleId != null  and task.roleId != ''">-->
-<!--            and t.role_id =#{task.roleId}-->
-<!--        </if>-->
+        <!--        <if test="task.roleId != null  and task.roleId != ''">-->
+        <!--            and t.role_id =#{task.roleId}-->
+        <!--        </if>-->
         <if test="task.checkSub==false">
             and t.check_org_id=#{task.orgId}
         </if>
         <if test="task.range !=null and task.range.size==2">
-           and t.plan_start_time>=#{task.range[0]} and t.plan_start_time &lt; #{task.range[1]}
+            and t.plan_start_time>=#{task.range[0]} and t.plan_start_time &lt; #{task.range[1]}
         </if>
         <if test="task.checkSub==true">
             and t.check_org_id in (select id from sys_org
@@ -636,50 +638,52 @@
     </delete>
 
     <select id="selectPoint" 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,
-                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
-        (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 rd.is_add = 1
-           and a.deleted = 0)
+        <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,
+        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 rd.is_add = 1
+        and a.deleted = 0)
     </select>
 
     <select id="selectNfc" resultType="com.xunmei.core.safetyCheck.vo.regsiter.TaskRegisterNfcVo">
@@ -703,6 +707,21 @@
           AND p.plan_id = #{planId}
           AND p.point_scan = 1
     </select>
+    <select id="selectNfcByTask" resultType="com.xunmei.core.safetyCheck.vo.regsiter.TaskRegisterNfcVo">
+        SELECT dn.id as nfcDataId,
+        dn.task_data_id as taskDataId,
+        nfc.id as nfcId,
+        nfc.area_id as areaId,
+        nfc.code as nfcCode,
+        nfc.label_name as nfcName,
+        <!--               p.required                          as mustScan,-->
+        if(dn.status is null, 0, dn.status) as status,
+        dn.scan_method as scanMethod,
+        dn.img as scanMethod
+        FROM core_safety_task_data_nfc dn
+        inner join sys_nfc_bind nfc on nfc.id = dn.nfc_id
+        where dn.task_id = #{taskId}
+    </select>
     <select id="selectTaskGroup" resultType="com.xunmei.core.safetyCheck.vo.regsiter.AppPageVo">
         select t.plan_id as planId,
         t.title as taskName,
@@ -721,12 +740,16 @@
             and t.status=#{params.status}
         </if>
         <if test="params.roleIds!=null and params.roleIds.size>0">
-            and (t.plan_id in (select plan_id from core_safecheck_plan_to_role where role_id in
+            and (
+            t.grant_user_id=#{userId}
+            or t.role_id in
+            <foreach collection="params.roleIds" item="roleId" open="(" separator="," close=")">
+                #{roleId}
+            </foreach>
+            or t.plan_id in (select plan_id from core_safecheck_plan_to_role where role_id in
             <foreach collection="params.roleIds" item="roleId" open="(" separator="," close=")">
                 #{roleId}
-            </foreach>)
-            or
-            t.grant_user_id=#{userId})
+            </foreach>))
         </if>
         group by t.plan_id,t.title,t.plan_start_time,t.plan_end_time,t.count
     </select>