package com.zy.acs.manager.manager.service.impl;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.zy.acs.manager.manager.entity.Agv;
|
import com.zy.acs.manager.manager.entity.AgvDetail;
|
import com.zy.acs.manager.manager.entity.AgvModel;
|
import com.zy.acs.manager.manager.entity.Code;
|
import com.zy.acs.manager.manager.mapper.AgvDetailMapper;
|
import com.zy.acs.manager.manager.service.AgvDetailService;
|
import com.zy.acs.manager.manager.service.AgvModelService;
|
import com.zy.acs.manager.manager.service.AgvService;
|
import com.zy.acs.manager.manager.service.CodeService;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
@Service("agvDetailService")
|
public class AgvDetailServiceImpl extends ServiceImpl<AgvDetailMapper, AgvDetail> implements AgvDetailService {
|
|
@Autowired
|
private AgvService agvService;
|
@Autowired
|
private AgvModelService agvModelService;
|
@Autowired
|
private CodeService codeService;
|
|
@Override
|
public AgvDetail selectMajorByAgvId(Long agvId) {
|
return this.baseMapper.selectMajorByAgvId(agvId);
|
}
|
|
@Override
|
public AgvDetail selectByAgvId(Long agvId) {
|
return this.getOne(new LambdaQueryWrapper<AgvDetail>().eq(AgvDetail::getAgvId, agvId));
|
}
|
|
@Override
|
public AgvDetail selectByAgvNo(String agvNo) {
|
return this.selectByAgvId(agvService.getAgvId(agvNo));
|
}
|
|
@Override
|
public Boolean updatePosCode(Long id, Long codeId) {
|
return this.baseMapper.updatePosCode(id, codeId) > 0;
|
}
|
|
@Override
|
public Boolean updatePosCodeByAgvId(Long agvId, Long codeId) {
|
return this.baseMapper.updatePosCodeByAgvId(agvId, codeId) > 0;
|
}
|
|
@Override
|
public Boolean updateUnPosCode(Long id, Long codeId) {
|
return this.baseMapper.updateUnPosCode(id, codeId) > 0;
|
}
|
|
@Override
|
public Boolean updateAngleByAgvId(Long agvId, Double angle) {
|
return this.baseMapper.updateAngleByAgvId(agvId, angle);
|
}
|
|
@Override
|
public Boolean removeByAgvId(Long agvId) {
|
return baseMapper.delete(new LambdaQueryWrapper<AgvDetail>().eq(AgvDetail::getAgvId, agvId)) > 0;
|
}
|
|
@Override
|
public Boolean isPowerLoss(Agv agv, AgvDetail agvDetail, AgvModel agvModel) {
|
if (null == agvDetail) {
|
agvDetail = this.selectMajorByAgvId(agv.getId());
|
}
|
if (null == agvModel) {
|
agvModel = agvModelService.getByAgvId(agv.getId());
|
}
|
if (null == agv.getChargeLine()) {
|
return agvDetail.getVol() < agvModel.getLowBattery();
|
} else {
|
return agvDetail.getVol() < Math.max(agv.getChargeLine(), agvModel.getLowBattery());
|
}
|
}
|
|
@Override
|
public Code getCurrentCode(Long agvId) {
|
AgvDetail agvDetail = this.selectMajorByAgvId(agvId);
|
Long recentCode = agvDetail.getRecentCode();
|
if (null == recentCode) {
|
return null;
|
}
|
return codeService.getById(recentCode);
|
}
|
|
}
|