Browse Source

工作台

hyy 4 months ago
parent
commit
fe7de37897
11 changed files with 235 additions and 81 deletions
  1. 1 0
      yudao-module-museums/yudao-module-museums-api/src/main/java/cn/iocoder/yudao/module/museums/enums/ErrorCodeConstants.java
  2. 28 4
      yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/controller/admin/specimeninfo/SpecimenInfoController.java
  3. 2 2
      yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/controller/admin/specimenoutbound/SpecimenOutboundController.java
  4. 28 21
      yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/service/specimeninfo/SpecimenInfoServiceImpl.java
  5. 40 11
      yudao-module-museums/yudao-module-museums-biz/src/main/resources/mapper/specimeninfo/SpecimenInfoMapper.xml
  6. 52 24
      yudao-module-museums/yudao-module-museums-biz/src/main/resources/mapper/specimenoutbound/SpecimenOutboundMapper.xml
  7. 0 1
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/logger/vo/operatelog/OperateLogPageReqVO.java
  8. 37 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/logger/vo/operatelog/OperateLogReqVO.java
  9. 29 15
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/logger/OperateLogMapper.java
  10. 9 1
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/logger/OperateLogService.java
  11. 9 2
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/logger/OperateLogServiceImpl.java

+ 1 - 0
yudao-module-museums/yudao-module-museums-api/src/main/java/cn/iocoder/yudao/module/museums/enums/ErrorCodeConstants.java

@@ -15,6 +15,7 @@ public class ErrorCodeConstants {
     public static final ErrorCode INVALID_IMAGE_FORMAT = new ErrorCode(1-016-000-003, "图片格式不符合要求");
     public static final ErrorCode SPECIMEN_NUMBER_ALREADY_EXISTS_CANNOT_ADDED = new ErrorCode(1-016-000-004, "标本编号已存在,无法新增");
     public static final ErrorCode SPECIMEN_NUMBER_NOT_EXISTS = new ErrorCode(1-016-000-005, "标本编号无效或不存在");
+    public static final ErrorCode MUST_UPLOADED_EXCEL_AND_IMAGE = new ErrorCode(1-016-000-006, "必须同时上传Excel文件和图片压缩包文件,或者只上传Excel文件。");
 
     // ========== 标本出库回库信息 1-016-001-000 ==========
     public static final ErrorCode SPECIMEN_OUTBOUND_NOT_EXISTS = new ErrorCode(1-016-001-000, "标本出库回库信息不存在");

+ 28 - 4
yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/controller/admin/specimeninfo/SpecimenInfoController.java

@@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.museums.controller.admin.specimeninfo;
 import cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants;
 import cn.iocoder.yudao.module.museums.enums.common.*;
 import cn.iocoder.yudao.module.system.controller.admin.logger.vo.operatelog.OperateLogPageReqVO;
+import cn.iocoder.yudao.module.system.controller.admin.logger.vo.operatelog.OperateLogReqVO;
 import cn.iocoder.yudao.module.system.controller.admin.logger.vo.operatelog.OperateLogRespVO;
 import cn.iocoder.yudao.module.system.dal.dataobject.logger.OperateLogDO;
 import cn.iocoder.yudao.module.system.service.logger.OperateLogService;
@@ -175,6 +176,12 @@ public class SpecimenInfoController {
             @RequestParam(value = "imageFile", required = false) MultipartFile imageFile,
             @RequestParam(value = "updateSupport", required = false, defaultValue = "false") Boolean updateSupport) throws Exception {
 
+        // 验证输入条件
+        //必须同时上传Excel文件和压缩包文件,或者只上传Excel文件。
+        if (imageFile != null && !imageFile.isEmpty() && (file == null || file.isEmpty())) {
+            throw exception(MUST_UPLOADED_EXCEL_AND_IMAGE);
+        }
+
         SpecimenImportRespVO importResult = null;
 
         // 处理 Excel 文件中的标本数据(如果存在)
@@ -190,10 +197,12 @@ public class SpecimenInfoController {
                 throw exception(INVALID_IMAGE_FORMAT);
             }
         }
+
         System.gc();
         return success(importResult);
     }
 
