diff --git a/202504-Wms-MengYang-box/db/wms_mengyang_box.sql b/202504-Wms-MengYang-box/db/wms_mengyang_box.sql index 1b8bb4c..a2e8cb4 100644 --- a/202504-Wms-MengYang-box/db/wms_mengyang_box.sql +++ b/202504-Wms-MengYang-box/db/wms_mengyang_box.sql @@ -11,12 +11,42 @@ Target Server Version : 80042 (8.0.42) File Encoding : 65001 - Date: 21/07/2025 17:09:56 + Date: 12/08/2025 19:51:22 */ SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; +-- ---------------------------- +-- Table structure for t_app_agv_lock +-- ---------------------------- +DROP TABLE IF EXISTS `t_app_agv_lock`; +CREATE TABLE `t_app_agv_lock` ( + `lock_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '锁定ID(主键)', + `agv_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'AGV设备ID', + `feed_station` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '上料站点(入库口编号)', + `lock_status` tinyint(1) NOT NULL DEFAULT 1 COMMENT '锁定状态: 1-锁定中, 0-已释放', + `lock_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '锁定类型: INBOUND_PORT_LOCK-入库口锁定', + `priority` int NULL DEFAULT 1 COMMENT '优先级: 数字越小优先级越高', + `queue_position` int NULL DEFAULT 1 COMMENT '队列位置', + `lock_time` datetime NOT NULL COMMENT '锁定时间', + `unlock_time` datetime NULL DEFAULT NULL COMMENT '释放时间', + `timeout_seconds` int NULL DEFAULT 600 COMMENT '超时时间(秒)', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`lock_id`) USING BTREE, + INDEX `idx_feed_station_status`(`feed_station` ASC, `lock_status` ASC) USING BTREE, + INDEX `idx_agv_id`(`agv_id` ASC) USING BTREE, + INDEX `idx_lock_time`(`lock_time` ASC) USING BTREE, + INDEX `idx_create_time`(`create_time` ASC) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = 'AGV入库口互锁表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of t_app_agv_lock +-- ---------------------------- +INSERT INTO `t_app_agv_lock` VALUES ('1754998691995010000', 'AGV', 'CR', 0, 'INBOUND_PORT_LOCK', 1, 1, '2025-08-12 19:49:47', '2025-08-12 19:50:41', 600, '入库任务完成,批量释放锁定', '2025-08-12 19:38:12', '2025-08-12 19:50:41'); + -- ---------------------------- -- Table structure for t_app_config -- ---------------------------- @@ -36,6 +66,9 @@ CREATE TABLE `t_app_config` ( INSERT INTO `t_app_config` VALUES ('1', 'WcsPickTaskUrl', 'http://10.90.83.39:9980/api/wms/convey/conveyTask', 1, '发送拣选任务地址'); INSERT INTO `t_app_config` VALUES ('10', 'NormalDataClearInterval', '180', 1, '普通数据清理时间(入库记录、出库记录、拣选任务记录)'); INSERT INTO `t_app_config` VALUES ('11', 'ImportantDataClearInterval', '365', 1, '重要数据清理时间(库存更新记录、工作记录、盘点记录、出库请求记录、DBS计划)'); +INSERT INTO `t_app_config` VALUES ('12', 'wcsCanFeedUrl', 'http://10.90.83.39:9980/api/wms/wcsCanFeedUrl', 1, '查询wcs是否可上料'); +INSERT INTO `t_app_config` VALUES ('13', 'WmsOrderInCallback', 'http://test/palletstacker/orderin/feedback', 1, 'WMS接受的入库执行后回调地址'); +INSERT INTO `t_app_config` VALUES ('14', 'WmsOrderOutCallback', 'http://test/palletstacker/orderout/feedback', 1, 'WMS接受的出库执行后回调地址'); INSERT INTO `t_app_config` VALUES ('2', 'WcsStackerTaskUrl', 'http://10.90.83.39:9980/api/wms/wmsTask/setStackerTask', 1, '发送堆垛机任务地址'); INSERT INTO `t_app_config` VALUES ('3', 'WcsReleaseBoxUrl', 'http://10.90.83.39:9980/api/wms/convey/disposeVehicle', 1, '发送释放站台箱子地址'); INSERT INTO `t_app_config` VALUES ('4', 'WcsCancelPickTaskUrl', 'http://10.90.83.39:9980/api/wms/convey/cancel', 1, '发送取消拣选任务地址'); @@ -2202,8 +2235,8 @@ CREATE TABLE `t_app_location` ( INSERT INTO `t_app_location` VALUES ('A01-01-01-01', '', 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, '', 1, ''); INSERT INTO `t_app_location` VALUES ('A01-01-01-02', '', 1, 0, 0, 0, 1, 1, 1, 1, 1, 2, '', 1, ''); INSERT INTO `t_app_location` VALUES ('A01-01-02-01', '', 1, 0, 0, 0, 1, 1, 1, 1, 2, 1, '', 1, ''); -INSERT INTO `t_app_location` VALUES ('A01-01-02-02', '', 1, 0, 0, 0, 1, 1, 1, 1, 2, 2, '', 1, ''); -INSERT INTO `t_app_location` VALUES ('A01-01-03-01', '', 1, 0, 0, 0, 1, 1, 1, 1, 3, 1, '', 1, ''); +INSERT INTO `t_app_location` VALUES ('A01-01-02-02', '', 1, 0, 1, 0, 1, 1, 1, 1, 2, 2, '1004', 1, ''); +INSERT INTO `t_app_location` VALUES ('A01-01-03-01', '', 1, 0, 1, 0, 1, 1, 1, 1, 3, 1, '1001', 1, ''); INSERT INTO `t_app_location` VALUES ('A01-01-03-02', '', 1, 0, 0, 0, 1, 1, 1, 1, 3, 2, '', 1, ''); INSERT INTO `t_app_location` VALUES ('A01-01-04-01', '', 1, 0, 0, 0, 1, 1, 1, 1, 4, 1, '', 1, ''); INSERT INTO `t_app_location` VALUES ('A01-01-04-02', '', 1, 0, 0, 0, 1, 1, 1, 1, 4, 2, '', 1, ''); @@ -2250,7 +2283,7 @@ INSERT INTO `t_app_location` VALUES ('A01-01-24-02', '', 1, 0, 0, 0, 1, 1, 1, 1, INSERT INTO `t_app_location` VALUES ('A01-01-25-01', '', 1, 0, 0, 0, 1, 1, 1, 1, 25, 1, '', 1, ''); INSERT INTO `t_app_location` VALUES ('A01-01-25-02', '', 1, 0, 0, 0, 1, 1, 1, 1, 25, 2, '', 1, ''); INSERT INTO `t_app_location` VALUES ('A01-02-01-01', '', 1, 0, 0, 0, 1, 1, 1, 2, 1, 1, '', 1, ''); -INSERT INTO `t_app_location` VALUES ('A01-02-01-02', '', 1, 0, 0, 0, 1, 1, 1, 2, 1, 2, '', 1, ''); +INSERT INTO `t_app_location` VALUES ('A01-02-01-02', '', 1, 0, 1, 0, 1, 1, 1, 2, 1, 2, '1005', 1, ''); INSERT INTO `t_app_location` VALUES ('A01-02-02-01', '', 1, 0, 0, 0, 1, 1, 1, 2, 2, 1, '', 1, ''); INSERT INTO `t_app_location` VALUES ('A01-02-02-02', '', 1, 0, 0, 0, 1, 1, 1, 2, 2, 2, '', 1, ''); INSERT INTO `t_app_location` VALUES ('A01-02-03-01', '', 1, 0, 0, 0, 1, 1, 1, 2, 3, 1, '', 1, ''); @@ -3199,10 +3232,10 @@ INSERT INTO `t_app_location` VALUES ('A01-20-24-01', '', 1, 0, 0, 0, 1, 1, 1, 20 INSERT INTO `t_app_location` VALUES ('A01-20-24-02', '', 1, 0, 0, 0, 1, 1, 1, 20, 24, 2, '', 1, ''); INSERT INTO `t_app_location` VALUES ('A01-20-25-01', '', 1, 0, 0, 0, 1, 1, 1, 20, 25, 1, '', 1, ''); INSERT INTO `t_app_location` VALUES ('A01-20-25-02', '', 1, 0, 0, 0, 1, 1, 1, 20, 25, 2, '', 1, ''); -INSERT INTO `t_app_location` VALUES ('A02-01-01-01', '', 1, 0, 0, 0, 1, 1, 2, 1, 1, 1, '', 1, ''); +INSERT INTO `t_app_location` VALUES ('A02-01-01-01', '', 1, 0, 1, 0, 1, 1, 2, 1, 1, 1, '1007', 1, ''); INSERT INTO `t_app_location` VALUES ('A02-01-01-02', '', 1, 0, 0, 0, 1, 1, 2, 1, 1, 2, '', 1, ''); INSERT INTO `t_app_location` VALUES ('A02-01-02-01', '', 1, 0, 0, 0, 1, 1, 2, 1, 2, 1, '', 1, ''); -INSERT INTO `t_app_location` VALUES ('A02-01-02-02', '', 1, 0, 0, 0, 1, 1, 2, 1, 2, 2, '', 1, ''); +INSERT INTO `t_app_location` VALUES ('A02-01-02-02', '', 1, 0, 1, 0, 1, 1, 2, 1, 2, 2, '1003', 1, ''); INSERT INTO `t_app_location` VALUES ('A02-01-03-01', '', 1, 0, 0, 0, 1, 1, 2, 1, 3, 1, '', 1, ''); INSERT INTO `t_app_location` VALUES ('A02-01-03-02', '', 1, 0, 0, 0, 1, 1, 2, 1, 3, 2, '', 1, ''); INSERT INTO `t_app_location` VALUES ('A02-01-04-01', '', 1, 0, 0, 0, 1, 1, 2, 1, 4, 1, '', 1, ''); @@ -3299,7 +3332,7 @@ INSERT INTO `t_app_location` VALUES ('A02-02-24-01', '', 1, 0, 0, 0, 1, 1, 2, 2, INSERT INTO `t_app_location` VALUES ('A02-02-24-02', '', 1, 0, 0, 0, 1, 1, 2, 2, 24, 2, '', 1, ''); INSERT INTO `t_app_location` VALUES ('A02-02-25-01', '', 1, 0, 0, 0, 1, 1, 2, 2, 25, 1, '', 1, ''); INSERT INTO `t_app_location` VALUES ('A02-02-25-02', '', 1, 0, 0, 0, 1, 1, 2, 2, 25, 2, '', 1, ''); -INSERT INTO `t_app_location` VALUES ('A02-03-01-01', '', 1, 0, 0, 0, 1, 1, 2, 3, 1, 1, '', 1, ''); +INSERT INTO `t_app_location` VALUES ('A02-03-01-01', '', 1, 0, 1, 0, 1, 1, 2, 3, 1, 1, '1008', 1, ''); INSERT INTO `t_app_location` VALUES ('A02-03-01-02', '', 1, 0, 0, 0, 1, 1, 2, 3, 1, 2, '', 1, ''); INSERT INTO `t_app_location` VALUES ('A02-03-02-01', '', 1, 0, 0, 0, 1, 1, 2, 3, 2, 1, '', 1, ''); INSERT INTO `t_app_location` VALUES ('A02-03-02-02', '', 1, 0, 0, 0, 1, 1, 2, 3, 2, 2, '', 1, ''); @@ -4218,7 +4251,7 @@ CREATE TABLE `t_app_order_in` ( `complete_time` datetime NULL DEFAULT NULL COMMENT '完成时间', `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注', PRIMARY KEY (`record_id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '入库订单表' ROW_FORMAT = Dynamic; +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '入库订单表' ROW_FORMAT = DYNAMIC; -- ---------------------------- -- Records of t_app_order_in @@ -4231,7 +4264,7 @@ DROP TABLE IF EXISTS `t_app_order_out`; CREATE TABLE `t_app_order_out` ( `record_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '主键ID', `order_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '出库任务ID', - `in_task_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '关联的入库任务ID', + `vehicle_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, `order_status` int NULL DEFAULT 0 COMMENT '出库状态(0-待出库 1-出库中 2-已完成)', `depth_strategy` int NULL DEFAULT NULL, `depth_strategy_detail` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, @@ -4240,9 +4273,8 @@ CREATE TABLE `t_app_order_out` ( `complete_time` datetime NULL DEFAULT NULL COMMENT '完成时间', `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注', PRIMARY KEY (`record_id`) USING BTREE, - INDEX `idx_task_id`(`order_id` ASC) USING BTREE, - INDEX `idx_in_task_id`(`in_task_id` ASC) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '出库订单表' ROW_FORMAT = Dynamic; + INDEX `idx_task_id`(`order_id` ASC) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '出库订单表' ROW_FORMAT = DYNAMIC; -- ---------------------------- -- Records of t_app_order_out @@ -15662,9 +15694,15 @@ CREATE TABLE `t_app_stock` ( -- ---------------------------- -- Records of t_app_stock -- ---------------------------- -INSERT INTO `t_app_stock` VALUES ('1752563208728010000', '1001', '', 2, 'testTaskId1', '2025-07-15 15:06:49', 'wms', NULL, ''); +INSERT INTO `t_app_stock` VALUES ('1752563208728010000', '1001', 'A01-01-03-01', 0, 'testTaskId1', '2025-07-15 15:06:49', 'wms', NULL, ''); INSERT INTO `t_app_stock` VALUES ('1752564042871010000', '1002', '', 2, 'testTaskId2', '2025-07-15 15:20:43', 'wms', NULL, ''); -INSERT INTO `t_app_stock` VALUES ('1752564113411010000', '1003', '', 2, 'testTaskId3', '2025-07-15 15:21:53', 'wms', NULL, ''); +INSERT INTO `t_app_stock` VALUES ('1752564113411010000', '1003', 'A02-01-02-02', 0, 'testTaskId3', '2025-07-15 15:21:53', 'wms', NULL, ''); +INSERT INTO `t_app_stock` VALUES ('1753068264063010000', '1004', 'A01-01-02-02', 0, 'testOrderId4', '2025-07-21 11:24:24', 'wms', NULL, ''); +INSERT INTO `t_app_stock` VALUES ('1753068333061010000', '1005', 'A01-02-01-02', 0, 'testOrderId5', '2025-07-21 11:25:33', 'wms', NULL, ''); +INSERT INTO `t_app_stock` VALUES ('1753078978369010000', '1007', 'A02-01-01-01', 0, 'testOrderId7', '2025-07-21 14:22:58', 'wms', NULL, ''); +INSERT INTO `t_app_stock` VALUES ('1753403808305010000', '1006', '', 2, 'testOrderId6', '2025-07-25 08:36:48', 'wms', NULL, ''); +INSERT INTO `t_app_stock` VALUES ('1753505174463010000', '1008', 'A02-03-01-01', 0, 'testOrderId8', '2025-07-26 12:46:14', 'wms', NULL, ''); +INSERT INTO `t_app_stock` VALUES ('1753505243747010000', '1009', '', 2, 'testOrderId9', '2025-07-26 12:47:24', 'wms', NULL, ''); -- ---------------------------- -- Table structure for t_app_stock_update @@ -17756,6 +17794,36 @@ INSERT INTO `t_app_task_bak` VALUES ('1752565265318010000', 2, 4, 1, 'testOutTas INSERT INTO `t_app_task_bak` VALUES ('1752565265349010000', 9, 4, 2, 'testOutTaskId1', '1002', 'A01-01-01-01', 'A02-01-01-02', '1752565265349010000', '2025-07-15 15:41:05', '2025-07-15 15:41:20', NULL, '移走深度1阻挡货物'); INSERT INTO `t_app_task_bak` VALUES ('1752565265350010000', 2, 4, 1, 'testOutTaskId1', '1001', 'A01-01-01-02', 'C1', '1752565265350010000', '2025-07-15 15:41:05', '2025-07-15 15:41:44', NULL, '深度2出库'); INSERT INTO `t_app_task_bak` VALUES ('1752565351308010000', 2, 4, 1, 'testOutTaskId1', '1002', 'A02-01-01-02', 'C1', '1752565351308010000', '2025-07-15 15:42:31', '2025-07-15 15:42:43', NULL, '深度2出库'); +INSERT INTO `t_app_task_bak` VALUES ('1753066443339010000', 1, 4, 1, 'testOrderId1', '1001', 'R1', 'A01-01-01-02', '1753066443339010000', '2025-07-21 10:54:03', '2025-07-21 10:54:38', 'wcs', NULL); +INSERT INTO `t_app_task_bak` VALUES ('1753066720882010000', 1, 4, 1, 'testOrderId2', '1002', 'R1', 'A02-01-01-02', '1753066720882010000', '2025-07-21 10:58:41', '2025-07-21 10:58:59', 'wcs', NULL); +INSERT INTO `t_app_task_bak` VALUES ('1753067226584010000', 1, 4, 1, 'testOrderId3', '1003', 'R1', 'A01-01-01-01', '1753067226584010000', '2025-07-21 11:07:07', '2025-07-21 11:07:28', 'wcs', NULL); +INSERT INTO `t_app_task_bak` VALUES ('1753067346433010000', 9, 4, 2, 'testOrderId', '1003', 'A01-01-01-01', 'A02-01-01-01', '1753067346433010000', '2025-07-21 11:09:06', '2025-07-21 11:10:09', NULL, '移走深度1阻挡货物'); +INSERT INTO `t_app_task_bak` VALUES ('1753067346434010000', 2, 4, 1, 'testOrderId', '1001', 'A01-01-01-02', 'C1', '1753067346434010000', '2025-07-21 11:09:06', '2025-07-21 11:10:28', NULL, '深度2出库'); +INSERT INTO `t_app_task_bak` VALUES ('1753067659231010000', 1, 4, 1, 'testOrderId1', '1001', 'R1', 'A01-01-01-02', '1753067659231010000', '2025-07-21 11:14:19', '2025-07-21 11:17:03', 'wcs', NULL); +INSERT INTO `t_app_task_bak` VALUES ('1753068193854010000', 1, 4, 1, 'testOrderId4', '1004', 'R1', 'A01-01-02-02', '1753068193854010000', '2025-07-21 11:23:14', '2025-07-21 11:24:24', 'wcs', NULL); +INSERT INTO `t_app_task_bak` VALUES ('1753068293620010000', 1, 4, 1, 'testOrderId5', '1005', 'R1', 'A01-02-01-02', '1753068293620010000', '2025-07-21 11:24:54', '2025-07-21 11:25:32', 'wcs', NULL); +INSERT INTO `t_app_task_bak` VALUES ('1753068368094010000', 9, 4, 2, 'testOrderI2', '1003', 'A02-01-01-01', 'A02-01-02-02', '1753068368094010000', '2025-07-21 11:26:08', '2025-07-21 11:26:37', NULL, '移走深度1阻挡货物'); +INSERT INTO `t_app_task_bak` VALUES ('1753068368095010000', 2, 4, 1, 'testOrderI2', '1002', 'A02-01-01-02', 'C1', '1753068368095010000', '2025-07-21 11:26:08', '2025-07-21 11:26:51', NULL, '深度2出库'); +INSERT INTO `t_app_task_bak` VALUES ('1753078496789010000', 1, 4, 1, 'testOrderId2', '1002', 'R1', 'A02-01-01-02', '1753078496789010000', '2025-07-21 14:14:57', '2025-07-21 14:15:44', 'wcs', NULL); +INSERT INTO `t_app_task_bak` VALUES ('1753078910378010000', 2, 4, 1, 'testOrderI2', '1002', 'A02-01-01-02', 'C1', '1753078910378010000', '2025-07-21 14:21:50', '2025-07-21 14:22:32', NULL, '深度2出库'); +INSERT INTO `t_app_task_bak` VALUES ('1753078936593010000', 1, 4, 1, 'testOrderId7', '1007', 'R1', 'A02-01-01-01', '1753078936593010000', '2025-07-21 14:22:17', '2025-07-21 14:22:58', 'wcs', NULL); +INSERT INTO `t_app_task_bak` VALUES ('1753403424775010000', 1, 4, 1, 'testOrderId2', '1002', 'R1', 'A02-02-01-02', '1753403424775010000', '2025-07-25 08:30:25', '2025-07-25 08:30:44', 'wcs', NULL); +INSERT INTO `t_app_task_bak` VALUES ('1753403764587010000', 1, 4, 1, 'testOrderId6', '1006', 'R1', 'A01-01-02-01', '1753403764587010000', '2025-07-25 08:36:05', '2025-07-25 08:36:48', 'wcs', NULL); +INSERT INTO `t_app_task_bak` VALUES ('1753403954324010000', 9, 4, 2, 'testOrderId1', '1006', 'A01-01-02-01', 'A01-01-01-01', '1753403954324010000', '2025-07-25 08:39:14', '2025-07-25 08:40:32', NULL, '移走深度1阻挡货物'); +INSERT INTO `t_app_task_bak` VALUES ('1753403954324010001', 2, 4, 1, 'testOrderId1', '1004', 'A01-01-02-02', 'C1', '1753403954324010001', '2025-07-25 08:39:14', '2025-07-25 08:40:47', NULL, '深度2出库'); +INSERT INTO `t_app_task_bak` VALUES ('1753504869791010000', 1, 4, 1, 'testOrderId4', '1004', 'R1', 'A01-01-02-02', '1753504869791010000', '2025-07-26 12:41:10', '2025-07-26 12:41:52', 'wcs', NULL); +INSERT INTO `t_app_task_bak` VALUES ('1753505146606010000', 1, 4, 1, 'testOrderId8', '1008', 'R1', 'A01-02-01-01', '1753505146606010000', '2025-07-26 12:45:47', '2025-07-26 12:46:14', 'wcs', NULL); +INSERT INTO `t_app_task_bak` VALUES ('1753505227890010000', 1, 4, 1, 'testOrderId9', '1009', 'R1', 'A02-02-01-01', '1753505227890010000', '2025-07-26 12:47:08', '2025-07-26 12:47:23', 'wcs', NULL); +INSERT INTO `t_app_task_bak` VALUES ('1753505539367010000', 9, 4, 2, 'testOrderId1', '1006', 'A01-01-01-01', 'A02-01-03-02', '1753505539367010000', '2025-07-26 12:52:19', '2025-07-26 12:52:49', NULL, '移走深度1阻挡货物'); +INSERT INTO `t_app_task_bak` VALUES ('1753505539367010001', 2, 4, 1, 'testOrderId1', '1001', 'A01-01-01-02', 'C1', '1753505539367010001', '2025-07-26 12:52:19', '2025-07-26 12:53:19', NULL, '深度2出库'); +INSERT INTO `t_app_task_bak` VALUES ('1754998057462010000', 1, 4, 1, 'testOrderId9', '1001', 'R1', 'A01-01-03-01', '1754998057462010000', '2025-08-12 19:27:37', '2025-08-12 19:28:00', 'wcs', NULL); +INSERT INTO `t_app_task_bak` VALUES ('1754998118329010000', 9, 4, 2, 'testOrderId1', '1008', 'A01-02-01-01', 'A02-01-03-01', '1754998118329010000', '2025-08-12 19:28:38', '2025-08-12 19:29:10', NULL, '移走深度1阻挡货物'); +INSERT INTO `t_app_task_bak` VALUES ('1754998661134010000', 9, 4, 2, 'testOrderId1', '1008', 'A02-01-03-01', 'A02-03-01-01', '1754998661134010000', '2025-08-12 19:37:41', '2025-08-12 19:38:11', NULL, '移走深度1阻挡货物'); +INSERT INTO `t_app_task_bak` VALUES ('1754998661139010000', 2, 4, 1, 'testOrderId1', '1006', 'A02-01-03-02', 'CR', '1754998661139010000', '2025-08-12 19:37:41', '2025-08-12 19:38:46', NULL, '深度2出库'); +INSERT INTO `t_app_task_bak` VALUES ('1754998924999010000', 9, 4, 2, 'testOrderId1', '1009', 'A02-02-01-01', 'A01-01-01-02', '1754998924999010000', '2025-08-12 19:42:05', '2025-08-12 19:42:39', NULL, '移走深度1阻挡货物'); +INSERT INTO `t_app_task_bak` VALUES ('1754998925002010000', 2, 4, 1, 'testOrderId1', '1002', 'A02-02-01-02', 'CR', '1754998925002010000', '2025-08-12 19:42:05', '2025-08-12 19:43:17', NULL, '深度2出库'); +INSERT INTO `t_app_task_bak` VALUES ('1754999361384010000', 9, 4, 2, 'testOrderId1', '1004', 'A01-01-01-01', 'A01-01-02-02', '1754999361384010000', '2025-08-12 19:49:21', '2025-08-12 19:49:47', NULL, '移走深度1阻挡货物'); +INSERT INTO `t_app_task_bak` VALUES ('1754999361391010000', 2, 4, 1, 'testOrderId1', '1009', 'A01-01-01-02', 'CR', '1754999361391010000', '2025-08-12 19:49:21', '2025-08-12 19:50:40', NULL, '深度2出库'); INSERT INTO `t_app_task_bak` VALUES ('BACK_1742627181353010000', 1, 4, 1, NULL, 'ASRS-0348', 'P3', 'A02-35-08', '1742627207227010000', '2025-03-22 15:06:21', '2025-03-22 15:07:39', 'wms_auto', ''); INSERT INTO `t_app_task_bak` VALUES ('BACK_1742627210434010000', 1, 4, 1, NULL, 'ASRS-0347', 'P3', 'A04-32-07', '1742627236328010000', '2025-03-22 15:06:50', '2025-03-22 15:08:04', 'wms_auto', ''); INSERT INTO `t_app_task_bak` VALUES ('BACK_1742775892056010000', 1, 4, 1, NULL, 'ASRS-0315', 'P3', 'A01-34-06', '1742775918384010000', '2025-03-24 08:24:52', '2025-03-24 08:26:22', 'wms_auto', ''); @@ -18574,9 +18642,15 @@ CREATE TABLE `t_app_vehicle` ( -- ---------------------------- -- Records of t_app_vehicle -- ---------------------------- -INSERT INTO `t_app_vehicle` VALUES ('1001', 3, NULL, 0, '', '2025-07-15 15:14:57'); -INSERT INTO `t_app_vehicle` VALUES ('1002', 3, NULL, 0, '', '2025-07-15 15:20:43'); -INSERT INTO `t_app_vehicle` VALUES ('1003', 3, NULL, 0, '', '2025-07-15 15:21:53'); +INSERT INTO `t_app_vehicle` VALUES ('1001', 2, NULL, 0, 'A01-01-03-01', '2025-08-12 19:28:00'); +INSERT INTO `t_app_vehicle` VALUES ('1002', 3, NULL, 0, '', '2025-07-25 08:32:34'); +INSERT INTO `t_app_vehicle` VALUES ('1003', 2, NULL, 0, 'A02-01-02-02', '2025-07-21 11:07:28'); +INSERT INTO `t_app_vehicle` VALUES ('1004', 2, NULL, 0, 'A01-01-02-02', '2025-07-26 12:41:52'); +INSERT INTO `t_app_vehicle` VALUES ('1005', 2, NULL, 0, 'A01-02-01-02', '2025-07-21 11:25:33'); +INSERT INTO `t_app_vehicle` VALUES ('1006', 3, NULL, 0, '', '2025-07-25 08:36:48'); +INSERT INTO `t_app_vehicle` VALUES ('1007', 2, NULL, 0, 'A02-01-01-01', '2025-07-21 14:22:58'); +INSERT INTO `t_app_vehicle` VALUES ('1008', 2, NULL, 0, 'A02-03-01-01', '2025-07-26 12:46:14'); +INSERT INTO `t_app_vehicle` VALUES ('1009', 3, NULL, 0, '', '2025-07-26 12:47:24'); -- ---------------------------- -- Table structure for t_app_wcs_task @@ -20592,6 +20666,36 @@ INSERT INTO `t_app_wcs_task_bak` VALUES ('1752565265318010000', 1, 2, 1, '1003', INSERT INTO `t_app_wcs_task_bak` VALUES ('1752565265349010000', 1, 9, 2, '1002', 'A01-01-01-01', 'A02-01-01-02', '2025-07-15 15:41:06', '2025-07-15 15:41:12', NULL, NULL); INSERT INTO `t_app_wcs_task_bak` VALUES ('1752565265350010000', 1, 2, 1, '1001', 'A01-01-01-02', 'C1', '2025-07-15 15:41:06', '2025-07-15 15:41:39', NULL, NULL); INSERT INTO `t_app_wcs_task_bak` VALUES ('1752565351308010000', 1, 2, 1, '1002', 'A02-01-01-02', 'C1', '2025-07-15 15:42:32', '2025-07-15 15:42:38', NULL, NULL); +INSERT INTO `t_app_wcs_task_bak` VALUES ('1753066443339010000', 1, 1, 1, '1001', 'R1', 'A01-01-01-02', '2025-07-21 10:54:04', '2025-07-21 10:54:11', NULL, NULL); +INSERT INTO `t_app_wcs_task_bak` VALUES ('1753066720882010000', 1, 1, 1, '1002', 'R1', 'A02-01-01-02', '2025-07-21 10:58:41', '2025-07-21 10:58:48', NULL, NULL); +INSERT INTO `t_app_wcs_task_bak` VALUES ('1753067226584010000', 1, 1, 1, '1003', 'R1', 'A01-01-01-01', '2025-07-21 11:07:07', '2025-07-21 11:07:14', NULL, NULL); +INSERT INTO `t_app_wcs_task_bak` VALUES ('1753067346433010000', 1, 9, 2, '1003', 'A01-01-01-01', 'A02-01-01-01', '2025-07-21 11:09:07', '2025-07-21 11:09:13', NULL, NULL); +INSERT INTO `t_app_wcs_task_bak` VALUES ('1753067346434010000', 1, 2, 1, '1001', 'A01-01-01-02', 'C1', '2025-07-21 11:09:07', '2025-07-21 11:10:16', NULL, NULL); +INSERT INTO `t_app_wcs_task_bak` VALUES ('1753067659231010000', 1, 1, 1, '1001', 'R1', 'A01-01-01-02', '2025-07-21 11:14:19', '2025-07-21 11:14:25', NULL, NULL); +INSERT INTO `t_app_wcs_task_bak` VALUES ('1753068193854010000', 1, 1, 1, '1004', 'R1', 'A01-01-02-02', '2025-07-21 11:23:14', '2025-07-21 11:23:20', NULL, NULL); +INSERT INTO `t_app_wcs_task_bak` VALUES ('1753068293620010000', 1, 1, 1, '1005', 'R1', 'A01-02-01-02', '2025-07-21 11:24:54', '2025-07-21 11:25:00', NULL, NULL); +INSERT INTO `t_app_wcs_task_bak` VALUES ('1753068368094010000', 1, 9, 2, '1003', 'A02-01-01-01', 'A02-01-02-02', '2025-07-21 11:26:09', '2025-07-21 11:26:15', NULL, NULL); +INSERT INTO `t_app_wcs_task_bak` VALUES ('1753068368095010000', 1, 2, 1, '1002', 'A02-01-01-02', 'C1', '2025-07-21 11:26:09', '2025-07-21 11:26:43', NULL, NULL); +INSERT INTO `t_app_wcs_task_bak` VALUES ('1753078496789010000', 1, 1, 1, '1002', 'R1', 'A02-01-01-02', '2025-07-21 14:14:57', '2025-07-21 14:15:03', NULL, NULL); +INSERT INTO `t_app_wcs_task_bak` VALUES ('1753078910378010000', 1, 2, 1, '1002', 'A02-01-01-02', 'C1', '2025-07-21 14:21:51', '2025-07-21 14:21:58', NULL, NULL); +INSERT INTO `t_app_wcs_task_bak` VALUES ('1753078936593010000', 1, 1, 1, '1007', 'R1', 'A02-01-01-01', '2025-07-21 14:22:17', '2025-07-21 14:22:39', NULL, NULL); +INSERT INTO `t_app_wcs_task_bak` VALUES ('1753403424775010000', 1, 1, 1, '1002', 'R1', 'A02-02-01-02', '2025-07-25 08:30:25', '2025-07-25 08:30:31', NULL, NULL); +INSERT INTO `t_app_wcs_task_bak` VALUES ('1753403764587010000', 1, 1, 1, '1006', 'R1', 'A01-01-02-01', '2025-07-25 08:36:05', '2025-07-25 08:36:11', NULL, NULL); +INSERT INTO `t_app_wcs_task_bak` VALUES ('1753403954324010000', 1, 9, 2, '1006', 'A01-01-02-01', 'A01-01-01-01', '2025-07-25 08:39:15', '2025-07-25 08:39:21', NULL, NULL); +INSERT INTO `t_app_wcs_task_bak` VALUES ('1753403954324010001', 1, 2, 1, '1004', 'A01-01-02-02', 'C1', '2025-07-25 08:39:15', '2025-07-25 08:40:38', NULL, NULL); +INSERT INTO `t_app_wcs_task_bak` VALUES ('1753504869791010000', 1, 1, 1, '1004', 'R1', 'A01-01-02-02', '2025-07-26 12:41:10', '2025-07-26 12:41:17', NULL, NULL); +INSERT INTO `t_app_wcs_task_bak` VALUES ('1753505146606010000', 1, 1, 1, '1008', 'R1', 'A01-02-01-01', '2025-07-26 12:45:47', '2025-07-26 12:45:53', NULL, NULL); +INSERT INTO `t_app_wcs_task_bak` VALUES ('1753505227890010000', 1, 1, 1, '1009', 'R1', 'A02-02-01-01', '2025-07-26 12:47:09', '2025-07-26 12:47:15', NULL, NULL); +INSERT INTO `t_app_wcs_task_bak` VALUES ('1753505539367010000', 1, 9, 2, '1006', 'A01-01-01-01', 'A02-01-03-02', '2025-07-26 12:52:20', '2025-07-26 12:52:26', NULL, NULL); +INSERT INTO `t_app_wcs_task_bak` VALUES ('1753505539367010001', 1, 2, 1, '1001', 'A01-01-01-02', 'C1', '2025-07-26 12:52:20', '2025-07-26 12:52:56', NULL, NULL); +INSERT INTO `t_app_wcs_task_bak` VALUES ('1754998057462010000', 1, 1, 1, '1001', 'R1', 'A01-01-03-01', '2025-08-12 19:27:38', '2025-08-12 19:27:39', NULL, NULL); +INSERT INTO `t_app_wcs_task_bak` VALUES ('1754998118329010000', 1, 9, 2, '1008', 'A01-02-01-01', 'A02-01-03-01', '2025-08-12 19:28:39', '2025-08-12 19:28:40', NULL, NULL); +INSERT INTO `t_app_wcs_task_bak` VALUES ('1754998661134010000', 1, 9, 2, '1008', 'A02-01-03-01', 'A02-03-01-01', '2025-08-12 19:37:42', '2025-08-12 19:37:43', NULL, NULL); +INSERT INTO `t_app_wcs_task_bak` VALUES ('1754998661139010000', 1, 2, 1, '1006', 'A02-01-03-02', 'CR', '2025-08-12 19:37:42', '2025-08-12 19:38:12', NULL, NULL); +INSERT INTO `t_app_wcs_task_bak` VALUES ('1754998924999010000', 1, 9, 2, '1009', 'A02-02-01-01', 'A01-01-01-02', '2025-08-12 19:42:06', '2025-08-12 19:42:07', NULL, NULL); +INSERT INTO `t_app_wcs_task_bak` VALUES ('1754998925002010000', 1, 2, 1, '1002', 'A02-02-01-02', 'CR', '2025-08-12 19:42:06', '2025-08-12 19:42:39', NULL, NULL); +INSERT INTO `t_app_wcs_task_bak` VALUES ('1754999361384010000', 1, 9, 2, '1004', 'A01-01-01-01', 'A01-01-02-02', '2025-08-12 19:49:22', '2025-08-12 19:49:23', NULL, NULL); +INSERT INTO `t_app_wcs_task_bak` VALUES ('1754999361391010000', 1, 2, 1, '1009', 'A01-01-01-02', 'CR', '2025-08-12 19:49:22', '2025-08-12 19:49:47', NULL, NULL); -- ---------------------------- -- Table structure for t_app_work diff --git a/202504-Wms-MengYang-box/wms_serve_mengyang/api-tests/MyWmsController.http b/202504-Wms-MengYang-box/wms_serve_mengyang/api-tests/MyWmsController.http index 83a32b5..4291a4f 100644 --- a/202504-Wms-MengYang-box/wms_serve_mengyang/api-tests/MyWmsController.http +++ b/202504-Wms-MengYang-box/wms_serve_mengyang/api-tests/MyWmsController.http @@ -8,7 +8,7 @@ Content-Type: application/json { "taskId": "testOrderId9", - "vehicleNo": "1009" + "vehicleNo": "1001" } ### 2. 出库订单接口 @@ -17,7 +17,7 @@ Content-Type: application/json { "taskId": "testOrderId1", - "vehicleNo": "1001" + "vehicleNo": "1009" } ### 3. 库存查询接口 - 仅按载具查询 @@ -28,7 +28,7 @@ Content-Type: application/json "requestId": "testOrderId1", "details": [ { - "vehicleNo": "1001" + "vehicleNo": "1002" } ] } diff --git a/202504-Wms-MengYang-box/wms_serve_mengyang/api-tests/TaskController.http b/202504-Wms-MengYang-box/wms_serve_mengyang/api-tests/TaskController.http index 73905e5..b43cd83 100644 --- a/202504-Wms-MengYang-box/wms_serve_mengyang/api-tests/TaskController.http +++ b/202504-Wms-MengYang-box/wms_serve_mengyang/api-tests/TaskController.http @@ -8,7 +8,7 @@ Content-Type: application/json { "origin": "R1", - "vehicleNo": "1009", + "vehicleNo": "1001", "codeMessage": "test", "remark": "载具入库测试" } @@ -18,10 +18,10 @@ POST {{baseUrl}}/wms/task/sendTaskResult Content-Type: application/json { - "taskId": "1753505539367010001", + "taskId": "1754999361391010000", "taskStatus": 100, - "vehicleNo": "1001", - "destination": "A01-02-01-01", + "vehicleNo": "1009", + "destination": "CR", "message": "任务执行成功" } diff --git a/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/app/AppCommon.java b/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/app/AppCommon.java index e92c358..8e427ea 100644 --- a/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/app/AppCommon.java +++ b/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/app/AppCommon.java @@ -1,15 +1,19 @@ package com.wms_main.app; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.wms_main.dao.ITAppConfigService; import com.wms_main.dao.ITAppGoodsService; import com.wms_main.dao.ITAppLocationService; import com.wms_main.model.po.TAppConfig; import com.wms_main.model.po.TAppGoods; import com.wms_main.model.po.TAppLocation; +import com.wms_main.repository.utils.StringUtils; + import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -21,6 +25,8 @@ import java.util.Map; @RequiredArgsConstructor @Slf4j public class AppCommon { + private final static Integer MIN_DEPTH = 1; + private final static Integer MAX_DEPTH = 3; /** * 配置服务 */ @@ -112,6 +118,38 @@ public class AppCommon { } } + + /** + * 根据库位id获取排列层所有深度的库位信息列表 + * @param locationId 库位id + * @return 库位详情列表 + */ + public List getLocationListByLocationId(String locationId) { + List resList = new ArrayList<>(); + List strList = List.of(locationId.split("-")).subList(0, 3); + for (int depth = MIN_DEPTH; depth <= MAX_DEPTH; ++depth) { + String queryLocationId = String.join("-", strList) + String.format("-%02d", depth); + TAppLocation tempLocation = getInstantLocationByLocationId(queryLocationId); + if (tempLocation != null) { + resList.add(tempLocation); + } + } + return resList; + } + + public Boolean updateWorkingLocations(String locationId, Integer val) { + if (!StringUtils.isEmpty(locationId)) { + List updateLocations = getLocationListByLocationId(locationId); + if (updateLocations.size() > 0) { + return appLocationService.update(new LambdaUpdateWrapper() + .in(TAppLocation::getLocationId, updateLocations.stream().map(TAppLocation::getLocationId).toList()) + .set(TAppLocation::getIsWorking, val)); + } + return false; + } + return false; + } + /** * 根据料号获取物料信息 * @param goodsId 料号 diff --git a/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/constant/enums/wms/StorageTypeEnums.java b/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/constant/enums/wms/StorageTypeEnums.java index 3ff048f..933bcb1 100644 --- a/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/constant/enums/wms/StorageTypeEnums.java +++ b/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/constant/enums/wms/StorageTypeEnums.java @@ -1,6 +1,5 @@ package com.wms_main.constant.enums.wms; -import lombok.AllArgsConstructor; import lombok.Getter; @Getter diff --git a/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/controller/mywms/MyWmsController.java b/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/controller/mywms/MyWmsController.java index 29a8249..7f55988 100644 --- a/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/controller/mywms/MyWmsController.java +++ b/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/controller/mywms/MyWmsController.java @@ -12,8 +12,6 @@ import org.springframework.web.bind.annotation.*; import java.util.List; import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestParam; - @RestController @ResponseBody diff --git a/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/controller/wms/LocationController.java b/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/controller/wms/LocationController.java index 2157c7f..7804347 100644 --- a/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/controller/wms/LocationController.java +++ b/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/controller/wms/LocationController.java @@ -3,7 +3,6 @@ package com.wms_main.controller.wms; import com.wms_main.model.dto.query.LocationQuery; import com.wms_main.model.dto.response.wms.BaseWmsApiResponse; import com.wms_main.model.dto.response.wms.WmsApiResponse; -import com.wms_main.model.po.TAppLocation; import com.wms_main.service.controller.ILocationControllerService; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; diff --git a/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/controller/wms/TestController.java b/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/controller/wms/TestController.java index 4133a54..f4eadfd 100644 --- a/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/controller/wms/TestController.java +++ b/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/controller/wms/TestController.java @@ -1,12 +1,6 @@ package com.wms_main.controller.wms; -import com.wms_main.app.AppCommon; -import com.wms_main.dao.ITSysMenuService; -import com.wms_main.dao.ITSysPermissionService; -import com.wms_main.dao.ITSysRoleService; -import com.wms_main.dao.ITSysUserService; import com.wms_main.excel.easypoi.service.IImportExcelEasyPoi; -import com.wms_main.model.dto.request.wms.BaseWmsRequest; import com.wms_main.model.dto.query.DbsQuery; import com.wms_main.model.dto.request.wms.InitKateWorkRequest; import com.wms_main.model.vo.others.FileVo; @@ -17,7 +11,6 @@ import com.wms_main.repository.utils.UUIDUtils; import com.wms_main.service.controller.ITestControllerService; import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; -import org.quartz.Scheduler; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -33,16 +26,9 @@ import java.util.List; @RequestMapping("/test") public class TestController { - private final AppCommon appCommon; - private final Scheduler scheduler; private final IImportExcelEasyPoi importExcelEasyPoi; private final ITestControllerService testService; - private final ITSysUserService userService;// User服务 - private final ITSysRoleService roleService;// Role服务 - private final ITSysPermissionService permissionService;// Permission服务 - private final ITSysMenuService menuService;// Menu服务 - @GetMapping(value = "/test") public String testApi() { return UUIDUtils.getNewUUID(); diff --git a/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/dao/ITAppImageService.java b/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/dao/ITAppImageService.java index b9611d8..62aba3f 100644 --- a/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/dao/ITAppImageService.java +++ b/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/dao/ITAppImageService.java @@ -1,7 +1,6 @@ package com.wms_main.dao; import com.baomidou.mybatisplus.extension.service.IService; -import com.wms_main.model.po.TAppDbs; import com.wms_main.model.po.TAppImage; import java.util.List; diff --git a/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/dao/ITAppProductExtendService.java b/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/dao/ITAppProductExtendService.java index 905e8fb..6f1386b 100644 --- a/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/dao/ITAppProductExtendService.java +++ b/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/dao/ITAppProductExtendService.java @@ -1,7 +1,6 @@ package com.wms_main.dao; import com.baomidou.mybatisplus.extension.service.IService; -import com.wms_main.model.po.TAppDbs; import com.wms_main.model.po.TAppProductExtend; import java.util.List; diff --git a/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/dao/ITAppProductService.java b/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/dao/ITAppProductService.java index 67fcba2..ac587be 100644 --- a/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/dao/ITAppProductService.java +++ b/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/dao/ITAppProductService.java @@ -1,7 +1,6 @@ package com.wms_main.dao; import com.baomidou.mybatisplus.extension.service.IService; -import com.wms_main.model.po.TAppDbs; import com.wms_main.model.po.TAppProduct; import java.util.List; diff --git a/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/dao/ITAppStandWorkService.java b/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/dao/ITAppStandWorkService.java index 82b6719..fd83e9e 100644 --- a/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/dao/ITAppStandWorkService.java +++ b/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/dao/ITAppStandWorkService.java @@ -1,7 +1,6 @@ package com.wms_main.dao; import com.baomidou.mybatisplus.extension.service.IService; -import com.wms_main.model.po.TAppStand; import com.wms_main.model.po.TAppStandWork; /** diff --git a/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/dao/ITAppWcsTaskService.java b/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/dao/ITAppWcsTaskService.java index 4da218c..246b366 100644 --- a/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/dao/ITAppWcsTaskService.java +++ b/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/dao/ITAppWcsTaskService.java @@ -3,8 +3,6 @@ package com.wms_main.dao; import com.baomidou.mybatisplus.extension.service.IService; import com.wms_main.model.po.TAppWcsTask; -import java.util.List; - /** * wcs任务表服务 */ diff --git a/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/dao/ITAppWorkRecordService.java b/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/dao/ITAppWorkRecordService.java index a593c87..5c6913a 100644 --- a/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/dao/ITAppWorkRecordService.java +++ b/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/dao/ITAppWorkRecordService.java @@ -1,7 +1,6 @@ package com.wms_main.dao; import com.baomidou.mybatisplus.extension.service.IService; -import com.wms_main.model.po.TAppWork; import com.wms_main.model.po.TAppWorkRecord; /** diff --git a/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/dao/impl/TAppImageServiceImpl.java b/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/dao/impl/TAppImageServiceImpl.java index 167e02b..66525f1 100644 --- a/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/dao/impl/TAppImageServiceImpl.java +++ b/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/dao/impl/TAppImageServiceImpl.java @@ -1,11 +1,8 @@ package com.wms_main.dao.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.wms_main.dao.ITAppDbsService; import com.wms_main.dao.ITAppImageService; -import com.wms_main.mapper.AppDbsMapper; import com.wms_main.mapper.AppImageMapper; -import com.wms_main.model.po.TAppDbs; import com.wms_main.model.po.TAppImage; import org.springframework.stereotype.Service; diff --git a/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/dao/impl/TAppLocationServiceImpl.java b/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/dao/impl/TAppLocationServiceImpl.java index 7f08f1f..ef3645f 100644 --- a/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/dao/impl/TAppLocationServiceImpl.java +++ b/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/dao/impl/TAppLocationServiceImpl.java @@ -8,7 +8,6 @@ import com.wms_main.mapper.AppLocationMapper; import com.wms_main.model.po.TAppLocation; import org.springframework.stereotype.Service; -import java.util.EmptyStackException; import java.util.List; /** diff --git a/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/dao/impl/TAppProductExtendServiceImpl.java b/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/dao/impl/TAppProductExtendServiceImpl.java index 3ff6652..0cb8e9c 100644 --- a/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/dao/impl/TAppProductExtendServiceImpl.java +++ b/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/dao/impl/TAppProductExtendServiceImpl.java @@ -1,11 +1,8 @@ package com.wms_main.dao.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.wms_main.dao.ITAppDbsService; import com.wms_main.dao.ITAppProductExtendService; -import com.wms_main.mapper.AppDbsMapper; import com.wms_main.mapper.AppProductExtendsMapper; -import com.wms_main.model.po.TAppDbs; import com.wms_main.model.po.TAppProductExtend; import org.springframework.stereotype.Service; diff --git a/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/dao/impl/TAppProductServiceImpl.java b/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/dao/impl/TAppProductServiceImpl.java index 8888db0..978cfa7 100644 --- a/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/dao/impl/TAppProductServiceImpl.java +++ b/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/dao/impl/TAppProductServiceImpl.java @@ -1,13 +1,9 @@ package com.wms_main.dao.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.wms_main.dao.ITAppDbsService; import com.wms_main.dao.ITAppProductService; -import com.wms_main.mapper.AppDbsMapper; import com.wms_main.mapper.AppProductMapper; -import com.wms_main.model.po.TAppDbs; import com.wms_main.model.po.TAppProduct; -import com.wms_main.model.po.TAppSingleProduct; import org.springframework.stereotype.Service; import java.util.List; diff --git a/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/dao/impl/TAppWcsTaskServiceImpl.java b/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/dao/impl/TAppWcsTaskServiceImpl.java index 06a88bb..a84270a 100644 --- a/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/dao/impl/TAppWcsTaskServiceImpl.java +++ b/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/dao/impl/TAppWcsTaskServiceImpl.java @@ -38,7 +38,6 @@ public class TAppWcsTaskServiceImpl extends ServiceImpl sendWcsStackerTask(WcsStackerTaskRequest request) { // 设置http请求 HttpRequest httpRequest = HttpRequest.postInstanceOf(appCommon.getConfigByKey(AppConfigKeyEnums.WCS_STACKER_TASK_URL.getKey()), request); - HttpResponse httpResponse = httpClient.httpPost(httpRequest); - if (httpResponse != null && httpResponse.isSuccess()) { - WcsApiResponse response = new WcsApiResponse<>(); - response = httpResponse.getData(response.getClass().asSubclass(WcsApiResponse.class)); - return response; - } + // HttpResponse httpResponse = httpClient.httpPost(httpRequest); + // if (httpResponse != null && httpResponse.isSuccess()) { + // WcsApiResponse response = new WcsApiResponse<>(); + // response = httpResponse.getData(response.getClass().asSubclass(WcsApiResponse.class)); + // return response; + // } // TODO success -> error return WcsApiResponse.success("请求未获得响应信息。", null); } diff --git a/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/service/business/IDepthStrategyService.java b/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/service/business/IDepthStrategyService.java deleted file mode 100644 index cd0a1dd..0000000 --- a/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/service/business/IDepthStrategyService.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.wms_main.service.business; - -import com.wms_main.model.bo.wms.DepthStrategyResult; -import com.wms_main.model.po.TAppOrderOut; -import com.wms_main.model.po.TAppStock; - -import java.util.List; - -/** - * 深度策略服务接口 - * 负责分析货物深度并生成相应的出库策略 - */ -public interface IDepthStrategyService { - - /** - * 基于载具号分析深度策略 - * @param vehicleNo 载具号 - * @return 深度策略分析结果 - */ - DepthStrategyResult analyzeDepthStrategyByVehicle(String vehicleNo); - - /** - * 获取指定库位的深度信息 - * @param locationId 库位ID - * @return 深度值 - */ - Integer getLocationDepth(String locationId); -} \ No newline at end of file diff --git a/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/service/business/serviceImpl/DepthStrategyServiceImpl.java b/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/service/business/serviceImpl/DepthStrategyServiceImpl.java deleted file mode 100644 index caa073d..0000000 --- a/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/service/business/serviceImpl/DepthStrategyServiceImpl.java +++ /dev/null @@ -1,178 +0,0 @@ -package com.wms_main.service.business.serviceImpl; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.wms_main.constant.enums.wms.WmsStockStatusEnums; -import com.wms_main.dao.ITAppLocationService; -import com.wms_main.dao.ITAppStockService; -import com.wms_main.model.bo.wms.DepthStrategyResult; -import com.wms_main.model.po.TAppLocation; -import com.wms_main.model.po.TAppOrderOut; -import com.wms_main.model.po.TAppStock; -import com.wms_main.repository.utils.StringUtils; -import com.wms_main.service.business.IDepthStrategyService; -import com.wms_main.service.business.IStackerTaskService; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; - -import java.util.List; - -/** - * 简化后的深度策略服务实现 - * 核心逻辑:基于载具号查询库存,检测深度策略 - */ -@Service -@RequiredArgsConstructor -@Slf4j -public class DepthStrategyServiceImpl implements IDepthStrategyService { - - private final ITAppStockService appStockService; - private final ITAppLocationService appLocationService; - private final IStackerTaskService stackerTaskService; - - /** - * 基于载具号分析深度策略(新核心方法) - */ - @Override - public DepthStrategyResult analyzeDepthStrategyByVehicle(String vehicleNo) { - if (StringUtils.isEmpty(vehicleNo)) { - log.warn("载具号为空"); - return DepthStrategyResult.createError("载具号不能为空"); - } - - TAppStock stock = appStockService.getOne( - new LambdaQueryWrapper() - .eq(TAppStock::getVehicleId, vehicleNo) - .eq(TAppStock::getStockStatus, WmsStockStatusEnums.OK.getCode()) - ); - - if (stock == null) { - log.warn("载具号{}对应的库存不存在", vehicleNo); - return DepthStrategyResult.createError("载具库存不存在"); - } - - Integer depth = getLocationDepth(stock.getLocationId()); - if (depth == null) { - log.warn("无法解析库存位置深度: {}", stock.getLocationId()); - return DepthStrategyResult.createError("库位深度解析失败"); - } - - if (depth == 1) { - return DepthStrategyResult.createDirectOut("深度1,直接出库"); - } else if (depth == 2) { - return handleDepth2Stock(stock); - } else { - log.warn("不支持的库存深度: {}", depth); - return DepthStrategyResult.createError("仅支持1-2深度库存"); - } - } - - /** - * 处理深度2的库存策略 - */ - private DepthStrategyResult handleDepth2Stock(TAppStock stock) { - // 检查深度1是否有阻挡 - List blockingStocks = getBlockingStocks(stock.getLocationId(), 1); - - if (blockingStocks.isEmpty()) { - return DepthStrategyResult.createDirectOut("深度2无阻挡,直接出库"); - } else { - // 检查阻挡货物是否可移库 - for (TAppStock blockingStock : blockingStocks) { - if (!canFindAlternativeLocation(blockingStock)) { - log.warn("深度2库存{}被阻挡,且无法移走阻挡货物{}", - stock.getStockId(), blockingStock.getStockId()); - return DepthStrategyResult.createError("无法移走阻挡货物"); - } - } - return DepthStrategyResult.createSingleTransfer("深度2有阻挡,需要移库后出库"); - } - } - - /** - * 获取库位深度 - */ - @Override - public Integer getLocationDepth(String locationId) { - if (StringUtils.isEmpty(locationId)) return null; - - try { - String[] parts = locationId.split("-"); - if (parts.length >= 4) { - return Integer.parseInt(parts[3]); - } - } catch (Exception e) { - log.warn("解析库位深度失败: {}", locationId, e); - } - return null; - } - - /** - * 获取阻挡货物(按载具去重) - */ - private List getBlockingStocks(String locationId, Integer blockingDepth) { - if (StringUtils.isEmpty(locationId) || blockingDepth == null) { - return List.of(); - } - - try { - String[] parts = locationId.split("-"); - if (parts.length < 4) return List.of(); - - String blockingLocationId = parts[0] + "-" + parts[1] + "-" + parts[2] + "-0" + blockingDepth; - - return appStockService.list( - new LambdaQueryWrapper() - .eq(TAppStock::getLocationId, blockingLocationId) - .eq(TAppStock::getStockStatus, WmsStockStatusEnums.OK.getCode()) - ); - } catch (Exception e) { - log.warn("获取阻挡货物失败: {}, 深度: {}", locationId, blockingDepth, e); - return List.of(); - } - } - - /** - * 检查能否为阻挡货物找到空闲库位 - */ - private boolean canFindAlternativeLocation(TAppStock blockingStock) { - try { - TAppLocation locationFilter = new TAppLocation(); - String currentLocationId = blockingStock.getLocationId(); - String[] parts = currentLocationId.split("-"); - - if (parts.length >= 4) { - locationFilter.setLRow(Integer.parseInt(parts[0].replaceAll("\\D", ""))); - locationFilter.setLCol(Integer.parseInt(parts[1])); - } - - TAppLocation targetLocation = stackerTaskService.requestOneLocation( - locationFilter, blockingStock.getVehicleId()); - - if (targetLocation != null) { - releaseLocation(targetLocation); - return true; - } - return false; - } catch (Exception e) { - log.error("检查空闲库位失败: {}", blockingStock.getStockId(), e); - return false; - } - } - - /** - * 释放临时占用的库位 - */ - private void releaseLocation(TAppLocation location) { - try { - appLocationService.update( - new com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper() - .eq(TAppLocation::getLocationId, location.getLocationId()) - .set(TAppLocation::getIsOccupy, 0) - .set(TAppLocation::getVehicleId, "") - ); - } catch (Exception e) { - log.warn("释放库位失败: {}", location.getLocationId(), e); - } - } -} \ No newline at end of file diff --git a/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/service/business/serviceImpl/StackerTaskServiceImpl.java b/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/service/business/serviceImpl/StackerTaskServiceImpl.java index cab4907..7160e94 100644 --- a/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/service/business/serviceImpl/StackerTaskServiceImpl.java +++ b/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/service/business/serviceImpl/StackerTaskServiceImpl.java @@ -9,12 +9,12 @@ import com.wms_main.constant.enums.wms.*; import com.wms_main.dao.*; import com.wms_main.model.dto.request.mywms.OrderInCBReq; import com.wms_main.model.dto.request.mywms.OrderOutCBReq; -import com.wms_main.model.dto.response.mes.MesApiResponse; import com.wms_main.model.po.*; import com.wms_main.repository.utils.ConvertUtils; import com.wms_main.repository.utils.StringUtils; import com.wms_main.repository.utils.UUIDUtils; import com.wms_main.service.api.IExternalApiService; +import com.wms_main.service.business.IAgvLockService; import com.wms_main.service.business.IStackerTaskService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -58,11 +58,6 @@ public class StackerTaskServiceImpl implements IStackerTaskService { */ private final ITAppTaskBakService appTaskBakService; - private final ITAppWcsTaskBakService appWcsTaskBakService; - /** - * 拣选任务服务 - */ - private final ITAppPickTaskService appPickTaskService; /** * 设备服务 */ @@ -78,6 +73,8 @@ public class StackerTaskServiceImpl implements IStackerTaskService { */ private final AppCommon appCommon; + private final IAgvLockService agvLockService; + /** * 存WcsTask表 * 更新WmsTask表 @@ -186,6 +183,9 @@ public class StackerTaskServiceImpl implements IStackerTaskService { break; } } + if (targetLocation != null) { + appCommon.updateWorkingLocations(targetLocation.getLocationId(), 1); + } // 返回库位,如果返回null则表示没有可用库位 return targetLocation; @@ -422,6 +422,9 @@ public class StackerTaskServiceImpl implements IStackerTaskService { vehicle.setLocationId(wmsTask.getDestination()); vehicle.setLastInTime(LocalDateTime.now()); appVehicleService.saveOrUpdate(vehicle); + + appCommon.updateWorkingLocations(wmsTask.getDestination(), 0); + agvLockService.releaseAllInboundPortLocks("CR"); // 备份并删除任务 if (!appTaskService.removeById(wmsTask.getTaskId())) { log.info("删除入库任务失败,任务:{}", wmsTask.getTaskId()); @@ -456,6 +459,8 @@ public class StackerTaskServiceImpl implements IStackerTaskService { .eq(TAppVehicle::getVehicleId, wmsTask.getVehicleId()) .set(TAppVehicle::getLocationId, wmsTask.getDestination()) ); + appCommon.updateWorkingLocations(wmsTask.getDestination(), 0); + appCommon.updateWorkingLocations(wmsTask.getOrigin(), 0); appTaskService.removeById(wmsTask.getTaskId()); appTaskBakService.save(wmsTask.of()); } @@ -509,6 +514,8 @@ public class StackerTaskServiceImpl implements IStackerTaskService { .set(TAppStock::getStockStatus, WmsStockStatusEnums.OUTED.getCode()) .set(TAppStock::getLocationId, "") .eq(TAppStock::getVehicleId, vehicleId)); + appCommon.updateWorkingLocations(thisVehicle.getLocationId(), 0); + agvLockService.releaseAllInboundPortLocks("CR"); // 当前载具的任务列表 List thisVehicleOutTasks = vehicleIdToTaskMap.get(vehicleId); if (thisVehicleOutTasks.isEmpty()) { diff --git a/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/service/controller/ILocationControllerService.java b/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/service/controller/ILocationControllerService.java index 4988d9d..0fd1748 100644 --- a/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/service/controller/ILocationControllerService.java +++ b/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/service/controller/ILocationControllerService.java @@ -3,7 +3,6 @@ package com.wms_main.service.controller; import com.wms_main.model.dto.query.LocationQuery; import com.wms_main.model.dto.response.wms.BaseWmsApiResponse; import com.wms_main.model.dto.response.wms.WmsApiResponse; -import com.wms_main.model.po.TAppLocation; /** * 库位控制类服务 diff --git a/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/service/controller/ITaskControllerService.java b/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/service/controller/ITaskControllerService.java index c370830..6388b93 100644 --- a/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/service/controller/ITaskControllerService.java +++ b/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/service/controller/ITaskControllerService.java @@ -1,22 +1,9 @@ package com.wms_main.service.controller; -import com.wms_main.model.bo.wcs.WcsStackerTask; -import com.wms_main.model.dto.request.wcs.WcsBoxArriveRequest; import com.wms_main.model.dto.request.wcs.WcsTaskResultRequest; import com.wms_main.model.dto.request.wcs.WcsVehicleInRequest; -import com.wms_main.model.dto.request.wms.*; import com.wms_main.model.dto.response.wcs.BaseWcsApiResponse; -import com.wms_main.model.dto.response.wcs.InTaskResp; -import com.wms_main.model.dto.response.wcs.WcsApiResponse; import com.wms_main.model.dto.response.wcs.WcsVehicleInResponse; -import com.wms_main.model.dto.response.wms.BaseWmsApiResponse; -import com.wms_main.model.dto.response.wms.WmsApiResponse; -import com.wms_main.model.po.TAppTaskBak; -import com.wms_main.model.po.TAppWcsTaskBak; -import com.wms_main.model.vo.wms.TaskConfirmVo; -import org.apache.poi.ss.formula.functions.T; - -import java.util.List; /** * 任务控制类 服务接口 diff --git a/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/service/controller/ITestControllerService.java b/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/service/controller/ITestControllerService.java index a6b126d..4489be9 100644 --- a/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/service/controller/ITestControllerService.java +++ b/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/service/controller/ITestControllerService.java @@ -1,6 +1,5 @@ package com.wms_main.service.controller; -import com.wms_main.model.dto.request.wms.BaseWmsRequest; import com.wms_main.model.dto.query.DbsQuery; import com.wms_main.model.dto.request.wms.InitKateWorkRequest; import com.wms_main.model.vo.wms.ImageVo; diff --git a/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/service/controller/serviceImpl/LoginControllerServiceImpl.java b/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/service/controller/serviceImpl/LoginControllerServiceImpl.java index 6de86c0..3b4e8c3 100644 --- a/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/service/controller/serviceImpl/LoginControllerServiceImpl.java +++ b/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/service/controller/serviceImpl/LoginControllerServiceImpl.java @@ -110,7 +110,6 @@ public class LoginControllerServiceImpl implements ILoginControllerService { } List menuVoList = new LinkedList<>(); // 查找一级菜单 - // TODO 这里可以用递归优化,减少代码量 for (TSysMenu firstMenu : menuPoList) { if (AppConstant.ROOT_MENU_ID.equals(firstMenu.getParentId())) {// 查找到所有的一级子菜单 MenuVo tempFirstMenu = new MenuVo(); diff --git a/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/service/controller/serviceImpl/MyWmsControllerServiceImpl.java b/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/service/controller/serviceImpl/MyWmsControllerServiceImpl.java index 45a81bb..678f2a9 100644 --- a/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/service/controller/serviceImpl/MyWmsControllerServiceImpl.java +++ b/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/service/controller/serviceImpl/MyWmsControllerServiceImpl.java @@ -2,16 +2,13 @@ package com.wms_main.service.controller.serviceImpl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import com.fasterxml.jackson.databind.ObjectMapper; +import com.wms_main.app.AppCommon; import com.wms_main.constant.enums.wms.OrderStatusEnum; -import com.wms_main.constant.enums.wms.WmsDepthStrategyEnums; import com.wms_main.constant.enums.wms.WmsStockStatusEnums; -import com.wms_main.dao.ITAppAgvLockService; import com.wms_main.dao.ITAppLocationService; import com.wms_main.dao.ITAppOrderInService; import com.wms_main.dao.ITAppOrderOutService; import com.wms_main.dao.ITAppStockService; -import com.wms_main.model.bo.wms.DepthStrategyResult; import com.wms_main.model.dto.request.mywms.*; import com.wms_main.model.dto.request.wcs.WcsCanFeedRequest; import com.wms_main.model.dto.response.mywms.MyWmsResponse; @@ -25,7 +22,6 @@ import com.wms_main.repository.utils.StringUtils; import com.wms_main.repository.utils.UUIDUtils; import com.wms_main.service.api.IWcsApiService; import com.wms_main.service.business.IAgvLockService; -import com.wms_main.service.business.IDepthStrategyService; import com.wms_main.service.business.IStackerTaskService; import com.wms_main.service.controller.IMyWmsControllerService; import lombok.RequiredArgsConstructor; @@ -43,13 +39,11 @@ public class MyWmsControllerServiceImpl implements IMyWmsControllerService { private final ITAppOrderInService appOrderInService; private final ITAppOrderOutService appOrderOutService; private final ITAppStockService appStockService; - private final IDepthStrategyService depthStrategyService; private final ITAppLocationService appLocationService; private final IStackerTaskService stackerTaskService; private final IAgvLockService agvLockService; private final IWcsApiService wcsApiService; - private final ObjectMapper objectMapper = new ObjectMapper(); - + private final AppCommon appCommon; private static final String L_TEMP_FLAG = "temp"; @Override @@ -71,7 +65,7 @@ public class MyWmsControllerServiceImpl implements IMyWmsControllerService { orderIn.setRecordId(UUIDUtils.getNewUUID()); orderIn.setOrderId(request.getTaskId()); orderIn.setVehicleNo(request.getVehicleNo()); - orderIn.setInStand("R1"); + orderIn.setInStand("CR"); orderIn.setRequestUser("wms"); orderIn.setOrderStatus(OrderStatusEnum.CREATE.getCode()); orderIn.setCreateTime(LocalDateTime.now()); @@ -118,14 +112,6 @@ public class MyWmsControllerServiceImpl implements IMyWmsControllerService { orderOut.setCreateTime(LocalDateTime.now()); orderOut.setUpdateTime(LocalDateTime.now()); - DepthStrategyResult depthStrategy = depthStrategyService.analyzeDepthStrategyByVehicle(request.getVehicleNo()); - orderOut.setDepthStrategy(depthStrategy.getStrategy().getCode()); - orderOut.setDepthStrategyDetail(objectMapper.writeValueAsString(depthStrategy)); - - if (orderOut.getDepthStrategy().equals(WmsDepthStrategyEnums.NO_ACTION.getCode())) { - return MyWmsResponse.error("载具出库任务添加失败:" + request.getVehicleNo(), null); - } - if (!appOrderOutService.save(orderOut)) { return MyWmsResponse.error("出库单保存失败,请稍后再试", null); } @@ -183,9 +169,15 @@ public class MyWmsControllerServiceImpl implements IMyWmsControllerService { if (location == null || StringUtils.isEmpty(location.getLocationId())) { return MyWmsResponse.error("无剩余可用库位", false); } + // 释放预占的库位 + appLocationService.update(new LambdaUpdateWrapper() + .eq(TAppLocation::getLocationId, location.getLocationId()) + .set(TAppLocation::getIsOccupy, 0) + .set(TAppLocation::getVehicleId, "")); + appCommon.updateWorkingLocations(location.getLocationId(), 0); // 2. 调用wcs.canFeed检查wcs状态 - WcsApiResponse wcsResponse = wcsApiService.canFeed(new WcsCanFeedRequest("R1")); + WcsApiResponse wcsResponse = wcsApiService.canFeed(new WcsCanFeedRequest("CR")); if (wcsResponse == null || wcsResponse.getData() == null) { return MyWmsResponse.error("WCS系统查询失败", false); } @@ -196,17 +188,11 @@ public class MyWmsControllerServiceImpl implements IMyWmsControllerService { } // 3. 检查agvLock服务获取wms状态 - Boolean wmsAllow = agvLockService.canFeedToInboundPort("R1"); + Boolean wmsAllow = agvLockService.canFeedToInboundPort("CR"); if (!wmsAllow) { return MyWmsResponse.error("入库口锁定中", false); } - // 释放预占的库位 - appLocationService.update(new LambdaUpdateWrapper() - .eq(TAppLocation::getLocationId, location.getLocationId()) - .set(TAppLocation::getIsOccupy, 0) - .set(TAppLocation::getVehicleId, "")); - return MyWmsResponse.success(true); } catch (Exception e) { return MyWmsResponse.error("系统异常,请稍后重试", false); @@ -216,8 +202,8 @@ public class MyWmsControllerServiceImpl implements IMyWmsControllerService { @Override public MyWmsResponse queryCanOut() { try { - // 1. 调用wcs.canFeed检查wcs状态 (使用R1口) - WcsApiResponse wcsResponse = wcsApiService.canFeed(new WcsCanFeedRequest("R1")); + // 1. 调用wcs.canFeed检查wcs状态 (使用CR口) + WcsApiResponse wcsResponse = wcsApiService.canFeed(new WcsCanFeedRequest("CR")); if (wcsResponse == null || wcsResponse.getData() == null) { return MyWmsResponse.error("WCS系统查询失败", false); } @@ -227,8 +213,8 @@ public class MyWmsControllerServiceImpl implements IMyWmsControllerService { return MyWmsResponse.error("WCS系统不允许出库", false); } - // 2. 检查agvLock服务获取wms状态 (使用R1口) - Boolean wmsAllow = agvLockService.canFeedToInboundPort("R1"); + // 2. 检查agvLock服务获取wms状态 (使用CR口) + Boolean wmsAllow = agvLockService.canFeedToInboundPort("CR"); if (!wmsAllow) { return MyWmsResponse.error("出库口锁定中", false); } diff --git a/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/service/controller/serviceImpl/TaskControllerServiceImpl.java b/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/service/controller/serviceImpl/TaskControllerServiceImpl.java index 85d7e3f..6bc92eb 100644 --- a/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/service/controller/serviceImpl/TaskControllerServiceImpl.java +++ b/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/service/controller/serviceImpl/TaskControllerServiceImpl.java @@ -13,7 +13,6 @@ import com.wms_main.model.po.*; import com.wms_main.repository.utils.ConvertUtils; import com.wms_main.repository.utils.StringUtils; import com.wms_main.repository.utils.UUIDUtils; -import com.wms_main.service.business.IAgvLockService; import com.wms_main.service.business.IStackerTaskService; import com.wms_main.service.controller.ITaskControllerService; import lombok.RequiredArgsConstructor; @@ -36,7 +35,6 @@ public class TaskControllerServiceImpl implements ITaskControllerService { private final IStackerTaskService stackerTaskService;// 堆垛机任务服务 private final ITAppOrderInService orderInService; private final ITAppWcsTaskBakService appWcsTaskBakService; - private final IAgvLockService agvLockService;// AGV互锁服务 @Override @Transactional @@ -147,18 +145,6 @@ public class TaskControllerServiceImpl implements ITaskControllerService { .set(TAppOrderIn::getOrderStatus, OrderStatusEnum.COMPLETE.getCode()) .set(TAppOrderIn::getCompleteTime, LocalDateTime.now())); - // 任务完成时释放R1口锁定(box仓库出入库都使用同一个R1口) - if (wmsTask != null) { - try { - String port = "R1"; // box仓库统一使用R1口 - - // 释放该口的所有活动锁定,不关心具体是哪台AGV - int releasedCount = agvLockService.releaseAllInboundPortLocks(port); - log.info("任务完成,释放R1口的锁定,任务类型: {}, 共释放 {} 个锁定", wmsTask.getTaskType(), releasedCount); - } catch (Exception e) { - log.error("释放R1口锁定时发生异常", e); - } - } // 移除wcs任务,并向wcs备份表添加记录 TAppWcsTaskBak wcsTaskBak = new TAppWcsTaskBak( wcsTask.getWcsTaskId(), diff --git a/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/service/controller/serviceImpl/TestControllerServiceImpl.java b/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/service/controller/serviceImpl/TestControllerServiceImpl.java index f9d0171..7c5729f 100644 --- a/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/service/controller/serviceImpl/TestControllerServiceImpl.java +++ b/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/service/controller/serviceImpl/TestControllerServiceImpl.java @@ -4,7 +4,6 @@ import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.wms_main.dao.ITAppImageService; import com.wms_main.excel.easypoi.service.IExportExcelEasyPoi; -import com.wms_main.model.dto.request.wms.BaseWmsRequest; import com.wms_main.model.dto.query.DbsQuery; import com.wms_main.model.dto.request.wms.InitKateWorkRequest; import com.wms_main.model.po.TAppImage; diff --git a/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/service/quartz_job/job_executor/JobTest.java b/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/service/quartz_job/job_executor/JobTest.java index 557c245..70bc708 100644 --- a/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/service/quartz_job/job_executor/JobTest.java +++ b/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/service/quartz_job/job_executor/JobTest.java @@ -18,7 +18,6 @@ public class JobTest implements Job { */ @Override public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { - // TODO 需要增加定时器的全局异常捕获 // 测试定时任务 System.out.println("本次Test执行时间:" + jobExecutionContext.getFireTime()); try { diff --git a/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/service/quartz_job/job_executor/MyOutExecutor.java b/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/service/quartz_job/job_executor/MyOutExecutor.java index b61f50d..192c25e 100644 --- a/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/service/quartz_job/job_executor/MyOutExecutor.java +++ b/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/service/quartz_job/job_executor/MyOutExecutor.java @@ -2,6 +2,7 @@ package com.wms_main.service.quartz_job.job_executor; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.wms_main.app.AppCommon; import com.wms_main.constant.enums.wms.OrderStatusEnum; import com.wms_main.constant.enums.wms.WmsStackerTaskStatusEnums; import com.wms_main.constant.enums.wms.WmsStockStatusEnums; @@ -13,8 +14,8 @@ import com.wms_main.model.po.TAppLocation; import com.wms_main.model.po.TAppOrderOut; import com.wms_main.model.po.TAppStock; import com.wms_main.model.po.TAppTask; +import com.wms_main.repository.utils.StringUtils; import com.wms_main.repository.utils.UUIDUtils; -import com.wms_main.service.business.IDepthStrategyService; import com.wms_main.service.business.IStackerTaskService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -37,8 +38,8 @@ public class MyOutExecutor implements Job { private final ITAppOrderOutService appOrderOutService; private final ITAppStockService appStockService; private final ITAppTaskService appTaskService; - private final IDepthStrategyService depthStrategyService; private final IStackerTaskService stackerTaskService; + private final AppCommon appCommon; @Override public void execute(JobExecutionContext context) { @@ -52,8 +53,7 @@ public class MyOutExecutor implements Job { // 获取状态为CREATE的出库订单 List orders = appOrderOutService.list( new LambdaQueryWrapper() - .eq(TAppOrderOut::getOrderStatus, OrderStatusEnum.CREATE.getCode()) - ); + .eq(TAppOrderOut::getOrderStatus, OrderStatusEnum.CREATE.getCode())); orders.forEach(this::processSingleOrder); } @@ -71,7 +71,7 @@ public class MyOutExecutor implements Job { } // 2. 获取库位深度 - Integer depth = depthStrategyService.getLocationDepth(stock.getLocationId()); + Integer depth = getLocationDepth(stock.getLocationId()); if (depth == null) { log.error("无法解析库位深度: {}", stock.getLocationId()); return; @@ -86,9 +86,7 @@ public class MyOutExecutor implements Job { List blockingStocks = getBlockingStocks(stock.getLocationId()); if (!blockingStocks.isEmpty()) { // 生成移库任务移走阻挡货物 - blockingStocks.forEach(blocking -> - tasks.add(createTransferTask(blocking, order)) - ); + blockingStocks.forEach(blocking -> tasks.add(createTransferTask(blocking, order))); } tasks.add(createOutTask(order, stock)); } else { @@ -113,8 +111,7 @@ public class MyOutExecutor implements Job { return appStockService.getOne( new LambdaQueryWrapper() .eq(TAppStock::getVehicleId, vehicleNo) - .eq(TAppStock::getStockStatus, WmsStockStatusEnums.OK.getCode()) - ); + .eq(TAppStock::getStockStatus, WmsStockStatusEnums.OK.getCode())); } /** @@ -122,7 +119,8 @@ public class MyOutExecutor implements Job { */ private List getBlockingStocks(String locationId) { String[] parts = locationId.split("-"); - if (parts.length < 4) return Collections.emptyList(); + if (parts.length < 4) + return Collections.emptyList(); // 构建深度1库位ID (格式: 排-列-层-01) String depth1Loc = parts[0] + "-" + parts[1] + "-" + parts[2] + "-01"; @@ -130,8 +128,7 @@ public class MyOutExecutor implements Job { return appStockService.list( new LambdaQueryWrapper() .eq(TAppStock::getLocationId, depth1Loc) - .eq(TAppStock::getStockStatus, WmsStockStatusEnums.OK.getCode()) - ); + .eq(TAppStock::getStockStatus, WmsStockStatusEnums.OK.getCode())); } /** @@ -152,6 +149,9 @@ public class MyOutExecutor implements Job { task.setCreateTime(LocalDateTime.now()); task.setTaskPriority(2); task.setRemark("移走深度1阻挡货物"); + + appCommon.updateWorkingLocations(blockingStock.getLocationId(), 1); + appCommon.updateWorkingLocations(target.getLocationId(), 1); return task; } @@ -165,12 +165,13 @@ public class MyOutExecutor implements Job { task.setTaskGroup(order.getOrderId()); task.setTaskStatus(WmsStackerTaskStatusEnums.WAIT.getCode()); task.setOrigin(stock.getLocationId()); - task.setDestination("C1"); + task.setDestination("CR"); task.setVehicleId(stock.getVehicleId()); task.setCreateTime(LocalDateTime.now()); task.setTaskPriority(1); - task.setRemark(stock.getLocationId().endsWith("-01") ? - "深度1直接出库" : "深度2出库"); + task.setRemark(stock.getLocationId().endsWith("-01") ? "深度1直接出库" : "深度2出库"); + + appCommon.updateWorkingLocations(stock.getLocationId(), 1); return task; } @@ -188,8 +189,7 @@ public class MyOutExecutor implements Job { appStockService.update( new LambdaUpdateWrapper() .eq(TAppStock::getStockId, stock.getStockId()) - .set(TAppStock::getStockStatus, WmsStockStatusEnums.OUTING.getCode()) - ); + .set(TAppStock::getStockStatus, WmsStockStatusEnums.OUTING.getCode())); } /** @@ -199,7 +199,28 @@ public class MyOutExecutor implements Job { appOrderOutService.update( new LambdaUpdateWrapper() .eq(TAppOrderOut::getRecordId, order.getRecordId()) - .set(TAppOrderOut::getOrderStatus, OrderStatusEnum.RUNNING.getCode()) - ); + .set(TAppOrderOut::getOrderStatus, OrderStatusEnum.RUNNING.getCode())); + } + + /** + * 获取指定库位的深度信息 + * 解析库位ID获取深度值 + */ + private Integer getLocationDepth(String locationId) { + if (StringUtils.isEmpty(locationId)) { + return 0; + } + + try { + // 解析库位ID格式:A03-1-2-3(排-列-层-深度) + String[] parts = locationId.split("-"); + if (parts.length >= 4) { + return Integer.parseInt(parts[3]); + } + } catch (Exception e) { + log.warn("解析库位深度失败:{}", locationId, e); + } + + return 0; } } \ No newline at end of file diff --git a/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/service/quartz_job/job_executor/WcsStackerTaskSender.java b/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/service/quartz_job/job_executor/WcsStackerTaskSender.java index c3497ad..1bcb834 100644 --- a/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/service/quartz_job/job_executor/WcsStackerTaskSender.java +++ b/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/service/quartz_job/job_executor/WcsStackerTaskSender.java @@ -6,6 +6,7 @@ import com.wms_main.constant.enums.wcs.WcsApiResponseCodeEnums; import com.wms_main.constant.enums.wcs.WcsStackerTaskStatusEnums; import com.wms_main.constant.enums.wcs.WcsStackerTaskTypeEnums; import com.wms_main.constant.enums.wms.WmsStackerTaskStatusEnums; +import com.wms_main.constant.enums.wms.WmsTaskTypeEnums; import com.wms_main.dao.ITAppTaskService; import com.wms_main.dao.ITAppWcsTaskService; import com.wms_main.model.bo.wcs.WcsStackerTask; @@ -19,10 +20,8 @@ import com.wms_main.service.business.IAgvLockService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.quartz.*; - import java.time.LocalDateTime; import java.util.List; -import java.util.Objects; /** * 定时任务定义类---发送堆垛机任务 @@ -58,73 +57,83 @@ public class WcsStackerTaskSender implements Job { */ @Override public void execute(JobExecutionContext jobExecutionContext) { + if (appWcsTaskService.exists(new LambdaQueryWrapper().eq(TAppWcsTask::getWcsTaskStatus, + WcsStackerTaskStatusEnums.WAIT.getCode()))) { + return; + } // 查询到所有的待下发的wcsTask并按优先级排序 List waitSendWcsTaskList = appWcsTaskService.list( new LambdaQueryWrapper() .eq(TAppWcsTask::getWcsTaskStatus, WcsStackerTaskStatusEnums.INIT.getCode())); + if (waitSendWcsTaskList == null || waitSendWcsTaskList.isEmpty()) { + return; + } // 按任务优先级排序(优先级高的先发送,数值大的优先级高) waitSendWcsTaskList.sort((task1, task2) -> Integer.compare(task2.getTaskPriority(), task1.getTaskPriority())); - // 发送任务 - for (TAppWcsTask wcsTask : waitSendWcsTaskList) { - // 生成请求 - WcsStackerTaskRequest request = new WcsStackerTaskRequest( - wcsTask.getWcsTaskId(), - wcsTask.getWcsTaskType(), - wcsTask.getTaskPriority(), - wcsTask.getOrigin(), - wcsTask.getDestination(), - wcsTask.getVehicleId()); - try { - WcsApiResponse wcsResponse = wcsApiService.sendWcsStackerTask(request); - if (wcsResponse != null && WcsApiResponseCodeEnums.SUCCESS.getCode() == wcsResponse.getCode()) { - // 更新当前的wcs任务状态为已发送 - appWcsTaskService.update( - new LambdaUpdateWrapper() - .set(TAppWcsTask::getWcsTaskStatus, WcsStackerTaskStatusEnums.WAIT.getCode()) - .set(TAppWcsTask::getSendTime, LocalDateTime.now()) - .eq(TAppWcsTask::getWcsTaskId, wcsTask.getWcsTaskId())); - // 更新当前wcs任务对应的wms任务为已发送 - appTaskService.update( - new LambdaUpdateWrapper() - .set(TAppTask::getTaskStatus, WmsStackerTaskStatusEnums.SEND.getCode()) - .eq(TAppTask::getWcsTaskId, wcsTask.getWcsTaskId())); - if (!wcsTask.getWcsTaskType().equals(WcsStackerTaskTypeEnums.TRANSFER.getCode())) { - // 任务发送成功后锁定资源(不区分出入库,都使用R1口) - try { - agvLockService.lockInboundPort("AGV", "R1"); - log.info("任务发送成功后锁定R1口成功,任务ID: {}", wcsTask.getWcsTaskId()); - } catch (Exception e) { - log.error("任务发送成功后锁定R1口失败,任务ID: {}", wcsTask.getWcsTaskId(), e); - } - } - TAppWcsTask doingWcsTask; - do { - doingWcsTask = appWcsTaskService.getOne(new LambdaQueryWrapper() - .eq(TAppWcsTask::getWcsTaskId, wcsTask.getWcsTaskId())); - Thread.sleep(1000); - } while (doingWcsTask != null && !Objects.equals(doingWcsTask.getWcsTaskStatus(), - WcsStackerTaskStatusEnums.FINISH.getCode())); - } else { - log.error("堆垛机任务发送失败,请求{},响应信息{}。", StringUtils.objectToString(request), - StringUtils.objectToString(wcsResponse)); - // 更新当前的wcs任务状态为异常 - appWcsTaskService.update( - new LambdaUpdateWrapper() - .set(TAppWcsTask::getWcsTaskStatus, WcsStackerTaskStatusEnums.EXCEPTION.getCode()) - .set(TAppWcsTask::getSendTime, LocalDateTime.now()) - .eq(TAppWcsTask::getWcsTaskId, wcsTask.getWcsTaskId())); - // 更新当前wcs任务对应的wms任务为异常 - appTaskService.update( - new LambdaUpdateWrapper() - .set(TAppTask::getTaskStatus, WmsStackerTaskStatusEnums.EXCEPTION.getCode()) - .eq(TAppTask::getWcsTaskId, wcsTask.getWcsTaskId())); - } - } catch (Exception e) { - log.error("堆垛机任务发送失败,任务号:{},载具号:{},起点:{},终点:{}。", request.getTaskId(), request.getVehicleNo(), - request.getOrigin(), request.getDestination()); + TAppWcsTask wcsTask = waitSendWcsTaskList.getFirst(); + if (wcsTask.getWcsTaskType().equals(WcsStackerTaskTypeEnums.OUT.getCode())) { + Boolean wmsAllow = agvLockService.canFeedToInboundPort(wcsTask.getDestination()); + if (!wmsAllow) { + return; } } + // 生成请求 + WcsStackerTaskRequest request = new WcsStackerTaskRequest( + wcsTask.getWcsTaskId(), + wcsTask.getWcsTaskType(), + wcsTask.getTaskPriority(), + wcsTask.getOrigin(), + wcsTask.getDestination(), + wcsTask.getVehicleId()); + try { + WcsApiResponse wcsResponse = wcsApiService.sendWcsStackerTask(request); + if (wcsResponse != null && WcsApiResponseCodeEnums.SUCCESS.getCode() == wcsResponse.getCode()) { + // 更新当前的wcs任务状态为已发送 + appWcsTaskService.update( + new LambdaUpdateWrapper() + .set(TAppWcsTask::getWcsTaskStatus, WcsStackerTaskStatusEnums.WAIT.getCode()) + .set(TAppWcsTask::getSendTime, LocalDateTime.now()) + .eq(TAppWcsTask::getWcsTaskId, wcsTask.getWcsTaskId())); + // 更新当前wcs任务对应的wms任务为已发送 + appTaskService.update( + new LambdaUpdateWrapper() + .set(TAppTask::getTaskStatus, WmsStackerTaskStatusEnums.SEND.getCode()) + .eq(TAppTask::getWcsTaskId, wcsTask.getWcsTaskId())); + + if (wcsTask.getWcsTaskType().equals(WcsStackerTaskTypeEnums.OUT.getCode())) { + try { + agvLockService.lockInboundPort("AGV", wcsTask.getDestination()); + } catch (Exception e) { + log.error("任务发送成功后锁定{}口失败,任务ID: {}", wcsTask.getDestination(), wcsTask.getWcsTaskId()); + } + } else if (wcsTask.getWcsTaskType().equals(WcsStackerTaskTypeEnums.IN.getCode())) { + try { + agvLockService.lockInboundPort("AGV", wcsTask.getOrigin()); + } catch (Exception e) { + log.error("任务发送成功后锁定{}口失败,任务ID: {}", wcsTask.getOrigin(), wcsTask.getWcsTaskId()); + } + } + } else { + log.error("堆垛机任务发送失败,请求{},响应信息{}。", StringUtils.objectToString(request), + StringUtils.objectToString(wcsResponse)); + // 更新当前的wcs任务状态为异常 + appWcsTaskService.update( + new LambdaUpdateWrapper() + .set(TAppWcsTask::getWcsTaskStatus, WcsStackerTaskStatusEnums.EXCEPTION.getCode()) + .set(TAppWcsTask::getSendTime, LocalDateTime.now()) + .eq(TAppWcsTask::getWcsTaskId, wcsTask.getWcsTaskId())); + // 更新当前wcs任务对应的wms任务为异常 + appTaskService.update( + new LambdaUpdateWrapper() + .set(TAppTask::getTaskStatus, WmsStackerTaskStatusEnums.EXCEPTION.getCode()) + .eq(TAppTask::getWcsTaskId, wcsTask.getWcsTaskId())); + } + } catch (Exception e) { + log.error("堆垛机任务发送失败,任务号:{},载具号:{},起点:{},终点:{}。", request.getTaskId(), request.getVehicleNo(), + request.getOrigin(), request.getDestination()); + } + } } diff --git a/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/service/quartz_job/job_executor/WmsTaskExecutor.java b/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/service/quartz_job/job_executor/WmsTaskExecutor.java index 643ecea..5d9fe78 100644 --- a/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/service/quartz_job/job_executor/WmsTaskExecutor.java +++ b/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/service/quartz_job/job_executor/WmsTaskExecutor.java @@ -11,7 +11,6 @@ import com.wms_main.model.po.TAppTask; import com.wms_main.model.po.TAppWcsTask; import com.wms_main.repository.utils.ConvertUtils; import com.wms_main.repository.utils.StringUtils; -import com.wms_main.repository.utils.UUIDUtils; import com.wms_main.service.business.IStackerTaskService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; diff --git a/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/service/quartz_job/job_executor/WmsTaskFinisher.java b/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/service/quartz_job/job_executor/WmsTaskFinisher.java index 5c03f56..bfd842e 100644 --- a/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/service/quartz_job/job_executor/WmsTaskFinisher.java +++ b/202504-Wms-MengYang-box/wms_serve_mengyang/src/main/java/com/wms_main/service/quartz_job/job_executor/WmsTaskFinisher.java @@ -1,16 +1,10 @@ package com.wms_main.service.quartz_job.job_executor; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.wms_main.constant.enums.wcs.WcsStackerTaskStatusEnums; -import com.wms_main.constant.enums.wcs.WcsStackerTaskTypeEnums; import com.wms_main.constant.enums.wms.WmsStackerTaskStatusEnums; import com.wms_main.constant.enums.wms.WmsTaskTypeEnums; -import com.wms_main.dao.ITAppOrderInService; import com.wms_main.dao.ITAppTaskService; -import com.wms_main.dao.ITAppWcsTaskService; -import com.wms_main.model.po.TAppOrderIn; import com.wms_main.model.po.TAppTask; -import com.wms_main.model.po.TAppWcsTask; import com.wms_main.repository.utils.StringUtils; import com.wms_main.service.business.IStackerTaskService; import lombok.RequiredArgsConstructor; @@ -36,11 +30,6 @@ public class WmsTaskFinisher implements Job { * 堆垛机任务业务服务 */ private final IStackerTaskService stackerTaskService; - - private final ITAppOrderInService appOrderInService; - - private final ITAppWcsTaskService appWcsTaskService; - /** * 运行定时任务 * 完成堆垛机任务 diff --git a/202504-Wms-MengYang-tp/db/wms_mengyang_tp.sql b/202504-Wms-MengYang-tp/db/wms_mengyang_tp.sql index e11e040..3808ff2 100644 --- a/202504-Wms-MengYang-tp/db/wms_mengyang_tp.sql +++ b/202504-Wms-MengYang-tp/db/wms_mengyang_tp.sql @@ -11,7 +11,7 @@ Target Server Version : 80042 (8.0.42) File Encoding : 65001 - Date: 21/07/2025 17:09:43 + Date: 12/08/2025 19:24:47 */ SET NAMES utf8mb4; @@ -45,7 +45,8 @@ CREATE TABLE `t_app_agv_lock` ( -- ---------------------------- -- Records of t_app_agv_lock -- ---------------------------- -INSERT INTO `t_app_agv_lock` VALUES ('1753067226623010000', 'AGV', 'R1', 0, 'INBOUND_PORT_LOCK', 1, 1, '2025-07-21 14:22:17', '2025-07-21 14:22:58', 600, '入库任务完成,批量释放锁定', '2025-07-21 11:07:07', '2025-07-21 14:22:58'); +INSERT INTO `t_app_agv_lock` VALUES ('1753067226623010000', 'AGV', 'R1', 0, 'INBOUND_PORT_LOCK', 1, 1, '2025-08-12 18:40:19', '2025-08-12 18:40:31', 600, '入库任务完成,批量释放锁定', '2025-07-21 11:07:07', '2025-08-12 18:40:31'); +INSERT INTO `t_app_agv_lock` VALUES ('1753502538890010000', '1003', 'C1', 0, 'OUTBOUND_PORT_LOCK', 1, 1, '2025-08-12 19:23:39', '2025-08-12 19:23:58', 600, '出库任务完成,批量释放锁定', '2025-07-26 12:02:19', '2025-08-12 19:23:57'); -- ---------------------------- -- Table structure for t_app_config @@ -69,6 +70,7 @@ INSERT INTO `t_app_config` VALUES ('11', 'ImportantDataClearInterval', '365', 1, INSERT INTO `t_app_config` VALUES ('12', 'wcsCanFeedUrl', 'http://10.90.83.39:9980/api/wms/wcsCanFeedUrl', 1, '查询wcs是否可上料'); INSERT INTO `t_app_config` VALUES ('13', 'WmsOrderInCallback', 'http://test/palletstacker/orderin/feedback', 1, 'WMS接受的入库执行后回调地址'); INSERT INTO `t_app_config` VALUES ('14', 'WmsOrderOutCallback', 'http://test/palletstacker/orderout/feedback', 1, 'WMS接受的出库执行后回调地址'); +INSERT INTO `t_app_config` VALUES ('15', 'wcsCanOutUrl', 'http://10.90.83.39:9980/api/wms/wcsCanOutUrl', 1, '查询wcs是否可出库'); INSERT INTO `t_app_config` VALUES ('2', 'WcsStackerTaskUrl', 'http://10.90.83.39:9980/api/wms/wmsTask/setStackerTask', 1, '发送堆垛机任务地址'); INSERT INTO `t_app_config` VALUES ('3', 'WcsReleaseBoxUrl', 'http://10.90.83.39:9980/api/wms/convey/disposeVehicle', 1, '发送释放站台箱子地址'); INSERT INTO `t_app_config` VALUES ('4', 'WcsCancelPickTaskUrl', 'http://10.90.83.39:9980/api/wms/convey/cancel', 1, '发送取消拣选任务地址'); @@ -2232,10 +2234,10 @@ CREATE TABLE `t_app_location` ( -- ---------------------------- -- Records of t_app_location -- ---------------------------- -INSERT INTO `t_app_location` VALUES ('A01-01-01-01', '', 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, '1004', 1, ''); -INSERT INTO `t_app_location` VALUES ('A01-01-01-02', '', 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, '1001', 1, ''); +INSERT INTO `t_app_location` VALUES ('A01-01-01-01', '', 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, '', 1, ''); +INSERT INTO `t_app_location` VALUES ('A01-01-01-02', '', 1, 0, 0, 0, 1, 1, 1, 1, 1, 2, '', 1, ''); INSERT INTO `t_app_location` VALUES ('A01-01-02-01', '', 1, 0, 0, 0, 1, 1, 1, 1, 2, 1, '', 1, ''); -INSERT INTO `t_app_location` VALUES ('A01-01-02-02', '', 1, 0, 1, 0, 1, 1, 1, 1, 2, 2, '1004', 1, ''); +INSERT INTO `t_app_location` VALUES ('A01-01-02-02', '', 1, 0, 0, 0, 1, 1, 1, 1, 2, 2, '', 1, ''); INSERT INTO `t_app_location` VALUES ('A01-01-03-01', '', 1, 0, 0, 0, 1, 1, 1, 1, 3, 1, '', 1, ''); INSERT INTO `t_app_location` VALUES ('A01-01-03-02', '', 1, 0, 0, 0, 1, 1, 1, 1, 3, 2, '', 1, ''); INSERT INTO `t_app_location` VALUES ('A01-01-04-01', '', 1, 0, 0, 0, 1, 1, 1, 1, 4, 1, '', 1, ''); @@ -2283,7 +2285,7 @@ INSERT INTO `t_app_location` VALUES ('A01-01-24-02', '', 1, 0, 0, 0, 1, 1, 1, 1, INSERT INTO `t_app_location` VALUES ('A01-01-25-01', '', 1, 0, 0, 0, 1, 1, 1, 1, 25, 1, '', 1, ''); INSERT INTO `t_app_location` VALUES ('A01-01-25-02', '', 1, 0, 0, 0, 1, 1, 1, 1, 25, 2, '', 1, ''); INSERT INTO `t_app_location` VALUES ('A01-02-01-01', '', 1, 0, 0, 0, 1, 1, 1, 2, 1, 1, '', 1, ''); -INSERT INTO `t_app_location` VALUES ('A01-02-01-02', '', 1, 0, 1, 0, 1, 1, 1, 2, 1, 2, '1005', 1, ''); +INSERT INTO `t_app_location` VALUES ('A01-02-01-02', '', 1, 0, 0, 0, 1, 1, 1, 2, 1, 2, '', 1, ''); INSERT INTO `t_app_location` VALUES ('A01-02-02-01', '', 1, 0, 0, 0, 1, 1, 1, 2, 2, 1, '', 1, ''); INSERT INTO `t_app_location` VALUES ('A01-02-02-02', '', 1, 0, 0, 0, 1, 1, 1, 2, 2, 2, '', 1, ''); INSERT INTO `t_app_location` VALUES ('A01-02-03-01', '', 1, 0, 0, 0, 1, 1, 1, 2, 3, 1, '', 1, ''); @@ -3232,10 +3234,10 @@ INSERT INTO `t_app_location` VALUES ('A01-20-24-01', '', 1, 0, 0, 0, 1, 1, 1, 20 INSERT INTO `t_app_location` VALUES ('A01-20-24-02', '', 1, 0, 0, 0, 1, 1, 1, 20, 24, 2, '', 1, ''); INSERT INTO `t_app_location` VALUES ('A01-20-25-01', '', 1, 0, 0, 0, 1, 1, 1, 20, 25, 1, '', 1, ''); INSERT INTO `t_app_location` VALUES ('A01-20-25-02', '', 1, 0, 0, 0, 1, 1, 1, 20, 25, 2, '', 1, ''); -INSERT INTO `t_app_location` VALUES ('A02-01-01-01', '', 1, 0, 1, 0, 1, 1, 2, 1, 1, 1, '1007', 1, ''); -INSERT INTO `t_app_location` VALUES ('A02-01-01-02', '', 1, 0, 0, 0, 1, 1, 2, 1, 1, 2, '', 1, ''); +INSERT INTO `t_app_location` VALUES ('A02-01-01-01', '', 1, 0, 0, 1, 1, 1, 2, 1, 1, 1, '', 1, ''); +INSERT INTO `t_app_location` VALUES ('A02-01-01-02', '', 1, 0, 0, 1, 1, 1, 2, 1, 1, 2, '', 1, ''); INSERT INTO `t_app_location` VALUES ('A02-01-02-01', '', 1, 0, 0, 0, 1, 1, 2, 1, 2, 1, '', 1, ''); -INSERT INTO `t_app_location` VALUES ('A02-01-02-02', '', 1, 0, 1, 0, 1, 1, 2, 1, 2, 2, '1003', 1, ''); +INSERT INTO `t_app_location` VALUES ('A02-01-02-02', '', 1, 0, 0, 0, 1, 1, 2, 1, 2, 2, '1007', 1, ''); INSERT INTO `t_app_location` VALUES ('A02-01-03-01', '', 1, 0, 0, 0, 1, 1, 2, 1, 3, 1, '', 1, ''); INSERT INTO `t_app_location` VALUES ('A02-01-03-02', '', 1, 0, 0, 0, 1, 1, 2, 1, 3, 2, '', 1, ''); INSERT INTO `t_app_location` VALUES ('A02-01-04-01', '', 1, 0, 0, 0, 1, 1, 2, 1, 4, 1, '', 1, ''); @@ -15694,12 +15696,13 @@ CREATE TABLE `t_app_stock` ( -- ---------------------------- -- Records of t_app_stock -- ---------------------------- -INSERT INTO `t_app_stock` VALUES ('1752563208728010000', '1001', 'A01-01-01-02', 0, 'testTaskId1', '2025-07-15 15:06:49', 'wms', NULL, ''); +INSERT INTO `t_app_stock` VALUES ('1752563208728010000', '1001', '', 2, 'testTaskId1', '2025-07-15 15:06:49', 'wms', NULL, ''); INSERT INTO `t_app_stock` VALUES ('1752564042871010000', '1002', '', 2, 'testTaskId2', '2025-07-15 15:20:43', 'wms', NULL, ''); -INSERT INTO `t_app_stock` VALUES ('1752564113411010000', '1003', 'A02-01-02-02', 0, 'testTaskId3', '2025-07-15 15:21:53', 'wms', NULL, ''); -INSERT INTO `t_app_stock` VALUES ('1753068264063010000', '1004', 'A01-01-02-02', 0, 'testOrderId4', '2025-07-21 11:24:24', 'wms', NULL, ''); -INSERT INTO `t_app_stock` VALUES ('1753068333061010000', '1005', 'A01-02-01-02', 0, 'testOrderId5', '2025-07-21 11:25:33', 'wms', NULL, ''); -INSERT INTO `t_app_stock` VALUES ('1753078978369010000', '1007', 'A02-01-01-01', 0, 'testOrderId7', '2025-07-21 14:22:58', 'wms', NULL, ''); +INSERT INTO `t_app_stock` VALUES ('1752564113411010000', '1003', '', 2, 'testTaskId3', '2025-07-15 15:21:53', 'wms', NULL, ''); +INSERT INTO `t_app_stock` VALUES ('1753068264063010000', '1004', '', 2, 'testOrderId4', '2025-07-21 11:24:24', 'wms', NULL, ''); +INSERT INTO `t_app_stock` VALUES ('1753068333061010000', '1005', '', 2, 'testOrderId5', '2025-07-21 11:25:33', 'wms', NULL, ''); +INSERT INTO `t_app_stock` VALUES ('1753078978369010000', '1007', '', 2, 'testOrderId7', '2025-07-21 14:22:58', 'wms', NULL, ''); +INSERT INTO `t_app_stock` VALUES ('1754995231251010000', '1006', '', 2, 'testOrderId2', '2025-08-12 18:40:31', 'wms', NULL, ''); -- ---------------------------- -- Table structure for t_app_stock_update @@ -17804,6 +17807,23 @@ INSERT INTO `t_app_task_bak` VALUES ('1753068368095010000', 2, 4, 1, 'testOrderI INSERT INTO `t_app_task_bak` VALUES ('1753078496789010000', 1, 4, 1, 'testOrderId2', '1002', 'R1', 'A02-01-01-02', '1753078496789010000', '2025-07-21 14:14:57', '2025-07-21 14:15:44', 'wcs', NULL); INSERT INTO `t_app_task_bak` VALUES ('1753078910378010000', 2, 4, 1, 'testOrderI2', '1002', 'A02-01-01-02', 'C1', '1753078910378010000', '2025-07-21 14:21:50', '2025-07-21 14:22:32', NULL, '深度2出库'); INSERT INTO `t_app_task_bak` VALUES ('1753078936593010000', 1, 4, 1, 'testOrderId7', '1007', 'R1', 'A02-01-01-01', '1753078936593010000', '2025-07-21 14:22:17', '2025-07-21 14:22:58', 'wcs', NULL); +INSERT INTO `t_app_task_bak` VALUES ('1753501954248010000', 1, 4, 1, 'testOrderId2', '1002', 'R1', 'A02-02-01-02', '1753501954248010000', '2025-07-26 11:52:34', '2025-07-26 11:53:22', 'wcs', NULL); +INSERT INTO `t_app_task_bak` VALUES ('1753502199802010000', 9, 4, 2, 'testOrderId3', '1007', 'A02-01-01-01', 'A01-01-01-01', '1753502199802010000', '2025-07-26 11:56:40', '2025-07-26 12:02:12', NULL, '移走深度1阻挡货物'); +INSERT INTO `t_app_task_bak` VALUES ('1753502199802010001', 2, 4, 1, 'testOrderId3', '1003', 'A02-01-01-02', 'C1', '1753502199802010001', '2025-07-26 11:56:40', '2025-07-26 12:02:49', NULL, '深度2出库'); +INSERT INTO `t_app_task_bak` VALUES ('1754995145109010000', 1, 4, 1, 'testOrderId2', '1003', 'R1', 'A02-01-01-02', '1754995145109010000', '2025-08-12 18:39:05', '2025-08-12 18:39:17', 'wcs', NULL); +INSERT INTO `t_app_task_bak` VALUES ('1754995212290010000', 1, 4, 1, 'testOrderId2', '1006', 'R1', 'A02-01-01-01', '1754995212290010000', '2025-08-12 18:40:12', '2025-08-12 18:40:31', 'wcs', NULL); +INSERT INTO `t_app_task_bak` VALUES ('1754995262283010000', 9, 4, 2, 'testOrderId3', '1007', 'A01-01-01-01', 'A02-01-02-02', '1754995262283010000', '2025-08-12 18:41:02', '2025-08-12 18:42:31', NULL, '移走深度1阻挡货物'); +INSERT INTO `t_app_task_bak` VALUES ('1754995262286010000', 2, 4, 1, 'testOrderId3', '1001', 'A01-01-01-02', 'C1', '1754995262286010000', '2025-08-12 18:41:02', '2025-08-12 19:00:08', NULL, '深度2出库'); +INSERT INTO `t_app_task_bak` VALUES ('1754996433086010000', 9, 4, 2, 'testOrderId3', '1006', 'A02-01-01-01', 'A01-01-01-02', '1754996433086010000', '2025-08-12 19:00:33', '2025-08-12 19:01:24', NULL, '移走深度1阻挡货物'); +INSERT INTO `t_app_task_bak` VALUES ('1754996433091010000', 2, 4, 1, 'testOrderId3', '1003', 'A02-01-01-02', 'C1', '1754996433091010000', '2025-08-12 19:00:33', '2025-08-12 19:02:37', NULL, '深度2出库'); +INSERT INTO `t_app_task_bak` VALUES ('1754996601955010000', 2, 4, 1, 'testOrderId3', '1005', 'A01-02-01-02', 'C1', '1754996601955010000', '2025-08-12 19:03:22', '2025-08-12 19:05:20', NULL, '深度2出库'); +INSERT INTO `t_app_task_bak` VALUES ('1754996825111010000', 9, 4, 2, 'testOrderId3', '1004', 'A01-01-01-01', 'A02-01-01-02', '1754996825111010000', '2025-08-12 19:07:05', '2025-08-12 19:08:16', NULL, '移走深度1阻挡货物'); +INSERT INTO `t_app_task_bak` VALUES ('1754996825117010000', 2, 4, 1, 'testOrderId3', '1006', 'A01-01-01-02', 'C1', '1754996825117010000', '2025-08-12 19:07:05', '2025-08-12 19:09:07', NULL, '深度2出库'); +INSERT INTO `t_app_task_bak` VALUES ('1754997163437010000', 9, 4, 2, 'testOrderId3', '1002', 'A02-01-01-01', 'A01-01-01-02', '1754997163437010000', '2025-08-12 19:12:43', '2025-08-12 19:13:09', NULL, '移走深度1阻挡货物'); +INSERT INTO `t_app_task_bak` VALUES ('1754997163441010000', 2, 4, 1, 'testOrderId3', '1004', 'A02-01-01-02', 'C1', '1754997163441010000', '2025-08-12 19:12:43', '2025-08-12 19:13:40', NULL, '深度2出库'); +INSERT INTO `t_app_task_bak` VALUES ('1754997669944010000', 9, 4, 2, 'testOrderId3', '1007', 'A01-01-01-01', 'A02-01-01-02', '1754997669944010000', '2025-08-12 19:21:10', '2025-08-12 19:21:53', NULL, '移走深度1阻挡货物'); +INSERT INTO `t_app_task_bak` VALUES ('1754997669949010000', 2, 4, 1, 'testOrderId3', '1002', 'A01-01-01-02', 'C1', '1754997669949010000', '2025-08-12 19:21:10', '2025-08-12 19:23:12', NULL, '深度2出库'); +INSERT INTO `t_app_task_bak` VALUES ('1754997816795010000', 2, 4, 1, 'testOrderId3', '1007', 'A02-01-01-02', 'C1', '1754997816795010000', '2025-08-12 19:23:37', '2025-08-12 19:23:57', NULL, '深度2出库'); INSERT INTO `t_app_task_bak` VALUES ('BACK_1742627181353010000', 1, 4, 1, NULL, 'ASRS-0348', 'P3', 'A02-35-08', '1742627207227010000', '2025-03-22 15:06:21', '2025-03-22 15:07:39', 'wms_auto', ''); INSERT INTO `t_app_task_bak` VALUES ('BACK_1742627210434010000', 1, 4, 1, NULL, 'ASRS-0347', 'P3', 'A04-32-07', '1742627236328010000', '2025-03-22 15:06:50', '2025-03-22 15:08:04', 'wms_auto', ''); INSERT INTO `t_app_task_bak` VALUES ('BACK_1742775892056010000', 1, 4, 1, NULL, 'ASRS-0315', 'P3', 'A01-34-06', '1742775918384010000', '2025-03-24 08:24:52', '2025-03-24 08:26:22', 'wms_auto', ''); @@ -18622,12 +18642,13 @@ CREATE TABLE `t_app_vehicle` ( -- ---------------------------- -- Records of t_app_vehicle -- ---------------------------- -INSERT INTO `t_app_vehicle` VALUES ('1001', 2, NULL, 0, 'A01-01-01-02', '2025-07-21 11:17:03'); -INSERT INTO `t_app_vehicle` VALUES ('1002', 3, NULL, 0, '', '2025-07-21 14:15:45'); -INSERT INTO `t_app_vehicle` VALUES ('1003', 2, NULL, 0, 'A02-01-02-02', '2025-07-21 11:07:28'); -INSERT INTO `t_app_vehicle` VALUES ('1004', 2, NULL, 0, 'A01-01-02-02', '2025-07-21 11:24:24'); -INSERT INTO `t_app_vehicle` VALUES ('1005', 2, NULL, 0, 'A01-02-01-02', '2025-07-21 11:25:33'); -INSERT INTO `t_app_vehicle` VALUES ('1007', 2, NULL, 0, 'A02-01-01-01', '2025-07-21 14:22:58'); +INSERT INTO `t_app_vehicle` VALUES ('1001', 3, NULL, 0, '', '2025-07-21 11:17:03'); +INSERT INTO `t_app_vehicle` VALUES ('1002', 3, NULL, 0, '', '2025-07-26 11:53:23'); +INSERT INTO `t_app_vehicle` VALUES ('1003', 3, NULL, 0, '', '2025-08-12 18:39:17'); +INSERT INTO `t_app_vehicle` VALUES ('1004', 3, NULL, 0, '', '2025-07-21 11:24:24'); +INSERT INTO `t_app_vehicle` VALUES ('1005', 3, NULL, 0, '', '2025-07-21 11:25:33'); +INSERT INTO `t_app_vehicle` VALUES ('1006', 3, NULL, 0, '', '2025-08-12 18:40:31'); +INSERT INTO `t_app_vehicle` VALUES ('1007', 3, NULL, 0, '', '2025-07-21 14:22:58'); -- ---------------------------- -- Table structure for t_app_wcs_task @@ -20656,6 +20677,23 @@ INSERT INTO `t_app_wcs_task_bak` VALUES ('1753068368095010000', 1, 2, 1, '1002', INSERT INTO `t_app_wcs_task_bak` VALUES ('1753078496789010000', 1, 1, 1, '1002', 'R1', 'A02-01-01-02', '2025-07-21 14:14:57', '2025-07-21 14:15:03', NULL, NULL); INSERT INTO `t_app_wcs_task_bak` VALUES ('1753078910378010000', 1, 2, 1, '1002', 'A02-01-01-02', 'C1', '2025-07-21 14:21:51', '2025-07-21 14:21:58', NULL, NULL); INSERT INTO `t_app_wcs_task_bak` VALUES ('1753078936593010000', 1, 1, 1, '1007', 'R1', 'A02-01-01-01', '2025-07-21 14:22:17', '2025-07-21 14:22:39', NULL, NULL); +INSERT INTO `t_app_wcs_task_bak` VALUES ('1753501954248010000', 1, 1, 1, '1002', 'R1', 'A02-02-01-02', '2025-07-26 11:52:35', '2025-07-26 11:52:41', NULL, NULL); +INSERT INTO `t_app_wcs_task_bak` VALUES ('1753502199802010000', 1, 9, 2, '1007', 'A02-01-01-01', 'A01-01-01-01', '2025-07-26 11:56:41', '2025-07-26 11:56:47', NULL, NULL); +INSERT INTO `t_app_wcs_task_bak` VALUES ('1753502199802010001', 1, 2, 1, '1003', 'A02-01-01-02', 'C1', '2025-07-26 11:56:41', '2025-07-26 12:02:19', NULL, NULL); +INSERT INTO `t_app_wcs_task_bak` VALUES ('1754995145109010000', 1, 1, 1, '1003', 'R1', 'A02-01-01-02', '2025-08-12 18:39:05', '2025-08-12 18:39:11', NULL, NULL); +INSERT INTO `t_app_wcs_task_bak` VALUES ('1754995212290010000', 1, 1, 1, '1006', 'R1', 'A02-01-01-01', '2025-08-12 18:40:13', '2025-08-12 18:40:19', NULL, NULL); +INSERT INTO `t_app_wcs_task_bak` VALUES ('1754995262283010000', 1, 9, 2, '1007', 'A01-01-01-01', 'A02-01-02-02', '2025-08-12 18:41:03', '2025-08-12 18:41:09', NULL, NULL); +INSERT INTO `t_app_wcs_task_bak` VALUES ('1754995262286010000', 1, 2, 1, '1001', 'A01-01-01-02', 'C1', '2025-08-12 18:41:03', '2025-08-12 18:42:38', NULL, NULL); +INSERT INTO `t_app_wcs_task_bak` VALUES ('1754996433086010000', 1, 9, 2, '1006', 'A02-01-01-01', 'A01-01-01-02', '2025-08-12 19:00:34', '2025-08-12 19:00:40', NULL, NULL); +INSERT INTO `t_app_wcs_task_bak` VALUES ('1754996433091010000', 1, 2, 1, '1003', 'A02-01-01-02', 'C1', '2025-08-12 19:00:34', '2025-08-12 19:01:29', NULL, NULL); +INSERT INTO `t_app_wcs_task_bak` VALUES ('1754996601955010000', 1, 2, 1, '1005', 'A01-02-01-02', 'C1', '2025-08-12 19:03:23', '2025-08-12 19:03:29', NULL, NULL); +INSERT INTO `t_app_wcs_task_bak` VALUES ('1754996825111010000', 1, 9, 2, '1004', 'A01-01-01-01', 'A02-01-01-02', '2025-08-12 19:07:06', '2025-08-12 19:07:12', NULL, NULL); +INSERT INTO `t_app_wcs_task_bak` VALUES ('1754996825117010000', 1, 2, 1, '1006', 'A01-01-01-02', 'C1', '2025-08-12 19:07:06', '2025-08-12 19:08:21', NULL, NULL); +INSERT INTO `t_app_wcs_task_bak` VALUES ('1754997163437010000', 1, 9, 2, '1002', 'A02-01-01-01', 'A01-01-01-02', '2025-08-12 19:12:44', '2025-08-12 19:12:45', NULL, NULL); +INSERT INTO `t_app_wcs_task_bak` VALUES ('1754997163441010000', 1, 2, 1, '1004', 'A02-01-01-02', 'C1', '2025-08-12 19:12:44', '2025-08-12 19:13:10', NULL, NULL); +INSERT INTO `t_app_wcs_task_bak` VALUES ('1754997669944010000', 1, 9, 2, '1007', 'A01-01-01-01', 'A02-01-01-02', '2025-08-12 19:21:11', '2025-08-12 19:21:12', NULL, NULL); +INSERT INTO `t_app_wcs_task_bak` VALUES ('1754997669949010000', 1, 2, 1, '1002', 'A01-01-01-02', 'C1', '2025-08-12 19:21:11', '2025-08-12 19:21:54', NULL, NULL); +INSERT INTO `t_app_wcs_task_bak` VALUES ('1754997816795010000', 1, 2, 1, '1007', 'A02-01-01-02', 'C1', '2025-08-12 19:23:38', '2025-08-12 19:23:39', NULL, NULL); -- ---------------------------- -- Table structure for t_app_work diff --git a/202504-Wms-MengYang-tp/wms_serve_mengyang/api-tests/MyWmsController.http b/202504-Wms-MengYang-tp/wms_serve_mengyang/api-tests/MyWmsController.http index bc549ed..7b227eb 100644 --- a/202504-Wms-MengYang-tp/wms_serve_mengyang/api-tests/MyWmsController.http +++ b/202504-Wms-MengYang-tp/wms_serve_mengyang/api-tests/MyWmsController.http @@ -8,7 +8,7 @@ Content-Type: application/json { "taskId": "testOrderId2", - "vehicleNo": "1002" + "vehicleNo": "1006" } ### 2. 出库订单接口 @@ -17,7 +17,7 @@ Content-Type: application/json { "taskId": "testOrderId3", - "vehicleNo": "1003" + "vehicleNo": "1007" } ### 3. 库存查询接口 - 仅按载具查询 @@ -28,7 +28,7 @@ Content-Type: application/json "requestId": "testOrderId1", "details": [ { - "vehicleNo": "1001" + "vehicleNo": "1005" } ] } diff --git a/202504-Wms-MengYang-tp/wms_serve_mengyang/api-tests/TaskController.http b/202504-Wms-MengYang-tp/wms_serve_mengyang/api-tests/TaskController.http index 6b7237c..2e55c9c 100644 --- a/202504-Wms-MengYang-tp/wms_serve_mengyang/api-tests/TaskController.http +++ b/202504-Wms-MengYang-tp/wms_serve_mengyang/api-tests/TaskController.http @@ -8,7 +8,7 @@ Content-Type: application/json { "origin": "R1", - "vehicleNo": "1002", + "vehicleNo": "1006", "codeMessage": "test", "remark": "载具入库测试" } @@ -18,9 +18,9 @@ POST {{baseUrl}}/wms/task/sendTaskResult Content-Type: application/json { - "taskId": "1753502199802010001", + "taskId": "1754997816795010000", "taskStatus": 100, - "vehicleNo": "1003", + "vehicleNo": "1007", "destination": "C1", "message": "任务执行成功" } diff --git a/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/app/AppCommon.java b/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/app/AppCommon.java index e92c358..040cd3b 100644 --- a/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/app/AppCommon.java +++ b/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/app/AppCommon.java @@ -1,15 +1,19 @@ package com.wms_main.app; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.wms_main.dao.ITAppConfigService; import com.wms_main.dao.ITAppGoodsService; import com.wms_main.dao.ITAppLocationService; import com.wms_main.model.po.TAppConfig; import com.wms_main.model.po.TAppGoods; import com.wms_main.model.po.TAppLocation; +import com.wms_main.repository.utils.StringUtils; + import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -21,6 +25,8 @@ import java.util.Map; @RequiredArgsConstructor @Slf4j public class AppCommon { + private final static Integer MIN_DEPTH = 1; + private final static Integer MAX_DEPTH = 3; /** * 配置服务 */ @@ -112,6 +118,37 @@ public class AppCommon { } } + /** + * 根据库位id获取排列层所有深度的库位信息列表 + * @param locationId 库位id + * @return 库位详情列表 + */ + public List getLocationListByLocationId(String locationId) { + List resList = new ArrayList<>(); + List strList = List.of(locationId.split("-")).subList(0, 3); + for (int depth = MIN_DEPTH; depth <= MAX_DEPTH; ++depth) { + String queryLocationId = String.join("-", strList) + String.format("-%02d", depth); + TAppLocation tempLocation = getInstantLocationByLocationId(queryLocationId); + if (tempLocation != null) { + resList.add(tempLocation); + } + } + return resList; + } + + public Boolean updateWorkingLocations(String locationId, Integer val) { + if (!StringUtils.isEmpty(locationId)) { + List updateLocations = getLocationListByLocationId(locationId); + if (updateLocations.size() > 0) { + return appLocationService.update(new LambdaUpdateWrapper() + .in(TAppLocation::getLocationId, updateLocations.stream().map(TAppLocation::getLocationId).toList()) + .set(TAppLocation::getIsWorking, val)); + } + return false; + } + return false; + } + /** * 根据料号获取物料信息 * @param goodsId 料号 diff --git a/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/constant/enums/wms/StorageTypeEnums.java b/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/constant/enums/wms/StorageTypeEnums.java index 3ff048f..933bcb1 100644 --- a/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/constant/enums/wms/StorageTypeEnums.java +++ b/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/constant/enums/wms/StorageTypeEnums.java @@ -1,6 +1,5 @@ package com.wms_main.constant.enums.wms; -import lombok.AllArgsConstructor; import lombok.Getter; @Getter diff --git a/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/controller/wms/LocationController.java b/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/controller/wms/LocationController.java index 2157c7f..7804347 100644 --- a/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/controller/wms/LocationController.java +++ b/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/controller/wms/LocationController.java @@ -3,7 +3,6 @@ package com.wms_main.controller.wms; import com.wms_main.model.dto.query.LocationQuery; import com.wms_main.model.dto.response.wms.BaseWmsApiResponse; import com.wms_main.model.dto.response.wms.WmsApiResponse; -import com.wms_main.model.po.TAppLocation; import com.wms_main.service.controller.ILocationControllerService; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; diff --git a/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/controller/wms/TestController.java b/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/controller/wms/TestController.java index 4133a54..f4eadfd 100644 --- a/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/controller/wms/TestController.java +++ b/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/controller/wms/TestController.java @@ -1,12 +1,6 @@ package com.wms_main.controller.wms; -import com.wms_main.app.AppCommon; -import com.wms_main.dao.ITSysMenuService; -import com.wms_main.dao.ITSysPermissionService; -import com.wms_main.dao.ITSysRoleService; -import com.wms_main.dao.ITSysUserService; import com.wms_main.excel.easypoi.service.IImportExcelEasyPoi; -import com.wms_main.model.dto.request.wms.BaseWmsRequest; import com.wms_main.model.dto.query.DbsQuery; import com.wms_main.model.dto.request.wms.InitKateWorkRequest; import com.wms_main.model.vo.others.FileVo; @@ -17,7 +11,6 @@ import com.wms_main.repository.utils.UUIDUtils; import com.wms_main.service.controller.ITestControllerService; import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; -import org.quartz.Scheduler; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -33,16 +26,9 @@ import java.util.List; @RequestMapping("/test") public class TestController { - private final AppCommon appCommon; - private final Scheduler scheduler; private final IImportExcelEasyPoi importExcelEasyPoi; private final ITestControllerService testService; - private final ITSysUserService userService;// User服务 - private final ITSysRoleService roleService;// Role服务 - private final ITSysPermissionService permissionService;// Permission服务 - private final ITSysMenuService menuService;// Menu服务 - @GetMapping(value = "/test") public String testApi() { return UUIDUtils.getNewUUID(); diff --git a/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/dao/ITAppImageService.java b/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/dao/ITAppImageService.java index b9611d8..62aba3f 100644 --- a/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/dao/ITAppImageService.java +++ b/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/dao/ITAppImageService.java @@ -1,7 +1,6 @@ package com.wms_main.dao; import com.baomidou.mybatisplus.extension.service.IService; -import com.wms_main.model.po.TAppDbs; import com.wms_main.model.po.TAppImage; import java.util.List; diff --git a/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/dao/ITAppProductExtendService.java b/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/dao/ITAppProductExtendService.java index 905e8fb..6f1386b 100644 --- a/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/dao/ITAppProductExtendService.java +++ b/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/dao/ITAppProductExtendService.java @@ -1,7 +1,6 @@ package com.wms_main.dao; import com.baomidou.mybatisplus.extension.service.IService; -import com.wms_main.model.po.TAppDbs; import com.wms_main.model.po.TAppProductExtend; import java.util.List; diff --git a/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/dao/ITAppProductService.java b/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/dao/ITAppProductService.java index 67fcba2..ac587be 100644 --- a/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/dao/ITAppProductService.java +++ b/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/dao/ITAppProductService.java @@ -1,7 +1,6 @@ package com.wms_main.dao; import com.baomidou.mybatisplus.extension.service.IService; -import com.wms_main.model.po.TAppDbs; import com.wms_main.model.po.TAppProduct; import java.util.List; diff --git a/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/dao/ITAppStandWorkService.java b/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/dao/ITAppStandWorkService.java index 82b6719..fd83e9e 100644 --- a/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/dao/ITAppStandWorkService.java +++ b/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/dao/ITAppStandWorkService.java @@ -1,7 +1,6 @@ package com.wms_main.dao; import com.baomidou.mybatisplus.extension.service.IService; -import com.wms_main.model.po.TAppStand; import com.wms_main.model.po.TAppStandWork; /** diff --git a/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/dao/ITAppWcsTaskService.java b/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/dao/ITAppWcsTaskService.java index 4da218c..246b366 100644 --- a/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/dao/ITAppWcsTaskService.java +++ b/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/dao/ITAppWcsTaskService.java @@ -3,8 +3,6 @@ package com.wms_main.dao; import com.baomidou.mybatisplus.extension.service.IService; import com.wms_main.model.po.TAppWcsTask; -import java.util.List; - /** * wcs任务表服务 */ diff --git a/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/dao/ITAppWorkRecordService.java b/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/dao/ITAppWorkRecordService.java index a593c87..5c6913a 100644 --- a/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/dao/ITAppWorkRecordService.java +++ b/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/dao/ITAppWorkRecordService.java @@ -1,7 +1,6 @@ package com.wms_main.dao; import com.baomidou.mybatisplus.extension.service.IService; -import com.wms_main.model.po.TAppWork; import com.wms_main.model.po.TAppWorkRecord; /** diff --git a/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/dao/impl/TAppImageServiceImpl.java b/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/dao/impl/TAppImageServiceImpl.java index 167e02b..66525f1 100644 --- a/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/dao/impl/TAppImageServiceImpl.java +++ b/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/dao/impl/TAppImageServiceImpl.java @@ -1,11 +1,8 @@ package com.wms_main.dao.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.wms_main.dao.ITAppDbsService; import com.wms_main.dao.ITAppImageService; -import com.wms_main.mapper.AppDbsMapper; import com.wms_main.mapper.AppImageMapper; -import com.wms_main.model.po.TAppDbs; import com.wms_main.model.po.TAppImage; import org.springframework.stereotype.Service; diff --git a/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/dao/impl/TAppLocationServiceImpl.java b/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/dao/impl/TAppLocationServiceImpl.java index 7f08f1f..ef3645f 100644 --- a/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/dao/impl/TAppLocationServiceImpl.java +++ b/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/dao/impl/TAppLocationServiceImpl.java @@ -8,7 +8,6 @@ import com.wms_main.mapper.AppLocationMapper; import com.wms_main.model.po.TAppLocation; import org.springframework.stereotype.Service; -import java.util.EmptyStackException; import java.util.List; /** diff --git a/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/dao/impl/TAppProductExtendServiceImpl.java b/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/dao/impl/TAppProductExtendServiceImpl.java index 3ff6652..0cb8e9c 100644 --- a/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/dao/impl/TAppProductExtendServiceImpl.java +++ b/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/dao/impl/TAppProductExtendServiceImpl.java @@ -1,11 +1,8 @@ package com.wms_main.dao.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.wms_main.dao.ITAppDbsService; import com.wms_main.dao.ITAppProductExtendService; -import com.wms_main.mapper.AppDbsMapper; import com.wms_main.mapper.AppProductExtendsMapper; -import com.wms_main.model.po.TAppDbs; import com.wms_main.model.po.TAppProductExtend; import org.springframework.stereotype.Service; diff --git a/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/dao/impl/TAppProductServiceImpl.java b/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/dao/impl/TAppProductServiceImpl.java index 8888db0..978cfa7 100644 --- a/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/dao/impl/TAppProductServiceImpl.java +++ b/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/dao/impl/TAppProductServiceImpl.java @@ -1,13 +1,9 @@ package com.wms_main.dao.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.wms_main.dao.ITAppDbsService; import com.wms_main.dao.ITAppProductService; -import com.wms_main.mapper.AppDbsMapper; import com.wms_main.mapper.AppProductMapper; -import com.wms_main.model.po.TAppDbs; import com.wms_main.model.po.TAppProduct; -import com.wms_main.model.po.TAppSingleProduct; import org.springframework.stereotype.Service; import java.util.List; diff --git a/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/dao/impl/TAppWcsTaskServiceImpl.java b/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/dao/impl/TAppWcsTaskServiceImpl.java index 06a88bb..a84270a 100644 --- a/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/dao/impl/TAppWcsTaskServiceImpl.java +++ b/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/dao/impl/TAppWcsTaskServiceImpl.java @@ -38,7 +38,6 @@ public class TAppWcsTaskServiceImpl extends ServiceImpl sendWcsStackerTask(WcsStackerTaskRequest request) { // 设置http请求 HttpRequest httpRequest = HttpRequest.postInstanceOf(appCommon.getConfigByKey(AppConfigKeyEnums.WCS_STACKER_TASK_URL.getKey()), request); - HttpResponse httpResponse = httpClient.httpPost(httpRequest); - if (httpResponse != null && httpResponse.isSuccess()) { - WcsApiResponse response = new WcsApiResponse<>(); - response = httpResponse.getData(response.getClass().asSubclass(WcsApiResponse.class)); - return response; - } + // HttpResponse httpResponse = httpClient.httpPost(httpRequest); + // if (httpResponse != null && httpResponse.isSuccess()) { + // WcsApiResponse response = new WcsApiResponse<>(); + // response = httpResponse.getData(response.getClass().asSubclass(WcsApiResponse.class)); + // return response; + // } // TODO success -> error return WcsApiResponse.success("请求未获得响应信息。", null); } diff --git a/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/service/business/IDepthStrategyService.java b/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/service/business/IDepthStrategyService.java deleted file mode 100644 index cd0a1dd..0000000 --- a/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/service/business/IDepthStrategyService.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.wms_main.service.business; - -import com.wms_main.model.bo.wms.DepthStrategyResult; -import com.wms_main.model.po.TAppOrderOut; -import com.wms_main.model.po.TAppStock; - -import java.util.List; - -/** - * 深度策略服务接口 - * 负责分析货物深度并生成相应的出库策略 - */ -public interface IDepthStrategyService { - - /** - * 基于载具号分析深度策略 - * @param vehicleNo 载具号 - * @return 深度策略分析结果 - */ - DepthStrategyResult analyzeDepthStrategyByVehicle(String vehicleNo); - - /** - * 获取指定库位的深度信息 - * @param locationId 库位ID - * @return 深度值 - */ - Integer getLocationDepth(String locationId); -} \ No newline at end of file diff --git a/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/service/business/serviceImpl/DepthStrategyServiceImpl.java b/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/service/business/serviceImpl/DepthStrategyServiceImpl.java deleted file mode 100644 index caa073d..0000000 --- a/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/service/business/serviceImpl/DepthStrategyServiceImpl.java +++ /dev/null @@ -1,178 +0,0 @@ -package com.wms_main.service.business.serviceImpl; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.wms_main.constant.enums.wms.WmsStockStatusEnums; -import com.wms_main.dao.ITAppLocationService; -import com.wms_main.dao.ITAppStockService; -import com.wms_main.model.bo.wms.DepthStrategyResult; -import com.wms_main.model.po.TAppLocation; -import com.wms_main.model.po.TAppOrderOut; -import com.wms_main.model.po.TAppStock; -import com.wms_main.repository.utils.StringUtils; -import com.wms_main.service.business.IDepthStrategyService; -import com.wms_main.service.business.IStackerTaskService; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; - -import java.util.List; - -/** - * 简化后的深度策略服务实现 - * 核心逻辑:基于载具号查询库存,检测深度策略 - */ -@Service -@RequiredArgsConstructor -@Slf4j -public class DepthStrategyServiceImpl implements IDepthStrategyService { - - private final ITAppStockService appStockService; - private final ITAppLocationService appLocationService; - private final IStackerTaskService stackerTaskService; - - /** - * 基于载具号分析深度策略(新核心方法) - */ - @Override - public DepthStrategyResult analyzeDepthStrategyByVehicle(String vehicleNo) { - if (StringUtils.isEmpty(vehicleNo)) { - log.warn("载具号为空"); - return DepthStrategyResult.createError("载具号不能为空"); - } - - TAppStock stock = appStockService.getOne( - new LambdaQueryWrapper() - .eq(TAppStock::getVehicleId, vehicleNo) - .eq(TAppStock::getStockStatus, WmsStockStatusEnums.OK.getCode()) - ); - - if (stock == null) { - log.warn("载具号{}对应的库存不存在", vehicleNo); - return DepthStrategyResult.createError("载具库存不存在"); - } - - Integer depth = getLocationDepth(stock.getLocationId()); - if (depth == null) { - log.warn("无法解析库存位置深度: {}", stock.getLocationId()); - return DepthStrategyResult.createError("库位深度解析失败"); - } - - if (depth == 1) { - return DepthStrategyResult.createDirectOut("深度1,直接出库"); - } else if (depth == 2) { - return handleDepth2Stock(stock); - } else { - log.warn("不支持的库存深度: {}", depth); - return DepthStrategyResult.createError("仅支持1-2深度库存"); - } - } - - /** - * 处理深度2的库存策略 - */ - private DepthStrategyResult handleDepth2Stock(TAppStock stock) { - // 检查深度1是否有阻挡 - List blockingStocks = getBlockingStocks(stock.getLocationId(), 1); - - if (blockingStocks.isEmpty()) { - return DepthStrategyResult.createDirectOut("深度2无阻挡,直接出库"); - } else { - // 检查阻挡货物是否可移库 - for (TAppStock blockingStock : blockingStocks) { - if (!canFindAlternativeLocation(blockingStock)) { - log.warn("深度2库存{}被阻挡,且无法移走阻挡货物{}", - stock.getStockId(), blockingStock.getStockId()); - return DepthStrategyResult.createError("无法移走阻挡货物"); - } - } - return DepthStrategyResult.createSingleTransfer("深度2有阻挡,需要移库后出库"); - } - } - - /** - * 获取库位深度 - */ - @Override - public Integer getLocationDepth(String locationId) { - if (StringUtils.isEmpty(locationId)) return null; - - try { - String[] parts = locationId.split("-"); - if (parts.length >= 4) { - return Integer.parseInt(parts[3]); - } - } catch (Exception e) { - log.warn("解析库位深度失败: {}", locationId, e); - } - return null; - } - - /** - * 获取阻挡货物(按载具去重) - */ - private List getBlockingStocks(String locationId, Integer blockingDepth) { - if (StringUtils.isEmpty(locationId) || blockingDepth == null) { - return List.of(); - } - - try { - String[] parts = locationId.split("-"); - if (parts.length < 4) return List.of(); - - String blockingLocationId = parts[0] + "-" + parts[1] + "-" + parts[2] + "-0" + blockingDepth; - - return appStockService.list( - new LambdaQueryWrapper() - .eq(TAppStock::getLocationId, blockingLocationId) - .eq(TAppStock::getStockStatus, WmsStockStatusEnums.OK.getCode()) - ); - } catch (Exception e) { - log.warn("获取阻挡货物失败: {}, 深度: {}", locationId, blockingDepth, e); - return List.of(); - } - } - - /** - * 检查能否为阻挡货物找到空闲库位 - */ - private boolean canFindAlternativeLocation(TAppStock blockingStock) { - try { - TAppLocation locationFilter = new TAppLocation(); - String currentLocationId = blockingStock.getLocationId(); - String[] parts = currentLocationId.split("-"); - - if (parts.length >= 4) { - locationFilter.setLRow(Integer.parseInt(parts[0].replaceAll("\\D", ""))); - locationFilter.setLCol(Integer.parseInt(parts[1])); - } - - TAppLocation targetLocation = stackerTaskService.requestOneLocation( - locationFilter, blockingStock.getVehicleId()); - - if (targetLocation != null) { - releaseLocation(targetLocation); - return true; - } - return false; - } catch (Exception e) { - log.error("检查空闲库位失败: {}", blockingStock.getStockId(), e); - return false; - } - } - - /** - * 释放临时占用的库位 - */ - private void releaseLocation(TAppLocation location) { - try { - appLocationService.update( - new com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper() - .eq(TAppLocation::getLocationId, location.getLocationId()) - .set(TAppLocation::getIsOccupy, 0) - .set(TAppLocation::getVehicleId, "") - ); - } catch (Exception e) { - log.warn("释放库位失败: {}", location.getLocationId(), e); - } - } -} \ No newline at end of file diff --git a/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/service/business/serviceImpl/StackerTaskServiceImpl.java b/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/service/business/serviceImpl/StackerTaskServiceImpl.java index d328cf0..cac2469 100644 --- a/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/service/business/serviceImpl/StackerTaskServiceImpl.java +++ b/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/service/business/serviceImpl/StackerTaskServiceImpl.java @@ -9,12 +9,12 @@ import com.wms_main.constant.enums.wms.*; import com.wms_main.dao.*; import com.wms_main.model.dto.request.mywms.OrderInCBReq; import com.wms_main.model.dto.request.mywms.OrderOutCBReq; -import com.wms_main.model.dto.response.mes.MesApiResponse; import com.wms_main.model.po.*; import com.wms_main.repository.utils.ConvertUtils; import com.wms_main.repository.utils.StringUtils; import com.wms_main.repository.utils.UUIDUtils; import com.wms_main.service.api.IExternalApiService; +import com.wms_main.service.business.IAgvLockService; import com.wms_main.service.business.IStackerTaskService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -68,6 +68,8 @@ public class StackerTaskServiceImpl implements IStackerTaskService { private final ITAppOrderOutService appOrderOutService; private final IExternalApiService externalApiService; + + private final IAgvLockService agvLockService; /** * 业务通用 */ @@ -181,6 +183,9 @@ public class StackerTaskServiceImpl implements IStackerTaskService { break; } } + if (targetLocation != null) { + appCommon.updateWorkingLocations(targetLocation.getLocationId(), 1); + } // 返回库位,如果返回null则表示没有可用库位 return targetLocation; @@ -417,6 +422,9 @@ public class StackerTaskServiceImpl implements IStackerTaskService { vehicle.setLocationId(wmsTask.getDestination()); vehicle.setLastInTime(LocalDateTime.now()); appVehicleService.saveOrUpdate(vehicle); + + appCommon.updateWorkingLocations(wmsTask.getDestination(), 0); + agvLockService.releaseStationLocks("R1", WmsTaskTypeEnums.IN.getCode()); // 备份并删除任务 if (!appTaskService.removeById(wmsTask.getTaskId())) { log.info("删除入库任务失败,任务:{}", wmsTask.getTaskId()); @@ -451,6 +459,8 @@ public class StackerTaskServiceImpl implements IStackerTaskService { .eq(TAppVehicle::getVehicleId, wmsTask.getVehicleId()) .set(TAppVehicle::getLocationId, wmsTask.getDestination()) ); + appCommon.updateWorkingLocations(wmsTask.getDestination(), 0); + appCommon.updateWorkingLocations(wmsTask.getOrigin(), 0); appTaskService.removeById(wmsTask.getTaskId()); appTaskBakService.save(wmsTask.of()); } @@ -504,6 +514,8 @@ public class StackerTaskServiceImpl implements IStackerTaskService { .set(TAppStock::getStockStatus, WmsStockStatusEnums.OUTED.getCode()) .set(TAppStock::getLocationId, "") .eq(TAppStock::getVehicleId, vehicleId)); + appCommon.updateWorkingLocations(thisVehicle.getLocationId(), 0); + agvLockService.releaseStationLocks("C1", WmsTaskTypeEnums.OUT.getCode()); // 当前载具的任务列表 List thisVehicleOutTasks = vehicleIdToTaskMap.get(vehicleId); if (thisVehicleOutTasks.isEmpty()) { diff --git a/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/service/controller/ILocationControllerService.java b/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/service/controller/ILocationControllerService.java index 4988d9d..0fd1748 100644 --- a/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/service/controller/ILocationControllerService.java +++ b/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/service/controller/ILocationControllerService.java @@ -3,7 +3,6 @@ package com.wms_main.service.controller; import com.wms_main.model.dto.query.LocationQuery; import com.wms_main.model.dto.response.wms.BaseWmsApiResponse; import com.wms_main.model.dto.response.wms.WmsApiResponse; -import com.wms_main.model.po.TAppLocation; /** * 库位控制类服务 diff --git a/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/service/controller/ITaskControllerService.java b/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/service/controller/ITaskControllerService.java index c370830..6388b93 100644 --- a/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/service/controller/ITaskControllerService.java +++ b/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/service/controller/ITaskControllerService.java @@ -1,22 +1,9 @@ package com.wms_main.service.controller; -import com.wms_main.model.bo.wcs.WcsStackerTask; -import com.wms_main.model.dto.request.wcs.WcsBoxArriveRequest; import com.wms_main.model.dto.request.wcs.WcsTaskResultRequest; import com.wms_main.model.dto.request.wcs.WcsVehicleInRequest; -import com.wms_main.model.dto.request.wms.*; import com.wms_main.model.dto.response.wcs.BaseWcsApiResponse; -import com.wms_main.model.dto.response.wcs.InTaskResp; -import com.wms_main.model.dto.response.wcs.WcsApiResponse; import com.wms_main.model.dto.response.wcs.WcsVehicleInResponse; -import com.wms_main.model.dto.response.wms.BaseWmsApiResponse; -import com.wms_main.model.dto.response.wms.WmsApiResponse; -import com.wms_main.model.po.TAppTaskBak; -import com.wms_main.model.po.TAppWcsTaskBak; -import com.wms_main.model.vo.wms.TaskConfirmVo; -import org.apache.poi.ss.formula.functions.T; - -import java.util.List; /** * 任务控制类 服务接口 diff --git a/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/service/controller/ITestControllerService.java b/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/service/controller/ITestControllerService.java index a6b126d..4489be9 100644 --- a/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/service/controller/ITestControllerService.java +++ b/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/service/controller/ITestControllerService.java @@ -1,6 +1,5 @@ package com.wms_main.service.controller; -import com.wms_main.model.dto.request.wms.BaseWmsRequest; import com.wms_main.model.dto.query.DbsQuery; import com.wms_main.model.dto.request.wms.InitKateWorkRequest; import com.wms_main.model.vo.wms.ImageVo; diff --git a/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/service/controller/serviceImpl/LoginControllerServiceImpl.java b/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/service/controller/serviceImpl/LoginControllerServiceImpl.java index 6de86c0..3b4e8c3 100644 --- a/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/service/controller/serviceImpl/LoginControllerServiceImpl.java +++ b/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/service/controller/serviceImpl/LoginControllerServiceImpl.java @@ -110,7 +110,6 @@ public class LoginControllerServiceImpl implements ILoginControllerService { } List menuVoList = new LinkedList<>(); // 查找一级菜单 - // TODO 这里可以用递归优化,减少代码量 for (TSysMenu firstMenu : menuPoList) { if (AppConstant.ROOT_MENU_ID.equals(firstMenu.getParentId())) {// 查找到所有的一级子菜单 MenuVo tempFirstMenu = new MenuVo(); diff --git a/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/service/controller/serviceImpl/MyWmsControllerServiceImpl.java b/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/service/controller/serviceImpl/MyWmsControllerServiceImpl.java index 7a563c2..867dff7 100644 --- a/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/service/controller/serviceImpl/MyWmsControllerServiceImpl.java +++ b/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/service/controller/serviceImpl/MyWmsControllerServiceImpl.java @@ -1,14 +1,11 @@ package com.wms_main.service.controller.serviceImpl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.fasterxml.jackson.databind.ObjectMapper; import com.wms_main.constant.enums.wms.OrderStatusEnum; -import com.wms_main.constant.enums.wms.WmsDepthStrategyEnums; import com.wms_main.constant.enums.wms.WmsStockStatusEnums; import com.wms_main.dao.ITAppOrderInService; import com.wms_main.dao.ITAppOrderOutService; import com.wms_main.dao.ITAppStockService; -import com.wms_main.model.bo.wms.DepthStrategyResult; import com.wms_main.model.dto.request.mywms.*; import com.wms_main.model.dto.request.wcs.WcsCanFeedRequest; import com.wms_main.model.dto.response.mywms.MyWmsResponse; @@ -21,7 +18,6 @@ import com.wms_main.repository.utils.StringUtils; import com.wms_main.repository.utils.UUIDUtils; import com.wms_main.service.api.IWcsApiService; import com.wms_main.service.business.IAgvLockService; -import com.wms_main.service.business.IDepthStrategyService; import com.wms_main.service.controller.IMyWmsControllerService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -38,19 +34,18 @@ public class MyWmsControllerServiceImpl implements IMyWmsControllerService { private final ITAppOrderInService appOrderInService; private final ITAppOrderOutService appOrderOutService; private final ITAppStockService appStockService; - private final IDepthStrategyService depthStrategyService; private final IAgvLockService agvLockService; private final IWcsApiService wcsApiService; - private final ObjectMapper objectMapper = new ObjectMapper(); @Override public MyWmsResponse orderIn(OrderInReq request) { try { - if (request == null) return MyWmsResponse.error("参数错误", null); + if (request == null) + return MyWmsResponse.error("参数错误", null); if (!request.isValid()) { return MyWmsResponse.error("参数错误", null); } - + // 检查入库口是否可用 String inboundPort = "R1"; // 默认入库口 boolean canFeed = agvLockService.canFeedToInboundPort(inboundPort); @@ -58,7 +53,7 @@ public class MyWmsControllerServiceImpl implements IMyWmsControllerService { String portStatus = agvLockService.getInboundPortStatus(inboundPort); return MyWmsResponse.error("入库口当前" + portStatus + ",无法生成入库订单,请稍后重试", null); } - + // 校验是否存在相同的入库单 List withTaskId = appOrderInService.getWithTaskId(request.getTaskId()); if (withTaskId == null) { @@ -88,10 +83,11 @@ public class MyWmsControllerServiceImpl implements IMyWmsControllerService { @Override public MyWmsResponse orderOut(OrderOutReq request) { try { - if (request == null || StringUtils.isEmpty(request.getTaskId()) || StringUtils.isEmpty(request.getVehicleNo())) { + if (request == null || StringUtils.isEmpty(request.getTaskId()) + || StringUtils.isEmpty(request.getVehicleNo())) { return MyWmsResponse.error("参数错误", null); } - + List orderOutCheckList = appOrderOutService.getWithTaskId(request.getTaskId()); if (orderOutCheckList == null) { return MyWmsResponse.error("数据服务异常,请稍后重试", null); @@ -101,10 +97,9 @@ public class MyWmsControllerServiceImpl implements IMyWmsControllerService { } List vehicleStocks = appStockService.list( - new LambdaQueryWrapper() - .eq(TAppStock::getVehicleId, request.getVehicleNo()) - .eq(TAppStock::getStockStatus, WmsStockStatusEnums.OK.getCode()) - ); + new LambdaQueryWrapper() + .eq(TAppStock::getVehicleId, request.getVehicleNo()) + .eq(TAppStock::getStockStatus, WmsStockStatusEnums.OK.getCode())); if (vehicleStocks == null || vehicleStocks.isEmpty()) { return MyWmsResponse.error("载具号" + request.getVehicleNo() + "无库存记录", null); @@ -117,15 +112,6 @@ public class MyWmsControllerServiceImpl implements IMyWmsControllerService { orderOut.setOrderStatus(OrderStatusEnum.CREATE.getCode()); orderOut.setCreateTime(LocalDateTime.now()); orderOut.setUpdateTime(LocalDateTime.now()); - - DepthStrategyResult depthStrategy = depthStrategyService.analyzeDepthStrategyByVehicle(request.getVehicleNo()); - orderOut.setDepthStrategy(depthStrategy.getStrategy().getCode()); - orderOut.setDepthStrategyDetail(objectMapper.writeValueAsString(depthStrategy)); - - if (orderOut.getDepthStrategy().equals(WmsDepthStrategyEnums.NO_ACTION.getCode())) { - return MyWmsResponse.error("载具出库任务添加失败:" + request.getVehicleNo(), null); - } - if (!appOrderOutService.save(orderOut)) { return MyWmsResponse.error("出库单保存失败,请稍后再试", null); } @@ -138,7 +124,8 @@ public class MyWmsControllerServiceImpl implements IMyWmsControllerService { @Override public MyWmsResponse> stock(StockReq request) { - if (request == null || request.empty()) return MyWmsResponse.error("参数错误", null); + if (request == null || request.empty()) + return MyWmsResponse.error("参数错误", null); List stocks = new ArrayList<>(); Map vehicleStockMap = new HashMap<>(); if (request.getDetails() == null || request.getDetails().isEmpty()) { @@ -147,9 +134,10 @@ public class MyWmsControllerServiceImpl implements IMyWmsControllerService { for (StockReqGoodsDetail stockReqGoodsDetail : request.getDetails()) { List stockList = appStockService.list( new LambdaQueryWrapper() - .eq(StringUtils.isNotEmpty(stockReqGoodsDetail.getVehicleNo()), TAppStock::getVehicleId, stockReqGoodsDetail.getVehicleNo()) - .eq(StringUtils.isNotEmpty(stockReqGoodsDetail.getLocationId()), TAppStock::getLocationId, stockReqGoodsDetail.getLocationId()) - ); + .eq(StringUtils.isNotEmpty(stockReqGoodsDetail.getVehicleNo()), TAppStock::getVehicleId, + stockReqGoodsDetail.getVehicleNo()) + .eq(StringUtils.isNotEmpty(stockReqGoodsDetail.getLocationId()), + TAppStock::getLocationId, stockReqGoodsDetail.getLocationId())); if (stockList != null && !stockList.isEmpty()) { for (TAppStock stock : stockList) { if (!vehicleStockMap.containsKey(stock.getVehicleId())) { @@ -178,20 +166,22 @@ public class MyWmsControllerServiceImpl implements IMyWmsControllerService { @Override public MyWmsResponse queryCanFeed() { try { + // TODO canFeed WcsApiResponse wcsResponse = wcsApiService.canFeed(new WcsCanFeedRequest("R1")); - if (wcsResponse != null && wcsResponse.getData() != null) { - Boolean wcsAllow = wcsResponse.getData().isAllowAction(); - Boolean wmsAllow = agvLockService.canFeedToInboundPort("R1"); - - if (wcsAllow && wmsAllow) { - return MyWmsResponse.success(true); - } else { - return MyWmsResponse.error("入库口锁定中", null); - } - } else { - return MyWmsResponse.error("WCS系统查询失败", null); + if (wcsResponse == null || wcsResponse.getData() == null) { + return MyWmsResponse.error("WCS系统查询失败", false); } + Boolean wcsAllow = wcsResponse.getData().isAllowAction(); + if (!wcsAllow) { + return MyWmsResponse.error("WCS系统不允许入库", false); + } + + Boolean wmsAllow = agvLockService.canFeedToInboundPort("R1"); + if (!wmsAllow) { + return MyWmsResponse.error("入库口锁定中", false); + } + return MyWmsResponse.success(true); } catch (Exception e) { return MyWmsResponse.error("系统异常,请稍后重试", null); } @@ -200,22 +190,27 @@ public class MyWmsControllerServiceImpl implements IMyWmsControllerService { @Override public MyWmsResponse queryCanOut() { try { - WcsApiResponse wcsResponse = wcsApiService.canOut(new WcsCanFeedRequest("C1")); - - if (wcsResponse != null && wcsResponse.getData() != null) { - Boolean wcsAllow = wcsResponse.getData().isAllowAction(); - Boolean wmsAllow = agvLockService.canFeedToOutboundPort("C1"); - - if (wcsAllow && wmsAllow) { - return MyWmsResponse.success(true); - } else { - return MyWmsResponse.error("出库口锁定中", null); - } - } else { - return MyWmsResponse.error("WCS系统查询失败", null); + // 1. 调用wcs.canFeed检查wcs状态 (使用R1口) + // TODO canFeed + WcsApiResponse wcsResponse = wcsApiService.canFeed(new WcsCanFeedRequest("R1")); + if (wcsResponse == null || wcsResponse.getData() == null) { + return MyWmsResponse.error("WCS系统查询失败", false); } + + Boolean wcsAllow = wcsResponse.getData().isAllowAction(); + if (!wcsAllow) { + return MyWmsResponse.error("WCS系统不允许出库", false); + } + + // 2. 检查agvLock服务获取wms状态 (使用R1口) + Boolean wmsAllow = agvLockService.canFeedToInboundPort("C1"); + if (!wmsAllow) { + return MyWmsResponse.error("出库口锁定中", false); + } + + return MyWmsResponse.success(true); } catch (Exception e) { - return MyWmsResponse.error("系统异常,请稍后重试", null); + return MyWmsResponse.error("系统异常,请稍后重试", false); } } } diff --git a/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/service/controller/serviceImpl/TaskControllerServiceImpl.java b/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/service/controller/serviceImpl/TaskControllerServiceImpl.java index 7a47164..8406939 100644 --- a/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/service/controller/serviceImpl/TaskControllerServiceImpl.java +++ b/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/service/controller/serviceImpl/TaskControllerServiceImpl.java @@ -13,7 +13,6 @@ import com.wms_main.model.po.*; import com.wms_main.repository.utils.ConvertUtils; import com.wms_main.repository.utils.StringUtils; import com.wms_main.repository.utils.UUIDUtils; -import com.wms_main.service.business.IAgvLockService; import com.wms_main.service.business.IStackerTaskService; import com.wms_main.service.controller.ITaskControllerService; import lombok.RequiredArgsConstructor; @@ -36,7 +35,6 @@ public class TaskControllerServiceImpl implements ITaskControllerService { private final IStackerTaskService stackerTaskService;// 堆垛机任务服务 private final ITAppOrderInService orderInService; private final ITAppWcsTaskBakService appWcsTaskBakService; - private final IAgvLockService agvLockService;// AGV互锁服务 @Override @Transactional @@ -147,25 +145,6 @@ public class TaskControllerServiceImpl implements ITaskControllerService { .set(TAppOrderIn::getOrderStatus, OrderStatusEnum.COMPLETE.getCode()) .set(TAppOrderIn::getCompleteTime, LocalDateTime.now())); - // 任务完成时释放相应资源锁定 - if (wmsTask != null) { - try { - if (WmsTaskTypeEnums.IN.getCode().equals(wmsTask.getTaskType())) { - // 入库任务完成,释放入库口R1锁定 - int releasedCount = agvLockService.releaseStationLocks("R1", WmsTaskTypeEnums.IN.getCode()); - log.info("入库任务完成,释放入库口R1锁定,任务ID: {}, 释放锁定数: {}", - wcsTaskResultRequest.getTaskId(), releasedCount); - } else if (WmsTaskTypeEnums.OUT.getCode().equals(wmsTask.getTaskType())) { - // 出库任务完成,释放出库口C1锁定 - int releasedCount = agvLockService.releaseStationLocks("C1", WmsTaskTypeEnums.OUT.getCode()); - log.info("出库任务完成,释放出库口C1锁定,任务ID: {}, 释放锁定数: {}", - wcsTaskResultRequest.getTaskId(), releasedCount); - } - } catch (Exception e) { - log.error("任务完成时释放资源锁定失败,任务ID: {}", wcsTaskResultRequest.getTaskId(), e); - } - } - // 移除wcs任务,并向wcs备份表添加记录 TAppWcsTaskBak wcsTaskBak = new TAppWcsTaskBak( wcsTask.getWcsTaskId(), diff --git a/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/service/controller/serviceImpl/TestControllerServiceImpl.java b/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/service/controller/serviceImpl/TestControllerServiceImpl.java index f9d0171..7c5729f 100644 --- a/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/service/controller/serviceImpl/TestControllerServiceImpl.java +++ b/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/service/controller/serviceImpl/TestControllerServiceImpl.java @@ -4,7 +4,6 @@ import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.wms_main.dao.ITAppImageService; import com.wms_main.excel.easypoi.service.IExportExcelEasyPoi; -import com.wms_main.model.dto.request.wms.BaseWmsRequest; import com.wms_main.model.dto.query.DbsQuery; import com.wms_main.model.dto.request.wms.InitKateWorkRequest; import com.wms_main.model.po.TAppImage; diff --git a/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/service/quartz_job/job_executor/JobTest.java b/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/service/quartz_job/job_executor/JobTest.java index 557c245..70bc708 100644 --- a/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/service/quartz_job/job_executor/JobTest.java +++ b/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/service/quartz_job/job_executor/JobTest.java @@ -18,7 +18,6 @@ public class JobTest implements Job { */ @Override public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { - // TODO 需要增加定时器的全局异常捕获 // 测试定时任务 System.out.println("本次Test执行时间:" + jobExecutionContext.getFireTime()); try { diff --git a/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/service/quartz_job/job_executor/MyOutExecutor.java b/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/service/quartz_job/job_executor/MyOutExecutor.java index b61f50d..7955ba2 100644 --- a/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/service/quartz_job/job_executor/MyOutExecutor.java +++ b/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/service/quartz_job/job_executor/MyOutExecutor.java @@ -2,6 +2,7 @@ package com.wms_main.service.quartz_job.job_executor; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.wms_main.app.AppCommon; import com.wms_main.constant.enums.wms.OrderStatusEnum; import com.wms_main.constant.enums.wms.WmsStackerTaskStatusEnums; import com.wms_main.constant.enums.wms.WmsStockStatusEnums; @@ -13,8 +14,8 @@ import com.wms_main.model.po.TAppLocation; import com.wms_main.model.po.TAppOrderOut; import com.wms_main.model.po.TAppStock; import com.wms_main.model.po.TAppTask; +import com.wms_main.repository.utils.StringUtils; import com.wms_main.repository.utils.UUIDUtils; -import com.wms_main.service.business.IDepthStrategyService; import com.wms_main.service.business.IStackerTaskService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -37,8 +38,8 @@ public class MyOutExecutor implements Job { private final ITAppOrderOutService appOrderOutService; private final ITAppStockService appStockService; private final ITAppTaskService appTaskService; - private final IDepthStrategyService depthStrategyService; private final IStackerTaskService stackerTaskService; + private final AppCommon appCommon; @Override public void execute(JobExecutionContext context) { @@ -52,8 +53,7 @@ public class MyOutExecutor implements Job { // 获取状态为CREATE的出库订单 List orders = appOrderOutService.list( new LambdaQueryWrapper() - .eq(TAppOrderOut::getOrderStatus, OrderStatusEnum.CREATE.getCode()) - ); + .eq(TAppOrderOut::getOrderStatus, OrderStatusEnum.CREATE.getCode())); orders.forEach(this::processSingleOrder); } @@ -71,7 +71,7 @@ public class MyOutExecutor implements Job { } // 2. 获取库位深度 - Integer depth = depthStrategyService.getLocationDepth(stock.getLocationId()); + Integer depth = getLocationDepth(stock.getLocationId()); if (depth == null) { log.error("无法解析库位深度: {}", stock.getLocationId()); return; @@ -86,9 +86,7 @@ public class MyOutExecutor implements Job { List blockingStocks = getBlockingStocks(stock.getLocationId()); if (!blockingStocks.isEmpty()) { // 生成移库任务移走阻挡货物 - blockingStocks.forEach(blocking -> - tasks.add(createTransferTask(blocking, order)) - ); + blockingStocks.forEach(blocking -> tasks.add(createTransferTask(blocking, order))); } tasks.add(createOutTask(order, stock)); } else { @@ -113,8 +111,7 @@ public class MyOutExecutor implements Job { return appStockService.getOne( new LambdaQueryWrapper() .eq(TAppStock::getVehicleId, vehicleNo) - .eq(TAppStock::getStockStatus, WmsStockStatusEnums.OK.getCode()) - ); + .eq(TAppStock::getStockStatus, WmsStockStatusEnums.OK.getCode())); } /** @@ -122,7 +119,8 @@ public class MyOutExecutor implements Job { */ private List getBlockingStocks(String locationId) { String[] parts = locationId.split("-"); - if (parts.length < 4) return Collections.emptyList(); + if (parts.length < 4) + return Collections.emptyList(); // 构建深度1库位ID (格式: 排-列-层-01) String depth1Loc = parts[0] + "-" + parts[1] + "-" + parts[2] + "-01"; @@ -130,8 +128,7 @@ public class MyOutExecutor implements Job { return appStockService.list( new LambdaQueryWrapper() .eq(TAppStock::getLocationId, depth1Loc) - .eq(TAppStock::getStockStatus, WmsStockStatusEnums.OK.getCode()) - ); + .eq(TAppStock::getStockStatus, WmsStockStatusEnums.OK.getCode())); } /** @@ -152,6 +149,9 @@ public class MyOutExecutor implements Job { task.setCreateTime(LocalDateTime.now()); task.setTaskPriority(2); task.setRemark("移走深度1阻挡货物"); + + appCommon.updateWorkingLocations(blockingStock.getLocationId(), 1); + appCommon.updateWorkingLocations(target.getLocationId(), 1); return task; } @@ -169,8 +169,9 @@ public class MyOutExecutor implements Job { task.setVehicleId(stock.getVehicleId()); task.setCreateTime(LocalDateTime.now()); task.setTaskPriority(1); - task.setRemark(stock.getLocationId().endsWith("-01") ? - "深度1直接出库" : "深度2出库"); + task.setRemark(stock.getLocationId().endsWith("-01") ? "深度1直接出库" : "深度2出库"); + + appCommon.updateWorkingLocations(stock.getLocationId(), 1); return task; } @@ -188,8 +189,7 @@ public class MyOutExecutor implements Job { appStockService.update( new LambdaUpdateWrapper() .eq(TAppStock::getStockId, stock.getStockId()) - .set(TAppStock::getStockStatus, WmsStockStatusEnums.OUTING.getCode()) - ); + .set(TAppStock::getStockStatus, WmsStockStatusEnums.OUTING.getCode())); } /** @@ -199,7 +199,28 @@ public class MyOutExecutor implements Job { appOrderOutService.update( new LambdaUpdateWrapper() .eq(TAppOrderOut::getRecordId, order.getRecordId()) - .set(TAppOrderOut::getOrderStatus, OrderStatusEnum.RUNNING.getCode()) - ); + .set(TAppOrderOut::getOrderStatus, OrderStatusEnum.RUNNING.getCode())); + } + + /** + * 获取指定库位的深度信息 + * 解析库位ID获取深度值 + */ + private Integer getLocationDepth(String locationId) { + if (StringUtils.isEmpty(locationId)) { + return 0; + } + + try { + // 解析库位ID格式:A03-1-2-3(排-列-层-深度) + String[] parts = locationId.split("-"); + if (parts.length >= 4) { + return Integer.parseInt(parts[3]); + } + } catch (Exception e) { + log.warn("解析库位深度失败:{}", locationId, e); + } + + return 0; } } \ No newline at end of file diff --git a/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/service/quartz_job/job_executor/WcsStackerTaskSender.java b/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/service/quartz_job/job_executor/WcsStackerTaskSender.java index 2f5dc7f..9add53a 100644 --- a/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/service/quartz_job/job_executor/WcsStackerTaskSender.java +++ b/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/service/quartz_job/job_executor/WcsStackerTaskSender.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.wms_main.constant.enums.wcs.WcsApiResponseCodeEnums; import com.wms_main.constant.enums.wcs.WcsStackerTaskStatusEnums; +import com.wms_main.constant.enums.wcs.WcsStackerTaskTypeEnums; import com.wms_main.constant.enums.wms.WmsStackerTaskStatusEnums; import com.wms_main.constant.enums.wms.WmsTaskTypeEnums; import com.wms_main.dao.ITAppTaskService; @@ -22,7 +23,6 @@ import org.quartz.*; import java.time.LocalDateTime; import java.util.List; -import java.util.Objects; /** * 定时任务定义类---发送堆垛机任务 @@ -58,91 +58,83 @@ public class WcsStackerTaskSender implements Job { */ @Override public void execute(JobExecutionContext jobExecutionContext) { + if (appWcsTaskService.exists(new LambdaQueryWrapper().eq(TAppWcsTask::getWcsTaskStatus, + WcsStackerTaskStatusEnums.WAIT.getCode()))) { + return; + } // 查询到所有的待下发的wcsTask并按优先级排序 List waitSendWcsTaskList = appWcsTaskService.list( new LambdaQueryWrapper() - .eq(TAppWcsTask::getWcsTaskStatus, WcsStackerTaskStatusEnums.INIT.getCode()) - ); + .eq(TAppWcsTask::getWcsTaskStatus, WcsStackerTaskStatusEnums.INIT.getCode())); + if (waitSendWcsTaskList == null || waitSendWcsTaskList.isEmpty()) { + return; + } // 按任务优先级排序(优先级高的先发送,数值大的优先级高) waitSendWcsTaskList.sort((task1, task2) -> Integer.compare(task2.getTaskPriority(), task1.getTaskPriority())); - // 发送任务 - for (TAppWcsTask wcsTask : waitSendWcsTaskList) { - // 生成请求 - WcsStackerTaskRequest request = new WcsStackerTaskRequest( - wcsTask.getWcsTaskId(), - wcsTask.getWcsTaskType(), - wcsTask.getTaskPriority(), - wcsTask.getOrigin(), - wcsTask.getDestination(), - wcsTask.getVehicleId() - ); - try { - WcsApiResponse wcsResponse = wcsApiService.sendWcsStackerTask(request); - if (wcsResponse != null && WcsApiResponseCodeEnums.SUCCESS.getCode() == wcsResponse.getCode()) { - // 更新当前的wcs任务状态为已发送 - appWcsTaskService.update( - new LambdaUpdateWrapper() - .set(TAppWcsTask::getWcsTaskStatus, WcsStackerTaskStatusEnums.WAIT.getCode()) - .set(TAppWcsTask::getSendTime, LocalDateTime.now()) - .eq(TAppWcsTask::getWcsTaskId, wcsTask.getWcsTaskId()) - ); - // 更新当前wcs任务对应的wms任务为已发送 - appTaskService.update( - new LambdaUpdateWrapper() - .set(TAppTask::getTaskStatus, WmsStackerTaskStatusEnums.SEND.getCode()) - .eq(TAppTask::getWcsTaskId, wcsTask.getWcsTaskId()) - ); - - // 任务下发成功后,锁定相应资源 - try { - // 获取对应的WMS任务来判断任务类型 - TAppTask wmsTask = appTaskService.getOne( - new LambdaQueryWrapper() - .eq(TAppTask::getWcsTaskId, wcsTask.getWcsTaskId()) - ); - - if (wmsTask != null) { - String agvId = StringUtils.isNotEmpty(wcsTask.getVehicleId()) ? wcsTask.getVehicleId() : "AGV"; - - if (WmsTaskTypeEnums.IN.getCode().equals(wmsTask.getTaskType())) { - // 入库任务锁定入库口R1 - agvLockService.lockStation(agvId, "R1", WmsTaskTypeEnums.IN.getCode()); - log.info("入库任务下发成功,锁定入库口R1,任务ID: {}, AGV: {}", wcsTask.getWcsTaskId(), agvId); - } else if (WmsTaskTypeEnums.OUT.getCode().equals(wmsTask.getTaskType())) { - // 出库任务锁定出库口C1 - agvLockService.lockStation(agvId, "C1", WmsTaskTypeEnums.OUT.getCode()); - log.info("出库任务下发成功,锁定出库口C1,任务ID: {}, AGV: {}", wcsTask.getWcsTaskId(), agvId); - } - } - } catch (Exception e) { - log.error("任务下发成功但锁定资源失败,任务ID: {}", wcsTask.getWcsTaskId(), e); - } - TAppWcsTask doingWcsTask; - do { - doingWcsTask = appWcsTaskService.getOne(new LambdaQueryWrapper().eq(TAppWcsTask::getWcsTaskId, wcsTask.getWcsTaskId())); - Thread.sleep(1000); - } while (doingWcsTask != null && !Objects.equals(doingWcsTask.getWcsTaskStatus(), WcsStackerTaskStatusEnums.FINISH.getCode())); - } else { - log.error("堆垛机任务发送失败,请求{},响应信息{}。", StringUtils.objectToString(request), StringUtils.objectToString(wcsResponse)); - // 更新当前的wcs任务状态为异常 - appWcsTaskService.update( - new LambdaUpdateWrapper() - .set(TAppWcsTask::getWcsTaskStatus, WcsStackerTaskStatusEnums.EXCEPTION.getCode()) - .set(TAppWcsTask::getSendTime, LocalDateTime.now()) - .eq(TAppWcsTask::getWcsTaskId, wcsTask.getWcsTaskId()) - ); - // 更新当前wcs任务对应的wms任务为异常 - appTaskService.update( - new LambdaUpdateWrapper() - .set(TAppTask::getTaskStatus, WmsStackerTaskStatusEnums.EXCEPTION.getCode()) - .eq(TAppTask::getWcsTaskId, wcsTask.getWcsTaskId()) - ); - } - } catch (Exception e) { - log.error("堆垛机任务发送失败,任务号:{},载具号:{},起点:{},终点:{}。", request.getTaskId(), request.getVehicleNo(), request.getOrigin(), request.getDestination()); + TAppWcsTask wcsTask = waitSendWcsTaskList.getFirst(); + if (wcsTask.getWcsTaskType().equals(WcsStackerTaskTypeEnums.OUT.getCode())) { + Boolean wmsAllow = agvLockService.canFeedToInboundPort(wcsTask.getDestination()); + if (!wmsAllow) { + return; } } + // 生成请求 + WcsStackerTaskRequest request = new WcsStackerTaskRequest( + wcsTask.getWcsTaskId(), + wcsTask.getWcsTaskType(), + wcsTask.getTaskPriority(), + wcsTask.getOrigin(), + wcsTask.getDestination(), + wcsTask.getVehicleId()); + try { + WcsApiResponse wcsResponse = wcsApiService.sendWcsStackerTask(request); + if (wcsResponse != null && WcsApiResponseCodeEnums.SUCCESS.getCode() == wcsResponse.getCode()) { + // 更新当前的wcs任务状态为已发送 + appWcsTaskService.update( + new LambdaUpdateWrapper() + .set(TAppWcsTask::getWcsTaskStatus, WcsStackerTaskStatusEnums.WAIT.getCode()) + .set(TAppWcsTask::getSendTime, LocalDateTime.now()) + .eq(TAppWcsTask::getWcsTaskId, wcsTask.getWcsTaskId())); + // 更新当前wcs任务对应的wms任务为已发送 + appTaskService.update( + new LambdaUpdateWrapper() + .set(TAppTask::getTaskStatus, WmsStackerTaskStatusEnums.SEND.getCode()) + .eq(TAppTask::getWcsTaskId, wcsTask.getWcsTaskId())); + + if (wcsTask.getWcsTaskType().equals(WcsStackerTaskTypeEnums.OUT.getCode())) { + try { + agvLockService.lockInboundPort("AGV", wcsTask.getDestination()); + } catch (Exception e) { + log.error("任务发送成功后锁定{}口失败,任务ID: {}", wcsTask.getDestination(), wcsTask.getWcsTaskId()); + } + } else if (wcsTask.getWcsTaskType().equals(WcsStackerTaskTypeEnums.IN.getCode())) { + try { + agvLockService.lockInboundPort("AGV", wcsTask.getOrigin()); + } catch (Exception e) { + log.error("任务发送成功后锁定{}口失败,任务ID: {}", wcsTask.getOrigin(), wcsTask.getWcsTaskId()); + } + } + } else { + log.error("堆垛机任务发送失败,请求{},响应信息{}。", StringUtils.objectToString(request), + StringUtils.objectToString(wcsResponse)); + // 更新当前的wcs任务状态为异常 + appWcsTaskService.update( + new LambdaUpdateWrapper() + .set(TAppWcsTask::getWcsTaskStatus, WcsStackerTaskStatusEnums.EXCEPTION.getCode()) + .set(TAppWcsTask::getSendTime, LocalDateTime.now()) + .eq(TAppWcsTask::getWcsTaskId, wcsTask.getWcsTaskId())); + // 更新当前wcs任务对应的wms任务为异常 + appTaskService.update( + new LambdaUpdateWrapper() + .set(TAppTask::getTaskStatus, WmsStackerTaskStatusEnums.EXCEPTION.getCode()) + .eq(TAppTask::getWcsTaskId, wcsTask.getWcsTaskId())); + } + } catch (Exception e) { + log.error("堆垛机任务发送失败,任务号:{},载具号:{},起点:{},终点:{}。", request.getTaskId(), request.getVehicleNo(), + request.getOrigin(), request.getDestination()); + } + } } diff --git a/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/service/quartz_job/job_executor/WmsTaskExecutor.java b/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/service/quartz_job/job_executor/WmsTaskExecutor.java index 643ecea..5d9fe78 100644 --- a/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/service/quartz_job/job_executor/WmsTaskExecutor.java +++ b/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/service/quartz_job/job_executor/WmsTaskExecutor.java @@ -11,7 +11,6 @@ import com.wms_main.model.po.TAppTask; import com.wms_main.model.po.TAppWcsTask; import com.wms_main.repository.utils.ConvertUtils; import com.wms_main.repository.utils.StringUtils; -import com.wms_main.repository.utils.UUIDUtils; import com.wms_main.service.business.IStackerTaskService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; diff --git a/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/service/quartz_job/job_executor/WmsTaskFinisher.java b/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/service/quartz_job/job_executor/WmsTaskFinisher.java index 5c03f56..bfd842e 100644 --- a/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/service/quartz_job/job_executor/WmsTaskFinisher.java +++ b/202504-Wms-MengYang-tp/wms_serve_mengyang/src/main/java/com/wms_main/service/quartz_job/job_executor/WmsTaskFinisher.java @@ -1,16 +1,10 @@ package com.wms_main.service.quartz_job.job_executor; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.wms_main.constant.enums.wcs.WcsStackerTaskStatusEnums; -import com.wms_main.constant.enums.wcs.WcsStackerTaskTypeEnums; import com.wms_main.constant.enums.wms.WmsStackerTaskStatusEnums; import com.wms_main.constant.enums.wms.WmsTaskTypeEnums; -import com.wms_main.dao.ITAppOrderInService; import com.wms_main.dao.ITAppTaskService; -import com.wms_main.dao.ITAppWcsTaskService; -import com.wms_main.model.po.TAppOrderIn; import com.wms_main.model.po.TAppTask; -import com.wms_main.model.po.TAppWcsTask; import com.wms_main.repository.utils.StringUtils; import com.wms_main.service.business.IStackerTaskService; import lombok.RequiredArgsConstructor; @@ -36,11 +30,6 @@ public class WmsTaskFinisher implements Job { * 堆垛机任务业务服务 */ private final IStackerTaskService stackerTaskService; - - private final ITAppOrderInService appOrderInService; - - private final ITAppWcsTaskService appWcsTaskService; - /** * 运行定时任务 * 完成堆垛机任务