机械指挥官添加机械设备定位-实时数据信息

This commit is contained in:
guo 2024-03-20 17:30:44 +08:00
parent bc940987a4
commit cfbcd247f6
7 changed files with 88 additions and 9 deletions

View File

@ -122,10 +122,7 @@ public class MechanicalEquipmentPositionDataController {
return result; return result;
} }
@ApiOperation(value = "外部添加机械设备定位-实时和报警数据信息", notes = "外部添加机械设备定位-实时和报警数据信息", httpMethod = "POST") @ApiOperation(value = "机械工时通添加机械设备定位-实时和报警数据信息", notes = "机械工时通添加机械设备定位-实时和报警数据信息", httpMethod = "POST")
@ApiImplicitParams({
@ApiImplicitParam(name = "projectSn", value = "项目sn", paramType = "body", required = true, dataType = "String"),
})
@PostMapping(value = "/addData") @PostMapping(value = "/addData")
public Result addData(@ApiIgnore @RequestBody HashMap<String, Object> paramMap) { public Result addData(@ApiIgnore @RequestBody HashMap<String, Object> paramMap) {
log.info("外部添加机械设备定位-实时和报警数据信息:{}", JSON.toJSONString(paramMap)); log.info("外部添加机械设备定位-实时和报警数据信息:{}", JSON.toJSONString(paramMap));
@ -137,4 +134,19 @@ public class MechanicalEquipmentPositionDataController {
return Result.ok(); return Result.ok();
} }
@ApiOperation(value = "机械指挥官添加机械设备定位-实时数据信息", notes = "机械指挥官添加机械设备定位-实时数据信息", httpMethod = "POST")
@ApiImplicitParams({
@ApiImplicitParam(name = "projectSn", value = "项目sn", paramType = "body", required = true, dataType = "String"),
})
@PostMapping(value = "/jxzhgAddData")
public Result jxzhgAddData(@ApiIgnore @RequestBody HashMap<String, Object> paramMap) {
log.info("机械指挥官添加机械设备定位-实时数据信息:{}", JSON.toJSONString(paramMap));
try {
mechanicalEquipmentPositionDataService.jxzhgAddData(paramMap);
} catch (Exception e) {
return Result.ok(e.getMessage());
}
return Result.ok();
}
} }

View File

