diff --git a/sa-admin/src/main/java/net/lab1024/sa/admin/module/app/medicalrecord/service/MedicalRecordService.java b/sa-admin/src/main/java/net/lab1024/sa/admin/module/app/medicalrecord/service/MedicalRecordService.java index e208432..d4bca5d 100644 --- a/sa-admin/src/main/java/net/lab1024/sa/admin/module/app/medicalrecord/service/MedicalRecordService.java +++ b/sa-admin/src/main/java/net/lab1024/sa/admin/module/app/medicalrecord/service/MedicalRecordService.java @@ -35,6 +35,7 @@ import java.time.chrono.ChronoLocalDate; import java.util.Arrays; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; import static net.lab1024.sa.common.common.code.UserErrorCode.NO_PERMISSION_EDIT; import static net.lab1024.sa.common.common.code.UserErrorCode.PROJECT_CLOSE; @@ -287,15 +288,6 @@ public class MedicalRecordService { return ResponseDTO.userErrorParam("请先签署项目协议!"); } - // 获取已提交病例数量 - LambdaQueryWrapper caseCountQueryWrapper = new LambdaQueryWrapper<>(); - caseCountQueryWrapper.eq(MedicalRecordEntity::getExpertId,expertId); - caseCountQueryWrapper.in(MedicalRecordEntity::getStatus, Arrays.asList(0, 1)); - Long caseCount = medicalRecorDao.selectCount(caseCountQueryWrapper); - if (caseCount > 5 ){ - return ResponseDTO.userErrorParam("每人最多可提交5份病例!"); - } - /*************************前置 检查*****************************/ ResponseDTO check = check(updateForm, expertId); @@ -460,23 +452,34 @@ public class MedicalRecordService { //患者id String uid = form.getUid(); - // 获取该患者的全部病例 - LambdaQueryWrapper medicalRecordQueryWrapper = new LambdaQueryWrapper<>(); - medicalRecordQueryWrapper.eq(MedicalRecordEntity::getUserId, uid); - List medicalRecords = medicalRecorDao.selectList(medicalRecordQueryWrapper); - for (MedicalRecordEntity medicalRecord: medicalRecords) { - // 判断是否是今天 - // 同一个患者ID可以提交多份病例(入院时间不同),所有病例对比 - boolean isSameDate = medicalRecord.getAdmissionTime().toLocalDate().isEqual(admissionTime.toLocalDate()); - if (isSameDate){ - return ResponseDTO.userErrorParam("患者入院时间和其他病例出现重复"); + // 获取全部患者数据 + LambdaQueryWrapper userQueryWrapper = new LambdaQueryWrapper<>(); + userQueryWrapper.eq(MedicalRecordUserEntity::getUid, uid); + List medicalRecordUsers = medicalRecorUserDao.selectList(userQueryWrapper); + if (!medicalRecordUsers.isEmpty()) { + List userIds = medicalRecordUsers.stream() + .map(MedicalRecordUserEntity::getId) + .distinct() // 可选:去重 + .collect(Collectors.toList()); + + // 获取该患者的全部病例 + LambdaQueryWrapper medicalRecordQueryWrapper = new LambdaQueryWrapper<>(); + medicalRecordQueryWrapper.in(MedicalRecordEntity::getUserId, userIds); + List medicalRecords = medicalRecorDao.selectList(medicalRecordQueryWrapper); + for (MedicalRecordEntity medicalRecord: medicalRecords) { + // 判断是否是今天 + // 同一个患者ID可以提交多份病例(入院时间不同),所有病例对比 + boolean isSameDate = medicalRecord.getAdmissionTime().toLocalDate().isEqual(admissionTime.toLocalDate()); + if (isSameDate){ + return ResponseDTO.userErrorParam("患者入院时间和其他病例出现重复"); + } } } - medicalRecordQueryWrapper = new LambdaQueryWrapper<>(); + LambdaQueryWrapper medicalRecordQueryWrapper = new LambdaQueryWrapper<>(); medicalRecordQueryWrapper.eq(MedicalRecordEntity::getExpertId, expertId); - medicalRecords = medicalRecorDao.selectList(medicalRecordQueryWrapper); - if (medicalRecords.size() >= 20){ + List medicalRecords = medicalRecorDao.selectList(medicalRecordQueryWrapper); + if (medicalRecords.size() >= 4){ return ResponseDTO.userErrorParam("每人参与病例征集不得超过20例"); }