Переглянути джерело

sql脚本更新,预案演练评优列表代码提交

jingyuanchao 2 роки тому
батько
коміт
de794bb779

+ 11 - 0
project_data/sql/0.0.2/soc/soc.sql

@@ -124,4 +124,15 @@ BEGIN
 END??
 DELIMITER ;
 CALL schema_change();
+-- 新增演练任务推荐状态字典
+delete from sys_dict_type where dict_type='drill_task_rec_status';
+delete from sys_dict_data where dict_type='drill_task_rec_status';
+INSERT INTO sys_dict_type ( dict_name, dict_type, status, create_by, create_time, update_by, update_time, remark) VALUES ( '演练任务推荐状态', 'drill_task_rec_status', '0', '超级管理员', now(), '', null, null);
+INSERT INTO sys_dict_data ( dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark) VALUES ( 0, '正常案例', '0', 'drill_task_rec_status', null, 'default', 'N', '0', '超级管理员', now(), '超级管理员', now(), null);
+INSERT INTO sys_dict_data ( dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark) VALUES ( 0, '行社优秀案例', '1', 'drill_task_rec_status', null, 'default', 'N', '0', '超级管理员', now(), '超级管理员', now(), null);
+INSERT INTO sys_dict_data ( dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark) VALUES ( 0, '已推荐地区优秀案例', '2', 'drill_task_rec_status', null, 'default', 'N', '0', '超级管理员', now(), '', null, null);
+INSERT INTO sys_dict_data ( dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark) VALUES ( 0, '地区优秀案例', '3', 'drill_task_rec_status', null, 'default', 'N', '0', '超级管理员', now(), '', null, null);
+INSERT INTO sys_dict_data ( dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark) VALUES ( 0, '已推荐省级优秀案例', '4', 'drill_task_rec_status', null, 'default', 'N', '0', '超级管理员', now(), '', null, null);
+INSERT INTO sys_dict_data ( dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark) VALUES ( 0, '省级优秀案例', '5', 'drill_task_rec_status', null, 'default', 'N', '0', '超级管理员', now(), '', null, null);
+
 

+ 1 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/constant/DictConstants.java

@@ -241,6 +241,7 @@ public class DictConstants {
      * 预案演练类型
      */
     public static final String CORE_DRILL_TYPE = "core_drill_type";
+    public static final String DRILL_TASK_REC_STATUS = "drill_task_rec_status";
 
 
 }

+ 4 - 10
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/drill/domain/CoreDrillTask.java

