package com.javaweb.geo.service.impl; import java.util.ArrayList; import java.util.List; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.util.ObjectUtil; import com.javaweb.common.exception.BusinessException; import com.javaweb.common.utils.NumberUtils; import com.javaweb.geo.domain.*; import com.javaweb.geo.mapper.*; import com.javaweb.geo.service.IHandleOpinionService; import com.javaweb.geo.utils.ExceptionDistanceUtils; import com.javaweb.geo.utils.ExceptionTimeUtils; import com.javaweb.geo.vo.ExceptionDistanceVo; import com.javaweb.geo.vo.ExceptionTimeVo; import com.javaweb.geotdp.domain.ResponseResult; import com.javaweb.geotdp.enums.RecordType; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.javaweb.geo.service.IHandleExceptionService; import com.javaweb.common.core.text.Convert; /** * 异常处理Service业务层处理 * * @author cxy * @date 2022-11-14 */ @Service public class HandleExceptionServiceImpl implements IHandleExceptionService { @Autowired private HandleExceptionMapper handleExceptionMapper; @Autowired private HoleMapper holeMapper; @Autowired private HoleYantuMapper holeYantuMapper; @Autowired private HoleHuiciMapper holeHuiciMapper; @Autowired private HoleQutuMapper holeQutuMapper; @Autowired private HoleBiaoguanMapper holeBiaoguanMapper; @Autowired private HoleShuiweiMapper holeShuiweiMapper; @Autowired private IHandleOpinionService handleOpinionService; /** * 查询异常处理 * * @param ids 异常处理ID * @return 异常处理 */ @Override public HandleException selectHandleExceptionById(String ids) { return handleExceptionMapper.selectHandleExceptionById(ids); } /** * 查询异常处理列表 * * @param handleException 异常处理 * @return 异常处理 */ @Override public List selectHandleExceptionList(HandleException handleException) { return handleExceptionMapper.selectHandleExceptionList(handleException); } /** * 新增异常处理 * * @param handleException 异常处理 * @return 结果 */ @Override public int insertHandleException(HandleException handleException) { return handleExceptionMapper.insertHandleException(handleException); } /** * 修改异常处理 * * @param handleException 异常处理 * @return 结果 */ @Override public int updateHandleException(HandleException handleException) { return handleExceptionMapper.updateHandleException(handleException); } /** * 删除异常处理对象 * * @param ids 需要删除的数据ID * @return 结果 */ @Override public int deleteHandleExceptionByIds(String ids) { return handleExceptionMapper.deleteHandleExceptionByIds(Convert.toStrArray(ids)); } /** * 删除异常处理信息 * * @param ids 异常处理ID * @return 结果 */ @Override public int deleteHandleExceptionById(String ids) { return handleExceptionMapper.deleteHandleExceptionById(ids); } /** * 查看勘探点编号下的详情(时间异常) */ @Override public List holeTimeDetails(String holeId) { List resultList = new ArrayList<>(); ExceptionTimeVo exceptionTimeVo; List yantuList = holeYantuMapper.selectHoleYantuListByHoleId(holeId); if (ObjectUtil.isNotEmpty(yantuList)) { for (int i = 0; i < yantuList.size() ; i++) { exceptionTimeVo = new ExceptionTimeVo(); BeanUtil.copyProperties(yantuList.get(i), exceptionTimeVo); exceptionTimeVo.setCode(yantuList.get(i).getCode()); exceptionTimeVo.setRecordType(RecordType.yt.getName()); exceptionTimeVo.setGpsTime(yantuList.get(i).getGpsTime()); if(i==0){ exceptionTimeVo.setSpead(0d); resultList.add(exceptionTimeVo); continue; } HoleYantu holeYantu1 = yantuList.get(i-1); HoleYantu holeYantu2 = yantuList.get(i); // 计算速度 Double spead = ExceptionTimeUtils.spead(holeYantu1.getGpsTime(), holeYantu1.getEndDepth(), holeYantu2.getGpsTime(), holeYantu2.getEndDepth()); exceptionTimeVo.setSpead(spead); resultList.add(exceptionTimeVo); } } return resultList; } /** * 查看勘探点编号下的详情(距离异常) */ @Override public List holeDistanceDetails(String holeId) { Hole hole = holeMapper.selectHoleById(holeId); if (ObjectUtil.isEmpty(hole)) { throw new BusinessException("未查询到数据"); } List resultList = new ArrayList<>(); ExceptionDistanceVo distanceVo; double holeLon = hole.getLongitude(), holeLat = hole.getLatitude(); List biaoguans = holeBiaoguanMapper.selectHoleBiaoguanByHoleId(holeId); List holeHuicis = holeHuiciMapper.selectHoleHuiciByHoleId(holeId); List qutus = holeQutuMapper.selectHoleQutuByHoleId(holeId); List shuiweis = holeShuiweiMapper.selectHoleShuiWeiByHoleId(holeId); List yantus = holeYantuMapper.selectHoleYantuListByHoleId(holeId); // 标惯、动探 if (ObjectUtil.isNotEmpty(biaoguans)) { for (HoleBiaoguan item : biaoguans) { distanceVo = new ExceptionDistanceVo(); distanceVo.setIds(item.getIds()); distanceVo.setBeginDepth(item.getBegin1()); distanceVo.setEndDepth(item.getEnd1()); distanceVo.setCode(item.getCode()); distanceVo.setLat(item.getLongitude()); distanceVo.setLng(item.getLatitude()); distanceVo.setRecordType(item.getType()); distanceVo.setGpsTime(item.getGpsTime()); distanceVo.setDistance(ExceptionDistanceUtils.distance(holeLon, holeLat, item.getLongitude(), item.getLatitude())); resultList.add(distanceVo); } } // 回次 if (ObjectUtil.isNotEmpty(holeHuicis)) { for (HoleHuici item : holeHuicis) { distanceVo = new ExceptionDistanceVo(); distanceVo.setIds(item.getIds()); distanceVo.setBeginDepth(item.getBeginDepth()); distanceVo.setEndDepth(item.getEndDepth()); distanceVo.setCode(item.getCode()); distanceVo.setLat(item.getLongitude()); distanceVo.setLng(item.getLatitude()); distanceVo.setRecordType(RecordType.hc.getName()); distanceVo.setGpsTime(item.getGpsTime()); distanceVo.setDistance(ExceptionDistanceUtils.distance(holeLon, holeLat, item.getLongitude(), item.getLatitude())); resultList.add(distanceVo); } } // 取土 if (ObjectUtil.isNotEmpty(qutus)) { for (HoleQutu item : qutus) { distanceVo = new ExceptionDistanceVo(); distanceVo.setIds(item.getIds()); distanceVo.setBeginDepth(item.getBeginDepth()); distanceVo.setEndDepth(item.getEndDepth()); distanceVo.setCode(item.getCode()); distanceVo.setLat(item.getLongitude()); distanceVo.setLng(item.getLatitude()); distanceVo.setRecordType(RecordType.qt.getName()); distanceVo.setGpsTime(item.getGpsTime()); distanceVo.setDistance(ExceptionDistanceUtils.distance(holeLon, holeLat, item.getLongitude(), item.getLatitude())); resultList.add(distanceVo); } } // 水位 if (ObjectUtil.isNotEmpty(shuiweis)) { for (HoleShuiwei item : shuiweis) { distanceVo = new ExceptionDistanceVo(); distanceVo.setIds(item.getIds()); distanceVo.setBeginDepth(item.getShownWaterLevel()); distanceVo.setEndDepth(item.getWaterDepth()); distanceVo.setCode(item.getCode()); distanceVo.setLat(item.getLongitude()); distanceVo.setLng(item.getLatitude()); distanceVo.setRecordType(RecordType.sw.getName()); distanceVo.setGpsTime(item.getGpsTime()); distanceVo.setDistance(ExceptionDistanceUtils.distance(holeLon, holeLat, item.getLongitude(), item.getLatitude())); resultList.add(distanceVo); } } // 岩土 if (ObjectUtil.isNotEmpty(yantus)) { for (HoleYantu item : yantus) { distanceVo = new ExceptionDistanceVo(); distanceVo.setIds(item.getIds()); distanceVo.setBeginDepth(item.getBeginDepth()); distanceVo.setEndDepth(item.getEndDepth()); distanceVo.setCode(item.getCode()); distanceVo.setLat(item.getLongitude()); distanceVo.setLng(item.getLatitude()); distanceVo.setRecordType(RecordType.yt.getName()); distanceVo.setGpsTime(item.getGpsTime()); distanceVo.setDistance(ExceptionDistanceUtils.distance(holeLon, holeLat, item.getLongitude(), item.getLatitude())); resultList.add(distanceVo); } } return resultList; } /** * 异常处理意见详情 * @param exceptionId * @return */ @Override public List handleOpinionDetails(String exceptionId) { HandleOpinion handleOpinion = new HandleOpinion(); handleOpinion.setExceptionId(exceptionId); return handleOpinionService.selectHandleOpinionList(handleOpinion); } }