Browse Source

考点预约设置

haogh 8 months ago
parent
commit
32d3a35afa

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

@@ -5,6 +5,8 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.util.Objects;
+
 @Getter
 @Setter
 public class TimePeriodExamSiteBean implements IModel {
@@ -25,4 +27,22 @@ public class TimePeriodExamSiteBean implements IModel {
 
     @ApiModelProperty("是否开启")
     private Boolean enable;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o)
+            return true;
+        if (o == null || getClass() != o.getClass())
+            return false;
+        TimePeriodExamSiteBean that = (TimePeriodExamSiteBean) o;
+        return Objects.equals(timePeriodId, that.timePeriodId);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hashCode(timePeriodId);
+    }
+
+
+
 }

+ 24 - 7
src/main/java/com/qmth/exam/reserve/service/impl/TimePeriodExamSiteServiceImpl.java

@@ -14,13 +14,16 @@ 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 com.qmth.exam.reserve.util.UnionUtil;
 import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.ArrayList;
 import java.util.Collections;
+import java.util.Comparator;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -57,10 +60,16 @@ public class TimePeriodExamSiteServiceImpl extends ServiceImpl<TimePeriodExamSit
         if (CollectionUtils.isEmpty(dateList)) {
             return Collections.emptyList();
         }
-        //所有的时段
-        List<TimePeriodExamSiteBean> timePeriodList = timePeriodService.listTimePeriodByExamSiteId(taskId, examSiteId);
-        if (CollectionUtils.isEmpty(timePeriodList)) {
-            timePeriodList = timePeriodService.listTimePeriodByTask(taskId);
+        //教学点管理员设置的所有的考点时段
+        List<TimePeriodExamSiteBean> timePeriodExamSiteList = timePeriodService.listTimePeriodByExamSiteId(taskId, examSiteId);
+        //学校管理员设置的所有预约时段
+        List<TimePeriodExamSiteBean> timePeriodList = timePeriodService.listTimePeriodByTask(taskId);
+        List<TimePeriodExamSiteBean> resultList;
+        if (CollectionUtils.isEmpty(timePeriodExamSiteList)) {
+            resultList = timePeriodList;
+        } else {
+            //取并集
+            resultList = UnionUtil.unionByAttribute(timePeriodExamSiteList, timePeriodList, TimePeriodExamSiteBean::getTimePeriodId);
         }
 
         //按日期封装
@@ -68,13 +77,14 @@ public class TimePeriodExamSiteServiceImpl extends ServiceImpl<TimePeriodExamSit
         for (String date : dateList) {
             TimePeriodExamSiteVo timePeriodVo = new TimePeriodExamSiteVo();
             timePeriodVo.setDateStr(getDateStr(date));
-            timePeriodVo.setTimePeriodList(filterTimePeriod(date, timePeriodList));
+            timePeriodVo.setTimePeriodList(filterTimePeriod(date, resultList));
             list.add(timePeriodVo);
         }
         return list;
     }
 
     @Override
+    @Transactional
     public void save(Long operateId, Long examSiteId, List<TimePeriodExamSiteReq> timePeriodExamSiteList) {
         Long taskId = getTaskId(null);
         //所有的时段
@@ -95,10 +105,11 @@ public class TimePeriodExamSiteServiceImpl extends ServiceImpl<TimePeriodExamSit
             //批量保存
             saveBatch(timePeriodExamSiteEntityList);
         } else {
-            //更细
+            //保存或更新
             timePeriodExamSiteList.forEach(item -> {
                 TimePeriodExamSiteEntity timePeriodExamSiteEntity = new TimePeriodExamSiteEntity();
                 BeanUtils.copyProperties(item, timePeriodExamSiteEntity);
+                timePeriodExamSiteEntity.setExamSiteId(examSiteId);
                 timePeriodExamSiteEntity.setOperateId(operateId);
                 timePeriodExamSiteEntityList.add(timePeriodExamSiteEntity);
             });
@@ -122,9 +133,15 @@ public class TimePeriodExamSiteServiceImpl extends ServiceImpl<TimePeriodExamSit
         List<TimePeriodExamSiteBean> filterTimePerildList = timePeriodList.stream()
                 .filter(item -> DateUtil.getShortDateByLongTime(item.getStartTime()).equals(date))
                 .collect(Collectors.toList());
+
+        //排序
+        filterTimePerildList = filterTimePerildList.stream()
+                .sorted(Comparator.comparing(TimePeriodExamSiteBean::getStartTime))
+                .collect(Collectors.toList());
+
         for (TimePeriodExamSiteBean time : filterTimePerildList) {
             TimePeriodExamSiteInfo bean = new TimePeriodExamSiteInfo();
-            bean.setId(bean.getId());
+            bean.setId(time.getId());
             bean.setTimePeriodId(time.getTimePeriodId());
             bean.setEnable(time.getEnable());
             bean.setTimePeriodStr(DateUtil.getStartToEndTime(time.getStartTime(), time.getEndTime()));

+ 29 - 0
src/main/java/com/qmth/exam/reserve/util/UnionUtil.java

@@ -0,0 +1,29 @@
+package com.qmth.exam.reserve.util;
+
+import java.util.ArrayList;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.function.Function;
+
+/**
+ *  集合合并帮助类
+ */
+public class UnionUtil {
+
+    /**
+     *  连个List根据对象中的属性取并集
+     * @param listOne 集合1
+     * @param listTwo 集合2
+     * @param attributeExtractor 比较的属性
+     * @return  返回2个List对象的并集
+     * @param <T> 对象
+     */
+    public static <T> List<T> unionByAttribute(List<T> listOne, List<T> listTwo, Function<T, ?> attributeExtractor) {
+        Set<T> set = new LinkedHashSet<>();
+        set.addAll(listOne);
+        set.addAll(listTwo);
+        return new ArrayList<>(set);
+    }
+
+}