@@ -88,16 +88,6 @@ public class CoreDrillTask extends BaseEntity {
     private Date endDate;
 
 
-//    @TableField("training_start_date_time")
-//    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
-//    @ApiModelProperty(value = "培训开始时间")
-//    private LocalDateTime trainingStartDateTime;
-//
-//    @TableField("training_end_date_time")
-//    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
-//    @ApiModelProperty(value = "培训截止时间")
-//    private LocalDateTime trainingEndDateTime;
-
     @TableField("drill_time")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     @ApiModelProperty(value = "演练时间")
@@ -115,6 +105,10 @@ public class CoreDrillTask extends BaseEntity {
     @ApiModelProperty(value = "状态")
     private Integer status;
 
+    @TableField("rec_status")
+    @ApiModelProperty(value = "推荐状态",example = "0:正常案例、1:行社优秀案例、2:已推荐地区优秀案例、3:地区优秀案例、4:已推荐省级优秀案例、5:省级优秀案例")
+    private Integer recStatus;
+
 
     @TableField("preset_case")
     @ApiModelProperty(value = "预设案由")

+ 28 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/drill/dto/CoreDrillTaskRecPageDto.java

@@ -0,0 +1,28 @@
+package com.xunmei.common.core.domain.drill.dto;
+
+import com.xunmei.common.core.web.domain.PageRequest;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import javax.validation.constraints.NotNull;
+import java.util.Date;
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class CoreDrillTaskRecPageDto extends PageRequest {
+
+
+    @ApiModelProperty(value = "状态")
+    private Integer recStatus;
+
+    @NotNull(message = "请选择具体时间进行查看!")
+    @ApiModelProperty(value = "任务时间范围", notes = "App传递此参数")
+    private Date date;
+
+    private Date startTime;
+
+    private Date endTime;
+
+
+}

+ 8 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/drill/vo/CoreDrillTaskDetailVo.java

@@ -104,9 +104,17 @@ public class CoreDrillTaskDetailVo {
     @ApiModelProperty(value = "登记簿地址")
     private String pdfUrl;
 
+    @ApiModelProperty(value = "推荐状态",example = "0:正常案例、1:行社优秀案例、2:已推荐地区优秀案例、3:地区优秀案例、4:已推荐省级优秀案例、5:省级优秀案例")
+    private Integer recStatus;
+
+    @ApiModelProperty(value = "推荐状态名称")
+    private String recStatusText;
+
 
     @JsonIgnore
     @ApiModelProperty(value = "图片")
     private String file;
 
+
+
 }

+ 7 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/drill/vo/CoreDrillTaskPageVo.java

@@ -89,4 +89,11 @@ public class CoreDrillTaskPageVo {
 
     @ApiModelProperty(value = "评语")
     private String comment;
+
+
+    @ApiModelProperty(value = "推荐状态",example = "0:正常案例、1:行社优秀案例、2:已推荐地区优秀案例、3:地区优秀案例、4:已推荐省级优秀案例、5:省级优秀案例")
+    private Integer recStatus;
+
+    @ApiModelProperty(value = "推荐状态名称")
+    private String recStatusText;
 }

+ 44 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/drill/vo/CoreDrillTaskRecPageVo.java

@@ -0,0 +1,44 @@
+package com.xunmei.common.core.domain.drill.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.xunmei.common.core.domain.drill.domain.CoreDrillTaskToRole;
+import com.xunmei.common.core.domain.drill.domain.CoreDrillTaskToUser;
+import com.xunmei.common.core.web.domain.PageRequest;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import javax.validation.constraints.NotNull;
+import java.util.Date;
+import java.util.List;
+
+@Data
+public class CoreDrillTaskRecPageVo {
+
+    @JsonSerialize(using = com.fasterxml.jackson.databind.ser.std.ToStringSerializer.class)
+    private Long id;
+
+    @ApiModelProperty(value = "机构名称")
+    private String orgName;
+    /**
+     * @see com.xunmei.common.core.enums.drill.DrillType
+     * 类型
+     */
+    @ApiModelProperty(value = "演练类型")
+    private Integer type;
+
+    @ApiModelProperty(value = "演练类型名称")
+    private String typeText;
+
+    @ApiModelProperty(value = "评分")
+    private String commentScore;
+
+    @ApiModelProperty(value = "推荐状态", example = "0:正常案例、1:行社优秀案例、2:已推荐地区优秀案例、3:地区优秀案例、4:已推荐省级优秀案例、5:省级优秀案例")
+    private Integer recStatus;
+
+    @ApiModelProperty(value = "推荐状态名称")
+    private String recStatusText;
+
+
+}

+ 7 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/enums/OrgTypeEnum.java

@@ -56,4 +56,11 @@ public enum OrgTypeEnum {
         return e != null ? e.getName() : "";
     }
 
+    /**
+     * 根据code获取name
+     */
+    public static OrgTypeEnum getOrgTypeEnum(Integer code) {
+        return enumMap.get(code);
+    }
+
 }

+ 15 - 8
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/controller/CoreDrillTaskController.java

@@ -4,6 +4,7 @@ package com.xunmei.core.drill.controller;
 import com.xunmei.common.core.domain.drill.domain.CoreDrillTask;
 import com.xunmei.common.core.domain.drill.dto.*;
 import com.xunmei.common.core.domain.drill.vo.CoreDrillTaskPageVo;
+import com.xunmei.common.core.domain.drill.vo.CoreDrillTaskRecPageVo;
 import com.xunmei.common.core.web.controller.BaseController;
 import com.xunmei.common.core.web.domain.AjaxResult;
 import com.xunmei.common.core.web.page.TableDataInfo;
@@ -40,14 +41,6 @@ public class CoreDrillTaskController extends BaseController {
         return coreDrillTaskService.selectPage(coreDrillTask);
     }
 
-
-    @ApiOperation(value = "App端获取签名情况")
-    @RequiresPermissions("core:drillTask:list")
-    @GetMapping("/signUserList/{id}")
-    public AjaxResult signUserList(@PathVariable Long id) {
-        return success(coreDrillTaskService.signUserList(id));
-    }
-
     @ApiOperation(value = "获取预案任务详细信息")
     @RequiresPermissions("core:drillTask:query")
     @GetMapping(value = "/{id}")
@@ -93,6 +86,13 @@ public class CoreDrillTaskController extends BaseController {
         return success(coreDrillTaskService.sign(request));
     }
 
+    @ApiOperation(value = "App端获取签名情况")
+    @RequiresPermissions("core:drillTask:list")
+    @GetMapping("/signUserList/{id}")
+    public AjaxResult signUserList(@PathVariable Long id) {
+        return success(coreDrillTaskService.signUserList(id));
+    }
+
     @ApiOperation(value = "生成预案培训登记簿")
     @GetMapping("build/{id}")
     public AjaxResult pdf(@PathVariable("id") Long id) {
@@ -112,4 +112,11 @@ public class CoreDrillTaskController extends BaseController {
     public AjaxResult evaluate(@RequestBody @Validated CoreDrillTaskEvaluateDto request) {
         return success(coreDrillTaskService.evaluate(request));
     }
+
+    @ApiOperation(value = "优秀案例管理")
+    @RequiresPermissions("core:drillTask:list")
+    @PostMapping("/recList")
+    public TableDataInfo<CoreDrillTaskRecPageVo> recList(@RequestBody @Validated CoreDrillTaskRecPageDto request) {
+        return coreDrillTaskService.recList(request);
+    }
 }

+ 5 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/mapper/CoreDrillTaskMapper.java

@@ -2,12 +2,15 @@ package com.xunmei.core.drill.mapper;
 
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.xunmei.common.core.domain.drill.domain.CoreDrillTask;
 import com.xunmei.common.core.domain.drill.dto.CoreDrillTaskPageDto;
+import com.xunmei.common.core.domain.drill.dto.CoreDrillTaskRecPageDto;
 import com.xunmei.common.core.domain.drill.dto.CoreDrillTaskReportDto;
 import com.xunmei.common.core.domain.drill.vo.CoreDrillTaskDetailVo;
 import com.xunmei.common.core.domain.drill.vo.CoreDrillTaskPageVo;
+import com.xunmei.common.core.domain.drill.vo.CoreDrillTaskRecPageVo;
 import com.xunmei.common.core.domain.drill.vo.CoreDrillTaskReportVo;
 import org.apache.ibatis.annotations.Param;
 
@@ -32,4 +35,6 @@ public interface CoreDrillTaskMapper extends BaseMapper<CoreDrillTask> {
     Integer checkHasTask(@Param("planId") Long planId);
 
     Integer checkHasTaskIsDoneByPlanParentId(@Param("planId") Long planId);
+
+    IPage<CoreDrillTaskRecPageVo> selectRecPage(Page<CoreDrillTaskRecPageVo> pageRequest, @Param("request") CoreDrillTaskRecPageDto request, @Param("recStatus") Integer recStatus);
 }

+ 3 - 4
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/service/ICoreDrillTaskService.java

@@ -5,10 +5,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.xunmei.common.core.domain.drill.domain.CoreDrillTask;
 import com.xunmei.common.core.domain.drill.domain.CoreDrillTaskToUser;
 import com.xunmei.common.core.domain.drill.dto.*;
-import com.xunmei.common.core.domain.drill.vo.CoreDrillPlanDataVo;
-import com.xunmei.common.core.domain.drill.vo.CoreDrillTaskDetailVo;
-import com.xunmei.common.core.domain.drill.vo.CoreDrillTaskPageVo;
-import com.xunmei.common.core.domain.drill.vo.CoreDrillTaskReportVo;
+import com.xunmei.common.core.domain.drill.vo.*;
 import com.xunmei.common.core.web.domain.AjaxResult;
 import com.xunmei.common.core.web.page.TableDataInfo;
 
@@ -93,4 +90,6 @@ public interface ICoreDrillTaskService extends IService<CoreDrillTask> {
 
     int evaluate(CoreDrillTaskEvaluateDto request);
 
+
+    TableDataInfo<CoreDrillTaskRecPageVo> recList(CoreDrillTaskRecPageDto request);
 }

+ 68 - 13
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/service/impl/CoreDrillTaskServiceImpl.java

@@ -18,12 +18,10 @@ import com.xunmei.common.core.domain.DateRange;
 import com.xunmei.common.core.domain.R;
 import com.xunmei.common.core.domain.drill.domain.*;
 import com.xunmei.common.core.domain.drill.dto.*;
-import com.xunmei.common.core.domain.drill.vo.CoreDrillPlanDataVo;
-import com.xunmei.common.core.domain.drill.vo.CoreDrillTaskDetailVo;
-import com.xunmei.common.core.domain.drill.vo.CoreDrillTaskPageVo;
-import com.xunmei.common.core.domain.drill.vo.CoreDrillTaskReportVo;
+import com.xunmei.common.core.domain.drill.vo.*;
 import com.xunmei.common.core.domain.edu.vo.CoreEduTrainingTaskReportVo;
 import com.xunmei.common.core.enums.ExportPdfType;
+import com.xunmei.common.core.enums.OrgTypeEnum;
 import com.xunmei.common.core.enums.drill.DrillDoStatus;
 import com.xunmei.common.core.enums.drill.DrillType;
 import com.xunmei.common.core.exception.SystemException;
@@ -130,6 +128,7 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
             SysOrg org = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectOrgById(request.getOrgId(), SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
             request.setOrgPath(org.getPath());
         }
+
     }
 
 
@@ -154,10 +153,16 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
             record.setUserList(userList);
 
         }
