whyclxw
5 天以前 4b3cef746d0752487beffb72ff340e220b0388cd
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
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.CmdDto.DevCmd;
import com.whyc.dto.Response;
import com.whyc.mapper.DeviceSetparamMapper;
import com.whyc.pojo.db_ram_db.DeviceSetparam;
import com.whyc.util.ActionUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
 
@Service
public class DeviceSetparamService {
    @Autowired(required = false)
    private DeviceSetparamMapper mapper;
    //机房命令操作设备时的cmd和ack校验  test_type  -->默认启动测试的类型
    public boolean sendCmdToDev(int cmd, int test_type, int dev_id, int battGroupNum) {
        int cmd_ack = 0;
        switch (cmd) {
            case DevCmd.CMD_Start:
                cmd_ack = DevCmd.CMD_StartAck;
                break;
            case DevCmd.CMD_Stop:
                cmd_ack = DevCmd.CMD_StopAck;
                break;
            case DevCmd.CMD_SetDischargeParm:
                cmd_ack = DevCmd.CMD_SetDischargeParmAck;
                break;
            case DevCmd.CMD_GetDischargeParm:
                cmd_ack = DevCmd.CMD_GetDischargeParmAck;
                break;
            case DevCmd.CMD_StartDischarge:
                cmd_ack = DevCmd.CMD_StartDischargeAck;
                break;
            case DevCmd.CMD_StopDischarge:
                cmd_ack = DevCmd.CMD_StopDischargeAck;
                break;
            case DevCmd.CMD_ResetSystem:
                cmd_ack = DevCmd.CMD_ResetSystemAck;
            case DevCmd.CMD_StartResDischarge:
                cmd_ack = DevCmd.CMD_StopResDischarge;
            default:
                return false;
        }
        UpdateWrapper updateWrapper=new UpdateWrapper();
        updateWrapper.set("op_cmd",cmd);
        updateWrapper.set("battgroupnum",battGroupNum);
        if(test_type > 0 && (cmd == DevCmd.CMD_Start||cmd == DevCmd.CMD_Stop)){                    //启动测试时未点击设定参数按钮,会出现启动内阻测试bug修复
            updateWrapper.set("test_cmd",test_type);
        }
        updateWrapper.eq("dev_id",dev_id);
        int flag=mapper.update((DeviceSetparam) ActionUtil.objeNull,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<1; n++)
            {
                DeviceSetparam DeviceSetparam=mapper.selectOne(queryWrapper);
                if(DeviceSetparam!=null){
                    if(DeviceSetparam.getOpCmd()==cmd_ack){
                        res_exe = true;
                        break;
                    }
                    try {
                        Thread.sleep(500);
                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }else {
                    break;
                }
            }
        }
        return res_exe;
    }
    //设置放电参数
    public Response updateParam(DeviceSetparam param) {
        Boolean b=mapper.updateParam(param);
        boolean bl=false;
        if(b){
            bl=sendCmdToDev(DevCmd.CMD_SetDischargeParm,0,param.getDevId(),param.getBattgroupnum());
        }
        return new Response().set(1,bl,bl==true?"设置参数成功!":"设置参数失败,请检查网络!");
    }
    //读取参数
    public Response getParam(int devId, int battGroupNum) {
        PageHelper.startPage(1, 1);
        QueryWrapper wrapper = new QueryWrapper();
        wrapper.eq("dev_id", devId);
        boolean bl = sendCmdToDev(DevCmd.CMD_GetDischargeParm,0, devId, battGroupNum);
        DeviceSetparam param = mapper.getParam(devId,battGroupNum);
        return new Response().setII(1, bl, param, bl == true ? "读取参数成功!" : "读取放电参数,请检查网络!");
    }
    //远程重启
    public Response restart(int devId, int battGroupNum) {
        boolean bl = sendCmdToDev(DevCmd.CMD_ResetSystem,0, devId, battGroupNum);
        return new Response().set(1,bl,bl==true?"设备远程重启成功!":"设备远程重启失败!");
    }
    //远程核容
    public Response startDis(int devId, int battGroupNum) {
        boolean bl = sendCmdToDev(DevCmd.CMD_Start,DevCmd.CMD_StartDischarge, devId, battGroupNum);
        return new Response().set(1,bl,bl==true?"远程核容成功!":"远程核容失败!");
    }
    //远程停止核容测试
    public Response stopDis(int devId, int battGroupNum) {
        boolean bl = sendCmdToDev(DevCmd.CMD_Stop,DevCmd.CMD_StopDischarge, devId, battGroupNum);
        return new Response().set(1,bl,bl==true?"远程停止核容成功!":"远程停止核容失败!");
    }
    //内阻测试
    public Response startRes(int devId, int battGroupNum) {
        boolean bl = sendCmdToDev(DevCmd.CMD_Start,DevCmd.CMD_StartResDischarge, devId, battGroupNum);
        return new Response().set(1,bl,bl==true?"启动内阻测试成功!":"启动内阻测试失败!");
    }
    //停止内阻测试
    public Response stopRes(int devId, int battGroupNum) {
        boolean bl = sendCmdToDev(DevCmd.CMD_Stop,DevCmd.CMD_StopResDischarge, devId, battGroupNum);
        return new Response().set(1,bl,bl==true?"停止内阻测试成功!":"停止内阻测试失败!");
    }
 
}