dao/src/main/java/com/sandu/ximon/dao/mapper/MonitorMapper.java
@@ -10,9 +10,9 @@ @Mapper public interface MonitorMapper extends BaseMapper<Monitor> { List<MonitorBo> listMonitorByIds(List<String> list, int bindingState, int equipmentState); List<MonitorBo> listMonitorByIds(List<String> list, int equipmentState); List<Monitor> listMonitorDeviceSerial1(Long userid, String keyword); List<MonitorBo> listMonitorDeviceSerial1(Long userid, String keyword, int bindingState); } dao/src/main/resources/mapper/MonitorMapper.xml
@@ -35,17 +35,15 @@ #{deviceCode} </foreach> </if> <if test="bindingState != 2"> AND t1.binding_state = #{bindingState} </if> <if test="equipmentState != 2"> AND t1.equipment_state = #{equipmentState} </if> </where> </select> <select id="listMonitorDeviceSerial1" resultType="com.sandu.ximon.dao.domain.Monitor"> <select id="listMonitorDeviceSerial1" resultType="com.sandu.ximon.dao.bo.MonitorBo"> SELECT t1.* t1.*, t2.pole_id, t3.pole_name, t3.province,t3.city,t3.region,t3.address FROM monitor t1 LEFT JOIN pole_binding t2 ON t1.device_serial = t2.device_code @@ -61,6 +59,9 @@ OR t1.note LIKE CONCAT(CONCAT('%', #{keyword}), '%') OR t3.pole_code LIKE CONCAT(CONCAT('%', #{keyword}), '%')) </if> <if test="bindingState != 2"> AND t1.binding_state = #{bindingState} </if> </where> </select> ximon-admin/src/main/java/com/sandu/ximon/admin/AdminApplication.java
@@ -5,7 +5,6 @@ import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.transaction.annotation.EnableTransactionManagement; @EnableAsync @SpringBootApplication(scanBasePackages = {"com.sandu.ximon.admin","com.sandu.common","com.sandu.ximon.dao"}) public class AdminApplication { ximon-admin/src/main/java/com/sandu/ximon/admin/controller/MonitorController.java
@@ -1,5 +1,6 @@ package com.sandu.ximon.admin.controller; import com.sandu.common.domain.CommonPage; import com.sandu.common.domain.ResponseVO; import com.sandu.common.execption.BusinessException; import com.sandu.common.object.BaseConditionVO; @@ -40,14 +41,14 @@ } //è¿åæ¥è¯¢çæå头信æ¯å表 List<MonitorBo> listresult; CommonPage commonPage; if (monitorParam == null) { listresult = monitorService.listMonitorByKeyword(baseConditionVO, new MonitorParam()); commonPage = monitorService.listMonitorByKeyword(baseConditionVO, new MonitorParam()); } else { listresult = monitorService.listMonitorByKeyword(baseConditionVO, monitorParam); commonPage = monitorService.listMonitorByKeyword(baseConditionVO, monitorParam); } return ResponseUtil.successPage(listresult); return ResponseUtil.success(commonPage); } ximon-admin/src/main/java/com/sandu/ximon/admin/service/LightReportDataService.java
@@ -131,6 +131,7 @@ CommonPage commonPage = CommonPage.restPage(lightReportDataBos); commonPage.setTotal(stringCommonPage.getTotal()); commonPage.setTotalPage(stringCommonPage.getTotalPage()); commonPage.setPageNum(pageNo); return commonPage; } ximon-admin/src/main/java/com/sandu/ximon/admin/service/MonitorService.java
@@ -4,12 +4,13 @@ import cn.hutool.http.HttpUtil; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.github.pagehelper.PageHelper; import com.sandu.common.domain.CommonPage; import com.sandu.common.execption.BusinessException; import com.sandu.common.object.BaseConditionVO; import com.sandu.common.service.impl.BaseServiceImpl; import com.sandu.ximon.admin.param.MonitorParam; import com.sandu.ximon.admin.security.SecurityUtils; import com.sandu.ximon.admin.utils.ListPagingUtils; import com.sandu.ximon.dao.bo.MonitorBo; import com.sandu.ximon.dao.domain.Monitor; import com.sandu.ximon.admin.dto.YSY_AccessTokenDto; @@ -17,13 +18,13 @@ import com.sandu.ximon.dao.domain.PoleBinding; import com.sandu.ximon.dao.mapper.MonitorMapper; import lombok.AllArgsConstructor; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.CountDownLatch; @Service @AllArgsConstructor @@ -53,47 +54,53 @@ /** * æ¨¡ç³æ¥è¯¢ */ public List<MonitorBo> listMonitorByKeyword(BaseConditionVO baseConditionVO, MonitorParam monitorParam) { List<Monitor> list; if (SecurityUtils.getClientId() == null) { list = monitorMapper.listMonitorDeviceSerial1(null, monitorParam.getKeyword()); } else { list = monitorMapper.listMonitorDeviceSerial1(SecurityUtils.getUserId(), monitorParam.getKeyword()); } //æ²¡ææ°æ®æ¶åç´æ¥è¿å空æ°ç» if (list.size() == 0 || list == null) { List<MonitorBo> nullList = new ArrayList<>(); return nullList; } List<String> device_serialList = new ArrayList<>(list.size()); for (Monitor demo : list) { device_serialList.add(demo.getDeviceSerial()); YSY_MonitorDto.MonitorDto monitorInfo = getMonitorInfo_Async(demo.getDeviceSerial()); if (monitorInfo != null) { demo.setEquipmentState(monitorInfo.getStatus()); } } updateBatchById(list); if (baseConditionVO != null) { PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize()); } List<MonitorBo> monitorList; public CommonPage listMonitorByKeyword(BaseConditionVO baseConditionVO, MonitorParam monitorParam) { //ç»å®ç¶æï¼å·²ç»å®/æªç»å®/å ¨é¨ if (monitorParam.getBindingState() == null) { //å ¨é¨ monitorParam.setBindingState(2); } List<MonitorBo> list; if (SecurityUtils.getClientId() == null) { list = monitorMapper.listMonitorDeviceSerial1(null, monitorParam.getKeyword(), monitorParam.getBindingState()); } else { list = monitorMapper.listMonitorDeviceSerial1(SecurityUtils.getUserId(), monitorParam.getKeyword(), monitorParam.getBindingState()); } //æ²¡ææ°æ®æ¶åç´æ¥è¿å空æ°ç» if (list.size() == 0 || list == null) { return new CommonPage(); } List<String> device_serialList = new ArrayList<>(list.size()); CountDownLatch latch = new CountDownLatch(list.size()); for (Monitor demo : list) { device_serialList.add(demo.getDeviceSerial()); getMonitorInfo_Async(demo, latch); } try { latch.await(); } catch (InterruptedException e) { e.printStackTrace(); } if (monitorParam.getEquipmentState() == null) { //å ¨é¨ monitorParam.setEquipmentState(2); } monitorList = monitorMapper.listMonitorByIds(device_serialList, monitorParam.getBindingState(), monitorParam.getEquipmentState()); List<MonitorBo> temp = new ArrayList<>(); if (monitorParam.getEquipmentState() == 2) { temp.addAll(list); } else { for (MonitorBo monitorBo : list) { //çéç¶ææ°æ® if (monitorBo.getEquipmentState().equals(monitorParam.getEquipmentState())) { temp.add(monitorBo); } } } return monitorList; CommonPage commonPage = ListPagingUtils.pages(temp, baseConditionVO.getPageNo(), baseConditionVO.getPageSize()); return commonPage; } public Monitor getYSYMonitorInfoAndaddMonitorToTable(String deviceSerial) { @@ -169,21 +176,29 @@ * * @return */ @Async("taskExecutor") public YSY_MonitorDto.MonitorDto getMonitorInfo_Async(String deviceSerial) { String token = getAccessToken(); Map<String, Object> paramMap = new HashMap<>(); paramMap.put("accessToken", token); paramMap.put("deviceSerial", deviceSerial); String s = HttpUtil.post(YSY_URL + GET_DEVICE_URL, paramMap); YSY_MonitorDto monitorDto = null; try { monitorDto = JSON.parseObject(s, YSY_MonitorDto.class); return monitorDto.getData(); } catch (Exception e) { e.printStackTrace(); } return null; public void getMonitorInfo_Async(Monitor monitor, CountDownLatch countDownLatch) { Thread t = new Thread() { @Override public void run() { String token = getAccessToken(); Map<String, Object> paramMap = new HashMap<>(); paramMap.put("accessToken", token); paramMap.put("deviceSerial", monitor.getDeviceSerial()); String s = HttpUtil.post(YSY_URL + GET_DEVICE_URL, paramMap); YSY_MonitorDto monitorDto = null; try { monitorDto = JSON.parseObject(s, YSY_MonitorDto.class); System.out.println(s + " ----------"); monitor.setEquipmentState(monitorDto.getData().getStatus()); countDownLatch.countDown(); } catch (Exception e) { monitor.setEquipmentState(0); countDownLatch.countDown(); } } }; t.start(); } /** ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleService.java
@@ -167,9 +167,9 @@ MonitorParam monitorParam = new MonitorParam(); monitorParam.setEquipmentState(2); monitorParam.setBindingState(2); List<MonitorBo> monitorBos = SpringContextHolder.getBean(MonitorService.class).listMonitorByKeyword(null, monitorParam); List<MonitorBo> monitorBos = SpringContextHolder.getBean(MonitorService.class).listMonitorByKeyword(null, monitorParam).getList(); monitorParam.setEquipmentState(1); List<MonitorBo> online = SpringContextHolder.getBean(MonitorService.class).listMonitorByKeyword(null, monitorParam); List<MonitorBo> online = SpringContextHolder.getBean(MonitorService.class).listMonitorByKeyword(null, monitorParam).getList(); result.put("monitorOnlineCount", online.size()); result.put("monitorTotalCount", monitorBos.size()); ximon-admin/src/main/java/com/sandu/ximon/admin/utils/ListPagingUtils.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,47 @@ package com.sandu.ximon.admin.utils; import com.sandu.common.domain.CommonPage; import com.sandu.ximon.dao.bo.MonitorBo; import org.apache.poi.ss.formula.functions.T; import java.util.ArrayList; import java.util.List; /** * @author ZZQ * @date 2022/4/29 10:47 */ public class ListPagingUtils { public static CommonPage pages(List list, Integer pageNo, Integer pageSize) { CommonPage commonPage; //å¼å§æªæä½ç½® int fromIndex = (pageNo - 1) * pageSize; //ç»ææªæä½ç½® int toIndex = fromIndex + pageSize; //æ»é¡µæ° int totalPage = (int) Math.ceil(list.size() * 1.0 / pageSize); //ç»ææªæä½ç½®å¤§äºlistæ»é¿åº¦æ¶ï¼ç»ææªæä½ç½®çäºlistæåä¸ä½é¿åº¦ if (toIndex > list.size()) { toIndex = list.size(); } //æ¥è¯¢ç页æ°å¤§äºæ»é¡µæ°ï¼ç´æ¥è¿å空æ°ç» if (pageNo > totalPage || fromIndex > list.size()) { commonPage = CommonPage.restPage(new ArrayList<>()); commonPage.setTotal(Long.valueOf(list.size())); commonPage.setTotalPage(totalPage); commonPage.setPageNum(pageNo); commonPage.setPageSize(pageSize); return commonPage; } else { commonPage = CommonPage.restPage(list.subList(fromIndex, toIndex)); commonPage.setTotal(Long.valueOf(list.size())); commonPage.setTotalPage(totalPage); commonPage.setPageNum(pageNo); commonPage.setPageSize(pageSize); return commonPage; } } }