lxw
2023-03-02 2ebf5324ac4e7dd23f4857e7080d25d40065b86c
新页面首页推送
1个文件已添加
5个文件已修改
230 ■■■■■ 已修改文件
src/main/java/com/whyc/service/BadBattMonService.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/BattInfService.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/BatttestdataInfService.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/Fbs9100StateService.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/PowerInfService.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/webSocket/HomeAdminSocket.java 175 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/BadBattMonService.java
@@ -44,15 +44,24 @@
    public Response searchNums() {
        UserInf uinf= ActionUtil.getUser();
        int badMonNum=badbattMonMapper.searchNums(uinf.getUId().intValue());
        return  new Response().set(1,badMonNum);
        return new Response().set(1, badMonNum);
    }
    public int getBadCountByStationId(String stationId){
    public int getBadCountByStationId(String stationId) {
        return badbattMonMapper.getBadCountByStationId(stationId);
    }
    public List<BattMapInformation> findBehind(){
    public List<BattMapInformation> findBehind() {
        return badbattMonMapper.findBehind();
    }
    //管理员首页:蓄电池优劣分析
    public Response getQualityAnalysis(int userId) {
        return new Response().set(1);
    }
    //管理员首页:不同品牌同一时间品质
    public Response getProductQuaAnalysis(int userId) {
        return new Response().set(1);
    }
}
src/main/java/com/whyc/service/BattInfService.java
@@ -569,10 +569,15 @@
            Float batteryRealCap = state.getBatteryRealCap();
            Float capStd = state.getMonCapStd();
            Float realCapDivide = (Float) MathUtil.divide(batteryRealCap, capStd, MathUtil.TYPE_FLOAT);
            if(realCapDivide<=0.7){
            if (realCapDivide <= 0.7) {
                capAlarmNum++;
            }
        }
        return capAlarmNum;
    }
    //管理元首页:基础资源信息
    public Response getBattInfoAnalysis(int userId) {
        return new Response().set(1);
    }
}
src/main/java/com/whyc/service/BatttestdataInfService.java
@@ -20,6 +20,7 @@
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
@Service
public class BatttestdataInfService {
@@ -258,4 +259,9 @@
        PageInfo pageInfo = new PageInfo(list);
        return new Response().setII(1, list.size() > 0 ? true : false, pageInfo, "统计时间段内设备的测试容量");
    }
    //测试信息
    public Response<Map> getTestdataInfAnalysis(int userId) {
        return new Response().set(1);
    }
}
src/main/java/com/whyc/service/Fbs9100StateService.java
@@ -16,7 +16,6 @@
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
@@ -185,9 +184,14 @@
                }
            }
            return response.setII(1,true,resultMap,null);
        }catch (Exception e){
            return response.set(1,false,"发生异常:"+e.getCause());
            return response.setII(1, true, resultMap, null);
        } catch (Exception e) {
            return response.set(1, false, "发生异常:" + e.getCause());
        }
    }
    //管理员首页:站点状态信息
    public Response getSateAnalysis(int userId) {
        return new Response().set(1);
    }
}
src/main/java/com/whyc/service/PowerInfService.java
@@ -1,22 +1,15 @@
package com.whyc.service;
import com.alibaba.druid.pool.WrapperAdapter;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.api.R;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.whyc.dto.Response;
import com.whyc.mapper.PowerInfMapper;
import com.whyc.mapper.PwrappAcdcinfMapper;
import com.whyc.pojo.PowerInf;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.io.Serializable;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -120,13 +113,19 @@
        PageInfo pageInfo=new PageInfo(list);
        return new Response().set(1,pageInfo);
    }
    //在线监测-实时监控-获取配电柜的实时数据
    public Response getPowerInfoById(int powerDeviceId) {
        //acdcinfMapper.getInfo(powerDeviceId);
        return  new Response().set(1);
        return new Response().set(1);
    }
    public int getNum(int userId) {
        return mapper.getNum(userId);
    }
    //管理员首页:电源信息
    public Response<Map> getPwrdevInfAnalysis(int userId) {
        return new Response().set(1);
    }
}
src/main/java/com/whyc/webSocket/HomeAdminSocket.java
New file
@@ -0,0 +1,175 @@
package com.whyc.webSocket;
import com.whyc.config.WebSocketConfig;
import com.whyc.dto.Response;
import com.whyc.factory.ThreadPoolExecutorFactory;
import com.whyc.pojo.Battinf;
import com.whyc.service.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.websocket.*;
import javax.websocket.server.ServerEndpoint;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
/**
 * 管理员首页
 */
