zy-acs-manager/src/main/java/com/zy/acs/manager/core/HandlerController.java
@@ -173,7 +173,7 @@ oriLoc = locService.getById(param.getStartLocNo()); } if (!Cools.isEmpty(param.getStartLocNoStr())) { oriLoc = locService.selecatByLocNo(param.getStartLocNoStr()); oriLoc = locService.selectByLocNo(param.getStartLocNoStr()); } if (null == oriLoc) { return R.error(); @@ -192,7 +192,7 @@ destLoc = locService.getById(param.getEndLocNo()); } if (!Cools.isEmpty(param.getEndLocNoStr())) { destLoc = locService.selecatByLocNo(param.getEndLocNoStr()); destLoc = locService.selectByLocNo(param.getEndLocNoStr()); } if (null == destLoc) { return R.error(); @@ -220,7 +220,7 @@ oriLoc = locService.getById(param.getStartLocNo()); } if (!Cools.isEmpty(param.getStartLocNoStr())) { oriLoc = locService.selecatByLocNo(param.getStartLocNoStr()); oriLoc = locService.selectByLocNo(param.getStartLocNoStr()); } if (null == oriLoc) { return R.error(); @@ -286,7 +286,7 @@ destLoc = locService.getById(param.getEndLocNo()); } if (!Cools.isEmpty(param.getEndLocNoStr())) { destLoc = locService.selecatByLocNo(param.getEndLocNoStr()); destLoc = locService.selectByLocNo(param.getEndLocNoStr()); } if (null == destLoc) { return R.error(); zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/AutoRunScheduler.java
@@ -6,13 +6,12 @@ import com.zy.acs.framework.common.Cools; import com.zy.acs.framework.common.SnowflakeIdWorker; import com.zy.acs.manager.common.domain.TaskDto; import com.zy.acs.manager.core.service.MainLockWrapService; import com.zy.acs.manager.core.service.MainService; import com.zy.acs.manager.core.service.TrafficService; import com.zy.acs.manager.core.service.*; import com.zy.acs.manager.manager.controller.param.OpenBusSubmitParam; import com.zy.acs.manager.manager.entity.*; import com.zy.acs.manager.manager.enums.*; import com.zy.acs.manager.manager.service.*; import com.zy.acs.manager.manager.service.impl.CodeServiceImpl; import com.zy.acs.manager.system.service.ConfigService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -53,8 +52,14 @@ private AgvModelService agvModelService; @Autowired private SnowflakeIdWorker snowflakeIdWorker; @Autowired private AgvAreaDispatcher agvAreaDispatcher; @Autowired private AreaGovernService areaGovernService; @Autowired private CodeServiceImpl codeService; // @Scheduled(fixedRate = 500) // 固定频率执行,不同步 // @Scheduled(fixedRate = 500) // 固定频率执行,不同步 @Scheduled(fixedDelay = 1000) // 固定频率执行,同步 // @Scheduled(cron = "0/1 * * * * ? ") private void execute() { @@ -91,7 +96,7 @@ return; } // STOCK // STOCK STA LambdaQueryWrapper<Sta> stockWrapper = new LambdaQueryWrapper<Sta>() .eq(Sta::getStaSts, StaStsType.STOCK.val()) .eq(Sta::getStatus, StatusType.ENABLE.val) @@ -127,6 +132,65 @@ mainService.generateBusAndTask(param, memo); } private void runStaToLoc0(String memo) { AgvModel agvModel = agvModelService.getOne(new LambdaQueryWrapper<AgvModel>().eq(AgvModel::getType, AgvModelType.CTU_BOX_TRANSPORT_AGV.toString())); if (null == agvModel) { return; } // STOCK STA List<Sta> stockList = staService.list(new LambdaQueryWrapper<Sta>() .eq(Sta::getStaSts, StaStsType.STOCK.val()) .eq(Sta::getStatus, StatusType.ENABLE.val)); if (Cools.isEmpty(stockList)) { return; } Collections.shuffle(stockList); OpenBusSubmitParam param = new OpenBusSubmitParam(); param.setBatch(String.valueOf(snowflakeIdWorker.nextId()).substring(13, 19)); for (int i = 0; i < Math.min(agvModel.getBackpack(), stockList.size()) ; i++) { Sta stockSta = stockList.get(i); String staCode = stockSta.getCode$(); Loc idleLoc = null; // 所在区域的条码,如果没有area绑定,就全地图 List<String> codeList = areaGovernService.queryCodesByOneCode(staCode); if (Cools.isEmpty(codeList)) { idleLoc = locService.selectRandOneByLocSts(LocStsType.IDLE.val()); } else { Collections.shuffle(codeList); for (String codeData : codeList) { Code code = codeService.getCacheByData(codeData); if (null == code) { break; } List<Loc> locList = locService.list(new LambdaQueryWrapper<Loc>() .eq(Loc::getCode, code.getId()).eq(Loc::getLocSts, LocStsType.IDLE.val())); if (Cools.isEmpty(locList)) { break; } else if (locList.size() == 1) { idleLoc = locList.get(0); } else { Collections.shuffle(locList); idleLoc = locList.get(0); } if (null != idleLoc) { break; } } } if (null == idleLoc) { break; } TaskDto taskDto = new TaskDto(); taskDto.setOriSta(stockSta.getStaNo()); taskDto.setDestLoc(idleLoc.getLocNo()); taskDto.setPriority(100); taskDto.setSeqNum(String.valueOf(snowflakeIdWorker.nextId()).substring(15, 19)); param.getTaskList().add(taskDto); } if (Cools.isEmpty(param.getTaskList())) { return; } mainService.generateBusAndTask(param, memo); } // 出库 private void runLocToSta(String memo) { // Integer startRow = Collections.min(locGroupList); zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/AreaGovernService.java
@@ -15,10 +15,9 @@ import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.context.event.ApplicationReadyEvent; import org.springframework.context.event.EventListener; import org.springframework.stereotype.Service; import javax.annotation.PostConstruct; import java.util.*; import java.util.concurrent.ConcurrentHashMap; @@ -40,7 +39,8 @@ private AreaAgvService areaAgvService; // launcher ------------------------------------------------------- @EventListener(ApplicationReadyEvent.class) // @EventListener(ApplicationReadyEvent.class) @PostConstruct public void init() { List<Area> areaList = areaService.list(new LambdaQueryWrapper<Area>().eq(Area::getStatus, StatusType.ENABLE.val)); if (Cools.isEmpty(areaList)) { @@ -124,6 +124,18 @@ return areaIds; } // checkout list of code by code data public List<String> queryCodesByOneCode(String code) { Set<String> codeSet = new HashSet<>(); for (Map.Entry<Long, List<String>> entry : AREA_CODE.entrySet()) { List<String> codeList = entry.getValue(); if (!Cools.isEmpty(codeList) && codeList.contains(code)) { codeSet.addAll(codeList); } } return new ArrayList<>(codeSet); } // checkout list of code by area ids public List<String> queryCodes(List<Long> areaIds) { if (Cools.isEmpty(areaIds)) { zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/ValidService.java
@@ -51,7 +51,7 @@ // ori -------------------------- if (!Cools.isEmpty(taskDto.getOriLoc())) { Loc oriLoc = locService.selecatByLocNo(taskDto.getOriLoc()); Loc oriLoc = locService.selectByLocNo(taskDto.getOriLoc()); if (null == oriLoc) { throw new BusinessException("oriLoc: " + taskDto.getOriLoc() + " doesn't exist!"); } @@ -68,7 +68,7 @@ } // dest -------------------------- if (!Cools.isEmpty(taskDto.getDestLoc())) { Loc destLoc = locService.selecatByLocNo(taskDto.getDestLoc()); Loc destLoc = locService.selectByLocNo(taskDto.getDestLoc()); if (null == destLoc) { throw new BusinessException("destLoc: " + taskDto.getDestLoc() + " doesn't exist!"); } zy-acs-manager/src/main/java/com/zy/acs/manager/manager/mapper/LocMapper.java
@@ -2,6 +2,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.zy.acs.manager.manager.entity.Loc; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import java.util.List; import java.util.Map; @@ -12,4 +14,7 @@ List<Map<String, Object>> selectDigitalLocWhichNeedShow(); @Select("SELECT * FROM man_loc WHERE loc_sts = #{locSts} ORDER BY RAND() LIMIT 1") Loc selectRandOneByLocSts(@Param("locSts") Long locSts); } zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/LocService.java
@@ -9,11 +9,14 @@ public interface LocService extends IService<Loc> { Loc selecatByLocNo(String locNo); Loc selectByLocNo(String locNo); List<Map<String, Object>> selectCountGroupByLocSts(); List<Map<String, Object>> selectDigitalLocWhichNeedShow(); void taskCallBack(Task task); Loc selectRandOneByLocSts(Long locSts); } zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/LocServiceImpl.java
@@ -29,7 +29,7 @@ private StaService staService; @Override public Loc selecatByLocNo(String locNo) { public Loc selectByLocNo(String locNo) { return this.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getLocNo, locNo)); } @@ -144,4 +144,12 @@ } @Override public Loc selectRandOneByLocSts(Long locSts) { if (locSts == null) { return null; } return this.baseMapper.selectRandOneByLocSts(locSts); } }