From 41cd6c8db40bceb08290828ae0d4fc5caeea7147 Mon Sep 17 00:00:00 2001 From: jiazx0107@163.com <jiazx0107@163.com> Date: 星期六, 18 十一月 2023 15:58:25 +0800 Subject: [PATCH] 调整车牌识别配置 --- src/main/java/com/fzzy/gateway/hx2023/service/ApiInitService.java | 25 ++++ src/main/java/com/fzzy/gateway/entity/GateWayParam.java | 2 src/main/java/com/fzzy/gateway/data/BaseReqData.java | 19 +++ src/main/java/com/fzzy/gateway/controller/GatewayDeviceController.java | 61 ++++++--- src/main/java/com/fzzy/gateway/view/GatewayDevice.view.xml | 21 +++ src/main/java/com/fzzy/gateway/entity/GatewayDevice.java | 5 src/main/java/com/fzzy/gateway/view/GatewayDevice.js | 19 +++ src/main/java/com/fzzy/gateway/hx2023/service/ScGatewayTestServiceImpl.java | 4 src/main/java/com/fzzy/protocol/sdkhk/HkGatewaySyncLprImpl.java | 66 +++++++++++ /dev/null | 32 ----- src/main/java/com/fzzy/protocol/sdkhk/HKUtils.java | 25 ++++ src/main/java/com/fzzy/gateway/api/GatewaySyncLprService.java | 11 + src/main/java/com/fzzy/gateway/GatewayRunner.java | 2 src/main/java/com/fzzy/gateway/hx2023/service/DeviceReportServiceImpl.java | 24 ++++ 14 files changed, 260 insertions(+), 56 deletions(-) diff --git a/src/main/java/com/fzzy/gateway/GatewayRunner.java b/src/main/java/com/fzzy/gateway/GatewayRunner.java index a74979c..8f25135 100644 --- a/src/main/java/com/fzzy/gateway/GatewayRunner.java +++ b/src/main/java/com/fzzy/gateway/GatewayRunner.java @@ -40,6 +40,8 @@ //鏇存柊璁惧缂撳瓨 apiInitService.updateDeviceCache(); + //鍒濆鍖栬溅鐗岃瘑鍒� + apiInitService.initAllLpr(); } } diff --git a/src/main/java/com/fzzy/gateway/api/GatewaySyncLprService.java b/src/main/java/com/fzzy/gateway/api/GatewaySyncLprService.java index 16a1d33..914a170 100644 --- a/src/main/java/com/fzzy/gateway/api/GatewaySyncLprService.java +++ b/src/main/java/com/fzzy/gateway/api/GatewaySyncLprService.java @@ -2,6 +2,7 @@ import com.fzzy.gateway.data.BaseReqData; +import com.fzzy.gateway.data.BaseResp; import com.fzzy.gateway.hx2023.data.*; /** @@ -22,6 +23,14 @@ * * @return */ - public LprData syncLpr(BaseReqData reqData); + public BaseResp syncLpr(BaseReqData reqData); + + + /** + * 杞︾墝璇嗗埆鑾峰彇 + * + * @return + */ + public BaseResp initLpr(BaseReqData reqData); } diff --git a/src/main/java/com/fzzy/gateway/controller/GatewayDeviceTestController.java b/src/main/java/com/fzzy/gateway/controller/GatewayDeviceController.java similarity index 83% rename from src/main/java/com/fzzy/gateway/controller/GatewayDeviceTestController.java rename to src/main/java/com/fzzy/gateway/controller/GatewayDeviceController.java index 605ee3a..0d6b52a 100644 --- a/src/main/java/com/fzzy/gateway/controller/GatewayDeviceTestController.java +++ b/src/main/java/com/fzzy/gateway/controller/GatewayDeviceController.java @@ -1,25 +1,15 @@ 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.GateWayParam; 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; @@ -36,8 +26,8 @@ */ @Slf4j @Controller -@RequestMapping("/gateway/test") -public class GatewayDeviceTestController { +@RequestMapping("/gateway") +public class GatewayDeviceController { @Resource private GatewayDeviceService gatewayDeviceService; @@ -52,9 +42,9 @@ * @param param * @return */ - @PostMapping("/deviceTest") + @PostMapping("/test/deviceTest") public @ResponseBody - String deviceTest(@RequestBody GateWayTestParam param) throws Exception { + String deviceTest(@RequestBody GateWayParam param) throws Exception { if (StringUtils.isEmpty(param.getBizType())) { return "ERROR:娌℃湁鑾峰彇鍒颁笟鍔$被鍨嬶紝鎵ц澶辫触"; @@ -79,7 +69,39 @@ return "SUCCESS"; } - private String testGrain(GateWayTestParam param) { + /** + * 鍒濆鍖栬溅鐗岃瘑鍒� + * + * @param param + * @return + */ + @PostMapping("/control/init-lpr") + public @ResponseBody + String initLpr(@RequestBody GateWayParam param) throws Exception { + + List<GatewayDevice> list = gatewayDeviceService.listAll(); + + if (null == list || list.isEmpty()) { + return "ERROR:娌℃湁鑾峰彇鍒拌澶囦俊鎭�"; + } + + BaseReqData reqData; + int i = 1; + for (GatewayDevice device : list) { + + if (!GatewayDeviceType.TYPE_02.getCode().equals(device.getType())) { + continue; + } + reqData = new BaseReqData(device); + reqData.setIndex(i); + gatewayRemoteManager.getSyncLprService(device.getSyncProtocol()).initLpr(reqData); + i++; + } + + return "SUCCESS"; + } + + private String testGrain(GateWayParam param) { String deviceId = param.getDeviceId(); GatewayDevice device = GatewayUtils.getCacheByDeviceId(deviceId); @@ -116,7 +138,7 @@ * @param param * @return */ - public String ajaxTestKafkaGrain(GateWayTestParam param) throws Exception { + public String ajaxTestKafkaGrain(GateWayParam param) throws Exception { List<GatewayDevice> list = gatewayDeviceService.listAll(); if (null == list || list.isEmpty()) { return "ERROR锛氫负鑾峰彇鍒扮郴缁熶腑璁惧閰嶇疆锛屽彇娑堟墽琛�"; @@ -148,10 +170,9 @@ * @param param * @return */ - public String ajaxTestWeight(GateWayTestParam param) throws Exception { + public String ajaxTestWeight(GateWayParam param) throws Exception { double weight = param.getWeight(); - String deviceId = param.getDeviceId(); List<GatewayDevice> list = gatewayDeviceService.listAll(); if (list == null || list.size() <= 0) { @@ -189,7 +210,7 @@ * * @return */ - public String ajaxTestLpr(GateWayTestParam param) throws Exception { + public String ajaxTestLpr(GateWayParam param) throws Exception { String carNumber = param.getCarNumber(); diff --git a/src/main/java/com/fzzy/gateway/data/BaseReqData.java b/src/main/java/com/fzzy/gateway/data/BaseReqData.java index fcc79fe..987d40a 100644 --- a/src/main/java/com/fzzy/gateway/data/BaseReqData.java +++ b/src/main/java/com/fzzy/gateway/data/BaseReqData.java @@ -31,4 +31,23 @@ private Date dayTime; private String data; + + private int index = 1; + + public BaseReqData() { + } + + public BaseReqData(GatewayDevice device) { + this.device = device; + this.productId = device.getProductId(); + this.deviceId = device.getDeviceId(); + this.deviceName = device.getDeviceName(); + } + + public BaseReqData(String productId, String deviceId, String deviceName, GatewayDevice device) { + this.productId = productId; + this.deviceId = deviceId; + this.deviceName = deviceName; + this.device = device; + } } diff --git a/src/main/java/com/fzzy/gateway/entity/GateWayTestParam.java b/src/main/java/com/fzzy/gateway/entity/GateWayParam.java similarity index 93% rename from src/main/java/com/fzzy/gateway/entity/GateWayTestParam.java rename to src/main/java/com/fzzy/gateway/entity/GateWayParam.java index 48c2ba5..4c0d4f4 100644 --- a/src/main/java/com/fzzy/gateway/entity/GateWayTestParam.java +++ b/src/main/java/com/fzzy/gateway/entity/GateWayParam.java @@ -6,7 +6,7 @@ import java.util.Date; @Data -public class GateWayTestParam { +public class GateWayParam { @PropertyDef(label = "寮�濮嬫椂闂�") private Date start; @PropertyDef(label = "鎴鏃堕棿") diff --git a/src/main/java/com/fzzy/gateway/entity/GatewayDevice.java b/src/main/java/com/fzzy/gateway/entity/GatewayDevice.java index 1e7320a..68c7daa 100644 --- a/src/main/java/com/fzzy/gateway/entity/GatewayDevice.java +++ b/src/main/java/com/fzzy/gateway/entity/GatewayDevice.java @@ -101,10 +101,13 @@ @PropertyDef(label = "缁勭粐缂栫爜") private String orgId; + @Column(name = "POSITION_", length = 40) + @PropertyDef(label = "浣嶇疆") + private String position; + @Column(name = "REMARK_", length = 200) @PropertyDef(label = "澶囨敞", description = "澶囨敞淇℃伅") private String remark; - @Column(name = "CABLE_RULE_", length = 20) @PropertyDef(label = "甯冪嚎瑙勫垯", description = "骞虫柟浠撹〃绀哄眰琛屽垪锛岀瓛浠撹〃绀烘瘡鍦堢殑鍒楁暟") diff --git a/src/main/java/com/fzzy/gateway/hx2023/service/ApiInitService.java b/src/main/java/com/fzzy/gateway/hx2023/service/ApiInitService.java index 75a354b..7f303e0 100644 --- a/src/main/java/com/fzzy/gateway/hx2023/service/ApiInitService.java +++ b/src/main/java/com/fzzy/gateway/hx2023/service/ApiInitService.java @@ -1,9 +1,12 @@ package com.fzzy.gateway.hx2023.service; import com.bstek.dorado.annotation.Expose; +import com.fzzy.api.data.GatewayDeviceType; import com.fzzy.gateway.api.GatewayRemoteManager; import com.fzzy.gateway.api.GatewayRemoteService; +import com.fzzy.gateway.data.BaseReqData; import com.fzzy.gateway.entity.GatewayConf; +import com.fzzy.gateway.entity.GatewayDevice; import com.fzzy.gateway.service.GatewayConfService; @@ -52,4 +55,26 @@ public void updateDeviceCache() { deviceService.flushCache(); } + + public void initAllLpr() { + List<GatewayDevice> list = deviceService.listAll(); + + if (null == list || list.isEmpty()) { + return; + } + + BaseReqData reqData; + int i = 1; + for (GatewayDevice device : list) { + + if (!GatewayDeviceType.TYPE_02.getCode().equals(device.getType())) { + continue; + } + + reqData = new BaseReqData(device); + reqData.setIndex(i); + gatewayRemoteManager.getSyncLprService(device.getSyncProtocol()).initLpr(reqData); + i++; + } + } } 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 56683c8..d71a7c5 100644 --- a/src/main/java/com/fzzy/gateway/hx2023/service/DeviceReportServiceImpl.java +++ b/src/main/java/com/fzzy/gateway/hx2023/service/DeviceReportServiceImpl.java @@ -7,6 +7,7 @@ import com.fzzy.gateway.data.BaseResp; import com.fzzy.gateway.entity.GatewayDevice; import com.fzzy.gateway.hx2023.ScConstant; +import com.fzzy.gateway.hx2023.data.LprData; import com.fzzy.gateway.hx2023.data.WebSocketPacket; import com.fzzy.gateway.hx2023.data.WebSocketPacketHeader; import com.fzzy.gateway.hx2023.data.WeightInfo; @@ -94,6 +95,29 @@ String topic = ScConstant.TOPIC_MESSAGE_REPORT; topic = topic.replace("${productId}", reqData.getProductId()).replace("${deviceId}", reqData.getDeviceId()); + GatewayDevice device = reqData.getDevice(); + + if (null == reqData.getData()) { + 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", device.getPosition()); + packet.setProperties(jsonObject); + packet.setTimestamp(System.currentTimeMillis()); + } + publishService.publishMqttWithTopic(reqData.getData(), topic); log.info("----------------------------鎺ㄩ�丮QTT杞︾墝璇嗗埆淇℃伅---------------------------"); diff --git a/src/main/java/com/fzzy/gateway/hx2023/service/HkGatewaySyncLprImpl.java b/src/main/java/com/fzzy/gateway/hx2023/service/HkGatewaySyncLprImpl.java deleted file mode 100644 index 6024ead..0000000 --- a/src/main/java/com/fzzy/gateway/hx2023/service/HkGatewaySyncLprImpl.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.fzzy.gateway.hx2023.service; - -import com.fzzy.api.data.GatewayDeviceProtocol; -import com.fzzy.gateway.api.GatewaySyncLprService; -import com.fzzy.gateway.hx2023.data.LprData; -import com.fzzy.gateway.data.BaseReqData; -import lombok.Data; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -/** - * 缃戝叧涓庤澶囦箣闂寸殑閫氳-娴峰悍SDK - */ -@Slf4j -@Data -@Component -public class HkGatewaySyncLprImpl implements GatewaySyncLprService { - - - @Override - public String getLprProtocol() { - return GatewayDeviceProtocol.DEVICE_LPR_SDK_HK.getCode(); - } - - @Override - public LprData syncLpr(BaseReqData reqData) { - - - - return null; - } -} diff --git a/src/main/java/com/fzzy/gateway/hx2023/service/ScGatewayTestServiceImpl.java b/src/main/java/com/fzzy/gateway/hx2023/service/ScGatewayTestServiceImpl.java index c9d3ec5..53966e1 100644 --- a/src/main/java/com/fzzy/gateway/hx2023/service/ScGatewayTestServiceImpl.java +++ b/src/main/java/com/fzzy/gateway/hx2023/service/ScGatewayTestServiceImpl.java @@ -235,6 +235,8 @@ public BaseResp testLpr(BaseReqData reqData) { + GatewayDevice device = reqData.getDevice(); + WebSocketPacket packet = new WebSocketPacket(); WebSocketPacketHeader header = new WebSocketPacketHeader(); header.setDeviceName(reqData.getDeviceName()); @@ -250,7 +252,7 @@ lpr.setCarNumber(reqData.getCarNumber()); JSONObject jsonObject = new JSONObject(); jsonObject.put("carNumber", reqData.getCarNumber()); - jsonObject.put("position", "big"); + jsonObject.put("position", device.getPosition()); packet.setProperties(jsonObject); packet.setTimestamp(System.currentTimeMillis()); diff --git a/src/main/java/com/fzzy/gateway/view/GatewayDevice.js b/src/main/java/com/fzzy/gateway/view/GatewayDevice.js index d8bb2b8..faff578 100644 --- a/src/main/java/com/fzzy/gateway/view/GatewayDevice.js +++ b/src/main/java/com/fzzy/gateway/view/GatewayDevice.js @@ -15,4 +15,23 @@ $alert(result); } }) +} + +/** +* +* @param param +*/ +initLpr= function(param){ + $.ajax({ + type:"POST", + contentType:"application/json;charset=UTF-8", + url:"/gateway/control/initLpr", + data:JSON.stringify(param), + success:function(result){ + $alert(result); + }, + error:function(result){ + $alert(result); + } + }) } \ No newline at end of file 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 e9db492..54c02aa 100644 --- a/src/main/java/com/fzzy/gateway/view/GatewayDevice.view.xml +++ b/src/main/java/com/fzzy/gateway/view/GatewayDevice.view.xml @@ -112,6 +112,10 @@ <Property></Property> <Property name="label">绛掍粨灞傝鍒�</Property> </PropertyDef> + <PropertyDef name="position"> + <Property/> + <Property name="label">浣嶇疆</Property> + </PropertyDef> </DataType> <DataType name="dtParam" parent="Map"> <PropertyDef name="start"> @@ -232,6 +236,18 @@ <ClientEvent name="onClick">view.get("#dialogLpr").show();
 </ClientEvent> <Property name="caption">杞︾墝璇嗗埆璋冭瘯</Property> + <Property name="iconClass">fa fa-wrench</Property> + <Property name="exClassName">toolbar-button-push</Property> + </ToolBarButton> + <Separator/> + <ToolBarButton> + <ClientEvent name="onClick">var data = view.get("#dsMain.data:#");
 +var param = {
 + deviceId:data.get("deviceId"),
 + bizType:"initLpr"
 +}
 +initLpr(param);</ClientEvent> + <Property name="caption">杞︾墝璇嗗埆鍒濆鍖�</Property> <Property name="iconClass">fa fa-wrench</Property> <Property name="exClassName">toolbar-button-push</Property> </ToolBarButton> @@ -382,6 +398,11 @@ <Property name="property">httpUrl</Property> <Editor/> </AutoFormElement> + <AutoFormElement layoutConstraint="colSpan:2"> + <Property name="name">position</Property> + <Property name="property">position</Property> + <Editor/> + </AutoFormElement> <AutoFormElement layoutConstraint="colSpan:3"> <Property name="name">remark</Property> <Property name="property">remark</Property> diff --git a/src/main/java/com/fzzy/protocol/sdkhk/HKUtils.java b/src/main/java/com/fzzy/protocol/sdkhk/HKUtils.java index da617ed..796d936 100644 --- a/src/main/java/com/fzzy/protocol/sdkhk/HKUtils.java +++ b/src/main/java/com/fzzy/protocol/sdkhk/HKUtils.java @@ -8,11 +8,18 @@ import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; +import java.util.Map; + /** * 宸ュ叿绫� */ @Component public class HKUtils { + + /** + * 璁惧鏄惁鍦ㄧ嚎锛宬ey = deviceId,value = Y銆丯 + */ + public static Map<String, String> contextOnlineMap = new HashMap<>(); //楠岃瘉鏄惁涓哄巻鍙叉暟鎹� 10鍒嗛挓 @@ -82,4 +89,22 @@ } return base; } + + + public static String getStatus(String deviceId) { + + String status = contextOnlineMap.get(deviceId); + + if (null == status) { + status = "N"; + contextOnlineMap.put(deviceId, status); + } + + return status; + + } + + public static void updateStatus(String deviceId, String status) { + contextOnlineMap.put(deviceId, status); + } } diff --git a/src/main/java/com/fzzy/protocol/sdkhk/HkGatewaySyncLprImpl.java b/src/main/java/com/fzzy/protocol/sdkhk/HkGatewaySyncLprImpl.java new file mode 100644 index 0000000..29d535a --- /dev/null +++ b/src/main/java/com/fzzy/protocol/sdkhk/HkGatewaySyncLprImpl.java @@ -0,0 +1,66 @@ +package com.fzzy.protocol.sdkhk; + +import com.fzzy.api.data.GatewayDeviceProtocol; +import com.fzzy.gateway.api.GatewaySyncLprService; +import com.fzzy.gateway.data.BaseReqData; +import com.fzzy.gateway.data.BaseResp; +import com.fzzy.gateway.entity.GatewayDevice; +import com.fzzy.protocol.sdkhk.lpr.AlarmLpr; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.util.HashMap; +import java.util.Map; + +/** + * 缃戝叧涓庤澶囦箣闂寸殑閫氳-娴峰悍SDK + */ +@Slf4j +@Component +public class HkGatewaySyncLprImpl implements GatewaySyncLprService { + + + private AlarmLpr alarmLpr = new AlarmLpr(); + + @Override + public String getLprProtocol() { + return GatewayDeviceProtocol.DEVICE_LPR_SDK_HK.getCode(); + } + + @Override + public BaseResp syncLpr(BaseReqData reqData) { + return new BaseResp(500, "绯荤粺涓嶆敮鎸佹墜鍔ㄨЕ鍙戣幏鍙�"); + } + + @Override + public BaseResp initLpr(BaseReqData reqData) { + try { + String msg = alarmLpr.initSdk(); + + log.info("--------鍒濆鍖朒K-SDK-------{}", msg); + + Thread.sleep(500); + + GatewayDevice device = reqData.getDevice(); + //濡傛灉宸茬粡涓婄嚎鍏堢绾� + String status = HKUtils.getStatus(reqData.getDeviceId()); + if ("Y".equals(status)) { + alarmLpr.logout(reqData.getIndex(), device.getIp(), device.getPort()); + Thread.sleep(500); + } + + //閲嶆柊鐧婚檰 + msg = alarmLpr.login(reqData.getIndex(), device.getIp(), device.getPort(), device.getUserName(), device.getPassword()); + + if (HKUtils.RESULT_SUCCESS.equals(msg)) { + HKUtils.updateStatus(device.getDeviceId(), "Y"); + } + + } catch (Exception e) { + log.error("----------------鍒濆鍖栬溅鐗岃瘑鍒墽琛岃瘑鍒け璐�----------------------{}", e); + } + + return new BaseResp(); + } +} -- Gitblit v1.9.3