From d52795fc5de0b6ed748cd2ef217dcd1371e4b8e9 Mon Sep 17 00:00:00 2001 From: jiazx0107@163.com <jiazx0107@163.com> Date: 星期五, 10 十一月 2023 01:06:13 +0800 Subject: [PATCH] 重新调整代码结构和实现方式 --- src/main/java/com/fzzy/gateway/service/GatewayDeviceTestPR.java | 10 src/main/java/com/fzzy/gateway/api/GatewaySyncLedService.java | 4 src/main/java/com/fzzy/gateway/api/GatewayDeviceReportService.java | 42 ++ src/main/java/com/fzzy/gateway/hx2023/ScConstant.java | 2 src/main/java/com/fzzy/gateway/hx2023/service/OnReceiveMqttService.java | 26 src/main/java/com/fzzy/gateway/view/GatewayDevice.view.xml | 21 src/main/java/com/fzzy/gateway/api/GatewaySyncIdCardService.java | 4 src/main/java/com/fzzy/gateway/api/GatewaySyncWeightService.java | 3 src/main/java/com/fzzy/gateway/entity/GatewayDevice.java | 6 src/main/java/com/fzzy/gateway/api/GatewayRemoteManager.java | 24 src/main/java/com/fzzy/gateway/hx2023/service/ScGatewayTestServiceImpl.java | 363 +++++++++++++++++ src/main/java/com/fzzy/gateway/hx2023/service/HxGatewaySyncLedImpl1.java | 4 src/main/java/com/fzzy/gateway/hx2023/service/HxGatewaySyncIdCardImpl1.java | 7 src/main/java/com/fzzy/gateway/hx2023/service/DeviceReportServiceImpl.java | 105 ++-- src/main/java/com/fzzy/gateway/hx2023/service/HxGatewaySyncGrainImpl.java | 136 ------ src/main/java/com/fzzy/gateway/controller/GatewayDeviceTestController.java | 226 ++++++++++ src/main/java/com/fzzy/mqtt/MqttConsumerConfig.java | 3 src/main/java/com/fzzy/gateway/api/GatewayDeviceTestService.java | 26 + src/main/java/com/fzzy/gateway/data/BaseReqData.java | 34 + src/main/java/com/fzzy/gateway/hx2023/service/HkGatewaySyncLprImpl.java | 4 src/main/java/com/fzzy/gateway/hx2023/service/HxGatewayRemoteServiceImpl.java | 5 src/main/java/com/fzzy/gateway/api/GatewaySyncGranService.java | 12 src/main/java/com/fzzy/gateway/data/BaseResp.java | 19 /dev/null | 63 --- src/main/java/com/fzzy/gateway/api/GatewaySyncLprService.java | 3 src/main/java/com/fzzy/gateway/hx2023/kafka/KafkaDeviceReportService.java | 64 +++ 26 files changed, 890 insertions(+), 326 deletions(-) diff --git a/src/main/java/com/fzzy/gateway/api/DeviceReportService.java b/src/main/java/com/fzzy/gateway/api/DeviceReportService.java deleted file mode 100644 index 762cced..0000000 --- a/src/main/java/com/fzzy/gateway/api/DeviceReportService.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.fzzy.gateway.api; - -import com.fzzy.gateway.entity.GatewayDevice; -import com.fzzy.gateway.hx2023.data.KafaGrainData; - - -public interface DeviceReportService { - - /** - * 鍗忚瀹氫箟 - * - * @return - */ - String getProvinceProtocol(); - - - /** - * 閫氳繃璁惧搴忓垪鍙疯繑鍥炵粨鏋滀俊鎭� - * - * @param weigh - * @param device 璁惧搴忓垪鍙� - */ - String report2GatewayBySn(double weigh, GatewayDevice device); - - - /** - * 绮儏鏁版嵁鎺ㄥ姩鍒颁簯绔郴缁� - * @param data - * @return - */ - String pushGrainData2Cloud(KafaGrainData data); - -} diff --git a/src/main/java/com/fzzy/gateway/api/GatewayDeviceReportService.java b/src/main/java/com/fzzy/gateway/api/GatewayDeviceReportService.java new file mode 100644 index 0000000..fd4ded3 --- /dev/null +++ b/src/main/java/com/fzzy/gateway/api/GatewayDeviceReportService.java @@ -0,0 +1,42 @@ +package com.fzzy.gateway.api; + +import com.fzzy.gateway.data.BaseReqData; +import com.fzzy.gateway.data.BaseResp; +import com.fzzy.gateway.entity.GatewayDevice; +import com.fzzy.gateway.hx2023.data.KafaGrainData; + + +/** + * 涓婃姤鎺ュ彛 + */ +public interface GatewayDeviceReportService { + + /** + * 鍗忚瀹氫箟 + * + * @return + */ + String getProtocol(); + + + /** + * 閫氳繃璁惧搴忓垪鍙疯繑鍥炵粨鏋滀俊鎭� + * + * @param weigh + * @param device 璁惧搴忓垪鍙� + */ + String report2GatewayBySn(double weigh, GatewayDevice device); + + + /** + * 鎺ㄩ�佺伯鎯呬俊鎭� + * @param reqData + */ + BaseResp reportGrainData(BaseReqData reqData); + + BaseResp reportWeightData(BaseReqData reqData); + + BaseResp reportLprData(BaseReqData reqData); + + BaseResp reportGrainDataByKafka(BaseReqData reqData); +} diff --git a/src/main/java/com/fzzy/gateway/api/GatewayDeviceTestService.java b/src/main/java/com/fzzy/gateway/api/GatewayDeviceTestService.java new file mode 100644 index 0000000..042d63a --- /dev/null +++ b/src/main/java/com/fzzy/gateway/api/GatewayDeviceTestService.java @@ -0,0 +1,26 @@ +package com.fzzy.gateway.api; + +import com.fzzy.gateway.data.BaseResp; +import com.fzzy.gateway.data.BaseReqData; + + +/** + * 缃戝叧璁惧娴嬭瘯鎺ュ彛 + */ +public interface GatewayDeviceTestService { + + /** + * 鍗忚瀹氫箟 + * + * @return + */ + String getProtocol(); + + BaseResp testGrain(BaseReqData reqData); + + BaseResp testGrainKafka(BaseReqData reqData); + + BaseResp testWeight(BaseReqData reqData); + + BaseResp testLpr(BaseReqData reqData); +} diff --git a/src/main/java/com/fzzy/gateway/api/GatewayRemoteManager.java b/src/main/java/com/fzzy/gateway/api/GatewayRemoteManager.java index b90a996..49357f3 100644 --- a/src/main/java/com/fzzy/gateway/api/GatewayRemoteManager.java +++ b/src/main/java/com/fzzy/gateway/api/GatewayRemoteManager.java @@ -17,7 +17,7 @@ public static Map<String, GatewayRemoteService> remoteMap = new HashMap<>(); - public static Map<String, DeviceReportService> reportMap = new HashMap<>(); + public static Map<String, GatewayDeviceReportService> reportMap = new HashMap<>(); public static Map<String, GatewaySyncGranService> syncGrain = new HashMap<>(); @@ -28,6 +28,8 @@ public static Map<String, GatewaySyncLprService> syncLpr = new HashMap<>(); public static Map<String, GatewaySyncWeightService> syncWeight = new HashMap<>(); + + public static Map<String, GatewayDeviceTestService> testMap = new HashMap<>(); @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { @@ -62,9 +64,14 @@ syncWeight.put(serviceMap6.get(key).getWeightProtocol(), serviceMap6.get(key)); } - Map<String, DeviceReportService> serviceMap7 = applicationContext.getBeansOfType(DeviceReportService.class); + Map<String, GatewayDeviceReportService> serviceMap7 = applicationContext.getBeansOfType(GatewayDeviceReportService.class); for (String key : serviceMap7.keySet()) { - reportMap.put(serviceMap7.get(key).getProvinceProtocol(), serviceMap7.get(key)); + reportMap.put(serviceMap7.get(key).getProtocol(), serviceMap7.get(key)); + } + + Map<String, GatewayDeviceTestService> serviceMap8 = applicationContext.getBeansOfType(GatewayDeviceTestService.class); + for (String key : serviceMap8.keySet()) { + testMap.put(serviceMap8.get(key).getProtocol(), serviceMap8.get(key)); } } @@ -136,8 +143,17 @@ * @param protocol * @return */ - public DeviceReportService getDeviceReportService(String protocol) { + public GatewayDeviceReportService getDeviceReportService(String protocol) { return reportMap.get(protocol); } + + /** + * @param protocol + * @return + */ + public GatewayDeviceTestService getGatewayTestService(String protocol) { + return testMap.get(protocol); + } + } diff --git a/src/main/java/com/fzzy/gateway/api/GatewaySyncGranService.java b/src/main/java/com/fzzy/gateway/api/GatewaySyncGranService.java index d1ba9d3..957b443 100644 --- a/src/main/java/com/fzzy/gateway/api/GatewaySyncGranService.java +++ b/src/main/java/com/fzzy/gateway/api/GatewaySyncGranService.java @@ -2,8 +2,8 @@ import com.fzzy.gateway.data.BaseResp; +import com.fzzy.gateway.data.BaseReqData; import com.fzzy.gateway.hx2023.data.KafaGrainData; -import com.fzzy.gateway.hx2023.data.*; /** * 缃戝叧璁惧鍚屾鎺ュ彛锛屾牴鎹笟鍔¢渶姹傚畾涔夋帴鍙� @@ -17,14 +17,6 @@ */ String getGrainProtocol(); - /** - * 鍚屾绮儏淇℃伅 - * - * @param reqData - * @return - */ - public KafaGrainData syncGrain(SyncReqData reqData); - /** * 鍚屾绮儏淇℃伅杩斿洖JSON鎶ユ枃 @@ -32,5 +24,5 @@ * @param reqData * @return */ - public BaseResp syncGrain2(SyncReqData reqData); + public BaseResp syncGrain(BaseReqData reqData); } diff --git a/src/main/java/com/fzzy/gateway/api/GatewaySyncIdCardService.java b/src/main/java/com/fzzy/gateway/api/GatewaySyncIdCardService.java index 32014b7..d3daded 100644 --- a/src/main/java/com/fzzy/gateway/api/GatewaySyncIdCardService.java +++ b/src/main/java/com/fzzy/gateway/api/GatewaySyncIdCardService.java @@ -1,8 +1,8 @@ package com.fzzy.gateway.api; +import com.fzzy.gateway.data.BaseReqData; import com.fzzy.gateway.hx2023.data.IdCardData; -import com.fzzy.gateway.hx2023.data.*; /** * 缃戝叧璁惧鍚屾鎺ュ彛锛屾牴鎹笟鍔¢渶姹傚畾涔夋帴鍙� @@ -21,7 +21,7 @@ * * @return */ - public IdCardData syncIdCard(SyncReqData reqData); + public IdCardData syncIdCard(BaseReqData reqData); diff --git a/src/main/java/com/fzzy/gateway/api/GatewaySyncLedService.java b/src/main/java/com/fzzy/gateway/api/GatewaySyncLedService.java index 633e4dd..0c891d0 100644 --- a/src/main/java/com/fzzy/gateway/api/GatewaySyncLedService.java +++ b/src/main/java/com/fzzy/gateway/api/GatewaySyncLedService.java @@ -1,7 +1,7 @@ package com.fzzy.gateway.api; -import com.fzzy.gateway.hx2023.data.*; +import com.fzzy.gateway.data.BaseReqData; /** * 缃戝叧璁惧鍚屾鎺ュ彛锛屾牴鎹笟鍔¢渶姹傚畾涔夋帴鍙� @@ -26,7 +26,7 @@ * * @return */ - public String push2Led(SyncReqData reqData); + public String push2Led(BaseReqData reqData); diff --git a/src/main/java/com/fzzy/gateway/api/GatewaySyncLprService.java b/src/main/java/com/fzzy/gateway/api/GatewaySyncLprService.java index 3d1f47a..16a1d33 100644 --- a/src/main/java/com/fzzy/gateway/api/GatewaySyncLprService.java +++ b/src/main/java/com/fzzy/gateway/api/GatewaySyncLprService.java @@ -1,6 +1,7 @@ package com.fzzy.gateway.api; +import com.fzzy.gateway.data.BaseReqData; import com.fzzy.gateway.hx2023.data.*; /** @@ -21,6 +22,6 @@ * * @return */ - public LprData syncLpr(SyncReqData reqData); + public LprData syncLpr(BaseReqData reqData); } diff --git a/src/main/java/com/fzzy/gateway/api/GatewaySyncWeightService.java b/src/main/java/com/fzzy/gateway/api/GatewaySyncWeightService.java index 061a83c..f1ad3ba 100644 --- a/src/main/java/com/fzzy/gateway/api/GatewaySyncWeightService.java +++ b/src/main/java/com/fzzy/gateway/api/GatewaySyncWeightService.java @@ -1,6 +1,7 @@ package com.fzzy.gateway.api; +import com.fzzy.gateway.data.BaseReqData; import com.fzzy.gateway.hx2023.data.*; /** @@ -21,5 +22,5 @@ * * @return */ - public WeightInfo syncWeightInfo(SyncReqData reqData); + public WeightInfo syncWeightInfo(BaseReqData reqData); } diff --git a/src/main/java/com/fzzy/gateway/controller/GatewayDeviceTestController.java b/src/main/java/com/fzzy/gateway/controller/GatewayDeviceTestController.java new file mode 100644 index 0000000..bd56953 --- /dev/null +++ b/src/main/java/com/fzzy/gateway/controller/GatewayDeviceTestController.java @@ -0,0 +1,226 @@ +package com.fzzy.gateway.controller; + +import com.alibaba.fastjson2.JSONObject; +import com.bstek.dorado.annotation.Expose; +import com.fzzy.api.data.GatewayDeviceType; +import com.fzzy.api.utils.DateUtil; +import com.fzzy.async.fzzy40.Fzzy40CommonService; +import com.fzzy.async.fzzy40.entity.Fz40Grain; +import com.fzzy.gateway.GatewayUtils; +import com.fzzy.gateway.api.GatewayDeviceReportService; +import com.fzzy.gateway.api.GatewayRemoteManager; +import com.fzzy.gateway.data.BaseResp; +import com.fzzy.gateway.data.BaseReqData; +import com.fzzy.gateway.entity.GateWayTestParam; +import com.fzzy.gateway.entity.GatewayDevice; +import com.fzzy.gateway.hx2023.ScConstant; +import com.fzzy.gateway.hx2023.data.*; +import com.fzzy.gateway.service.GatewayDeviceService; +import com.fzzy.mqtt.MqttGatewayService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang.time.DateFormatUtils; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import java.util.List; +import java.util.stream.Collectors; + + +/** + * + */ +@Slf4j +@Controller +@RequestMapping("/gateway/test") +public class GatewayDeviceTestController { + + @Resource + private GatewayDeviceService gatewayDeviceService; + + @Resource + private GatewayRemoteManager gatewayRemoteManager; + + + /** + * 娴嬭瘯鍏ュ彛 + * + * @param param + * @return + */ + @PostMapping("/deviceTest") + public @ResponseBody + String deviceTest(@RequestBody GateWayTestParam param) throws Exception { + + if (StringUtils.isEmpty(param.getBizType())) { + return "ERROR:娌℃湁鑾峰彇鍒颁笟鍔$被鍨嬶紝鎵ц澶辫触"; + } + + if ("testGrain".equals(param.getBizType())) { + return testGrain(param); + } + + if ("ajaxTestKafkaGrain".equals(param.getBizType())) { + return ajaxTestKafkaGrain(param); + } + + if ("ajaxTestWeight".equals(param.getBizType())) { + return ajaxTestWeight(param); + } + + if ("ajaxTestLpr".equals(param.getBizType())) { + return ajaxTestLpr(param); + } + + return "SUCCESS"; + } + + private String testGrain(GateWayTestParam param) { + String deviceId = param.getDeviceId(); + + GatewayDevice device = GatewayUtils.getCacheByDeviceId(deviceId); + + BaseReqData reqData = new BaseReqData(); + reqData.setDeviceId(device.getDeviceId()); + reqData.setProductId(device.getProductId()); + reqData.setDeviceName(device.getDeviceName()); + reqData.setDevice(device); + reqData.setAutoReplay(true); + + if (!GatewayDeviceType.TYPE_07.getCode().equals(device.getType())) { + return "ERROR锛氬綋鍓嶈澶囬潪绮儏璁惧涓嶆敮鎸佸綋鍓嶆搷浣�"; + } + + if (StringUtils.isEmpty(device.getCableRule())) { + return "ERROR锛氬綋鍓嶈澶囨病鏈夐厤缃竷绾胯鍒欙紝鏃犳硶鎵ц"; + } + + BaseResp resp = gatewayRemoteManager.getGatewayTestService(device.getPushProtocol()).testGrain(reqData); + //鑷姩鎺ㄩ�� + if (BaseResp.CODE_200 == resp.getCode() && reqData.isAutoReplay()) { + reqData.setData(resp.getData()); + gatewayRemoteManager.getDeviceReportService(device.getPushProtocol()).reportGrainData(reqData); + } + return "SUCCESS锛氭墽琛屽畬鎴�"; + } + + + /** + * 绮儏鎺ㄩ�佹祴璇昁AFKA鏂瑰紡 + * + * @param param + * @return + */ + public String ajaxTestKafkaGrain(GateWayTestParam param) throws Exception { + List<GatewayDevice> list = gatewayDeviceService.listAll(); + if (null == list || list.isEmpty()) { + return "ERROR锛氫负鑾峰彇鍒扮郴缁熶腑璁惧閰嶇疆锛屽彇娑堟墽琛�"; + } + + BaseReqData reqData; + BaseResp resp; + for (GatewayDevice device : list) { + reqData = new BaseReqData(); + reqData.setDeviceId(param.getDeviceId()); + reqData.setDayTime(param.getDayTime()); + reqData.setDevice(device); + + resp = gatewayRemoteManager.getGatewayTestService(device.getPushProtocol()).testGrainKafka(reqData); + + //鑷姩鎺ㄩ�� + if (BaseResp.CODE_200 == resp.getCode()) { + reqData.setData(resp.getData()); + gatewayRemoteManager.getDeviceReportService(device.getPushProtocol()).reportGrainDataByKafka(reqData); + } + } + + return "SUCCESS"; + } + + /** + * 鍦扮鎺ㄩ�佹祴璇� + * + * @param param + * @return + */ + public String ajaxTestWeight(GateWayTestParam param) throws Exception { + + double weight = param.getWeight(); + String deviceId = param.getDeviceId(); + + List<GatewayDevice> list = gatewayDeviceService.listAll(); + if (list == null || list.size() <= 0) { + return "ERROR锛氭病鏈夐厤缃澶囦俊鎭紝鎵ц澶辫触"; + } + + List<GatewayDevice> weights = list.stream().filter(s -> (GatewayDeviceType.TYPE_01.getCode().equals(s.getType()))).collect(Collectors.toList()); + if (weights == null || weights.size() <= 0) { + return "ERROR锛欵RROR锛氭病鏈夐厤缃澶囦俊鎭紝鎵ц澶辫触"; + } + + BaseReqData reqData; + BaseResp resp; + for (GatewayDevice device : weights) { + reqData = new BaseReqData(); + reqData.setDeviceId(device.getDeviceId()); + reqData.setProductId(device.getProductId()); + reqData.setDeviceName(device.getDeviceName()); + reqData.setDevice(device); + reqData.setAutoReplay(true); + reqData.setWeight(weight); + resp = gatewayRemoteManager.getGatewayTestService(device.getPushProtocol()).testWeight(reqData); + + //鑷姩鎺ㄩ�� + if (BaseResp.CODE_200 == resp.getCode() && reqData.isAutoReplay()) { + reqData.setData(resp.getData()); + gatewayRemoteManager.getDeviceReportService(device.getPushProtocol()).reportWeightData(reqData); + } + } + return "SUCCESS"; + } + + /** + * 鍦扮鎺ㄩ�佹祴璇� + * + * @return + */ + public String ajaxTestLpr(GateWayTestParam param) throws Exception { + + String carNumber = param.getCarNumber(); + + List<GatewayDevice> list = gatewayDeviceService.listAll(); + if (list == null || list.size() <= 0) { + log.error("ERROR锛氭病鏈夐厤缃澶囦俊鎭紝鎵ц澶辫触"); + return "ERROR锛氭病鏈夐厤缃澶囦俊鎭紝鎵ц澶辫触"; + } + List<GatewayDevice> weights = list.stream().filter(s -> (GatewayDeviceType.TYPE_02.getCode().equals(s.getType()))).collect(Collectors.toList()); + if (weights == null || weights.size() <= 0) { + log.error("ERROR锛氭病鏈夐厤缃澶囦俊鎭紝鎵ц澶辫触"); + return "ERROR锛氭病鏈夐厤缃澶囦俊鎭紝鎵ц澶辫触"; + } + + BaseReqData reqData; + BaseResp resp; + for (GatewayDevice device : weights) { + reqData = new BaseReqData(); + reqData.setDeviceId(device.getDeviceId()); + reqData.setProductId(device.getProductId()); + reqData.setDeviceName(device.getDeviceName()); + reqData.setDevice(device); + reqData.setAutoReplay(true); + reqData.setCarNumber(carNumber); + resp = gatewayRemoteManager.getGatewayTestService(device.getPushProtocol()).testLpr(reqData); + + //鑷姩鎺ㄩ�� + if (BaseResp.CODE_200 == resp.getCode() && reqData.isAutoReplay()) { + reqData.setData(resp.getData()); + gatewayRemoteManager.getDeviceReportService(device.getPushProtocol()).reportLprData(reqData); + } + } + return "SUCCESS"; + } +} diff --git a/src/main/java/com/fzzy/gateway/data/BaseReqData.java b/src/main/java/com/fzzy/gateway/data/BaseReqData.java new file mode 100644 index 0000000..fcc79fe --- /dev/null +++ b/src/main/java/com/fzzy/gateway/data/BaseReqData.java @@ -0,0 +1,34 @@ +package com.fzzy.gateway.data; + +import com.fzzy.gateway.entity.GatewayDevice; +import lombok.Data; + +import java.util.Date; + +@Data +public class BaseReqData { + + private String productId; + + private String deviceId; + + private String deviceName; + + private String messageType; + + private String messageId; + + private String functionId; + + private GatewayDevice device; + + private boolean autoReplay; + + private double weight; + + private String carNumber; + + private Date dayTime; + + private String data; +} diff --git a/src/main/java/com/fzzy/gateway/data/BaseResp.java b/src/main/java/com/fzzy/gateway/data/BaseResp.java index b6e7ec2..b9b15e2 100644 --- a/src/main/java/com/fzzy/gateway/data/BaseResp.java +++ b/src/main/java/com/fzzy/gateway/data/BaseResp.java @@ -5,10 +5,25 @@ @Data public class BaseResp { - private int code = 200; + public static int CODE_200 = 200; + public static int CODE_50 = 500; + + private int code = CODE_200; private String msg = "鎴愬姛"; - private String data; + + + public BaseResp() { + } + + public BaseResp(String data) { + this.data = data; + } + + public BaseResp(int code,String msg) { + this.msg = msg; + this.code = code; + } } diff --git a/src/main/java/com/fzzy/gateway/entity/GatewayDevice.java b/src/main/java/com/fzzy/gateway/entity/GatewayDevice.java index 50a19c0..1e7320a 100644 --- a/src/main/java/com/fzzy/gateway/entity/GatewayDevice.java +++ b/src/main/java/com/fzzy/gateway/entity/GatewayDevice.java @@ -85,9 +85,9 @@ @Column(name = "PUSH_PROTOCOL_", length = 20) private String pushProtocol; - @PropertyDef(label = "鐪佸钩鍙板崗璁�") - @Column(name = "PROVINCE_PROTOCOL_", length = 20) - private String provinceProtocol; +// @PropertyDef(label = "鐪佸钩鍙板崗璁�") +// @Column(name = "PROVINCE_PROTOCOL_", length = 20) +// private String provinceProtocol; @PropertyDef(label = "鍚屾鍗忚") @Column(name = "SYNC_PROTOCOL_", length = 20) diff --git a/src/main/java/com/fzzy/gateway/hx2023/ScConstant.java b/src/main/java/com/fzzy/gateway/hx2023/ScConstant.java index 72ad561..1457c53 100644 --- a/src/main/java/com/fzzy/gateway/hx2023/ScConstant.java +++ b/src/main/java/com/fzzy/gateway/hx2023/ScConstant.java @@ -25,8 +25,6 @@ } - public static int CODE_200 = 200; - /** * 涓嬪彂鎸囦护鍥炲鎶ユ枃topic */ diff --git a/src/main/java/com/fzzy/gateway/hx2023/controller/GatewayDeviceTestController.java b/src/main/java/com/fzzy/gateway/hx2023/controller/GatewayDeviceTestController.java deleted file mode 100644 index 9930cbd..0000000 --- a/src/main/java/com/fzzy/gateway/hx2023/controller/GatewayDeviceTestController.java +++ /dev/null @@ -1,445 +0,0 @@ -package com.fzzy.gateway.hx2023.controller; - -import com.alibaba.fastjson2.JSONObject; -import com.bstek.dorado.annotation.Expose; -import com.fzzy.api.data.GatewayDeviceType; -import com.fzzy.api.utils.DateUtil; -import com.fzzy.async.fzzy40.Fzzy40CommonService; -import com.fzzy.async.fzzy40.entity.Fz40Grain; -import com.fzzy.gateway.GatewayUtils; -import com.fzzy.gateway.api.DeviceReportService; -import com.fzzy.gateway.api.GatewayRemoteManager; -import com.fzzy.gateway.data.BaseResp; -import com.fzzy.gateway.entity.GateWayTestParam; -import com.fzzy.gateway.entity.GatewayDevice; -import com.fzzy.gateway.hx2023.ScConstant; -import com.fzzy.gateway.hx2023.data.*; -import com.fzzy.gateway.service.GatewayDeviceService; -import com.fzzy.gateway.service.repository.GatewayDeviceRep; -import com.fzzy.mqtt.MqttGatewayService; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang.StringUtils; -import org.apache.commons.lang.time.DateFormatUtils; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.*; - -import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - - -/** - * - */ -@Slf4j -@Controller -@RequestMapping("/sc2023/gateway/test") -public class GatewayDeviceTestController { - - @Resource - private GatewayDeviceService gatewayDeviceService; - @Resource - private Fzzy40CommonService fzzy40CommonService; - @Resource - private GatewayRemoteManager gatewayRemoteManager; - @Resource - private MqttGatewayService publishService; - - - /** - * 娴嬭瘯鍏ュ彛 - * - * @param param - * @return - */ - @PostMapping("/deviceTest") - public @ResponseBody - String deviceTest(@RequestBody GateWayTestParam param) throws Exception { - - if (StringUtils.isEmpty(param.getBizType())) { - return "ERROR:娌℃湁鑾峰彇鍒颁笟鍔$被鍨嬶紝鎵ц澶辫触"; - } - - if ("testGrain".equals(param.getBizType())) { - return testGrain(param); - } - - if ("ajaxTestKafkaGrain".equals(param.getBizType())) { - return ajaxTestKafkaGrain(param); - } - - if ("ajaxTestWeight".equals(param.getBizType())) { - return ajaxTestWeight(param); - } - - if ("ajaxTestLpr".equals(param.getBizType())) { - return ajaxTestLpr(param); - } - - return "SUCCESS"; - } - - private String testGrain(GateWayTestParam param) { - String deviceId = param.getDeviceId(); - - GatewayDevice device = GatewayUtils.getCacheByDeviceId(deviceId); - - SyncReqData reqData = new SyncReqData(); - reqData.setDevice(device); - reqData.setAutoReplay(true); - reqData.setMessageType(ScConstant.MESSAGE_TYPE_INVOKE_FUNCTION); - reqData.setMessageId(ScConstant.getMessageId()); - reqData.setFunctionId(ScConstant.FUNCTION_getTAndRHInfo); - - - if (!GatewayDeviceType.TYPE_07.getCode().equals(device.getType())) { - return "ERROR锛氬綋鍓嶈澶囬潪绮儏璁惧涓嶆敮鎸佸綋鍓嶆搷浣�"; - } - - if (StringUtils.isEmpty(device.getCableRule())) { - return "ERROR锛氬綋鍓嶈澶囨病鏈夐厤缃竷绾胯鍒欙紝鏃犳硶鎵ц"; - } - - BaseResp resp = gatewayRemoteManager.getSyncGrainService(device.getSyncProtocol()).syncGrain2(reqData); - - //鑷姩鎺ㄩ�� - if (200 == resp.getCode() && reqData.isAutoReplay()) { - String topic = ScConstant.TOPIC_REPORT; - topic = topic.replace("${productId}", device.getProductId()).replace("${deviceId}", device.getDeviceId()); - - publishService.publishMqttWithTopic(resp.getData(), topic); - - log.info("----------------------------鎵嬪姩鎺ㄩ�丮QTT绮儏淇℃伅---------------------------"); - log.info("-----TOPIC-----{}", topic); - log.info("-----Message-----{}", resp.getData()); - - } - - return "SUCCESS锛氭墽琛屽畬鎴�"; - } - - - /** - * 绮儏鎺ㄩ�佹祴璇昁AFKA鏂瑰紡 - * - * @param param - * @return - */ - public String ajaxTestKafkaGrain(GateWayTestParam param) throws Exception { - - //鑾峰彇璁惧閰嶇疆锛屽彧閽堝绮儏璁惧杩涜鎵ц - - List<GatewayDevice> list = gatewayDeviceService.listAll(); - - if (null == list || list.isEmpty()) { - return "ERROR锛氫负鑾峰彇鍒扮郴缁熶腑璁惧閰嶇疆锛屽彇娑堟墽琛�"; - } - - Date dayTime = param.getDayTime(); - if (null == dayTime) dayTime = new Date(); - - Date start = DateUtil.getCurZero(dayTime); - Date end = DateUtil.getNextZero(dayTime); - //濡傛灉閮ㄧ讲FZZY-IGDS-V40鐗堟湰绯荤粺 - return this.pushByV40(list, start, end); - } - - - private String pushByV40(List<GatewayDevice> list, Date start, Date end) { - - String depotIdSys; - List<Fz40Grain> listGrain; - - Fz40Grain lastData; - - KafaGrainData pushData; - - DeviceReportService deviceReportService = null; - for (GatewayDevice device : list) { - depotIdSys = device.getDepotIdSys(); - - if (StringUtils.isEmpty(depotIdSys)) { - log.info("--------璁惧--{}-鏈厤缃郴缁熺浉鍏充粨搴撶紪鐮侊紝鏃犳硶鎵ц褰撳墠鎿嶄綔", device.getDeviceName()); - continue; - } - - - listGrain = fzzy40CommonService.listGrain(depotIdSys, start, end); - if (null == listGrain || listGrain.isEmpty()) { - log.info("---------璁惧---{}--鏈悓姝ュ埌绮儏淇℃伅锛岃纭褰撳墠鏉′欢涓嬫槸鍚︽湁鏁版嵁", device.getDeviceName()); - continue; - } - - - //鑾峰彇鏈�鍚庝竴鏉$伯鎯呬綔涓哄綋鍓嶆暟鎹� - lastData = listGrain.get(listGrain.size() - 1); - - pushData = this.lastData2PushData(lastData, device); - - - if (null == deviceReportService) { - deviceReportService = gatewayRemoteManager.getDeviceReportService(device.getProvinceProtocol()); - } - - - deviceReportService.pushGrainData2Cloud(pushData); - - } - - return "SUCCESS"; - } - - /** - * 灏嗙伯鎯呮暟鎹浆鎹负鎺ㄩ�侀渶瑕佺殑鏁版嵁鏍煎紡 - * - * @param lastData - * @return - */ - private KafaGrainData lastData2PushData(Fz40Grain lastData, GatewayDevice device) { - KafaGrainData result = new KafaGrainData(); - - result.setMessageId(ScConstant.getMessageId()); - result.setMessgeId(result.getMessageId()); - result.setDeviceID(device.getDeviceId()); - result.setAvgTemperature(lastData.getTempAve() + ""); - result.setMinTemperature(lastData.getTempMin() + ""); - result.setMaxTemperature(lastData.getTempMax() + ""); - result.setCollectTime(DateFormatUtils.format(lastData.getReceiveDate(), "yyyy-MM-dd HH:mm:ss")); - - //灞�-琛�-鍒� - String[] attrCable = lastData.getCable().split("-"); - - - if (StringUtils.isNotEmpty(lastData.getCableCir())) { - return lastData2PushData2(lastData, device); - } - - //灞傝鍒� - int cableZ = Integer.valueOf(attrCable[0]); - int cableY = Integer.valueOf(attrCable[1]); - int cableX = Integer.valueOf(attrCable[2]); - - //娓╁害闆嗗悎 - String[] attr = lastData.getPoints().split(","); - - //鏍瑰彿 - int cableNum = 1, position = 0; - - String curTemp; - List<KafkaGrainDataDetail1> temperature = new ArrayList<>(); - - int x = 0, y = 0, z = 0; - for (int i = 0; i < attr.length; i++) { - - position = i; - - z = i % cableZ + 1; - x = i / (cableZ * cableY); - y = x * (cableZ * cableY); - y = (i - y) / cableZ; - - // 鍊掕浆X杞� - x = cableX - 1 - x; - - //鏍瑰彿 - cableNum = (i / cableZ) + 1; - - curTemp = attr[i]; - - - //鍒ゆ柇鏈�澶� - if (curTemp.equals(result.getMaxTemperature())) { - result.setMaxX(x + ""); - result.setMaxY(y + ""); - result.setMaxZ(position + ""); - } - - - //鍒ゆ柇鏈�灏� - if (curTemp.equals(result.getMinTemperature())) { - result.setMinX(x + ""); - result.setMinY(y + ""); - result.setMinZ(position + ""); - } - - temperature.add(new KafkaGrainDataDetail1(cableNum + "", z + "", curTemp, position + "", x + "", y + "")); - } - - //绮俯淇℃伅 - - JSONObject trhInfo = new JSONObject(); - // TRHInfo trhInfo = new TRHInfo(); - trhInfo.put("temperature", temperature); - - - //浠撴俯搴︿俊鎭� - KafkaGrainTH grainTH = new KafkaGrainTH(); - grainTH.setHumidity(lastData.getHumidityIn() + ""); - grainTH.setTemperature(lastData.getTempIn() + ""); - grainTH.setAirHumidity(lastData.getHumidityOut() + ""); - grainTH.setAirTemperature(lastData.getTempOut() + ""); - - List<KafkaGrainTH> temperatureAndhumidity = new ArrayList<>(); - temperatureAndhumidity.add(grainTH); - - trhInfo.put("temperatureAndhumidity", temperatureAndhumidity); - //trhInfo.put("temperatureAndhumidity",grainTH); - - JSONObject params = new JSONObject(); - params.put("TRHInfo", trhInfo); - - result.setParams(params); - - return result; - } - - /** - * 閽堝绛掍粨 TODO ----- - * - * @param lastData - * @param device - * @return - */ - private KafaGrainData lastData2PushData2(Fz40Grain lastData, GatewayDevice device) { - - return null; - } - - - /** - * 鍦扮鎺ㄩ�佹祴璇� - * - * @param param - * @return - */ - @Expose - public String ajaxTestWeight(GateWayTestParam param) throws Exception { -// double weigh = (double) data.get("weight"); -// double deviceId = (double) data.get("deviceId"); - - double weigh = param.getWeight(); - String deviceId = param.getDeviceId(); - - List<GatewayDevice> list = gatewayDeviceService.listAll(); - if (list == null || list.size() <= 0) { - return "ERROR锛氭病鏈夐厤缃澶囦俊鎭紝鎵ц澶辫触"; - } - - List<GatewayDevice> weights = list.stream().filter(s -> (GatewayDeviceType.TYPE_01.getCode().equals(s.getType()))).collect(Collectors.toList()); - if (weights == null || weights.size() <= 0) { - return "ERROR锛欵RROR锛氭病鏈夐厤缃澶囦俊鎭紝鎵ц澶辫触"; - } - - String topic; - - for (GatewayDevice device : weights) { - WebSocketPacket packet = new WebSocketPacket(); - - WebSocketPacketHeader header = new WebSocketPacketHeader(); - header.setDeviceName(device.getDeviceName()); - header.setProductId(device.getProductId()); - //header.set - packet.setHeaders(header); - packet.setMessageType(ScConstant.MESSAGE_TYPE_REPORT_PROPERTY); - packet.setDeviceId(device.getDeviceId()); - - //璁剧疆淇℃伅涓讳綋 - WeightInfo weightInfo = new WeightInfo(); - weightInfo.setGrossWeight(weigh); - weightInfo.setNetWeight(weigh); - weightInfo.setNetWeight(weigh); - weightInfo.setWeightUnit("KG"); - JSONObject jsonObject = new JSONObject(); - jsonObject.put("weightInfo", JSONObject.toJSONString(weightInfo)); - - packet.setProperties(jsonObject); - - packet.setTimestamp(System.currentTimeMillis()); - - topic = ScConstant.TOPIC_MESSAGE_REPORT; - topic = topic.replace("{${productId}}", device.getProductId()).replace("{deviceId}", device.getDeviceId()); - // topic = "/device/" + header.getProductId() + "/" + device.getDeviceId() + "/message/property/report"; - - String message = JSONObject.toJSONString(packet); - - publishService.publishMqttWithTopic(message, topic); - - log.info("----------------------------鎵嬪姩鎺ㄩ�丮QTT鍦扮淇℃伅---------------------------"); - log.info("-----TOPIC-----{}", topic); - log.info("-----Message-----{}", message); - - } - return "SUCCESS"; - } - - /** - * 鍦扮鎺ㄩ�佹祴璇� - * - * @return - */ - @Expose - public String ajaxTestLpr(GateWayTestParam param) throws Exception { - - - //String carNumber = (String) data.get("carNumber"); - // String carNumber = "宸滱12345"; - String carNumber = param.getCarNumber(); - - List<GatewayDevice> list = gatewayDeviceService.listAll(); - if (list == null || list.size() <= 0) { - log.error("ERROR锛氭病鏈夐厤缃澶囦俊鎭紝鎵ц澶辫触"); - return "ERROR锛氭病鏈夐厤缃澶囦俊鎭紝鎵ц澶辫触"; - } - List<GatewayDevice> weights = list.stream().filter(s -> (GatewayDeviceType.TYPE_02.getCode().equals(s.getType()))).collect(Collectors.toList()); - if (weights == null || weights.size() <= 0) { - log.error("ERROR锛氭病鏈夐厤缃澶囦俊鎭紝鎵ц澶辫触"); - return "ERROR锛氭病鏈夐厤缃澶囦俊鎭紝鎵ц澶辫触"; - } - - String topic; - - for (GatewayDevice device : weights) { - - WebSocketPacket packet = new WebSocketPacket(); - - //productId鐨勫�煎湪webSocket鎵ц鍙戦�佹柟娉曚腑琛ュ厖 - WebSocketPacketHeader header = new WebSocketPacketHeader(); - header.setDeviceName(device.getDeviceName()); - header.setProductId(device.getProductId()); - //header.set - packet.setHeaders(header); - packet.setMessageType(ScConstant.MESSAGE_TYPE_REPORT_PROPERTY); - packet.setDeviceId(device.getDeviceId()); - packet.setMessageId(System.currentTimeMillis() + ""); - //璁剧疆淇℃伅涓讳綋 - LprData lpr = new LprData(); - lpr.setDeviceId(device.getDeviceId()); - lpr.setCarNumber(carNumber); - JSONObject jsonObject = new JSONObject(); - jsonObject.put("carNumber", carNumber); - jsonObject.put("position", "big"); - packet.setProperties(jsonObject); - - packet.setTimestamp(System.currentTimeMillis()); - - topic = ScConstant.TOPIC_MESSAGE_REPORT; - topic = topic.replace("{${productId}}", device.getProductId()).replace("{deviceId}", device.getDeviceId()); - // topic = "/device/" + header.getProductId() + "/" + device.getDeviceId() + "/message/property/report"; - - - String message = JSONObject.toJSONString(packet); - - publishService.publishMqttWithTopic(message, topic); - - - log.info("----------------------------鎵嬪姩鎺ㄩ�丮QTT杞︾墝璇嗗埆淇℃伅---------------------------"); - log.info("-----TOPIC-----{}", topic); - log.info("-----Message-----{}", message); - - } - return "SUCCESS"; - } -} diff --git a/src/main/java/com/fzzy/gateway/hx2023/data/SyncReqData.java b/src/main/java/com/fzzy/gateway/hx2023/data/SyncReqData.java deleted file mode 100644 index a260ba3..0000000 --- a/src/main/java/com/fzzy/gateway/hx2023/data/SyncReqData.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.fzzy.gateway.hx2023.data; - -import com.fzzy.gateway.entity.GatewayDevice; -import lombok.Data; - -@Data -public class SyncReqData { - - private String productId; - - private String deviceId; - - private String messageType; - - private String messageId; - - private String functionId; - - private String jsonData; - - private GatewayDevice device; - - private boolean autoReplay; -} diff --git a/src/main/java/com/fzzy/gateway/hx2023/kafka/KafkaDeviceReport.java b/src/main/java/com/fzzy/gateway/hx2023/kafka/KafkaDeviceReport.java deleted file mode 100644 index adb141c..0000000 --- a/src/main/java/com/fzzy/gateway/hx2023/kafka/KafkaDeviceReport.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.fzzy.gateway.hx2023.kafka; - -import com.alibaba.fastjson2.JSONObject; -import com.fzzy.gateway.hx2023.data.KafaGrainData; - -import lombok.extern.slf4j.Slf4j; - -import org.apache.kafka.clients.consumer.ConsumerRecord; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.kafka.annotation.KafkaListener; -import org.springframework.kafka.core.KafkaTemplate; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; - - -/** - * 浣跨敤KAFKA鎺ㄥ姩杩斿洖淇℃伅瀹炵幇锛岄拡瀵瑰綋鍓嶇綉鍏� - */ -@Slf4j -@Component -public class KafkaDeviceReport { - - - @Resource - private KafkaTemplate<String, Object> kafkaTemplate; - - /** - * 鎺ㄥ姩绮儏鍒颁簯绔郴缁� - * - * @param data - * @return - */ - public String sendGrainData2Cloud(KafaGrainData data) { - - - String strData = JSONObject.toJSONString(data); - //log.debug("----鎺ㄩ�佺伯鎯呬俊鎭埌浜戠---{}", strData); - - //鎺ㄩ�佷俊鎭� - kafkaTemplate.send("TOPIC_ZLJ_GRAIN_TEMPERATURE", strData).addCallback(success -> { - // 娑堟伅鍙戦�佸埌鐨則opic - String topic = success.getRecordMetadata().topic(); - // 娑堟伅鍙戦�佸埌鐨勫垎鍖� - int partition = success.getRecordMetadata().partition(); - // 娑堟伅鍦ㄥ垎鍖哄唴鐨刼ffset - long offset = success.getRecordMetadata().offset(); - - log.info("---绮儏-->>浜戠鎴愬姛:{}-{}-{}-{}", topic, partition, offset, strData); - }, failure -> { - log.info("---绮儏-->>浜戠澶辫触:{}-{}", data.getDeviceID(), failure.getMessage()); - }); - - return "SUCCESS"; - - } - - @KafkaListener(topics = {"TOPIC_ZLJ_GRAIN_TEMPERATURE"}) - public void onMessage1(ConsumerRecord<?, ?> record) { - // log.debug("鑾峰彇娑堣垂淇℃伅锛�" + record.topic() + "-" + record.partition() + "-" + record.value()); - } - -} diff --git a/src/main/java/com/fzzy/gateway/hx2023/kafka/KafkaDeviceReportService.java b/src/main/java/com/fzzy/gateway/hx2023/kafka/KafkaDeviceReportService.java new file mode 100644 index 0000000..7aa9969 --- /dev/null +++ b/src/main/java/com/fzzy/gateway/hx2023/kafka/KafkaDeviceReportService.java @@ -0,0 +1,64 @@ +package com.fzzy.gateway.hx2023.kafka; + +import lombok.extern.slf4j.Slf4j; +import org.apache.kafka.clients.consumer.ConsumerRecord; +import org.springframework.kafka.annotation.KafkaListener; +import org.springframework.kafka.core.KafkaTemplate; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + + +/** + * 浣跨敤KAFKA鎺ㄥ姩杩斿洖淇℃伅瀹炵幇锛岄拡瀵瑰綋鍓嶇綉鍏� + */ +@Slf4j +@Component +public class KafkaDeviceReportService { + + + @Resource + private KafkaTemplate<String, Object> kafkaTemplate; + + + public String publishWithTopic(String sendData, String topic) { + //鎺ㄩ�佷俊鎭� + kafkaTemplate.send(topic, sendData).addCallback(success -> { + // 娑堟伅鍙戦�佸埌鐨則opic + // String topic = success.getRecordMetadata().topic(); + // 娑堟伅鍙戦�佸埌鐨勫垎鍖� + int partition = success.getRecordMetadata().partition(); + // 娑堟伅鍦ㄥ垎鍖哄唴鐨刼ffset + long offset = success.getRecordMetadata().offset(); + + log.info("---鎺ㄩ�佽嚦KAFKA鎴愬姛--:{}-{}-{}-{}", topic, partition, offset, sendData); + }, failure -> { + log.info("---鎺ㄩ�佽嚦KAFKA澶辫触--:{}-{}-{}-{}", topic, sendData); + rePublishWithTopic(sendData, topic); + }); + return "SUCCESS"; + } + + private void rePublishWithTopic(String sendData, String topic) { + //鎺ㄩ�佷俊鎭� + kafkaTemplate.send(topic, sendData).addCallback(success -> { + // 娑堟伅鍙戦�佸埌鐨則opic + // String topic = success.getRecordMetadata().topic(); + // 娑堟伅鍙戦�佸埌鐨勫垎鍖� + int partition = success.getRecordMetadata().partition(); + // 娑堟伅鍦ㄥ垎鍖哄唴鐨刼ffset + long offset = success.getRecordMetadata().offset(); + + log.info("---鎺ㄩ�佽嚦KAFKA鎴愬姛--:{}-{}-{}-{}", topic, partition, offset, sendData); + }, failure -> { + log.info("---鎺ㄩ�佽嚦KAFKA澶辫触--:{}-{}-{}-{}", topic, sendData); + }); + } + + + @KafkaListener(topics = {"TOPIC_ZLJ_GRAIN_TEMPERATURE"}) + public void onMessage1(ConsumerRecord<?, ?> record) { + // log.debug("鑾峰彇娑堣垂淇℃伅锛�" + record.topic() + "-" + record.partition() + "-" + record.value()); + } + +} diff --git a/src/main/java/com/fzzy/gateway/hx2023/service/DeviceReportServiceImpl.java b/src/main/java/com/fzzy/gateway/hx2023/service/DeviceReportServiceImpl.java index b6cd355..f91b0b8 100644 --- a/src/main/java/com/fzzy/gateway/hx2023/service/DeviceReportServiceImpl.java +++ b/src/main/java/com/fzzy/gateway/hx2023/service/DeviceReportServiceImpl.java @@ -1,17 +1,13 @@ package com.fzzy.gateway.hx2023.service; -import com.alibaba.fastjson2.JSONObject; -import com.fzzy.api.data.GatewayProtocol; import com.fzzy.api.data.PushProtocol; -import com.fzzy.gateway.api.DeviceReportService; +import com.fzzy.gateway.api.GatewayDeviceReportService; +import com.fzzy.gateway.data.BaseReqData; +import com.fzzy.gateway.data.BaseResp; import com.fzzy.gateway.entity.GatewayDevice; import com.fzzy.gateway.hx2023.ScConstant; -import com.fzzy.gateway.hx2023.data.KafaGrainData; -import com.fzzy.gateway.hx2023.data.WebSocketPacket; -import com.fzzy.gateway.hx2023.data.WebSocketPacketHeader; -import com.fzzy.gateway.hx2023.data.WeightInfo; -import com.fzzy.gateway.hx2023.kafka.KafkaDeviceReport; -import com.fzzy.gateway.hx2023.websocket.WebSocketDeviceReport; +import com.fzzy.gateway.hx2023.kafka.KafkaDeviceReportService; +import com.fzzy.mqtt.MqttGatewayService; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -19,16 +15,15 @@ @Slf4j @Component -public class DeviceReportServiceImpl implements DeviceReportService { - +public class DeviceReportServiceImpl implements GatewayDeviceReportService { @Resource - private WebSocketDeviceReport webSocketDeviceReport; + private KafkaDeviceReportService kafkaDeviceReportService; @Resource - private KafkaDeviceReport kafkaDeviceReport; + private MqttGatewayService publishService; @Override - public String getProvinceProtocol() { + public String getProtocol() { return PushProtocol.GATEWAY_SC_2023.getCode(); } @@ -40,47 +35,57 @@ return "ERROR:娌℃湁鑾峰彇鍒拌澶囬厤缃俊鎭�"; } - //浣跨敤WEBSOCKET杩斿洖 - if (GatewayProtocol.GATE_WEBSOCKET.equals(device.getPushProtocol())) { - - WebSocketPacket packet = new WebSocketPacket(); - - //productId鐨勫�煎湪webSocket鎵ц鍙戦�佹柟娉曚腑琛ュ厖 - WebSocketPacketHeader header = new WebSocketPacketHeader(); - header.setDeviceName(device.getDeviceName()); - header.setProductId("hx-weigh-big-01"); - //header.set - packet.setHeaders(header); - packet.setMessageType(ScConstant.MESSAGE_TYPE_REPORT_PROPERTY); - packet.setDeviceId(device.getDeviceId()); - - //璁剧疆淇℃伅涓讳綋 - WeightInfo weightInfo = new WeightInfo(); - weightInfo.setGrossWeight(weigh); - weightInfo.setNetWeight(weigh); - weightInfo.setNetWeight(weigh); - weightInfo.setWeightUnit("KG"); - JSONObject jsonObject = new JSONObject(); - jsonObject.put("weightInfo", JSONObject.toJSONString(weightInfo)); - - packet.setProperties(jsonObject); - - packet.setTimestamp(System.currentTimeMillis()); - - - webSocketDeviceReport.sendByPacket(packet); - } - - if (GatewayProtocol.GATE_MQTT.equals(device.getPushProtocol())) { - //TODO ---->>>鍚庢湡娣诲姞鏀寔 - } return null; } @Override - public String pushGrainData2Cloud(KafaGrainData data) { + public BaseResp reportGrainData(BaseReqData reqData) { - return kafkaDeviceReport.sendGrainData2Cloud(data); + String topic = ScConstant.TOPIC_REPORT; + topic = topic.replace("${productId}", reqData.getProductId()).replace("${deviceId}", reqData.getDeviceId()); + + publishService.publishMqttWithTopic(reqData.getData(), topic); + + log.info("----------------------------鎺ㄩ�丮QTT绮儏淇℃伅---------------------------"); + log.info("-----TOPIC-----{}", topic); + log.info("-----Message-----{}", reqData.getData()); + + return new BaseResp(); + } + + @Override + public BaseResp reportWeightData(BaseReqData reqData) { + + String topic = ScConstant.TOPIC_MESSAGE_REPORT; + + topic = topic.replace("${productId}", reqData.getProductId()).replace("{deviceId}", reqData.getDeviceId()); + + publishService.publishMqttWithTopic(reqData.getData(), topic); + + log.info("----------------------------鎺ㄩ�丮QTT鍦扮淇℃伅---------------------------"); + log.info("-----TOPIC-----{}", topic); + log.info("-----Message-----{}", reqData.getData()); + return new BaseResp(); + } + + @Override + public BaseResp reportLprData(BaseReqData reqData) { + String topic = ScConstant.TOPIC_MESSAGE_REPORT; + topic = topic.replace("${productId}", reqData.getProductId()).replace("{deviceId}", reqData.getDeviceId()); + + publishService.publishMqttWithTopic(reqData.getData(), topic); + + log.info("----------------------------鎺ㄩ�丮QTT杞︾墝璇嗗埆淇℃伅---------------------------"); + log.info("-----TOPIC-----{}", topic); + log.info("-----Message-----{}", reqData.getData()); + return new BaseResp(); + } + + @Override + public BaseResp reportGrainDataByKafka(BaseReqData reqData) { + String topic = ScConstant.TOPIC_MESSAGE_REPORT; + kafkaDeviceReportService.publishWithTopic(reqData.getData(), topic); + return new BaseResp(); } } diff --git a/src/main/java/com/fzzy/gateway/hx2023/service/HkGatewaySyncLprImpl.java b/src/main/java/com/fzzy/gateway/hx2023/service/HkGatewaySyncLprImpl.java index 12f4e7c..6024ead 100644 --- a/src/main/java/com/fzzy/gateway/hx2023/service/HkGatewaySyncLprImpl.java +++ b/src/main/java/com/fzzy/gateway/hx2023/service/HkGatewaySyncLprImpl.java @@ -3,7 +3,7 @@ import com.fzzy.api.data.GatewayDeviceProtocol; import com.fzzy.gateway.api.GatewaySyncLprService; import com.fzzy.gateway.hx2023.data.LprData; -import com.fzzy.gateway.hx2023.data.SyncReqData; +import com.fzzy.gateway.data.BaseReqData; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -23,7 +23,7 @@ } @Override - public LprData syncLpr(SyncReqData reqData) { + public LprData syncLpr(BaseReqData reqData) { diff --git a/src/main/java/com/fzzy/gateway/hx2023/service/HxGatewayRemoteServiceImpl.java b/src/main/java/com/fzzy/gateway/hx2023/service/HxGatewayRemoteServiceImpl.java index c5c8362..e486592 100644 --- a/src/main/java/com/fzzy/gateway/hx2023/service/HxGatewayRemoteServiceImpl.java +++ b/src/main/java/com/fzzy/gateway/hx2023/service/HxGatewayRemoteServiceImpl.java @@ -4,6 +4,7 @@ import com.fzzy.api.data.PushProtocol; import com.fzzy.api.utils.*; import com.fzzy.api.view.repository.ApiLogRep; +import com.fzzy.gateway.data.BaseResp; import com.fzzy.gateway.service.GatewayConfService; import com.fzzy.gateway.util.GatewayHttpUtil; import com.fzzy.gateway.api.GatewayRemoteService; @@ -61,7 +62,7 @@ CloudResp respKey = JSONObject.parseObject(jsonStr, CloudResp.class); - if (ScConstant.CODE_200 == respKey.getCode()) { + if (BaseResp.CODE_200 == respKey.getCode()) { JSONObject object = respKey.getData(); String pubKey = (String) object.get("pubKey"); String priKey = (String) object.get("priKey"); @@ -79,7 +80,7 @@ log.info("---鑾峰彇AccessToken鎺ュ彛-杩斿洖---{}", jsonStr); CloudResp respToken = JSONObject.parseObject(jsonStr, CloudResp.class); - if (ScConstant.CODE_200 == respToken.getCode()) { + if (BaseResp.CODE_200 == respToken.getCode()) { JSONObject object = respKey.getData(); if (null != object) { String token = (String) object.get("token"); diff --git a/src/main/java/com/fzzy/gateway/hx2023/service/HxGatewaySyncGrainImpl.java b/src/main/java/com/fzzy/gateway/hx2023/service/HxGatewaySyncGrainImpl.java index d6f948e..100dce2 100644 --- a/src/main/java/com/fzzy/gateway/hx2023/service/HxGatewaySyncGrainImpl.java +++ b/src/main/java/com/fzzy/gateway/hx2023/service/HxGatewaySyncGrainImpl.java @@ -1,22 +1,15 @@ package com.fzzy.gateway.hx2023.service; -import com.alibaba.fastjson2.JSONObject; import com.fzzy.api.data.GatewayDeviceProtocol; -import com.fzzy.api.utils.NumberUtil; import com.fzzy.gateway.api.GatewaySyncGranService; import com.fzzy.gateway.data.BaseResp; -import com.fzzy.gateway.data.WeatherWebDto; +import com.fzzy.gateway.data.BaseReqData; import com.fzzy.gateway.entity.GatewayDevice; -import com.fzzy.gateway.hx2023.ScConstant; import com.fzzy.gateway.hx2023.data.*; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; -import org.springframework.stereotype.Component; import org.springframework.stereotype.Service; - -import java.util.ArrayList; -import java.util.List; /** * 缃戝叧涓庣伯鎯呭垎鏈洪�氳鍜岃В鏋� @@ -32,136 +25,13 @@ return GatewayDeviceProtocol.DEVICE_TEST.getCode(); } - @Override - public KafaGrainData syncGrain(SyncReqData reqData) { - - - return null; - } - @Override - public BaseResp syncGrain2(SyncReqData reqData) { + public BaseResp syncGrain(BaseReqData reqData) { - GatewayDevice device = reqData.getDevice(); - - - if (StringUtils.isEmpty(device.getCableCir())) { - return getGrainTest1(reqData, device); - } - - - BaseResp resp = new BaseResp(); - resp.setCode(500); - resp.setMsg("娌℃湁鍖归厤鍒拌鍒�"); - return resp; + return new BaseResp(); } - private BaseResp getGrainTest1(SyncReqData reqData, GatewayDevice device) { - String[] cableRule = device.getCableRule().split("-"); - - int cableZ = Integer.valueOf(cableRule[0]); - int cableY = Integer.valueOf(cableRule[1]); - int cableX = Integer.valueOf(cableRule[2]); - int sumNum = cableZ * cableY * cableX; - - - WeatherWebDto weather = WeatherWebDto.contextMap.get("default"); - double tMIn = 20, tMax = 25; - if (null != weather) { - double tOut = Double.valueOf(weather.getTem()); - tMIn = tOut - 4; - if(tMIn < 4)tMIn = 5; - tMax = tOut + 0; - if(tMax< 15)tMax = 15; - } - - - //鏁版嵁灏佽 - GrainData grain = new GrainData(); - grain.setMessageId(ScConstant.getMessageId()); - grain.setDeviceId(device.getDeviceId()); - grain.setTimestamp(System.currentTimeMillis() + ""); - - ClientHeaders headers = new ClientHeaders(); - headers.setDeviceName(device.getDeviceName()); - headers.setProductId(device.getProductId()); - headers.setOrgId(device.getOrgId()); - headers.setMsgId(ScConstant.getMessageId()); - grain.setHeaders(headers); - - GrainOutPut outPut = new GrainOutPut(); - - outPut.setAvgTemperature(NumberUtil.keepPrecision((tMax + tMIn) / 2, 1) + ""); - outPut.setMinTemperature(tMax + ""); - outPut.setMaxTemperature(tMIn + ""); - - - List<GrainTemp> temperature = new ArrayList<>(); - //鏍瑰彿 - int cableNum = 1, position = 0; - - double curTemp = tMIn; - double randomNumber = tMIn; - int x = 0, y = 0, z = 0; - for (int i = 0; i < sumNum; i++) { - if((i) % Integer.valueOf(cableRule[0]) == 0){ - randomNumber = Math.random() * (tMax - tMIn + 1) + tMIn; - - } else if ((i) % Integer.valueOf(cableRule[0]) == 1) { - randomNumber = Math.random() * (tMax - tMIn + 1) + tMIn; - - }else if ((i) % Integer.valueOf(cableRule[0]) == 2) { - randomNumber = Math.random() * (tMax - tMIn + 1) + tMIn; - - }else if ((i) % Integer.valueOf(cableRule[0]) == 3) { - randomNumber = Math.random() * (tMax - tMIn + 1) + tMIn; - - }else if ((i) % Integer.valueOf(cableRule[0]) == 4) { - randomNumber = Math.random() * (tMax - tMIn + 1) + tMIn; - - }else { - randomNumber = Math.random() * (tMax - tMIn + 1) + tMIn; - - } - // randomNumber = Math.random() * (tMax - tMIn + 1) + tMIn; - curTemp = NumberUtil.keepPrecision(randomNumber, 1); - position = i; - z = i % cableZ + 1; - x = i / (cableZ * cableY); - y = x * (cableZ * cableY); - y = (i - y) / cableZ; - - //鏍瑰彿 - cableNum = (i / cableZ) + 1; - - temperature.add(new GrainTemp(cableNum + "", z + "", curTemp + "", position + "")); - } - - outPut.setTemperature(temperature); - - grain.setOutPut(outPut); - - //姘旇薄淇℃伅 - GrainWeather weatherStation = new GrainWeather(); - weatherStation.setMessageId(ScConstant.getMessageId()); - weatherStation.setId(device.getDeviceId()); - weatherStation.setAirPressure(weather.getPressure()); - weatherStation.setHumidity(weather.getHumidity()); - weatherStation.setPm(weather.getAir_pm25()); - weatherStation.setRadiation("0"); - weatherStation.setRainfallAmount(weather.getWea()); - weatherStation.setTemperature(weather.getTem()); - weatherStation.setWindDirection(weather.getWin()); - weatherStation.setWindPower(weather.getWin_meter()); - weatherStation.setWindSpeed(weather.getWin_speed()); - grain.setWeatherStation(weatherStation); - - BaseResp resp = new BaseResp(); - resp.setData(JSONObject.toJSONString(grain)); - - return resp; - } } diff --git a/src/main/java/com/fzzy/gateway/hx2023/service/HxGatewaySyncIdCardImpl1.java b/src/main/java/com/fzzy/gateway/hx2023/service/HxGatewaySyncIdCardImpl1.java index 5e8b953..816663d 100644 --- a/src/main/java/com/fzzy/gateway/hx2023/service/HxGatewaySyncIdCardImpl1.java +++ b/src/main/java/com/fzzy/gateway/hx2023/service/HxGatewaySyncIdCardImpl1.java @@ -1,11 +1,8 @@ package com.fzzy.gateway.hx2023.service; import com.fzzy.gateway.api.GatewaySyncIdCardService; -import com.fzzy.gateway.api.GatewaySyncLedService; -import com.fzzy.gateway.api.GatewaySyncLprService; -import com.fzzy.gateway.api.GatewaySyncWeightService; +import com.fzzy.gateway.data.BaseReqData; import com.fzzy.gateway.hx2023.data.IdCardData; -import com.fzzy.gateway.hx2023.data.*; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -25,7 +22,7 @@ } @Override - public IdCardData syncIdCard(SyncReqData reqData) { + public IdCardData syncIdCard(BaseReqData reqData) { return null; } } diff --git a/src/main/java/com/fzzy/gateway/hx2023/service/HxGatewaySyncLedImpl1.java b/src/main/java/com/fzzy/gateway/hx2023/service/HxGatewaySyncLedImpl1.java index 5e09af8..bdb4313 100644 --- a/src/main/java/com/fzzy/gateway/hx2023/service/HxGatewaySyncLedImpl1.java +++ b/src/main/java/com/fzzy/gateway/hx2023/service/HxGatewaySyncLedImpl1.java @@ -1,7 +1,7 @@ package com.fzzy.gateway.hx2023.service; import com.fzzy.gateway.api.GatewaySyncLedService; -import com.fzzy.gateway.hx2023.data.SyncReqData; +import com.fzzy.gateway.data.BaseReqData; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -21,7 +21,7 @@ } @Override - public String push2Led(SyncReqData reqData) { + public String push2Led(BaseReqData reqData) { return null; } } diff --git a/src/main/java/com/fzzy/gateway/hx2023/service/OnReceiveMqttService.java b/src/main/java/com/fzzy/gateway/hx2023/service/OnReceiveMqttService.java index f2eed2f..5957fe6 100644 --- a/src/main/java/com/fzzy/gateway/hx2023/service/OnReceiveMqttService.java +++ b/src/main/java/com/fzzy/gateway/hx2023/service/OnReceiveMqttService.java @@ -7,10 +7,8 @@ import com.fzzy.gateway.entity.GatewayDevice; import com.fzzy.gateway.hx2023.ScConstant; import com.fzzy.gateway.hx2023.data.CloudSendData; -import com.fzzy.gateway.hx2023.data.SyncReqData; +import com.fzzy.gateway.data.BaseReqData; import com.fzzy.mqtt.MqttGatewayService; -import com.fzzy.mqtt.MqttProviderConfig; -import com.fzzy.mqtt.MqttPublishService; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -39,9 +37,7 @@ try { CloudSendData cloudSendData = JSONObject.parseObject(message, CloudSendData.class); - String functionId = cloudSendData.getFunctionId(); - //绮儏閲囬泦 if (ScConstant.FUNCTION_getTAndRHInfo.equals(functionId)) { getTAndRHInfo(cloudSendData); @@ -59,7 +55,7 @@ GatewayDevice device = GatewayUtils.getCacheByDeviceId(deviceId); - SyncReqData syncReqData = new SyncReqData(); + BaseReqData syncReqData = new BaseReqData(); syncReqData.setDeviceId(deviceId); syncReqData.setMessageId(cloudSendData.getMessageId()); syncReqData.setMessageType(cloudSendData.getMessageType()); @@ -67,19 +63,17 @@ syncReqData.setAutoReplay(true); syncReqData.setDevice(device); - BaseResp resp = gatewayRemoteManager.getSyncGrainService(device.getSyncProtocol()).syncGrain2(syncReqData); + + //TODO --->>鏆傛椂杩斿洖娴嬭瘯鏁版嵁 + + //BaseResp resp = gatewayRemoteManager.getSyncGrainService(device.getSyncProtocol()).syncGrain(syncReqData); + + BaseResp resp = gatewayRemoteManager.getGatewayTestService(device.getPushProtocol()).testGrain(syncReqData); //鑷姩鎺ㄩ�� if (200 == resp.getCode() && syncReqData.isAutoReplay()) { - String topic = ScConstant.TOPIC_REPORT; - - topic = topic.replace("${productId}", device.getProductId()).replace("${deviceId}", device.getDeviceId()); - - mqttGatewayService.publishMqttWithTopic(resp.getData(), topic); - - log.info("----------------------------鎺ㄩ�丮QTT淇℃伅---------------------------"); - log.info("-----TOPIC-----{}",topic); - log.info("-----Message-----{}",resp.getData()); + syncReqData.setData(resp.getData()); + gatewayRemoteManager.getDeviceReportService(device.getPushProtocol()).reportGrainData(syncReqData); } } } diff --git a/src/main/java/com/fzzy/gateway/hx2023/service/ScGatewayTestServiceImpl.java b/src/main/java/com/fzzy/gateway/hx2023/service/ScGatewayTestServiceImpl.java new file mode 100644 index 0000000..7cfcb3e --- /dev/null +++ b/src/main/java/com/fzzy/gateway/hx2023/service/ScGatewayTestServiceImpl.java @@ -0,0 +1,363 @@ +package com.fzzy.gateway.hx2023.service; + +import com.alibaba.fastjson2.JSONObject; +import com.fzzy.api.data.PushProtocol; +import com.fzzy.api.utils.DateUtil; +import com.fzzy.api.utils.NumberUtil; +import com.fzzy.async.fzzy40.Fzzy40CommonService; +import com.fzzy.async.fzzy40.entity.Fz40Grain; +import com.fzzy.gateway.api.GatewayDeviceReportService; +import com.fzzy.gateway.api.GatewayDeviceTestService; +import com.fzzy.gateway.data.BaseReqData; +import com.fzzy.gateway.data.BaseResp; +import com.fzzy.gateway.data.WeatherWebDto; +import com.fzzy.gateway.entity.GatewayDevice; +import com.fzzy.gateway.hx2023.ScConstant; +import com.fzzy.gateway.hx2023.data.*; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang.time.DateFormatUtils; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +@Slf4j +@Component +public class ScGatewayTestServiceImpl implements GatewayDeviceTestService { + + @Resource + private Fzzy40CommonService fzzy40CommonService; + + @Override + public String getProtocol() { + return PushProtocol.GATEWAY_SC_2023.getCode(); + } + + @Override + public BaseResp testGrain(BaseReqData reqData) { + + GatewayDevice device = reqData.getDevice(); + + if (StringUtils.isEmpty(device.getCableCir())) { + return getGrainTest1(reqData, device); + } + + BaseResp resp = new BaseResp(); + resp.setCode(500); + resp.setMsg("娌℃湁鍖归厤鍒拌鍒�"); + return resp; + } + + @Override + public BaseResp testGrainKafka(BaseReqData reqData) { + + Date start = DateUtil.getCurZero(reqData.getDayTime()); + Date end = DateUtil.getNextZero(reqData.getDayTime()); + + return pushByV40(reqData, start, end); + } + + private BaseResp pushByV40(BaseReqData reqData, Date start, Date end) { + + + GatewayDevice device = reqData.getDevice(); + String depotIdSys = device.getDepotIdSys(); + + if (StringUtils.isEmpty(depotIdSys)) { + log.error("--------璁惧--{}-鏈厤缃郴缁熺浉鍏充粨搴撶紪鐮侊紝鏃犳硶鎵ц褰撳墠鎿嶄綔", device.getDeviceName()); + return new BaseResp(BaseResp.CODE_50, "鏈厤缃郴缁熺浉鍏充粨搴撶紪鐮侊紝鏃犳硶鎵ц褰撳墠鎿嶄綔"); + } + + List<Fz40Grain> listGrain = fzzy40CommonService.listGrain(depotIdSys, start, end); + if (null == listGrain || listGrain.isEmpty()) { + log.error("---------璁惧---{}--鏈悓姝ュ埌绮儏淇℃伅锛岃纭褰撳墠鏉′欢涓嬫槸鍚︽湁鏁版嵁", device.getDeviceName()); + return new BaseResp(BaseResp.CODE_50, "鏈悓姝ュ埌绮儏淇℃伅锛岃纭褰撳墠鏉′欢涓嬫槸鍚︽湁鏁版嵁"); + } + + //鑾峰彇鏈�鍚庝竴鏉$伯鎯呬綔涓哄綋鍓嶆暟鎹� + Fz40Grain lastData = listGrain.get(listGrain.size() - 1); + KafaGrainData pushData = this.lastData2PushData(lastData, device); + + return new BaseResp(JSONObject.toJSONString(pushData)); + } + + /** + * 灏嗙伯鎯呮暟鎹浆鎹负鎺ㄩ�侀渶瑕佺殑鏁版嵁鏍煎紡 + * + * @param lastData + * @return + */ + private KafaGrainData lastData2PushData(Fz40Grain lastData, GatewayDevice device) { + KafaGrainData result = new KafaGrainData(); + + result.setMessageId(ScConstant.getMessageId()); + result.setMessgeId(result.getMessageId()); + result.setDeviceID(device.getDeviceId()); + result.setAvgTemperature(lastData.getTempAve() + ""); + result.setMinTemperature(lastData.getTempMin() + ""); + result.setMaxTemperature(lastData.getTempMax() + ""); + result.setCollectTime(DateFormatUtils.format(lastData.getReceiveDate(), "yyyy-MM-dd HH:mm:ss")); + + //灞�-琛�-鍒� + String[] attrCable = lastData.getCable().split("-"); + + + if (StringUtils.isNotEmpty(lastData.getCableCir())) { + return lastData2PushData2(lastData, device); + } + + //灞傝鍒� + int cableZ = Integer.valueOf(attrCable[0]); + int cableY = Integer.valueOf(attrCable[1]); + int cableX = Integer.valueOf(attrCable[2]); + + //娓╁害闆嗗悎 + String[] attr = lastData.getPoints().split(","); + + //鏍瑰彿 + int cableNum = 1, position = 0; + + String curTemp; + List<KafkaGrainDataDetail1> temperature = new ArrayList<>(); + + int x = 0, y = 0, z = 0; + for (int i = 0; i < attr.length; i++) { + + position = i; + + z = i % cableZ + 1; + x = i / (cableZ * cableY); + y = x * (cableZ * cableY); + y = (i - y) / cableZ; + + // 鍊掕浆X杞� + x = cableX - 1 - x; + + //鏍瑰彿 + cableNum = (i / cableZ) + 1; + + curTemp = attr[i]; + + + //鍒ゆ柇鏈�澶� + if (curTemp.equals(result.getMaxTemperature())) { + result.setMaxX(x + ""); + result.setMaxY(y + ""); + result.setMaxZ(position + ""); + } + + + //鍒ゆ柇鏈�灏� + if (curTemp.equals(result.getMinTemperature())) { + result.setMinX(x + ""); + result.setMinY(y + ""); + result.setMinZ(position + ""); + } + + temperature.add(new KafkaGrainDataDetail1(cableNum + "", z + "", curTemp, position + "", x + "", y + "")); + } + + //绮俯淇℃伅 + + JSONObject trhInfo = new JSONObject(); + // TRHInfo trhInfo = new TRHInfo(); + trhInfo.put("temperature", temperature); + + + //浠撴俯搴︿俊鎭� + KafkaGrainTH grainTH = new KafkaGrainTH(); + grainTH.setHumidity(lastData.getHumidityIn() + ""); + grainTH.setTemperature(lastData.getTempIn() + ""); + grainTH.setAirHumidity(lastData.getHumidityOut() + ""); + grainTH.setAirTemperature(lastData.getTempOut() + ""); + + List<KafkaGrainTH> temperatureAndhumidity = new ArrayList<>(); + temperatureAndhumidity.add(grainTH); + + trhInfo.put("temperatureAndhumidity", temperatureAndhumidity); + //trhInfo.put("temperatureAndhumidity",grainTH); + + JSONObject params = new JSONObject(); + params.put("TRHInfo", trhInfo); + + result.setParams(params); + + return result; + } + + /** + * 閽堝绛掍粨 TODO ----- + * + * @param lastData + * @param device + * @return + */ + private KafaGrainData lastData2PushData2(Fz40Grain lastData, GatewayDevice device) { + + return null; + } + + + @Override + public BaseResp testWeight(BaseReqData reqData) { + + GatewayDevice device = reqData.getDevice(); + WebSocketPacket packet = new WebSocketPacket(); + + WebSocketPacketHeader header = new WebSocketPacketHeader(); + header.setDeviceName(device.getDeviceName()); + header.setProductId(device.getProductId()); + packet.setHeaders(header); + packet.setMessageType(ScConstant.MESSAGE_TYPE_REPORT_PROPERTY); + packet.setDeviceId(device.getDeviceId()); + + //璁剧疆淇℃伅涓讳綋 + WeightInfo weightInfo = new WeightInfo(); + weightInfo.setGrossWeight(reqData.getWeight()); + weightInfo.setNetWeight(reqData.getWeight()); + weightInfo.setNetWeight(reqData.getWeight()); + weightInfo.setWeightUnit("KG"); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("weightInfo", JSONObject.toJSONString(weightInfo)); + + packet.setProperties(jsonObject); + + packet.setTimestamp(System.currentTimeMillis()); + + return new BaseResp(JSONObject.toJSONString(packet)); + } + + @Override + public BaseResp testLpr(BaseReqData reqData) { + + + WebSocketPacket packet = new WebSocketPacket(); + WebSocketPacketHeader header = new WebSocketPacketHeader(); + header.setDeviceName(reqData.getDeviceName()); + header.setProductId(reqData.getProductId()); + + packet.setHeaders(header); + packet.setMessageType(ScConstant.MESSAGE_TYPE_REPORT_PROPERTY); + packet.setDeviceId(reqData.getDeviceId()); + packet.setMessageId(System.currentTimeMillis() + ""); + //璁剧疆淇℃伅涓讳綋 + LprData lpr = new LprData(); + lpr.setDeviceId(reqData.getDeviceId()); + lpr.setCarNumber(reqData.getCarNumber()); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("carNumber", reqData.getCarNumber()); + jsonObject.put("position", "big"); + packet.setProperties(jsonObject); + + packet.setTimestamp(System.currentTimeMillis()); + + return new BaseResp(JSONObject.toJSONString(packet)); + } + + private BaseResp getGrainTest1(BaseReqData reqData, GatewayDevice device) { + + String[] cableRule = device.getCableRule().split("-"); + + int cableZ = Integer.valueOf(cableRule[0]); + int cableY = Integer.valueOf(cableRule[1]); + int cableX = Integer.valueOf(cableRule[2]); + int sumNum = cableZ * cableY * cableX; + + + WeatherWebDto weather = WeatherWebDto.contextMap.get("default"); + double tMIn = 20, tMax = 25; + if (null != weather) { + double tOut = Double.valueOf(weather.getTem()); + tMIn = tOut - 4; + if (tMIn < 4) tMIn = 5; + tMax = tOut + 0; + if (tMax < 15) tMax = 15; + } + + + //鏁版嵁灏佽 + GrainData grain = new GrainData(); + grain.setMessageId(ScConstant.getMessageId()); + grain.setDeviceId(device.getDeviceId()); + grain.setTimestamp(System.currentTimeMillis() + ""); + + ClientHeaders headers = new ClientHeaders(); + headers.setDeviceName(device.getDeviceName()); + headers.setProductId(device.getProductId()); + headers.setOrgId(device.getOrgId()); + headers.setMsgId(ScConstant.getMessageId()); + grain.setHeaders(headers); + + GrainOutPut outPut = new GrainOutPut(); + + outPut.setAvgTemperature(NumberUtil.keepPrecision((tMax + tMIn) / 2, 1) + ""); + outPut.setMinTemperature(tMax + ""); + outPut.setMaxTemperature(tMIn + ""); + + + List<GrainTemp> temperature = new ArrayList<>(); + //鏍瑰彿 + int cableNum = 1, position = 0; + + double curTemp = tMIn; + double randomNumber = tMIn; + int x = 0, y = 0, z = 0; + for (int i = 0; i < sumNum; i++) { + if ((i) % Integer.valueOf(cableRule[0]) == 0) { + randomNumber = Math.random() * (tMax - tMIn + 1) + tMIn; + + } else if ((i) % Integer.valueOf(cableRule[0]) == 1) { + randomNumber = Math.random() * (tMax - tMIn + 1) + tMIn; + + } else if ((i) % Integer.valueOf(cableRule[0]) == 2) { + randomNumber = Math.random() * (tMax - tMIn + 1) + tMIn; + + } else if ((i) % Integer.valueOf(cableRule[0]) == 3) { + randomNumber = Math.random() * (tMax - tMIn + 1) + tMIn; + + } else if ((i) % Integer.valueOf(cableRule[0]) == 4) { + randomNumber = Math.random() * (tMax - tMIn + 1) + tMIn; + + } else { + randomNumber = Math.random() * (tMax - tMIn + 1) + tMIn; + + } + // randomNumber = Math.random() * (tMax - tMIn + 1) + tMIn; + curTemp = NumberUtil.keepPrecision(randomNumber, 1); + position = i; + z = i % cableZ + 1; + x = i / (cableZ * cableY); + y = x * (cableZ * cableY); + y = (i - y) / cableZ; + + //鏍瑰彿 + cableNum = (i / cableZ) + 1; + + temperature.add(new GrainTemp(cableNum + "", z + "", curTemp + "", position + "")); + } + + outPut.setTemperature(temperature); + + grain.setOutPut(outPut); + + //姘旇薄淇℃伅 + GrainWeather weatherStation = new GrainWeather(); + weatherStation.setMessageId(ScConstant.getMessageId()); + weatherStation.setId(device.getDeviceId()); + weatherStation.setAirPressure(weather.getPressure()); + weatherStation.setHumidity(weather.getHumidity()); + weatherStation.setPm(weather.getAir_pm25()); + weatherStation.setRadiation("0"); + weatherStation.setRainfallAmount(weather.getWea()); + weatherStation.setTemperature(weather.getTem()); + weatherStation.setWindDirection(weather.getWin()); + weatherStation.setWindPower(weather.getWin_meter()); + weatherStation.setWindSpeed(weather.getWin_speed()); + grain.setWeatherStation(weatherStation); + + return new BaseResp(JSONObject.toJSONString(grain)); + } +} diff --git a/src/main/java/com/fzzy/gateway/service/GatewayDeviceTestPR.java b/src/main/java/com/fzzy/gateway/service/GatewayDeviceTestPR.java index 44e8349..2bf419b 100644 --- a/src/main/java/com/fzzy/gateway/service/GatewayDeviceTestPR.java +++ b/src/main/java/com/fzzy/gateway/service/GatewayDeviceTestPR.java @@ -1,20 +1,18 @@ package com.fzzy.gateway.service; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson2.JSONObject; import com.bstek.dorado.annotation.Expose; import com.fzzy.api.data.GatewayDeviceType; import com.fzzy.api.utils.DateUtil; -import com.fzzy.async.fzzy40.Fzzy40CommonService; import com.fzzy.async.fzzy40.entity.Fz40Grain; -import com.fzzy.gateway.api.DeviceReportService; +import com.fzzy.gateway.api.GatewayDeviceReportService; import com.fzzy.gateway.api.GatewayRemoteManager; import com.fzzy.gateway.data.BaseResp; +import com.fzzy.gateway.data.BaseReqData; import com.fzzy.gateway.entity.GatewayDevice; import com.fzzy.gateway.hx2023.ScConstant; import com.fzzy.gateway.hx2023.data.*; import com.fzzy.gateway.service.repository.GatewayDeviceRep; -import com.fzzy.mqtt.MqttGatewayService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.time.DateFormatUtils; @@ -59,7 +57,7 @@ */ @Expose public String ajaxTestGrain2(GatewayDevice data) { - SyncReqData reqData = new SyncReqData(); + BaseReqData reqData = new BaseReqData(); reqData.setDevice(data); reqData.setAutoReplay(true); reqData.setMessageType(ScConstant.MESSAGE_TYPE_INVOKE_FUNCTION); @@ -130,7 +128,7 @@ KafaGrainData pushData; - DeviceReportService deviceReportService = null; + GatewayDeviceReportService deviceReportService = null; for (GatewayDevice device : list) { depotIdSys = device.getDepotIdSys(); diff --git a/src/main/java/com/fzzy/gateway/view/GatewayDevice.view.xml b/src/main/java/com/fzzy/gateway/view/GatewayDevice.view.xml index d56a8b3..e9db492 100644 --- a/src/main/java/com/fzzy/gateway/view/GatewayDevice.view.xml +++ b/src/main/java/com/fzzy/gateway/view/GatewayDevice.view.xml @@ -48,9 +48,9 @@ <Property></Property> <Property name="label">瑙嗛RTSP</Property> </PropertyDef> - <PropertyDef name="provinceProtocol"> + <PropertyDef name="pushProtocol"> <Property></Property> - <Property name="label">鐪佸钩鍙板崗璁�</Property> + <Property name="label">涓婅鍗忚</Property> <Property name="mapping"> <Property name="mapValues">${dorado.getDataProvider("apiTriggerService#triggerPushProtocol").getResult()}</Property> <Property name="keyProperty">code</Property> @@ -58,19 +58,9 @@ </Property> <Property name="required">true</Property> </PropertyDef> - <PropertyDef name="pushProtocol"> - <Property></Property> - <Property name="label">涓庣郴缁熼�氳鍗忚</Property> - <Property name="mapping"> - <Property name="mapValues">${dorado.getDataProvider("apiTriggerService#triggerGatewayProtocol").getResult()}</Property> - <Property name="keyProperty">code</Property> - <Property name="valueProperty">name</Property> - </Property> - <Property name="required">true</Property> - </PropertyDef> <PropertyDef name="syncProtocol"> <Property></Property> - <Property name="label">涓庤澶囬�氳鍗忚</Property> + <Property name="label">涓嬭鍗忚</Property> <Property name="mapping"> <Property name="keyProperty">code</Property> <Property name="valueProperty">name</Property> @@ -364,11 +354,6 @@ <AutoFormElement> <Property name="name">password</Property> <Property name="property">password</Property> - <Editor/> - </AutoFormElement> - <AutoFormElement> - <Property name="name">provinceProtocol</Property> - <Property name="property">provinceProtocol</Property> <Editor/> </AutoFormElement> <AutoFormElement> diff --git a/src/main/java/com/fzzy/mqtt/MqttConsumerConfig.java b/src/main/java/com/fzzy/mqtt/MqttConsumerConfig.java index 854d9e5..86e9090 100644 --- a/src/main/java/com/fzzy/mqtt/MqttConsumerConfig.java +++ b/src/main/java/com/fzzy/mqtt/MqttConsumerConfig.java @@ -67,8 +67,7 @@ String[] topics = mqttProperties.getTopics().split(","); //topicList.toArray(topics); - MqttPahoMessageDrivenChannelAdapter adapter = - new MqttPahoMessageDrivenChannelAdapter(mqttProperties.getClientInId(), receiverMqttClientFactoryForSub(), topics); + MqttPahoMessageDrivenChannelAdapter adapter = new MqttPahoMessageDrivenChannelAdapter(mqttProperties.getClientInId(), receiverMqttClientFactoryForSub(), topics); adapter.setCompletionTimeout(mqttProperties.getCompletionTimeout()); adapter.setConverter(new DefaultPahoMessageConverter()); adapter.setQos(mqttProperties.getQos()); -- Gitblit v1.9.3