whycrzg
2021-02-23 351b9a53cb9ecebdf8f79db0117f540d9c42c2a4
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
package com.fgkj.services.Ld9;
 
import com.fgkj.dto.BattInf;
import com.fgkj.dto.LD9_setparam;
import com.fgkj.dto.ServiceModel;
import com.fgkj.mapper.FBS9100_ComBase;
import com.fgkj.mapper.impl.BattInfMapper;
import com.fgkj.mapper.impl.Batt_rtdataMapper;
import com.fgkj.mapper.impl.Ld9.LD9_setparamMapper;
import com.github.pagehelper.PageHelper;
import org.springframework.stereotype.Service;
 
import javax.annotation.Resource;
import java.util.List;
@Service
public class LD9_setparamService {
 
    @Resource
    private LD9_setparamMapper mapper;
 
    @Resource
    private Batt_rtdataMapper battRtDataMapper;
 
    @Resource
    private BattInfMapper battInfMapper;
    
     //弹出框的确定操作
    public ServiceModel update(LD9_setparam ld9) {
        ServiceModel model = new ServiceModel();
        Boolean b=mapper.update(ld9);
        if(b){
            boolean bl=sendCmdToLd9Dev(ld9.getNum(), ld9.getDev_id());
            if(bl){
                model.setCode(1);
                model.setMsg("修改成功!");
            }else{
                model.setCode(0);
                model.setMsg("设置ld9参数失败,请检查网络!");
            }
        }else{
            model.setCode(0);
            model.setMsg("修改失败!");
        }        
        return model;    
    }
     //根据机房编号和维护区查询放电机房的信息和放电参数
     public ServiceModel serchByCondition(BattInf binf) {
         ServiceModel model = new ServiceModel();
         //根据电池组id查询对应的设备id
         Integer dev_id = battInfMapper.serchDev_id(binf);
         //机房命令操作设备时的cmd和ack校验
         int cmd = binf.getNum();
         boolean bl = false;
         if (dev_id != null) {
             bl = sendCmdToLd9Dev(cmd, dev_id);
         }
 
         if (bl) {
             List list = mapper.findByCondition(binf);
             model.setCode(1);
             model.setData(list);
             model.setMsg("查询成功!");
         } else {
             model.setCode(0);
             model.setMsg("查询失败!");
         }
         return model;
     }
 
    private boolean sendCmdToLd9Dev(int cmd, int dev_id) {
        int m_cmd = cmd;
        int m_cmd_ack = cmd;
        switch(m_cmd) {
            case FBS9100_ComBase.CMD_Start: m_cmd_ack = FBS9100_ComBase.CMD_StartAck; break;
            case FBS9100_ComBase.CMD_Stop: m_cmd_ack = FBS9100_ComBase.CMD_StopAck; break;
            case FBS9100_ComBase.CMD_SetDischargeParm: m_cmd_ack = FBS9100_ComBase.CMD_SetDischargeParmAck; break;
            case FBS9100_ComBase.CMD_StartRES: m_cmd_ack = FBS9100_ComBase.CMD_StartRES_ACK; break;
            case FBS9100_ComBase.CMD_GetDischargeParm: m_cmd_ack = FBS9100_ComBase.CMD_GetDischargeParmAck; break;
            default: return false;
        }
        boolean res_exe = false;
        boolean b1 = mapper.updateOpCmd(cmd,dev_id)>0;
        if(b1) {
            for (int i = 0; i < 20; i++) {
                int opCmd = mapper.getOpCmd(dev_id);
                //查看操作执行指令发送到数据库后,通讯程序是否执行了指令并返回了ack
                if(opCmd==m_cmd_ack){
                    res_exe = true;
                    break;
                }
            }
        }
        return res_exe;
 
    }
 
    //右键查看参数和弹出框的刷新按钮
    public ServiceModel serchbyDev_id(LD9_setparam ld9) {
        ServiceModel model = new ServiceModel();
        boolean bl=sendCmdToLd9Dev(ld9.getNum(), ld9.getDev_id());
        if(bl){
        List list=mapper.serchbyDev_id(ld9);
            model.setCode(1);
            model.setData(list);
            model.setMsg("查询成功!");
 
        }else{
            model.setCode(0);
            model.setMsg("设置9100参数失败,请检查网络!");
        }
        //System.out.println(model.getData());
        return model;    
    }
    
    
    //根据电池组id查询电池组内前五的内阻数据
    public ServiceModel serchByThirdBatt(BattInf binf){
        ServiceModel model = new ServiceModel();
        PageHelper.startPage(0,10,false);
        List list=battRtDataMapper.serchByThirdBatt(binf);
        if(list!=null&&list.size()>0){
            model.setCode(1);
            model.setData(list);
            model.setMsg("查询成功!");
        }else{
            model.setCode(0);
            model.setMsg("查询失败!");
        }
        return model;
    }
}