Commit 6d13cee1 authored by 单奇雲's avatar 单奇雲

Merge branch 'dev_upgrade' of http://172.16.10.76/station/YeeAmosFireAutoSysRoot into dev_upgrade

parents 4477efa1 baf46507
package com.yeejoin.amos.fas.dao.entity;
import java.util.Date;
import com.yeejoin.amos.fas.core.common.request.DateUtil;
/**
*
* <pre>
* RO基础信息
* </pre>
*
* @author amos
* @version $Id: BasicsRo.java, v 0.1 2019年5月22日 上午10:44:22 amos Exp $
*/
public class MessageRo extends BusinessEntity
{
//TODO 添加批次号字段
/**
* 批次号,标记规则执行批次
*/
private String batchNo;
/**
* 所要执行的规则包id
*/
private String packageId;
/**
* <pre>
*
* </pre>
*/
private static final long serialVersionUID = -2678718393223476996L;
/**
* id
*/
private String id;
/**
* 当前时间
*/
private Date dateTime = DateUtil.getNow();
/**
* 当前时间
*/
private String currTime;
public String getId()
{
return id;
}
public void setId(String id)
{
this.id = id;
}
public Date getDateTime()
{
if (dateTime == null)
{
return DateUtil.getNow();
}
return dateTime;
}
public void setDateTime(Date dateTime)
{
this.dateTime = dateTime;
}
public String getCurrTime()
{
if (currTime == null)
{
return DateUtil.getDateTimeFormat(dateTime);
}
return currTime;
}
public void setCurrTime(String currTime)
{
this.currTime = currTime;
}
public String getBatchNo() {
return batchNo;
}
public void setBatchNo(String batchNo) {
this.batchNo = batchNo;
}
public String getPackageId() {
return packageId;
}
public void setPackageId(String packageId) {
this.packageId = packageId;
}
}
\ No newline at end of file
//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();
}
}
......@@ -14,10 +14,11 @@ import com.yeejoin.amos.fas.business.action.result.ActionResult;
import com.yeejoin.amos.fas.business.action.result.TipResult;
import com.yeejoin.amos.fas.business.action.result.message.ActionResultMessage;
import com.yeejoin.amos.fas.business.action.util.DataItemUtil;
import com.yeejoin.amos.fas.business.service.model.BasicsRo;
import com.yeejoin.amos.fas.business.service.intfc.IMessageService;
import com.yeejoin.amos.fas.business.service.model.ToipResponse;
import com.yeejoin.amos.fas.dao.entity.BusinessEntity;
import com.yeejoin.amos.fas.dao.entity.Message;
import com.yeejoin.amos.fas.dao.entity.MessageRo;
/**
*
* <pre>
......@@ -30,71 +31,73 @@ import com.yeejoin.amos.fas.dao.entity.Message;
@Component
public class SimpleTipAction implements CustomerAction
{
private static String PACKAGEURL = "com.yeejoin.amos.rule.map.action.result.message.";
// @Autowired
// private IMessageService messageService;
private static String PACKAGEURL = "com.yeejoin.amos.fas.business.action.result.message.";
@Autowired
private IMessageService messageService;
//@ExposeAction("消息提示")
// public void sendMessageTip(Object bizobj, String title, String content,String type)
// {
//
// try
// {
//
// ELEvaluationContext.setVariable("bizobj",bizobj);
// TipResult result = new TipResult();
// result.add(bizobj);
// Map<String, Object> tempmap1 = new HashMap<>();
// tempmap1.put("title", title);
// result.add(tempmap1);
// Map<String, Object> tempmap2 = new HashMap<>();
// content =DataItemUtil.getNative(content);
// tempmap2.put("content", content);
// result.add(tempmap2);
//
//
// Constructor<?> constructor;
//
// constructor = Class.forName(
// PACKAGEURL + result.getClass().getSimpleName() + "Message")
// .getConstructor(ActionResult.class);
// ActionResultMessage<?> action = (ActionResultMessage<?>) constructor.newInstance(result);
// String firstStr = "fromws";
// String secondStr = "global";
// String thirdStr = "msg";
// result.setBizObj((BusinessEntity)bizobj);
// Object obj = action.execute(firstStr, secondStr, thirdStr);
// result.setToipResponse((ToipResponse) obj);
// saveMessageAction(result,type);
// }
// catch (Exception e)
// {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
// }
public void sendMessageTip(Object bizobj, String title, String content,String type)
{
try
{
ELEvaluationContext.setVariable("bizobj",bizobj);
TipResult result = new TipResult();
result.add(bizobj);
Map<String, Object> tempmap1 = new HashMap<>();
tempmap1.put("title", title);
result.add(tempmap1);
Map<String, Object> tempmap2 = new HashMap<>();
content =DataItemUtil.getNative(content);
tempmap2.put("content", content);
result.add(tempmap2);
Constructor<?> constructor;
constructor = Class.forName(
PACKAGEURL + result.getClass().getSimpleName() + "Message")
.getConstructor(ActionResult.class);
ActionResultMessage<?> action = (ActionResultMessage<?>) constructor.newInstance(result);
String firstStr = "fromws";
String secondStr = "global";
String thirdStr = "msg";
result.setBizObj((BusinessEntity)bizobj);
Object obj = action.execute(firstStr, secondStr, thirdStr);
result.setToipResponse((ToipResponse) obj);
saveMessageAction(result,type);
}
catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// @SuppressWarnings("unchecked")
// private void saveMessageAction(AbstractActionResult abstractActionResult,String type)
// {
// Message message = new Message();
// List<Map<String, Object>> list = (List<Map<String, Object>>) abstractActionResult.getData();
// for(Map<String, Object> map : list) {
// for(String str: map.keySet()) {
// if(str.equals("content")) {
// message.setContent(map.get("content").toString());
// }else
// if (str.equals("title"))
// {
// message.setTitle(map.get("title").toString());
// }
// }
// BasicsRo basicsRo = (BasicsRo)abstractActionResult.getToipResponse().getBizObj();
// message.setTime(basicsRo.getDateTime());
// message.setBizId(basicsRo.getId());
// message.setBizclassName(abstractActionResult.getToipResponse().getBizObj().getClass().toString());
// message.setType(type);
// messageService.save(message);
// }
// }
@SuppressWarnings("unchecked")
private void saveMessageAction(AbstractActionResult abstractActionResult,String type)
{
Message message = new Message();
List<Map<String, Object>> list = (List<Map<String, Object>>) abstractActionResult.getData();
for(Map<String, Object> map : list) {
for(String str: map.keySet()) {
if(str.equals("content")) {
message.setContent(map.get("content").toString());
}else
if (str.equals("title"))
{
message.setTitle(map.get("title").toString());
}
}
MessageRo messageRo = (MessageRo)abstractActionResult.getToipResponse().getBizObj();
message.setTime(messageRo.getCreateDate());
//目前获取不到id
message.setBizId(messageRo.getId());
message.setBizclassName(abstractActionResult.getToipResponse().getBizObj().getClass().toString());
message.setType(type);
messageService.save(message);
}
}
}
//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\"" +
// " }" +
// " ]" +
// "}";
//
//}
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\"" +
" }" +
" ]" +
"}";
}
......@@ -25,6 +25,12 @@ public interface IContingencyOriginalDataDao extends BaseDao<ContingencyOrigina
@Modifying(clearAutomatically = true)
@Query(value = "update contingency_original_data c set c.confirm = ?1,c.runstep=?2 ,c.step_state=?3 where c.batch_No = ?4",nativeQuery = true)
int updateByButton(String confirm,Boolean runstep,String stepState,String batchNo);
@Transactional
@Modifying(clearAutomatically = true)
@Query(value = "update contingency_original_data c set c.step = ?1 where c.batch_No = ?2",nativeQuery = true)
int updateByButtonStep(String step,String batchNo);
}
package com.yeejoin.amos.fas.business.dao.repository;
import com.yeejoin.amos.fas.dao.entity.ContingencyOriginalData;
public interface IMessageDao extends BaseDao<ContingencyOriginalData, String> {
}
//<<<<<<< HEAD
////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
//////
////// }
////}
//=======
//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.apache.commons.lang3.ArrayUtils;
//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());
// equipment.setName("极Ⅰ高端YY换流变A相");
// ruleTrigger.publish(contingencyRo, equipment.getReservePlan(), ArrayUtils.toArray(equipment.getName()));
//
// 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
//
// }
//}
//>>>>>>> 28409f79427e917f31bc936696f98f961a5dd24d
package com.yeejoin.amos.fas.business.service.impl;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import org.apache.commons.lang3.ArrayUtils;
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.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.web.client.RestTemplate;
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;
@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(), ArrayUtils.toArray(equipment.getName()));
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) {
iContingencyOriginalDataDao.updateByButtonStep(step,batchNo);
}
}
package com.yeejoin.amos.fas.business.service.impl;
import java.util.List;
import org.springframework.stereotype.Service;
import com.yeejoin.amos.fas.business.service.intfc.IMessageService;
import com.yeejoin.amos.fas.dao.entity.Message;
@Service
public class MessageServiceImpl implements IMessageService {
//MessageMapper messageMapper;
@Override
public List<Message> findMessageByBizId(String bizId) {
return null;
// TODO Auto-generated method stub
// messageRepository.findMessageByBizId(bizId);
}
@Override
public void save(Message msg) {
// TODO Auto-generated method stub
}
}
......@@ -7,6 +7,7 @@ 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.fas.business.bo.*;
import com.yeejoin.amos.fas.business.constants.FasConstant;
import com.yeejoin.amos.fas.business.dao.mapper.*;
......@@ -40,6 +41,8 @@ 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.apache.commons.lang3.ArrayUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
......@@ -147,6 +150,9 @@ public class RiskSourceServiceImpl implements IRiskSourceService {
private IDictDao dictDao;
@Autowired
private RedisTemplate redisTemplate;
@Autowired
private RuleTrigger ruleTrigger;
@Autowired
private FmeaEquipmentPointMapper fmeaEquipmentPointMapper;
......@@ -485,7 +491,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(),ArrayUtils.toArray( equipment.getName()));
ContingencyOriginalData contingencyOriginalData = new ContingencyOriginalData();
BeanUtils.copyProperties(contingencyRo, contingencyOriginalData);
iContingencyOriginalDataDao.save(contingencyOriginalData);
......
package com.yeejoin.amos.fas.business.service.intfc;
import java.util.List;
import com.yeejoin.amos.fas.dao.entity.ContingencyPlanInstance;
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);
}
package com.yeejoin.amos.fas.business.service.intfc;
import java.util.List;
import com.yeejoin.amos.fas.dao.entity.Message;
public interface IMessageService
{
List<Message> findMessageByBizId(String bizId);
void save(Message msg);
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment