package com.sandu.ximon.admin.controller; import com.sandu.common.domain.CommonPage; import com.sandu.common.domain.ResponseVO; import com.sandu.common.object.BaseConditionVO; import com.sandu.common.security.annotation.AnonymousAccess; import com.sandu.common.util.ResponseUtil; import com.sandu.common.util.SpringContextHolder; import com.sandu.ximon.admin.manager.iot.amqp.processor.AirDataProcessor; import com.sandu.ximon.admin.manager.iot.frame.A5Frame; import com.sandu.ximon.admin.manager.iot.frame.inner.request.AirDataReqInnerFrame; import com.sandu.ximon.admin.manager.iot.rrpc.dto.CommonFrame; import com.sandu.ximon.admin.manager.iot.rrpc.enums.A5OrderEnum; import com.sandu.ximon.admin.manager.iot.rrpc.enums.AtmoFunctionCode; import com.sandu.ximon.admin.manager.iot.rrpc.mainboard.MainBoardInvokeSyncService; import com.sandu.ximon.admin.security.PermissionConfig; import com.sandu.ximon.admin.service.AirDataService; import com.sandu.ximon.admin.service.PoleBindingService; import com.sandu.ximon.admin.utils.RedisUtils; import com.sandu.ximon.admin.utils.StoreOperationRecordsUtils; import com.sandu.ximon.dao.bo.AirDataBo; import com.sandu.ximon.dao.domain.Pole; import com.sandu.ximon.dao.enums.MenuEnum; import com.sandu.ximon.dao.enums.PoleBindingEnums; import com.sandu.ximon.dao.mapper.PoleBindingMapper; import lombok.AllArgsConstructor; import org.springframework.web.bind.annotation.*; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * 大气数据 */ @RestController @AllArgsConstructor @RequestMapping("/v1/admin/airdata") public class AirDataController { private final AirDataService airDataService; private PermissionConfig permissionConfig; private RedisUtils redisUtils; /** * 查询大气数据模糊查询 * * @param keyword 关键字 * @return */ @GetMapping("/listAirData") public ResponseVO listAirDataByKeyword(BaseConditionVO baseConditionVO, @RequestParam(value = "keyword", required = false) String keyword) { if (!permissionConfig.check(MenuEnum.AIR_DATA_LIST.getCode())) { return ResponseUtil.fail("缺少对应用户权限"); } CommonPage commonPage = airDataService.listAirDataByKeyword(baseConditionVO, keyword); return ResponseUtil.success(commonPage); } /** * 查询大气数据历史 * * @param deviceMac 设备号 * @return */ @GetMapping("/listAirDataOfDeviceCode") public ResponseVO listAirDataOfDeviceCode(BaseConditionVO baseConditionVO, @RequestParam(value = "deviceMac", required = false) String deviceMac) { if (!permissionConfig.check(MenuEnum.AIR_DATA_LIST_HISTORY.getCode())) { return ResponseUtil.fail("缺少对应用户权限"); } List list = airDataService.listAirDataOfDeviceCode(baseConditionVO, deviceMac); return ResponseUtil.successPage(list); } @PostMapping("/updateAirEquipmentInfo") public ResponseVO updataAirEquipmentInfo(@RequestBody List listMac) { if (!permissionConfig.check(MenuEnum.AIR_DATA_UPDATE.getCode())) { return ResponseUtil.fail("缺少对应用户权限"); } AirDataReqInnerFrame airDataReqInnerFrame = new AirDataReqInnerFrame(); A5Frame a5Frame = new A5Frame(A5OrderEnum.REQUEST_ATMOSPHERE_DATA.getCode(), airDataReqInnerFrame); System.out.println(a5Frame + " --------a5Frame"); List success = new ArrayList<>(); List failed = new ArrayList<>(); listMac.parallelStream().forEach(macStr -> { try { CommonFrame commonFrame = MainBoardInvokeSyncService.getInstance().sendRRPC(macStr, a5Frame); StoreOperationRecordsUtils.storeInnerFrameData(macStr, "大气设备-心跳包", a5Frame, commonFrame); System.out.println(commonFrame + " -----------commonFrame"); AirDataProcessor.getInstance().process("a1JsfPG4iKW", macStr, commonFrame); if (commonFrame != null) { //存缓存心跳包 RedisUtils.getBean().set(AtmoFunctionCode.AIR_HEARTBEAT.getCode() + macStr, commonFrame); //存缓存状态 RedisUtils.getBean().set(AtmoFunctionCode.AIR_HEARTBEAT_STATE.getCode() + macStr, commonFrame, 300L); success.add(macStr); } else { failed.add(macStr); } } catch (Exception e) { failed.add(macStr); } }); Map resultMap = new HashMap<>(); resultMap.put("success", success); resultMap.put("failed", failed); /** * 服务端更新大气数据日志记录开始 */ String content = "更新结果:" + resultMap.toString(); StoreOperationRecordsUtils.storeOperationData(listMac, null, "服务端更新大气数据", content); /** * 服务端更新大气数据日志记录结束 */ return ResponseUtil.success(resultMap); } }