From ae084b7ab31c38588928afb770cec1320c8c27f0 Mon Sep 17 00:00:00 2001 From: jiazx0107@163.com <jiazx0107@163.com> Date: 星期四, 07 十二月 2023 12:26:24 +0800 Subject: [PATCH] 提交粮情协协议-控制柜-3 --- src/main/java/com/fzzy/gateway/service/GatewayDeviceService.java | 256 +++++++++++--------------------------------------- 1 files changed, 57 insertions(+), 199 deletions(-) diff --git a/src/main/java/com/fzzy/gateway/service/GatewayDeviceService.java b/src/main/java/com/fzzy/gateway/service/GatewayDeviceService.java index 32656b2..bda41b6 100644 --- a/src/main/java/com/fzzy/gateway/service/GatewayDeviceService.java +++ b/src/main/java/com/fzzy/gateway/service/GatewayDeviceService.java @@ -3,34 +3,24 @@ import com.bstek.dorado.annotation.DataProvider; import com.bstek.dorado.annotation.DataResolver; import com.bstek.dorado.annotation.Expose; +import com.fzzy.api.Constant; +import com.fzzy.api.data.ApiCommonDevice; import com.fzzy.api.utils.ContextUtil; -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.QueryParam; import com.fzzy.gateway.entity.GatewayDevice; -import com.fzzy.gateway.hx2023.ScConstant; -import com.fzzy.gateway.hx2023.data.GrainData; -import com.fzzy.gateway.hx2023.data.GrainDataDetail; 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 org.apache.commons.lang.time.DateFormatUtils; import org.springframework.beans.BeanUtils; import org.springframework.data.domain.Sort; import org.springframework.stereotype.Component; import javax.annotation.Resource; - import java.util.ArrayList; -import java.util.Date; import java.util.List; -import java.util.Map; @Slf4j @Component @@ -38,10 +28,6 @@ @Resource private GatewayDeviceRep gatewayDeviceRep; - @Resource - private Fzzy40CommonService fzzy40CommonService; - @Resource - private GatewayRemoteManager gatewayRemoteManager; /** * gatewayDeviceService#listAll @@ -51,34 +37,69 @@ @DataProvider public List<GatewayDevice> listAll() { Sort sort = new Sort(Sort.Direction.ASC, "deviceId"); - return gatewayDeviceRep.findAll(sort); + + + List<GatewayDevice> list = gatewayDeviceRep.findAll(sort); + + if (null == list || list.isEmpty()) return list; + + List<GatewayDevice> result = new ArrayList<>(); + + ApiCommonDevice apiCommonDevice; + for (GatewayDevice device : list) { + + apiCommonDevice = Constant.getCommonDeviceCache(device.getDeviceSn()); + if (null != apiCommonDevice) { + device.setIp(apiCommonDevice.getIp()); + device.setPort(apiCommonDevice.getPort()); + device.setStatus(apiCommonDevice.getStatus()); + device.setOnlineTime(apiCommonDevice.getOnlineTime()); + } + result.add(device); + } + return result; } + +// /** +// * gatewayDeviceService#getQuery +// * +// * @return +// */ +// @DataProvider +// public GateWayTestParam getQuery() { +// GateWayTestParam param = new GateWayTestParam(); +// param.setDayTime(new Date()); +// param.setCarNumber("宸滱12345"); +// 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(); } @@ -99,11 +120,6 @@ return null; } - - /** - * gatewayDeviceService#flushCache - */ - @Expose public void flushCache() { List<GatewayDevice> list = listAll(); if (null == list || list.isEmpty()) return; @@ -113,167 +129,9 @@ } - /** - * gatewayDeviceService#ajaxTestGrain - * 绮儏鎺ㄩ�佹祴璇� - * - * @param param - * @return - */ @Expose - public String ajaxTestGrain(Map<String,Object> parameter) { - - //鑾峰彇璁惧閰嶇疆锛屽彧閽堝绮儏璁惧杩涜鎵ц - - List<GatewayDevice> list = this.listAll(); - - if (null == list || list.isEmpty()) { - return "ERROR锛氫负鑾峰彇鍒扮郴缁熶腑璁惧閰嶇疆锛屽彇娑堟墽琛�"; - } - - Date dayTime = (Date) parameter.get("dayTime"); - if (null == dayTime) dayTime = new Date(); - QueryParam param = new QueryParam(); - param.setDayTime(dayTime); - param.setStart(DateUtil.getCurZero(dayTime)); - param.setEnd(DateUtil.getNextZero(dayTime)); - - - //濡傛灉閮ㄧ讲FZZY-IGDS-V40鐗堟湰绯荤粺 - return this.pushByV40(list, param); - - } - - private String pushByV40(List<GatewayDevice> list, QueryParam param) { - - String depotIdSys; - List<Fz40Grain> listGrain; - - Fz40Grain lastData; - - GrainData pushData; - - DeviceReportService deviceReportService = null; - for (GatewayDevice device : list) { - depotIdSys = device.getDepotIdSys(); - - if (StringUtils.isEmpty(depotIdSys)) { - log.info("--------璁惧--{}-鏈厤缃郴缁熺浉鍏充粨搴撶紪鐮侊紝鏃犳硶鎵ц褰撳墠鎿嶄綔",device.getDeviceName()); - continue; - } - - listGrain = fzzy40CommonService.listGrain(depotIdSys, param.getStart(), param.getEnd()); - - 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); - - } - + public String test() { + log.info("-----------test-------------------"); return "SUCCESS"; } - - /** - * 灏嗙伯鎯呮暟鎹浆鎹负鎺ㄩ�侀渶瑕佺殑鏁版嵁鏍煎紡 - * - * @param lastData - * @return - */ - private GrainData lastData2PushData(Fz40Grain lastData, GatewayDevice device) { - GrainData result = new GrainData(); - - result.setMessageId(ScConstant.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("-"); - - //灞傞厤缃� - int layMax = Integer.valueOf(attrCable[0]); - - //閽堝绛掍粨閰嶇疆 - String[] cableCirAtt = new String[0]; - if (StringUtils.isNotEmpty(lastData.getCableCir())) { - cableCirAtt = lastData.getCableCir().split("-"); - } - - //娓╁害闆嗗悎 - String[] attr = lastData.getPoints().split(","); - - //鏍瑰彿 - int cableNum = 1, layerNumber = 1, position = 0; - - int curCir = 1;//鎵�鍦ㄥ湀 - int cirLay = 1;//褰撳墠鍦堢殑灞� - String curTemp; - List<GrainDataDetail> details = new ArrayList<>(); - for (int i = 0; i < attr.length; i++) { - position = i; - curTemp = attr[i]; - //鏍瑰彿 - cableNum = (i / layMax) + 1; - layerNumber = (i % layMax) + 1; - - if (cableCirAtt.length > 0) { - curCir = getCurCir(cableNum, attrCable); - cirLay = Integer.valueOf(cableCirAtt[curCir - 1]); - - details.add(new GrainDataDetail(cableNum, cirLay, position, curTemp)); - } else { - - //鍒ゆ柇鏈�澶� TODO 寰呬紭鍖� - if (curTemp.equals(result.getMaxTemperature())) { - result.setMaxX(cableNum + ""); - result.setMaxZ(curTemp); - } - - - //鍒ゆ柇鏈�灏� TODO 寰呬紭鍖� - if (curTemp.equals(result.getMinTemperature())) { - result.setMinX(cableNum + ""); - result.setMinZ(curTemp); - } - - - - details.add(new GrainDataDetail(cableNum, layerNumber, position, curTemp)); - } - - } - - result.setTemperature(details); - - return result; - } - - private int getCurCir(int curRoot, String[] cableRuleAtt) { - - int sum = 0; - for (int i = 0; i < cableRuleAtt.length; i++) { - sum += Integer.valueOf(cableRuleAtt[i]); - if (curRoot <= sum) return i + 1; - } - - return 1; - } - } -- Gitblit v1.9.3