+
     //工作台
     @GetMapping("/statistics/entry/{year}")
     @Operation(summary = "统计本年标本每月入库数量")
@@ -232,6 +241,20 @@ public class SpecimenInfoController {
         return CommonResult.success(yearlySourceStatistics);
     }
 
+//    @GetMapping("/logs")
+//    @Operation(summary = "获得标本相关的系统日志")
+//    @Parameter(name = "specimenId", description = "标本编号", required = true, example = "1024")
+//    @Parameter(name = "moduleType", description = "操作模块类型", required = true, example = "MUSEUMS 标本")
+//    public CommonResult<List<OperateLogRespVO>> getSpecimenLogs(
+//            @RequestParam("specimenId") List<String> extra,
+//            @RequestParam("moduleType") String type) {
+//        OperateLogPageReqVO pageReqDTO=new OperateLogPageReqVO();
+//        pageReqDTO.setType(type);
+//        pageReqDTO.setExtra(extra);
+//        List<OperateLogDO> logs = operateLogService.getLogsBySpecimenIdAndType(pageReqDTO);
+//        return success(BeanUtils.toBean(logs, OperateLogRespVO.class));
+//    }
+
     @GetMapping("/logs")
     @Operation(summary = "获得标本相关的系统日志")
     @Parameter(name = "specimenId", description = "标本编号", required = true, example = "1024")
@@ -239,10 +262,11 @@ public class SpecimenInfoController {
     public CommonResult<List<OperateLogRespVO>> getSpecimenLogs(
             @RequestParam("specimenId") List<String> extra,
             @RequestParam("moduleType") String type) {
-        OperateLogPageReqVO pageReqDTO=new OperateLogPageReqVO();
-        pageReqDTO.setType(type);
-        pageReqDTO.setExtra(extra);
-        List<OperateLogDO> logs = operateLogService.getLogsBySpecimenIdAndType(pageReqDTO);
+        OperateLogReqVO reqVO = new OperateLogReqVO();
+        reqVO.setType(type);
+        reqVO.setExtra(extra);
+        List<OperateLogDO> logs = operateLogService.getLogsBySpecimenIdAndType(reqVO);
+        // 返回结果
         return success(BeanUtils.toBean(logs, OperateLogRespVO.class));
     }
 }

+ 2 - 2
yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/controller/admin/specimenoutbound/SpecimenOutboundController.java

@@ -194,7 +194,7 @@ public class SpecimenOutboundController {
 
         // 将数字月份转换为字符串月份
         for (Map<String, Object> stat : monthlyStatistics) {
-            int monthNum = (int) stat.get("month");
+            Long monthNum = (Long) stat.get("month");
             String monthStr = monthNum + "月"; // 转换为“1月”、“2月”等格式
             stat.put("month", monthStr);
         }
@@ -218,7 +218,7 @@ public class SpecimenOutboundController {
 
         // 将数字月份转换为字符串月份
         for (Map<String, Object> stat : monthlyStatistics) {
-            int monthNum = (int) stat.get("month");
+            Long monthNum = (Long) stat.get("month");
             String monthStr = monthNum + "月"; // 转换为“1月”、“2月”等格式
             stat.put("month", monthStr);
         }

+ 28 - 21
yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/service/specimeninfo/SpecimenInfoServiceImpl.java

@@ -254,28 +254,22 @@ public class SpecimenInfoServiceImpl implements SpecimenInfoService {
 
                     // 根据图片名称查找对应的标本
                     SpecimenInfoDO specimenInfo = specimenInfoMapper.selectByImageNames(imageName);
-                    if (specimenInfo != null) {
+                    SpecimenInfoSaveReqVO specimenInfoReqVO = BeanUtils.toBean(specimenInfo, SpecimenInfoSaveReqVO.class);
+
+                    if (specimenInfoReqVO != null) {
                         // 上传图片并获取 URL
                         String imagePath = fileApi.createFile(Files.readAllBytes(newFile.toPath()));
-
+                        // TODO 禁止单独上传图片zip
                         // 确保 imagePath 有效且不为空
                         if (imagePath != null && !imagePath.trim().isEmpty()) {
                             // 添加新上传的路径
                             imagePathsSet.add(imagePath.trim());  // 使用 Set 来去重
-
                             // 获取已存在的路径,并处理空值或无效的路径
-                            String existingImagePaths = specimenInfo.getImagePath();
-                            if (existingImagePaths != null && !existingImagePaths.trim().isEmpty()) {
-                                // 清理已有路径中的方括号(如果有)
-                                existingImagePaths = existingImagePaths.replaceAll("^\\[|\\]$", "").trim();
-                                // 如果原路径是有效的且不是空数组,则拆分并添加到 Set 中
-                                String[] existingPaths = existingImagePaths.split(",\\s*");
-                                Collections.addAll(imagePathsSet, existingPaths);  // 也用 Set 来去重
+                            List<String> existingImagePaths = specimenInfoReqVO.getImagePath();
+                            if (existingImagePaths != null && !existingImagePaths.isEmpty()) {
+                                existingImagePaths.addAll(imagePathsSet);
                             }
-
-                            // 更新标本信息的图片路径
-                            specimenInfo.setImagePath("[" + String.join(", ", imagePathsSet) + "]");
-                            updateSpecimenInfo(BeanUtils.toBean(specimenInfo, SpecimenInfoSaveReqVO.class));
+                            updateSpecimenInfo(specimenInfoReqVO);
                         }
                     } else {
                         // 如果没有找到对应标本,记录失败
@@ -298,7 +292,6 @@ public class SpecimenInfoServiceImpl implements SpecimenInfoService {
                     respVO.getCreateSpecimenImages().add(imageName);
                 }
             }
-
         } finally {
             // 清理临时文件
             FileUtils.deleteDirectory(tempDir);
@@ -310,19 +303,33 @@ public class SpecimenInfoServiceImpl implements SpecimenInfoService {
     //根据入库的登记情况统计本年标本入库信息
     @Override
     public List<Map<String, Object>> getMonthlyEntryStatistics(int year) {
+        // 获取按年分组的入库统计数据
         List<Map<String, Object>> entryStatistics = specimenInfoMapper.selectMonthlyEntryStatisticsByYear(year);
-        return entryStatistics.stream()
-                .map(stat -> {
+
+        // 创建一个从 1 到 12 的月份列表
+        Map<Long, Long> monthToCountMap = new HashMap<>();
+        for (int i = 1; i <= 12; i++) {
+            monthToCountMap.put((long) i, 0L); // 默认所有月份的入库数量为 0
+        }
+
+        // 将查询到的统计数据填充到月份对应的统计数值中
+        for (Map<String, Object> stat : entryStatistics) {
+            Long month = (Long) stat.get("month");
+            Long entryCount = (Long) stat.get("entryCount");
+            monthToCountMap.put(month, entryCount); // 更新实际的入库数量
+        }
+
+        // 构造最终返回的结果
+        return monthToCountMap.entrySet().stream()
+                .map(entry -> {
                     Map<String, Object> monthData = new HashMap<>();
-                    monthData.put("number", stat.get("entryCount")); // 获取入库数量
-                    monthData.put("month", stat.get("month") + "月"); // 获取月份并转换格式
+                    monthData.put("month", entry.getKey() + "月"); // 获取月份并转换格式
+                    monthData.put("number", entry.getValue());  // 获取入库数量
                     return monthData;
                 })
                 .collect(Collectors.toList());
     }
 
-
-
     //按标本类别统计库存数
     @Override
     public Map<String, Integer> getSpecimenTypeStatistics() {

+ 40 - 11
yudao-module-museums/yudao-module-museums-biz/src/main/resources/mapper/specimeninfo/SpecimenInfoMapper.xml

@@ -2,20 +2,49 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="cn.iocoder.yudao.module.museums.dal.mysql.specimeninfo.SpecimenInfoMapper">
 
+<!--    <select id="selectMonthlyEntryStatisticsByYear" parameterType="int" resultType="map">-->
+<!--        SELECT-->
+<!--            MONTH(acquisition_time) AS month,-->
+<!--            COUNT(*) AS entryCount-->
+<!--        FROM-->
+<!--            museums_specimen_info-->
+<!--        WHERE-->
+<!--            YEAR(acquisition_time) = #{year} AND deleted = 0-->
+<!--        GROUP BY-->
+<!--            MONTH(acquisition_time)-->
+<!--        ORDER BY-->
+<!--            month-->
+<!--    </select>-->
+
     <select id="selectMonthlyEntryStatisticsByYear" parameterType="int" resultType="map">
-        SELECT
-            MONTH(acquisition_time) AS month,
-            COUNT(*) AS entryCount
-        FROM
-            museums_specimen_info
-        WHERE
-            YEAR(acquisition_time) = #{year} AND deleted = 0
-        GROUP BY
-            MONTH(acquisition_time)
-        ORDER BY
-            month
+        SELECT months.month, COALESCE(statistics.entryCount, 0) AS entryCount
+        FROM (
+                 -- 生成一个1到12的月份表
+                 SELECT 1 AS month
+                 UNION ALL SELECT 2
+                 UNION ALL SELECT 3
+                 UNION ALL SELECT 4
+                 UNION ALL SELECT 5
+                 UNION ALL SELECT 6
+                 UNION ALL SELECT 7
+                 UNION ALL SELECT 8
+                 UNION ALL SELECT 9
+                 UNION ALL SELECT 10
+                 UNION ALL SELECT 11
+                 UNION ALL SELECT 12
+             ) AS months
+                 LEFT JOIN (
+            SELECT MONTH(acquisition_time) AS month, COUNT(*) AS entryCount
+            FROM museums_specimen_info
+            WHERE YEAR(acquisition_time) = #{year} AND deleted = 0 AND acquisition_time IS NOT NULL AND tenant_id = 1
+            GROUP BY MONTH(acquisition_time)
+        ) AS statistics
+                           ON months.month = statistics.month
+        ORDER BY months.month;
     </select>
 
+
+
     <select id="selectAllSpecimenTypeStatistics" resultType="map">
         SELECT specimen_type, COUNT(*) as count
         FROM museums_specimen_info

+ 52 - 24
yudao-module-museums/yudao-module-museums-biz/src/main/resources/mapper/specimenoutbound/SpecimenOutboundMapper.xml

@@ -2,46 +2,74 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="cn.iocoder.yudao.module.museums.dal.mysql.specimenoutbound.SpecimenOutboundMapper">
 
+<!--    <select id="selectMonthlyOutboundStatistics" resultType="map">-->
+<!--        SELECT-->
+<!--            MONTH(outgoing_time) AS month,-->
+<!--            COUNT(DISTINCT TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(info_id, ',', numbers.n), ',', -1))) AS number-->
+<!--        FROM-->
+<!--            museums_specimen_outbound-->
+<!--            JOIN-->
+<!--            (SELECT 1 AS n UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION-->
+<!--            SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 10) AS numbers-->
+<!--        ON-->
+<!--            CHAR_LENGTH(info_id) - CHAR_LENGTH(REPLACE(info_id, ',', '')) >= numbers.n - 1-->
+<!--        WHERE-->
+<!--            (status = 3 OR status = 4)-->
+<!--          AND YEAR(outgoing_time) = #{year}-->
+<!--          AND deleted = 0-->
+<!--        GROUP BY-->
+<!--            MONTH(outgoing_time)-->
+<!--        ORDER BY-->
+<!--            month-->
+<!--    </select>-->
+
     <select id="selectMonthlyOutboundStatistics" resultType="map">
         SELECT
-            MONTH(outgoing_time) AS month,
-            COUNT(DISTINCT TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(info_id, ',', numbers.n), ',', -1))) AS number
+            months.month,
+            COALESCE(COUNT(DISTINCT TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(info_id, ',', numbers.n), ',', -1))), 0) AS number
         FROM
-            museums_specimen_outbound
-            JOIN
+            (SELECT 1 AS month UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION
+             SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 10 UNION
+             SELECT 11 UNION SELECT 12) AS months
+                LEFT JOIN museums_specimen_outbound
+                          ON MONTH(outgoing_time) = months.month
+            AND (status = 3 OR status = 4)
+            AND YEAR(outgoing_time) = #{year}
+            AND deleted = 0
+            LEFT JOIN
             (SELECT 1 AS n UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION
             SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 10) AS numbers
-        ON
-            CHAR_LENGTH(info_id) - CHAR_LENGTH(REPLACE(info_id, ',', '')) >= numbers.n - 1
-        WHERE
-            (status = 3 OR status = 4)
-          AND YEAR(outgoing_time) = #{year}
-          AND deleted = 0
+        ON CHAR_LENGTH(info_id) - CHAR_LENGTH(REPLACE(info_id, ',', '')) >= numbers.n - 1
         GROUP BY
-            MONTH(outgoing_time)
+            months.month
         ORDER BY
-            month
+            months.month
     </select>
 
+
     <select id="getMonthlyReturnStatistics" resultType="map">
         SELECT
-            MONTH(return_date) AS month,
-            COUNT(DISTINCT TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(info_id, ',', numbers.n), ',', -1))) AS number
+            months.month,
+            COALESCE(COUNT(DISTINCT TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(info_id, ',', numbers.n), ',', -1))), 0) AS number
         FROM
