From 149d04de35cf9f6adb2f568da141bfd5f5a27329 Mon Sep 17 00:00:00 2001
From: zhongrj <646384940@qq.com>
Date: Tue, 12 Mar 2024 12:07:55 +0800
Subject: [PATCH] 新增天地图标签导入

---
 src/main/java/org/springblade/modules/category/excel/CategoryExcel.java              |   45 +++++++++++++++
 src/main/java/org/springblade/modules/category/service/impl/CategoryServiceImpl.java |   30 ++++++++++
 src/main/java/org/springblade/modules/category/excel/CategoryImporter.java           |   39 +++++++++++++
 src/main/java/org/springblade/modules/category/controller/CategoryController.java    |   16 ++++
 src/main/java/org/springblade/modules/category/service/ICategoryService.java         |    8 ++
 5 files changed, 136 insertions(+), 2 deletions(-)

diff --git a/src/main/java/org/springblade/modules/category/controller/CategoryController.java b/src/main/java/org/springblade/modules/category/controller/CategoryController.java
index 8cbfccf..1755f72 100644
--- a/src/main/java/org/springblade/modules/category/controller/CategoryController.java
+++ b/src/main/java/org/springblade/modules/category/controller/CategoryController.java
@@ -24,18 +24,20 @@
 import javax.validation.Valid;
 
 import org.springblade.common.node.TreeIntegerNode;
+import org.springblade.core.excel.util.ExcelUtil;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
-import org.springblade.modules.label.vo.LabelVO;
+import org.springblade.modules.category.excel.CategoryExcel;
+import org.springblade.modules.category.excel.CategoryImporter;
 import org.springframework.web.bind.annotation.*;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springblade.modules.category.entity.CategoryEntity;
 import org.springblade.modules.category.vo.CategoryVO;
 import org.springblade.modules.category.wrapper.CategoryWrapper;
 import org.springblade.modules.category.service.ICategoryService;
-
+import org.springframework.web.multipart.MultipartFile;
 import java.util.List;
 
 /**
@@ -143,5 +145,15 @@
 		return R.data(categoryService.getCategory(category));
 	}
 
+	/**
+	 * 天地图poi 导入
+	 */
+	@PostMapping("/import-category")
+	public R importCategory(MultipartFile file, Integer isCovered) {
+		CategoryImporter categoryImporter = new CategoryImporter(categoryService, isCovered == 1);
+		ExcelUtil.save(file, categoryImporter, CategoryExcel.class);
+		return R.success("操作成功");
+	}
+
 
 }
diff --git a/src/main/java/org/springblade/modules/category/excel/CategoryExcel.java b/src/main/java/org/springblade/modules/category/excel/CategoryExcel.java
new file mode 100644
index 0000000..3ae127f
--- /dev/null
+++ b/src/main/java/org/springblade/modules/category/excel/CategoryExcel.java
@@ -0,0 +1,45 @@
+package org.springblade.modules.category.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import lombok.Data;
+import java.io.Serializable;
+
+/**
+ * CategoryExcel
+ *
+ * @author Chill
+ */
+@Data
+@ColumnWidth(25)
+@HeadRowHeight(20)
+@ContentRowHeight(18)
+public class CategoryExcel implements Serializable {
+
+	private static final long serialVersionUID = 2L;
+
+	/** 标签名称 */
+	@ExcelProperty( "小类")
+	private String categoryName;
+
+	/** 标签编号 */
+	@ExcelProperty( "类别代码")
+	private String categoryNo;
+
+	/** 层级 */
+	@ExcelProperty( "层级")
+	private Integer level;
+
+	/** 提示词分类描述 */
+	@ExcelProperty( "提示词分类描述")
+	private String description;
+
+	/** 备注 */
+	@ExcelProperty( "备注")
+	private String remark;
+
+
+}
+
diff --git a/src/main/java/org/springblade/modules/category/excel/CategoryImporter.java b/src/main/java/org/springblade/modules/category/excel/CategoryImporter.java
new file mode 100644
index 0000000..5ab894f
--- /dev/null
+++ b/src/main/java/org/springblade/modules/category/excel/CategoryImporter.java
@@ -0,0 +1,39 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.modules.category.excel;
+
+import lombok.RequiredArgsConstructor;
+import org.springblade.core.excel.support.ExcelImporter;
+import org.springblade.modules.category.service.ICategoryService;
+import java.util.List;
+
+/**
+ * 场所标签poi数据导入类
+ *
+ * @author Chill
+ */
+@RequiredArgsConstructor
+public class CategoryImporter implements ExcelImporter<CategoryExcel> {
+
+	private final ICategoryService categoryService;
+	private final Boolean isCovered;
+
+	@Override
+	public void save(List<CategoryExcel> data) {
+		categoryService.importCategory(data, isCovered);
+	}
+}
diff --git a/src/main/java/org/springblade/modules/category/service/ICategoryService.java b/src/main/java/org/springblade/modules/category/service/ICategoryService.java
index ca903e7..33b53a5 100644
--- a/src/main/java/org/springblade/modules/category/service/ICategoryService.java
+++ b/src/main/java/org/springblade/modules/category/service/ICategoryService.java
@@ -21,6 +21,7 @@
 import org.springblade.common.node.TreeIntegerNode;
 import org.springblade.modules.category.dto.CategoryDTO;
 import org.springblade.modules.category.entity.CategoryEntity;
