lxw
2023-05-25 f3c27fb78447449a950ba73c5e72ceda64ad8a12
src/main/java/com/whyc/service/Fbs9100SysparamService.java
@@ -2,11 +2,11 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.pagehelper.PageHelper;
import com.whyc.dto.FBS9100_ComBase;
import com.whyc.dto.Response;
import com.whyc.mapper.Fbs9100SysparamMapper;
import com.whyc.pojo.Fbs9100Setparam;
import com.whyc.pojo.Fbs9100Sysparam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -64,44 +64,208 @@
        return new Response().set(1,flag>0?true:false,msg);
    }
    //根据设备id查询系统参数
    public Response serchByCondition(int devId) {
        boolean b=mapper.replace(devId);
        boolean bl=sendCmdToFBS9100DevSysParam(FBS9100_ComBase.CMD_GetSYSSetParam,devId);
        PageHelper.startPage(1,1);
        Fbs9100Sysparam  sysparam = mapper.serchByCondition(devId);
        String msg="";
        if(bl){
            msg="查询成功!";
        }else{
            msg="查询失败!";
        }
        return  new Response().setII(1,bl,sysparam,msg);
    }
    //均衡控制参数设置-获取参数
    public Response searchJunHengParam(int devId) {
        boolean b=sendCmdToFBS9100DevSysParam(FBS9100_ComBase.CMD_GetJunHengParam, devId);
        PageHelper.startPage(1,1);
        QueryWrapper wrapper=new QueryWrapper();
        wrapper.eq("dev_id",devId);
        Fbs9100Sysparam sysparam=mapper.selectOne(wrapper);
        return new Response().setII(1,b,sysparam,b==true?"获取参数成功!":"获取参数失败!");
    }
    //均衡控制参数设置-设置参数
    public Response update61850JunHeng(Fbs9100Sysparam fbs9100Sysparam) {
        boolean b = mapper.update61850JunHeng(fbs9100Sysparam);
        boolean bl = false;
        String msg = "";
        if (b) {
            bl = sendCmdToFBS9100DevSysParam(fbs9100Sysparam.getOpCmd(), fbs9100Sysparam.getDevId().intValue());
            if (bl) {
                msg = "修改成功!";
            } else {
                msg = "设置61850均衡参数失败,请检查网络!";
            }
        } else {
            msg = "修改失败!";
        }
        return new Response().set(1, bl, msg);
    }
    //并联设备-获取参数
    public Response searchBL(int devId) {
        boolean b = sendCmdToFBS9100DevSysParam(FBS9100_ComBase.CMD_GetMultModeParam, devId);
        PageHelper.startPage(1, 1);
        QueryWrapper wrapper = new QueryWrapper();
        wrapper.eq("dev_id", devId);
        Fbs9100Sysparam sysparam = mapper.selectOne(wrapper);
        return new Response().setII(1, b, sysparam, b == true ? "获取参数成功!" : "获取参数失败!");
    }
    //并联设备-设置参数
    public Response updateBL(Fbs9100Sysparam fbs9100Sysparam) {
        boolean b = mapper.updateBL(fbs9100Sysparam);
        boolean bl = false;
        String msg = "";
        if (b) {
            bl = sendCmdToFBS9100DevSysParam(fbs9100Sysparam.getOpCmd(), fbs9100Sysparam.getDevId().intValue());
            if (bl) {
                msg = "修改成功!";
            } else {
                msg = "并联设备-设置参数失败,请检查网络!";
            }
        } else {
            msg = "修改失败!";
        }
        return new Response().set(1, bl, msg);
    }
    public Response update61851(Fbs9100Sysparam fbs9100Sysparam) {
        UpdateWrapper<Fbs9100Sysparam> update = Wrappers.update();
        Integer opCmd = fbs9100Sysparam.getOpCmd();
        if(opCmd == FBS9100_ComBase.CMD_ControlSwitch) { //61851开关控制
            update.set("km1_switch", fbs9100Sysparam.getKm1Switch())
                    .set("km2_switch", fbs9100Sysparam.getKm2Switch())
                    .set("km3_switch", fbs9100Sysparam.getKm3Switch())
                    .eq("dev_id", fbs9100Sysparam.getDevId());
        }else if(opCmd == FBS9100_ComBase.CMD_SetSYSSetParam){ //61851远程重启装置遥调指令
            update.set("currentRange",fbs9100Sysparam.getCurrentRange())
                    .set("BackLightTime",fbs9100Sysparam.getBackLightTime())
                    .set("dev_addr",fbs9100Sysparam.getDevAddr())
                    .set("tempH_Env",fbs9100Sysparam.getTempHEnv())
                    .set("tempH_JCQ",fbs9100Sysparam.getTempHJCQ())
                    .set("currH_ZL",fbs9100Sysparam.getCurrHZL())
                    .eq("dev_id",fbs9100Sysparam.getDevId());
        }
        boolean b = mapper.update(null, update) == 1;
        boolean bl = false;
        String msg = "";
        if (b) {
            bl = sendCmdToFBS9100DevSysParam(opCmd, fbs9100Sysparam.getDevId().intValue());
            if (bl) {
                msg = "修改成功!";
            } else {
                msg = "设置61850均衡参数失败,请检查网络!";
            }
        } else {
            msg = "修改失败!";
        }
        return new Response().set(1, bl, msg);
    }
    public Response updatePW(Fbs9100Sysparam fbs9100Sysparam) {
        UpdateWrapper<Fbs9100Sysparam> update = Wrappers.update();
        Integer opCmd = fbs9100Sysparam.getOpCmd();
        update.set("CurrentRange",fbs9100Sysparam.getCurrentRange())
                .set("BackLightTime",fbs9100Sysparam.getBackLightTime())
                .set("auto_captestperiod",fbs9100Sysparam.getAutoCapTestPeriod())
                .set("loaderpowerdown_peroid",fbs9100Sysparam.getLoaderPowerDownPeriod())
                .set("loaderpowerdown_time",fbs9100Sysparam.getLoaderPowerDownTime())
                .set("boost_dcdc_bakvol",fbs9100Sysparam.getBoostDCDCBakVol())
                .set("boost_dcdc_bakcurr",fbs9100Sysparam.getBoostDCDCBakCurr())
                .eq("dev_id",fbs9100Sysparam.getDevId());
        boolean b = mapper.update(null, update) == 1;
        boolean bl = false;
        String msg = "";
        if (b) {
            bl = sendCmdToFBS9100DevSysParam(opCmd, fbs9100Sysparam.getDevId().intValue());
            if (bl) {
                msg = "修改成功!";
            } else {
                msg = "设置61850均衡参数失败,请检查网络!";
            }
        } else {
            msg = "修改失败!";
        }
        return new Response().set(1, bl, msg);
    }
    public Response search61851(int devId, int opCmd) {
        boolean b=sendCmdToFBS9100DevSysParam(opCmd, devId);
        PageHelper.startPage(1,1);
        QueryWrapper wrapper=new QueryWrapper();
        wrapper.eq("dev_id",devId);
        Fbs9100Sysparam sysparam=mapper.selectOne(wrapper);
        return new Response().setII(1,b,sysparam,b==true?"获取参数成功!":"获取参数失败!");
    }
    //系统参数命令操作设备时的cmd和ack校验
    public boolean sendCmdToFBS9100DevSysParam(int cmd,int dev_id)
    {
    public boolean sendCmdToFBS9100DevSysParam(int cmd, int dev_id) {
        int m_cmd = cmd;
        int m_cmd_ack = cmd;
        switch(m_cmd) {
            case FBS9100_ComBase.CMD_GetSYSSetParam: m_cmd_ack = FBS9100_ComBase.CMD_GetSYSSetParamAck; break;
            case FBS9100_ComBase.CMD_SetSYSSetParam: m_cmd_ack = FBS9100_ComBase.CMD_SetSYSSetParamAck; break;
            case FBS9100_ComBase.CMD_ClearSysAlarm: m_cmd_ack = FBS9100_ComBase.CMD_ClearSysAlarm_ACK; break;
            case FBS9100_ComBase.CMD_SetJunHengParam: m_cmd_ack = FBS9100_ComBase.CMD_SetJunHengParamAck;break;
            case FBS9100_ComBase.CMD_GetJunHengParam: m_cmd_ack = FBS9100_ComBase.CMD_GetJunHengParamAck;break;
            default: return false;
        switch (m_cmd) {
            case FBS9100_ComBase.CMD_GetSYSSetParam:
                m_cmd_ack = FBS9100_ComBase.CMD_GetSYSSetParamAck;
                break;
            case FBS9100_ComBase.CMD_SetSYSSetParam:
                m_cmd_ack = FBS9100_ComBase.CMD_SetSYSSetParamAck;
                break;
            case FBS9100_ComBase.CMD_ClearSysAlarm:
                m_cmd_ack = FBS9100_ComBase.CMD_ClearSysAlarm_ACK;
                break;
            case FBS9100_ComBase.CMD_SetJunHengParam:
                m_cmd_ack = FBS9100_ComBase.CMD_SetJunHengParamAck;
                break;
            case FBS9100_ComBase.CMD_GetJunHengParam:
                m_cmd_ack = FBS9100_ComBase.CMD_GetJunHengParamAck;
                break;
            case FBS9100_ComBase.CMD_GetMultModeParam:
                m_cmd_ack = FBS9100_ComBase.CMD_GetMultModeParam_Ack;
                break;
            case FBS9100_ComBase.CMD_SetMultModeParam:
                m_cmd_ack = FBS9100_ComBase.CMD_SetMultModeParam_Ack;
                break;
            case FBS9100_ComBase.CMD_ControlSwitch:
                m_cmd_ack = FBS9100_ComBase.CMD_ControlSwitch_Ack;
                break;
            default:
                return false;
        }
        UpdateWrapper updateWrapper=new UpdateWrapper();
        updateWrapper.set("op_cmd",m_cmd);
        updateWrapper.eq("dev_id",dev_id);
        int flag=mapper.update(null,updateWrapper);
        UpdateWrapper updateWrapper = new UpdateWrapper();
        updateWrapper.set("op_cmd", m_cmd);
        updateWrapper.eq("dev_id", dev_id);
        int flag = mapper.update(null, updateWrapper);
        boolean res_exe = false;
        if(flag>0)
        {
            PageHelper.startPage(1,1);
            QueryWrapper queryWrapper=new QueryWrapper();
            queryWrapper.eq("dev_id",dev_id);
            for(int n=0; n<40; n++)
            {
                Fbs9100Sysparam sysparam=mapper.selectOne(queryWrapper);
                if(sysparam.getOpCmd()==m_cmd_ack){
                    res_exe = true;
        if (flag > 0) {
            PageHelper.startPage(1, 1);
            QueryWrapper queryWrapper = new QueryWrapper();
            queryWrapper.eq("dev_id", dev_id);
            for (int n = 0; n < 40; n++) {
                Fbs9100Sysparam sysparam = mapper.selectOne(queryWrapper);
                if (sysparam != null) {
                    if (sysparam.getOpCmd() == m_cmd_ack) {
                        res_exe = true;
                        break;
                    }
                    try {
                        Thread.sleep(250);
                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                } else {
                    break;
                }
                try {
                    Thread.sleep(250);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
        return res_exe;
    }
}