feat: 新增混凝土比例相关接口

This commit is contained in:
han0
2025-01-15 10:32:00 +08:00
parent 7305f10fb5
commit 14b29c67c3
12 changed files with 618 additions and 0 deletions

View File

@@ -0,0 +1,84 @@
package mjkf.xinke.main.modular.ratioconcrete.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import mjkf.xinke.common.annotation.CommonLog;
import mjkf.xinke.common.pojo.CommonResult;
import mjkf.xinke.common.pojo.CommonValidList;
import mjkf.xinke.main.modular.ratioconcrete.entity.RatioConcrete;
import mjkf.xinke.main.modular.ratioconcrete.param.RatioConcreteAddParam;
import mjkf.xinke.main.modular.ratioconcrete.param.RatioConcreteEditParam;
import mjkf.xinke.main.modular.ratioconcrete.param.RatioConcreteIdParam;
import mjkf.xinke.main.modular.ratioconcrete.param.RatioConcretePageParam;
import mjkf.xinke.main.modular.ratioconcrete.service.RatioConcreteService;
import javax.annotation.Resource;
import javax.validation.Valid;
import javax.validation.constraints.NotEmpty;
@Api(tags = "混凝土比例控制器")
@ApiSupport(author = "SNOWY_TEAM", order = 1)
@RestController
@Validated
public class RatioConcreteController {
@Resource
private RatioConcreteService ratioConcreteService;
@ApiOperationSupport(order = 1)
@ApiOperation("获取混凝土比例分页")
@SaCheckPermission("/main/ratioconcrete/page")
@GetMapping("/main/ratioconcrete/page")
public CommonResult<Page<RatioConcrete>> page(RatioConcretePageParam ratioConcretePageParam) {
return CommonResult.data(ratioConcreteService.page(ratioConcretePageParam));
}
@ApiOperationSupport(order = 2)
@ApiOperation("添加混凝土比例")
@CommonLog("添加混凝土比例")
@SaCheckPermission("/main/ratioconcrete/add")
@PostMapping("/main/ratioconcrete/add")
public CommonResult<String> add(@RequestBody @Valid RatioConcreteAddParam ratioConcreteAddParam) {
ratioConcreteService.add(ratioConcreteAddParam);
return CommonResult.ok();
}
@ApiOperationSupport(order = 3)
@ApiOperation("编辑混凝土比例")
@CommonLog("编辑混凝土比例")
@SaCheckPermission("/main/ratioconcrete/edit")
@PostMapping("/main/ratioconcrete/edit")
public CommonResult<String> edit(@RequestBody @Valid RatioConcreteEditParam ratioConcreteEditParam) {
ratioConcreteService.edit(ratioConcreteEditParam);
return CommonResult.ok();
}
@ApiOperationSupport(order = 4)
@ApiOperation("删除混凝土比例")
@CommonLog("删除混凝土比例")
@SaCheckPermission("/main/ratioconcrete/delete")
@PostMapping("/main/ratioconcrete/delete")
public CommonResult<String> delete(@RequestBody @Valid @NotEmpty(message = "集合不能为空")
CommonValidList<RatioConcreteIdParam> ratioConcreteIdParamList) {
ratioConcreteService.delete(ratioConcreteIdParamList);
return CommonResult.ok();
}
@ApiOperationSupport(order = 5)
@ApiOperation("获取混凝土比例详情")
@SaCheckPermission("/main/ratioconcrete/detail")
@GetMapping("/main/ratioconcrete/detail")
public CommonResult<RatioConcrete> detail(@Valid RatioConcreteIdParam ratioConcreteIdParam) {
return CommonResult.data(ratioConcreteService.detail(ratioConcreteIdParam));
}
}

View File

@@ -0,0 +1,88 @@
package mjkf.xinke.main.modular.ratioconcrete.entity;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.math.BigDecimal;
import java.util.Date;
/**
* 混凝土比例实体
*
* @author han0
* @date 2025/01/15 10:23
**/
@Getter
@Setter
@TableName("ratio_concrete")
public class RatioConcrete {
/** id */
@TableId
@ApiModelProperty(value = "id", position = 1)
private String id;
/** 名称 */
@ApiModelProperty(value = "名称", position = 2)
private String name;
/** 粒径 */
@ApiModelProperty(value = "粒径", position = 3)
private String rockSize;
/** 混凝土强度等级 */
@ApiModelProperty(value = "混凝土强度等级", position = 4)
private String concreteStrength;
/** 水泥强度等级 */
@ApiModelProperty(value = "水泥强度等级", position = 5)
private String cementStrength;
/** 水泥 */
@ApiModelProperty(value = "水泥", position = 6)
private String ratioCement;
/** 中粗砂 */
@ApiModelProperty(value = "中粗砂", position = 7)
private String ratioSand;
/** 碎砾石 */
@ApiModelProperty(value = "碎砾石", position = 8)
private String ratioRock;
/** 片石 */
@ApiModelProperty(value = "片石", position = 9)
private String ratioRubble;
/** 租户id */
@ApiModelProperty(value = "租户id", position = 10)
private String tenantId;
/** 删除标志 */
@ApiModelProperty(value = "删除标志", position = 11)
@TableLogic
@TableField(fill = FieldFill.INSERT)
private String deleteFlag;
/** 创建时间 */
@ApiModelProperty(value = "创建时间", position = 12)
@TableField(fill = FieldFill.INSERT)
private Date createTime;
/** 创建用户 */
@ApiModelProperty(value = "创建用户", position = 13)
@TableField(fill = FieldFill.INSERT)
private String createUser;
/** 更新时间 */
@ApiModelProperty(value = "更新时间", position = 14)
@TableField(fill = FieldFill.UPDATE)
private Date updateTime;
/** 更新人 */
@ApiModelProperty(value = "更新人", position = 15)
@TableField(fill = FieldFill.UPDATE)
private String updateUser;
}

