package com.moral.api.service.impl; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; import java.util.Objects; import javax.servlet.http.HttpServletRequest; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.moral.api.entity.ManageAccount; import com.moral.api.entity.ManageCoordinateDetail; import com.moral.api.mapper.HistorySecondCruiserMapper; import com.moral.api.mapper.ManageCoordinateDetailMapper; import com.moral.api.pojo.dto.cruiser.CruiserDTO; import com.moral.api.pojo.redisBean.AccountInfoDTO; import com.moral.api.service.ManageCoordinateDetailService; import com.moral.api.util.RoadUtils; import com.moral.util.TokenUtils; import com.sun.org.apache.regexp.internal.RE; @Service @Slf4j public class ManageCoordinateDetailServiceImpl extends ServiceImpl implements ManageCoordinateDetailService { @Autowired private ManageCoordinateDetailMapper manageCoordinateDetailMapper; @Autowired private HistorySecondCruiserMapper historySecondCruiserMapper; /** * 新增经纬度 * @param params * @return */ @Override @Transactional public Integer insertCoordinate(Map params) { HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest(); String token = request.getHeader("token"); AccountInfoDTO accountInfoDTO = (AccountInfoDTO) TokenUtils.getUserInfoByToken(token); ManageAccount manageAccount = accountInfoDTO.getAccount(); Integer id = manageAccount.getId(); String userName = manageAccount.getUserName(); int coordinateId = Integer.parseInt(params.get("coordinateId").toString()); List manageCoordinateDetails = (List) params.get("data"); for (ManageCoordinateDetail manageCoordinateDetail : manageCoordinateDetails) { if (manageCoordinateDetail.getState().equals("1")){ String code = manageCoordinateDetail.getCode(); String[] rs = code.split("_"); manageCoordinateDetail.setCoordinateId(coordinateId); manageCoordinateDetail.setLongitude(Double.parseDouble(rs[0])); manageCoordinateDetail.setLatitude(Double.parseDouble(rs[1])); manageCoordinateDetail.setState("2"); manageCoordinateDetail.setUpdateUserId(id); manageCoordinateDetail.setUpdayeUserName(userName); QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("coordinate_id",coordinateId); wrapper.eq("longitude",manageCoordinateDetail.getLongitude()); wrapper.eq("latitude",manageCoordinateDetail.getLatitude()); Integer integer = manageCoordinateDetailMapper.selectCount(wrapper); if (integer>=1){ return null; } manageCoordinateDetailMapper.insert(manageCoordinateDetail); }else { manageCoordinateDetailMapper.deleteById(manageCoordinateDetail.getId()); } } return 200; } /** * 删除经纬度点 * @param id */ @Override public void deleteCoordinate(Integer id) { manageCoordinateDetailMapper.deleteById(id); } /** * 查询坐标点 * @param params * @return */ @Override public Map selectCoordinate(Map params) { params.put("dateFormat", "%Y-%m-%d %H:%i:%s"); String coordinateId = params.get("coordinateId").toString(); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("coordinate_id",coordinateId); List manageCoordinateDetails = manageCoordinateDetailMapper.selectList(queryWrapper); return null; } /** * 批量添加 * @param params * @return */ @Override @Transactional public Integer batchAll(Map params) { params.put("dateFormat", "%Y-%m-%d %H:%i:%s"); int coordinateId = Integer.parseInt(params.get("coordinateId").toString()); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("coordinate_id",coordinateId); List manageCoordinateDetails = manageCoordinateDetailMapper.selectList(queryWrapper); List cruiserInfo = historySecondCruiserMapper.getCruiserInfo(params); for (ManageCoordinateDetail manageCoordinateDetail : manageCoordinateDetails) { String latitude = manageCoordinateDetail.getLatitude().toString(); String longitude = manageCoordinateDetail.getLongitude().toString(); for (CruiserDTO cruiserDTO : cruiserInfo) { Double flyLat = cruiserDTO.getFlyLat(); Double flyLon = cruiserDTO.getFlyLon(); if (!latitude.equals(flyLat+"") || !longitude.equals(flyLon+"")){ ManageCoordinateDetail rsDTO = new ManageCoordinateDetail(); rsDTO.setLatitude(flyLat); rsDTO.setLongitude(flyLon); rsDTO.setState("2"); rsDTO.setCreateTime(new Date()); rsDTO.setUpdateTime(new Date()); rsDTO.setCoordinateId(coordinateId); int insert = manageCoordinateDetailMapper.insert(rsDTO); if (insert!=1){ return null; } } } } return 200; } }