地块模块

main
masong 2 years ago
parent 4b16da400c
commit bd5b62928d
  1. 3
      cjy-module-traceability/cjy-module-traceability-api/src/main/java/com/cjy/traceability/module/traceability/enums/ErrorCodeConstants.java
  2. 95
      cjy-module-traceability/cjy-module-traceability-biz/src/main/java/com/cjy/traceability/module/traceability/controller/admin/block/BlockController.java
  3. 61
      cjy-module-traceability/cjy-module-traceability-biz/src/main/java/com/cjy/traceability/module/traceability/controller/admin/block/vo/BlockCropReqVO.java
  4. 38
      cjy-module-traceability/cjy-module-traceability-biz/src/main/java/com/cjy/traceability/module/traceability/controller/admin/block/vo/BlockPageReqVO.java
  5. 48
      cjy-module-traceability/cjy-module-traceability-biz/src/main/java/com/cjy/traceability/module/traceability/controller/admin/block/vo/BlockRespVO.java
  6. 31
      cjy-module-traceability/cjy-module-traceability-biz/src/main/java/com/cjy/traceability/module/traceability/controller/admin/block/vo/BlockSaveReqVO.java
  7. 54
      cjy-module-traceability/cjy-module-traceability-biz/src/main/java/com/cjy/traceability/module/traceability/dal/dataobject/block/BlockDO.java
  8. 31
      cjy-module-traceability/cjy-module-traceability-biz/src/main/java/com/cjy/traceability/module/traceability/dal/mysql/block/BlockMapper.java
  9. 55
      cjy-module-traceability/cjy-module-traceability-biz/src/main/java/com/cjy/traceability/module/traceability/service/block/BlockService.java
  10. 74
      cjy-module-traceability/cjy-module-traceability-biz/src/main/java/com/cjy/traceability/module/traceability/service/block/BlockServiceImpl.java
  11. 12
      cjy-module-traceability/cjy-module-traceability-biz/src/main/resources/mapper/block/BlockMapper.xml

@ -11,4 +11,7 @@ public interface ErrorCodeConstants {
ErrorCode COMPANY_NOT_EXISTS = new ErrorCode( 001001, "企业信息不存在");
ErrorCode BASE_NOT_EXISTS = new ErrorCode(001003, "基地信息不存在");
ErrorCode BLOCK_NOT_EXISTS = new ErrorCode(001004, "地块信息不存在");
}

