Pārlūkot izejas kodu

出回库审批

hyy 5 mēneši atpakaļ
vecāks
revīzija
864dfa518c
25 mainītis faili ar 440 papildinājumiem un 1094 dzēšanām
  1. BIN
      .DS_Store
  2. 0 2
      yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/web/core/util/WebFrameworkUtils.java
  3. 4 0
      yudao-module-museums/yudao-module-museums-biz/pom.xml
  4. 19 21
      yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/controller/admin/specimeninfo/vo/SpecimenInfoPageReqVO.java
  5. 30 26
      yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/controller/admin/specimeninfo/vo/SpecimenInfoRespVO.java
  6. 12 14
      yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/controller/admin/specimeninfo/vo/SpecimenInfoSaveReqVO.java
  7. 46 5
      yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/controller/admin/specimenoutbound/SpecimenOutboundController.java
  8. 27 0
      yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/controller/admin/specimenoutbound/vo/SpecimenOutboundConfirmReqVO.java
  9. 18 14
      yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/controller/admin/specimenoutbound/vo/SpecimenOutboundPageReqVO.java
  10. 31 23
      yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/controller/admin/specimenoutbound/vo/SpecimenOutboundRespVO.java
  11. 19 20
      yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/controller/admin/specimenoutbound/vo/SpecimenOutboundSaveReqVO.java
  12. 29 18
      yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/dal/dataobject/specimeninfo/SpecimenInfoDO.java
  13. 22 13
      yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/dal/dataobject/specimenoutbound/SpecimenOutboundDO.java
  14. 5 5
      yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/dal/mysql/specimeninfo/SpecimenInfoMapper.java
  15. 5 4
      yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/dal/mysql/specimenoutbound/SpecimenOutboundMapper.java
  16. 1 0
      yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/service/specimeninfo/SpecimenInfoServiceImpl.java
  17. 38 7
      yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/service/specimenoutbound/SpecimenOutboundService.java
  18. 134 8
      yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/service/specimenoutbound/SpecimenOutboundServiceImpl.java
  19. 0 162
      yudao-module-museums/yudao-module-museums-biz/src/test/java/cn/iocoder/yudao/module/museums/service/museumsdocument/MuseumsDocumentServiceImplTest.java
  20. 0 150
      yudao-module-museums/yudao-module-museums-biz/src/test/java/cn/iocoder/yudao/module/museums/service/photogroup/PhotoGroupServiceImplTest.java
  21. 0 142
      yudao-module-museums/yudao-module-museums-biz/src/test/java/cn/iocoder/yudao/module/museums/service/photos/PhotosServiceImplTest.java
  22. 0 234
      yudao-module-museums/yudao-module-museums-biz/src/test/java/cn/iocoder/yudao/module/museums/service/specimeninfo/SpecimenInfoServiceImplTest.java
  23. 0 198
      yudao-module-museums/yudao-module-museums-biz/src/test/java/cn/iocoder/yudao/module/museums/service/specimenoutbound/SpecimenOutboundServiceImplTest.java
  24. 0 1
      yudao-module-museums/yudao-module-museums-biz/src/test/resources/clean.sql
  25. 0 27
      yudao-module-museums/yudao-module-museums-biz/src/test/resources/create_tables.sql

BIN
.DS_Store


+ 0 - 2
yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/web/core/util/WebFrameworkUtils.java

@@ -1,11 +1,9 @@
 package cn.iocoder.yudao.framework.web.core.util;
 
 import cn.hutool.core.util.NumberUtil;
-import cn.hutool.extra.servlet.ServletUtil;
 import cn.iocoder.yudao.framework.common.enums.TerminalEnum;
 import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.util.servlet.ServletUtils;
 import cn.iocoder.yudao.framework.web.config.WebProperties;
 import org.springframework.web.context.request.RequestAttributes;
 import org.springframework.web.context.request.RequestContextHolder;

+ 4 - 0
yudao-module-museums/yudao-module-museums-biz/pom.xml

@@ -51,6 +51,10 @@
             <groupId>cn.iocoder.boot</groupId>
             <artifactId>yudao-spring-boot-starter-excel</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.apache.velocity</groupId>
+            <artifactId>velocity-engine-core</artifactId>
+        </dependency>
     </dependencies>
 
 </project>

+ 19 - 21
yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/controller/admin/specimeninfo/vo/SpecimenInfoPageReqVO.java

@@ -1,8 +1,6 @@
 package cn.iocoder.yudao.module.museums.controller.admin.specimeninfo.vo;
 
 import lombok.*;
-
-import java.time.LocalDate;
 import java.util.*;
 import io.swagger.v3.oas.annotations.media.Schema;
 import cn.iocoder.yudao.framework.common.pojo.PageParam;
