package com.aiswebservice.interf.quartz.task;
import com.aiswebservice.common.mapper.CommonSqlMapper;
import com.aiswebservice.common.scadaapi.ScadaClientApi;
import com.aiswebservice.common.webapibase.SqlDataResolve;
import com.aiswebservice.common.webapibase.SysCommonFunc;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Map;
@Slf4j
@Component
public class DeviceRemoteTask {
@Autowired
private CommonSqlMapper commonSqlMapper;
@Autowired
private SqlDataResolve sqlDataResolve;
@Autowired
private SysCommonFunc sysCommonFunc;
public void run() throws Exception {
try {
//1.查询出所有遥控器点位数据
String sqlTag="select ykq_id, ykq_code,ykq_des,device_code,tag_addr,ykq_flag,alarm_part,alarm_reason,solution from e_iot_me_device_remote order BY ykq_id";
List<Map<String, Object>> itemList=commonSqlMapper.ExecSelectSql(sqlTag);
//循环遍历出itemList数据
if(itemList!=null && itemList.size()>0) {
for(Map<String, Object> mapRemote : itemList){
try{
//获取三级便签,查询tag当前使用次数
String tag_addr = mapRemote.get("tag_addr").toString();
String device_code = mapRemote.get("device_code").toString();
String ykq_des = mapRemote.get("ykq_des").toString();
String ykq_flag = mapRemote.get("ykq_flag").toString();
String alarm_reason =mapRemote.get("alarm_reason").toString();
String solution =mapRemote.get("solution").toString();
String alarm_part =mapRemote.get("alarm_part").toString();
//根据三级点位,查询到当前点位的tagvalue值
int TagValue = Integer.parseInt(ScadaClientApi.ReadScadaTagValue(tag_addr));
//int TagValue =1;
if(TagValue == 0){
//根据Device_code和ykq_des(alarm_msg)查询出最近的那条数据
String RemoteSql="select alarm_id,func_code,device_code,func_des,alarm_msg,alarm_reason,creation_date,reset_date, reset_flag,reset_by,alarm_part,solution,ykq_flag " +
"from e_iot_me_device_alarm " +
"where ykq_flag ='N' and device_code = '"+device_code+"' and alarm_msg= '"+ykq_des+"' and " +
" creation_date in (select max(creation_date) as creation_date from e_iot_me_device_alarm where ykq_flag ='N' and device_code = '"+device_code+"' and alarm_msg= '"+ykq_des+"') " ;
List<Map<String, Object>> remoteList =commonSqlMapper.ExecSelectSql(RemoteSql);
//当集合有数据时看是否是报警状态
if(remoteList!=null && remoteList.size()>0){
for(Map<String, Object> mapRemote2 : remoteList){
//获取rest_flag的值
String reset_flag=mapRemote2.get("reset_flag").toString();
Integer alarm_id = Integer.parseInt(mapRemote2.get("alarm_id").toString());
//String creation_date=mapRemote2.get("creation_date").toString();
if(reset_flag.equals("N")){
//如果是报警状态更新 reset_flag=Y
String updateSql="update e_iot_me_device_alarm set " +
"reset_date='"+sysCommonFunc.GetNowDateTime()+"'," +
"reset_flag='Y'," +
"reset_by='"+"遥控器归位自动解除"+"' " +
"where alarm_id ="+alarm_id+"" ;
//"reset_flag='N' and alarm_msg='"+ykq_des+"' and device_code='"+device_code+"' and ykq_flag ='N' and creation_date= "+creation_date+"";
commonSqlMapper.ExecUpdateSql(updateSql);
log.info("更新遥控器数据");
}
}
}else{
log.info("不需要插入遥控器数据");
return;
}
}
else if (TagValue == 1){
String RemoteSql="select alarm_id,func_code,device_code,func_des,alarm_msg,alarm_reason,creation_date,reset_date, reset_flag,reset_by,alarm_part,solution,ykq_flag " +
"from e_iot_me_device_alarm " +
"where ykq_flag ='N' and device_code = '"+device_code+"' and alarm_msg= '"+ykq_des+"' and " +
" creation_date in (select max(creation_date) from e_iot_me_device_alarm where ykq_flag ='N' and device_code = '"+device_code+"' and alarm_msg= '"+ykq_des+"')" ;
List<Map<String, Object>> remoteList =commonSqlMapper.ExecSelectSql(RemoteSql);
String sql_device = "select attribute3 from e_iot_fmod_device where device_code = '"+device_code+"'";
List<Map<String, Object>> device_name = commonSqlMapper.ExecSelectSql(sql_device);
String fun_code = device_name.get(0).get("attribute3").toString();
//long alarm_id=sqlDataResolve.GetIncreaseID("e_iot_me_device_alarm_id_seq");
if(remoteList!=null && remoteList.size()>0) {
for (Map<String, Object> mapRemote2 : remoteList) {
String reset_flag=mapRemote2.get("reset_flag").toString();
String creation_date1= mapRemote2.get("creation_date").toString();
log.info("creation_date1:"+creation_date1);
if(reset_flag.equals("Y")){
String RemoteSql3="select alarm_id,func_code,device_code,func_des,alarm_msg,alarm_reason,creation_date,reset_date, reset_flag,reset_by,alarm_part,solution,ykq_flag " +
"from e_iot_me_device_alarm " +
"where ykq_flag ='N' and device_code = '"+device_code+"' and alarm_msg= '"+ykq_des+"' and " +
" creation_date in (select max(creation_date) as creation_date from e_iot_me_device_alarm where ykq_flag ='N' and device_code = '"+device_code+"' and alarm_msg= '"+ykq_des+"') " ;
List<Map<String, Object>> remoteList3 =commonSqlMapper.ExecSelectSql(RemoteSql3);
if(remoteList3!=null && remoteList3.size()>0) {
for (Map<String, Object> mapRemote3 : remoteList3) {
String reset_flag3=mapRemote3.get("reset_flag").toString();
String creation_date2= mapRemote3.get("creation_date").toString();
log.info("creation_date2:"+creation_date2);
if(reset_flag3.equals("Y")){
long alarm_id=sqlDataResolve.GetIncreaseID("e_iot_me_device_alarm_id_seq");
String insertSql="insert into e_iot_me_device_alarm "+"(alarm_id,func_code,func_des,device_code," +
"device_des,alarm_part,alarm_msg,alarm_reason," +
"creation_date,reset_flag,solution,ykq_flag) " +
"values ( "+alarm_id+"," +
"'"+fun_code+"-ALARM'," +//func_code
"'"+fun_code+"报警'," +//func_des
"'"+device_code+"'," +//
"'"+fun_code+"报警'," +//device_des
"'"+alarm_part+"'," +//alarm_part
"'"+ykq_des+"'," +//alarm_msg
"'"+alarm_reason+"'," +//alarm_reason
"'"+sysCommonFunc.GetNowDateTime()+"'," +//creation_date
"'N'," +//reset_flag
"'"+solution+"'," +//solution
"'"+ykq_flag+"')";
commonSqlMapper.ExecUpdateSql(insertSql);
log.info("插入遥控器报警的执行sql :"+insertSql);
}else{
log.info("已经存在遥控器报警数据");
}
}
}
}else{
return;
}
}
} else {
long alarm_id=sqlDataResolve.GetIncreaseID("e_iot_me_device_alarm_id_seq");
String insertSql="insert into e_iot_me_device_alarm "+"(alarm_id,func_code,func_des,device_code," +
"device_des,alarm_part,alarm_msg,alarm_reason," +
"creation_date,reset_flag,solution,ykq_flag) " +
"values ( " +alarm_id+"," +
"'"+fun_code+"-ALARM'," +//func_code
"'"+fun_code+"报警'," +//func_des
"'"+device_code+"'," +//
"'"+fun_code+"报警'," +//device_des
"'"+alarm_part+"'," +//alarm_part
"'"+ykq_des+"'," +//alarm_msg
"'"+alarm_reason+"'," +//alarm_reason
"'"+sysCommonFunc.GetNowDateTime()+"'," +//creation_date
"'N'," +//reset_flag
"'"+solution+"'," +//solution
"'"+ykq_flag+"')";
commonSqlMapper.ExecUpdateSql(insertSql);
log.info("无遥控器记录,插入值"+insertSql);
}
}else {
log.info("遥控器定位数据没有读到,请检查点位三级标签 :");
}
}catch (Exception ex){
log.info("遥控器定位数据没有读到,请检查点位三级标签2 :");
ex.printStackTrace();
// throw ex;
}
}
}
} catch (Exception e) {
throw e;
}
}
}
Java实现一个定时任务类来实现从PLC上读取一个点位的当前值状态插入数据库
最新推荐文章于 2024-07-13 03:24:54 发布