diff --git a/blade-common/src/main/java/org/springblade/common/constant/LauncherConstant.java b/blade-common/src/main/java/org/springblade/common/constant/LauncherConstant.java index 73debd58..6dfc16cd 100644 --- a/blade-common/src/main/java/org/springblade/common/constant/LauncherConstant.java +++ b/blade-common/src/main/java/org/springblade/common/constant/LauncherConstant.java @@ -12,9 +12,9 @@ public interface LauncherConstant { /** * nacos 命名空间 */ -// String NACOS_NAMESPACE = "feaf627f-a847-463b-8b73-24a0538f526e"; + String NACOS_NAMESPACE = "feaf627f-a847-463b-8b73-24a0538f526e"; // 生产环境 - String NACOS_NAMESPACE = "db3f4da1-ae19-4104-8c17-6d9b8f069401"; +// String NACOS_NAMESPACE = "db3f4da1-ae19-4104-8c17-6d9b8f069401"; // 测试环境 // String NACOS_NAMESPACE = "6cdd0310-0d61-4f54-891a-7fb06224d9b8"; diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/mapper/LocationMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/mapper/LocationMapper.java index 9ed2adb4..34abb32b 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/mapper/LocationMapper.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/mapper/LocationMapper.java @@ -13,4 +13,6 @@ public interface LocationMapper extends BaseMapper { List selectByLocationStatus(@Param("statusFree") Integer statusFree); List selectByStatus(@Param("status") Integer status); + + Location selectByLocationCode(@Param("locationCode") String locationCode, @Param("status")int status); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/mapper/LocationMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/mapper/LocationMapper.xml index 43f0926d..9ce902e7 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/mapper/LocationMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/mapper/LocationMapper.xml @@ -13,4 +13,8 @@ select id, location_name, location_code, location_status, status, create_user, create_time, create_dept, update_user, update_time, is_deleted, remark from LM_LOCATION where IS_DELETED = 0 and status = #{status} and LOCATION_STATUS = 0; + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/ILocationService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/ILocationService.java index 9d288c81..174c0cdf 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/ILocationService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/ILocationService.java @@ -52,4 +52,12 @@ public interface ILocationService extends BaseService { * @return */ List selectByStatus(Integer status); + + /** + * 根据库位编码 和 层数 查询 + * @param locationCode 库位编码 + * @param status 层数 + * @return + */ + Location selectByLocationCode(String locationCode, int status); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/ITaskExecuteRecordService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/ITaskExecuteRecordService.java index ab980b02..b4fdc6c1 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/ITaskExecuteRecordService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/ITaskExecuteRecordService.java @@ -75,7 +75,7 @@ public interface ITaskExecuteRecordService extends BaseService selectByStatus(Integer status) { return locationMapper.selectByStatus(status); } + + @Override + public Location selectByLocationCode(String locationCode, int status) { + return locationMapper.selectByLocationCode(locationCode,status); + } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/StorageMonitoringServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/StorageMonitoringServiceImpl.java index ba0da8a6..5d446f39 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/StorageMonitoringServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/StorageMonitoringServiceImpl.java @@ -1,16 +1,16 @@ package org.springblade.desk.logistics.service.impl; +import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.extern.slf4j.Slf4j; +import org.springblade.desk.logistics.constant.AgvConstant; import org.springblade.desk.logistics.pojo.entity.Location; import org.springblade.desk.logistics.pojo.entity.Station; import org.springblade.desk.logistics.pojo.entity.Task; -import org.springblade.desk.logistics.service.ILocationService; -import org.springblade.desk.logistics.service.IStationService; -import org.springblade.desk.logistics.service.IStorageMonitoringService; -import org.springblade.desk.logistics.service.ITaskService; -import org.springframework.scheduling.annotation.Scheduled; +import org.springblade.desk.logistics.pojo.vo.AgvSchedulingTaskVO; +import org.springblade.desk.logistics.service.*; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; import java.util.List; @@ -51,6 +51,8 @@ public class StorageMonitoringServiceImpl implements IStorageMonitoringService { */ private final ILocationService locationService; + private final ITaskExecuteRecordService taskExecuteRecordService; + /** * 构造器注入依赖(Spring官方推荐方式) *

@@ -58,15 +60,16 @@ public class StorageMonitoringServiceImpl implements IStorageMonitoringService { * 1. 强制依赖注入,避免NPE(空指针异常) * 2. 便于单元测试时模拟依赖 * 3. 符合依赖倒置原则,降低耦合 - * - * @param taskService 任务服务Bean(Spring自动注入) + * @param taskService 任务服务Bean(Spring自动注入) * @param stationService 站点服务Bean(Spring自动注入) * @param locationService 库位服务Bean(Spring自动注入) + * @param taskExecuteRecordService */ - public StorageMonitoringServiceImpl(ITaskService taskService, IStationService stationService, ILocationService locationService) { + public StorageMonitoringServiceImpl(ITaskService taskService, IStationService stationService, ILocationService locationService, ITaskExecuteRecordService taskExecuteRecordService) { this.taskService = taskService; this.stationService = stationService; this.locationService = locationService; + this.taskExecuteRecordService = taskExecuteRecordService; } /** @@ -167,8 +170,25 @@ public class StorageMonitoringServiceImpl implements IStorageMonitoringService { // ========== 步骤2.5:触发AGV小车移动指令(待实现) ========== log.info("【仓储监控】站点ID:{} - 准备调用AGV接口,任务ID:{},库位ID:{}", station.getId(), firstTask.getId(), locationId); - // todo: 调用AGV接口传递任务ID和站点ID,触发小车移动 - // agvService.dispatchAgv(firstTask.getId(), station.getId()); + + // 调用AGV接口传递任务ID和站点ID,触发小车移动 + // 查询空闲梳齿架子 + List locationList = locationService.selectByStatus(1); + if(CollectionUtils.isEmpty(locationList)){ + log.error("库位暂时没有空闲梳齿架子"); + return; + } + String locationCode = locationList.get(0).getLocationCode(); + + //调用ctu + AgvSchedulingTaskVO ctuSchedulingTask = taskExecuteRecordService.genCtuSchedulingTask("CTu2", "1", firstTask.getBoxBarcode(), location.getLocationCode(), + locationCode, AgvConstant.EQUIPMENT_TYPE_CTU); + + //调用成功 添加任务 + if(null != ctuSchedulingTask){ + // 添加任务 + boolean record = taskExecuteRecordService.inboundRecord(ctuSchedulingTask, firstTask); + } processedCount++; // 成功处理计数+1 diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/TaskExecuteRecordServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/TaskExecuteRecordServiceImpl.java index 6ddeb793..d2f224da 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/TaskExecuteRecordServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/TaskExecuteRecordServiceImpl.java @@ -14,12 +14,12 @@ import org.springblade.desk.logistics.constant.AgvConstant; import org.springblade.desk.logistics.mapper.TaskExecuteRecordMapper; import org.springblade.desk.logistics.pojo.dto.AGVCallBackDto; import org.springblade.desk.logistics.pojo.entity.Location; +import org.springblade.desk.logistics.pojo.entity.Station; import org.springblade.desk.logistics.pojo.entity.Task; import org.springblade.desk.logistics.pojo.entity.TaskExecuteRecord; import org.springblade.desk.logistics.pojo.vo.AgvSchedulingTaskVO; -import org.springblade.desk.logistics.service.ILocationService; -import org.springblade.desk.logistics.service.ITaskExecuteRecordService; -import org.springblade.desk.logistics.service.ITaskService; +import org.springblade.desk.logistics.service.*; +import org.springblade.desk.logistics.utils.AgvTaskTypeUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; @@ -28,6 +28,9 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import static org.springblade.desk.logistics.constant.AgvConstant.EQUIPMENT_TYPE_AGV; +import static org.springblade.desk.logistics.pojo.entity.Station.DROPOFF_CONVEYOR_LINE; + /** * 物流AGV小车任务执行记录服务实现类 *

@@ -52,6 +55,18 @@ public class TaskExecuteRecordServiceImpl extends BaseServiceImpl @@ -125,7 +140,10 @@ public class TaskExecuteRecordServiceImpl extends BaseServiceImpl