@@ -54,14 +52,6 @@ public class SpecimenInfoPageReqVO extends PageParam {
     @Schema(description = "国际命名", example = "王五")
     private String internationalName;
 
-    @Schema(description = "发现时间")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDate[] discoveryTime;
-
-    @Schema(description = "降落时间")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDate[] fallTime;
-
     @Schema(description = "保存类型(标本、光片、薄片模型及其他)", example = "1")
     private Integer preservationType;
 
@@ -77,10 +67,6 @@ public class SpecimenInfoPageReqVO extends PageParam {
     @Schema(description = "标本提供者(供应商、捐赠人、采集人)")
     private String provider;
 
-    @Schema(description = "入藏时间(购买、捐赠、采集时间)")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDate[] acquisitionTime;
-
     @Schema(description = "用途")
     private String purpose;
 
@@ -99,13 +85,6 @@ public class SpecimenInfoPageReqVO extends PageParam {
     @Schema(description = "图片路径")
     private String imagePath;
 
-    @Schema(description = "创建时间")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDate[] createTime;
-
-    @Schema(description = "注销原因", example = "不香")
-    private String deletedReason;
-
     @Schema(description = "入库操作员")
     private String operator;
 
@@ -113,4 +92,23 @@ public class SpecimenInfoPageReqVO extends PageParam {
     @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
     private LocalDateTime[] entryDate;
 
+    @Schema(description = "发现时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] discoveryTime;
+
+    @Schema(description = "降落时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] fallTime;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+    @Schema(description = "入藏时间(购买、捐赠、采集时间)")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] acquisitionTime;
+
+    @Schema(description = "注销原因", example = "不香")
+    private String deletedReason;
+
 }

+ 30 - 26
yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/controller/admin/specimeninfo/vo/SpecimenInfoRespVO.java

@@ -2,13 +2,13 @@ package cn.iocoder.yudao.module.museums.controller.admin.specimeninfo.vo;
 
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
-
-import java.time.LocalDate;
 import java.util.*;
 import java.math.BigDecimal;
 import org.springframework.format.annotation.DateTimeFormat;
 import java.time.LocalDateTime;
 import com.alibaba.excel.annotation.*;
+import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
+import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
 
 @Schema(description = "管理后台 - 标本管理 Response VO")
 @Data
@@ -20,7 +20,8 @@ public class SpecimenInfoRespVO {
     private Integer id;
 
     @Schema(description = "标本类型(矿物、岩石矿石、化石、陨石)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
-    @ExcelProperty("标本类型(矿物、岩石矿石、化石、陨石)")
+    @ExcelProperty(value = "标本类型(矿物、岩石矿石、化石、陨石)", converter = DictConvert.class)
+    @DictFormat("museums_specimen_info") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
     private Integer specimenType;
 
     @Schema(description = "标本编号", requiredMode = Schema.RequiredMode.REQUIRED)
@@ -67,16 +68,9 @@ public class SpecimenInfoRespVO {
     @ExcelProperty("国际命名")
     private String internationalName;
 
-    @Schema(description = "发现时间")
-    @ExcelProperty("发现时间")
-    private LocalDate discoveryTime;
-
-    @Schema(description = "降落时间")
-    @ExcelProperty("降落时间")
-    private LocalDate fallTime;
-
     @Schema(description = "保存类型(标本、光片、薄片模型及其他)", example = "1")
-    @ExcelProperty("保存类型(标本、光片、薄片模型及其他)")
+    @ExcelProperty(value = "保存类型(标本、光片、薄片模型及其他)", converter = DictConvert.class)
+    @DictFormat("museums_specimen_info") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
     private Integer preservationType;
 
     @Schema(description = "尺寸")
@@ -88,17 +82,14 @@ public class SpecimenInfoRespVO {
     private BigDecimal weight;
 
     @Schema(description = "来源(采购、捐赠、采集)")
-    @ExcelProperty("来源(采购、捐赠、采集)")
+    @ExcelProperty(value = "来源(采购、捐赠、采集)", converter = DictConvert.class)
+    @DictFormat("museums_specimen_info") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
     private Integer source;
 
     @Schema(description = "标本提供者(供应商、捐赠人、采集人)")
     @ExcelProperty("标本提供者(供应商、捐赠人、采集人)")
     private String provider;
 
-    @Schema(description = "入藏时间(购买、捐赠、采集时间)")
-    @ExcelProperty("入藏时间(购买、捐赠、采集时间)")
-    private LocalDate acquisitionTime;
-
     @Schema(description = "用途")
     @ExcelProperty("用途")
     private String purpose;
@@ -108,7 +99,8 @@ public class SpecimenInfoRespVO {
     private String description;
 
     @Schema(description = "馆藏状态(在馆、借出)", example = "2")
-    @ExcelProperty("馆藏状态(在馆、借出)")
+    @ExcelProperty(value = "馆藏状态(在馆、借出)", converter = DictConvert.class)
+    @DictFormat("museums_specimen_info") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
     private Integer collectionStatus;
 
     @Schema(description = "备注")
@@ -123,14 +115,6 @@ public class SpecimenInfoRespVO {
     @ExcelProperty("图片路径")
     private String imagePath;
 
-    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("创建时间")
-    private LocalDate createTime;
-
-    @Schema(description = "注销原因", example = "不香")
-    @ExcelProperty("注销原因")
-    private String deletedReason;
-
     @Schema(description = "入库操作员")
     @ExcelProperty("入库操作员")
     private String operator;
@@ -139,4 +123,24 @@ public class SpecimenInfoRespVO {
     @ExcelProperty("入库时间")
     private LocalDateTime entryDate;
 
+    @Schema(description = "发现时间")
+    @ExcelProperty("发现时间")
+    private LocalDateTime discoveryTime;
+
+    @Schema(description = "降落时间")
+    @ExcelProperty("降落时间")
+    private LocalDateTime fallTime;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+    @Schema(description = "入藏时间(购买、捐赠、采集时间)")
+    @ExcelProperty("入藏时间(购买、捐赠、采集时间)")
+    private LocalDateTime acquisitionTime;
+
+    @Schema(description = "注销原因", example = "不香")
+    @ExcelProperty("注销原因")
+    private String deletedReason;
+
 }

+ 12 - 14
yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/controller/admin/specimeninfo/vo/SpecimenInfoSaveReqVO.java

@@ -2,8 +2,6 @@ package cn.iocoder.yudao.module.museums.controller.admin.specimeninfo.vo;
 
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
-
-import java.time.LocalDate;
 import java.util.*;
 import javax.validation.constraints.*;
 import java.math.BigDecimal;
@@ -55,12 +53,6 @@ public class SpecimenInfoSaveReqVO {
     @Schema(description = "国际命名", example = "王五")
     private String internationalName;
 
-    @Schema(description = "发现时间")
-    private LocalDate discoveryTime;
-
-    @Schema(description = "降落时间")
-    private LocalDate fallTime;
-
     @Schema(description = "保存类型(标本、光片、薄片模型及其他)", example = "1")
     private Integer preservationType;
 
@@ -76,9 +68,6 @@ public class SpecimenInfoSaveReqVO {
     @Schema(description = "标本提供者(供应商、捐赠人、采集人)")
     private String provider;
 
-    @Schema(description = "入藏时间(购买、捐赠、采集时间)")
-    private LocalDate acquisitionTime;
-
     @Schema(description = "用途")
     private String purpose;
 
@@ -97,13 +86,22 @@ public class SpecimenInfoSaveReqVO {
     @Schema(description = "图片路径")
     private String imagePath;
 
-    @Schema(description = "注销原因", example = "不香")
-    private String deletedReason;
-
     @Schema(description = "入库操作员")
     private String operator;
 
     @Schema(description = "入库时间")
     private LocalDateTime entryDate;
 
+    @Schema(description = "发现时间")
+    private LocalDateTime discoveryTime;
+
+    @Schema(description = "降落时间")
+    private LocalDateTime fallTime;
+
+    @Schema(description = "入藏时间(购买、捐赠、采集时间)")
+    private LocalDateTime acquisitionTime;
+
+    @Schema(description = "注销原因", example = "不香")
+    private String deletedReason;
+
 }

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

@@ -11,6 +11,7 @@ import io.swagger.v3.oas.annotations.Operation;
 import javax.validation.constraints.*;
 import javax.validation.*;
 import javax.servlet.http.*;
+import java.time.LocalDateTime;
 import java.util.*;
 import java.io.IOException;
 
@@ -24,6 +25,7 @@ import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
 
 import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
 import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
+import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
 
 import cn.iocoder.yudao.module.museums.controller.admin.specimenoutbound.vo.*;
 import cn.iocoder.yudao.module.museums.dal.dataobject.specimenoutbound.SpecimenOutboundDO;
@@ -39,25 +41,64 @@ public class SpecimenOutboundController {
     private SpecimenOutboundService specimenOutboundService;
 
     @PostMapping("/create")
-    @Operation(summary = "创建标本出库回库信息")
+    @Operation(summary = "创建标本出库申请")
     @PreAuthorize("@ss.hasPermission('museums:specimen-outbound:create')")
-    public CommonResult<Integer> createSpecimenOutbound(@Valid @RequestBody SpecimenOutboundSaveReqVO createReqVO) {
+    public CommonResult<Long> createSpecimenOutbound(@Valid @RequestBody SpecimenOutboundSaveReqVO createReqVO) {
         return success(specimenOutboundService.createSpecimenOutbound(createReqVO));
     }
 
+    //用于回库表单填写(完成)
     @PutMapping("/update")
-    @Operation(summary = "更新标本出库回库信息")
+    @Operation(summary = "更新标本回库信息")
     @PreAuthorize("@ss.hasPermission('museums:specimen-outbound:update')")
     public CommonResult<Boolean> updateSpecimenOutbound(@Valid @RequestBody SpecimenOutboundSaveReqVO updateReqVO) {
         specimenOutboundService.updateSpecimenOutbound(updateReqVO);
         return success(true);
     }
 
+
+    @PostMapping("/approve")
+    @Operation(summary = "审批通过")
+    @PreAuthorize("@ss.hasPermission('museums:specimen-outbound:approve')")
+    public CommonResult<Void> approveSpecimenOutbound(@RequestParam("id") Long id) {
+        // 更新状态为审批通过,并插入当前时间作为审批时间
+        specimenOutboundService.updateStatus(id, 1, LocalDateTime.now(), null);
+        return success(null);
+    }
+
+    @PostMapping("/reject")
+    @Operation(summary = "审批驳回")
+    @PreAuthorize("@ss.hasPermission('museums:specimen-outbound:reject')")
+    public CommonResult<Void> rejectSpecimenOutbound(@RequestParam("id") Long id,
+                                                     @RequestParam("processInstanceId") String processInstanceId) {
+        // 更新状态为审批驳回,并插入当前时间作为审批时间
+        specimenOutboundService.updateStatus(id, 2, LocalDateTime.now(), processInstanceId);
+        return success(null);
+    }
+
+//    @GetMapping("/confirmOutbound")
+//    @Operation(summary = "确认标本出库")
+//    @PreAuthorize("@ss.hasPermission('museums:specimen-outbound:confirm')")
+//    public CommonResult<Boolean> confirmOutbound(@RequestParam("id")  Long id) {
+//        specimenOutboundService.confirmOutbound(id, getLoginUserId());
+//        return success(true);
+//    }
+
+
+    @PostMapping("/confirmOutbound")
+    @Operation(summary = "确认标本出库")
+    @PreAuthorize("@ss.hasPermission('museums:specimen-outbound:confirm')")
+    public CommonResult<Boolean> confirmOutbound(@Valid @RequestBody SpecimenOutboundConfirmReqVO req) {
+        specimenOutboundService.confirmOutbound(req.getId(), getLoginUserId());
+        return success(true);
+    }
+
+
     @DeleteMapping("/delete")
     @Operation(summary = "删除标本出库回库信息")
     @Parameter(name = "id", description = "编号", required = true)
     @PreAuthorize("@ss.hasPermission('museums:specimen-outbound:delete')")
-    public CommonResult<Boolean> deleteSpecimenOutbound(@RequestParam("id") Integer id) {
+    public CommonResult<Boolean> deleteSpecimenOutbound(@RequestParam("id") Long id) {
         specimenOutboundService.deleteSpecimenOutbound(id);
         return success(true);
     }
@@ -66,7 +107,7 @@ public class SpecimenOutboundController {
     @Operation(summary = "获得标本出库回库信息")
     @Parameter(name = "id", description = "编号", required = true, example = "1024")
     @PreAuthorize("@ss.hasPermission('museums:specimen-outbound:query')")
-    public CommonResult<SpecimenOutboundRespVO> getSpecimenOutbound(@RequestParam("id") Integer id) {
+    public CommonResult<SpecimenOutboundRespVO> getSpecimenOutbound(@RequestParam("id") Long id) {
         SpecimenOutboundDO specimenOutbound = specimenOutboundService.getSpecimenOutbound(id);
         return success(BeanUtils.toBean(specimenOutbound, SpecimenOutboundRespVO.class));
     }

+ 27 - 0
yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/controller/admin/specimenoutbound/vo/SpecimenOutboundConfirmReqVO.java

@@ -0,0 +1,27 @@
+package cn.iocoder.yudao.module.museums.controller.admin.specimenoutbound.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+
+import java.time.LocalDateTime;
+import lombok.*;
+
+@Schema(description = "管理后台 - 标本出库申请 Request VO")
+@Data
+public class SpecimenOutboundConfirmReqVO {
+
+    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
+    private Long id;
+
+    @Schema(description = "审批状态", example = "2")
+    private Integer status;
+
+    @Schema(description = "出库员", requiredMode = Schema.RequiredMode.REQUIRED)
+    private Long operator;
+
+    @Schema(description = "出库时间")
+    private LocalDateTime outgoingTime;
+
+//    @Schema(description = "标本状态(已出库、已回库、出库审批中)", example = "2")
+//    private Integer sampleStatus;
+
+}

+ 18 - 14
yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/controller/admin/specimenoutbound/vo/SpecimenOutboundPageReqVO.java

@@ -43,16 +43,26 @@ public class SpecimenOutboundPageReqVO extends PageParam {
     @Schema(description = "备注信息")
     private String remarks;
 
-    @Schema(description = "流程实例的编号", example = "19175")
-    private String processInstanceId;
-
-    @Schema(description = "出库员")
-    private String operator;
-
     @Schema(description = "出库时间")
     @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
     private LocalDateTime[] outgoingTime;
 
+    @Schema(description = "标本情况")
+    private String specimenCondition;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+    @Schema(description = "标本状态(已出库、已回库、出库审批中)", example = "2")
+    private Integer sampleStatus;
+
+    @Schema(description = "驳回原因", example = "27504")
+    private String processInstanceId;
+
+    @Schema(description = "出库员")
+    private Long operator;
+
     @Schema(description = "退还人")
     private String returner;
 
@@ -63,14 +73,8 @@ public class SpecimenOutboundPageReqVO extends PageParam {
     @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
     private LocalDateTime[] returnDate;
 
-    @Schema(description = "标本情况")
-    private String specimenCondition;
-
-    @Schema(description = "创建时间")
+    @Schema(description = "审批时间")
     @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] createTime;
-
-    @Schema(description = "标本状态(已出库、已回库、出库审批中)", example = "2")
-    private Integer sampleStatus;
+    private LocalDateTime[] approvalTime;
 
 }

+ 31 - 23
yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/controller/admin/specimenoutbound/vo/SpecimenOutboundRespVO.java

@@ -6,6 +6,8 @@ import java.util.*;
 import org.springframework.format.annotation.DateTimeFormat;
 import java.time.LocalDateTime;
 import com.alibaba.excel.annotation.*;
+import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
+import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
 
 @Schema(description = "管理后台 - 标本出库回库信息 Response VO")
 @Data
@@ -14,7 +16,7 @@ public class SpecimenOutboundRespVO {
 
     @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
     @ExcelProperty("主键")
-    private Integer id;
+    private Long id;
 
     @Schema(description = "关联到总表中的标本ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
     @ExcelProperty("关联到总表中的标本ID")
@@ -45,37 +47,18 @@ public class SpecimenOutboundRespVO {
     private String attachments;
 
     @Schema(description = "审批状态", example = "2")
-    @ExcelProperty("审批状态")
+    @ExcelProperty(value = "审批状态", converter = DictConvert.class)
+    @DictFormat("museums_specimen_info") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
     private Integer status;
 
     @Schema(description = "备注信息")
     @ExcelProperty("备注信息")
     private String remarks;
 
-    @Schema(description = "流程实例的编号", example = "19175")
-    @ExcelProperty("流程实例的编号")
-    private String processInstanceId;
-
-    @Schema(description = "出库员", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("出库员")
-    private String operator;
-
     @Schema(description = "出库时间")
     @ExcelProperty("出库时间")
     private LocalDateTime outgoingTime;
 
-    @Schema(description = "退还人", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("退还人")
-    private String returner;
-
-    @Schema(description = "点收人", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("点收人")
-    private String receiver;
-
-    @Schema(description = "退还日期", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("退还日期")
-    private LocalDateTime returnDate;
-
     @Schema(description = "标本情况")
     @ExcelProperty("标本情况")
     private String specimenCondition;
@@ -85,7 +68,32 @@ public class SpecimenOutboundRespVO {
     private LocalDateTime createTime;
 
     @Schema(description = "标本状态(已出库、已回库、出库审批中)", example = "2")
-    @ExcelProperty("标本状态(已出库、已回库、出库审批中)")
+    @ExcelProperty(value = "标本状态(已出库、已回库、出库审批中)", converter = DictConvert.class)
+    @DictFormat("museums_specimen_info") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
     private Integer sampleStatus;
 
+    @Schema(description = "驳回原因", example = "27504")
+    @ExcelProperty("驳回原因")
+    private String processInstanceId;
+
+    @Schema(description = "出库员")
+    @ExcelProperty("出库员")
+    private Long operator;
+
+    @Schema(description = "退还人")
+    @ExcelProperty("退还人")
+    private String returner;
+
+    @Schema(description = "点收人")
+    @ExcelProperty("点收人")
+    private String receiver;
+
+    @Schema(description = "退还日期")
+    @ExcelProperty("退还日期")
+    private LocalDateTime returnDate;
+
+    @Schema(description = "审批时间")
+    @ExcelProperty("审批时间")
+    private LocalDateTime approvalTime;
+
 }

+ 19 - 20
yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/controller/admin/specimenoutbound/vo/SpecimenOutboundSaveReqVO.java

@@ -12,7 +12,7 @@ import java.time.LocalDateTime;
 public class SpecimenOutboundSaveReqVO {
 
     @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
-    private Integer id;
+    private Long id;
 
     @Schema(description = "关联到总表中的标本ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
     @NotEmpty(message = "关联到总表中的标本ID不能为空")
@@ -30,7 +30,7 @@ public class SpecimenOutboundSaveReqVO {
     @NotEmpty(message = "申请人或申请单位不能为空")
     private String applicantName;
 
-    @Schema(description = "申请日期")
+    @Schema(description = "申请时间")
     private LocalDateTime applicationDate;
 
     @Schema(description = "申请出库的用途", requiredMode = Schema.RequiredMode.REQUIRED)
@@ -46,32 +46,31 @@ public class SpecimenOutboundSaveReqVO {
     @Schema(description = "备注信息")
     private String remarks;
 
-    @Schema(description = "流程实例的编号", example = "19175")
-    private String processInstanceId;
-
-    @Schema(description = "出库员", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotEmpty(message = "出库员不能为空")
-    private String operator;
-
     @Schema(description = "出库时间")
     private LocalDateTime outgoingTime;
 
-    @Schema(description = "退还人", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotEmpty(message = "退还人不能为空")
+    @Schema(description = "标本情况")
+    private String specimenCondition;
+
+    @Schema(description = "标本状态(已出库、已回库、出库审批中)", example = "2")
+    private Integer sampleStatus;
+
+    @Schema(description = "驳回原因", example = "反对")
+    private String processInstanceId;
+
+    @Schema(description = "出库员")
+    private Long operator;
+
+    @Schema(description = "退还人")
     private String returner;
 
-    @Schema(description = "点收人", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotEmpty(message = "点收人不能为空")
+    @Schema(description = "点收人")
     private String receiver;
 
-    @Schema(description = "退还日期", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotNull(message = "退还日期不能为空")
+    @Schema(description = "退还日期")
     private LocalDateTime returnDate;
 
-    @Schema(description = "标本情况")
-    private String specimenCondition;
-
-    @Schema(description = "标本状态(已出库、已回库、出库审批中)", example = "2")
-    private Integer sampleStatus;
+    @Schema(description = "审批时间")
+    private LocalDateTime approvalTime;
 
 }

+ 29 - 18
yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/dal/dataobject/specimeninfo/SpecimenInfoDO.java

@@ -1,11 +1,14 @@
 package cn.iocoder.yudao.module.museums.dal.dataobject.specimeninfo;
 
 import lombok.*;
-
-import java.time.LocalDate;
 import java.util.*;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
 import com.baomidou.mybatisplus.annotation.*;
 import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
 
@@ -31,6 +34,8 @@ public class SpecimenInfoDO extends BaseDO {
     private Integer id;
     /**
      * 标本类型(矿物、岩石矿石、化石、陨石)
+     *
+     * 枚举 {@link TODO museums_specimen_info 对应的类}
      */
     private Integer specimenType;
     /**
@@ -77,16 +82,10 @@ public class SpecimenInfoDO extends BaseDO {
      * 国际命名
      */
     private String internationalName;
-    /**
-     * 发现时间
-     */
-    private LocalDate discoveryTime;
-    /**
-     * 降落时间
-     */
-    private LocalDate fallTime;
     /**
      * 保存类型(标本、光片、薄片模型及其他)
+     *
+     * 枚举 {@link TODO museums_specimen_info 对应的类}
      */
     private Integer preservationType;
     /**
@@ -99,16 +98,14 @@ public class SpecimenInfoDO extends BaseDO {
     private BigDecimal weight;
     /**
      * 来源(采购、捐赠、采集)
+     *
+     * 枚举 {@link TODO museums_specimen_info 对应的类}
      */
     private Integer source;
     /**
      * 标本提供者(供应商、捐赠人、采集人)
      */
     private String provider;
-    /**
-     * 入藏时间(购买、捐赠、采集时间)
-     */
-    private LocalDate acquisitionTime;
     /**
      * 用途
      */
@@ -119,6 +116,8 @@ public class SpecimenInfoDO extends BaseDO {
     private String description;
     /**
      * 馆藏状态(在馆、借出)
+     *
+     * 枚举 {@link TODO museums_specimen_info 对应的类}
      */
     private Integer collectionStatus;
     /**
@@ -133,10 +132,6 @@ public class SpecimenInfoDO extends BaseDO {
      * 图片路径
      */
     private String imagePath;
-    /**
-     * 注销原因
-     */
-    private String deletedReason;
     /**
      * 入库操作员
      */
@@ -145,5 +140,21 @@ public class SpecimenInfoDO extends BaseDO {
      * 入库时间
      */
     private LocalDateTime entryDate;
+    /**
+     * 发现时间
+     */
+    private LocalDateTime discoveryTime;
+    /**
+     * 降落时间
+     */
+    private LocalDateTime fallTime;
+    /**
+     * 入藏时间(购买、捐赠、采集时间)
+     */
+    private LocalDateTime acquisitionTime;
+    /**
+     * 注销原因
+     */
+    private String deletedReason;
 
 }

+ 22 - 13
yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/dal/dataobject/specimenoutbound/SpecimenOutboundDO.java

@@ -7,6 +7,7 @@ import java.time.LocalDateTime;
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
+import java.time.LocalDateTime;
 import com.baomidou.mybatisplus.annotation.*;
 import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
 
@@ -29,7 +30,7 @@ public class SpecimenOutboundDO extends BaseDO {
      * 主键
      */
     @TableId
-    private Integer id;
+    private Long id;
     /**
      * 关联到总表中的标本ID
      */
@@ -60,6 +61,8 @@ public class SpecimenOutboundDO extends BaseDO {
     private String attachments;
     /**
      * 审批状态
+     *
+     * 枚举 {@link TODO museums_specimen_info 对应的类}
      */
     private Integer status;
     /**
@@ -67,17 +70,27 @@ public class SpecimenOutboundDO extends BaseDO {
      */
     private String remarks;
     /**
-     * 流程实例的编号
+     * 出库时间
      */
-    private String processInstanceId;
+    private LocalDateTime outgoingTime;
     /**
-     * 出库员
+     * 标本情况
      */
-    private String operator;
+    private String specimenCondition;
     /**
-     * 出库时间
+     * 标本状态(已出库、已回库、出库审批中)
+     *
+     * 枚举 {@link TODO museums_specimen_info 对应的类}
      */
-    private LocalDateTime outgoingTime;
+    private Integer sampleStatus;
+    /**
+     * 驳回原因
+     */
+    private String processInstanceId;
+    /**
+     * 出库员
+     */
+    private Long operator;
     /**
      * 退还人
      */
@@ -91,12 +104,8 @@ public class SpecimenOutboundDO extends BaseDO {
      */
     private LocalDateTime returnDate;
     /**
-     * 标本情况
+     * 审批时间
      */
-    private String specimenCondition;
-    /**
-     * 标本状态(已出库、已回库、出库审批中)
-     */
-    private Integer sampleStatus;
+    private LocalDateTime approvalTime;
 
 }

+ 5 - 5
yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/dal/mysql/specimeninfo/SpecimenInfoMapper.java

@@ -31,24 +31,24 @@ public interface SpecimenInfoMapper extends BaseMapperX<SpecimenInfoDO> {
                 .eqIfPresent(SpecimenInfoDO::getPreservedLayer, reqVO.getPreservedLayer())
                 .eqIfPresent(SpecimenInfoDO::getMeteoriteType, reqVO.getMeteoriteType())
                 .likeIfPresent(SpecimenInfoDO::getInternationalName, reqVO.getInternationalName())
-                .betweenIfPresent(SpecimenInfoDO::getDiscoveryTime, reqVO.getDiscoveryTime())
-                .betweenIfPresent(SpecimenInfoDO::getFallTime, reqVO.getFallTime())
                 .eqIfPresent(SpecimenInfoDO::getPreservationType, reqVO.getPreservationType())
                 .eqIfPresent(SpecimenInfoDO::getSize, reqVO.getSize())
                 .eqIfPresent(SpecimenInfoDO::getWeight, reqVO.getWeight())
                 .eqIfPresent(SpecimenInfoDO::getSource, reqVO.getSource())
                 .eqIfPresent(SpecimenInfoDO::getProvider, reqVO.getProvider())
-                .betweenIfPresent(SpecimenInfoDO::getAcquisitionTime, reqVO.getAcquisitionTime())
                 .eqIfPresent(SpecimenInfoDO::getPurpose, reqVO.getPurpose())
                 .eqIfPresent(SpecimenInfoDO::getDescription, reqVO.getDescription())
                 .eqIfPresent(SpecimenInfoDO::getCollectionStatus, reqVO.getCollectionStatus())
                 .eqIfPresent(SpecimenInfoDO::getNotes, reqVO.getNotes())
                 .likeIfPresent(SpecimenInfoDO::getImageName, reqVO.getImageName())
                 .eqIfPresent(SpecimenInfoDO::getImagePath, reqVO.getImagePath())
-                .betweenIfPresent(SpecimenInfoDO::getCreateTime, reqVO.getCreateTime())
-                .eqIfPresent(SpecimenInfoDO::getDeletedReason, reqVO.getDeletedReason())
                 .eqIfPresent(SpecimenInfoDO::getOperator, reqVO.getOperator())
                 .betweenIfPresent(SpecimenInfoDO::getEntryDate, reqVO.getEntryDate())
+                .betweenIfPresent(SpecimenInfoDO::getDiscoveryTime, reqVO.getDiscoveryTime())
+                .betweenIfPresent(SpecimenInfoDO::getFallTime, reqVO.getFallTime())
+                .betweenIfPresent(SpecimenInfoDO::getCreateTime, reqVO.getCreateTime())
+                .betweenIfPresent(SpecimenInfoDO::getAcquisitionTime, reqVO.getAcquisitionTime())
+                .eqIfPresent(SpecimenInfoDO::getDeletedReason, reqVO.getDeletedReason())
                 .orderByDesc(SpecimenInfoDO::getId));
     }
 

+ 5 - 4
yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/dal/mysql/specimenoutbound/SpecimenOutboundMapper.java

@@ -28,15 +28,16 @@ public interface SpecimenOutboundMapper extends BaseMapperX<SpecimenOutboundDO>
                 .eqIfPresent(SpecimenOutboundDO::getAttachments, reqVO.getAttachments())
                 .eqIfPresent(SpecimenOutboundDO::getStatus, reqVO.getStatus())
                 .eqIfPresent(SpecimenOutboundDO::getRemarks, reqVO.getRemarks())
+                .betweenIfPresent(SpecimenOutboundDO::getOutgoingTime, reqVO.getOutgoingTime())
+                .eqIfPresent(SpecimenOutboundDO::getSpecimenCondition, reqVO.getSpecimenCondition())
+                .betweenIfPresent(SpecimenOutboundDO::getCreateTime, reqVO.getCreateTime())
+                .eqIfPresent(SpecimenOutboundDO::getSampleStatus, reqVO.getSampleStatus())
                 .eqIfPresent(SpecimenOutboundDO::getProcessInstanceId, reqVO.getProcessInstanceId())
                 .eqIfPresent(SpecimenOutboundDO::getOperator, reqVO.getOperator())
-                .betweenIfPresent(SpecimenOutboundDO::getOutgoingTime, reqVO.getOutgoingTime())
                 .eqIfPresent(SpecimenOutboundDO::getReturner, reqVO.getReturner())
                 .eqIfPresent(SpecimenOutboundDO::getReceiver, reqVO.getReceiver())
                 .betweenIfPresent(SpecimenOutboundDO::getReturnDate, reqVO.getReturnDate())
-                .eqIfPresent(SpecimenOutboundDO::getSpecimenCondition, reqVO.getSpecimenCondition())
-                .betweenIfPresent(SpecimenOutboundDO::getCreateTime, reqVO.getCreateTime())
-                .eqIfPresent(SpecimenOutboundDO::getSampleStatus, reqVO.getSampleStatus())
+                .betweenIfPresent(SpecimenOutboundDO::getApprovalTime, reqVO.getApprovalTime())
                 .orderByDesc(SpecimenOutboundDO::getId));
     }
 

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

@@ -16,6 +16,7 @@ import cn.iocoder.yudao.module.museums.dal.mysql.specimeninfo.SpecimenInfoMapper
 
 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static cn.iocoder.yudao.module.museums.enums.ErrorCodeConstants.*;
+
 /**
  * 标本管理 Service 实现类
  *

+ 38 - 7
yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/service/specimenoutbound/SpecimenOutboundService.java

@@ -1,11 +1,11 @@
 package cn.iocoder.yudao.module.museums.service.specimenoutbound;
 
-import java.util.*;
 import javax.validation.*;
 import cn.iocoder.yudao.module.museums.controller.admin.specimenoutbound.vo.*;
 import cn.iocoder.yudao.module.museums.dal.dataobject.specimenoutbound.SpecimenOutboundDO;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
+
+import java.time.LocalDateTime;
 
 /**
  * 标本出库回库信息 Service 接口
@@ -15,26 +15,46 @@ import cn.iocoder.yudao.framework.common.pojo.PageParam;
 public interface SpecimenOutboundService {
 
     /**
-     * 创建标本出库回库信息
+     * 创建标本出库申请
      *
      * @param createReqVO 创建信息
      * @return 编号
      */
-    Integer createSpecimenOutbound(@Valid SpecimenOutboundSaveReqVO createReqVO);
+    Long createSpecimenOutbound(@Valid SpecimenOutboundSaveReqVO createReqVO);
+
+//    /**
+//     * 创建标本出库回库信息
+//     *
+//     * @param returnReqVO 创建信息
+//     */
+//    void approvalSpecimenOutbound(@Valid SpecimenOutboundConfirmReqVO returnReqVO);
 
     /**
-     * 更新标本出库回库信息
+     * 标本回库
      *
      * @param updateReqVO 更新信息
      */
     void updateSpecimenOutbound(@Valid SpecimenOutboundSaveReqVO updateReqVO);
 
+//    //确认出库
+//    void confirmOutbound(Long id, String operator);
+
+//    Object confirmOutbound(SpecimenOutboundSaveReqVO confirmReqVO);
+
+    /**
+     * 确认标本出库
+     *
+     * @param id 编号
+     * @param operator 出库员ID
+     */
+    void confirmOutbound(Long id, Long operator);
+
     /**
      * 删除标本出库回库信息
      *
      * @param id 编号
      */
-    void deleteSpecimenOutbound(Integer id);
+    void deleteSpecimenOutbound(Long id);
 
     /**
      * 获得标本出库回库信息
@@ -42,7 +62,7 @@ public interface SpecimenOutboundService {
      * @param id 编号
      * @return 标本出库回库信息
      */
-    SpecimenOutboundDO getSpecimenOutbound(Integer id);
+    SpecimenOutboundDO getSpecimenOutbound(Long id);
 
     /**
      * 获得标本出库回库信息分页
@@ -52,4 +72,15 @@ public interface SpecimenOutboundService {
      */
     PageResult<SpecimenOutboundDO> getSpecimenOutboundPage(SpecimenOutboundPageReqVO pageReqVO);
 
+    /**
+     * 更新标本审批状态
+     *
+     * @param id              编号
+     * @param status          状态(2:审批通过,3:审批驳回)
+     * @param approvalTime    审批时间
+     * @param processInstanceId 驳回原因
+     */
+    void updateStatus(Long id, Integer status, LocalDateTime approvalTime, String processInstanceId);
+
+
 }

+ 134 - 8
yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/service/specimenoutbound/SpecimenOutboundServiceImpl.java

@@ -2,18 +2,18 @@ package cn.iocoder.yudao.module.museums.service.specimenoutbound;
 
 import org.springframework.stereotype.Service;
 import javax.annotation.Resource;
+
 import org.springframework.validation.annotation.Validated;
-import org.springframework.transaction.annotation.Transactional;
 
-import java.util.*;
 import cn.iocoder.yudao.module.museums.controller.admin.specimenoutbound.vo.*;
 import cn.iocoder.yudao.module.museums.dal.dataobject.specimenoutbound.SpecimenOutboundDO;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 
 import cn.iocoder.yudao.module.museums.dal.mysql.specimenoutbound.SpecimenOutboundMapper;
 
+import java.time.LocalDateTime;
+
 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static cn.iocoder.yudao.module.museums.enums.ErrorCodeConstants.*;
 
@@ -29,8 +29,9 @@ public class SpecimenOutboundServiceImpl implements SpecimenOutboundService {
     @Resource
     private SpecimenOutboundMapper specimenOutboundMapper;
 
+    //创建出库申请
     @Override
-    public Integer createSpecimenOutbound(SpecimenOutboundSaveReqVO createReqVO) {
+    public Long createSpecimenOutbound(SpecimenOutboundSaveReqVO createReqVO) {
         // 插入
         SpecimenOutboundDO specimenOutbound = BeanUtils.toBean(createReqVO, SpecimenOutboundDO.class);
         specimenOutboundMapper.insert(specimenOutbound);
@@ -38,6 +39,16 @@ public class SpecimenOutboundServiceImpl implements SpecimenOutboundService {
         return specimenOutbound.getId();
     }
 
+//    @Override
+//    public Integer approvalSpecimenOutbound(SpecimenOutboundConfirmReqVO approvalReqVO) {
+//        // 插入
+//        SpecimenOutboundDO specimenOutbound = BeanUtils.toBean(approvalReqVO, SpecimenOutboundDO.class);
+//        specimenOutboundMapper.insert(specimenOutbound);
+//        // 返回
+//        return specimenOutbound.getId();
+//    }
+
+    //用来填写回库表单,为方便添加数据,现在先用上面这段
     @Override
     public void updateSpecimenOutbound(SpecimenOutboundSaveReqVO updateReqVO) {
         // 校验存在
@@ -46,23 +57,138 @@ public class SpecimenOutboundServiceImpl implements SpecimenOutboundService {
         SpecimenOutboundDO updateObj = BeanUtils.toBean(updateReqVO, SpecimenOutboundDO.class);
         specimenOutboundMapper.updateById(updateObj);
     }
+    //测试成功
+//    @Override
+//    public void updateSpecimenOutbound(SpecimenOutboundSaveReqVO updateReqVO) {
+//        // 校验存在
+//        validateSpecimenOutboundExists(updateReqVO.getId());
+//
+//        // 获取当前标本的状态
+//        SpecimenOutboundDO existingSpecimen = specimenOutboundMapper.selectById(updateReqVO.getId());
+//
+//        // 判断状态是否为已出库(3)
+//        if (existingSpecimen == null || existingSpecimen.getStatus() != 3) {
+//            throw new IllegalStateException("只能更新状态为已出库的标本回库单");
+//        }
+//
+//        // 更新标本状态为已回库(4)
+//        existingSpecimen.setStatus(4); // 修改状态为已回库
+//
+//        // 设置回库时间为当前时间
+//        existingSpecimen.setReturnDate(LocalDateTime.now());
+//
+//        // 更新数据库
+//        specimenOutboundMapper.updateById(existingSpecimen);
+//    }
+
+    //待定
+//    @Override
+//    public void approvalSpecimenOutbound(SpecimenOutboundConfirmReqVO approvalReqVO) {
+//        // 校验存在
+//        validateSpecimenOutboundExists(approvalReqVO.getId());
+//        // 更新
+//        SpecimenOutboundDO approvalObj = BeanUtils.toBean(approvalReqVO, SpecimenOutboundDO.class);
+//        specimenOutboundMapper.updateById(approvalObj);
+//    }
+
+
+    //出库审批
+    @Override
+    public void updateStatus(Long id, Integer status, LocalDateTime approvalTime, String processInstanceId) {
+        SpecimenOutboundDO specimenOutbound = specimenOutboundMapper.selectById(id);
+//        if (specimenOutbound == null) {
+//            throw new EntityNotFoundException("标本出库记录未找到");
+//        }
+        // 获取当前标本的状态
+        SpecimenOutboundDO existingSpecimen = specimenOutboundMapper.selectById(id);
+
+        // 判断状态是否为审批中状态(1)
+        if (existingSpecimen == null || existingSpecimen.getStatus() != 0) {
+            throw new IllegalStateException("只有状态为审批中的标本才能进行审批");
+        }
+
+        // 更新状态
+        specimenOutbound.setStatus(status);
+
+        if (status == 1) { // 审批通过
+            specimenOutbound.setApprovalTime(approvalTime); // 设置当前审批时间
+        } else if (status == 2) { // 审批驳回
+            specimenOutbound.setProcessInstanceId(processInstanceId);
+            specimenOutbound.setApprovalTime(approvalTime); // 设置当前驳回时间
+        }
+
+        specimenOutboundMapper.updateById(specimenOutbound);
+    }
+
+    //确认出库
+//    @Override
+//    public void confirmOutbound(Long id, String operator) {
+//        // 校验存在
+//        validateSpecimenOutboundExists((long) Math.toIntExact(id));
+//
+//        // 获取当前标本的状态
+//        SpecimenOutboundDO existingSpecimen = specimenOutboundMapper.selectById(id);
+//
+//        // 判断状态是否为审批通过(3)
+//        if (existingSpecimen == null || existingSpecimen.getStatus() != 3) {
+//            throw new IllegalStateException("只能确认状态为审批通过的标本出库单");
+//        }
+//
+//        // 更新状态为已出库(5)
+//        existingSpecimen.setStatus(5);  // 设置为已出库
+//        existingSpecimen.setOperator(Long.valueOf(operator));  // 保存出库员ID
+//        existingSpecimen.setOutgoingTime(LocalDateTime.now());  // 设置出库时间为当前时间
+//
+//        // 更新数据库
+//        specimenOutboundMapper.updateById(existingSpecimen);
+//    }
+
+//    @Override
+//    public Object confirmOutbound(SpecimenOutboundSaveReqVO confirmReqVO) {
+//        return null;
+//    }
+
+    //确认出库
+    @Override
+    public void confirmOutbound(Long id, Long operator) {
+        // 校验存在
+        validateSpecimenOutboundExists(id);
+
+        // 获取当前标本的状态
+        SpecimenOutboundDO existingSpecimen = specimenOutboundMapper.selectById(id);
+
+        // 判断状态是否为审批通过(1)
+        if (existingSpecimen == null || existingSpecimen.getStatus() != 1) {
+            throw new IllegalStateException("只有状态为审批通过的标本才能确认出库");
+        }
+
+        // 更新标本状态为已出库(3)
+        existingSpecimen.setStatus(3);
+
+        // 设置出库员ID和出库时间
+        existingSpecimen.setOperator(operator);
+        existingSpecimen.setOutgoingTime(LocalDateTime.now());
+
+        // 更新数据库
+        specimenOutboundMapper.updateById(existingSpecimen);
+    }
 
     @Override
-    public void deleteSpecimenOutbound(Integer id) {
+    public void deleteSpecimenOutbound(Long id) {
         // 校验存在
         validateSpecimenOutboundExists(id);
         // 删除
         specimenOutboundMapper.deleteById(id);
     }
 
-    private void validateSpecimenOutboundExists(Integer id) {
+    private void validateSpecimenOutboundExists(Long id) {
         if (specimenOutboundMapper.selectById(id) == null) {
             throw exception(SPECIMEN_OUTBOUND_NOT_EXISTS);
         }
     }
 
     @Override
-    public SpecimenOutboundDO getSpecimenOutbound(Integer id) {
+    public SpecimenOutboundDO getSpecimenOutbound(Long id) {
         return specimenOutboundMapper.selectById(id);
     }
 
@@ -71,4 +197,4 @@ public class SpecimenOutboundServiceImpl implements SpecimenOutboundService {
         return specimenOutboundMapper.selectPage(pageReqVO);
     }
 
-}
+}

+ 0 - 162
yudao-module-museums/yudao-module-museums-biz/src/test/java/cn/iocoder/yudao/module/museums/service/museumsdocument/MuseumsDocumentServiceImplTest.java

@@ -1,162 +0,0 @@
-package cn.iocoder.yudao.module.museums.service.museumsdocument;
-
-import org.junit.jupiter.api.Disabled;
-import org.junit.jupiter.api.Test;
-import org.springframework.boot.test.mock.mockito.MockBean;
-
-import javax.annotation.Resource;
-
-import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
-
-import cn.iocoder.yudao.module.museums.controller.admin.museumsdocument.vo.*;
-import cn.iocoder.yudao.module.museums.dal.dataobject.museumsdocument.MuseumsDocumentDO;
-import cn.iocoder.yudao.module.museums.dal.mysql.museumsdocument.MuseumsDocumentMapper;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-
-import javax.annotation.Resource;
-import org.springframework.context.annotation.Import;
-import java.util.*;
-import java.time.LocalDateTime;
-
-import static cn.hutool.core.util.RandomUtil.*;
-import static cn.iocoder.yudao.module.museums.enums.ErrorCodeConstants.*;
-import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.*;
-import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*;
-import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.*;
-import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.*;
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.*;
-import static org.junit.jupiter.api.Assertions.*;
-import static org.mockito.Mockito.*;
-
-/**
- * {@link MuseumsDocumentServiceImpl} 的单元测试类
- *
- * @author 芋道源码
- */
-@Import(MuseumsDocumentServiceImpl.class)
-public class MuseumsDocumentServiceImplTest extends BaseDbUnitTest {
-
-    @Resource
-    private MuseumsDocumentServiceImpl documentService;
-
-    @Resource
-    private MuseumsDocumentMapper documentMapper;
-
-    @Test
-    public void testCreateDocument_success() {
-        // 准备参数
-        MuseumsDocumentSaveReqVO createReqVO = randomPojo(MuseumsDocumentSaveReqVO.class).setId(null);
-
-        // 调用
-        Integer documentId = documentService.createDocument(createReqVO);
-        // 断言
-        assertNotNull(documentId);
-        // 校验记录的属性是否正确
-        MuseumsDocumentDO document = documentMapper.selectById(documentId);
-        assertPojoEquals(createReqVO, document, "id");
-    }
-
-    @Test
-    public void testUpdateDocument_success() {
-        // mock 数据
-        MuseumsDocumentDO dbDocument = randomPojo(MuseumsDocumentDO.class);
-        documentMapper.insert(dbDocument);// @Sql: 先插入出一条存在的数据
-        // 准备参数
-        MuseumsDocumentSaveReqVO updateReqVO = randomPojo(MuseumsDocumentSaveReqVO.class, o -> {
-            o.setId(dbDocument.getId()); // 设置更新的 ID
-        });
-
-        // 调用
-        documentService.updateDocument(updateReqVO);
-        // 校验是否更新正确
-        MuseumsDocumentDO document = documentMapper.selectById(updateReqVO.getId()); // 获取最新的
-        assertPojoEquals(updateReqVO, document);
-    }
-
-    @Test
-    public void testUpdateDocument_notExists() {
-        // 准备参数
-        MuseumsDocumentSaveReqVO updateReqVO = randomPojo(MuseumsDocumentSaveReqVO.class);
-
-        // 调用, 并断言异常
-        assertServiceException(() -> documentService.updateDocument(updateReqVO), DOCUMENT_NOT_EXISTS);
-    }
-
-    @Test
-    public void testDeleteDocument_success() {
-        // mock 数据
-        MuseumsDocumentDO dbDocument = randomPojo(MuseumsDocumentDO.class);
-        documentMapper.insert(dbDocument);// @Sql: 先插入出一条存在的数据
-        // 准备参数
-        Integer id = dbDocument.getId();
-
-        // 调用
-        documentService.deleteDocument(id);
-       // 校验数据不存在了
-       assertNull(documentMapper.selectById(id));
-    }
-
-    @Test
-    public void testDeleteDocument_notExists() {
-        // 准备参数
-        Integer id = randomIntegerId();
-
-        // 调用, 并断言异常
-        assertServiceException(() -> documentService.deleteDocument(id), DOCUMENT_NOT_EXISTS);
-    }
-
-    @Test
-    @Disabled  // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
-    public void testGetDocumentPage() {
-       // mock 数据
-       MuseumsDocumentDO dbDocument = randomPojo(MuseumsDocumentDO.class, o -> { // 等会查询到
-           o.setFileName(null);
-           o.setConfigId(null);
-           o.setPath(null);
-           o.setUrl(null);
-           o.setFileSize(null);
-           o.setFileType(null);
-           o.setUploadDate(null);
-           o.setUploadedBy(null);
-           o.setCreateTime(null);
-       });
-       documentMapper.insert(dbDocument);
-       // 测试 fileName 不匹配
-       documentMapper.insert(cloneIgnoreId(dbDocument, o -> o.setFileName(null)));
-       // 测试 configId 不匹配
-       documentMapper.insert(cloneIgnoreId(dbDocument, o -> o.setConfigId(null)));
-       // 测试 path 不匹配
-       documentMapper.insert(cloneIgnoreId(dbDocument, o -> o.setPath(null)));
-       // 测试 url 不匹配
-       documentMapper.insert(cloneIgnoreId(dbDocument, o -> o.setUrl(null)));
-       // 测试 fileSize 不匹配
-       documentMapper.insert(cloneIgnoreId(dbDocument, o -> o.setFileSize(null)));
-       // 测试 fileType 不匹配
-       documentMapper.insert(cloneIgnoreId(dbDocument, o -> o.setFileType(null)));
-       // 测试 uploadDate 不匹配
-       documentMapper.insert(cloneIgnoreId(dbDocument, o -> o.setUploadDate(null)));
-       // 测试 uploadedBy 不匹配
-       documentMapper.insert(cloneIgnoreId(dbDocument, o -> o.setUploadedBy(null)));
-       // 测试 createTime 不匹配
-       documentMapper.insert(cloneIgnoreId(dbDocument, o -> o.setCreateTime(null)));
-       // 准备参数
-       MuseumsDocumentPageReqVO reqVO = new MuseumsDocumentPageReqVO();
-       reqVO.setFileName(null);
-       reqVO.setConfigId(null);
-       reqVO.setPath(null);
-       reqVO.setUrl(null);
-       reqVO.setFileSize(null);
-       reqVO.setFileType(null);
-       reqVO.setUploadDate(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
-       reqVO.setUploadedBy(null);
-       reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
-
-       // 调用
-       PageResult<MuseumsDocumentDO> pageResult = documentService.getDocumentPage(reqVO);
-       // 断言
-       assertEquals(1, pageResult.getTotal());
-       assertEquals(1, pageResult.getList().size());
-       assertPojoEquals(dbDocument, pageResult.getList().get(0));
-    }
-
-}

+ 0 - 150
yudao-module-museums/yudao-module-museums-biz/src/test/java/cn/iocoder/yudao/module/museums/service/photogroup/PhotoGroupServiceImplTest.java

@@ -1,150 +0,0 @@
-package cn.iocoder.yudao.module.museums.service.photogroup;
-
-import org.junit.jupiter.api.Disabled;
-import org.junit.jupiter.api.Test;
-import org.springframework.boot.test.mock.mockito.MockBean;
-
-import javax.annotation.Resource;
-
-import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
-
-import cn.iocoder.yudao.module.museums.controller.admin.photogroup.vo.*;
-import cn.iocoder.yudao.module.museums.dal.dataobject.photogroup.PhotoGroupDO;
-import cn.iocoder.yudao.module.museums.dal.mysql.photogroup.PhotoGroupMapper;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-
-import javax.annotation.Resource;
-import org.springframework.context.annotation.Import;
-import java.util.*;
-import java.time.LocalDateTime;
-
-import static cn.hutool.core.util.RandomUtil.*;
-import static cn.iocoder.yudao.module.museums.enums.ErrorCodeConstants.*;
-import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.*;
-import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*;
-import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.*;
-import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.*;
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.*;
-import static org.junit.jupiter.api.Assertions.*;
-import static org.mockito.Mockito.*;
-
-/**
- * {@link PhotoGroupServiceImpl} 的单元测试类
- *
- * @author qpw
- */
-@Import(PhotoGroupServiceImpl.class)
-public class PhotoGroupServiceImplTest extends BaseDbUnitTest {
-
-    @Resource
-    private PhotoGroupServiceImpl photoGroupService;
-
-    @Resource
-    private PhotoGroupMapper photoGroupMapper;
-
-    @Test
-    public void testCreatePhotoGroup_success() {
-        // 准备参数
-        PhotoGroupSaveReqVO createReqVO = randomPojo(PhotoGroupSaveReqVO.class).setId(null);
-
-        // 调用
-        Integer photoGroupId = photoGroupService.createPhotoGroup(createReqVO);
-        // 断言
-        assertNotNull(photoGroupId);
-        // 校验记录的属性是否正确
-        PhotoGroupDO photoGroup = photoGroupMapper.selectById(photoGroupId);
-        assertPojoEquals(createReqVO, photoGroup, "id");
-    }
-
-    @Test
-    public void testUpdatePhotoGroup_success() {
-        // mock 数据
-        PhotoGroupDO dbPhotoGroup = randomPojo(PhotoGroupDO.class);
-        photoGroupMapper.insert(dbPhotoGroup);// @Sql: 先插入出一条存在的数据
-        // 准备参数
-        PhotoGroupSaveReqVO updateReqVO = randomPojo(PhotoGroupSaveReqVO.class, o -> {
-            o.setId(dbPhotoGroup.getId()); // 设置更新的 ID
-        });
-
-        // 调用
-        photoGroupService.updatePhotoGroup(updateReqVO);
-        // 校验是否更新正确
-        PhotoGroupDO photoGroup = photoGroupMapper.selectById(updateReqVO.getId()); // 获取最新的
-        assertPojoEquals(updateReqVO, photoGroup);
-    }
-
-    @Test
-    public void testUpdatePhotoGroup_notExists() {
-        // 准备参数
-        PhotoGroupSaveReqVO updateReqVO = randomPojo(PhotoGroupSaveReqVO.class);
-
-        // 调用, 并断言异常
-        assertServiceException(() -> photoGroupService.updatePhotoGroup(updateReqVO), PHOTO_GROUP_NOT_EXISTS);
-    }
-
-    @Test
-    public void testDeletePhotoGroup_success() {
-        // mock 数据
-        PhotoGroupDO dbPhotoGroup = randomPojo(PhotoGroupDO.class);
-        photoGroupMapper.insert(dbPhotoGroup);// @Sql: 先插入出一条存在的数据
-        // 准备参数
-        Integer id = dbPhotoGroup.getId();
-
-        // 调用
-        photoGroupService.deletePhotoGroup(id);
-       // 校验数据不存在了
-       assertNull(photoGroupMapper.selectById(id));
-    }
-
-    @Test
-    public void testDeletePhotoGroup_notExists() {
-        // 准备参数
-        Integer id = randomIntegerId();
-
-        // 调用, 并断言异常
-        assertServiceException(() -> photoGroupService.deletePhotoGroup(id), PHOTO_GROUP_NOT_EXISTS);
-    }
-
-    @Test
-    @Disabled  // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
-    public void testGetPhotoGroupPage() {
-       // mock 数据
-       PhotoGroupDO dbPhotoGroup = randomPojo(PhotoGroupDO.class, o -> { // 等会查询到
-           o.setGroupName(null);
-           o.setGroupDate(null);
-           o.setGroupDescription(null);
-           o.setCreatedAt(null);
-           o.setCreateTime(null);
-           o.setUploadPhotos(null);
-       });
-       photoGroupMapper.insert(dbPhotoGroup);
-       // 测试 groupName 不匹配
-       photoGroupMapper.insert(cloneIgnoreId(dbPhotoGroup, o -> o.setGroupName(null)));
-       // 测试 groupDate 不匹配
-       photoGroupMapper.insert(cloneIgnoreId(dbPhotoGroup, o -> o.setGroupDate(null)));
-       // 测试 groupDescription 不匹配
-       photoGroupMapper.insert(cloneIgnoreId(dbPhotoGroup, o -> o.setGroupDescription(null)));
-       // 测试 createdAt 不匹配
-       photoGroupMapper.insert(cloneIgnoreId(dbPhotoGroup, o -> o.setCreatedAt(null)));
-       // 测试 createTime 不匹配
-       photoGroupMapper.insert(cloneIgnoreId(dbPhotoGroup, o -> o.setCreateTime(null)));
-       // 测试 uploadPhotos 不匹配
-       photoGroupMapper.insert(cloneIgnoreId(dbPhotoGroup, o -> o.setUploadPhotos(null)));
-       // 准备参数
-       PhotoGroupPageReqVO reqVO = new PhotoGroupPageReqVO();
-       reqVO.setGroupName(null);
-       reqVO.setGroupDate(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
-       reqVO.setGroupDescription(null);
-       reqVO.setCreatedAt(null);
-       reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
-       reqVO.setUploadPhotos(null);
-
-       // 调用
-       PageResult<PhotoGroupDO> pageResult = photoGroupService.getPhotoGroupPage(reqVO);
-       // 断言
-       assertEquals(1, pageResult.getTotal());
-       assertEquals(1, pageResult.getList().size());
-       assertPojoEquals(dbPhotoGroup, pageResult.getList().get(0));
-    }
-
-}

+ 0 - 142
yudao-module-museums/yudao-module-museums-biz/src/test/java/cn/iocoder/yudao/module/museums/service/photos/PhotosServiceImplTest.java

@@ -1,142 +0,0 @@
-package cn.iocoder.yudao.module.museums.service.photos;
-
-import org.junit.jupiter.api.Disabled;
-import org.junit.jupiter.api.Test;
-import org.springframework.boot.test.mock.mockito.MockBean;
-
-import javax.annotation.Resource;
-
-import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
-
-import cn.iocoder.yudao.module.museums.controller.admin.photos.vo.*;
-import cn.iocoder.yudao.module.museums.dal.dataobject.photos.PhotosDO;
-import cn.iocoder.yudao.module.museums.dal.mysql.photos.PhotosMapper;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-
-import javax.annotation.Resource;
-import org.springframework.context.annotation.Import;
-import java.util.*;
-import java.time.LocalDateTime;
-
-import static cn.hutool.core.util.RandomUtil.*;
-import static cn.iocoder.yudao.module.museums.enums.ErrorCodeConstants.*;
-import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.*;
-import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*;
-import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.*;
-import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.*;
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.*;
-import static org.junit.jupiter.api.Assertions.*;
-import static org.mockito.Mockito.*;
-
-/**
- * {@link PhotosServiceImpl} 的单元测试类
- *
- * @author qpw
- */
-@Import(PhotosServiceImpl.class)
-public class PhotosServiceImplTest extends BaseDbUnitTest {
-
-    @Resource
-    private PhotosServiceImpl photosService;
-
-    @Resource
-    private PhotosMapper photosMapper;
-
-    @Test
-    public void testCreatePhotos_success() {
-        // 准备参数
-        PhotosSaveReqVO createReqVO = randomPojo(PhotosSaveReqVO.class).setId(null);
-
-        // 调用
-        Integer photosId = photosService.createPhotos(createReqVO);
-        // 断言
-        assertNotNull(photosId);
-        // 校验记录的属性是否正确
-        PhotosDO photos = photosMapper.selectById(photosId);
-        assertPojoEquals(createReqVO, photos, "id");
-    }
-
-    @Test
-    public void testUpdatePhotos_success() {
-        // mock 数据
-        PhotosDO dbPhotos = randomPojo(PhotosDO.class);
-        photosMapper.insert(dbPhotos);// @Sql: 先插入出一条存在的数据
-        // 准备参数
-        PhotosSaveReqVO updateReqVO = randomPojo(PhotosSaveReqVO.class, o -> {
-            o.setId(dbPhotos.getId()); // 设置更新的 ID
-        });
-
-        // 调用
-        photosService.updatePhotos(updateReqVO);
-        // 校验是否更新正确
-        PhotosDO photos = photosMapper.selectById(updateReqVO.getId()); // 获取最新的
-        assertPojoEquals(updateReqVO, photos);
-    }
-
-    @Test
-    public void testUpdatePhotos_notExists() {
-        // 准备参数
-        PhotosSaveReqVO updateReqVO = randomPojo(PhotosSaveReqVO.class);
-
-        // 调用, 并断言异常
-        assertServiceException(() -> photosService.updatePhotos(updateReqVO), PHOTOS_NOT_EXISTS);
-    }
-
-    @Test
-    public void testDeletePhotos_success() {
-        // mock 数据
-        PhotosDO dbPhotos = randomPojo(PhotosDO.class);
-        photosMapper.insert(dbPhotos);// @Sql: 先插入出一条存在的数据
-        // 准备参数
-        Integer id = dbPhotos.getId();
-
-        // 调用
-        photosService.deletePhotos(id);
-       // 校验数据不存在了
-       assertNull(photosMapper.selectById(id));
-    }
-
-    @Test
-    public void testDeletePhotos_notExists() {
-        // 准备参数
-        Integer id = randomIntegerId();
-
-        // 调用, 并断言异常
-        assertServiceException(() -> photosService.deletePhotos(id), PHOTOS_NOT_EXISTS);
-    }
-
-    @Test
-    @Disabled  // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
-    public void testGetPhotosPage() {
-       // mock 数据
-       PhotosDO dbPhotos = randomPojo(PhotosDO.class, o -> { // 等会查询到
-           o.setGroupId(null);
-           o.setPhotoUrl(null);
-           o.setCreatedAt(null);
-           o.setCreateTime(null);
-       });
-       photosMapper.insert(dbPhotos);
-       // 测试 groupId 不匹配
-       photosMapper.insert(cloneIgnoreId(dbPhotos, o -> o.setGroupId(null)));
-       // 测试 photoUrl 不匹配
-       photosMapper.insert(cloneIgnoreId(dbPhotos, o -> o.setPhotoUrl(null)));
-       // 测试 createdAt 不匹配
-       photosMapper.insert(cloneIgnoreId(dbPhotos, o -> o.setCreatedAt(null)));
-       // 测试 createTime 不匹配
-       photosMapper.insert(cloneIgnoreId(dbPhotos, o -> o.setCreateTime(null)));
-       // 准备参数
-       PhotosPageReqVO reqVO = new PhotosPageReqVO();
-       reqVO.setGroupId(null);
-       reqVO.setPhotoUrl(null);
-       reqVO.setCreatedAt(null);
-       reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
-
-       // 调用
-       PageResult<PhotosDO> pageResult = photosService.getPhotosPage(reqVO);
-       // 断言
-       assertEquals(1, pageResult.getTotal());
-       assertEquals(1, pageResult.getList().size());
-       assertPojoEquals(dbPhotos, pageResult.getList().get(0));
-    }
-
-}

+ 0 - 234
yudao-module-museums/yudao-module-museums-biz/src/test/java/cn/iocoder/yudao/module/museums/service/specimeninfo/SpecimenInfoServiceImplTest.java

@@ -1,234 +0,0 @@
-//package cn.iocoder.yudao.module.museums.service.specimeninfo;
-//
-//import org.junit.jupiter.api.Disabled;
-//import org.junit.jupiter.api.Test;
-//
-//import cn.iocoder.yudao.module.museums.controller.admin.specimeninfo.vo.*;
-//import cn.iocoder.yudao.module.museums.dal.dataobject.specimeninfo.SpecimenInfoDO;
-//import cn.iocoder.yudao.module.museums.dal.mysql.specimeninfo.SpecimenInfoMapper;
-//import cn.iocoder.yudao.framework.common.pojo.PageResult;
-//
-//import javax.annotation.Resource;
-//import org.springframework.context.annotation.Import;
-//
-//import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.*;
-//import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.*;
-//import static cn.iocoder.yudao.framework.common.util.date.DateUtils.*;
-//import static org.junit.jupiter.api.Assertions.*;
-//
-///**
-// * {@link SpecimenInfoServiceImpl} 的单元测试类
-// *
-// * @author 普伟
-// */
-//@Import(SpecimenInfoServiceImpl.class)
-//public class SpecimenInfoServiceImplTest extends BaseDbUnitTest {
-//
-//    @Resource
-//    private SpecimenInfoServiceImpl specimenInfoService;
-//
-//    @Resource
-//    private SpecimenInfoMapper specimenInfoMapper;
-//
-//    @Test
-//    public void testCreateSpecimenInfo_success() {
-//        // 准备参数
-//        SpecimenInfoSaveReqVO createReqVO = randomPojo(SpecimenInfoSaveReqVO.class).setId(null);
-//
-//        // 调用
-//        Integer specimenInfoId = specimenInfoService.createSpecimenInfo(createReqVO);
-//        // 断言
-//        assertNotNull(specimenInfoId);
-//        // 校验记录的属性是否正确
-//        SpecimenInfoDO specimenInfo = specimenInfoMapper.selectById(specimenInfoId);
-//        assertPojoEquals(createReqVO, specimenInfo, "id");
-//    }
-//
-//    @Test
-//    public void testUpdateSpecimenInfo_success() {
-//        // mock 数据
-//        SpecimenInfoDO dbSpecimenInfo = randomPojo(SpecimenInfoDO.class);
-//        specimenInfoMapper.insert(dbSpecimenInfo);// @Sql: 先插入出一条存在的数据
-//        // 准备参数
-//        SpecimenInfoSaveReqVO updateReqVO = randomPojo(SpecimenInfoSaveReqVO.class, o -> {
-//            o.setId(dbSpecimenInfo.getId()); // 设置更新的 ID
-//        });
-//
-//        // 调用
-//        specimenInfoService.updateSpecimenInfo(updateReqVO);
-//        // 校验是否更新正确
-//        SpecimenInfoDO specimenInfo = specimenInfoMapper.selectById(updateReqVO.getId()); // 获取最新的
-//        assertPojoEquals(updateReqVO, specimenInfo);
-//    }
-//
-//    @Test
-//    public void testUpdateSpecimenInfo_notExists() {
-//        // 准备参数
-//        SpecimenInfoSaveReqVO updateReqVO = randomPojo(SpecimenInfoSaveReqVO.class);
-//
-//        // 调用, 并断言异常
-//        assertServiceException(() -> specimenInfoService.updateSpecimenInfo(updateReqVO), SPECIMEN_INFO_NOT_EXISTS);
-//    }
-//
-//    @Test
-//    public void testDeleteSpecimenInfo_success() {
-//        // mock 数据
-//        SpecimenInfoDO dbSpecimenInfo = randomPojo(SpecimenInfoDO.class);
-//        specimenInfoMapper.insert(dbSpecimenInfo);// @Sql: 先插入出一条存在的数据
-//        // 准备参数
-//        Integer id = dbSpecimenInfo.getId();
-//
-//        // 调用
-//        specimenInfoService.deleteSpecimenInfo(id);
-//       // 校验数据不存在了
-//       assertNull(specimenInfoMapper.selectById(id));
-//    }
-//
-//    @Test
-//    public void testDeleteSpecimenInfo_notExists() {
-//        // 准备参数
-//        Integer id = randomIntegerId();
-//
-//        // 调用, 并断言异常
-//        assertServiceException(() -> specimenInfoService.deleteSpecimenInfo(id), SPECIMEN_INFO_NOT_EXISTS);
-//    }
-//
-//    @Test
-//    @Disabled  // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
-//    public void testGetSpecimenInfoPage() {
-//       // mock 数据
-//       SpecimenInfoDO dbSpecimenInfo = randomPojo(SpecimenInfoDO.class, o -> { // 等会查询到
-//           o.setSpecimenType(null);
-//           o.setSpecimenNumber(null);
-//           o.setAssetNumber(null);
-//           o.setStorageLocation(null);
-//           o.setChineseName(null);
-//           o.setEnglishName(null);
-//           o.setComposition(null);
-//           o.setOrigin(null);
-//           o.setEra(null);
-//           o.setPreservedLayer(null);
-//           o.setMeteoriteType(null);
-//           o.setInternationalName(null);
-//           o.setDiscoveryTime(null);
-//           o.setFallTime(null);
-//           o.setPreservationType(null);
-//           o.setSize(null);
-//           o.setWeight(null);
-//           o.setSource(null);
-//           o.setProvider(null);
-//           o.setAcquisitionTime(null);
-//           o.setPurpose(null);
-//           o.setDescription(null);
-//           o.setCollectionStatus(null);
-//           o.setNotes(null);
-//           o.setImageName(null);
-//           o.setImagePath(null);
-//           o.setCreateTime(null);
-//           o.setDeletedReason(null);
-//           o.setOperator(null);
-//           o.setEntryDate(null);
-//       });
-//       specimenInfoMapper.insert(dbSpecimenInfo);
-//       // 测试 specimenType 不匹配
-//       specimenInfoMapper.insert(cloneIgnoreId(dbSpecimenInfo, o -> o.setSpecimenType(null)));
-//       // 测试 specimenNumber 不匹配
-//       specimenInfoMapper.insert(cloneIgnoreId(dbSpecimenInfo, o -> o.setSpecimenNumber(null)));
-//       // 测试 assetNumber 不匹配
-//       specimenInfoMapper.insert(cloneIgnoreId(dbSpecimenInfo, o -> o.setAssetNumber(null)));
-//       // 测试 storageLocation 不匹配
-//       specimenInfoMapper.insert(cloneIgnoreId(dbSpecimenInfo, o -> o.setStorageLocation(null)));
-//       // 测试 chineseName 不匹配
-//       specimenInfoMapper.insert(cloneIgnoreId(dbSpecimenInfo, o -> o.setChineseName(null)));
-//       // 测试 englishName 不匹配
-//       specimenInfoMapper.insert(cloneIgnoreId(dbSpecimenInfo, o -> o.setEnglishName(null)));
-//       // 测试 composition 不匹配
-//       specimenInfoMapper.insert(cloneIgnoreId(dbSpecimenInfo, o -> o.setComposition(null)));
-//       // 测试 origin 不匹配
-//       specimenInfoMapper.insert(cloneIgnoreId(dbSpecimenInfo, o -> o.setOrigin(null)));
-//       // 测试 era 不匹配
-//       specimenInfoMapper.insert(cloneIgnoreId(dbSpecimenInfo, o -> o.setEra(null)));
-//       // 测试 preservedLayer 不匹配
-//       specimenInfoMapper.insert(cloneIgnoreId(dbSpecimenInfo, o -> o.setPreservedLayer(null)));
-//       // 测试 meteoriteType 不匹配
-//       specimenInfoMapper.insert(cloneIgnoreId(dbSpecimenInfo, o -> o.setMeteoriteType(null)));
-//       // 测试 internationalName 不匹配
-//       specimenInfoMapper.insert(cloneIgnoreId(dbSpecimenInfo, o -> o.setInternationalName(null)));
-//       // 测试 discoveryTime 不匹配
-//       specimenInfoMapper.insert(cloneIgnoreId(dbSpecimenInfo, o -> o.setDiscoveryTime(null)));
-//       // 测试 fallTime 不匹配
-//       specimenInfoMapper.insert(cloneIgnoreId(dbSpecimenInfo, o -> o.setFallTime(null)));
-//       // 测试 preservationType 不匹配
-//       specimenInfoMapper.insert(cloneIgnoreId(dbSpecimenInfo, o -> o.setPreservationType(null)));
-//       // 测试 size 不匹配
-//       specimenInfoMapper.insert(cloneIgnoreId(dbSpecimenInfo, o -> o.setSize(null)));
-//       // 测试 weight 不匹配
-//       specimenInfoMapper.insert(cloneIgnoreId(dbSpecimenInfo, o -> o.setWeight(null)));
-//       // 测试 source 不匹配
-//       specimenInfoMapper.insert(cloneIgnoreId(dbSpecimenInfo, o -> o.setSource(null)));
-//       // 测试 provider 不匹配
-//       specimenInfoMapper.insert(cloneIgnoreId(dbSpecimenInfo, o -> o.setProvider(null)));
-//       // 测试 acquisitionTime 不匹配
-//       specimenInfoMapper.insert(cloneIgnoreId(dbSpecimenInfo, o -> o.setAcquisitionTime(null)));
-//       // 测试 purpose 不匹配
-//       specimenInfoMapper.insert(cloneIgnoreId(dbSpecimenInfo, o -> o.setPurpose(null)));
-//       // 测试 description 不匹配
-//       specimenInfoMapper.insert(cloneIgnoreId(dbSpecimenInfo, o -> o.setDescription(null)));
-//       // 测试 collectionStatus 不匹配
-//       specimenInfoMapper.insert(cloneIgnoreId(dbSpecimenInfo, o -> o.setCollectionStatus(null)));
-//       // 测试 notes 不匹配
-//       specimenInfoMapper.insert(cloneIgnoreId(dbSpecimenInfo, o -> o.setNotes(null)));
-//       // 测试 imageName 不匹配
-//       specimenInfoMapper.insert(cloneIgnoreId(dbSpecimenInfo, o -> o.setImageName(null)));
-//       // 测试 imagePath 不匹配
-//       specimenInfoMapper.insert(cloneIgnoreId(dbSpecimenInfo, o -> o.setImagePath(null)));
-//       // 测试 createTime 不匹配
-//       specimenInfoMapper.insert(cloneIgnoreId(dbSpecimenInfo, o -> o.setCreateTime(null)));
-//       // 测试 deletedReason 不匹配
-//       specimenInfoMapper.insert(cloneIgnoreId(dbSpecimenInfo, o -> o.setDeletedReason(null)));
-//       // 测试 operator 不匹配
-//       specimenInfoMapper.insert(cloneIgnoreId(dbSpecimenInfo, o -> o.setOperator(null)));
-//       // 测试 entryDate 不匹配
-//       specimenInfoMapper.insert(cloneIgnoreId(dbSpecimenInfo, o -> o.setEntryDate(null)));
-//       // 准备参数
-//       SpecimenInfoPageReqVO reqVO = new SpecimenInfoPageReqVO();
-//       reqVO.setSpecimenType(null);
-//       reqVO.setSpecimenNumber(null);
-//       reqVO.setAssetNumber(null);
-//       reqVO.setStorageLocation(null);
-//       reqVO.setChineseName(null);
-//       reqVO.setEnglishName(null);
-//       reqVO.setComposition(null);
-//       reqVO.setOrigin(null);
-//       reqVO.setEra(null);
-//       reqVO.setPreservedLayer(null);
-//       reqVO.setMeteoriteType(null);
-//       reqVO.setInternationalName(null);
-//       reqVO.setDiscoveryTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
-//       reqVO.setFallTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
-//       reqVO.setPreservationType(null);
-//       reqVO.setSize(null);
-//       reqVO.setWeight(null);
-//       reqVO.setSource(null);
-//       reqVO.setProvider(null);
-//       reqVO.setAcquisitionTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
-//       reqVO.setPurpose(null);
-//       reqVO.setDescription(null);
-//       reqVO.setCollectionStatus(null);
-//       reqVO.setNotes(null);
-//       reqVO.setImageName(null);
-//       reqVO.setImagePath(null);
-//       reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
-//       reqVO.setDeletedReason(null);
-//       reqVO.setOperator(null);
-//       reqVO.setEntryDate(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
-//
-//       // 调用
-//       PageResult<SpecimenInfoDO> pageResult = specimenInfoService.getSpecimenInfoPage(reqVO);
-//       // 断言
-//       assertEquals(1, pageResult.getTotal());
-//       assertEquals(1, pageResult.getList().size());
-//       assertPojoEquals(dbSpecimenInfo, pageResult.getList().get(0));
-//    }
-//
-//}

+ 0 - 198
yudao-module-museums/yudao-module-museums-biz/src/test/java/cn/iocoder/yudao/module/museums/service/specimenoutbound/SpecimenOutboundServiceImplTest.java

@@ -1,198 +0,0 @@
-//package cn.iocoder.yudao.module.museums.service.specimenoutbound;
-//
-//import org.junit.jupiter.api.Disabled;
-//import org.junit.jupiter.api.Test;
-//import org.springframework.boot.test.mock.mockito.MockBean;
-//
-//import javax.annotation.Resource;
-//
-//import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
-//
-//import cn.iocoder.yudao.module.museums.controller.admin.specimenoutbound.vo.*;
-//import cn.iocoder.yudao.module.museums.dal.dataobject.specimenoutbound.SpecimenOutboundDO;
-//import cn.iocoder.yudao.module.museums.dal.mysql.specimenoutbound.SpecimenOutboundMapper;
-//import cn.iocoder.yudao.framework.common.pojo.PageResult;
-//
-//import javax.annotation.Resource;
-//import org.springframework.context.annotation.Import;
-//import java.util.*;
-//import java.time.LocalDateTime;
-//
-//import static cn.hutool.core.util.RandomUtil.*;
-//import static cn.iocoder.yudao.module.museums.enums.ErrorCodeConstants.*;
-//import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.*;
-//import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*;
-//import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.*;
-//import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.*;
-//import static cn.iocoder.yudao.framework.common.util.date.DateUtils.*;
-//import static org.junit.jupiter.api.Assertions.*;
-//import static org.mockito.Mockito.*;
-//
-///**
-// * {@link SpecimenOutboundServiceImpl} 的单元测试类
-// *
-// * @author qpw
-// */
-//@Import(SpecimenOutboundServiceImpl.class)
-//public class SpecimenOutboundServiceImplTest extends BaseDbUnitTest {
-//
-//    @Resource
-//    private SpecimenOutboundServiceImpl specimenOutboundService;
-//
-//    @Resource
-//    private SpecimenOutboundMapper specimenOutboundMapper;
-//
-//    @Test
-//    public void testCreateSpecimenOutbound_success() {
-//        // 准备参数
-//        SpecimenOutboundSaveReqVO createReqVO = randomPojo(SpecimenOutboundSaveReqVO.class).setId(null);
-//
-//        // 调用
-//        Integer specimenOutboundId = specimenOutboundService.createSpecimenOutbound(createReqVO);
-//        // 断言
-//        assertNotNull(specimenOutboundId);
-//        // 校验记录的属性是否正确
-//        SpecimenOutboundDO specimenOutbound = specimenOutboundMapper.selectById(specimenOutboundId);
-//        assertPojoEquals(createReqVO, specimenOutbound, "id");
-//    }
-//
-//    @Test
-//    public void testUpdateSpecimenOutbound_success() {
-//        // mock 数据
-//        SpecimenOutboundDO dbSpecimenOutbound = randomPojo(SpecimenOutboundDO.class);
-//        specimenOutboundMapper.insert(dbSpecimenOutbound);// @Sql: 先插入出一条存在的数据
-//        // 准备参数
-//        SpecimenOutboundSaveReqVO updateReqVO = randomPojo(SpecimenOutboundSaveReqVO.class, o -> {
-//            o.setId(dbSpecimenOutbound.getId()); // 设置更新的 ID
-//        });
-//
-//        // 调用
-//        specimenOutboundService.updateSpecimenOutbound(updateReqVO);
-//        // 校验是否更新正确
-//        SpecimenOutboundDO specimenOutbound = specimenOutboundMapper.selectById(updateReqVO.getId()); // 获取最新的
-//        assertPojoEquals(updateReqVO, specimenOutbound);
-//    }
-//
-//    @Test
-//    public void testUpdateSpecimenOutbound_notExists() {
-//        // 准备参数
-//        SpecimenOutboundSaveReqVO updateReqVO = randomPojo(SpecimenOutboundSaveReqVO.class);
-//
-//        // 调用, 并断言异常
-//        assertServiceException(() -> specimenOutboundService.updateSpecimenOutbound(updateReqVO), SPECIMEN_OUTBOUND_NOT_EXISTS);
-//    }
-//
-//    @Test
-//    public void testDeleteSpecimenOutbound_success() {
-//        // mock 数据
-//        SpecimenOutboundDO dbSpecimenOutbound = randomPojo(SpecimenOutboundDO.class);
-//        specimenOutboundMapper.insert(dbSpecimenOutbound);// @Sql: 先插入出一条存在的数据
-//        // 准备参数
-//        Integer id = dbSpecimenOutbound.getId();
-//
-//        // 调用
-//        specimenOutboundService.deleteSpecimenOutbound(id);
-//       // 校验数据不存在了
-//       assertNull(specimenOutboundMapper.selectById(id));
-//    }
-//
-//    @Test
-//    public void testDeleteSpecimenOutbound_notExists() {
-//        // 准备参数
-//        Integer id = randomIntegerId();
-//
-//        // 调用, 并断言异常
-//        assertServiceException(() -> specimenOutboundService.deleteSpecimenOutbound(id), SPECIMEN_OUTBOUND_NOT_EXISTS);
-//    }
-//
-//    @Test
-//    @Disabled  // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
-//    public void testGetSpecimenOutboundPage() {
-//       // mock 数据
-//       SpecimenOutboundDO dbSpecimenOutbound = randomPojo(SpecimenOutboundDO.class, o -> { // 等会查询到
-//           o.setInfoId(null);
-//           o.setChineseName(null);
-//           o.setSpecimenNumber(null);
-//           o.setApplicantName(null);
-//           o.setApplicationDate(null);
-//           o.setApplicationUsage(null);
-//           o.setAttachments(null);
-//           o.setStatus(null);
-//           o.setRemarks(null);
-//           o.setProcessInstanceId(null);
-//           o.setOperator(null);
-//           o.setOutgoingTime(null);
-//           o.setReturner(null);
-//           o.setReceiver(null);
-//           o.setReturnDate(null);
-//           o.setSpecimenCondition(null);
-//           o.setCreateTime(null);
-//           o.setSampleStatus(null);
-//       });
-//       specimenOutboundMapper.insert(dbSpecimenOutbound);
-//       // 测试 infoId 不匹配
-//       specimenOutboundMapper.insert(cloneIgnoreId(dbSpecimenOutbound, o -> o.setInfoId(null)));
-//       // 测试 chineseName 不匹配
-//       specimenOutboundMapper.insert(cloneIgnoreId(dbSpecimenOutbound, o -> o.setChineseName(null)));
-//       // 测试 specimenNumber 不匹配
-//       specimenOutboundMapper.insert(cloneIgnoreId(dbSpecimenOutbound, o -> o.setSpecimenNumber(null)));
-//       // 测试 applicantName 不匹配
-//       specimenOutboundMapper.insert(cloneIgnoreId(dbSpecimenOutbound, o -> o.setApplicantName(null)));
-//       // 测试 applicationDate 不匹配
-//       specimenOutboundMapper.insert(cloneIgnoreId(dbSpecimenOutbound, o -> o.setApplicationDate(null)));
-//       // 测试 applicationUsage 不匹配
-//       specimenOutboundMapper.insert(cloneIgnoreId(dbSpecimenOutbound, o -> o.setApplicationUsage(null)));
-//       // 测试 attachments 不匹配
-//       specimenOutboundMapper.insert(cloneIgnoreId(dbSpecimenOutbound, o -> o.setAttachments(null)));
-//       // 测试 status 不匹配
-//       specimenOutboundMapper.insert(cloneIgnoreId(dbSpecimenOutbound, o -> o.setStatus(null)));
-//       // 测试 remarks 不匹配
-//       specimenOutboundMapper.insert(cloneIgnoreId(dbSpecimenOutbound, o -> o.setRemarks(null)));
-//       // 测试 processInstanceId 不匹配
-//       specimenOutboundMapper.insert(cloneIgnoreId(dbSpecimenOutbound, o -> o.setProcessInstanceId(null)));
-//       // 测试 operator 不匹配
-//       specimenOutboundMapper.insert(cloneIgnoreId(dbSpecimenOutbound, o -> o.setOperator(null)));
-//       // 测试 outgoingTime 不匹配
-//       specimenOutboundMapper.insert(cloneIgnoreId(dbSpecimenOutbound, o -> o.setOutgoingTime(null)));
-//       // 测试 returner 不匹配
-//       specimenOutboundMapper.insert(cloneIgnoreId(dbSpecimenOutbound, o -> o.setReturner(null)));
-//       // 测试 receiver 不匹配
-//       specimenOutboundMapper.insert(cloneIgnoreId(dbSpecimenOutbound, o -> o.setReceiver(null)));
-//       // 测试 returnDate 不匹配
-//       specimenOutboundMapper.insert(cloneIgnoreId(dbSpecimenOutbound, o -> o.setReturnDate(null)));
-//       // 测试 specimenCondition 不匹配
-//       specimenOutboundMapper.insert(cloneIgnoreId(dbSpecimenOutbound, o -> o.setSpecimenCondition(null)));
-//       // 测试 createTime 不匹配
-//       specimenOutboundMapper.insert(cloneIgnoreId(dbSpecimenOutbound, o -> o.setCreateTime(null)));
-//       // 测试 sampleStatus 不匹配
-//       specimenOutboundMapper.insert(cloneIgnoreId(dbSpecimenOutbound, o -> o.setSampleStatus(null)));
-//       // 准备参数
-//       SpecimenOutboundPageReqVO reqVO = new SpecimenOutboundPageReqVO();
-//       reqVO.setInfoId(null);
-//       reqVO.setChineseName(null);
-//       reqVO.setSpecimenNumber(null);
-//       reqVO.setApplicantName(null);
-//       reqVO.setApplicationDate(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
-//       reqVO.setApplicationUsage(null);
-//       reqVO.setAttachments(null);
-//       reqVO.setStatus(null);
-//       reqVO.setRemarks(null);
-//       reqVO.setProcessInstanceId(null);
-//       reqVO.setOperator(null);
-//       reqVO.setOutgoingTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
-//       reqVO.setReturner(null);
-//       reqVO.setReceiver(null);
-//       reqVO.setReturnDate(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
-//       reqVO.setSpecimenCondition(null);
-//       reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
-//       reqVO.setSampleStatus(null);
-//
-//       // 调用
-//       PageResult<SpecimenOutboundDO> pageResult = specimenOutboundService.getSpecimenOutboundPage(reqVO);
-//       // 断言
-//       assertEquals(1, pageResult.getTotal());
-//       assertEquals(1, pageResult.getList().size());
-//       assertPojoEquals(dbSpecimenOutbound, pageResult.getList().get(0));
-//    }
-//
-//}

+ 0 - 1
yudao-module-museums/yudao-module-museums-biz/src/test/resources/clean.sql

@@ -1 +0,0 @@
-DELETE FROM "museums_specimen_outbound";

+ 0 - 27
yudao-module-museums/yudao-module-museums-biz/src/test/resources/create_tables.sql

@@ -1,27 +0,0 @@
-CREATE TABLE IF NOT EXISTS "museums_specimen_outbound" (
-                                                           "id" int NOT NULL GENERATED BY DEFAULT AS IDENTITY,
-                                                           "info_id" varchar NOT NULL,
-                                                           "chinese_name" varchar NOT NULL,
-                                                           "specimen_number" varchar NOT NULL,
-                                                           "applicant_name" varchar NOT NULL,
-                                                           "application_date" varchar,
-                                                           "application_usage" varchar NOT NULL,
-                                                           "attachments" varchar,
-                                                           "status" int,
-                                                           "remarks" varchar,
-                                                           "process_instance_id" varchar,
-                                                           "operator" varchar NOT NULL,
-                                                           "outgoing_time" varchar,
-                                                           "returner" varchar NOT NULL,
-                                                           "receiver" varchar NOT NULL,
-                                                           "return_date" varchar NOT NULL,
-                                                           "specimen_condition" varchar,
-                                                           "creator" varchar DEFAULT '',
-                                                           "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
-                                                           "updater" varchar DEFAULT '',
-                                                           "update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-                                                           "deleted" bit NOT NULL DEFAULT FALSE,
-                                                           "tenant_id" bigint NOT NULL DEFAULT 0,
-                                                           "sample_status" int,
-                                                           PRIMARY KEY ("id")
-    ) COMMENT '标本出库回库信息表';