feat(fireCheck): 添加可视化大屏消防点检列表功能

dev_visual_page
zhaokai 2026-07-28 17:20:18 +08:00
parent 36b4c67e63
commit 1f3b19521f
15 changed files with 206 additions and 4 deletions

View File

@ -1,4 +1,4 @@
<!doctype html><html lang="zh"><head data-built-info="@cqsjjb/scripts@2.0.0-alpha-1 Env/production (2026/7/17 15:33:41) App/fireCheck"><meta charset="UTF-8"/><meta name="renderer" content="webkit"/><meta http-equiv="X-UA-Compatible" content="IE=edge,Chrome=1"/><meta name="viewport" content="width=device-width,minimum-scale=1,maximum-scale=1,user-scalable=no,viewport-fit=cover"><title>秦港安全监管平台</title><script>(function () { <!doctype html><html lang="zh"><head data-built-info="@cqsjjb/scripts@2.0.0-alpha-1 Env/production (2026/7/28 16:48:49) App/fireCheck"><meta charset="UTF-8"/><meta name="renderer" content="webkit"/><meta http-equiv="X-UA-Compatible" content="IE=edge,Chrome=1"/><meta name="viewport" content="width=device-width,minimum-scale=1,maximum-scale=1,user-scalable=no,viewport-fit=cover"><meta charset="UTF-8" name="referrer" content="strict-origin-when-cross-origin"/><title>秦港安全监管平台</title><script>(function () {
const APP_ENV = { const APP_ENV = {
antd: { antd: {
'ant-prefix': 'micro-temp', 'ant-prefix': 'micro-temp',
@ -20,4 +20,4 @@
redirect: '', redirect: '',
FRAMEWORK: APP_ENV.antd FRAMEWORK: APP_ENV.antd
}; };
})();</script><script defer="defer" src="/fireCheck/static/js/201.9d4d48ed85dbd20c30f6.js"></script><script defer="defer" src="/fireCheck/static/js/514.cbbdb1f566e234e3ebed.js"></script><script defer="defer" src="/fireCheck/static/js/main.8fead917278fdc3194ac.js"></script><link href="/fireCheck/static/css/main.4351c3e506121e95b980.css" rel="stylesheet"></head><body><noscript>此网页需要开启JavaScript功能。</noscript><div id="root" style="width: 100%; height: 100%; position: relative;overflow-y: auto"></div><script type="text/javascript">/* @cqsjjb/script 输出当前应用基本信息、构建时间 */console.log("%c@cqsjjb/scripts@2.0.0-alpha-1 Env/production (2026/7/17 15:33:41) App/fireCheck Version/main Java/<branch-name>", "color: #1890ff; border-radius: 2px; padding: 0 4px; border: 1px solid #1890ff; background: #f9fcff")</script></body></html> })();</script><script defer="defer" src="/fireCheck/static/js/201.9d4d48ed85dbd20c30f6.js"></script><script defer="defer" src="/fireCheck/static/js/514.cbbdb1f566e234e3ebed.js"></script><script defer="defer" src="/fireCheck/static/js/main.e0c5ce72dc8c82f0bb1b.js"></script><link href="/fireCheck/static/css/main.4351c3e506121e95b980.css" rel="stylesheet"></head><body><noscript>此网页需要开启JavaScript功能。</noscript><div id="root" style="width: 100%; height: 100%; position: relative;overflow-y: auto"></div><script type="text/javascript">/* @cqsjjb/script 输出当前应用基本信息、构建时间 */console.log("%c@cqsjjb/scripts@2.0.0-alpha-1 Env/production (2026/7/28 16:48:49) App/fireCheck Version/main Java/<branch-name>", "color: #1890ff; border-radius: 2px; padding: 0 4px; border: 1px solid #1890ff; background: #f9fcff")</script></body></html>

View File

@ -10,6 +10,7 @@ import com.jjb.saas.framework.auth.utils.AuthContext;
import com.zcloud.fire.check.api.FireCheckListServiceI; import com.zcloud.fire.check.api.FireCheckListServiceI;
import com.zcloud.fire.check.dto.*; import com.zcloud.fire.check.dto.*;
import com.zcloud.fire.check.dto.clientobject.FireCheckListCO; import com.zcloud.fire.check.dto.clientobject.FireCheckListCO;
import com.zcloud.fire.check.dto.clientobject.FireCheckListScreenCO;
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;
@ -98,5 +99,12 @@ public class FireCheckListController {
public PageResponse<FireCheckListCO> mainCheckListRecordList(@RequestBody FireCheckListRecordPageQry qry) { public PageResponse<FireCheckListCO> mainCheckListRecordList(@RequestBody FireCheckListRecordPageQry qry) {
return fireCheckListService.checkListRecordList(qry); return fireCheckListService.checkListRecordList(qry);
} }
@ApiOperation("可视化大屏-消防点检列表")
@PostMapping("/screen/list")
public PageResponse<FireCheckListScreenCO> screenList(@RequestBody(required = false) FireCheckListScreenQry qry) {
return fireCheckListService.screenList(qry);
}
} }

View File

@ -76,6 +76,41 @@ public class FireCheckListQueryExe {
private MessageFacade messageFacade; private MessageFacade messageFacade;
private MessageConfig messageConfig; private MessageConfig messageConfig;
public PageResponse<FireCheckListScreenCO> screenList(FireCheckListScreenQry qry) {
if (qry == null) {
qry = new FireCheckListScreenQry();
}
Map<String, Object> params = PageQueryHelper.toHashMap(qry);
PageResponse<FireCheckListDO> pageResponse = fireCheckListRepository.screenList(params);
List<FireCheckListScreenCO> result = new ArrayList<>();
for (FireCheckListDO item : pageResponse.getData()) {
FireCheckListScreenCO co = new FireCheckListScreenCO();
BeanUtils.copyProperties(item, co);
Long checkCycleCount = parseLong(item.getCheckCycleCount());
co.setCheckCycleCount(checkCycleCount);
FireCheckListE info = new FireCheckListE();
info.getCheckRecordPeriod(item.getFireCheckType(), LocalDateTime.now());
co.setCheckStartTime(info.getPeriodStart());
co.setCheckEndTime(info.getPeriodEnd());
if (checkCycleCount > 0) {
co.setCheckStatus(2);
co.setCheckStatusName("已检查");
} else {
co.setCheckStatus(1);
co.setCheckStatusName("未检查");
}
result.add(co);
}
return PageResponse.of(result, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex());
}
private Long parseLong(String value) {
if (StringUtils.isEmpty(value)) {
return 0L;
}
return Long.valueOf(value);
}
/** /**
* *
* *

View File

@ -29,6 +29,11 @@ public class FireCheckListServiceImpl implements FireCheckListServiceI {
private final FireCheckListRemoveExe fireCheckListRemoveExe; private final FireCheckListRemoveExe fireCheckListRemoveExe;
private final FireCheckListQueryExe fireCheckListQueryExe; private final FireCheckListQueryExe fireCheckListQueryExe;
@Override
public PageResponse<FireCheckListScreenCO> screenList(FireCheckListScreenQry qry) {
return fireCheckListQueryExe.screenList(qry);
}
@Override @Override
public PageResponse<FireCheckListCO> listPage(FireCheckListPageQry qry) { public PageResponse<FireCheckListCO> listPage(FireCheckListPageQry qry) {
return fireCheckListQueryExe.execute(qry); return fireCheckListQueryExe.execute(qry);

View File

@ -15,6 +15,8 @@ import java.util.Map;
* @Date 2025-11-28 10:32:09 * @Date 2025-11-28 10:32:09
*/ */
public interface FireCheckListServiceI { public interface FireCheckListServiceI {
PageResponse<FireCheckListScreenCO> screenList(FireCheckListScreenQry qry);
PageResponse<FireCheckListCO> listPage(FireCheckListPageQry qry); PageResponse<FireCheckListCO> listPage(FireCheckListPageQry qry);
SingleResponse<FireCheckListCO> add(FireCheckListAddCmd cmd); SingleResponse<FireCheckListCO> add(FireCheckListAddCmd cmd);

View File

@ -0,0 +1,18 @@
package com.zcloud.fire.check.dto;
import com.alibaba.cola.dto.PageQuery;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
*
*/
@Data
public class FireCheckListScreenQry extends PageQuery {
@ApiModelProperty(value = "企业id", name = "corpinfoId")
private Long corpinfoId;
@ApiModelProperty(value = "港区1:秦皇岛港区,2:秦皇岛东,3:秦皇岛西", name = "portArea")
private Integer portArea;
}

View File

@ -0,0 +1,73 @@
package com.zcloud.fire.check.dto.clientobject;
import com.alibaba.cola.dto.ClientObject;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
/**
*
*/
@Data
public class FireCheckListScreenCO extends ClientObject {
@ApiModelProperty(value = "主键")
private Long id;
@ApiModelProperty(value = "业务主键id")
private String fireCheckId;
@ApiModelProperty(value = "企业id")
private Long corpinfoId;
@ApiModelProperty(value = "消防点检表名字")
private String fireCheckName;
@ApiModelProperty(value = "消防点检表类型")
private String fireCheckType;
@ApiModelProperty(value = "消防点检表类型名称")
private String fireCheckTypeName;
@ApiModelProperty(value = "启用状态0:启用,1:禁用")
private Integer state;
@ApiModelProperty(value = "检查照片上传方式1:相机拍照,2:相册获取")
private Integer photoUploadMethod;
@ApiModelProperty(value = "负责人,逗号分隔")
private String userName;
@ApiModelProperty(value = "点位数")
private Long firePointCount;
@ApiModelProperty(value = "检查状态1:未检查,2:已检查")
private Integer checkStatus;
@ApiModelProperty(value = "检查状态名称")
private String checkStatusName;
@ApiModelProperty(value = "周期内检查次数")
private Long checkCycleCount;
@ApiModelProperty(value = "周期开始时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime checkStartTime;
@ApiModelProperty(value = "周期结束时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime checkEndTime;
@ApiModelProperty(value = "创建时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;
@ApiModelProperty(value = "更新时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime updateTime;
}

View File

@ -52,6 +52,9 @@ public class CorpInfoDO extends BaseDO {
@ApiModelProperty(value = "所属区域") @ApiModelProperty(value = "所属区域")
private String companyArea; private String companyArea;
@ApiModelProperty(value = "港区1:秦皇岛港区,2:秦皇岛东,3:秦皇岛西")
private Integer portArea;
//规模 //规模
@ApiModelProperty(value = "规模") @ApiModelProperty(value = "规模")
private String scale; private String scale;

View File

@ -70,6 +70,14 @@ public class FireCheckListDO extends BaseDO {
@TableField(exist = false) @TableField(exist = false)
private String checkCycleCount; private String checkCycleCount;
@ApiModelProperty(value = "点位数")
@TableField(exist = false)
private Long firePointCount;
@ApiModelProperty(value = "港区")
@TableField(exist = false)
private Integer portArea;
public FireCheckListDO(String fireCheckId) { public FireCheckListDO(String fireCheckId) {
this.fireCheckId = fireCheckId; this.fireCheckId = fireCheckId;
} }

View File

@ -28,6 +28,8 @@ import java.util.Map;
}) })
public interface FireCheckListMapper extends BaseMapper<FireCheckListDO> { public interface FireCheckListMapper extends BaseMapper<FireCheckListDO> {
IPage<FireCheckListDO> screenList(IPage<FireCheckListDO> iPage, Map<String, Object> params, DateTimeE dateTimeE);
FireCheckListDO getInfoById(Long id); FireCheckListDO getInfoById(Long id);
IPage<FireCheckListDO> listPage(IPage<FireCheckListDO> iPage, Map<String, Object> params, String menuPerms); IPage<FireCheckListDO> listPage(IPage<FireCheckListDO> iPage, Map<String, Object> params, String menuPerms);

View File

@ -18,6 +18,8 @@ import java.util.Map;
* @Date 2025-11-28 10:32:09 * @Date 2025-11-28 10:32:09
*/ */
public interface FireCheckListRepository extends BaseRepository<FireCheckListDO> { public interface FireCheckListRepository extends BaseRepository<FireCheckListDO> {
PageResponse<FireCheckListDO> screenList(Map<String, Object> params);
PageResponse<FireCheckListDO> listPage(Map<String, Object> params); PageResponse<FireCheckListDO> listPage(Map<String, Object> params);
FireCheckListDO getInfoById(Long id); FireCheckListDO getInfoById(Long id);

View File

@ -39,6 +39,15 @@ public class FireCheckListRepositoryImpl extends BaseRepositoryImpl<FireCheckLis
private final FireCheckListMapper fireCheckListMapper; private final FireCheckListMapper fireCheckListMapper;
private final CorpInfoRepository corpInfoRepository; private final CorpInfoRepository corpInfoRepository;
@Override
public PageResponse<FireCheckListDO> screenList(Map<String, Object> params) {
IPage<FireCheckListDO> iPage = new Query<FireCheckListDO>().getPage(params);
FireCheckListE fireCheckListE = new FireCheckListE();
DateTimeE dateTimeE = fireCheckListE.getCheckRecordInterval(null);
IPage<FireCheckListDO> result = fireCheckListMapper.screenList(iPage, params, dateTimeE);
return PageHelper.pageToResponse(result, result.getRecords());
}
@Override @Override
public PageResponse<FireCheckListDO> listPage(Map<String, Object> params) { public PageResponse<FireCheckListDO> listPage(Map<String, Object> params) {
IPage<FireCheckListDO> iPage = new Query<FireCheckListDO>().getPage(params); IPage<FireCheckListDO> iPage = new Query<FireCheckListDO>().getPage(params);

View File

@ -3,6 +3,43 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zcloud.fire.check.persistence.mapper.FireCheckListMapper"> <mapper namespace="com.zcloud.fire.check.persistence.mapper.FireCheckListMapper">
<select id="screenList" resultType="com.zcloud.fire.check.persistence.dataobject.FireCheckListDO">
select
cl.*,
ci.port_area as portArea,
GROUP_CONCAT(DISTINCT u.name) AS userName,
COUNT(DISTINCT cli.fire_point_id) AS firePointCount,
COUNT(DISTINCT cr.id) AS checkCycleCount
from fire_check_list cl
left join corp_info ci on cl.corpinfo_id = ci.id and ci.delete_enum = 'FALSE'
left join fire_check_list_user fclu on cl.fire_check_id = fclu.fire_check_id and fclu.delete_enum = 'FALSE'
left join user u on fclu.user_id = u.id and u.delete_enum = 'FALSE'
left join fire_check_list_item cli on cl.fire_check_id = cli.fire_check_id and cli.delete_enum = 'FALSE'
left join fire_check_record cr on cl.fire_check_id = cr.fire_check_id
and cr.delete_enum = 'FALSE'
and cr.finished_flag = 1
and (
(cl.fire_check_type = 'fireCheckPeriod0001' and cr.check_time <![CDATA[>=]]> #{dateTimeE.dayStartTime} and cr.check_time <![CDATA[<=]]> #{dateTimeE.dayEndTime})
or (cl.fire_check_type = 'fireCheckPeriod0002' and cr.check_time <![CDATA[>=]]> #{dateTimeE.weeklyStartTime} and cr.check_time <![CDATA[<=]]> #{dateTimeE.weeklyEndTime})
or (cl.fire_check_type = 'fireCheckPeriod0003' and cr.check_time <![CDATA[>=]]> #{dateTimeE.tenDaysStartTime} and cr.check_time <![CDATA[<=]]> #{dateTimeE.tenDaysEndTime})
or (cl.fire_check_type = 'FireCheckPeriod0004' and cr.check_time <![CDATA[>=]]> #{dateTimeE.monthlyStartTime} and cr.check_time <![CDATA[<=]]> #{dateTimeE.monthlyEndTime})
or (cl.fire_check_type = 'fireCheckPeriod0005' and cr.check_time <![CDATA[>=]]> #{dateTimeE.quarterlyStartTime} and cr.check_time <![CDATA[<=]]> #{dateTimeE.quarterlyEndTime})
or (cl.fire_check_type = 'fireCheckPeriod0006' and cr.check_time <![CDATA[>=]]> #{dateTimeE.yearlyStartTime} and cr.check_time <![CDATA[<=]]> #{dateTimeE.yearlyEndTime})
or (cl.fire_check_type = 'fireCheckPeriod0007' and cr.check_time <![CDATA[>=]]> #{dateTimeE.halfYearStartTime} and cr.check_time <![CDATA[<=]]> #{dateTimeE.halfYearEndTime})
or (cl.fire_check_type = 'fireCheckPeriod0008' and cr.check_time <![CDATA[>=]]> #{dateTimeE.halfMonthStartTime} and cr.check_time <![CDATA[<=]]> #{dateTimeE.halfMonthEndTime})
or (cl.fire_check_type = 'fireCheckPeriod0009' and cr.check_time <![CDATA[>=]]> #{dateTimeE.weeklyStartTime} and cr.check_time <![CDATA[<=]]> #{dateTimeE.weeklyEndTime})
)
where cl.delete_enum = 'FALSE' and cl.state = 0
<if test="params.corpinfoId != null">
and cl.corpinfo_id = #{params.corpinfoId}
</if>
<if test="params.portArea != null">
and ci.port_area = #{params.portArea}
</if>
group by cl.fire_check_id
order by cl.create_time desc
</select>
<select id="getInfoById" resultType="com.zcloud.fire.check.persistence.dataobject.FireCheckListDO"> <select id="getInfoById" resultType="com.zcloud.fire.check.persistence.dataobject.FireCheckListDO">
select cl.*, select cl.*,
fclu.department_id as departmentId , fclu.department_id as departmentId ,