feat(): 添加报警记录权限查询和APP端同步会议账号功能
parent
154c41ec52
commit
892c736ea9
|
|
@ -6,6 +6,7 @@ import cn.hutool.json.JSONUtil;
|
||||||
import com.alibaba.cola.dto.PageResponse;
|
import com.alibaba.cola.dto.PageResponse;
|
||||||
import com.alibaba.cola.dto.SingleResponse;
|
import com.alibaba.cola.dto.SingleResponse;
|
||||||
import com.alibaba.cola.exception.BizException;
|
import com.alibaba.cola.exception.BizException;
|
||||||
|
import com.zcloud.gbscommon.utils.PageQueryHelper;
|
||||||
import com.zcloud.zcGbsServicer.api.AlarmRecordServiceI;
|
import com.zcloud.zcGbsServicer.api.AlarmRecordServiceI;
|
||||||
import com.zcloud.zcGbsServicer.command.convertor.AlarmRecordCoConvertor;
|
import com.zcloud.zcGbsServicer.command.convertor.AlarmRecordCoConvertor;
|
||||||
import com.zcloud.zcGbsServicer.dto.AlarmRecordAddCmd;
|
import com.zcloud.zcGbsServicer.dto.AlarmRecordAddCmd;
|
||||||
|
|
@ -16,6 +17,8 @@ import com.zcloud.zcGbsServicer.dto.clientobject.AlarmRecordCO;
|
||||||
import com.zcloud.zcGbsServicer.persistence.dataobject.FireAlarmInfoDO;
|
import com.zcloud.zcGbsServicer.persistence.dataobject.FireAlarmInfoDO;
|
||||||
import com.zcloud.zcGbsServicer.persistence.dataobject.FireBrigadeDO;
|
import com.zcloud.zcGbsServicer.persistence.dataobject.FireBrigadeDO;
|
||||||
import com.zcloud.zcGbsServicer.persistence.dataobject.FireBrigadeUserDO;
|
import com.zcloud.zcGbsServicer.persistence.dataobject.FireBrigadeUserDO;
|
||||||
|
import com.zcloud.zcGbsServicer.persistence.dataobject.AlarmUserScopeDO;
|
||||||
|
import com.zcloud.zcGbsServicer.persistence.repository.AlarmUserRepository;
|
||||||
import com.zcloud.zcGbsServicer.persistence.repository.FireAlarmInfoRepository;
|
import com.zcloud.zcGbsServicer.persistence.repository.FireAlarmInfoRepository;
|
||||||
import com.zcloud.zcGbsServicer.persistence.repository.FireBrigadeRepository;
|
import com.zcloud.zcGbsServicer.persistence.repository.FireBrigadeRepository;
|
||||||
import com.zcloud.zcGbsServicer.persistence.repository.FireBrigadeUserRepository;
|
import com.zcloud.zcGbsServicer.persistence.repository.FireBrigadeUserRepository;
|
||||||
|
|
@ -42,33 +45,63 @@ public class AlarmRecordServiceImpl extends FireAlarmServiceSupport implements A
|
||||||
private static final int ALARM_STATUS_ALARMING = 1;
|
private static final int ALARM_STATUS_ALARMING = 1;
|
||||||
private static final int ALARM_STATUS_DISPOSING = 2;
|
private static final int ALARM_STATUS_DISPOSING = 2;
|
||||||
private static final int ALARM_STATUS_CLEARED = 3;
|
private static final int ALARM_STATUS_CLEARED = 3;
|
||||||
|
private static final int USER_TYPE_SUPERVISE = 1;
|
||||||
|
private static final int USER_TYPE_ENTERPRISE = 2;
|
||||||
|
private static final int USER_TYPE_RELATED = 3;
|
||||||
|
/** 港务局用户-gwj特殊处理 */
|
||||||
|
private static final Long SPECIAL_SUPERVISE_USER_ID = 1976974388809424896L;
|
||||||
private static final DateTimeFormatter TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
private static final DateTimeFormatter TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
||||||
|
|
||||||
private final FireAlarmInfoRepository fireAlarmInfoRepository;
|
private final FireAlarmInfoRepository fireAlarmInfoRepository;
|
||||||
private final FireBrigadeRepository fireBrigadeRepository;
|
private final FireBrigadeRepository fireBrigadeRepository;
|
||||||
private final FireBrigadeUserRepository fireBrigadeUserRepository;
|
private final FireBrigadeUserRepository fireBrigadeUserRepository;
|
||||||
|
private final AlarmUserRepository alarmUserRepository;
|
||||||
private final AlarmRecordCoConvertor alarmRecordCoConvertor;
|
private final AlarmRecordCoConvertor alarmRecordCoConvertor;
|
||||||
|
private final FireAlarmMeetingAccountService fireAlarmMeetingAccountService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PageResponse<AlarmRecordCO> listPage(AlarmRecordPageQry qry) {
|
public PageResponse<AlarmRecordCO> listPage(AlarmRecordPageQry qry) {
|
||||||
Map<String, Object> params = new HashMap<>();
|
Map<String, Object> params = PageQueryHelper.toHashMap(qry);
|
||||||
params.put("pageIndex", qry.getPageIndex());
|
String menuPath = qry == null ? null : qry.getMenuPath();
|
||||||
params.put("pageSize", qry.getPageSize());
|
if (qry != null && StrUtil.isNotBlank(qry.getTeam())) {
|
||||||
params.put("fireBrigadeName", qry.getTeam());
|
params.put("fireBrigadeName", qry.getTeam().trim());
|
||||||
params.put("alarmStatus", parseStatus(qry.getStatus()));
|
|
||||||
params.put("feedbackOnly", Boolean.TRUE.equals(qry.getMyFeedbackOnly()));
|
|
||||||
if (Boolean.TRUE.equals(qry.getMyFeedbackOnly())) {
|
|
||||||
List<String> currentBrigadeIds = getCurrentUserBrigadeBizIds();
|
|
||||||
if (currentBrigadeIds.isEmpty()) {
|
|
||||||
return PageResponse.of(Collections.emptyList(), 0, qry.getPageSize(), qry.getPageIndex());
|
|
||||||
}
|
|
||||||
params.put("fireBrigadeIds", currentBrigadeIds);
|
|
||||||
}
|
}
|
||||||
PageResponse<FireAlarmInfoDO> page = fireAlarmInfoRepository.listPage(params);
|
Integer alarmStatus = parseStatus(qry == null ? null : qry.getStatus());
|
||||||
|
if (alarmStatus != null) {
|
||||||
|
params.put("alarmStatus", alarmStatus);
|
||||||
|
}
|
||||||
|
Long corpinfoId = resolveListCorpinfoId(qry);
|
||||||
|
if (corpinfoId != null) {
|
||||||
|
params.put("corpinfoId", corpinfoId);
|
||||||
|
}
|
||||||
|
PageResponse<FireAlarmInfoDO> page = fireAlarmInfoRepository.listPage(params, menuPath);
|
||||||
return PageResponse.of(page.getData().stream().map(this::buildCO).collect(Collectors.toList()),
|
return PageResponse.of(page.getData().stream().map(this::buildCO).collect(Collectors.toList()),
|
||||||
page.getTotalCount(), page.getPageSize(), page.getPageIndex());
|
page.getTotalCount(), page.getPageSize(), page.getPageIndex());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* user_type:1监管可查全部;2企业/3相关方查本企业。
|
||||||
|
*/
|
||||||
|
private Long resolveListCorpinfoId(AlarmRecordPageQry qry) {
|
||||||
|
Long userId = currentUserId();
|
||||||
|
if (SPECIAL_SUPERVISE_USER_ID.equals(userId)) {
|
||||||
|
return qry == null ? null : qry.getCorpinfoId();
|
||||||
|
}
|
||||||
|
AlarmUserScopeDO scope = alarmUserRepository.getScopeByUserId(userId);
|
||||||
|
Integer userType = scope == null ? null : scope.getUserType();
|
||||||
|
if (Integer.valueOf(USER_TYPE_SUPERVISE).equals(userType)) {
|
||||||
|
return qry == null ? null : qry.getCorpinfoId();
|
||||||
|
}
|
||||||
|
if (Integer.valueOf(USER_TYPE_ENTERPRISE).equals(userType)
|
||||||
|
|| Integer.valueOf(USER_TYPE_RELATED).equals(userType)) {
|
||||||
|
if (scope.getCorpinfoId() != null) {
|
||||||
|
return scope.getCorpinfoId();
|
||||||
|
}
|
||||||
|
throw new BizException("当前企业用户未配置所属企业,无法查询报警记录");
|
||||||
|
}
|
||||||
|
return qry == null ? null : qry.getCorpinfoId();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public SingleResponse<AlarmRecordCO> add(AlarmRecordAddCmd cmd) {
|
public SingleResponse<AlarmRecordCO> add(AlarmRecordAddCmd cmd) {
|
||||||
|
|
@ -92,6 +125,18 @@ public class AlarmRecordServiceImpl extends FireAlarmServiceSupport implements A
|
||||||
record.setAlarmStatus(ALARM_STATUS_ALARMING);
|
record.setAlarmStatus(ALARM_STATUS_ALARMING);
|
||||||
record.setRecordTime(LocalDateTime.now());
|
record.setRecordTime(LocalDateTime.now());
|
||||||
fireAlarmInfoRepository.save(record);
|
fireAlarmInfoRepository.save(record);
|
||||||
|
if (Integer.valueOf(ALARM_MODE_APP).equals(record.getAlarmMode())) {
|
||||||
|
Long appUserId = record.getAlarmUserId() == null ? currentUserId() : record.getAlarmUserId();
|
||||||
|
if (appUserId == null) {
|
||||||
|
throw new BizException("APP报警人用户ID不能为空");
|
||||||
|
}
|
||||||
|
if (record.getAlarmUserId() == null) {
|
||||||
|
record.setAlarmUserId(appUserId);
|
||||||
|
fillUpdateAudit(record);
|
||||||
|
fireAlarmInfoRepository.updateById(record);
|
||||||
|
}
|
||||||
|
fireAlarmMeetingAccountService.ensureAppMeetingAccount(appUserId, record.getAlarmUserName(), record.getAlarmPhone());
|
||||||
|
}
|
||||||
return SingleResponse.of(buildCO(record));
|
return SingleResponse.of(buildCO(record));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,198 @@
|
||||||
|
package com.zcloud.zcGbsServicer.service;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.IdUtil;
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import com.alibaba.cola.exception.BizException;
|
||||||
|
import com.zcloud.gbscommon.zclouduser.response.ZcloudUserCo;
|
||||||
|
import com.zcloud.zcGbsServicer.persistence.dataobject.FireAlarmMeetingRoomDO;
|
||||||
|
import com.zcloud.zcGbsServicer.persistence.dataobject.FireAlarmMeetingUserDO;
|
||||||
|
import com.zcloud.zcGbsServicer.persistence.repository.FireAlarmMeetingRoomRepository;
|
||||||
|
import com.zcloud.zcGbsServicer.persistence.repository.FireAlarmMeetingUserRepository;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
|
import java.util.Locale;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* APP 报警人会议账号:无映射或无第三方账号时按需创建。
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class FireAlarmMeetingAccountService extends FireAlarmServiceSupport {
|
||||||
|
|
||||||
|
private static final int MEETING_USER_TYPE_APP = 2;
|
||||||
|
|
||||||
|
private final FireAlarmMeetingUserRepository fireAlarmMeetingUserRepository;
|
||||||
|
private final FireAlarmMeetingRoomRepository fireAlarmMeetingRoomRepository;
|
||||||
|
private final HstVideoPlatformProperties hstVideoPlatformProperties;
|
||||||
|
private final HstVideoPlatformClient hstVideoPlatformClient;
|
||||||
|
private final FireAlarmUserResolver fireAlarmUserResolver;
|
||||||
|
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public void ensureAppMeetingAccount(Long localUserId, String localUserName, String localPhone) {
|
||||||
|
if (localUserId == null) {
|
||||||
|
throw new BizException("报警人用户ID不能为空");
|
||||||
|
}
|
||||||
|
Long userTenantId = fireAlarmUserResolver.resolveUserTenantId(localUserId);
|
||||||
|
FireAlarmMeetingUserDO meetingUser = fireAlarmMeetingUserRepository.getByLocalUserId(localUserId, userTenantId);
|
||||||
|
if (meetingUser != null && StrUtil.isNotBlank(meetingUser.getThirdUserName())) {
|
||||||
|
boolean needUpdate = false;
|
||||||
|
if (StrUtil.isNotBlank(localUserName) && !localUserName.equals(meetingUser.getLocalUserName())) {
|
||||||
|
meetingUser.setLocalUserName(localUserName);
|
||||||
|
needUpdate = true;
|
||||||
|
}
|
||||||
|
if (StrUtil.isNotBlank(localPhone) && !localPhone.equals(meetingUser.getLocalPhone())) {
|
||||||
|
meetingUser.setLocalPhone(localPhone);
|
||||||
|
needUpdate = true;
|
||||||
|
}
|
||||||
|
if (needUpdate) {
|
||||||
|
fillUpdateAudit(meetingUser);
|
||||||
|
fireAlarmMeetingUserRepository.updateById(meetingUser);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (StrUtil.isBlank(hstVideoPlatformProperties.getDefaultUserPassword())) {
|
||||||
|
throw new BizException("视频平台默认用户密码未配置,不能创建会议账号");
|
||||||
|
}
|
||||||
|
|
||||||
|
ZcloudUserCo user = fireAlarmUserResolver.getUserMap(Collections.singleton(localUserId)).get(localUserId);
|
||||||
|
String resolvedName = selectText(localUserName, user == null ? null : user.getName());
|
||||||
|
String resolvedPhone = selectText(localPhone, user == null ? null : user.getPhone());
|
||||||
|
String thirdUserName = resolveThirdUserName(meetingUser, localUserId);
|
||||||
|
|
||||||
|
Map<String, Object> requestBody = new LinkedHashMap<>();
|
||||||
|
requestBody.put("userName", thirdUserName);
|
||||||
|
requestBody.put("password", hstVideoPlatformProperties.getDefaultUserPassword());
|
||||||
|
requestBody.put("passwordType", 0);
|
||||||
|
requestBody.put("mobile", resolvedPhone);
|
||||||
|
requestBody.put("nickName", selectText(resolvedName, thirdUserName));
|
||||||
|
requestBody.put("sex", "0");
|
||||||
|
requestBody.put("departId", StrUtil.blankToDefault(hstVideoPlatformProperties.getDefaultDepartId(), "0"));
|
||||||
|
requestBody.put("adminRole", 2);
|
||||||
|
|
||||||
|
Map<String, Object> data = new HashMap<>();
|
||||||
|
String syncMsg = "第三方账号创建成功";
|
||||||
|
try {
|
||||||
|
Map<String, Object> response = hstVideoPlatformClient.addUser(requestBody);
|
||||||
|
hstVideoPlatformClient.ensureSuccess(response, "创建视频平台用户");
|
||||||
|
data = castMap(response.get("data"));
|
||||||
|
syncMsg = selectText(asText(response.get("msg")), syncMsg);
|
||||||
|
}
|
||||||
|
catch (BizException ex) {
|
||||||
|
if (!isAlreadyExists(ex.getMessage())) {
|
||||||
|
throw new BizException("创建视频平台用户失败:" + ex.getMessage());
|
||||||
|
}
|
||||||
|
syncMsg = "第三方账号已存在,已复用";
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean isNew = meetingUser == null;
|
||||||
|
if (meetingUser == null) {
|
||||||
|
meetingUser = new FireAlarmMeetingUserDO();
|
||||||
|
meetingUser.setId(nextId());
|
||||||
|
meetingUser.setFireAlarmMeetingUserId(nextBizId());
|
||||||
|
fillCreateAudit(meetingUser);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
fillUpdateAudit(meetingUser);
|
||||||
|
}
|
||||||
|
fireAlarmUserResolver.applyLocalUserTenant(meetingUser, localUserId);
|
||||||
|
|
||||||
|
FireAlarmMeetingRoomDO room = fireAlarmMeetingRoomRepository.getByRoomCode(hstVideoPlatformProperties.getDefaultRoomCode());
|
||||||
|
LocalDateTime now = LocalDateTime.now();
|
||||||
|
meetingUser.setLocalUserId(localUserId);
|
||||||
|
meetingUser.setLocalUserName(resolvedName);
|
||||||
|
meetingUser.setLocalPhone(resolvedPhone);
|
||||||
|
if (meetingUser.getUserType() == null) {
|
||||||
|
meetingUser.setUserType(MEETING_USER_TYPE_APP);
|
||||||
|
}
|
||||||
|
meetingUser.setThirdUserId(selectText(asText(data.get("userId")), meetingUser.getThirdUserId()));
|
||||||
|
meetingUser.setThirdUserName(selectText(asText(data.get("userName")), thirdUserName));
|
||||||
|
meetingUser.setThirdNickName(selectText(asText(data.get("displayName")), resolvedName));
|
||||||
|
meetingUser.setThirdDepartId(selectText(asText(data.get("departId")), hstVideoPlatformProperties.getDefaultDepartId()));
|
||||||
|
meetingUser.setAuthRoomId(room == null ? hstVideoPlatformProperties.getDefaultRoomNo()
|
||||||
|
: selectText(room.getThirdRoomId(), room.getThirdRoomNo()));
|
||||||
|
meetingUser.setAuthRoomName(room == null ? "消防报警固定会议室" : room.getRoomName());
|
||||||
|
meetingUser.setAuthStatus(1);
|
||||||
|
meetingUser.setAuthTime(now);
|
||||||
|
meetingUser.setSyncStatus(1);
|
||||||
|
meetingUser.setSyncMsg(syncMsg);
|
||||||
|
meetingUser.setLastSyncTime(now);
|
||||||
|
if (isNew) {
|
||||||
|
fireAlarmMeetingUserRepository.save(meetingUser);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
fireAlarmMeetingUserRepository.updateById(meetingUser);
|
||||||
|
}
|
||||||
|
syncRoomAuth(meetingUser.getThirdUserName(), 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void syncRoomAuth(String thirdUserName, int permission) {
|
||||||
|
if (StrUtil.isBlank(thirdUserName)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
FireAlarmMeetingRoomDO room = fireAlarmMeetingRoomRepository.getByRoomCode(hstVideoPlatformProperties.getDefaultRoomCode());
|
||||||
|
String roomId = room == null ? hstVideoPlatformProperties.getDefaultRoomNo()
|
||||||
|
: selectText(room.getThirdRoomId(), room.getThirdRoomNo());
|
||||||
|
if (StrUtil.isBlank(roomId)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Map<String, Object> requestBody = new LinkedHashMap<>();
|
||||||
|
requestBody.put("roomUserStr", roomId + "," + permission);
|
||||||
|
requestBody.put("userName", thirdUserName);
|
||||||
|
try {
|
||||||
|
Map<String, Object> response = hstVideoPlatformClient.authRoom(requestBody);
|
||||||
|
hstVideoPlatformClient.ensureSuccess(response, "用户授权会议室");
|
||||||
|
}
|
||||||
|
catch (BizException ex) {
|
||||||
|
throw new BizException("用户授权会议室失败:" + ex.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private String resolveThirdUserName(FireAlarmMeetingUserDO meetingUser, Long localUserId) {
|
||||||
|
if (meetingUser != null && StrUtil.isNotBlank(meetingUser.getThirdUserName())) {
|
||||||
|
return meetingUser.getThirdUserName().trim();
|
||||||
|
}
|
||||||
|
String userName = StrUtil.blankToDefault(hstVideoPlatformProperties.getFireUserPrefix(), "xfbj") + localUserId;
|
||||||
|
if (userName.length() > 32) {
|
||||||
|
return userName.substring(0, 32);
|
||||||
|
}
|
||||||
|
return userName;
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean isAlreadyExists(String message) {
|
||||||
|
String msg = StrUtil.blankToDefault(message, "").toLowerCase(Locale.ROOT);
|
||||||
|
return msg.contains("存在") || msg.contains("exist") || msg.contains("duplicate");
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
private Map<String, Object> castMap(Object value) {
|
||||||
|
if (!(value instanceof Map)) {
|
||||||
|
return new HashMap<>();
|
||||||
|
}
|
||||||
|
return (Map<String, Object>) value;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String asText(Object value) {
|
||||||
|
return value == null ? null : String.valueOf(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
private String selectText(String preferred, String fallback) {
|
||||||
|
return StrUtil.isNotBlank(preferred) ? preferred : fallback;
|
||||||
|
}
|
||||||
|
|
||||||
|
private long nextId() {
|
||||||
|
return IdUtil.getSnowflake(1, 1).nextId();
|
||||||
|
}
|
||||||
|
|
||||||
|
private String nextBizId() {
|
||||||
|
return UUID.randomUUID().toString().replace("-", "");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -13,6 +13,11 @@ public class AlarmRecordPageQry extends PageQuery {
|
||||||
@ApiModelProperty("报警状态")
|
@ApiModelProperty("报警状态")
|
||||||
private String status;
|
private String status;
|
||||||
|
|
||||||
|
@ApiModelProperty("所属单位ID")
|
||||||
|
private Long corpinfoId;
|
||||||
|
|
||||||
@ApiModelProperty("是否只查询当前登录人所在消防队的处置数据") // 预留暂未使用
|
@ApiModelProperty("是否只查询当前登录人所在消防队的处置数据") // 预留暂未使用
|
||||||
private Boolean myFeedbackOnly;
|
private Boolean myFeedbackOnly;
|
||||||
|
|
||||||
|
private String menuPath;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,13 @@
|
||||||
|
package com.zcloud.zcGbsServicer.persistence.dataobject;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class AlarmUserScopeDO {
|
||||||
|
|
||||||
|
/** 用户类型:1监管 2企业 3相关方 */
|
||||||
|
private Integer userType;
|
||||||
|
|
||||||
|
/** 所属企业ID,对应 fire_alarm_info.corpinfo_id */
|
||||||
|
private Long corpinfoId;
|
||||||
|
}
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
package com.zcloud.zcGbsServicer.persistence.mapper;
|
package com.zcloud.zcGbsServicer.persistence.mapper;
|
||||||
|
|
||||||
|
import com.zcloud.zcGbsServicer.persistence.dataobject.AlarmUserScopeDO;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
|
@ -7,4 +8,6 @@ import org.apache.ibatis.annotations.Param;
|
||||||
public interface AlarmUserMapper {
|
public interface AlarmUserMapper {
|
||||||
|
|
||||||
Long selectTenantIdByUserId(@Param("userId") Long userId);
|
Long selectTenantIdByUserId(@Param("userId") Long userId);
|
||||||
|
|
||||||
|
AlarmUserScopeDO selectScopeByUserId(@Param("userId") Long userId);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,19 +2,21 @@ package com.zcloud.zcGbsServicer.persistence.mapper;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
|
import com.jjb.saas.framework.datascope.annotation.DataScope;
|
||||||
|
import com.jjb.saas.framework.datascope.annotation.DataScopes;
|
||||||
import com.zcloud.zcGbsServicer.persistence.dataobject.FireAlarmInfoDO;
|
import com.zcloud.zcGbsServicer.persistence.dataobject.FireAlarmInfoDO;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.Map;
|
||||||
|
|
||||||
@Mapper
|
@Mapper
|
||||||
|
@DataScopes({
|
||||||
|
@DataScope(method = "selectPageSql", menuPerms = "qyd-xfbjxxgl"),
|
||||||
|
})
|
||||||
public interface FireAlarmInfoMapper extends BaseMapper<FireAlarmInfoDO> {
|
public interface FireAlarmInfoMapper extends BaseMapper<FireAlarmInfoDO> {
|
||||||
|
|
||||||
IPage<FireAlarmInfoDO> selectPageSql(IPage<FireAlarmInfoDO> page,
|
IPage<FireAlarmInfoDO> selectPageSql(IPage<FireAlarmInfoDO> iPage,
|
||||||
@Param("tenantId") Long tenantId,
|
@Param("params") Map<String, Object> params,
|
||||||
@Param("fireBrigadeName") String fireBrigadeName,
|
@Param("menuPath") String menuPath);
|
||||||
@Param("alarmStatus") Integer alarmStatus,
|
|
||||||
@Param("fireBrigadeIds") List<String> fireBrigadeIds,
|
|
||||||
@Param("feedbackOnly") Boolean corpinfoId);
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,10 @@
|
||||||
package com.zcloud.zcGbsServicer.persistence.repository;
|
package com.zcloud.zcGbsServicer.persistence.repository;
|
||||||
|
|
||||||
|
import com.zcloud.zcGbsServicer.persistence.dataobject.AlarmUserScopeDO;
|
||||||
|
|
||||||
public interface AlarmUserRepository {
|
public interface AlarmUserRepository {
|
||||||
|
|
||||||
Long getTenantIdByUserId(Long userId);
|
Long getTenantIdByUserId(Long userId);
|
||||||
|
|
||||||
|
AlarmUserScopeDO getScopeByUserId(Long userId);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ import java.util.Map;
|
||||||
|
|
||||||
public interface FireAlarmInfoRepository extends BaseRepository<FireAlarmInfoDO> {
|
public interface FireAlarmInfoRepository extends BaseRepository<FireAlarmInfoDO> {
|
||||||
|
|
||||||
PageResponse<FireAlarmInfoDO> listPage(Map<String, Object> params);
|
PageResponse<FireAlarmInfoDO> listPage(Map<String, Object> params, String menuPath);
|
||||||
|
|
||||||
FireAlarmInfoDO getByFireAlarmInfoId(String fireAlarmInfoId);
|
FireAlarmInfoDO getByFireAlarmInfoId(String fireAlarmInfoId);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
package com.zcloud.zcGbsServicer.persistence.repository.impl;
|
package com.zcloud.zcGbsServicer.persistence.repository.impl;
|
||||||
|
|
||||||
|
import com.zcloud.zcGbsServicer.persistence.dataobject.AlarmUserScopeDO;
|
||||||
import com.zcloud.zcGbsServicer.persistence.mapper.AlarmUserMapper;
|
import com.zcloud.zcGbsServicer.persistence.mapper.AlarmUserMapper;
|
||||||
import com.zcloud.zcGbsServicer.persistence.repository.AlarmUserRepository;
|
import com.zcloud.zcGbsServicer.persistence.repository.AlarmUserRepository;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
|
@ -18,4 +19,12 @@ public class AlarmUserRepositoryImpl implements AlarmUserRepository {
|
||||||
}
|
}
|
||||||
return alarmUserMapper.selectTenantIdByUserId(userId);
|
return alarmUserMapper.selectTenantIdByUserId(userId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AlarmUserScopeDO getScopeByUserId(Long userId) {
|
||||||
|
if (userId == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return alarmUserMapper.selectScopeByUserId(userId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,6 @@ import com.zcloud.zcGbsServicer.persistence.repository.FireAlarmInfoRepository;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
|
|
@ -23,20 +22,9 @@ public class FireAlarmInfoRepositoryImpl extends BaseRepositoryImpl<FireAlarmInf
|
||||||
private final FireAlarmInfoMapper fireAlarmInfoMapper;
|
private final FireAlarmInfoMapper fireAlarmInfoMapper;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PageResponse<FireAlarmInfoDO> listPage(Map<String, Object> params) {
|
public PageResponse<FireAlarmInfoDO> listPage(Map<String, Object> params, String menuPath) {
|
||||||
IPage<FireAlarmInfoDO> page = new Query<FireAlarmInfoDO>().getPage(params);
|
IPage<FireAlarmInfoDO> page = new Query<FireAlarmInfoDO>().getPage(params);
|
||||||
String fireBrigadeName = params == null ? null : (String) params.get("fireBrigadeName");
|
IPage<FireAlarmInfoDO> result = fireAlarmInfoMapper.selectPageSql(page, params, menuPath);
|
||||||
Integer alarmStatus = params == null ? null : (Integer) params.get("alarmStatus");
|
|
||||||
List<String> fireBrigadeIds = params == null ? null : (List<String>) params.get("fireBrigadeIds");
|
|
||||||
Boolean feedbackOnly = params == null ? null : (Boolean) params.get("feedbackOnly");
|
|
||||||
IPage<FireAlarmInfoDO> result = fireAlarmInfoMapper.selectPageSql(
|
|
||||||
page,
|
|
||||||
AuthContext.getTenantId(),
|
|
||||||
fireBrigadeName,
|
|
||||||
alarmStatus,
|
|
||||||
fireBrigadeIds,
|
|
||||||
feedbackOnly
|
|
||||||
);
|
|
||||||
return PageHelper.pageToResponse(result, result.getRecords());
|
return PageHelper.pageToResponse(result, result.getRecords());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -185,6 +185,7 @@ CREATE TABLE `fire_brigade_user` (
|
||||||
`duty_name` varchar(128) DEFAULT NULL COMMENT '职务名称',
|
`duty_name` varchar(128) DEFAULT NULL COMMENT '职务名称',
|
||||||
`corp_id` varchar(64) DEFAULT NULL COMMENT '机构ID',
|
`corp_id` varchar(64) DEFAULT NULL COMMENT '机构ID',
|
||||||
`org_name` varchar(128) DEFAULT NULL COMMENT '机构名称',
|
`org_name` varchar(128) DEFAULT NULL COMMENT '机构名称',
|
||||||
|
`age` int DEFAULT NULL COMMENT '年龄',
|
||||||
`version` int DEFAULT NULL COMMENT '乐观锁',
|
`version` int DEFAULT NULL COMMENT '乐观锁',
|
||||||
`create_id` bigint DEFAULT NULL COMMENT '创建人ID',
|
`create_id` bigint DEFAULT NULL COMMENT '创建人ID',
|
||||||
`create_name` varchar(64) DEFAULT NULL COMMENT '创建人姓名',
|
`create_name` varchar(64) DEFAULT NULL COMMENT '创建人姓名',
|
||||||
|
|
|
||||||
|
|
@ -11,4 +11,13 @@
|
||||||
LIMIT 1
|
LIMIT 1
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="selectScopeByUserId" resultType="com.zcloud.zcGbsServicer.persistence.dataobject.AlarmUserScopeDO">
|
||||||
|
SELECT
|
||||||
|
user_type AS userType,
|
||||||
|
corpinfo_id AS corpinfoId
|
||||||
|
FROM user
|
||||||
|
WHERE id = #{userId}
|
||||||
|
LIMIT 1
|
||||||
|
</select>
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
|
||||||
|
|
@ -5,30 +5,30 @@
|
||||||
<mapper namespace="com.zcloud.zcGbsServicer.persistence.mapper.FireAlarmInfoMapper">
|
<mapper namespace="com.zcloud.zcGbsServicer.persistence.mapper.FireAlarmInfoMapper">
|
||||||
|
|
||||||
<select id="selectPageSql" resultType="com.zcloud.zcGbsServicer.persistence.dataobject.FireAlarmInfoDO">
|
<select id="selectPageSql" resultType="com.zcloud.zcGbsServicer.persistence.dataobject.FireAlarmInfoDO">
|
||||||
SELECT *
|
SELECT fai.*
|
||||||
FROM fire_alarm_info
|
FROM fire_alarm_info fai
|
||||||
<where>
|
<where>
|
||||||
delete_enum = 'FALSE'
|
fai.delete_enum = 'FALSE'
|
||||||
<if test="tenantId != null">
|
<if test="params.fireBrigadeName != null and params.fireBrigadeName != ''">
|
||||||
AND tenant_id = #{tenantId}
|
AND fai.fire_brigade_name LIKE CONCAT('%', #{params.fireBrigadeName}, '%')
|
||||||
</if>
|
</if>
|
||||||
<if test="fireBrigadeName != null and fireBrigadeName != ''">
|
<if test="params.alarmStatus != null">
|
||||||
AND fire_brigade_name LIKE CONCAT('%', #{fireBrigadeName}, '%')
|
AND fai.alarm_status = #{params.alarmStatus}
|
||||||
</if>
|
</if>
|
||||||
<if test="alarmStatus != null">
|
<if test="params.alarmStatus == null and params.feedbackOnly != null and params.feedbackOnly">
|
||||||
AND alarm_status = #{alarmStatus}
|
AND fai.alarm_status IN (2, 3)
|
||||||
</if>
|
</if>
|
||||||
<if test="alarmStatus == null and feedbackOnly != null and feedbackOnly">
|
<if test="params.fireBrigadeIds != null and params.fireBrigadeIds.size() > 0">
|
||||||
AND alarm_status IN (2, 3)
|
AND fai.fire_brigade_id IN
|
||||||
</if>
|
<foreach collection="params.fireBrigadeIds" item="item" open="(" separator="," close=")">
|
||||||
<if test="fireBrigadeIds != null and fireBrigadeIds.size() > 0">
|
|
||||||
AND fire_brigade_id IN
|
|
||||||
<foreach collection="fireBrigadeIds" item="item" open="(" separator="," close=")">
|
|
||||||
#{item}
|
#{item}
|
||||||
</foreach>
|
</foreach>
|
||||||
</if>
|
</if>
|
||||||
|
<if test="params.corpinfoId != null">
|
||||||
|
AND fai.corpinfo_id = #{params.corpinfoId}
|
||||||
|
</if>
|
||||||
</where>
|
</where>
|
||||||
ORDER BY record_time DESC, create_time DESC
|
ORDER BY fai.record_time DESC, fai.create_time DESC
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue