Browse Source

修改标本出库信息

hyy 7 tháng trước cách đây
mục cha
commit
fe8ac83a98
16 tập tin đã thay đổi với 382 bổ sung21 xóa
  1. 1 0
      yudao-module-museums/yudao-module-museums-api/src/main/java/cn/iocoder/yudao/module/museums/enums/DictTypeConstants.java
  2. 26 0
      yudao-module-museums/yudao-module-museums-api/src/main/java/cn/iocoder/yudao/module/museums/enums/common/ApproalStatusEnum.java
  3. 4 4
      yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/controller/admin/specimeninfo/SpecimenInfoController.java
  4. 118 0
      yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/controller/admin/specimeninfo/vo/SpecimenInfoExportReqVO.java
  5. 155 0
      yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/controller/admin/specimeninfo/vo/SpecimenInfoExportRespVO.java
  6. 5 4
      yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/controller/admin/specimeninfo/vo/SpecimenInfoRespVO.java
  7. 0 3
      yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/controller/admin/specimenoutbound/SpecimenOutboundController.java
  8. 2 1
      yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/controller/admin/specimenoutbound/vo/SpecimenOutboundRespVO.java
  9. 6 5
      yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/controller/admin/specimenoutbound/vo/SpecimenOutboundReturnRespVO.java
  10. 2 2
      yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/controller/admin/specimenoutbound/vo/SpecimenOutboundSaveReqVO.java
  11. 2 1
      yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/controller/admin/specimenoutbound/vo/SpecimenOutboundWithInfoRespVO.java
  12. 0 1
      yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/dal/dataobject/specimeninfo/SpecimenInfoDO.java
  13. 34 0
      yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/dal/mysql/specimeninfo/SpecimenInfoMapper.java
  14. 7 0
      yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/service/specimeninfo/SpecimenInfoService.java
  15. 5 0
      yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/service/specimeninfo/SpecimenInfoServiceImpl.java
  16. 15 0
      yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/service/specimenoutbound/SpecimenOutboundServiceImpl.java

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

@@ -15,4 +15,5 @@ public interface DictTypeConstants {
     String MUSEUMS_SPECIMEN_TYPE = "museums_specimen_type"; // 标本类型
     String MUSEUMS_SOURCE = "museums_source"; // 标本来源
     String MUSEUMS_SPECIMEN_INFO = "museums_specimen_info"; // 保存类型
+    String MUSEUMS_APPROAL_STATUS = "museums_approal_status"; // 保存类型
 }

+ 26 - 0
yudao-module-museums/yudao-module-museums-api/src/main/java/cn/iocoder/yudao/module/museums/enums/common/ApproalStatusEnum.java

@@ -0,0 +1,26 @@
+package cn.iocoder.yudao.module.museums.enums.common;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@Getter
+@AllArgsConstructor
+public enum ApproalStatusEnum {
+    /** 审批中 */
+    UNDER_APPROVAL(0),
+    /** 一审通过 */
+    FIRST_PASSED(1),
+    /** 一审驳回 */
+    FIRST_REJECTED(2),
+    /** 已出库 */
+    SHIPPED_OUTBOUND(3),
+    /** 已回库 */
+    RETURNED(4),
+    /** 二审通过 */
+    SECOND_PASSED(5),
+    /** 二审驳回 */
+    SECOND_REJECTED(6);
+
+    /** 状态值 */
+    private final Integer status;
+}

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

