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.framework.common.Cools; import com.zy.acs.manager.manager.entity.Code; import com.zy.acs.manager.manager.entity.Jam; import com.zy.acs.manager.manager.entity.Segment; import com.zy.acs.manager.manager.enums.JamStateType; import com.zy.acs.manager.manager.mapper.JamMapper; import com.zy.acs.manager.manager.service.AgvService; import com.zy.acs.manager.manager.service.CodeService; import com.zy.acs.manager.manager.service.JamService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.Date; import java.util.List; @Slf4j @Service("jamService") public class JamServiceImpl extends ServiceImpl implements JamService { @Autowired private CodeService codeService; @Autowired private AgvService agvService; @Override public Jam getJam(Long agvId, Long jamCode, Long jamSeg) { List jams = this.list(new LambdaQueryWrapper() .eq(Jam::getJamAgv, agvId) .eq(Jam::getJamCode, jamCode) .eq(Jam::getJamSeg, jamSeg) .eq(Jam::getState, JamStateType.RUNNING.toString()) ); if (!Cools.isEmpty(jams)) { return jams.stream().findFirst().orElse(null); } return null; } /** * 因为你而阻塞的车,现在你已经在避让点了 * 你的下一个segment是不是又会导致阻塞 */ @Override public List getUnfinishedOriginJamByAvo(Long avoAgv, Long currCode, Long currSeg) { return this.baseMapper.selectUnfinishedJamByAvo(avoAgv, currCode, null); } @Override public Jam getCycleJam(Long jamAgv, Long jamSeg, String avoAgvNo) { List jams = this.list(new LambdaQueryWrapper() .eq(Jam::getJamAgv, jamAgv) .eq(Jam::getJamSeg, jamSeg) .eq(Jam::getAvoAgv, agvService.getAgvId(avoAgvNo)) .eq(Jam::getCycleAvo, 1) .ne(Jam::getState, JamStateType.DEPRECATED.toString()) // .eq(Jam::getState, JamStateType.RUNNING.toString()) ); if (!Cools.isEmpty(jams)) { return jams.stream().findFirst().orElse(null); } return null; } @Override public List getJamFromSegmentByAvo(Segment jamSeg, String avoAgvNo) { Long avoAgvId = agvService.getAgvId(avoAgvNo); return this.baseMapper.selectJamFromSegmentByAvo(jamSeg.getId(), avoAgvId); } @Override public List getUnfinishedAvoSegByAvo(String avoAgvNo, Segment currSeg) { Long agvId = agvService.getAgvId(avoAgvNo); return this.baseMapper.selectUnfinishedAvoSegByAvo(agvId, null); } @Override public List queryByAvoid(Long avoAgv, JamStateType jamState) { if (null == avoAgv) { return null; } LambdaQueryWrapper wrapper = new LambdaQueryWrapper().eq(Jam::getAvoAgv, avoAgv); if (null != jamState) { wrapper.eq(Jam::getState, jamState.toString()); } return this.list(wrapper); } @Override public Boolean checkIfFinish(Long avoAgv, String currCodeData) { if (Cools.isEmpty(avoAgv, currCodeData)) { return null; } Date now = new Date(); Code code = codeService.getCacheByData(currCodeData); List jams = this.list(new LambdaQueryWrapper() .eq(Jam::getAvoAgv, avoAgv) .eq(Jam::getAvoCode, code.getId()) .eq(Jam::getState, JamStateType.RUNNING.toString()) ); for (Jam jam : jams) { jam.setEndTime(now); jam.setUpdateTime(now); jam.setState(JamStateType.FINISH.toString()); if (!this.updateById(jam)) { log.error("{}编号阻塞记录完成修改失败!!!", jam.getUuid()); } } return null; } @Override public boolean deprecate(Long id, Long loginUserId) { Jam jam = this.getById(id); if (null == jam) { return false; } Date now = new Date(); jam.setState(JamStateType.DEPRECATED.toString()); jam.setUpdateTime(now); jam.setEndTime(now); jam.setUpdateBy(loginUserId); return this.updateById(jam); } }