Selaa lähdekoodia

fix(service): 修复证据链个数判断错误

shc 4 vuotta sitten
vanhempi
commit
716e07d9c7

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

@@ -1811,7 +1811,7 @@ public class WmTaskServiceImpl extends ServiceImpl<WmTaskMapper, WmTask> impleme
 			// 校验证据链信息,并封装正确的
 			List<CommonEvidenceDTO> evidenceDTOS = sourceList;
 			int outCapacity = evidenceDTOS.size() - scorePackage.getTaskNum();
-			AtomicInteger index = new AtomicInteger(0);
+			ConcurrentHashMap<SysUser, Integer> indexMap = new ConcurrentHashMap(sourceList.size());
 			ConcurrentHashMap<SysUser, BigDecimal> preUserSettleAmountMap = new ConcurrentHashMap(sourceList.size());
 			evidenceDTOS.forEach(commonEvidenceDTO -> {
 				// 校验结算用户是否存在
@@ -1827,28 +1827,29 @@ public class WmTaskServiceImpl extends ServiceImpl<WmTaskMapper, WmTask> impleme
 					return;
 				}
 
-				if (outCapacity > 0) {
-					if (index.getAndIncrement() >= outCapacity) {
-						log.error("超出设定任务数");
-						errorMap(errorMap, "超出设定任务数", commonEvidenceDTO.getId());
-						return;
-					}
-				} else {
-					// 校验任务数
-					List<WmTask> wmTasks = wmTaskMapper.selectList(Wrappers.<WmTask>lambdaQuery()
-							.eq(WmTask::getScorePackageId, scorePackage.getId())
-							.eq(WmTask::getTaskUserId, user.getUserId())
-							.eq(WmTask::getDelFlag, DelEnum.NOT_DEL.val())
-							.eq(WmTask::getEnableFlag, EnableEnum.ENABLE.val())
-							// 审核通过
-							.eq(WmTask::getTaskStatus, "3")
-					);
-					if (CollectionUtils.isNotEmpty(wmTasks) && (scorePackage.getTaskNum() - wmTasks.size() <= index.getAndIncrement())) {
-						log.error("超出设定任务数");
-						errorMap(errorMap, "超出设定任务数", commonEvidenceDTO.getId());
-						return;
-					}
+				// 校验任务数
+				int index = 1;
+				if (indexMap.contains(user)) {
+					index = indexMap.get(user) + 1;
 				}
+				indexMap.put(user, index);
+				List<WmTask> wmTasks = wmTaskMapper.selectList(Wrappers.<WmTask>lambdaQuery()
+						.eq(WmTask::getScorePackageId, scorePackage.getId())
+						.eq(WmTask::getTaskUserId, user.getUserId())
+						.eq(WmTask::getDelFlag, DelEnum.NOT_DEL.val())
+						.eq(WmTask::getEnableFlag, EnableEnum.ENABLE.val())
+						// 审核通过
+						.eq(WmTask::getTaskStatus, "3")
+				);
+
+				int taskSize = CollectionUtils.isNotEmpty(wmTasks) ? wmTasks.size() : 0;
+
+				if (scorePackage.getTaskNum() - taskSize <= index ){
+					log.error("超出设定任务数");
+					errorMap(errorMap, "超出设定任务数", commonEvidenceDTO.getId());
+					return;
+				}
+
 
 				// 校验用户是否存在领包记录
 				WmScorePackageStatus scorePackageStatus =