| | |
| | | package com.sandu.ximon.admin.controller; |
| | | |
| | | import com.baomidou.mybatisplus.core.toolkit.StringUtils; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import cn.hutool.core.util.HexUtil; |
| | | import com.github.pagehelper.util.StringUtil; |
| | | import com.sandu.common.domain.CommonPage; |
| | | import com.sandu.common.domain.ResponseVO; |
| | | import com.sandu.common.execption.BusinessException; |
| | | import com.sandu.common.object.BaseConditionVO; |
| | | import com.sandu.common.util.ResponseUtil; |
| | | import com.sandu.common.util.SpringContextHolder; |
| | | import com.sandu.ximon.admin.manager.iot.frame.A1Frame; |
| | | import com.sandu.ximon.admin.manager.iot.frame.inner.request.MainBoardDataTransparentReqInnerFrame; |
| | | import com.sandu.ximon.admin.manager.iot.rrpc.dto.CommonFrame; |
| | | import com.sandu.ximon.admin.manager.iot.rrpc.dto.CommonRequest; |
| | | import com.sandu.ximon.admin.manager.iot.rrpc.dto.InvokeParam; |
| | | import com.sandu.ximon.admin.manager.iot.rrpc.enums.A1OrderEnum; |
| | | import com.sandu.ximon.admin.manager.iot.rrpc.mainboard.MainBoardInvokeSyncService; |
| | | import com.sandu.ximon.admin.param.MonitorParam; |
| | | import com.sandu.ximon.admin.param.MQTTTestPrarm; |
| | | import com.sandu.ximon.admin.security.PermissionConfig; |
| | | import com.sandu.ximon.admin.service.PoleService; |
| | | import com.sandu.ximon.admin.utils.Base64Util; |
| | | import com.sandu.ximon.dao.domain.Pole; |
| | | import com.sandu.ximon.dao.enums.MenuEnum; |
| | | import lombok.AllArgsConstructor; |
| | | import org.springframework.web.bind.annotation.*; |
| | | import org.springframework.validation.annotation.Validated; |
| | | 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.RestController; |
| | | |
| | | import java.nio.charset.StandardCharsets; |
| | | import java.util.Base64; |
| | | import java.util.LinkedHashMap; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * MQTT测试 |
| | |
| | | * |
| | | * @return |
| | | */ |
| | | @GetMapping("/sendRRPC") |
| | | public ResponseVO<Object> listMonitorByKeyword(@RequestParam(value = "poleId", required = false) Long poleId, |
| | | @RequestParam(value = "frameStr", required = false) String frameStr) { |
| | | if (poleId == null) { |
| | | throw new BusinessException("灯杆ID不能为空!"); |
| | | } |
| | | |
| | | if (StringUtil.isEmpty(frameStr)) { |
| | | throw new BusinessException("请求帧数据不能为空!"); |
| | | } |
| | | @PostMapping("/sendRRPC") |
| | | public ResponseVO<Object> sendRRPC(@RequestBody @Validated MQTTTestPrarm mqttTestPrarm) { |
| | | /** |
| | | * 测试数据 |
| | | * poleMac:32313243305005ff3867ffff |
| | | * frameStr:/qUBAAv+AQAD//8ARZcUd7bYwso= |
| | | */ |
| | | if (!permissionConfig.check(MenuEnum.MQTT_TEST.getCode())) { |
| | | return ResponseUtil.fail("缺少对应用户权限"); |
| | | } |
| | | |
| | | |
| | | Pole pole = SpringContextHolder.getBean(PoleService.class).getById(poleId); |
| | | Pole pole = SpringContextHolder.getBean(PoleService.class).getById(mqttTestPrarm.getPoleId()); |
| | | if (pole == null) { |
| | | throw new BusinessException("灯杆不存在!"); |
| | | } |
| | |
| | | |
| | | InvokeParam param = new InvokeParam(); |
| | | param.setOperate("1001"); |
| | | param.setFrame(frameStr); |
| | | //字符串mqttTestPrarm.getFrameStr()转base64 |
| | | String frame = Base64Util.toBase64Frame(mqttTestPrarm.getFrameStr());; |
| | | System.out.println("frame: "+frame); |
| | | param.setFrame(frame); |
| | | CommonFrame commonFrame = MainBoardInvokeSyncService.getInstance().sendRRPC(pole.getDeviceCode(), param); |
| | | if (commonFrame == null) { |
| | | throw new BusinessException("请求失败,请重新请求"); |
| | | if (commonFrame == null || !commonFrame.isValidate()) { |
| | | throw new BusinessException("响应数据校验失败,请重新请求数据!"); |
| | | } |
| | | return ResponseUtil.success(commonFrame); |
| | | String value = commonFrame.getConnectType() + commonFrame.getFunctionCode() |
| | | + commonFrame.getOrderType() + commonFrame.getPayloadLength() |
| | | + commonFrame.getPayload() + commonFrame.getCrc32(); |
| | | Map map = new LinkedHashMap(); |
| | | map.put("frame", value); |
| | | return ResponseUtil.success(map); |
| | | } |
| | | |
| | | @PostMapping("/transparentFrame") |
| | | public ResponseVO<Object> transparentFrame(@RequestBody @Validated CommonRequest commonRequest) { |
| | | boolean isAscii = commonRequest.getAscii().equals(0) ? false : true; |
| | | Pole pole = SpringContextHolder.getBean(PoleService.class).getById(commonRequest.getPoleID()); |
| | | if (pole == null) { |
| | | throw new BusinessException("灯杆不存在!"); |
| | | } |
| | | if (StringUtil.isEmpty(pole.getDeviceCode())) { |
| | | throw new BusinessException("灯杆MAC不能为空!"); |
| | | } |
| | | |
| | | MainBoardDataTransparentReqInnerFrame mainBoardDataTransparentReqInnerFrame = new MainBoardDataTransparentReqInnerFrame(commonRequest.getFrame(), isAscii); |
| | | A1Frame a1Frame = new A1Frame(A1OrderEnum.TRANSPARENT.getCode(), mainBoardDataTransparentReqInnerFrame); |
| | | System.out.println("a1Frame:" + a1Frame.getEncodeFrame()); |
| | | CommonFrame commonFrame = MainBoardInvokeSyncService.getInstance().sendRRPC(pole.getDeviceCode(), a1Frame); |
| | | |
| | | if (null == commonFrame) { |
| | | throw new BusinessException("主板无响应!"); |
| | | } |
| | | if (commonFrame == null || !commonFrame.isValidate()) { |
| | | throw new BusinessException("响应数据校验失败,请重新请求数据!"); |
| | | } |
| | | String value = commonFrame.getConnectType() + commonFrame.getFunctionCode() |
| | | + commonFrame.getOrderType() + commonFrame.getPayloadLength() |
| | | + commonFrame.getPayload() + commonFrame.getCrc32(); |
| | | Map map = new LinkedHashMap(); |
| | | map.put("frame", value); |
| | | map.put("data", HexUtil.decodeHexStr(commonFrame.getPayload())); |
| | | System.out.println(HexUtil.decodeHexStr(commonFrame.getPayload())); |
| | | |
| | | return ResponseUtil.success(map); |
| | | } |
| | | } |