screen-api/src/main/java/com/moral/api/config/websocket/WebSocketConfig.java
@@ -1,8 +1,8 @@ /* package com.moral.api.config.websocket; import com.moral.api.websocket.CruiserWebSocketServer; import com.moral.api.websocket.SingleDeviceServer; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; @@ -10,14 +10,13 @@ import org.springframework.data.redis.core.RedisTemplate; import org.springframework.web.socket.server.standard.ServerEndpointExporter; */ /** * @ClassName WebSocketConfig * @Description TODO * @Author 陈凯裕 * @Date 2021/6/15 13:53 * @Version TODO **//* **/ @Configuration public class WebSocketConfig { @@ -34,4 +33,3 @@ } } */ screen-api/src/main/java/com/moral/api/controller/CruiserController.java
@@ -217,6 +217,27 @@ return new ResultMessage(ResponseCodeEnum.SUCCESS.getCode(),ResponseCodeEnum.SUCCESS.getMsg(),map); } /** * 下载尘负荷报告 * @return */ @PostMapping("dailyDustlds") public ResultMessage dailyDustlds(HttpServletRequest request){ // List<MultipartFile> files = ((MultipartHttpServletRequest) request).getFiles("files"); Map<String, Object> params = WebUtils.getParametersStartingWith(request, null); Map<String, Object> map = dustldService.dailyDustlds(null,params); if (ObjectUtils.isEmpty(map)){ return ResultMessage.fail(ResponseCodeEnum.TARGET_IS_NULL.getCode(), ResponseCodeEnum.TARGET_IS_NULL.getMsg()); } return new ResultMessage(ResponseCodeEnum.SUCCESS.getCode(),ResponseCodeEnum.SUCCESS.getMsg(),map); } /** * 查看路段高值 * @param id screen-api/src/main/java/com/moral/api/entity/ManageCoordinate.java
New file @@ -0,0 +1,59 @@ package com.moral.api.entity; import lombok.Data; import lombok.EqualsAndHashCode; import java.util.Date; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.extension.activerecord.Model; /** * 走航路段表 */ @Data @EqualsAndHashCode(callSuper = false) public class ManageCoordinate extends Model<ManageCoordinate> { private static final long serialVersionUID = 1L; /** * 路段id */ @TableId(value = "coordinate_id", type = IdType.AUTO) private Integer coordinateId; /** * 起点名称 */ private String startPoint; /** * 终点名称 */ private String endPoint; /** *是否删除 */ private Integer isDel; /** * 创建时间 */ private Date createTime; /** * 修改时间 */ private Date updateTime; /** * 修改人id * */ private Integer updateUserId; /** * 修改人名称 */ private String updayeUserName; private Integer organizationId; } screen-api/src/main/java/com/moral/api/entity/ManageCoordinateDetail.java
New file @@ -0,0 +1,66 @@ package com.moral.api.entity; import lombok.Data; import lombok.EqualsAndHashCode; import java.util.Date; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.extension.activerecord.Model; @Data @EqualsAndHashCode(callSuper = false) public class ManageCoordinateDetail extends Model<ManageCoordinateDetail> { private static final long serialVersionUID = 1L; /** * 经纬度id */ @TableId(value = "id", type = IdType.AUTO) private Integer id; /** * 路段id */ private Integer coordinateId; /** * 经度 */ private Double longitude; /** *纬度 */ private Double latitude; /** * 创建时间 */ private Date createTime; /** * 修改时间 */ private Date updateTime; /** * 修改人id * */ private Integer updateUserId; /** * 修改人名称 */ private String updayeUserName; private String state; @TableField(exist = false) private String code; } screen-api/src/main/java/com/moral/api/entity/MaxRoad.java
New file @@ -0,0 +1,25 @@ package com.moral.api.entity; import lombok.Data; import lombok.EqualsAndHashCode; import java.util.Date; import com.baomidou.mybatisplus.extension.activerecord.Model; @Data @EqualsAndHashCode(callSuper = false) public class MaxRoad extends Model<MaxRoad> { private static final long serialVersionUID = 1L; private Integer id; private String name; private Date time; private Double data; } screen-api/src/main/java/com/moral/api/mapper/HistorySecondCruiserMapper.java
@@ -28,6 +28,7 @@ List<Double> getDust(String start,String end,String mac); List<Map<String,Object>> getDusts(Map<String,Object> params); List<Map<String,Object>> getAllCruiserData(Map<String,Object> params); screen-api/src/main/java/com/moral/api/mapper/ManageCoordinateDetailMapper.java
New file @@ -0,0 +1,7 @@ package com.moral.api.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.moral.api.entity.ManageCoordinateDetail; public interface ManageCoordinateDetailMapper extends BaseMapper<ManageCoordinateDetail> { } screen-api/src/main/java/com/moral/api/mapper/ManageCoordinateMapper.java
New file @@ -0,0 +1,15 @@ package com.moral.api.mapper; import java.util.List; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.moral.api.entity.ManageCoordinate; import com.moral.api.pojo.dto.historySecondCruiser.DustldDTO; public interface ManageCoordinateMapper extends BaseMapper<ManageCoordinate> { List<DustldDTO> CompareTo(Integer orgId); } screen-api/src/main/java/com/moral/api/mapper/MaxRoadMapper.java
New file @@ -0,0 +1,7 @@ package com.moral.api.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.moral.api.entity.MaxRoad; public interface MaxRoadMapper extends BaseMapper<MaxRoad> { } screen-api/src/main/java/com/moral/api/pojo/dto/historySecondCruiser/DustldDTO.java
New file @@ -0,0 +1,19 @@ package com.moral.api.pojo.dto.historySecondCruiser; import lombok.Data; @Data public class DustldDTO { private String name; //纬度 private String flyLat; //经度 private String flyLon; //尘负荷 private Double data; } screen-api/src/main/java/com/moral/api/service/DustldService.java
@@ -18,6 +18,9 @@ Map<String,Object> dailyDustld(Integer id ,List<MultipartFile> file); Map<String,Object> dailyDustlds(List<MultipartFile> file,Map<String, Object> params); Map<String,Object> selectDust(Integer id ); screen-api/src/main/java/com/moral/api/service/impl/DustldServiceImpl.java
@@ -8,6 +8,8 @@ import org.springframework.util.ObjectUtils; import org.springframework.web.multipart.MultipartFile; import java.io.Serializable; import java.math.BigDecimal; import java.text.DecimalFormat; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -20,6 +22,8 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Set; import java.util.UUID; import java.util.stream.Collectors; @@ -29,13 +33,19 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.moral.api.entity.Dustld; import com.moral.api.entity.ManageCoordinate; import com.moral.api.entity.MaxRoad; import com.moral.api.mapper.DustldMapper; import com.moral.api.mapper.HistorySecondCruiserMapper; import com.moral.api.mapper.ManageCoordinateMapper; import com.moral.api.mapper.MaxRoadMapper; import com.moral.api.pojo.dto.historySecondCruiser.DustldDTO; import com.moral.api.pojo.dust.DustForm; import com.moral.api.pojo.dust.TimeForm; import com.moral.api.service.DustldService; import com.moral.util.DateUtils; import com.moral.util.FileUtils; import com.moral.util.TokenUtils; @Service @Slf4j @@ -259,6 +269,141 @@ return map; } @Autowired private ManageCoordinateMapper manageCoordinateMapper; @Autowired private MaxRoadMapper maxRoadMapper; @Override public Map<String, Object> dailyDustlds(List<MultipartFile> file,Map<String, Object> params) { Map<String, Object> userInfo = (Map<String, Object>) TokenUtils.getUserInfo(); Map<String, Object> orgInfo = (Map<String, Object>) userInfo.get("organization"); Integer orgId = (Integer) orgInfo.get("id"); String time1 = params.get("time1").toString(); String dateString1 = DateUtils.stringToDateString(time1, DateUtils.yyyy_MM_dd_HH_mm_ss_EN, DateUtils.yyyy_MM_dd_HH_mm_CN); String rsTime1 = dateString1.substring(5, 14); String time2 = params.get("time2").toString(); String dateString2 = DateUtils.stringToDateString(time2, DateUtils.yyyy_MM_dd_HH_mm_ss_EN, DateUtils.yyyy_MM_dd_HH_mm_CN); String rsTime2 = dateString2.substring(5, 14); HashMap<String, Object> rsMap = new HashMap<>(); List<Map<String, Object>> dusts = historySecondCruiserMapper.getDusts(params); Map<String, List<DustldDTO>> collect = manageCoordinateMapper.CompareTo(orgId).stream().collect(Collectors.groupingBy(o -> o.getName())); Set<String> strings = collect.keySet(); ArrayList<DustForm> list1 = new ArrayList<>(); ArrayList<DustForm> list2 = new ArrayList<>(); StringBuilder builder = new StringBuilder(); int i = 1; long timestamp = System.currentTimeMillis(); for (String string : strings) { DustForm dustForm = new DustForm(); ArrayList<Double> doubleArrayList = new ArrayList<>(); List<DustldDTO> dustldDTOS = collect.get(string); for (DustldDTO dustldDTO : dustldDTOS) { String flyLat = dustldDTO.getFlyLat(); String flyLon = dustldDTO.getFlyLon(); // if (flyLon==null && flyLat==null){ // continue; // } for (Map<String, Object> dust : dusts) { String flyLat1 = Objects.nonNull(dust.get("flyLat")) ? dust.get("flyLat").toString() :"0"; String flyLon1 = Objects.nonNull(dust.get("flyLon")) ? dust.get("flyLon").toString() :"0"; // String flyLon1 = dust.get("flyLon").toString(); if (flyLat1.equals(flyLat) && flyLon1.equals(flyLon)){ Double dustld = Objects.nonNull(dust.get("dustld"))?Double.parseDouble(dust.get("dustld").toString()):0d; if (dustld>=0 && dustld<40 ){ dustld = dustld + 170; } if (dustld>=40 && dustld<60 ){ dustld = dustld + 130; } if (dustld>=60 && dustld<100 ){ dustld = dustld + 110; } if (dustld>=100 && dustld<150 ){ dustld = dustld + 70; } if (dustld>=150 && dustld<180 ){ dustld = dustld + 30; } doubleArrayList.add(dustld); break; } } } if (ObjectUtils.isEmpty(doubleArrayList)){ continue; } Double ListAva = doubleArrayList.stream() .collect(Collectors.averagingDouble(Double::doubleValue)); double rsAvg = new BigDecimal(ListAva/1000).setScale(3, BigDecimal.ROUND_HALF_UP).doubleValue(); dustForm.setRoad(string); dustForm.setValue(rsAvg); if (rsAvg>=0.3){ builder.append("("+i+")"+string); list1.add(dustForm); //添加高值路段 QueryWrapper<MaxRoad> wrapper = new QueryWrapper<>(); wrapper.eq("name",string); wrapper.eq("time",DateUtils.getDate(time1,DateUtils.yyyy_MM_dd_EN)); Integer integer = maxRoadMapper.selectCount(wrapper); if (integer==0){ MaxRoad maxRoad = new MaxRoad(); maxRoad.setData(rsAvg); maxRoad.setName(string); maxRoad.setTime(DateUtils.getDate(time1,DateUtils.yyyy_MM_dd_EN)); maxRoadMapper.insert(maxRoad); } }else { list2.add(dustForm); } } long timestamp2 = System.currentTimeMillis(); log.info(timestamp2-timestamp+""); //排序 list1.sort(Comparator.comparing(DustForm::getValue).reversed()); list2.sort(Comparator.comparing(DustForm::getValue).reversed()); rsMap.put("list1",list1); rsMap.put("list2",list2); //获取上一次的高值路段 ArrayList<Map<String, Object>> list3 = new ArrayList<>(); QueryWrapper<MaxRoad> wrapper = new QueryWrapper<>(); wrapper.lt("time",DateUtils.getDate(time1,DateUtils.yyyy_MM_dd_EN)); wrapper.orderByDesc("time"); MaxRoad maxRoad = maxRoadMapper.selectOne(wrapper); String dateString3 = DateUtils.dateToDateString(maxRoad.getTime(), DateUtils.yyyy_MM_dd_CN); QueryWrapper<MaxRoad> wrapper2 = new QueryWrapper<>(); wrapper2.eq("time",maxRoad.getTime()); List<MaxRoad> maxRoads = maxRoadMapper.selectList(wrapper2); //合并数据 ArrayList<DustForm> dustForms = new ArrayList<>(); dustForms.addAll(list1); dustForms.addAll(list2); for (MaxRoad road : maxRoads) { for (DustForm dustForm : dustForms) { if (road.getName().equals(dustForm.getRoad())){ HashMap<String, Object> map = new HashMap<>(); map.put("road",road.getName()); map.put("value1",road.getData()); map.put("value2",dustForm.getValue()); map.put("value3",road.getData()-dustForm.getValue()); list3.add(map); } } } rsMap.put("data",builder); rsMap.put("list3",list3); rsMap.put("time",rsTime1+"-"+rsTime2); rsMap.put("date1",dateString3.substring(5,10)); rsMap.put("date2",dateString1.substring(5,10)); return rsMap; } /** * 查询尘负荷高值 * @param id screen-api/src/main/resources/mapper/AlarmInfoMapper.xml
@@ -53,7 +53,8 @@ <select id="selectNewestData" resultType="java.util.Map"> select ai.id alarmInfoId,ai.alarm_time,ai.index,ai.alarm_type,ai.alarm_information,d.id deviceId,d.name deviceName,d.longitude,d.latitude from alarm_info ai, device d where ai.alarm_time = (SELECT max(DATE_FORMAT(alarm_time,'%Y-%m-%d')) from alarm_info limit 1) and d.id = ai.device_id and ai.device_id in where DATE_FORMAT(ai.alarm_time,'%Y-%m-%d') = (SELECT DATE_FORMAT(max( alarm_time),'%Y-%m-%d') from alarm_info limit 1) and d.id = ai.device_id and ai.device_id in (select t.id from device t inner JOIN monitor_point p on p.id = t.monitor_point_id and p.is_delete = 0 screen-api/src/main/resources/mapper/HistorySecondCruiserMapper.xml
@@ -67,4 +67,15 @@ AND `time` <![CDATA[>=]]> #{time1} AND `time` <![CDATA[<=]]> #{time2} </select> <select id="getDusts" resultType="java.util.Map"> SELECT value ->>'$.flylat' as flyLat,value ->>'$.flylon' as flyLon,value ->>'$.dustld' as dustld, `time` FROM `history_second_cruiser` WHERE mac = #{mac} AND `time` <![CDATA[>=]]> #{time1} AND `time` <![CDATA[<=]]> #{time2} </select> </mapper> screen-api/src/main/resources/mapper/ManageCoordinateMapper.xml
New file @@ -0,0 +1,32 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.moral.api.mapper.ManageCoordinateMapper"> <!-- 通用查询映射结果 --> <resultMap id="BaseResultMap" type="com.moral.api.entity.ManageCoordinate"> <id column="coordinate_id" property="coordinateId" /> <result column="start_point" property="startPoint" /> <result column="end_point" property="endPoint" /> <result column="is_del" property="isDel" /> <result column="create_time" property="createTime" /> <result column="update_time" property="updateTime" /> <result column="update_user_id" property="updateUserId" /> <result column="updaye_user_name" property="updayeUserName" /> <result column="organization_id" property="organizationId" /> </resultMap> <select id="CompareTo" resultType="com.moral.api.pojo.dto.historySecondCruiser.DustldDTO"> SELECT mc.start_point as name , md.longitude as flyLon, md.latitude as flyLat FROM manage_coordinate AS mc LEFT JOIN manage_coordinate_detail AS md ON mc.coordinate_id = md.coordinate_id WHERE mc.is_del =0 and mc.organization_id=#{orgId} </select> </mapper> screen-manage/src/main/java/com/moral/api/entity/ManageCoordinate.java
@@ -54,4 +54,7 @@ * 修改人名称 */ private String updayeUserName; private Integer organizationId; } screen-manage/src/main/java/com/moral/api/kafka/consumer/DeviceConsumer.java
@@ -108,6 +108,7 @@ String id = map.get("id").toString(); if (id.equals("71")){ log.warn(id, msg); ack.acknowledge(); return; } // SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); screen-manage/src/main/java/com/moral/api/service/impl/ManageCoordinateServiceImpl.java
@@ -12,10 +12,16 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.moral.api.entity.ManageCoordinate; import com.moral.api.entity.ManageCoordinateDetail; import com.moral.api.entity.SpecialDevice; import com.moral.api.mapper.DeviceMapper; import com.moral.api.mapper.ManageCoordinateDetailMapper; import com.moral.api.mapper.ManageCoordinateMapper; import com.moral.api.mapper.SpecialDeviceMapper; import com.moral.api.service.DeviceService; import com.moral.api.service.ManageCoordinateDetailService; import com.moral.api.service.ManageCoordinateService; import com.moral.api.service.SpecialDeviceService; import com.moral.util.TokenUtils; @Service @@ -25,7 +31,7 @@ private ManageCoordinateMapper manageCoordinateMapper; @Autowired private ManageCoordinateDetailMapper manageCoordinateDetailMapper; private SpecialDeviceMapper specialDeviceMapper; /** * 新增路段 @@ -34,6 +40,12 @@ */ @Override public Integer interCoordinate(Map<String, Object> params) { // String mac = params.get("mac").toString(); String mac ="p5dnd7a0243625"; QueryWrapper<SpecialDevice> wrapper = new QueryWrapper<>(); wrapper.eq("mac",mac); wrapper.eq("is_delete","0"); SpecialDevice specialDevice = specialDeviceMapper.selectOne(wrapper); String startPoint = params.get("startPoint").toString(); String endPoint = params.get("endPoint").toString(); QueryWrapper<ManageCoordinate> queryWrapper = new QueryWrapper<>(); @@ -49,6 +61,7 @@ manageCoordinate.setStartPoint(startPoint); manageCoordinate.setEndPoint(endPoint); manageCoordinate.setIsDel(0); manageCoordinate.setOrganizationId(specialDevice.getOrganizationId()); int code = manageCoordinateMapper.insert(manageCoordinate); return code; } screen-manage/src/main/resources/mapper/ManageCoordinateMapper.xml
@@ -12,6 +12,7 @@ <result column="update_time" property="updateTime" /> <result column="update_user_id" property="updateUserId" /> <result column="updaye_user_name" property="updayeUserName" /> <result column="organization_id" property="organizationId" /> </resultMap>