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<LaneMapper, Lane> implements LaneService {
|
|
@Autowired
|
private SnowflakeIdWorker snowflakeIdWorker;
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public List<Lane> batchSaveByLaneDtoList(Long zonedId, List<LaneDto> laneDtoList) {
|
List<Lane> 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;
|
}
|
|
}
|