package org.springblade.modules.location.service.impl;
|
|
import com.alibaba.fastjson.JSON;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import org.json.JSONArray;
|
import org.json.JSONObject;
|
import org.springblade.common.utils.InvestigateUtil;
|
import org.springblade.modules.equipage.entity.Gun;
|
import org.springblade.modules.equipage.service.GunService;
|
import org.springblade.modules.location.entity.LiveLocation;
|
import org.springblade.modules.location.mapper.LiveLocationMapper;
|
import org.springblade.modules.location.service.LiveLocationService;
|
import org.springblade.modules.location.vo.GunLiveLocationVO;
|
import org.springblade.modules.location.vo.LiveLocationVo;
|
import org.springblade.modules.location.vo.LocusVo;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import java.util.ArrayList;
|
import java.util.Arrays;
|
import java.util.Comparator;
|
import java.util.List;
|
import java.util.stream.Collectors;
|
|
/**
|
* 实时位置服务实现类
|
* @author zhongrj
|
*/
|
@Service
|
public class LiveLocationServiceImpl extends ServiceImpl<LiveLocationMapper, LiveLocation> implements LiveLocationService {
|
|
@Autowired
|
private GunService gunService;
|
|
/**
|
* 实时位置分页信息
|
* @param page
|
* @param liveLocation 实时位置信息对象
|
* @return
|
*/
|
@Override
|
public IPage<LiveLocationVo> selectLiveLocationPage(IPage<LiveLocationVo> page, LiveLocationVo liveLocation) {
|
return page.setRecords(baseMapper.selectLiveLocationPage(page, liveLocation));
|
}
|
|
/**
|
* 详情
|
* @param liveLocation 实时位置信息对象
|
*/
|
@Override
|
public LiveLocationVo selectLiveLocationInfo(LiveLocation liveLocation) {
|
return baseMapper.selectLiveLocationInfo(liveLocation);
|
}
|
|
/**
|
* 获取轨迹数据
|
* @param liveLocationVo 实时对象信息
|
* @return
|
*/
|
@Override
|
public List<LocusVo> getLocusInfoList(LiveLocationVo liveLocationVo) {
|
|
return baseMapper.getLocusInfoList(liveLocationVo);
|
}
|
|
|
|
/**
|
* 首页实时定位
|
* @return
|
*/
|
@Override
|
public List<LiveLocationVo> getLiveLocationVoList(LiveLocationVo liveLocationVo) {
|
//保安人员
|
if (liveLocationVo.getType()==1){
|
return baseMapper.getSecurityLocusInfoList(liveLocationVo);
|
}
|
//车辆
|
if (liveLocationVo.getType()==2){
|
return baseMapper.getCarLocusInfoList(liveLocationVo);
|
}
|
//枪支
|
if (liveLocationVo.getType()==3){
|
//获取枪支数据
|
List<Gun> gunList = gunService.list();
|
//创建集合
|
List<LiveLocationVo> list = new ArrayList<>();
|
if (gunList.size()>0){
|
//遍历
|
gunList.forEach(gun -> {
|
//远程调用
|
String body = InvestigateUtil.httpGetGunPosition(gun.getCardNo(),null,null,null,null,null);
|
// System.out.println("body = " + body);
|
if (null != body && !body.equals("")) {
|
JSONObject jsonObject = new JSONObject(body);
|
Object data = jsonObject.get("data");
|
JSONObject jsonData = new JSONObject(data.toString());
|
JSONArray res = jsonData.getJSONArray("res");
|
//转换string
|
String resToString = res.toString();
|
if (res.length() == 0) {
|
} else {
|
LiveLocationVo locationVo = new LiveLocationVo();
|
List<GunLiveLocationVO> gunLiveLocationVOS = JSON.parseArray(resToString, GunLiveLocationVO.class);
|
//按时间排序(降序)
|
List<GunLiveLocationVO> gunLiveLocationVOList =
|
gunLiveLocationVOS.stream().sorted(Comparator.comparing(GunLiveLocationVO::getDwsj).reversed()).collect(Collectors.toList());
|
GunLiveLocationVO gunLiveLocationVO = gunLiveLocationVOList.get(0);
|
//取出第一个
|
locationVo.setRecordTime(gunLiveLocationVO.getDwsj());
|
locationVo.setLinkman(gunLiveLocationVO.getHwy());
|
locationVo.setCardNo(gunLiveLocationVO.getHwysfzh());
|
locationVo.setNumber(gunLiveLocationVO.getQzbh());
|
locationVo.setQh(gunLiveLocationVO.getQh());
|
locationVo.setLongitude(gunLiveLocationVO.getDwjd().toString());
|
locationVo.setLatitude(gunLiveLocationVO.getDwwd().toString());
|
locationVo.setCompany(gunLiveLocationVO.getSzdw());
|
//存入集合
|
list.add(locationVo);
|
}
|
}
|
});
|
}
|
return list;
|
}
|
return baseMapper.selectSecurityAndCarAndGunLiveLocationPage(liveLocationVo);
|
}
|
|
/**
|
* 获取实时位置信息
|
* @param liveLocation
|
* @return
|
*/
|
@Override
|
public LiveLocation getLiveLocationInfo(LiveLocation liveLocation) {
|
return baseMapper.getLiveLocationInfo(liveLocation);
|
}
|
|
|
/**
|
* 获取指令接收人的定位信息
|
* @param liveLocationVo 定位数据信息
|
* @return
|
*/
|
@Override
|
public List<LiveLocationVo> getDirectiveLiveLocationVoList(LiveLocationVo liveLocationVo) {
|
ArrayList<LiveLocationVo> arrayList = new ArrayList<>();
|
//人员
|
if (liveLocationVo.getType()==1){
|
String userIds = liveLocationVo.getUserIds();
|
if (null!=userIds && userIds!=""){
|
List<String> list = Arrays.asList(userIds.split(","));
|
if (list.size()>0){
|
list.forEach(userId->{
|
liveLocationVo.setWorkerId(userId);
|
LiveLocationVo directiveLiveLocationVo = baseMapper.getDirectiveLiveLocationVo(liveLocationVo);
|
//如果存在定位数据
|
if (null!=directiveLiveLocationVo){
|
arrayList.add(directiveLiveLocationVo);
|
}
|
});
|
}
|
}
|
}
|
return arrayList;
|
}
|
|
/**
|
* 获取指令接收人的轨迹数据
|
* @param liveLocationVo 实时对象信息
|
* @return
|
*/
|
@Override
|
public List<List<LocusVo>> getDirectiveLocusInfoList(LiveLocationVo liveLocationVo) {
|
List<List<LocusVo>> arrayList = new ArrayList<>();
|
//人员
|
if (liveLocationVo.getType()==1){
|
String userIds = liveLocationVo.getUserIds();
|
if (null!=userIds && userIds!=""){
|
List<String> list = Arrays.asList(userIds.split(","));
|
if (list.size()>0){
|
list.forEach(userId->{
|
liveLocationVo.setWorkerId(userId);
|
List<LocusVo> directiveLocusInfoList = baseMapper.getDirectiveLocusInfoList(liveLocationVo);
|
//如果存在轨迹数据
|
if (directiveLocusInfoList.size()>0){
|
arrayList.add(directiveLocusInfoList);
|
}
|
});
|
}
|
}
|
}
|
return arrayList;
|
}
|
}
|