Browse Source

考点预约设置

haogh 8 tháng trước cách đây
mục cha
commit
d19a04e4e2

+ 25 - 0
src/main/java/com/qmth/exam/reserve/bean/timeperiod/TimePeriodExamSiteBean.java

@@ -0,0 +1,25 @@
+package com.qmth.exam.reserve.bean.timeperiod;
+
+import com.qmth.exam.reserve.bean.IModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class TimePeriodExamSiteBean implements IModel {
+
+    private static final long serialVersionUID = 7144061629980131259L;
+
+    @ApiModelProperty("预约时段ID")
+    private Long id;
+
+    @ApiModelProperty("预约时段字符串")
+    private Long startTime;
+
+    @ApiModelProperty("预约时段字符串")
+    private Long endTime;
+
+    @ApiModelProperty("是否开启")
+    private Boolean enable;
+}

+ 22 - 0
src/main/java/com/qmth/exam/reserve/bean/timeperiod/TimePeriodExamSiteInfo.java

@@ -0,0 +1,22 @@
+package com.qmth.exam.reserve.bean.timeperiod;
+
+import com.qmth.exam.reserve.bean.IModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class TimePeriodExamSiteInfo implements IModel {
+
+    private static final long serialVersionUID = 7144061629980131259L;
+
+    @ApiModelProperty("预约时段ID")
+    private Long id;
+
+    @ApiModelProperty("预约时段字符串")
+    private String timePeriodStr;
+
+    @ApiModelProperty("是否开启")
+    private Boolean enable;
+}

+ 19 - 0
src/main/java/com/qmth/exam/reserve/bean/timeperiod/TimePeriodExamSiteReq.java

@@ -0,0 +1,19 @@
+package com.qmth.exam.reserve.bean.timeperiod;
+
+import com.qmth.exam.reserve.bean.IModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class TimePeriodExamSiteReq implements IModel {
+
+    private static final long serialVersionUID = -3377629711934734131L;
+
+    @ApiModelProperty("预约时段ID")
+    private Long id;
+
+    @ApiModelProperty("是否开启")
+    private Boolean enable;
+}

+ 21 - 0
src/main/java/com/qmth/exam/reserve/bean/timeperiod/TimePeriodExamSiteVo.java

@@ -0,0 +1,21 @@
+package com.qmth.exam.reserve.bean.timeperiod;
+
+import com.qmth.exam.reserve.bean.IModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+@Getter
+@Setter
+public class TimePeriodExamSiteVo implements IModel {
+
+    private static final long serialVersionUID = -191378289809941589L;
+
+    @ApiModelProperty("日期字符串")
+    private String dateStr;
+
+    @ApiModelProperty("日期对应的时段")
+    private List<TimePeriodExamSiteInfo> timePeriodList;
+}

+ 31 - 3
src/main/java/com/qmth/exam/reserve/controller/admin/TimePeriodExamSiteController.java

@@ -2,15 +2,43 @@ package com.qmth.exam.reserve.controller.admin;
 
 import com.qmth.boot.api.annotation.Aac;
 import com.qmth.boot.api.constant.ApiConstant;
+import com.qmth.exam.reserve.bean.timeperiod.TimePeriodExamSiteReq;
+import com.qmth.exam.reserve.bean.timeperiod.TimePeriodExamSiteVo;
+import com.qmth.exam.reserve.controller.BaseController;
+import com.qmth.exam.reserve.service.TimePeriodExamSiteService;
 import io.swagger.annotations.Api;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
 
 @RestController
 @Api(tags = "【管理端】考点预约设置相关接口")
 @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + "/admin/time/period/exam/site")
 @Aac(strict = false, auth = true)