+        //处理演练任务类型字典
         final List<SysDictData> drillTypeDictList = DictUtils.getDictCache(DictConstants.CORE_DRILL_TYPE);
         if (ObjectUtil.isNotEmpty(drillTypeDictList) && ObjectUtil.isNotEmpty(record.getType())) {
             drillTypeDictList.stream().filter(dict -> ObjectUtil.equal(dict.getDictValue(), record.getType().toString())).findFirst().ifPresent(dict -> record.setTypeText(dict.getDictLabel()));
         }
+        //处理演练任务推荐状态字典
+        final List<SysDictData> drillTaskRecStatusList = DictUtils.getDictCache(DictConstants.DRILL_TASK_REC_STATUS);
+        if (ObjectUtil.isNotEmpty(drillTaskRecStatusList) && ObjectUtil.isNotEmpty(record.getRecStatus())) {
+            drillTaskRecStatusList.stream().filter(dict -> ObjectUtil.equal(dict.getDictValue(), record.getRecStatus().toString())).findFirst().ifPresent(dict -> record.setRecStatusText(dict.getDictLabel()));
+        }
     }
 
     @Override
@@ -428,10 +433,10 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
     }
 
     private String calculateScore(List<CoreDrillTaskReportVo> childrenOrgData) {
-            //将数组childrenOrgData中的score字段取出来转换成BigDecimal类型的数组,并计算出平均数,保留两位小数
-            BigDecimal avg = childrenOrgData.stream().map(CoreDrillTaskReportVo::getScore).map(BigDecimal::new).reduce(BigDecimal.ZERO, BigDecimal::add).divide(BigDecimal.valueOf(childrenOrgData.size()), 2, RoundingMode.HALF_UP);
-            return  avg.toString();
-       // childrenOrgData.stream().map(CoreDrillTaskReportVo::getScore).map(BigDecimal::valueOf).
+        //将数组childrenOrgData中的score字段取出来转换成BigDecimal类型的数组,并计算出平均数,保留两位小数
+        BigDecimal avg = childrenOrgData.stream().map(CoreDrillTaskReportVo::getScore).map(BigDecimal::new).reduce(BigDecimal.ZERO, BigDecimal::add).divide(BigDecimal.valueOf(childrenOrgData.size()), 2, RoundingMode.HALF_UP);
+        return avg.toString();
+        // childrenOrgData.stream().map(CoreDrillTaskReportVo::getScore).map(BigDecimal::valueOf).
 
     }
 