-            museums_specimen_outbound
-            JOIN
+            -- 创建一个包含1到12月份的虚拟表
+            (SELECT 1 AS month UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION
+             SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 10 UNION
+             SELECT 11 UNION SELECT 12) AS months
+                LEFT JOIN museums_specimen_outbound
+                          ON MONTH(return_date) = months.month
+            AND (status = 4)
+            AND YEAR(return_date) = #{year}
+            AND deleted = 0
+            LEFT JOIN
             (SELECT 1 AS n UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION
             SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 10) AS numbers
-        ON
-            CHAR_LENGTH(info_id) - CHAR_LENGTH(REPLACE(info_id, ',', '')) >= numbers.n - 1
-        WHERE
-            (status = 4)
-          AND YEAR(return_date) = #{year}
-          AND deleted = 0
+        ON CHAR_LENGTH(info_id) - CHAR_LENGTH(REPLACE(info_id, ',', '')) >= numbers.n - 1
         GROUP BY
-            MONTH(return_date)
+            months.month
         ORDER BY
-            month
+            months.month
     </select>
 
+
 </mapper>

+ 0 - 1
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/logger/vo/operatelog/OperateLogPageReqVO.java

@@ -35,5 +35,4 @@ public class OperateLogPageReqVO extends PageParam {
     @Schema(description = "开始时间", example = "[2022-07-01 00:00:00,2022-07-01 23:59:59]")
     @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
     private LocalDateTime[] createTime;
-
 }

