package com.zy.acs.manager.manager.service.impl; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.zy.acs.framework.common.Cools; import com.zy.acs.framework.common.SnowflakeIdWorker; import com.zy.acs.framework.exception.CoolException; import com.zy.acs.manager.core.domain.LaneDto; import com.zy.acs.manager.core.service.MapService; import com.zy.acs.manager.manager.entity.Lane; import com.zy.acs.manager.manager.enums.StatusType; import com.zy.acs.manager.manager.mapper.LaneMapper; import com.zy.acs.manager.manager.service.LaneService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.Date; import java.util.List; @Service("laneService") public class LaneServiceImpl extends ServiceImpl implements LaneService { @Autowired private SnowflakeIdWorker snowflakeIdWorker; @Override @Transactional(rollbackFor = Exception.class) public List batchSaveByLaneDtoList(Long zonedId, List laneDtoList) { List lanes = new ArrayList<>(); if (Cools.isEmpty(laneDtoList)) { return lanes; } Date now = new Date(); for (LaneDto laneDto : laneDtoList) { Lane lane = new Lane(); if (null != zonedId) { lane.setZoneId(zonedId); } lane.setHashCode(laneDto.getHashCode()); lane.setUuid(String.valueOf(snowflakeIdWorker.nextId()).substring(3)); if (!Cools.isEmpty(laneDto.getCodes())) { lane.setCodes(JSON.toJSONString(laneDto.getCodes())); } lane.setStatus(StatusType.ENABLE.val); lane.setCreateTime(now); lane.setUpdateTime(now); if (!this.save(lane)) { throw new CoolException("failed to save lane"); } else { lanes.add(lane); laneDto.setLaneId(lane.getId()); } } return lanes; } @Override public Double getLaneDirection(LaneDto laneDto) { if (null == laneDto) { return null; } Lane lane = this.getById(laneDto.getLaneId()); if (null == lane) { return null; } Integer entryAngle = lane.getEntryAngle(); if (null == entryAngle) { return null; } if (entryAngle < 0) { return null; } double entryAngleDouble = entryAngle.doubleValue(); return MapService.mapToNearest(entryAngleDouble); // return entryAngleDouble; } }