feat(): 联调消防队伍成员职务机构信息及在线状态功能

dev
lishiwei 2026-07-13 15:02:27 +08:00
parent f5a96bed3d
commit 3e57f5952d
12 changed files with 73 additions and 8 deletions

View File

@ -9,6 +9,9 @@ application:
spring:
application:
name: ${application.name}${application.version}
profiles:
# 环境配置
active: test
cloud:
nacos:
config:

View File

@ -3,13 +3,16 @@ 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 org.mapstruct.Mapping;
import java.util.List;
@Mapper(componentModel = "spring")
public interface AlarmRecordCoConvertor {
@Mapping(target = "fireBrigadeId", ignore = true)
List<AlarmRecordCO> converDOsToCOs(List<FireAlarmInfoDO> fireAlarmInfoDOs);
@Mapping(target = "fireBrigadeId", ignore = true)
AlarmRecordCO converDOToCO(FireAlarmInfoDO fireAlarmInfoDO);
}

View File

@ -10,9 +10,11 @@ import java.util.List;
@Mapper(componentModel = "spring")
public interface FireBrigadeMemberCoConvertor {
@Mapping(target = "fireBrigadeId", ignore = true)
@Mapping(source = "fireBrigadeId", target = "fireBrigadeBizId")
List<FireBrigadeMemberCO> converDOsToCOs(List<FireBrigadeUserDO> fireBrigadeUserDOs);
@Mapping(target = "fireBrigadeId", ignore = true)
@Mapping(source = "fireBrigadeId", target = "fireBrigadeBizId")
FireBrigadeMemberCO converDOToCO(FireBrigadeUserDO fireBrigadeUserDO);
}

View File

@ -158,6 +158,8 @@ public class FireBrigadeMemberServiceImpl extends FireAlarmServiceSupport implem
ZcloudUserCo user = relation.getUserId() == null ? null : userMap.get(relation.getUserId());
co.setFireBrigadeId(brigade.getId());
co.setUserId(relation.getUserId() == null ? null : String.valueOf(relation.getUserId()));
co.setDutyId(relation.getDutyId());
co.setCorpId(relation.getCorpId());
co.setUserName(selectText(user == null ? null : user.getName(), co.getUserName()));
co.setIdNo(selectText(user == null ? null : user.getUserIdCard(), co.getIdNo()));
co.setPhone(selectText(user == null ? null : user.getPhone(), co.getPhone()));
@ -174,7 +176,9 @@ public class FireBrigadeMemberServiceImpl extends FireAlarmServiceSupport implem
relation.setGender(cmd.getGender());
relation.setIdNo(cmd.getIdNo());
relation.setPhone(cmd.getPhone());
relation.setDutyId(cmd.getDutyId());
relation.setDutyName(cmd.getDuty());
relation.setCorpId(cmd.getCorpId());
relation.setOrgName(cmd.getOrg());
}

View File

