diff --git a/web-adapter/src/main/java/com/zcloud/zcGbsServicer/web/AlarmRecordController.java b/web-adapter/src/main/java/com/zcloud/zcGbsServicer/web/AlarmRecordController.java new file mode 100644 index 0000000..66b3e77 --- /dev/null +++ b/web-adapter/src/main/java/com/zcloud/zcGbsServicer/web/AlarmRecordController.java @@ -0,0 +1,57 @@ +package com.zcloud.zcGbsServicer.web; + +import com.alibaba.cola.dto.PageResponse; +import com.alibaba.cola.dto.Response; +import com.alibaba.cola.dto.SingleResponse; +import com.zcloud.zcGbsServicer.api.AlarmRecordServiceI; +import com.zcloud.zcGbsServicer.dto.AlarmRecordAddCmd; +import com.zcloud.zcGbsServicer.dto.AlarmRecordClearCmd; +import com.zcloud.zcGbsServicer.dto.AlarmRecordHandleCmd; +import com.zcloud.zcGbsServicer.dto.AlarmRecordPageQry; +import com.zcloud.zcGbsServicer.dto.clientobject.AlarmRecordCO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.AllArgsConstructor; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +@Api(tags = "消防报警记录") +@RestController +@AllArgsConstructor +@RequestMapping("/${application.gateway}/alarmRecord") +public class AlarmRecordController { + + private final AlarmRecordServiceI alarmRecordService; + + @ApiOperation("分页查询") + @PostMapping("/list") + public PageResponse list(@RequestBody AlarmRecordPageQry qry) { + return alarmRecordService.listPage(qry); + } + + @ApiOperation("新增") + @PostMapping("/save") + public SingleResponse save(@Validated @RequestBody AlarmRecordAddCmd cmd) { + return alarmRecordService.add(cmd); + } + + @ApiOperation("详情") + @GetMapping("/{id}") + public SingleResponse get(@PathVariable Long id) { + return SingleResponse.of(alarmRecordService.get(id)); + } + + @ApiOperation("处置") + @PostMapping("/handle") + public Response handle(@Validated @RequestBody AlarmRecordHandleCmd cmd) { + alarmRecordService.handle(cmd); + return Response.buildSuccess(); + } + + @ApiOperation("消警") + @PostMapping("/clear") + public Response clear(@Validated @RequestBody AlarmRecordClearCmd cmd) { + alarmRecordService.clear(cmd); + return Response.buildSuccess(); + } +} diff --git a/web-app/src/main/java/com/zcloud/zcGbsServicer/command/convertor/AlarmRecordCoConvertor.java b/web-app/src/main/java/com/zcloud/zcGbsServicer/command/convertor/AlarmRecordCoConvertor.java new file mode 100644 index 0000000..65de5e5 --- /dev/null +++ b/web-app/src/main/java/com/zcloud/zcGbsServicer/command/convertor/AlarmRecordCoConvertor.java @@ -0,0 +1,15 @@ +package com.zcloud.zcGbsServicer.command.convertor; + +import com.zcloud.zcGbsServicer.dto.clientobject.AlarmRecordCO; +import com.zcloud.zcGbsServicer.persistence.dataobject.FireAlarmInfoDO; +import org.mapstruct.Mapper; + +import java.util.List; + +@Mapper(componentModel = "spring") +public interface AlarmRecordCoConvertor { + + List converDOsToCOs(List fireAlarmInfoDOs); + + AlarmRecordCO converDOToCO(FireAlarmInfoDO fireAlarmInfoDO); +} diff --git a/web-app/src/main/java/com/zcloud/zcGbsServicer/service/AlarmRecordServiceImpl.java b/web-app/src/main/java/com/zcloud/zcGbsServicer/service/AlarmRecordServiceImpl.java new file mode 100644 index 0000000..ce2f3d0 --- /dev/null +++ b/web-app/src/main/java/com/zcloud/zcGbsServicer/service/AlarmRecordServiceImpl.java @@ -0,0 +1,244 @@ +package com.zcloud.zcGbsServicer.service; + +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.cola.dto.PageResponse; +import com.alibaba.cola.dto.SingleResponse; +import com.alibaba.cola.exception.BizException; +import com.zcloud.zcGbsServicer.api.AlarmRecordServiceI; +import com.zcloud.zcGbsServicer.command.convertor.AlarmRecordCoConvertor; +import com.zcloud.zcGbsServicer.dto.AlarmRecordAddCmd; +import com.zcloud.zcGbsServicer.dto.AlarmRecordClearCmd; +import com.zcloud.zcGbsServicer.dto.AlarmRecordHandleCmd; +import com.zcloud.zcGbsServicer.dto.AlarmRecordPageQry; +import com.zcloud.zcGbsServicer.dto.clientobject.AlarmRecordCO; +import com.zcloud.zcGbsServicer.persistence.dataobject.FireAlarmInfoDO; +import com.zcloud.zcGbsServicer.persistence.dataobject.FireBrigadeDO; +import com.zcloud.zcGbsServicer.persistence.repository.FireAlarmInfoRepository; +import com.zcloud.zcGbsServicer.persistence.repository.FireBrigadeRepository; +import com.zcloud.zcGbsServicer.persistence.repository.FireBrigadeUserRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; +import java.util.stream.Collectors; + +@Service +@RequiredArgsConstructor +public class AlarmRecordServiceImpl extends FireAlarmServiceSupport implements AlarmRecordServiceI { + + private static final int ALARM_MODE_PHONE = 1; + private static final int ALARM_MODE_APP = 2; + private static final int ALARM_STATUS_ALARMING = 1; + private static final int ALARM_STATUS_DISPOSING = 2; + private static final int ALARM_STATUS_CLEARED = 3; + private static final DateTimeFormatter TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + + private final FireAlarmInfoRepository fireAlarmInfoRepository; + private final FireBrigadeRepository fireBrigadeRepository; + private final FireBrigadeUserRepository fireBrigadeUserRepository; + private final AlarmRecordCoConvertor alarmRecordCoConvertor; + + @Override + public PageResponse listPage(AlarmRecordPageQry qry) { + Map params = new HashMap<>(); + params.put("pageIndex", qry.getPageIndex()); + params.put("pageSize", qry.getPageSize()); + params.put("fireBrigadeName", qry.getTeam()); + params.put("alarmStatus", parseStatus(qry.getStatus())); + PageResponse page = fireAlarmInfoRepository.listPage(params); + return PageResponse.of(page.getData().stream().map(this::buildCO).collect(Collectors.toList()), + page.getTotalCount(), page.getPageSize(), page.getPageIndex()); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public SingleResponse add(AlarmRecordAddCmd cmd) { + if (!isValidLongitude(cmd.getLng()) || !isValidLatitude(cmd.getLat())) { + throw new BizException("经纬度超出范围"); + } + FireAlarmInfoDO record = new FireAlarmInfoDO(); + record.setId(nextId()); + record.setFireAlarmInfoId(nextBizId()); + fillCreateAudit(record); + record.setAlarmMode(ALARM_MODE_PHONE); + record.setAlarmUserId(cmd.getAlarmUserId()); + record.setAlarmUserName(cmd.getReporter()); + record.setAlarmPhone(cmd.getAlarmPhone()); + record.setCorpinfoId(cmd.getCorpinfoId()); + record.setCorpinfoName(cmd.getUnit()); + record.setFireLocation(cmd.getLocation()); + record.setLocationAddress(StrUtil.isBlank(cmd.getLocationAddress()) ? cmd.getLocation() : cmd.getLocationAddress()); + record.setLongitude(BigDecimal.valueOf(cmd.getLng())); + record.setLatitude(BigDecimal.valueOf(cmd.getLat())); + record.setAlarmStatus(ALARM_STATUS_ALARMING); + record.setRecordTime(LocalDateTime.now()); + record.setMeetingNoticeStatus("INIT"); + fireAlarmInfoRepository.save(record); + return SingleResponse.of(buildCO(record)); + } + + @Override + public AlarmRecordCO get(Long id) { + FireAlarmInfoDO record = fireAlarmInfoRepository.getById(id); + if (record == null) { + throw new BizException("消防报警记录不存在"); + } + return buildCO(record); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void handle(AlarmRecordHandleCmd cmd) { + FireAlarmInfoDO record = fireAlarmInfoRepository.getById(cmd.getId()); + if (record == null) { + throw new BizException("消防报警记录不存在"); + } + if (!Integer.valueOf(ALARM_STATUS_ALARMING).equals(record.getAlarmStatus())) { + throw new BizException("仅报警中的记录可处置"); + } + fillBrigade(record, cmd.getFireBrigadeId(), cmd.getFireBrigadeName()); + record.setHandleUserId(currentUserId()); + record.setHandleUserName(currentUserName()); + record.setHandleTime(LocalDateTime.now()); + record.setAlarmStatus(ALARM_STATUS_DISPOSING); + fillUpdateAudit(record); + fireAlarmInfoRepository.updateById(record); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void clear(AlarmRecordClearCmd cmd) { + FireAlarmInfoDO record = fireAlarmInfoRepository.getById(cmd.getId()); + if (record == null) { + throw new BizException("消防报警记录不存在"); + } + if (!Integer.valueOf(ALARM_STATUS_DISPOSING).equals(record.getAlarmStatus())) { + throw new BizException("仅处置中的记录可消警"); + } + if (!canClearByCurrentUser(record)) { + throw new BizException("仅当前处置消防队成员可消警"); + } + record.setClearReason(cmd.getDesc()); + record.setClearId(currentUserId()); + record.setClearName(currentUserName()); + record.setClearTime(LocalDateTime.now()); + record.setAlarmStatus(ALARM_STATUS_CLEARED); + fillUpdateAudit(record); + fireAlarmInfoRepository.updateById(record); + } + + private void fillBrigade(FireAlarmInfoDO record, Long fireBrigadePkId, String fireBrigadeName) { + if (fireBrigadePkId == null) { + throw new BizException("请选择处置消防队伍"); + } + FireBrigadeDO brigade = fireBrigadeRepository.getById(fireBrigadePkId); + if (brigade == null) { + throw new BizException("处置消防队伍不存在"); + } + record.setFireBrigadeId(brigade.getFireBrigadeId()); + record.setFireBrigadeName(StrUtil.isNotBlank(brigade.getBrigadeName()) ? brigade.getBrigadeName() : fireBrigadeName); + } + + private AlarmRecordCO buildCO(FireAlarmInfoDO record) { + AlarmRecordCO co = alarmRecordCoConvertor.converDOToCO(record); + co.setAlarmUserId(record.getAlarmUserId()); + co.setSourceCode(record.getAlarmMode() == null ? null : String.valueOf(record.getAlarmMode())); + co.setSource(sourceName(record.getAlarmMode())); + co.setFireBrigadeId(resolveFireBrigadePkId(record.getFireBrigadeId())); + co.setRecordTime(formatTime(record.getRecordTime())); + co.setStatusCode(record.getAlarmStatus() == null ? null : String.valueOf(record.getAlarmStatus())); + co.setStatus(statusName(record.getAlarmStatus())); + co.setHandleUserId(record.getHandleUserId()); + co.setHandleUserName(record.getHandleUserName()); + co.setHandleTime(formatTime(record.getHandleTime())); + co.setClearId(record.getClearId()); + co.setClearName(record.getClearName()); + co.setClearTime(formatTime(record.getClearTime())); + co.setPhotos(Collections.emptyList()); + return co; + } + + private Integer parseStatus(String status) { + if (StrUtil.isBlank(status)) { + return null; + } + try { + return Integer.valueOf(status.trim()); + } + catch (Exception ignored) { + if ("报警中".equals(status)) { + return ALARM_STATUS_ALARMING; + } + if ("处置中".equals(status)) { + return ALARM_STATUS_DISPOSING; + } + if ("已消警".equals(status)) { + return ALARM_STATUS_CLEARED; + } + return null; + } + } + + private String sourceName(Integer alarmMode) { + if (Integer.valueOf(ALARM_MODE_APP).equals(alarmMode)) { + return "APP报警"; + } + return "电话接报"; + } + + private String statusName(Integer alarmStatus) { + if (Integer.valueOf(ALARM_STATUS_ALARMING).equals(alarmStatus)) { + return "报警中"; + } + if (Integer.valueOf(ALARM_STATUS_DISPOSING).equals(alarmStatus)) { + return "处置中"; + } + if (Integer.valueOf(ALARM_STATUS_CLEARED).equals(alarmStatus)) { + return "已消警"; + } + return null; + } + + private String formatTime(LocalDateTime time) { + return time == null ? null : TIME_FORMATTER.format(time); + } + + private Long resolveFireBrigadePkId(String fireBrigadeBizId) { + if (StrUtil.isBlank(fireBrigadeBizId)) { + return null; + } + FireBrigadeDO brigade = fireBrigadeRepository.getByFireBrigadeId(fireBrigadeBizId); + return brigade == null ? null : brigade.getId(); + } + + private boolean canClearByCurrentUser(FireAlarmInfoDO record) { + if (record.getFireBrigadeId() == null || currentUserId() == null) { + return false; + } + return fireBrigadeUserRepository.existsRelation(record.getFireBrigadeId(), currentUserId(), null); + } + + private boolean isValidLongitude(Double lng) { + return lng != null && lng >= -180D && lng <= 180D; + } + + private boolean isValidLatitude(Double lat) { + return lat != null && lat >= -90D && lat <= 90D; + } + + private long nextId() { + return IdUtil.getSnowflake(1, 1).nextId(); + } + + private String nextBizId() { + return UUID.randomUUID().toString().replace("-", ""); + } +} diff --git a/web-client/src/main/java/com/zcloud/zcGbsServicer/api/AlarmRecordServiceI.java b/web-client/src/main/java/com/zcloud/zcGbsServicer/api/AlarmRecordServiceI.java new file mode 100644 index 0000000..bf8f420 --- /dev/null +++ b/web-client/src/main/java/com/zcloud/zcGbsServicer/api/AlarmRecordServiceI.java @@ -0,0 +1,22 @@ +package com.zcloud.zcGbsServicer.api; + +import com.alibaba.cola.dto.PageResponse; +import com.alibaba.cola.dto.SingleResponse; +import com.zcloud.zcGbsServicer.dto.AlarmRecordAddCmd; +import com.zcloud.zcGbsServicer.dto.AlarmRecordClearCmd; +import com.zcloud.zcGbsServicer.dto.AlarmRecordHandleCmd; +import com.zcloud.zcGbsServicer.dto.AlarmRecordPageQry; +import com.zcloud.zcGbsServicer.dto.clientobject.AlarmRecordCO; + +public interface AlarmRecordServiceI { + + PageResponse listPage(AlarmRecordPageQry qry); + + SingleResponse add(AlarmRecordAddCmd cmd); + + AlarmRecordCO get(Long id); + + void handle(AlarmRecordHandleCmd cmd); + + void clear(AlarmRecordClearCmd cmd); +} diff --git a/web-client/src/main/java/com/zcloud/zcGbsServicer/dto/AlarmRecordAddCmd.java b/web-client/src/main/java/com/zcloud/zcGbsServicer/dto/AlarmRecordAddCmd.java new file mode 100644 index 0000000..3246e9d --- /dev/null +++ b/web-client/src/main/java/com/zcloud/zcGbsServicer/dto/AlarmRecordAddCmd.java @@ -0,0 +1,44 @@ +package com.zcloud.zcGbsServicer.dto; + +import com.alibaba.cola.dto.Command; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +@Data +public class AlarmRecordAddCmd extends Command { + + @ApiModelProperty("报警人用户ID") + private Long alarmUserId; + + @NotBlank + @ApiModelProperty("报警人") + private String reporter; + + @ApiModelProperty("报警人电话") + private String alarmPhone; + + @ApiModelProperty("所属单位ID") + private Long corpinfoId; + + @NotBlank + @ApiModelProperty("火警位置") + private String location; + + @NotBlank + @ApiModelProperty("所属单位") + private String unit; + + @ApiModelProperty("定位地址") + private String locationAddress; + + @NotNull + @ApiModelProperty("经度") + private Double lng; + + @NotNull + @ApiModelProperty("纬度") + private Double lat; +} diff --git a/web-client/src/main/java/com/zcloud/zcGbsServicer/dto/AlarmRecordClearCmd.java b/web-client/src/main/java/com/zcloud/zcGbsServicer/dto/AlarmRecordClearCmd.java new file mode 100644 index 0000000..c86039a --- /dev/null +++ b/web-client/src/main/java/com/zcloud/zcGbsServicer/dto/AlarmRecordClearCmd.java @@ -0,0 +1,30 @@ +package com.zcloud.zcGbsServicer.dto; + +import com.alibaba.cola.dto.Command; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.util.List; + +@Data +public class AlarmRecordClearCmd extends Command { + + @NotNull + @ApiModelProperty("报警记录ID") + private Long id; + + @ApiModelProperty("消防队伍ID") + private Long fireBrigadeId; + + @ApiModelProperty("消防队伍名称") + private String fireBrigadeName; + + @NotBlank + @ApiModelProperty("处置说明") + private String desc; + + @ApiModelProperty("现场照片") + private List photos; +} diff --git a/web-client/src/main/java/com/zcloud/zcGbsServicer/dto/AlarmRecordHandleCmd.java b/web-client/src/main/java/com/zcloud/zcGbsServicer/dto/AlarmRecordHandleCmd.java new file mode 100644 index 0000000..f190edb --- /dev/null +++ b/web-client/src/main/java/com/zcloud/zcGbsServicer/dto/AlarmRecordHandleCmd.java @@ -0,0 +1,21 @@ +package com.zcloud.zcGbsServicer.dto; + +import com.alibaba.cola.dto.Command; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +@Data +public class AlarmRecordHandleCmd extends Command { + + @NotNull + @ApiModelProperty("报警记录ID") + private Long id; + + @ApiModelProperty("消防队伍ID") + private Long fireBrigadeId; + + @ApiModelProperty("消防队伍名称") + private String fireBrigadeName; +} diff --git a/web-client/src/main/java/com/zcloud/zcGbsServicer/dto/AlarmRecordPageQry.java b/web-client/src/main/java/com/zcloud/zcGbsServicer/dto/AlarmRecordPageQry.java new file mode 100644 index 0000000..c3f360f --- /dev/null +++ b/web-client/src/main/java/com/zcloud/zcGbsServicer/dto/AlarmRecordPageQry.java @@ -0,0 +1,15 @@ +package com.zcloud.zcGbsServicer.dto; + +import com.alibaba.cola.dto.PageQuery; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmRecordPageQry extends PageQuery { + + @ApiModelProperty("处置队伍名称") + private String team; + + @ApiModelProperty("报警状态") + private String status; +} diff --git a/web-client/src/main/java/com/zcloud/zcGbsServicer/dto/clientobject/AlarmRecordCO.java b/web-client/src/main/java/com/zcloud/zcGbsServicer/dto/clientobject/AlarmRecordCO.java new file mode 100644 index 0000000..ea2af27 --- /dev/null +++ b/web-client/src/main/java/com/zcloud/zcGbsServicer/dto/clientobject/AlarmRecordCO.java @@ -0,0 +1,62 @@ +package com.zcloud.zcGbsServicer.dto.clientobject; + +import com.alibaba.cola.dto.ClientObject; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +@Data +public class AlarmRecordCO extends ClientObject { + + private Long id; + private String fireAlarmInfoId; + private String sourceCode; + private String source; + private Long alarmUserId; + + @JsonProperty("reporter") + private String alarmUserName; + + @JsonProperty("unit") + private String corpinfoName; + + @JsonProperty("location") + private String fireLocation; + + private String locationAddress; + + @JsonProperty("lng") + private BigDecimal longitude; + + @JsonProperty("lat") + private BigDecimal latitude; + + private Long fireBrigadeId; + + @JsonProperty("team") + private String fireBrigadeName; + + @JsonProperty("time") + private String recordTime; + + private String statusCode; + private String status; + private Long handleUserId; + private String handleUserName; + private String handleTime; + + @JsonProperty("clearUserId") + private Long clearId; + + @JsonProperty("clearUserName") + private String clearName; + + private String clearTime; + + @JsonProperty("desc") + private String clearReason; + + private List photos; +} diff --git a/web-infrastructure/src/main/java/com/zcloud/zcGbsServicer/persistence/dataobject/FireAlarmInfoDO.java b/web-infrastructure/src/main/java/com/zcloud/zcGbsServicer/persistence/dataobject/FireAlarmInfoDO.java new file mode 100644 index 0000000..176ea20 --- /dev/null +++ b/web-infrastructure/src/main/java/com/zcloud/zcGbsServicer/persistence/dataobject/FireAlarmInfoDO.java @@ -0,0 +1,55 @@ +package com.zcloud.zcGbsServicer.persistence.dataobject; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.jjb.saas.framework.repository.basedo.BaseDO; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("fire_alarm_info") +public class FireAlarmInfoDO extends BaseDO { + + private String fireAlarmInfoId; + private Integer alarmMode; + private Long alarmUserId; + private String alarmUserName; + private String alarmPhone; + private Long corpinfoId; + private String corpinfoName; + private String fireLocation; + private String locationAddress; + private BigDecimal longitude; + private BigDecimal latitude; + private String fireBrigadeId; + private String fireBrigadeName; + private Integer alarmStatus; + private LocalDateTime recordTime; + private Long handleUserId; + private String handleUserName; + private LocalDateTime handleTime; + private LocalDateTime clearTime; + private Long clearId; + private String clearName; + private String clearReason; + private String meetingRoomId; + private String meetingRoomName; + private Long meetingApplyUserId; + private String meetingApplyUserName; + private String meetingApplyThirdUserId; + private String meetingApplyThirdUserName; + private String meetingNoticeStatus; + private LocalDateTime meetingNoticeTime; + private Integer meetingAuthStatus; + private Integer meetingApproveStatus; + private Long meetingApproveId; + private String meetingApproveName; + private LocalDateTime meetingApproveTime; + private Integer meetingJoinStatus; + private LocalDateTime meetingJoinTime; + private LocalDateTime meetingLeaveTime; + private String meetingResultMsg; +} diff --git a/web-infrastructure/src/main/java/com/zcloud/zcGbsServicer/persistence/mapper/FireAlarmInfoMapper.java b/web-infrastructure/src/main/java/com/zcloud/zcGbsServicer/persistence/mapper/FireAlarmInfoMapper.java new file mode 100644 index 0000000..1a36b72 --- /dev/null +++ b/web-infrastructure/src/main/java/com/zcloud/zcGbsServicer/persistence/mapper/FireAlarmInfoMapper.java @@ -0,0 +1,16 @@ +package com.zcloud.zcGbsServicer.persistence.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.zcloud.zcGbsServicer.persistence.dataobject.FireAlarmInfoDO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +@Mapper +public interface FireAlarmInfoMapper extends BaseMapper { + + IPage selectPageSql(IPage page, + @Param("tenantId") Long tenantId, + @Param("fireBrigadeName") String fireBrigadeName, + @Param("alarmStatus") Integer alarmStatus); +} diff --git a/web-infrastructure/src/main/java/com/zcloud/zcGbsServicer/persistence/repository/FireAlarmInfoRepository.java b/web-infrastructure/src/main/java/com/zcloud/zcGbsServicer/persistence/repository/FireAlarmInfoRepository.java new file mode 100644 index 0000000..8a58d75 --- /dev/null +++ b/web-infrastructure/src/main/java/com/zcloud/zcGbsServicer/persistence/repository/FireAlarmInfoRepository.java @@ -0,0 +1,12 @@ +package com.zcloud.zcGbsServicer.persistence.repository; + +import com.alibaba.cola.dto.PageResponse; +import com.jjb.saas.framework.repository.repo.BaseRepository; +import com.zcloud.zcGbsServicer.persistence.dataobject.FireAlarmInfoDO; + +import java.util.Map; + +public interface FireAlarmInfoRepository extends BaseRepository { + + PageResponse listPage(Map params); +} diff --git a/web-infrastructure/src/main/java/com/zcloud/zcGbsServicer/persistence/repository/impl/FireAlarmInfoRepositoryImpl.java b/web-infrastructure/src/main/java/com/zcloud/zcGbsServicer/persistence/repository/impl/FireAlarmInfoRepositoryImpl.java new file mode 100644 index 0000000..77c0913 --- /dev/null +++ b/web-infrastructure/src/main/java/com/zcloud/zcGbsServicer/persistence/repository/impl/FireAlarmInfoRepositoryImpl.java @@ -0,0 +1,31 @@ +package com.zcloud.zcGbsServicer.persistence.repository.impl; + +import com.alibaba.cola.dto.PageResponse; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.jjb.saas.framework.auth.utils.AuthContext; +import com.jjb.saas.framework.repository.common.PageHelper; +import com.jjb.saas.framework.repository.repo.impl.BaseRepositoryImpl; +import com.zcloud.gbscommon.utils.Query; +import com.zcloud.zcGbsServicer.persistence.dataobject.FireAlarmInfoDO; +import com.zcloud.zcGbsServicer.persistence.mapper.FireAlarmInfoMapper; +import com.zcloud.zcGbsServicer.persistence.repository.FireAlarmInfoRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.Map; + +@Service +@RequiredArgsConstructor +public class FireAlarmInfoRepositoryImpl extends BaseRepositoryImpl implements FireAlarmInfoRepository { + + private final FireAlarmInfoMapper fireAlarmInfoMapper; + + @Override + public PageResponse listPage(Map params) { + IPage page = new Query().getPage(params); + String fireBrigadeName = params == null ? null : (String) params.get("fireBrigadeName"); + Integer alarmStatus = params == null ? null : (Integer) params.get("alarmStatus"); + IPage result = fireAlarmInfoMapper.selectPageSql(page, AuthContext.getTenantId(), fireBrigadeName, alarmStatus); + return PageHelper.pageToResponse(result, result.getRecords()); + } +} diff --git a/web-infrastructure/src/main/resources/mapper/FireAlarmInfoMapper.xml b/web-infrastructure/src/main/resources/mapper/FireAlarmInfoMapper.xml new file mode 100644 index 0000000..193fd32 --- /dev/null +++ b/web-infrastructure/src/main/resources/mapper/FireAlarmInfoMapper.xml @@ -0,0 +1,25 @@ + + + + + + + +