Browse Source

feat:医院信息修改

shc 2 years ago
parent
commit
88b4a9a260

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

@@ -727,8 +727,8 @@ public class WmTaskContentServiceImpl extends ServiceImpl<WmTaskContentMapper, W
 			if ("任务有效期限".equals(r.getManual())) {
 
 				List<Integer> quantity = r.getFrequency().stream().map(f -> {
-					Object o =  f.get("quantity");
-					return  o instanceof String ? Integer.parseInt((String) o) : (int) o;
+					Object o = f.get("quantity");
+					return o instanceof String ? Integer.parseInt((String) o) : (int) o;
 				}).sorted().collect(Collectors.toList());
 				betweenDay = quantity.get(0);
 			}
@@ -754,6 +754,53 @@ public class WmTaskContentServiceImpl extends ServiceImpl<WmTaskContentMapper, W
 		}
 	}
 
+	/**
+	 * 医院信息修改
+	 *
+	 * @param hosId      医院id
+	 * @param userId     用户id
+	 * @param rules      校验规则
+	 */
+	private void ctt_30( String hosId, Integer userId, List<WmTaskSubmissionRule.SubmissionRule> rules) {
+
+		int hosUpperLimit = 0;
+		int userUpperLimit = 0;
+
+		// 获取限制
+		for (int i = 0, size = rules.size(); i < size; i++) {
+			Map<String, Object> map = (Map<String, Object>) rules.get(i);
+			WmTaskSubmissionRule.SubmissionRule r = BeanUtil.mapToBean(map, WmTaskSubmissionRule.SubmissionRule.class, true, new CopyOptions());
+
+			if ("同一家医院的修改次数上限".equals(r.getManual())) {
+				List<Integer> quantity = r.getFrequency().stream().map(f -> {
+					Object o = f.get("quantity");
+					return o instanceof String ? Integer.parseInt((String) o) : (int) o;
+				}).sorted().collect(Collectors.toList());
+				hosUpperLimit = quantity.get(0);
+
+			}
+			if ("同一个人对同一家医院的修改次数上限".equals(r.getManual())) {
+
+				List<Integer> quantity = r.getFrequency().stream().map(f -> {
+					Object o = f.get("quantity");
+					return o instanceof String ? Integer.parseInt((String) o) : (int) o;
+				}).sorted().collect(Collectors.toList());
+				userUpperLimit = quantity.get(0);
+			}
+		}
+
+		List<WmTask> taskList = wmTaskService.listCurrentMonthHospitalTask(hosId);
+		if (CollectionUtil.isNotEmpty(taskList)) {
+			List<WmTask> userUpperLimitList = taskList.stream().filter(wmTask -> String.valueOf(userId).equals(wmTask.getTaskUserId())).collect(Collectors.toList());
+			if (userUpperLimitList.size() >= userUpperLimit) {
+				throw new RuntimeException("该医院同一个人一个月只能修改一次");
+			}
+			if (taskList.size() >= hosUpperLimit) {
+				throw new RuntimeException("该医院一个月最多只能修改3次");
+			}
+		}
+	}
+
 
 	/**
 	 * 校验任务内容
@@ -794,7 +841,7 @@ public class WmTaskContentServiceImpl extends ServiceImpl<WmTaskContentMapper, W
 				|| "14".equals(wmTaskContent.getTemp30())
 				|| "17".equals(wmTaskContent.getTemp30())
 				|| "21".equals(wmTaskContent.getTemp30())) {
-			//会议类型
+
 			String date = wmTaskContent.getTemp4();
 			LocalDate d = LocalDate.parse(date, df);
 			if (d.isAfter(now)) {
@@ -821,7 +868,7 @@ public class WmTaskContentServiceImpl extends ServiceImpl<WmTaskContentMapper, W
 					wmTaskContent.setTemp30("30");
 				}
 			}
-			//会议类型
+
 			String date = wmTaskContent.getTemp2();
 			LocalDate d = LocalDate.parse(date, df);
 			if (d.isAfter(now)) {
@@ -874,17 +921,7 @@ public class WmTaskContentServiceImpl extends ServiceImpl<WmTaskContentMapper, W
 
 		// 校验医院信息修改的任务(同一家医院,同一个人一个月只能修改一次,该医院一个月最多可修改3次)
 		if ("30".equals(wmTaskContent.getTemp30())) {
-			List<WmTask> taskList = wmTaskService.listCurrentMonthHospitalTask(wmTaskContent.getTemp29());
-			if (CollectionUtil.isNotEmpty(taskList)) {
-				boolean anyMatch = taskList.stream()
-						.anyMatch(wmTask -> String.valueOf(userId).equals(wmTask.getTaskUserId()));
-				if (anyMatch) {
-					throw new RuntimeException("该医院同一个人一个月只能修改一次");
-				}
-				if (taskList.size() > 3) {
-					throw new RuntimeException("该医院一个月最多只能修改3次");
-				}
-			}
+			ctt_30(wmTaskContent.getTemp29(), userId, rules);
 		}
 
 		// 校验首次库存调查