@ -12,8 +12,10 @@ import com.zcloud.zcGbsServicer.dto.FireBrigadeAddCmd;
import com.zcloud.zcGbsServicer.dto.FireBrigadePageQry;
import com.zcloud.zcGbsServicer.dto.FireBrigadeUpdateCmd;
import com.zcloud.zcGbsServicer.dto.clientobject.FireBrigadeCO;
import com.zcloud.zcGbsServicer.persistence.dataobject.FireAlarmMeetingMemberStatusDO;
import com.zcloud.zcGbsServicer.persistence.dataobject.FireBrigadeDO;
import com.zcloud.zcGbsServicer.persistence.dataobject.FireBrigadeUserDO;
import com.zcloud.zcGbsServicer.persistence.repository.FireAlarmMeetingMemberStatusRepository;
import com.zcloud.zcGbsServicer.persistence.repository.FireBrigadeRepository;
import com.zcloud.zcGbsServicer.persistence.repository.FireBrigadeUserRepository;
import lombok.RequiredArgsConstructor;
@ -34,6 +36,7 @@ public class FireBrigadeServiceImpl extends FireAlarmServiceSupport implements F
private final FireBrigadeRepository fireBrigadeRepository;
private final FireBrigadeUserRepository fireBrigadeUserRepository;
private final FireAlarmMeetingMemberStatusRepository fireAlarmMeetingMemberStatusRepository;
private final FireAlarmUserResolver fireAlarmUserResolver;
private final FireBrigadeCoConvertor fireBrigadeCoConvertor;
@ -45,7 +48,10 @@ public class FireBrigadeServiceImpl extends FireAlarmServiceSupport implements F
params.put("brigadeName", qry.getName());
PageResponse<FireBrigadeDO> page = fireBrigadeRepository.listPage(params);
Map<Long, ZcloudUserCo> userMap = getLeaderUserMap(page.getData());
List<FireBrigadeCO> data = page.getData().stream().map(item -> buildCO(item, userMap)).collect(Collectors.toList());
Set<String> onlineBrigadeIdSet = getOnlineBrigadeIdSet();
List<FireBrigadeCO> data = page.getData().stream()
.map(item -> buildCO(item, userMap, onlineBrigadeIdSet))
.collect(Collectors.toList());
return PageResponse.of(data, page.getTotalCount(), page.getPageSize(), page.getPageIndex());
}
@ -65,7 +71,7 @@ public class FireBrigadeServiceImpl extends FireAlarmServiceSupport implements F
fillBrigade(brigade, cmd);
fireBrigadeRepository.save(brigade);
ensureLeaderRelation(brigade);
return SingleResponse.of(buildCO(brigade, getLeaderUserMap(Collections.singletonList(brigade))));
return SingleResponse.of(buildCO(brigade, getLeaderUserMap(Collections.singletonList(brigade)), getOnlineBrigadeIdSet()));
}
@Override
@ -93,7 +99,7 @@ public class FireBrigadeServiceImpl extends FireAlarmServiceSupport implements F
if (brigade == null) {
throw new BizException("消防队伍不存在");
}
return buildCO(brigade, getLeaderUserMap(Collections.singletonList(brigade)));
return buildCO(brigade, getLeaderUserMap(Collections.singletonList(brigade)), getOnlineBrigadeIdSet());
}
@Override
@ -151,22 +157,32 @@ public class FireBrigadeServiceImpl extends FireAlarmServiceSupport implements F
private void fillLeaderSnapshot(FireBrigadeUserDO relation, FireBrigadeDO brigade) {
relation.setUserName(brigade.getLeaderName());
relation.setPhone(brigade.getLeaderPhone());
relation.setDutyId(null);
relation.setDutyName("负责人");
relation.setCorpId(null);
relation.setOrgName(brigade.getLeaderDeptName());
}
private FireBrigadeCO buildCO(FireBrigadeDO brigade, Map<Long, ZcloudUserCo> userMap) {
private FireBrigadeCO buildCO(FireBrigadeDO brigade, Map<Long, ZcloudUserCo> userMap, Set<String> onlineBrigadeIdSet) {
FireBrigadeCO co = fireBrigadeCoConvertor.converDOToCO(brigade);
ZcloudUserCo leader = brigade.getLeaderUserId() == null ? null : userMap.get(brigade.getLeaderUserId());
co.setLeaderDeptName(selectText(leader == null ? null : leader.getDepartmentName(), co.getLeaderDeptName()));
co.setLeaderName(selectText(leader == null ? null : leader.getName(), co.getLeaderName()));
co.setLeaderPhone(selectText(leader == null ? null : leader.getPhone(), co.getLeaderPhone()));
co.setMemberCount(fireBrigadeUserRepository.listByFireBrigadeId(brigade.getFireBrigadeId()).size());
co.setOnline(Boolean.FALSE);
co.setOnlineText("未在线");
boolean online = onlineBrigadeIdSet.contains(brigade.getFireBrigadeId());
co.setOnline(online);
co.setOnlineText(online ? "在线" : "未在线");
return co;
}
private Set<String> getOnlineBrigadeIdSet() {
return fireAlarmMeetingMemberStatusRepository.listOnlineList().stream()
.map(FireAlarmMeetingMemberStatusDO::getFireBrigadeId)
.filter(StrUtil::isNotBlank)
.collect(Collectors.toSet());
}
private String selectText(String preferred, String fallback) {
return StrUtil.isNotBlank(preferred) ? preferred : fallback;
}

View File

@ -31,10 +31,16 @@ public class FireBrigadeMemberAddCmd extends Command {
@ApiModelProperty("联系电话")
private String phone;
@ApiModelProperty("职务")
@ApiModelProperty("职务ID")
private String dutyId;
@ApiModelProperty("职务名称")
private String duty;
@ApiModelProperty("所属机构")
@ApiModelProperty("机构ID")
private String corpId;
@ApiModelProperty("机构名称")
private String org;
@ApiModelProperty("角色编码")

View File

@ -19,10 +19,13 @@ public class FireBrigadeMemberCO extends ClientObject {
private String gender;
private String idNo;
private String phone;
private String dutyId;
@JsonProperty("duty")
private String dutyName;
private String corpId;
@JsonProperty("org")
private String orgName;

View File

@ -1,5 +1,6 @@
package com.zcloud.zcGbsServicer.persistence.dataobject;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.jjb.saas.framework.repository.basedo.BaseDO;
import lombok.Data;
@ -17,6 +18,9 @@ public class FireBrigadeUserDO extends BaseDO {
private String gender;
private String idNo;
private String phone;
private String dutyId;
private String dutyName;
@TableField("corp_id")
private String corpId;
private String orgName;
}

View File

@ -9,4 +9,6 @@ import java.util.Map;
public interface FireAlarmInfoRepository extends BaseRepository<FireAlarmInfoDO> {
PageResponse<FireAlarmInfoDO> listPage(Map<String, Object> params);
FireAlarmInfoDO getByFireAlarmInfoId(String fireAlarmInfoId);
}

View File

@ -7,6 +7,8 @@ import java.util.List;
public interface FireBrigadeUserRepository extends BaseRepository<FireBrigadeUserDO> {
List<FireBrigadeUserDO> listAll();
List<FireBrigadeUserDO> listByFireBrigadeId(String fireBrigadeId);
List<FireBrigadeUserDO> listByUserId(Long userId);

View File

@ -1,6 +1,7 @@
package com.zcloud.zcGbsServicer.persistence.repository.impl;
import com.alibaba.cola.dto.PageResponse;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jjb.saas.framework.auth.utils.AuthContext;
import com.jjb.saas.framework.repository.common.PageHelper;
@ -28,4 +29,16 @@ public class FireAlarmInfoRepositoryImpl extends BaseRepositoryImpl<FireAlarmInf
IPage<FireAlarmInfoDO> result = fireAlarmInfoMapper.selectPageSql(page, AuthContext.getTenantId(), fireBrigadeName, alarmStatus);
return PageHelper.pageToResponse(result, result.getRecords());
}
@Override
public FireAlarmInfoDO getByFireAlarmInfoId(String fireAlarmInfoId) {
if (fireAlarmInfoId == null) {
return null;
}
return this.getOne(new LambdaQueryWrapper<FireAlarmInfoDO>()
.eq(FireAlarmInfoDO::getFireAlarmInfoId, fireAlarmInfoId)
.eq(FireAlarmInfoDO::getTenantId, AuthContext.getTenantId())
.eq(FireAlarmInfoDO::getDeleteEnum, "FALSE")
.last("limit 1"));
}
}

View File

@ -15,6 +15,13 @@ import java.util.List;
@RequiredArgsConstructor
public class FireBrigadeUserRepositoryImpl extends BaseRepositoryImpl<FireBrigadeUserMapper, FireBrigadeUserDO> implements FireBrigadeUserRepository {
@Override
public List<FireBrigadeUserDO> listAll() {
return this.list(new LambdaQueryWrapper<FireBrigadeUserDO>()
.eq(FireBrigadeUserDO::getTenantId, AuthContext.getTenantId())
.eq(FireBrigadeUserDO::getDeleteEnum, "FALSE"));
}
@Override
public List<FireBrigadeUserDO> listByFireBrigadeId(String fireBrigadeId) {
return this.list(new LambdaQueryWrapper<FireBrigadeUserDO>()