lxw
2022-08-23 9791ebab8a67aaa4e851e3f461fa420514bab469
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
package com.whyc.service;
 
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
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.Fbs9100Sysparam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
 
import javax.annotation.Resource;
 
@Service
public class Fbs9100SysparamService {
    @Resource
    private Fbs9100SysparamMapper mapper;
    @Autowired
    private Fbs9100SetparamService service;
 
    //清除告警/重启
    public Response update61850(Fbs9100Sysparam fbs9100Sysparam) {
        boolean bl=false;
        int flag=0;
        String msg="";
        if(fbs9100Sysparam.getNum()== FBS9100_ComBase.CMD_ResetSystem){//重启
            bl=service.sendCmdToFBS9100Dev(fbs9100Sysparam.getNum().intValue(),0, fbs9100Sysparam.getDevId().intValue());
            if(bl){
                flag=1;
                msg="重启成功!";
            }else{
                flag=0;
                msg="重启失败!";
            }
        }else{
            if(fbs9100Sysparam.getNum()==FBS9100_ComBase.CMD_ClearSysAlarm){//消除告警
                bl=sendCmdToFBS9100DevSysParam(fbs9100Sysparam.getNum().intValue(), fbs9100Sysparam.getDevId().intValue());
                if(bl){
                    flag=1;
                    msg="消除告警成功!";
                }else{
                    flag=0;
                    msg="消除告警失败!";
                }
            }else{
                int number=mapper.update61850(fbs9100Sysparam);
                if(number>0){
                    bl=sendCmdToFBS9100DevSysParam(fbs9100Sysparam.getNum().intValue(), fbs9100Sysparam.getDevId().intValue());
                    if(bl){
                        flag=1;
                        msg="修改成功!";
                    }else{
                        flag=0;
                        msg="设置9100参数失败,请检查网络!";
                    }
                }else{
                    flag=0;
                    msg="修改失败!";
                }
            }
        }
        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);
    }
 
    //系统参数命令操作设备时的cmd和ack校验
    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;
            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;
            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);
        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 != 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;
                }
 
            }
        }
        return res_exe;
    }
 
 
}