车辆(人员)定位从河北跃进获取数据
This commit is contained in:
parent
00a832dc4f
commit
9300eb58f3
@ -0,0 +1,100 @@
|
||||
package com.zhgd.xmgl.modules.vehicleposition.controller;
|
||||
|
||||
import com.zhgd.annotation.OperLog;
|
||||
import com.zhgd.jeecg.common.api.vo.Result;
|
||||
import com.zhgd.redis.annotation.ApiIdempotent;
|
||||
import com.zhgd.xmgl.modules.vehicleposition.entity.VehiclePositionConfig;
|
||||
import com.zhgd.xmgl.modules.vehicleposition.service.IVehiclePositionConfigService;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiImplicitParams;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
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.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @Title: Controller
|
||||
* @Description: 车辆(人员)定位配置
|
||||
* @author: pds
|
||||
* @date: 2020-09-16
|
||||
* @version: V1.0
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/xmgl/vehiclePositionConfig")
|
||||
@Slf4j
|
||||
@Api(tags = "车辆(人员)定位配置")
|
||||
public class VehiclePositionConfigController {
|
||||
@Lazy
|
||||
@Autowired
|
||||
private IVehiclePositionConfigService vehiclePositionConfigService;
|
||||
|
||||
/**
|
||||
* 分页列表查询
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@ApiOperation(value = "查询项目各类型的车辆(人员)定位配置信息", notes = "查询项目各类型的车辆(人员)定位配置信息", httpMethod = "POST")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "projectSn", value = "项目SN", paramType = "body", required = false, dataType = "String"),
|
||||
})
|
||||
@PostMapping(value = "/list")
|
||||
public Result<List<VehiclePositionConfig>> queryPageList(@RequestBody Map<String, Object> map) {
|
||||
return Result.success(vehiclePositionConfigService.selectVehiclePositionConfigList(map));
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑
|
||||
*
|
||||
* @param vehiclePositionConfig
|
||||
* @return
|
||||
*/
|
||||
@ApiIdempotent
|
||||
@OperLog(operModul = "视频管理", operType = "编辑车辆(人员)定位配置信息", operDesc = "编辑车辆(人员)定位配置信息")
|
||||
@ApiOperation(value = "编辑车辆(人员)定位配置信息", notes = "编辑车辆(人员)定位配置信息", httpMethod = "POST")
|
||||
@PostMapping(value = "/edit")
|
||||
public Result<VehiclePositionConfig> editVehiclePositionConfig(@RequestBody VehiclePositionConfig vehiclePositionConfig) {
|
||||
vehiclePositionConfigService.editVehiclePositionConfig(vehiclePositionConfig);
|
||||
return Result.ok();
|
||||
}
|
||||
|
||||
@ApiOperation(value = "查询启用的车辆(人员)定位配置", notes = "查询启用的车辆(人员)定位配置", httpMethod = "POST")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "projectSn", value = "项目SN", paramType = "body", required = false, dataType = "String"),
|
||||
})
|
||||
@PostMapping("/getUseVehiclePositionConfig")
|
||||
public Result<VehiclePositionConfig> getUseVehiclePositionConfig(@RequestBody Map<String, Object> map) {
|
||||
return Result.success(vehiclePositionConfigService.getUseVehiclePositionConfig(map));
|
||||
}
|
||||
|
||||
|
||||
@ApiOperation(value = "查询指定类型的车辆(人员)定位配置", notes = "查询指定类型的车辆(人员)定位配置", httpMethod = "POST")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "projectSn", value = "项目SN", paramType = "body", required = false, dataType = "String"),
|
||||
@ApiImplicitParam(name = "factoryType", value = "厂家类型,1JT808协议2河北跃进", paramType = "body", required = false, dataType = "String"),
|
||||
})
|
||||
@PostMapping("/getVehiclePositionConfigByType")
|
||||
public Result<VehiclePositionConfig> getVehiclePositionConfigByType(@RequestBody Map<String, Object> map) {
|
||||
return Result.success(vehiclePositionConfigService.getVehiclePositionConfigByType(map));
|
||||
}
|
||||
|
||||
@ApiIdempotent
|
||||
@OperLog(operModul = "视频管理", operType = "启用指定类型的车辆(人员)定位配置", operDesc = "启用指定类型的车辆(人员)定位配置")
|
||||
@ApiOperation(value = "启用指定类型的车辆(人员)定位配置", notes = "启用指定类型的车辆(人员)定位配置", httpMethod = "POST")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "projectSn", value = "项目SN", paramType = "body", required = false, dataType = "String"),
|
||||
@ApiImplicitParam(name = "factoryType", value = "厂家类型,1JT808协议2河北跃进", paramType = "body", required = false, dataType = "String"),
|
||||
})
|
||||
@PostMapping("/updateConfigEnable")
|
||||
public Result updateConfigEnable(@RequestBody Map<String, Object> map) {
|
||||
vehiclePositionConfigService.updateConfigEnable(map);
|
||||
return Result.ok();
|
||||
}
|
||||
}
|
||||
@ -62,6 +62,7 @@ public class VehiclePositionDevController {
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "pageNo", value = "第几页", paramType = "query", required = true, dataType = "Integer"),
|
||||
@ApiImplicitParam(name = "pageSize", value = "每页显示条数", paramType = "query", required = true, dataType = "Integer"),
|
||||
@ApiImplicitParam(name = "personNameOrNumberPlate", value = "车牌或人员名称", paramType = "query", required = false, dataType = "Integer"),
|
||||
})
|
||||
@GetMapping(value = "/page")
|
||||
public Result<IPage<VehiclePositionDev>> queryPageList(@ApiIgnore @RequestParam HashMap<String, Object> paramMap) {
|
||||
|
||||
@ -0,0 +1,50 @@
|
||||
package com.zhgd.xmgl.modules.vehicleposition.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import org.jeecgframework.poi.excel.annotation.Excel;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @Description: 车辆(人员)定位配置
|
||||
* @author: pds
|
||||
* @date: 2020-09-16
|
||||
* @version: V1.0
|
||||
*/
|
||||
@Data
|
||||
@TableName("vehicle_position_config")
|
||||
@ApiModel(value = "VehiclePositionConfig实体类", description = "VehiclePositionConfig")
|
||||
public class VehiclePositionConfig implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**id*/
|
||||
@TableId(type = IdType.ASSIGN_ID)
|
||||
@ApiModelProperty(value="id")
|
||||
private java.lang.Long id ;
|
||||
/**项目sn*/
|
||||
@ApiModelProperty(value="项目sn")
|
||||
private java.lang.String projectSn ;
|
||||
/**厂家类型,1JT808协议2河北跃进*/
|
||||
@ApiModelProperty(value="厂家类型,1JT808协议2河北跃进")
|
||||
private java.lang.Integer factoryType ;
|
||||
/**是否启用,1是,0否*/
|
||||
@ApiModelProperty(value="是否启用,1是,0否")
|
||||
private java.lang.Integer isEnable ;
|
||||
/**服务器IP*/
|
||||
@ApiModelProperty(value="服务器IP")
|
||||
private java.lang.String ip ;
|
||||
/**端口*/
|
||||
@ApiModelProperty(value="端口")
|
||||
private java.lang.String port ;
|
||||
/**用户名*/
|
||||
@ApiModelProperty(value="用户名")
|
||||
private java.lang.String account ;
|
||||
/**密码*/
|
||||
@ApiModelProperty(value="密码")
|
||||
private java.lang.String pwd ;
|
||||
}
|
||||
@ -133,13 +133,23 @@ public class VehiclePositionDev implements Serializable {
|
||||
*/
|
||||
@ApiModelProperty(value = "合作单位ids")
|
||||
private java.lang.String enterpriseIds;
|
||||
|
||||
|
||||
/**
|
||||
* 合作单位名称
|
||||
*/
|
||||
@ApiModelProperty(value = "合作单位名称")
|
||||
private java.lang.String enterpriseName;
|
||||
|
||||
|
||||
/**
|
||||
* 车辆(人员)定位配置id
|
||||
*/
|
||||
@ApiModelProperty(value = "车辆(人员)定位配置id")
|
||||
private java.lang.Long configId;
|
||||
/**
|
||||
* 是否从车辆白名单中选择1是0否
|
||||
*/
|
||||
@ApiModelProperty(value = "是否从车辆白名单中选择1是0否")
|
||||
private java.lang.Integer isFromCarInfo;
|
||||
|
||||
@TableField(exist = false)
|
||||
@ApiModelProperty(value = "在线状态(0.离线 1.在线)")
|
||||
|
||||
@ -0,0 +1,16 @@
|
||||
package com.zhgd.xmgl.modules.vehicleposition.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.zhgd.xmgl.modules.vehicleposition.entity.VehiclePositionConfig;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
/**
|
||||
* @Description: 车辆(人员)定位配置
|
||||
* @author: pds
|
||||
* @date: 2020-09-16
|
||||
* @version: V1.0
|
||||
*/
|
||||
@Mapper
|
||||
public interface VehiclePositionConfigMapper extends BaseMapper<VehiclePositionConfig> {
|
||||
|
||||
}
|
||||
@ -26,17 +26,19 @@ public interface VehiclePositionDevMapper extends BaseMapper<VehiclePositionDev>
|
||||
*
|
||||
* @param page
|
||||
* @param queryWrapper
|
||||
* @param paramMap
|
||||
* @return
|
||||
*/
|
||||
IPage<VehiclePositionDev> pageList(Page<VehiclePositionDev> page, @Param(Constants.WRAPPER) QueryWrapper<VehiclePositionDev> queryWrapper);
|
||||
IPage<VehiclePositionDev> pageList(Page<VehiclePositionDev> page, @Param(Constants.WRAPPER) QueryWrapper<VehiclePositionDev> queryWrapper,@Param("param") HashMap<String, Object> paramMap);
|
||||
|
||||
/**
|
||||
* 列表查询车辆(人员)定位-设备信息
|
||||
*
|
||||
* @param queryWrapper
|
||||
* @param paramMap
|
||||
* @return
|
||||
*/
|
||||
List<VehiclePositionDev> pageList(@Param(Constants.WRAPPER) QueryWrapper<VehiclePositionDev> queryWrapper);
|
||||
List<VehiclePositionDev> pageList(@Param(Constants.WRAPPER) QueryWrapper<VehiclePositionDev> queryWrapper, @Param("param") HashMap<String, Object> paramMap);
|
||||
|
||||
/**
|
||||
* 统计车辆(人员)定位-设备信息
|
||||
|
||||
@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.zhgd.xmgl.modules.vehicleposition.mapper.VehiclePositionConfigMapper">
|
||||
</mapper>
|
||||
@ -8,6 +8,7 @@
|
||||
CONCAT(IFNULL(vpd.driver, ''), IFNULL(wi.worker_name, '')) driver,
|
||||
CONCAT(IFNULL(vpd.driver_telephone, ''), IFNULL(ci.driver_telephone, '')) driverTelephone,
|
||||
vpd2.longitude, vpd2.latitude
|
||||
,vpd.car_id
|
||||
from vehicle_position_dev vpd
|
||||
LEFT JOIN car_info ci ON ci.id = vpd.car_id
|
||||
LEFT JOIN enterprise_info en ON en.id = ci.enterprise_id
|
||||
@ -18,7 +19,12 @@
|
||||
join (select max(create_time) create_time,dev_sn from vehicle_position_data group by dev_sn) t2 on t1.create_time = t2.create_time and t1.dev_sn=t2.dev_sn
|
||||
group by t1.dev_sn
|
||||
) vpd2
|
||||
on vpd2.dev_sn = vpd.dev_sn) a
|
||||
on vpd2.dev_sn = vpd.dev_sn
|
||||
where 1=1
|
||||
<if test="param.personNameOrNumberPlate != null and param.personNameOrNumberPlate != ''">
|
||||
and ( vpd.number_plate like CONCAT(CONCAT('%',#{personNameOrNumberPlate}),'%') or vpd.person_name like CONCAT(CONCAT('%',#{param.personNameOrNumberPlate}),'%') )
|
||||
</if>
|
||||
) a
|
||||
${ew.customSqlSegment}
|
||||
</select>
|
||||
|
||||
|
||||
@ -0,0 +1,53 @@
|
||||
package com.zhgd.xmgl.modules.vehicleposition.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.zhgd.xmgl.modules.vehicleposition.entity.VehiclePositionConfig;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @Description: 车辆(人员)定位配置
|
||||
* @author: pds
|
||||
* @date: 2020-09-16
|
||||
* @version: V1.0
|
||||
*/
|
||||
public interface IVehiclePositionConfigService extends IService<VehiclePositionConfig> {
|
||||
/**
|
||||
* 查询启用的车辆(人员)定位配置
|
||||
*
|
||||
* @param map
|
||||
* @return
|
||||
*/
|
||||
VehiclePositionConfig getUseVehiclePositionConfig(Map<String, Object> map);
|
||||
|
||||
/**
|
||||
* 查询项目各类型的车辆(人员)定位配置信息
|
||||
*
|
||||
* @param map
|
||||
* @return
|
||||
*/
|
||||
List<VehiclePositionConfig> selectVehiclePositionConfigList(Map<String, Object> map);
|
||||
|
||||
/**
|
||||
* 查询指定类型的车辆(人员)定位配置
|
||||
*
|
||||
* @param map
|
||||
* @return
|
||||
*/
|
||||
VehiclePositionConfig getVehiclePositionConfigByType(Map<String, Object> map);
|
||||
|
||||
/**
|
||||
* 启用指定类型的车辆(人员)定位配置
|
||||
*
|
||||
* @param map
|
||||
*/
|
||||
void updateConfigEnable(Map<String, Object> map);
|
||||
|
||||
/**
|
||||
* 编辑车辆(人员)定位配置信息
|
||||
*
|
||||
* @param vehiclePositionConfig
|
||||
*/
|
||||
void editVehiclePositionConfig(VehiclePositionConfig vehiclePositionConfig);
|
||||
}
|
||||
@ -2,9 +2,9 @@ package com.zhgd.xmgl.modules.vehicleposition.service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.zhgd.xmgl.modules.safetyhat.entity.SafetyHatDev;
|
||||
import com.zhgd.xmgl.modules.vehicleposition.entity.VehiclePositionDev;
|
||||
import com.zhgd.xmgl.modules.vehicleposition.entity.vo.CountVehiclePositionDevVo;
|
||||
import com.zhgd.xmgl.task.VehiclePositionTask;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
@ -64,4 +64,6 @@ public interface IVehiclePositionDevService extends IService<VehiclePositionDev>
|
||||
void bind(VehiclePositionDev vehiclePositionDev);
|
||||
|
||||
void unBind(VehiclePositionDev vehiclePositionDev);
|
||||
|
||||
void updateHeartbeatTimeByHbyj(List<VehiclePositionTask.CaridsToNumberPlate> caridToNumberPlates);
|
||||
}
|
||||
|
||||
@ -0,0 +1,90 @@
|
||||
package com.zhgd.xmgl.modules.vehicleposition.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.zhgd.xmgl.modules.vehicleposition.entity.VehiclePositionConfig;
|
||||
import com.zhgd.xmgl.modules.vehicleposition.mapper.VehiclePositionConfigMapper;
|
||||
import com.zhgd.xmgl.modules.vehicleposition.service.IVehiclePositionConfigService;
|
||||
import org.apache.commons.collections.MapUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @Description: 车辆(人员)定位配置
|
||||
* @author: pds
|
||||
* @date: 2020-09-16
|
||||
* @version: V1.0
|
||||
*/
|
||||
@Service
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public class VehiclePositionConfigServiceImpl extends ServiceImpl<VehiclePositionConfigMapper, VehiclePositionConfig> implements IVehiclePositionConfigService {
|
||||
@Autowired
|
||||
private VehiclePositionConfigMapper vehiclePositionConfigMapper;
|
||||
|
||||
|
||||
@Override
|
||||
public VehiclePositionConfig getUseVehiclePositionConfig(Map<String, Object> map) {
|
||||
QueryWrapper<VehiclePositionConfig> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.lambda().eq(VehiclePositionConfig::getProjectSn, MapUtils.getString(map, "projectSn"))
|
||||
.eq(VehiclePositionConfig::getIsEnable, 1);
|
||||
return vehiclePositionConfigMapper.selectOne(queryWrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<VehiclePositionConfig> selectVehiclePositionConfigList(Map<String, Object> map) {
|
||||
QueryWrapper<VehiclePositionConfig> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.lambda().eq(VehiclePositionConfig::getProjectSn, MapUtils.getString(map, "projectSn"));
|
||||
return vehiclePositionConfigMapper.selectList(queryWrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public VehiclePositionConfig getVehiclePositionConfigByType(Map<String, Object> map) {
|
||||
QueryWrapper<VehiclePositionConfig> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.lambda().eq(VehiclePositionConfig::getProjectSn, MapUtils.getString(map, "projectSn"))
|
||||
.eq(VehiclePositionConfig::getFactoryType, MapUtils.getString(map, "videoType"));
|
||||
return vehiclePositionConfigMapper.selectOne(queryWrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateConfigEnable(Map<String, Object> map) {
|
||||
VehiclePositionConfig vehiclePositionConfig = new VehiclePositionConfig();
|
||||
vehiclePositionConfig.setProjectSn(MapUtils.getString(map, "projectSn"));
|
||||
vehiclePositionConfig.setIsEnable(0);
|
||||
QueryWrapper<VehiclePositionConfig> qw = new QueryWrapper<>();
|
||||
qw.lambda().eq(VehiclePositionConfig::getProjectSn, MapUtils.getString(map, "projectSn"));
|
||||
vehiclePositionConfigMapper.update(vehiclePositionConfig, qw);
|
||||
QueryWrapper<VehiclePositionConfig> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.lambda().eq(VehiclePositionConfig::getProjectSn, MapUtils.getString(map, "projectSn"))
|
||||
.eq(VehiclePositionConfig::getFactoryType, MapUtils.getString(map, "factoryType"));
|
||||
VehiclePositionConfig tempVehiclePositionConfig = vehiclePositionConfigMapper.selectOne(queryWrapper);
|
||||
if (tempVehiclePositionConfig != null) {
|
||||
vehiclePositionConfig.setId(tempVehiclePositionConfig.getId());
|
||||
vehiclePositionConfig.setIsEnable(1);
|
||||
vehiclePositionConfigMapper.updateById(vehiclePositionConfig);
|
||||
} else {
|
||||
vehiclePositionConfig.setIsEnable(1);
|
||||
vehiclePositionConfig.setFactoryType(MapUtils.getInteger(map, "factoryType"));
|
||||
vehiclePositionConfigMapper.insert(vehiclePositionConfig);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void editVehiclePositionConfig(VehiclePositionConfig vehiclePositionConfig) {
|
||||
QueryWrapper<VehiclePositionConfig> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.lambda().eq(VehiclePositionConfig::getProjectSn, vehiclePositionConfig.getProjectSn())
|
||||
.eq(VehiclePositionConfig::getFactoryType, vehiclePositionConfig.getFactoryType());
|
||||
VehiclePositionConfig tempVehiclePositionConfig = vehiclePositionConfigMapper.selectOne(queryWrapper);
|
||||
if (tempVehiclePositionConfig != null) {
|
||||
vehiclePositionConfig.setId(tempVehiclePositionConfig.getId());
|
||||
vehiclePositionConfigMapper.updateById(vehiclePositionConfig);
|
||||
} else {
|
||||
vehiclePositionConfigMapper.insert(vehiclePositionConfig);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,16 +1,17 @@
|
||||
package com.zhgd.xmgl.modules.vehicleposition.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.date.DateUnit;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.zhgd.jeecg.common.execption.OpenAlertException;
|
||||
import com.zhgd.jeecg.common.system.query.QueryGenerator;
|
||||
import com.zhgd.xmgl.modules.safetyhat.entity.SafetyHatDev;
|
||||
import com.zhgd.xmgl.modules.vehicleposition.entity.VehiclePositionAlarm;
|
||||
import com.zhgd.xmgl.modules.vehicleposition.entity.VehiclePositionData;
|
||||
import com.zhgd.xmgl.modules.vehicleposition.entity.VehiclePositionDayRecord;
|
||||
@ -20,6 +21,7 @@ import com.zhgd.xmgl.modules.vehicleposition.mapper.*;
|
||||
import com.zhgd.xmgl.modules.vehicleposition.service.IVehiclePositionDevService;
|
||||
import com.zhgd.xmgl.modules.worker.entity.EnterpriseInfo;
|
||||
import com.zhgd.xmgl.modules.worker.mapper.EnterpriseInfoMapper;
|
||||
import com.zhgd.xmgl.task.VehiclePositionTask;
|
||||
import com.zhgd.xmgl.util.PageUtil;
|
||||
import com.zhgd.xmgl.util.RefUtil;
|
||||
import org.apache.commons.collections.MapUtils;
|
||||
@ -67,7 +69,7 @@ public class VehiclePositionDevServiceImpl extends ServiceImpl<VehiclePositionDe
|
||||
if (StringUtils.isNotBlank(enterpriseId)) {
|
||||
queryWrapper.in("a.id", new ArrayList<>(Arrays.asList(enterpriseId.split(","))));
|
||||
}
|
||||
IPage<VehiclePositionDev> pageList = baseMapper.pageList(page, queryWrapper);
|
||||
IPage<VehiclePositionDev> pageList = baseMapper.pageList(page, queryWrapper,paramMap);
|
||||
pageList.setRecords(dealList(pageList.getRecords()));
|
||||
return pageList;
|
||||
}
|
||||
@ -75,7 +77,7 @@ public class VehiclePositionDevServiceImpl extends ServiceImpl<VehiclePositionDe
|
||||
@Override
|
||||
public List<VehiclePositionDev> queryList(HashMap<String, Object> paramMap) {
|
||||
QueryWrapper<VehiclePositionDev> queryWrapper = getQueryWrapper(paramMap);
|
||||
return dealList(baseMapper.pageList(queryWrapper));
|
||||
return dealList(baseMapper.pageList(queryWrapper,paramMap));
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -170,4 +172,15 @@ public class VehiclePositionDevServiceImpl extends ServiceImpl<VehiclePositionDe
|
||||
}
|
||||
this.updateBatchById(hatDevs);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateHeartbeatTimeByHbyj(List<VehiclePositionTask.CaridsToNumberPlate> caridToNumberPlates) {
|
||||
List<Long> onlineIds = caridToNumberPlates.stream().filter(o -> Objects.equals(o.getIsOnline(), 1)).map(VehiclePositionTask.CaridsToNumberPlate::getId).collect(Collectors.toList());
|
||||
if (CollUtil.isNotEmpty(onlineIds)) {
|
||||
this.update(null, new LambdaUpdateWrapper<VehiclePositionDev>()
|
||||
.eq(VehiclePositionDev::getHeartbeatTime, DateUtil.now())
|
||||
.in(VehiclePositionDev::getId, onlineIds)
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
155
src/main/java/com/zhgd/xmgl/task/VehiclePositionTask.java
Normal file
155
src/main/java/com/zhgd/xmgl/task/VehiclePositionTask.java
Normal file
@ -0,0 +1,155 @@
|
||||
package com.zhgd.xmgl.task;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import cn.hutool.core.convert.Convert;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.google.common.collect.Lists;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.zhgd.jeecg.common.execption.OpenAlertException;
|
||||
import com.zhgd.xmgl.modules.project.service.IProjectService;
|
||||
import com.zhgd.xmgl.modules.vehicleposition.entity.VehiclePositionConfig;
|
||||
import com.zhgd.xmgl.modules.vehicleposition.entity.VehiclePositionData;
|
||||
import com.zhgd.xmgl.modules.vehicleposition.entity.VehiclePositionDev;
|
||||
import com.zhgd.xmgl.modules.vehicleposition.service.IVehiclePositionConfigService;
|
||||
import com.zhgd.xmgl.modules.vehicleposition.service.IVehiclePositionDataService;
|
||||
import com.zhgd.xmgl.modules.vehicleposition.service.IVehiclePositionDevService;
|
||||
import com.zhgd.xmgl.util.HbyjUtil;
|
||||
import lombok.Data;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.javacrumbs.shedlock.core.SchedulerLock;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Slf4j
|
||||
@RequestMapping("/xmgl/task")
|
||||
@RestController
|
||||
public class VehiclePositionTask {
|
||||
@Lazy
|
||||
@Autowired
|
||||
private IVehiclePositionConfigService vehiclePositionConfigService;
|
||||
@Lazy
|
||||
@Autowired
|
||||
private IVehiclePositionDevService vehiclePositionDevService;
|
||||
@Lazy
|
||||
@Autowired
|
||||
private IVehiclePositionDataService vehiclePositionDataService;
|
||||
|
||||
/**
|
||||
* 定时保存车辆(人员)定位数据(河北跃进)
|
||||
*/
|
||||
@Scheduled(cron = "* */10 * * * ?")
|
||||
@SchedulerLock(name = "saveVehiclePositionDatas", lockAtMostFor = 1000 * 60, lockAtLeastFor = 1000 * 60)
|
||||
@RequestMapping("saveVehiclePositionDatas")
|
||||
public void saveVehiclePositionDatas() {
|
||||
List<VehiclePositionConfig> configs = vehiclePositionConfigService.list(new LambdaQueryWrapper<VehiclePositionConfig>()
|
||||
.eq(VehiclePositionConfig::getIsEnable, 1)
|
||||
.eq(VehiclePositionConfig::getFactoryType, 2)
|
||||
);
|
||||
Date now = new Date();
|
||||
String begin = DateUtil.formatDateTime(now);
|
||||
String end = DateUtil.formatDateTime(DateUtil.offsetMinute(now, -10));
|
||||
Map<String, List<VehiclePositionDev>> projectMap = vehiclePositionDevService.list(null).stream().collect(Collectors.groupingBy(VehiclePositionDev::getProjectSn));
|
||||
for (VehiclePositionConfig config : configs) {
|
||||
List<VehiclePositionDev> devList = projectMap.get(config.getProjectSn());
|
||||
if (CollUtil.isEmpty(devList)) {
|
||||
continue;
|
||||
}
|
||||
try {
|
||||
HbyjUtil.HbyjAuth auth = HbyjUtil.getAuth(config.getIp(), config.getPort(), config.getAccount(), config.getPwd());
|
||||
JSONObject jsonObject = HbyjUtil.getCarInfosByProjectId(config.getIp(), config.getPort(), auth.getProject_id());
|
||||
if (!Objects.equals(jsonObject.getInteger("code"), 200)) {
|
||||
throw new OpenAlertException("保存车辆(人员)定位数据车辆信息错误:" + jsonObject.getString("msg"));
|
||||
}
|
||||
List<CaridsToNumberPlate> caridToNumberPlates = getCaridsToNumberPlate(jsonObject, devList);
|
||||
if (CollUtil.isEmpty(caridToNumberPlates)) {
|
||||
continue;
|
||||
}
|
||||
vehiclePositionDevService.updateHeartbeatTimeByHbyj(caridToNumberPlates);
|
||||
String carid = caridToNumberPlates.stream().map(CaridsToNumberPlate::getCarid).collect(Collectors.joining(","));
|
||||
jsonObject = HbyjUtil.getPositionDatas(begin, end, carid, auth.getProject_id(), config.getIp(), config.getPort(),auth.getToken());
|
||||
if (!Objects.equals(jsonObject.getInteger("code"), 200)) {
|
||||
if (!Objects.equals(jsonObject.getInteger("code"), 500) || !Objects.equals(jsonObject.getString("msg"), "无数据")) {
|
||||
throw new OpenAlertException("保存车辆(人员)定位数据车辆历史轨迹数据错误:" + jsonObject.getString("msg"));
|
||||
}
|
||||
}
|
||||
List<VehiclePositionData> positionDatas = getVehiclePositionDatas(caridToNumberPlates, jsonObject);
|
||||
if (CollUtil.isNotEmpty(positionDatas)) {
|
||||
vehiclePositionDataService.saveBatch(positionDatas);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.info("", e);
|
||||
log.error("定时保存车辆(人员)定位数据(河北跃进)错误:{}", e.getMessage());
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private List<VehiclePositionData> getVehiclePositionDatas(List<CaridsToNumberPlate> caridToNumberPlates, JSONObject jsonObject) {
|
||||
List<VehiclePositionData> vehiclePositionDatalist = Lists.newArrayList();
|
||||
JSONArray body = jsonObject.getJSONArray("body");
|
||||
for (int i = 0; i < body.size(); i++) {
|
||||
JSONArray jsonArray = body.getJSONArray(i);
|
||||
CaridsToNumberPlate plate = caridToNumberPlates.get(i);
|
||||
for (int j = 0; j < jsonArray.size(); j++) {
|
||||
JSONObject jo1 = jsonArray.getJSONObject(j);
|
||||
VehiclePositionData data = new VehiclePositionData();
|
||||
data.setDevSn(plate.getDevSn());
|
||||
data.setLongitude(jo1.getDouble("longitude"));
|
||||
data.setLatitude(jo1.getDouble("latitude"));
|
||||
data.setProjectSn(data.getProjectSn());
|
||||
data.setSpeed(jo1.getDouble("speed"));
|
||||
data.setMileage(Convert.toLong(jo1.getString("totalmileage")));
|
||||
data.setCreateTime(DateUtil.parseDateTime(jo1.getString("gps_time")));
|
||||
data.setProjectSn(plate.getProjectSn());
|
||||
if (!Objects.equals(data.getLongitude(), 0D) || !Objects.equals(data.getLatitude(), 0D)) {
|
||||
vehiclePositionDatalist.add(data);
|
||||
}
|
||||
}
|
||||
}
|
||||
return vehiclePositionDatalist;
|
||||
}
|
||||
|
||||
private List<CaridsToNumberPlate> getCaridsToNumberPlate(JSONObject jsonObject, List<VehiclePositionDev> devList) {
|
||||
List<CaridsToNumberPlate> caridsToNumberPlatelist = Lists.newArrayList();
|
||||
JSONArray datas = jsonObject.getJSONArray("data");
|
||||
if (CollUtil.isEmpty(datas)) {
|
||||
return caridsToNumberPlatelist;
|
||||
}
|
||||
Map<String, JSONObject> numberPlateMap = datas.stream().collect(Collectors.toMap(o -> ((JSONObject) o).getString("car_number_plate"), o -> ((JSONObject) o), (o1, o2) -> o1));
|
||||
for (VehiclePositionDev dev : devList) {
|
||||
JSONObject jsonObject1 = numberPlateMap.get(dev.getNumberPlate());
|
||||
if (jsonObject1 != null) {
|
||||
CaridsToNumberPlate plate = new CaridsToNumberPlate();
|
||||
plate.setId(dev.getId());
|
||||
plate.setCarid(jsonObject1.getString("car_id"));
|
||||
plate.setIsOnline(jsonObject1.getInteger("is_online"));
|
||||
plate.setNumberPlate(jsonObject1.getString("car_number_plate"));
|
||||
plate.setDevSn(dev.getDevSn());
|
||||
plate.setProjectSn(dev.getProjectSn());
|
||||
caridsToNumberPlatelist.add(plate);
|
||||
}
|
||||
}
|
||||
return caridsToNumberPlatelist;
|
||||
}
|
||||
|
||||
@Data
|
||||
public static class CaridsToNumberPlate {
|
||||
private Long id;
|
||||
private String carid;
|
||||
private String numberPlate;
|
||||
private String devSn;
|
||||
private Integer isOnline;
|
||||
private java.lang.String projectSn;
|
||||
}
|
||||
}
|
||||
108
src/main/java/com/zhgd/xmgl/util/HbyjUtil.java
Normal file
108
src/main/java/com/zhgd/xmgl/util/HbyjUtil.java
Normal file
@ -0,0 +1,108 @@
|
||||
package com.zhgd.xmgl.util;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.core.util.URLUtil;
|
||||
import cn.hutool.http.HttpRequest;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.gexin.fastjson.JSON;
|
||||
import com.zhgd.jeecg.common.execption.OpenAlertException;
|
||||
import lombok.Data;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
|
||||
@Slf4j
|
||||
public class HbyjUtil {
|
||||
|
||||
/**
|
||||
* 河北跃进机械文档-登录
|
||||
*
|
||||
* @param ip
|
||||
* @param port
|
||||
* @param account
|
||||
* @param pwd
|
||||
* @return
|
||||
*/
|
||||
public static HbyjAuth getAuth(String ip, String port, String account, String pwd) {
|
||||
Map<String, Object> paramMap = new HashMap<>();
|
||||
paramMap.put("user_name", account);
|
||||
paramMap.put("password", pwd);
|
||||
String url = getHost(ip,port) + "/index.php/home/login/login";
|
||||
log.info("河北跃进机械文档-登录,url:{},param:{}", url, JSON.toJSONString(paramMap));
|
||||
String result = HttpRequest.post(url).form(paramMap).execute().body();
|
||||
log.info("河北跃进机械文档-登录,rs:{}", result);
|
||||
JSONObject jsonObject = JSONObject.parseObject(result);
|
||||
if (!Objects.equals(jsonObject.getInteger("code"), 200)) {
|
||||
throw new OpenAlertException("河北跃进机械文档-登录错误:" + jsonObject.getString("msg"));
|
||||
}
|
||||
JSONObject data = jsonObject.getJSONObject("data");
|
||||
HbyjAuth auth = new HbyjAuth();
|
||||
auth.setToken(data.getString("token"));
|
||||
auth.setProject_id(data.getString("project_id"));
|
||||
return auth;
|
||||
}
|
||||
|
||||
/**
|
||||
* 河北跃进机械文档-获取车辆信息
|
||||
*
|
||||
* @param ip
|
||||
* @param port
|
||||
* @param project_id
|
||||
* @return
|
||||
*/
|
||||
public static JSONObject getCarInfosByProjectId(String ip, String port, String project_id) {
|
||||
Map<String, Object> paramMap = new HashMap<>();
|
||||
paramMap.put("project_id", project_id);
|
||||
String url = getHost(ip, port) + "/index.php/home/api/get_car_info";
|
||||
log.info("河北跃进机械文档-获取车辆信息,url:{},param:{}", url, JSON.toJSONString(paramMap));
|
||||
String result = HttpRequest.post(url).form(paramMap).execute().body();
|
||||
log.info("河北跃进机械文档-获取车辆信息,rs:{}", result);
|
||||
return JSONObject.parseObject(result);
|
||||
}
|
||||
|
||||
private static String getHost(String ip, String port) {
|
||||
if (StrUtil.isBlank(port)) {
|
||||
if (StrUtil.startWith(ip, "http")) {
|
||||
port = "80";
|
||||
} else if (StrUtil.startWith(ip, "https")) {
|
||||
port = "443";
|
||||
}
|
||||
}
|
||||
return ip + ":" + port;
|
||||
}
|
||||
|
||||
/**
|
||||
* 河北跃进机械文档-获取车辆历史轨迹数据
|
||||
*
|
||||
* @param begin
|
||||
* @param end
|
||||
* @param carid
|
||||
* @param project_id
|
||||
* @param ip
|
||||
* @param port
|
||||
* @param token
|
||||
* @return
|
||||
*/
|
||||
public static JSONObject getPositionDatas(String begin, String end, String carid, String project_id, String ip, String port, String token) {
|
||||
Map<String, Object> paramMap = new HashMap<>();
|
||||
paramMap.put("starttime", begin);
|
||||
paramMap.put("endtime", end);
|
||||
paramMap.put("carid", carid);
|
||||
paramMap.put("page", 1);
|
||||
paramMap.put("pid", project_id);
|
||||
String url = "http://39.100.225.87:8085/api/getPlayback?" + URLUtil.buildQuery(paramMap, StandardCharsets.UTF_8);
|
||||
log.info("河北跃进机械文档-获取车辆历史轨迹数据,url:{},param:{}", url, JSON.toJSONString(paramMap));
|
||||
String result = HttpRequest.get(url).header("token",token).execute().body();
|
||||
log.info("河北跃进机械文档-获取车辆历史轨迹数据,rs:{}", result);
|
||||
return JSONObject.parseObject(result);
|
||||
}
|
||||
|
||||
@Data
|
||||
public static class HbyjAuth {
|
||||
private String token;
|
||||
private String project_id;
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user