Pu Zhibing
3 天以前 db0b7644a9a5a62ac2da3cf571fee41bb8b6974f
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
package com.ruoyi.chargingPile.util;
 
 
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.ruoyi.chargingPile.api.model.Site;
import com.ruoyi.chargingPile.api.model.TChargingGun;
import com.ruoyi.chargingPile.service.ISiteService;
import com.ruoyi.chargingPile.service.TChargingGunService;
import com.ruoyi.chargingPile.service.TChargingPileService;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.integration.api.elutong.model.*;
import com.ruoyi.integration.api.feignClient.ELuTongClient;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.web.context.WebServerInitializedEvent;
import org.springframework.context.ApplicationListener;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
 
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
 
 
/**
 * 定时任务工具类
 */
@Slf4j
@Component
public class TaskUtil implements ApplicationListener<WebServerInitializedEvent> {
    
    @Resource
    private TChargingPileService chargingPileService;
    
    private Integer port = null;
 
    @Resource
    private ELuTongClient eLuTongClient;
 
    @Resource
    private ISiteService siteService;
 
    @Resource
    private TChargingGunService chargingGunService;
    
    
    @Override
    public void onApplicationEvent(WebServerInitializedEvent event) {
        port = event.getWebServer().getPort();
        System.out.println("端口号:" + port);
    }
 
    /**
     * 每隔1分钟去处理的定时任务
     */
    @Scheduled(fixedRate = 60000)
    public void taskMinute(){
        if(null != port && port == 5300){
            chargingPileService.updateStatus();
            pushStationsStatus();
        }
    }
 
 
    /**
     * 1分钟定时推送设备状态E路通
     */
    private void pushStationsStatus(){
        List<Site> list = siteService.list(new LambdaQueryWrapper<Site>().eq(Site::getDelFlag, 0).isNotNull(Site::getSerAreaCode));
        for (Site site : list) {
            if(StringUtils.isEmpty(site.getSerAreaCode())){
                continue;
            }
            StationsStatusReq stationsStatusReq = new StationsStatusReq();
            stationsStatusReq.setOperatorId("91510903906171535D");
            stationsStatusReq.setSerAreaCode(site.getSerAreaCode());
            stationsStatusReq.setStationId(site.getId().toString());
            List<StationStausInfo> stationStausInfos = new ArrayList<>();
            stationStausInfos.add(buildStationStaus(site));
            stationsStatusReq.setItemSize(stationStausInfos.size());
            stationsStatusReq.setStationStausInfos(stationStausInfos);
            R r = eLuTongClient.pushStationsStatus(stationsStatusReq);
            if(200 != r.getCode()){
                log.error(r.getMsg());
            }
        }
 
    }
 
 
    private StationStausInfo buildStationStaus(Site site){
        StationStausInfo stationStausInfo = new StationStausInfo();
        stationStausInfo.setStationId(site.getId().toString());
        stationStausInfo.setConnectorStatusInfos(buildConnectorStatus(site));
        return stationStausInfo;
    }
 
    private List<ConnectorStatusInfo> buildConnectorStatus(Site site){
        List<TChargingGun> list = chargingGunService.list(new LambdaQueryWrapper<TChargingGun>().eq(TChargingGun::getDelFlag, 0)
                .eq(TChargingGun::getSiteId, site.getId()));
        return new ArrayList<ConnectorStatusInfo>(){{
            for (TChargingGun chargingGun : list) {
                ConnectorStatusInfo connectorStatusInfo = new ConnectorStatusInfo();
                connectorStatusInfo.setConnectorId(chargingGun.getId().toString());
                switch (chargingGun.getStatus()){
                    case 1:
                        connectorStatusInfo.setStatus(0);
                        break;
                    case 2:
                        connectorStatusInfo.setStatus(1);
                        break;
                    case 3:
                        connectorStatusInfo.setStatus(2);
                        break;
                    case 4:
                        connectorStatusInfo.setStatus(3);
                        break;
                    case 5:
                        connectorStatusInfo.setStatus(3);
                        break;
                    case 6:
                        connectorStatusInfo.setStatus(4);
                        break;
                    case 7:
                        connectorStatusInfo.setStatus(255);
                        break;
                }
                connectorStatusInfo.setSoc(0D);
                connectorStatusInfo.setRemainingTime(0);
                add(connectorStatusInfo);
            }
        }};
    }
}