头部
1、实时事件 事件状态 状态0:生成事件;1:启动响应;2:响应结束;3:生成案例
2、事件关注 取关注后的事件 事件关注状态的设置
3、联合联动 ??
4、统计分析
5、辅助决策 进入辅助决策页面
6、视频监控
7、综合查询
8、指挥体系
9、位置查询 输入地址进行查询,查询后在地图定位,可进行添加事件
10、缓冲区设置 暂定去掉
左侧
一、基础信息
1、事件基本信息
名称 时间 事件 地点 类型 等级 事件描述 经纬度
功能:
(1)数据来源:取当前处置的事件的详细信息,不需要跨服务接口
(2)其他说明:没有选择处理事件时此处收缩不展示,此处功能是选择处置某个事件后展示的信息
2、缓冲区分析
影响区县 影响乡镇 人口 人口密度
功能:
(1)数据来源:取当前处置的事件的缓冲区分析信息,此处功能辅助决策处填充数据,不需要跨服务接口
(2)辅助决策页面填充、展示数据, 指挥救援展示数据
(3)其他说明:没有选择处理事件时此处收缩不展示,此处功能是选择处置某个事件后展示的信息
3、交通情况
功能:
(1)数据来源:此处功能取自gis地图分析,需要缓冲区分析,暂定5km,10km,20km,50km
(2)其他说明:没有选择处理事件时此处收缩不展示,此处功能是选择处置某个事件后展示的信息
二、防护目标
1、人员密集场所
(1)学校
(2)宾馆饭店
(3)文化场所
(4)商场超市
功能:
(1)数据来源:取天地图或者EGIS数据,需要缓冲区分析,暂定5km,10km,20km,50km
(2)辅助决策、指挥救援需要展示数据
(3)其他说明:没有选择处理事件时此处收缩不展示,此处功能是选择处置某个事件后展示的信息
2、交通场所
(1)火车站
(2)机场
(3)码头
功能:
(1)数据来源:取天地图或者EGIS数据,需要缓冲区分析,暂定5km,10km,20km,50km
(2)辅助决策、指挥救援需要展示数据
(3)其他说明:没有选择处理事件时此处收缩不展示,此处功能是选择处置某个事件后展示的信息
三、应急队伍
按级别 按类型显示 resource_team resource_team_person resource_material
功能:
(1)数据来源:数据来源于资源系统数据,需要缓冲区分析,暂定5km,10km,20km,50km,缓冲区分析根据数据经纬度
此处需要跨服务调用,调用资源服务
(2)辅助决策处把需要调度的队伍和事件做关联、设置队伍状态、短信、语音、视频、路劲规划等操作,展示已调度的物资信息
指挥救援展示队伍信息,包括队伍详细信息、当前位置、轨迹、沟通方式等
(3)其他说明:没有选择处理事件时此处收缩不展示,此处功能是选择处置某个事件后展示的信息
右侧队伍调度显示调度后的队伍信息
四、应急物资
实际上显示的是应急物资仓库,进入显示具体物资
按级别 按类型 resource_repository resource_material
功能:
(1)数据来源:数据来源于资源系统数据,需要缓冲区分析,暂定5km,10km,20km,50km,缓冲区分析根据数据经纬度
此处需要跨服务调用,调用资源服务
(2)辅助决策处把需要调度的物资和事件关联、设置调度物资的仓库、物资数量信息,仓库详细信息、沟通方式,展示已调度的物资信息
指挥救援展示调度的物资信息
(3)其他说明:没有选择处理事件时此处收缩不展示,此处功能是选择处置某个事件后展示的信息
右侧显示调度后物资信息
五、应急资源
1、医疗卫生 resource_healthdep
2、避难场所 系统已有 resource_shelter
3、应急专家 系统已有 resource_expert
4、应急管理机构 EGIS有数据,确认取EGIS数据
5、视频监控 系统集成
6、通信机构 系统已有 resource_communication_org
7、运输保障 系统已有 resource_transport resource_transport_exp
8、治安维护保障 系统已有 resource_security_uphold
9、财力保障 系统已有 resource_fund_org resource_fund
按级别 按类型
功能:
(1)数据来源:数据来源于资源系统数据,需要缓冲区分析,暂定5km,10km,20km,50km,缓冲区分析根据数据经纬度
此处需要跨服务调用,调用资源服务
(2)辅助决策展示信息
指挥救援展示信息
(3)其他说明:没有选择处理事件时此处收缩不展示,此处功能是选择处置某个事件后展示的信息
右侧
一、实时灾情 evn_event_param表
1、实时灾情
功能:
(1)数据来源:数据来源于系统数据
(2)辅助决策添加、展示实时灾情信息
指挥救援展示实时灾情信息
(3)其他说明:没有选择处理事件时此处收缩不展示,此处功能是选择处置某个事件后展示的信息
2、响应指标
功能:
(1)数据来源:数据来源于后台数据填充
(2)辅助决策展示信息
指挥救援展示实信息
二、进展情况
功能:
(1)数据来源:数据来自于后台数据填充,主要有1灾情上报 2灾情评估 3 救援进展 4处置建议 5领导批示
(2)辅助决策添加信息、展示信息
指挥救援展示实信息
三、情报辅助
1、现场图片
2、现场视频
3、现场汇报
4、实时视频(暂无)
5、外部链接
功能:
(1)数据来源:外部链接数据来自于后台数据填充
(2)现场图片、现场视频、现场汇报来自于后台数据填充,PC、APP
(3)辅助决策添加信息、展示信息
指挥救援展示实信息
四、预警信息
功能:
(1)数据来源:数据来自于后台数据填充,不需要跨服务
(2)辅助决策添加信息、展示信息
指挥救援展示实信息
五、舆情信息
功能:
(1)数据来源:数据来自于后台数据填充,不需要跨服务
(2)辅助决策添加信息、展示信息
指挥救援展示实信息
六、任务管理
标题 执行机构 执行内容 备注 完成时限 天 时 秒
功能:
(1)数据来源:数据来自于后台数据填充,不需要跨服务
(2)辅助决策添加任务信息、展示任务信息
指挥救援任务信息、展示任务信息
底部
一、应急救援力量分布图
二、人员疏散路线图
三、应急救援物资调运图
功能:
(1)数据来源:数据来自于后台数据填充,不需要跨服务
(2)辅助决策添加任务信息、展示任务信息
指挥救援展示信息
四、应急指挥方案
五、资源保障方案
六、救援处置方案
七、应急工作方案
功能:
(1)数据来源:数据来自于后台数据填充,不需要跨服务
(2)辅助决策添加任务信息、展示任务信息
指挥救援展示信息
===================逻辑=================================
1、应急值班:添加初步研判按钮,根据事件类型匹配相关已经数字化后的预案,选择预案,审批,上传。
2、辅助决策:判断是否选过预案,没有选过的话提醒选择预案,选着后,再走下面流程,根据实时灾情的参数,匹配数字化后的预案的相应指标,提醒给辅助决策人员,选择几级相应,推送给指挥官。
===================系统===================================
一、事件动态
1、信息填报
(1)、灾情上报
灾情上报标题
灾情上报内容
上报时间
上报部门
(2)、灾情评估
灾情评估标题
灾情评估内容
上报时间
上报部门
(3)、救援进展
救援进展标题
救援进展内容
上报时间
上报部门
(4)、处置建议
处置建议标题
处置建议内容
上报时间
上报部门
(5)、领导批示
领导批示标题
领导批示内容
上报时间
上报部门
(6)、情报辅助
情报辅助标题
情报辅助内容
上报时间
上报部门
二、地图标绘专题图、态势图可以上传管理
三、舆情信息列表信息
四、灾情统计
一、人员伤亡
区县 乡镇 死亡 受伤 失踪 操作(乡镇统计、重置)
五、前突队伍
1、队伍查询 队伍出动 两个选项卡
队伍类型 消防前突 森防前突
队伍状态 待命中 赶赴中 已到达 已结束
在队伍查询中关联事件
在队伍出动中设置队伍出动状态 队伍结束时间
六、灾情动态(部里只有地震专题有)
系统会商
090000
指挥救援态势图
应急力量分布图1
100000
人员疏散路线图2
100001
应急救援物资调运图3
100002
指挥救援现场情报
现场图片 现场图片0
110000
现场视频 现场视频1
110001
现场汇报 现场文字汇报2
110002
任务下发
选择了几个部门生成几条接收记录
针对接收记录
1、外部链接
2、进展情况 重点关注在 字典 duty_focus 0未关注 1已关注
3、实时灾情
4、舆情信息
5、预警信息
6、态势图 带附件信息
7、现场情报 带附件信息
8、影响区县
9、应急任务
10、任务回复
11、指挥体系
12、视频关注 还没有做
省厅下周计划完成
1、视频关注
2、指挥救援添加事件
3、四个方案 huajun-cloud-event
系统管理
模板类别 sys_template_type
应急指挥方案 emergency_command_plan 3
资源保障方案 resource_guarantee_plan
救援处置方案 rescue_disposal_plan
应急工作方案 emergency_work_plan
disposal_plan_type disposal_plan_type
1、应急指挥方案 emergency_command_plan
2、资源保障方案 resource_guarantee_plan
3、救援处置方案 rescue_disposal_plan
4、应急工作方案 emergency_work_plan
应急指挥方案
160000
资源保障方案
160001
救援处置方案
160002
应急工作方案
160003
是否关注 duty_focus
未关注0
已关注1
是否推送push_or_not
未推送0
推送1
保密等级sys_security_level
SEMP_DOC_SOURCEREPORT
doctemplate_type
poCtrl.setSaveFilePage("/saveTemplateModel?type=" + type + "&mesId=" + mesId);
4、物资调度
物资仓库 resource_repository
物资 resource_material
`name` varchar(60) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '仓库名称',
`grade` char(10) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '仓库级别',
`type` char(10) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '仓库类别',
名称
队伍调度状态 team_schedule_state
5、队伍调度 resource_team
待命中
赶赴中
已到达
已结束
辅助决策左侧
在队伍详情信息页面点击【调度】按钮把队伍和事件关联起来,同时设置队伍的状态为待命中,推送状态为1,
辅助决策右侧
可以设置队伍队伍的状态,已达到 已结束 结束时间
队伍状态 已调度的 未调度的 关联的事件
team_state
队伍状态(“0”空闲 “1”调度“)搞一个字典
event_id
6、预案匹配等
预案以及响应指标逻辑
1、应急值班:添加初步研判按钮,根据事件类型匹配相关已经数字化后的预案,选择预案,审批,上传。
2、辅助决策:判断是否选过预案,没有选过的话提醒选择预案,
选着后,再走下面流程,根据实时灾情的参数,匹配数字化后的预案的相应指标,
提醒给辅助决策人员,选择几级相应,推送给指挥官。
突发事件10000
自然灾害11000
事故灾难12000
公共卫生事件13000
社会安全事件14000
其他突发事件19000
event_type
event_type
推荐预案 RecommendPlan
预案id 预案名称 预案适用事件类型code 预案适用事件类型name 事件id 事件name 事件类型 选定
isRecommendPlan eventId iscurrentUse
传参数 事件id 事件name 事件类型
SELECT * FROM `article` where title like '正%';
SELECT * FROM `article` where substring(title,1,1)='正';
11000,11A00,11A01,11A02,11B00
11000
SELECT * FROM plan_base WHERE event_type LIKE '%11%';
select * from plan_base where event_type REGEXP '11|11A01';
https://cloud.tencent.com/developer/article/1644999
eventGrid
onSelectionChanged
dataGrid_plan
grid_plan
grid_plan.load({"eventtype": record.eventtypecode.substr(0,2)});
grid_plan.setUrl("${pageContext.servletContext.contextPath}/samples/planinfo/queryDataSet");//分页
D:\HuajunCode\nyyj\hnyj_yjcz\src\main\java\cn\les\syj\yjcz\startPlan\action\PlanInfoAction.java
@Override
public Map<String, Object> queryDataSet(Map<String, Object> map) {
StringBuffer sql = new StringBuffer();
sql.append("select DISTINCT a.*,a.OID as PLANID,a.MAKEUNIT as orgname,a.PLANNAME as name, b.eventtypename as eventtypename,temp.TEMPLATEID " +
"from pla_base a " +
" join code_ets_eventtype b on A .EVENTTYPE = b.eventtypecode" +
" join PLA_VER pv on a.OID = pv.PLANOID" +
" left join bas_org org on org.ORGNAME=a.MAKEUNIT ");
sql.append(" left join PLAN_TO_TEMPLATE temp on temp.PLANID=a.OID ");
// sql.append("<where> 1=1");
// sql.append(" <if test=\" name != null and name != '' \"> ");
// sql.append(" and a.name = #{name} ");
// sql.append(" </if>");
// sql.append(" <if test=\" eventType != null and eventType != '' \"> ");
// sql.append(" and a.TYPECODE2 = #{TYPECODE2} ");
// sql.append(" </if>");
// sql.append(" <if test=\" keywords != null and keywords != '' \"> ");
// sql.append(" and a.keywords like '%${keywords}%' ");
// sql.append(" </if>");
// sql.append(" and a.org=#{org} ");
// sql.append("</where>");
sql.append(" where a.ISDEL = '0' and pv.VERSTATECODE='5' ");
sql.append(" <if test=\" makeunit != null and makeunit != '' \"> ");
sql.append(" and org.oid = #{makeunit} ");
sql.append(" </if>");
sql.append(" <if test=\" eventtype != null and eventtype != '' \"> ");
sql.append(" and a.eventtype like '${eventtype}%'");
sql.append(" </if>");
if (map != null && map.size() > 0) {
// sql.append("<where>") ;
Set<String> keys = map.keySet();
for (String key : keys) {
if (!this.iskey(key) && map.get(key) != null && !"".equals(map.get(key).toString()) && !"makeunit".equals(key)) {
sql.append(" and a." + key + " like '%${" + key + "}%' ");
}
}
// sql.append(" order by a.begintime desc ") ;
}
sql.append(" order by a.UPDATDATE desc ");
return this.queryForDataSet(sql.toString(), map);
}
public boolean iskey(String key) {
if (list.size() <= 0) {
list.add("pageIndex");
list.add("pageSize");
list.add("sortField");
list.add("sortOrder");
}
return list.contains(key);
}
预案启动实体类 用于记录启动预案的相关信息
PLAN_USED
grid_plan.setUrl("${pageContext.servletContext.contextPath}/samples/planinfo/queryDataSet");//分页
@RequestMapping("/startPlanUsed")
@ResponseBody
public void startPlanUsed(@RequestParam Map<String, String> map) {
if (logger.isDebugEnabled()) {
logger.debug("数据:" + map);
}
String eId = map.get("eventId");
String pId = map.get("planId");
PlanUsed used = new PlanUsed();
//获取 预案
PlaBase info = planInfoService.selectById(pId);
if (info == null || "1".equals(info.getIsdel())) {
return;//提示错误
}
Event event = eventService.queryEvent(eId);
if (event == null) {
return;//提示错误
}
PlanUsed use = planUsedService.getPlanUsed(eId, pId);
if (use == null) {
used.setPlanid(info.getOid());
used.setPlanname(info.getPlanname());
used.setAcceptid(eId);
used.setAcceptname(event.getEventname());
used.setIsused("1");
used.setStarttime(new Date());
//used.setPatch(info.getFilepath());
used.setIscreate("0");
List<PlanResponseLevel> planResponseLevels = planResponseLevelService.selectByPlanId(pId);
String[] responseLevel=genResponseLevel(event, planResponseLevels);
used.setResponselevel(responseLevel[0]);
used.setPrewarninglevel(responseLevel[1]);
String id = UUID.randomUUID().toString().replaceAll("-", "");
used.setId(id);
planUsedService.save(used);
//给方案生成中的事件列表发送更新消息
MKLCZMessage mm = new MKLCZMessage();
mm.setBizType(2000);
mm.setModeltype("startplan");
mm.setTitle("启动预案:" + info.getPlanname());
mm.setStartplan("启动了_" + info.getPlanname() + "");
mm.setMessageId(Md5Util.UUID());
mm.setSendTime(new Date());
//发给消息服务器
JmsSenderUtil.sendTopic(mm);
return;
}
planUsedService.updatePlanUsedStatus(eId, use.getId());
//给方案生成中的事件列表发送更新消息
MKLCZMessage mm = new MKLCZMessage();
// mm.setBizType(2000);
mm.setModeltype("startplan");
mm.setTitle("启动预案:" + info.getPlanname());
mm.setStartplan("启动了" + info.getPlanname() + "预案");
mm.setMessageId(Md5Util.UUID());
mm.setSendTime(new Date());
//发给消息服务器
JmsSenderUtil.sendTopic(mm);
//发给前台页面
// webSocketServer.sendEvent("yjcz", "startplan",JsonUtil.toJson(mm));
// MKLCZMessage mm = new MKLCZMessage();
// mm.setBizType(2001);
// mm.setModeltype("startplan");
// mm.setTitle("启动预案:"+info.getName());
// mm.setTitle("启动预案:"+info.getName());
// mm.setStartplan("启动了"+info.getName()+"预案");
// mm.setMessageId(Md5Util.UUID());
//
// mm.setSendTime(new Date());
// 发给消息服务器
// JmsSenderUtil.sendTopic(mm);
//添加过程再现
ProcreContent pr = new ProcreContent();
pr.setItemid(UUID.randomUUID().toString().replaceAll("-", ""));
pr.setReappid("000");
pr.setOperatetime(new Date());
pr.setContent("预案名称:" + info.getPlanname());
pr.setContentid("启动预案");
pr.setFileid("");
pr.setContentname("启动预案");
pr.setEventid(eId);
pr.setEventname(event.getEventname());
/*ProcreContent pro = new ProcreContent();
pro.setItemid(pr.getItemid());
pro.setReappid("000");
pro.setOperatetime(pr.getOperatetime());
pro.setContent(pr.getContent());
pro.setContentid(pr.getContentid());
pro.setFileid("");
pro.setContentname(pr.getContentname());
pro.setEventid(pr.getEventid());
pro.setEventname(pr.getEventname());*/
gczxService.saveContent(pr);
/* gczxService.save(pr);
gczxService.save(pro);*/
if (logger.isDebugEnabled()) {
logger.debug("新增过程的id:" + pr.getItemid());
}
}
选择预案
D:\HuajunCode\nyyj\hnyj_yjcz\src\main\java\cn\les\syj\yjcz\eventManage\action\PlanUsedAction.java
function selectPlan(planid) {
var grid = mini.get("eventGrid");
var row = grid.getSelected();
if (row) {
var eventId = row.eventid;
var planstart_data = {};
planstart_data.eventId = eventId;
planstart_data.planId = planid;
mini.confirm("确定要选定这条预案吗?", "提醒", function (msg) {
if (msg == 'ok') {
$.callJson({
url: "${pageContext.request.contextPath}/yjcz/startevent/startPlanUsed",
data: planstart_data,
type: 'post',
dataType: 'json',
success: function (data) {
mini.alert("预案选定成功。", "提示", function () {
//调到生成页面
});
},
error: function () {
mini.alert("error");
}
});
}
});
} else {
mini.alert("请先选择要处理的事件。");
}
}
D:\HuajunCode\nyyj\hnyj_yjcz\src\main\webapp\app\yjcz\eventManage\itemRecord.jsp
function openDealEvent(id, type) {
var win = mini.open({
title: '查看已启动预案信息',
url: '${pageContext.request.contextPath}/app/yjcz/eventManage/itemRecord.jsp',
showModal: false,
width: 1000,
height: 600,
onload: function () {
var iframe = this.getIFrameEl();
var data = {id: id, eventType: type};
data.action = "show";
iframe.contentWindow.SetData(data);
}
});
}
D:\HuajunCode\nyyj\hnyj_yjcz\src\main\webapp\app\yjcz\eventManage\showPlanInfo.jsp
function openPlan(id) {
var win = mini.open({
title: '查看预案信息',
url: '${pageContext.request.contextPath}/app/yjcz/eventManage/showPlanInfo.jsp',
showModal: false,
width: 680,
height: 380,
onload: function () {
var iframe = this.getIFrameEl();
var data = {id: id};
data.action = "show";
iframe.contentWindow.SetData(data);
}
});
}
function onSelectionChanged(e) {
var grid = e.sender;
var record = grid.getSelected();
if (record) {
grid_case.load({"eventtypecode": record.eventtypecode});
grid_law.load({"eventType": record.eventtypecode});
grid_nlg.load({"eventType": record.eventtypecode});
grid_plan.load({"eventtype": record.eventtypecode.substr(0,2)});
if (record.eventstate != 3) {
grid_plan.on("drawcell", function (e) {
var record = e.record;
column = e.column;
field = e.field;
value = e.value;
if (column.field == "option_plan") {
e.cellHtml = "<a href='javascript:void(0);' onclick='openPlan(\"" + record.planid + "\")'>查看</a>";
}
});
} else {
grid_plan.on("drawcell", function (e) {
var record = e.record;
column = e.column;
field = e.field;
value = e.value;
if (column.field == "option_plan") {
if(record.templateid){
e.cellHtml = "<a href='javascript:void(0);' onclick='selectPlan(\"" + record.planid + "\")'>选定</a> <a href='javascript:void(0);' onclick='openPlan(\"" + record.planid + "\")'>查看</a>";
}else{
e.cellHtml = " <a href='javascript:void(0);' onclick='openPlan(\"" + record.planid + "\")'>查看</a>";
}
}
});
}
eventTitle.text("[" + record.eventname + "]关联信息");
} else {
grid_case.load();
grid_law.load();
grid_nlg.load();
grid_plan.load();
eventTitle.text("");
}
}
是否已读
readornot
未读0 已读1
事件分析
事件状态 `state` varchar(2) DEFAULT '0' COMMENT '状态0:生成事件;1:启动响应; 2:响应结束;3:生成案例',
`event_source` char(5) DEFAULT '0' COMMENT '事件来源0值守上报 2、应急指挥 3、事件添加', eventSource
`event_focuson` char(5) DEFAULT '0' COMMENT '事件关注0否 1是 默认值0', eventFocuson
响应级别及判定标准
1 标识符(主键) id 主键 varchar 32 N
2 事件id event_id varchar 32 N
3 死亡人数 death_num varchar 50 Y
4 受伤人数 wounder_num varchar 50 Y
5 失踪人数 missing_num varchar 50 Y
6 受困人数 trapped_num varchar 50 Y
7 影响半径 influenceradius varchar 50 Y
8 经济损失 economicloss varchar 50 Y
9 影响范围 impact_scope varchar 200 Y
根据事件类型、事件等级
影响类型4大类
自然灾害、事故灾难、公共卫生事件、社会安全事件
事件等级
特别重大、重大、较大、一般
=======莱斯系统================================
图上指挥
http://192.168.8.201:8081/lesweb3/app/zhdd/yjcz_all.jsp?functionid=d54bd8f035c64df28da49852dc560059
事件管理
http://192.168.8.201:8081/hnyj_yjcz/app/yjcz/eventManage/index.jsp?functionid=7764c0de34c346708c38bce6d1e8f48c
PLAN_RESPOND
PLAN_RESPONSELEVEL
PLAN_RESP_STANDARD
PLAN_USED
============公司系统=======================================
突发事件预案选择表
semp_duty_evn_receive_plan
semp_base_plan_base
semp_base_plan_ver
select t1.id, t1.plan_name,t2.plan_id,t2.id as pverid,t2.templateid, t2.make_unit, t2.publish_unit, t2.publish_date, t2.signname,t2.districts, t2.content, t2.attachment, t2.remark
from semp_base_plan_base t1, (select a.* from semp_base_plan_ver a inner join (select max(ver_no) ver_no, plan_id from semp_base_plan_ver group by plan_id) b
on a.ver_no = b.ver_no and a.plan_id = b.plan_id) t2
where t1.id = t2.plan_id
and t2.event_type like '%" + eventType + "%'
// 匹配预案
function matchPlan() {
$.ajax({
url: "sempBasePlanBaseController.do?matchPlan",
data: {
"eventType": "${sempDutyEvnReceive.eventType}",
"districts": "${sempDutyEvnReceive.districts}",
"eventId": "${sempDutyEvnReceive.id}",
"userId": "${user.id}"
},
dataType: "json",
cache: false,
success: function (data) {
$("#planList").empty();
$.each(data.obj, function (index, item) {
var title = "制作单位:" + item.makeUnit + "\n";
title += "发布单位:" + item.publishUnit + "\n";
title += "发布日期:" + moment(item.publishDate).format("YYYY年MM月DD日") + "\n";
title += "签发人:" + item.signname;
var html = "<li ><p title='" + title + "'>" + item.planName + "</p>";
html += "<p>";
if (item.attachment != "") {
html += "<span onclick=downloadPlan('" + item.attachment + "')>预案下载</span>";
}
if (item.templateid != "") {
html += "<span onclick=openSzhDetail('" + item.pverid + "')>数字化详情</span>";
}
if (item.checked) {
if (item.status == "1") {
//去批示
html += "<span onclick=createwindow('批示','sempDutyEvnReceivePlanController.do?goUpdate&id=" + item.evnPlan + "',768,500)>批示</span>";
} else {
//查看批示
html += "<span onclick=createwindow('查看批示','sempDutyEvnReceivePlanController.do?goView&id=" + item.evnPlan + "',768,500)>查看批示</span>";
}
} else {
html += "<span onclick=createwindow('选择批示人','sempDutyEvnReceivePlanController.do?goAdd&planId=" + item.planId + "&evnId=${sempDutyEvnReceive.id}',768,500)>预案选择</span>";
}
html += "</p> </li>";
$("#planList").append(html);
});
$(".yjryxxb").niceScroll({cursorborder: "", cursorcolor: "rgba(0,0,0,0)"});
}
})
}
nohup java -Xms128m -Xmx512m -jar config.jar > config.log 2>&1 &
7、响应指标
数据来源于数字化预案的最新指标
预案id--最新的版本id - 查询详细信息,plan_norm 响应指标表
queryResponseCriteria
select * from plan_base
select id,name,remark from plan_base where id='411380b65a0ae0aabf1d0673dff98c7a'
select * from plan_ver where plan_id='411380b65a0ae0aabf1d0673dff98c7a'
SELECT max(ver_no) ver_no from plan_ver where plan_id='411380b65a0ae0aabf1d0673dff98c7a'
SELECT id,max(ver_no) ver_no from plan_ver where plan_id='411380b65a0ae0aabf1d0673dff98c7a' GROUP BY id
select * FROM plan_ver
where plan_id='411380b65a0ae0aabf1d0673dff98c7a' and ver_no = (SELECT max(ver_no) ver_no from plan_ver where plan_id='411380b65a0ae0aabf1d0673dff98c7a');
plan_id=411380b65a0ae0aabf1d0673dff98c7a
plan_ver_id=bb77a5c59e257dd0247f255191fa489d
411380b65a0ae0aabf1d0673dff98c7a
http://192.168.8.201:8081/hnyj_yjcz/app/fzjc/sgty/sgty.jsp
D:\HuajunCode\nyyj\hnyj_yjcz\src\main\webapp\app\fzjc\sgty\sgty.jsp
<div class="three_list_title" id="sgxx_title">
<span class="list_title_text">响应指标</span>
</div>
<%--响应指标--%>
<div class="list_content" id="sgxx_content" style="height: 230px">
<div style="margin-top: 4px">
<div class="re-level" style="background: #bd0004">
Ⅰ
</div>
<div class="re-data">
<div><span>死亡:</span><span id="dienum1" class="re-detail re-color"></span> <span>受伤:</span><span
id="bruise1" class="re-detail re-color"></span></div>
<div><span>半径:</span><span id="radius1" class="re-detail re-color"></span> <span>损失:</span><span
id="money1" class="re-detail re-color"></span></div>
</div>
</div>
<div>
<div class="re-level" style="background: #d88b09">
Ⅱ
</div>
<div class="re-data">
<div><span>死亡:</span><span id="dienum2" class="re-detail re-color-2"></span>
<span>受伤:</span><span id="bruise2" class="re-detail re-color-2"></span></div>
<div><span>半径:</span><span id="radius2" class="re-detail re-color-2"></span>
<span>损失:</span><span id="money2" class="re-detail re-color-2"></span></div>
</div>
</div>
<div>
<div class="re-level" style="background: #cad704">
Ⅲ
</div>
<div class="re-data">
<div><span>死亡:</span><span id="dienum3" class="re-detail re-color-3"></span>
<span>受伤:</span><span id="bruise3" class="re-detail re-color-3"></span></div>
<div><span>半径:</span><span id="radius3" class="re-detail re-color-3"></span>
<span>损失:</span><span id="money3" class="re-detail re-color-3"></span></div>
</div>
</div>
<div>
<div class="re-level" style="background: #01b9dd">
Ⅳ
</div>
<div class="re-data">
<div><span>死亡:</span><span id="dienum4" class="re-detail re-color-4"></span>
<span>受伤:</span><span id="bruise4" class="re-detail re-color-4"></span></div>
<div><span>半径:</span><span id="radius4" class="re-detail re-color-4"></span>
<span>损失:</span><span id="money4" class="re-detail re-color-4"></span></div>
</div>
</div>
</div>
8、响应级别
http://192.168.8.201:8081/hnyj_yjcz/app/fzjc/sgty/sgty.jsp
D:\HuajunCode\nyyj\hnyj_yjcz\src\main\webapp\app\fzjc\sgty\sgty.jsp
<div class="yuan_list2">
<span class="yuan_text">响应级别</span>
<a class="event_value" id="responseLevel" onclick="$('#iframe4').show();"
style="color: #1f9bd4; cursor:pointer;"></a>
</div>
<iframe src="response.jsp" class="response-frame" name="prewarningFrame" id="iframe4"></iframe>
<iframe class="response-frame" id="iframe5" style="height: 400px;width: 420px"></iframe>
弹出框查询
@Override
public Map<String, Object> queryPlanUseAndResponse(Map<String, Object> map) {
Map<String, Object> reData = new HashMap<String, Object>();
Map<String, Object> planUse = planUsedDao.queryPlanUseDetail(map);
reData.put("planUse", planUse);
reData.put("response",planResponseLevelService.selectByPlanId(planUse.get("oid").toString()));
return reData;
}
ETS_EVENT
PLAN_USED
pla_base
PLAN_RESPONSELEVEL 预案响应指标
PLAN_RESP_STANDARD 应对分级指标表
CODE_ETS_EVENTTYPE 事件类型
CODE_ETS_EVENTGRADE 事件等级
PLAN_ITEM 预案节点信息
选定的预案
PLAN_USED
应对分级指标表
PLAN_RESP_STANDARD
@Override
public Map<String, Object> queryPlanUseDetail(Map<String, Object> map) {
String sql = "SELECT ev.EVENTID,ev.EVENTTYPECODE,ev.eventName,ev.EVENTPOSITION,ev.EVENTCUTLINE,EV.DEATHNUMBER,EV.WOUNDNUMBER,EV.ECONOMYLOST,TO_CHAR(ev.eventhtime, 'YYYY-MM-DD HH24:MI:SS') AS eventTime,pu.responselevel" +
" ,pi.*,rl.*,et.EVENTTYPENAME as typeName,ev.jdegree as jdegree,ev.wdegree as wdegree,eg.EVENTGRADENAME,eg.eventgradecode,et2.EVENTTYPENAME AS eventTypeName,org2.ORGNAME AS reportunit,pu.id as planusedid,plaitem.ITEMNAME" +
" from ETS_EVENT ev" +
" INNER JOIN PLAN_USED pu on EV.EVENTID=PU.ACCEPTID" +
" INNER JOIN pla_base pi on PU.PLANID=pi.oid" +
" LEFT JOIN PLAN_RESPONSELEVEL rl on pu.RESPONSELEVEL=rl.RESPONSELEVELID" +
" INNER JOIN CODE_ETS_EVENTTYPE et on et.EVENTTYPECODE=pi.EVENTTYPE " +
" INNER JOIN CODE_ETS_EVENTGRADE eg ON eg.EVENTGRADECODE = ev.EVENTGRADECODE" +
" INNER JOIN CODE_ETS_EVENTTYPE et2 ON et2.EVENTTYPECODE = ev.EVENTTYPECODE" +
" INNER JOIN bas_org org2 ON ev.REPORTUNIT = org2.OID" +
" left join PLAN_ITEM plaitem on rl.PLANITEMID=plaitem.itemid" +
" WHERE pu.id = #{id}";
return this.queryForMap(sql, map);
}