1. 优化is_working字段,防止阻塞。2. 优化sender,每次只下发一个任务给wcs,修改睡眠为扫描wait状态的任务。3. 优化项目结构,解决warning
This commit is contained in:
parent
52586a5d92
commit
3b53a31cb3
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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": "任务执行成功"
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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<TAppLocation> getLocationListByLocationId(String locationId) {
|
||||
List<TAppLocation> resList = new ArrayList<>();
|
||||
List<String> 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<TAppLocation> updateLocations = getLocationListByLocationId(locationId);
|
||||
if (updateLocations.size() > 0) {
|
||||
return appLocationService.update(new LambdaUpdateWrapper<TAppLocation>()
|
||||
.in(TAppLocation::getLocationId, updateLocations.stream().map(TAppLocation::getLocationId).toList())
|
||||
.set(TAppLocation::getIsWorking, val));
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据料号获取物料信息
|
||||
* @param goodsId 料号
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
package com.wms_main.constant.enums.wms;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
@Getter
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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.*;
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -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任务表服务
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -38,7 +38,6 @@ public class TAppWcsTaskServiceImpl extends ServiceImpl<AppWcsTaskMapper, TAppWc
|
|||
@Override
|
||||
public Integer getEquipmentByLocation(String locationId) {
|
||||
String[] str_lst = locationId.split("-");
|
||||
int depth = Integer.parseInt(str_lst[str_lst.length - 1]);
|
||||
int row = Integer.parseInt(str_lst[0].replace("A", ""));
|
||||
return (int) Math.floor((double) (row + 1) / 2);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -465,7 +465,6 @@ public class ImportExcelEasyPoi implements IImportExcelEasyPoi {
|
|||
* @param fileVo 文件Vo
|
||||
*/
|
||||
private void saveFileVo(FileVo fileVo) {
|
||||
// TODO 待建表
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -44,7 +44,6 @@ public class RequestLogFilter extends HttpFilter {
|
|||
String responseContentString = formatContentString(new String(responseContent));
|
||||
RequestLog logInfo = new RequestLog(method, uri, remoteHost, remoteAddr, requestContentString, String.valueOf(status), responseContentString);
|
||||
log.info(logInfo.toString());
|
||||
// TODO 增加存储数据库的操作
|
||||
|
||||
// 把缓存的响应数据,响应给客户端
|
||||
responseWrapper.copyBodyToResponse();
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
package com.wms_main.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.wms_main.model.po.TAppDbs;
|
||||
import com.wms_main.model.po.TAppImage;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
package com.wms_main.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.wms_main.model.po.TAppDbs;
|
||||
import com.wms_main.model.po.TAppProductExtend;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
package com.wms_main.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.wms_main.model.po.TAppDbs;
|
||||
import com.wms_main.model.po.TAppSingleProduct;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
package com.wms_main.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.wms_main.model.po.TAppStand;
|
||||
import com.wms_main.model.po.TAppStandWork;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
package com.wms_main.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.wms_main.model.po.TAppWork;
|
||||
import com.wms_main.model.po.TAppWorkRecord;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,6 @@ package com.wms_main.model.dto.query;
|
|||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -1,14 +1,11 @@
|
|||
package com.wms_main.model.dto.request.mywms;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.wms_main.repository.utils.StringUtils;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@ import com.fasterxml.jackson.annotation.JsonProperty;
|
|||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
package com.wms_main.model.dto.request.wcs;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.wms_main.model.bo.wcs.WcsStackerTask;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
|
|
|||
|
|
@ -1,12 +1,10 @@
|
|||
package com.wms_main.model.dto.request.wms;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.time.LocalDate;
|
||||
|
||||
|
|
|
|||
|
|
@ -2,8 +2,6 @@ package com.wms_main.model.dto.response.wcs;
|
|||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.wms_main.constant.enums.wcs.WcsApiResponseCodeEnums;
|
||||
import com.wms_main.constant.enums.wms.WmsApiResponseCodeEnums;
|
||||
import com.wms_main.model.dto.response.wms.WmsApiResponse;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
|
|
|||
|
|
@ -8,8 +8,6 @@ import lombok.Data;
|
|||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* DBS表映射
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -44,7 +44,6 @@ public class TAppImage extends BaseImportEntity {
|
|||
private String imageName;
|
||||
/**
|
||||
* 图纸详情
|
||||
* TODO 是否存在数据流
|
||||
*/
|
||||
@TableField(value = "image_detail")
|
||||
private String imageDetail;
|
||||
|
|
|
|||
|
|
@ -7,8 +7,6 @@ import lombok.AllArgsConstructor;
|
|||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -7,7 +7,6 @@ import lombok.AllArgsConstructor;
|
|||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -7,7 +7,6 @@ import lombok.AllArgsConstructor;
|
|||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
package com.wms_main.model.vo.wms;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.wms_main.model.po.TAppImage;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
|
|
|||
|
|
@ -9,7 +9,6 @@ import java.time.LocalDate;
|
|||
|
||||
/**
|
||||
* 工作界面显示
|
||||
* // TODO 数据待补充
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ import lombok.Data;
|
|||
import lombok.NoArgsConstructor;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -14,8 +14,6 @@ import java.util.ArrayList;
|
|||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.ScheduledExecutorService;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
public class TcpClient {
|
||||
|
|
|
|||
|
|
@ -8,11 +8,6 @@ import org.springframework.util.DigestUtils;
|
|||
* 字符串工具类
|
||||
*/
|
||||
public class StringUtils {
|
||||
|
||||
private static final String CHARS_AZ = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
||||
private static final String CHARS_az = "abcdefghijklmnopqrstuvwxyz";
|
||||
private static final String CHARS_09 = "0123456789";
|
||||
|
||||
/** 下划线 */
|
||||
private static final char SEPARATOR = '_';
|
||||
|
||||
|
|
|
|||
|
|
@ -11,13 +11,10 @@ import com.wms_main.model.dto.request.wcs.WcsStackerTaskRequest;
|
|||
import com.wms_main.model.dto.response.wcs.BaseWcsApiResponse;
|
||||
import com.wms_main.model.dto.response.wcs.WcsApiResponse;
|
||||
import com.wms_main.model.dto.response.wcs.WcsCanFeedResponse;
|
||||
import com.wms_main.model.po.TAppAgvLock;
|
||||
import com.wms_main.repository.http.HttpClient;
|
||||
import com.wms_main.repository.http.entity.HttpRequest;
|
||||
import com.wms_main.repository.http.entity.HttpResponse;
|
||||
import com.wms_main.service.api.IWcsApiService;
|
||||
import com.wms_main.service.business.IAgvLockService;
|
||||
import com.wms_main.service.business.IStackerTaskService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
|
@ -33,8 +30,6 @@ import java.time.LocalDateTime;
|
|||
public class WcsApiServiceImpl implements IWcsApiService {
|
||||
private final HttpClient httpClient;// http客户端
|
||||
private final AppCommon appCommon;// 应用共通
|
||||
private final IAgvLockService agvLockService;// AGV互锁服务
|
||||
private final IStackerTaskService stackerTaskService;// 库位分配服务
|
||||
|
||||
/**
|
||||
* 发送堆垛机任务
|
||||
|
|
@ -45,12 +40,12 @@ public class WcsApiServiceImpl implements IWcsApiService {
|
|||
public WcsApiResponse<WcsStackerTask> 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<WcsStackerTask> response = new WcsApiResponse<>();
|
||||
response = httpResponse.getData(response.getClass().asSubclass(WcsApiResponse.class));
|
||||
return response;
|
||||
}
|
||||
// HttpResponse httpResponse = httpClient.httpPost(httpRequest);
|
||||
// if (httpResponse != null && httpResponse.isSuccess()) {
|
||||
// WcsApiResponse<WcsStackerTask> response = new WcsApiResponse<>();
|
||||
// response = httpResponse.getData(response.getClass().asSubclass(WcsApiResponse.class));
|
||||
// return response;
|
||||
// }
|
||||
// TODO success -> error
|
||||
return WcsApiResponse.success("请求未获得响应信息。", 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);
|
||||
}
|
||||
|
|
@ -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<TAppStock>()
|
||||
.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<TAppStock> 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<TAppStock> 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<TAppStock>()
|
||||
.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<TAppLocation>()
|
||||
.eq(TAppLocation::getLocationId, location.getLocationId())
|
||||
.set(TAppLocation::getIsOccupy, 0)
|
||||
.set(TAppLocation::getVehicleId, "")
|
||||
);
|
||||
} catch (Exception e) {
|
||||
log.warn("释放库位失败: {}", location.getLocationId(), e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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<TAppTask> thisVehicleOutTasks = vehicleIdToTaskMap.get(vehicleId);
|
||||
if (thisVehicleOutTasks.isEmpty()) {
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
/**
|
||||
* 库位控制类服务
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
/**
|
||||
* 任务控制类 服务接口
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -110,7 +110,6 @@ public class LoginControllerServiceImpl implements ILoginControllerService {
|
|||
}
|
||||
List<MenuVo> menuVoList = new LinkedList<>();
|
||||
// 查找一级菜单
|
||||
// TODO 这里可以用递归优化,减少代码量
|
||||
for (TSysMenu firstMenu : menuPoList) {
|
||||
if (AppConstant.ROOT_MENU_ID.equals(firstMenu.getParentId())) {// 查找到所有的一级子菜单
|
||||
MenuVo tempFirstMenu = new MenuVo();
|
||||
|
|
|
|||
|
|
@ -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<TAppLocation>()
|
||||
.eq(TAppLocation::getLocationId, location.getLocationId())
|
||||
.set(TAppLocation::getIsOccupy, 0)
|
||||
.set(TAppLocation::getVehicleId, ""));
|
||||
appCommon.updateWorkingLocations(location.getLocationId(), 0);
|
||||
|
||||
// 2. 调用wcs.canFeed检查wcs状态
|
||||
WcsApiResponse<WcsCanFeedResponse> wcsResponse = wcsApiService.canFeed(new WcsCanFeedRequest("R1"));
|
||||
WcsApiResponse<WcsCanFeedResponse> 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<TAppLocation>()
|
||||
.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<Boolean> queryCanOut() {
|
||||
try {
|
||||
// 1. 调用wcs.canFeed检查wcs状态 (使用R1口)
|
||||
WcsApiResponse<WcsCanFeedResponse> wcsResponse = wcsApiService.canFeed(new WcsCanFeedRequest("R1"));
|
||||
// 1. 调用wcs.canFeed检查wcs状态 (使用CR口)
|
||||
WcsApiResponse<WcsCanFeedResponse> 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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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(),
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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<TAppOrderOut> orders = appOrderOutService.list(
|
||||
new LambdaQueryWrapper<TAppOrderOut>()
|
||||
.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<TAppStock> 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<TAppStock>()
|
||||
.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<TAppStock> 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<TAppStock>()
|
||||
.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<TAppStock>()
|
||||
.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<TAppOrderOut>()
|
||||
.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;
|
||||
}
|
||||
}
|
||||
|
|
@ -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<TAppWcsTask>().eq(TAppWcsTask::getWcsTaskStatus,
|
||||
WcsStackerTaskStatusEnums.WAIT.getCode()))) {
|
||||
return;
|
||||
}
|
||||
// 查询到所有的待下发的wcsTask并按优先级排序
|
||||
List<TAppWcsTask> waitSendWcsTaskList = appWcsTaskService.list(
|
||||
new LambdaQueryWrapper<TAppWcsTask>()
|
||||
.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<WcsStackerTask> wcsResponse = wcsApiService.sendWcsStackerTask(request);
|
||||
if (wcsResponse != null && WcsApiResponseCodeEnums.SUCCESS.getCode() == wcsResponse.getCode()) {
|
||||
// 更新当前的wcs任务状态为已发送
|
||||
appWcsTaskService.update(
|
||||
new LambdaUpdateWrapper<TAppWcsTask>()
|
||||
.set(TAppWcsTask::getWcsTaskStatus, WcsStackerTaskStatusEnums.WAIT.getCode())
|
||||
.set(TAppWcsTask::getSendTime, LocalDateTime.now())
|
||||
.eq(TAppWcsTask::getWcsTaskId, wcsTask.getWcsTaskId()));
|
||||
// 更新当前wcs任务对应的wms任务为已发送
|
||||
appTaskService.update(
|
||||
new LambdaUpdateWrapper<TAppTask>()
|
||||
.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<TAppWcsTask>()
|
||||
.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<TAppWcsTask>()
|
||||
.set(TAppWcsTask::getWcsTaskStatus, WcsStackerTaskStatusEnums.EXCEPTION.getCode())
|
||||
.set(TAppWcsTask::getSendTime, LocalDateTime.now())
|
||||
.eq(TAppWcsTask::getWcsTaskId, wcsTask.getWcsTaskId()));
|
||||
// 更新当前wcs任务对应的wms任务为异常
|
||||
appTaskService.update(
|
||||
new LambdaUpdateWrapper<TAppTask>()
|
||||
.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<WcsStackerTask> wcsResponse = wcsApiService.sendWcsStackerTask(request);
|
||||
if (wcsResponse != null && WcsApiResponseCodeEnums.SUCCESS.getCode() == wcsResponse.getCode()) {
|
||||
// 更新当前的wcs任务状态为已发送
|
||||
appWcsTaskService.update(
|
||||
new LambdaUpdateWrapper<TAppWcsTask>()
|
||||
.set(TAppWcsTask::getWcsTaskStatus, WcsStackerTaskStatusEnums.WAIT.getCode())
|
||||
.set(TAppWcsTask::getSendTime, LocalDateTime.now())
|
||||
.eq(TAppWcsTask::getWcsTaskId, wcsTask.getWcsTaskId()));
|
||||
// 更新当前wcs任务对应的wms任务为已发送
|
||||
appTaskService.update(
|
||||
new LambdaUpdateWrapper<TAppTask>()
|
||||
.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<TAppWcsTask>()
|
||||
.set(TAppWcsTask::getWcsTaskStatus, WcsStackerTaskStatusEnums.EXCEPTION.getCode())
|
||||
.set(TAppWcsTask::getSendTime, LocalDateTime.now())
|
||||
.eq(TAppWcsTask::getWcsTaskId, wcsTask.getWcsTaskId()));
|
||||
// 更新当前wcs任务对应的wms任务为异常
|
||||
appTaskService.update(
|
||||
new LambdaUpdateWrapper<TAppTask>()
|
||||
.set(TAppTask::getTaskStatus, WmsStackerTaskStatusEnums.EXCEPTION.getCode())
|
||||
.eq(TAppTask::getWcsTaskId, wcsTask.getWcsTaskId()));
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("堆垛机任务发送失败,任务号:{},载具号:{},起点:{},终点:{}。", request.getTaskId(), request.getVehicleNo(),
|
||||
request.getOrigin(), request.getDestination());
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
/**
|
||||
* 运行定时任务
|
||||
* 完成堆垛机任务
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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": "任务执行成功"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<TAppLocation> getLocationListByLocationId(String locationId) {
|
||||
List<TAppLocation> resList = new ArrayList<>();
|
||||
List<String> 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<TAppLocation> updateLocations = getLocationListByLocationId(locationId);
|
||||
if (updateLocations.size() > 0) {
|
||||
return appLocationService.update(new LambdaUpdateWrapper<TAppLocation>()
|
||||
.in(TAppLocation::getLocationId, updateLocations.stream().map(TAppLocation::getLocationId).toList())
|
||||
.set(TAppLocation::getIsWorking, val));
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据料号获取物料信息
|
||||
* @param goodsId 料号
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
package com.wms_main.constant.enums.wms;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
@Getter
|
||||
|
|
|
|||
|
|
@ -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.*;
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -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任务表服务
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -38,7 +38,6 @@ public class TAppWcsTaskServiceImpl extends ServiceImpl<AppWcsTaskMapper, TAppWc
|
|||
@Override
|
||||
public Integer getEquipmentByLocation(String locationId) {
|
||||
String[] str_lst = locationId.split("-");
|
||||
int depth = Integer.parseInt(str_lst[str_lst.length - 1]);
|
||||
int row = Integer.parseInt(str_lst[0].replace("A", ""));
|
||||
return (int) Math.floor((double) (row + 1) / 2);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -465,7 +465,6 @@ public class ImportExcelEasyPoi implements IImportExcelEasyPoi {
|
|||
* @param fileVo 文件Vo
|
||||
*/
|
||||
private void saveFileVo(FileVo fileVo) {
|
||||
// TODO 待建表
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -44,7 +44,6 @@ public class RequestLogFilter extends HttpFilter {
|
|||
String responseContentString = formatContentString(new String(responseContent));
|
||||
RequestLog logInfo = new RequestLog(method, uri, remoteHost, remoteAddr, requestContentString, String.valueOf(status), responseContentString);
|
||||
log.info(logInfo.toString());
|
||||
// TODO 增加存储数据库的操作
|
||||
|
||||
// 把缓存的响应数据,响应给客户端
|
||||
responseWrapper.copyBodyToResponse();
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
package com.wms_main.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.wms_main.model.po.TAppDbs;
|
||||
import com.wms_main.model.po.TAppImage;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
package com.wms_main.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.wms_main.model.po.TAppDbs;
|
||||
import com.wms_main.model.po.TAppProductExtend;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
package com.wms_main.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.wms_main.model.po.TAppDbs;
|
||||
import com.wms_main.model.po.TAppSingleProduct;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
package com.wms_main.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.wms_main.model.po.TAppStand;
|
||||
import com.wms_main.model.po.TAppStandWork;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
package com.wms_main.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.wms_main.model.po.TAppWork;
|
||||
import com.wms_main.model.po.TAppWorkRecord;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,6 @@ package com.wms_main.model.dto.query;
|
|||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -1,15 +1,11 @@
|
|||
package com.wms_main.model.dto.request.mywms;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.wms_main.repository.utils.StringUtils;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
public class StockReq {
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@ import com.fasterxml.jackson.annotation.JsonProperty;
|
|||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
package com.wms_main.model.dto.request.wcs;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.wms_main.model.bo.wcs.WcsStackerTask;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
|
|
|||
|
|
@ -1,13 +1,10 @@
|
|||
package com.wms_main.model.dto.request.wms;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.time.LocalDate;
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -2,8 +2,6 @@ package com.wms_main.model.dto.response.wcs;
|
|||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.wms_main.constant.enums.wcs.WcsApiResponseCodeEnums;
|
||||
import com.wms_main.constant.enums.wms.WmsApiResponseCodeEnums;
|
||||
import com.wms_main.model.dto.response.wms.WmsApiResponse;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
|
|
|||
|
|
@ -8,8 +8,6 @@ import lombok.Data;
|
|||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* DBS表映射
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -44,7 +44,6 @@ public class TAppImage extends BaseImportEntity {
|
|||
private String imageName;
|
||||
/**
|
||||
* 图纸详情
|
||||
* TODO 是否存在数据流
|
||||
*/
|
||||
@TableField(value = "image_detail")
|
||||
private String imageDetail;
|
||||
|
|
|
|||
|
|
@ -6,9 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName;
|
|||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -6,8 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName;
|
|||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -6,8 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName;
|
|||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
package com.wms_main.model.vo.wms;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.wms_main.model.po.TAppImage;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
|
|
|||
|
|
@ -9,7 +9,6 @@ import java.time.LocalDate;
|
|||
|
||||
/**
|
||||
* 工作界面显示
|
||||
* // TODO 数据待补充
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ import lombok.Data;
|
|||
import lombok.NoArgsConstructor;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -14,8 +14,6 @@ import java.util.ArrayList;
|
|||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.ScheduledExecutorService;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
public class TcpClient {
|
||||
|
|
|
|||
|
|
@ -8,11 +8,6 @@ import org.springframework.util.DigestUtils;
|
|||
* 字符串工具类
|
||||
*/
|
||||
public class StringUtils {
|
||||
|
||||
private static final String CHARS_AZ = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
||||
private static final String CHARS_az = "abcdefghijklmnopqrstuvwxyz";
|
||||
private static final String CHARS_09 = "0123456789";
|
||||
|
||||
/** 下划线 */
|
||||
private static final char SEPARATOR = '_';
|
||||
|
||||
|
|
|
|||
|
|
@ -11,13 +11,10 @@ import com.wms_main.model.dto.request.wcs.WcsStackerTaskRequest;
|
|||
import com.wms_main.model.dto.response.wcs.BaseWcsApiResponse;
|
||||
import com.wms_main.model.dto.response.wcs.WcsApiResponse;
|
||||
import com.wms_main.model.dto.response.wcs.WcsCanFeedResponse;
|
||||
import com.wms_main.model.po.TAppAgvLock;
|
||||
import com.wms_main.repository.http.HttpClient;
|
||||
import com.wms_main.repository.http.entity.HttpRequest;
|
||||
import com.wms_main.repository.http.entity.HttpResponse;
|
||||
import com.wms_main.service.api.IWcsApiService;
|
||||
import com.wms_main.service.business.IAgvLockService;
|
||||
import com.wms_main.service.business.IStackerTaskService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
|
@ -33,8 +30,6 @@ import java.time.LocalDateTime;
|
|||
public class WcsApiServiceImpl implements IWcsApiService {
|
||||
private final HttpClient httpClient;// http客户端
|
||||
private final AppCommon appCommon;// 应用共通
|
||||
private final IAgvLockService agvLockService;// AGV互锁服务
|
||||
private final IStackerTaskService stackerTaskService;// 库位分配服务
|
||||
|
||||
/**
|
||||
* 发送堆垛机任务
|
||||
|
|
@ -45,12 +40,12 @@ public class WcsApiServiceImpl implements IWcsApiService {
|
|||
public WcsApiResponse<WcsStackerTask> 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<WcsStackerTask> response = new WcsApiResponse<>();
|
||||
response = httpResponse.getData(response.getClass().asSubclass(WcsApiResponse.class));
|
||||
return response;
|
||||
}
|
||||
// HttpResponse httpResponse = httpClient.httpPost(httpRequest);
|
||||
// if (httpResponse != null && httpResponse.isSuccess()) {
|
||||
// WcsApiResponse<WcsStackerTask> response = new WcsApiResponse<>();
|
||||
// response = httpResponse.getData(response.getClass().asSubclass(WcsApiResponse.class));
|
||||
// return response;
|
||||
// }
|
||||
// TODO success -> error
|
||||
return WcsApiResponse.success("请求未获得响应信息。", null);
|
||||
}
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user