@@ -592,11 +597,11 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
         //此list中Plan对象仅id与planCycle字段有值,
         for (CoreDrillPlan plan : planList) {
             CompletableFuture.runAsync(() -> {
-                //此处因为planService会导致循环依赖 TODO 任务生成
-//                final CoreDrillPlanDataVo detailPlanData = coreDrillPlanMapper.getDetailPlanData(plan.getId());
-//                detailPlanData.setFileList(ObjectUtil.isNotEmpty(detailPlanData.getFile()) ? JSON.parseArray(detailPlanData.getFile(), String.class) : null);
-//                DateRange range = DateUtils.getStartAndEnd(finalDate, plan.getPlanCycle());
-//                this.createTaskForNow(detailPlanData, range.getStartTime(), range.getEndTime());
+                //此处因为planService会导致循环依赖
+                final CoreDrillPlanDataVo detailPlanData = coreDrillPlanMapper.getDetailPlanData(plan.getId());
+                detailPlanData.setFileList(ObjectUtil.isNotEmpty(detailPlanData.getFile()) ? JSON.parseArray(detailPlanData.getFile(), String.class) : null);
+                DateRange range = DateUtils.getStartAndEnd(finalDate, plan.getPlanCycle());
+                this.createTaskForNow(detailPlanData, range.getStartTime(), range.getEndTime());
             });
         }
         return "创建成功";
