浏览代码

feat: 会议举办次数限制

lixuesong 3 年之前
父节点
当前提交
40f84e1b11

+ 11 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/mapper/WmTaskMapper.java

@@ -170,4 +170,15 @@ public interface WmTaskMapper extends DataScopeMapper<WmTask> {
 	 * @return
 	 */
 	List<WmTask> listCurrentMonthHospitalTask(@Param("hospitalId") String hospitalId);
+
+	/**
+	 * 查询会议任务个数
+	 *
+	 * @param taskTypeList 任务类型列表
+	 * @param startTime 会议时间范围-开始
+	 * @param endTime 会议时间范围-结束
+	 * @return 会议任务个数
+	 */
+	Long countMeetingTask(@Param("taskTypeList") List<String> taskTypeList, @Param("startTime") LocalDateTime startTime,
+						  @Param("endTime") LocalDateTime endTime);
 }

+ 10 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/WmTaskService.java

@@ -188,4 +188,14 @@ public interface WmTaskService extends IService<WmTask> {
 	 * @return
 	 */
 	List<WmTask> listCurrentMonthHospitalTask(String hospitalId);
+
+	/**
+	 * 查询会议任务个数
+	 *
+	 * @param taskTypeList 任务类型列表
+	 * @param startTime 会议时间范围-开始
+	 * @param endTime 会议时间范围-结束
+	 * @return 会议任务个数
+	 */
+	Long countMeetingTask(List<String> taskTypeList, LocalDateTime startTime, LocalDateTime endTime);
 }

+ 14 - 33
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmTaskContentServiceImpl.java

@@ -19,7 +19,6 @@ package com.qunzhixinxi.hnqz.admin.service.impl;
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.date.DateUnit;
 import cn.hutool.core.date.DateUtil;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -53,6 +52,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.LocalTime;
 import java.time.format.DateTimeFormatter;