+ 37 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/logger/vo/operatelog/OperateLogReqVO.java

@@ -0,0 +1,37 @@
+package cn.iocoder.yudao.module.system.controller.admin.logger.vo.operatelog;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 操作日志列表 Request VO")
+@Data
+public class OperateLogReqVO {
+
+    @Schema(description = "用户编号", example = "芋道")
+    private Long userId;
+
+    @Schema(description = "操作模块业务编号", example = "1")
+    private Long bizId;
+
+    @Schema(description = "操作模块,模拟匹配", example = "订单")
+    private String type;
+
+    @Schema(description = "操作名,模拟匹配", example = "创建订单")
+    private String subType;
+
+    @Schema(description = "操作明细,模拟匹配", example = "修改编号为 1 的用户信息")
+    private String action;
+
+    @Schema(description = "操作明细,模拟匹配", example = "修改编号为 1 的用户信息")
+    private List<String> extra;
+
+    @Schema(description = "开始时间", example = "[2022-07-01 00:00:00,2022-07-01 23:59:59]")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+}

+ 29 - 15
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/logger/OperateLogMapper.java

@@ -5,6 +5,7 @@ import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
 import cn.iocoder.yudao.module.system.api.logger.dto.OperateLogPageReqDTO;
 import cn.iocoder.yudao.module.system.controller.admin.logger.vo.operatelog.OperateLogPageReqVO;
