Java实现一个定时任务类来实现从PLC上读取一个点位的当前值状态插入数据库

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;
        }
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值