@@ -105,13 +105,13 @@ public class SpecimenInfoController {
     @Operation(summary = "导出标本管理 Excel")
     @PreAuthorize("@ss.hasPermission('museums:specimen-info:export')")
     @ApiAccessLog(operateType = EXPORT)
-    public void exportSpecimenInfoExcel(@Valid SpecimenInfoPageReqVO pageReqVO,
+    public void exportSpecimenInfoExcel(@Valid SpecimenInfoExportReqVO pageReqVO,
               HttpServletResponse response) throws IOException {
         pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<SpecimenInfoDO> list = specimenInfoService.getSpecimenInfoPage(pageReqVO).getList();
+        List<SpecimenInfoDO> list = specimenInfoService.getSpecimenInfoExcel(pageReqVO).getList();
         // 导出 Excel
-        ExcelUtils.write(response, "标本管理.xls", "数据", SpecimenInfoRespVO.class,
-                        BeanUtils.toBean(list, SpecimenInfoRespVO.class));
+        ExcelUtils.write(response, "标本总表.xls", "数据", SpecimenInfoExportRespVO.class,
+                        BeanUtils.toBean(list, SpecimenInfoExportRespVO.class));
     }
 
     @GetMapping("/get-specimen-import-template")

+ 118 - 0
yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/controller/admin/specimeninfo/vo/SpecimenInfoExportReqVO.java

@@ -0,0 +1,118 @@
+package cn.iocoder.yudao.module.museums.controller.admin.specimeninfo.vo;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+
+@Schema(description = "管理后台 - 标本导出 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class SpecimenInfoExportReqVO extends PageParam {
+
+    @Schema(description = "标本类型(矿物、岩石矿石、化石、陨石)", example = "1")
+    private Integer specimenType;
+
+    @Schema(description = "标本编号")
+    private String specimenNumber;
+
+    @Schema(description = "资产号")
+    private String assetNumber;
+
+    @Schema(description = "存放位置")
+    private String storageLocation;
+
+    @Schema(description = "中文名称", example = "赵六")
+    private String chineseName;
+
+    @Schema(description = "英文名称", example = "Maven")
+    private String englishName;
+
+    @Schema(description = "成分")
+    private String composition;
+
+    @Schema(description = "产地")
+    private String origin;
+
+    @Schema(description = "时代")
+    private String era;
+
+    @Schema(description = "保存地层")
+    private String preservedLayer;
+
+    @Schema(description = "陨石类型", example = "2")
+    private String meteoriteType;
+
+    @Schema(description = "国际命名", example = "王五")
+    private String internationalName;
+
+    @Schema(description = "保存类型(标本、光片、薄片模型及其他)", example = "1")
+    private Integer preservationType;
+
+    @Schema(description = "尺寸")
+    private String size;
+
+    @Schema(description = "重量")
+    private String weight;
+
+    @Schema(description = "来源(采购、捐赠、采集)")
+    private Integer source;
+
+    @Schema(description = "标本提供者(供应商、捐赠人、采集人)")
+    private String provider;
+
+    @Schema(description = "用途")
+    private String purpose;
+
+    @Schema(description = "描述", example = "黑红色陨石")
+    private String description;
+
+    @Schema(description = "馆藏状态(在馆、借出、展陈)", example = "2")
+    private Integer collectionStatus;
+
+    @Schema(description = "备注")
+    private String notes;
+
+    @Schema(description = "图片名称", example = "芋艿")
+    private String imageName;
+
+    @Schema(description = "入库操作员")
+    private String operator;
+
+    @Schema(description = "入库时间")
+    @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;
+
+    @Schema(description = "标本数量")
+    private String specimenAmount;
+
+    @Schema(description = "标本价格")
+    private String specimenPrice;
+}

+ 155 - 0
yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/controller/admin/specimeninfo/vo/SpecimenInfoExportRespVO.java

@@ -0,0 +1,155 @@
+package cn.iocoder.yudao.module.museums.controller.admin.specimeninfo.vo;
+
+import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
+import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
+import cn.iocoder.yudao.module.museums.enums.DictTypeConstants;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+
+@Schema(description = "管理后台 - 标本导出 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class SpecimenInfoExportRespVO {
+
+    @Schema(description = "序号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    @ExcelProperty("序号")
+    private Integer id;
+
+    @Schema(description = "标本类型(矿物、岩石矿石、化石、陨石)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    @ExcelProperty(value = "标本类型(矿物、岩石矿石、化石、陨石)", converter = DictConvert.class)
+    @DictFormat(DictTypeConstants.MUSEUMS_SPECIMEN_TYPE)
+    private Integer specimenType;
+
+    @Schema(description = "标本编号", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("标本编号")
+    private String specimenNumber;
+
+    @Schema(description = "资产号")
+    @ExcelProperty("资产号")
+    private String assetNumber;
+
+    @Schema(description = "存放位置")
+    @ExcelProperty("存放位置")
+    private String storageLocation;
+
+    @Schema(description = "中文名称", example = "赵六")
+    @ExcelProperty("中文名称")
+    private String chineseName;
+
+    @Schema(description = "英文名称", example = "Maven")
+    @ExcelProperty("英文名称")
+    private String englishName;
+
+    @Schema(description = "成分")
+    @ExcelProperty("成分")
+    private String composition;
+
+    @Schema(description = "产地")
+    @ExcelProperty("产地")
+    private String origin;
+
+    @Schema(description = "时代")
+    @ExcelProperty("时代")
+    private String era;
+
+    @Schema(description = "保存地层")
+    @ExcelProperty("保存地层")
+    private String preservedLayer;
+
+    @Schema(description = "陨石类型", example = "2")
+    @ExcelProperty("陨石类型")
+    private String meteoriteType;
+
+    @Schema(description = "国际命名", example = "王五")
+    @ExcelProperty("国际命名")
+    private String internationalName;
+
+    @Schema(description = "保存类型(标本、光片、薄片模型及其他)", example = "1")
+    @ExcelProperty(value = "保存类型(标本、光片、薄片模型及其他)", converter = DictConvert.class)
+    @DictFormat(DictTypeConstants.MUSEUMS_SPECIMEN_INFO)
+    private Integer preservationType;
+
+    @Schema(description = "尺寸")
+    @ExcelProperty("尺寸")
+    private String size;
+
+    @Schema(description = "重量")
+    @ExcelProperty("重量")
+    private String weight;
+
+    @Schema(description = "来源(采购、捐赠、采集)")
+    @ExcelProperty(value = "来源(采购、捐赠、采集)", converter = DictConvert.class)
+    @DictFormat(DictTypeConstants.MUSEUMS_SOURCE)
+    private Integer source;
+
+    @Schema(description = "标本提供者(供应商、捐赠人、采集人)")
+    @ExcelProperty("标本提供者(供应商、捐赠人、采集人)")
+    private String provider;
+
+    @Schema(description = "用途")
+    @ExcelProperty("用途")
+    private String purpose;
+
+    @Schema(description = "描述", example = "黑红色陨石")
+    @ExcelProperty("描述")
+    private String description;
+
+    @Schema(description = "馆藏状态(在馆、借出、展陈)", example = "2")
+    @ExcelProperty(value = "馆藏状态(在馆、借出、展陈)", converter = DictConvert.class)
+    @DictFormat(DictTypeConstants.MUSEUMS_COLLECTION_STATUS)
+    private Integer collectionStatus;
+
+    @Schema(description = "备注")
+    @ExcelProperty("备注")
+    private String notes;
+
+    @Schema(description = "图片名称", example = "芋艿")
+    @ExcelProperty("图片名称")
+    private String imageName;
+
+//    @Schema(description = "图片路径")
+//    @ExcelProperty("图片路径")
+//    private List<String> imagePath;
+
+    @Schema(description = "入库操作员")
+    @ExcelProperty("入库操作员")
+    private String operator;
+
+    @Schema(description = "入库时间")
+    @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;
+
+    @Schema(description = "标本数量")
+    @ExcelProperty("标本数量")
+    private String specimenAmount;
+
+    @Schema(description = "标本价格")
+    @ExcelProperty("标本价格")
+    private String specimenPrice;
+
+}

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

@@ -1,5 +1,6 @@
 package cn.iocoder.yudao.module.museums.controller.admin.specimeninfo.vo;
 
+import cn.iocoder.yudao.module.museums.enums.DictTypeConstants;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 import java.util.*;
@@ -21,7 +22,7 @@ public class SpecimenInfoRespVO {
 
     @Schema(description = "标本类型(矿物、岩石矿石、化石、陨石)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
     @ExcelProperty(value = "标本类型(矿物、岩石矿石、化石、陨石)", converter = DictConvert.class)
-    @DictFormat("museums_specimen_info") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
+    @DictFormat(DictTypeConstants.MUSEUMS_SPECIMEN_TYPE)
     private Integer specimenType;
 
     @Schema(description = "标本编号", requiredMode = Schema.RequiredMode.REQUIRED)
@@ -70,7 +71,7 @@ public class SpecimenInfoRespVO {
 
     @Schema(description = "保存类型(标本、光片、薄片模型及其他)", example = "1")
     @ExcelProperty(value = "保存类型(标本、光片、薄片模型及其他)", converter = DictConvert.class)
-    @DictFormat("museums_specimen_info") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
+    @DictFormat(DictTypeConstants.MUSEUMS_SPECIMEN_INFO)
     private Integer preservationType;
 
     @Schema(description = "尺寸")
@@ -83,7 +84,7 @@ public class SpecimenInfoRespVO {
 
     @Schema(description = "来源(采购、捐赠、采集)")
     @ExcelProperty(value = "来源(采购、捐赠、采集)", converter = DictConvert.class)
-    @DictFormat("museums_specimen_info") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
+    @DictFormat(DictTypeConstants.MUSEUMS_SOURCE)
     private Integer source;
 
     @Schema(description = "标本提供者(供应商、捐赠人、采集人)")
@@ -100,7 +101,7 @@ public class SpecimenInfoRespVO {
 
     @Schema(description = "馆藏状态(在馆、借出、展陈)", example = "2")
     @ExcelProperty(value = "馆藏状态(在馆、借出、展陈)", converter = DictConvert.class)
-    @DictFormat("museums_specimen_info") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
+    @DictFormat(DictTypeConstants.MUSEUMS_COLLECTION_STATUS)
     private Integer collectionStatus;
 
     @Schema(description = "备注")

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

@@ -61,7 +61,6 @@ public class SpecimenOutboundController {
     public CommonResult<Boolean> approveSpecimenOutbound(@RequestBody SpecimenOutboundApprovalReqVO req) {
         Long operatorId = getLoginUserId();
         LocalDateTime now = LocalDateTime.now();
-
         // 验证审批类型
         if (req.getStatus() == 1 || req.getStatus() == 2) {
             // 一审逻辑
@@ -112,7 +111,6 @@ public class SpecimenOutboundController {
         }
     }
 
-
     @PostMapping("/confirmOutbound")
     @Operation(summary = "确认标本出库")
     @PreAuthorize("@ss.hasPermission('museums:specimen-outbound:confirm')")
@@ -230,7 +228,6 @@ public class SpecimenOutboundController {
         return success(response);
     }
 
-
     //获取出库单,方便操作员查看标本编号、图片及标本存放位置等。
     @GetMapping("/specimenInfo")
     @Operation(summary = "获得标本出库单")

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

@@ -1,5 +1,6 @@
 package cn.iocoder.yudao.module.museums.controller.admin.specimenoutbound.vo;
 
+import cn.iocoder.yudao.module.museums.enums.DictTypeConstants;
 import com.mzt.logapi.starter.annotation.DiffLogField;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
@@ -61,7 +62,7 @@ public class SpecimenOutboundRespVO {
 
     @Schema(description = "审批状态", example = "2")
     @ExcelProperty(value = "审批状态", converter = DictConvert.class)
-    @DictFormat("museums_specimen_info") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
+    @DictFormat(DictTypeConstants.MUSEUMS_APPROAL_STATUS)
     private Integer status;
 
     @Schema(description = "回库备注信息")

+ 6 - 5
yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/controller/admin/specimenoutbound/vo/SpecimenOutboundReturnRespVO.java

@@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.museums.controller.admin.specimenoutbound.vo;
 
 import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
 import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
+import cn.iocoder.yudao.module.museums.enums.DictTypeConstants;
 import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
 import com.alibaba.excel.annotation.ExcelProperty;
 import io.swagger.v3.oas.annotations.media.Schema;
@@ -61,7 +62,7 @@ public class SpecimenOutboundReturnRespVO {
 
     @Schema(description = "审批状态", example = "2")
     @ExcelProperty(value = "审批状态", converter = DictConvert.class)
-    @DictFormat("museums_specimen_info") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
+    @DictFormat(DictTypeConstants.MUSEUMS_APPROAL_STATUS)
     private Integer status;
 
     @Schema(description = "回库备注信息")
@@ -80,12 +81,12 @@ public class SpecimenOutboundReturnRespVO {
     @ExcelProperty(value = "回库附件上传")
     private String sampleStatus;
 
-    @Schema(description = "一审驳回原因", example = "27504")
-    @ExcelProperty("一审驳回原因")
+    @Schema(description = "一审审批建议", example = "27504")
+    @ExcelProperty("一审审批建议")
     private String processInstanceId;
 
-    @Schema(description = "二审驳回原因", example = "27504")
-    @ExcelProperty("二审驳回原因")
+    @Schema(description = "二审审批建议", example = "27504")
+    @ExcelProperty("二审审批建议")
     private String rejectionReasons;
 
     @Schema(description = "出库员")

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

@@ -8,7 +8,7 @@ import javax.validation.constraints.*;
 import org.springframework.format.annotation.DateTimeFormat;
 import java.time.LocalDateTime;
 
-@Schema(description = "管理后台 - 标本出库单填写/修改 Request VO")
+@Schema(description = "管理后台 - 标本出库单填写 Request VO")
 @Data
 public class SpecimenOutboundSaveReqVO {
 
@@ -17,7 +17,7 @@ public class SpecimenOutboundSaveReqVO {
 
     @Schema(description = "关联到总表中的标本ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
     @DiffLogField(name = "关联到总表中的标本ID")
-    private List<String> infoId;
+    private String infoId;
 
     @Schema(description = "申请出库的标本编号", requiredMode = Schema.RequiredMode.REQUIRED)
     @NotEmpty(message = "申请出库的标本编号不能为空")

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

@@ -5,6 +5,7 @@ import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
 import cn.iocoder.yudao.module.museums.controller.admin.specimeninfo.vo.SpecimenInfoRespVO;
 import cn.iocoder.yudao.module.museums.controller.admin.specimeninfo.vo.SpecimenOutboundFormRespVO;
 import cn.iocoder.yudao.module.museums.dal.dataobject.specimeninfo.SpecimenInfoDO;
+import cn.iocoder.yudao.module.museums.enums.DictTypeConstants;
 import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
 import com.alibaba.excel.annotation.ExcelProperty;
 import com.mzt.logapi.starter.annotation.DiffLogField;
@@ -64,7 +65,7 @@ public class SpecimenOutboundWithInfoRespVO {
 
     @Schema(description = "审批状态", example = "2")
     @ExcelProperty(value = "审批状态", converter = DictConvert.class)
-    @DictFormat("museums_specimen_info") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
+    @DictFormat(DictTypeConstants.MUSEUMS_APPROAL_STATUS)
     private Integer status;
 
     @Schema(description = "关联标本信息列表")

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

@@ -135,7 +135,6 @@ public class SpecimenInfoDO extends BaseDO {
      * 图片路径
      */
     private String imagePath;
-//    private List<String> imagePath;
     /**
      * 入库操作员
      */

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

@@ -58,6 +58,40 @@ public interface SpecimenInfoMapper extends BaseMapperX<SpecimenInfoDO> {
                 .orderByDesc(SpecimenInfoDO::getId));
     }
 
+    default PageResult<SpecimenInfoDO> selectPage(SpecimenInfoExportReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<SpecimenInfoDO>()
+                .eqIfPresent(SpecimenInfoDO::getSpecimenType, reqVO.getSpecimenType())
+                .likeIfPresent(SpecimenInfoDO::getSpecimenNumber, reqVO.getSpecimenNumber())
+                .likeIfPresent(SpecimenInfoDO::getAssetNumber, reqVO.getAssetNumber())
+                .likeIfPresent(SpecimenInfoDO::getStorageLocation, reqVO.getStorageLocation())
+                .likeIfPresent(SpecimenInfoDO::getChineseName, reqVO.getChineseName())
+                .likeIfPresent(SpecimenInfoDO::getEnglishName, reqVO.getEnglishName())
+                .likeIfPresent(SpecimenInfoDO::getComposition, reqVO.getComposition())
+                .likeIfPresent(SpecimenInfoDO::getOrigin, reqVO.getOrigin())
+                .likeIfPresent(SpecimenInfoDO::getEra, reqVO.getEra())
+                .likeIfPresent(SpecimenInfoDO::getPreservedLayer, reqVO.getPreservedLayer())
+                .likeIfPresent(SpecimenInfoDO::getMeteoriteType, reqVO.getMeteoriteType())
+                .likeIfPresent(SpecimenInfoDO::getInternationalName, reqVO.getInternationalName())
+                .eqIfPresent(SpecimenInfoDO::getPreservationType, reqVO.getPreservationType())
+                .eqIfPresent(SpecimenInfoDO::getSize, reqVO.getSize())
+                .eqIfPresent(SpecimenInfoDO::getWeight, reqVO.getWeight())
+                .eqIfPresent(SpecimenInfoDO::getSource, reqVO.getSource())
+                .likeIfPresent(SpecimenInfoDO::getProvider, reqVO.getProvider())
+                .likeIfPresent(SpecimenInfoDO::getPurpose, reqVO.getPurpose())
+                .likeIfPresent(SpecimenInfoDO::getDescription, reqVO.getDescription())
+                .eqIfPresent(SpecimenInfoDO::getCollectionStatus, reqVO.getCollectionStatus())
+                .likeIfPresent(SpecimenInfoDO::getNotes, reqVO.getNotes())
+                .likeIfPresent(SpecimenInfoDO::getImageName, reqVO.getImageName())
+                .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())
+                .likeIfPresent(SpecimenInfoDO::getDeletedReason, reqVO.getDeletedReason())
+                .orderByDesc(SpecimenInfoDO::getId));
+    }
+
     /**
      * 更新标本信息中的馆藏状态
      *

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

@@ -52,6 +52,13 @@ public interface SpecimenInfoService {
      * @return 标本管理分页
      */
     PageResult<SpecimenInfoDO> getSpecimenInfoPage(SpecimenInfoPageReqVO pageReqVO);
+    /**
+     * 获得标本管理分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 标本管理分页
+     */
+    PageResult<SpecimenInfoDO> getSpecimenInfoExcel(SpecimenInfoExportReqVO pageReqVO);
 
     /**
      * 批量导入标本

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

@@ -144,6 +144,11 @@ public class SpecimenInfoServiceImpl implements SpecimenInfoService {
         return specimenInfoMapper.selectPage(pageReqVO);
     }
 
+    @Override
+    public PageResult<SpecimenInfoDO> getSpecimenInfoExcel(SpecimenInfoExportReqVO pageReqVO) {
+        return specimenInfoMapper.selectPage(pageReqVO);
+    }
+
     // 标本Excel的批量导入
     @Override
     @Transactional(rollbackFor = Exception.class) // 添加事务,异常则回滚所有导入

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

@@ -159,8 +159,23 @@ public class SpecimenOutboundServiceImpl implements SpecimenOutboundService {
         // 校验存在
         validateSpecimenOutboundExists(updateReqVO.getId());
 
+        List<String> validInfoIds = new ArrayList<>();
+
+        for (String number : updateReqVO.getNumber()) {
+            SpecimenInfoDO specimenInfo = specimenInfoMapper.selectBySpecimenNumber(number);
+            if (specimenInfo == null) {
+                throw exception(SPECIMEN_NUMBER_NOT_EXISTS);
+            }
+            if (specimenInfo.getCollectionStatus() == 0 || specimenInfo.getCollectionStatus() == 2) {
+                validInfoIds.add(String.valueOf(specimenInfo.getId()));
+            } else {
+                throw exception(SPECIMEN_IS_LENDING_OUT);
+            }
+        }
+
         // 更新
         SpecimenOutboundDO updateObj = BeanUtils.toBean(updateReqVO, SpecimenOutboundDO.class);
+        updateObj.setInfoId(validInfoIds.toString());
         specimenOutboundMapper.updateById(updateObj);
 
         // 记录日志上下文