@Component
@ServerEndpoint(value = "/homeAdmin", encoders = WebSocketEncoder.class, configurator = WebSocketConfig.class)
public class HomeAdminSocket {
    private Session session;
    private Thread thread;
    private static BattInfService battInfService;
    private static BadBattMonService badBattMonService;
    private static Fbs9100StateService fbs9100StateService;
    private static PowerInfService powerInfService;
    private static BatttestdataInfService batttestdataInfService;
    @Autowired
    public void setBattInfService(BattInfService battInfService) {
        HomeAdminSocket.battInfService = battInfService;
    }
    @Autowired
    public void setBadBattMonService(BadBattMonService badBattMonService) {
        HomeAdminSocket.badBattMonService = badBattMonService;
    }
    @Autowired
    public void setFbs9100StateService(Fbs9100StateService fbs9100StateService) {
        HomeAdminSocket.fbs9100StateService = fbs9100StateService;
    }
    @Autowired
    public void setPowerInfService(PowerInfService powerInfService) {
        HomeAdminSocket.powerInfService = powerInfService;
    }
    @Autowired
    public void setBatttestdataInfService(BatttestdataInfService batttestdataInfService) {
        HomeAdminSocket.batttestdataInfService = batttestdataInfService;
    }
    @OnOpen
    public void onOpen(Session session, EndpointConfig config) {
        this.session = session;
         /*HttpSession httpSession = (HttpSession) config.getUserProperties().get("httpSession");
        UserInf user = (UserInf) httpSession.getAttribute("user");
        final int userId = user.getUId().intValue();*/
        final int userId = 1001;
        Thread thread = new Thread() {
            @Override
            public void run() {
                try {
                    Map<String, Object> res = new HashMap<>();
                    while (!currentThread().isInterrupted()) {
                        ThreadPoolExecutor poolExecutor = ThreadPoolExecutorFactory.getPoolExecutor();
                        CountDownLatch latch = new CountDownLatch(7);
                        poolExecutor.execute(() -> {
                            //蓄电池优劣分析
                            Response resQualityAnalysis = badBattMonService.getQualityAnalysis(userId);
                            res.put("resQualityAnalysis", resQualityAnalysis);
                            latch.countDown();
                        });
                        poolExecutor.execute(() -> {
                            //基础资源信息
                            Response resBattInfoAnalysis = battInfService.getBattInfoAnalysis(userId);
                            res.put("resBattInfoAnalysis", resBattInfoAnalysis);
                            latch.countDown();
                        });
                        poolExecutor.execute(() -> {
                            //站点信息
                            Response resStateAnalysis = fbs9100StateService.getSateAnalysis(userId);
                            res.put("resStateAnalysis", resStateAnalysis);
                            latch.countDown();
                        });
                        poolExecutor.execute(() -> {
                            //不同品牌同一时间品质和同品牌同时间品质
                            Response resProductQuaAnalysis = badBattMonService.getProductQuaAnalysis(userId);
                            res.put("resProductQuaAnalysis", resProductQuaAnalysis);
                            latch.countDown();
                        });
                        poolExecutor.execute(() -> {
                            //电池信息
                            Response res_battGroupInfo = new Response();
                            try {
                                List<Battinf> battinfList = battInfService.getBattGroupList(userId);
                                Map<String, List<Battinf>> battProducerMap = battinfList.stream().collect(Collectors.groupingBy(Battinf::getBattProducer));
                                Map<Float, List<Battinf>> battMonVolStdMap = battinfList.stream().collect(Collectors.groupingBy(Battinf::getMonVolStd));
                                Map<String, Object> battGroupProducerMap = new HashMap<>();
                                Map<String, Object> battGroupMonVolMap = new HashMap<>();
                                Map<String, Object> battGroupInfoMap = new HashMap<>();
                                int battSize = battinfList.size();
                                for (String producer : battProducerMap.keySet()) {
                                    battGroupProducerMap.put(producer, battProducerMap.get(producer).size());
                                }
                                for (Float monVolStd : battMonVolStdMap.keySet()) {
                                    battGroupMonVolMap.put(Float.toString(monVolStd), battMonVolStdMap.get(monVolStd).size());
                                }
                                battGroupInfoMap.put("producer", battGroupProducerMap);
                                battGroupInfoMap.put("monVol", battGroupMonVolMap);
                                battGroupInfoMap.put("totalNum", battSize);
                                res_battGroupInfo.setII(1, true, battGroupInfoMap, null);
                            } catch (Exception e) {
                                res_battGroupInfo.set(1, false, "发生异常:" + e.getCause());
                            }
                            res.put("battGroupInfo", res_battGroupInfo);
                            latch.countDown();
                        });
                        poolExecutor.execute(() -> {
                            //电源信息
                            Response<Map> resPwrdevInfAnalysis = powerInfService.getPwrdevInfAnalysis(userId);
                            res.put("resPwrdevInfAnalysis", resPwrdevInfAnalysis);
                            latch.countDown();
                        });
                        poolExecutor.execute(() -> {
                            //测试信息
                            Response<Map> resTestdataInfAnalysis = batttestdataInfService.getTestdataInfAnalysis(userId);
                            res.put("resTestdataInfAnalysis", resTestdataInfAnalysis);
                            latch.countDown();
                        });
                        latch.await(10, TimeUnit.MINUTES);
                        session.getBasicRemote().sendObject(new Response().set(1, res));
                        sleep(4000);
                    }
                } catch (Exception e) {
                    this.interrupt();
                }
            }
        };
        thread.start();
        this.thread = thread;
    }
    @OnClose
    public void onClose(CloseReason closeReason) throws IOException {
        //System.err.println("closeReason = " + closeReason);
        if (session.isOpen()) {
            session.close();
        }
    }
    @OnError
    public void onError(Throwable error) throws IOException {
        //error.printStackTrace();
        thread.isInterrupted();
        if (session.isOpen()) {
            session.close();
        }
    }
}