diff --git a/web-domain/src/main/java/com/zcloud/edu/domain/model/training/TrainingApplyProcessNodeE.java b/web-domain/src/main/java/com/zcloud/edu/domain/model/training/TrainingApplyProcessNodeE.java index 678b292..b291dcb 100644 --- a/web-domain/src/main/java/com/zcloud/edu/domain/model/training/TrainingApplyProcessNodeE.java +++ b/web-domain/src/main/java/com/zcloud/edu/domain/model/training/TrainingApplyProcessNodeE.java @@ -21,4 +21,7 @@ public class TrainingApplyProcessNodeE { @ApiModelProperty(value = "时间") private String time; + @ApiModelProperty(value = "审批时间") + private String approvalTime; + } diff --git a/web-domain/src/main/java/com/zcloud/edu/domain/model/training/TrainingApplyRecordE.java b/web-domain/src/main/java/com/zcloud/edu/domain/model/training/TrainingApplyRecordE.java index b41580e..2f0f0f7 100644 --- a/web-domain/src/main/java/com/zcloud/edu/domain/model/training/TrainingApplyRecordE.java +++ b/web-domain/src/main/java/com/zcloud/edu/domain/model/training/TrainingApplyRecordE.java @@ -136,12 +136,12 @@ public class TrainingApplyRecordE extends BaseE { public void addTrainingUser() { if (this.applyUsers == null) return; applyUsers.forEach(user -> { - TrainingUserE trainingUser = new TrainingUserE(); - trainingUser.setTrainingUserId(IdUtil.simpleUUID()); - trainingUser.setPhone(user.getPhone()); - trainingUser.setApplyStatus(user.getApplyStatus()); - trainingUser.setExamineStatus(ExamineStatusEnum.PENDING.getCode()); - this.trainingUsers.add(trainingUser); + if (user != null && user.getApplyStatus().equals(ApplyStatusEnum.APPROVED.getCode())) { + TrainingUserE trainingUser = new TrainingUserE(); + trainingUser.setTrainingUserId(IdUtil.simpleUUID()); + trainingUser.setPhone(user.getPhone()); + this.trainingUsers.add(trainingUser); + } }); } /** diff --git a/web-infrastructure/src/main/java/com/zcloud/edu/gatewayimpl/training/TrainingUserGatewayImpl.java b/web-infrastructure/src/main/java/com/zcloud/edu/gatewayimpl/training/TrainingUserGatewayImpl.java index 7c1a635..a94f60b 100644 --- a/web-infrastructure/src/main/java/com/zcloud/edu/gatewayimpl/training/TrainingUserGatewayImpl.java +++ b/web-infrastructure/src/main/java/com/zcloud/edu/gatewayimpl/training/TrainingUserGatewayImpl.java @@ -12,6 +12,7 @@ import org.springframework.stereotype.Service; import java.util.Arrays; import java.util.List; +import java.util.Set; import java.util.stream.Collectors; /** @@ -35,8 +36,25 @@ public class TrainingUserGatewayImpl implements TrainingUserGateway { @Override public Boolean addBatch(List trainingUserEList) { - // 使用 Stream 流进行转换 + if (trainingUserEList == null || trainingUserEList.isEmpty()) { + return true; + } + List phones = trainingUserEList.stream() + .map(TrainingUserE::getPhone) + .filter(StrUtil::isNotBlank) + .distinct() + .collect(Collectors.toList()); + List existingUsers = trainingUserRepository.lambdaQuery() + .select(TrainingUserDO::getPhone) + .in(TrainingUserDO::getPhone, phones) + .list(); + Set existingPhones = existingUsers.stream() + .map(TrainingUserDO::getPhone) + .collect(Collectors.toSet()); + List doList = trainingUserEList.stream() + .filter(e -> StrUtil.isNotBlank(e.getPhone()) + && !existingPhones.contains(e.getPhone())) .map(e -> { TrainingUserDO d = new TrainingUserDO(Tools.get32UUID()); BeanUtils.copyProperties(e, d, "trainingUserId"); @@ -44,7 +62,10 @@ public class TrainingUserGatewayImpl implements TrainingUserGateway { }) .collect(Collectors.toList()); - trainingUserRepository.saveBatch(doList); + if (!doList.isEmpty()) { + trainingUserRepository.saveBatch(doList); + } + return true; } diff --git a/web-infrastructure/src/main/resources/mapper/TrainingApplyProcessMapper.xml b/web-infrastructure/src/main/resources/mapper/TrainingApplyProcessMapper.xml index 248b080..79cad5e 100644 --- a/web-infrastructure/src/main/resources/mapper/TrainingApplyProcessMapper.xml +++ b/web-infrastructure/src/main/resources/mapper/TrainingApplyProcessMapper.xml @@ -16,7 +16,8 @@ tar.approval_status AS approvalStatus, u.username AS username, tap.apply_type AS applyType, - DATE_FORMAT(tap.create_time, '%Y-%m-%d %H:%i:%s') AS time + DATE_FORMAT(tap.create_time, '%Y-%m-%d %H:%i:%s') AS time, + DATE_FORMAT(tap.update_time, '%Y-%m-%d %H:%i:%s') as approvalTime FROM training_apply_process tap LEFT JOIN