| 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); | 
|         if (null == agvDetail) { | 
|             return null; | 
|         } | 
|         Long recentCode = agvDetail.getRecentCode(); | 
|         if (null == recentCode) { | 
|             return null; | 
|         } | 
|         return codeService.getCacheById(recentCode); | 
|     } | 
|   | 
| } |