|
@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
|
|
import com.ruoyi.common.core.domain.AjaxResult; |
|
|
import com.ruoyi.common.core.domain.AjaxResult; |
|
|
import com.ruoyi.common.utils.DateUtils; |
|
|
import com.ruoyi.common.utils.DateUtils; |
|
|
import com.ruoyi.common.utils.SecurityUtils; |
|
|
import com.ruoyi.common.utils.SecurityUtils; |
|
|
import com.ruoyi.common.utils.StakeMarkUtils; |
|
|
|
|
|
import com.ruoyi.common.utils.StringUtils; |
|
|
import com.ruoyi.common.utils.StringUtils; |
|
|
import com.ruoyi.common.utils.uuid.IdUtils; |
|
|
import com.ruoyi.common.utils.uuid.IdUtils; |
|
|
import com.ruoyi.system.service.ISysDeptService; |
|
|
import com.ruoyi.system.service.ISysDeptService; |
|
@ -18,6 +17,7 @@ import com.zc.business.mapper.*; |
|
|
import com.zc.business.service.IDcEventProcessService; |
|
|
import com.zc.business.service.IDcEventProcessService; |
|
|
import com.zc.business.service.IDcEventService; |
|
|
import com.zc.business.service.IDcEventService; |
|
|
import com.zc.business.service.IMiddleDatabaseService; |
|
|
import com.zc.business.service.IMiddleDatabaseService; |
|
|
|
|
|
import com.zc.business.utils.StakeMarkUtils; |
|
|
import com.zc.business.utils.diff.Diff; |
|
|
import com.zc.business.utils.diff.Diff; |
|
|
import com.zc.business.utils.diff.model.Result; |
|
|
import com.zc.business.utils.diff.model.Result; |
|
|
import com.zc.common.core.websocket.WebSocketService; |
|
|
import com.zc.common.core.websocket.WebSocketService; |
|
@ -27,8 +27,10 @@ import org.springframework.transaction.annotation.Transactional; |
|
|
|
|
|
|
|
|
import java.text.SimpleDateFormat; |
|
|
import java.text.SimpleDateFormat; |
|
|
import java.util.*; |
|
|
import java.util.*; |
|
|
|
|
|
import java.util.concurrent.ThreadLocalRandom; |
|
|
import java.util.regex.Matcher; |
|
|
import java.util.regex.Matcher; |
|
|
import java.util.regex.Pattern; |
|
|
import java.util.regex.Pattern; |
|
|
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
@ -142,7 +144,7 @@ public class DcEventServiceImpl extends ServiceImpl<DcEventMapper, DcEvent> impl |
|
|
|
|
|
|
|
|
String dcEventId = dcEvent.getId(); |
|
|
String dcEventId = dcEvent.getId(); |
|
|
//桩号校验
|
|
|
//桩号校验
|
|
|
if (!StakeMarkUtils.checkStakeMark(dcEvent.getStakeMark())){ |
|
|
if (!com.ruoyi.common.utils.StakeMarkUtils.checkStakeMark(dcEvent.getStakeMark())){ |
|
|
return -1; |
|
|
return -1; |
|
|
} |
|
|
} |
|
|
//获取事件类型
|
|
|
//获取事件类型
|
|
@ -1110,6 +1112,65 @@ public class DcEventServiceImpl extends ServiceImpl<DcEventMapper, DcEvent> impl |
|
|
String typeName = ValueConverter.eventTypeName(dcEvent.getEventType().toString()); |
|
|
String typeName = ValueConverter.eventTypeName(dcEvent.getEventType().toString()); |
|
|
dcEventProcess.setContext("由" + sourceName + "上报了一起" + typeName + "事件"); |
|
|
dcEventProcess.setContext("由" + sourceName + "上报了一起" + typeName + "事件"); |
|
|
dcEventProcessService.insertDcEventProcess(dcEventProcess); |
|
|
dcEventProcessService.insertDcEventProcess(dcEventProcess); |
|
|
|
|
|
|
|
|
|
|
|
//插入调度默认数据
|
|
|
|
|
|
ArrayList<HashMap<String,Object>> hashMaps = new ArrayList<>(); |
|
|
|
|
|
String stakeMark = dcEvent.getStakeMark();//传入桩号
|
|
|
|
|
|
List<HashMap<String, Object>> mapList = dcWarningMapper.selectRecentlySection();//全部机构的桩号和名称
|
|
|
|
|
|
for (HashMap<String,Object> map:mapList){ |
|
|
|
|
|
if (org.apache.commons.lang3.StringUtils.isBlank(map.get("stakeMark").toString())){ |
|
|
|
|
|
continue; |
|
|
|
|
|
} |
|
|
|
|
|
Long sectionId = (Long) map.get("id");//机构的id
|
|
|
|
|
|
String stakeMarkNew = map.get("stakeMark").toString();//机构桩号
|
|
|
|
|
|
com.zc.business.utils.StakeMarkUtils stakeMarkUtils = new StakeMarkUtils(); |
|
|
|
|
|
Integer itselfStakeMark = stakeMarkUtils.stakeMarkToInt(stakeMarkNew);//机构本身的米数
|
|
|
|
|
|
Integer afferentStakeMark = stakeMarkUtils.stakeMarkToInt(stakeMark);//传入的桩号米数
|
|
|
|
|
|
Integer difference =Math.abs(afferentStakeMark-itselfStakeMark); //计算距离绝对值
|
|
|
|
|
|
map.put("difference",difference/1000.0);//米转公里加入到map
|
|
|
|
|
|
map.put("id",sectionId); |
|
|
|
|
|
hashMaps.add(map); |
|
|
|
|
|
} |
|
|
|
|
|
List<HashMap<String, Object>> sortedHashMaps = hashMaps.stream().sorted(Comparator.comparing(map -> { |
|
|
|
|
|
return (Double) map.get("difference"); })).collect(Collectors.toList()); |
|
|
|
|
|
HashMap<String, Object> hashMap = dcWarningMapper.selectDcDispatch(id);//查询事件是否已经有转的调度记录
|
|
|
|
|
|
if (!sortedHashMaps.isEmpty()&&hashMap==null) { |
|
|
|
|
|
HashMap<String, Object> map = sortedHashMaps.get(0); |
|
|
|
|
|
Long sortId = (Long) map.get("id");//取出最近的机构id
|
|
|
|
|
|
if (sortId != null) { |
|
|
|
|
|
DcDispatch dcDispatch = new DcDispatch(); |
|
|
|
|
|
DcDispatchResource dcDispatchResource = new DcDispatchResource(); |
|
|
|
|
|
dcDispatch.setDeptId(SecurityUtils.getLoginUser().getDeptId()); |
|
|
|
|
|
dcDispatch.setEventId(id); |
|
|
|
|
|
dcDispatch.setStartTime(DateUtils.getNowDate()); |
|
|
|
|
|
dcDispatch.setDispatchStatus(2L);//进行中状态
|
|
|
|
|
|
dcDispatch.setRemark(dcEvent.getRemark()); |
|
|
|
|
|
dcWarningMapper.insertDcDispatch(dcDispatch);//事件绑定信息记录
|
|
|
|
|
|
Long dispatchId = dcDispatch.getId();//信息记录id
|
|
|
|
|
|
List<HashMap<String, Object>> employeesMap = dcWarningMapper.selectOrganizationEmployees(sortId);//人员map
|
|
|
|
|
|
if (employeesMap != null&&employeesMap.size()>0) { |
|
|
|
|
|
// 生成一个随机索引,范围在0到列表长度减1之间
|
|
|
|
|
|
int randomIndex = ThreadLocalRandom.current().nextInt(employeesMap.size()); |
|
|
|
|
|
HashMap<String, Object> randomEmployee = employeesMap.get(randomIndex); |
|
|
|
|
|
Long employeesId = (Long) randomEmployee.get("id");//随机人员id
|
|
|
|
|
|
dcDispatchResource.setResourceId(employeesId);//资源id
|
|
|
|
|
|
dcDispatchResource.setDispatchType(1);//资源类型
|
|
|
|
|
|
dcDispatchResource.setDispatchId(dispatchId);//信息记录id
|
|
|
|
|
|
dcWarningMapper.insertDispatchResource(dcDispatchResource); |
|
|
|
|
|
} |
|
|
|
|
|
List<HashMap<String, Object>> vehiclesMap = dcWarningMapper.selectVehicles(sortId);//车辆map
|
|
|
|
|
|
if (vehiclesMap != null&&vehiclesMap.size()>0) { |
|
|
|
|
|
// 生成一个随机索引,范围在0到列表长度减1之间
|
|
|
|
|
|
int randomIndex = ThreadLocalRandom.current().nextInt(vehiclesMap.size()); |
|
|
|
|
|
HashMap<String, Object> randomEmployee = employeesMap.get(randomIndex); |
|
|
|
|
|
Long vehiclesId = (Long) randomEmployee.get("id");//随机车辆id
|
|
|
|
|
|
dcDispatchResource.setResourceId(vehiclesId);//资源id
|
|
|
|
|
|
dcDispatchResource.setDispatchType(2);//资源类型
|
|
|
|
|
|
dcDispatchResource.setDispatchId(dispatchId);//信息记录id
|
|
|
|
|
|
dcWarningMapper.insertDispatchResource(dcDispatchResource);//绑定车辆信息
|
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
return i; |
|
|
return i; |
|
|
} |
|
|
} |
|
|