zy-acs-manager/src/main/java/com/zy/acs/manager/core/constant/AgvAreaDispatcher.java
File was deleted zy-acs-manager/src/main/java/com/zy/acs/manager/core/constant/AgvGroupConstant.java
File was deleted zy-acs-manager/src/main/java/com/zy/acs/manager/core/constant/AreaConstant.java
File was deleted zy-acs-manager/src/main/java/com/zy/acs/manager/core/constant/AreaDisableConstant.java
File was deleted zy-acs-manager/src/main/java/com/zy/acs/manager/core/constant/LocGroupConstant.java
File was deleted zy-acs-manager/src/main/java/com/zy/acs/manager/core/constant/StaGroupConstant.java
File was deleted zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/AgvAreaDispatcher.java
New file @@ -0,0 +1,80 @@ package com.zy.acs.manager.core.service; import com.zy.acs.framework.common.Cools; import com.zy.acs.manager.manager.entity.Loc; import com.zy.acs.manager.manager.entity.Sta; import com.zy.acs.manager.manager.entity.Task; import com.zy.acs.manager.manager.service.AreaAgvService; import com.zy.acs.manager.manager.service.LocService; import com.zy.acs.manager.manager.service.StaService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.PostConstruct; import java.util.ArrayList; import java.util.Collections; import java.util.List; @Slf4j @Service public class AgvAreaDispatcher { @Autowired private LocService locService; @Autowired private StaService staService; @Autowired private AreaGovernService areaGovernService; @Autowired private AreaAgvService areaAgvService; @PostConstruct public void init() { } public List<Long> getAgvNosByTask(Task task) { if (null == task) { return null; } Loc oriLoc = null; Sta oriSta = null; Loc destLoc = null; Sta destSta = null; if (null != task.getOriLoc()) { oriLoc = locService.getById(task.getOriLoc()); return this.getAgvIdsByCode(oriLoc.getCode$()); } if (null != task.getOriSta()) { oriSta = staService.getById(task.getOriSta()); return this.getAgvIdsByCode(oriSta.getCode$()); } if (null != task.getDestLoc()) { destLoc = locService.getById(task.getDestLoc()); return this.getAgvIdsByCode(destLoc.getCode$()); } if (null != task.getDestSta()) { destSta = staService.getById(task.getDestSta()); return this.getAgvIdsByCode(destSta.getCode$()); } return null; } public List<Long> getAgvIdsByCode(String code) { if (Cools.isEmpty(code)) { return Collections.emptyList(); } List<Long> areaIds = areaGovernService.queryAreas(code); return areaAgvService.queryAgvIdsByAreaIds(areaIds); } public List<String> getAgvNosByStaNo(String staNo) { return null; } public List<String> getAreaCodeListByAgvNo(String agvNo) { List<String> areaCodeList = new ArrayList<>(); return areaCodeList; } } zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/AllocateService.java
@@ -3,7 +3,6 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.zy.acs.framework.common.Cools; import com.zy.acs.manager.common.utils.CommonUtil; import com.zy.acs.manager.core.constant.AgvAreaDispatcher; import com.zy.acs.manager.core.domain.Lane; import com.zy.acs.manager.core.domain.TaskPosDto; import com.zy.acs.manager.manager.entity.*; @@ -50,7 +49,7 @@ /** * get available agv list which is idle */ private List<String> getAvailableAgvNos(List<String> agvNos) { private List<String> getAvailableAgvNos(List<Long> agvIds) { // List<Agv> agvList = new ArrayList<>(); // if (Cools.isEmpty(agvNos)) { // // global @@ -65,9 +64,9 @@ // } // } List<Agv> agvList = Cools.isEmpty(agvNos) List<Agv> agvList = Cools.isEmpty(agvIds) ? agvService.list(new LambdaQueryWrapper<Agv>().eq(Agv::getStatus, StatusType.ENABLE.val)) : agvNos.stream().map(agvService::selectByUuid).filter(Agv::getStatusBool).collect(Collectors.toList()); : agvIds.stream().map(agvService::getById).filter(Agv::getStatusBool).collect(Collectors.toList()); List<String> result = new ArrayList<>(); for (Agv agv : agvList) { @@ -106,8 +105,8 @@ * it can break the limit of the number of agv backpack */ public synchronized Agv execute(Task task) { // List<String> availableAgvNos = this.getAvailableAgvNos(agvAreaDispatcher.getAgvNosByTask(task)); List<String> availableAgvNos = this.getAvailableAgvNos(null); List<String> availableAgvNos = this.getAvailableAgvNos(agvAreaDispatcher.getAgvNosByTask(task)); // List<String> availableAgvNos = this.getAvailableAgvNos(null); if (Cools.isEmpty(availableAgvNos)) { // log.warn("No available agv to assign the task[{}]", task.getSeqNum()); return null; zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/AgvController.java
@@ -43,6 +43,8 @@ private TaskService taskService; @Autowired private MapDataDispatcher mapDataDispatcher; @Autowired private AreaAgvService areaAgvService; // @PreAuthorize("hasAuthority('manager:agv:list')") // @PostMapping("/agv/page") @@ -149,6 +151,9 @@ @OperationLog("Delete Agv") @PostMapping("/agv/remove/{ids}") public R remove(@PathVariable Long[] ids) { for (Long agvId : ids) { areaAgvService.removeByAgvId(agvId); } if (!agvService.removeByIds(Arrays.asList(ids))) { return R.error("Delete Fail"); } zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/AreaAgvService.java
@@ -3,6 +3,14 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.zy.acs.manager.manager.entity.AreaAgv; import java.util.List; public interface AreaAgvService extends IService<AreaAgv> { List<Long> queryAgvIdsByAreaIds(List<Long> areaIds); void removeByAgvId(Long agvId); void removeByAreaId(Long areaId); } zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/AreaAgvServiceImpl.java
@@ -1,12 +1,37 @@ package com.zy.acs.manager.manager.service.impl; import com.zy.acs.manager.manager.mapper.AreaAgvMapper; import com.zy.acs.manager.manager.entity.AreaAgv; import com.zy.acs.manager.manager.service.AreaAgvService; 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.AreaAgv; import com.zy.acs.manager.manager.mapper.AreaAgvMapper; import com.zy.acs.manager.manager.service.AreaAgvService; import org.springframework.stereotype.Service; import java.util.Collections; import java.util.List; import java.util.stream.Collectors; @Service("areaAgvService") public class AreaAgvServiceImpl extends ServiceImpl<AreaAgvMapper, AreaAgv> implements AreaAgvService { @Override public List<Long> queryAgvIdsByAreaIds(List<Long> areaIds) { if (Cools.isEmpty(areaIds)) { return Collections.emptyList(); } return this.list(new LambdaQueryWrapper<AreaAgv>().in(AreaAgv::getAreaId, areaIds).select(AreaAgv::getAgvId)) .stream().map(AreaAgv::getAgvId).collect(Collectors.toList()); } @Override public void removeByAgvId(Long agvId) { this.remove(new LambdaQueryWrapper<AreaAgv>().eq(AreaAgv::getAgvId, agvId)); } @Override public void removeByAreaId(Long areaId) { this.remove(new LambdaQueryWrapper<AreaAgv>().eq(AreaAgv::getAreaId, areaId)); } } zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/AreaServiceImpl.java
@@ -131,7 +131,7 @@ @Override public void removeMapArea(Long areaId, Long loginUserId) { // area - agv areaAgvService.remove(new LambdaQueryWrapper<AreaAgv>().eq(AreaAgv::getAreaId, areaId)); areaAgvService.removeByAreaId(areaId); // cache areaGovernService.removeArea(areaId); // db zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/FuncStaServiceImpl.java
@@ -5,7 +5,7 @@ import com.zy.acs.common.enums.AgvStatusType; import com.zy.acs.framework.common.Cools; import com.zy.acs.manager.common.utils.CommonUtil; import com.zy.acs.manager.core.constant.AgvAreaDispatcher; import com.zy.acs.manager.core.service.AgvAreaDispatcher; import com.zy.acs.manager.manager.entity.*; import com.zy.acs.manager.manager.enums.*; import com.zy.acs.manager.manager.mapper.FuncStaMapper;