View File

@@ -0,0 +1,23 @@
package mjkf.xinke.main.modular.ratioconcrete.enums;
import lombok.Getter;
/**
* 混凝土比例枚举
*
* @author han0
* @date 2025/01/15 10:23
**/
@Getter
public enum RatioConcreteEnum {
/** 测试 */
TEST("TEST");
private final String value;
RatioConcreteEnum(String value) {
this.value = value;
}
}

View File

@@ -0,0 +1,14 @@
package mjkf.xinke.main.modular.ratioconcrete.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import mjkf.xinke.main.modular.ratioconcrete.entity.RatioConcrete;
/**
* 混凝土比例Mapper接口
*
* @author han0
* @date 2025/01/15 10:23
**/
public interface RatioConcreteMapper extends BaseMapper<RatioConcrete> {
}

View File

@@ -0,0 +1,5 @@
<?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="mjkf.xinke.main.modular.ratioconcrete.mapper.RatioConcreteMapper">
</mapper>

View File

@@ -0,0 +1,55 @@
package mjkf.xinke.main.modular.ratioconcrete.param;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Date;
/**
* 混凝土比例添加参数
*
* @author han0
* @date 2025/01/15 10:23
**/
@Getter
@Setter
public class RatioConcreteAddParam {
/** 名称 */
@ApiModelProperty(value = "名称", position = 2)
private String name;
/** 粒径 */
@ApiModelProperty(value = "粒径", position = 3)
private String rockSize;
/** 混凝土强度等级 */
@ApiModelProperty(value = "混凝土强度等级", position = 4)
private String concreteStrength;
/** 水泥强度等级 */
@ApiModelProperty(value = "水泥强度等级", position = 5)
private String cementStrength;
/** 水泥 */
@ApiModelProperty(value = "水泥", position = 6)
private String ratioCement;
/** 中粗砂 */
@ApiModelProperty(value = "中粗砂", position = 7)
private String ratioSand;
/** 碎砾石 */
@ApiModelProperty(value = "碎砾石", position = 8)
private String ratioRock;
/** 片石 */
@ApiModelProperty(value = "片石", position = 9)
private String ratioRubble;
}

View File

@@ -0,0 +1,60 @@
package mjkf.xinke.main.modular.ratioconcrete.param;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Date;
/**
* 混凝土比例编辑参数
*
* @author han0
* @date 2025/01/15 10:23
**/
@Getter
@Setter
public class RatioConcreteEditParam {
/** id */
@ApiModelProperty(value = "id", required = true, position = 1)
@NotBlank(message = "id不能为空")
private String id;
/** 名称 */
@ApiModelProperty(value = "名称", position = 2)
private String name;
/** 粒径 */
@ApiModelProperty(value = "粒径", position = 3)
private String rockSize;
/** 混凝土强度等级 */
@ApiModelProperty(value = "混凝土强度等级", position = 4)
private String concreteStrength;
/** 水泥强度等级 */
@ApiModelProperty(value = "水泥强度等级", position = 5)
private String cementStrength;
/** 水泥 */
@ApiModelProperty(value = "水泥", position = 6)
private String ratioCement;
/** 中粗砂 */
@ApiModelProperty(value = "中粗砂", position = 7)
private String ratioSand;
/** 碎砾石 */
@ApiModelProperty(value = "碎砾石", position = 8)
private String ratioRock;
/** 片石 */
@ApiModelProperty(value = "片石", position = 9)
private String ratioRubble;
}

View File

@@ -0,0 +1,24 @@
package mjkf.xinke.main.modular.ratioconcrete.param;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotBlank;
/**
* 混凝土比例Id参数
*
* @author han0
* @date 2025/01/15 10:23
**/
@Getter
@Setter
public class RatioConcreteIdParam {
/** id */
@ApiModelProperty(value = "id", required = true)
@NotBlank(message = "id不能为空")
private String id;
}

View File