-public class TimePeriodExamSiteController {
+public class TimePeriodExamSiteController extends BaseController {
+
+    @Autowired
+    private TimePeriodExamSiteService timePeriodExamSiteService;
+
+    @ApiOperation(value = "时段区间列表")
+    @PostMapping(value = "/list")
+    public List<String> list(@ApiParam("预约任务ID") @RequestParam(required = false) Long taskId) {
+        return timePeriodExamSiteService.listTimePeriod(taskId);
+    }
+
+    @ApiOperation(value = "日期时段列表")
+    @PostMapping(value = "/detail/list")
+    public List<TimePeriodExamSiteVo> ListDetail(@ApiParam("预约任务ID") @RequestParam(required = false) Long taskId,
+            @ApiParam("考点ID") @RequestParam(required = true) Long examSiteId) {
+        return timePeriodExamSiteService.ListDetail(taskId, examSiteId);
+    }
 
+    @ApiOperation(value = "考点预约时段编辑")
+    @PostMapping(value = "/save")
+    public void save(@ApiParam("考点ID") @RequestParam(required = true) Long examSiteId, @RequestBody List<TimePeriodExamSiteReq> timePeriodExamSiteList) {
 
+    }
 }

+ 11 - 0
src/main/java/com/qmth/exam/reserve/dao/TimePeriodDao.java

@@ -1,8 +1,19 @@
 package com.qmth.exam.reserve.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qmth.exam.reserve.bean.timeperiod.TimePeriodExamSiteBean;
 import com.qmth.exam.reserve.entity.TimePeriodEntity;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 public interface TimePeriodDao extends BaseMapper<TimePeriodEntity> {
 
+    List<String> listTimePeriod(@Param("taskId") Long taskId);
+
+    List<String> listTimePeriodDate(@Param("taskId") Long taskId);
+
+    List<TimePeriodExamSiteBean> listTimePeriodByExamSiteId(@Param("taskId") Long taskId, @Param("examSiteId") Long examSiteId);
+
+    List<TimePeriodExamSiteBean> listTimePeriodByTask(@Param("taskId") Long taskId);
 }

+ 6 - 0
src/main/java/com/qmth/exam/reserve/service/TimePeriodExamSiteService.java

@@ -1,8 +1,14 @@
 package com.qmth.exam.reserve.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.exam.reserve.bean.timeperiod.TimePeriodExamSiteVo;
 import com.qmth.exam.reserve.entity.TimePeriodExamSiteEntity;
 
+import java.util.List;
+
 public interface TimePeriodExamSiteService extends IService<TimePeriodExamSiteEntity> {
 
+    List<String> listTimePeriod(Long taskId);
+
+    List<TimePeriodExamSiteVo> ListDetail(Long taskId, Long examSiteId);
 }

+ 8 - 0
src/main/java/com/qmth/exam/reserve/service/TimePeriodService.java

@@ -4,10 +4,18 @@ import java.util.List;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.qmth.exam.reserve.bean.applytask.TimePeriodReq;
+import com.qmth.exam.reserve.bean.timeperiod.TimePeriodExamSiteBean;
 import com.qmth.exam.reserve.entity.TimePeriodEntity;
 
 public interface TimePeriodService extends IService<TimePeriodEntity> {
 
     void saveTimePeriod(Long userId, Long id, List<TimePeriodReq> timeList);
 
+    List<String> listTimePeriod(Long taskId);
+
+    List<String> listTimePeriodDate(Long taskId);
+
+    List<TimePeriodExamSiteBean> listTimePeriodByExamSiteId(Long taskId, Long examSiteId);
+
+    List<TimePeriodExamSiteBean> listTimePeriodByTask(Long taskId);
 }

+ 89 - 0
src/main/java/com/qmth/exam/reserve/service/impl/TimePeriodExamSiteServiceImpl.java

@@ -1,12 +1,101 @@
 package com.qmth.exam.reserve.service.impl;
 
+import com.aliyuncs.utils.StringUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.exam.reserve.bean.timeperiod.TimePeriodExamSiteBean;
+import com.qmth.exam.reserve.bean.timeperiod.TimePeriodExamSiteInfo;
+import com.qmth.exam.reserve.bean.timeperiod.TimePeriodExamSiteVo;
 import com.qmth.exam.reserve.dao.TimePeriodExamSiteDao;
+import com.qmth.exam.reserve.entity.ApplyTaskEntity;
 import com.qmth.exam.reserve.entity.TimePeriodExamSiteEntity;
+import com.qmth.exam.reserve.service.ApplyTaskService;
 import com.qmth.exam.reserve.service.TimePeriodExamSiteService;
+import com.qmth.exam.reserve.service.TimePeriodService;
+import com.qmth.exam.reserve.util.DateUtil;
+import org.apache.commons.collections4.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
+
 @Service
 public class TimePeriodExamSiteServiceImpl extends ServiceImpl<TimePeriodExamSiteDao, TimePeriodExamSiteEntity> implements TimePeriodExamSiteService {
 
+    @Autowired
+    private ApplyTaskService applyTaskService;
+
+    @Autowired
+    private TimePeriodService timePeriodService;
+
+    @Override
+    public List<String> listTimePeriod(Long taskId) {
+        taskId = getTaskId(taskId);
+        return timePeriodService.listTimePeriod(taskId);
+    }
+
+    private Long getTaskId(Long taskId) {
+        if (taskId == null) {
+            ApplyTaskEntity task = applyTaskService.findApplyTask();
+            if (task != null) {
+                taskId = task.getId();
+            }
+        }
+        return taskId;
+    }
+
+    @Override
+    public List<TimePeriodExamSiteVo> ListDetail(Long taskId, Long examSiteId) {
+        taskId = getTaskId(taskId);
+        // 所有的预约日期
+        List<String> dateList = timePeriodService.listTimePeriodDate(taskId);
+        if (CollectionUtils.isEmpty(dateList)) {
+            return Collections.emptyList();
+        }
+        //所有的时段
+        List<TimePeriodExamSiteBean> timePeriodList = timePeriodService.listTimePeriodByExamSiteId(taskId, examSiteId);
+        if (CollectionUtils.isEmpty(timePeriodList)) {
+            timePeriodList = timePeriodService.listTimePeriodByTask(taskId);
+        }
+
+        //按日期封装
+        List<TimePeriodExamSiteVo> list = new ArrayList<>();
+        for (String date : dateList) {
+            TimePeriodExamSiteVo timePeriodVo = new TimePeriodExamSiteVo();
+            timePeriodVo.setDateStr(getDateStr(date));
+            timePeriodVo.setTimePeriodList(filterTimePeriod(date, timePeriodList));
+            list.add(timePeriodVo);
+        }
+        return list;
+    }
+
+    private String getDateStr(String date) {
+        if (StringUtils.isEmpty(date)) {
+            return "";
+        }
+        String[] dateArr = date.split("-");
+        if (dateArr.length != 3) {
+            return "";
+        }
+        return dateArr[1] + "月" + dateArr[2] + "日";
+    }
+
+    private List<TimePeriodExamSiteInfo> filterTimePeriod(String date, List<TimePeriodExamSiteBean> timePeriodList) {
+        List<TimePeriodExamSiteInfo> list = new ArrayList<>();
+        List<TimePeriodExamSiteBean> filterTimePerildList = timePeriodList.stream()
+                .filter(item -> DateUtil.getShortDateByLongTime(item.getStartTime()).equals(date))
+                .collect(Collectors.toList());
+        for (TimePeriodExamSiteBean time : filterTimePerildList) {
+            TimePeriodExamSiteInfo bean = new TimePeriodExamSiteInfo();
+            bean.setId(time.getId());
+            bean.setEnable(time.getEnable());
+            bean.setTimePeriodStr(DateUtil.getStartToEndTime(time.getStartTime(), time.getEndTime()));
+            list.add(bean);
+        }
+        return list;
+    }
+
+
 }

+ 26 - 6
src/main/java/com/qmth/exam/reserve/service/impl/TimePeriodServiceImpl.java

@@ -1,14 +1,9 @@
 package com.qmth.exam.reserve.service.impl;
 
-import java.util.List;
-
-import org.springframework.beans.BeanUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qmth.boot.core.exception.StatusException;
 import com.qmth.exam.reserve.bean.applytask.TimePeriodReq;
+import com.qmth.exam.reserve.bean.timeperiod.TimePeriodExamSiteBean;
 import com.qmth.exam.reserve.dao.TimePeriodDao;
 import com.qmth.exam.reserve.entity.ApplyTaskEntity;
 import com.qmth.exam.reserve.entity.TimePeriodEntity;
@@ -16,6 +11,11 @@ import com.qmth.exam.reserve.enums.EventType;
 import com.qmth.exam.reserve.service.ApplyTaskService;
 import com.qmth.exam.reserve.service.OperateLogService;
 import com.qmth.exam.reserve.service.TimePeriodService;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
 
 @Service
 public class TimePeriodServiceImpl extends ServiceImpl<TimePeriodDao, TimePeriodEntity> implements TimePeriodService {
@@ -40,4 +40,24 @@ public class TimePeriodServiceImpl extends ServiceImpl<TimePeriodDao, TimePeriod
         logService.insertOperateLog(userId, EventType.SAVE_TIME_PERIOD, null);
     }
 
+    @Override
+    public List<String> listTimePeriod(Long taskId) {
+        return baseMapper.listTimePeriod(taskId);
+    }
+
+    @Override
+    public List<String> listTimePeriodDate(Long taskId) {
+        return baseMapper.listTimePeriodDate(taskId);
+    }
+
+    @Override
+    public List<TimePeriodExamSiteBean> listTimePeriodByExamSiteId(Long taskId, Long examSiteId) {
+        return baseMapper.listTimePeriodByExamSiteId(taskId, examSiteId);
+    }
+
+    @Override
+    public List<TimePeriodExamSiteBean> listTimePeriodByTask(Long taskId) {
+        return baseMapper.listTimePeriodByTask(taskId);
+    }
+
 }