@@ -130,16 +130,12 @@ public class WmTaskContentServiceImpl extends ServiceImpl<WmTaskContentMapper, W
 		if ("1".equals(wmTaskContent.getTemp30())) {
 			// 会议举办
 			// 限制每天两次
-			LocalDateTime lookintoDate =
-					LocalDateTime.parse(wmTaskContent.getTemp4(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"));
-			LambdaQueryWrapper<WmTask> wrappers = Wrappers.lambdaQuery();
-			wrappers.eq(WmTask::getTaskUserId, String.valueOf(sysU.getUserId()));
-			wrappers.in(WmTask::getTaskTypeId, "1", "2", "3", "4");
-			wrappers.between(WmTask::getLookintoDate, LocalDateTime.of(lookintoDate.toLocalDate(), LocalTime.MIN),
-					LocalDateTime.of(lookintoDate.toLocalDate(), LocalTime.MAX));
-
-			int total = wmTaskService.count(wrappers);
-			if (total >= 2) {
+			LocalDate currentLookintoDate =
+					LocalDate.parse(wmTaskContent.getTemp4(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"));
+			LocalDateTime start = LocalDateTime.of(currentLookintoDate,LocalTime.MIN);
+			LocalDateTime end = LocalDateTime.of(currentLookintoDate,LocalTime.MAX);
+			Long meetingTaskCount = wmTaskService.countMeetingTask(CollectionUtil.toList("1", "2", "3", "4"), start, end);
+			if (meetingTaskCount >= 2L) {
 				return R.failed(1, "每天最多举办两场会议");
 			}
 
@@ -158,16 +154,12 @@ public class WmTaskContentServiceImpl extends ServiceImpl<WmTaskContentMapper, W
 		} else if ("19".equals(wmTaskContent.getTemp30())) {
 			// 一对一专访
 			// 限制每天两次
-			LocalDateTime lookintoDate =
-					LocalDateTime.parse(wmTaskContent.getTemp4(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"));
-			LambdaQueryWrapper<WmTask> interviewQuery = Wrappers.lambdaQuery();
-			interviewQuery.eq(WmTask::getTaskUserId, String.valueOf(sysU.getUserId()));
-			interviewQuery.eq(WmTask::getTaskTypeId, "19");
-			interviewQuery.between(WmTask::getLookintoDate, LocalDateTime.of(lookintoDate.toLocalDate(), LocalTime.MIN),
-					LocalDateTime.of(lookintoDate.toLocalDate(), LocalTime.MAX));
-
-			int interviewTotal = wmTaskService.count(interviewQuery);
-			if (interviewTotal >= 2) {
+			LocalDate currentLookintoDate =
+					LocalDate.parse(wmTaskContent.getTemp4(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"));
+			LocalDateTime start = LocalDateTime.of(currentLookintoDate,LocalTime.MIN);
+			LocalDateTime end = LocalDateTime.of(currentLookintoDate,LocalTime.MAX);
+			Long meetingTaskCount = wmTaskService.countMeetingTask(CollectionUtil.toList("19"), start, end);
+			if (meetingTaskCount >= 2L) {
 				return R.failed(1, "每天最多举办两场一对一专访");
 			}
 
@@ -345,16 +337,7 @@ public class WmTaskContentServiceImpl extends ServiceImpl<WmTaskContentMapper, W
 				LocalDateTime localDateTime = LocalDateTime.now();
 				wmTask.setUpdateTime(localDateTime);
 				wmTask.setTaskUserId(sysU.getUserId() + "");  //任务提交人
-				if ("1".equals(wmTaskContent.getTemp30()) || "2".equals(wmTaskContent.getTemp30())
-						|| "3".equals(wmTaskContent.getTemp30()) || "4".equals(wmTaskContent.getTemp30())
-						|| "19".equals(wmTaskContent.getTemp30())) {
-					// 会议举办、一对一专访取页面选择的会议时间
-					LocalDateTime lookintoDate =
-							LocalDateTime.parse(wmTaskContent.getTemp4(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"));
-					wmTask.setLookintoDate(lookintoDate);
-				} else {
-					wmTask.setLookintoDate(localDateTime);       //调研时间
-				}
+				wmTask.setLookintoDate(localDateTime);       //调研时间
 				wmTask.setDrugEntId(tWmScorePackage.getDrugEntId());
 
 				wmTask.setTaskTypeId(wmTaskContent.getTemp30());
@@ -461,8 +444,6 @@ public class WmTaskContentServiceImpl extends ServiceImpl<WmTaskContentMapper, W
 						return R.failed("信息无变化,不可提交");
 					}
 					resultMap.put("type", "3");
-					resultMap.put("score", score + "");
-					return R.ok(resultMap);
 				}
 				/**
 				 * 2020-12-21 end

+ 13 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmTaskServiceImpl.java

@@ -2317,4 +2317,17 @@ public class WmTaskServiceImpl extends ServiceImpl<WmTaskMapper, WmTask> impleme
 	public List<WmTask> listCurrentMonthHospitalTask(String hospitalId) {
 		return wmTaskMapper.listCurrentMonthHospitalTask(hospitalId);
 	}
+
+	/**
+	 * 查询会议任务个数
+	 *
+	 * @param taskTypeList 任务类型列表
+	 * @param startTime 会议时间范围-开始
+	 * @param endTime 会议时间范围-结束
+	 * @return 会议任务个数
+	 */
+	@Override
+	public Long countMeetingTask(List<String> taskTypeList, LocalDateTime startTime, LocalDateTime endTime) {
+		return wmTaskMapper.countMeetingTask(taskTypeList, startTime, endTime);
+	}
 }

+ 12 - 0
hnqz-upms/hnqz-upms-biz/src/main/resources/mapper/WmTaskMapper.xml

@@ -1225,4 +1225,16 @@ FROM
 		  AND MONTH(t.create_time) = MONTH(CURDATE())
 		  AND tc.temp29 = #{hospitalId}
 	</select>
+
+	<!-- 查询会议任务个数 -->
+	<select id="countMeetingTask" resultType="java.lang.Long">
+		SELECT COUNT(*)
+		FROM wm_task
+				 LEFT JOIN wm_task_content ON wm_task.task_content_id = wm_task_content.id
+		WHERE wm_task.task_type_id IN
+		<foreach collection="taskTypeList" item="item" index="index" separator="," open="(" close=")">
+			#{item}
+		</foreach>
+		  AND wm_task_content.temp4 BETWEEN #{startTime} AND #{endTime}
+	</select>
 </mapper>