From 40a8f0770a70c0948f890fde088984f91cf580a9 Mon Sep 17 00:00:00 2001 From: zt Date: Sat, 20 Sep 2025 15:08:44 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BA=BA=E8=84=B8=E8=BD=AC=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/TransferDataController.java | 7 ++ .../mapper/TransferDataMapper.java | 11 ++++ .../service/TransferDataService.java | 66 +++++++++++++++++++ 3 files changed, 84 insertions(+) diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/transferData/controller/TransferDataController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/transferData/controller/TransferDataController.java index 3b65c8a4..1213be21 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/transferData/controller/TransferDataController.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/transferData/controller/TransferDataController.java @@ -208,4 +208,11 @@ public class TransferDataController { transferDataService.userTransfer(); } + + + @GetMapping("/handleUserFace") + private void handleUserFace() { + transferDataService.handleUserFace(); + } + } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/transferData/mapper/TransferDataMapper.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/transferData/mapper/TransferDataMapper.java index 72dba6c9..0660d761 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/transferData/mapper/TransferDataMapper.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/transferData/mapper/TransferDataMapper.java @@ -5,6 +5,7 @@ import org.apache.ibatis.annotations.*; import org.dromara.project.domain.BusAttendance; import org.dromara.transferData.domain.*; +import java.util.Map; import java.util.List; @@ -75,4 +76,14 @@ public interface TransferDataMapper { "" + "") List getUserFileList(List goIds); + + + @Select("") + Map getUserFace(List goIds); } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/transferData/service/TransferDataService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/transferData/service/TransferDataService.java index 578456c1..e03f913b 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/transferData/service/TransferDataService.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/transferData/service/TransferDataService.java @@ -813,4 +813,70 @@ public class TransferDataService { semaphore.release(); } } + + + + public void handleUserFace() { + // 只查询需要更新的用户,且只查询必要的字段 + List usersWithoutFacePic = constructionUserService.list( + Wrappers.lambdaQuery() + .and(wrapper -> wrapper.isNull(SubConstructionUser::getFacePic) + .or() + .eq(SubConstructionUser::getFacePic, "")) + .isNotNull(SubConstructionUser::getGoId) + ); + + if (usersWithoutFacePic.isEmpty()) { + log.info("没有需要更新人脸照片的用户"); + return; + } + + List goIds = usersWithoutFacePic.stream() + .map(SubConstructionUser::getGoId) + .filter(Objects::nonNull) + .collect(Collectors.toList()); + + if (goIds.isEmpty()) { + log.info("没有有效的goId列表"); + return; + } + + // 获取人脸照片路径映射 + Map userFace = transferDataMapper.getUserFace(goIds); + + List updateList = new ArrayList<>(); + for (SubConstructionUser user : usersWithoutFacePic) { + String facePic = userFace.get(user.getGoId()); + if (facePic != null && !facePic.isEmpty()) { + Long facePicId = handleSinglePhotoLimit(facePic); + if (facePicId != null) { + // 只设置需要更新的字段 + SubConstructionUser updateUser = new SubConstructionUser(); + updateUser.setId(user.getId()); + updateUser.setFacePic(facePicId.toString()); + updateList.add(updateUser); + } + } + } + + if (!updateList.isEmpty()) { + boolean success = constructionUserService.updateBatchById(updateList); + log.info("更新用户人脸照片完成,成功更新 {} 条记录", updateList.size()); + if (!success) { + log.error("批量更新用户人脸照片失败"); + } + } else { + log.info("没有需要更新的人脸照片数据"); + } + } + + + + + + + + + + }