Explorar el Código

报警时数据点的字段修改

lirx hace 1 año
padre
commit
d0b34734f5

+ 157 - 158
src/main/java/com/kingfore/service/impl/DataServiceImpl.java

@@ -358,181 +358,180 @@ public class DataServiceImpl {
 
 
 		Map m = JSON.parseObject(content);
-		String time =  m.get("flexem_timestamp").toString();
-		List<Map> realJson =JSONObject.parseArray(m.get("实际数据").toString(), Map.class);
-		List<Map>  warningJson = JSONObject.parseArray(m.get("报警状态").toString(), Map.class);
-		List<Map>  warningSetJson = JSONObject.parseArray(m.get("报警设置").toString(), Map.class);
-		realJson.addAll(warningSetJson);
-		realJson.addAll(warningJson);
-
-		String deviceDesc = (String) m.get("设备名称");
-
-
-
-		int updateCount=0;
-		int saveCount=0;
-		for (Object real : realJson) {
-			Map<String,Object> item = (Map) real;
-			for (String key : item.keySet()) {
-				Map<String, Object> groupOpt = mapList.stream().filter(f -> key.equals(f.get("attribute"))).findAny().orElse(null);
-				String value =String.valueOf(item.get(key));
-				String id = deviceName + "_" + key.replace("_设定值"," _bjsxz");
-
-				if (groupOpt != null) {//有修改
-					Update up = new Update();
-					//写主题只更新读写状态,读主题更新值
-                    up.set("value", value);
-                    up.set("date", date);
-                    up.set("onLine", "在线");
-					Query queryUpdate = Query.query(Criteria.where("deviceName").is(deviceName).and("_id").is(id));
-					ops.updateOne(queryUpdate, up);
-					updateCount++;
-				}else{
-					Map<String, Object> realData = new HashMap<>();
-                    realData.put("_id", id);
-                    realData.put("dataCode",id);
-                    realData.put("dataName", key);
-                    realData.put("value", value);
-					realData.put("attribute", key);
-                    realData.put("date",date);
-
-                    realData.put("dataPointType", dataPointType);
-                    realData.put("productKey", productKey);
-					realData.put("deviceName", deviceName);
-					realData.put("alarmLevel", "无");
-					realData.put("saveHistory", "是");
-					realData.put("warning", "否");
-                    realData.put("onLine", "在线");
-                    realData.put("custom1", ip);
-                    realData.put("custom2", port);
-					realData.put("custom3", "smart_heating");
-					realData.put("deviceDesc", deviceDesc);
-
-					if(key.contains("_报警状态")){
-						realData.put("warningStartTime", "");
-					}
-
-					if(key.contains("_设定值")){
-						realData.put("readWrite", "写");
+		if(!m.isEmpty()){
+			String time =  m.get("flexem_timestamp").toString();
+			List<Map> realJson =JSONObject.parseArray(m.get("实际数据").toString(), Map.class);
+			List<Map>  warningJson = JSONObject.parseArray(m.get("报警状态").toString(), Map.class);
+			List<Map>  warningSetJson = JSONObject.parseArray(m.get("报警设置").toString(), Map.class);
+			realJson.addAll(warningSetJson);
+			realJson.addAll(warningJson);
+
+			String deviceDesc = (String) m.get("设备名称");
+
+
+
+			int updateCount=0;
+			int saveCount=0;
+			for (Object real : realJson) {
+				Map<String,Object> item = (Map) real;
+				for (String key : item.keySet()) {
+					Map<String, Object> groupOpt = mapList.stream().filter(f -> key.equals(f.get("attribute"))).findAny().orElse(null);
+					String value =String.valueOf(item.get(key));
+					String id = deviceName + "_" + key.replace("_设定值","_bjsxz");
+
+					if (groupOpt != null) {//有修改
+						Update up = new Update();
+						//写主题只更新读写状态,读主题更新值
+						up.set("value", value);
+						up.set("date", date);
+						up.set("onLine", "在线");
+						Query queryUpdate = Query.query(Criteria.where("deviceName").is(deviceName).and("_id").is(id));
+						ops.updateOne(queryUpdate, up);
+						updateCount++;
 					}else{
-						realData.put("readWrite", "读");
+						Map<String, Object> realData = new HashMap<>();
+						realData.put("_id", id);
+						realData.put("dataCode",id);
+						realData.put("dataName", key);
+						realData.put("value", value);
+						realData.put("attribute", key);
+						realData.put("date",date);
+
+						realData.put("dataPointType", dataPointType);
+						realData.put("productKey", productKey);
+						realData.put("deviceName", deviceName);
+						realData.put("alarmLevel", "无");
+						realData.put("saveHistory", "是");
+						realData.put("warning", "否");
+						realData.put("onLine", "在线");
+						realData.put("custom1", ip);
+						realData.put("custom2", port);
+						realData.put("custom3", "smart_heating");
+						realData.put("deviceDesc", deviceDesc);
+						realData.put("topic",topic.replace("up","down"));
+
+						if(key.contains("_报警状态")){
+							realData.put("warningStartTime", "");
+						}
+
+						if(key.contains("_设定值")){
+							realData.put("readWrite", "写");
+						}else{
+							realData.put("readWrite", "读");
+						}
+						ops.insert(realData);
+						saveCount++;
 					}
-					ops.insert(realData);
-					saveCount++;
 				}
+				//updateCount = setOpt(item, deviceAll, ops, host, port, date, deviceName, dataPointType, updateCount, saveCount);
 			}
-			//updateCount = setOpt(item, deviceAll, ops, host, port, date, deviceName, dataPointType, updateCount, saveCount);
-		}
-		//插入或修改
+			//插入或修改
 
-		if (updateCount != 0 || saveCount !=0) {
-			BulkWriteResult result = ops.execute();
-			logger.info("更新实时记录:" + updateCount);
-			updateCount= 0;
-			saveCount = 0;
-		}
+			if (updateCount != 0 || saveCount !=0) {
+				BulkWriteResult result = ops.execute();
+				logger.info("更新实时记录:" + updateCount);
+			}
 
-		//查询报警历史记录
-		for(Object warning : warningJson){
-			Map<String,Object> item = (Map) warning;
-			for (String key : item.keySet()) {
-				Map<String, Object> groupOpt = mapList.stream().filter(f -> key.equals(f.get("attribute"))).findAny().orElse(null);
-				String value = String.valueOf(item.get(key));
-				String id = deviceName + "_" + key;
-				if (groupOpt != null) {
-					//有修改
-					//判断报警历史表是否有该code数据
-					Query h =Query.query(Criteria.where("dataCode").is(id).and("restoreTime").is(null));
-					Map his = dataServiceImpl.historymongoTemplate.findOne(h,Map.class, tableNameHis);
-
-					Query queryUpdate = Query.query(Criteria.where("deviceName").is(deviceName).and("_id").is(id));
-
-					if(value.equals("0.0") || value.equals("0")) {
-						//报警恢复正常
-						//修改历史数据库
-						if(his != null) {
-							Update update = new Update();
-							update.set("restoreTime",new Date());
-							dataServiceImpl.historymongoTemplate.updateMulti(h,update,tableNameHis);
-						}
-						//修改实时数据库
-						Update updateRel = new Update();
-						updateRel.set("deviceDesc", deviceDesc);
-						updateRel.set("warning", "否");
-						updateRel.set("warningStartTime", "");
-						updateRel.set("alarmLevel", "");
-						updateRel.set("value", value);
-						updateRel.set("date", date);
-						updateRel.set("onLine", "在线");
-
-						dataServiceImpl.realDataMongoTemplate.updateMulti(queryUpdate, updateRel, tableNameReal);
-
-					}else {
-						Update update = new Update();
-						update.set("warning", "未知报警");
-						update.set("alarmLevel", "提醒");
-						update.set("deviceDesc", deviceDesc);
-						update.set("date", date);
-						update.set("warningStartTime", new Date());
-						update.set("value", value);
-						update.set("dataName", key);
-						update.set("readWrite", "读");
-						//判断此数据点是否已经完成工单,如果完成就把状态标识字段删除
-						if(groupOpt.containsKey("orderState")) {
-							if((Integer)groupOpt.get("orderState") == 1) {
-								update.unset("orderState");
+			//查询报警历史记录
+			for(Object warning : warningJson){
+				Map<String,Object> item = (Map) warning;
+				for (String key : item.keySet()) {
+					Map<String, Object> groupOpt = mapList.stream().filter(f -> key.equals(f.get("attribute"))).findAny().orElse(null);
+					String value = String.valueOf(item.get(key));
+					String id = deviceName + "_" + key;
+					if (groupOpt != null) {
+						//有修改
+						//判断报警历史表是否有该code数据
+						Query h =Query.query(Criteria.where("dataCode").is(id).and("restoreTime").is(null));
+						Map his = dataServiceImpl.historymongoTemplate.findOne(h,Map.class, tableNameHis);
+
+						Query queryUpdate = Query.query(Criteria.where("deviceName").is(deviceName).and("_id").is(id));
+
+						if(value.equals("0.0") || value.equals("0")) {
+							//报警恢复正常
+							//修改历史数据库
+							if(his != null) {
+								Update update = new Update();
+								update.set("restoreTime",new Date());
+								dataServiceImpl.historymongoTemplate.updateMulti(h,update,tableNameHis);
 							}
-						}
-
-						//此设备是否存在项目
-						Query queryStru= new Query(new Criteria("companyStructureId").is(new BasicDBObject("$ne", null)).and("deviceName").is(deviceName));
-						Map mm = dataServiceImpl.realDataMongoTemplate.findOne(queryStru,Map.class, tableNameReal);
-						CompanyStructure co = JSON.parseObject(JSON.toJSONString(groupOpt.get("companyStructure")),CompanyStructure.class);
-						if(co == null) {
-							if(mm != null) {
-								update.set("companyStructureId", mm.get("companyStructureId"));
-								update.set("companyStructure", mm.get("companyStructure"));
+							//修改实时数据库
+							Update updateRel = new Update();
+							updateRel.set("deviceDesc", deviceDesc);
+							updateRel.set("warning", "否");
+							updateRel.set("warningStartTime", "");
+							updateRel.set("alarmLevel", "无");
+							updateRel.set("value", value);
+							updateRel.set("date", date);
+							updateRel.set("onLine", "在线");
+
+							dataServiceImpl.realDataMongoTemplate.updateMulti(queryUpdate, updateRel, tableNameReal);
+
+						}else if(value.equals("1.0") || value.equals("1")){
+							Update update = new Update();
+							update.set("warning", "未知报警");
+							update.set("alarmLevel", "提醒");
+							update.set("deviceDesc", deviceDesc);
+							update.set("date", date);
+							update.set("warningStartTime", new Date());
+							update.set("value", value);
+							update.set("readWrite", "读");
+							//判断此数据点是否已经完成工单,如果完成就把状态标识字段删除
+							if(groupOpt.containsKey("orderState")) {
+								if((Integer)groupOpt.get("orderState") == 1) {
+									update.unset("orderState");
+								}
 							}
-						}
-						dataServiceImpl.realDataMongoTemplate.updateMulti(query,update,tableNameReal);
-						//重新查询去除掉orderState字段的记录
-						Map delOrder = dataServiceImpl.realDataMongoTemplate.findOne(query, Map.class,tableNameReal);
 
-						//进行拨打电话操作
-						if(delOrder.get("orderState") == null || "".equals(delOrder.get("orderState"))) {
+							//此设备是否存在项目
+							Query queryStru= new Query(new Criteria("companyStructureId").is(new BasicDBObject("$ne", null)).and("deviceName").is(deviceName));
+							Map mm = dataServiceImpl.realDataMongoTemplate.findOne(queryStru,Map.class, tableNameReal);
+							CompanyStructure co = JSON.parseObject(JSON.toJSONString(groupOpt.get("companyStructure")),CompanyStructure.class);
 							if(co == null) {
-								//拨打语音电话
-								VoiceCallUtils.SingleCallByTts(deviceDesc+"      "+key+"     ");
-								logger.info(deviceDesc+"      "+key+"     ");
-							}else {
-								String structureName = co.getName();
-								//拨打语音电话
-								VoiceCallUtils.SingleCallByTts(structureName+"  项目      "+deviceDesc+"      "+key+"     ");
-								logger.info(structureName+"  项目      "+deviceDesc+"      "+key+"     ");
+								if(mm != null) {
+									update.set("companyStructureId", mm.get("companyStructureId"));
+									update.set("companyStructure", mm.get("companyStructure"));
+								}
+							}
+							dataServiceImpl.realDataMongoTemplate.updateMulti(queryUpdate,update,tableNameReal);
+							//重新查询去除掉orderState字段的记录
+							Query queryDelOrder =Query.query(Criteria.where("dataCode").is(id));
+							Map delOrder = dataServiceImpl.realDataMongoTemplate.findOne(queryDelOrder, Map.class,tableNameReal);
+
+							//进行拨打电话操作
+							if(delOrder.get("orderState") == null || "".equals(delOrder.get("orderState"))) {
+								if(co == null) {
+									//拨打语音电话
+									VoiceCallUtils.SingleCallByTts(deviceDesc+"      "+key+"     ");
+									logger.info(deviceDesc+"      "+key+"     ");
+								}else {
+									String structureName = co.getName();
+									//拨打语音电话
+									VoiceCallUtils.SingleCallByTts(structureName+"  项目      "+deviceDesc+"      "+key+"     ");
+									logger.info(structureName+"  项目      "+deviceDesc+"      "+key+"     ");
+								}
 							}
-						}
 
-						if(his == null) {
-							//没有这条历史记录
-							HistoryWarning hw = new HistoryWarning();
-							hw.setAlarmLevel(delOrder.get("alarmLevel").toString());
-							if(delOrder.get("companyStructureId") != null && !"".equals(delOrder.get("companyStructureId"))) {
-								hw.setStructureId(delOrder.get("companyStructureId").toString());
-								hw.setStructureName(co.getName());
+							if(his == null) {
+								//没有这条历史记录
+								HistoryWarning hw = new HistoryWarning();
+								hw.setAlarmLevel(delOrder.get("alarmLevel").toString());
+								if(delOrder.get("companyStructureId") != null && !"".equals(delOrder.get("companyStructureId"))) {
+									hw.setStructureId(delOrder.get("companyStructureId").toString());
+									hw.setStructureName(co.getName());
+								}
+								hw.setDataCode(delOrder.get("_id").toString());
+								hw.setDataName(delOrder.get("dataName").toString());
+								hw.setValue(Double.parseDouble(value));
+								hw.setWarningTime(new Date());
+								hw.setRestoreTime(null);
+								dataServiceImpl.historymongoTemplate.insert(hw,tableNameHis);
 							}
-							hw.setDataCode(delOrder.get("_id").toString());
-							hw.setDataName(delOrder.get("dataName").toString());
-							hw.setValue(Double.parseDouble(value));
-							hw.setWarningTime(new Date());
-							hw.setRestoreTime(null);
-							dataServiceImpl.historymongoTemplate.insert(hw,tableNameHis);
 						}
 					}
-				}else{
-
 				}
-			}
 
+			}
 		}
 		//插入或修改
 

+ 2 - 2
src/main/java/com/kingfore/utils/VoiceCallUtils.java

@@ -51,11 +51,11 @@ public class VoiceCallUtils {
         //request.putQueryParameter("CalledNumber", "13269971162");  //公用电话号码
         //request.putQueryParameter("CalledNumber", "18611554023"); //王雨手机号
         //request.putQueryParameter("CalledNumber", "17310025813"); //王茜手机号
-//        request.putQueryParameter("CalledNumber", "4000006464");  //公司400电话
+        request.putQueryParameter("CalledNumber", "4000006464");  //公司400电话
         //request.putQueryParameter("CalledNumber", "13126797725");
         //request.putQueryParameter("CalledNumber", "17310025813");
         //request.putQueryParameter("CalledNumber", "13718862559");
-        request.putQueryParameter("CalledNumber", "18600532627");
+        //request.putQueryParameter("CalledNumber", "13126797725");
         
         
         request.putQueryParameter("TtsCode", "TTS_217426121");