src/main/java/com/fzzy/Application.java
@@ -53,6 +53,9 @@ } public static void main(String[] args) throws Exception { System.out.println("----------------Application-----------------------"); System.setProperty("doradoHome", "classpath:dorado-home/"); SpringApplication app = new SpringApplication(Application.class); src/main/java/com/fzzy/gateway/GatewayUtils.java
@@ -58,6 +58,7 @@ return null; } public static GatewayDevice getCacheByDeviceSIp(String ip) { Collection<GatewayDevice> list = allCacheDevice(); if (null == list || list.isEmpty()) return null; @@ -124,4 +125,17 @@ public static Collection<GatewayDevice> listDeviceWeight() { return cacheMapDeviceWeight.values(); } public static GatewayDevice getCacheByDepotSysId(String depotSysId) { if (null == depotSysId) return null; Collection<GatewayDevice> list = allCacheDevice(); if (null == list || list.isEmpty()) return null; for (GatewayDevice device : list) { if (null == device.getDepotIdSys()) continue; if (depotSysId.equals(device.getDepotIdSys())) return device; } return null; } } src/main/java/com/fzzy/gateway/api/GatewayDeviceReportService.java
@@ -1,5 +1,6 @@ package com.fzzy.gateway.api; import com.fzzy.async.fzzy40.entity.Fz40Grain; import com.fzzy.gateway.data.BaseReqData; import com.fzzy.gateway.data.BaseResp; import com.fzzy.gateway.entity.GatewayDevice; @@ -29,5 +30,16 @@ BaseResp reportLprData(BaseReqData reqData); BaseResp reportGrainDataByKafka(BaseReqData reqData); BaseResp reportGrainDataByHand(BaseReqData reqData); /** * 粮情业务数据转换为,当前网关需要的报文 * * @param grainData 第三个软件粮情数据报文 * @param gatewayDevice 网关中设备配置信息 * @return */ BaseResp grainData2GatewayApiInfo(Fz40Grain grainData, GatewayDevice gatewayDevice); } src/main/java/com/fzzy/gateway/api/GatewayRemoteService.java
@@ -15,12 +15,14 @@ /** * 网关设备初始化 * * @param gatewayConf */ void init(GatewayConf gatewayConf); /** * 网关设备心跳维持 * * @param gatewayConf */ void heartbeat(GatewayConf gatewayConf); @@ -28,6 +30,7 @@ /** * 网关设备信息上报 * * @param gatewayConf */ void pushInfo(GatewayConf gatewayConf); @@ -35,7 +38,9 @@ /** * 获取当前网关下的设备列表,并上报设备状态 * * @param gatewayConf */ void pushDeviceStatus(GatewayConf gatewayConf); } src/main/java/com/fzzy/gateway/controller/GatewayDataApi.java
@@ -1,17 +1,13 @@ package com.fzzy.gateway.controller; import com.fzzy.api.data.GatewayDeviceProtocol; import com.fzzy.api.data.GatewayDeviceType; 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.api.GatewaySyncLprService; import com.fzzy.gateway.data.BaseReqData; import com.fzzy.gateway.data.BaseResp; import com.fzzy.gateway.entity.GateWayParam; import com.fzzy.gateway.entity.GatewayDevice; import com.fzzy.gateway.service.GatewayDeviceService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -19,8 +15,6 @@ import org.springframework.web.bind.annotation.ResponseBody; import javax.annotation.Resource; import java.util.List; import java.util.stream.Collectors; /** @@ -32,366 +26,62 @@ public class GatewayDataApi { @Resource private GatewayDeviceService gatewayDeviceService; @Resource private GatewayRemoteManager gatewayRemoteManager; /** * 测试入口 * 粮情数据推送,第三方软件平台推送粮情数据到网关 * * @param param * @param grainData * @return * @throws Exception */ @PostMapping("/test/deviceTest") @PostMapping("/push-grain") public @ResponseBody String deviceTest(@RequestBody GateWayParam param) throws Exception { BaseResp pushGrain(@RequestBody Fz40Grain grainData) { if (StringUtils.isEmpty(param.getBizType())) { return "ERROR:没有获取到业务类型,执行失败"; BaseResp resp = new BaseResp(); try { log.info("----------主动推送粮情接口执行----{}",grainData); //根据系统仓库编码获取配置设备信息 GatewayDevice device = GatewayUtils.getCacheByDepotSysId(grainData.getDepotId()); if (null == device) { resp.setMsg("网关中没有获取到配置的终端设备信息,无法执行。仓库编码=" + grainData.getDepotId()); resp.setCode(BaseResp.CODE_500); return resp; } if ("testGrain".equals(param.getBizType())) { return testGrain(param); //数据封装转换 GatewayDeviceReportService reportService = gatewayRemoteManager.getDeviceReportService(device.getPushProtocol()); if (null == reportService) { log.error("------------粮情推送失败,系统不存在当前协议执行类----{}", device.getDeviceName()); resp.setMsg("粮情推送失败,系统不存在当前协议执行类,网关设备=" + device.getDeviceName()); resp.setCode(BaseResp.CODE_500); return resp; } 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"; } /** * 下行分机测试入口 * * @param param * @return */ @PostMapping("/test/IDE") public @ResponseBody String testIDE(@RequestBody GateWayParam param) throws Exception { if (StringUtils.isEmpty(param.getBizType())) { return "ERROR:没有获取到业务类型,执行失败"; } //获取分机配置 if ("syncConf".equals(param.getBizType())) { return syncConf(param); } if ("writeConf".equals(param.getBizType())) { return writeConf(param); } if ("initParam".equals(param.getBizType())) { return initCable(param); } if ("disconnect".equals(param.getBizType())) { return disconnect(param); } if ("transparent".equals(param.getBizType())) { return transparent(param); } return "SUCCESS"; } private String transparent(GateWayParam param) { String deviceId = param.getDeviceId(); GatewayDevice device = GatewayUtils.getCacheByDeviceId(deviceId); //数据封装 resp = reportService.grainData2GatewayApiInfo(grainData, device); BaseReqData reqData = new BaseReqData(); reqData.setDeviceId(device.getDeviceId()); reqData.setProductId(device.getProductId()); reqData.setDeviceName(device.getDeviceName()); reqData.setDevice(device); reqData.setAutoReplay(false); BaseResp resp = gatewayRemoteManager.getSyncGrainService(device.getSyncProtocol()).transparent(reqData); if (BaseResp.CODE_200 != resp.getCode()) { return "ERROR:" + resp.getMsg(); } return "SUCCESS"; } private String disconnect(GateWayParam 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(false); BaseResp resp = gatewayRemoteManager.getSyncGrainService(device.getSyncProtocol()).disconnect(reqData); if (BaseResp.CODE_200 != resp.getCode()) { return "ERROR:" + resp.getMsg(); } return "SUCCESS"; } private String initCable(GateWayParam 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(false); BaseResp resp = gatewayRemoteManager.getSyncGrainService(device.getSyncProtocol()).initCable(reqData); if (BaseResp.CODE_200 != resp.getCode()) { return "ERROR:" + resp.getMsg(); } return "SUCCESS"; } private String syncConf(GateWayParam 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(false); BaseResp resp = gatewayRemoteManager.getSyncGrainService(device.getSyncProtocol()).syncConf(reqData); if (BaseResp.CODE_200 != resp.getCode()) { return "ERROR:" + resp.getMsg(); } return "SUCCESS"; } private String writeConf(GateWayParam 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(false); BaseResp resp = gatewayRemoteManager.getSyncGrainService(device.getSyncProtocol()).writeConf(reqData); if (BaseResp.CODE_200 != resp.getCode()) { return "ERROR:" + resp.getMsg(); } return "SUCCESS"; } /** * 初始化车牌识别 * * @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 = 0; GatewaySyncLprService syncLprService; for (GatewayDevice device : list) { if (!GatewayDeviceType.TYPE_02.getCode().equals(device.getType())) { continue; } reqData = new BaseReqData(device); reqData.setIndex(i); syncLprService = gatewayRemoteManager.getSyncLprService(device.getSyncProtocol()); if (null == syncLprService) continue; syncLprService.initLpr(reqData); i++; } return "SUCCESS"; } private String testGrain(GateWayParam 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; if (GatewayDeviceProtocol.DEVICE_TEST.getCode().equals(device.getSyncProtocol())) { resp = gatewayRemoteManager.getGatewayTestService(device.getPushProtocol()).testGrain(reqData); } else { reqData.setAutoReplay(false); resp = gatewayRemoteManager.getSyncGrainService(device.getSyncProtocol()).syncGrain(reqData); } //自动推送 if (BaseResp.CODE_200 == resp.getCode() && reqData.isAutoReplay()) { reqData.setData(resp.getData()); gatewayRemoteManager.getDeviceReportService(device.getPushProtocol()).reportGrainData(reqData); //手动推送到平台 resp = reportService.reportGrainDataByHand(reqData); } catch (Exception e) { log.error("-----------手动推送粮情数据执行异常---{}", e); resp.setCode(BaseResp.CODE_500); resp.setMsg("执行异常:" + e.getMessage()); } return "SUCCESS"; } /** * 粮情推送测试KAFKA方式 * * @param param * @return */ public String ajaxTestKafkaGrain(GateWayParam 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(GateWayParam param) throws Exception { double weight = param.getWeight(); 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: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.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(GateWayParam 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"; return resp; } } src/main/java/com/fzzy/gateway/controller/GatewayDeviceController.java
@@ -303,16 +303,18 @@ } reqData = new BaseReqData(); reqData.setProductId(device.getProductId()); reqData.setDeviceName(device.getDeviceName()); 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); gatewayRemoteManager.getDeviceReportService(device.getPushProtocol()).reportGrainDataByHand(reqData); } } src/main/java/com/fzzy/gateway/data/BaseResp.java
@@ -6,7 +6,7 @@ public class BaseResp { public static int CODE_200 = 200; public static int CODE_50 = 500; public static int CODE_500 = 500; private int code = CODE_200; @@ -14,6 +14,11 @@ private String data; /** * 封装需要的数据 */ private Object obj; public BaseResp() { } src/main/java/com/fzzy/gateway/hx2023/service/DeviceReportServiceImpl.java
@@ -2,24 +2,25 @@ import com.alibaba.fastjson2.JSONObject; import com.fzzy.api.data.PushProtocol; import com.fzzy.async.fzzy40.entity.Fz40Grain; import com.fzzy.data.ConfigData; 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.LprData; 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.data.*; import com.fzzy.gateway.hx2023.kafka.KafkaDeviceReportService; import com.fzzy.mqtt.MqttGatewayService; import jdk.nashorn.internal.runtime.regexp.joni.Config; 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.List; @Slf4j @Component @@ -144,7 +145,7 @@ } @Override public BaseResp reportGrainDataByKafka(BaseReqData reqData) { public BaseResp reportGrainDataByHand(BaseReqData reqData) { String topic = ScConstant.TOPIC_ZLJ_GRAIN_TEMPERATURE; //如果是测试模式不执行推送 @@ -160,4 +161,115 @@ kafkaDeviceReportService.publishWithTopic(reqData.getData(), topic); return new BaseResp(); } @Override public BaseResp grainData2GatewayApiInfo(Fz40Grain grainData, GatewayDevice device) { BaseResp resp = new BaseResp(); KafaGrainData result = new KafaGrainData(); result.setMessageId(ScConstant.getMessageId()); result.setMessgeId(result.getMessageId()); result.setDeviceID(device.getDeviceId()); result.setAvgTemperature(grainData.getTempAve() + ""); result.setMinTemperature(grainData.getTempMin() + ""); result.setMaxTemperature(grainData.getTempMax() + ""); result.setCollectTime(DateFormatUtils.format(grainData.getReceiveDate(), "yyyy-MM-dd HH:mm:ss")); //层-行-列 String[] attrCable = grainData.getCable().split("-"); if (StringUtils.isNotEmpty(grainData.getCableCir())) { return grainData2GatewayApiInfo2(grainData, device); } //层行列 int cableZ = Integer.valueOf(attrCable[0]); int cableY = Integer.valueOf(attrCable[1]); int cableX = Integer.valueOf(attrCable[2]); //温度集合 String[] attr = grainData.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]; //如果是异常值,执行调整数据 TODO if (Double.valueOf(curTemp) < -99.9) { curTemp = grainData.getTempAve() + ""; } else { //判断最大 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(grainData.getHumidityIn() + ""); grainTH.setTemperature(grainData.getTempIn() + ""); grainTH.setAirHumidity(grainData.getHumidityOut() + ""); grainTH.setAirTemperature(grainData.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); //resp.setObj(result); resp.setData(JSONObject.toJSONString(result)); return resp; } private BaseResp grainData2GatewayApiInfo2(Fz40Grain grainData, GatewayDevice device) { BaseResp resp = new BaseResp(); resp.setCode(BaseResp.CODE_500); resp.setMsg("筒仓解析暂未实现"); return resp; } } src/main/java/com/fzzy/gateway/hx2023/service/HxGatewayRemoteServiceImpl.java
@@ -6,6 +6,7 @@ import com.fzzy.api.data.PushProtocol; import com.fzzy.api.utils.ContextUtil; import com.fzzy.api.view.repository.ApiLogRep; import com.fzzy.data.ConfigData; import com.fzzy.gateway.GatewayUtils; import com.fzzy.gateway.api.GatewayRemoteService; import com.fzzy.gateway.data.BaseResp; @@ -47,6 +48,8 @@ private GatewayConfService gatewayConfService; @Resource private KafkaDeviceReportService kafkaDeviceReportService; @Resource private ConfigData configData; @Override @@ -135,8 +138,18 @@ String messageInfo = JSONObject.toJSONString(heartBeatData); kafkaDeviceReportService.publishWithTopic(messageInfo, topic); //如果是测试模式不执行推送 if (configData.getActive().indexOf("dev") >= 0) { log.info("----------------------------推送KAFKA信息,注:调试模式不推送---------------------------"); log.info("-----TOPIC-----{}", topic); log.info("-----Message-----{}", messageInfo); return; } kafkaDeviceReportService.publishWithTopic(messageInfo, topic); } catch (Exception e) { log.error("------网关心跳接口--执行失败-----{}", e); @@ -188,6 +201,17 @@ } messageInfo = JSONObject.toJSONString(statusData); //如果是测试模式不执行推送 if (configData.getActive().indexOf("dev") >= 0) { log.info("----------------------------推送KAFKA信息,注:调试模式不推送---------------------------"); log.info("-----TOPIC-----{}", topic); log.info("-----Message-----{}", messageInfo); return; } //推送设备状态 kafkaDeviceReportService.publishWithTopic(messageInfo, topic); src/main/java/com/fzzy/gateway/hx2023/service/ScGatewayTestServiceImpl.java
@@ -31,6 +31,9 @@ @Resource private Fzzy40CommonService fzzy40CommonService; @Resource private DeviceReportServiceImpl deviceReportService; @Override public String getProtocol() { return PushProtocol.GATEWAY_SC_2023.getCode(); @@ -66,133 +69,121 @@ if (StringUtils.isEmpty(depotIdSys)) { log.error("--------设备--{}-未配置系统相关仓库编码,无法执行当前操作", device.getDeviceName()); return new BaseResp(BaseResp.CODE_50, "未配置系统相关仓库编码,无法执行当前操作"); return new BaseResp(BaseResp.CODE_500, "未配置系统相关仓库编码,无法执行当前操作"); } List<Fz40Grain> listGrain = fzzy40CommonService.listGrain(depotIdSys, start, end); if (null == listGrain || listGrain.isEmpty()) { log.error("---------设备-{}-系统仓库编码-{}-未同步到粮情信息,请确认当前条件下是否有数据", device.getDeviceName(), device.getDepotIdSys()); return new BaseResp(BaseResp.CODE_50, "未同步到粮情信息,请确认当前条件下是否有数据"); return new BaseResp(BaseResp.CODE_500, "未同步到粮情信息,请确认当前条件下是否有数据"); } //获取第一条数据执行推送 Fz40Grain lastData = listGrain.get(0); KafaGrainData pushData = this.lastData2PushData(lastData, device); return new BaseResp(JSONObject.toJSONString(pushData)); return deviceReportService.grainData2GatewayApiInfo(lastData,device); } /** * 将粮情数据转换为推送需要的数据格式 * * @param grainData * @return */ private KafaGrainData lastData2PushData(Fz40Grain grainData, GatewayDevice device) { KafaGrainData result = new KafaGrainData(); // /** // * 将粮情数据转换为推送需要的数据格式 // * // * @param grainData // * @return // */ // private KafaGrainData lastData2PushData(Fz40Grain grainData, GatewayDevice device) { // KafaGrainData result = new KafaGrainData(); // // result.setMessageId(ScConstant.getMessageId()); // result.setMessgeId(result.getMessageId()); // result.setDeviceID(device.getDeviceId()); // result.setAvgTemperature(grainData.getTempAve() + ""); // result.setMinTemperature(grainData.getTempMin() + ""); // result.setMaxTemperature(grainData.getTempMax() + ""); // result.setCollectTime(DateFormatUtils.format(grainData.getReceiveDate(), "yyyy-MM-dd HH:mm:ss")); // // //层-行-列 // String[] attrCable = grainData.getCable().split("-"); // if (StringUtils.isNotEmpty(grainData.getCableCir())) { // return lastData2PushData2(grainData, device); // } // // //层行列 // int cableZ = Integer.valueOf(attrCable[0]); // int cableY = Integer.valueOf(attrCable[1]); // int cableX = Integer.valueOf(attrCable[2]); // // //温度集合 // String[] attr = grainData.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]; // // // //如果是异常值,执行调整数据 TODO // if (Double.valueOf(curTemp) < -99.9) { // // curTemp = grainData.getTempAve() + ""; // // } else { // //判断最大 // 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(grainData.getHumidityIn() + ""); // grainTH.setTemperature(grainData.getTempIn() + ""); // grainTH.setAirHumidity(grainData.getHumidityOut() + ""); // grainTH.setAirTemperature(grainData.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; // } result.setMessageId(ScConstant.getMessageId()); result.setMessgeId(result.getMessageId()); result.setDeviceID(device.getDeviceId()); result.setAvgTemperature(grainData.getTempAve() + ""); result.setMinTemperature(grainData.getTempMin() + ""); result.setMaxTemperature(grainData.getTempMax() + ""); result.setCollectTime(DateFormatUtils.format(grainData.getReceiveDate(), "yyyy-MM-dd HH:mm:ss")); //层-行-列 String[] attrCable = grainData.getCable().split("-"); if (StringUtils.isNotEmpty(grainData.getCableCir())) { return lastData2PushData2(grainData, device); } //层行列 int cableZ = Integer.valueOf(attrCable[0]); int cableY = Integer.valueOf(attrCable[1]); int cableX = Integer.valueOf(attrCable[2]); //温度集合 String[] attr = grainData.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]; //如果是异常值,执行调整数据 TODO if (Double.valueOf(curTemp) < -99.9) { curTemp = grainData.getTempAve() + ""; } else { //判断最大 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(grainData.getHumidityIn() + ""); grainTH.setTemperature(grainData.getTempIn() + ""); grainTH.setAirHumidity(grainData.getHumidityOut() + ""); grainTH.setAirTemperature(grainData.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 src/main/resources/application-devGateway.yml
@@ -12,7 +12,6 @@ #次数据源 secondary: url: jdbc:mysql://127.0.0.1:3306/igds_5012?useUnicode=true&useSSL=false&characterEncoding=utf-8 username: root password: Abc123.. driver-class-name: com.mysql.jdbc.Driver