From 7e5452d35bb30dad5bc9e37360047b5a43732dcd Mon Sep 17 00:00:00 2001 From: cjl <276999030@qq.com> Date: Thu, 27 Jul 2023 15:35:29 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/cjl' into dev --- screen-job/src/main/java/com/moral/api/service/HistoryHourlyService.java | 4 + screen-job/src/main/java/com/moral/api/config/rest/Crc16Utils.java | 41 ++++++++++ screen-job/src/main/java/com/moral/api/controller/PubController.java | 10 ++ screen-job/src/main/resources/mapper/HistoryHourlyMapper.xml | 6 + screen-job/pom.xml | 5 + screen-api/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java | 1 screen-job/src/main/resources/application-dev.yml | 3 screen-job/src/main/resources/application-qa.yml | 3 screen-api/src/main/java/com/moral/api/entity/Device.java | 5 + screen-job/src/main/java/com/moral/api/task/HistoryTableInsertTask.java | 11 ++ screen-job/src/main/resources/application-cjl.yml | 4 screen-job/src/main/java/com/moral/api/service/impl/HistoryHourlyServiceImpl.java | 137 ++++++++++++++++++++++++++++++++- screen-common/src/main/java/com/moral/constant/RedisConstants.java | 1 screen-api/src/main/resources/mapper/DeviceMapper.xml | 1 14 files changed, 223 insertions(+), 9 deletions(-) diff --git a/screen-api/src/main/java/com/moral/api/entity/Device.java b/screen-api/src/main/java/com/moral/api/entity/Device.java index 401ade5..12992b6 100644 --- a/screen-api/src/main/java/com/moral/api/entity/Device.java +++ b/screen-api/src/main/java/com/moral/api/entity/Device.java @@ -146,7 +146,10 @@ @TableField(exist = false) private Version version; - + /* + * ������ + * */ + private Integer devNum; } 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 0707182..0a57a88 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 @@ -62,6 +62,7 @@ QueryWrapper<Device> wrapper = new QueryWrapper(); wrapper.eq("monitor_point_id", monitorPointId); wrapper.eq("is_delete", Constants.NOT_DELETE); + wrapper.orderByAsc("dev_num"); return deviceMapper.selectList(wrapper); } diff --git a/screen-api/src/main/resources/mapper/DeviceMapper.xml b/screen-api/src/main/resources/mapper/DeviceMapper.xml index 9108824..04fd460 100644 --- a/screen-api/src/main/resources/mapper/DeviceMapper.xml +++ b/screen-api/src/main/resources/mapper/DeviceMapper.xml @@ -26,6 +26,7 @@ <result column="is_delete" property="isDelete"/> <result column="extend" property="extend"/> <result column="town_code" property="townCode"/> + <result column="dev_num" property="devNum"/> </resultMap> <!--���������������������������--> diff --git a/screen-common/src/main/java/com/moral/constant/RedisConstants.java b/screen-common/src/main/java/com/moral/constant/RedisConstants.java index ec037ea..c07f1cf 100644 --- a/screen-common/src/main/java/com/moral/constant/RedisConstants.java +++ b/screen-common/src/main/java/com/moral/constant/RedisConstants.java @@ -104,4 +104,5 @@ public static final String AQI_ANNOUNCEMENT = "aqi_announcement"; + public static final String DATE_CHANG_SHU = "date_changshu"; } diff --git a/screen-job/pom.xml b/screen-job/pom.xml index a22891e..e7d9d3b 100644 --- a/screen-job/pom.xml +++ b/screen-job/pom.xml @@ -19,6 +19,11 @@ <optional>true</optional> </dependency> <dependency> + <groupId>commons-httpclient</groupId> + <artifactId>commons-httpclient</artifactId> + <version>3.1</version> + </dependency> + <dependency> <groupId>org.moral</groupId> <artifactId>screen-common</artifactId> <version>1.0-SNAPSHOT</version> diff --git a/screen-job/src/main/java/com/moral/api/config/rest/Crc16Utils.java b/screen-job/src/main/java/com/moral/api/config/rest/Crc16Utils.java new file mode 100644 index 0000000..cd84c5f --- /dev/null +++ b/screen-job/src/main/java/com/moral/api/config/rest/Crc16Utils.java @@ -0,0 +1,41 @@ +package com.moral.api.config.rest; + +public class Crc16Utils { + + public static String crc16_2017(String pushMsg, int usDataLen) { + int crc_reg=0xFFFF; + int check; + for(int i =0; i<usDataLen;i++){ + crc_reg = (crc_reg>>8) ^ pushMsg.charAt(i); + for(int j =0; j<8; j++){ + check = crc_reg & 0x0001; + crc_reg >>= 1; + if(check == 0x0001){ + crc_reg ^= 0xA001; + } + } + } + return padLeft(Integer.toHexString(crc_reg).toUpperCase(), 4, "0"); + } + + public static String padLeft(String s, int w, String pc) { + if (pc == null) { + pc = "0"; + } + for (int i = 0, c = w - s.length(); i < c; i++) { + s = pc + s; + } + return s; + } + + + public static String padLeftTest(String s, int w, String pc) { + if (pc == null) { + pc = "0"; + } + for (int i = 0, c = w - s.length(); i < c; i++) { + s = pc + s; + } + return s; + } +} diff --git a/screen-job/src/main/java/com/moral/api/controller/PubController.java b/screen-job/src/main/java/com/moral/api/controller/PubController.java index 48e41a2..16805cd 100644 --- a/screen-job/src/main/java/com/moral/api/controller/PubController.java +++ b/screen-job/src/main/java/com/moral/api/controller/PubController.java @@ -3,6 +3,7 @@ import com.moral.api.service.HistoryAqiService; import com.moral.api.service.HistoryDailyService; import com.moral.api.service.HistoryFiveMinutelyService; +import com.moral.api.service.HistoryHourlyService; import com.moral.constant.ResultMessage; import com.moral.util.DateUtils; import io.swagger.annotations.Api; @@ -36,6 +37,8 @@ @Autowired private HistoryAqiService historyAqiService; + @Autowired + private HistoryHourlyService historyHourlyService; @GetMapping("insertHistoryDaily") @ApiOperation(value = "���������������", notes = "���������������") @@ -67,6 +70,13 @@ return new ResultMessage(); } + @GetMapping("dateToChangShu") + @ApiOperation(value = "������������������", notes = "������������������") + public ResultMessage dateToChangShu() { + historyHourlyService.dateToChangShu(null); + return new ResultMessage(); + } + public static void main(String[] args) { String s = "2023-9-01"; 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 93dc956..4c248b4 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 @@ -40,4 +40,8 @@ //��������������������������������������������������������������� void insertHistoryHourlyComplete(); + + void dateToChangShu(String time); + + } 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 b6f156f..97432ce 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 @@ -1,8 +1,10 @@ package com.moral.api.service.impl; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.moral.api.config.mybatis.MybatisPlusConfig; +import com.moral.api.config.rest.Crc16Utils; import com.moral.api.entity.HistoryHourly; import com.moral.api.entity.Sensor; import com.moral.api.mapper.HistoryHourlyMapper; @@ -17,18 +19,23 @@ import com.moral.util.MybatisPLUSUtils; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.httpclient.HttpClient; +import org.apache.commons.httpclient.methods.PostMethod; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; import org.springframework.util.ObjectUtils; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.OptionalDouble; -import java.util.Set; +import java.io.*; +import java.math.BigDecimal; +import java.net.InetAddress; +import java.net.InetSocketAddress; +import java.net.Socket; +import java.net.SocketAddress; +import java.nio.charset.StandardCharsets; +import java.util.*; import java.util.concurrent.atomic.AtomicInteger; import java.util.function.Supplier; import java.util.stream.Collectors; @@ -44,8 +51,11 @@ * @since 2021-06-28 */ @Service +@Slf4j public class HistoryHourlyServiceImpl implements HistoryHourlyService { + @Value("${result.date.changshu}") + private String dateChangShu; @Autowired private HistoryHourlyMapper historyHourlyMapper; @@ -422,4 +432,117 @@ } return null; } + + @Override + public void dateToChangShu(String time) { + //������������������������������ + Date end = new Date(); + List<String> stringList = Arrays.asList(dateChangShu.split(",")); + String startTime = DateUtils.dateToDateString(DateUtils.addHours(end,-1),DateUtils.yyyy_MM_dd_HH_EN)+":00:00"; + Map<String, Object> prop = new HashMap<>(); + String timeUnits = DateUtils.dateToDateString(end, DateUtils.yyyyMM_EN); + prop.put("timeUnits", timeUnits); + prop.put("start", startTime); + prop.put("end", DateUtils.dateToDateString(end,DateUtils.yyyy_MM_dd_HH_EN)+":00:00"); + prop.put("list", stringList); + List<Map<String, Object>> dailyData = this.selectDailyData(prop); + String startTimeStr = DateUtils.dateToDateString(DateUtils.addHours(end,-1),"yyyyMMddHH")+"0000"; + List<String> list = new ArrayList<>(); + + for(Map<String, Object> m : dailyData){ + String result = strList(startTimeStr,m.get("mac").toString(),m.get("value").toString()); + list.add(result); + redisTemplate.opsForHash().delete(RedisConstants.DATE_CHANG_SHU,m.get("mac").toString()); + redisTemplate.opsForHash().put(RedisConstants.DATE_CHANG_SHU,m.get("mac").toString(),result); + } + for(String s : list){ + sendSocket("222.92.166.238",15031,s); + } + log.info("������������"); + } + + private String strList(String startTime,String mn,String msg){ + String qn = "QN="+ startTime + "001;ST=22;CN=2061;PW=123456;MN="+mn.toUpperCase()+";CP=&&DataTime="+startTime+";"; + Map<String, Object> data = JSON.parseObject(msg, Map.class); + StringBuffer stringBuffer = new StringBuffer(); + if(data.size()>0){ + data.remove("mac"); + data.remove("time"); + for(Map.Entry<String, Object> entry : data.entrySet()){ + String mapKey = entry.getKey(); + Object mapValue = entry.getValue(); + if(mapKey.contains("e")){ + if(mapKey.contains("a00e12")||mapKey.contains("a00e13")){ + + }else { + continue; + } + + } + if(!mapKey.contains("-Flag")){ + if(mapKey.contains("a34002")||mapKey.contains("a34004")||mapKey.contains("a21026")||mapKey.contains("a21004")||mapKey.contains("a05024")){ + BigDecimal d = Objects.nonNull(mapValue)? BigDecimal.valueOf(Double.valueOf(mapValue.toString())).divide(BigDecimal.valueOf(1000)):BigDecimal.ZERO; + mapValue = d.toString(); + } + if(mapKey.contains("a00e13")){ + mapKey = "a90085"; + } + stringBuffer.append(mapKey+"-Avg=").append(mapValue+",").append(mapKey+"-Flag=N;"); + } + + } + } + stringBuffer.deleteCharAt(stringBuffer.length()-1); + stringBuffer.append("&&"); + //String result = "QN=20230726160000001;ST=22;CN=2061;PW=123456;MN=P5DND7A0391978;CP=&&DataTime=20230726160000;a21005-Avg=0.03072,a21005-Flag=N;a21004-Avg=20.6,a21004-Flag=N;a21026-Avg=140.43,a21026-Flag=N;a21028-Avg=0.00778,a21028-Flag=N;a21001-Avg=0.13132,a21001-Flag=N;a01001-Avg=38.68,a01001-Flag=N;a05024-Avg=116.27,a05024-Flag=N;a01002-Avg=57.47,a01002-Flag=N;a01007-Avg=0.864,a01007-Flag=N;a01006-Avg=811.918,a01006-Flag=N;a01008-Avg=156.66,a01008-Flag=N;a34002-Avg=9.18,a34002-Flag=N;a34004-Avg=8.1,a34004-Flag=N;a99054-Avg=0.02283,a99054-Flag=N;a31001-Avg=0,a31001-Flag=N&&"; + + String result = qn+stringBuffer.toString(); + + String s = Crc16Utils.padLeftTest(String.valueOf(result.length()),4,null); + String s1 = Crc16Utils.crc16_2017(result, result.length()); + return "##"+s+result+s1+"\r\n"; + } + + private static String sendSocket(String host, Integer port, String message) { + log.debug("���������������{}������������{}������������{}", host, port, message); + Socket socket = null; + OutputStream outputStream = null; + InputStream inputStream = null; + BufferedReader bufferedReader = null; + try { + socket = new Socket(host, port); + socket.setSoTimeout(3000); + // ������������������������������ + outputStream = socket.getOutputStream(); + outputStream.write(message.getBytes()); + outputStream.flush(); + socket.shutdownOutput(); + inputStream = socket.getInputStream(); + bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); + String readLen=bufferedReader.readLine(); + log.debug("���������������{}", readLen); + return readLen; + } catch (IOException e) { + log.error("socket���������������{}", e.toString()); + } finally { + try { + if(bufferedReader != null){ + bufferedReader.close(); + } + if (inputStream != null) { + inputStream.close(); + } + if (outputStream != null) { + outputStream.close(); + } + if (socket != null) { + socket.close(); + } + } catch (IOException e) { + log.error("socket���������������{}", e.toString()); + } + } + return null; + } + } diff --git a/screen-job/src/main/java/com/moral/api/task/HistoryTableInsertTask.java b/screen-job/src/main/java/com/moral/api/task/HistoryTableInsertTask.java index 9f33024..635efde 100644 --- a/screen-job/src/main/java/com/moral/api/task/HistoryTableInsertTask.java +++ b/screen-job/src/main/java/com/moral/api/task/HistoryTableInsertTask.java @@ -105,4 +105,15 @@ } return ReturnT.SUCCESS; } + + @XxlJob("dateToChangShu") + public ReturnT dateToChangShu(){ + try { + historyHourlyService.dateToChangShu(null); + } catch (Exception e) { + e.printStackTrace(); + return new ReturnT(ReturnT.FAIL_CODE, e.getMessage()); + } + return ReturnT.SUCCESS; + } } diff --git a/screen-job/src/main/resources/application-cjl.yml b/screen-job/src/main/resources/application-cjl.yml index 60f3371..cade808 100644 --- a/screen-job/src/main/resources/application-cjl.yml +++ b/screen-job/src/main/resources/application-cjl.yml @@ -106,4 +106,6 @@ logretentiondays: -1 - +result: + date: + changshu: P5DND7A0245358,P5DND7A0245364,P5DND7A0245413,P5DND7A0245355,P5DND7A0245416,P5DND7A0245426,P5DND7A0245398,P5DND7A0245441,P5DND7A0245429,P5DND7A0245435,P5DND7A0245372,P5DND7A0245397,P5DND7A0245415,P5DND7A0245411,P5DND7A0245407,P5DND7A0245418,P5DND7A0245430,P5DND7A0245493,P5DND7A0245414,P5DND7A0245366,P5DND7A0245442,P5DND7A0245386,P5DND7A0245431,P5DND7A0245394,P5DND7A0245380,P5DND7A0245420,P5DND7A0245440,P5DND7A0245432,P5DND7A0391974,P5DND7A0391989,P5DND7A0245481,P5DND7A0392001,P5DND7A0391991,P5DND7A0391978,P5DND7A0245499 diff --git a/screen-job/src/main/resources/application-dev.yml b/screen-job/src/main/resources/application-dev.yml index 9bb131f..008ee35 100644 --- a/screen-job/src/main/resources/application-dev.yml +++ b/screen-job/src/main/resources/application-dev.yml @@ -106,4 +106,7 @@ logretentiondays: -1 +result: + date: + changshu: P5DND7A0245358,P5DND7A0245364,P5DND7A0245413,P5DND7A0245355,P5DND7A0245416,P5DND7A0245426,P5DND7A0245398,P5DND7A0245441,P5DND7A0245429,P5DND7A0245435,P5DND7A0245372,P5DND7A0245397,P5DND7A0245415,P5DND7A0245411,P5DND7A0245407,P5DND7A0245418,P5DND7A0245430,P5DND7A0245493,P5DND7A0245414,P5DND7A0245366,P5DND7A0245442,P5DND7A0245386,P5DND7A0245431,P5DND7A0245394,P5DND7A0245380,P5DND7A0245420,P5DND7A0245440,P5DND7A0245432,P5DND7A0391974,P5DND7A0391989,P5DND7A0245481,P5DND7A0392001,P5DND7A0391991,P5DND7A0391978,P5DND7A0245499 diff --git a/screen-job/src/main/resources/application-qa.yml b/screen-job/src/main/resources/application-qa.yml index d52585e..07defac 100644 --- a/screen-job/src/main/resources/application-qa.yml +++ b/screen-job/src/main/resources/application-qa.yml @@ -106,5 +106,8 @@ #������������������������������������������������������������������������������������������������������3���������������������-1��������������� logretentiondays: -1 +result: + date: + changshu: P5DND7A0245358,P5DND7A0245364,P5DND7A0245413,P5DND7A0245355,P5DND7A0245416,P5DND7A0245426,P5DND7A0245398,P5DND7A0245441,P5DND7A0245429,P5DND7A0245435,P5DND7A0245372,P5DND7A0245397,P5DND7A0245415,P5DND7A0245411,P5DND7A0245407,P5DND7A0245418,P5DND7A0245430,P5DND7A0245493,P5DND7A0245414,P5DND7A0245366,P5DND7A0245442,P5DND7A0245386,P5DND7A0245431,P5DND7A0245394,P5DND7A0245380,P5DND7A0245420,P5DND7A0245440,P5DND7A0245432,P5DND7A0391974,P5DND7A0391989,P5DND7A0245481,P5DND7A0392001,P5DND7A0391991,P5DND7A0391978,P5DND7A0245499 diff --git a/screen-job/src/main/resources/mapper/HistoryHourlyMapper.xml b/screen-job/src/main/resources/mapper/HistoryHourlyMapper.xml index 40ac177..56024a1 100644 --- a/screen-job/src/main/resources/mapper/HistoryHourlyMapper.xml +++ b/screen-job/src/main/resources/mapper/HistoryHourlyMapper.xml @@ -40,6 +40,12 @@ FROM history_hourly_${timeUnits} WHERE `time` <![CDATA[>=]]> #{start} AND `time` <![CDATA[<]]> #{end} + <if test="list != null and list.size()!=0"> + and mac in + <foreach collection="list" item="item" index="index" open="(" close=")" separator=","> + #{item} + </foreach> + </if> </select> <insert id="insertHistoryHourlyComplete"> -- Gitblit v1.8.0