Эх сурвалжийг харах

feat(service): 更新审核记录积分逻辑

shc 3 жил өмнө
parent
commit
2cf2625f24

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

@@ -125,6 +125,15 @@ public interface WmTaskMapper extends DataScopeMapper<WmTask> {
 	 */
 	int getUserTaskSubScore(@Param("userId")String userId, @Param("startTime")LocalDateTime startTime, @Param("endTime")LocalDateTime endTime);
 
+	/**
+	 * 发包方审核时候只校验审核通过的分数
+	 * @param userId 用户id
+	 * @param startTime 开始时间
+	 * @param endTime 截止时间
+	 * @return 任务积分值和
+	 */
+	int newGetUserTaskSubScore(@Param("userId")String userId, @Param("startTime")LocalDateTime startTime, @Param("endTime")LocalDateTime endTime);
+
 	/**
 	 * 患者教育-处方列表
 	 *

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

@@ -31,6 +31,7 @@ import com.qunzhixinxi.hnqz.common.core.util.R;
 import org.apache.ibatis.annotations.Param;
 
 import java.sql.Timestamp;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.util.List;
 import java.util.Map;
@@ -140,6 +141,8 @@ public interface WmTaskService extends IService<WmTask> {
 
 	Boolean checkUserTaskSubScore(String userId);
 
+	Boolean newCheckUserTaskSubScore(String userId, LocalDate createDate);
+
 	R getTaskInfo(String taskId);
 
 	/**

+ 10 - 10
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmDaDistributionServiceImpl.java

@@ -433,16 +433,16 @@ public class WmDaDistributionServiceImpl extends ServiceImpl<WmDaDistributionMap
 		//提交
 		updateTask.setTaskStatus("2");
 		WmScorePackage wmScorePackage = packageService.getById(wmTask.getScorePackageId());
-		if("1".equals(approvalOpinion)){
-			if("1".equals(wmScorePackage.getPackageType1())){
-				Boolean fullFlag = wmTaskService.checkUserTaskSubScore(wmTask.getTaskUserId());
-				if(fullFlag){
-//					return R.failed(1, "每日最多提交5万积分");
-					updateTask.setScore(0);
-				}
-
-			}
-		}
+// 		if("1".equals(approvalOpinion)){
+// 			if("1".equals(wmScorePackage.getPackageType1())){
+// 				Boolean fullFlag = wmTaskService.checkUserTaskSubScore(wmTask.getTaskUserId());
+// 				if(fullFlag){
+// //					return R.failed(1, "每日最多提交5万积分");
+// 					updateTask.setScore(0);
+// 				}
+//
+// 			}
+// 		}
 
 		wmTaskService.updateById(updateTask);
 

+ 10 - 10
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmDaHospitalServiceImpl.java

@@ -485,16 +485,16 @@ public class WmDaHospitalServiceImpl extends ServiceImpl<WmDaHospitalMapper, WmD
 		updateTask.setUpdateTime(localDateTime);
 
 		WmScorePackage wmScorePackage = wmScorePackageService.getById(wmTask.getScorePackageId());
-		if ("1".equals(approvalOpinion)) {
-			if ("1".equals(wmScorePackage.getPackageType1())) {
-				Boolean fullFlag = wmTaskService.checkUserTaskSubScore(wmTask.getTaskUserId());
-				if (fullFlag) {
-//					return R.failed(1, "每日最多提交5万积分");
-					updateTask.setScore(0);
-				}
-
-			}
-		}
+// 		if ("1".equals(approvalOpinion)) {
+// 			if ("1".equals(wmScorePackage.getPackageType1())) {
+// 				Boolean fullFlag = wmTaskService.checkUserTaskSubScore(wmTask.getTaskUserId());
+// 				if (fullFlag) {
+// //					return R.failed(1, "每日最多提交5万积分");
+// 					updateTask.setScore(0);
+// 				}
+//
+// 			}
+// 		}
 		wmTaskService.updateById(updateTask);
 //		wmTaskService.update(updateWrapper);
 

+ 10 - 10
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmDaPharmacyServiceImpl.java

@@ -181,16 +181,16 @@ public class WmDaPharmacyServiceImpl extends ServiceImpl<WmDaPharmacyMapper, WmD
 		//提交
 		updateTask.setTaskStatus("2");
 		WmScorePackage wmScorePackage = wmScorePackageService.getById(wmTask.getScorePackageId());
-		if("1".equals(approvalOpinion)){
-			if("1".equals(wmScorePackage.getPackageType1())){
-				Boolean fullFlag = wmTaskService.checkUserTaskSubScore(wmTask.getTaskUserId());
-				if(fullFlag){
-//					return R.failed(1, "每日最多提交5万积分");
-					updateTask.setScore(0);
-				}
-
-			}
-		}
+// 		if("1".equals(approvalOpinion)){
+// 			if("1".equals(wmScorePackage.getPackageType1())){
+// 				Boolean fullFlag = wmTaskService.checkUserTaskSubScore(wmTask.getTaskUserId());
+// 				if(fullFlag){
+// //					return R.failed(1, "每日最多提交5万积分");
+// 					updateTask.setScore(0);
+// 				}
+//
+// 			}
+// 		}
 		wmTaskService.updateById(updateTask);
 //		wmTaskService.update(updateWrapper);
 

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

@@ -1399,72 +1399,74 @@ public class WmTaskServiceImpl extends ServiceImpl<WmTaskMapper, WmTask> impleme
 		if (ids.length <= 0) {
 			return R.failed("缺少参数!");
 		}
+
 		LambdaUpdateWrapper<WmTask> updateWrapper = new LambdaUpdateWrapper();
 		updateWrapper.in(WmTask::getId, ids);
-		updateWrapper.set(WmTask::getTaskStatus, wmTask.getTaskStatus());
-		this.update(updateWrapper);
-		wmTask = this.getById(ids[0]);
-		WmScorePackage wmScorePackage = wmScorePackageService.getById(wmTask.getScorePackageId());
-
-		if (wmTask.getTaskStatus().equals("4")) {//审核不通过
-			//如果是批量审核,需要判断每一个接单人是否完成
-			for (int i = 0; i < ids.length; i++) {
-				WmTask wmTask1 = this.getById(ids[i]);
-				WmScorePackageStatus scorePackageStatus = new WmScorePackageStatus();
-				scorePackageStatus.setPackageId(wmScorePackage.getId());
-				scorePackageStatus.setUserId(wmTask1.getTaskUserId());
-				scorePackageStatus.setStatus("2");//接单审核通过
-				List<WmScorePackageStatus> scorePackageStatusList = wmScorePackageStatusService.list(Wrappers.query(scorePackageStatus));
-
-				if (null != scorePackageStatusList && scorePackageStatusList.size() > 0) {
-					scorePackageStatus = scorePackageStatusList.get(0);
-					wmScorePackageStatusService.updatePackageAndStatus(wmTask1, wmScorePackage, scorePackageStatus);
+		List<WmTask> wmTaskList = list(updateWrapper);
+
+		switch (wmTask.getTaskStatus()){
+			case "3": // 审核通过
+
+				// 获取用户积分系统上线
+				String value = sysPublicParamService.getSysPublicParamKeyToValue("USER_TASK_SUB_SCORE");
+				log.warn("系统当前限制积分上限:【{}】", value);
+				int limit = StringUtils.isEmpty(value) ? 30000 : Integer.parseInt(value);
+
+				List<WmTask> bathList = new ArrayList<>(wmTaskList.size());
+
+				Map<String, Map<LocalDate, List<WmTask>>> collect = wmTaskList.stream()
+						.collect(Collectors.groupingBy(WmTask::getTaskUserId, Collectors.groupingBy(task -> task.getCreateTime()
+								.toLocalDate())));
+				if (CollectionUtil.isNotEmpty(collect)){
+					for (Map.Entry<String,Map<LocalDate, List<WmTask>>> outer : collect.entrySet()){
+						String userId = outer.getKey();
+						Map<LocalDate, List<WmTask>> outerValue = outer.getValue();
+						for (Map.Entry<LocalDate, List<WmTask>> inner : outerValue.entrySet()){
+							LocalDate localDate = inner.getKey();
+							List<WmTask> taskList = inner.getValue();
+							int amount = baseMapper.newGetUserTaskSubScore(userId, LocalDateTime.of(localDate,LocalTime.MIN), LocalDateTime.of(localDate,LocalTime.MAX));
+							boolean flag = false;
+							for (WmTask t : taskList) {
+								if ((amount += t.getScore()) >= limit) {
+									if (flag) {
+										t.setScore(0);
+									}
+									flag = true;
+								}
+								t.setTaskStatus("3");
+								t.setUpdateTime(LocalDateTime.now());
+							}
+							bathList.addAll(taskList);
+						}
+					}
 				}
-			}
+
+				updateBatchById(bathList);
+				break;
+			case "4": // 审核不通过
+				updateWrapper.set(WmTask::getTaskStatus, wmTask.getTaskStatus());
+				this.update(updateWrapper);
+
+				WmScorePackage wmScorePackage = wmScorePackageService.getById(wmTaskList.get(0).getScorePackageId());
+				wmTaskList.forEach(task -> {
+					WmScorePackageStatus scorePackageStatus = new WmScorePackageStatus();
+					scorePackageStatus.setPackageId(wmScorePackage.getId());
+					scorePackageStatus.setUserId(task.getTaskUserId());
+					scorePackageStatus.setStatus("2");//接单审核通过
+					List<WmScorePackageStatus> scorePackageStatusList = wmScorePackageStatusService.list(Wrappers.query(scorePackageStatus));
+
+					if (CollectionUtil.isNotEmpty(scorePackageStatusList)) {
+						scorePackageStatus = scorePackageStatusList.get(0);
+						wmScorePackageStatusService.updatePackageAndStatus(task, wmScorePackage, scorePackageStatus);
+					}
+				});
+				break;
 		}
 
 		//判断已审核的任务积分值,或者积分个数是否满了,如果满了,就将所有未审核的任务,更新成审核不通过
 		//即,将real_flag=9更新成real_flag=1,将task_status=2更新成task_status=4
-		wmScorePackageStatusService.updateScorePackageStatus(wmTask.getScorePackageId());
-
-		//if(null==taskList||taskList.size()<=0){//所有任务都已审核完毕
-//			wmTask1.setScorePackageId(wmTask.getScorePackageId());
-//			List<Map<String,String>> resMap=wmTaskMapper.PackageIsFinishByTask(wmTask1);
-//			if(resMap!=null&&resMap.size()>=wmScorePackage.getUserNum()){
-//				for (Map<String,String> map: resMap) {
-//					if(!StringUtil.isEmpty(map.get("isFinish"))){
-//						Integer res=Integer.valueOf(map.get("isFinish"));
-//						if(res>0){
-//							return R.ok();
-//						}
-//					}else {
-//						return R.ok();
-//					}
-//
-//				}
-//
-//				//更新所有的任务
-//				LambdaUpdateWrapper<WmTask> updateWrapper=new LambdaUpdateWrapper<>();
-//				updateWrapper.eq(WmTask::getScorePackageId,wmTask.getScorePackageId());
-//				updateWrapper.eq(WmTask::getRealFlag,"9");
-//				updateWrapper.set(WmTask::getRealFlag,"1");
-//				this.update(updateWrapper);
-//				LambdaUpdateWrapper<WmTask> updateWrapper1=new LambdaUpdateWrapper<>();
-//				updateWrapper1.eq(WmTask::getScorePackageId,wmTask.getScorePackageId());
-//				updateWrapper1.eq(WmTask::getTaskStatus,"2");
-//				updateWrapper1.set(WmTask::getTaskStatus,"4");
-//				this.update(updateWrapper1);
-//
-//				wmScorePackage.setPackageFinishStatus("1");//已完成
-//				wmScorePackage.setScorePackageStatus("4");//已完成待结算
-//				wmScorePackage.setTaskAddFlag("0");//已完成不可以做任务
-//				wmScorePackage.setPackageFinishTime(LocalDateTime.now());
-//				return R.ok(wmScorePackageService.updateById(wmScorePackage));
-//			}
-
-		//}
-		//}
-		//当有任务未审核完毕时,任务不能算完成
+		wmScorePackageStatusService.updateScorePackageStatus(wmTaskList.get(0).getScorePackageId());
+
 		return R.ok("审核成功");
 	}
 
@@ -1624,6 +1626,17 @@ public class WmTaskServiceImpl extends ServiceImpl<WmTaskMapper, WmTask> impleme
 		return total >= (StringUtils.isEmpty(value) ? 30000 : Integer.parseInt(value));
 	}
 
+	@Override
+	public Boolean newCheckUserTaskSubScore(String userId, LocalDate createDate) {
+		LocalDateTime startTime = LocalDateTime.of(createDate, LocalTime.MIN);
+		LocalDateTime endTime = LocalDateTime.of(createDate, LocalTime.MAX);
+		int total = wmTaskMapper.newGetUserTaskSubScore(userId, startTime, endTime);
+		// 获取用户积分系统上线
+		String value = sysPublicParamService.getSysPublicParamKeyToValue("USER_TASK_SUB_SCORE");
+		log.warn("系统当前限制积分上限:【{}】", value);
+		return total >= (StringUtils.isEmpty(value) ? 30000 : Integer.parseInt(value));
+	}
+
 
 	@Override
 	public R getTaskInfo(String taskId) {

+ 13 - 1
hnqz-upms/hnqz-upms-biz/src/main/resources/mapper/WmTaskMapper.xml

@@ -1136,7 +1136,19 @@ FROM
 		AND t.real_flag = '0'
 		AND t.task_status != '4'
 		AND t.task_user_id = #{userId,jdbcType=VARCHAR}
-		AND (t.update_time BETWEEN #{startTime,jdbcType=TIMESTAMP} AND #{endTime,jdbcType=TIMESTAMP})
+		AND (t.create_time BETWEEN #{startTime,jdbcType=TIMESTAMP} AND #{endTime,jdbcType=TIMESTAMP})
+	</select>
+
+	<select id="newGetUserTaskSubScore" resultType="java.lang.Integer">
+		SELECT IFNULL(sum(t.score), 0)  FROM
+			wm_task t, wm_score_package p
+		WHERE
+			t.score_package_id = p.id
+		  AND p.package_type1 = '1'
+		  AND t.real_flag = '0'
+		  AND t.task_status = '3'
+		  AND t.task_user_id = #{userId,jdbcType=VARCHAR}
+		  AND (t.create_time BETWEEN #{startTime,jdbcType=TIMESTAMP} AND #{endTime,jdbcType=TIMESTAMP})
 	</select>
 
 	<!-- 患者教育-处方列表-分页 -->