@@ -607,11 +612,61 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
     @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
     public int evaluate(CoreDrillTaskEvaluateDto request) {
         CoreDrillTask drillTask = getById(request.getTaskId());
+        if (drillTask == null) {
+            throw new SystemException("获取预案演练数据失败!");
+        }
         drillTask.setCommentScore(request.getScore());
         drillTask.setStatus(DrillDoStatus.DONE.getCode());
         drillTask.setComment(request.getComment());
+        drillTask.setRecStatus(0);
         return baseMapper.updateById(drillTask);
     }
+
+    @Override
+    public TableDataInfo<CoreDrillTaskRecPageVo> recList(CoreDrillTaskRecPageDto request) {
+        dealRecListParam(request);
+        if (request.getRecStatus() != null) {
+            IPage<CoreDrillTaskRecPageVo> page = coreDrillTaskMapper.selectRecPage(request.getPageRequest(), request, request.getRecStatus());
+            return TableDataInfo.build(page);
+        }
+        IPage<CoreDrillTaskRecPageVo> page = coreDrillTaskMapper.selectRecPage(request.getPageRequest(), request, getRecStatus());
+        return TableDataInfo.build(page);
+    }
+
+    private void dealRecListParam(CoreDrillTaskRecPageDto request) {
+        //App的查询, App 默认下穿
+        request.setCheckSub(true);
+        //App端的时间按季度查询
+        DateRange dateRange = DateUtils.getStartAndEnd(request.getDate(), 4);
+        request.setStartTime(dateRange.getStartTime());
+        request.setEndTime(dateRange.getEndTime());
+        SysOrg sysOrg = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectOrgById(request.getOrgId(), SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
+        request.setOrgPath(sysOrg.getPath());
+    }
+
+    private Integer getRecStatus() {
+        Long orgId = SecurityUtils.getLoginUser().getOrgId();
+        SysOrg sysOrg = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectOrgById(orgId, SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
+        if (ObjectUtil.isNull(sysOrg.getType())) {
+            throw new SystemException("当前登陆用户机构信息异常!");
+        }
+        Integer recStatus = null;
+        OrgTypeEnum orgTypeEnum = OrgTypeEnum.getOrgTypeEnum(sysOrg.getType());
+        switch (orgTypeEnum) {
+            case SHEGN_LIAN_SHE:
+                recStatus = 4;
+                break;
+            case BAN_SHI_CHU:
+                recStatus = 2;
+                break;
+            case HANG_SHE:
+                recStatus = 0;
+                break;
+            default:
+                throw new RuntimeException("暂不支持该用户所在机构查看数据!");
+        }
+        return recStatus;
+    }
 }
 
 

+ 25 - 2
soc-modules/soc-modules-core/src/main/resources/mapper/drill/CoreDrillTaskMapper.xml

@@ -63,7 +63,7 @@
 
     <select id="selectPageData" resultType="com.xunmei.common.core.domain.drill.vo.CoreDrillTaskPageVo"
             parameterType="com.xunmei.common.core.domain.edu.dto.CoreEduTrainingTaskPageDto">
-        select t.id, plan_id, t.org_id, t.org_name, title, type as type, status, host_id,u.name as hostName,
+        select t.id, plan_id, t.org_id, t.org_name, title, type as type, status,rec_status, host_id,u.name as hostName,
         start_date, end_date, t.drill_time, t.pdf_url as pdfUrl
         from core_drill_task t left join sys_user u on t.host_id=u.id
         <where>
@@ -198,7 +198,8 @@
                u.name            as hostName,
                u2.name           as recorderName,
                t.pdf_url         as pdfUrl,
-               t.file_list       as file
+               t.file_list       as file,
+               t.rec_status      as recStatus
 
         from core_drill_task t
                  left join sys_user u on u.id = t.host_id
@@ -206,4 +207,26 @@
 
         where t.id = #{id}
     </select>
+
+    <select id="selectRecPage" resultType="com.xunmei.common.core.domain.drill.vo.CoreDrillTaskRecPageVo">
+        select * from core_drill_task t where (t.rec_status=#{recStatus} or t.rec_status=#{recStatus}+1)
+        and t.org_path like concat(#{request.orgPath},'%')
+        <if test="request.startTime != null and request.endTime != null">
+            and (
+            (
+            #{request.startTime}   <![CDATA[<=]]> t.start_date
+            and #{request.endTime}     <![CDATA[>=]]> t.start_date
+            )
+            or
+            (
+            #{request.startTime}   <![CDATA[<=]]> t.end_date
+            and #{request.endTime}     <![CDATA[>=]]> t.end_date
+            )
+            or (
+            #{request.startTime}   <![CDATA[>=]]> t.start_date
+            and #{request.endTime}     <![CDATA[<=]]> t.end_date
+            )
+            )
+        </if>
+    </select>
 </mapper>