jhprjv2/yanzhu-deviceApi/src/main/java/com/ruoyi/api/TowerCraneApiController.java

348 lines
21 KiB
Java
Raw Normal View History

2024-08-06 21:45:31 +08:00
package com.ruoyi.api;
2024-08-17 13:01:02 +08:00
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
2024-08-06 21:45:31 +08:00
import com.ruoyi.common.annotation.Anonymous;
import com.ruoyi.common.annotation.RateLimiter;
import com.ruoyi.common.constant.CacheConstants;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.core.text.Convert;
import com.ruoyi.common.enums.HttpStatusEnum;
import com.ruoyi.common.enums.LimitType;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.domain.TowerReqVo;
import com.ruoyi.emuns.TowerTypeEnums;
import com.yanzhu.jh.device.domain.*;
import com.yanzhu.jh.device.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 RedisCache redisCache;
@Autowired
private IDevTowerDataRunService devTowerDataRunService;
@Autowired
private IDevTowerDataRoundService devTowerDataRoundService;
@Autowired
private IDevTowerDataLimitService devTowerDataLimitService;
@Autowired
private IDevTowerDataLocalService devTowerDataLocalService;
@Autowired
private IDevTowerDataCollideService devTowerDataCollideService;
@Autowired
private IDevTowerProjectConfigService devTowerProjectConfigService;
/**
* ++
* [6010IP]
* @param req
* @author JiangYuQi
* @date 2024-01-13
*/
@Anonymous
@ApiOperation(value = "塔吊监测")
@RateLimiter(count = 10, limitType = LimitType.IP)
@PostMapping("/v1/push")
public AjaxResult pushData(@Validated @RequestBody TowerReqVo req) {
DevTowerProjectConfig config = redisCache.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<String, Object> 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
*/
2024-08-17 13:01:02 +08:00
private static void pushRunData(DevTowerProjectConfig config,TowerReqVo req){
2024-08-06 21:45:31 +08:00
DevTowerDataRun devTowerDataRun = new DevTowerDataRun();
Map<String, Object> dataContent = req.getContent().getDataContent();
devTowerDataRun.setCfgId(config.getId());
devTowerDataRun.setProjectId(config.getProjectId());
devTowerDataRun.setDeptId(config.getDeptId());
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<String> warnings = (List<String>)dataContent.get("warnings");
devTowerDataRun.setWarnings(String.join(",", warnings));
2024-08-09 02:10:46 +08:00
for(String warning:warnings){
Integer alarm = Convert.toInt(warning);
if(alarm>100 && alarm<120){
devTowerDataRun.setIsAlarm(1L);
}
}
2024-08-06 21:45:31 +08:00
}
2024-08-17 13:01:02 +08:00
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);
2024-08-06 21:45:31 +08:00
}
/**
*
* @param req
*/
private void pushRoundData(DevTowerProjectConfig config,TowerReqVo req){
DevTowerDataRound devTowerDataRound = new DevTowerDataRound();
Map<String, Object> dataContent = req.getContent().getDataContent();
devTowerDataRound.setCfgId(config.getId());
devTowerDataRound.setProjectId(config.getProjectId());
devTowerDataRound.setDeptId(config.getDeptId());
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<String> warnings = (List<String>)dataContent.get("warning");
devTowerDataRound.setWarnings(String.join(",", warnings));
2024-08-09 02:10:46 +08:00
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);
}
}
2024-08-06 21:45:31 +08:00
}
devTowerDataRoundService.insertDevTowerDataRound(devTowerDataRound);
}
/**
*
* @param req
*/
private void pushCollideData(DevTowerProjectConfig config,TowerReqVo req){
DevTowerDataCollide devTowerDataCollide = new DevTowerDataCollide();
Map<String, Object> dataContent = req.getContent().getLocalDeviceInfo();
devTowerDataCollide.setCfgId(config.getId());
devTowerDataCollide.setProjectId(config.getProjectId());
devTowerDataCollide.setDeptId(config.getDeptId());
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<DevTowerDataCollideDetail> devTowerDataCollideDetailList = new ArrayList<>();
if(StringUtils.isNotEmpty(req.getContent().getCollideTowers())){
for (Map<String, Object> 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<String, Object> dataContent = req.getContent().getDataContent();
devTowerDataLimit.setCfgId(config.getId());
devTowerDataLimit.setProjectId(config.getProjectId());
devTowerDataLimit.setDeptId(config.getDeptId());
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<String, Object> dataContent = req.getContent().getDataContent();
devTowerDataLocal.setCfgId(config.getId());
devTowerDataLocal.setProjectId(config.getProjectId());
devTowerDataLocal.setDeptId(config.getDeptId());
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);
}
}