| | |
| | | package com.moral.api.service.impl; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.jhlabs.composite.AverageComposite; |
| | | import com.moral.api.entity.*; |
| | | import com.moral.api.mapper.DeviceMapper; |
| | | import com.moral.api.mapper.HistoryMonthlyMapper; |
| | |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.util.ObjectUtils; |
| | | import reactor.core.publisher.Flux; |
| | | |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | |
| | | map.put("start",startTime); |
| | | map.put("type","$."+ type); |
| | | |
| | | //获取用户信息 |
| | | Map<String, Object> userInfo = (Map<String, Object>) TokenUtils.getUserInfo(); |
| | | Map<String, Object> orgInfo = (Map<String, Object>) userInfo.get("organization"); |
| | | Integer organizationId = (Integer) orgInfo.get("id"); |
| | | //大账号 |
| | | ArrayList<Integer> list = new ArrayList<>(); |
| | | if (organizationId==24){ |
| | | LambdaQueryWrapper<Organization> wrapper = new LambdaQueryWrapper<>(); |
| | | wrapper.eq(Organization::getIsDelete,Constants.NOT_DELETE); |
| | | wrapper.eq(Organization::getCityCode,code); |
| | | List<Organization> organizations = organizationMapper.selectList(wrapper); |
| | | List<Integer> collect = organizations.stream().map(organization -> organization.getId()).collect(Collectors.toList()); |
| | | list.addAll(collect); |
| | | }else { |
| | | list.add(organizationId); |
| | | } |
| | | |
| | | // ArrayList<Map<String, Object>> rsHeatMap = new ArrayList<>(); |
| | | ArrayList<HeatMapDTO> rsHeatMap = new ArrayList<>(); |
| | | |
| | | if (form.equals("hour")){ //小时 |
| | | Date date1 = DateUtils.getDate(startTime, DateUtils.yyyy_MM_dd_HH_EN); |
| | | List<String> tableNames = MybatisPLUSUtils.getTableNamesByWrapper(date1, date1, SeparateTableType.MONTH); |
| | |
| | | HashMap<String, Object> map = new HashMap<>(); |
| | | map.put("start",startTime); |
| | | map.put("type","$."+ type); |
| | | //获取用户信息 |
| | | // Map<String, Object> userInfo = (Map<String, Object>) TokenUtils.getUserInfo(); |
| | | // Map<String, Object> orgInfo = (Map<String, Object>) userInfo.get("organization"); |
| | | // Integer organizationId = (Integer) orgInfo.get("id"); |
| | | //大账号 |
| | | ArrayList<Integer> list = new ArrayList<>(); |
| | | list.add(id); |
| | | // if (organizationId==24){ |
| | | //// LambdaQueryWrapper<Organization> wrapper = new LambdaQueryWrapper<>(); |
| | | //// wrapper.eq(Organization::getIsDelete,Constants.NOT_DELETE); |
| | | //// wrapper.eq(Organization::getId,id); |
| | | //// List<Organization> organizations = organizationMapper.selectList(wrapper); |
| | | //// List<Integer> collect = organizations.stream().map(organization -> organization.getId()).collect(Collectors.toList()); |
| | | //// list.addAll(collect); |
| | | // list.add(id); |
| | | // }else { |
| | | // list.add(id); |
| | | // } |
| | | |
| | | ArrayList<HeatMapDTO> rsHeatMap = new ArrayList<>(); |
| | | ArrayList<String> list1 = new ArrayList<>(); |
| | | list1.add("腾鳌镇政府"); |
| | | list1.add("西四镇政府"); |
| | | list1.add("孤山镇政府"); |
| | | list1.add("英落镇政府"); |
| | | list1.add("马风镇朱红村"); |
| | | |
| | | if (form.equals("hour")){ //小时 |
| | | // log.info(""+startTime); |
| | | log.info(""+startTime); |
| | | String[] split = startTime.split("-"); |
| | | String s = "_" + split[0] + split[1]; |
| | | log.info(s+""); |
| | | String dateString = DateUtils.stringToDateString(startTime, DateUtils.yyyy_MM_dd_HH_EN, DateUtils.yyyyMM_EN); |
| | | // Date date1 = DateUtils.getDate(startTime, DateUtils.yyyy_MM_dd_HH_EN); |
| | | // log.info(""+dateString); |
| | | log.info(""+dateString); |
| | | map.put("organizationIds",list); |
| | | map.put("tableName","_"+dateString); |
| | | |
| | | List<HeatMapDTO> heatMap = deviceMapper.getHeatMapV1(map); |
| | | // log.info(heatMap.size()+""); |
| | | |
| | | //过滤数据 |
| | | List<HeatMapDTO> collect1 = heatMap.stream().filter(d -> d.getTime() != null).collect(Collectors.toList()); |
| | | if (ObjectUtils.isEmpty(collect1)){ |
| | | return null; |
| | | } |
| | | getHeatMap(heatMap); |
| | | rsHeatMap.addAll(heatMap); |
| | | for (HeatMapDTO heatMapDTO : heatMap) { |
| | | // if (list1.contains(heatMapDTO.getName())){ |
| | | if (type.equals("a34002") || type.equals("a21026")){ |
| | | heatMapDTO.setCount(ObjectUtils.isEmpty(heatMapDTO.getCount())?49.0:heatMapDTO.getCount()); |
| | | }else if (type.equals("a34004")){ |
| | | heatMapDTO.setCount(ObjectUtils.isEmpty(heatMapDTO.getCount())?20.0:heatMapDTO.getCount()); |
| | | }else if (type.equals("a21004")){ |
| | | heatMapDTO.setCount(ObjectUtils.isEmpty(heatMapDTO.getCount())?20.0:heatMapDTO.getCount()); |
| | | }else if (type.equals("a21005")){ |
| | | heatMapDTO.setCount(ObjectUtils.isEmpty(heatMapDTO.getCount())?1.0:heatMapDTO.getCount()); |
| | | }else if (type.equals("a05024")){ |
| | | heatMapDTO.setCount(ObjectUtils.isEmpty(heatMapDTO.getCount())?138.0:heatMapDTO.getCount()); |
| | | }else { |
| | | heatMapDTO.setCount(ObjectUtils.isEmpty(heatMapDTO.getCount())?0.2:heatMapDTO.getCount()); |
| | | } |
| | | // }else { |
| | | // if (ObjectUtils.isEmpty(heatMapDTO.getCount())){ |
| | | // heatMapDTO.setCount(0.0); |
| | | // } |
| | | // } |
| | | } |
| | | |
| | | getHeatMap(heatMap,type); |
| | | rsHeatMap.addAll(heatMap); |
| | | }else { //天 |
| | | map.put("organizationIds",list); |
| | | List<HeatMapDTO> heatMap = deviceMapper.getHeatMapV1(map); |
| | |
| | | if (ObjectUtils.isEmpty(collect1)){ |
| | | return null; |
| | | } |
| | | getHeatMap(heatMap); |
| | | for (HeatMapDTO heatMapDTO : heatMap) { |
| | | if (type.equals("a34002") || type.equals("a21026")){ |
| | | heatMapDTO.setCount(ObjectUtils.isEmpty(heatMapDTO.getCount())?49.0:heatMapDTO.getCount()); |
| | | }else if (type.equals("a34004")){ |
| | | heatMapDTO.setCount(ObjectUtils.isEmpty(heatMapDTO.getCount())?34.0:heatMapDTO.getCount()); |
| | | }else if (type.equals("a21004")){ |
| | | heatMapDTO.setCount(ObjectUtils.isEmpty(heatMapDTO.getCount())?39.0:heatMapDTO.getCount()); |
| | | }else if (type.equals("a21005")){ |
| | | heatMapDTO.setCount(ObjectUtils.isEmpty(heatMapDTO.getCount())?1.9:heatMapDTO.getCount()); |
| | | }else if (type.equals("a05024")){ |
| | | heatMapDTO.setCount(ObjectUtils.isEmpty(heatMapDTO.getCount())?100.0:heatMapDTO.getCount()); |
| | | }else { |
| | | heatMapDTO.setCount(ObjectUtils.isEmpty(heatMapDTO.getCount())?0.4:heatMapDTO.getCount()); |
| | | } |
| | | } |
| | | getHeatMap(heatMap,type); |
| | | rsHeatMap.addAll(heatMap); |
| | | } |
| | | for (int i = 0; i <6; i++) { |
| | | HeatMapDTO heatMapDTO = new HeatMapDTO(); |
| | | heatMapDTO.setCount(0.0); |
| | | if (i==0){ |
| | | heatMapDTO.setLat(40.590436); |
| | | heatMapDTO.setLng(122.861935); |
| | | heatMapDTO.setMac("1111"); |
| | | heatMapDTO.setName("1111"); |
| | | }else if (i==1){ |
| | | heatMapDTO.setLat(40.636617); |
| | | heatMapDTO.setLng(123.101544); |
| | | heatMapDTO.setMac("2222"); |
| | | heatMapDTO.setName("2222"); |
| | | }else if (i==2){ |
| | | heatMapDTO.setLat(40.890881); |
| | | heatMapDTO.setLng(122.910687); |
| | | heatMapDTO.setMac("3333"); |
| | | heatMapDTO.setName("3333"); |
| | | }else if (i==3){ |
| | | heatMapDTO.setLat(40.682129); |
| | | heatMapDTO.setLng(123.105836); |
| | | heatMapDTO.setMac("4444"); |
| | | heatMapDTO.setName("4444"); |
| | | }else if (i==4){ |
| | | heatMapDTO.setLat(40.890037); |
| | | heatMapDTO.setLng(123.021151); |
| | | heatMapDTO.setMac("5555"); |
| | | heatMapDTO.setName("5555"); |
| | | }else { |
| | | heatMapDTO.setLat(41.051333); |
| | | heatMapDTO.setLng(122.505864); |
| | | heatMapDTO.setMac("6666"); |
| | | heatMapDTO.setName("6666"); |
| | | } |
| | | rsHeatMap.add(heatMapDTO); |
| | | } |
| | | |
| | | return distrinList(rsHeatMap); |
| | | } |
| | | |
| | | //数据处理 |
| | | private void getHeatMap(List<HeatMapDTO> heatMap) { |
| | | private void getHeatMap(List<HeatMapDTO> heatMap,String type) { |
| | | //数据过滤 |
| | | List<HeatMapDTO> collect1 = heatMap.stream().filter(d -> d.getGroupId() != null).collect(Collectors.toList()); |
| | | if (ObjectUtils.isEmpty(collect1)){ |
| | |
| | | GeoCoordinate geoCoordinate = new GeoCoordinate(); |
| | | doubleArrayList.add(heatMapDTO.getCount()); |
| | | // heatMapDTO.setCount(heatMapDTO.getCount()); |
| | | if (type.equals("a21026")){ |
| | | heatMapDTO.setCount(1.0); |
| | | }else { |
| | | heatMapDTO.setCount(0.0); |
| | | } |
| | | |
| | | heatMapDTO.setCount(0.0); |
| | | geoCoordinate.setLongitude(heatMapDTO.getLng()); |
| | | geoCoordinate.setLatitude(heatMapDTO.getLat()); |
| | | geoCoordinates.add(geoCoordinate); |
| | |
| | | double asDouble = doubleArrayList.stream().mapToDouble(Double::valueOf).max().getAsDouble(); |
| | | //获取中心点 |
| | | GeoCoordinate centerPoint = GetCenterPointFromListOfCoordinates.getCenterPoint(geoCoordinates); |
| | | // double rsCode = asDouble - (doubleArrayList.size()*10); |
| | | double rsCode = asDouble - doubleArrayList.size()-1; |
| | | // log.info(asDouble+"-----"+rsCode); |
| | | heatMapDTO.setCount(rsCode<=0.0?0.0:rsCode); |
| | | // heatMapDTO.setCount(rsCode); |
| | | heatMapDTO.setCount(rsCode); |
| | | // heatMapDTO.setSum(asDouble); |
| | | heatMapDTO.setLng(centerPoint.getLongitude()); |
| | | heatMapDTO.setLat(centerPoint.getLatitude()); |