Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
YeeAmosFireAutoSysRoot
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
station
YeeAmosFireAutoSysRoot
Commits
76128b63
Commit
76128b63
authored
May 27, 2020
by
suhuiguang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1.修改今日指数统计详情接口
parent
b99e2551
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
987 additions
and
1051 deletions
+987
-1051
StatisticsErrorTypeEum.java
...yeejoin/amos/fas/common/enums/StatisticsErrorTypeEum.java
+1
-1
FireEquipmentData.java
...va/com/yeejoin/amos/fas/dao/entity/FireEquipmentData.java
+17
-0
ContingencyAction.java
...m/yeejoin/amos/fas/business/action/ContingencyAction.java
+437
-437
TimeLineController.java
...join/amos/fas/business/controller/TimeLineController.java
+181
-183
ContingencyInstanceImpl.java
...os/fas/business/service/impl/ContingencyInstanceImpl.java
+277
-277
RiskSourceServiceImpl.java
...amos/fas/business/service/impl/RiskSourceServiceImpl.java
+34
-96
View3dServiceImpl.java
...oin/amos/fas/business/service/impl/View3dServiceImpl.java
+0
-19
IContingencyInstance.java
...amos/fas/business/service/intfc/IContingencyInstance.java
+15
-20
dbTemplate_view3d.xml
...sStart/src/main/resources/db/mapper/dbTemplate_view3d.xml
+25
-18
No files found.
YeeAmosFireAutoSysCommon/src/main/java/com/yeejoin/amos/fas/common/enums/StatisticsErrorTypeEum.java
View file @
76128b63
...
...
@@ -16,7 +16,7 @@ public enum StatisticsErrorTypeEum {
/**
* 设备故障
*/
equip
(
"equip"
,
"
设备故障
"
),
equip
(
"equip"
,
"
故障告警
"
),
/**
* 火灾告警
*/
...
...
YeeAmosFireAutoSysCommon/src/main/java/com/yeejoin/amos/fas/dao/entity/FireEquipmentData.java
View file @
76128b63
...
...
@@ -49,6 +49,23 @@ public class FireEquipmentData extends BasicEntity {
@Column
(
name
=
"is_invalid"
)
private
int
isInvalid
;
// 是否有效
/**
* 机构
*/
@Column
(
name
=
"org_code"
)
private
String
orgCode
;
public
String
getOrgCode
()
{
return
orgCode
;
}
public
void
setOrgCode
(
String
orgCode
)
{
this
.
orgCode
=
orgCode
;
}
public
FireEquipmentData
()
{
}
public
Long
getFireEquipmentId
()
{
return
fireEquipmentId
;
}
...
...
YeeAmosFireAutoSysService/src/main/java/com/yeejoin/amos/fas/business/action/ContingencyAction.java
View file @
76128b63
package
com
.
yeejoin
.
amos
.
fas
.
business
.
action
;
import
java.io.IOException
;
import
java.lang.reflect.Constructor
;
import
java.lang.reflect.Field
;
import
java.lang.reflect.Method
;
import
java.text.SimpleDateFormat
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
org.springframework.util.CollectionUtils
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
com.yeejoin.amos.fas.business.action.result.ActionResult
;
import
com.yeejoin.amos.fas.business.action.result.BubbleTipResult
;
import
com.yeejoin.amos.fas.business.action.result.message.ActionResultMessage
;
import
com.yeejoin.amos.fas.business.service.impl.RuleRunigSnapshotServiceImpl
;
import
com.yeejoin.amos.fas.business.service.intfc.FireStengthService
;
import
com.yeejoin.amos.fas.business.service.intfc.IContingencyInstance
;
import
com.yeejoin.amos.fas.business.service.intfc.IRiskSourceService
;
import
com.yeejoin.amos.fas.business.service.model.ContingencyDeviceStatus
;
import
com.yeejoin.amos.fas.business.service.model.ContingencyRo
;
import
com.yeejoin.amos.fas.business.util.StringUtil
;
import
com.yeejoin.amos.fas.dao.entity.ContingencyPlanInstance
;
import
com.yeejoin.amos.fas.dao.entity.FireStrength
;
@Component
public
class
ContingencyAction
implements
CustomerAction
{
private
static
String
PACKAGEURL
=
"com.yeejoin.amos.fas.business.action.result.message."
;
@Autowired
private
IContingencyInstance
iContingencyInstance
;
@Autowired
private
FireStengthService
fireStrengthService
;
// private RestTemplate restTemplate = new RestTemplate();
// @Value("${bussunis.domain}")
// private String bussunisDomain ;
@Autowired
private
IRiskSourceService
riskSourceService
;
private
static
Map
<
String
,
String
>
OPERATE_RECORD_ID
=
new
HashMap
<>();
private
static
Map
<
String
,
Map
<
String
,
String
>>
stringStringMap
=
new
HashMap
<>();
static
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"HH:mm:ss"
);
//当值值班长(S1)、副值班长(S2)、值班员(A1,A2,A3)、白班值班员、保安人员、驻站消防队长(F1)
/* private static Map<String, String> positionMap = new HashMap<String, String>() {{
put("S1", "S1");
put("S2", "S2");
put("A1", "A1");
put("A2", "A2");
put("A3", "A3");
put("F1", "F1");
}};
*/
private
Map
<
String
,
String
>
getStrengthMap
(
String
batchNo
)
{
Map
<
String
,
String
>
returnMap
=
stringStringMap
.
get
(
batchNo
);
if
(
CollectionUtils
.
isEmpty
(
returnMap
))
{
stringStringMap
=
new
HashMap
<>();
returnMap
=
new
HashMap
<>();
Date
now
=
new
Date
();
String
time
=
sdf
.
format
(
now
);
List
<
FireStrength
>
strengths
=
fireStrengthService
.
queryForStrengthList
(
time
);
// List<FireStrength> strengths = iStrengthRepository.queryForStrengthList(time);
if
(!
CollectionUtils
.
isEmpty
(
strengths
))
{
for
(
FireStrength
fireStrength
:
strengths
)
{
String
name
=
returnMap
.
get
(
fireStrength
.
getPosition
());
if
(
StringUtil
.
isNotEmpty
(
name
))
{
returnMap
.
put
(
fireStrength
.
getPosition
(),
name
+
"、"
+
fireStrength
.
getUsername
());
}
else
{
returnMap
.
put
(
fireStrength
.
getPosition
(),
fireStrength
.
getUsername
());
}
}
}
stringStringMap
.
put
(
batchNo
,
returnMap
);
}
return
returnMap
;
}
public
static
void
sendcmd
(
String
firstStr
,
String
secondStr
,
String
thirdStr
,
BubbleTipResult
result
)
{
Constructor
<?>
constructor
;
try
{
constructor
=
Class
.
forName
(
PACKAGEURL
+
result
.
getClass
().
getSimpleName
()
+
"Message"
)
.
getConstructor
(
ActionResult
.
class
);
ActionResultMessage
<?>
action
=
(
ActionResultMessage
<?>)
constructor
.
newInstance
(
result
);
action
.
execute
(
firstStr
,
secondStr
,
thirdStr
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
/**
* @param stepCode 当前步骤编号
* @param stepName 当前步骤名称
* @param state 当前步骤状态
* @param nextStepCode 下一步编号
* @param nextStepName 下一步名称
* @param stepType 步骤类型,总览步骤、详细步骤
* @param paramObj 预案对象
*/
public
void
stepInfo
(
String
stepCode
,
String
stepName
,
String
state
,
String
nextStepCode
,
String
nextStepName
,
String
stepType
,
Object
paramObj
)
{
ContingencyRo
contingencyRo
=
(
ContingencyRo
)
paramObj
;
stopSnapshop
(
contingencyRo
);
BubbleTipResult
result
=
new
BubbleTipResult
();
Map
<
String
,
Object
>
tempmap1
=
new
HashMap
<>();
tempmap1
.
put
(
"stepCode"
,
stepCode
);
tempmap1
.
put
(
"stepName"
,
stepName
);
tempmap1
.
put
(
"state"
,
state
);
tempmap1
.
put
(
"nextStepCode"
,
nextStepCode
);
tempmap1
.
put
(
"nextStepName"
,
nextStepName
);
tempmap1
.
put
(
"batchNo"
,
contingencyRo
.
getBatchNo
());
tempmap1
.
put
(
"contingencyRo"
,
contingencyRo
);
result
.
add
(
tempmap1
);
this
.
sendcmd
(
"fromws"
,
"stepArea"
,
stepType
,
result
);
}
/**
* @param stepCode 当前步骤编号
* @param paramObj 预案对象
*/
public
void
saveStepInfo
(
String
stepCode
,
Object
paramObj
)
{
ContingencyRo
contingencyRo
=
(
ContingencyRo
)
paramObj
;
iContingencyInstance
.
updateStep
(
stepCode
,
contingencyRo
.
getBatchNo
());
}
/**
* @param content 消息内容
* @param paramObj 预案对象
*/
public
void
messageRecord
(
String
content
,
Object
paramObj
)
{
ContingencyRo
contingencyRo
=
(
ContingencyRo
)
paramObj
;
stopSnapshop
(
contingencyRo
);
//转换content中的变量
content
=
instedParams
(
content
,
contingencyRo
);
BubbleTipResult
result
=
new
BubbleTipResult
();
Map
<
String
,
Object
>
tempmap1
=
new
HashMap
<>();
tempmap1
.
put
(
"refresh"
,
"refresh"
);
tempmap1
.
put
(
"batchNo"
,
contingencyRo
.
getBatchNo
());
result
.
add
(
tempmap1
);
iContingencyInstance
.
createInstanceRecord
(
contingencyRo
.
getBatchNo
(),
""
,
"DEFAULT"
,
content
,
"MESSAGE"
,
""
);
this
.
sendcmd
(
"fromws"
,
"recordArea"
,
"refresh"
,
result
);
}
/**
* <pre>
* 智能辅助
* </pre>
*
* @param step 当前步骤
* @param icon 图标
* @param title 标题
* @param image 图片集合
* @param table 表格
* @param content 内容
* @param paramObj 预案对象
*/
public
void
help
(
String
step
,
String
icon
,
String
title
,
String
image
,
String
table
,
String
content
,
Object
paramObj
)
{
ContingencyRo
contingencyRo
=
(
ContingencyRo
)
paramObj
;
stopSnapshop
(
contingencyRo
);
//转换智能辅助中的变量
content
=
instedParams
(
content
,
contingencyRo
);
BubbleTipResult
result
=
new
BubbleTipResult
();
Map
<
String
,
Object
>
tempmap1
=
new
HashMap
<>();
tempmap1
.
put
(
"icon"
,
icon
);
tempmap1
.
put
(
"step"
,
step
);
tempmap1
.
put
(
"title"
,
title
);
tempmap1
.
put
(
"content"
,
content
);
tempmap1
.
put
(
"image"
,
image
);
tempmap1
.
put
(
"table"
,
table
);
tempmap1
.
put
(
"batchNo"
,
contingencyRo
.
getBatchNo
());
tempmap1
.
put
(
"contingencyRo"
,
contingencyRo
);
result
.
add
(
tempmap1
);
this
.
sendcmd
(
"fromws"
,
"helpArea"
,
""
,
result
);
}
private
String
instedParams
(
String
content
,
ContingencyRo
contingencyRo
)
{
Map
<
String
,
String
>
strengthMap
=
this
.
getStrengthMap
(
contingencyRo
.
getBatchNo
());
for
(
String
key
:
strengthMap
.
keySet
())
content
=
content
.
replaceAll
(
"\\$\\{"
+
key
+
"}"
,
strengthMap
.
get
(
key
));
/* for (String key : positionMap.keySet())
c ontent = content.replaceAll("\\$\\{" + key + "}", positionMap.get(key));
*/
Field
[]
fields
=
contingencyRo
.
getClass
().
getDeclaredFields
();
Method
getMethod
=
null
;
try
{
for
(
Field
field
:
fields
)
{
if
(
field
.
getName
().
equals
(
"serialVersionUID"
))
continue
;
String
fileNameInMethod
=
String
.
valueOf
(
field
.
getName
().
charAt
(
0
)).
toUpperCase
()
+
field
.
getName
().
substring
(
1
);
getMethod
=
contingencyRo
.
getClass
().
getMethod
(
"get"
+
fileNameInMethod
);
String
value
=
String
.
valueOf
(
getMethod
.
invoke
(
contingencyRo
));
content
=
content
.
replaceAll
(
"\\$\\{"
+
field
.
getName
()
+
"}"
,
value
);
}
content
=
content
.
replaceAll
(
"\\$\\{"
,
""
);
content
=
content
.
replaceAll
(
"}"
,
""
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
content
;
}
/**
* 交互动作
*
* @param actionName 动作名称
* @param icon 图标
* @param tips 提示信息
* @param buttonJson 按钮json字符串
* @param paramObj 预案对象
*/
public
void
operation
(
String
actionName
,
String
icon
,
String
tips
,
String
buttonJson
,
Object
paramObj
)
{
ContingencyRo
contingencyRo
=
(
ContingencyRo
)
paramObj
;
stopSnapshop
(
contingencyRo
);
//转换content中的变量
tips
=
instedParams
(
tips
,
contingencyRo
);
BubbleTipResult
result
=
new
BubbleTipResult
();
Map
<
String
,
Object
>
tempmap1
=
new
HashMap
<>();
String
contingencyPlanId
=
getContingencyPlanId
(
contingencyRo
.
getBatchNo
(),
actionName
,
icon
,
tips
,
buttonJson
);
tempmap1
.
put
(
"actionName"
,
actionName
);
tempmap1
.
put
(
"icon"
,
icon
);
tempmap1
.
put
(
"tips"
,
tips
);
tempmap1
.
put
(
"buttonJson"
,
buttonJson
);
tempmap1
.
put
(
"batchNo"
,
contingencyRo
.
getBatchNo
());
tempmap1
.
put
(
"contingencyRo"
,
contingencyRo
);
tempmap1
.
put
(
"contingencyPlanId"
,
contingencyPlanId
);
result
.
add
(
tempmap1
);
this
.
sendcmd
(
"fromws"
,
"optionArea"
,
""
,
result
);
sendButton
(
contingencyRo
.
getBatchNo
(),
contingencyPlanId
,
contingencyRo
.
getEquipmentId
(),
actionName
,
buttonJson
);
}
private
boolean
sendButton
(
String
batchNo
,
String
contingencyPlanId
,
String
equipmentId
,
String
actionName
,
String
buttonJson
)
{
// String url = bussunisDomain+ "/api/risksource/contingency/setup";
ObjectMapper
objectMapper
=
new
ObjectMapper
();
//Map<String,Object> map = new HashMap<>();
/**
* batchNo
* stepCode
* buttonCode
* confirm
* contingencyPlanId
* stepState
*/
try
{
Map
button
=
objectMapper
.
readValue
(
buttonJson
,
Map
.
class
);
Map
operateInstance
=
(
Map
)((
List
)
button
.
get
(
"operate"
)).
get
(
0
);
// map.put("batchNo",batchNo);
// map.put("actionName",actionName);
// map.put("equipmentId",equipmentId);
// map.put("stepCode",button.get("stepCode"));
// map.put("buttonCode",operateInstance.get("code"));
// map.put("confirm","CONFIRM");
// map.put("stepState",operateInstance.get("stepState"));
// map.put("contingencyPlanId",contingencyPlanId);
ContingencyDeviceStatus
contingencyDeviceStatus
=
new
ContingencyDeviceStatus
();
contingencyDeviceStatus
.
setActionName
(
actionName
);
contingencyDeviceStatus
.
setButtonCode
(
String
.
valueOf
(
operateInstance
.
get
(
"code"
)));
contingencyDeviceStatus
.
setConfirm
(
"CONFIRM"
);
contingencyDeviceStatus
.
setContingencyPlanId
(
contingencyPlanId
);
contingencyDeviceStatus
.
setEquipmentId
(
equipmentId
);
contingencyDeviceStatus
.
setStepCode
(
String
.
valueOf
(
button
.
get
(
"stepCode"
)));
contingencyDeviceStatus
.
setStepState
(
String
.
valueOf
(
operateInstance
.
get
(
"stepState"
)));
riskSourceService
.
queryContingencyDeviceStatus
(
contingencyDeviceStatus
);
//HttpEntity<Map> entity = new HttpEntity<>(map);
// restTemplate.exchange(url, HttpMethod.POST,entity,Map.class);
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
return
false
;
}
/**
* 保存交互动作
*
* @param actionName 动作名称
* @param icon 图标
* @param tips 提示信息
* @param buttonJson 按钮json字符串
* @param paramObj 预案对象
*/
public
void
saveOperation
(
String
actionName
,
String
icon
,
String
tips
,
String
buttonJson
,
Object
paramObj
)
{
ContingencyRo
contingencyRo
=
(
ContingencyRo
)
paramObj
;
stopSnapshop
(
contingencyRo
);
//转换content中的变量
tips
=
instedParams
(
tips
,
contingencyRo
);
BubbleTipResult
result1
=
new
BubbleTipResult
();
Map
<
String
,
Object
>
tempmap2
=
new
HashMap
<>();
tempmap2
.
put
(
"refresh"
,
"refresh"
);
tempmap2
.
put
(
"batchNo"
,
contingencyRo
.
getBatchNo
());
result1
.
add
(
tempmap2
);
String
contingencyPlanId
=
getContingencyPlanId
(
contingencyRo
.
getBatchNo
(),
actionName
,
icon
,
tips
,
buttonJson
);
this
.
sendcmd
(
"fromws"
,
"recordArea"
,
"refresh"
,
result1
);
}
private
String
getContingencyPlanId
(
String
batchNo
,
String
actionName
,
String
icon
,
String
tips
,
String
buttonJson
)
{
String
cacheKey
=
batchNo
+
actionName
;
String
contingencyPlanId
=
null
;
ContingencyPlanInstance
contingencyPlanInstance
=
null
;
if
(
OPERATE_RECORD_ID
.
get
(
cacheKey
)
==
null
)
{
contingencyPlanInstance
=
iContingencyInstance
.
createInstanceRecord
(
batchNo
,
actionName
,
"DEFAULT"
,
buttonJson
,
"OPERATE"
,
icon
);
contingencyPlanId
=
contingencyPlanInstance
.
getId
();
OPERATE_RECORD_ID
.
put
(
cacheKey
,
contingencyPlanId
);
}
else
{
contingencyPlanId
=
OPERATE_RECORD_ID
.
get
(
cacheKey
);
OPERATE_RECORD_ID
.
remove
(
cacheKey
);
}
return
contingencyPlanId
;
}
/**
* 地图动作推送
*
* @param actionName 动作名称标识
* @param paramObj 预案对象
*/
public
void
mapAction
(
String
actionName
,
Object
paramObj
)
{
ContingencyRo
contingencyRo
=
(
ContingencyRo
)
paramObj
;
stopSnapshop
(
contingencyRo
);
BubbleTipResult
result
=
new
BubbleTipResult
();
Map
<
String
,
Object
>
tempmap1
=
new
HashMap
<>();
tempmap1
.
put
(
"actionName"
,
actionName
);
tempmap1
.
put
(
"batchNo"
,
contingencyRo
.
getBatchNo
());
tempmap1
.
put
(
"contingencyRo"
,
contingencyRo
);
result
.
add
(
tempmap1
);
this
.
sendcmd
(
"fromws"
,
"mapArea"
,
actionName
,
result
);
}
/**
* 顶部消息提示
*
* @param content 消息内容
* @param messageType 消息类型 messageType 黑色框消息类型CONTINGENCY,,滚动消息:CURRENTMESSAGE
* @param paramObj 预案对象
*/
public
void
topMessage
(
String
content
,
String
messageType
,
Object
paramObj
)
{
ContingencyRo
contingencyRo
=
(
ContingencyRo
)
paramObj
;
stopSnapshop
(
contingencyRo
);
BubbleTipResult
result
=
new
BubbleTipResult
();
Map
<
String
,
Object
>
tempmap1
=
new
HashMap
<>();
//转换content中的变量
content
=
instedParams
(
content
,
contingencyRo
);
tempmap1
.
put
(
"content"
,
content
);
tempmap1
.
put
(
"messageType"
,
messageType
);
//消息类型 messageType 黑色框消息类型 CONTINGENCY,,滚动消息:CURRENTMESSAGE
tempmap1
.
put
(
"batchNo"
,
contingencyRo
.
getBatchNo
());
tempmap1
.
put
(
"contingencyRo"
,
contingencyRo
);
result
.
add
(
tempmap1
);
this
.
sendcmd
(
"fromws"
,
"topArea"
,
messageType
,
result
);
}
private
void
stopSnapshop
(
ContingencyRo
contingencyRo
)
{
if
(
RuleRunigSnapshotServiceImpl
.
getReplayBatchNo
()
!=
null
&&
!
RuleRunigSnapshotServiceImpl
.
getReplayBatchNo
().
equals
(
contingencyRo
.
getBatchNo
()))
RuleRunigSnapshotServiceImpl
.
setReplayBatchNoToNull
();
}
}
//
package com.yeejoin.amos.fas.business.action;
//
//
//
import java.io.IOException;
//
import java.lang.reflect.Constructor;
//
import java.lang.reflect.Field;
//
import java.lang.reflect.Method;
//
import java.text.SimpleDateFormat;
//
import java.util.Date;
//
import java.util.HashMap;
//
import java.util.List;
//
import java.util.Map;
//
//
import org.springframework.beans.factory.annotation.Autowired;
//
import org.springframework.stereotype.Component;
//
import org.springframework.util.CollectionUtils;
//
//
import com.fasterxml.jackson.databind.ObjectMapper;
//
import com.yeejoin.amos.fas.business.action.result.ActionResult;
//
import com.yeejoin.amos.fas.business.action.result.BubbleTipResult;
//
import com.yeejoin.amos.fas.business.action.result.message.ActionResultMessage;
//
import com.yeejoin.amos.fas.business.service.impl.RuleRunigSnapshotServiceImpl;
//
import com.yeejoin.amos.fas.business.service.intfc.FireStengthService;
//
import com.yeejoin.amos.fas.business.service.intfc.IContingencyInstance;
//
import com.yeejoin.amos.fas.business.service.intfc.IRiskSourceService;
//
import com.yeejoin.amos.fas.business.service.model.ContingencyDeviceStatus;
//
import com.yeejoin.amos.fas.business.service.model.ContingencyRo;
//
import com.yeejoin.amos.fas.business.util.StringUtil;
//
import com.yeejoin.amos.fas.dao.entity.ContingencyPlanInstance;
//
import com.yeejoin.amos.fas.dao.entity.FireStrength;
//
//
@Component
//
public class ContingencyAction implements CustomerAction {
//
//
//
private static String PACKAGEURL = "com.yeejoin.amos.fas.business.action.result.message.";
//
//
@Autowired
//
private IContingencyInstance iContingencyInstance;
//
//
@Autowired
//
private FireStengthService fireStrengthService;
//
//
// private RestTemplate restTemplate = new RestTemplate();
//
//
// @Value("${bussunis.domain}")
//
// private String bussunisDomain ;
//
//
@Autowired
//
private IRiskSourceService riskSourceService;
//
//
private static Map<String, String> OPERATE_RECORD_ID = new HashMap<>();
//
//
private static Map<String, Map<String,String>> stringStringMap = new HashMap<>();
//
static SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
//
//
//当值值班长(S1)、副值班长(S2)、值班员(A1,A2,A3)、白班值班员、保安人员、驻站消防队长(F1)
//
/* private static Map<String, String> positionMap = new HashMap<String, String>() {{
//
put("S1", "S1");
//
put("S2", "S2");
//
put("A1", "A1");
//
put("A2", "A2");
//
put("A3", "A3");
//
put("F1", "F1");
//
}};
//
*/
//
//
private Map<String, String> getStrengthMap(String batchNo) {
//
//
Map<String,String> returnMap = stringStringMap.get(batchNo);
//
if (CollectionUtils.isEmpty(returnMap)) {
//
stringStringMap = new HashMap<>();
//
returnMap = new HashMap<>();
//
//
//
//
Date now = new Date();
//
String time = sdf.format(now);
//
//
//
List<FireStrength> strengths = fireStrengthService.queryForStrengthList(time);
//
// List<FireStrength> strengths = iStrengthRepository.queryForStrengthList(time);
//
//
if (!CollectionUtils.isEmpty(strengths))
//
{
//
for (FireStrength fireStrength : strengths)
//
{
//
String name = returnMap.get(fireStrength.getPosition());
//
if (StringUtil.isNotEmpty(name))
//
{
//
returnMap.put(fireStrength.getPosition(), name + "、" + fireStrength.getUsername());
// }else
//
{
//
returnMap.put(fireStrength.getPosition(), fireStrength.getUsername());
//
}
//
}
//
}
//
stringStringMap.put(batchNo,returnMap);
//
}
//
return returnMap;
//
}
//
//
//
public static void sendcmd(String firstStr, String secondStr, String thirdStr, BubbleTipResult result) {
//
//
Constructor<?> constructor;
//
try {
//
constructor = Class.forName(
//
PACKAGEURL + result.getClass().getSimpleName() + "Message")
//
.getConstructor(ActionResult.class);
//
ActionResultMessage<?> action = (ActionResultMessage<?>) constructor.newInstance(result);
//
action.execute(firstStr, secondStr, thirdStr);
//
} catch (Exception e) {
//
e.printStackTrace();
//
}
//
}
//
//
//
/**
//
* @param stepCode 当前步骤编号
//
* @param stepName 当前步骤名称
//
* @param state 当前步骤状态
//
* @param nextStepCode 下一步编号
//
* @param nextStepName 下一步名称
//
* @param stepType 步骤类型,总览步骤、详细步骤
//
* @param paramObj 预案对象
//
*/
//
public void stepInfo(String stepCode, String stepName, String state, String nextStepCode, String nextStepName, String stepType, Object paramObj) {
//
ContingencyRo contingencyRo = (ContingencyRo) paramObj;
//
stopSnapshop(contingencyRo);
//
//
//
BubbleTipResult result = new BubbleTipResult();
//
Map<String, Object> tempmap1 = new HashMap<>();
//
//
tempmap1.put("stepCode", stepCode);
//
tempmap1.put("stepName", stepName);
//
tempmap1.put("state", state);
//
tempmap1.put("nextStepCode", nextStepCode);
//
tempmap1.put("nextStepName", nextStepName);
//
tempmap1.put("batchNo", contingencyRo.getBatchNo());
//
tempmap1.put("contingencyRo", contingencyRo);
//
result.add(tempmap1);
//
//
this.sendcmd("fromws", "stepArea", stepType, result);
//
}
//
//
/**
//
* @param stepCode 当前步骤编号
//
* @param paramObj 预案对象
//
*/
//
public void saveStepInfo(String stepCode, Object paramObj) {
//
ContingencyRo contingencyRo = (ContingencyRo) paramObj;
//
iContingencyInstance.updateStep(stepCode, contingencyRo.getBatchNo());
//
}
//
//
//
/**
//
* @param content 消息内容
//
* @param paramObj 预案对象
//
*/
//
public void messageRecord(String content, Object paramObj) {
//
ContingencyRo contingencyRo = (ContingencyRo) paramObj;
//
stopSnapshop(contingencyRo);
//
//转换content中的变量
//
content = instedParams(content,contingencyRo);
//
//
BubbleTipResult result = new BubbleTipResult();
//
Map<String, Object> tempmap1 = new HashMap<>();
//
//
tempmap1.put("refresh", "refresh");
//
tempmap1.put("batchNo", contingencyRo.getBatchNo());
//
result.add(tempmap1);
//
iContingencyInstance.createInstanceRecord(contingencyRo.getBatchNo(), "", "DEFAULT", content, "MESSAGE", "");
//
this.sendcmd("fromws", "recordArea", "refresh", result);
//
}
//
//
/**
//
* <pre>
//
* 智能辅助
//
* </pre>
//
*
//
* @param step 当前步骤
//
* @param icon 图标
//
* @param title 标题
//
* @param image 图片集合
//
* @param table 表格
//
* @param content 内容
//
* @param paramObj 预案对象
//
*/
//
public void help(String step, String icon, String title, String image, String table, String content, Object paramObj) {
//
ContingencyRo contingencyRo = (ContingencyRo) paramObj;
//
stopSnapshop(contingencyRo);
//
//
//
//转换智能辅助中的变量
//
content = instedParams(content,contingencyRo);
//
//
BubbleTipResult result = new BubbleTipResult();
//
Map<String, Object> tempmap1 = new HashMap<>();
//
//
tempmap1.put("icon", icon);
//
tempmap1.put("step", step);
//
tempmap1.put("title", title);
//
tempmap1.put("content", content);
//
tempmap1.put("image", image);
//
tempmap1.put("table", table);
//
tempmap1.put("batchNo", contingencyRo.getBatchNo());
//
tempmap1.put("contingencyRo", contingencyRo);
//
result.add(tempmap1);
//
//
this.sendcmd("fromws", "helpArea", "", result);
//
}
//
//
//
private String instedParams(String content, ContingencyRo contingencyRo) {
//
//
Map<String, String> strengthMap = this.getStrengthMap(contingencyRo.getBatchNo());
//
for (String key : strengthMap.keySet())
//
content = content.replaceAll("\\$\\{" + key + "}", strengthMap.get(key));
//
//
//
/* for (String key : positionMap.keySet())
//
c ontent = content.replaceAll("\\$\\{" + key + "}", positionMap.get(key));
//
*/
//
//
Field[] fields = contingencyRo.getClass().getDeclaredFields();
//
Method getMethod = null;
//
try {
//
for (Field field : fields) {
//
if(field.getName().equals("serialVersionUID"))
//
continue;
//
String fileNameInMethod = String.valueOf(field.getName().charAt(0)).toUpperCase() + field.getName().substring(1);
//
getMethod = contingencyRo.getClass().getMethod("get" + fileNameInMethod);
//
String value = String.valueOf(getMethod.invoke(contingencyRo));
//
content = content.replaceAll("\\$\\{" + field.getName() + "}", value);
//
}
//
//
content = content.replaceAll("\\$\\{", "");
//
content = content.replaceAll("}", "");
//
} catch (Exception e) {
//
e.printStackTrace();
//
}
//
return content;
//
}
//
//
//
/**
//
* 交互动作
//
*
//
* @param actionName 动作名称
//
* @param icon 图标
//
* @param tips 提示信息
//
* @param buttonJson 按钮json字符串
//
* @param paramObj 预案对象
//
*/
//
public void operation(String actionName, String icon, String tips, String buttonJson, Object paramObj) {
//
ContingencyRo contingencyRo = (ContingencyRo) paramObj;
//
stopSnapshop(contingencyRo);
//
//
//转换content中的变量
//
tips = instedParams(tips,contingencyRo);
//
//
//
BubbleTipResult result = new BubbleTipResult();
//
Map<String, Object> tempmap1 = new HashMap<>();
//
//
//
String contingencyPlanId = getContingencyPlanId(contingencyRo.getBatchNo(), actionName, icon, tips, buttonJson);
//
//
//
tempmap1.put("actionName", actionName);
//
tempmap1.put("icon", icon);
//
tempmap1.put("tips", tips);
//
tempmap1.put("buttonJson", buttonJson);
//
tempmap1.put("batchNo", contingencyRo.getBatchNo());
//
tempmap1.put("contingencyRo", contingencyRo);
//
tempmap1.put("contingencyPlanId", contingencyPlanId);
//
result.add(tempmap1);
//
//
//
this.sendcmd("fromws", "optionArea", "", result);
//
//
//
sendButton(contingencyRo.getBatchNo(),contingencyPlanId,contingencyRo.getEquipmentId(),actionName,buttonJson);
//
//
}
//
//
//
private boolean sendButton(String batchNo,String contingencyPlanId,String equipmentId,String actionName,String buttonJson) {
//
//
// String url = bussunisDomain+ "/api/risksource/contingency/setup";
//
//
ObjectMapper objectMapper = new ObjectMapper();
//
//Map<String,Object> map = new HashMap<>();
//
//
/**
//
* batchNo
//
* stepCode
//
* buttonCode
//
* confirm
//
* contingencyPlanId
//
* stepState
//
*/
//
//
try {
//
Map button = objectMapper.readValue(buttonJson,Map.class);
//
Map operateInstance = (Map)((List)button.get("operate")).get(0);
//
//
map.put("batchNo",batchNo);
//
//
map.put("actionName",actionName);
//
//
map.put("equipmentId",equipmentId);
//
//
map.put("stepCode",button.get("stepCode"));
//
//
map.put("buttonCode",operateInstance.get("code"));
//
//
map.put("confirm","CONFIRM");
//
//
map.put("stepState",operateInstance.get("stepState"));
//
//
map.put("contingencyPlanId",contingencyPlanId);
//
ContingencyDeviceStatus contingencyDeviceStatus = new ContingencyDeviceStatus();
//
contingencyDeviceStatus.setActionName(actionName);
//
contingencyDeviceStatus.setButtonCode(String.valueOf(operateInstance.get("code")));
//
contingencyDeviceStatus.setConfirm("CONFIRM");
//
contingencyDeviceStatus.setContingencyPlanId(contingencyPlanId);
//
contingencyDeviceStatus.setEquipmentId(equipmentId);
//
contingencyDeviceStatus.setStepCode(String.valueOf(button.get("stepCode")));
//
contingencyDeviceStatus.setStepState(String.valueOf(operateInstance.get("stepState")));
//
riskSourceService.queryContingencyDeviceStatus(contingencyDeviceStatus);
//
//HttpEntity<Map> entity = new HttpEntity<>(map);
//
// restTemplate.exchange(url, HttpMethod.POST,entity,Map.class);
//
//
} catch (IOException e) {
//
e.printStackTrace();
//
}
//
//
return false;
//
}
//
//
//
/**
//
* 保存交互动作
//
*
//
* @param actionName 动作名称
//
* @param icon 图标
//
* @param tips 提示信息
//
* @param buttonJson 按钮json字符串
//
* @param paramObj 预案对象
//
*/
//
public void saveOperation(String actionName, String icon, String tips, String buttonJson, Object paramObj) {
//
//
ContingencyRo contingencyRo = (ContingencyRo) paramObj;
//
stopSnapshop(contingencyRo);
//
//
//转换content中的变量
//
tips = instedParams(tips,contingencyRo);
//
//
BubbleTipResult result1 = new BubbleTipResult();
//
Map<String, Object> tempmap2 = new HashMap<>();
//
tempmap2.put("refresh", "refresh");
//
tempmap2.put("batchNo", contingencyRo.getBatchNo());
//
result1.add(tempmap2);
//
//
String contingencyPlanId = getContingencyPlanId(contingencyRo.getBatchNo(), actionName, icon, tips, buttonJson);
//
//
this.sendcmd("fromws", "recordArea", "refresh", result1);
//
//
}
//
//
private String getContingencyPlanId(String batchNo, String actionName, String icon, String tips, String buttonJson) {
//
String cacheKey = batchNo + actionName;
//
String contingencyPlanId = null;
//
ContingencyPlanInstance contingencyPlanInstance = null;
//
if (OPERATE_RECORD_ID.get(cacheKey) == null) {
//
contingencyPlanInstance = iContingencyInstance.createInstanceRecord(batchNo, actionName, "DEFAULT", buttonJson, "OPERATE", icon);
//
contingencyPlanId = contingencyPlanInstance.getId();
//
OPERATE_RECORD_ID.put(cacheKey, contingencyPlanId);
//
} else {
//
contingencyPlanId = OPERATE_RECORD_ID.get(cacheKey);
//
OPERATE_RECORD_ID.remove(cacheKey);
//
}
//
return contingencyPlanId;
//
}
//
//
//
/**
//
* 地图动作推送
//
*
//
* @param actionName 动作名称标识
//
* @param paramObj 预案对象
//
*/
//
public void mapAction(String actionName, Object paramObj) {
//
ContingencyRo contingencyRo = (ContingencyRo) paramObj;
//
stopSnapshop(contingencyRo);
//
//
//
BubbleTipResult result = new BubbleTipResult();
//
Map<String, Object> tempmap1 = new HashMap<>();
//
//
tempmap1.put("actionName", actionName);
//
tempmap1.put("batchNo", contingencyRo.getBatchNo());
//
tempmap1.put("contingencyRo", contingencyRo);
//
result.add(tempmap1);
//
//
this.sendcmd("fromws", "mapArea", actionName, result);
//
}
//
//
//
/**
//
* 顶部消息提示
//
*
//
* @param content 消息内容
//
* @param messageType 消息类型 messageType 黑色框消息类型CONTINGENCY,,滚动消息:CURRENTMESSAGE
//
* @param paramObj 预案对象
//
*/
//
public void topMessage(String content, String messageType, Object paramObj) {
//
ContingencyRo contingencyRo = (ContingencyRo) paramObj;
//
stopSnapshop(contingencyRo);
//
//
//
BubbleTipResult result = new BubbleTipResult();
//
Map<String, Object> tempmap1 = new HashMap<>();
//
//转换content中的变量
//
content = instedParams(content,contingencyRo);
//
//
tempmap1.put("content", content);
//
tempmap1.put("messageType", messageType);//消息类型 messageType 黑色框消息类型 CONTINGENCY,,滚动消息:CURRENTMESSAGE
//
tempmap1.put("batchNo", contingencyRo.getBatchNo());
//
tempmap1.put("contingencyRo", contingencyRo);
//
result.add(tempmap1);
//
//
this.sendcmd("fromws", "topArea", messageType, result);
//
}
//
//
//
private void stopSnapshop(ContingencyRo contingencyRo) {
//
if (RuleRunigSnapshotServiceImpl.getReplayBatchNo() != null && !RuleRunigSnapshotServiceImpl.getReplayBatchNo().equals(contingencyRo.getBatchNo()))
//
RuleRunigSnapshotServiceImpl.setReplayBatchNoToNull();
//
}
//
//
}
YeeAmosFireAutoSysService/src/main/java/com/yeejoin/amos/fas/business/controller/TimeLineController.java
View file @
76128b63
package
com
.
yeejoin
.
amos
.
fas
.
business
.
controller
;
import
com.yeejoin.amos.fas.business.service.impl.ContingencyInstanceImpl
;
import
com.yeejoin.amos.fas.business.service.intfc.IContingencyInstance
;
import
com.yeejoin.amos.fas.business.service.intfc.IContingencyOriginalDataService
;
import
com.yeejoin.amos.fas.core.common.request.CommonPageable
;
import
com.yeejoin.amos.fas.core.common.request.CommonRequest
;
import
com.yeejoin.amos.fas.core.util.CommonResponse
;
import
com.yeejoin.amos.fas.core.util.CommonResponseUtil
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiParam
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.scheduling.annotation.Scheduled
;
import
org.springframework.util.CollectionUtils
;
import
org.springframework.web.bind.annotation.*
;
import
javax.xml.bind.ValidationEvent
;
import
java.util.*
;
@RestController
@RequestMapping
(
value
=
"/api/timeline"
)
@Api
(
tags
=
"时间轴"
)
public
class
TimeLineController
extends
BaseController
{
private
static
final
Logger
log
=
LoggerFactory
.
getLogger
(
TimeLineController
.
class
);
@Autowired
IContingencyInstance
iContingencyInstance
;
@Autowired
IContingencyOriginalDataService
iContingencyOriginalDataService
;
static
LinkedList
<
Map
<
String
,
String
>>
fireQueue
=
new
LinkedList
<>();
//@Authorization(ingore = true)
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"根据批次号查询时间轴"
,
notes
=
"根据批次号查询时间轴"
)
@RequestMapping
(
value
=
"/{instanceNo}"
,
produces
=
"application/json;charset=UTF-8"
,
method
=
RequestMethod
.
GET
)
public
CommonResponse
queryPoint
(
@PathVariable
String
instanceNo
,
@RequestParam
(
"recordType"
)
String
recordType
)
throws
Exception
{
return
CommonResponseUtil
.
success
(
iContingencyInstance
.
queryForTimeLine
(
instanceNo
,
recordType
));
}
//@Authorization(ingore = true)
@ApiOperation
(
httpMethod
=
"PUT"
,
value
=
"点击按钮"
,
notes
=
"点击按钮"
)
@RequestMapping
(
value
=
"/fire"
,
produces
=
"application/json;charset=UTF-8"
,
method
=
RequestMethod
.
PUT
)
public
CommonResponse
fire
(
@RequestParam
(
"batchNo"
)
String
batchNo
,
@RequestParam
(
"stepCode"
)
String
stepCode
,
@RequestParam
(
"buttonCode"
)
String
buttonCode
,
@RequestParam
(
"confirm"
)
String
confirm
,
@RequestParam
(
"contingencyPlanId"
)
String
contingencyPlanId
,
@RequestParam
(
"stepState"
)
String
stepState
)
throws
Exception
{
Map
<
String
,
String
>
map
=
new
HashMap
<>();
map
.
put
(
"batchNo"
,
batchNo
);
map
.
put
(
"stepCode"
,
stepCode
);
map
.
put
(
"buttonCode"
,
buttonCode
);
map
.
put
(
"confirm"
,
confirm
);
map
.
put
(
"contingencyPlanId"
,
contingencyPlanId
);
map
.
put
(
"stepState"
,
stepState
);
fireQueue
.
addLast
(
map
);
return
CommonResponseUtil
.
success
(
"SUCCESS"
);
}
@Scheduled
(
cron
=
"*/2 * * * * ?"
)
private
void
runFireQueue
()
throws
Exception
{
if
(
fireQueue
.
size
()
==
0
)
return
;
Map
<
String
,
String
>
map
=
fireQueue
.
getFirst
();
String
batchNo
=
map
.
get
(
"batchNo"
);
String
stepCode
=
map
.
get
(
"stepCode"
);
String
buttonCode
=
map
.
get
(
"buttonCode"
);
String
confirm
=
map
.
get
(
"confirm"
);
String
contingencyPlanId
=
map
.
get
(
"contingencyPlanId"
);
String
stepState
=
map
.
get
(
"stepState"
);
try
{
log
.
info
(
"fireQueue-size:"
+
fireQueue
.
size
());
log
.
info
(
"stepCode:"
+
map
.
get
(
"stepCode"
));
log
.
info
(
"buttonCode:"
+
map
.
get
(
"buttonCode"
));
log
.
info
(
"confirm:"
+
map
.
get
(
"confirm"
));
log
.
info
(
"stepState:"
+
map
.
get
(
"stepState"
));
iContingencyInstance
.
setButtonExecuted
(
batchNo
,
contingencyPlanId
,
buttonCode
,
confirm
);
iContingencyInstance
.
fire
(
batchNo
,
stepCode
,
contingencyPlanId
,
buttonCode
,
confirm
,
stepState
);
}
catch
(
Exception
e
)
{
//iContingencyInstance.setButtonWait(batchNo,contingencyPlanId,confirm);
throw
e
;
}
finally
{
fireQueue
.
removeFirst
();
}
}
// @Authorization(ingore = true)
@ApiOperation
(
httpMethod
=
"POST"
,
value
=
"查询预案记录"
,
notes
=
"查询预案记录"
)
@RequestMapping
(
value
=
"/contingency/page"
,
produces
=
"application/json;charset=UTF-8"
,
method
=
RequestMethod
.
POST
)
public
CommonResponse
contingencyRecord
(
@ApiParam
(
value
=
"查询条件"
,
required
=
false
)
@RequestBody
(
required
=
false
)
List
<
CommonRequest
>
queryRequests
,
@ApiParam
(
value
=
"分页参数"
,
required
=
true
)
CommonPageable
commonPageable
)
{
//CommonPageable commonPageable = new CommonPageable(pageNumber,pageSize);
String
contingencyName
=
null
;
String
equipmentId
=
null
;
String
createTime
=
null
;
if
(!
CollectionUtils
.
isEmpty
(
queryRequests
))
{
for
(
CommonRequest
request:
queryRequests
)
{
if
(
"contingencyName"
.
equals
(
request
.
getName
()))
{
contingencyName
=
String
.
valueOf
(
request
.
getValue
());
}
if
(
"equipmentId"
.
equals
(
request
.
getName
()))
{
equipmentId
=
String
.
valueOf
(
request
.
getValue
());
}
if
(
"createTime"
.
equals
(
request
.
getName
()))
{
createTime
=
String
.
valueOf
(
request
.
getValue
());
}
}
}
return
CommonResponseUtil
.
success
(
iContingencyOriginalDataService
.
queryForPage
(
contingencyName
,
equipmentId
,
createTime
,
commonPageable
));
}
String
operate
=
"{"
+
" \"type\": \"button\","
+
" \"operate\": ["
+
" {"
+
" \"title\": \"确认着火\","
+
" \"paramName\": \"batchNo\","
+
" \"paramValue\": \"11\","
+
" \"requestUrl\": \"url\","
+
" \"icon\": \"querenzhuohuo\","
+
" \"confirm\": true,"
+
" \"state\": \"executed\""
+
" },"
+
" {"
+
" \"title\": \"消除误报\","
+
" \"paramName\": \"batchNo\","
+
" \"paramValue\": \"11\","
+
" \"requestUrl\": \"url\","
+
" \"icon\": \"xiaochuwubao\","
+
" \"confirm\": true,"
+
" \"state\": \"wait\""
+
" }"
+
" ]"
+
"}"
;
}
//package com.yeejoin.amos.fas.business.controller;
//
//
//import com.yeejoin.amos.fas.business.service.intfc.IContingencyInstance;
//import com.yeejoin.amos.fas.business.service.intfc.IContingencyOriginalDataService;
//import com.yeejoin.amos.fas.core.common.request.CommonPageable;
//import com.yeejoin.amos.fas.core.common.request.CommonRequest;
//import com.yeejoin.amos.fas.core.util.CommonResponse;
//import com.yeejoin.amos.fas.core.util.CommonResponseUtil;
//import io.swagger.annotations.Api;
//import io.swagger.annotations.ApiOperation;
//import io.swagger.annotations.ApiParam;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.scheduling.annotation.Scheduled;
//import org.springframework.util.CollectionUtils;
//import org.springframework.web.bind.annotation.*;
//
//import java.util.HashMap;
//import java.util.LinkedList;
//import java.util.List;
//import java.util.Map;
//
//@RestController
//@RequestMapping(value = "/api/timeline")
//@Api(tags="时间轴")
//public class TimeLineController extends BaseController{
//
// private static final Logger log = LoggerFactory.getLogger(TimeLineController.class);
//
// @Autowired
// IContingencyOriginalDataService iContingencyOriginalDataService;
//
// static LinkedList<Map<String,String >> fireQueue = new LinkedList<>();
//
//
// //@Authorization(ingore = true)
// @ApiOperation(httpMethod = "GET",value = "根据批次号查询时间轴", notes = "根据批次号查询时间轴")
// @RequestMapping(value = "/{instanceNo}", produces = "application/json;charset=UTF-8", method = RequestMethod.GET)
// public CommonResponse queryPoint(@PathVariable String instanceNo,@RequestParam("recordType") String recordType) throws Exception{
// return CommonResponseUtil.success();
//// return CommonResponseUtil.success(iContingencyInstance.queryForTimeLine(instanceNo,recordType));
// }
//
//
// //@Authorization(ingore = true)
// @ApiOperation(httpMethod = "PUT",value = "点击按钮", notes = "点击按钮")
// @RequestMapping(value = "/fire", produces = "application/json;charset=UTF-8", method = RequestMethod.PUT)
// public CommonResponse fire(@RequestParam("batchNo") String batchNo,
// @RequestParam("stepCode") String stepCode,
// @RequestParam("buttonCode") String buttonCode,
// @RequestParam("confirm") String confirm,
// @RequestParam("contingencyPlanId") String contingencyPlanId,
// @RequestParam("stepState") String stepState) throws Exception{
//
//
// Map<String,String> map = new HashMap<>();
// map.put("batchNo",batchNo);
// map.put("stepCode",stepCode);
// map.put("buttonCode",buttonCode);
// map.put("confirm",confirm);
// map.put("contingencyPlanId",contingencyPlanId);
// map.put("stepState",stepState);
// fireQueue.addLast(map);
//
// return CommonResponseUtil.success("SUCCESS");
// }
//
//
// @Scheduled(cron = "*/2 * * * * ?")
// private void runFireQueue() throws Exception
// {
//
// if(fireQueue.size() == 0)
// return;
//
// Map<String,String> map = fireQueue.getFirst();
//
// String batchNo = map.get("batchNo");
// String stepCode = map.get("stepCode");
// String buttonCode = map.get("buttonCode");
// String confirm = map.get("confirm");
// String contingencyPlanId = map.get("contingencyPlanId");
// String stepState = map.get("stepState");
// try
// {
// log.info("fireQueue-size:"+fireQueue.size());
// log.info("stepCode:" + map.get("stepCode"));
// log.info("buttonCode:" + map.get("buttonCode"));
// log.info("confirm:" + map.get("confirm"));
// log.info("stepState:" + map.get("stepState"));
//
//// iContingencyInstance.setButtonExecuted(batchNo,contingencyPlanId,buttonCode,confirm);
//// iContingencyInstance.fire(batchNo,stepCode,contingencyPlanId,buttonCode,confirm,stepState);
// }catch (Exception e)
// {
// //iContingencyInstance.setButtonWait(batchNo,contingencyPlanId,confirm);
// throw e;
// }finally {
// fireQueue.removeFirst();
// }
// }
//
//
//
//
//
//
//
//
//
// // @Authorization(ingore = true)
// @ApiOperation(httpMethod = "POST",value = "查询预案记录", notes = "查询预案记录")
// @RequestMapping(value = "/contingency/page", produces = "application/json;charset=UTF-8", method = RequestMethod.POST)
// public CommonResponse contingencyRecord(
// @ApiParam(value = "查询条件", required = false) @RequestBody(required = false) List<CommonRequest> queryRequests,
// @ApiParam(value = "分页参数", required = true) CommonPageable commonPageable
// ) {
// //CommonPageable commonPageable = new CommonPageable(pageNumber,pageSize);
//
// String contingencyName = null;
// String equipmentId = null;
// String createTime = null;
// if(!CollectionUtils.isEmpty(queryRequests))
// {
// for(CommonRequest request:queryRequests)
// {
// if("contingencyName".equals(request.getName()))
// {
// contingencyName = String.valueOf(request.getValue());
// }
// if("equipmentId".equals(request.getName()))
// {
// equipmentId = String.valueOf(request.getValue());
// }
// if("createTime".equals(request.getName()))
// {
// createTime = String.valueOf(request.getValue());
// }
// }
// }
//
// return CommonResponseUtil.success(iContingencyOriginalDataService.queryForPage(contingencyName,equipmentId,createTime,commonPageable));
// }
//
//
//
//
//
//
//
//
//
//
//
// String operate = "{" +
// " \"type\": \"button\"," +
// " \"operate\": [" +
// " {" +
// " \"title\": \"确认着火\"," +
// " \"paramName\": \"batchNo\"," +
// " \"paramValue\": \"11\"," +
// " \"requestUrl\": \"url\"," +
// " \"icon\": \"querenzhuohuo\"," +
// " \"confirm\": true," +
// " \"state\": \"executed\"" +
// " }," +
// " {" +
// " \"title\": \"消除误报\"," +
// " \"paramName\": \"batchNo\"," +
// " \"paramValue\": \"11\"," +
// " \"requestUrl\": \"url\"," +
// " \"icon\": \"xiaochuwubao\"," +
// " \"confirm\": true," +
// " \"state\": \"wait\"" +
// " }" +
// " ]" +
// "}";
//
//}
YeeAmosFireAutoSysService/src/main/java/com/yeejoin/amos/fas/business/service/impl/ContingencyInstanceImpl.java
View file @
76128b63
package
com
.
yeejoin
.
amos
.
fas
.
business
.
service
.
impl
;
import
com.yeejoin.amos.component.rule.RuleTrigger
;
import
com.yeejoin.amos.fas.business.action.ContingencyAction
;
import
com.yeejoin.amos.fas.business.action.result.BubbleTipResult
;
import
com.yeejoin.amos.fas.business.dao.mapper.ImpAndFireEquipMapper
;
import
com.yeejoin.amos.fas.business.dao.repository.IContingencyOriginalDataDao
;
import
com.yeejoin.amos.fas.business.dao.repository.IContingencyPlanInstanceRepository
;
import
com.yeejoin.amos.fas.business.feign.RemoteRuleServer
;
import
com.yeejoin.amos.fas.business.service.intfc.IContingencyInstance
;
import
com.yeejoin.amos.fas.business.service.model.ContingencyRo
;
import
com.yeejoin.amos.fas.business.service.model.Operate
;
import
com.yeejoin.amos.fas.business.service.model.OperateGroup
;
import
com.yeejoin.amos.fas.dao.entity.ContingencyOriginalData
;
import
com.yeejoin.amos.fas.dao.entity.ContingencyPlanInstance
;
import
com.yeejoin.amos.fas.dao.entity.Equipment
;
import
org.codehaus.jackson.map.ObjectMapper
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.http.HttpEntity
;
import
org.springframework.http.HttpMethod
;
import
org.springframework.scheduling.annotation.Async
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.CollectionUtils
;
import
org.springframework.web.client.RestTemplate
;
import
org.typroject.tyboot.component.cache.Redis
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Optional
;
@Service
public
class
ContingencyInstanceImpl
/*extends GenericManagerImpl<ContingencyPlanInstance, String>*/
implements
IContingencyInstance
{
private
static
final
Logger
log
=
LoggerFactory
.
getLogger
(
ContingencyInstanceImpl
.
class
);
@Autowired
private
IContingencyPlanInstanceRepository
repository
;
@Autowired
IContingencyOriginalDataDao
iContingencyOriginalDataDao
;
@Autowired
private
RemoteRuleServer
remoteRuleServer
;
@Autowired
private
RestTemplate
restTemplate
;
@Autowired
private
ImpAndFireEquipMapper
impAndFireEquipMapper
;
@Autowired
private
RedisTemplate
redisTemplate
;
@Value
(
"${params.remoteRuleUrl}"
)
private
String
remoteRuleUrl
;
private
static
Map
<
String
,
String
>
stepMap
=
new
HashMap
<>();
@Autowired
private
RuleTrigger
ruleTrigger
;
/* public ContingencyInstanceImpl(IContingencyPlanInstanceRepository repository) {
super(repository);
this.repository = repository;
}*/
/**
* 创建预案执行记录
*
* @param category 一级分类
* @param subCategory 二级分类
* @param content 信息内容
* @param recordType 信息分类
* @param icon 信息显示图标
*/
public
ContingencyPlanInstance
createInstanceRecord
(
String
instanceNo
,
String
category
,
String
subCategory
,
String
content
,
String
recordType
,
String
icon
)
{
ContingencyPlanInstance
planInstance
=
new
ContingencyPlanInstance
();
planInstance
.
setContent
(
content
);
planInstance
.
setIcon
(
icon
);
planInstance
.
setRecordType
(
recordType
);
planInstance
.
setCategory
(
category
);
planInstance
.
setBatchNo
(
instanceNo
);
//计算序号
int
count
=
repository
.
countByBatchNo
(
instanceNo
);
planInstance
.
setSort
(++
count
);
return
this
.
repository
.
save
(
planInstance
);
}
/**
* 查询时间轴
*
* @param instanceNo
* @return
* @throws Exception
*/
public
List
<
ContingencyPlanInstance
>
queryForTimeLine
(
String
instanceNo
,
String
recordType
)
throws
Exception
{
List
<
ContingencyPlanInstance
>
categorys
=
repository
.
queryForCategory
(
instanceNo
,
recordType
);
return
categorys
;
}
public
void
fire
(
String
batchNo
,
String
stepCode
,
String
contingencyPlanId
,
String
buttonCode
,
String
buttonState
,
String
stepStateOnbutton
)
throws
Exception
{
//火灾误报
ContingencyOriginalData
contingencyOriginalData
=
iContingencyOriginalDataDao
.
findByBatchNo
(
batchNo
);
if
(
"FIRE_CANCEL"
.
equals
(
buttonCode
)
||
"END_EMERGENCY"
.
equals
(
buttonCode
)){
redisTemplate
.
delete
(
RiskSourceServiceImpl
.
cacheKeyForCanBeRunning
());
}
else
{
redisTemplate
.
opsForValue
().
setIfAbsent
(
RiskSourceServiceImpl
.
cacheKeyForCanBeRunning
(),
"CONTINGENCYRUNING"
);
}
String
stepKey
=
batchNo
+
"_"
+
stepCode
;
if
(
stepMap
.
get
(
stepKey
)
==
null
)
stepMap
.
put
(
stepKey
,
""
);
if
(
contingencyOriginalData
!=
null
)
{
log
.
info
(
"数据库中的stepcode:"
+
contingencyOriginalData
.
getStep
());
contingencyOriginalData
.
setConfirm
(
buttonState
);
contingencyOriginalData
.
setRunstep
(
false
);
if
(
contingencyOriginalData
.
getStepState
()
==
null
)
contingencyOriginalData
.
setStepState
(
""
);
if
(
"CONFIRM"
.
equals
(
buttonState
)
&&
!
contingencyOriginalData
.
getStepState
().
contains
(
stepStateOnbutton
)
&&
stepCode
.
equals
(
contingencyOriginalData
.
getStep
()))
contingencyOriginalData
.
setStepState
(
contingencyOriginalData
.
getStepState
()
+
stepStateOnbutton
);
//请求中的步骤小于以保存的步骤
if
(
Integer
.
parseInt
(
stepCode
)
<
Integer
.
parseInt
(
contingencyOriginalData
.
getStep
()))
{
contingencyOriginalData
.
setRunstep
(
true
);
}
if
(
Integer
.
parseInt
(
stepCode
)
>
Integer
.
parseInt
(
contingencyOriginalData
.
getStep
()))
{
//contingencyOriginalData.setStep(stepCode);
contingencyOriginalData
.
setStepState
(
stepStateOnbutton
);
}
iContingencyOriginalDataDao
.
updateByButton
(
contingencyOriginalData
.
getConfirm
(),
contingencyOriginalData
.
getRunstep
(),
contingencyOriginalData
.
getStepState
(),
contingencyOriginalData
.
getBatchNo
());
//setButtonExecuted(batchNo,contingencyPlanId, buttonCode,buttonState);
//使用原始数据触发规则
if
(
"CONFIRM"
.
equals
(
buttonState
)
&&
!
stepMap
.
get
(
stepKey
).
contains
(
stepStateOnbutton
))
stepMap
.
put
(
stepKey
,
stepMap
.
get
(
stepKey
)
+
stepStateOnbutton
);
ContingencyRo
contingencyRo
=
new
ContingencyRo
();
contingencyRo
.
setButtonCode
(
buttonCode
);
contingencyRo
.
setButtonState
(
buttonState
);
BeanUtils
.
copyProperties
(
contingencyOriginalData
,
contingencyRo
);
contingencyRo
.
setStep
(
stepCode
);
contingencyRo
.
setStepState
(
stepMap
.
get
(
stepKey
));
log
.
info
(
"stepstate:"
+
contingencyRo
.
getStepState
());
Equipment
equipment
=
impAndFireEquipMapper
.
queryImpEqumtByFireEquipmt
(
Long
.
parseLong
(
contingencyRo
.
getFireEquipmentId
()));
//Object result = remoteRuleServer.fireRuleFlow(contingencyRo, equipment.getReservePlan(),equipment.getName());
ruleTrigger
.
publish
(
contingencyRo
,
equipment
.
getReservePlan
());
BubbleTipResult
result1
=
new
BubbleTipResult
();
Map
<
String
,
Object
>
tempmap2
=
new
HashMap
<>();
tempmap2
.
put
(
"refresh"
,
"refresh"
);
tempmap2
.
put
(
"batchNo"
,
batchNo
);
ContingencyAction
.
sendcmd
(
"fromws"
,
"recordArea"
,
"refresh"
,
result1
);
// String url = remoteRuleUrl + "/urule/rule/refreshTimeline?batchNo=" + batchNo;
//restTemplate.exchange(url, HttpMethod.GET, HttpEntity.EMPTY, Object.class);
}
else
{
throw
new
Exception
(
"数据异常,请联系管理员."
);
}
}
public
void
setButtonExecuted
(
String
batchNo
,
String
contingencyPlanId
,
String
code
,
String
buttonState
)
throws
Exception
{
ObjectMapper
objectMapper
=
new
ObjectMapper
();
Optional
<
ContingencyPlanInstance
>
contingencyPlanInstance1
=
repository
.
findById
(
contingencyPlanId
);
ContingencyPlanInstance
contingencyPlanInstance
=
contingencyPlanInstance1
.
get
();
if
(
contingencyPlanInstance1
.
isPresent
()){
if
(
contingencyPlanInstance
!=
null
&&
"OPERATE"
.
equals
(
contingencyPlanInstance
.
getRecordType
()))
{
String
operateJson
=
contingencyPlanInstance
.
getContent
();
OperateGroup
operateGroup
=
objectMapper
.
readValue
(
operateJson
,
OperateGroup
.
class
);
List
<
Operate
>
operates
=
operateGroup
.
getOperate
();
if
(!
CollectionUtils
.
isEmpty
(
operates
))
{
for
(
Operate
operate
:
operates
)
{
if
(
code
.
equals
(
operate
.
getCode
())
&&
(
"executed"
.
equals
(
operate
.
getState
())
||
"disable"
.
equals
(
operate
.
getState
()))){
if
(
"FIRE_CANCEL"
.
equals
(
code
)
||
"END_EMERGENCY"
.
equals
(
code
)){
redisTemplate
.
delete
(
RiskSourceServiceImpl
.
cacheKeyForCanBeRunning
());
}
throw
new
Exception
(
"请勿重复操作."
);
}
if
(
"CONFIRM"
.
equals
(
buttonState
))
{
if
(
code
.
equals
(
operate
.
getCode
()))
{
operate
.
setState
(
"executed"
);
if
(
"FIRE_CANCEL"
.
equals
(
code
)
||
"END_EMERGENCY"
.
equals
(
code
))
redisTemplate
.
delete
(
RiskSourceServiceImpl
.
cacheKeyForCanBeRunning
());
}
else
{
operate
.
setState
(
"disable"
);
}
}
}
}
if
(
buttonState
.
equals
(
"CONFIRM"
))
contingencyPlanInstance
.
setRunstate
(
true
);
operateJson
=
objectMapper
.
writeValueAsString
(
operateGroup
);
contingencyPlanInstance
.
setContent
(
operateJson
);
repository
.
save
(
contingencyPlanInstance
);
}
}
}
public
void
setButtonWait
(
String
batchNo
,
String
contingencyPlanId
,
String
buttonState
)
throws
Exception
{
ObjectMapper
objectMapper
=
new
ObjectMapper
();
Optional
<
ContingencyPlanInstance
>
contingencyPlanInstance1
=
repository
.
findById
(
contingencyPlanId
);
ContingencyPlanInstance
contingencyPlanInstance
=
null
;
if
(
contingencyPlanInstance1
.
isPresent
()){
contingencyPlanInstance
=
contingencyPlanInstance1
.
get
();
}
if
(
contingencyPlanInstance
!=
null
&&
"OPERATE"
.
equals
(
contingencyPlanInstance
.
getRecordType
()))
{
String
operateJson
=
contingencyPlanInstance
.
getContent
();
OperateGroup
operateGroup
=
objectMapper
.
readValue
(
operateJson
,
OperateGroup
.
class
);
List
<
Operate
>
operates
=
operateGroup
.
getOperate
();
if
(!
CollectionUtils
.
isEmpty
(
operates
))
{
for
(
Operate
operate
:
operates
)
{
if
(
"CONFIRM"
.
equals
(
buttonState
))
{
operate
.
setState
(
"executed"
);
}
}
}
if
(
buttonState
.
equals
(
"CONFIRM"
))
contingencyPlanInstance
.
setRunstate
(
true
);
operateJson
=
objectMapper
.
writeValueAsString
(
operateGroup
);
contingencyPlanInstance
.
setContent
(
operateJson
);
repository
.
save
(
contingencyPlanInstance
);
}
}
@Override
public
void
updateStep
(
String
step
,
String
batchNo
)
{
// TODO Auto-generated method stub
}
}
//
package com.yeejoin.amos.fas.business.service.impl;
//
//
//
import com.yeejoin.amos.fas.business.action.ContingencyAction;
//
import com.yeejoin.amos.fas.business.action.result.BubbleTipResult;
//
import com.yeejoin.amos.fas.business.dao.mapper.ImpAndFireEquipMapper;
//
import com.yeejoin.amos.fas.business.dao.repository.IContingencyOriginalDataDao;
//
import com.yeejoin.amos.fas.business.dao.repository.IContingencyPlanInstanceRepository;
//
import com.yeejoin.amos.fas.business.feign.RemoteRuleServer;
//
import com.yeejoin.amos.fas.business.service.intfc.IContingencyInstance;
//
import com.yeejoin.amos.fas.business.service.model.ContingencyRo;
//
import com.yeejoin.amos.fas.business.service.model.Operate;
//
import com.yeejoin.amos.fas.business.service.model.OperateGroup;
//
import com.yeejoin.amos.fas.dao.entity.ContingencyOriginalData;
//
import com.yeejoin.amos.fas.dao.entity.ContingencyPlanInstance;
//
import com.yeejoin.amos.fas.dao.entity.Equipment;
//
//
import org.codehaus.jackson.map.ObjectMapper;
//
import org.slf4j.Logger;
//
import org.slf4j.LoggerFactory;
//
import org.springframework.beans.BeanUtils;
//
import org.springframework.beans.factory.annotation.Autowired;
//
import org.springframework.beans.factory.annotation.Value;
//
import org.springframework.data.redis.core.RedisTemplate;
//
import org.springframework.http.HttpEntity;
//
import org.springframework.http.HttpMethod;
//
import org.springframework.scheduling.annotation.Async;
//
import org.springframework.stereotype.Service;
//
import org.springframework.util.CollectionUtils;
//
import org.springframework.web.client.RestTemplate;
//
import org.typroject.tyboot.component.cache.Redis;
//
//
import java.util.HashMap;
//
import java.util.List;
//
import java.util.Map;
//
import java.util.Optional;
//
//
@Service
//public class ContingencyInstanceImpl
{
//
//
private static final Logger log = LoggerFactory.getLogger(ContingencyInstanceImpl.class);
////
////
@Autowired
////
private IContingencyPlanInstanceRepository repository;
////
////
////
@Autowired
////
IContingencyOriginalDataDao iContingencyOriginalDataDao;
////
////
////
@Autowired
////
private RemoteRuleServer remoteRuleServer;
////
////
@Autowired
////
private RestTemplate restTemplate;
////
////
@Autowired
////
private ImpAndFireEquipMapper impAndFireEquipMapper;
////
////
@Autowired
////
private RedisTemplate redisTemplate;
////
////
////
@Value("${params.remoteRuleUrl}")
////
private String remoteRuleUrl;
////
////
////
private static Map<String, String> stepMap = new HashMap<>();
////
////
@Autowired
////
private RuleTrigger ruleTrigger;
////
////
/* public ContingencyInstanceImpl(IContingencyPlanInstanceRepository repository) {
////
super(repository);
////
this.repository = repository;
////
}*/
////
////
////
/**
////
* 创建预案执行记录
////
*
////
* @param category 一级分类
////
* @param subCategory 二级分类
////
* @param content 信息内容
////
* @param recordType 信息分类
////
* @param icon 信息显示图标
////
*/
////
public ContingencyPlanInstance createInstanceRecord(String instanceNo, String category, String subCategory, String content, String recordType, String icon) {
////
ContingencyPlanInstance planInstance = new ContingencyPlanInstance();
////
////
planInstance.setContent(content);
////
planInstance.setIcon(icon);
////
planInstance.setRecordType(recordType);
////
planInstance.setCategory(category);
////
planInstance.setBatchNo(instanceNo);
////
////
//计算序号
////
int count = repository.countByBatchNo(instanceNo);
////
planInstance.setSort(++count);
////
return this.repository.save(planInstance);
////
}
////
////
////
/**
////
* 查询时间轴
////
*
////
* @param instanceNo
////
* @return
////
* @throws Exception
////
*/
////
public List<ContingencyPlanInstance> queryForTimeLine(String instanceNo, String recordType) throws Exception {
////
List<ContingencyPlanInstance> categorys = repository.queryForCategory(instanceNo, recordType);
////
return categorys;
////
}
////
////
////
public void fire(String batchNo, String stepCode, String contingencyPlanId, String buttonCode, String buttonState, String stepStateOnbutton) throws Exception {
////
//火灾误报
////
////
ContingencyOriginalData contingencyOriginalData = iContingencyOriginalDataDao.findByBatchNo(batchNo);
////
if("FIRE_CANCEL".equals(buttonCode) || "END_EMERGENCY".equals(buttonCode)){
////
redisTemplate.delete(RiskSourceServiceImpl.cacheKeyForCanBeRunning());
////
}else{
////
redisTemplate.opsForValue().setIfAbsent(RiskSourceServiceImpl.cacheKeyForCanBeRunning(),"CONTINGENCYRUNING");
////
}
////
String stepKey = batchNo + "_" + stepCode;
////
if (stepMap.get(stepKey) == null)
////
stepMap.put(stepKey, "");
////
if (contingencyOriginalData != null) {
////
log.info("数据库中的stepcode:" + contingencyOriginalData.getStep());
////
contingencyOriginalData.setConfirm(buttonState);
////
contingencyOriginalData.setRunstep(false);
////
if (contingencyOriginalData.getStepState() == null)
////
contingencyOriginalData.setStepState("");
////
////
if ("CONFIRM".equals(buttonState)
////
&& !contingencyOriginalData.getStepState().contains(stepStateOnbutton)
////
&& stepCode.equals(contingencyOriginalData.getStep()))
////
contingencyOriginalData.setStepState(contingencyOriginalData.getStepState() + stepStateOnbutton);
////
////
////
//请求中的步骤小于以保存的步骤
////
if (Integer.parseInt(stepCode) < Integer.parseInt(contingencyOriginalData.getStep())) {
////
contingencyOriginalData.setRunstep(true);
////
}
////
////
////
if (Integer.parseInt(stepCode) > Integer.parseInt(contingencyOriginalData.getStep())) {
////
//contingencyOriginalData.setStep(stepCode);
////
contingencyOriginalData.setStepState(stepStateOnbutton);
////
}
////
////
////
iContingencyOriginalDataDao.updateByButton(
////
contingencyOriginalData.getConfirm(),
////
contingencyOriginalData.getRunstep(),
////
contingencyOriginalData.getStepState(),
////
contingencyOriginalData.getBatchNo());
////
//setButtonExecuted(batchNo,contingencyPlanId, buttonCode,buttonState);
////
////
//使用原始数据触发规则
////
////
////
if ("CONFIRM".equals(buttonState)
////
&& !stepMap.get(stepKey).contains(stepStateOnbutton))
////
stepMap.put(stepKey, stepMap.get(stepKey) + stepStateOnbutton);
////
////
ContingencyRo contingencyRo = new ContingencyRo();
////
contingencyRo.setButtonCode(buttonCode);
////
contingencyRo.setButtonState(buttonState);
////
BeanUtils.copyProperties(contingencyOriginalData, contingencyRo);
////
contingencyRo.setStep(stepCode);
////
contingencyRo.setStepState(stepMap.get(stepKey));
////
log.info("stepstate:" + contingencyRo.getStepState());
////
////
////
Equipment equipment = impAndFireEquipMapper.queryImpEqumtByFireEquipmt(Long.parseLong(contingencyRo.getFireEquipmentId()));
////
//Object result = remoteRuleServer.fireRuleFlow(contingencyRo, equipment.getReservePlan(),equipment.getName());
////
ruleTrigger.publish(contingencyRo, equipment.getReservePlan());
////
////
BubbleTipResult result1 = new BubbleTipResult();
////
Map<String, Object> tempmap2 = new HashMap<>();
////
tempmap2.put("refresh","refresh");
////
tempmap2.put("batchNo",batchNo);
////
ContingencyAction.sendcmd("fromws","recordArea","refresh",result1);
////
// String url = remoteRuleUrl + "/urule/rule/refreshTimeline?batchNo=" + batchNo;
////
//restTemplate.exchange(url, HttpMethod.GET, HttpEntity.EMPTY, Object.class);
////
} else {
////
throw new Exception("数据异常,请联系管理员.");
////
}
////
}
////
////
////
public void setButtonExecuted(String batchNo, String contingencyPlanId, String code, String buttonState) throws Exception {
////
ObjectMapper objectMapper = new ObjectMapper();
////
Optional<ContingencyPlanInstance> contingencyPlanInstance1 = repository.findById(contingencyPlanId);
////
////
ContingencyPlanInstance contingencyPlanInstance=contingencyPlanInstance1.get();
////
////
if(contingencyPlanInstance1.isPresent()){
////
if (contingencyPlanInstance != null && "OPERATE".equals(contingencyPlanInstance.getRecordType())) {
////
String operateJson = contingencyPlanInstance.getContent();
////
OperateGroup operateGroup = objectMapper.readValue(operateJson, OperateGroup.class);
////
////
List<Operate> operates = operateGroup.getOperate();
////
if (!CollectionUtils.isEmpty(operates)) {
////
for (Operate operate : operates) {
////
////
if (code.equals(operate.getCode()) && ("executed".equals(operate.getState()) || "disable".equals(operate.getState()))){
////
if("FIRE_CANCEL".equals(code) || "END_EMERGENCY".equals(code)){
////
redisTemplate.delete(RiskSourceServiceImpl.cacheKeyForCanBeRunning());
////
}
////
throw new Exception("请勿重复操作.");
////
}
////
////
////
if ("CONFIRM".equals(buttonState)) {
////
if (code.equals(operate.getCode())) {
////
operate.setState("executed");
////
if("FIRE_CANCEL".equals(code) || "END_EMERGENCY".equals(code))
////
redisTemplate.delete(RiskSourceServiceImpl.cacheKeyForCanBeRunning());
////
} else {
////
operate.setState("disable");
////
}
////
}
////
}
////
}
////
////
////
if (buttonState.equals("CONFIRM"))
////
contingencyPlanInstance.setRunstate(true);
////
operateJson = objectMapper.writeValueAsString(operateGroup);
////
contingencyPlanInstance.setContent(operateJson);
////
repository.save(contingencyPlanInstance);
////
}
////
}
////
////
}
////
////
public void setButtonWait(String batchNo, String contingencyPlanId, String buttonState) throws Exception {
////
ObjectMapper objectMapper = new ObjectMapper();
////
Optional<ContingencyPlanInstance> contingencyPlanInstance1 = repository.findById(contingencyPlanId);
////
ContingencyPlanInstance contingencyPlanInstance=null;
////
if(contingencyPlanInstance1.isPresent()){
////
contingencyPlanInstance=contingencyPlanInstance1.get();
////
}
////
////
if (contingencyPlanInstance != null && "OPERATE".equals(contingencyPlanInstance.getRecordType())) {
////
String operateJson = contingencyPlanInstance.getContent();
////
OperateGroup operateGroup = objectMapper.readValue(operateJson, OperateGroup.class);
////
////
List<Operate> operates = operateGroup.getOperate();
////
if (!CollectionUtils.isEmpty(operates)) {
////
for (Operate operate : operates) {
////
////
if ("CONFIRM".equals(buttonState)) {
////
operate.setState("executed");
////
}
////
}
////
}
////
////
////
if (buttonState.equals("CONFIRM"))
////
contingencyPlanInstance.setRunstate(true);
////
operateJson = objectMapper.writeValueAsString(operateGroup);
////
contingencyPlanInstance.setContent(operateJson);
////
repository.save(contingencyPlanInstance);
////
}
////
}
////
////
////
@Override
////
public void updateStep(String step, String batchNo) {
////
// TODO Auto-generated method stub
////
////
}
//
}
YeeAmosFireAutoSysService/src/main/java/com/yeejoin/amos/fas/business/service/impl/RiskSourceServiceImpl.java
View file @
76128b63
package
com
.
yeejoin
.
amos
.
fas
.
business
.
service
.
impl
;
import
java.math.BigDecimal
;
import
java.text.SimpleDateFormat
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.HashSet
;
import
java.util.LinkedHashSet
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Optional
;
import
java.util.Set
;
import
java.util.UUID
;
import
java.util.concurrent.BlockingQueue
;
import
java.util.concurrent.ExecutorService
;
import
java.util.concurrent.Executors
;
import
java.util.concurrent.LinkedBlockingQueue
;
import
java.util.concurrent.TimeUnit
;
import
java.util.stream.Collectors
;
import
javax.annotation.PostConstruct
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.domain.Page
;
import
org.springframework.data.domain.PageImpl
;
import
org.springframework.data.redis.core.HashOperations
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.scheduling.annotation.Async
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.util.CollectionUtils
;
import
org.springframework.util.ObjectUtils
;
import
org.typroject.tyboot.component.cache.Redis
;
import
org.typroject.tyboot.component.cache.enumeration.CacheType
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONArray
;
import
com.google.common.base.Joiner
;
import
com.google.common.collect.Lists
;
import
com.google.common.collect.Maps
;
import
com.google.common.collect.Sets
;
import
com.yeejoin.amos.component.rule.RuleTrigger
;
import
com.yeejoin.amos.component.rule.action.ActionHandler
;
import
com.yeejoin.amos.fas.business.bo.BindRegionBo
;
import
com.yeejoin.amos.fas.business.bo.JpushMsgBo
;
import
com.yeejoin.amos.fas.business.bo.JpushMsgContentBo
;
import
com.yeejoin.amos.fas.business.bo.MsgParamBo
;
import
com.yeejoin.amos.fas.business.bo.RpnCalculationBo
;
import
com.yeejoin.amos.fas.business.bo.*
;
import
com.yeejoin.amos.fas.business.constants.FasConstant
;
import
com.yeejoin.amos.fas.business.dao.mapper.FireEquipMapper
;
import
com.yeejoin.amos.fas.business.dao.mapper.FireEquipPointMapper
;
import
com.yeejoin.amos.fas.business.dao.mapper.FmeaEquipmentPointMapper
;
import
com.yeejoin.amos.fas.business.dao.mapper.FmeaMapper
;
import
com.yeejoin.amos.fas.business.dao.mapper.FmeaPointInputitemMapper
;
import
com.yeejoin.amos.fas.business.dao.mapper.ImpAndFireEquipMapper
;
import
com.yeejoin.amos.fas.business.dao.mapper.RiskSourceMapper
;
import
com.yeejoin.amos.fas.business.dao.mapper.*
;
import
com.yeejoin.amos.fas.business.dao.mongo.EquipCommunicationDao
;
import
com.yeejoin.amos.fas.business.dao.repository.IAlarmDao
;
import
com.yeejoin.amos.fas.business.dao.repository.IContingencyOriginalDataDao
;
import
com.yeejoin.amos.fas.business.dao.repository.IDictDao
;
import
com.yeejoin.amos.fas.business.dao.repository.IEvaluationModelDao
;
import
com.yeejoin.amos.fas.business.dao.repository.IFireEquipmentDao
;
import
com.yeejoin.amos.fas.business.dao.repository.IFireEquipmentDataDao
;
import
com.yeejoin.amos.fas.business.dao.repository.IFireEquipmentPointDao
;
import
com.yeejoin.amos.fas.business.dao.repository.IPreplanPictureDao
;
import
com.yeejoin.amos.fas.business.dao.repository.IRiskFactorDao
;
import
com.yeejoin.amos.fas.business.dao.repository.IRiskLevelDao
;
import
com.yeejoin.amos.fas.business.dao.repository.IRiskSourceDao
;
import
com.yeejoin.amos.fas.business.dao.repository.IRpnChangeLogDao
;
import
com.yeejoin.amos.fas.business.dao.repository.*
;
import
com.yeejoin.amos.fas.business.feign.RemoteRuleServer
;
import
com.yeejoin.amos.fas.business.feign.RemoteSecurityService
;
import
com.yeejoin.amos.fas.business.feign.RemoteWebSocketServer
;
...
...
@@ -85,41 +25,44 @@ import com.yeejoin.amos.fas.business.service.intfc.IContingencyInstance;
import
com.yeejoin.amos.fas.business.service.intfc.IDataRefreshService
;
import
com.yeejoin.amos.fas.business.service.intfc.IEquipmentService
;
import
com.yeejoin.amos.fas.business.service.intfc.IRiskSourceService
;
import
com.yeejoin.amos.fas.business.service.model.CheckInputItemRo
;
import
com.yeejoin.amos.fas.business.service.model.ContingencyDeviceStatus
;
import
com.yeejoin.amos.fas.business.service.model.ContingencyRo
;
import
com.yeejoin.amos.fas.business.service.model.FireEquimentDataRo
;
import
com.yeejoin.amos.fas.business.service.model.ProtalDataRo
;
import
com.yeejoin.amos.fas.business.service.model.RiskSourceRuleRo
;
import
com.yeejoin.amos.fas.business.service.model.*
;
import
com.yeejoin.amos.fas.business.util.DateUtils
;
import
com.yeejoin.amos.fas.business.util.JexlUtil
;
import
com.yeejoin.amos.fas.business.util.RpnUtils
;
import
com.yeejoin.amos.fas.business.vo.EquipCommunicationData
;
import
com.yeejoin.amos.fas.client.invoke.RsDataQueue
;
import
com.yeejoin.amos.fas.common.enums.DataRefreshTypeEum
;
import
com.yeejoin.amos.fas.common.enums.View3dRefreshAreaEum
;
import
com.yeejoin.amos.fas.core.common.request.CommonPageable
;
import
com.yeejoin.amos.fas.core.common.response.RegionTreeResponse
;
import
com.yeejoin.amos.fas.core.common.response.RiskSourceTreeResponse
;
import
com.yeejoin.amos.fas.core.util.StringUtil
;
import
com.yeejoin.amos.fas.dao.entity.Alarm
;
import
com.yeejoin.amos.fas.dao.entity.ContingencyOriginalData
;
import
com.yeejoin.amos.fas.dao.entity.Dict
;
import
com.yeejoin.amos.fas.dao.entity.Equipment
;
import
com.yeejoin.amos.fas.dao.entity.EvaluationModel
;
import
com.yeejoin.amos.fas.dao.entity.FireEquipment
;
import
com.yeejoin.amos.fas.dao.entity.FireEquipmentData
;
import
com.yeejoin.amos.fas.dao.entity.FireEquipmentPoint
;
import
com.yeejoin.amos.fas.dao.entity.Fmea
;
import
com.yeejoin.amos.fas.dao.entity.FmeaEquipmentPoint
;
import
com.yeejoin.amos.fas.dao.entity.FmeaPointInputitem
;
import
com.yeejoin.amos.fas.dao.entity.PreplanPicture
;
import
com.yeejoin.amos.fas.dao.entity.RiskFactor
;
import
com.yeejoin.amos.fas.dao.entity.RiskLevel
;
import
com.yeejoin.amos.fas.dao.entity.RiskSource
;
import
com.yeejoin.amos.fas.dao.entity.RpnChangeLog
;
import
com.yeejoin.amos.fas.dao.entity.*
;
import
com.yeejoin.amos.fas.exception.YeeException
;
import
com.yeejoin.amos.feign.privilege.model.AgencyUserModel
;
import
com.yeejoin.amos.feign.privilege.model.DepartmentModel
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.domain.Page
;
import
org.springframework.data.domain.PageImpl
;
import
org.springframework.data.redis.core.HashOperations
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.scheduling.annotation.Async
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.util.CollectionUtils
;
import
org.springframework.util.ObjectUtils
;
import
org.typroject.tyboot.component.cache.Redis
;
import
org.typroject.tyboot.component.cache.enumeration.CacheType
;
import
javax.annotation.PostConstruct
;
import
java.math.BigDecimal
;
import
java.text.SimpleDateFormat
;
import
java.util.*
;
import
java.util.concurrent.*
;
import
java.util.stream.Collectors
;
@Service
(
"riskSourceService"
)
public
class
RiskSourceServiceImpl
implements
IRiskSourceService
{
...
...
@@ -207,9 +150,6 @@ public class RiskSourceServiceImpl implements IRiskSourceService {
private
RedisTemplate
redisTemplate
;
@Autowired
IContingencyInstance
iContingencyInstance
;
@Autowired
private
FmeaEquipmentPointMapper
fmeaEquipmentPointMapper
;
@Autowired
...
...
@@ -227,9 +167,6 @@ public class RiskSourceServiceImpl implements IRiskSourceService {
@Autowired
private
IDataRefreshService
iDataRefreshService
;
@Autowired
private
RuleTrigger
ruleTrigger
;
@Override
public
RiskSource
editRiskSource
(
HashMap
<
String
,
Object
>
map
)
throws
Exception
{
...
...
@@ -549,7 +486,7 @@ public class RiskSourceServiceImpl implements IRiskSourceService {
}
//Object result = remoteRuleServer.fireRuleFlow(contingencyRo, equipment.getReservePlan(), equipment.getName());
ruleTrigger
.
publish
(
contingencyRo
,
equipment
.
getReservePlan
());
//
ruleTrigger.publish(contingencyRo, equipment.getReservePlan());
ContingencyOriginalData
contingencyOriginalData
=
new
ContingencyOriginalData
();
BeanUtils
.
copyProperties
(
contingencyRo
,
contingencyOriginalData
);
iContingencyOriginalDataDao
.
save
(
contingencyOriginalData
);
...
...
@@ -791,7 +728,7 @@ public class RiskSourceServiceImpl implements IRiskSourceService {
* @param fireEquipmentPointType
*/
@Async
private
void
dynamicPlan
(
AlarmParam
deviceData
,
Equipment
equipment
,
FireEquipment
fireEquipment
,
String
fireEquipmentPointType
){
void
dynamicPlan
(
AlarmParam
deviceData
,
Equipment
equipment
,
FireEquipment
fireEquipment
,
String
fireEquipmentPointType
){
String
batchNo
=
null
;
Object
batch
=
null
;
Dict
dict
=
null
;
...
...
@@ -904,6 +841,7 @@ public class RiskSourceServiceImpl implements IRiskSourceService {
fireEquipmentData
.
setFireEquipmentPointId
(
fireEquipmentPoint
.
getId
());
fireEquipmentData
.
setFireEquipmentId
(
fireEquipmentPoint
.
getFireEquipmentId
());
fireEquipmentData
.
setType
(
"monitor"
);
fireEquipmentData
.
setOrgCode
(
fireEquipment
.
getOrgCode
());
iFireEquipmentDataDao
.
save
(
fireEquipmentData
);
Map
<
String
,
Object
>
content
=
new
HashMap
<>();
content
.
put
(
"id"
,
fireEquipmentData
.
getId
());
...
...
@@ -911,7 +849,7 @@ public class RiskSourceServiceImpl implements IRiskSourceService {
content
.
put
(
"changeDate"
,
fireEquipmentData
.
getCreateDate
());
content
.
put
(
"orgCode"
,
fireEquipment
.
getOrgCode
());
content
.
put
(
"status"
,
deviceData
.
getSoe
());
iDataRefreshService
.
sendRefreshDataWithArea
(
DataRefreshTypeEum
.
monitor
.
getCode
(),
content
);
iDataRefreshService
.
sendRefreshDataWithArea
(
View3dRefreshAreaEum
.
monitor_data
.
getCode
(),
content
);
}
}
List
<
AlarmParam
>
list
=
new
ArrayList
<>();
...
...
@@ -1080,8 +1018,8 @@ public class RiskSourceServiceImpl implements IRiskSourceService {
if
(
pointCount
>
0
&&
pointCount
==
count
)
{
try
{
String
batchNo
=
(
String
)
redisTemplate
.
opsForHash
().
get
(
"currentContingency"
,
"batchNo"
);
iContingencyInstance
.
setButtonExecuted
(
batchNo
,
contingencyDeviceStatus
.
getContingencyPlanId
(),
contingencyDeviceStatus
.
getButtonCode
(),
contingencyDeviceStatus
.
getConfirm
());
iContingencyInstance
.
fire
(
batchNo
,
contingencyDeviceStatus
.
getStepCode
(),
contingencyDeviceStatus
.
getContingencyPlanId
(),
contingencyDeviceStatus
.
getButtonCode
(),
contingencyDeviceStatus
.
getConfirm
(),
contingencyDeviceStatus
.
getStepState
());
//
iContingencyInstance.setButtonExecuted(batchNo, contingencyDeviceStatus.getContingencyPlanId(), contingencyDeviceStatus.getButtonCode(), contingencyDeviceStatus.getConfirm());
//
iContingencyInstance.fire(batchNo, contingencyDeviceStatus.getStepCode(), contingencyDeviceStatus.getContingencyPlanId(), contingencyDeviceStatus.getButtonCode(), contingencyDeviceStatus.getConfirm(), contingencyDeviceStatus.getStepState());
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
...
...
YeeAmosFireAutoSysService/src/main/java/com/yeejoin/amos/fas/business/service/impl/View3dServiceImpl.java
View file @
76128b63
...
...
@@ -491,23 +491,6 @@ public class View3dServiceImpl implements IView3dService {
return
view3dMapper
.
getCheckErrorTop5
(
orgCode
);
case
"fire"
:
return
view3dMapper
.
getFireAlarmTop5
(
orgCode
);
// return JSON.parseArray(" [\r\n" +
// " {\r\n" +
// " \"id\": 35781,\r\n" +
// " \"code\": \"s001\",\r\n" +
// " \"label\": \"设备test\",\r\n" +
// " \"pointId\": \"1\",\r\n" +
// " \"type\": \"check\",\r\n" +
// " \"changeDate\": \"2020-04-23 14:31:31\"\r\n" +
// " },\r\n" +
// " {\r\n" +
// " \"id\": 35780,\r\n" +
// " \"code\": \"s002\",\r\n" +
// " \"label\": \"设备002\",\r\n" +
// " \"pointId\": \"23123\",\r\n" +
// " \"type\": \"check\",\r\n" +
// " \"changeDate\": \"2020-04-23 14:31:27\"\r\n" +
// " }]", SafetyExecuteBo.class);
default
:
throw
new
YeeException
(
"不支持的类型 -->"
+
type
);
}
...
...
@@ -525,8 +508,6 @@ public class View3dServiceImpl implements IView3dService {
@Override
public
List
<
SafetyExecuteBo
>
getEquipStatusList
(
String
orgCode
)
{
return
view3dMapper
.
getEquipStatusTop5
(
orgCode
);
// return JSON.parseArray("[{\"id\":1,\"label\":\"设备1 label\",\"changeDate\":\"2020-04-26 10:00:00\"}"
// + ",{\"id\":2,\"label\":\"设备2 label\",\"changeDate\":\"2020-04-25 10:00:00\"}]");
}
@Override
...
...
YeeAmosFireAutoSysService/src/main/java/com/yeejoin/amos/fas/business/service/intfc/IContingencyInstance.java
View file @
76128b63
package
com
.
yeejoin
.
amos
.
fas
.
business
.
service
.
intfc
;
import
com.yeejoin.amos.fas.dao.entity.ContingencyPlanInstance
;
import
java.util.List
;
import
java.util.Map
;
public
interface
IContingencyInstance
{
ContingencyPlanInstance
createInstanceRecord
(
String
instanceNo
,
String
category
,
String
subCategory
,
String
content
,
String
recordType
,
String
icon
);
List
<
ContingencyPlanInstance
>
queryForTimeLine
(
String
instanceNo
,
String
recordType
)
throws
Exception
;
void
setButtonExecuted
(
String
batchNo
,
String
contingencyPlanId
,
String
code
,
String
buttonState
)
throws
Exception
;
void
setButtonWait
(
String
batchNo
,
String
contingencyPlanId
,
String
buttonState
)
throws
Exception
;
void
fire
(
String
batchNo
,
String
stepCode
,
String
contingencyPlanId
,
String
buttonCode
,
String
buttonState
,
String
stepStateOnbutton
)
throws
Exception
;
void
updateStep
(
String
step
,
String
batchNo
);
//
//
ContingencyPlanInstance createInstanceRecord(String instanceNo, String category, String subCategory, String content, String recordType, String icon);
//
//
//
//
List<ContingencyPlanInstance> queryForTimeLine(String instanceNo,String recordType) throws Exception;
//
//
//
void setButtonExecuted(String batchNo,String contingencyPlanId,String code,String buttonState) throws Exception;
//
void setButtonWait(String batchNo,String contingencyPlanId,String buttonState) throws Exception;
//
//
//
void fire(String batchNo,String stepCode, String contingencyPlanId, String buttonCode,String buttonState,String stepStateOnbutton) throws Exception;
//
//
void updateStep(String step, String batchNo);
}
YeeAmosFireAutoSysStart/src/main/resources/db/mapper/dbTemplate_view3d.xml
View file @
76128b63
...
...
@@ -451,34 +451,41 @@
<select
id=
"getAllErrorRiskPoint"
resultType=
"com.yeejoin.amos.fas.business.bo.RiskPointRpnChangeBo"
>
SELECT
b.id,
a.`name`,
a.risk_level_id as riskLevelId,
b.create_date as changeDate
FROM
f_risk_source a,
f_rpn_change_log
b
WHERE
b.risk_source_id = a.id
AND b.type = '0'
b.id,
a.`name`,
a.risk_level_id as riskLevelId,
b.create_date as changeDate
FROM
f_risk_source a,
(SELECT a.id,a.type,a.risk_source_id,max(a.create_date) as create_date FROM `f_rpn_change_log` a GROUP BY a.risk_source_id) as
b
WHERE
b.risk_source_id = a.id
AND b.type = '0'
and a.org_code = #{orgCode}
and DATE_FORMAT(b.create_date,'%Y-%m-%d') = #{date}
</select>
<select
id=
"getAllErrorPatrolPoint"
resultType=
"com.yeejoin.amos.fas.business.bo.CheckErrorBo"
>
SELECT
a
.id,
pc
.id,
b.`name`,
a
.`is_ok` as status,
a
.check_time as changeDate
pc
.`is_ok` as status,
pc
.check_time as changeDate
FROM
p_check a,
(select
a.id,
a.point_id,
a.`is_ok`,
max(a.check_time) as check_time
FROM
p_check a
where DATE_FORMAT(a.check_time,'%Y-%m-%d') = #{date}
and a.`is_ok` IN ('2', '3')
GROUP BY a.point_id) as pc,
p_point b
WHERE
a.`is_ok` IN ('2', '3')
AND a.point_id = b.id
pc.point_id = b.id
and b.is_delete = false
and DATE_FORMAT(a.check_time,'%Y-%m-%d') = #{date}
and a.org_code = #{orgCode}
and b.org_code = #{orgCode}
</select>
<select
id=
"getAllFaultAlarm"
resultType=
"com.yeejoin.amos.fas.business.bo.CheckErrorBo"
>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment