From 98b09eae533537dc9a5277aa6374bd7d35cfe5c4 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期四, 19 六月 2025 09:20:03 +0800
Subject: [PATCH] 修改bug和定时任务
---
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/task/TaskUtil.java | 62 +++++++----
ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml | 2
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java | 1
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/task/TaskUtil.java | 219 +++++++++++++++++++++++--------------------
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java | 2
5 files changed, 158 insertions(+), 128 deletions(-)
diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
index f18227b..46fe579 100644
--- a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
+++ b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
@@ -191,6 +191,7 @@
<if test="roleType != null and roleType != ''">roleType,</if>
<if test="remark != null and remark != ''">remark,</if>
<if test="objectId != null and objectId != ''">objectId,</if>
+ <if test="passWordUpdate != null and passWordUpdate != ''">passWordUpdate,</if>
create_time
)values(
<if test="userId != null and userId != ''">#{userId},</if>
@@ -207,6 +208,7 @@
<if test="roleType != null and roleType != ''">#{roleType},</if>
<if test="remark != null and remark != ''">#{remark},</if>
<if test="objectId != null and objectId != ''">#{objectId},</if>
+ <if test="passWordUpdate != null and passWordUpdate != ''">#{passWordUpdate},</if>
sysdate()
)
</insert>
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/task/TaskUtil.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/task/TaskUtil.java
index f9c97c4..0d693ea 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/task/TaskUtil.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/task/TaskUtil.java
@@ -5,6 +5,8 @@
import com.ruoyi.account.api.model.TAppUserVipDetail;
import com.ruoyi.account.service.TAppUserService;
import com.ruoyi.account.service.TAppUserVipDetailService;
+import org.springframework.boot.web.context.WebServerInitializedEvent;
+import org.springframework.context.ApplicationListener;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@@ -18,7 +20,7 @@
* 定时任务工具类
*/
@Component
-public class TaskUtil {
+public class TaskUtil implements ApplicationListener<WebServerInitializedEvent> {
@Resource
private TAppUserVipDetailService tAppUserVipDetailService;
@@ -26,26 +28,30 @@
@Resource
private TAppUserService appUserService;
+ private Integer port = null;
+
/**
* 每隔一分钟去处理的定时任务
*/
@Scheduled(fixedRate = 1000 * 60)
public void sendVipCoupon() {
- try {
- //会员优惠次数使用完后重新续次数
- LocalDateTime currentDate = LocalDateTime.now();
- List<TAppUserVipDetail> recentDetails = tAppUserVipDetailService.lambdaQuery()
- .le(TAppUserVipDetail::getStartTime, currentDate)
- .ge(TAppUserVipDetail::getEndTime, currentDate)
- .ne(TAppUserVipDetail::getVipType, 1)
- .le(TAppUserVipDetail::getMonthEndTime, currentDate)
- .orderByDesc(TAppUserVipDetail::getStartTime).list();
- for (TAppUserVipDetail recentDetail : recentDetails) {
- tAppUserVipDetailService.giveVipCoupun(recentDetail);
+ if(null != port && port == 5200){
+ try {
+ //会员优惠次数使用完后重新续次数
+ LocalDateTime currentDate = LocalDateTime.now();
+ List<TAppUserVipDetail> recentDetails = tAppUserVipDetailService.lambdaQuery()
+ .le(TAppUserVipDetail::getStartTime, currentDate)
+ .ge(TAppUserVipDetail::getEndTime, currentDate)
+ .ne(TAppUserVipDetail::getVipType, 1)
+ .le(TAppUserVipDetail::getMonthEndTime, currentDate)
+ .orderByDesc(TAppUserVipDetail::getStartTime).list();
+ for (TAppUserVipDetail recentDetail : recentDetails) {
+ tAppUserVipDetailService.giveVipCoupun(recentDetail);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
}
- } catch (Exception e) {
- e.printStackTrace();
}
@@ -53,20 +59,28 @@
@Scheduled(fixedRate = 1000 * 60)
public void changeVipId() {
- LocalDateTime currentDate = LocalDateTime.now();
- List<TAppUserVipDetail> recentDetails = tAppUserVipDetailService.lambdaQuery()
- .le(TAppUserVipDetail::getStartTime, currentDate)
- .ge(TAppUserVipDetail::getEndTime, currentDate)
- .orderByDesc(TAppUserVipDetail::getStartTime).list();
- for (TAppUserVipDetail recentDetail : recentDetails) {
- TAppUser byId = appUserService.getById(recentDetail.getAppUserId());
- if (byId != null) {
- byId.setVipId(recentDetail.getVipId());
- appUserService.updateById(byId);
+ if(null != port && port == 5200){
+ LocalDateTime currentDate = LocalDateTime.now();
+ List<TAppUserVipDetail> recentDetails = tAppUserVipDetailService.lambdaQuery()
+ .le(TAppUserVipDetail::getStartTime, currentDate)
+ .ge(TAppUserVipDetail::getEndTime, currentDate)
+ .orderByDesc(TAppUserVipDetail::getStartTime).list();
+ for (TAppUserVipDetail recentDetail : recentDetails) {
+ TAppUser byId = appUserService.getById(recentDetail.getAppUserId());
+ if (byId != null) {
+ byId.setVipId(recentDetail.getVipId());
+ appUserService.updateById(byId);
+ }
}
}
+
}
+ @Override
+ public void onApplicationEvent(WebServerInitializedEvent event) {
+ port = event.getWebServer().getPort();
+ System.out.println("端口号:" + port);
+ }
}
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java
index 4b52944..5421d94 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java
@@ -128,6 +128,7 @@
* @param number
* @return
*/
+ @Log(title = "【扫一扫】通过桩编号获取电站信息", businessType = BusinessType.OTHER,operatorType = OperatorType.MOBILE)
@GetMapping("/getSiteInfoByNumber")
@ApiOperation(value = "扫一扫后通过桩编号获取电站信息", tags = {"小程序-扫一扫"})
public R<SiteInfoVO> getSiteInfoByNumber(@RequestParam("number") String number){
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java
index 954b3ca..8af0146 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java
@@ -711,7 +711,7 @@
keys.forEach(key -> {
Long time = (Long) redisTemplate.opsForHash().get("charging_gun_online", key);
if(null != time && System.currentTimeMillis() - time > 300000){
- log.info("设备编号:{}已离线", key);
+ log.info("设备编号:{} 已离线", key);
log.info("间隔时间", System.currentTimeMillis() - time);
fullNumbers.add(key.toString());
}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/task/TaskUtil.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/task/TaskUtil.java
index af4ac78..c4556d4 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/task/TaskUtil.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/task/TaskUtil.java
@@ -11,6 +11,8 @@
import com.ruoyi.order.service.TChargingOrderService;
import org.apache.logging.log4j.core.util.UuidUtil;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.web.context.WebServerInitializedEvent;
+import org.springframework.context.ApplicationListener;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@@ -30,7 +32,7 @@
* @date 2023/7/11 8:39
*/
@Component
-public class TaskUtil {
+public class TaskUtil implements ApplicationListener<WebServerInitializedEvent> {
@Resource
private TChargingBillService chargingBillService;
@@ -38,124 +40,135 @@
private SiteClient siteClient;
@Resource
private TChargingOrderService chargingOrderService;
+
+ private Integer port = null;
@Scheduled(cron = "0 0 0 2 * ?")
public void taskMonth() {
- try {
- // 获取上个月的开始和结束日期
- LocalDate firstDayOfLastMonth = LocalDate.now().minusMonths(1).
- withDayOfMonth(2);
- String string = firstDayOfLastMonth.toString();
- // 将-替换为空字符串
- string = string.replace("-", "");
- // 生成一次全站订单
- TChargingBill tChargingBill = new TChargingBill();
- // 订单生成规则JSD+20231201(账单所属月份)+1131304205(随机10位数)+001(当月账单序号,每月重置)
- Random random = new Random();
- String randomDigits = random.ints(10, 0, 10) // 生成10个随机数字,范围在0-9
- .mapToObj(String::valueOf)
- .collect(Collectors.joining()); // 将其连接成一个字符串
- tChargingBill.setCode("JSD"+string+randomDigits );
- tChargingBill.setType(1);
- tChargingBill.setSiteId(0);
- tChargingBill.setBillTime(LocalDateTime.now());
- tChargingBill.setStatus(1);
- tChargingBill.setOrderState(2);
- tChargingBill.setBillType(1);
- System.err.println("定时任务生成充电算帐单:全站");
- chargingBillService.save(tChargingBill);
- // 生成一次全站订单
- TChargingBill tChargingBill1 = new TChargingBill();
- // 订单生成规则JSD+20231201(账单所属月份)+1131304205(随机10位数)+001(当月账单序号,每月重置)
- Random random1 = new Random();
- String randomDigits1 = random1.ints(10, 0, 10) // 生成10个随机数字,范围在0-9
- .mapToObj(String::valueOf)
- .collect(Collectors.joining()); // 将其连接成一个字符串
- tChargingBill1.setCode("JSD"+string+randomDigits1 );
- tChargingBill1.setType(1);
- tChargingBill1.setSiteId(0);
- tChargingBill1.setBillTime(LocalDateTime.now());
- tChargingBill1.setStatus(1);
- tChargingBill1.setOrderState(2);
- tChargingBill1.setBillType(2);
- System.err.println("定时任务生成账户结算帐单:全站");
- chargingBillService.save(tChargingBill1);
- System.err.println("定时任务生成各个站点结算帐单");
- List<Integer> collect = siteClient.getSiteAll().getData().stream().map(Site::getId).collect(Collectors.toList());
- // 充电算帐单
- List<TChargingBill> tChargingBills = new ArrayList<>();
- // 账户结算账单
- List<TChargingBill> tChargingBills1 = new ArrayList<>();
- for (int i = 0; i < collect.size(); i++) {
- TChargingBill tChargingBill2 = new TChargingBill();
- Random random2 = new Random();
- String randomDigits2 = random2.ints(10, 0, 10) // 生成10个随机数字,范围在0-9
+ if(null != port && port == 5400){
+ try {
+ // 获取上个月的开始和结束日期
+ LocalDate firstDayOfLastMonth = LocalDate.now().minusMonths(1).
+ withDayOfMonth(2);
+ String string = firstDayOfLastMonth.toString();
+ // 将-替换为空字符串
+ string = string.replace("-", "");
+ // 生成一次全站订单
+ TChargingBill tChargingBill = new TChargingBill();
+ // 订单生成规则JSD+20231201(账单所属月份)+1131304205(随机10位数)+001(当月账单序号,每月重置)
+ Random random = new Random();
+ String randomDigits = random.ints(10, 0, 10) // 生成10个随机数字,范围在0-9
.mapToObj(String::valueOf)
.collect(Collectors.joining()); // 将其连接成一个字符串
- tChargingBill2.setCode("JSD"+string+randomDigits2+(i+1) );
- tChargingBill2.setType(2);
- List<TChargingOrder> list = chargingOrderService.lambdaQuery()
- .eq(TChargingOrder::getSiteId, collect.get(i)).list();
- if (list.isEmpty()){
- continue;
+ tChargingBill.setCode("JSD"+string+randomDigits );
+ tChargingBill.setType(1);
+ tChargingBill.setSiteId(0);
+ tChargingBill.setBillTime(LocalDateTime.now());
+ tChargingBill.setStatus(1);
+ tChargingBill.setOrderState(2);
+ tChargingBill.setBillType(1);
+ System.err.println("定时任务生成充电算帐单:全站");
+ chargingBillService.save(tChargingBill);
+ // 生成一次全站订单
+ TChargingBill tChargingBill1 = new TChargingBill();
+ // 订单生成规则JSD+20231201(账单所属月份)+1131304205(随机10位数)+001(当月账单序号,每月重置)
+ Random random1 = new Random();
+ String randomDigits1 = random1.ints(10, 0, 10) // 生成10个随机数字,范围在0-9
+ .mapToObj(String::valueOf)
+ .collect(Collectors.joining()); // 将其连接成一个字符串
+ tChargingBill1.setCode("JSD"+string+randomDigits1 );
+ tChargingBill1.setType(1);
+ tChargingBill1.setSiteId(0);
+ tChargingBill1.setBillTime(LocalDateTime.now());
+ tChargingBill1.setStatus(1);
+ tChargingBill1.setOrderState(2);
+ tChargingBill1.setBillType(2);
+ System.err.println("定时任务生成账户结算帐单:全站");
+ chargingBillService.save(tChargingBill1);
+ System.err.println("定时任务生成各个站点结算帐单");
+ List<Integer> collect = siteClient.getSiteAll().getData().stream().map(Site::getId).collect(Collectors.toList());
+ // 充电算帐单
+ List<TChargingBill> tChargingBills = new ArrayList<>();
+ // 账户结算账单
+ List<TChargingBill> tChargingBills1 = new ArrayList<>();
+ for (int i = 0; i < collect.size(); i++) {
+ TChargingBill tChargingBill2 = new TChargingBill();
+ Random random2 = new Random();
+ String randomDigits2 = random2.ints(10, 0, 10) // 生成10个随机数字,范围在0-9
+ .mapToObj(String::valueOf)
+ .collect(Collectors.joining()); // 将其连接成一个字符串
+ tChargingBill2.setCode("JSD"+string+randomDigits2+(i+1) );
+ tChargingBill2.setType(2);
+ List<TChargingOrder> list = chargingOrderService.lambdaQuery()
+ .eq(TChargingOrder::getSiteId, collect.get(i)).list();
+ if (list.isEmpty()){
+ continue;
+ }
+ tChargingBill2.setSiteId(collect.get(i));
+ tChargingBill2.setBillTime(LocalDateTime.now());
+ tChargingBill2.setBillType(1);
+ tChargingBill2.setStatus(1);
+ tChargingBill2.setOrderState(2);
+ tChargingBills.add(tChargingBill2);
+ TChargingBill tChargingBill3 = new TChargingBill();
+ Random random3 = new Random();
+ String randomDigits3 = random3.ints(10, 0, 10) // 生成10个随机数字,范围在0-9
+ .mapToObj(String::valueOf)
+ .collect(Collectors.joining()); // 将其连接成一个字符串
+ tChargingBill3.setCode("JSD"+string+randomDigits3+(i+1) );
+ tChargingBill3.setType(2);
+ tChargingBill3.setSiteId(collect.get(i));
+ tChargingBill3.setBillTime(LocalDateTime.now());
+ tChargingBill3.setBillType(2);
+ tChargingBill3.setStatus(1);
+ tChargingBill3.setOrderState(2);
+ tChargingBills1.add(tChargingBill3);
}
- tChargingBill2.setSiteId(collect.get(i));
- tChargingBill2.setBillTime(LocalDateTime.now());
- tChargingBill2.setBillType(1);
- tChargingBill2.setStatus(1);
- tChargingBill2.setOrderState(2);
- tChargingBills.add(tChargingBill2);
- TChargingBill tChargingBill3 = new TChargingBill();
- Random random3 = new Random();
- String randomDigits3 = random3.ints(10, 0, 10) // 生成10个随机数字,范围在0-9
- .mapToObj(String::valueOf)
- .collect(Collectors.joining()); // 将其连接成一个字符串
- tChargingBill3.setCode("JSD"+string+randomDigits3+(i+1) );
- tChargingBill3.setType(2);
- tChargingBill3.setSiteId(collect.get(i));
- tChargingBill3.setBillTime(LocalDateTime.now());
- tChargingBill3.setBillType(2);
- tChargingBill3.setStatus(1);
- tChargingBill3.setOrderState(2);
- tChargingBills1.add(tChargingBill3);
+ System.err.println("列表"+tChargingBills);
+ if (!tChargingBills.isEmpty())chargingBillService.saveBatch(tChargingBills);
+ if (!tChargingBills1.isEmpty())chargingBillService.saveBatch(tChargingBills1);
+
+ } catch (Exception e) {
+ e.printStackTrace();
}
- System.err.println("列表"+tChargingBills);
- if (!tChargingBills.isEmpty())chargingBillService.saveBatch(tChargingBills);
- if (!tChargingBills1.isEmpty())chargingBillService.saveBatch(tChargingBills1);
-
- } catch (Exception e) {
- e.printStackTrace();
}
}
// 每个月最后一天23点执行的定时任务
@Scheduled(cron = "0 0 23 * * ?")
public void taskLastDay() {
- try {
- // 获取上个月的开始和结束日期
- LocalDate firstDayOfLastMonth = LocalDate.now().minusMonths(1).
- withDayOfMonth(1);
- LocalDate lastDayOfLastMonth = LocalDate.now().minusMonths(1).
- withDayOfMonth(firstDayOfLastMonth.lengthOfMonth());
- // 将 LocalDate 转换为 LocalDateTime,并设定时间为一天的开始
- LocalDateTime startDateTime = firstDayOfLastMonth.atStartOfDay();
- LocalDateTime endDateTime = lastDayOfLastMonth.atTime(23, 59, 59); // 设定到最后一秒
- // 构建查询条件
- LambdaQueryWrapper<TChargingBill> queryWrapper = new LambdaQueryWrapper<>();
- queryWrapper.ge(TChargingBill::getBillTime,
- Date.from(startDateTime.atZone(ZoneId.systemDefault()).toInstant()))
- .le(TChargingBill::getBillTime,
- Date.from(endDateTime.atZone(ZoneId.systemDefault()).toInstant())); // 使用 le 包括最后一天的记录
- List<TChargingBill> list = chargingBillService.list(queryWrapper);
- for (TChargingBill tChargingBill : list) {
- tChargingBill.setStatus(2);
+ if(null != port && port == 5400){
+ try {
+ // 获取上个月的开始和结束日期
+ LocalDate firstDayOfLastMonth = LocalDate.now().minusMonths(1).
+ withDayOfMonth(1);
+ LocalDate lastDayOfLastMonth = LocalDate.now().minusMonths(1).
+ withDayOfMonth(firstDayOfLastMonth.lengthOfMonth());
+ // 将 LocalDate 转换为 LocalDateTime,并设定时间为一天的开始
+ LocalDateTime startDateTime = firstDayOfLastMonth.atStartOfDay();
+ LocalDateTime endDateTime = lastDayOfLastMonth.atTime(23, 59, 59); // 设定到最后一秒
+ // 构建查询条件
+ LambdaQueryWrapper<TChargingBill> queryWrapper = new LambdaQueryWrapper<>();
+ queryWrapper.ge(TChargingBill::getBillTime,
+ Date.from(startDateTime.atZone(ZoneId.systemDefault()).toInstant()))
+ .le(TChargingBill::getBillTime,
+ Date.from(endDateTime.atZone(ZoneId.systemDefault()).toInstant())); // 使用 le 包括最后一天的记录
+ List<TChargingBill> list = chargingBillService.list(queryWrapper);
+ for (TChargingBill tChargingBill : list) {
+ tChargingBill.setStatus(2);
+ }
+ chargingBillService.updateBatchById(list);
+ } catch (Exception e) {
+ e.printStackTrace();
}
- chargingBillService.updateBatchById(list);
- } catch (Exception e) {
- e.printStackTrace();
}
}
-
+
+ @Override
+ public void onApplicationEvent(WebServerInitializedEvent event) {
+ port = event.getWebServer().getPort();
+ System.out.println("端口号:" + port);
+ }
}
--
Gitblit v1.7.1