Timer--预约单

每两分钟执行一次findBookingOrderNeedDispatchAndDispatch()方法

  public void findBookingOrderNeedDispatchAndDispatch(){
        List<BookingOrder> list=bookingOrderMapper.findBookingOrderNeedDispatch();
        for (BookingOrder bookingOrder :list){
            //如果用户最早可收获时间-当前时间<30分钟
            if(bookingOrder.getDeliveryStartTime().getTime()-new Date().getTime()<1800000){
                bookingOrder.setEnableToDispatch(1);
                bookingOrder.setIsUseFul(0);
                //根据bookingOrder表的orderId查询到order表的信息
               Order order= bookingOrderMapper.selectFullOrderByBookingOrderId(bookingOrder.getOrderId());
                //更幸order表的enableToDispatch where order.orderId=bookingOrder.orderId;
                bookingOrderMapper.updateBookingOrdersStatus(order.getOrderId());
            }
            else{
                break;
            }
        }

    }
当用户最早收货时间-当前时间<30分钟时,把订单设置为可派单,并把isUseFul设置为0(逻辑删除),并获得oderId ,根据orderId更改order表的是否可派单改为可派单  因为是预约单订单表是通过“用户最早可收获时间排序”,所以当前面的订单不满足if里面的条件的话,后面的也肯定不满足,故使用break; 若满足的话,将其从队列里“删除(不删数据,逻辑删除)”
 update `order` set `order`.enableToDispatch = 1 and `order`.isUseFul= 0  where `order`.orderId=#{orderId}

这样的话自动派单模块就可以把该订单加入派单逻辑

===============================================================================================

还没测试,不一定能跑,天天加班不一定有时间写博客 先甩上来再说。

 

================================================================================================

刚开始做预约单的时候,准备用户下一个预约单,就用一个Timer去管理,这样会有大量的Timer,影响性能,网上查了很多管理Timer的方法,基本上都是https://www.cnblogs.com/lujiango/p/9378669.html类似于这个文章,查了好久个不同的博客都是一模一样,这里写的最后一个方法,看了一会也不清楚,预约单又急着上线,暂时先用了我的方法,以后看懂了会继续做优化 

### 基于STM32的洗衣机预约系统实现方案 #### 1. 系统概述 基于STM32的洗衣机预约系统是一种嵌入式解决方案,旨在通过微控制器管理用户的洗衣需求并提供高效的资源分配功能。该系统通常由硬件部分和软件部分组成。 - **硬件部分**:主要涉及STM32单片机作为核心控制单元,外加按键输入模块、LCD显示模块以及通信接口(如Wi-Fi或蓝牙)。这些组件共同构成了系统的物理基础[^1]。 - **软件部分**:负责处理用户交互逻辑、时间调度算法以及数据存储等功能。程序设计需考虑实时性和可靠性,确保用户体验流畅无阻[^2]。 #### 2. STM32选型建议 对于此类应用而言,推荐选用具备较高性能且支持多种外设驱动能力的型号,比如STM32F4系列或者更新一代产品线中的成员。这类芯片不仅拥有强大的运算能力和丰富的I/O端口配置选项,还内置了浮点单元(FPU),有助于复杂计算场景下的效率提升[^3]。 ```c // 初始化GPIO引脚用于连接外部设备 void GPIO_Init(void){ __HAL_RCC_GPIOA_CLK_ENABLE(); // 启用GPIOA时钟 GPIO_InitTypeDef GPIO_InitStruct; // 配置PA0为输出模式 GPIO_InitStruct.Pin = GPIO_PIN_0; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); } ``` 上述代码片段展示了如何初始化一个简单的GPIO引脚,在实际项目中可以根据具体需求调整参数设置来适配不同类型的传感器或其他外围电路元件[^4]。 #### 3. 功能模块分析 整个系统可以划分为以下几个关键子模块: - 用户界面(UI):允许操作者查看当前状态信息并通过触摸屏等方式下达指令; - 时间管理器(Timer Manager): 负责记录每台机器的工作周期长度,并据此安排后续排队请求; - 数据库(Database): 存储历史记录以便查询统计之用;同时也可以保存预定义偏好设定供下次启动自动加载使用; - 安全机制(Security Mechanism): 提高整体安全性水平防止非法访问造成损害[^5]。 以上各组成部分相互协作从而实现了完整的业务流程闭环。 #### 4. 开发环境搭建指南 为了便于开发人员快速上手构建原型验证版本,这里给出一些常用的工具链清单及其安装步骤简介: - IDE(Integrated Development Environment): 推荐采用官方提供的STM32CubeIDE因为它集成了许多实用插件简化了许多繁琐的任务诸如代码生成等过程; - 编程调试器(Debugger Adapter): 如ST-LINK/V2能够方便地下载固件到目标板卡并对运行状况进行跟踪观察; - 版本控制系统(Version Control System): Git是最流行的选择之一可以帮助团队更好地协同工作维护源码仓库结构清晰有序[^6]。 完成软硬件联调之后还需要经过充分测试确认各项指标均达到预期标准方可投入正式部署阶段。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值