whyclxw
2024-07-30 ed04733e15a5304c68ac16c121fd2989c851a57b
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
package com.whyc.service;
 
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.abe.ABECtDataTime;
import com.whyc.dto.FBS9100_ComBase;
import com.whyc.dto.Response;
import com.whyc.mapper.FBS9100BattParamMapper;
import com.whyc.pojo.FBS9100BattParam;
import com.whyc.util.ActionUtil;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestParam;
 
import javax.annotation.Resource;
 
@Service
public class FBS9100BattParamService {
 
    @Resource
    private FBS9100BattParamMapper mapper;
 
    public Response updateBatt(FBS9100BattParam param) {
        UpdateWrapper<FBS9100BattParam> update = Wrappers.update();
        Integer opCmd = param.getOpCmd();
 
        update.set("BattGroupCount",param.getBattGroupCount())
                .set("EachGroupBattCount",param.getEachGroupBattCount())
                .set("FloatChargeVol",param.getFloatChargeVol())
                .set("FloatChargeCurr",param.getFloatChargeCurr())
                .set("OnlineVolLow",param.getOnlineVolLow())
                .set("juncharge_vol",param.getJunChargeVol())
                .eq("dev_id",param.getDevId());
        boolean b = mapper.update((FBS9100BattParam) ActionUtil.objeNull, update) == 1;
        boolean bl = false;
        String msg = "";
        if (b) {
            bl = sendCmdToParam(opCmd, param.getDevId().intValue());
            if (bl) {
                msg = "修改成功!";
            } else {
                msg = "设置参数失败,请检查网络!";
            }
        } else {
            msg = "修改失败!";
        }
        return new Response().set(1, bl, msg);
    }
 
    public Response searchBatt(int devId, int opCmd) {
        boolean b=sendCmdToParam(opCmd, devId);
        QueryWrapper<FBS9100BattParam> query = Wrappers.query();
        query.eq("dev_id",devId);
        FBS9100BattParam param = mapper.selectOne(query);
        return new Response().setII(1,b,param,b?"获取参数成功!":"获取参数失败!");
    }
 
    //系统参数命令操作设备时的cmd和ack校验
    public boolean sendCmdToParam(int cmd, int dev_id) {
        int m_cmd = cmd;
        int m_cmd_ack = cmd;
        switch (m_cmd) {
            case FBS9100_ComBase.CMD_GetBattParam:
                m_cmd_ack = FBS9100_ComBase.CMD_GetBattParamACK;
                break;
            case FBS9100_ComBase.CMD_SetBattParam:
                m_cmd_ack = FBS9100_ComBase.CMD_SetBattParamACK;
                break;
            default:
                return false;
        }
        UpdateWrapper<FBS9100BattParam> update = Wrappers.update();
        update.set("op_cmd", m_cmd);
        update.eq("dev_id", dev_id);
        int flag = mapper.update((FBS9100BattParam) ActionUtil.objeNull, update);
        boolean res_exe = false;
        if (flag > 0) {
            PageHelper.startPage(1, 1);
            QueryWrapper<FBS9100BattParam> query = Wrappers.query();
            query.eq("dev_id", dev_id);
            for (int n = 0; n < 40; n++) {
                FBS9100BattParam param = mapper.selectOne(query);
                if (param != null) {
                    if (param.getOpCmd() == m_cmd_ack) {
                        res_exe = true;
                        break;
                    }
                    try {
                        Thread.sleep(250);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                } else {
                    break;
                }
 
            }
        }
        return res_exe;
    }
}