@@ -0,0 +1,56 @@
package mjkf.xinke.main.modular.ratioconcrete.param;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.math.BigDecimal;
import java.util.Date;
/**
* 混凝土比例查询参数
*
* @author han0
* @date 2025/01/15 10:23
**/
@Getter
@Setter
public class RatioConcretePageParam {
/** 当前页 */
@ApiModelProperty(value = "当前页码")
private Integer current;
/** 每页条数 */
@ApiModelProperty(value = "每页条数")
private Integer size;
/** 排序字段 */
@ApiModelProperty(value = "排序字段字段驼峰名称userName")
private String sortField;
/** 排序方式 */
@ApiModelProperty(value = "排序方式升序ASCEND降序DESCEND")
private String sortOrder;
/** 关键词 */
@ApiModelProperty(value = "关键词")
private String searchKey;
/** 名称 */
@ApiModelProperty(value = "名称")
private String name;
/** 粒径 */
@ApiModelProperty(value = "粒径")
private String rockSize;
/** 混凝土强度等级 */
@ApiModelProperty(value = "混凝土强度等级")
private String concreteStrength;
/** 水泥强度等级 */
@ApiModelProperty(value = "水泥强度等级")
private String cementStrength;
}

View File

@@ -0,0 +1,96 @@
package mjkf.xinke.main.modular.ratioconcrete.service;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollStreamUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import mjkf.xinke.common.enums.CommonSortOrderEnum;
import mjkf.xinke.common.exception.CommonException;
import mjkf.xinke.common.page.CommonPageRequest;
import mjkf.xinke.main.modular.ratioconcrete.entity.RatioConcrete;
import mjkf.xinke.main.modular.ratioconcrete.param.RatioConcreteAddParam;
import mjkf.xinke.main.modular.ratioconcrete.param.RatioConcreteEditParam;
import mjkf.xinke.main.modular.ratioconcrete.param.RatioConcreteIdParam;
import mjkf.xinke.main.modular.ratioconcrete.param.RatioConcretePageParam;
import java.io.Serializable;
import java.util.List;
/**
* 混凝土比例Service 类
**/
@Service
public class RatioConcreteService extends ServiceImpl<BaseMapper<RatioConcrete>, RatioConcrete> {
public Page<RatioConcrete> page(RatioConcretePageParam ratioConcretePageParam) {
QueryWrapper queryWrapper = this.getQuery(ratioConcretePageParam);
return this.page(CommonPageRequest.defaultPage(), queryWrapper);
}
public QueryWrapper<RatioConcrete> getQuery(RatioConcretePageParam ratioConcretePageParam) {
QueryWrapper<RatioConcrete> queryWrapper = new QueryWrapper<>();
if(ObjectUtil.isNotEmpty(ratioConcretePageParam.getName())) {
queryWrapper.lambda().like(RatioConcrete::getName, ratioConcretePageParam.getName());
}
if(ObjectUtil.isNotEmpty(ratioConcretePageParam.getRockSize())) {
queryWrapper.lambda().like(RatioConcrete::getRockSize, ratioConcretePageParam.getRockSize());
}
if(ObjectUtil.isNotEmpty(ratioConcretePageParam.getConcreteStrength())) {
queryWrapper.lambda().like(RatioConcrete::getConcreteStrength, ratioConcretePageParam.getConcreteStrength());
}
if(ObjectUtil.isNotEmpty(ratioConcretePageParam.getCementStrength())) {
queryWrapper.lambda().like(RatioConcrete::getCementStrength, ratioConcretePageParam.getCementStrength());
}
if(ObjectUtil.isAllNotEmpty(ratioConcretePageParam.getSortField(), ratioConcretePageParam.getSortOrder())) {
CommonSortOrderEnum.validate(ratioConcretePageParam.getSortOrder());
queryWrapper.orderBy(true, ratioConcretePageParam.getSortOrder().equals(CommonSortOrderEnum.ASC.getValue()),
StrUtil.toUnderlineCase(ratioConcretePageParam.getSortField()));
} else {
queryWrapper.lambda().orderByAsc(RatioConcrete::getId);
}
return queryWrapper;
}
@Transactional(rollbackFor = Exception.class)
public RatioConcrete add(RatioConcreteAddParam ratioConcreteAddParam) {
RatioConcrete ratioConcrete = BeanUtil.toBean(ratioConcreteAddParam, RatioConcrete.class);
this.save(ratioConcrete);
return ratioConcrete;
}
@Transactional(rollbackFor = Exception.class)
public RatioConcrete edit(RatioConcreteEditParam ratioConcreteEditParam) {
RatioConcrete ratioConcrete = this.queryEntity(ratioConcreteEditParam.getId());
BeanUtil.copyProperties(ratioConcreteEditParam, ratioConcrete);
this.updateById(ratioConcrete);
return ratioConcrete;
}
@Transactional(rollbackFor = Exception.class)
public void delete(List<RatioConcreteIdParam> ratioConcreteIdParamList) {
for (var id : CollStreamUtil.toList(ratioConcreteIdParamList, RatioConcreteIdParam::getId)) {
this.removeById(id);
}
}
public RatioConcrete detail(RatioConcreteIdParam ratioConcreteIdParam) {
return this.queryEntity(ratioConcreteIdParam.getId());
}
public RatioConcrete queryEntity(Serializable id) {
RatioConcrete ratioConcrete = this.getById(id);
if(ObjectUtil.isEmpty(ratioConcrete)) {
throw new CommonException("混凝土比例不存在id值为{}", id);
}
return ratioConcrete;
}
}