| | |
| | | import com.whyc.pojo.db_user.UserInf; |
| | | import com.whyc.service.AreaInfService; |
| | | import com.whyc.service.LockCtlLogService; |
| | | import com.whyc.service.LockInfService; |
| | | import com.whyc.service.UserInfService; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Component; |
| | |
| | | |
| | | private Thread thread; |
| | | |
| | | private HttpSession httpSession; |
| | | |
| | | private static LockCtlLogService ctlLogService; |
| | | |
| | | private static AreaInfService ainfService; |
| | | |
| | | @Autowired |
| | | public void setLockCtlLogService(LockCtlLogService ctlLogService) { |
| | | HomeSocket.ctlLogService = ctlLogService; |
| | | } |
| | | |
| | | @Autowired |
| | | public void setAreaInfServicee(AreaInfService ainfService) { |
| | | HomeSocket.ainfService = ainfService; |
| | | } |
| | | |
| | | |
| | | @OnOpen |
| | | public void onOpen(Session session, EndpointConfig config) { |
| | | this.session = session; |
| | | this.httpSession = (HttpSession) config.getUserProperties().get("httpSession"); |
| | | } |
| | | |
| | | @OnMessage |
| | | public void onMessage(Session session, String message){ |
| | | /* UserInf user = (UserInf) this.httpSession.getAttribute("user"); |
| | | HttpSession httpSession = (HttpSession) config.getUserProperties().get("httpSession"); |
| | | UserInf user = (UserInf) httpSession.getAttribute("user"); |
| | | final int userId = user.getUid(); |
| | | final int urole = user.getUrole(); |
| | | Thread thread = new Thread() { |
| | | /*final int userId = 10001; |
| | | final int urole = 1;*/ |
| | | Thread thread = new Thread("Thread_HomeSocket") { |
| | | @Override |
| | | public void run() { |
| | | try { |
| | | Map<String, Object> res = new HashMap<>(); |
| | | |
| | | while (!currentThread().isInterrupted()) { |
| | | ThreadPoolExecutor poolExecutor = ThreadPoolExecutorFactory.getPoolExecutor(); |
| | | CountDownLatch latch = new CountDownLatch(7); |
| | | //分组统计前10开锁次数 |
| | | poolExecutor.execute(() -> { |
| | | Response resGroupCtlCount = ainfService.getGroupCtlCount(userId,urole); |
| | | res.put("resGroupCtlCount", resGroupCtlCount); |
| | | latch.countDown(); |
| | | }); |
| | | poolExecutor.execute(() -> { |
| | | //基础资源信息 |
| | | Response resBattInfoAnalysis = battInfService.getBattInfoAnalysis(userId); |
| | | res.put("resBattInfoAnalysis", resBattInfoAnalysis); |
| | | latch.countDown(); |
| | | }); |
| | | poolExecutor.execute(() -> { |
| | | //站点信息 |
| | | Response resStationAnalysis = new Response(); |
| | | |
| | | res.put("resStationAnalysis", resStationAnalysis); |
| | | latch.countDown(); |
| | | }); |
| | | poolExecutor.execute(() -> { |
| | | //不同品牌同一时间品质和同品牌同时间品质 |
| | | Response resProductQuaAnalysis = badBattMonService.getProductQuaAnalysis(userId); |
| | | res.put("resProductQuaAnalysis", resProductQuaAnalysis); |
| | | latch.countDown(); |
| | | }); |
| | | poolExecutor.execute(() -> { |
| | | //电池信息 |
| | | Response res_battGroupInfo = new Response(); |
| | | |
| | | res.put("battGroupInfo", res_battGroupInfo); |
| | | latch.countDown(); |
| | | }); |
| | | poolExecutor.execute(() -> { |
| | | //电源信息 |
| | | Response resPwrdevInfAnalysis = new Response(); |
| | | |
| | | res.put("resPwrdevInfAnalysis", resPwrdevInfAnalysis); |
| | | latch.countDown(); |
| | | }); |
| | | poolExecutor.execute(() -> { |
| | | //测试信息 |
| | | Response resTestdataInfAnalysis = batttestdataInfService.getTestdataInfAnalysis(userId); |
| | | res.put("resTestdataInfAnalysis", resTestdataInfAnalysis); |
| | | latch.countDown(); |
| | | }); |
| | | latch.await(10, TimeUnit.MINUTES); |
| | | session.getBasicRemote().sendObject(new Response().set(1, res)); |
| | | sleep(5000); |
| | | while (!currentThread().isInterrupted()) { |
| | | Map<String, Object> res = sendHome(userId,urole); |
| | | session.getBasicRemote().sendObject(new Response().set(1, res)); |
| | | sleep(5000); |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | | this.interrupt(); |
| | |
| | | } |
| | | }; |
| | | thread.start(); |
| | | this.thread = thread;*/ |
| | | this.thread = thread; |
| | | } |
| | | //推送数据 |
| | | public Map<String, Object> sendHome(int userId,int urole) { |
| | | Map<String, Object> res = new HashMap<>(); |
| | | try { |
| | | ThreadPoolExecutor poolExecutor = ThreadPoolExecutorFactory.getPoolExecutor(); |
| | | CountDownLatch latch = new CountDownLatch(6); |
| | | poolExecutor.execute(() -> { |
| | | //锁的工作状态 |
| | | Response resLockState = ainfService.getLockState(userId,urole); |
| | | res.put("resLockState", resLockState); |
| | | latch.countDown(); |
| | | }); |
| | | poolExecutor.execute(() -> { |
| | | //屏柜类型 |
| | | Response resScreenBox = ainfService.getScreenBoxType(userId,urole); |
| | | res.put("resScreenBox", resScreenBox); |
| | | latch.countDown(); |
| | | }); |
| | | poolExecutor.execute(() -> { |
| | | //lock的使用频次 |
| | | Response resReport = ainfService.getReport(userId,urole); |
| | | res.put("resReport", resReport); |
| | | latch.countDown(); |
| | | }); |
| | | poolExecutor.execute(() -> { |
| | | //实时开锁信息(失败) |
| | | Response resErrorCtlLog = ainfService.getErrorCtlog(userId,urole); |
| | | res.put("resErrorCtlLog", resErrorCtlLog); |
| | | latch.countDown(); |
| | | }); |
| | | poolExecutor.execute(() -> { |
| | | //实时开锁信息(全部) |
| | | Response resAllCtlLog = ainfService.getAllCtlLog(userId,urole); |
| | | res.put("resAllCtlLog", resAllCtlLog); |
| | | latch.countDown(); |
| | | }); |
| | | poolExecutor.execute(() -> { |
| | | //地图顶部的管理的区域包含子区域 |
| | | Response resAllAinf = ainfService.getHomeAllAinf(userId,urole); |
| | | res.put("resAllAinf", resAllAinf); |
| | | latch.countDown(); |
| | | }); |
| | | latch.await(4, TimeUnit.MINUTES); |
| | | } catch (InterruptedException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | return res; |
| | | } |
| | | |
| | | @OnClose |