From 8b79e9e36b902031961e7df3e5055803225c581b Mon Sep 17 00:00:00 2001 From: shenzhidan Date: Tue, 3 Feb 2026 10:43:39 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E4=BF=AE=E6=94=B9=E5=9F=B9=E8=AE=AD?= =?UTF-8?q?=E7=94=B3=E8=AF=B7=E9=80=9A=E8=BF=87=E5=90=8E=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E5=9F=B9=E8=AE=AD=E4=BA=BA=E5=91=98=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../training/TrainingApplyProcessNodeE.java | 3 +++ .../model/training/TrainingApplyRecordE.java | 12 ++++----- .../training/TrainingUserGatewayImpl.java | 25 +++++++++++++++++-- .../mapper/TrainingApplyProcessMapper.xml | 3 ++- 4 files changed, 34 insertions(+), 9 deletions(-) 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