From 36844dfeea0914de1138be9ebdf27c92d745d73a Mon Sep 17 00:00:00 2001 From: jinpengyong <jpy123456> Date: Thu, 07 Mar 2024 15:58:54 +0800 Subject: [PATCH] fix:断线统计补充提交 --- screen-api/src/main/java/com/moral/api/pojo/vo/monitorPoint/MonitorPointVos.java | 40 ++++++++++ screen-api/src/main/java/com/moral/api/controller/DeviceOnlineRateController.java | 12 ++- screen-api/src/main/java/com/moral/api/mapper/DeviceMapper.java | 5 + screen-api/src/main/java/com/moral/api/controller/OrganizationController.java | 8 ++ screen-api/src/main/java/com/moral/api/mapper/MonitorPointMapper.java | 2 screen-api/src/main/java/com/moral/api/dto/OnlineRatePageCond.java | 5 screen-api/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java | 59 +++++++++++++- screen-api/src/main/java/com/moral/api/service/DeviceService.java | 8 + screen-api/src/main/java/com/moral/api/service/OrganizationService.java | 1 screen-api/src/main/java/com/moral/api/service/impl/OrganizationServiceImpl.java | 58 +++++++++++++- screen-api/src/main/java/com/moral/api/entity/Organization.java | 11 ++ screen-api/src/main/resources/mapper/MonitorPointMapper.xml | 5 + screen-api/src/main/resources/mapper/DeviceMapper.xml | 12 ++ 13 files changed, 204 insertions(+), 22 deletions(-) diff --git a/screen-api/src/main/java/com/moral/api/controller/DeviceOnlineRateController.java b/screen-api/src/main/java/com/moral/api/controller/DeviceOnlineRateController.java index 0f52f13..eb4e6ab 100644 --- a/screen-api/src/main/java/com/moral/api/controller/DeviceOnlineRateController.java +++ b/screen-api/src/main/java/com/moral/api/controller/DeviceOnlineRateController.java @@ -13,10 +13,10 @@ import java.util.List; import java.util.Map; import javax.validation.Valid; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.moral.api.dto.OnlineRatePageCond; import com.moral.api.service.DeviceService; import com.moral.api.vo.OnlineRateVo; +import com.moral.constant.ResponseCodeEnum; import com.moral.constant.ResultMessage; /** @@ -55,10 +55,14 @@ - @GetMapping("state") + @PostMapping("state") @ApiOperation("���������������") - public ResultMessage state(Integer organizationId){ - Map<String, Object> start = deviceService.getStart(organizationId); + public ResultMessage state(@RequestBody Map<String, Object> params){ + if (!params.containsKey("macs")) { + return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg()); + } + List<String> macs = (List<String>) params.get("macs"); + Map<String, Object> start = deviceService.getStart(macs); return ResultMessage.ok(start); } } diff --git a/screen-api/src/main/java/com/moral/api/controller/OrganizationController.java b/screen-api/src/main/java/com/moral/api/controller/OrganizationController.java index 58fdf2c..ac56f25 100644 --- a/screen-api/src/main/java/com/moral/api/controller/OrganizationController.java +++ b/screen-api/src/main/java/com/moral/api/controller/OrganizationController.java @@ -86,4 +86,12 @@ List<Organization> organizations = organizationService.getOrganizationId(); return ResultMessage.ok(ObjectUtils.isEmpty(organizations)?"0":organizations); } + + + @GetMapping("queryDevices") + @ApiOperation("������������������") + public ResultMessage queryDevices(){ + List<Organization> organizations = organizationService.queryDevices(); + return ResultMessage.ok(organizations); + } } diff --git a/screen-api/src/main/java/com/moral/api/dto/OnlineRatePageCond.java b/screen-api/src/main/java/com/moral/api/dto/OnlineRatePageCond.java index 84bee9b..712e4d2 100644 --- a/screen-api/src/main/java/com/moral/api/dto/OnlineRatePageCond.java +++ b/screen-api/src/main/java/com/moral/api/dto/OnlineRatePageCond.java @@ -7,6 +7,7 @@ import lombok.experimental.Accessors; import java.io.Serializable; +import java.util.List; import com.moral.api.pojo.query.PageCond; @@ -25,8 +26,8 @@ public class OnlineRatePageCond implements Serializable { - @ApiModelProperty(value = "������id") - private Integer organizationId; + @ApiModelProperty(value = "������������") + private List<String> macs; // @ApiModelProperty(value = "������������") // private PageCond page; diff --git a/screen-api/src/main/java/com/moral/api/entity/Organization.java b/screen-api/src/main/java/com/moral/api/entity/Organization.java index cbc3b98..cbe07b6 100644 --- a/screen-api/src/main/java/com/moral/api/entity/Organization.java +++ b/screen-api/src/main/java/com/moral/api/entity/Organization.java @@ -1,10 +1,13 @@ package com.moral.api.entity; import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.extension.activerecord.Model; import com.baomidou.mybatisplus.annotation.TableId; -import java.io.Serializable; +import com.moral.api.pojo.vo.monitorPoint.MonitorPointVos; + import java.util.Date; +import java.util.List; import lombok.Data; import lombok.EqualsAndHashCode; @@ -124,5 +127,9 @@ */ private String isDelete; - + /** + * ������������ + */ + @TableField(exist = false) + private List<MonitorPointVos> monitorPoint; } diff --git a/screen-api/src/main/java/com/moral/api/mapper/DeviceMapper.java b/screen-api/src/main/java/com/moral/api/mapper/DeviceMapper.java index 0ef8f55..459da41 100644 --- a/screen-api/src/main/java/com/moral/api/mapper/DeviceMapper.java +++ b/screen-api/src/main/java/com/moral/api/mapper/DeviceMapper.java @@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.moral.api.pojo.dto.dataDisplay.HeatMapDTO; import com.moral.api.pojo.vo.device.AppDeviceVo; +import com.moral.api.pojo.vo.device.DeviceVO; import com.moral.api.vo.OnlineRateVo; import io.lettuce.core.dynamic.annotation.Param; @@ -52,6 +53,8 @@ Page<OnlineRateVo> getPage(Page page, @Param("organizationId")Integer organizationId); //������������������������ - List<OnlineRateVo> getLists(@Param("organizationId")Integer organizationId,@Param("state")Integer state); + List<OnlineRateVo> getLists(List<String> macs,@Param("state")Integer state); + + List<DeviceVO> getListVo(Integer monitorPointId); } diff --git a/screen-api/src/main/java/com/moral/api/mapper/MonitorPointMapper.java b/screen-api/src/main/java/com/moral/api/mapper/MonitorPointMapper.java index 107aaed..359abd5 100644 --- a/screen-api/src/main/java/com/moral/api/mapper/MonitorPointMapper.java +++ b/screen-api/src/main/java/com/moral/api/mapper/MonitorPointMapper.java @@ -4,6 +4,7 @@ import com.moral.api.entity.MonitorPoint; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.moral.api.pojo.vo.monitorPoint.MonitorPointVos; /** * <p> @@ -17,4 +18,5 @@ List<Integer> getMonitorPointiId(Integer id); + List<MonitorPointVos> getMonitorPoint(Integer id); } diff --git a/screen-api/src/main/java/com/moral/api/pojo/vo/monitorPoint/MonitorPointVos.java b/screen-api/src/main/java/com/moral/api/pojo/vo/monitorPoint/MonitorPointVos.java new file mode 100644 index 0000000..b947405 --- /dev/null +++ b/screen-api/src/main/java/com/moral/api/pojo/vo/monitorPoint/MonitorPointVos.java @@ -0,0 +1,40 @@ +package com.moral.api.pojo.vo.monitorPoint; + +import lombok.Data; + +import java.util.List; + +import com.moral.api.pojo.vo.device.DeviceVO; + +/** + * Description //todo + * + * @author swb + * @ClassName MonitorPointVos + * @date 2024.03.07 14:23 + */ +@Data +public class MonitorPointVos { + + private Integer id; + + private Integer organizationId; + + private String name; + + private Double longitude; + + private Double latitude; + + private String state; + + private Integer provinceCode; + + private Integer cityCode; + + private Integer areaCode; + + private String address; + + private List<DeviceVO> monitorPoint; +} diff --git a/screen-api/src/main/java/com/moral/api/service/DeviceService.java b/screen-api/src/main/java/com/moral/api/service/DeviceService.java index fdb62f1..b5b3bd8 100644 --- a/screen-api/src/main/java/com/moral/api/service/DeviceService.java +++ b/screen-api/src/main/java/com/moral/api/service/DeviceService.java @@ -87,8 +87,12 @@ Map<String,Object> detail(String mac,String startTime,String endTime, String type); - - Map<String,Object> getStart(Integer organizationId); + /** + * ��������������� + * @param macs + * @return + */ + Map<String,Object> getStart(List<String> macs); Map<String,Object> detailV1(String mac,String startTime,String endTime, String type); diff --git a/screen-api/src/main/java/com/moral/api/service/OrganizationService.java b/screen-api/src/main/java/com/moral/api/service/OrganizationService.java index 559b4e5..5f78975 100644 --- a/screen-api/src/main/java/com/moral/api/service/OrganizationService.java +++ b/screen-api/src/main/java/com/moral/api/service/OrganizationService.java @@ -51,4 +51,5 @@ List<Organization> getOrganizationId(); + List<Organization> queryDevices(); } diff --git a/screen-api/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java index 2d779fd..8763d27 100644 --- a/screen-api/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java +++ b/screen-api/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java @@ -350,7 +350,7 @@ Date startDate = DateUtils.getDate(startTime,DateUtils.yyyy_MM_dd_HH_mm_ss_EN); Date endDate = DateUtils.getDate(endTime,DateUtils.yyyy_MM_dd_HH_mm_ss_EN); List<String> tableNames = MybatisPLUSUtils.getTableNamesByWrapper(startDate, endDate, SeparateTableType.MONTH); - for (String mac:macs) { +/* for (String mac:macs) { Map<String, Object> mapParams = new HashMap<>(); mapParams.put("startDate",startDate); mapParams.put("endDate",endDate); @@ -384,6 +384,56 @@ historyHourlyMap.put("time",timeStr); list.add(historyHourlyMap); } + }*/ + + + for (String mac:macs) { + Map<String, Object> mapParams = new HashMap<>(); + mapParams.put("startDate",startDate); + mapParams.put("endDate",endDate); + mapParams.put("mac",mac); + List<HistoryFiveMinutely> HistoryFiveMinutelys = FiveMinuteTableQuery(mapParams, tableNames); + HistoryFiveMinutelys = HistoryFiveMinutelys.stream().distinct().collect(Collectors.toList()); + List<HistoryFiveMinutely> distinctHistoryHourlies = new ArrayList<>(); + Map<String, Object> disMap = new HashMap<>(); + for (HistoryFiveMinutely historyFiveMinutely:HistoryFiveMinutelys) { + Date time = historyFiveMinutely.getTime(); + String timeStr = DateUtils.dateToDateString(time,DateUtils.yyyy_MM_dd_HH_mm_EN); + if (!disMap.containsKey(timeStr)){ + distinctHistoryHourlies.add(historyFiveMinutely); + disMap.put(timeStr,true); + } + } + for (HistoryFiveMinutely historyFiveMinutely:distinctHistoryHourlies) { + Map<String,Object> historyHourlyMap = new HashMap<>(); + historyHourlyMap.put("mac",mac); + JSONObject value= JSONObject.parseObject(historyFiveMinutely.getValue()); + Double sensorValue = Objects.nonNull(value)&&Objects.nonNull(value.get(sensorCode))?Double.parseDouble(value.get(sensorCode).toString()):0d; + historyHourlyMap.put(sensorCode,sensorValue); + Date time = historyFiveMinutely.getTime(); + String timeStr = DateUtils.dateToDateString(time, DateUtils.yyyy_MM_dd_HH_mm_EN); + historyHourlyMap.put("time",timeStr); + list.add(historyHourlyMap); + } + } + Date middleDate = DateUtils.getDate(startTime,DateUtils.yyyy_MM_dd_HH_mm_EN); + while (DateUtils.compareDateStr(endTime,DateUtils.dateToDateString(middleDate,DateUtils.yyyy_MM_dd_HH_mm_EN),DateUtils.yyyy_MM_dd_HH_mm_EN)<=0){ + for (String mac:macs) { + boolean flag = true; + for (Map map:list) { + if (map.get("time").equals(DateUtils.dateToDateString(middleDate, DateUtils.yyyy_MM_dd_HH_mm_EN)) && map.get("mac").toString().equals(mac.toString())){ + flag = false; + } + } + if (flag){ + Map<String,Object> historyHourlyMap = new HashMap<>(); + historyHourlyMap.put("mac",mac); + historyHourlyMap.put(sensorCode,"0.0"); + historyHourlyMap.put("time",DateUtils.dateToDateString(middleDate,DateUtils.yyyy_MM_dd_HH_mm_EN)); + list.add(historyHourlyMap); + } + } + middleDate = DateUtils.getDateOfMin(middleDate,5); } } for (Map map:list) { @@ -558,7 +608,8 @@ long hour = (diff / nh)+1; //������������������������ Map<String, List<OnlineRateVo>> collectList=new HashMap<>(); - List<OnlineRateVo> OnlineRateVoList = deviceMapper.getLists(onlineRatePageCond.getOrganizationId(),onlineRatePageCond.getState()); +// List<OnlineRateVo> OnlineRateVoList = deviceMapper.getLists(onlineRatePageCond.getOrganizationId(),onlineRatePageCond.getState()); + List<OnlineRateVo> OnlineRateVoList = deviceMapper.getLists(onlineRatePageCond.getMacs(),onlineRatePageCond.getState()); if (!ObjectUtils.isEmpty(OnlineRateVoList)){ for (OnlineRateVo onlineRateVo : OnlineRateVoList) { @@ -972,9 +1023,9 @@ } @Override - public Map<String,Object> getStart(Integer organizationId) { + public Map<String,Object> getStart(List<String> macs) { HashMap<String, Object> map = new HashMap<>(); - List<OnlineRateVo> lists = deviceMapper.getLists(organizationId, null); + List<OnlineRateVo> lists = deviceMapper.getLists(macs, null); if (!ObjectUtils.isEmpty(lists)){ Map<String, List<OnlineRateVo>> collect = lists.stream().collect(Collectors.groupingBy(OnlineRateVo::getState)); int size1 = lists.size(); diff --git a/screen-api/src/main/java/com/moral/api/service/impl/OrganizationServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/OrganizationServiceImpl.java index 8f75d49..bc6608c 100644 --- a/screen-api/src/main/java/com/moral/api/service/impl/OrganizationServiceImpl.java +++ b/screen-api/src/main/java/com/moral/api/service/impl/OrganizationServiceImpl.java @@ -2,23 +2,21 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.moral.api.config.Interceptor.UserHelper; -import com.moral.api.entity.MonitorPoint; import com.moral.api.entity.Organization; +import com.moral.api.mapper.DeviceMapper; import com.moral.api.mapper.MonitorPointMapper; import com.moral.api.mapper.OrganizationMapper; -import com.moral.api.pojo.vo.user.QxUser; +import com.moral.api.pojo.vo.device.DeviceVO; +import com.moral.api.pojo.vo.monitorPoint.MonitorPointVos; import com.moral.api.service.DeviceService; -import com.moral.api.service.MonitorPointService; import com.moral.api.service.OrganizationService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.moral.constant.Constants; import com.moral.util.TokenUtils; - +import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.ObjectUtils; - import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -36,6 +34,13 @@ @Autowired OrganizationMapper organizationMapper; + + @Autowired + MonitorPointMapper monitorPointMapper; + + + @Autowired + DeviceMapper deviceMapper; @@ -107,4 +112,45 @@ } return rsList; } + + /** + * ������������������ + * @return + */ + @Override + public List<Organization> queryDevices() { + 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"); + LambdaQueryWrapper<Organization> wrapper = new LambdaQueryWrapper<>(); + wrapper.select(Organization::getId,Organization::getAddress,Organization::getAreaName,Organization::getName); + wrapper.eq(Organization::getIsDelete,Constants.NOT_DELETE); + wrapper.orderByDesc(Organization::getCreateTime); + List<Organization> organizations; + if (organizationId==24){ + wrapper.eq(Organization::getParentId,organizationId); + organizations = organizationMapper.selectList(wrapper); + }else { + wrapper.eq(Organization::getId,organizationId); + organizations = organizationMapper.selectList(wrapper); + } + if (CollectionUtils.isNotEmpty(organizations)){ + organizations.forEach(it ->{ + //������������ +// QueryWrapper<MonitorPoint> queryMonitorPointsWrapper = new QueryWrapper<>(); +// queryMonitorPointsWrapper.eq("organization_id", it.getId()); +// queryMonitorPointsWrapper.eq("is_delete", Constants.NOT_DELETE); +// List<MonitorPoint> monitorPoints = monitorPointMapper.selectList(queryMonitorPointsWrapper); + List<MonitorPointVos> monitorPoints = monitorPointMapper.getMonitorPoint(it.getId()); + //��������������������������� + for (MonitorPointVos monitorPoint : monitorPoints) { +// List<Device> devices = deviceService.getDevicesByMonitorPointId(monitorPoint.getId()); + List<DeviceVO> listVo = deviceMapper.getListVo(monitorPoint.getId()); + monitorPoint.setMonitorPoint(listVo); + } + it.setMonitorPoint(monitorPoints); + } ); + } + return organizations; + } } diff --git a/screen-api/src/main/resources/mapper/DeviceMapper.xml b/screen-api/src/main/resources/mapper/DeviceMapper.xml index 24526c4..570004a 100644 --- a/screen-api/src/main/resources/mapper/DeviceMapper.xml +++ b/screen-api/src/main/resources/mapper/DeviceMapper.xml @@ -276,7 +276,13 @@ <select id="getLists" resultType="com.moral.api.vo.OnlineRateVo"> - select d.name,d.state,d.mac from device as d where organization_id=#{organizationId} and is_delete=0 + select d.name,d.state,d.mac from device as d where is_delete=0 + <if test="macs != null and macs.size !=0"> + and mac in + <foreach collection="macs" item="mac" index="index" open="(" close=")" separator=","> + #{mac} + </foreach> + </if> <if test="state !=null and state == 0" > and state=#{state} </if> @@ -284,4 +290,8 @@ and state<![CDATA[>=]]>#{state} </if> </select> + + <select id="getListVo" resultType="com.moral.api.pojo.vo.device.DeviceVO"> + select * from device where monitor_point_id=#{monitorPointId} and is_delete=0 + </select> </mapper> \ No newline at end of file diff --git a/screen-api/src/main/resources/mapper/MonitorPointMapper.xml b/screen-api/src/main/resources/mapper/MonitorPointMapper.xml index 4b975ee..4efdee7 100644 --- a/screen-api/src/main/resources/mapper/MonitorPointMapper.xml +++ b/screen-api/src/main/resources/mapper/MonitorPointMapper.xml @@ -25,4 +25,9 @@ select id from monitor_point where organization_id=#{id} and is_delete=0 </select> + <select id="getMonitorPoint" resultType="com.moral.api.pojo.vo.monitorPoint.MonitorPointVos"> + select * from monitor_point where organization_id=#{id} and is_delete=0 + </select> + + </mapper> \ No newline at end of file -- Gitblit v1.8.0