From 39b34faa75d8fcc065e73b48e225d9ebdd88787a Mon Sep 17 00:00:00 2001 From: cbs <18617195505@163.com> Date: Mon, 20 Jan 2025 15:13:49 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=9C=BA=E5=99=A8=E4=BA=BA?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../robot/RobotInformationController.java | 8 +++++ .../admin/robot/RobotTaskController.java | 2 +- .../WareHouseLocationMapper.java | 3 +- .../mysql/robot/RobotInformationMapper.java | 8 +++++ .../dal/mysql/robot/RobotTaskMapper.java | 2 +- .../robot/RobotInformationService.java | 7 ++++ .../robot/RobotInformationServiceImpl.java | 6 ++++ .../service/robot/RobotTaskServiceImpl.java | 33 +++++++++++++++++-- .../robot/job/DistributeTasksServiceImpl.java | 4 +++ .../houselocation/WareHouseLocationMapper.xml | 2 +- .../mapper/robot/RobotInformationMapper.xml | 13 ++++++++ 11 files changed, 82 insertions(+), 6 deletions(-) diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/RobotInformationController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/RobotInformationController.java index 1d1ff9ef8..87c7d5f23 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/RobotInformationController.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/RobotInformationController.java @@ -109,4 +109,12 @@ public class RobotInformationController { return success(BeanUtils.toBean(result, RobotInformationRespVO.class)); } + @PostMapping("/getAllRobot") + @Operation(summary = "查询所有车辆") + @PreAuthorize("@ss.hasPermission('robot:information:getAllRobot')") + public CommonResult> getAllRobot() { + List result = informationService.getAllRobot(); + return success(BeanUtils.toBean(result, RobotInformationRespVO.class)); + } + } \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/RobotTaskController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/RobotTaskController.java index 24cfdf8be..b49bce36a 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/RobotTaskController.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/RobotTaskController.java @@ -87,7 +87,7 @@ public class RobotTaskController { @PreAuthorize("@ss.hasPermission('robot:task:query')") public CommonResult> getTaskPage(@Valid @RequestBody RobotTaskPageReqVO pageReqVO) { PageResult pageResult = taskService.getTaskPage(pageReqVO); - return success(BeanUtils.toBean(pageResult, RobotTaskRespVO.class)); + return success(pageResult); } @GetMapping("/export-excel") diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/houselocation/WareHouseLocationMapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/houselocation/WareHouseLocationMapper.java index 72f19024a..06f5822dc 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/houselocation/WareHouseLocationMapper.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/houselocation/WareHouseLocationMapper.java @@ -93,7 +93,8 @@ public interface WareHouseLocationMapper extends BaseMapperX mapIds); void updateLocationLockList( @Param("locationIds") List locationIds, - @Param("taskId") Long taskId); + @Param("taskId") Long taskId, + @Param("locationLock") Integer locationLock); /** * 根据类型查库位/线库/区域 diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/robot/RobotInformationMapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/robot/RobotInformationMapper.java index 137aae922..39287d700 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/robot/RobotInformationMapper.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/robot/RobotInformationMapper.java @@ -64,4 +64,12 @@ public interface RobotInformationMapper extends BaseMapperX * @return */ List selectByRobotNos(@Param("robotNos") Set robotNos); + + /** + * 更新任务模式(0:拒收任务、1:正常) + * @param robotNos + * @param robotTaskModel + */ + void updateRobotTaskModel(@Param("robotNos") Set robotNos, + @Param("robotTaskModel") Integer robotTaskModel); } \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/robot/RobotTaskMapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/robot/RobotTaskMapper.java index 75cc187ce..c53998cf6 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/robot/RobotTaskMapper.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/robot/RobotTaskMapper.java @@ -32,7 +32,7 @@ public interface RobotTaskMapper extends BaseMapperX { .eqIfPresent(RobotTaskDO::getDoMoveAll, reqVO.getDoMoveAll()) .eqIfPresent(RobotTaskDO::getCycleNumber, reqVO.getCycleNumber()) .eqIfPresent(RobotTaskDO::getRemainingCycleNumber, reqVO.getRemainingCycleNumber()) - .eqIfPresent(RobotTaskDO::getTaskNo, reqVO.getTaskNo()) + .likeIfPresent(RobotTaskDO::getTaskNo, reqVO.getTaskNo()) .eqIfPresent(RobotTaskDO::getTaskStatus, reqVO.getTaskStatus()) .eqIfPresent(RobotTaskDO::getTaskStage, reqVO.getTaskStage()) .betweenIfPresent(RobotTaskDO::getStartTime, reqVO.getStartTime()) diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/RobotInformationService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/RobotInformationService.java index b734d4281..eb04f4044 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/RobotInformationService.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/RobotInformationService.java @@ -66,4 +66,11 @@ public interface RobotInformationService { * @return */ List getCanUseRobot(); + + /** + * 查询所有车辆 + * @return + */ + List getAllRobot(); + } \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/RobotInformationServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/RobotInformationServiceImpl.java index 0f9c464fa..e4d05ad32 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/RobotInformationServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/RobotInformationServiceImpl.java @@ -173,4 +173,10 @@ public class RobotInformationServiceImpl implements RobotInformationService { return informationMapper.queryAllByLimit(query); } + @Override + public List getAllRobot() { + RobotInformationDO query = new RobotInformationDO(); + return informationMapper.queryAllByLimit(query); + } + } \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/RobotTaskServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/RobotTaskServiceImpl.java index 2d636b9dc..a751acb25 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/RobotTaskServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/RobotTaskServiceImpl.java @@ -166,6 +166,8 @@ public class RobotTaskServiceImpl implements RobotTaskService { RobotTaskDO task = BeanUtils.toBean(createReqVO, RobotTaskDO.class); taskMapper.insert(task); + // todo 更新数据库顺序 后续改为xxl-job一致 + //查找库位 if (MoveAllEnum.NO.getType().equals(createReqVO.getDoMoveAll())) { setSingleLocationIdNo(createReqVO.getTaskDetailList(),task); @@ -269,12 +271,12 @@ public class RobotTaskServiceImpl implements RobotTaskService { //跟新库位状态为锁定 List> toPartition = Lists.partition(toLocationIds, 100); toPartition.forEach(list-> { - locationMapper.updateLocationLockList(list,taskId); + locationMapper.updateLocationLockList(list,taskId,LocationLockEnum.NO.getType()); }); List> fromPartition = Lists.partition(fromLocationIds, 100); fromPartition.forEach(list-> { - locationMapper.updateLocationLockList(list,taskId); + locationMapper.updateLocationLockList(list,taskId,LocationLockEnum.NO.getType()); }); } @@ -574,7 +576,11 @@ public class RobotTaskServiceImpl implements RobotTaskService { && !robotTaskDO.getTaskStatus().equals(updateReqVO.getTaskStatus())) { throw exception(TASK_CHECK_TASK_STATUS); } + + List locationIds = new ArrayList<>(); + Set robotNos = new HashSet<>(); if (ObjectUtil.isNotEmpty(updateReqVO.getTaskStatus()) + && RobotTaskStatusEnum.CLOSE.getType().equals(updateReqVO.getTaskStatus()) && !robotTaskDO.getTaskStatus().equals(updateReqVO.getTaskStatus())) { for (RobotTaskDetailDO taskDetailDO : taskDetailDOS) { if (RobotTaskDetailStatusEnum.DONE.getType().equals(taskDetailDO.getTaskStatus())) { @@ -582,6 +588,18 @@ public class RobotTaskServiceImpl implements RobotTaskService { } //后期需做状态映射 taskDetailDO.setTaskStatus(updateReqVO.getTaskStatus()); + + // todo 关闭需要下发任务给车机 。 还需要考虑下处理中的任务怎么处理 + + if (ObjectUtil.isNotEmpty(taskDetailDO.getFromLocationId())) { + locationIds.add(taskDetailDO.getFromLocationId()); + } + if (ObjectUtil.isNotEmpty(taskDetailDO.getToLocationId())) { + locationIds.add(taskDetailDO.getToLocationId()); + } + if (ObjectUtil.isNotEmpty(taskDetailDO.getRobotNo())) { + robotNos.add(taskDetailDO.getRobotNo()); + } } } @@ -589,6 +607,17 @@ public class RobotTaskServiceImpl implements RobotTaskService { taskMapper.updateById(updateObj); taskDetailMapper.updateBatch(taskDetailDOS); + + if (ObjectUtil.isNotEmpty(locationIds)) { + locationMapper.updateLocationLockList(locationIds,robotTaskDO.getId() + ,LocationLockEnum.YES.getType()); + } + + // todo 执行中的需要锁车。 需要添加执行中的判断 + if (ObjectUtil.isNotEmpty(robotNos)) { +// informationMapper.updateRobotTaskModel(robotNos,RobotTaskModelEnum.REJECTION.getType()); + } + } catch (Exception e) { log.error("更新任务失败 :{}",e.getMessage()); msg = e.getMessage(); diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/job/DistributeTasksServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/job/DistributeTasksServiceImpl.java index 2efecb2ca..6343b7f32 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/job/DistributeTasksServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/job/DistributeTasksServiceImpl.java @@ -101,6 +101,10 @@ public class DistributeTasksServiceImpl implements DistributeTasksService { //如果系统暂停 则不下发任务 + //todo 更新数据库顺序 后续改为和创建订单一致 + + // todo 更新数据库 改为批量修改 + //任务下发给机器人 distributeTasks(robots,taskDetailDOS); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/houselocation/WareHouseLocationMapper.xml b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/houselocation/WareHouseLocationMapper.xml index 2e93381db..9329642d4 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/houselocation/WareHouseLocationMapper.xml +++ b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/houselocation/WareHouseLocationMapper.xml @@ -500,7 +500,7 @@ update ware_house_location set - location_lock = '0', + location_lock = #{locationLock}, task_id = #{taskId} where id in diff --git a/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/robot/RobotInformationMapper.xml b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/robot/RobotInformationMapper.xml index 7aaa1c32a..0511b51eb 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/robot/RobotInformationMapper.xml +++ b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/robot/RobotInformationMapper.xml @@ -251,6 +251,19 @@ robot_no = #{robotNo} + + update + robot_information + set + robot_task_model = #{robotTaskModel} + where + robot_no in + + #{robotNo} + + + delete