+import org.springblade.modules.category.excel.CategoryExcel;
 import org.springblade.modules.category.vo.CategoryVO;
 
 import java.util.List;
@@ -56,4 +57,11 @@
     List<CategoryDTO> selectCategoryLabelList(CategoryDTO categoryDTO);
 
 	List<TreeIntegerNode> tree(CategoryVO category);
+
+	/**
+	 * 标签导入
+	 * @param data
+	 * @param isCovered
+	 */
+    void importCategory(List<CategoryExcel> data, Boolean isCovered);
 }
diff --git a/src/main/java/org/springblade/modules/category/service/impl/CategoryServiceImpl.java b/src/main/java/org/springblade/modules/category/service/impl/CategoryServiceImpl.java
index 8749263..704d5aa 100644
--- a/src/main/java/org/springblade/modules/category/service/impl/CategoryServiceImpl.java
+++ b/src/main/java/org/springblade/modules/category/service/impl/CategoryServiceImpl.java
@@ -16,11 +16,13 @@
  */
 package org.springblade.modules.category.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springblade.common.node.TreeIntegerNode;
 import org.springblade.common.utils.NodeTreeUtil;
 import org.springblade.modules.category.dto.CategoryDTO;
 import org.springblade.modules.category.entity.CategoryEntity;
+import org.springblade.modules.category.excel.CategoryExcel;
 import org.springblade.modules.category.vo.CategoryVO;
 import org.springblade.modules.category.mapper.CategoryMapper;
 import org.springblade.modules.category.service.ICategoryService;
@@ -77,4 +79,32 @@
 			node.setChildren(null);
 		}
 	}
+
+	/**
+	 * 标签导入
+	 * @param data
+	 * @param isCovered
+	 */
+	@Override
+	public void importCategory(List<CategoryExcel> data, Boolean isCovered) {
+		for (CategoryExcel categoryExcel : data) {
+			// 查询是否已存在
+			QueryWrapper<CategoryEntity> wrapper = new QueryWrapper<>();
+			wrapper.eq("category_no",categoryExcel.getCategoryNo()).eq("is_deleted",0);
+			CategoryEntity one = getOne(wrapper);
+			if (null==one){
+				// 新增
+				CategoryEntity categoryEntity = new CategoryEntity();
+				categoryEntity.setCategoryNo(categoryExcel.getCategoryNo());
+				categoryEntity.setCategoryName(categoryExcel.getCategoryName());
+				categoryEntity.setLevel(categoryExcel.getLevel());
+				categoryEntity.setIsDeleted(0);
+				categoryEntity.setParentNo(categoryExcel.getCategoryNo().substring(0,4));
+				categoryEntity.setDescription(categoryExcel.getDescription());
+				categoryEntity.setRemark(categoryExcel.getRemark());
+				// 新增
+				save(categoryEntity);
+			}
+		}
+	}
 }

--
Gitblit v1.9.3