diff --git a/src/main/java/com/glxp/api/controller/collect/IoCollectLedGroupController.java b/src/main/java/com/glxp/api/controller/collect/IoCollectLedGroupController.java index 0599a11c9..ac2e80cde 100644 --- a/src/main/java/com/glxp/api/controller/collect/IoCollectLedGroupController.java +++ b/src/main/java/com/glxp/api/controller/collect/IoCollectLedGroupController.java @@ -89,28 +89,27 @@ public class IoCollectLedGroupController extends BaseController { */ Integer ledNum = ledConfirmRequest.getLednum(); String mac = ledConfirmRequest.getMac(); -// IoCollectLedGroup collectLedGroup = ioCollectLedGroupService.getOne(new LambdaQueryWrapper().eq(IoCollectLedGroup::getMac, mac), false); -// Long bizId = 0L; -// if (ledNum == 1) { -// bizId = collectLedGroup.getRed(); -// collectLedGroup.setRed(0l); -// } else if (ledNum == 2) { -// bizId = collectLedGroup.getOrange(); -// collectLedGroup.setOrange(0l); -// } else if (ledNum == 3) { -// bizId = collectLedGroup.getBlue(); -// collectLedGroup.setBlue(0l); -// } else if (ledNum == 4) { -// bizId = collectLedGroup.getGreen(); -// collectLedGroup.setGreen(0l); -// } -// if (IntUtil.value(bizId) == 0) { -// return ResultVOUtils.error("无订单"); -// } -// ioCollectLedGroupService.updateById(collectLedGroup); -; + IoCollectLedGroup collectLedGroup = ioCollectLedGroupService.getOne(new LambdaQueryWrapper().eq(IoCollectLedGroup::getMac, mac), false); + Long bizId = 0L; + if (ledNum == 1) { + bizId = collectLedGroup.getRed(); + collectLedGroup.setRed(0l); + } else if (ledNum == 2) { + bizId = collectLedGroup.getOrange(); + collectLedGroup.setOrange(0l); + } else if (ledNum == 3) { + bizId = collectLedGroup.getBlue(); + collectLedGroup.setBlue(0l); + } else if (ledNum == 4) { + bizId = collectLedGroup.getGreen(); + collectLedGroup.setGreen(0l); + } + if (IntUtil.value(bizId) == 0) { + return ResultVOUtils.error("无订单"); + } + ioCollectLedGroupService.updateById(collectLedGroup); SysOrderLed orderLed = sysOrderLedService.getOne(new LambdaQueryWrapper().eq(SysOrderLed::getLedNum, ledNum)); - sysOrderLedService.closeLed(orderLed.getOrderId()); + sysOrderLedService.closeLed(orderLed.getOrderId(),bizId,mac); return ResultVOUtils.success("确认成功!"); } diff --git a/src/main/java/com/glxp/api/service/basic/SysWorkplaceQueueService.java b/src/main/java/com/glxp/api/service/basic/SysWorkplaceQueueService.java index 543a69577..69e8794ac 100644 --- a/src/main/java/com/glxp/api/service/basic/SysWorkplaceQueueService.java +++ b/src/main/java/com/glxp/api/service/basic/SysWorkplaceQueueService.java @@ -84,6 +84,7 @@ public class SysWorkplaceQueueService extends ServiceImpl().eq(SysOrderLed::getOrderId,orderIdFk)); if (orderLedByOrder != null){ + redisDelayedQueue.addTaskToQueue(orderIdFk + ";" + mac + ";" + bizId,3 * 60,"led_queue"); return orderLedByOrder.getLedNum(); } List orderLeds = sysOrderLedService.list(new LambdaQueryWrapper().isNull(SysOrderLed::getOrderId) diff --git a/src/main/java/com/glxp/api/service/collect/SysOrderLedService.java b/src/main/java/com/glxp/api/service/collect/SysOrderLedService.java index 7a3a191f1..ade1e7ace 100644 --- a/src/main/java/com/glxp/api/service/collect/SysOrderLedService.java +++ b/src/main/java/com/glxp/api/service/collect/SysOrderLedService.java @@ -2,6 +2,8 @@ package com.glxp.api.service.collect; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.glxp.api.common.res.BaseResponse; +import com.glxp.api.common.util.ResultVOUtils; import com.glxp.api.dao.collect.IoCollectLedGroupMapper; import com.glxp.api.dao.collect.SysOrderLedMapper; import com.glxp.api.entity.basic.SysWorkplaceQueue; @@ -43,17 +45,17 @@ public class SysOrderLedService extends ServiceImpl().eq(SysOrderLed::getOrderId, orderId)); - updateSetOrderId(orderLed.getId()); SysWorkplaceQueue sysWorkplaceQueue = sysWorkplaceQueueService.getOne(new LambdaQueryWrapper().eq(SysWorkplaceQueue::getMac, mac)); IoCollectOrderBiz collectOrderBiz = ioCollectOrderBizService.getById(bizId); splitCodeService.confirmBizAutiTagCode(collectOrderBiz, sysWorkplaceQueue.getCode(), null, true); - // 从队列中删除已执行的任务genjv + // 从队列中删除已执行的任务 redisDelayedQueue.getJedis().zrem("led_queue", orderId + ";" + mac + ";" + bizId); + int queueCount = redisDelayedQueue.countTasksByOrderIdFk(orderId, "led_queue"); + if (queueCount == 0){ + updateSetOrderId(orderLed.getId()); + } +// return ResultVOUtils.success(); } } diff --git a/src/main/java/com/glxp/api/task/LedClearTask.java b/src/main/java/com/glxp/api/task/LedClearTask.java index e76d33cf8..d77802899 100644 --- a/src/main/java/com/glxp/api/task/LedClearTask.java +++ b/src/main/java/com/glxp/api/task/LedClearTask.java @@ -56,6 +56,9 @@ public class LedClearTask implements SchedulingConfigurer { @Resource SysWorkplaceQueueService sysWorkplaceQueueService; + @Resource + IoCollectLedGroupService ioCollectLedGroupService; + @@ -88,14 +91,33 @@ public class LedClearTask implements SchedulingConfigurer { String[] valueList = values.split(";"); String orderId = valueList[0]; String mac = valueList[1]; - String bizId = valueList[2]; + Long bizId = Long.valueOf(valueList[2]); + IoCollectOrderBiz collectOrderBiz = ioCollectOrderBizService.getById(bizId); + IoCollectLedGroup collectLedGroup = ioCollectLedGroupService.getOne(new LambdaQueryWrapper().eq(IoCollectLedGroup::getMac, mac), false); + if (collectOrderBiz.getLedNum() == 1) { + bizId = collectLedGroup.getRed(); + collectLedGroup.setRed(0l); + } else if (collectOrderBiz.getLedNum() == 2) { + bizId = collectLedGroup.getOrange(); + collectLedGroup.setOrange(0l); + } else if (collectOrderBiz.getLedNum() == 3) { + bizId = collectLedGroup.getBlue(); + collectLedGroup.setBlue(0l); + } else if (collectOrderBiz.getLedNum() == 4) { + bizId = collectLedGroup.getGreen(); + collectLedGroup.setGreen(0l); + } + ioCollectLedGroupService.updateById(collectLedGroup); +// if (IntUtil.value(bizId) == 0) { +// return ResultVOUtils.error("无订单"); +// } SysOrderLed orderLed = sysOrderLedService.getOne(new LambdaQueryWrapper().eq(SysOrderLed::getOrderId, orderId)); if (orderLed == null){ redisDelayedQueue.getJedis().zrem("led_queue", orderId + ";" + mac + ";" + bizId); return; } try { - sysOrderLedService.closeLed(orderId); + sysOrderLedService.closeLed(orderId,bizId,mac); } catch (Exception e) { throw new JsonException(e.getMessage()); } diff --git a/src/main/java/com/glxp/api/util/redis/RedisDelayedQueue.java b/src/main/java/com/glxp/api/util/redis/RedisDelayedQueue.java index 240c92e53..25859bac6 100644 --- a/src/main/java/com/glxp/api/util/redis/RedisDelayedQueue.java +++ b/src/main/java/com/glxp/api/util/redis/RedisDelayedQueue.java @@ -48,7 +48,6 @@ public class RedisDelayedQueue { } public String getTaskByOrderId(String queueName, String orderId) { - // 获取有序集合中的所有任务 List tasks = jedis.zrange(queueName, 0, -1); for (String task : tasks) { String[] parts = task.split(";"); @@ -62,6 +61,19 @@ public class RedisDelayedQueue { return null; } + public int countTasksByOrderIdFk(String orderIdFk, String queueName) { + int count = 0; + List tasks = jedis.zrange(queueName, 0, -1); + for (String task : tasks) { + String[] parts = task.split(";"); + String taskId = parts[0]; + if (taskId.equals(orderIdFk)) { + count ++; + } + } + return count; + } + // 定期检查并处理任务 // public static void startTaskProcessor() { // while (true) {