From 50115acb996629d178a99db1d0c9e5bc0cdaed38 Mon Sep 17 00:00:00 2001 From: WendyYang Date: Wed, 16 Oct 2024 11:44:04 +0800 Subject: [PATCH] =?UTF-8?q?modify:=201.=20=E4=B8=8A=E4=BC=A0=E8=AF=84?= =?UTF-8?q?=E5=AE=A1=E7=BB=93=E6=9E=9C=E9=99=90=E5=88=B6=E5=9C=A8=E4=BC=9A?= =?UTF-8?q?=E8=AE=AE=E5=BC=80=E5=A7=8B=E4=B9=8B=E5=90=8E=EF=BC=9B=202.=20?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E5=90=8C=E6=AD=A5=E4=BF=AE=E6=94=B9=EF=BC=8C?= =?UTF-8?q?=E5=BB=B6=E8=BF=9F=E5=88=A0=E9=99=A4=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/hz/pm/api/meeting/manage/MeetingManage.java | 4 ++++ .../com/hz/pm/api/user/manage/SyncMhUserOrgManage.java | 10 ++++++++++ .../java/com/hz/pm/api/user/model/entity/UserInfo.java | 5 +++++ .../com/hz/pm/api/user/task/SyncMhUserProperties.java | 2 +- .../main/java/com/hz/pm/api/user/task/SyncMhUserTask.java | 15 ++++++++++++--- 5 files changed, 32 insertions(+), 4 deletions(-) diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/meeting/manage/MeetingManage.java b/hz-pm-api/src/main/java/com/hz/pm/api/meeting/manage/MeetingManage.java index 6a3bc39..06a0419 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/meeting/manage/MeetingManage.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/meeting/manage/MeetingManage.java @@ -1149,6 +1149,10 @@ public class MeetingManage { if (!Boolean.TRUE.equals(meeting.getIsInnerProject())) { throw ReturnException.wrap("此会议未关联项目"); } + LocalDateTime now = LocalDateTime.now(); + if (meeting.getStartTime().isAfter(now)) { + throw ReturnException.wrap("会议未开始"); + } MeetingInnerProject mip = meetingInnerProjectService.getById(req.getMeetingProjectId()); if (mip.getReviewResult() != null) { throw ReturnException.wrap("已上传专家评审结果"); diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/user/manage/SyncMhUserOrgManage.java b/hz-pm-api/src/main/java/com/hz/pm/api/user/manage/SyncMhUserOrgManage.java index 37db6e3..6ceebef 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/user/manage/SyncMhUserOrgManage.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/user/manage/SyncMhUserOrgManage.java @@ -9,6 +9,7 @@ import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.PhoneUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; +import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.hz.pm.api.common.util.BizUtils; @@ -40,6 +41,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; +import java.time.LocalDate; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; @@ -109,6 +111,7 @@ public class SyncMhUserOrgManage { } } + @Transactional(rollbackFor = Exception.class) public void syncUsers(LocalDateTime syncDateTime) { MhRetDTO> mhRet = mhApiClient.queryUsers(syncDateTime); if (mhRet.isOk()) { @@ -116,6 +119,7 @@ public class SyncMhUserOrgManage { if (CollUtil.isEmpty(mhUsers)) { return; } + LocalDateTime now = LocalDateTime.now(); log.info("同步用户信息:{}条", mhUsers.size()); List units = mhUnitService.list(); Map unitMap = CollUtils.listToMap(units, MhUnit::getId); @@ -148,6 +152,7 @@ public class SyncMhUserOrgManage { userInfo.setMobile(mhUser.getAccount()); } userInfo.setMhUnitId(mhUser.getMhUnitId()); + userInfo.setSyncTime(now); savedList.add(userInfo); } if (!savedList.isEmpty()) { @@ -155,6 +160,11 @@ public class SyncMhUserOrgManage { userInfoService.saveOrUpdateBatch(savedList); } } + if (syncDateTime == null) { + Wrapper delQuery = Wrappers.lambdaQuery(UserInfo.class) + .lt(UserInfo::getSyncTime, now.minusSeconds(1)); + userInfoService.remove(delQuery); + } } else { log.error("同步用户信息失败:{}", JSONUtil.toJsonStr(mhRet)); } diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/user/model/entity/UserInfo.java b/hz-pm-api/src/main/java/com/hz/pm/api/user/model/entity/UserInfo.java index 21c36c3..3753e28 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/user/model/entity/UserInfo.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/user/model/entity/UserInfo.java @@ -74,4 +74,9 @@ public class UserInfo implements Serializable { @TableField(fill = FieldFill.INSERT_UPDATE) private Long updateBy; + /** + * 最后一次更新时间 + */ + private LocalDateTime syncTime; + } diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/user/task/SyncMhUserProperties.java b/hz-pm-api/src/main/java/com/hz/pm/api/user/task/SyncMhUserProperties.java index 133c413..aa0b032 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/user/task/SyncMhUserProperties.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/user/task/SyncMhUserProperties.java @@ -19,7 +19,7 @@ public class SyncMhUserProperties { public static final String PREFIX = "sync-mh-user"; - private Integer fixedRate = 30; + private Integer fixedRate = 10; private Boolean open = true; diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/user/task/SyncMhUserTask.java b/hz-pm-api/src/main/java/com/hz/pm/api/user/task/SyncMhUserTask.java index e2297e5..9bbd035 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/user/task/SyncMhUserTask.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/user/task/SyncMhUserTask.java @@ -28,11 +28,20 @@ public class SyncMhUserTask { private final SyncMhUserProperties syncMhUserProperties; private final SyncMhUserOrgManage syncMhUserOrgManage; + private volatile Integer fullSyncDate; + @Scheduled(fixedRateString = "#{syncMhUserProperties.getFixedRate()}", timeUnit = TimeUnit.MINUTES) public void execute() { - Integer fixedRate = syncMhUserProperties.getFixedRate(); - LocalDateTime syncDateTime = LocalDateTime.now().minusMinutes(fixedRate + 5L); - syncMhUserOrgManage.syncUsers(syncDateTime); + LocalDateTime now = LocalDateTime.now(); + LocalDateTime currSyncDateTime; + if (now.getHour() == 0 && (fullSyncDate == null || fullSyncDate < now.getDayOfYear())) { + currSyncDateTime = null; + fullSyncDate = now.getDayOfYear(); + } else { + Integer fixedRate = syncMhUserProperties.getFixedRate(); + currSyncDateTime = now.minusMinutes(fixedRate + 3L); + } + syncMhUserOrgManage.syncUsers(currSyncDateTime); } }