From 8a0f4de2775cffe46a5785dd15e281411f58c9f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BB=99=E9=A3=8E=E9=81=93=E9=AA=A8=E5=B0=8F=E5=8D=8A?= =?UTF-8?q?=E4=BB=99=E5=84=BF?= <414571696@qq.com> Date: Tue, 8 Apr 2025 22:31:30 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4poiType=E8=A1=A8=E7=9A=84?= =?UTF-8?q?=E5=A2=9E=E5=88=A0=E6=9F=A5=E6=94=B9=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/poitypes/PoiTypesController.java | 95 +++++++++++++++++++ .../admin/poitypes/vo/PoiTypesPageReqVO.java | 46 +++++++++ .../admin/poitypes/vo/PoiTypesRespVO.java | 55 +++++++++++ .../admin/poitypes/vo/PoiTypesSaveReqVO.java | 39 ++++++++ .../dal/dataobject/poitypes/PoiTypesDO.java | 63 ++++++++++++ .../dal/mysql/poitypes/PoiTypesMapper.java | 57 +++++++++++ .../mapper/poitypes/PoiTypesMapper.xml | 12 +++ 7 files changed, 367 insertions(+) create mode 100644 yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/controller/admin/poitypes/PoiTypesController.java create mode 100644 yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/controller/admin/poitypes/vo/PoiTypesPageReqVO.java create mode 100644 yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/controller/admin/poitypes/vo/PoiTypesRespVO.java create mode 100644 yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/controller/admin/poitypes/vo/PoiTypesSaveReqVO.java create mode 100644 yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/dal/dataobject/poitypes/PoiTypesDO.java create mode 100644 yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/dal/mysql/poitypes/PoiTypesMapper.java create mode 100644 yudao-module-map/yudao-module-map-biz/src/main/resources/mapper/poitypes/PoiTypesMapper.xml diff --git a/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/controller/admin/poitypes/PoiTypesController.java b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/controller/admin/poitypes/PoiTypesController.java new file mode 100644 index 0000000000..f8ac3bba4f --- /dev/null +++ b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/controller/admin/poitypes/PoiTypesController.java @@ -0,0 +1,95 @@ +package cn.iocoder.yudao.module.map.controller.admin.poitypes; + +import org.springframework.web.bind.annotation.*; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import jakarta.validation.constraints.*; +import jakarta.validation.*; +import jakarta.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +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 cn.iocoder.yudao.module.map.controller.admin.poitypes.vo.*; +import cn.iocoder.yudao.module.map.dal.dataobject.poitypes.PoiTypesDO; +import cn.iocoder.yudao.module.map.service.poitypes.PoiTypesService; + +@Tag(name = "管理后台 - POI类型") +@RestController +@RequestMapping("/map/poi-types") +@Validated +public class PoiTypesController { + + @Resource + private PoiTypesService poiTypesService; + + @PostMapping("/create") + @Operation(summary = "创建POI类型") + @PreAuthorize("@ss.hasPermission('map:poi-types:create')") + public CommonResult createPoiTypes(@Valid @RequestBody PoiTypesSaveReqVO createReqVO) { + return success(poiTypesService.createPoiTypes(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新POI类型") + @PreAuthorize("@ss.hasPermission('map:poi-types:update')") + public CommonResult updatePoiTypes(@Valid @RequestBody PoiTypesSaveReqVO updateReqVO) { + poiTypesService.updatePoiTypes(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除POI类型") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('map:poi-types:delete')") + public CommonResult deletePoiTypes(@RequestParam("id") Long id) { + poiTypesService.deletePoiTypes(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得POI类型") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('map:poi-types:query')") + public CommonResult getPoiTypes(@RequestParam("id") Long id) { + PoiTypesDO poiTypes = poiTypesService.getPoiTypes(id); + return success(BeanUtils.toBean(poiTypes, PoiTypesRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得POI类型分页") + @PreAuthorize("@ss.hasPermission('map:poi-types:query')") + public CommonResult> getPoiTypesPage(@Valid PoiTypesPageReqVO pageReqVO) { + PageResult pageResult = poiTypesService.getPoiTypesPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, PoiTypesRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出POI类型 Excel") + @PreAuthorize("@ss.hasPermission('map:poi-types:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportPoiTypesExcel(@Valid PoiTypesPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = poiTypesService.getPoiTypesPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "POI类型.xls", "数据", PoiTypesRespVO.class, + BeanUtils.toBean(list, PoiTypesRespVO.class)); + } + +} \ No newline at end of file diff --git a/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/controller/admin/poitypes/vo/PoiTypesPageReqVO.java b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/controller/admin/poitypes/vo/PoiTypesPageReqVO.java new file mode 100644 index 0000000000..b24e3e0913 --- /dev/null +++ b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/controller/admin/poitypes/vo/PoiTypesPageReqVO.java @@ -0,0 +1,46 @@ +package cn.iocoder.yudao.module.map.controller.admin.poitypes.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +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 = "管理后台 - POI类型分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class PoiTypesPageReqVO extends PageParam { + + @Schema(description = "描述", example = "随便") + private String description; + + @Schema(description = "类别编号", example = "2") + private String newType; + + @Schema(description = "大类_中文") + private String bigCategoryCn; + + @Schema(description = "中类_中文") + private String midCategoryCn; + + @Schema(description = "小类_中文") + private String subCategoryCn; + + @Schema(description = "大类_英文") + private String bigCategoryEn; + + @Schema(description = "中类_英文") + private String midCategoryEn; + + @Schema(description = "小类_英文") + private String subCategoryEn; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ No newline at end of file diff --git a/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/controller/admin/poitypes/vo/PoiTypesRespVO.java b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/controller/admin/poitypes/vo/PoiTypesRespVO.java new file mode 100644 index 0000000000..4e3cdedee8 --- /dev/null +++ b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/controller/admin/poitypes/vo/PoiTypesRespVO.java @@ -0,0 +1,55 @@ +package cn.iocoder.yudao.module.map.controller.admin.poitypes.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - POI类型 Response VO") +@Data +@ExcelIgnoreUnannotated +public class PoiTypesRespVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "18981") + @ExcelProperty("编号") + private Long id; + + @Schema(description = "描述", example = "随便") + @ExcelProperty("描述") + private String description; + + @Schema(description = "类别编号", example = "2") + @ExcelProperty("类别编号") + private String newType; + + @Schema(description = "大类_中文") + @ExcelProperty("大类_中文") + private String bigCategoryCn; + + @Schema(description = "中类_中文") + @ExcelProperty("中类_中文") + private String midCategoryCn; + + @Schema(description = "小类_中文") + @ExcelProperty("小类_中文") + private String subCategoryCn; + + @Schema(description = "大类_英文") + @ExcelProperty("大类_英文") + private String bigCategoryEn; + + @Schema(description = "中类_英文") + @ExcelProperty("中类_英文") + private String midCategoryEn; + + @Schema(description = "小类_英文") + @ExcelProperty("小类_英文") + private String subCategoryEn; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/controller/admin/poitypes/vo/PoiTypesSaveReqVO.java b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/controller/admin/poitypes/vo/PoiTypesSaveReqVO.java new file mode 100644 index 0000000000..e2aa62bb34 --- /dev/null +++ b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/controller/admin/poitypes/vo/PoiTypesSaveReqVO.java @@ -0,0 +1,39 @@ +package cn.iocoder.yudao.module.map.controller.admin.poitypes.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import jakarta.validation.constraints.*; + +@Schema(description = "管理后台 - POI类型新增/修改 Request VO") +@Data +public class PoiTypesSaveReqVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "18981") + private Long id; + + @Schema(description = "描述", example = "随便") + private String description; + + @Schema(description = "类别编号", example = "2") + private String newType; + + @Schema(description = "大类_中文") + private String bigCategoryCn; + + @Schema(description = "中类_中文") + private String midCategoryCn; + + @Schema(description = "小类_中文") + private String subCategoryCn; + + @Schema(description = "大类_英文") + private String bigCategoryEn; + + @Schema(description = "中类_英文") + private String midCategoryEn; + + @Schema(description = "小类_英文") + private String subCategoryEn; + +} \ No newline at end of file diff --git a/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/dal/dataobject/poitypes/PoiTypesDO.java b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/dal/dataobject/poitypes/PoiTypesDO.java new file mode 100644 index 0000000000..6bd1115667 --- /dev/null +++ b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/dal/dataobject/poitypes/PoiTypesDO.java @@ -0,0 +1,63 @@ +package cn.iocoder.yudao.module.map.dal.dataobject.poitypes; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; + +/** + * POI类型 DO + * + * @author 安 + */ +@TableName("map_poi_types") +@KeySequence("map_poi_types_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class PoiTypesDO extends BaseDO { + + /** + * 编号 + */ + @TableId + private Long id; + /** + * 描述 + */ + private String description; + /** + * 类别编号 + */ + private String newType; + /** + * 大类_中文 + */ + private String bigCategoryCn; + /** + * 中类_中文 + */ + private String midCategoryCn; + /** + * 小类_中文 + */ + private String subCategoryCn; + /** + * 大类_英文 + */ + private String bigCategoryEn; + /** + * 中类_英文 + */ + private String midCategoryEn; + /** + * 小类_英文 + */ + private String subCategoryEn; + +} \ No newline at end of file diff --git a/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/dal/mysql/poitypes/PoiTypesMapper.java b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/dal/mysql/poitypes/PoiTypesMapper.java new file mode 100644 index 0000000000..d4caca2016 --- /dev/null +++ b/yudao-module-map/yudao-module-map-biz/src/main/java/cn/iocoder/yudao/module/map/dal/mysql/poitypes/PoiTypesMapper.java @@ -0,0 +1,57 @@ +package cn.iocoder.yudao.module.map.dal.mysql.poitypes; + +import java.util.*; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.module.map.dal.dataobject.poitypes.PoiTypesDO; +import org.apache.ibatis.annotations.Mapper; +import cn.iocoder.yudao.module.map.controller.admin.poitypes.vo.*; + +/** + * POI类型 Mapper + * + * @author 安 + */ +@Mapper +public interface PoiTypesMapper extends BaseMapperX { + + default PageResult selectPage(PoiTypesPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(PoiTypesDO::getDescription, reqVO.getDescription()) + .eqIfPresent(PoiTypesDO::getNewType, reqVO.getNewType()) + .likeIfPresent(PoiTypesDO::getBigCategoryCn, reqVO.getBigCategoryCn()) + .likeIfPresent(PoiTypesDO::getMidCategoryCn, reqVO.getMidCategoryCn()) + .likeIfPresent(PoiTypesDO::getSubCategoryCn, reqVO.getSubCategoryCn()) + .likeIfPresent(PoiTypesDO::getBigCategoryEn, reqVO.getBigCategoryEn()) + .likeIfPresent(PoiTypesDO::getMidCategoryEn, reqVO.getMidCategoryEn()) + .likeIfPresent(PoiTypesDO::getSubCategoryEn, reqVO.getSubCategoryEn()) + .betweenIfPresent(PoiTypesDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(PoiTypesDO::getId)); + } + + // 根据分词查询的list结果,对每一个词进行CategoryCn字段的查询,返回NewType查询集合 + default List selectByWords(List words) { + LambdaQueryWrapperX pt = new LambdaQueryWrapperX(); + // 循环添加查询条件 用or语句 + boolean firstOr = true; + for (String word : words) { + if (firstOr) { + pt.like(PoiTypesDO::getBigCategoryCn, word) + .or() + .like(PoiTypesDO::getMidCategoryCn, word) + .or() + .like(PoiTypesDO::getSubCategoryCn, word); + firstOr = false; + } else { + pt.or().like(PoiTypesDO::getBigCategoryCn, word) + .or() + .like(PoiTypesDO::getMidCategoryCn, word) + .or() + .like(PoiTypesDO::getSubCategoryCn, word); + } + } + return selectList(pt); + } +} \ No newline at end of file diff --git a/yudao-module-map/yudao-module-map-biz/src/main/resources/mapper/poitypes/PoiTypesMapper.xml b/yudao-module-map/yudao-module-map-biz/src/main/resources/mapper/poitypes/PoiTypesMapper.xml new file mode 100644 index 0000000000..5ccb63c721 --- /dev/null +++ b/yudao-module-map/yudao-module-map-biz/src/main/resources/mapper/poitypes/PoiTypesMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file