From 2f3b185bf448a18d61a0dfae4e97b22c3f4cdef7 Mon Sep 17 00:00:00 2001 From: kaiyu <404897439@qq.com> Date: Tue, 31 Aug 2021 13:06:54 +0800 Subject: [PATCH] Merge branch 'dev' of http://blit.7drlb.com:8888/r/moral into dev --- screen-job/src/main/java/com/moral/api/service/HistoryHourlyService.java | 12 ++ screen-manage/src/main/java/com/moral/api/controller/OrganizationLayoutController.java | 14 +++ screen-job/src/main/java/com/moral/api/service/impl/HistoryDailyServiceImpl.java | 11 +- screen-manage/src/main/java/com/moral/api/service/impl/OrganizationLayoutServiceImpl.java | 79 +++++++++++++++++++ screen-job/src/main/java/com/moral/api/mapper/HistoryHourlyMapper.java | 10 ++ screen-job/src/main/java/com/moral/api/service/impl/HistoryHourlyServiceImpl.java | 31 +++++-- screen-job/src/main/resources/mapper/HistoryHourlyMapper.xml | 29 +++++- screen-manage/src/main/java/com/moral/api/service/OrganizationLayoutService.java | 10 ++ screen-job/src/main/java/com/moral/api/task/CreateTableTask.java | 20 +++++ 9 files changed, 189 insertions(+), 27 deletions(-) diff --git a/screen-job/src/main/java/com/moral/api/mapper/HistoryHourlyMapper.java b/screen-job/src/main/java/com/moral/api/mapper/HistoryHourlyMapper.java index 7c12510..26ed4ca 100644 --- a/screen-job/src/main/java/com/moral/api/mapper/HistoryHourlyMapper.java +++ b/screen-job/src/main/java/com/moral/api/mapper/HistoryHourlyMapper.java @@ -1,9 +1,9 @@ package com.moral.api.mapper; import java.util.List; +import java.util.Map; import com.moral.api.entity.HistoryHourly; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** * <p> @@ -13,10 +13,16 @@ * @author moral * @since 2021-06-28 */ -public interface HistoryHourlyMapper extends BaseMapper<HistoryHourly> { +public interface HistoryHourlyMapper { + + void createTable(String timeUnits); void insertHistoryHourly(List<HistoryHourly> list); + Integer selectCountByTime(Map<String, Object> params); + + List<Map<String, Object>> selectDailyData(Map<String, Object> params); + } diff --git a/screen-job/src/main/java/com/moral/api/service/HistoryHourlyService.java b/screen-job/src/main/java/com/moral/api/service/HistoryHourlyService.java index 9e847bd..2485f04 100644 --- a/screen-job/src/main/java/com/moral/api/service/HistoryHourlyService.java +++ b/screen-job/src/main/java/com/moral/api/service/HistoryHourlyService.java @@ -1,7 +1,7 @@ package com.moral.api.service; -import com.moral.api.entity.HistoryHourly; -import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; +import java.util.Map; /** * <p> @@ -11,9 +11,15 @@ * @author moral * @since 2021-06-28 */ -public interface HistoryHourlyService extends IService<HistoryHourly> { +public interface HistoryHourlyService { + + //��������������� + void createTable(String timeUnits); //������������������������ void insertHistoryHourly(); + //��������������������������� + List<Map<String, Object>> selectDailyData(Map<String, Object> params); + } diff --git a/screen-job/src/main/java/com/moral/api/service/impl/HistoryDailyServiceImpl.java b/screen-job/src/main/java/com/moral/api/service/impl/HistoryDailyServiceImpl.java index 10fa56c..a3d4154 100644 --- a/screen-job/src/main/java/com/moral/api/service/impl/HistoryDailyServiceImpl.java +++ b/screen-job/src/main/java/com/moral/api/service/impl/HistoryDailyServiceImpl.java @@ -3,7 +3,6 @@ import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.moral.api.entity.HistoryDaily; -import com.moral.api.entity.HistoryHourly; import com.moral.api.entity.Sensor; import com.moral.api.mapper.HistoryDailyMapper; import com.moral.api.service.HistoryDailyService; @@ -63,9 +62,13 @@ List<Sensor> sensors = sensorService.list(sensorQueryWrapper); //������������������������������ - QueryWrapper<HistoryHourly> historyHourlyQueryWrapper = new QueryWrapper<>(); - historyHourlyQueryWrapper.ge("time", DateUtils.dateToDateString(start)).le("time", DateUtils.dateToDateString(end)); - List<Map<String, Object>> dailyData = historyHourlyService.listMaps(historyHourlyQueryWrapper); + Map<String, Object> prop = new HashMap<>(); + String timeUnits = DateUtils.dateToDateString(start, DateUtils.yyyyMM_EN); + prop.put("timeUnits", timeUnits); + prop.put("start", DateUtils.dateToDateString(start)); + prop.put("end", DateUtils.dateToDateString(end)); + List<Map<String, Object>> dailyData = historyHourlyService.selectDailyData(prop); + if (dailyData.size() == 0) { return; } diff --git a/screen-job/src/main/java/com/moral/api/service/impl/HistoryHourlyServiceImpl.java b/screen-job/src/main/java/com/moral/api/service/impl/HistoryHourlyServiceImpl.java index a02a67f..8f5f0b5 100644 --- a/screen-job/src/main/java/com/moral/api/service/impl/HistoryHourlyServiceImpl.java +++ b/screen-job/src/main/java/com/moral/api/service/impl/HistoryHourlyServiceImpl.java @@ -7,7 +7,6 @@ import com.moral.api.mapper.HistoryHourlyMapper; import com.moral.api.mapper.HistoryMinutelyMapper; import com.moral.api.service.HistoryHourlyService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.moral.api.service.SensorService; import com.moral.constant.Constants; import com.moral.constant.RedisConstants; @@ -39,7 +38,7 @@ * @since 2021-06-28 */ @Service -public class HistoryHourlyServiceImpl extends ServiceImpl<HistoryHourlyMapper, HistoryHourly> implements HistoryHourlyService { +public class HistoryHourlyServiceImpl implements HistoryHourlyService { @Autowired private HistoryHourlyMapper historyHourlyMapper; @@ -54,6 +53,11 @@ private SensorService sensorService; @Override + public void createTable(String timeUnits) { + historyHourlyMapper.createTable(timeUnits); + } + + @Override public void insertHistoryHourly() { //������������������yyyy-MM-dd HH:mm String format = DateUtils.yyyy_MM_dd_HH_EN; @@ -64,16 +68,18 @@ Date now = new Date(); String time = DateUtils.dateToDateString(now, format) + ":00:00"; - QueryWrapper<HistoryHourly> queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("time", time); //������������������������������������������������macs������������������������������ - Integer count = historyHourlyMapper.selectCount(queryWrapper); - if (macs.size() > count) { + Map<String, Object> prop = new HashMap<>(); + prop.put("timeUnits", DateUtils.getDateStringOfMon(0, DateUtils.yyyyMM_EN)); + prop.put("time", time); + Integer count = historyHourlyMapper.selectCountByTime(prop); + + if (macs.size() <= count) { + return; + } else { macs.removeIf(mac -> { - queryWrapper.clear(); - queryWrapper.eq("time", time); - queryWrapper.eq("mac", mac); - Integer num = historyHourlyMapper.selectCount(queryWrapper); + prop.put("mac", mac); + Integer num = historyHourlyMapper.selectCountByTime(prop); return num != 0; }); } @@ -213,4 +219,9 @@ //��������������� historyHourlyMapper.insertHistoryHourly(insertData); } + + @Override + public List<Map<String, Object>> selectDailyData(Map<String, Object> params) { + return historyHourlyMapper.selectDailyData(params); + } } diff --git a/screen-job/src/main/java/com/moral/api/task/CreateTableTask.java b/screen-job/src/main/java/com/moral/api/task/CreateTableTask.java index c8f4795..3b1fab3 100644 --- a/screen-job/src/main/java/com/moral/api/task/CreateTableTask.java +++ b/screen-job/src/main/java/com/moral/api/task/CreateTableTask.java @@ -4,6 +4,7 @@ import org.springframework.stereotype.Component; import com.moral.api.service.HistoryFiveMinutelyService; +import com.moral.api.service.HistoryHourlyService; import com.moral.api.service.HistoryMinutelyService; import com.moral.constant.Constants; import com.moral.util.DateUtils; @@ -19,6 +20,9 @@ @Autowired private HistoryMinutelyService historyMinutelyService; + + @Autowired + private HistoryHourlyService historyHourlyService; //��������������������� @@ -49,4 +53,20 @@ } return ReturnT.SUCCESS; } + + //��������������������� + @XxlJob("createHistoryHourlyTable") + public ReturnT createHistoryHourlyTable() { + String timeUnits = DateUtils.getDateStringOfMon(1, DateUtils.yyyyMM_EN); + try { + //������������������ + historyHourlyService.createTable(timeUnits); + //������������������ + historyHourlyService.createTable(timeUnits + "_" + Constants.UN_ADJUST); + } catch (Exception e) { + XxlJobHelper.log(e.getMessage()); + return new ReturnT(ReturnT.FAIL_CODE, e.getMessage()); + } + return ReturnT.SUCCESS; + } } diff --git a/screen-job/src/main/resources/mapper/HistoryHourlyMapper.xml b/screen-job/src/main/resources/mapper/HistoryHourlyMapper.xml index 9f9c679..bd1b0e3 100644 --- a/screen-job/src/main/resources/mapper/HistoryHourlyMapper.xml +++ b/screen-job/src/main/resources/mapper/HistoryHourlyMapper.xml @@ -2,13 +2,14 @@ <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.moral.api.mapper.HistoryHourlyMapper"> - <!-- ������������������������ --> - <resultMap id="BaseResultMap" type="com.moral.api.entity.HistoryHourly"> - <result column="mac" property="mac"/> - <result column="time" property="time"/> - <result column="value" property="value"/> - <result column="version" property="version"/> - </resultMap> + <update id="createTable" parameterType="String"> + CREATE TABLE IF NOT EXISTS `history_hourly_${timeUnits}` ( + `mac` VARCHAR (20) DEFAULT NULL COMMENT '������mac', + `time` datetime DEFAULT NULL COMMENT '������������', + `value` json DEFAULT NULL COMMENT '������', + KEY `idx_mac_time` (`mac`,`time`) + ) ENGINE=INNODB DEFAULT CHARSET=utf8 COMMENT '���������������' + </update> <insert id="insertHistoryHourly"> INSERT INTO history_hourly VALUES @@ -16,4 +17,18 @@ (#{item.mac}, #{item.time}, #{item.value}, #{item.version}) </foreach> </insert> + + <select id="selectCountByTime" resultType="java.lang.Integer"> + SELECT COUNT(1) FROM history_hourly_${timeUnits} WHERE `time` = #{time} + <if test="mac != null"> + AND mac = #{mac} + </if> + </select> + + <select id="selectDailyData" resultType="java.util.Map"> + SELECT mac, `value` + FROM history_hourly_${timeUnits} + WHERE `time` <![CDATA[>=]]> #{start} + AND `time` <![CDATA[<]]> #{end} + </select> </mapper> \ No newline at end of file diff --git a/screen-manage/src/main/java/com/moral/api/controller/OrganizationLayoutController.java b/screen-manage/src/main/java/com/moral/api/controller/OrganizationLayoutController.java index d0f8d23..91ff1ab 100644 --- a/screen-manage/src/main/java/com/moral/api/controller/OrganizationLayoutController.java +++ b/screen-manage/src/main/java/com/moral/api/controller/OrganizationLayoutController.java @@ -56,4 +56,18 @@ organizationLayoutService.setUp(map,organizationLayouts); return ResultMessage.ok(); } + + @RequestMapping(value = "getLayoutByMac", method = RequestMethod.GET) + @ResponseBody + public ResultMessage getLayoutByMac(HttpServletRequest request){ + Map<String,Object> parameters = WebUtils.getParametersStartingWith(request,null); + if (ObjectUtils.isEmpty(parameters.get("mac"))){ + return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg()); + } + Map<String,Object> resultMap = organizationLayoutService.getLayoutByMac(parameters.get("mac").toString()); + if (ObjectUtils.isEmpty(resultMap)){ + return null; + } + return ResultMessage.ok(resultMap); + } } diff --git a/screen-manage/src/main/java/com/moral/api/service/OrganizationLayoutService.java b/screen-manage/src/main/java/com/moral/api/service/OrganizationLayoutService.java index b22d804..f02a9c4 100644 --- a/screen-manage/src/main/java/com/moral/api/service/OrganizationLayoutService.java +++ b/screen-manage/src/main/java/com/moral/api/service/OrganizationLayoutService.java @@ -22,4 +22,14 @@ @Transactional void setUp(Map map,List<OrganizationLayout> list); + /** + *@Description: ������Mac������������������ + *@Param: [map] + *@return: java.util.Map<java.lang.String,java.lang.Object> + *@Author: lizijie + *@Date: 2021/8/30 8:54 + **/ + @Transactional + Map<String, Object> getLayoutByMac(String mac); + } diff --git a/screen-manage/src/main/java/com/moral/api/service/impl/OrganizationLayoutServiceImpl.java b/screen-manage/src/main/java/com/moral/api/service/impl/OrganizationLayoutServiceImpl.java index 85dd6ed..a345e1c 100644 --- a/screen-manage/src/main/java/com/moral/api/service/impl/OrganizationLayoutServiceImpl.java +++ b/screen-manage/src/main/java/com/moral/api/service/impl/OrganizationLayoutServiceImpl.java @@ -2,7 +2,9 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.moral.api.entity.Device; import com.moral.api.entity.OrganizationLayout; +import com.moral.api.mapper.DeviceMapper; import com.moral.api.mapper.OrganizationLayoutMapper; import com.moral.api.service.OrganizationLayoutService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -16,6 +18,7 @@ import javax.servlet.http.HttpServletRequest; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -32,6 +35,9 @@ @Autowired(required = false) private OrganizationLayoutMapper organizationLayoutMapper; + + @Autowired(required = false) + private DeviceMapper deviceMapper; @Autowired private LogUtils logUtils; @@ -71,7 +77,7 @@ content = content +organizationLayout.getId()+" "; } content = content+";"; - logUtils.saveOperationForManage(request,content,Constants.INSERT_OPERATE_TYPE); + logUtils.saveOperationForManage(request,content,Constants.DELETE_OPERATE_TYPE); } if (!ObjectUtils.isEmpty(list) && list.size()>0){ organizationLayoutMapper.insertList(list); @@ -89,4 +95,75 @@ logUtils.saveOperationForManage(request,contentInsert,Constants.INSERT_OPERATE_TYPE); } } + + @Transactional + @Override + public Map<String, Object> getLayoutByMac(String mac) { + QueryWrapper<Device> wrapper_device = new QueryWrapper<>(); + wrapper_device.eq("is_delete",Constants.NOT_DELETE); + wrapper_device.eq("mac",mac); + Device device = deviceMapper.selectOne(wrapper_device); + if (ObjectUtils.isEmpty(device)){ + return null; + } + int organizationId = device.getOrganizationId(); + int versionId = device.getDeviceVersionId(); + QueryWrapper<OrganizationLayout> wrapper_organizationLayout = new QueryWrapper<>(); + wrapper_organizationLayout.eq("organization_id",organizationId); + wrapper_organizationLayout.eq("version_id",versionId); + wrapper_organizationLayout.eq("is_delete",Constants.NOT_DELETE); + List<OrganizationLayout> organizationLayouts = organizationLayoutMapper.selectList(wrapper_organizationLayout); + if (ObjectUtils.isEmpty(organizationLayouts) || organizationLayouts.size()==0){ + return null; + } + Map<String, Object> resultMap = new HashMap<>(); + List<OrganizationLayout> chartSensorKeyList = new ArrayList<>(); + List<OrganizationLayout> coreMonitorItemsList = new ArrayList<>(); + List<OrganizationLayout> defaultMonitorItemsList = new ArrayList<>(); + List<OrganizationLayout> fixedMonitorItemsList = new ArrayList<>(); + for (OrganizationLayout organizationgLayout:organizationLayouts) { + if (organizationgLayout.getPosition().equals("chartSensorKey")){ + chartSensorKeyList.add(organizationgLayout); + } + if (organizationgLayout.getPosition().equals("coreMonitorItems")){ + coreMonitorItemsList.add(organizationgLayout); + } + if (organizationgLayout.getPosition().equals("defaultMonitorItems")){ + defaultMonitorItemsList.add(organizationgLayout); + } + if (organizationgLayout.getPosition().equals("fixedMonitorItems")){ + fixedMonitorItemsList.add(organizationgLayout); + } + } + chartSensorKeyList = sort(chartSensorKeyList); + coreMonitorItemsList = sort(coreMonitorItemsList); + defaultMonitorItemsList = sort(defaultMonitorItemsList); + fixedMonitorItemsList = sort(fixedMonitorItemsList); + resultMap.put("chartSensorKey",chartSensorKeyList); + resultMap.put("coreMonitorItems",coreMonitorItemsList); + resultMap.put("defaultMonitorItems",defaultMonitorItemsList); + resultMap.put("fixedMonitorItems",fixedMonitorItemsList); + return resultMap; + } + + private List<OrganizationLayout> sort(List<OrganizationLayout> list){ + if (list.size() < 0){ + return list; + } + OrganizationLayout temp = null; + int j; + for (int i = 1; i<list.size(); i++){ + temp = list.get(i); + for (j=i-1; j>=0; j--){ + if (list.get(j).getPositionIndex()>temp.getPositionIndex()){ + list.set(j+1,list.get(j)); + }else { + break; + } + } + System.out.println(list.get(0)); + list.set(j+1,temp); + } + return list; + } } -- Gitblit v1.8.0