| | |
| | | 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; |
| | |
| | | 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 |
| | |
| | | /** |
| | | * 模糊查询 |
| | | */ |
| | | 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) { |
| | |
| | | * |
| | | * @return |
| | | */ |
| | | @Async("taskExecutor") |
| | | public YSY_MonitorDto.MonitorDto getMonitorInfo_Async(String deviceSerial) { |
| | | 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", deviceSerial); |
| | | 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); |
| | | return monitorDto.getData(); |
| | | System.out.println(s + " ----------"); |
| | | monitor.setEquipmentState(monitorDto.getData().getStatus()); |
| | | countDownLatch.countDown(); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | monitor.setEquipmentState(0); |
| | | countDownLatch.countDown(); |
| | | } |
| | | return null; |
| | | } |
| | | }; |
| | | t.start(); |
| | | |
| | | } |
| | | |
| | | /** |