package com.zy.asrs.service.impl; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.Cools; import com.core.exception.CoolException; import com.zy.asrs.mapper.BasAgvMapper; import com.zy.asrs.entity.BasAgv; import com.zy.asrs.service.BasAgvService; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import java.util.List; import java.util.Random; @Slf4j @Service("basAgvService") public class BasAgvServiceImpl extends ServiceImpl implements BasAgvService { @Override public BasAgv selectIdleAgv() { List idleAgvs = this.selectList(new EntityWrapper() .eq("in_enable", "Y") .eq("is_user", 1) .in("status", 6, 8 ,12) ); if (Cools.isEmpty(idleAgvs)) { log.warn("没有空闲的Agv小车"); throw new CoolException("没有空闲的Agv小车"); } return idleAgvs.get(0); } @Override public Boolean haveIdleAgv() { List idleAgvs = this.selectList(new EntityWrapper() .eq("in_enable", "Y") .eq("is_user", 1) .in("status", 6, 8 ,12) ); if (Cools.isEmpty(idleAgvs)) { log.warn("没有空闲的Agv小车"); return false; } return true; } @Override public String getAgvWorkNo() { String workNo = null; for (int i = 0; i < 10; i++) { workNo = getRandom(); int count = this.selectCount(new EntityWrapper().eq("task_code", workNo)); if (count == 0) { break; } } if (Cools.isEmpty(workNo)) { throw new CoolException("下发AGV任务错误,工作号异常"); } return workNo; } @Override public String getEmptyAgvWorkNo() { String workNo = null; for (int i = 0; i < 10; i++) { workNo = getEmptyRandom(); int count = this.selectCount(new EntityWrapper().eq("task_code", workNo)); if (count == 0) { break; } } if (Cools.isEmpty(workNo)) { throw new CoolException("下发AGV任务错误,工作号异常"); } return workNo; } private String getRandom() { return String.format("%06d",new Random().nextInt(700000)); } public String getEmptyRandom(){ int min = 700001; int max = 999999; Random random = new Random(); int s = random.nextInt(max) % (max - min + 1) + min; return String.format("%06d", s); } }