From 7f228da10dd393e45c36e1240c5e71aa9f14fc43 Mon Sep 17 00:00:00 2001 From: vince <757871790@qq.com> Date: 星期五, 07 七月 2023 19:14:26 +0800 Subject: [PATCH] 气象站 --- igds-protocol-bhzn/src/main/java/com/ld/igds/protocol/bhzn/verb/analysis/AnalysisService.java | 6 + igds-protocol-bhzn/src/main/java/com/ld/igds/protocol/bhzn/verb/server/BhznVerbMessageConsumer.java | 9 + igds-protocol-bhzn/src/main/java/com/ld/igds/protocol/bhzn/inout/BHZNWeightServiceImpl.java | 183 ++++++++++++++++++++++++++++++------ igds-protocol-bhzn/src/main/java/com/ld/igds/protocol/bhzn/verb/analysis/AnalysisWeather.java | 90 ++++++++++++++++++ 4 files changed, 251 insertions(+), 37 deletions(-) diff --git a/igds-protocol-bhzn/src/main/java/com/ld/igds/protocol/bhzn/inout/BHZNWeightServiceImpl.java b/igds-protocol-bhzn/src/main/java/com/ld/igds/protocol/bhzn/inout/BHZNWeightServiceImpl.java index 6ed27b6..db66db0 100644 --- a/igds-protocol-bhzn/src/main/java/com/ld/igds/protocol/bhzn/inout/BHZNWeightServiceImpl.java +++ b/igds-protocol-bhzn/src/main/java/com/ld/igds/protocol/bhzn/inout/BHZNWeightServiceImpl.java @@ -2,19 +2,26 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; +import com.ld.igds.common.CoreCommonService; +import com.ld.igds.constant.FoodVariety; import com.ld.igds.inout.ApiInoutService; import com.ld.igds.inout.InoutApiConstant; import com.ld.igds.inout.InoutConstant; import com.ld.igds.inout.dto.ApiInoutData; import com.ld.igds.inout.dto.InoutData; import com.ld.igds.io.constant.ProtocolEnum; +import com.ld.igds.models.Depot; import com.ld.igds.protocol.bhzn.inout.client.BHZNClientEngine; import com.ld.igds.protocol.bhzn.utils.CRC16; +import com.ld.igds.protocol.bhzn.verb.dto.IoMessage; import com.ld.igds.util.BytesUtil; import com.ld.io.api.InvokeResult; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import javax.xml.ws.soap.Addressing; import java.io.UnsupportedEncodingException; import java.util.HashMap; import java.util.Map; @@ -28,7 +35,8 @@ // @Autowired // private Inoutservice inoutservice; - + @Autowired + private CoreCommonService coreCommonService; @Override public String getProtocol() { return ProtocolEnum.TCP_BHZH_INOUT_V1.getCode(); @@ -120,8 +128,65 @@ @Override public String noticeLed(ApiInoutData param, InoutData data) { // todo + try{ + log.info("BHZN鎺у埗LED寮�濮�"); + BHZNClientEngine test = new BHZNClientEngine( + "12.10.0.187", 58258); + test.start(); + Thread.sleep(3000L); - return null; + // 濮撳悕 + String msg = getMsg(StringUtils.isEmpty(data.getUserName())?" ":data.getUserName(),"0B00"); + log.info("msg=" + msg); + InvokeResult result = test.send(BytesUtil.hexStrToBytes(msg)); + log.info("result=" +result.getMessage()); + //杞︾墝 + msg = getMsg(StringUtils.isEmpty(data.getPlateNum())?" ":data.getPlateNum(),"0C00"); + log.info("msg=" + msg); + result = test.send(BytesUtil.hexStrToBytes(msg)); + log.info("result=" +result.getMessage()); + //浠撳簱 + Depot depot =coreCommonService.getDepotById(data.getCompanyId(),data.getDepotId()); + String depotName =" "; + if(depot != null) + { + depotName = depot.getName(); + } + msg = getMsg(StringUtils.isEmpty(depotName)?" ":depotName,"0D00"); + log.info("msg=" + msg); + result = test.send(BytesUtil.hexStrToBytes(msg)); + log.info("result=" +result.getMessage()); + + //鍝佺 + String foodvariety = FoodVariety.getMsg(data.getFoodVariety()); + msg = getMsg(StringUtils.isEmpty(foodvariety)?" ":foodvariety,"0E00"); + log.info("msg=" + msg); + result = test.send(BytesUtil.hexStrToBytes(msg)); + log.info("result=" +result.getMessage()); + //姣涢噸 + msg = getMsg((data.getFullWeight() == null )?" ":data.getFullWeight().toString(),"0F00"); + log.info("msg=" + msg); + result = test.send(BytesUtil.hexStrToBytes(msg)); + log.info("result=" +result.getMessage()); + //鐨噸 + msg = getMsg((data.getEmptyWeight() == null )?" ":data.getEmptyWeight().toString(),"1000"); + log.info("msg=" + msg); + result = test.send(BytesUtil.hexStrToBytes(msg)); + log.info("result=" +result.getMessage()); + //鍖栭獙缁撴灉 + msg = getMsg("鍚堟牸","1100"); + log.info("msg=" + msg); + result = test.send(BytesUtil.hexStrToBytes(msg)); + log.info("result=" +result.getMessage()); + + log.info("BHZN鎺у埗LED缁撴潫"); + + return result.getMessage(); + }catch (Exception e){ + log.error(e.getMessage(),e); + return "ERROR"; + } + } /** @@ -159,13 +224,14 @@ public static void main(String[] args) { -// try{ + try{ // String str1 = "璁稿浆",str2="绮123456",str3 = "3鍙蜂粨" ,str4 = "灏忛害",str5="286000",str6 = "30000",str7 ="鍚堟牸"; -// String test = "鎴戠埍涓埅杞欢"; -// //78340100290000000000000000 1400 0B00 01 02 00 01 0C 00 -// String start = "FFFFFFFFFF00000000"; +// String test = "120000.0"; +// //FF FF FF FF FF FF 00 00 00 00 78 34 01 00 29 BC FD 00 00 00 00 00 00 14 00 11 00 01 02 06 01 0C 00 CE D2 B0 AE D6 D0 BA BD C8 ED BC FE 87 1F A5 +// String start = "FFFFFFFFFFFF00000000"; // String lengh = BytesUtil.tran_LH(BytesUtil.intToHexStr(8+(test.length() * 2))); -// String msg = "78340100290000000000000000" + lengh+ "0B00010201010C00"; +// String lengh2 = BytesUtil.tran_LH(BytesUtil.intToHexStr((test.length() * 2))); +// String msg = "78340100290000000000000000" + lengh+ "100001020101" + lengh2; // msg = msg + convertStr(test); // msg = msg.toUpperCase(); // @@ -178,26 +244,61 @@ // msg += "A5"; // msg = start +msg; // System.out.println(msg); -// }catch (Exception e){ -// e.printStackTrace(); -// } + }catch (Exception e){ + e.printStackTrace(); + } - Map<String,Object> message = new HashMap<>(); - message.put("cmd",226); - message.put("orderId","5009"); - message.put("result","0"); - message.put("sign","0000"); - message.put("stNum",100); - message.put("version","V1.0000000"); - Map<String,Object> content = new HashMap<>(); - content.put("value",new Integer[]{0,1}); - content.put("LEDValue",new Integer[]{0,1}); - message.put("content", content); - System.out.println(JSON.toJSONString(message)); +// Map<String,Object> message = new HashMap<>(); +// message.put("cmd",226); +// message.put("orderId","5009"); +// message.put("result","0"); +// message.put("sign","0000"); +// message.put("stNum",100); +// message.put("version","V1.0000000"); +// Map<String,Object> content = new HashMap<>(); +// content.put("value",new Integer[]{0,1}); +// content.put("LEDValue",new Integer[]{0,1}); +// message.put("content", content); +// System.out.println(JSON.toJSONString(message)); + + + IoMessage message = JSON.parseObject("{Cmd:120}",IoMessage.class); + System.out.println(message.getCmd()); } + /** + * + * @param s 瀛楃涓� + * @param id 0B00 瀛楃ID + * @return + */ + public static String getMsg(String s ,String id){ + try{ + // String str1 = "璁稿浆",str2="绮123456",str3 = "3鍙蜂粨" ,str4 = "灏忛害",str5="286000",str6 = "30000",str7 ="鍚堟牸"; + String test = s; + //FF FF FF FF FF FF 00 00 00 00 78 34 01 00 29 BC FD 00 00 00 00 00 00 14 00 11 00 01 02 06 01 0C 00 CE D2 B0 AE D6 D0 BA BD C8 ED BC FE 87 1F A5 + String start = "FFFFFFFFFFFF00000000"; + String lengh = BytesUtil.tran_LH(BytesUtil.intToHexStr(8+(test.length() * 2))); + String lengh2 = BytesUtil.tran_LH(BytesUtil.intToHexStr((test.length() * 2))); + String msg = "78340100290000000000000000" + lengh+ id+"01020101" + lengh2; + msg = msg + convertStr(test); + msg = msg.toUpperCase(); +// String t = "78 34 01 00 29 BC FD 00 00 00 00 00 00 14 00 01 00 01 02 06 01 0C 00 CE D2 B0 AE D6 D0 BA BD C8 ED BC FE"; +// t = t.replaceAll(" ",""); + String check = BytesUtil.tran_LH(BytesUtil.intToHexStr(CRC16.calcCrc16(BytesUtil.hexStrToBytes(msg)))); + System.out.println(check); + msg+=check; + msg += "A5"; + msg = start +msg; + //log.info(msg); + return msg; + }catch (Exception e){ + log.error(e.getMessage(),e); + return " "; + } + } //hexToBytes鏂规硶锛氬崄鍏繘鍒跺瓧绗︿覆杞琤yte[]锛岀綉涓婂緢澶� //getRepair0鏂规硶锛氳ˉ0鐨勶紝寰堢畝鍗曪紝鑷繁瀹炵幇鍚� @@ -210,20 +311,36 @@ * @throws UnsupportedEncodingException */ public static String convertStr(String msg) throws Exception { - //鍏堟妸瀛楃涓叉寜gb2312杞垚byte鏁扮粍 - byte[] bytes = msg.getBytes("gb2312"); StringBuilder gbString = new StringBuilder(); - - for (byte b : bytes) - { - // 鍐嶇敤Integer涓殑鏂规硶锛屾妸姣忎釜byte杞崲鎴�16杩涘埗杈撳嚭 - String temp = Integer.toHexString(b); - //鍒ゆ柇杩涜鎴彇 - if(temp.length()>=8){ - temp = temp.substring(6, 8); + String t = null; + char[] chars = msg.toCharArray(); + String s= ""; + for(int i=0;i<chars.length;i++){ + t = ""; + s = msg.substring(i,i+1); + //鍏堟妸瀛楃涓叉寜gb2312杞垚byte鏁扮粍 + byte[] bytes = s.getBytes("gb2312"); + for (byte b : bytes) + { + // 鍐嶇敤Integer涓殑鏂规硶锛屾妸姣忎釜byte杞崲鎴�16杩涘埗杈撳嚭 + String temp = Integer.toHexString(b); + //鍒ゆ柇杩涜鎴彇 + if(temp.length()>=8){ + temp = temp.substring(6, 8); + } + t +=(temp); } - gbString.append(temp); + if(t.length()<4){ + for (int k =0;k<4;k++){ + if(t.length()<4){ + t = "0"+t; + } + } + } + gbString.append(t); } + return gbString.toString(); } + } diff --git a/igds-protocol-bhzn/src/main/java/com/ld/igds/protocol/bhzn/verb/analysis/AnalysisService.java b/igds-protocol-bhzn/src/main/java/com/ld/igds/protocol/bhzn/verb/analysis/AnalysisService.java index 04f7a1f..75d3394 100644 --- a/igds-protocol-bhzn/src/main/java/com/ld/igds/protocol/bhzn/verb/analysis/AnalysisService.java +++ b/igds-protocol-bhzn/src/main/java/com/ld/igds/protocol/bhzn/verb/analysis/AnalysisService.java @@ -51,7 +51,8 @@ private AnalysisGas analysisGas; @Autowired private AnalysisES analysisEs; - + @Autowired + private AnalysisWeather analysisWeather; /** * @param message */ @@ -79,6 +80,9 @@ case 240: analysisEs.analysis(message, ser); break; + case 160: + analysisWeather.analysis(message, ser); + break; default: log.error("鎺у埗鏌滃懡浠ょ爜瑙f瀽澶辫触锛�"); break; diff --git a/igds-protocol-bhzn/src/main/java/com/ld/igds/protocol/bhzn/verb/analysis/AnalysisWeather.java b/igds-protocol-bhzn/src/main/java/com/ld/igds/protocol/bhzn/verb/analysis/AnalysisWeather.java new file mode 100644 index 0000000..22628b9 --- /dev/null +++ b/igds-protocol-bhzn/src/main/java/com/ld/igds/protocol/bhzn/verb/analysis/AnalysisWeather.java @@ -0,0 +1,90 @@ +package com.ld.igds.protocol.bhzn.verb.analysis; + +import com.alibaba.fastjson.JSONObject; +import com.ld.igds.common.CoreCommonService; +import com.ld.igds.common.CoreDeviceService; +import com.ld.igds.constant.BizType; +import com.ld.igds.gas.CoreGasService; +import com.ld.igds.io.constant.OrderRespEnum; +import com.ld.igds.io.notify.NotifyWebInvoker; +import com.ld.igds.models.*; +import com.ld.igds.protocol.bhzn.verb.command.BaseRemoteImpl; +import com.ld.igds.protocol.bhzn.verb.dto.IoMessage; +import com.ld.igds.protocol.bhzn.verb.dto.Res209; +import com.ld.igds.util.ContextUtil; +import com.ld.igds.util.NumberUtil; +import com.ld.igds.weather.WeatherUtil; +import com.ld.igds.weather.notify.NotifyWeatherService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.text.DecimalFormat; +import java.text.NumberFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * 姘斾綋瑙f瀽 + */ +@Slf4j +@Component(AnalysisWeather.BEAN_ID) +public class AnalysisWeather extends BaseRemoteImpl { + + public static final String BEAN_ID = "bhzn.analysisWeather"; + + @Autowired + private CoreDeviceService deviceService; + @Autowired + private NotifyWebInvoker notifyInvoker; + @Autowired + private CoreCommonService commonService; + @Resource(name = NotifyWeatherService.BEAN_ID) + private NotifyWeatherService notifyService; + + /** + * 璁惧鐘舵�� + * + * @param reMessage + * @param ser + */ + public void analysis(IoMessage reMessage, DeviceSer ser) { + + log.info("姘旇薄绔欐娴嬪紑濮嬭В鏋�"); + JSONObject jsonObject = JSONObject.parseObject(reMessage.getStrMsg()); + + + log.info("姘旇薄杩斿洖缁撴灉={}", reMessage.getStrMsg()); + int Temper = jsonObject.getInteger("Temper"); + int Humy = jsonObject.getInteger("Humy"); + int WindSpeed = jsonObject.getInteger("WindSpeed"); + int RainFall = jsonObject.getInteger("RainFall"); + int Pressure = jsonObject.getInteger("Pressure"); + int WindDir = jsonObject.getInteger("WindDir"); + + + WeatherInfo info = new WeatherInfo(); + info.setId(WeatherUtil.buildWeatherId("5324_001", new Date())); +// info.setAirLevel(dto.getAir_level()); + info.setCompanyId(ser.getCompanyId()); + info.setDeptId("5324_001"); + info.setHumidity((Humy/10)+""); + //info.setPm25(dto.getAir_pm25()); + info.setPressure(Pressure+""); + info.setSource(WeatherUtil.SOURCE_01); + info.setTemp((Temper/10)+""); + info.setWeather(RainFall > 0?"涓嬮洦":"鏅村ぉ"); + info.setWindDirection(WindDir+""); +// info.setWindSpeed(); + info.setWindMeter((WindSpeed/10) + ""); + info.setCity("楂樺窞甯�"); + info.setUpdateTime(new Date()); + + notifyService.notify(info); + log.info("鎺у埗鏌�----->>>骞冲彴锛氭皵璞$珯妫�娴嬭В鏋愬畬鎴�-"); + + } + +} diff --git a/igds-protocol-bhzn/src/main/java/com/ld/igds/protocol/bhzn/verb/server/BhznVerbMessageConsumer.java b/igds-protocol-bhzn/src/main/java/com/ld/igds/protocol/bhzn/verb/server/BhznVerbMessageConsumer.java index a358996..56d2940 100644 --- a/igds-protocol-bhzn/src/main/java/com/ld/igds/protocol/bhzn/verb/server/BhznVerbMessageConsumer.java +++ b/igds-protocol-bhzn/src/main/java/com/ld/igds/protocol/bhzn/verb/server/BhznVerbMessageConsumer.java @@ -51,13 +51,16 @@ reMessage = JSON.parseObject(message, IoMessage.class); JSONObject jsonObject = JSON.parseObject(message); reMessage.setContentStr(jsonObject.getString("content")); - if (StringUtils.isEmpty(reMessage.getSn()) || - reMessage.getStNum()== null || + if ( reMessage.getCmd() == null) { + log.error("鎺у埗鏌�------>>>>骞冲彴锛氭姤鏂囦俊鎭笉瀹屾暣锛屼笉鍋氳В鏋�-IP={}锛宲ort={}锛宮sg={}", session.getAddress(), session.getPort(), message); return; } - + if(StringUtils.isEmpty(reMessage.getSn())){ + //姘旇薄绔� + reMessage.setSn("9999"); + } //鏍规嵁SN鑾峰彇缁勭粐缂栫爜 String companyId = ContextUtil.getCompanyIdBySn(reMessage.getSn()); if (null == companyId) { -- Gitblit v1.9.3