diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/constant/CacheConstants.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/constant/CacheConstants.java new file mode 100644 index 00000000..448c8a52 --- /dev/null +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/constant/CacheConstants.java @@ -0,0 +1,99 @@ +package com.yanzhu.manage.constant; + +/** + * 缓存的key 常量 + * + * @author ruoyi + */ +public class CacheConstants +{ + /** + * 登录用户 redis key + */ + public static final String LOGIN_TOKEN_KEY = "login_tokens:"; + + /** + * 验证码 redis key + */ + public static final String CAPTCHA_CODE_KEY = "captcha_codes:"; + + /** + * 参数管理 cache key + */ + public static final String SYS_CONFIG_KEY = "sys_config:"; + + /** + * 字典管理 cache key + */ + public static final String SYS_DICT_KEY = "sys_dict:"; + + /** + * 防重提交 redis key + */ + public static final String REPEAT_SUBMIT_KEY = "repeat_submit:"; + + /** + * 限流 redis key + */ + public static final String RATE_LIMIT_KEY = "rate_limit:"; + + /** + * 登录账户密码错误次数 redis key + */ + public static final String PWD_ERR_CNT_KEY = "pwd_err_cnt:"; + + /** + * yanzhu系统应用注册 redis key + */ + public static final String YANZHU_SYSTEM_CONFIG = "yanzhu_system_config:"; + + /** + * yanzhu设备塔吊检测 redis key + */ + public static final String YANZHU_DEVICE_TOWER = "device.tower_cfg:"; + + /** + * yanzhu设备塔吊检测 redis key + */ + public static final String YANZHU_DEVICE_AI = "device.aibox_cfg:"; + + /** + * 微信公众号模板消息 redis key + */ + public static final String WX_MPMESSAGE_KEY = "wx.mpmessage.key::"; + + /** + * 微信消息推送openId + */ + public static final String WX_MPMESSAGE_OPENID = "wx.mpmessage.openId::"; + + /** + * 微信消息推送通知人名称 + */ + public static final String WX_MPMESSAGE_UNAME = "wx.mpmessage.uname::"; + + /** + * 微信消息推送项目名称 + */ + public static final String WX_MPMESSAGE_PNAME = "wx.mpmessage.pname::"; + + /** + * 微信消息推送单位名称 + */ + public static final String WX_MPMESSAGE_DNAME = "wx.mpmessage.dname::"; + + /** + * 微信消息推送项目总监 + */ + public static final String WX_MPMESSAGE_P_SUP = "wx.mpmessage.p.sup::"; + + /** + * 微信消息推送项目甲代 + */ + public static final String WX_MPMESSAGE_P_MAG = "wx.mpmessage.p.mag::"; + + /** + * 微信消息推送项目经理 + */ + public static final String WX_MPMESSAGE_P_ORG = "wx.mpmessage.p.org::"; +} diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/controller/device/TowerCraneApiController.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/controller/device/TowerCraneApiController.java new file mode 100644 index 00000000..5ae7b3d8 --- /dev/null +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/controller/device/TowerCraneApiController.java @@ -0,0 +1,344 @@ +package com.yanzhu.manage.controller.device; + +import com.alibaba.fastjson2.JSON; +import com.yanzhu.common.core.annotation.RateLimiter; +import com.yanzhu.common.core.enums.LimitType; +import com.yanzhu.common.core.exception.ServiceException; +import com.yanzhu.common.core.text.Convert; +import com.yanzhu.common.core.utils.StringUtils; +import com.yanzhu.common.core.web.domain.AjaxResult; +import com.yanzhu.common.redis.service.RedisService; +import com.yanzhu.device.domain.*; +import com.yanzhu.manage.constant.CacheConstants; +import com.yanzhu.manage.domain.TowerReqVo; +import com.yanzhu.manage.enums.HttpStatusEnum; +import com.yanzhu.manage.enums.TowerTypeEnums; +import com.yanzhu.manage.service.*; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +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.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * 塔吊监测APIController + * + * @author JiangYuQi + * @date 2024-01-13 + */ +@Slf4j +@RestController +@RequestMapping("/desApi/towerCrane") +public class TowerCraneApiController { + + @Autowired + private RedisService redisService; + + @Autowired + private IDevTowerDataRunService devTowerDataRunService; + + @Autowired + private IDevTowerDataRoundService devTowerDataRoundService; + + @Autowired + private IDevTowerDataLimitService devTowerDataLimitService; + + @Autowired + private IDevTowerDataLocalService devTowerDataLocalService; + + @Autowired + private IDevTowerDataCollideService devTowerDataCollideService; + + @Autowired + private IDevTowerProjectConfigService devTowerProjectConfigService; + + /** + * 塔吊监测++ + * 限流规则[60秒内最多请求10次,限流策略IP] + * @param req 请求信息 + * @author JiangYuQi + * @date 2024-01-13 + */ + @ApiOperation(value = "塔吊监测") + @RateLimiter(count = 10, limitType = LimitType.IP) + @PostMapping("/v1/push") + public AjaxResult pushData(@Validated @RequestBody TowerReqVo req) { + DevTowerProjectConfig config = redisService.getCacheObject(CacheConstants.YANZHU_DEVICE_TOWER+req.getContent().getDeviceKey()); + if(config==null){ + throw new ServiceException(HttpStatusEnum.DARA_EXCEPTION.getInfo(), HttpStatusEnum.DARA_EXCEPTION.getCode()); + } + if(req.getType() == TowerTypeEnums.BASE.getCode()){ + this.pushConfigData(config,req); + }else if(req.getType() == TowerTypeEnums.RUN.getCode()){ + this.pushRunData(config,req); + }else if(req.getType() == TowerTypeEnums.ROUND.getCode()){ + this.pushRoundData(config,req); + }else if(req.getType() == TowerTypeEnums.COLLIDE.getCode()){ + this.pushCollideData(config,req); + }else if(req.getType() == TowerTypeEnums.LIMIT.getCode()){ + this.pushLimitData(config,req); + }else if(req.getType() == TowerTypeEnums.LOCAL.getCode()){ + this.pushLocalData(config,req); + } + return AjaxResult.success(); + } + + /** + * 塔机上报基本信息 + * @param req + */ + private void pushConfigData(DevTowerProjectConfig config,TowerReqVo req){ + DevTowerProjectConfig devTowerProjectConfig = devTowerProjectConfigService.selectDevTowerProjectConfigById(config.getId()); + Map dataContent = req.getContent().getDataContent(); + devTowerProjectConfig.setTowerId(Convert.toStr(dataContent.get("towerId"))); + devTowerProjectConfig.setTowerType(Convert.toStr(dataContent.get("towerType"))); + devTowerProjectConfig.setCoordinateX(Convert.toStr(dataContent.get("coordinateX"))); + devTowerProjectConfig.setCoordinateY(Convert.toStr(dataContent.get("coordinateY"))); + devTowerProjectConfig.setFrontBrachium(Convert.toStr(dataContent.get("frontBrachium"))); + devTowerProjectConfig.setAfterBrachium(Convert.toStr(dataContent.get("afterBrachium"))); + devTowerProjectConfig.setTowerBodyHeight(Convert.toStr(dataContent.get("towerBodyHeight"))); + devTowerProjectConfig.setTowerCapHeight(Convert.toStr(dataContent.get("towerCapHeight"))); + devTowerProjectConfig.setTowerSectionHeight(Convert.toStr(dataContent.get("towerSectionHeight"))); + devTowerProjectConfigService.updateDevTowerProjectConfigNoCache(devTowerProjectConfig); + } + + /** + * 塔机上报实时数据 + * @param req + */ + private static void pushRunData(DevTowerProjectConfig config,TowerReqVo req){ + DevTowerDataRun devTowerDataRun = new DevTowerDataRun(); + Map dataContent = req.getContent().getDataContent(); + devTowerDataRun.setCfgId(config.getId()); + devTowerDataRun.setProjectId(config.getProjectId()); + devTowerDataRun.setComId(config.getComId()); + devTowerDataRun.setDeviceKey(config.getDeviceSn()); + devTowerDataRun.setHeight(Convert.toStr(dataContent.get("height"))); + devTowerDataRun.setRange(Convert.toStr(dataContent.get("range"))); + devTowerDataRun.setRotation(Convert.toStr(dataContent.get("rotation"))); + devTowerDataRun.setLoad(Convert.toStr(dataContent.get("load"))); + devTowerDataRun.setWindSpeed(Convert.toStr(dataContent.get("windSpeed"))); + devTowerDataRun.setLeanAngleX(Convert.toStr(dataContent.get("leanAngleX"))); + devTowerDataRun.setLeanAngleY(Convert.toStr(dataContent.get("leanAngleY"))); + devTowerDataRun.setLoadPercent(Convert.toStr(dataContent.get("loadPercent"))); + devTowerDataRun.setMomentPercent(Convert.toStr(dataContent.get("momentPercent"))); + devTowerDataRun.setWindSpeedPercent(Convert.toStr(dataContent.get("windSpeedPercent"))); + devTowerDataRun.setLeanAnglePercent(Convert.toStr(dataContent.get("leanAnglePercent"))); + devTowerDataRun.setRate(Convert.toStr(dataContent.get("rate"))); + devTowerDataRun.setRotationSensorState(Convert.toStr(dataContent.get("rotationSensorState"))); + devTowerDataRun.setLoadSensorState(Convert.toStr(dataContent.get("loadSensorState"))); + devTowerDataRun.setWindSpeedSensorState(Convert.toStr(dataContent.get("windSpeedSensorState"))); + devTowerDataRun.setLeanAngleSensorState(Convert.toStr(dataContent.get("leanAngleSensorState"))); + devTowerDataRun.setRangeSensorState(Convert.toStr(dataContent.get("rangeSensorState"))); + devTowerDataRun.setHeightSensorState(Convert.toStr(dataContent.get("heightSensorState"))); + devTowerDataRun.setBrakingStatus(Convert.toStr(dataContent.get("brakingStatus"))); + if(dataContent.get("warnings")!=null){ + List warnings = (List)dataContent.get("warnings"); + devTowerDataRun.setWarnings(String.join(",", warnings)); + for(String warning:warnings){ + Integer alarm = Convert.toInt(warning); + if(alarm>100 && alarm<120){ + devTowerDataRun.setIsAlarm(1L); + } + } + } + System.out.println(devTowerDataRun); + //devTowerDataRunService.insertDevTowerDataRun(devTowerDataRun); + } + + public static void main(String[] args) { + String str = "{\"type\":111,\"content\":{\"time\":1496263304,\"dataType\":113001,\"deviceKey\":\"jycw6\",\"dataContent\":{\"height\":\"4.1\",\"range\": \"21.9\",\"rotation\": \"171.0\",\"load\": \"0.0\",\"windSpeed\": \"0.0\",\"leanAngleX\":\"0.5\",\"leanAngley\":\"0.0\",\"loadPercent\":\"0\", \"mome ntPercent\":\"0\",\"windSpeedPercent\":\"0\",\"leanAnglePercent\": \"0\", \"warnings\": [\"0\"],\"rate\":\"2\",\"rotationSensorState\":\"1\",\"loadSensorState\": \"1\",\"windSpeedSensorState\": \"1\",\"leanAngleSensorState\":\"1\",\"rangeSensorState\":\"1\",\"heightSensorState\":\"1\",\"bra kingStatus\":\"0\"}}}"; + TowerReqVo req = JSON.parseObject(str,TowerReqVo.class); + System.out.println(req); + DevTowerProjectConfig config = new DevTowerProjectConfig(); + pushRunData(config,req); + } + + /** + * 塔机上报循环数据 + * @param req + */ + private void pushRoundData(DevTowerProjectConfig config,TowerReqVo req){ + DevTowerDataRound devTowerDataRound = new DevTowerDataRound(); + Map dataContent = req.getContent().getDataContent(); + devTowerDataRound.setCfgId(config.getId()); + devTowerDataRound.setProjectId(config.getProjectId()); + devTowerDataRound.setComId(config.getComId()); + devTowerDataRound.setDeviceKey(config.getDeviceSn()); + devTowerDataRound.setTowerId(Convert.toStr(dataContent.get("towerId"))); + devTowerDataRound.setWorkStartTime(Convert.toStr(dataContent.get("workStartTime"))); + devTowerDataRound.setWorkEndTime(Convert.toStr(dataContent.get("workEndTime"))); + devTowerDataRound.setMinHeight(Convert.toStr(dataContent.get("minHeight"))); + devTowerDataRound.setMaxHeight(Convert.toStr(dataContent.get("maxHeight"))); + devTowerDataRound.setMinRange(Convert.toStr(dataContent.get("minRange"))); + devTowerDataRound.setMaxRange(Convert.toStr(dataContent.get("maxRange"))); + devTowerDataRound.setStartHeight(Convert.toStr(dataContent.get("startHeight"))); + devTowerDataRound.setEndHeight(Convert.toStr(dataContent.get("endHeight"))); + devTowerDataRound.setStartRange(Convert.toStr(dataContent.get("startRange"))); + devTowerDataRound.setEndRange(Convert.toStr(dataContent.get("endRange"))); + devTowerDataRound.setStartRotation(Convert.toStr(dataContent.get("startRotation"))); + devTowerDataRound.setEndRotation(Convert.toStr(dataContent.get("endRotation"))); + devTowerDataRound.setMaxLoad(Convert.toStr(dataContent.get("maxLoad"))); + devTowerDataRound.setMaxLoadPercent(Convert.toStr(dataContent.get("maxLoadPercent"))); + devTowerDataRound.setMaxMoment(Convert.toStr(dataContent.get("maxMoment"))); + devTowerDataRound.setMaxMomentPercent(Convert.toStr(dataContent.get("maxMomentPercent"))); + devTowerDataRound.setStartWindSpeed(Convert.toStr(dataContent.get("startWindSpeed"))); + devTowerDataRound.setEndWindSpeed(Convert.toStr(dataContent.get("endWindSpeed"))); + devTowerDataRound.setStartWindSpeedPercent(Convert.toStr(dataContent.get("startWindSpeedPercent"))); + devTowerDataRound.setEndWindSpeedPercent(Convert.toStr(dataContent.get("endWindSpeedPercent"))); + devTowerDataRound.setStartLeanAngleX(Convert.toStr(dataContent.get("startleanAngleX"))); + devTowerDataRound.setEndLeanAngleX(Convert.toStr(dataContent.get("endLeanAngleX"))); + devTowerDataRound.setStartLeanAngleY(Convert.toStr(dataContent.get("startleanAngleY"))); + devTowerDataRound.setEndLeanAngleY(Convert.toStr(dataContent.get("endLeanAngleY"))); + if(dataContent.get("warning")!=null){ + List warnings = (List)dataContent.get("warning"); + devTowerDataRound.setWarnings(String.join(",", warnings)); + for(String warning:warnings){ + Integer alarm = Convert.toInt(warning); + if(alarm>6 && alarm<10){ + devTowerDataRound.setIsOverload(1L); + } + if(alarm>100 && alarm<120){ + devTowerDataRound.setIsAlarm(1L); + } + } + } + devTowerDataRoundService.insertDevTowerDataRound(devTowerDataRound); + } + + /** + * 塔机上报碰撞信息 + * @param req + */ + private void pushCollideData(DevTowerProjectConfig config,TowerReqVo req){ + DevTowerDataCollide devTowerDataCollide = new DevTowerDataCollide(); + Map dataContent = req.getContent().getLocalDeviceInfo(); + devTowerDataCollide.setCfgId(config.getId()); + devTowerDataCollide.setProjectId(config.getProjectId()); + devTowerDataCollide.setComId(config.getComId()); + devTowerDataCollide.setDeviceKey(config.getDeviceSn()); + devTowerDataCollide.setTowerId(Convert.toStr(dataContent.get("towerId"))); + devTowerDataCollide.setCoordinateX(Convert.toStr(dataContent.get("coordinateX"))); + devTowerDataCollide.setCoordinateY(Convert.toStr(dataContent.get("coordinateY"))); + devTowerDataCollide.setFrontBrachium(Convert.toStr(dataContent.get("frontBrachium"))); + devTowerDataCollide.setAfterBrachium(Convert.toStr(dataContent.get("afterBrachium"))); + devTowerDataCollide.setTowerBodyHeight(Convert.toStr(dataContent.get("towerBodyHeight"))); + devTowerDataCollide.setHeight(Convert.toStr(dataContent.get("height"))); + devTowerDataCollide.setAngle(Convert.toStr(dataContent.get("angle"))); + devTowerDataCollide.setRange(Convert.toStr(dataContent.get("range"))); + devTowerDataCollide.setEarlyWarningDistance(Convert.toStr(dataContent.get("earlyWarningDistance"))); + devTowerDataCollide.setAlarmWarningDistance(Convert.toStr(dataContent.get("alarmWarningDistance"))); + devTowerDataCollide.setContourValue(Convert.toStr(dataContent.get("contourValue"))); + List devTowerDataCollideDetailList = new ArrayList<>(); + if(StringUtils.isNotEmpty(req.getContent().getCollideTowers())){ + for (Map collideTowers:req.getContent().getCollideTowers()){ + DevTowerDataCollideDetail devTowerDataCollideDetail = new DevTowerDataCollideDetail(); + devTowerDataCollideDetail.setTowerId(Convert.toStr(collideTowers.get("towerId"))); + devTowerDataCollideDetail.setCoordinateX(Convert.toStr(collideTowers.get("coordinateX"))); + devTowerDataCollideDetail.setCoordinateY(Convert.toStr(collideTowers.get("coordinateY"))); + devTowerDataCollideDetail.setFrontBrachium(Convert.toStr(collideTowers.get("frontBrachium"))); + devTowerDataCollideDetail.setAfterBrachium(Convert.toStr(collideTowers.get("afterBrachium"))); + devTowerDataCollideDetail.setTowerBodyHeight(Convert.toStr(collideTowers.get("towerBodyHeight"))); + devTowerDataCollideDetail.setHeight(Convert.toStr(collideTowers.get("height"))); + devTowerDataCollideDetail.setAngle(Convert.toStr(collideTowers.get("angle"))); + devTowerDataCollideDetail.setRange(Convert.toStr(collideTowers.get("range"))); + devTowerDataCollideDetail.setCollideHorizontalDistance(Convert.toStr(collideTowers.get("collideHorizontalDistance"))); + devTowerDataCollideDetail.setCollideVerticalDistance(Convert.toStr(collideTowers.get("collideVerticalDistance"))); + devTowerDataCollideDetail.setCollideState(Convert.toStr(collideTowers.get("collideState"))); + devTowerDataCollideDetailList.add(devTowerDataCollideDetail); + } + devTowerDataCollide.setDevTowerDataCollideDetailList(devTowerDataCollideDetailList); + } + devTowerDataCollideService.insertDevTowerDataCollide(devTowerDataCollide); + } + + /** + * 塔机上报限位信息 + * @param req + */ + private void pushLimitData(DevTowerProjectConfig config,TowerReqVo req){ + DevTowerDataLimit devTowerDataLimit = new DevTowerDataLimit(); + Map dataContent = req.getContent().getDataContent(); + devTowerDataLimit.setCfgId(config.getId()); + devTowerDataLimit.setProjectId(config.getProjectId()); + devTowerDataLimit.setComId(config.getComId()); + devTowerDataLimit.setDeviceKey(config.getDeviceSn()); + devTowerDataLimit.setTowerId(Convert.toStr(dataContent.get("towerId"))); + devTowerDataLimit.setWindSpeedWarning(Convert.toStr(dataContent.get("windSpeedWarning"))); + devTowerDataLimit.setWindSpeedAlarm(Convert.toStr(dataContent.get("windSpeedAlarm"))); + devTowerDataLimit.setLoadWarning(Convert.toStr(dataContent.get("loadWarning"))); + devTowerDataLimit.setLoadAlarm(Convert.toStr(dataContent.get("loadAlarm"))); + devTowerDataLimit.setMomentWarning(Convert.toStr(dataContent.get("momentWarning"))); + devTowerDataLimit.setMomentAlarm(Convert.toStr(dataContent.get("momentAlarm"))); + devTowerDataLimit.setHighLimitWarning(Convert.toStr(dataContent.get("highLimitWarning"))); + devTowerDataLimit.setHighLimitAlarm(Convert.toStr(dataContent.get("highLimitAlarm"))); + devTowerDataLimit.setLowLimitWarning(Convert.toStr(dataContent.get("lowLimitWarning"))); + devTowerDataLimit.setLowLimitAlarm(Convert.toStr(dataContent.get("lowLimitAlarm"))); + devTowerDataLimit.setLeftLimitWarning(Convert.toStr(dataContent.get("leftLimitWarning"))); + devTowerDataLimit.setLeftLimitAlarm(Convert.toStr(dataContent.get("leftLimitAlarm"))); + devTowerDataLimit.setRightLimitWarning(Convert.toStr(dataContent.get("rightLimitWarning"))); + devTowerDataLimit.setRightLimitAlarm(Convert.toStr(dataContent.get("rightLimitAlarm"))); + devTowerDataLimit.setFrontLimitWarning(Convert.toStr(dataContent.get("frontLimitWarning"))); + devTowerDataLimit.setFrontLimitAlarm(Convert.toStr(dataContent.get("frontLimitAlarm"))); + devTowerDataLimit.setBackLimitWarning(Convert.toStr(dataContent.get("backLimitWarning"))); + devTowerDataLimit.setBackLimitAlarm(Convert.toStr(dataContent.get("backLimitAlarm"))); + devTowerDataLimit.setCollisionAngleWarning(Convert.toStr(dataContent.get("collisionAngleWarning"))); + devTowerDataLimit.setCollisionAngleAlarm(Convert.toStr(dataContent.get("collisionAngleAlarm"))); + devTowerDataLimit.setCollisionDistanceWarning(Convert.toStr(dataContent.get("collisionDistanceWarning"))); + devTowerDataLimit.setCollisionDistanceAlarm(Convert.toStr(dataContent.get("collisionDistanceAlarm"))); + devTowerDataLimit.sethDistanceWarning(Convert.toStr(dataContent.get("hDistanceWarning"))); + devTowerDataLimit.sethDistanceAlarm(Convert.toStr(dataContent.get("hDistanceAlarm"))); + devTowerDataLimit.setvDistanceWarning(Convert.toStr(dataContent.get("vDistanceWarning"))); + devTowerDataLimit.setvDistanceAlarm(Convert.toStr(dataContent.get("vDistanceAlarm"))); + devTowerDataLimit.setLeanWarning(Convert.toStr(dataContent.get("leanWarning"))); + devTowerDataLimit.setLeanAlarm(Convert.toStr(dataContent.get("leanAlarm"))); + devTowerDataLimit.setRangeLimitStart(Convert.toStr(dataContent.get("rangeLimitStart"))); + devTowerDataLimit.setRangeLimitEnd(Convert.toStr(dataContent.get("rangeLimitEnd"))); + devTowerDataLimit.setHeightLimitStart(Convert.toStr(dataContent.get("heightLimitStart"))); + devTowerDataLimit.setHeightLimitEnd(Convert.toStr(dataContent.get("heightLimitEnd"))); + devTowerDataLimit.setRotationLimitStart(Convert.toStr(dataContent.get("rotationLimitStart"))); + devTowerDataLimit.setRotationLimitEnd(Convert.toStr(dataContent.get("rotationLimitEnd"))); + devTowerDataLimitService.insertDevTowerDataLimit(devTowerDataLimit); + } + + /** + * 塔机上报标定位信息 + * @param req + */ + private void pushLocalData(DevTowerProjectConfig config,TowerReqVo req){ + DevTowerDataLocal devTowerDataLocal = new DevTowerDataLocal(); + Map dataContent = req.getContent().getDataContent(); + devTowerDataLocal.setCfgId(config.getId()); + devTowerDataLocal.setProjectId(config.getProjectId()); + devTowerDataLocal.setComId(config.getComId()); + devTowerDataLocal.setDeviceKey(config.getDeviceSn()); + devTowerDataLocal.setTowerId(Convert.toStr(dataContent.get("towerId"))); + devTowerDataLocal.setRangeNearEndAdValue(Convert.toStr(dataContent.get("rangeNearEndADValue"))); + devTowerDataLocal.setRangeNearEndRealityValue(Convert.toStr(dataContent.get("rangeNearEndRealityValue"))); + devTowerDataLocal.setRangeFarEndAdValue(Convert.toStr(dataContent.get("rangeFarEndADValue"))); + devTowerDataLocal.setRangeFarEndRealityValue(Convert.toStr(dataContent.get("rangeFarEndRealityValue"))); + devTowerDataLocal.setHighNearEndAdValue(Convert.toStr(dataContent.get("highNearEndADValue"))); + devTowerDataLocal.setHighNearEndRealityValue(Convert.toStr(dataContent.get("highNearEndRealityValue"))); + devTowerDataLocal.setHighFarEndAdValue(Convert.toStr(dataContent.get("highFarEndADValue"))); + devTowerDataLocal.setHighFarEndRealityValue(Convert.toStr(dataContent.get("highFarEndRealityValue"))); + devTowerDataLocal.setEmptyWeightAdValue(Convert.toStr(dataContent.get("emptyWeightADValue"))); + devTowerDataLocal.setEmptyWeightRealityValue(Convert.toStr(dataContent.get("emptyWeightRealityValue"))); + devTowerDataLocal.setLoadWeightAdValue(Convert.toStr(dataContent.get("loadWeightADValue"))); + devTowerDataLocal.setLoadWeightRealityValue(Convert.toStr(dataContent.get("loadWeightRealityValue"))); + devTowerDataLocal.setRotationStartAdValue(Convert.toStr(dataContent.get("rotationStartADValue"))); + devTowerDataLocal.setRotationStartRealityValue(Convert.toStr(dataContent.get("rotationStartRealityValue"))); + devTowerDataLocal.setRotationEndAdValue(Convert.toStr(dataContent.get("rotationEndADValue"))); + devTowerDataLocal.setRotationEndRealityValue(Convert.toStr(dataContent.get("rotationEndRealityValue"))); + devTowerDataLocal.setWindSpeedFactor(Convert.toStr(dataContent.get("windSpeedFactor"))); + devTowerDataLocal.setTiltFactor(Convert.toStr(dataContent.get("tiltFactor"))); + devTowerDataLocalService.insertDevTowerDataLocal(devTowerDataLocal); + } + +} diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/domain/TowerContentReqVo.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/domain/TowerContentReqVo.java new file mode 100644 index 00000000..ebff326d --- /dev/null +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/domain/TowerContentReqVo.java @@ -0,0 +1,47 @@ +package com.yanzhu.manage.domain; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * 塔吊检测推送信息 请求内容 + * + * @author: JiangYuQi + * @date: 2024/01/13 12:21 + */ +@Data +public class TowerContentReqVo { + + /** + * 数据产生的时间戳 + */ + private Long time; + + /** + * 数据类型 + */ + private String dataType; + + /** + * 设备序列号,唯一标识 84E0***** + */ + private String deviceKey; + + /** + * 上报内容 + */ + private Map dataContent; + + /** + * 碰撞信息 + */ + private Map localDeviceInfo; + + /** + * 碰撞塔吊设备信息 + */ + private List> collideTowers; + +} diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/domain/TowerReqVo.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/domain/TowerReqVo.java new file mode 100644 index 00000000..a1735d67 --- /dev/null +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/domain/TowerReqVo.java @@ -0,0 +1,28 @@ +package com.yanzhu.manage.domain; + +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * 塔吊检测推送信息 请求参数 + * + * @author: JiangYuQi + * @date: 2024/01/13 12:21 + */ +@Data +public class TowerReqVo { + + /** + * 上报类型 + */ + @NotNull(message = "上报类型不能为空") + private int type; + + /** + * 上报内容 + */ + @NotNull(message = "上报内容不能为空") + private TowerContentReqVo content; + +} diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/enums/HttpStatusEnum.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/enums/HttpStatusEnum.java new file mode 100644 index 00000000..248f1805 --- /dev/null +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/enums/HttpStatusEnum.java @@ -0,0 +1,36 @@ +package com.yanzhu.manage.enums; + +/** + * 订单Http状态 + * + * @author JiangYuQi + */ +public enum HttpStatusEnum { + + ERROR(11110, "AppId不存在或已被删除"), + DISABLE(11112, "AppId已被停用"), + SINGET_ERROR(11113, "签名值不正确"), + SINGET_TIMEOUT(11114, "签名数据已过期"), + SINGET_EXCEPTION(11115, "签名数据解密异常"), + DARA_EXCEPTION(11116, "数据解析异常"); + + private final Integer code; + private final String info; + + HttpStatusEnum(Integer code, String info) + { + this.code = code; + this.info = info; + } + + public Integer getCode() + { + return code; + } + + public String getInfo() + { + return info; + } + +} diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/enums/TowerTypeEnums.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/enums/TowerTypeEnums.java new file mode 100644 index 00000000..12da94f2 --- /dev/null +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/enums/TowerTypeEnums.java @@ -0,0 +1,34 @@ +package com.yanzhu.manage.enums; + +/** + * 塔吊数据类型 + */ +public enum TowerTypeEnums { + + BASE(118,"塔机上报基本信息"), + RUN(111,"塔机上报实时数据"), + ROUND(119,"塔机上报工作循环数据"), + COLLIDE(116,"塔机上报碰撞信息"), + LIMIT(120,"塔机上报限位信息"), + LOCAL(121,"塔机上报标定位信息"); + + private final int code; + private final String info; + + TowerTypeEnums(int code, String info) + { + this.code = code; + this.info = info; + } + + public int getCode() + { + return code; + } + + public String getInfo() + { + return info; + } + +}