| | |
| | | package com.fzzy.gateway.service; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson2.JSONObject; |
| | | import com.bstek.dorado.annotation.DataProvider; |
| | | import com.bstek.dorado.annotation.DataResolver; |
| | |
| | | import com.fzzy.gateway.GatewayUtils; |
| | | import com.fzzy.gateway.api.DeviceReportService; |
| | | import com.fzzy.gateway.api.GatewayRemoteManager; |
| | | 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.hx2023.websocket.WebSocketDeviceReport; |
| | | import com.fzzy.gateway.service.repository.GatewayDeviceRep; |
| | | |
| | | import com.fzzy.mqtt.MqttProviderConfig; |
| | | import com.fzzy.mqtt.MqttPublishService; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | |
| | | import org.apache.commons.lang.StringUtils; |
| | |
| | | |
| | | import javax.annotation.Resource; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | @Slf4j |
| | |
| | | @Resource |
| | | private GatewayRemoteManager gatewayRemoteManager; |
| | | @Resource |
| | | private WebSocketDeviceReport webSocketDeviceReport; |
| | | private MqttPublishService mqttPublishService; |
| | | @Resource |
| | | private MqttProviderConfig providerClient; |
| | | |
| | | /** |
| | | * gatewayDeviceService#listAll |
| | | * |
| | |
| | | Sort sort = new Sort(Sort.Direction.ASC, "deviceId"); |
| | | return gatewayDeviceRep.findAll(sort); |
| | | } |
| | | |
| | | /** |
| | | * gatewayDeviceService#getQuery |
| | | * @return |
| | | */ |
| | | @DataProvider |
| | | public GateWayTestParam getQuery() { |
| | | GateWayTestParam param = new GateWayTestParam(); |
| | | param.setDayTime(new Date()); |
| | | param.setCarNumber("川A12345"); |
| | | param.setEnd(new Date()); |
| | | param.setStart(new Date()); |
| | | param.setWeight(25000.00); |
| | | return param; |
| | | } |
| | | /** |
| | | * gatewayDeviceService#updateSave |
| | | * |
| | | * @param entity |
| | | * @param data |
| | | */ |
| | | @DataResolver |
| | | public void updateSave(GatewayDevice entity) { |
| | | GatewayDevice data = new GatewayDevice(); |
| | | BeanUtils.copyProperties(entity, data); |
| | | public void updateSave(GatewayDevice data) { |
| | | GatewayDevice data2 = new GatewayDevice(); |
| | | BeanUtils.copyProperties(data, data2); |
| | | |
| | | if (null == data.getId()) { |
| | | data.setId(ContextUtil.getUUID()); |
| | | } |
| | | |
| | | |
| | | if (null == data.getDeviceSn()) { |
| | | if (null != entity.getIp()) { |
| | | data.setDeviceSn(entity.getIp()); |
| | | if (null == data2.getDeviceSn()) { |
| | | if (null != data2.getIp()) { |
| | | data.setDeviceSn(data2.getIp()); |
| | | } else { |
| | | data.setDeviceSn(data.getDeviceId()); |
| | | data.setDeviceSn(data2.getDeviceId()); |
| | | } |
| | | } |
| | | |
| | | gatewayDeviceRep.save(data); |
| | | |
| | | if (null == data2.getId()) { |
| | | data2.setId(ContextUtil.getUUID()); |
| | | gatewayDeviceRep.save(data2); |
| | | } else { |
| | | gatewayDeviceRep.save(data2); |
| | | } |
| | | flushCache(); |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | |
| | | /** |
| | | * gatewayDeviceService#flushCache |
| | | */ |
| | | @Expose |
| | | public void flushCache() { |
| | | List<GatewayDevice> list = listAll(); |
| | | if (null == list || list.isEmpty()) return; |
| | |
| | | GatewayUtils.add2Cache(device); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | |
| | | * @return |
| | | */ |
| | | @Expose |
| | | public String ajaxTestWeight(Map<String, Object> parameter) { |
| | | public String ajaxTestWeight(Map<String ,Object> parameter) { |
| | | double weigh = (double) parameter.get("weight"); |
| | | //sdouble weigh = Math.random() * (35000 - 16000 + 1) + 16000; |
| | | List<GatewayDevice> devices = listAll(); |
| | | if(devices == null || devices.size()<= 0){ |
| | | if (devices == null || devices.size() <= 0) { |
| | | return "没有设备"; |
| | | } |
| | | List<GatewayDevice> weights = devices.stream().filter(s ->(GatewayDeviceType.TYPE_01.getCode().equals(s.getType()))).collect(Collectors.toList()); |
| | | if(weights == null || weights.size()<= 0){ |
| | | return "没有获取到地磅设备"; |
| | | } |
| | | for (GatewayDevice device: weights) { |
| | | List<GatewayDevice> weights = devices.stream().filter(s -> (GatewayDeviceType.TYPE_01.getCode().equals(s.getType()))).collect(Collectors.toList()); |
| | | if (weights == null || weights.size() <= 0) { |
| | | return "没有获取到地磅设备"; |
| | | } |
| | | String topic = "/device/hx-weigh-big-01/91511424746940066Y001_91511424746940066Y0010000_002_004_002_001/message/property/report"; |
| | | |
| | | for (GatewayDevice device : weights) { |
| | | |
| | | WebSocketPacket packet = new WebSocketPacket(); |
| | | |
| | |
| | | |
| | | packet.setTimestamp(System.currentTimeMillis()); |
| | | |
| | | |
| | | webSocketDeviceReport.sendByPacket(packet); |
| | | topic = "/device/" + header.getProductId() + "/" + device.getDeviceId() + "/message/property/report"; |
| | | mqttPublishService.publishMsg(topic, JSON.toJSONString(packet)); |
| | | } |
| | | return "SUCCESS"; |
| | | } |
| | | |
| | | /** |
| | | * gatewayDeviceService#ajaxTestLpr |
| | | * 地磅推送测试 |
| | | * |
| | | * @return |
| | | */ |
| | | @Expose |
| | | public String ajaxTestLpr(Map<String ,Object> parameter) { |
| | | String carNumber = (String) parameter.get("carNumber"); |
| | | //String carNumber = "川A12345"; |
| | | List<GatewayDevice> devices = listAll(); |
| | | if (devices == null || devices.size() <= 0) { |
| | | return "没有设备"; |
| | | } |
| | | List<GatewayDevice> weights = devices.stream().filter(s -> (GatewayDeviceType.TYPE_02.getCode().equals(s.getType()))).collect(Collectors.toList()); |
| | | if (weights == null || weights.size() <= 0) { |
| | | return "没有获取到设备"; |
| | | } |
| | | String topic = "/device/hx-weigh-big-01/91511424746940066Y001_91511424746940066Y0010000_002_004_002_001/message/property/report"; |
| | | |
| | | for (GatewayDevice device : weights) { |
| | | |
| | | WebSocketPacket packet = new WebSocketPacket(); |
| | | |
| | | //productId的值在webSocket执行发送方法中补充 |
| | | WebSocketPacketHeader header = new WebSocketPacketHeader(); |
| | | header.setDeviceName(device.getDeviceName()); |
| | | header.setProductId("hx-catch-01"); |
| | | //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 = "/device/" + header.getProductId() + "/" + device.getDeviceId() + "/message/property/report"; |
| | | mqttPublishService.publishMsg(topic, JSON.toJSONString(packet)); |
| | | } |
| | | return "SUCCESS"; |
| | | } |
| | | |
| | | /** |
| | | * gatewayDeviceService#ajaxTestGrain |
| | |
| | | * @return |
| | | */ |
| | | @Expose |
| | | public String ajaxTestGrain(Map<String, Object> parameter) { |
| | | public String ajaxTestGrain(Map<String ,Object> parameter) { |
| | | |
| | | //获取设备配置,只针对粮情设备进行执行 |
| | | |
| | |
| | | return this.pushByV40(list, start, end); |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | private String pushByV40(List<GatewayDevice> list, Date start, Date end) { |
| | | |
| | |
| | | |
| | | //判断最大 |
| | | if (curTemp.equals(result.getMaxTemperature())) { |
| | | result.setMaxX(x+""); |
| | | result.setMaxY(y+""); |
| | | result.setMaxZ(position+""); |
| | | result.setMaxX(x + ""); |
| | | result.setMaxY(y + ""); |
| | | result.setMaxZ(position + ""); |
| | | } |
| | | |
| | | |
| | | //判断最小 |
| | | if (curTemp.equals(result.getMinTemperature())) { |
| | | result.setMinX(x+""); |
| | | result.setMinY(y+""); |
| | | result.setMinZ(position+""); |
| | | result.setMinX(x + ""); |
| | | result.setMinY(y + ""); |
| | | result.setMinZ(position + ""); |
| | | } |
| | | |
| | | temperature.add(new KafkaGrainDataDetail1(cableNum + "", z + "", curTemp, position + "", x+"", y+"")); |
| | | temperature.add(new KafkaGrainDataDetail1(cableNum + "", z + "", curTemp, position + "", x + "", y + "")); |
| | | } |
| | | |
| | | //粮温信息 |
| | | |
| | | JSONObject trhInfo = new JSONObject(); |
| | | // TRHInfo trhInfo = new TRHInfo(); |
| | | trhInfo.put("temperature",temperature); |
| | | // TRHInfo trhInfo = new TRHInfo(); |
| | | trhInfo.put("temperature", temperature); |
| | | |
| | | |
| | | //仓温度信息 |
| | |
| | | List<KafkaGrainTH> temperatureAndhumidity = new ArrayList<>(); |
| | | temperatureAndhumidity.add(grainTH); |
| | | |
| | | trhInfo.put("temperatureAndhumidity",temperatureAndhumidity); |
| | | trhInfo.put("temperatureAndhumidity", temperatureAndhumidity); |
| | | //trhInfo.put("temperatureAndhumidity",grainTH); |
| | | |
| | | JSONObject params = new JSONObject(); |