feat(): 大屏消防队成员列表功能

dev
lishiwei 2026-07-23 11:05:51 +08:00
parent f4537dd7b6
commit 601e2a0f4d
13 changed files with 165 additions and 0 deletions

View File

@ -7,8 +7,10 @@ import com.zcloud.zcGbsServicer.api.FireBrigadeMemberServiceI;
import com.zcloud.zcGbsServicer.dto.FireBrigadeMemberAddCmd; import com.zcloud.zcGbsServicer.dto.FireBrigadeMemberAddCmd;
import com.zcloud.zcGbsServicer.dto.FireBrigadeMemberPageQry; import com.zcloud.zcGbsServicer.dto.FireBrigadeMemberPageQry;
import com.zcloud.zcGbsServicer.dto.FireBrigadeMemberUpdateCmd; import com.zcloud.zcGbsServicer.dto.FireBrigadeMemberUpdateCmd;
import com.zcloud.zcGbsServicer.dto.FireBrigadeScreenMemberQry;
import com.zcloud.zcGbsServicer.dto.clientobject.FireBrigadeMemberCO; import com.zcloud.zcGbsServicer.dto.clientobject.FireBrigadeMemberCO;
import com.zcloud.zcGbsServicer.dto.clientobject.FireBrigadeMemberStatusCO; import com.zcloud.zcGbsServicer.dto.clientobject.FireBrigadeMemberStatusCO;
import com.zcloud.zcGbsServicer.dto.clientobject.FireBrigadeScreenMemberCO;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
@ -29,6 +31,12 @@ public class FireBrigadeMemberController {
return fireBrigadeMemberService.currentMemberStatus(); return fireBrigadeMemberService.currentMemberStatus();
} }
@ApiOperation("大屏队员分页列表")
@PostMapping("/screen/list")
public PageResponse<FireBrigadeScreenMemberCO> screenList(@RequestBody(required = false) FireBrigadeScreenMemberQry qry) {
return fireBrigadeMemberService.listScreenMembers(qry == null ? new FireBrigadeScreenMemberQry() : qry);
}
@ApiOperation("分页查询") @ApiOperation("分页查询")
@PostMapping("/list") @PostMapping("/list")
public PageResponse<FireBrigadeMemberCO> list(@RequestBody FireBrigadeMemberPageQry qry) { public PageResponse<FireBrigadeMemberCO> list(@RequestBody FireBrigadeMemberPageQry qry) {

View File

@ -11,11 +11,14 @@ import com.zcloud.zcGbsServicer.command.convertor.FireBrigadeMemberCoConvertor;
import com.zcloud.zcGbsServicer.dto.FireBrigadeMemberAddCmd; import com.zcloud.zcGbsServicer.dto.FireBrigadeMemberAddCmd;
import com.zcloud.zcGbsServicer.dto.FireBrigadeMemberPageQry; import com.zcloud.zcGbsServicer.dto.FireBrigadeMemberPageQry;
import com.zcloud.zcGbsServicer.dto.FireBrigadeMemberUpdateCmd; import com.zcloud.zcGbsServicer.dto.FireBrigadeMemberUpdateCmd;
import com.zcloud.zcGbsServicer.dto.FireBrigadeScreenMemberQry;
import com.zcloud.zcGbsServicer.dto.clientobject.FireBrigadeMemberCO; import com.zcloud.zcGbsServicer.dto.clientobject.FireBrigadeMemberCO;
import com.zcloud.zcGbsServicer.dto.clientobject.FireBrigadeMemberStatusCO; import com.zcloud.zcGbsServicer.dto.clientobject.FireBrigadeMemberStatusCO;
import com.zcloud.zcGbsServicer.dto.clientobject.FireBrigadeScreenMemberCO;
import com.zcloud.zcGbsServicer.persistence.dataobject.FireAlarmMeetingRoomDO; import com.zcloud.zcGbsServicer.persistence.dataobject.FireAlarmMeetingRoomDO;
import com.zcloud.zcGbsServicer.persistence.dataobject.FireAlarmMeetingUserDO; import com.zcloud.zcGbsServicer.persistence.dataobject.FireAlarmMeetingUserDO;
import com.zcloud.zcGbsServicer.persistence.dataobject.FireBrigadeDO; import com.zcloud.zcGbsServicer.persistence.dataobject.FireBrigadeDO;
import com.zcloud.zcGbsServicer.persistence.dataobject.FireBrigadeScreenMemberRow;
import com.zcloud.zcGbsServicer.persistence.dataobject.FireBrigadeUserDO; import com.zcloud.zcGbsServicer.persistence.dataobject.FireBrigadeUserDO;
import com.zcloud.zcGbsServicer.persistence.repository.FireAlarmMeetingRoomRepository; import com.zcloud.zcGbsServicer.persistence.repository.FireAlarmMeetingRoomRepository;
import com.zcloud.zcGbsServicer.persistence.repository.FireAlarmMeetingUserRepository; import com.zcloud.zcGbsServicer.persistence.repository.FireAlarmMeetingUserRepository;
@ -62,6 +65,37 @@ public class FireBrigadeMemberServiceImpl extends FireAlarmServiceSupport implem
return SingleResponse.of(co); return SingleResponse.of(co);
} }
@Override
public PageResponse<FireBrigadeScreenMemberCO> listScreenMembers(FireBrigadeScreenMemberQry qry) {
FireBrigadeScreenMemberQry actualQry = qry == null ? new FireBrigadeScreenMemberQry() : qry;
String corpId = StrUtil.isBlank(actualQry.getCorpId()) ? null : actualQry.getCorpId().trim();
Integer portArea = actualQry.getPortArea();
if (portArea != null && portArea != 1 && portArea != 2 && portArea != 3) {
throw new BizException("港区参数无效");
}
int pageIndex = actualQry.getPageIndex() <= 0 ? 1 : actualQry.getPageIndex();
int pageSize = actualQry.getPageSize() <= 0 ? 10 : actualQry.getPageSize();
PageResponse<FireBrigadeScreenMemberRow> page = fireBrigadeUserRepository.listScreenMembers(corpId, portArea, pageIndex, pageSize);
List<FireBrigadeScreenMemberCO> data = page.getData() == null ? Collections.emptyList() : page.getData().stream()
.map(this::toScreenMemberCO)
.collect(Collectors.toList());
return PageResponse.of(data, page.getTotalCount(), page.getPageSize(), page.getPageIndex());
}
private FireBrigadeScreenMemberCO toScreenMemberCO(FireBrigadeScreenMemberRow row) {
FireBrigadeScreenMemberCO co = new FireBrigadeScreenMemberCO();
if (row == null) {
return co;
}
co.setUserId(row.getUserId());
co.setUserName(row.getUserName());
co.setAge(row.getAge());
co.setCorpId(row.getCorpId());
co.setOrgName(row.getOrgName());
co.setPhone(row.getPhone());
return co;
}
@Override @Override
public PageResponse<FireBrigadeMemberCO> listPage(FireBrigadeMemberPageQry qry) { public PageResponse<FireBrigadeMemberCO> listPage(FireBrigadeMemberPageQry qry) {
FireBrigadeDO brigade = getBrigade(qry.getFireBrigadeId()); FireBrigadeDO brigade = getBrigade(qry.getFireBrigadeId());
@ -198,6 +232,7 @@ public class FireBrigadeMemberServiceImpl extends FireAlarmServiceSupport implem
co.setDutyId(relation.getDutyId()); co.setDutyId(relation.getDutyId());
co.setCorpId(relation.getCorpId()); co.setCorpId(relation.getCorpId());
co.setGender(relation.getGender()); co.setGender(relation.getGender());
co.setAge(relation.getAge());
co.setName(selectText(relation.getUserName(), user == null ? null : user.getName())); co.setName(selectText(relation.getUserName(), user == null ? null : user.getName()));
co.setIdNo(selectText(relation.getIdNo(), user == null ? null : user.getUserIdCard())); co.setIdNo(selectText(relation.getIdNo(), user == null ? null : user.getUserIdCard()));
co.setPhone(selectText(relation.getPhone(), user == null ? null : user.getPhone())); co.setPhone(selectText(relation.getPhone(), user == null ? null : user.getPhone()));
@ -218,6 +253,7 @@ public class FireBrigadeMemberServiceImpl extends FireAlarmServiceSupport implem
relation.setDutyName(cmd.getDuty()); relation.setDutyName(cmd.getDuty());
relation.setCorpId(cmd.getCorpId()); relation.setCorpId(cmd.getCorpId());
relation.setOrgName(cmd.getOrg()); relation.setOrgName(cmd.getOrg());
relation.setAge(cmd.getAge());
} }
/** /**

View File

@ -5,8 +5,10 @@ import com.alibaba.cola.dto.SingleResponse;
import com.zcloud.zcGbsServicer.dto.FireBrigadeMemberAddCmd; import com.zcloud.zcGbsServicer.dto.FireBrigadeMemberAddCmd;
import com.zcloud.zcGbsServicer.dto.FireBrigadeMemberPageQry; import com.zcloud.zcGbsServicer.dto.FireBrigadeMemberPageQry;
import com.zcloud.zcGbsServicer.dto.FireBrigadeMemberUpdateCmd; import com.zcloud.zcGbsServicer.dto.FireBrigadeMemberUpdateCmd;
import com.zcloud.zcGbsServicer.dto.FireBrigadeScreenMemberQry;
import com.zcloud.zcGbsServicer.dto.clientobject.FireBrigadeMemberCO; import com.zcloud.zcGbsServicer.dto.clientobject.FireBrigadeMemberCO;
import com.zcloud.zcGbsServicer.dto.clientobject.FireBrigadeMemberStatusCO; import com.zcloud.zcGbsServicer.dto.clientobject.FireBrigadeMemberStatusCO;
import com.zcloud.zcGbsServicer.dto.clientobject.FireBrigadeScreenMemberCO;
public interface FireBrigadeMemberServiceI { public interface FireBrigadeMemberServiceI {
@ -23,4 +25,6 @@ public interface FireBrigadeMemberServiceI {
void removeBatch(Long[] ids); void removeBatch(Long[] ids);
SingleResponse<FireBrigadeMemberStatusCO> currentMemberStatus(); SingleResponse<FireBrigadeMemberStatusCO> currentMemberStatus();
PageResponse<FireBrigadeScreenMemberCO> listScreenMembers(FireBrigadeScreenMemberQry qry);
} }

View File

@ -46,6 +46,9 @@ public class FireBrigadeMemberAddCmd extends Command {
@JsonAlias("orgName") @JsonAlias("orgName")
private String org; private String org;
@ApiModelProperty("年龄")
private Integer age;
@ApiModelProperty("角色编码") @ApiModelProperty("角色编码")
private Integer roleCode; private Integer roleCode;
} }

View File

@ -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 FireBrigadeScreenMemberQry extends PageQuery {
@ApiModelProperty("机构ID为空查全部")
private String corpId;
@ApiModelProperty("港区1:港区 2:秦皇岛东 3:秦皇岛西,为空查全部")
private Integer portArea;
}

View File

@ -19,5 +19,6 @@ public class FireBrigadeMemberCO extends ClientObject {
private String duty; private String duty;
private String corpId; private String corpId;
private String org; private String org;
private Integer age;
private Integer roleCode; private Integer roleCode;
} }

View File

@ -0,0 +1,25 @@
package com.zcloud.zcGbsServicer.dto.clientobject;
import com.alibaba.cola.dto.ClientObject;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
@Data
public class FireBrigadeScreenMemberCO extends ClientObject {
@JsonProperty("user_id")
private Long userId;
@JsonProperty("user_name")
private String userName;
private Integer age;
@JsonProperty("corp_id")
private String corpId;
@JsonProperty("org_name")
private String orgName;
private String phone;
}

View File

@ -0,0 +1,14 @@
package com.zcloud.zcGbsServicer.persistence.dataobject;
import lombok.Data;
@Data
public class FireBrigadeScreenMemberRow {
private Long userId;
private String userName;
private Integer age;
private String corpId;
private String orgName;
private String phone;
}

View File

@ -23,4 +23,5 @@ public class FireBrigadeUserDO extends BaseDO {
@TableField("corp_id") @TableField("corp_id")
private String corpId; private String corpId;
private String orgName; private String orgName;
private Integer age;
} }

View File

@ -1,9 +1,16 @@
package com.zcloud.zcGbsServicer.persistence.mapper; 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.zcloud.zcGbsServicer.persistence.dataobject.FireBrigadeScreenMemberRow;
import com.zcloud.zcGbsServicer.persistence.dataobject.FireBrigadeUserDO; import com.zcloud.zcGbsServicer.persistence.dataobject.FireBrigadeUserDO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@Mapper @Mapper
public interface FireBrigadeUserMapper extends BaseMapper<FireBrigadeUserDO> { public interface FireBrigadeUserMapper extends BaseMapper<FireBrigadeUserDO> {
IPage<FireBrigadeScreenMemberRow> listScreenMembers(IPage<FireBrigadeScreenMemberRow> page,
@Param("corpId") String corpId,
@Param("portArea") Integer portArea);
} }

View File

@ -1,6 +1,8 @@
package com.zcloud.zcGbsServicer.persistence.repository; package com.zcloud.zcGbsServicer.persistence.repository;
import com.jjb.saas.framework.repository.repo.BaseRepository; import com.jjb.saas.framework.repository.repo.BaseRepository;
import com.alibaba.cola.dto.PageResponse;
import com.zcloud.zcGbsServicer.persistence.dataobject.FireBrigadeScreenMemberRow;
import com.zcloud.zcGbsServicer.persistence.dataobject.FireBrigadeUserDO; import com.zcloud.zcGbsServicer.persistence.dataobject.FireBrigadeUserDO;
import java.util.Collection; import java.util.Collection;
@ -22,4 +24,6 @@ public interface FireBrigadeUserRepository extends BaseRepository<FireBrigadeUse
List<FireBrigadeUserDO> listByUserId(Long userId); List<FireBrigadeUserDO> listByUserId(Long userId);
boolean existsRelation(String fireBrigadeId, Long userId, Long excludeId); boolean existsRelation(String fireBrigadeId, Long userId, Long excludeId);
PageResponse<FireBrigadeScreenMemberRow> listScreenMembers(String corpId, Integer portArea, int pageIndex, int pageSize);
} }

View File

@ -1,8 +1,13 @@
package com.zcloud.zcGbsServicer.persistence.repository.impl; 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.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jjb.saas.framework.auth.utils.AuthContext; 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.jjb.saas.framework.repository.repo.impl.BaseRepositoryImpl;
import com.zcloud.gbscommon.utils.Query;
import com.zcloud.zcGbsServicer.persistence.dataobject.FireBrigadeScreenMemberRow;
import com.zcloud.zcGbsServicer.persistence.dataobject.FireBrigadeUserDO; import com.zcloud.zcGbsServicer.persistence.dataobject.FireBrigadeUserDO;
import com.zcloud.zcGbsServicer.persistence.mapper.FireBrigadeUserMapper; import com.zcloud.zcGbsServicer.persistence.mapper.FireBrigadeUserMapper;
import com.zcloud.zcGbsServicer.persistence.repository.FireBrigadeUserRepository; import com.zcloud.zcGbsServicer.persistence.repository.FireBrigadeUserRepository;
@ -12,6 +17,7 @@ import org.springframework.stereotype.Service;
import java.util.Collection; import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -85,4 +91,14 @@ public class FireBrigadeUserRepositoryImpl extends BaseRepositoryImpl<FireBrigad
} }
return this.count(wrapper) > 0; return this.count(wrapper) > 0;
} }
@Override
public PageResponse<FireBrigadeScreenMemberRow> listScreenMembers(String corpId, Integer portArea, int pageIndex, int pageSize) {
Map<String, Object> params = new HashMap<>();
params.put("pageIndex", pageIndex <= 0 ? 1 : pageIndex);
params.put("pageSize", pageSize <= 0 ? 10 : pageSize);
IPage<FireBrigadeScreenMemberRow> page = new Query<FireBrigadeScreenMemberRow>().getPage(params);
IPage<FireBrigadeScreenMemberRow> result = this.baseMapper.listScreenMembers(page, corpId, portArea);
return PageHelper.pageToResponse(result, result.getRecords());
}
} }

View File

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zcloud.zcGbsServicer.persistence.mapper.FireBrigadeUserMapper">
<select id="listScreenMembers" resultType="com.zcloud.zcGbsServicer.persistence.dataobject.FireBrigadeScreenMemberRow">
SELECT
u.user_id AS userId,
u.user_name AS userName,
u.id_no,
CASE
WHEN LENGTH(FROM_BASE64(u.id_no)) > 0 THEN
(YEAR(NOW()) - SUBSTRING(FROM_BASE64(u.id_no), 7, 4)) ELSE NULL
END AS age,
u.corp_id AS corpId,
u.org_name AS orgName,
u.phone AS phone
FROM fire_brigade_user u
LEFT JOIN corp_info c ON CAST(c.id AS CHAR) = u.corp_id
WHERE u.delete_enum = 'FALSE'
<if test="corpId != null and corpId != ''">
AND u.corp_id = #{corpId}
</if>
<if test="portArea != null">
AND c.port_area = #{portArea}
</if>
ORDER BY u.create_time DESC
</select>
</mapper>