diff --git a/pom.xml b/pom.xml
index f33100a9b..530089561 100644
--- a/pom.xml
+++ b/pom.xml
@@ -166,6 +166,12 @@
0.9.1
+
+ redis.clients
+ jedis
+ 4.2.3
+
+
org.springframework.boot
spring-boot-starter-test
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 f0c1e9960..0599a11c9 100644
--- a/src/main/java/com/glxp/api/controller/collect/IoCollectLedGroupController.java
+++ b/src/main/java/com/glxp/api/controller/collect/IoCollectLedGroupController.java
@@ -11,6 +11,7 @@ import com.glxp.api.controller.BaseController;
import com.glxp.api.entity.basic.SysWorkplaceQueue;
import com.glxp.api.entity.collect.IoCollectLedGroup;
import com.glxp.api.entity.collect.IoCollectOrderBiz;
+import com.glxp.api.entity.collect.SysOrderLed;
import com.glxp.api.req.basic.BasicCollectUserRequest;
import com.glxp.api.req.collect.CollectLedConfirmRequest;
import com.glxp.api.req.collect.CollectLedGroupRequest;
@@ -24,6 +25,7 @@ import com.glxp.api.service.basic.SysWorkplaceQueueService;
import com.glxp.api.service.collect.IoCollectCodeService;
import com.glxp.api.service.collect.IoCollectLedGroupService;
import com.glxp.api.service.collect.IoCollectOrderBizService;
+import com.glxp.api.service.collect.SysOrderLedService;
import com.glxp.api.service.inout.IoSplitCodeService;
import com.glxp.api.util.IntUtil;
import lombok.extern.slf4j.Slf4j;
@@ -70,6 +72,10 @@ public class IoCollectLedGroupController extends BaseController {
@Resource
SysWorkplaceQueueService sysWorkplaceQueueService;
+ @Resource
+ SysOrderLedService sysOrderLedService;
+
+
/**
* 取货确认
*
@@ -83,28 +89,28 @@ public class IoCollectLedGroupController extends BaseController {
*/
Integer ledNum = ledConfirmRequest.getLednum();
String mac = ledConfirmRequest.getMac();
- IoCollectLedGroup collectLedGroup = ioCollectLedGroupService.getOne(new LambdaQueryWrapper().eq(IoCollectLedGroup::getMac, mac), false);
- SysWorkplaceQueue sysWorkplaceQueue = sysWorkplaceQueueService.getOne(new LambdaQueryWrapper().eq(SysWorkplaceQueue::getMac, mac));
- 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);
- IoCollectOrderBiz collectOrderBiz = ioCollectOrderBizService.getById(bizId);
- splitCodeService.confirmBizAutiTagCode(collectOrderBiz, sysWorkplaceQueue.getCode(), null, true);
+// 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());
return ResultVOUtils.success("确认成功!");
}
diff --git a/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java b/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java
index af9a3c600..5b62b948e 100644
--- a/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java
+++ b/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.glxp.api.annotation.CusRedissonAnnotation;
import com.glxp.api.constant.*;
import com.glxp.api.dao.inout.IoOrderDetailCodeDao;
+import com.glxp.api.entity.auth.SysWorkplace;
import com.glxp.api.entity.basic.*;
import com.glxp.api.entity.collect.*;
import com.glxp.api.exception.JsonException;
@@ -13,11 +14,14 @@ import com.glxp.api.res.collect.CollectOrderBizResponse;
import com.glxp.api.res.collect.IoCollectOrderResponse;
import com.glxp.api.res.collect.RelCodeDetailResponse;
import com.glxp.api.res.inout.*;
+import com.glxp.api.service.auth.SysWorkplaceService;
import com.glxp.api.service.collect.*;
import com.glxp.api.service.collect.RelCodeDetailService;
import com.glxp.api.service.inout.impl.IoCodeService;
import com.glxp.api.service.inv.impl.InvProductServiceNew;
import com.glxp.api.vo.basic.InvProductNewVo;
+import org.apache.poi.ss.formula.functions.Offset;
+import org.aspectj.weaver.ast.Var;
import org.springframework.beans.BeanUtils;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.IdUtil;
@@ -130,6 +134,12 @@ public class IoCodeTempController extends BaseController {
@Autowired
IoCollectOrderCodeManService ioCollectOrderCodeManService;
+ @Autowired
+ SysWorkplaceService sysWorkplaceService;
+
+ @Resource
+ SysOrderLedService sysOrderLedService;
+
/**
* PDA-----单据上传
@@ -176,6 +186,19 @@ public class IoCodeTempController extends BaseController {
if (byBillNo != null){
return ResultVOUtils.error(500, "该单据已处理完成,请勿重复处理!");
}
+
+ //取药确认
+ if (addEnterCodeRequest.getSelectType() != null){
+ List orderLeds = sysOrderLedService.list(new LambdaQueryWrapper().isNull(SysOrderLed::getOrderId)
+ .or()
+ .eq(SysOrderLed::getOrderId, "")
+ .orderByAsc(SysOrderLed::getLedNum));
+ //如果为null 当前灯组已满
+ if (orderLeds == null || orderLeds.size() == 0){
+ return ResultVOUtils.error(500, "灯组已满!");
+ }
+ }
+
IoCollectOrderResponse collectOrder = collectOrderService.unionSearch(null, addEnterCodeRequest.getBusType(), code);
if (collectOrder == null) {
//查询原始单据查到为异常提示
diff --git a/src/main/java/com/glxp/api/dao/collect/SysOrderLedMapper.java b/src/main/java/com/glxp/api/dao/collect/SysOrderLedMapper.java
new file mode 100644
index 000000000..24f67c825
--- /dev/null
+++ b/src/main/java/com/glxp/api/dao/collect/SysOrderLedMapper.java
@@ -0,0 +1,17 @@
+package com.glxp.api.dao.collect;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.glxp.api.entity.collect.SysOrderLed;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @author : zhuzhu
+ * @date : 2025/1/20 14:25
+ * @modyified By :
+ */
+@Mapper
+public interface SysOrderLedMapper extends BaseMapper {
+
+
+ void updateSetOrderId(Integer id);
+}
diff --git a/src/main/java/com/glxp/api/entity/collect/SysOrderLed.java b/src/main/java/com/glxp/api/entity/collect/SysOrderLed.java
new file mode 100644
index 000000000..57d88db59
--- /dev/null
+++ b/src/main/java/com/glxp/api/entity/collect/SysOrderLed.java
@@ -0,0 +1,99 @@
+package com.glxp.api.entity.collect;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.io.Serializable;
+import java.util.Date;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+
+
+
+@ApiModel(value = "sys_order_led")
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+@TableName(value = "sys_order_led")
+public class SysOrderLed implements Serializable {
+ /**
+ *
+ */
+ @ApiModelProperty(value = "")
+ @TableId(value = "id", type = IdType.INPUT)
+ private Integer id;
+
+ /**
+ * 1.红,2:橙,3:蓝,4:绿
+ */
+ @ApiModelProperty(value = "1.红,2:橙,3:蓝,4:绿")
+ @TableField(value = "ledNum")
+ private Integer ledNum;
+
+ /**
+ * 订单id
+ */
+ @ApiModelProperty(value = "")
+ @TableField(value = "orderId")
+ private String orderId;
+
+ /**
+ *
+ */
+ @ApiModelProperty(value = "")
+ @TableField(value = "remark")
+ private String remark;
+
+ /**
+ *
+ */
+ @ApiModelProperty(value = "")
+ @TableField(value = "updateTime")
+ private Date updateTime;
+
+ /**
+ *
+ */
+ @ApiModelProperty(value = "")
+ @TableField(value = "createTime")
+ private Date createTime;
+
+ /**
+ *
+ */
+ @ApiModelProperty(value = "")
+ @TableField(value = "createUser")
+ private String createUser;
+
+ /**
+ *
+ */
+ @ApiModelProperty(value = "")
+ @TableField(value = "updateUser")
+ private String updateUser;
+
+ /**
+ * 状态
+ */
+ @ApiModelProperty(value = "状态")
+ @TableField(value = "status")
+ private Byte status;
+
+ /**
+ * 超时时间
+ */
+ @ApiModelProperty(value = "超时时间")
+ @TableField(value = "timeOut")
+ private Integer timeOut;
+
+ private static final long serialVersionUID = 1L;
+}
+
diff --git a/src/main/java/com/glxp/api/req/inout/AddEnterCodeRequest.java b/src/main/java/com/glxp/api/req/inout/AddEnterCodeRequest.java
index 654a72536..58da84f9b 100644
--- a/src/main/java/com/glxp/api/req/inout/AddEnterCodeRequest.java
+++ b/src/main/java/com/glxp/api/req/inout/AddEnterCodeRequest.java
@@ -13,4 +13,9 @@ public class AddEnterCodeRequest {
private List codeList;
private String viewType;
private String orderId;
+
+ /**
+ * selectType 搜索类型 用于取药确认搜索单据 判断灯组是否够用
+ */
+ private Integer selectType;
}
diff --git a/src/main/java/com/glxp/api/service/collect/IoCollectLedGroupService.java b/src/main/java/com/glxp/api/service/collect/IoCollectLedGroupService.java
index 3ff0c3d08..7cc9476c4 100644
--- a/src/main/java/com/glxp/api/service/collect/IoCollectLedGroupService.java
+++ b/src/main/java/com/glxp/api/service/collect/IoCollectLedGroupService.java
@@ -11,7 +11,9 @@ import com.glxp.api.common.res.BaseResponse;
import com.glxp.api.dao.collect.IoCollectLedGroupMapper;
import com.glxp.api.entity.basic.SysWorkplaceQueue;
import com.glxp.api.entity.collect.IoCollectLedGroup;
+import com.glxp.api.entity.collect.IoCollectOrder;
import com.glxp.api.entity.collect.IoCollectOrderBiz;
+import com.glxp.api.entity.collect.SysOrderLed;
import com.glxp.api.entity.thrsys.CodeRel;
import com.glxp.api.enums.led.LedColorStatusEnum;
import com.glxp.api.exception.JsonException;
@@ -21,6 +23,8 @@ import com.glxp.api.res.collect.IoCollectLedGroupResponse;
import com.glxp.api.service.basic.SysWorkplaceQueueService;
import com.glxp.api.util.IntUtil;
import com.glxp.api.util.OkHttpCli;
+import com.glxp.api.util.RedisUtil;
+import com.glxp.api.util.redis.RedisDelayedQueue;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@@ -40,9 +44,16 @@ public class IoCollectLedGroupService extends ServiceImpl filterList(CollectLedGroupRequest collectLedGroupRequest) {
if (collectLedGroupRequest == null) {
@@ -78,22 +89,24 @@ public class IoCollectLedGroupService extends ServiceImpl().eq(SysOrderLed::getOrderId,orderIdFk));
+ if (orderLedByOrder != null){
+ return orderLedByOrder.getLedNum();
+ }
+ List orderLeds = sysOrderLedService.list(new LambdaQueryWrapper().isNull(SysOrderLed::getOrderId)
+ .or()
+ .eq(SysOrderLed::getOrderId, "")
+ .orderByAsc(SysOrderLed::getLedNum));
+ //如果为null 当前灯组已满
+ SysOrderLed orderLed = orderLeds.get(0);
+ //if 没有满 设置订单id
+ orderLed.setOrderId(orderIdFk);
+ sysOrderLedService.updateById(orderLed);
+ //设置成功加入redis 一分钟超时时间 过期删除 然后根据订单id 清楚灯组
+ redisDelayedQueue.addTaskToQueue(orderIdFk + ";" + mac + ";" + bizId,3 * 60,"led_queue");
+ return orderLed.getLedNum();
+
+ }
}
diff --git a/src/main/java/com/glxp/api/service/collect/SysOrderLedService.java b/src/main/java/com/glxp/api/service/collect/SysOrderLedService.java
new file mode 100644
index 000000000..7a3a191f1
--- /dev/null
+++ b/src/main/java/com/glxp/api/service/collect/SysOrderLedService.java
@@ -0,0 +1,59 @@
+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.dao.collect.IoCollectLedGroupMapper;
+import com.glxp.api.dao.collect.SysOrderLedMapper;
+import com.glxp.api.entity.basic.SysWorkplaceQueue;
+import com.glxp.api.entity.collect.IoCollectOrderBiz;
+import com.glxp.api.entity.collect.SysOrderLed;
+import com.glxp.api.service.basic.SysWorkplaceQueueService;
+import com.glxp.api.service.inout.IoSplitCodeService;
+import com.glxp.api.util.redis.RedisDelayedQueue;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+
+/**
+ * @author : zhuzhu
+ * @date : 2025/1/20 14:23
+ * @modyified By :
+ */
+
+@Service
+public class SysOrderLedService extends ServiceImpl {
+
+ @Resource
+ SysOrderLedMapper sysOrderLedMapper;
+
+ @Resource
+ IoCollectOrderBizService ioCollectOrderBizService;
+ @Resource
+ SysWorkplaceQueueService sysWorkplaceQueueService;
+
+ @Resource
+ IoSplitCodeService splitCodeService;
+
+ @Resource
+ private RedisDelayedQueue redisDelayedQueue;
+
+
+
+ public void updateSetOrderId(Integer id) {
+ sysOrderLedMapper.updateSetOrderId(id);
+ }
+
+ public void closeLed(String orderId) {
+ String task = redisDelayedQueue.getTaskByOrderId("led_queue", orderId);
+ String[] valueList = task.split(";");
+ String mac = valueList[1];
+ String bizId = valueList[2];
+ SysOrderLed orderLed = getOne(new LambdaQueryWrapper().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);
+ }
+}
diff --git a/src/main/java/com/glxp/api/service/inout/IoSplitCodeService.java b/src/main/java/com/glxp/api/service/inout/IoSplitCodeService.java
index a6499ec6a..15e9fc36d 100644
--- a/src/main/java/com/glxp/api/service/inout/IoSplitCodeService.java
+++ b/src/main/java/com/glxp/api/service/inout/IoSplitCodeService.java
@@ -650,10 +650,9 @@ public class IoSplitCodeService extends ServiceImpl {
- ioCollectLedGroupService.openLed(collectOrderBizs);
+ ioCollectLedGroupService.openLed(collectOrderBizs);
}
);
-
collectOrderBizService.updateBatchById(collectOrderBizs);
}
diff --git a/src/main/java/com/glxp/api/task/LedClearTask.java b/src/main/java/com/glxp/api/task/LedClearTask.java
new file mode 100644
index 000000000..e76d33cf8
--- /dev/null
+++ b/src/main/java/com/glxp/api/task/LedClearTask.java
@@ -0,0 +1,105 @@
+package com.glxp.api.task;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.glxp.api.common.res.BaseResponse;
+import com.glxp.api.common.util.ResultVOUtils;
+import com.glxp.api.dao.schedule.ScheduledDao;
+import com.glxp.api.entity.basic.SysWorkplaceQueue;
+import com.glxp.api.entity.collect.*;
+import com.glxp.api.entity.system.ScheduledEntity;
+import com.glxp.api.exception.JsonException;
+import com.glxp.api.req.system.ScheduledRequest;
+import com.glxp.api.service.basic.SysWorkplaceQueueService;
+import com.glxp.api.service.collect.*;
+import com.glxp.api.service.inout.IoSplitCodeService;
+import com.glxp.api.util.IntUtil;
+import com.glxp.api.util.RedisUtil;
+import com.glxp.api.util.redis.RedisDelayedQueue;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.poi.ss.formula.functions.T;
+import org.jfree.ui.Spinner;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.annotation.SchedulingConfigurer;
+import org.springframework.scheduling.config.ScheduledTaskRegistrar;
+import org.springframework.scheduling.support.CronTrigger;
+import org.springframework.stereotype.Component;
+import redis.clients.jedis.resps.Tuple;
+
+import javax.annotation.Resource;
+import java.util.*;
+
+@Component
+@EnableScheduling
+@Slf4j
+public class LedClearTask implements SchedulingConfigurer {
+
+
+ @Resource
+ RedisUtil redisUtil;
+
+ @Resource
+ private ScheduledDao scheduledDao;
+ @Resource
+ private RedisDelayedQueue redisDelayedQueue;
+
+ @Resource
+ SysOrderLedService sysOrderLedService;
+
+
+ @Resource
+ IoSplitCodeService splitCodeService;
+ @Resource
+ IoCollectOrderBizService ioCollectOrderBizService;
+ @Resource
+ SysWorkplaceQueueService sysWorkplaceQueueService;
+
+
+
+
+ @Override
+ public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) {
+ scheduledTaskRegistrar.addTriggerTask(() -> process(),
+ triggerContext -> {
+ ScheduledRequest scheduledRequest = new ScheduledRequest();
+ scheduledRequest.setCronName("LedClearTask");
+ ScheduledEntity scheduledEntity = scheduledDao.findScheduled(scheduledRequest);
+ if (scheduledEntity == null) {
+ return null;
+ }
+ String cron = scheduledEntity.getCron();
+ return new CronTrigger(cron).nextExecutionTime(triggerContext);
+ });
+ }
+
+ private void process() {
+
+ long currentTimestamp = System.currentTimeMillis() / 1000; // 当前时间戳(秒)
+
+ // 获取所有超时的任务 (score <= 当前时间戳)
+ List tasksToProcess = redisDelayedQueue.getJedis().zrangeByScoreWithScores("led_queue", "-inf", String.valueOf(currentTimestamp));
+
+ Iterator iterator = tasksToProcess.iterator();
+ while (iterator.hasNext()) {
+ Tuple task = iterator.next();
+ String values = task.getElement();
+ String[] valueList = values.split(";");
+ String orderId = valueList[0];
+ String mac = valueList[1];
+ String bizId = valueList[2];
+ 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);
+ } 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
new file mode 100644
index 000000000..240c92e53
--- /dev/null
+++ b/src/main/java/com/glxp/api/util/redis/RedisDelayedQueue.java
@@ -0,0 +1,87 @@
+package com.glxp.api.util.redis;
+
+import org.springframework.stereotype.Component;
+import redis.clients.jedis.Jedis;
+import redis.clients.jedis.resps.Tuple;
+
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+@Component
+public class RedisDelayedQueue {
+
+ private Jedis jedis = new Jedis("localhost", 6379); // Redis连接
+
+
+ // 将任务加入延时队列
+ public void addTaskToQueue(String taskId, long delaySeconds,String queueName) {
+ long timestamp = System.currentTimeMillis() / 1000 + delaySeconds; // 计算任务执行的时间戳
+ jedis.zadd(queueName, timestamp, taskId); // 将任务添加到有序集合,score 为任务的执行时间戳
+ System.out.println("Task " + taskId + " added to queue with " + delaySeconds + " seconds delay.");
+ }
+
+ public Jedis getJedis() {
+ jedis.select(10);
+ return jedis;
+ }
+
+ // 获取并处理超时的任务
+ public void processTasks() {
+ long currentTimestamp = System.currentTimeMillis() / 1000; // 当前时间戳(秒)
+
+ // 获取所有超时的任务 (score <= 当前时间戳)
+ List tasksToProcess = jedis.zrangeByScoreWithScores("delay_queue", "-inf", String.valueOf(currentTimestamp));
+
+ Iterator iterator = tasksToProcess.iterator();
+ while (iterator.hasNext()) {
+ Tuple task = iterator.next();
+ String taskId = task.getElement();
+ System.out.println("Processing task " + taskId);
+
+ // 执行任务逻辑 (你可以在这里调用实际的业务逻辑)
+
+ // 从队列中删除已执行的任务
+ jedis.zrem("delay_queue", taskId);
+ System.out.println("Task " + taskId + " removed from queue.");
+ }
+ }
+
+ public String getTaskByOrderId(String queueName, String orderId) {
+ // 获取有序集合中的所有任务
+ List tasks = jedis.zrange(queueName, 0, -1);
+ for (String task : tasks) {
+ String[] parts = task.split(";");
+ if (parts.length == 3) {
+ String taskId = parts[0];
+ if (taskId.equals(orderId)) {
+ return task;
+ }
+ }
+ }
+ return null;
+ }
+
+ // 定期检查并处理任务
+// public static void startTaskProcessor() {
+// while (true) {
+// try {
+// // 每隔1秒检查一次队列
+// TimeUnit.SECONDS.sleep(1);
+// processTasks(); // 处理超时的任务
+// } catch (InterruptedException e) {
+// e.printStackTrace();
+// }
+// }
+// }
+// public static void main(String[] args) {
+// // 添加任务到延时队列
+// addTaskToQueue("task1", 60); // 任务 1 延迟 5 秒执行
+// startTaskProcessor();
+// System.out.println("123");
+// return;
+// // 启动任务处理器,定期检查队列
+// }
+
+
+}
diff --git a/src/main/resources/mybatis/mapper/collect/SysOrderLedMapper.xml b/src/main/resources/mybatis/mapper/collect/SysOrderLedMapper.xml
new file mode 100644
index 000000000..82e8fe952
--- /dev/null
+++ b/src/main/resources/mybatis/mapper/collect/SysOrderLedMapper.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+ UPDATE sys_order_led
+ SET orderId = null
+ WHERE id = #{id}
+
+
diff --git a/src/main/resources/schemas/schema_v2.4.sql b/src/main/resources/schemas/schema_v2.4.sql
index 47aa34655..278911489 100644
--- a/src/main/resources/schemas/schema_v2.4.sql
+++ b/src/main/resources/schemas/schema_v2.4.sql
@@ -5170,9 +5170,42 @@ CALL Pro_Temp_ColumnWork('io_split_fifo_inv', 'reCodeCount',
'int NULL DEFAULT NULL COMMENT ''剩余码数量''',
1);
-INSERT IGNORE INTO `sys_custom_config_detail` (`id`, `configId`, `type`, `isShow`, `columnName`, `columnDesc`, `columnType`, `colorRule`, `sort`, `lableRule`, `width`, `tooltip`, `buttonRule`, `number`, `lineNumber`, `clickFuc`, `size`, `style`, `disabled`, `checkRules`, `inputType`, `disabledFuc`, `expression`, `dataFuc`, `isShowXx`, `isImport`)
-VALUES (463278, 213, '2', 1, 'productBind', '产品是否绑定', 'select', NULL, NULL, '{\"0\":\"否\",\"1\":\"是\"}', NULL, NULL, NULL, 98, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1);
+INSERT IGNORE INTO `sys_custom_config_detail` (`id`, `configId`, `type`, `isShow`, `columnName`, `columnDesc`,
+ `columnType`, `colorRule`, `sort`, `lableRule`, `width`, `tooltip`,
+ `buttonRule`, `number`, `lineNumber`, `clickFuc`, `size`, `style`,
+ `disabled`, `checkRules`, `inputType`, `disabledFuc`, `expression`,
+ `dataFuc`, `isShowXx`, `isImport`)
+VALUES (463278, 213, '2', 1, 'productBind', '产品是否绑定', 'select', NULL, NULL, '{\"0\":\"否\",\"1\":\"是\"}', NULL,
+ NULL, NULL, 98, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1);
+
+INSERT IGNORE INTO `sys_custom_config_detail` (`id`, `configId`, `type`, `isShow`, `columnName`, `columnDesc`,
+ `columnType`, `colorRule`, `sort`, `lableRule`, `width`, `tooltip`,
+ `buttonRule`, `number`, `lineNumber`, `clickFuc`, `size`, `style`,
+ `disabled`, `checkRules`, `inputType`, `disabledFuc`, `expression`,
+ `dataFuc`, `isShowXx`, `isImport`)
+VALUES (463279, 213, '2', 1, 'macBind', '灯组是否绑定', 'select', NULL, NULL, '{\"0\":\"否\",\"1\":\"是\"}', NULL, NULL,
+ NULL, 95, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1);
+
-INSERT IGNORE INTO `sys_custom_config_detail` (`id`, `configId`, `type`, `isShow`, `columnName`, `columnDesc`, `columnType`, `colorRule`, `sort`, `lableRule`, `width`, `tooltip`, `buttonRule`, `number`, `lineNumber`, `clickFuc`, `size`, `style`, `disabled`, `checkRules`, `inputType`, `disabledFuc`, `expression`, `dataFuc`, `isShowXx`, `isImport`)
-VALUES (463279, 213, '2', 1, 'macBind', '灯组是否绑定', 'select', NULL, NULL, '{\"0\":\"否\",\"1\":\"是\"}', NULL, NULL, NULL, 95, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1);
+CREATE TABLE IF NOT EXISTS `sys_order_led`
+(
+ `id` int NOT NULL,
+ `ledNum` tinyint NULL DEFAULT NULL COMMENT '1.红,2:橙,3:蓝,4:绿',
+ `orderId` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '订单编号',
+ `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
+ `updateTime` datetime NULL DEFAULT NULL,
+ `createTime` datetime NULL DEFAULT NULL,
+ `createUser` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
+ `updateUser` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
+ `status` tinyint NULL DEFAULT NULL COMMENT '状态',
+ `timeOut` int NULL DEFAULT NULL COMMENT '超时时间',
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB
+ CHARACTER SET = utf8mb4
+ COLLATE = utf8mb4_0900_ai_ci
+ COMMENT = '灯组与订单关联表'
+ ROW_FORMAT = Dynamic;
+
+INSERT IGNORE INTO `sys_scheduled` (`id`, `cronName`, `cron`, `customerId`, `remark`)
+VALUES (165, 'LedClearTask', '0 */1 * * * ?', NULL, '自动查询未关闭灯组');