预警广播

master
wany 2024-09-25 11:18:01 +08:00
parent 29d65cf805
commit cada44a891
13 changed files with 575 additions and 0 deletions

View File

@ -0,0 +1,57 @@
package com.gunshi.project.xyt.controller;
import com.gunshi.core.result.R;
import com.gunshi.project.xyt.model.BroadcastStation;
import com.gunshi.project.xyt.service.BroadcastStationService;
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.media.Schema;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.io.Serializable;
import java.util.List;
/**
* :
* author: xusan
* date: 2024-09-25 10:12:34
*/
@Tag(name = "广播站")
@RestController
@RequestMapping(value="/broadcastStation")
public class BroadcastStationController {
@Autowired
private BroadcastStationService service;
@Operation(summary = "新增")
@PostMapping("/insert")
public R<BroadcastStation> insert(@Validated(Insert.class) @RequestBody BroadcastStation dto) {
return R.ok(service.saveData(dto));
}
@Operation(summary = "修改")
@PostMapping("/update")
public R<BroadcastStation> update(@Validated(Update.class) @RequestBody BroadcastStation dto) {
boolean result = service.updateById(dto);
return R.ok(result ? dto : null);
}
@Operation(summary = "删除")
@GetMapping("/del/{id}")
public R<Boolean> del(@Schema(name = "id") @PathVariable("id") Serializable id) {
return R.ok(service.removeById(id));
}
@Operation(summary = "列表")
@PostMapping("/list")
public R<List<BroadcastStation>> list() {
return R.ok(service.lambdaQuery().orderByAsc(BroadcastStation::getOrderIndex).list());
}
}

View File

@ -0,0 +1,50 @@
package com.gunshi.project.xyt.controller;
import com.gunshi.core.result.R;
import com.gunshi.project.xyt.model.BroadcastTemplate;
import com.gunshi.project.xyt.service.BroadcastTemplateService;
import com.gunshi.project.xyt.validate.markers.Insert;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.io.Serializable;
import java.util.List;
/**
* :
* author: xusan
* date: 2024-09-25 10:12:13
*/
@Tag(name = "广播模板")
@RestController
@RequestMapping(value="/broadcastTemplate")
public class BroadcastTemplateController {
@Autowired
private BroadcastTemplateService service;
@Operation(summary = "新增")
@PostMapping("/insert")
public R<BroadcastTemplate> insert(@Validated(Insert.class) @RequestBody BroadcastTemplate dto) {
return R.ok(service.saveData(dto));
}
@Operation(summary = "删除")
@GetMapping("/del/{id}")
public R<Boolean> del(@Schema(name = "id") @PathVariable("id") Serializable id) {
return R.ok(service.removeById(id));
}
@Operation(summary = "列表")
@PostMapping("/list")
public R<List<BroadcastTemplate>> list() {
return R.ok(service.lambdaQuery().orderByAsc(BroadcastTemplate::getOrderIndex).list());
}
}

View File

@ -0,0 +1,51 @@
package com.gunshi.project.xyt.controller;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.gunshi.core.result.R;
import com.gunshi.project.xyt.entity.so.BroadcastWarnPageSo;
import com.gunshi.project.xyt.model.BroadcastWarn;
import com.gunshi.project.xyt.service.BroadcastWarnService;
import com.gunshi.project.xyt.validate.markers.Insert;
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;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Date;
/**
* :
* author: xusan
* date: 2024-09-25 10:12:51
*/
@Tag(name = "广播预警")
@RestController
@RequestMapping(value="/broadcastWarn")
public class BroadcastWarnController {
@Autowired
private BroadcastWarnService service;
@Operation(summary = "新增")
@PostMapping("/insert")
public R<BroadcastWarn> insert(@Validated(Insert.class) @RequestBody BroadcastWarn dto) {
dto.setId(IdWorker.getId());
dto.setCreateTime(new Date());
boolean result = service.save(dto);
return R.ok(result ? dto : null);
}
@Operation(summary = "分页")
@PostMapping("/page")
public R<Page<BroadcastWarn>> page(@Validated @RequestBody BroadcastWarnPageSo page) {
return R.ok(service.pageQuery(page));
}
}

View File

@ -0,0 +1,33 @@
package com.gunshi.project.xyt.entity.so;
import com.gunshi.db.dto.DateTimeRangeSo;
import com.gunshi.db.dto.PageSo;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
/**
* Description:
* Created by wanyan on 2024/3/19
*
* @author wanyan
* @version 1.0
*/
@Data
@Schema(description = "广播告警分页查询对象")
public class BroadcastWarnPageSo {
@NotNull(message = "分页参数不能为空")
@Schema(description = "分页参数")
private PageSo pageSo;
@Schema(description="时段")
private DateTimeRangeSo timeRangeSo;
@Schema(description="站点id")
private Long stationId;
@Schema(description="告警内容")
private String warnContent;
}

View File

@ -0,0 +1,15 @@
package com.gunshi.project.xyt.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.gunshi.project.xyt.model.BroadcastStation;
import org.apache.ibatis.annotations.Mapper;
/**
* :
* author: xusan
* date: 2024-09-25 10:12:34
*/
@Mapper
public interface BroadcastStationMapper extends BaseMapper<BroadcastStation> {
}

View File

@ -0,0 +1,15 @@
package com.gunshi.project.xyt.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.gunshi.project.xyt.model.BroadcastTemplate;
import org.apache.ibatis.annotations.Mapper;
/**
* :
* author: xusan
* date: 2024-09-25 10:12:13
*/
@Mapper
public interface BroadcastTemplateMapper extends BaseMapper<BroadcastTemplate> {
}

View File

@ -0,0 +1,41 @@
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.so.BroadcastWarnPageSo;
import com.gunshi.project.xyt.model.BroadcastWarn;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
/**
* :
* author: xusan
* date: 2024-09-25 10:12:51
*/
@Mapper
public interface BroadcastWarnMapper extends BaseMapper<BroadcastWarn> {
@Select("""
<script>
select t.*,s.name from public.broadcast_warn t
left join public.broadcast_station s on t.station_id = s.id
<where>
<if test="obj.warnContent != null and obj.warnContent != ''">
t.warn_content like concat('%', #{obj.warnContent}, '%')
</if>
<if test="obj.timeRangeSo != null and obj.timeRangeSo.start != null">
and t.create_time <![CDATA[>=]]> #{obj.timeRangeSo.start}
</if>
<if test="obj.timeRangeSo != null and obj.timeRangeSo.end != null">
and t.create_time <![CDATA[<=]]> #{obj.timeRangeSo.end}
</if>
<if test="obj.stationId != null">
and t.station_id = #{obj.stationId}
</if>
</where>
order by t.create_time desc
</script>
""")
Page<BroadcastWarn> pageQuery(Page<BroadcastWarn> page,@Param("obj") BroadcastWarnPageSo page1);
}

View File

@ -0,0 +1,58 @@
package com.gunshi.project.xyt.model;
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 com.gunshi.project.xyt.validate.markers.Update;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import lombok.Data;
import java.io.Serializable;
/**
* : 广
* author: xusan
* date: 2024-09-25 10:19:15
*/
@Schema(description="广播预警站")
@Data
@TableName("public.broadcast_station")
public class BroadcastStation implements Serializable {
public final static String thisTableName = "BroadcastStation";
private static final long serialVersionUID = 1L;
/**
*
*/
@TableId(value="id", type= IdType.AUTO)
@Schema(description="主键")
@NotNull(message = "id不能为空",groups = { Update.class})
@JsonSerialize(using = ToStringSerializer.class)
private Long id;
/**
*
*/
@TableField(value="name")
@Schema(description="站点名称")
@Size(max = 100,message = "站点名称最大长度要小于 100")
@NotBlank(message = "站点名称不能为空")
private String name;
/**
*
*/
@TableField(value="order_index")
@Schema(description="排序")
private Integer orderIndex;
}

View File

@ -0,0 +1,58 @@
package com.gunshi.project.xyt.model;
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 com.gunshi.project.xyt.validate.markers.Update;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import lombok.Data;
import java.io.Serializable;
/**
* : 广
* author: xusan
* date: 2024-09-25 10:19:00
*/
@Schema(description="广播模板")
@Data
@TableName("public.broadcast_template")
public class BroadcastTemplate implements Serializable {
public final static String thisTableName = "BroadcastTemplate";
private static final long serialVersionUID = 1L;
/**
*
*/
@TableId(value="id", type= IdType.AUTO)
@Schema(description="主键")
@NotNull(message = "id不能为空",groups = { Update.class})
@JsonSerialize(using = ToStringSerializer.class)
private Long id;
/**
*
*/
@TableField(value="content")
@Schema(description="内容")
@Size(max = 500,message = "内容最大长度要小于 500")
@NotBlank(message = "内容不能为空")
private String content;
/**
*
*/
@TableField(value="order_index")
@Schema(description="排序")
private Integer orderIndex;
}

View File

@ -0,0 +1,87 @@
package com.gunshi.project.xyt.model;
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.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.gunshi.core.dateformat.DateFormatString;
import com.gunshi.project.xyt.validate.markers.Update;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* : 广
* author: xusan
* date: 2024-09-25 10:17:53
*/
@Schema(description="广播预警信息")
@Data
@TableName("public.broadcast_warn")
public class BroadcastWarn implements Serializable {
public final static String thisTableName = "BroadcastWarn";
private static final long serialVersionUID = 1L;
/**
*
*/
@TableId(value="id", type= IdType.AUTO)
@Schema(description="主键")
@NotNull(message = "id不能为空",groups = { Update.class})
@JsonSerialize(using = ToStringSerializer.class)
private Long id;
/**
* id
*/
@TableField(value="station_id")
@Schema(description="站点id")
@JsonSerialize(using = ToStringSerializer.class)
private Long stationId;
@TableField(exist = false)
@Schema(description="站点名称")
private String name;
/**
*
*/
@TableField(value="warn_content")
@Schema(description="告警内容")
@Size(max = 500,message = "告警内容最大长度要小于 500")
private String warnContent;
/**
* id
*/
@TableField(value="create_user_id")
@Schema(description="创建人id")
private Long createUserId;
/**
*
*/
@TableField(value="create_user_name")
@Schema(description="创建人名称")
@Size(max = 100,message = "创建人名称最大长度要小于 100")
private String createUserName;
/**
*
*/
@TableField(value="create_time")
@Schema(description="创建时间")
@JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8")
private Date createTime;
}

View File

@ -0,0 +1,40 @@
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.service.impl.ServiceImpl;
import com.gunshi.project.xyt.mapper.BroadcastStationMapper;
import com.gunshi.project.xyt.model.BroadcastStation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
* : 广
* author: xusan
* date: 2024-09-25 10:19:15
*/
@Service
@Slf4j
@Transactional(rollbackFor = Exception.class)
public class BroadcastStationService extends ServiceImpl<BroadcastStationMapper, BroadcastStation>
{
public BroadcastStation saveData(BroadcastStation dto) {
dto.setId(IdWorker.getId());
QueryWrapper<BroadcastStation> queryWrapper = new QueryWrapper<>();
queryWrapper.orderBy(true, false, "order_index");
BroadcastStation lastOne = super.getOne(queryWrapper, false);
int order = 0;
if (lastOne == null) {
order = 1;
} else {
order = lastOne.getOrderIndex() + 1;
}
dto.setOrderIndex(order);
this.save(dto);
return dto;
}
}

View File

@ -0,0 +1,40 @@
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.service.impl.ServiceImpl;
import com.gunshi.project.xyt.mapper.BroadcastTemplateMapper;
import com.gunshi.project.xyt.model.BroadcastTemplate;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
* : 广
* author: xusan
* date: 2024-09-25 10:19:00
*/
@Service
@Slf4j
@Transactional(rollbackFor = Exception.class)
public class BroadcastTemplateService extends ServiceImpl<BroadcastTemplateMapper, BroadcastTemplate>
{
public BroadcastTemplate saveData(BroadcastTemplate dto) {
dto.setId(IdWorker.getId());
QueryWrapper<BroadcastTemplate> queryWrapper = new QueryWrapper<>();
queryWrapper.orderBy(true, false, "order_index");
BroadcastTemplate lastOne = super.getOne(queryWrapper, false);
int order = 0;
if (lastOne == null) {
order = 1;
} else {
order = lastOne.getOrderIndex() + 1;
}
dto.setOrderIndex(order);
this.save(dto);
return dto;
}
}

View File

@ -0,0 +1,30 @@
package com.gunshi.project.xyt.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.gunshi.project.xyt.entity.so.BroadcastWarnPageSo;
import com.gunshi.project.xyt.mapper.BroadcastWarnMapper;
import com.gunshi.project.xyt.model.BroadcastWarn;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
/**
* : 广
* author: xusan
* date: 2024-09-25 10:17:54
*/
@Service
@Slf4j
@Transactional(rollbackFor = Exception.class)
public class BroadcastWarnService extends ServiceImpl<BroadcastWarnMapper, BroadcastWarn>
{
public Page<BroadcastWarn> pageQuery(BroadcastWarnPageSo page) {
return this.baseMapper.pageQuery(page.getPageSo().toPage(),page);
}
}