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); } }