diff --git a/pom.xml b/pom.xml index d34587f..c6ab331 100644 --- a/pom.xml +++ b/pom.xml @@ -36,6 +36,22 @@ 3.3.2 + + org.junit.jupiter + junit-jupiter + test + + + org.springframework.boot + spring-boot-test + test + + + org.springframework + spring-test + 6.1.1 + test + diff --git a/src/main/java/com/gunshi/project/xyt/controller/BzProtocolInfoController.java b/src/main/java/com/gunshi/project/xyt/controller/BzProtocolInfoController.java index fbd5ba2..df762e5 100644 --- a/src/main/java/com/gunshi/project/xyt/controller/BzProtocolInfoController.java +++ b/src/main/java/com/gunshi/project/xyt/controller/BzProtocolInfoController.java @@ -8,6 +8,7 @@ import com.gunshi.project.xyt.service.ProtocolInfoService; import com.gunshi.project.xyt.so.BzProtocolInfoSo; import com.gunshi.project.xyt.validate.markers.Insert; import com.gunshi.project.xyt.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; @@ -24,7 +25,7 @@ import java.util.Date; */ @RestController @RequestMapping("/protocolInfo") -@Tag(name = "协议信息") +@Tag(name = "系统管理-统一接收-协议管理") public class BzProtocolInfoController { @Autowired private BzProtocolInfoAutoDao dao; @@ -32,6 +33,7 @@ public class BzProtocolInfoController { @Autowired private ProtocolInfoService service; + @Operation(summary = "新增协议信息") @PostMapping("/save") public R save(@Validated({Insert.class}) @RequestBody BzProtocolInfo entity) { // todo 无论是数据库设置默认值为GETDATE()还是使用注解fill = FieldFill.INSERT都不能自动插入当前时间 @@ -40,21 +42,25 @@ public class BzProtocolInfoController { return R.ok(dao.save(entity)); } + @Operation(summary = "更新协议信息") @PostMapping("/update") public R update(@Validated({Update.class}) @RequestBody BzProtocolInfo entity) { return R.ok(dao.updateById(entity)); } + @Operation(summary = "删除协议信息") @GetMapping("/delete/{id}") public R delete(@PathVariable String id) { return R.ok(dao.removeById(id)); } + @Operation(summary = "按id查询接口") @GetMapping("/get/{id}") public R getById(@PathVariable("id") String id) { return R.ok(dao.getById(id)); } + @Operation(summary = "分页查询接口") @PostMapping("/page") public R> page(@Validated @RequestBody BzProtocolInfoSo so) { return R.ok(service.page(so)); diff --git a/src/main/java/com/gunshi/project/xyt/controller/BzServiceResourceController.java b/src/main/java/com/gunshi/project/xyt/controller/BzServiceResourceController.java index 6baaaed..58074a9 100644 --- a/src/main/java/com/gunshi/project/xyt/controller/BzServiceResourceController.java +++ b/src/main/java/com/gunshi/project/xyt/controller/BzServiceResourceController.java @@ -16,6 +16,7 @@ import com.gunshi.project.xyt.validate.markers.QueryPage; import com.gunshi.project.xyt.validate.markers.QueryTimeRange; import com.gunshi.project.xyt.validate.markers.Update; import com.gunshi.project.xyt.vo.BzServiceResourceMonitorVo; +import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -33,7 +34,7 @@ import java.util.Date; */ @RestController @RequestMapping("/serviceResource") -@Tag(name = "服务资源及监控") +@Tag(name = "系统管理-数据共享服务-服务资源及监控") public class BzServiceResourceController { @Autowired @@ -45,6 +46,7 @@ public class BzServiceResourceController { @Autowired private BzServiceResourceTypeAutoDao serviceTypeDao; + @Operation(summary = "新增服务资源") @PostMapping("/save") public R save(@Validated(Insert.class) @RequestBody BzServiceResource entity) { entity.setId(IdWorker.getIdStr()); @@ -53,6 +55,7 @@ public class BzServiceResourceController { return R.ok(serviceResourceDao.save(entity)); } + @Operation(summary = "更新服务资源") @PostMapping("/update") public R update(@Validated(Update.class) @RequestBody BzServiceResource entity) { BzServiceResource byId = serviceResourceDao.getById(entity.getId()); @@ -64,11 +67,13 @@ public class BzServiceResourceController { return R.ok(serviceResourceDao.updateById(entity)); } + @Operation(summary = "删除服务资源") @GetMapping("/delete/{id}") public R delete(@PathVariable("id") String id) { return R.ok(serviceMonitorService.removeById(id)); } + @Operation(summary = "分页查询服务资源") @PostMapping("/page") public R> page( @Validated({QueryPage.class, QueryTimeRange.class}) @RequestBody BzServiceResourceSo so @@ -86,6 +91,7 @@ public class BzServiceResourceController { return R.ok(page); } + @Operation(summary = "分页查询服务资源监控") @PostMapping("/monitor/page") public R> pageMonitorR( @Validated({QueryPage.class, QueryTimeRange.class}) @RequestBody BzServiceResourceSo so @@ -94,22 +100,26 @@ public class BzServiceResourceController { return R.ok(page); } + @Operation(summary = "新增服务资源类型") @PostMapping("/type/save") public R saveType(@Validated(Insert.class) @RequestBody BzServiceResourceType entity) { entity.setId(IdWorker.getIdStr()); return R.ok(serviceTypeDao.save(entity)); } + @Operation(summary = "更新服务资源类型") @PostMapping("/type/update") public R updateType(@Validated(Update.class) @RequestBody BzServiceResourceType entity) { return R.ok(serviceTypeDao.updateById(entity)); } + @Operation(summary = "删除服务资源类型") @GetMapping("/type/delete/{id}") public R deleteType(@PathVariable("id") String id) { return R.ok(serviceTypeDao.removeById(id)); } + @Operation(summary = "分页查询服务资源类型") @PostMapping("/type/page") public R> pageType( @Validated({QueryPage.class}) @RequestBody BzServiceResourceTypeSo so diff --git a/src/main/java/com/gunshi/project/xyt/entity/basedata/StCameraAreaTreeVo.java b/src/main/java/com/gunshi/project/xyt/entity/basedata/StCameraAreaTreeVo.java new file mode 100644 index 0000000..d48715a --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/entity/basedata/StCameraAreaTreeVo.java @@ -0,0 +1,27 @@ +package com.gunshi.project.xyt.entity.basedata; + +import com.google.common.collect.Lists; +import com.gunshi.project.xyt.model.StCameraAreaB; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import java.io.Serializable; +import java.util.List; + +/** + * @author Sun Lejun + * @version 1.0 + * @date 2024/1/24 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class StCameraAreaTreeVo extends StCameraAreaB implements Serializable { + @Schema(description="子对象") + private List children = Lists.newArrayList(); + @Schema(description="监控点列表") + private List cameraList = Lists.newArrayList(); +} diff --git a/src/main/java/com/gunshi/project/xyt/entity/basedata/StCameraAreaVo.java b/src/main/java/com/gunshi/project/xyt/entity/basedata/StCameraAreaVo.java new file mode 100644 index 0000000..1949196 --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/entity/basedata/StCameraAreaVo.java @@ -0,0 +1,23 @@ +package com.gunshi.project.xyt.entity.basedata; + +import com.gunshi.project.xyt.model.StCameraAreaB; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import java.io.Serializable; + +/** + * @author Sun Lejun + * @version 1.0 + * @date 2024/1/24 + */ + +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Data +public class StCameraAreaVo extends StCameraAreaB implements Serializable { + @Schema(description="上级区域名称") + private String pidName; +} diff --git a/src/main/java/com/gunshi/project/xyt/entity/basedata/StCameraSearch.java b/src/main/java/com/gunshi/project/xyt/entity/basedata/StCameraSearch.java new file mode 100644 index 0000000..0749554 --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/entity/basedata/StCameraSearch.java @@ -0,0 +1,32 @@ +package com.gunshi.project.xyt.entity.basedata; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.io.Serializable; + +/** + * @author Sun Lejun + * @version 1.0 + * @date 2024/1/25 + */ + + +@Data +@Schema(description = "视频点查询对象") +public class StCameraSearch implements Serializable { + @Schema(description="关键词:名称") + private String keyword; + + @Schema(description="监控点类型") + @JsonSerialize(using = ToStringSerializer.class) + private Long camType; + + @Schema(description="页码") + private int page=1; + + @Schema(description="每页条数") + private int pageSize=999; +} diff --git a/src/main/java/com/gunshi/project/xyt/entity/basedata/StCameraVo.java b/src/main/java/com/gunshi/project/xyt/entity/basedata/StCameraVo.java new file mode 100644 index 0000000..5b91dd1 --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/entity/basedata/StCameraVo.java @@ -0,0 +1,24 @@ +package com.gunshi.project.xyt.entity.basedata; + +import com.gunshi.project.xyt.model.StCameraB; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +/** + * @author Sun Lejun + * @version 1.0 + * @date 2024/1/25 + */ + +@EqualsAndHashCode(callSuper = true) +@Data +@ToString(callSuper = true) +@Schema(description = "视频点信息返回值") +public class StCameraVo extends StCameraB { + @Schema(description = "视频区域名称") + private String camArNm; + @Schema(description = "视频类型名称") + private String camTypeNm; +} diff --git a/src/main/java/com/gunshi/project/xyt/entity/basedata/SysDictSearch.java b/src/main/java/com/gunshi/project/xyt/entity/basedata/SysDictSearch.java new file mode 100644 index 0000000..dd182f1 --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/entity/basedata/SysDictSearch.java @@ -0,0 +1,22 @@ +package com.gunshi.project.xyt.entity.basedata; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** + * @author Sun Lejun + * @version 1.0 + * @date 2024/1/25 + */ + +@Data +public class SysDictSearch { + @Schema(description="关键词:名称,编码") + private String keyword; + + @Schema(description="页码") + private int page=1; + + @Schema(description="每页条数") + private int pageSize=999; +} diff --git a/src/main/java/com/gunshi/project/xyt/entity/basedata/SysDictVo.java b/src/main/java/com/gunshi/project/xyt/entity/basedata/SysDictVo.java new file mode 100644 index 0000000..8ebd39a --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/entity/basedata/SysDictVo.java @@ -0,0 +1,25 @@ +package com.gunshi.project.xyt.entity.basedata; + +import com.google.common.collect.Lists; +import com.gunshi.project.xyt.model.SysDictB; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import java.io.Serializable; +import java.util.List; + +/** + * @author Sun Lejun + * @version 1.0 + * @date 2024/1/25 + */ + +@EqualsAndHashCode(callSuper = true) +@Data +@ToString(callSuper = true) +public class SysDictVo extends SysDictB implements Serializable { + @Schema(description="子类") + private List children = Lists.newArrayList(); +} diff --git a/src/main/java/com/gunshi/project/xyt/mapper/StCameraAreaBMapper.java b/src/main/java/com/gunshi/project/xyt/mapper/StCameraAreaBMapper.java index 717d954..f2c0c3d 100644 --- a/src/main/java/com/gunshi/project/xyt/mapper/StCameraAreaBMapper.java +++ b/src/main/java/com/gunshi/project/xyt/mapper/StCameraAreaBMapper.java @@ -1,6 +1,8 @@ package com.gunshi.project.xyt.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.xyt.entity.basedata.StCameraAreaTreeVo; +import com.gunshi.project.xyt.entity.basedata.StCameraAreaVo; import com.gunshi.project.xyt.model.StCameraAreaB; import java.util.List; import org.apache.ibatis.annotations.Mapper; @@ -9,4 +11,8 @@ import org.apache.ibatis.annotations.Param; @Mapper public interface StCameraAreaBMapper extends BaseMapper { int batchInsert(@Param("list") List list); + + List queryStCameraAreaBList(@Param("name") String name); + + List queryStCameraAreaBTree(); } \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/xyt/mapper/StCameraBMapper.java b/src/main/java/com/gunshi/project/xyt/mapper/StCameraBMapper.java index 823922c..9182d54 100644 --- a/src/main/java/com/gunshi/project/xyt/mapper/StCameraBMapper.java +++ b/src/main/java/com/gunshi/project/xyt/mapper/StCameraBMapper.java @@ -1,12 +1,39 @@ 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.StCameraSearch; +import com.gunshi.project.xyt.entity.basedata.StCameraVo; import com.gunshi.project.xyt.model.StCameraB; + import java.util.List; + import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @Mapper public interface StCameraBMapper extends BaseMapper { int batchInsert(@Param("list") List list); + + /** + * 检查视频序列化和名称是否存在 + * @param stCameraB 视频信息 + * @return true 存在 false 不存在 + */ + boolean chechExists(@Param("obj") StCameraB stCameraB); + + /** + * 按查询条件查询视频列表 + * @param page 分页信息 + * @param obj 查询条件 + * @return 视频列表 + */ + Page queryBySearch(Page page, @Param("obj") StCameraSearch obj); + + /** + * 查询所有视频 + * @return 视频列表 + */ + List getAll(); + } \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/xyt/mapper/SysDictBMapper.java b/src/main/java/com/gunshi/project/xyt/mapper/SysDictBMapper.java index a5e9971..f18e940 100644 --- a/src/main/java/com/gunshi/project/xyt/mapper/SysDictBMapper.java +++ b/src/main/java/com/gunshi/project/xyt/mapper/SysDictBMapper.java @@ -1,12 +1,37 @@ package com.gunshi.project.xyt.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.db.dao.IMapper; +import com.gunshi.project.xyt.entity.basedata.SysDictSearch; +import com.gunshi.project.xyt.entity.basedata.SysDictVo; import com.gunshi.project.xyt.model.SysDictB; import java.util.List; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @Mapper -public interface SysDictBMapper extends BaseMapper { +public interface SysDictBMapper extends IMapper { int batchInsert(@Param("list") List list); + + /** + * 检查顶层的字典,编码和名称是否存在 + * @param sysDictB 字典信息 + * @return true存在 false不存在 + */ + boolean checkExistCodeAndName(@Param("obj") SysDictB sysDictB); + + /** + * 根据名称和编码查询PID和ID + * @param search 查询条件 + * @return PID和ID + */ + Page queryPidBySearch(Page page, @Param("obj") SysDictSearch search); + + /** + * 根据PID和ID查询字典记录 + * @param id 字典ID or PID + * @return 字典 + */ + List queryByPidOrIds(@Param("obj") List id); } \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/xyt/model/StCameraAreaB.java b/src/main/java/com/gunshi/project/xyt/model/StCameraAreaB.java index ecab84a..c0f4883 100644 --- a/src/main/java/com/gunshi/project/xyt/model/StCameraAreaB.java +++ b/src/main/java/com/gunshi/project/xyt/model/StCameraAreaB.java @@ -1,9 +1,12 @@ package com.gunshi.project.xyt.model; +import com.baomidou.mybatisplus.annotation.FieldStrategy; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import io.swagger.v3.oas.annotations.media.Schema; import java.io.Serializable; @@ -26,6 +29,7 @@ public class StCameraAreaB implements Serializable { */ @TableId(value = "CAM_AR_ID", type = IdType.INPUT) @Schema(description="视频区域ID, 新增时候不需要,修改时候需要") + @JsonSerialize(using = ToStringSerializer.class) private Long camArId; @TableField(value = "CAM_AR_NM") @@ -37,6 +41,7 @@ public class StCameraAreaB implements Serializable { @TableField(value = "PID") @Schema(description="父ID") @NotNull + @JsonSerialize(using = ToStringSerializer.class) private Long pid; @TableField(value = "SORT_ON") @@ -54,7 +59,7 @@ public class StCameraAreaB implements Serializable { /** * 备注 */ - @TableField(value = "COMMENTS") + @TableField(value = "COMMENTS", updateStrategy= FieldStrategy.ALWAYS) @Schema(description="备注", requiredMode = Schema.RequiredMode.NOT_REQUIRED) @Size(max = 200) private String comments; diff --git a/src/main/java/com/gunshi/project/xyt/model/StCameraB.java b/src/main/java/com/gunshi/project/xyt/model/StCameraB.java index fc73868..615e11b 100644 --- a/src/main/java/com/gunshi/project/xyt/model/StCameraB.java +++ b/src/main/java/com/gunshi/project/xyt/model/StCameraB.java @@ -1,20 +1,27 @@ package com.gunshi.project.xyt.model; +import com.baomidou.mybatisplus.annotation.FieldStrategy; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import io.swagger.v3.oas.annotations.media.Schema; import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; + +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; import lombok.Data; /** * 视频点信息 */ -@Schema(description="视频点信息") +@Schema(description = "视频点信息") @Data @TableName(value = "dbo.ST_CAMERA_B") public class StCameraB implements Serializable { @@ -22,7 +29,8 @@ public class StCameraB implements Serializable { * 视频点id */ @TableId(value = "CAM_ID", type = IdType.INPUT) - @Schema(description="视频点id") + @Schema(description="视频点id", requiredMode = Schema.RequiredMode.NOT_REQUIRED) + @JsonSerialize(using = ToStringSerializer.class) private Long camId; /** @@ -30,6 +38,8 @@ public class StCameraB implements Serializable { */ @TableField(value = "CAM_NM") @Schema(description="视频点名称") + @NotBlank + @Size(max = 200) private String camNm; /** @@ -37,13 +47,15 @@ public class StCameraB implements Serializable { */ @TableField(value = "CAM_TYPE") @Schema(description="监控点类型") + @NotNull + @JsonSerialize(using = ToStringSerializer.class) private Long camType; /** * 通道号 */ - @TableField(value = "CAM_CH") - @Schema(description="通道号") + @TableField(value = "CAM_CH", updateStrategy= FieldStrategy.ALWAYS) + @Schema(description="通道号", requiredMode = Schema.RequiredMode.NOT_REQUIRED) private Integer camCh; /** @@ -51,6 +63,8 @@ public class StCameraB implements Serializable { */ @TableField(value = "CAM_AR_ID") @Schema(description="所在区域") + @NotNull + @JsonSerialize(using = ToStringSerializer.class) private Long camArId; /** @@ -58,6 +72,8 @@ public class StCameraB implements Serializable { */ @TableField(value = "CAM_URL") @Schema(description="摄像头连接地址 IP和端口") + @NotNull + @Size(max = 200) private String camUrl; /** @@ -65,6 +81,7 @@ public class StCameraB implements Serializable { */ @TableField(value = "CAM_SN") @Schema(description="视频序列号") + @NotBlank private String camSn; /** @@ -72,6 +89,7 @@ public class StCameraB implements Serializable { */ @TableField(value = "LGTD") @Schema(description="经度") + @NotNull private BigDecimal lgtd; /** @@ -79,27 +97,29 @@ public class StCameraB implements Serializable { */ @TableField(value = "LTTD") @Schema(description="纬度") + @NotNull private BigDecimal lttd; /** * 备注 */ - @TableField(value = "COMMENTS") - @Schema(description="备注") + @TableField(value = "COMMENTS", updateStrategy= FieldStrategy.ALWAYS) + @Schema(description="备注", requiredMode = Schema.RequiredMode.NOT_REQUIRED) + @Size(max = 200) private String comments; /** * 新建时间 */ @TableField(value = "CREATE_TM") - @Schema(description="新建时间") + @Schema(description="新建时间", requiredMode = Schema.RequiredMode.NOT_REQUIRED) private Date createTm; /** * 修改时间 */ @TableField(value = "TM") - @Schema(description="修改时间") + @Schema(description="修改时间", requiredMode = Schema.RequiredMode.NOT_REQUIRED) private Date tm; /** @@ -107,8 +127,17 @@ public class StCameraB implements Serializable { */ @TableField(value = "[STATUS]") @Schema(description="状态 1:启用 0:禁用") + @NotNull private Integer status; + /** + * 首页默认显示 1:显示 0:不显示 + */ + @TableField(value = "DEFAULT_SHOW") + @Schema(description = "首页默认显示 1:显示 0:不显示") + @NotNull + private Integer defaultShow; + public static final String COL_CAM_ID = "CAM_ID"; public static final String COL_CAM_NM = "CAM_NM"; @@ -134,4 +163,6 @@ public class StCameraB implements Serializable { public static final String COL_TM = "TM"; public static final String COL_STATUS = "STATUS"; + + public static final String COL_DEFAULT_SHOW = "DEFAULT_SHOW"; } \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/xyt/model/StDamB.java b/src/main/java/com/gunshi/project/xyt/model/StDamB.java index 28a5148..c29e2e7 100644 --- a/src/main/java/com/gunshi/project/xyt/model/StDamB.java +++ b/src/main/java/com/gunshi/project/xyt/model/StDamB.java @@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import io.swagger.v3.oas.annotations.media.Schema; import java.io.Serializable; @@ -23,6 +25,7 @@ public class StDamB implements Serializable { */ @TableId(value = "DAM_ID", type = IdType.INPUT) @Schema(description="大坝ID") + @JsonSerialize(using = ToStringSerializer.class) private Long damId; /** @@ -114,6 +117,7 @@ public class StDamB implements Serializable { */ @TableField(value = "DAM_TYPE_MAT") @Schema(description="大坝材料类型 DICT_ID") + @JsonSerialize(using = ToStringSerializer.class) private Long damTypeMat; /** @@ -121,6 +125,7 @@ public class StDamB implements Serializable { */ @TableField(value = "DAM_TYPE_STR") @Schema(description="大坝结构类型 DICT_ID") + @JsonSerialize(using = ToStringSerializer.class) private Long damTypeStr; /** @@ -184,6 +189,7 @@ public class StDamB implements Serializable { */ @TableField(value = "SDI") @Schema(description="抗震设计烈度 dict_id") + @JsonSerialize(using = ToStringSerializer.class) private Long sdi; /** diff --git a/src/main/java/com/gunshi/project/xyt/model/StEqptB.java b/src/main/java/com/gunshi/project/xyt/model/StEqptB.java index 86c1105..3f28345 100644 --- a/src/main/java/com/gunshi/project/xyt/model/StEqptB.java +++ b/src/main/java/com/gunshi/project/xyt/model/StEqptB.java @@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import io.swagger.v3.oas.annotations.media.Schema; import java.io.Serializable; @@ -23,6 +25,7 @@ public class StEqptB implements Serializable { */ @TableId(value = "WMEQ_ID", type = IdType.INPUT) @Schema(description="量水设施ID") + @JsonSerialize(using = ToStringSerializer.class) private Long wmeqId; /** @@ -65,6 +68,7 @@ public class StEqptB implements Serializable { */ @TableField(value = "MEASURE") @Schema(description="设施类别 字典id") + @JsonSerialize(using = ToStringSerializer.class) private Long measure; /** diff --git a/src/main/java/com/gunshi/project/xyt/model/StGateB.java b/src/main/java/com/gunshi/project/xyt/model/StGateB.java index 3d18108..08627b7 100644 --- a/src/main/java/com/gunshi/project/xyt/model/StGateB.java +++ b/src/main/java/com/gunshi/project/xyt/model/StGateB.java @@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import io.swagger.v3.oas.annotations.media.Schema; import java.io.Serializable; @@ -23,6 +25,7 @@ public class StGateB implements Serializable { */ @TableId(value = "GATE_ID", type = IdType.INPUT) @Schema(description="闸阀ID") + @JsonSerialize(using = ToStringSerializer.class) private Long gateId; /** @@ -65,6 +68,7 @@ public class StGateB implements Serializable { */ @TableField(value = "GATE_TP") @Schema(description="产品类型 dict_id") + @JsonSerialize(using = ToStringSerializer.class) private Long gateTp; /** diff --git a/src/main/java/com/gunshi/project/xyt/model/StGateBFile.java b/src/main/java/com/gunshi/project/xyt/model/StGateBFile.java index a2c6677..6393ee7 100644 --- a/src/main/java/com/gunshi/project/xyt/model/StGateBFile.java +++ b/src/main/java/com/gunshi/project/xyt/model/StGateBFile.java @@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import io.swagger.v3.oas.annotations.media.Schema; import java.io.Serializable; @@ -22,6 +24,7 @@ public class StGateBFile implements Serializable { */ @TableField(value = "GATE_ID") @Schema(description="闸阀ID") + @JsonSerialize(using = ToStringSerializer.class) private Long gateId; /** @@ -29,6 +32,7 @@ public class StGateBFile implements Serializable { */ @TableField(value = "FILE_ID") @Schema(description="文件ID") + @JsonSerialize(using = ToStringSerializer.class) private Long fileId; /** 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 c76ff4b..85cd114 100644 --- a/src/main/java/com/gunshi/project/xyt/model/StMoncrB.java +++ b/src/main/java/com/gunshi/project/xyt/model/StMoncrB.java @@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import io.swagger.v3.oas.annotations.media.Schema; import java.io.Serializable; @@ -22,6 +24,7 @@ public class StMoncrB implements Serializable { */ @TableId(value = "CR_ID", type = IdType.INPUT) @Schema(description="断面ID") + @JsonSerialize(using = ToStringSerializer.class) private Long crId; /** @@ -43,6 +46,7 @@ public class StMoncrB implements Serializable { */ @TableField(value = "CR_IMG_ID") @Schema(description="断面平面图 文件ID") + @JsonSerialize(using = ToStringSerializer.class) private Long crImgId; /** diff --git a/src/main/java/com/gunshi/project/xyt/model/StResB.java b/src/main/java/com/gunshi/project/xyt/model/StResB.java index 397e0f2..3eca03e 100644 --- a/src/main/java/com/gunshi/project/xyt/model/StResB.java +++ b/src/main/java/com/gunshi/project/xyt/model/StResB.java @@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import io.swagger.v3.oas.annotations.media.Schema; import java.io.Serializable; @@ -23,6 +25,7 @@ public class StResB implements Serializable { */ @TableId(value = "RES_ID", type = IdType.INPUT) @Schema(description="水库id") + @JsonSerialize(using = ToStringSerializer.class) private Long resId; /** @@ -254,6 +257,7 @@ public class StResB implements Serializable { */ @TableField(value = "ENG_SCAL") @Schema(description="水库规模 dict_id") + @JsonSerialize(using = ToStringSerializer.class) private Long engScal; /** @@ -275,6 +279,7 @@ public class StResB implements Serializable { */ @TableField(value = "ENG_GRAD") @Schema(description="工程等别 dict_id") + @JsonSerialize(using = ToStringSerializer.class) private Long engGrad; /** @@ -366,6 +371,7 @@ public class StResB implements Serializable { */ @TableField(value = "RES_TYPE") @Schema(description="水库类型 dict_id") + @JsonSerialize(using = ToStringSerializer.class) private Long resType; /** @@ -471,6 +477,7 @@ public class StResB implements Serializable { */ @TableField(value = "LVBSLV") @Schema(description="水准基面") + @JsonSerialize(using = ToStringSerializer.class) private Long lvbslv; /** diff --git a/src/main/java/com/gunshi/project/xyt/model/StResFileRef.java b/src/main/java/com/gunshi/project/xyt/model/StResFileRef.java index 04a8eb7..ca9da37 100644 --- a/src/main/java/com/gunshi/project/xyt/model/StResFileRef.java +++ b/src/main/java/com/gunshi/project/xyt/model/StResFileRef.java @@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import io.swagger.v3.oas.annotations.media.Schema; import java.io.Serializable; @@ -22,6 +24,7 @@ public class StResFileRef implements Serializable { */ @TableId(value = "ID", type = IdType.INPUT) @Schema(description="id") + @JsonSerialize(using = ToStringSerializer.class) private Long id; /** @@ -29,6 +32,7 @@ public class StResFileRef implements Serializable { */ @TableField(value = "RES_ID") @Schema(description="水库ID") + @JsonSerialize(using = ToStringSerializer.class) private Long resId; /** @@ -43,6 +47,7 @@ public class StResFileRef implements Serializable { */ @TableField(value = "FILE_ID") @Schema(description="文件ID") + @JsonSerialize(using = ToStringSerializer.class) private Long fileId; /** diff --git a/src/main/java/com/gunshi/project/xyt/model/StResPersonRef.java b/src/main/java/com/gunshi/project/xyt/model/StResPersonRef.java index 4bd3eb7..2f68390 100644 --- a/src/main/java/com/gunshi/project/xyt/model/StResPersonRef.java +++ b/src/main/java/com/gunshi/project/xyt/model/StResPersonRef.java @@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import io.swagger.v3.oas.annotations.media.Schema; import java.io.Serializable; @@ -22,6 +24,7 @@ public class StResPersonRef implements Serializable { */ @TableId(value = "ID", type = IdType.INPUT) @Schema(description="id") + @JsonSerialize(using = ToStringSerializer.class) private Long id; /** @@ -29,6 +32,7 @@ public class StResPersonRef implements Serializable { */ @TableField(value = "RES_ID") @Schema(description="水库ID") + @JsonSerialize(using = ToStringSerializer.class) private Long resId; /** diff --git a/src/main/java/com/gunshi/project/xyt/model/StResStcdRef.java b/src/main/java/com/gunshi/project/xyt/model/StResStcdRef.java index 0f0b83f..fe5301f 100644 --- a/src/main/java/com/gunshi/project/xyt/model/StResStcdRef.java +++ b/src/main/java/com/gunshi/project/xyt/model/StResStcdRef.java @@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import io.swagger.v3.oas.annotations.media.Schema; import java.io.Serializable; @@ -22,6 +24,7 @@ public class StResStcdRef implements Serializable { */ @TableId(value = "RES_ID", type = IdType.INPUT) @Schema(description="水库ID") + @JsonSerialize(using = ToStringSerializer.class) private Long resId; /** diff --git a/src/main/java/com/gunshi/project/xyt/model/StRvB.java b/src/main/java/com/gunshi/project/xyt/model/StRvB.java index 768a600..b586d21 100644 --- a/src/main/java/com/gunshi/project/xyt/model/StRvB.java +++ b/src/main/java/com/gunshi/project/xyt/model/StRvB.java @@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import io.swagger.v3.oas.annotations.media.Schema; import java.io.Serializable; @@ -23,6 +25,7 @@ public class StRvB implements Serializable { */ @TableId(value = "RV_ID", type = IdType.INPUT) @Schema(description="河流ID") + @JsonSerialize(using = ToStringSerializer.class) private Long rvId; /** @@ -93,6 +96,7 @@ public class StRvB implements Serializable { */ @TableField(value = "RV_TYPE") @Schema(description="河流类型 dict_id") + @JsonSerialize(using = ToStringSerializer.class) private Long rvType; /** @@ -100,6 +104,7 @@ public class StRvB implements Serializable { */ @TableField(value = "RV_GRAD") @Schema(description="河流级别 dict_id") + @JsonSerialize(using = ToStringSerializer.class) private Long rvGrad; /** @@ -107,6 +112,7 @@ public class StRvB implements Serializable { */ @TableField(value = "BANK") @Schema(description="岸别 dict_id") + @JsonSerialize(using = ToStringSerializer.class) private Long bank; /** diff --git a/src/main/java/com/gunshi/project/xyt/model/StSpgPztb.java b/src/main/java/com/gunshi/project/xyt/model/StSpgPztb.java index 3d8c4b8..a658248 100644 --- a/src/main/java/com/gunshi/project/xyt/model/StSpgPztb.java +++ b/src/main/java/com/gunshi/project/xyt/model/StSpgPztb.java @@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import io.swagger.v3.oas.annotations.media.Schema; import java.io.Serializable; @@ -23,6 +25,7 @@ public class StSpgPztb implements Serializable { */ @TableId(value = "ID", type = IdType.INPUT) @Schema(description="id") + @JsonSerialize(using = ToStringSerializer.class) private Long id; /** @@ -338,6 +341,7 @@ public class StSpgPztb implements Serializable { */ @TableField(value = "SKETCH_MAP") @Schema(description="埋设示意图 文件ID") + @JsonSerialize(using = ToStringSerializer.class) private Long sketchMap; /** diff --git a/src/main/java/com/gunshi/project/xyt/model/StSpgSpprmp.java b/src/main/java/com/gunshi/project/xyt/model/StSpgSpprmp.java index e3a6e3a..975b7c9 100644 --- a/src/main/java/com/gunshi/project/xyt/model/StSpgSpprmp.java +++ b/src/main/java/com/gunshi/project/xyt/model/StSpgSpprmp.java @@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import io.swagger.v3.oas.annotations.media.Schema; import java.io.Serializable; @@ -23,6 +25,7 @@ public class StSpgSpprmp implements Serializable { */ @TableId(value = "ID", type = IdType.INPUT) @Schema(description="主键") + @JsonSerialize(using = ToStringSerializer.class) private Long id; /** @@ -184,6 +187,7 @@ public class StSpgSpprmp implements Serializable { */ @TableField(value = "SKETCH_MAP") @Schema(description="埋设示意图 文件ID") + @JsonSerialize(using = ToStringSerializer.class) private Long sketchMap; /** diff --git a/src/main/java/com/gunshi/project/xyt/model/StStbprpB.java b/src/main/java/com/gunshi/project/xyt/model/StStbprpB.java index ebaddb1..1e3b02d 100644 --- a/src/main/java/com/gunshi/project/xyt/model/StStbprpB.java +++ b/src/main/java/com/gunshi/project/xyt/model/StStbprpB.java @@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import io.swagger.v3.oas.annotations.media.Schema; import java.io.Serializable; @@ -268,6 +270,7 @@ public class StStbprpB implements Serializable { */ @TableField(value = "PROTOCOLS") @Schema(description="归属协议") + @JsonSerialize(using = ToStringSerializer.class) private Long protocols; public static final String COL_STCD = "STCD"; diff --git a/src/main/java/com/gunshi/project/xyt/model/StZvarlB.java b/src/main/java/com/gunshi/project/xyt/model/StZvarlB.java index d08ffc8..9004a62 100644 --- a/src/main/java/com/gunshi/project/xyt/model/StZvarlB.java +++ b/src/main/java/com/gunshi/project/xyt/model/StZvarlB.java @@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import io.swagger.v3.oas.annotations.media.Schema; import java.io.Serializable; @@ -23,6 +25,7 @@ public class StZvarlB implements Serializable { */ @TableField(value = "RES_ID") @Schema(description="水库ID") + @JsonSerialize(using = ToStringSerializer.class) private Long resId; /** diff --git a/src/main/java/com/gunshi/project/xyt/model/SysDictB.java b/src/main/java/com/gunshi/project/xyt/model/SysDictB.java index a7089e7..f932942 100644 --- a/src/main/java/com/gunshi/project/xyt/model/SysDictB.java +++ b/src/main/java/com/gunshi/project/xyt/model/SysDictB.java @@ -4,10 +4,16 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import io.swagger.v3.oas.annotations.media.Schema; import java.io.Serializable; import java.util.Date; + +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; import lombok.Data; /** @@ -21,7 +27,8 @@ public class SysDictB implements Serializable { * ID */ @TableId(value = "ID", type = IdType.INPUT) - @Schema(description="ID") + @Schema(description="ID", requiredMode = Schema.RequiredMode.NOT_REQUIRED) + @JsonSerialize(using = ToStringSerializer.class) private Long id; /** @@ -29,6 +36,8 @@ public class SysDictB implements Serializable { */ @TableField(value = "DICT_NM") @Schema(description="字典名称") + @NotBlank + @Size(max = 200) private String dictNm; /** @@ -36,6 +45,8 @@ public class SysDictB implements Serializable { */ @TableField(value = "DICT_CD") @Schema(description="字典编码") + @NotBlank + @Size(max = 100) private String dictCd; /** @@ -43,6 +54,8 @@ public class SysDictB implements Serializable { */ @TableField(value = "PID") @Schema(description="父id") + @NotNull + @JsonSerialize(using = ToStringSerializer.class) private Long pid; /** @@ -50,20 +63,21 @@ public class SysDictB implements Serializable { */ @TableField(value = "SORT_ON") @Schema(description="排序字段") + @NotNull private Integer sortOn; /** * 创建时间 */ @TableField(value = "CREATE_TM") - @Schema(description="创建时间") + @Schema(description="创建时间", requiredMode = Schema.RequiredMode.NOT_REQUIRED) private Date createTm; /** * 修改时间 */ @TableField(value = "TM") - @Schema(description="修改时间") + @Schema(description="修改时间", requiredMode = Schema.RequiredMode.NOT_REQUIRED) private Date tm; /** @@ -71,6 +85,7 @@ public class SysDictB implements Serializable { */ @TableField(value = "[STATUS]") @Schema(description="状态 1:启用 0:禁用") + @NotNull private Integer status; public static final String COL_ID = "ID"; diff --git a/src/main/java/com/gunshi/project/xyt/service/BaseDataService.java b/src/main/java/com/gunshi/project/xyt/service/StCameraAreaService.java similarity index 61% rename from src/main/java/com/gunshi/project/xyt/service/BaseDataService.java rename to src/main/java/com/gunshi/project/xyt/service/StCameraAreaService.java index e820f16..77807ca 100644 --- a/src/main/java/com/gunshi/project/xyt/service/BaseDataService.java +++ b/src/main/java/com/gunshi/project/xyt/service/StCameraAreaService.java @@ -3,14 +3,18 @@ package com.gunshi.project.xyt.service; import com.baomidou.dynamic.datasource.annotation.DSTransactional; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.gunshi.core.result.BusinessResult; -import com.gunshi.core.result.exception.BusinessException; +import com.gunshi.project.xyt.entity.basedata.StCameraAreaTreeVo; +import com.gunshi.project.xyt.entity.basedata.StCameraAreaVo; +import com.gunshi.project.xyt.entity.basedata.StCameraVo; import com.gunshi.project.xyt.mapper.StCameraAreaBMapper; +import com.gunshi.project.xyt.mapper.StCameraBMapper; import com.gunshi.project.xyt.model.StCameraAreaB; +import com.gunshi.util.common.tree.TreeUtil; +import jakarta.validation.Valid; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; -import org.springframework.web.bind.MethodArgumentNotValidException; +import org.springframework.transaction.annotation.Transactional; import java.util.Date; import java.util.List; @@ -24,17 +28,45 @@ import java.util.Objects; @Service @Slf4j -@DSTransactional(rollbackFor = Exception.class) +@Transactional(rollbackFor = Exception.class) @Data -public class BaseDataService { +public class StCameraAreaService { private final StCameraAreaBMapper stCameraAreaBMapper; + private final StCameraBMapper stCameraBMapper; + + /** + * 根据视频区域ID查询视频区域 + * @param camArId 视频区域ID + * @return 视频区域 + */ + public StCameraAreaB queryById(Long camArId) { + return stCameraAreaBMapper.selectById(camArId); + } + + public List queryTree() { + List list = stCameraAreaBMapper.queryStCameraAreaBTree(); + List all = stCameraBMapper.getAll(); + list.forEach(t -> { + List cameraList = t.getCameraList(); + all.forEach(a -> { + if (Objects.equals(a.getCamArId(), t.getCamArId())) { + cameraList.add(a); + } + }); + }); + + return TreeUtil.list2ListTree(list, Long.valueOf(0L), + StCameraAreaTreeVo::getCamArId, StCameraAreaTreeVo::getPid, + StCameraAreaTreeVo::setChildren, null); + } - public List queryStCameraAreaBList() { - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq(StCameraAreaB.COL_STATUS, 1); - queryWrapper.orderByAsc(StCameraAreaB.COL_SORT_ON); - return stCameraAreaBMapper.selectList(queryWrapper); + /** + * 查询视频区域列表 + * @return 视频区域列表 + */ + public List queryListByName(String name) { + return stCameraAreaBMapper.queryStCameraAreaBList(name); } /** @@ -42,14 +74,14 @@ public class BaseDataService { * * @param stCameraAreaB 视频区域 */ - public void insertStCameraAreaB(StCameraAreaB stCameraAreaB) { + public void insert(@Valid StCameraAreaB stCameraAreaB) { checkStCameraAreaB(stCameraAreaB); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq(StCameraAreaB.COL_PID, stCameraAreaB.getPid()); queryWrapper.eq(StCameraAreaB.COL_STATUS, 1); - queryWrapper.orderByAsc(StCameraAreaB.COL_SORT_ON); - StCameraAreaB first = stCameraAreaBMapper.selectList(queryWrapper).getFirst(); + queryWrapper.orderByDesc(StCameraAreaB.COL_SORT_ON); + StCameraAreaB first = stCameraAreaBMapper.selectOne(queryWrapper, false); if (Objects.isNull(first)) { stCameraAreaB.setSortOn(1); } else { @@ -69,7 +101,7 @@ public class BaseDataService { * * @param stCameraAreaB 视频区域 */ - public void updateStCameraAreaB(StCameraAreaB stCameraAreaB) { + public void update(@Valid StCameraAreaB stCameraAreaB) { Long camArId = stCameraAreaB.getCamArId(); QueryWrapper queryWrapper2 = new QueryWrapper<>(); queryWrapper2.eq(StCameraAreaB.COL_CAM_AR_ID, camArId); @@ -108,4 +140,5 @@ public class BaseDataService { } } + } diff --git a/src/main/java/com/gunshi/project/xyt/service/StCameraService.java b/src/main/java/com/gunshi/project/xyt/service/StCameraService.java new file mode 100644 index 0000000..5e48732 --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/service/StCameraService.java @@ -0,0 +1,107 @@ +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.StCameraSearch; +import com.gunshi.project.xyt.entity.basedata.StCameraVo; +import com.gunshi.project.xyt.mapper.StCameraAreaBMapper; +import com.gunshi.project.xyt.mapper.StCameraBMapper; +import com.gunshi.project.xyt.model.StCameraAreaB; +import com.gunshi.project.xyt.model.StCameraB; +import jakarta.validation.Valid; +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/25 + */ + +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +@Data +public class StCameraService { + private final StCameraBMapper stCameraBMapper; + private final StCameraAreaBMapper stCameraAreaBMapper; + + public StCameraB queryById(Long camId) { + return stCameraBMapper.selectById(camId); + } + + public Page queryBySearch(StCameraSearch stCameraSearch){ + Page page = new Page<>(stCameraSearch.getPage(), stCameraSearch.getPageSize()); + return stCameraBMapper.queryBySearch(page, stCameraSearch); + } + + + + /** + * 新增视频 + * @param stCameraB 视频信息 + */ + public void insert(@Valid StCameraB stCameraB) { + checkUnique(stCameraB); + checkAreaExist(stCameraB); + stCameraB.setCamId(IdWorker.getId()); + stCameraB.setCreateTm(new Date()); + stCameraB.setTm(new Date()); + stCameraBMapper.insert(stCameraB); + } + + /** + * 修改视频 + * @param stCameraB 视频信息 + */ + public void update(@Valid StCameraB stCameraB) { + checkExist(stCameraB); + checkUnique(stCameraB); + checkAreaExist(stCameraB); + stCameraB.setTm(new Date()); + stCameraBMapper.updateById(stCameraB); + } + + /** + * 检查视频参数唯一性 + * @param stCameraB 视频信息 + */ + private void checkUnique(StCameraB stCameraB){ + boolean exists = stCameraBMapper.chechExists(stCameraB); + if (exists){ + throw new IllegalArgumentException("视频名称或序列号已存在"); + } + } + + /** + * 检查视频ID是否存在 + * @param stCameraB 视频信息 + */ + private void checkExist(StCameraB stCameraB){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(StCameraB.COL_CAM_ID, stCameraB.getCamId()); + boolean exists = stCameraBMapper.exists(queryWrapper); + if (!exists){ + throw new IllegalArgumentException("视频ID不存在"); + } + } + + /** + * 检查视频区域ID是否存在 + * @param stCameraB 视频信息 + */ + private void checkAreaExist(StCameraB stCameraB){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(StCameraAreaB.COL_CAM_AR_ID, stCameraB.getCamArId()); + boolean exists = stCameraAreaBMapper.exists(queryWrapper); + if (!exists){ + throw new IllegalArgumentException("视频区域ID不存在"); + } + } + +} diff --git a/src/main/java/com/gunshi/project/xyt/service/SysDictService.java b/src/main/java/com/gunshi/project/xyt/service/SysDictService.java new file mode 100644 index 0000000..f0b7763 --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/service/SysDictService.java @@ -0,0 +1,141 @@ +package com.gunshi.project.xyt.service; + +import com.baomidou.dynamic.datasource.annotation.DSTransactional; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.OrderItem; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.db.dao.BaseOrderDao; +import com.gunshi.project.xyt.entity.basedata.SysDictSearch; +import com.gunshi.project.xyt.entity.basedata.SysDictVo; +import com.gunshi.project.xyt.mapper.SysDictBMapper; +import com.gunshi.project.xyt.model.SysDictB; +import com.gunshi.util.common.tree.TreeUtil; +import jakarta.validation.Valid; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; + +/** + * @author Sun Lejun + * @version 1.0 + * @date 2024/1/25 + */ + +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class SysDictService extends BaseOrderDao { + + /** + * 根据ID查询字典 + * @param id 字典ID + * @return 字典 + */ + public SysDictB queryById(Long id) { + return this.getBaseMapper().selectById(id); + } + + /** + * 根据名称或者编码查询字典 + * @param search 查询条件 + * @return 字典tree + */ + public Page queryBySearch(SysDictSearch search) { + + //构建分页对象 + Page page = new Page<>(search.getPage(), search.getPageSize()); + //按PID和ID进行分页查询 + Page sysDictVoPage = this.getBaseMapper().queryPidBySearch(page, search); + long total = sysDictVoPage.getTotal(); + long current = sysDictVoPage.getCurrent(); + if(total == 0) { + return new Page<>(current, search.getPageSize()); + } + //拿出查询出来的PID和ID,获取完整的记录 + List records = sysDictVoPage.getRecords(); + List list = records.stream().map(SysDictB::getId).toList(); + List sysDictVos = this.getBaseMapper().queryByPidOrIds(list); + //转换成tree + List tree = TreeUtil.list2ListTree(sysDictVos, 0L, SysDictVo::getId, SysDictVo::getPid, SysDictVo::setChildren, null); + //构建返回对象 + Page result = new Page<>(search.getPage(), search.getPageSize()); + result.setCurrent(current); + result.setTotal(total); + result.setRecords(tree); + return result; + } + + /** + * 新增字典 + * @param sysDictB 字典信息 + */ + public void insert(@Valid SysDictB sysDictB) { + checkExistCodeAndName(sysDictB); + sysDictB.setId(IdWorker.getId()); + sysDictB.setStatus(1); + sysDictB.setCreateTm(new Date()); + sysDictB.setTm(new Date()); + this.getBaseMapper().insert(sysDictB); + resort(sysDictB); + } + + /** + * 更新字典 + * @param sysDictB 字典信息 + */ + public void update(@Valid SysDictB sysDictB) { + checkExistById(sysDictB); + checkExistCodeAndName(sysDictB); + sysDictB.setTm(new Date()); + + if(sysDictB.getStatus() == 0L){ + sysDictB.setSortOn(999); + } + this.getBaseMapper().updateById(sysDictB); + resort(sysDictB); + } + + /** + * 检查字典编码和名称是否存在 + * @param sysDictB 字典信息 + */ + public void checkExistCodeAndName(SysDictB sysDictB) { + if (sysDictB.getPid() != 0L) { + return; + } + boolean exist = this.getBaseMapper().checkExistCodeAndName(sysDictB); + if (exist) { + throw new IllegalArgumentException("顶层字典编码或名称已存在"); + } + } + + /** + * 检查字典是否存在 + * @param sysDictB 字典信息 + */ + public void checkExistById(SysDictB sysDictB) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(SysDictB.COL_ID, sysDictB.getId()); + boolean exists = this.exists(queryWrapper); + if (!exists) { + throw new IllegalArgumentException("字典不存在"); + } + } + + /** + * 重新给字典排序 + * @param sysDictB + */ + private void resort(SysDictB sysDictB){ + Long pid = sysDictB.getPid(); + QueryWrapper queryWrapper2 = new QueryWrapper<>(); + queryWrapper2.eq(SysDictB.COL_PID, pid); + super.updateOrder(queryWrapper2, SysDictB::getSortOn, SysDictB::setSortOn, sysDictB, SysDictB::getId, t -> t.setTm(new Date())); + } + + +} diff --git a/src/main/resources/mapper/StCameraAreaBMapper.xml b/src/main/resources/mapper/StCameraAreaBMapper.xml index 92e6518..4fbfa6d 100644 --- a/src/main/resources/mapper/StCameraAreaBMapper.xml +++ b/src/main/resources/mapper/StCameraAreaBMapper.xml @@ -28,4 +28,23 @@ #{item.createTm,jdbcType=TIMESTAMP}, #{item.tm,jdbcType=TIMESTAMP}) + + + + \ No newline at end of file diff --git a/src/main/resources/mapper/StCameraBMapper.xml b/src/main/resources/mapper/StCameraBMapper.xml index ef6ebaf..3b0c860 100644 --- a/src/main/resources/mapper/StCameraBMapper.xml +++ b/src/main/resources/mapper/StCameraBMapper.xml @@ -17,24 +17,92 @@ + CAM_ID, CAM_NM, CAM_TYPE, CAM_CH, CAM_AR_ID, CAM_URL, CAM_SN, LGTD, LTTD, COMMENTS, - CREATE_TM, TM, [STATUS] + CREATE_TM, TM, [STATUS], DEFAULT_SHOW insert into dbo.ST_CAMERA_B (CAM_ID, CAM_NM, CAM_TYPE, CAM_CH, CAM_AR_ID, CAM_URL, CAM_SN, LGTD, LTTD, COMMENTS, - CREATE_TM, TM, [STATUS]) + CREATE_TM, TM, [STATUS], DEFAULT_SHOW) values (#{item.camId,jdbcType=BIGINT}, #{item.camNm,jdbcType=VARCHAR}, #{item.camType,jdbcType=BIGINT}, #{item.camCh,jdbcType=INTEGER}, #{item.camArId,jdbcType=BIGINT}, #{item.camUrl,jdbcType=VARCHAR}, #{item.camSn,jdbcType=VARCHAR}, #{item.lgtd,jdbcType=DECIMAL}, #{item.lttd,jdbcType=DECIMAL}, #{item.comments,jdbcType=VARCHAR}, #{item.createTm,jdbcType=TIMESTAMP}, #{item.tm,jdbcType=TIMESTAMP}, - #{item.status,jdbcType=INTEGER}) + #{item.status,jdbcType=INTEGER}, #{item.defaultShow,jdbcType=INTEGER}) + + + + + + \ No newline at end of file diff --git a/src/main/resources/mapper/SysDictBMapper.xml b/src/main/resources/mapper/SysDictBMapper.xml index f2da491..8517988 100644 --- a/src/main/resources/mapper/SysDictBMapper.xml +++ b/src/main/resources/mapper/SysDictBMapper.xml @@ -28,4 +28,61 @@ #{item.tm,jdbcType=TIMESTAMP}, #{item.status,jdbcType=INTEGER}) + + + + + + \ No newline at end of file diff --git a/src/test/java/com/gunshi/project/xyt/service/StCameraAreaServiceTest.java b/src/test/java/com/gunshi/project/xyt/service/StCameraAreaServiceTest.java new file mode 100644 index 0000000..4aa70ec --- /dev/null +++ b/src/test/java/com/gunshi/project/xyt/service/StCameraAreaServiceTest.java @@ -0,0 +1,63 @@ +package com.gunshi.project.xyt.service; + +import com.gunshi.project.xyt.Main; +import com.gunshi.project.xyt.entity.basedata.StCameraAreaTreeVo; +import com.gunshi.project.xyt.entity.basedata.StCameraAreaVo; +import com.gunshi.project.xyt.model.StCameraAreaB; +import lombok.extern.slf4j.Slf4j; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ContextConfiguration; +import ru.olegcherednik.jackson_utils.JacksonUtils; + +import java.util.List; + +@SpringBootTest +@ContextConfiguration(classes = Main.class) +@Slf4j +class StCameraAreaServiceTest { + @Autowired + private StCameraAreaService stCameraAreaService; + + @Test + void queryStCameraAreaBList() { + List list1 = stCameraAreaService.queryListByName("公路"); + log.info("{}", list1); + List list2 = stCameraAreaService.queryListByName(""); + log.info("{}", list2); + } + + @Test + void insertStCameraAreaB() { + StCameraAreaB stCameraAreaB = new StCameraAreaB(); + stCameraAreaB.setCamArNm("公路2"); + stCameraAreaB.setPid(0L); + stCameraAreaB.setStatus(1); + stCameraAreaB.setComments("备注2"); + stCameraAreaService.insert(stCameraAreaB); + } + + @Test + void insertStCameraAreaB2() { + StCameraAreaB stCameraAreaB = new StCameraAreaB(); + stCameraAreaB.setCamArNm("公路1-1"); + stCameraAreaB.setPid(1750075892207497218L); + stCameraAreaB.setStatus(1); + stCameraAreaB.setComments("备注"); + stCameraAreaService.insert(stCameraAreaB); + } + + @Test + void updateStCameraAreaB() { + StCameraAreaB stCameraAreaB = stCameraAreaService.queryById(1750077729811742721L); + stCameraAreaB.setComments(null); + stCameraAreaService.update(stCameraAreaB); + } + + @Test + void queryStCameraAreaBTree() { + List list = stCameraAreaService.queryTree(); + log.info("{}", JacksonUtils.writeValue(list)); + } +} \ No newline at end of file diff --git a/src/test/java/com/gunshi/project/xyt/service/StCameraServiceTest.java b/src/test/java/com/gunshi/project/xyt/service/StCameraServiceTest.java new file mode 100644 index 0000000..4751d97 --- /dev/null +++ b/src/test/java/com/gunshi/project/xyt/service/StCameraServiceTest.java @@ -0,0 +1,83 @@ +package com.gunshi.project.xyt.service; + +import com.gunshi.project.xyt.Main; +import com.gunshi.project.xyt.entity.basedata.StCameraSearch; +import com.gunshi.project.xyt.model.StCameraB; +import lombok.extern.slf4j.Slf4j; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ContextConfiguration; +import ru.olegcherednik.jackson_utils.JacksonUtils; + +import java.math.BigDecimal; + +import static org.junit.jupiter.api.Assertions.*; + + +@SpringBootTest +@ContextConfiguration(classes = Main.class) +@Slf4j +class StCameraServiceTest { + @Autowired + private StCameraService stCameraService; + + @Test + void insert() { + StCameraB stCameraB = new StCameraB(); + stCameraB.setCamNm("大坝1-1左1"); + stCameraB.setCamSn("12345678912"); + stCameraB.setCamArId(1001L); + stCameraB.setCamType(1L); + stCameraB.setStatus(1); + stCameraB.setCamUrl("rtsp://172.16.0.1:1080"); + stCameraB.setComments("备注"); + stCameraB.setDefaultShow(0); + stCameraB.setLgtd(BigDecimal.valueOf(101.1511d)); + stCameraB.setLttd(BigDecimal.valueOf(23.1511d)); + stCameraService.insert(stCameraB); + } + + @Test + void update() { + StCameraB stCameraB = stCameraService.queryById(1750353808199888897L); + stCameraB.setCamNm("大坝顶左1-1"); + stCameraB.setCamCh(1); + stCameraB.setComments(null); + stCameraService.update(stCameraB); + } + + @Test + void queryBySearch() { + StCameraSearch stCameraSearch = new StCameraSearch(); + stCameraSearch.setKeyword("1-1"); + + log.info("{}", JacksonUtils.writeValue(stCameraService.queryBySearch(stCameraSearch))); + + stCameraSearch = new StCameraSearch(); + stCameraSearch.setKeyword("1-1"); + stCameraSearch.setCamType(2L); + log.info("{}", JacksonUtils.writeValue(stCameraService.queryBySearch(stCameraSearch))); + + stCameraSearch = new StCameraSearch(); + stCameraSearch.setKeyword("1-1"); + stCameraSearch.setCamType(1L); + stCameraSearch.setPage(1); + stCameraSearch.setPageSize(10); + log.info("{}", JacksonUtils.writeValue(stCameraService.queryBySearch(stCameraSearch))); + + stCameraSearch = new StCameraSearch(); + stCameraSearch.setKeyword("1-1"); + stCameraSearch.setCamType(1L); + stCameraSearch.setPage(1); + stCameraSearch.setPageSize(1); + log.info("{}", JacksonUtils.writeValue(stCameraService.queryBySearch(stCameraSearch))); + + stCameraSearch = new StCameraSearch(); + stCameraSearch.setKeyword("1-1"); + stCameraSearch.setCamType(1L); + stCameraSearch.setPage(2); + stCameraSearch.setPageSize(10); + log.info("{}", JacksonUtils.writeValue(stCameraService.queryBySearch(stCameraSearch))); + } +} \ No newline at end of file diff --git a/src/test/java/com/gunshi/project/xyt/service/SysDictServiceTest.java b/src/test/java/com/gunshi/project/xyt/service/SysDictServiceTest.java new file mode 100644 index 0000000..e987920 --- /dev/null +++ b/src/test/java/com/gunshi/project/xyt/service/SysDictServiceTest.java @@ -0,0 +1,59 @@ +package com.gunshi.project.xyt.service; + +import com.gunshi.project.xyt.Main; +import com.gunshi.project.xyt.entity.basedata.SysDictSearch; +import com.gunshi.project.xyt.model.SysDictB; +import lombok.extern.slf4j.Slf4j; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ContextConfiguration; +import ru.olegcherednik.jackson_utils.JacksonUtils; + +import static org.junit.jupiter.api.Assertions.*; + +@SpringBootTest +@ContextConfiguration(classes = Main.class) +@Slf4j +class SysDictServiceTest { + @Autowired + private SysDictService sysDictService; + @Test + void insert() { + SysDictB sysDictB = new SysDictB(); + sysDictB.setDictNm("测试类型"); + sysDictB.setDictCd("2"); + sysDictB.setPid(1750409373064220673L); + sysDictB.setSortOn(1); + sysDictB.setStatus(1); + sysDictService.insert(sysDictB); + } + + @Test + void update() { + SysDictB sysDictB = sysDictService.queryById(1750400498717966338L); + sysDictB.setSortOn(1); + sysDictService.update(sysDictB); + } + + @Test + void queryBySearch() { + SysDictSearch sysDictSearch = new SysDictSearch(); + sysDictSearch.setKeyword(""); + sysDictSearch.setPage(1); + sysDictSearch.setPageSize(10); + log.info("{}", JacksonUtils.writeValue(sysDictService.queryBySearch(sysDictSearch))); + + sysDictSearch = new SysDictSearch(); + sysDictSearch.setKeyword("类型"); + sysDictSearch.setPage(1); + sysDictSearch.setPageSize(10); + log.info("{}", JacksonUtils.writeValue(sysDictService.queryBySearch(sysDictSearch))); + + sysDictSearch = new SysDictSearch(); + sysDictSearch.setKeyword("类型"); + sysDictSearch.setPage(1); + sysDictSearch.setPageSize(1); + log.info("{}", JacksonUtils.writeValue(sysDictService.queryBySearch(sysDictSearch))); + } +} \ No newline at end of file