diff --git a/src/main/java/com/gunshi/project/xyt/controller/BasicDataController.java b/src/main/java/com/gunshi/project/xyt/controller/BasicDataController.java index 9b0df7e..b0041b4 100644 --- a/src/main/java/com/gunshi/project/xyt/controller/BasicDataController.java +++ b/src/main/java/com/gunshi/project/xyt/controller/BasicDataController.java @@ -208,4 +208,5 @@ public class BasicDataController { } + } diff --git a/src/main/java/com/gunshi/project/xyt/entity/basedata/CheckStringSearch.java b/src/main/java/com/gunshi/project/xyt/entity/basedata/CheckStringSearch.java index 7e5beaf..615f8d4 100644 --- a/src/main/java/com/gunshi/project/xyt/entity/basedata/CheckStringSearch.java +++ b/src/main/java/com/gunshi/project/xyt/entity/basedata/CheckStringSearch.java @@ -2,6 +2,7 @@ package com.gunshi.project.xyt.entity.basedata; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; +import lombok.Builder; import lombok.Data; /** @@ -11,6 +12,7 @@ import lombok.Data; */ @Data +@Builder @Schema(description = "表单参数校验对象") public class CheckStringSearch { @Schema(description="编码/名称/关键词") diff --git a/src/main/java/com/gunshi/project/xyt/mapper/StMoncrBMapper.java b/src/main/java/com/gunshi/project/xyt/mapper/StMoncrBMapper.java index 39b91fc..3c15e47 100644 --- a/src/main/java/com/gunshi/project/xyt/mapper/StMoncrBMapper.java +++ b/src/main/java/com/gunshi/project/xyt/mapper/StMoncrBMapper.java @@ -1,6 +1,8 @@ package com.gunshi.project.xyt.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.project.xyt.entity.basedata.GeneralSearch; import com.gunshi.project.xyt.model.StMoncrB; import java.util.List; import org.apache.ibatis.annotations.Mapper; @@ -9,4 +11,6 @@ import org.apache.ibatis.annotations.Param; @Mapper public interface StMoncrBMapper extends BaseMapper { int batchInsert(@Param("list") List list); + + Page queryBySearch(Page page, @Param("obj") GeneralSearch search); } \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/xyt/model/StMoncrB.java b/src/main/java/com/gunshi/project/xyt/model/StMoncrB.java index ac86bec..1f9d856 100644 --- a/src/main/java/com/gunshi/project/xyt/model/StMoncrB.java +++ b/src/main/java/com/gunshi/project/xyt/model/StMoncrB.java @@ -7,10 +7,14 @@ import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.project.xyt.validate.markers.Update; import io.swagger.v3.oas.annotations.media.Schema; import java.io.Serializable; import java.util.Date; + +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; import lombok.Data; /** @@ -26,6 +30,7 @@ public class StMoncrB implements Serializable { @TableId(value = "CR_ID", type = IdType.INPUT) @Schema(description="断面ID") @JsonSerialize(using = ToStringSerializer.class) + @NotNull(message = "断面ID不能为空", groups = {Update.class}) private Long crId; /** @@ -33,6 +38,8 @@ public class StMoncrB implements Serializable { */ @TableField(value = "CR_CD") @Schema(description="断面编号") + @Size(max = 50,message = "断面编号长度不能超过50") + @NotNull private String crCd; /** @@ -40,6 +47,8 @@ public class StMoncrB implements Serializable { */ @TableField(value = "CR_NM") @Schema(description="断面名称") + @Size(max = 200,message = "断面名称长度不能超过200") + @NotNull private String crNm; /** @@ -48,6 +57,7 @@ public class StMoncrB implements Serializable { @TableField(value = "CR_IMG_ID") @Schema(description="断面平面图 文件ID") @JsonSerialize(using = ToStringSerializer.class) + @NotNull private Long crImgId; /** @@ -62,6 +72,7 @@ public class StMoncrB implements Serializable { */ @TableField(value = "[STATUS]") @Schema(description="状态 1:启用 0:禁用") + @NotNull private Integer status; /** diff --git a/src/main/java/com/gunshi/project/xyt/service/StMoncrService.java b/src/main/java/com/gunshi/project/xyt/service/StMoncrService.java new file mode 100644 index 0000000..8fec074 --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/service/StMoncrService.java @@ -0,0 +1,89 @@ +package com.gunshi.project.xyt.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.project.xyt.entity.basedata.CheckStringSearch; +import com.gunshi.project.xyt.entity.basedata.GeneralSearch; +import com.gunshi.project.xyt.mapper.StMoncrBMapper; +import com.gunshi.project.xyt.model.StMoncrB; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; + +/** + * @author Sun Lejun + * @version 1.0 + * @date 2024/1/26 + */ + +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +@Data +public class StMoncrService { + private final StMoncrBMapper stMoncrBMapper; + + + public Page queryBySearch(Page page, GeneralSearch search){ + return stMoncrBMapper.queryBySearch(page, search); + } + + /** + * 新增监测断面 + * @param stMoncrB 监测断面对象 + */ + public void insert(StMoncrB stMoncrB) { + CheckStringSearch checkStringSearch = CheckStringSearch.builder() + .keyword(stMoncrB.getCrCd()).build(); + checkCode(checkStringSearch); + stMoncrB.setCrId(IdWorker.getId()); + stMoncrB.setSortOn(getMaxSortOn()); + stMoncrB.setTm(new Date()); + stMoncrBMapper.insert(stMoncrB); + } + + /** + * 更新监测断面 + * @param stMoncrB 监测断面对象 + */ + public void update(StMoncrB stMoncrB) { + CheckStringSearch checkStringSearch = CheckStringSearch.builder() + .keyword(stMoncrB.getCrCd()).id(stMoncrB.getCrId()).build(); + checkCode(checkStringSearch); + stMoncrB.setTm(new Date()); + stMoncrBMapper.updateById(stMoncrB); + } + + public int getMaxSortOn(){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(StMoncrB.COL_STATUS, 1); + queryWrapper.orderByDesc(StMoncrB.COL_SORT_ON); + StMoncrB stMoncrB = stMoncrBMapper.selectOne(queryWrapper, false); + if(stMoncrB == null){ + return 1; + }else { + return stMoncrB.getSortOn() + 1; + } + } + + /** + * 检查断面编码是否存在 + * @param search 查询对象 + */ + public void checkCode(CheckStringSearch search){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(StMoncrB.COL_STATUS, 1); + queryWrapper.eq(StMoncrB.COL_CR_CD, search.getKeyword()); + if(search.getId() != null){ + queryWrapper.ne(StMoncrB.COL_CR_ID, search.getId()); + } + StMoncrB stMoncrB = stMoncrBMapper.selectOne(queryWrapper, false); + if(stMoncrB != null){ + throw new IllegalArgumentException("断面编码已存在"); + } + } +} diff --git a/src/main/resources/mapper/StMoncrBMapper.xml b/src/main/resources/mapper/StMoncrBMapper.xml index 449accd..daae2ea 100644 --- a/src/main/resources/mapper/StMoncrBMapper.xml +++ b/src/main/resources/mapper/StMoncrBMapper.xml @@ -27,4 +27,16 @@ #{item.tm,jdbcType=TIMESTAMP}) + + \ No newline at end of file