@ -0,0 +1,95 @@
package com.cjy.traceability.module.traceability.controller.admin.block;
import org.springframework.web.bind.annotation.*;
import javax.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 javax.validation.constraints.*;
import javax.validation.*;
import javax.servlet.http.*;
import java.util.*;
import java.io.IOException;
import com.cjy.traceability.framework.common.pojo.PageParam;
import com.cjy.traceability.framework.common.pojo.PageResult;
import com.cjy.traceability.framework.common.pojo.CommonResult;
import com.cjy.traceability.framework.common.util.object.BeanUtils;
import static com.cjy.traceability.framework.common.pojo.CommonResult.success;
import com.cjy.traceability.framework.excel.core.util.ExcelUtils;
import com.cjy.traceability.framework.operatelog.core.annotations.OperateLog;
import static com.cjy.traceability.framework.operatelog.core.enums.OperateTypeEnum.*;
import com.cjy.traceability.module.traceability.controller.admin.block.vo.*;
import com.cjy.traceability.module.traceability.dal.dataobject.block.BlockDO;
import com.cjy.traceability.module.traceability.service.block.BlockService;
@Tag(name = "管理后台 - 地块信息")
@RestController
@RequestMapping("/traceability/block")
@Validated
public class BlockController {
@Resource
private BlockService blockService;
@PostMapping("/create")
@Operation(summary = "创建地块信息")
@PreAuthorize("@ss.hasPermission('traceability:block:create')")
public CommonResult<Integer> createBlock(@Valid @RequestBody BlockSaveReqVO createReqVO) {
return success(blockService.createBlock(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新地块信息")
@PreAuthorize("@ss.hasPermission('traceability:block:update')")
public CommonResult<Boolean> updateBlock(@Valid @RequestBody BlockSaveReqVO updateReqVO) {
blockService.updateBlock(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除地块信息")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('traceability:block:delete')")
public CommonResult<Boolean> deleteBlock(@RequestParam("id") Integer id) {
blockService.deleteBlock(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得地块信息")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('traceability:block:query')")
public CommonResult<BlockRespVO> getBlock(@RequestParam("id") Integer id) {
BlockDO block = blockService.getBlock(id);
return success(BeanUtils.toBean(block, BlockRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得地块信息分页")
@PreAuthorize("@ss.hasPermission('traceability:block:query')")
public CommonResult<PageResult<BlockRespVO>> getBlockPage(@Valid BlockPageReqVO pageReqVO) {
PageResult<BlockDO> pageResult = blockService.getBlockPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, BlockRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出地块信息 Excel")
@PreAuthorize("@ss.hasPermission('traceability:block:export')")
@OperateLog(type = EXPORT)
public void exportBlockExcel(@Valid BlockPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<BlockDO> list = blockService.getBlockPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "地块信息.xls", "数据", BlockRespVO.class,
BeanUtils.toBean(list, BlockRespVO.class));
}
}

@ -0,0 +1,61 @@
package com.cjy.traceability.module.traceability.controller.admin.block.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.TableId;
import com.cjy.traceability.framework.excel.core.annotations.DictFormat;
import com.cjy.traceability.framework.excel.core.convert.DictConvert;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* 地块农作物相关信息
*/
@Schema(description = "管理后台 - 地块作物信息 Response VO")
@Data
@ExcelIgnoreUnannotated
public class BlockCropReqVO {
@Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "3899")
@ExcelProperty("主键ID")
private Integer id;
@Schema(description = "地块名", example = "张三")
@ExcelProperty("地块名")
private String blockName;
@Schema(description = "标识颜色")
@ExcelProperty("标识颜色")
private String blockColor;
@Schema(description = "地块类型", example = "1")
@ExcelProperty(value = "地块类型", converter = DictConvert.class)
@DictFormat("land_type") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
private String blockType;
@Schema(description = "地块面积")
@ExcelProperty("地块面积")
private BigDecimal blockArea;
@Schema(description = "经纬度信息")
@ExcelProperty("经纬度信息")
private String positionStr;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
/**
* 种养品种
*/
@Schema(description = "种养品种",requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("种养品种")
private Integer speciesId;
/**
* 认证图片
*/
@Schema(description = "认证图片",requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("认证图片")
private String authenticationPic;
}

@ -0,0 +1,38 @@
package com.cjy.traceability.module.traceability.controller.admin.block.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import com.cjy.traceability.framework.common.pojo.PageParam;
import java.math.BigDecimal;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static com.cjy.traceability.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 BlockPageReqVO extends PageParam {
@Schema(description = "地块名", example = "张三")
private String blockName;
@Schema(description = "标识颜色")
private String blockColor;
@Schema(description = "地块类型", example = "1")
private String blockType;
@Schema(description = "地块面积")
private BigDecimal blockArea;
@Schema(description = "经纬度信息")
private String positionStr;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
}

@ -0,0 +1,48 @@
package com.cjy.traceability.module.traceability.controller.admin.block.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.util.*;
import java.math.BigDecimal;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;
import com.cjy.traceability.framework.excel.core.annotations.DictFormat;
import com.cjy.traceability.framework.excel.core.convert.DictConvert;
@Schema(description = "管理后台 - 地块信息 Response VO")
@Data
@ExcelIgnoreUnannotated
public class BlockRespVO {
@Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "3899")
@ExcelProperty("主键ID")
private Integer id;
@Schema(description = "地块名", example = "张三")
@ExcelProperty("地块名")
private String blockName;
@Schema(description = "标识颜色")
@ExcelProperty("标识颜色")
private String blockColor;
@Schema(description = "地块类型", example = "1")
@ExcelProperty(value = "地块类型", converter = DictConvert.class)
@DictFormat("land_type") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
private String blockType;
@Schema(description = "地块面积")
@ExcelProperty("地块面积")
private BigDecimal blockArea;
@Schema(description = "经纬度信息")
@ExcelProperty("经纬度信息")
private String positionStr;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
}

@ -0,0 +1,31 @@
package com.cjy.traceability.module.traceability.controller.admin.block.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import javax.validation.constraints.*;
import java.math.BigDecimal;
@Schema(description = "管理后台 - 地块信息新增/修改 Request VO")
@Data
public class BlockSaveReqVO {
@Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "3899")
private Integer id;
@Schema(description = "地块名", example = "张三")
private String blockName;
@Schema(description = "标识颜色")
private String blockColor;
@Schema(description = "地块类型", example = "1")
private String blockType;
@Schema(description = "地块面积")
private BigDecimal blockArea;
@Schema(description = "经纬度信息")
private String positionStr;
}

@ -0,0 +1,54 @@
package com.cjy.traceability.module.traceability.dal.dataobject.block;
import lombok.*;
import java.util.*;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import com.cjy.traceability.framework.mybatis.core.dataobject.BaseDO;
/**
* 地块信息 DO
*
* @author 芋道源码
*/
@TableName("traceability_block")
@KeySequence("traceability_block_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class BlockDO extends BaseDO {
/**
* 主键ID
*/
@TableId
private Integer id;
/**
* 地块名
*/
private String blockName;
/**
* 标识颜色
*/
private String blockColor;
/**
* 地块类型
*
* 枚举 {@link TODO land_type 对应的类}
*/
private String blockType;
/**
* 地块面积
*/
private BigDecimal blockArea;
/**
* 经纬度信息
*/
private String positionStr;
}

@ -0,0 +1,31 @@
package com.cjy.traceability.module.traceability.dal.mysql.block;
import java.util.*;
import com.cjy.traceability.framework.common.pojo.PageResult;
import com.cjy.traceability.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.cjy.traceability.framework.mybatis.core.mapper.BaseMapperX;
import com.cjy.traceability.module.traceability.dal.dataobject.block.BlockDO;
import org.apache.ibatis.annotations.Mapper;
import com.cjy.traceability.module.traceability.controller.admin.block.vo.*;
/**
* 地块信息 Mapper
*
* @author 芋道源码
*/
@Mapper
public interface BlockMapper extends BaseMapperX<BlockDO> {
default PageResult<BlockDO> selectPage(BlockPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<BlockDO>()
.likeIfPresent(BlockDO::getBlockName, reqVO.getBlockName())
.eqIfPresent(BlockDO::getBlockColor, reqVO.getBlockColor())
.eqIfPresent(BlockDO::getBlockType, reqVO.getBlockType())
.eqIfPresent(BlockDO::getBlockArea, reqVO.getBlockArea())
.eqIfPresent(BlockDO::getPositionStr, reqVO.getPositionStr())
.betweenIfPresent(BlockDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(BlockDO::getId));
}
}

@ -0,0 +1,55 @@
package com.cjy.traceability.module.traceability.service.block;
import java.util.*;
import javax.validation.*;
import com.cjy.traceability.module.traceability.controller.admin.block.vo.*;
import com.cjy.traceability.module.traceability.dal.dataobject.block.BlockDO;
import com.cjy.traceability.framework.common.pojo.PageResult;
import com.cjy.traceability.framework.common.pojo.PageParam;
/**
* 地块信息 Service 接口
*
* @author 芋道源码
*/
public interface BlockService {
/**
* 创建地块信息
*
* @param createReqVO 创建信息
* @return 编号
*/
Integer createBlock(@Valid BlockSaveReqVO createReqVO);
/**
* 更新地块信息
*
* @param updateReqVO 更新信息
*/
void updateBlock(@Valid BlockSaveReqVO updateReqVO);
/**
* 删除地块信息
*
* @param id 编号
*/
void deleteBlock(Integer id);
/**
* 获得地块信息
*
* @param id 编号
* @return 地块信息
*/
BlockDO getBlock(Integer id);
/**
* 获得地块信息分页
*
* @param pageReqVO 分页查询
* @return 地块信息分页
*/
PageResult<BlockDO> getBlockPage(BlockPageReqVO pageReqVO);
}

@ -0,0 +1,74 @@
package com.cjy.traceability.module.traceability.service.block;
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 com.cjy.traceability.module.traceability.controller.admin.block.vo.*;
import com.cjy.traceability.module.traceability.dal.dataobject.block.BlockDO;
import com.cjy.traceability.framework.common.pojo.PageResult;
import com.cjy.traceability.framework.common.pojo.PageParam;
import com.cjy.traceability.framework.common.util.object.BeanUtils;
import com.cjy.traceability.module.traceability.dal.mysql.block.BlockMapper;
import static com.cjy.traceability.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.cjy.traceability.module.traceability.enums.ErrorCodeConstants.*;
/**
* 地块信息 Service 实现类
*
* @author 芋道源码
*/
@Service
@Validated
public class BlockServiceImpl implements BlockService {
@Resource
private BlockMapper blockMapper;
@Override
public Integer createBlock(BlockSaveReqVO createReqVO) {
// 插入
BlockDO block = BeanUtils.toBean(createReqVO, BlockDO.class);
blockMapper.insert(block);
// 返回
return block.getId();
}
@Override
public void updateBlock(BlockSaveReqVO updateReqVO) {
// 校验存在
validateBlockExists(updateReqVO.getId());
// 更新
BlockDO updateObj = BeanUtils.toBean(updateReqVO, BlockDO.class);
blockMapper.updateById(updateObj);
}
@Override
public void deleteBlock(Integer id) {
// 校验存在
validateBlockExists(id);
// 删除
blockMapper.deleteById(id);
}
private void validateBlockExists(Integer id) {
if (blockMapper.selectById(id) == null) {
throw exception(BLOCK_NOT_EXISTS);
}
}
@Override
public BlockDO getBlock(Integer id) {
return blockMapper.selectById(id);
}
@Override
public PageResult<BlockDO> getBlockPage(BlockPageReqVO pageReqVO) {
return blockMapper.selectPage(pageReqVO);
}
}

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.cjy.traceability.module.traceability.dal.mysql.block.BlockMapper">
<!--
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
-->
</mapper>
Loading…
Cancel
Save