+import cn.iocoder.yudao.module.system.controller.admin.logger.vo.operatelog.OperateLogReqVO;
 import cn.iocoder.yudao.module.system.dal.dataobject.logger.OperateLogDO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
@@ -14,19 +15,35 @@ import java.util.List;
 @Mapper
 public interface OperateLogMapper extends BaseMapperX<OperateLogDO> {
 
-    default PageResult<OperateLogDO> selectMuseumsPage(OperateLogPageReqVO pageReqDTO) {
-        String id = pageReqDTO.getExtra().get(0).toString();
-        return selectPage(pageReqDTO, new LambdaQueryWrapperX<OperateLogDO>()
-                .eqIfPresent(OperateLogDO::getUserId, pageReqDTO.getUserId())
-                .eqIfPresent(OperateLogDO::getBizId, pageReqDTO.getBizId())
-                .likeIfPresent(OperateLogDO::getType, pageReqDTO.getType())
-                .likeIfPresent(OperateLogDO::getSubType, pageReqDTO.getSubType())
-                .likeIfPresent(OperateLogDO::getAction, pageReqDTO.getAction())
-                .betweenIfPresent(OperateLogDO::getCreateTime, pageReqDTO.getCreateTime())
+//    default PageResult<OperateLogDO> selectMuseumsPage(OperateLogPageReqVO pageReqDTO) {
+//        String id = pageReqDTO.getExtra().get(0).toString();
+//        return selectPage(pageReqDTO, new LambdaQueryWrapperX<OperateLogDO>()
+//                .eqIfPresent(OperateLogDO::getUserId, pageReqDTO.getUserId())
+//                .eqIfPresent(OperateLogDO::getBizId, pageReqDTO.getBizId())
+//                .likeIfPresent(OperateLogDO::getType, pageReqDTO.getType())
+//                .likeIfPresent(OperateLogDO::getSubType, pageReqDTO.getSubType())
+//                .likeIfPresent(OperateLogDO::getAction, pageReqDTO.getAction())
+//                .betweenIfPresent(OperateLogDO::getCreateTime, pageReqDTO.getCreateTime())
+//                .likeIfPresent(OperateLogDO::getExtra, "[" + id + ", ")
+//                .or(qw->qw.like(OperateLogDO::getExtra, "["+ id + "]"))
+//                .or(qw->qw.like(OperateLogDO::getExtra, ", "+ id + ","))
+//                .or(qw->qw.like(OperateLogDO::getExtra, ", "+ id + "]"))
+//                .orderByDesc(OperateLogDO::getId));
+//    }
+
+    default List<OperateLogDO> selectMuseums(OperateLogReqVO reqVO) {
+        String id = reqVO.getExtra().get(0).toString();
+        return selectList(new LambdaQueryWrapperX<OperateLogDO>()
+                .eqIfPresent(OperateLogDO::getUserId, reqVO.getUserId())
+                .eqIfPresent(OperateLogDO::getBizId, reqVO.getBizId())
+                .likeIfPresent(OperateLogDO::getType, reqVO.getType())
+                .likeIfPresent(OperateLogDO::getSubType, reqVO.getSubType())
+                .likeIfPresent(OperateLogDO::getAction, reqVO.getAction())
+                .betweenIfPresent(OperateLogDO::getCreateTime, reqVO.getCreateTime())
                 .likeIfPresent(OperateLogDO::getExtra, "[" + id + ", ")
-                .or(qw->qw.like(OperateLogDO::getExtra, "["+ id + "]"))
-                .or(qw->qw.like(OperateLogDO::getExtra, ", "+ id + ","))
-                .or(qw->qw.like(OperateLogDO::getExtra, ", "+ id + "]"))
+                .or(qw -> qw.like(OperateLogDO::getExtra, "[" + id + "]"))
+                .or(qw -> qw.like(OperateLogDO::getExtra, ", " + id + ","))
+                .or(qw -> qw.like(OperateLogDO::getExtra, ", " + id + "]"))
                 .orderByDesc(OperateLogDO::getId));
     }
 
@@ -49,7 +66,4 @@ public interface OperateLogMapper extends BaseMapperX<OperateLogDO> {
                 .orderByDesc(OperateLogDO::getId));
     }
 
-
-
-
 }

+ 9 - 1
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/logger/OperateLogService.java

@@ -4,6 +4,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.module.system.api.logger.dto.OperateLogCreateReqDTO;
 import cn.iocoder.yudao.module.system.api.logger.dto.OperateLogPageReqDTO;
 import cn.iocoder.yudao.module.system.controller.admin.logger.vo.operatelog.OperateLogPageReqVO;
+import cn.iocoder.yudao.module.system.controller.admin.logger.vo.operatelog.OperateLogReqVO;
 import cn.iocoder.yudao.module.system.dal.dataobject.logger.OperateLogDO;
 
 import java.util.List;
@@ -38,11 +39,18 @@ public interface OperateLogService {
      */
     PageResult<OperateLogDO> getOperateLogPage(OperateLogPageReqDTO pageReqVO);
 
+//    /**
+//     * 根据标本编号和操作模块类型获取系统日志
+//     *
+//     * @return 系统日志列表
+//     */
+//    List<OperateLogDO> getLogsBySpecimenIdAndType(OperateLogPageReqVO pageReqDTO);
+
     /**
      * 根据标本编号和操作模块类型获取系统日志
      *
      * @return 系统日志列表
      */
-    List<OperateLogDO> getLogsBySpecimenIdAndType(OperateLogPageReqVO pageReqDTO);
+    List<OperateLogDO> getLogsBySpecimenIdAndType(OperateLogReqVO pageReqDTO);
 
 }

+ 9 - 2
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/logger/OperateLogServiceImpl.java

@@ -5,6 +5,7 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.module.system.api.logger.dto.OperateLogCreateReqDTO;
 import cn.iocoder.yudao.module.system.api.logger.dto.OperateLogPageReqDTO;
 import cn.iocoder.yudao.module.system.controller.admin.logger.vo.operatelog.OperateLogPageReqVO;
+import cn.iocoder.yudao.module.system.controller.admin.logger.vo.operatelog.OperateLogReqVO;
 import cn.iocoder.yudao.module.system.dal.dataobject.logger.OperateLogDO;
 import cn.iocoder.yudao.module.system.dal.mysql.logger.OperateLogMapper;
 import lombok.extern.slf4j.Slf4j;
@@ -43,8 +44,14 @@ public class OperateLogServiceImpl implements OperateLogService {
         return operateLogMapper.selectPage(pageReqDTO);
     }
 
+//    @Override
+//    public List<OperateLogDO> getLogsBySpecimenIdAndType(OperateLogPageReqVO pageReqDTO) {
+//        return operateLogMapper.selectMuseumsPage(pageReqDTO).getList();
+//    }
+
     @Override
-    public List<OperateLogDO> getLogsBySpecimenIdAndType(OperateLogPageReqVO pageReqDTO) {
-        return operateLogMapper.selectMuseumsPage(pageReqDTO).getList();
+    public List<OperateLogDO> getLogsBySpecimenIdAndType(OperateLogReqVO reqVO) {
+        // 调用自定义的查询方法,获取所有符合条件的日志
+        return operateLogMapper.selectMuseums(reqVO);  // 假设你有这个方法
     }
 }