+ 10 - 0
src/main/java/com/qmth/exam/reserve/util/DateUtil.java

@@ -235,4 +235,14 @@ public class DateUtil {
         }
     }
 
+    public static String getStartToEndTime(long startTime, long endTime) {
+        try {
+            Date start = new Date(startTime);
+            Date end = new Date(endTime);
+            return format(start, HourMinuteString) + "-" + format(end, HourMinuteString);
+        } catch (Exception e) {
+            throw new StatusException("日期转化异常");
+        }
+    }
+
 }

+ 45 - 0
src/main/resources/mapper/TimePeriodMapper.xml

@@ -2,4 +2,49 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.qmth.exam.reserve.dao.TimePeriodDao">
 
+    <select id="listTimePeriod" resultType="java.lang.String" parameterType="java.lang.Long">
+        SELECT DISTINCT concat(
+                                date_format(FROM_UNIXTIME(SUBSTR(start_time, 1, 10)), '%H:%i'),
+                                '-',
+                                date_format(FROM_UNIXTIME(SUBSTR(end_time, 1, 10)), '%H:%i')
+                        ) time
+        FROM t_time_period
+        WHERE apply_task_id = #{taskId}
+        ORDER BY time
+    </select>
+
+    <select id="listTimePeriodDate" resultType="java.lang.String" parameterType="java.lang.Long">
+        SELECT distinct date_format(FROM_UNIXTIME(SUBSTR(start_time, 1, 10)), '%Y-%m-%d') date
+        FROM t_time_period tp
+        WHERE apply_task_id = #{taskId}
+        ORDER BY date
+    </select>
+
+    <select id="listTimePeriodByExamSiteId" resultType="com.qmth.exam.reserve.bean.timeperiod.TimePeriodExamSiteBean">
+        SELECT
+            tp.id,
+            tp.start_time startTime,
+            tp.end_time endTime,
+            tpes.enable
+        FROM
+            t_time_period_exam_site tpes,
+            t_time_period tp
+        WHERE
+            tpes.time_period_id = tp.id
+          AND tpes.exam_site_id = #{examSiteId}
+          AND tp.apply_task_id = #{taskId}
+        order by tp.start_time
+    </select>
+
+    <select id="listTimePeriodByTask" resultType="com.qmth.exam.reserve.bean.timeperiod.TimePeriodExamSiteBean" parameterType="java.lang.Long">
+        SELECT
+            tp.id,
+            tp.start_time startTime,
+            tp.end_time endTime,
+            1 enable
+        FROM
+            t_time_period tp
+        WHERE
+          tp.apply_task_id = #{taskId}
+    </select>
 </mapper>