@ -69,7 +69,10 @@ public class MechanicalEquipmentPositionData implements Serializable {
* 工作状态 * 工作状态
*/ */
@Excel(name = "工作状态", width = 15) @Excel(name = "工作状态", width = 15)
@ApiModelProperty(value = "工作状态1ACC开(工作状态)2ACC关(怠速状态)") /**
* 工作状态1ACC开(工作状态)2ACC关(怠速状态3静止状态4离线状态
*/
@ApiModelProperty(value = "工作状态1工作状态2怠速状态3静止状态4离线状态")
private java.lang.Integer workStatus; private java.lang.Integer workStatus;
/** /**
* 设备电量 * 设备电量

View File

@ -88,4 +88,7 @@ public class MechanicalEquipmentPositionDev implements Serializable {
@TableField(exist = false) @TableField(exist = false)
@ApiModelProperty(value = "在线状态0.离线 1.在线)") @ApiModelProperty(value = "在线状态0.离线 1.在线)")
private java.lang.Integer online; private java.lang.Integer online;
@TableField(exist = false)
@ApiModelProperty(value = "速度")
private java.lang.Double speed;
} }

View File

@ -26,4 +26,6 @@ public interface IMechanicalEquipmentPositionDataService extends IService<Mechan
void delete(String id); void delete(String id);
void addData(HashMap<String, Object> paramMap); void addData(HashMap<String, Object> paramMap);
void jxzhgAddData(HashMap<String, Object> paramMap);
} }

View File

@ -33,10 +33,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.Date; import java.util.*;
import java.util.HashMap;
import java.util.List;
import java.util.Objects;
/** /**
* @Description: 机械设备定位-实时数据 * @Description: 机械设备定位-实时数据
@ -101,6 +98,10 @@ public class MechanicalEquipmentPositionDataServiceImpl extends ServiceImpl<Mech
baseMapper.insert(mechanicalEquipmentPositionData); baseMapper.insert(mechanicalEquipmentPositionData);
//超过围栏报警只要在一个围栏内就不报警 //超过围栏报警只要在一个围栏内就不报警
addAlarmIf(mechanicalEquipmentPositionData, dev);
}
private void addAlarmIf(MechanicalEquipmentPositionData mechanicalEquipmentPositionData, MechanicalEquipmentPositionDev dev) {
List<MechanicalEquipmentPositionFence> fenceList = mechanicalEquipmentPositionFenceMapper.selectList(new LambdaQueryWrapper<MechanicalEquipmentPositionFence>() List<MechanicalEquipmentPositionFence> fenceList = mechanicalEquipmentPositionFenceMapper.selectList(new LambdaQueryWrapper<MechanicalEquipmentPositionFence>()
.eq(MechanicalEquipmentPositionFence::getProjectSn, dev.getProjectSn())); .eq(MechanicalEquipmentPositionFence::getProjectSn, dev.getProjectSn()));
boolean inFence = false; boolean inFence = false;
@ -180,6 +181,46 @@ public class MechanicalEquipmentPositionDataServiceImpl extends ServiceImpl<Mech
} }
} }
@Override
public void jxzhgAddData(HashMap<String, Object> paramMap) {
Map machineInfo = MapUtils.getMap(paramMap, "machine_info");
Map locationInfo = MapUtils.getMap(paramMap, "location_info");
Map stateInfo = MapUtils.getMap(paramMap, "state_info");
MechanicalEquipmentPositionData data = new MechanicalEquipmentPositionData();
data.setDevSn(MapUtils.getString(machineInfo, "machine_uuid"));
data.setLatitude(MapUtils.getDouble(locationInfo, "latitude"));
data.setLongitude(MapUtils.getDouble(locationInfo, "longitude"));
data.setUploadTime(new Date(MapUtils.getLong(stateInfo, "state_update_time") * 1000L));
data.setSpeed(MapUtils.getDouble(locationInfo, "speed"));
data.setWorkStatus(getWorkStatusJzhg(MapUtils.getString(stateInfo, "machine_state")));
data.setEquipmentPower(100D);
data.setEquipmentVoltage(12D);
add(data);
}
private Integer getWorkStatusJzhg(String hardwareState) {
/*
'working'工作
'off'静止
'out_watching'离线
'idle'怠速
*/
//工作状态1工作状态2怠速状态3静止状态4离线状态
if (StringUtils.isNotBlank(hardwareState)) {
switch (hardwareState) {
case "working":
return 1;
case "off":
return 4;
case "out_watching":
return 4;
case "idle":
return 2;
}
}
return null;
}
private void insertData(PositionAddData data) { private void insertData(PositionAddData data) {
MechanicalEquipmentPositionDev dev = mechanicalEquipmentPositionDevMapper.selectOne(new LambdaQueryWrapper<MechanicalEquipmentPositionDev>() MechanicalEquipmentPositionDev dev = mechanicalEquipmentPositionDevMapper.selectOne(new LambdaQueryWrapper<MechanicalEquipmentPositionDev>()
.eq(MechanicalEquipmentPositionDev::getDevSn, data.getDeviceid())); .eq(MechanicalEquipmentPositionDev::getDevSn, data.getDeviceid()));
@ -212,6 +253,9 @@ public class MechanicalEquipmentPositionDataServiceImpl extends ServiceImpl<Mech
alarm.setProjectSn(dev.getProjectSn()); alarm.setProjectSn(dev.getProjectSn());
alarmMapper.insert(alarm); alarmMapper.insert(alarm);
} }
//超过围栏报警只要在一个围栏内就不报警
addAlarmIf(positionData, dev);
} }
private Integer getWorkStatus(String strstatus) { private Integer getWorkStatus(String strstatus) {

View File

@ -4,7 +4,9 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zhgd.jeecg.common.execption.OpenAlertException; import com.zhgd.jeecg.common.execption.OpenAlertException;
import com.zhgd.xmgl.modules.mechanicalequipmentposition.entity.MechanicalEquipmentPositionData;
import com.zhgd.xmgl.modules.mechanicalequipmentposition.entity.MechanicalEquipmentPositionDev; import com.zhgd.xmgl.modules.mechanicalequipmentposition.entity.MechanicalEquipmentPositionDev;
import com.zhgd.xmgl.modules.mechanicalequipmentposition.mapper.MechanicalEquipmentPositionDataMapper;
import com.zhgd.xmgl.modules.mechanicalequipmentposition.mapper.MechanicalEquipmentPositionDevMapper; import com.zhgd.xmgl.modules.mechanicalequipmentposition.mapper.MechanicalEquipmentPositionDevMapper;
import com.zhgd.xmgl.modules.mechanicalequipmentposition.service.IMechanicalEquipmentPositionDevService; import com.zhgd.xmgl.modules.mechanicalequipmentposition.service.IMechanicalEquipmentPositionDevService;
import com.zhgd.xmgl.modules.safetyhat.entity.SafetyHatDev; import com.zhgd.xmgl.modules.safetyhat.entity.SafetyHatDev;
@ -37,6 +39,8 @@ import org.springframework.beans.factory.annotation.Autowired;
public class MechanicalEquipmentPositionDevServiceImpl extends ServiceImpl<MechanicalEquipmentPositionDevMapper, MechanicalEquipmentPositionDev> implements IMechanicalEquipmentPositionDevService { public class MechanicalEquipmentPositionDevServiceImpl extends ServiceImpl<MechanicalEquipmentPositionDevMapper, MechanicalEquipmentPositionDev> implements IMechanicalEquipmentPositionDevService {
@Autowired @Autowired
private MechanicalEquipmentPositionDevMapper mechanicalEquipmentPositionDevMapper; private MechanicalEquipmentPositionDevMapper mechanicalEquipmentPositionDevMapper;
@Autowired
private MechanicalEquipmentPositionDataMapper mechanicalEquipmentPositionDataMapper;
@Override @Override
public IPage<MechanicalEquipmentPositionDev> queryPageList(HashMap<String, Object> paramMap) { public IPage<MechanicalEquipmentPositionDev> queryPageList(HashMap<String, Object> paramMap) {
@ -71,6 +75,16 @@ public class MechanicalEquipmentPositionDevServiceImpl extends ServiceImpl<Mecha
} }
private List<MechanicalEquipmentPositionDev> dealList(List<MechanicalEquipmentPositionDev> list) { private List<MechanicalEquipmentPositionDev> dealList(List<MechanicalEquipmentPositionDev> list) {
for (MechanicalEquipmentPositionDev dev : list) {
MechanicalEquipmentPositionData data = mechanicalEquipmentPositionDataMapper.selectOne(new LambdaQueryWrapper<MechanicalEquipmentPositionData>()
.eq(MechanicalEquipmentPositionData::getDevSn, dev.getDevSn())
.last("limit 1")
.orderByDesc(MechanicalEquipmentPositionData::getUploadTime)
);
if (data != null) {
dev.setSpeed(data.getSpeed());
}
}
return list; return list;
} }

View File

@ -335,6 +335,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
.antMatchers("/xmgl/mechanicalEquipmentPositionData/addData").permitAll() .antMatchers("/xmgl/mechanicalEquipmentPositionData/addData").permitAll()
.antMatchers("/xmgl/mechanicalEquipmentPositionData/add").permitAll() .antMatchers("/xmgl/mechanicalEquipmentPositionData/add").permitAll()
.antMatchers("/xmgl/mechanicalEquipmentPositionAlarm/add").permitAll() .antMatchers("/xmgl/mechanicalEquipmentPositionAlarm/add").permitAll()
.antMatchers("/xmgl/mechanicalEquipmentPositionData/jxzhgAddData").permitAll()
.antMatchers(HttpMethod.OPTIONS, "/**").anonymous() .antMatchers(HttpMethod.OPTIONS, "/**").anonymous()
.anyRequest().authenticated() // 剩下所有的验证都需要验证. .anyRequest().authenticated() // 剩下所有的验证都需要验证.
.and() .and()