|
@@ -106,9 +106,59 @@ public class SpecimenInfoController {
|
|
|
BeanUtils.toBean(list, SpecimenInfoExportRespVO.class));
|
|
|
}
|
|
|
|
|
|
+// @GetMapping("/get-specimen-import-template")
|
|
|
+// @Operation(summary = "获得导入标本信息模板")
|
|
|
+// public void getSpecimenImportTemplate(HttpServletResponse response) throws IOException {
|
|
|
+//
|
|
|
+// // 设置响应类型
|
|
|
+// response.setContentType("application/vnd.ms-excel");
|
|
|
+// response.setCharacterEncoding("UTF-8");
|
|
|
+// // URL 编码文件名
|
|
|
+// String fileName = URLEncoder.encode("标本导入模板.xls", "UTF-8");
|
|
|
+// response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
|
|
|
+//
|
|
|
+// // 手动创建导出 demo
|
|
|
+// List<SpecimenImportExcelVO> list = Arrays.asList(
|
|
|
+// SpecimenImportExcelVO.builder()
|
|
|
+// .specimenNumber("01522") // 标本编号
|
|
|
+// .assetNumber("20129103") // 资产号
|
|
|
+// .chineseName("贵州龙") // 中文名称
|
|
|
+// .englishName("keichousaurus") // 外文名称
|
|
|
+// .specimenType(SpecimenTypeEnum.FOSSIL.getType()) // 使用枚举:标本类型(矿物/矿石/岩石/化石/陨石)
|
|
|
+// .storageLocation("临展厅") // 存放位置
|
|
|
+// .preservationType(PreservationTypeEnum.SPECIMEN.getPreservationType()) // 使用枚举:保存类型(标本/原石/光片/薄片/切片/模型及其他)
|
|
|
+// .saveStatus(SaveStatusEnum.COMPLETE.getSaveStatus()) // 保存状态(完整/受损/严重受损/无实物)
|
|
|
+// .specimenAmount(1) // 数量(件/套)
|
|
|
+// .size("1000cm") // 规格(cm)
|
|
|
+// .weight("1.5g") // 重量(g)
|
|
|
+// .composition("硅酸盐") // 成分/化学式
|
|
|
+// .origin("兴义县顶效镇绿荫村") // 产地/发现地(市级县级产地)
|
|
|
+// .economize("贵州省") // 省
|
|
|
+// .country("中国(China)") // 国家
|
|
|
+// .era("晚三叠世(距今2.1亿年)") // 形成时代
|
|
|
+// .preservedLayer("上三叠统竹竿坡组") // 地质产状或层位(产出状态,化石指产出层位)
|
|
|
+// .meteoriteType("脊索动物门鳍龙目肿肋龙亚目贵州龙科") // 分类(矿物的类型/岩石的类型/化石的类型/陨石的类型)
|
|
|
+// .internationalName("Mineral A") // 国际命名
|
|
|
+// .discoveryTime("2024/01/01") // 发现时间
|
|
|
+// .fallTime("2024/01/02") // 降落时间
|
|
|
+// .source(SourceEnum.PURCHASE.getSource()) // 使用枚举:来源(采购/捐赠/采集)
|
|
|
+// .provider("天娇雅石居") // 标本提供者
|
|
|
+// .specimenPrice(new BigDecimal("5900.01")) // 单价
|
|
|
+// .acquisitionTime("2012/12/20") // 入藏时间
|
|
|
+// .mainPurpose(MainPurposeEnum.RESERECH.getMainPurpose()) // 主要用途(工业原料/药用/建材/科学研究/观赏/其它)
|
|
|
+// .purpose("科学普及;对比研究") // 具体用途
|
|
|
+// .collectionStatus(CollectionStatusEnum.EXHIBITION.getStatus()) // 馆藏状态(在馆/展陈/借出)
|
|
|
+// .imageName("image1.jpg、image2.jpg、image3.jpg") // 图片资料(图件名称)
|
|
|
+// .description("这是一个矿石标本") // 文献资料
|
|
|
+// .notes("备注信息") // 备注
|
|
|
+// .build()
|
|
|
+// );
|
|
|
+// ExcelUtils.write(response, "标本导入模板.xls", "标本信息", SpecimenImportExcelVO.class, list);
|
|
|
+// }
|
|
|
+
|
|
|
@GetMapping("/get-specimen-import-template")
|
|
|
@Operation(summary = "获得导入标本信息模板")
|
|
|
- public void getSpecimenImportTemplate(HttpServletResponse response) throws IOException {
|
|
|
+ public void getSpecimenImportTemplate(@RequestParam("specimenType") Integer specimenType, HttpServletResponse response) throws IOException {
|
|
|
|
|
|
// 设置响应类型
|
|
|
response.setContentType("application/vnd.ms-excel");
|
|
@@ -117,45 +167,197 @@ public class SpecimenInfoController {
|
|
|
String fileName = URLEncoder.encode("标本导入模板.xls", "UTF-8");
|
|
|
response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
|
|
|
|
|
|
- // 手动创建导出 demo
|
|
|
- List<SpecimenImportExcelVO> list = Arrays.asList(
|
|
|
- SpecimenImportExcelVO.builder()
|
|
|
- .specimenNumber("01522") // 标本编号
|
|
|
- .assetNumber("20129103") // 资产号
|
|
|
- .chineseName("贵州龙") // 中文名称
|
|
|
- .englishName("keichousaurus") // 外文名称
|
|
|
- .specimenType(SpecimenTypeEnum.FOSSIL.getType()) // 使用枚举:标本类型(矿物/矿石/岩石/化石/陨石)
|
|
|
- .storageLocation("临展厅") // 存放位置
|
|
|
- .preservationType(PreservationTypeEnum.SPECIMEN.getPreservationType()) // 使用枚举:保存类型(标本/原石/光片/薄片/切片/模型及其他)
|
|
|
- .saveStatus(SaveStatusEnum.COMPLETE.getSaveStatus()) // 保存状态(完整/受损/严重受损/无实物)
|
|
|
- .specimenAmount(1) // 数量(件/套)
|
|
|
- .size("1000cm") // 规格(cm)
|
|
|
- .weight("1.5g") // 重量(g)
|
|
|
- .composition("硅酸盐") // 成分/化学式
|
|
|
- .origin("兴义县顶效镇绿荫村") // 产地/发现地(市级县级产地)
|
|
|
- .economize("贵州省") // 省
|
|
|
- .country("中国(China)") // 国家
|
|
|
- .era("晚三叠世(距今2.1亿年)") // 形成时代
|
|
|
- .preservedLayer("上三叠统竹竿坡组") // 地质产状或层位(产出状态,化石指产出层位)
|
|
|
- .meteoriteType("脊索动物门鳍龙目肿肋龙亚目贵州龙科") // 分类(矿物的类型/岩石的类型/化石的类型/陨石的类型)
|
|
|
- .internationalName("Mineral A") // 国际命名
|
|
|
- .discoveryTime("2024/01/01") // 发现时间
|
|
|
- .fallTime("2024/01/02") // 降落时间
|
|
|
- .source(SourceEnum.PURCHASE.getSource()) // 使用枚举:来源(采购/捐赠/采集)
|
|
|
- .provider("天娇雅石居") // 标本提供者
|
|
|
- .specimenPrice(new BigDecimal("5900.01")) // 单价
|
|
|
- .acquisitionTime("2012/12/20") // 入藏时间
|
|
|
- .mainPurpose(MainPurposeEnum.RESERECH.getMainPurpose()) // 主要用途(工业原料/药用/建材/科学研究/观赏/其它)
|
|
|
- .purpose("科学普及;对比研究") // 具体用途
|
|
|
- .collectionStatus(CollectionStatusEnum.EXHIBITION.getStatus()) // 馆藏状态(在馆/展陈/借出)
|
|
|
- .imageName("image1.jpg、image2.jpg、image3.jpg") // 图片资料(图件名称)
|
|
|
- .description("这是一个矿石标本") // 文献资料
|
|
|
- .notes("备注信息") // 备注
|
|
|
- .build()
|
|
|
- );
|
|
|
+ // 根据 specimen_type 参数选择模板
|
|
|
+ List<SpecimenImportExcelVO> list;
|
|
|
+
|
|
|
+ // 根据标本类型生成不同的模板
|
|
|
+ switch (specimenType) {
|
|
|
+ case 0: // 矿物
|
|
|
+ list = Arrays.asList(
|
|
|
+ SpecimenImportExcelVO.builder()
|
|
|
+ .specimenNumber("00716") // 标本编号
|
|
|
+ .assetNumber("20121324") // 资产号
|
|
|
+ .chineseName("文石晶簇") // 中文名称
|
|
|
+ .englishName("Aragonite") // 外文名称
|
|
|
+ .specimenType(SpecimenTypeEnum.MINERAL.getType()) // 标本类型:矿物
|
|
|
+ .storageLocation("奇妙的矿物世界") // 存放位置
|
|
|
+ .preservationType(PreservationTypeEnum.SPECIMEN.getPreservationType()) // 保存类型:标本
|
|
|
+ .saveStatus(SaveStatusEnum.COMPLETE.getSaveStatus()) // 保存状态:完整
|
|
|
+ .specimenAmount(1) // 数量:1件
|
|
|
+ .size("11000") // 规格:无
|
|
|
+ .weight("11220.22") // 重量:无
|
|
|
+ .composition("CaCO3") // 成分/化学式:碳酸钙
|
|
|
+ .origin("湖北") // 产地
|
|
|
+ .economize("湖北省") // 省
|
|
|
+ .country("中国(China)") // 国家
|
|
|
+ .era("N/A") // 形成时代:无
|
|
|
+ .preservedLayer("N/A") // 地质产状或层位:无
|
|
|
+ .meteoriteType("碳酸盐") // 分类:矿物类型
|
|
|
+ .internationalName("N/A") // 国际命名:无
|
|
|
+ .discoveryTime("N/A") // 发现时间:无
|
|
|
+ .fallTime("N/A") // 降落时间:无
|
|
|
+ .source(SourceEnum.PURCHASE.getSource()) // 来源:采购
|
|
|
+ .provider("无") // 标本提供者:无
|
|
|
+ .specimenPrice(new BigDecimal("56000")) // 单价:56000元
|
|
|
+ .acquisitionTime("2012/5/5") // 入藏时间:2012年5月5日
|
|
|
+ .mainPurpose(MainPurposeEnum.APPRECIATE.getMainPurpose()) // 主要用途:观赏
|
|
|
+ .purpose("观赏,品质较佳者,经加工打磨后呈现美丽的同心圆花纹") // 具体用途
|
|
|
+ .collectionStatus(CollectionStatusEnum.EXHIBITION.getStatus()) // 馆藏状态:展陈
|
|
|
+ .imageName("P1110890.JPG") // 图片资料:图件名称
|
|
|
+ .description("这是一个矿石标本") // 文献资料
|
|
|
+ .notes("无") // 备注
|
|
|
+ .build()
|
|
|
+ );
|
|
|
+ break;
|
|
|
+ case 1: // 岩石-辉石橄榄岩
|
|
|
+ list = Arrays.asList(
|
|
|
+ SpecimenImportExcelVO.builder()
|
|
|
+ .specimenNumber("00881") // 标本编号
|
|
|
+ .assetNumber("") // 资产号(没有提供)
|
|
|
+ .chineseName("辉石橄榄岩") // 中文名称
|
|
|
+ .englishName("Pyroxene peridotite") // 外文名称
|
|
|
+ .specimenType(SpecimenTypeEnum.ROCK.getType()) // 标本类型:岩石
|
|
|
+ .storageLocation("岩石王国") // 存放位置
|
|
|
+ .preservationType(PreservationTypeEnum.SPECIMEN.getPreservationType()) // 保存类型:标本
|
|
|
+ .saveStatus(SaveStatusEnum.COMPLETE.getSaveStatus()) // 保存状态:完整
|
|
|
+ .specimenAmount(1) // 数量:1件
|
|
|
+ .size("N/A") // 规格:未提供
|
|
|
+ .weight("N/A") // 重量:未提供
|
|
|
+ .composition("N/A") // 成分/化学式:未提供
|
|
|
+ .origin("张家口万全县") // 产地/发现地:张家口万全县
|
|
|
+ .economize("河北") // 省:河北
|
|
|
+ .country("中国(China)") // 国家:中国
|
|
|
+ .preservedLayer("N/A") // 地质产状或层位:未提供
|
|
|
+ .meteoriteType("N/A") // 分类:未提供
|
|
|
+ .internationalName("N/A") // 国际命名:未提供
|
|
|
+ .discoveryTime("N/A") // 发现时间:未提供
|
|
|
+ .fallTime("N/A") // 降落时间:未提供
|
|
|
+ .source(SourceEnum.DONATION.getSource()) // 来源:捐赠
|
|
|
+ .provider("化探63级校友") // 标本提供者:化探63级校友
|
|
|
+ .specimenPrice(new BigDecimal("0.00")) // 单价:未提供
|
|
|
+ .acquisitionTime("2016/11/2") // 入藏时间:2016年11月2日
|
|
|
+ .mainPurpose(MainPurposeEnum.RESERECH.getMainPurpose()) // 主要用途:科学研究
|
|
|
+ .purpose("可作耐火材料原料") // 具体用途:可作耐火材料原料
|
|
|
+ .collectionStatus(CollectionStatusEnum.EXHIBITION.getStatus()) // 馆藏状态:展陈
|
|
|
+ .imageName("DSC00183.JPG") // 图片资料:图件名称
|
|
|
+ .description("N/A") // 文献资料:未提供
|
|
|
+ .notes("N/A") // 备注:未提供
|
|
|
+ .build()
|
|
|
+ );
|
|
|
+ break;
|
|
|
+ case 2: // 总表
|
|
|
+ list = Arrays.asList(
|
|
|
+ SpecimenImportExcelVO.builder()
|
|
|
+ .specimenNumber("01522") // 标本编号
|
|
|
+ .assetNumber("20129103") // 资产号
|
|
|
+ .chineseName("贵州龙") // 中文名称
|
|
|
+ .englishName("keichousaurus") // 外文名称
|
|
|
+ .specimenType(SpecimenTypeEnum.FOSSIL.getType()) // 使用枚举:标本类型(矿物/矿石/岩石/化石/陨石)
|
|
|
+ .storageLocation("临展厅") // 存放位置
|
|
|
+ .preservationType(PreservationTypeEnum.SPECIMEN.getPreservationType()) // 使用枚举:保存类型(标本/原石/光片/薄片/切片/模型及其他)
|
|
|
+ .saveStatus(SaveStatusEnum.COMPLETE.getSaveStatus()) // 保存状态(完整/受损/严重受损/无实物)
|
|
|
+ .specimenAmount(1) // 数量(件/套)
|
|
|
+ .size("1000cm") // 规格(cm)
|
|
|
+ .weight("1.5g") // 重量(g)
|
|
|
+ .composition("硅酸盐") // 成分/化学式
|
|
|
+ .origin("兴义县顶效镇绿荫村") // 产地/发现地(市级县级产地)
|
|
|
+ .economize("贵州省") // 省
|
|
|
+ .country("中国(China)") // 国家
|
|
|
+ .era("晚三叠世(距今2.1亿年)") // 形成时代
|
|
|
+ .preservedLayer("上三叠统竹竿坡组") // 地质产状或层位(产出状态,化石指产出层位)
|
|
|
+ .meteoriteType("脊索动物门鳍龙目肿肋龙亚目贵州龙科") // 分类(矿物的类型/岩石的类型/化石的类型/陨石的类型)
|
|
|
+ .internationalName("Mineral A") // 国际命名
|
|
|
+ .discoveryTime("2024/01/01") // 发现时间
|
|
|
+ .fallTime("2024/01/02") // 降落时间
|
|
|
+ .source(SourceEnum.PURCHASE.getSource()) // 使用枚举:来源(采购/捐赠/采集)
|
|
|
+ .provider("天娇雅石居") // 标本提供者
|
|
|
+ .specimenPrice(new BigDecimal("5900.01")) // 单价
|
|
|
+ .acquisitionTime("2012/12/20") // 入藏时间
|
|
|
+ .mainPurpose(MainPurposeEnum.RESERECH.getMainPurpose()) // 主要用途(工业原料/药用/建材/科学研究/观赏/其它)
|
|
|
+ .purpose("科学普及;对比研究") // 具体用途
|
|
|
+ .collectionStatus(CollectionStatusEnum.EXHIBITION.getStatus()) // 馆藏状态(在馆/展陈/借出)
|
|
|
+ .imageName("image1.jpg、image2.jpg、image3.jpg") // 图片资料(图件名称)
|
|
|
+ .description("这是一个矿石标本") // 文献资料
|
|
|
+ .notes("备注信息") // 备注
|
|
|
+ .build()
|
|
|
+ );
|
|
|
+ break;
|
|
|
+ case 3: // 化石
|
|
|
+ list = Arrays.asList(
|
|
|
+ SpecimenImportExcelVO.builder()
|
|
|
+ .specimenNumber("01522") // 标本编号
|
|
|
+ .assetNumber("20129103") // 资产号
|
|
|
+ .chineseName("贵州龙") // 中文名称
|
|
|
+ .englishName("keichousaurus") // 外文名称
|
|
|
+ .specimenType(SpecimenTypeEnum.FOSSIL.getType()) // 标本类型:化石
|
|
|
+ .storageLocation("临展厅") // 存放位置
|
|
|
+ .preservationType(PreservationTypeEnum.SPECIMEN.getPreservationType()) // 保存类型:标本
|
|
|
+ .saveStatus(SaveStatusEnum.COMPLETE.getSaveStatus()) // 保存状态:完整
|
|
|
+ .specimenAmount(1) // 数量(件/套)
|
|
|
+ .size("") // 规格(cm) - 未提供,留空
|
|
|
+ .origin("兴义县顶效镇绿荫村") // 产地/发现地(市级县级产地)
|
|
|
+ .economize("贵州省") // 省
|
|
|
+ .country("中国(China)") // 国家
|
|
|
+ .era("晚三叠世(距今2.1亿年)") // 形成时代
|
|
|
+ .preservedLayer("上三叠统竹竿坡组") // 地质产状或层位
|
|
|
+ .meteoriteType("脊索动物门鳍龙目肿肋龙亚目贵州龙科") // 分类(化石的类型)
|
|
|
+ .source(SourceEnum.PURCHASE.getSource()) // 来源:采购
|
|
|
+ .provider("天娇雅石居") // 标本提供者
|
|
|
+ .specimenPrice(new BigDecimal("5900")) // 单价(元)
|
|
|
+ .acquisitionTime("2012/12/20") // 入藏时间
|
|
|
+ .mainPurpose(MainPurposeEnum.RESERECH.getMainPurpose()) // 主要用途:科学研究
|
|
|
+ .purpose("科学普及;对比研究") // 具体用途
|
|
|
+ .collectionStatus(CollectionStatusEnum.EXHIBITION.getStatus()) // 馆藏状态:展陈
|
|
|
+ .imageName("1730775369277.JPG") // 图片资料(图件名称)
|
|
|
+ .description("贵州龙化石") // 文献资料
|
|
|
+ .notes("") // 备注 - 未提供,留空
|
|
|
+ .build()
|
|
|
+ );
|
|
|
+ break;
|
|
|
+ case 4: // 陨石
|
|
|
+ list = Arrays.asList(
|
|
|
+ SpecimenImportExcelVO.builder()
|
|
|
+ .specimenNumber("00691") // 标本编号
|
|
|
+ .assetNumber("") // 资产号
|
|
|
+ .chineseName("南丹铁陨石") // 中文名称
|
|
|
+ .englishName("Iron meteorite") // 外文名称
|
|
|
+ .specimenType(SpecimenTypeEnum.METEORITE.getType()) // 标本类型:陨石
|
|
|
+ .storageLocation("序厅") // 存放位置
|
|
|
+ .preservationType(PreservationTypeEnum.ROUGH_STONE.getPreservationType()) // 保存类型:原石
|
|
|
+ .saveStatus(SaveStatusEnum.COMPLETE.getSaveStatus()) // 保存状态:完整
|
|
|
+ .specimenAmount(1) // 数量(件/套)
|
|
|
+ .size("150*120*90") // 规格(cm)
|
|
|
+ .weight("3500000") // 重量(g)
|
|
|
+ .composition("铁镍金属") // 成分/化学式
|
|
|
+ .origin("南丹") // 产地/发现地(市级县级产地)
|
|
|
+ .economize("广西") // 省
|
|
|
+ .country("中国(China)") // 国家
|
|
|
+ .meteoriteType("Iron, IAB-MG") // 陨石的类型
|
|
|
+ .internationalName("Nantan") // 国际命名
|
|
|
+ .discoveryTime("1958") // 发现时间
|
|
|
+ .fallTime("") // 降落时间
|
|
|
+ .source(SourceEnum.DONATION.getSource()) // 来源:捐赠
|
|
|
+ .provider("化探63级校友") // 标本提供者
|
|
|
+ .specimenPrice(new BigDecimal("0")) // 单价(元)
|
|
|
+ .acquisitionTime("2016/11/2") // 入藏时间
|
|
|
+ .mainPurpose(MainPurposeEnum.RESERECH.getMainPurpose()) // 主要用途:科学研究
|
|
|
+ .purpose("科学研究") // 具体用途
|
|
|
+ .collectionStatus(CollectionStatusEnum.EXHIBITION.getStatus()) // 馆藏状态:展陈
|
|
|
+ .imageName("DSC03583.JPG, DSC01271.JPG") // 图片资料(图件名称)
|
|
|
+ .description("南丹铁陨石样本") // 文献资料
|
|
|
+ .notes("") // 备注
|
|
|
+ .build()
|
|
|
+ );
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ throw exception(INVALID_SPECIMEN_TYPE);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 使用 ExcelUtils 写入 Excel 文件
|
|
|
ExcelUtils.write(response, "标本导入模板.xls", "标本信息", SpecimenImportExcelVO.class, list);
|
|
|
}
|
|
|
|
|
|
+
|
|
|
@PostMapping("/import-specimen-with-images")
|
|
|
@Operation(summary = "导入标本及其图片")
|
|
|
@Parameters({
|