jfianl 如何定时某个时间点执行一个任务

news/2025/1/4 5:12:55/文章来源:https://www.cnblogs.com/ZzwWan/p/18646034

如果我们需要在某个点执行一个任务,可以用使用以下方法,首先在操作之间先明白思路

参考技术来源:https://jfinal.com/doc/9-2

 

第一步,先安装包,因为 这是第三方包:

<dependency>
<groupId>it.sauronsoftware.cron4j</groupId>
<artifactId>cron4j</artifactId>
<version>2.2.5</version>
</dependency>

第二   配置异业执行.如果是tomcat需要置

 

<filter>
<filter-name>jfinal</filter-name>
<filter-class>com.jfinal.core.JFinalFilter</filter-class>
<async-supported>true</async-supported>
<init-param>
<param-name>configClass</param-name>
<param-value>com.mock.frbmems.config.EmsConfig</param-value>
</init-param>
</filter>

第三步,增加插件配置

  @Overridepublic void configPlugin(Plugins plugins) {ProUtil.use("jdbc.properties");Prop p = ProUtil.use("jdbc.properties");// 配置第一个数据源    //这儿是第一个 00是分 第二个00 是小时Cron4jPlugin cp = new Cron4jPlugin();cp.addTask("00 00 * * *", new Runnable() {@Overridepublic void run() {AutoWorkUtils.handleAutoWork();}});plugins.add(cp);}

  第4步,业务参考如下,如果是检测代码就用了System,out   如果是上线的代码不要有这程这个打印,要用日志工具输出

package com.mock.frbmems.util;import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.Record;import java.sql.Timestamp;/*** @author rskg* @version 1.0* @project pc_frbmems* @description* @date 2025/1/1 11:27:46*/
public class AutoWorkUtils { /**/*** 更新交班记录的结束时间、状态和备注信息。*/
public static void updateShiftRecordEnd() {String sqlSelectId = "SELECT id FROM zyb_take_over_shift_record WHERE company_id = 130 AND status = 1 ORDER BY id DESC LIMIT 1";String lastShiftId = Db.queryStr(sqlSelectId);if (lastShiftId != null) {String sqlUpdate = "UPDATE zyb_take_over_shift_record SET end_time = NOW(), status = 2, remark = '系统自动交班' WHERE id = ?";int updatedRows = Db.update(sqlUpdate, lastShiftId);if (updatedRows > 0) {System.out.println("更新交班记录成功,ID: " + lastShiftId);} else {System.out.println("更新交班记录失败,未找到匹配的记录,ID: " + lastShiftId);}} else {System.out.println("未找到需要更新的交班记录");}
}/*** 插入新的交班记录。** @param lastRecord 上一条记录的Record对象,包含班次和日记录ID*/public static void insertNewShiftRecord(Record lastRecord) {if (lastRecord != null) {String workSeq = lastRecord.getStr("work_seq");Long dayRecordId = lastRecord.getLong("day_record_id");String sqlInsert = "INSERT INTO zyb_take_over_shift_record (company_id, begin_time, status, work_seq, day_record_id) VALUES (?, ?, ?, ?, ?)";int insertedRows = Db.update(sqlInsert, 130, new Timestamp(System.currentTimeMillis()), 1, workSeq, dayRecordId);if (insertedRows > 0) {System.out.println("插入新的交班记录成功");} else {System.out.println("插入新的交班记录失败");}} else {System.out.println("未找到需要插入的交班记录信息");}}/*** 检查自动交班配置是否启用。** @return 如果自动交班配置为1,则返回true,否则返回false。*/public static boolean checkAutoWorkConfig() {String autoWorkValue = Db.queryStr("SELECT pvalue FROM fr_system_param WHERE pkey = 'autoWork' AND company_id = 130");return "1".equals(autoWorkValue);}/*** 获取最后一条交班记录的详细信息。** @return 包含最后一条交班记录详细信息的Record对象,如果没有找到记录,则返回null。*/public static Record getLastShiftRecord() {String sqlSelect = "SELECT work_seq, day_record_id FROM zyb_take_over_shift_record WHERE company_id = 130 AND status = 1 ORDER BY id DESC LIMIT 1";return Db.findFirst(sqlSelect);}/*** 处理自动交班逻辑。*/public static void handleAutoWork() {System.out.println("开始处理自动交班逻辑");if (checkAutoWorkConfig()) {Record lastShiftRecord = getLastShiftRecord();if (lastShiftRecord != null) {updateShiftRecordEnd();insertNewShiftRecord(lastShiftRecord);} else {System.out.println("未找到有效的交班记录");}} else {System.out.println("自动交班未配置或已禁用");}System.out.println("自动交班逻辑处理结束");}
}

  

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/862313.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Window平台下Visual Studio版本和Qt构建kit 以及OpenCV的对应关系

1、VS版本、MSVC版本、工具集的对应关系 参考https://www.cnblogs.com/lidabo/p/183977552、Qt中的构建kit和MSVC的对应关系 qt中使用对应版本的kit必须安装对应版本的VS才能使用3、OpenCV的VC17文件夹和VS版本的对应关系 OpenCV中的VC17文件夹就是指用的VS2022编译的库,visua…

题解:AT_abc386_d [ABC386D] Diagonal Separation

分析题面,发现题目求的是是否存在一个白点被 \((1, 1)\) 和任意一个黑点围成的矩形内。 先将所有黑点按 \(x\) 坐标排序。 枚举所有的白点。 找到所有横坐标不比该白点横坐标小的所有黑点的纵坐标的最大值所属点。如果该点的纵坐标小于该白点的纵坐标:(蓝点代表题目中的白点…

【Miscellaneous】一道高质量的杂项题,涉及暴破、Cloakify-python2、零宽、emoji-AES等知识点

引言 下半年很忙,好久不做题,趁2025元旦放假整理一道高质量的题目,怀念一下繁忙的2024年。 题目 考虑到某公司的不分享精神或许会有版权之类的争端,文件链接以后就不放了。 名称:happymd5 提示:有好多奇奇怪怪的MD5值,这是用来干什么的呢。 Writeup(WP)题目附件cipher…

2025-01-01:优质数对的总数Ⅰ。用go语言,给定两个整数数组 nums1 和 nums2,分别长度为 n 和 m,以及一个正整数 k。 如果 nums1 数组中的元素 nums1[i] 能被

2025-01-01:优质数对的总数Ⅰ。用go语言,给定两个整数数组 nums1 和 nums2,分别长度为 n 和 m,以及一个正整数 k。 如果 nums1 数组中的元素 nums1[i] 能被 nums2 数组中的元素 nums2[j] 乘以 k 除尽,则称 (i, j) 为一个优质数对(其中 0 <= i <= n - 1,0 <= j …

高光谱图像选择波段的研究(转载)

高光谱图像选择波段的研究博文: 高光谱图像选择波段的研究 高光谱波段选择 LY-林雨    2016-08-25 12:08:45 发布免责声明:本文仅代表个人观点,如有错误,请读者自己鉴别;如果本文不小心含有别人的原创内容,请联系我删除;本人心血制作,若转载请注明出处 本文是根据 魏…

Webstorm 关闭 拼写错误

问题描述:cmd+,唤醒 设置把这个勾去掉就行

跨年,你怎么过

2024年最后一天,去了一趟上海的地标性建筑,感慨了下,来上海也13年来

2025.1.1 鲜花

Cdq 解决一类最值和双端点有关的数点问题Cdq 解决一类最值和双端点有关的数点问题COLORFUL BOX 真っ白な想いに 梦のかけらを 描いて 动き出す未来 子供の顷に知った 心が跃るような わくわくする感情を 今も覚えてるよ 迷いや不安はない 期待に溢れてる 何にだってなれ そうな…

Typora-Markdown使用教程

Markdown介绍 Markdown是一种轻量级的标记语言 通过简单的标记语法使文本具备一定的格式,它的目标就是实现易读,易写。 标题如上在要转为标题的前面输入一个#+一个空格,光标再定位到其他位置一个一级标题就设置好了 或者使用快捷键:Ctrl+1 总结: 一级标题:一个#,或者 Ct…

[Java/Spring] 深入理解:Spring Web DispatcherServlet

1 概述:Spring Web DispatcherServlet DispatcherServlet 简介org.springframework.web.servlet.DispatcherServlet 是一个 Servlet,它接收所有的 HTTP 请求,并根据请求的信息将其分发给相应的处理器(Handler)进行处理。 它是 Spring MVC 架构模式中的关键部分,将请求处理…

DVWA靶场File Inclusion (文件包含) 漏洞所有级别通关教程及源码解析

文件包含 文件包含漏洞(File Inclusion Vulnerability)是一种常见的网络安全漏洞,主要出现在应用程序中不安全地处理文件路径时。攻击者可以利用此漏洞执行恶意文件,或者访问不该被访问的文件 1. low 有3个页面随便点击一个,可以在url处发现传参点访问:http://127.0.0.1/…

[Java]代理模式

本篇文章主要是对静态代理和动态代理实现思路的简述,以示例为主,少涉及理论。 如果文中阐述不全或不对的,多多交流。【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) https://www.cnblogs.com/cnb-yuchen/p/18002823 出自【进步*于辰的博客】参考笔记一…