Bläddra i källkod

feat: 医院信息收集、医院信息修改两类任务的限制

lixuesong 3 år sedan
förälder
incheckning
b8adb245ca

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

@@ -162,4 +162,12 @@ public interface WmTaskMapper extends DataScopeMapper<WmTask> {
 	 * @return
 	 */
 	IPage<WmTask> listInfoAudit(Page page, @Param("query") WmTask wmTask, @Param("startDate") LocalDateTime startDate, @Param("endDate") LocalDateTime endDate);
+
+	/**
+	 * 查询同一家医院一个月做的任务
+	 *
+	 * @param hospitalId
+	 * @return
+	 */
+	List<WmTask> listCurrentMonthHospitalTask(@Param("hospitalId") String hospitalId);
 }

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

@@ -180,4 +180,12 @@ public interface WmTaskService extends IService<WmTask> {
 	 * @return
 	 */
 	IPage<WmTask> listInfoAudit(Page page, WmTask wmTask, LocalDateTime startDate, LocalDateTime endDate);
+
+	/**
+	 * 查询同一家医院一个月做的任务
+	 *
+	 * @param hospitalId 医院id
+	 * @return
+	 */
+	List<WmTask> listCurrentMonthHospitalTask(String hospitalId);
 }

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

@@ -16,6 +16,7 @@
  */
 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;
@@ -246,6 +247,42 @@ public class WmTaskContentServiceImpl extends ServiceImpl<WmTaskContentMapper, W
 			}
 		}
 
+		// 医院信息收集、医院信息修改两类任务做的任务总积分不得大于积分包值的60%(积分包值小于5000不做限制)
+		if ("15".equals(wmTaskContent.getTemp30()) || "30".equals(wmTaskContent.getTemp30())) {
+			if (tWmScorePackage.getScore() > 5000) {
+				List<WmTask> wmTaskList = wmTaskService.list(Wrappers.<WmTask>lambdaQuery()
+						.eq(WmTask::getEnableFlag, EnableEnum.ENABLE.val())
+						.eq(WmTask::getDelFlag, DelEnum.NOT_DEL.val())
+						.in(WmTask::getScorePackageId, tWmScorePackage.getId())
+						.ne(WmTask::getTaskStatus, "4"));
+				if (CollectionUtil.isNotEmpty(wmTaskList)) {
+					int totalScore = wmTaskList.stream().mapToInt(WmTask::getScore).sum();
+					int partScore = wmTaskList.stream()
+							.filter(wmTask -> "15".equals(wmTask.getTaskTypeId()) || "30".equals(wmTask.getTaskTypeId()))
+							.mapToInt(WmTask::getScore)
+							.sum();
+					if (partScore * 1.0 / totalScore > 0.6) {
+						return R.failed("医院信息收集、医院信息修改两类任务总积分不得大于积分包值的60%");
+					}
+				}
+			}
+		}
+
+		// 校验医院信息修改的任务(同一家医院,同一个人一个月只能修改一次,该医院一个月最多可修改3次)
+		if ("30".equals(wmTaskContent.getTemp30())) {
+			List<WmTask> taskList = wmTaskService.listCurrentMonthHospitalTask(wmTaskContent.getTemp29());
+			if (CollectionUtil.isNotEmpty(taskList)) {
+				if (taskList.size() > 3) {
+					return R.failed("该医院一个月最多只能修改3次");
+				}
+				boolean anyMatch = taskList.stream()
+						.anyMatch(wmTask -> String.valueOf(sysU.getUserId()).equals(wmTask.getTaskUserId()));
+				if (anyMatch) {
+					return R.failed("该医院同一个人一个月只能修改一次");
+				}
+			}
+		}
+
 		// 校验首次库存调查
 		if ("31".equals(wmTaskContent.getTemp30())) {
 			// 获取调查类别:0:首次

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

@@ -1751,23 +1751,29 @@ public class WmTaskServiceImpl extends ServiceImpl<WmTaskMapper, WmTask> impleme
 		// 15、30-医院 16-商业公司 18-药店
 		if ("15".equals(task.getTaskTypeId()) || "30".equals(task.getTaskTypeId())) {
 			result = wmDaHospitalService.approvalHospital(taskId);
-			Map<String, Object> data = (Map<String, Object>) result.getData();
-			data.remove("info");
-			data.remove("newinfo");
+			if (result.getCode() == 0) {
+				Map<String, Object> data = (Map<String, Object>) result.getData();
+				data.remove("info");
+				data.remove("newinfo");
+			}
 		} else if ("16".equals(task.getTaskTypeId())) {
 			result = wmDaDistributionService.approvalDistribution(taskId);
-			Map<String, Object> data = (Map<String, Object>) result.getData();
-			data.remove("info");
-			data.remove("newinfo");
+			if (result.getCode() == 0) {
+				Map<String, Object> data = (Map<String, Object>) result.getData();
+				data.remove("info");
+				data.remove("newinfo");
+			}
 		} else if ("18".equals(task.getTaskTypeId())) {
 			result = wmDaPharmacyService.approvalPharmacy(taskId);
-			Map<String, Object> data = (Map<String, Object>) result.getData();
-			data.put("wmTask", data.get("_wmTask"));
-			data.put("compareList", new ArrayList<>());
-			data.remove("_wmTask");
-			data.remove("info");
-			data.remove("newinfo");
-			data.remove("compareResult");
+			if (result.getCode() == 0) {
+				Map<String, Object> data = (Map<String, Object>) result.getData();
+				data.put("wmTask", data.get("_wmTask"));
+				data.put("compareList", new ArrayList<>());
+				data.remove("_wmTask");
+				data.remove("info");
+				data.remove("newinfo");
+				data.remove("compareResult");
+			}
 		} else {
 			result = R.failed("未查询到任务信息");
 		}
@@ -2290,4 +2296,15 @@ public class WmTaskServiceImpl extends ServiceImpl<WmTaskMapper, WmTask> impleme
 	public IPage<WmTask> listInfoAudit(Page page, WmTask wmTask, LocalDateTime startDate, LocalDateTime endDate) {
 		return wmTaskMapper.listInfoAudit(page, wmTask, startDate, endDate);
 	}
+
+	/**
+	 * 查询同一家医院一个月做的任务次数
+	 *
+	 * @param hospitalId 医院id
+	 * @return
+	 */
+	@Override
+	public List<WmTask> listCurrentMonthHospitalTask(String hospitalId) {
+		return wmTaskMapper.listCurrentMonthHospitalTask(hospitalId);
+	}
 }

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

@@ -1213,4 +1213,16 @@ FROM
 		LEFT JOIN sys_user u ON u.user_id = temp.task_user_id
 		ORDER BY temp.create_time DESC
 	</select>
+
+	<!-- 查询同一家医院一个月做的任务 -->
+	<select id="listCurrentMonthHospitalTask" resultMap="wmTaskMap">
+		SELECT t.*
+		FROM wm_task t
+				 LEFT JOIN wm_task_content tc ON tc.id = t.task_content_id
+		WHERE t.task_status in (1, 2, 3)
+		  AND t.enable_flag = 0
+		  AND t.del_flag = 0
+		  AND MONTH(t.create_time) = MONTH(CURDATE())
+		  AND tc.temp29 = #{hospitalId}
+	</select>
 </mapper>