whyclxw
2022-01-10 00b61a61b2a90c85aeae872e351ddf4bb2b516cf
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
package com.whyc.service;
 
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.whyc.dto.BattTestData;
import com.whyc.dto.Response;
import com.whyc.mapper.BattInfMapper;
import com.whyc.mapper.BattRtstateMapper;
import com.whyc.mapper.BattdischargePlanMapper;
import com.whyc.pojo.BattRtstate;
import com.whyc.pojo.BattdischargePlan;
import com.whyc.pojo.Battinf;
import com.whyc.pojo.UserInf;
import com.whyc.util.ActionUtil;
import org.springframework.stereotype.Service;
 
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
 
@Service
public class BattdischargePlanService {
    @Resource
    private BattdischargePlanMapper mapper;
 
    @Resource
    private BattInfMapper battInfMapper;
 
    @Resource
    private BattRtstateMapper rtstateMapper;
 
    //查询
    public Response serchByCondition(BattdischargePlan battdischargePlan) {
        PageHelper.startPage(battdischargePlan.getPage().getPageCurr(),battdischargePlan.getPage().getPageSize());
        UserInf uinf= ActionUtil.getUser();
        battdischargePlan.setUId(uinf.getUId().intValue());
        List list=mapper.serchByCondition(battdischargePlan);
        PageInfo pageInfo=new PageInfo(list);
        return new Response().set(1,pageInfo);
    }
    //删除
    public Response delete(int num) {
        int flag=mapper.deleteById(num);
        return new Response().set(flag>0?1:0);
    }
    //创建计划-查询
    public Response serchBattPlan(String stationName1,String stationName2,String stationName5,String stationId) {
        UserInf uinf=ActionUtil.getUser();
        List list=battInfMapper.serchBattPlan(stationName1,stationName2,stationName5,stationId,uinf.getUId().intValue());
        PageInfo pageInfo=new PageInfo(list);
        return new Response().set(1,pageInfo);
    }
    //创建计划-创建计划
    public Response getBattSate(int battGroupId) {
        BattRtstate brt=rtstateMapper.getCurrentSate(battGroupId);
        Response response=new Response();
        if(brt != null){
            response.setCode(1);
            Calendar instance = Calendar.getInstance();
            instance.add(Calendar.MINUTE,-1);
            Date time = instance.getTime();
            if(time.compareTo(brt.getRecDatetime())>0){
                response.setMsg("通讯故障");
            }else{
                /**
                 * 0    未知
                 * 1    浮充
                 * 2    充电
                 * 3    放电
                 * 4    均充
                 */
                switch (brt.getBattState()){
                    case 0 : response.setMsg("未进行充放电操作"); break;
                    case 1 : response.setMsg("浮充"); break;
                    case 2 : response.setMsg("充电"); break;
                    case 3 : response.setMsg("放电"); break;
                    case 4 : response.setMsg("均充"); break;
                }
 
            }
        }else{
            response.setMsg("无法查询到该电池当前状态");
        }
        return response;
    }
    //启用/延时/取消放电计划/修改放电参数
    public Response updatePro(List<BattdischargePlan> list) {
        int flag=mapper.updatePro(list);
        return  new Response().set(flag>0?1:0);
    }
    //校验需要添加的计划参数 放电计划处于等待启动0,放电延时1,放电计划进行中3,充电进行中5
    public Response judgePlan(List<BattdischargePlan> bplans) {
        List<BattdischargePlan> list = new ArrayList();//存放满足计划设定条件的可行计划
        if(bplans!=null&&bplans.size()>0){
            for(int i=0;i<bplans.size();i++){
                List flag=mapper.judgePlan(bplans.get(i));
                if(flag!=null&&flag.size()>0){//判断通过是否数据库存在同机房放电计划,满足条件
                    if(list.size()>0){
                        int judge=judgeList(bplans.get(i), list);
                        if(judge==1){////判断通过时间相隔3天,满足条件
                            list.add(bplans.get(i));
                        }else{
                            continue;
                        }
                    }else{
                        list.add(bplans.get(i));
                    }
 
                }
            }
        }
        PageInfo pageInfo = new PageInfo(list);
        return  new Response().set(1,pageInfo);
    }
    //放电计划中添加计划时,有没有出现同机房存在电池组有计划
    public  int judgeList(Object obj1,Object obj2){
        BattdischargePlan bplan=(BattdischargePlan) obj1;
        List<BattdischargePlan> list=(List<BattdischargePlan>) obj2;
        int flag=1;
        if(list!=null&&list.size()>0){
            for(int i=0;i<list.size();i++){
 
                if(bplan.getNote().equals(list.get(i).getNote())){
                    int hours=ActionUtil.HoursBetween(bplan.getDischargeStarttime(), list.get(i).getDischargeStarttime1());
                    if(hours< BattTestData.hoursBetween){
                        flag=0;
                        break;
                    }
                }
            }
        }
        return flag;
    }
    //创建计划-创建计划
    public Response addPro(List<BattdischargePlan> list) {
        int flag=mapper.addPro(list);
        return  new Response().set(flag>0?1:0);
    }
}