refactor(datetime): 修复时间类型不匹配问题
- 将 DateUtil.date() 替换为 LocalDateTime.now() - 更新时间设置和比较的相关代码 - 修复了多个文件中的时间类型不匹配问题- 添加了最终时间类型兼容性验证脚本
This commit is contained in:
99
final_datetime_verification.sh
Executable file
99
final_datetime_verification.sh
Executable file
@@ -0,0 +1,99 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
echo "=== 最终时间类型兼容性验证 ==="
|
||||||
|
echo
|
||||||
|
|
||||||
|
echo "1. 检查所有可能的类型不匹配问题..."
|
||||||
|
|
||||||
|
echo " ❌ 查找 Date 变量接收 LocalDateTime 的问题:"
|
||||||
|
find src/main/java -name "*.java" -exec grep -Hn "Date.*=.*get.*Time()" {} \; | grep -v "new Date" | grep -v "//"
|
||||||
|
|
||||||
|
echo " ❌ 查找 setXxxTime(DateUtil.xxx) 问题:"
|
||||||
|
find src/main/java -name "*.java" -exec grep -Hn "\.set.*Time(DateUtil\." {} \; | grep -v "//"
|
||||||
|
|
||||||
|
echo " ❌ 查找 LocalDateTime.compareTo(DateUtil.date()) 问题:"
|
||||||
|
find src/main/java -name "*.java" -exec grep -Hn "\.compareTo(DateUtil\.date())" {} \; | grep -v "//"
|
||||||
|
|
||||||
|
echo " ❌ 查找 DateUtil.offsetXxx(...).compareTo(DateUtil.date()) 问题:"
|
||||||
|
find src/main/java -name "*.java" -exec grep -Hn "DateUtil\.offset.*\.compareTo(DateUtil\.date())" {} \; | grep -v "//"
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "2. 验证已修复的关键文件..."
|
||||||
|
|
||||||
|
files=(
|
||||||
|
"src/main/java/com/gxwebsoft/oa/service/impl/OaAssetsSslServiceImpl.java:LocalDateTime now"
|
||||||
|
"src/main/java/com/gxwebsoft/shop/service/impl/ShopOrderServiceImpl.java:setPayTime(LocalDateTime.now())"
|
||||||
|
"src/main/java/com/gxwebsoft/project/service/impl/ProjectServiceImpl.java:final LocalDateTime expirationTime"
|
||||||
|
"src/main/java/com/gxwebsoft/project/controller/ProjectRenewController.java:final LocalDateTime expirationTime"
|
||||||
|
"src/main/java/com/gxwebsoft/cms/service/impl/CmsWebsiteServiceImpl.java:setExpirationTime(LocalDateTime.now().plusMonths(1))"
|
||||||
|
"src/main/java/com/gxwebsoft/shop/controller/ShopOrderController.java:setPayTime(LocalDateTime.now())"
|
||||||
|
"src/main/java/com/gxwebsoft/common/system/controller/CompanyController.java:LocalDateTime now"
|
||||||
|
"src/main/java/com/gxwebsoft/cms/controller/CmsWebsiteController.java:LocalDateTime now"
|
||||||
|
"src/main/java/com/gxwebsoft/bszx/controller/BszxPayController.java:setExpirationTime(LocalDateTime.now().plusYears(10))"
|
||||||
|
)
|
||||||
|
|
||||||
|
for item in "${files[@]}"; do
|
||||||
|
file=$(echo "$item" | cut -d':' -f1)
|
||||||
|
pattern=$(echo "$item" | cut -d':' -f2)
|
||||||
|
|
||||||
|
echo " 检查 $file"
|
||||||
|
if grep -q "$pattern" "$file"; then
|
||||||
|
echo " ✅ 已正确修复"
|
||||||
|
else
|
||||||
|
echo " ❌ 需要检查: $pattern"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "3. 统计修复情况..."
|
||||||
|
|
||||||
|
total_java_files=$(find src/main/java -name "*.java" | wc -l)
|
||||||
|
localdatetime_files=$(find src/main/java -name "*.java" -exec grep -l "LocalDateTime" {} \; | wc -l)
|
||||||
|
entity_files=$(find src/main/java -path "*/entity/*" -name "*.java" | wc -l)
|
||||||
|
entity_localdatetime_files=$(find src/main/java -path "*/entity/*" -name "*.java" -exec grep -l "LocalDateTime" {} \; | wc -l)
|
||||||
|
|
||||||
|
echo " 总Java文件数: $total_java_files"
|
||||||
|
echo " 使用LocalDateTime的文件数: $localdatetime_files"
|
||||||
|
echo " 实体类文件数: $entity_files"
|
||||||
|
echo " 使用LocalDateTime的实体类数: $entity_localdatetime_files"
|
||||||
|
|
||||||
|
if [ "$entity_localdatetime_files" -gt 0 ]; then
|
||||||
|
percentage=$((entity_localdatetime_files * 100 / entity_files))
|
||||||
|
echo " 实体类LocalDateTime使用率: ${percentage}%"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "4. 检查证书服务修复状态..."
|
||||||
|
|
||||||
|
if grep -q "convertToLocalDateTime" src/main/java/com/gxwebsoft/common/core/service/CertificateService.java; then
|
||||||
|
echo " ✅ CertificateService.java - 类型转换方法已添加"
|
||||||
|
else
|
||||||
|
echo " ❌ CertificateService.java - 需要检查"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "=== 验证结果 ==="
|
||||||
|
|
||||||
|
# 统计可能的问题
|
||||||
|
type_mismatch_count=$(find src/main/java -name "*.java" -exec grep -c "Date.*=.*get.*Time()" {} \; | awk '{sum += $1} END {print sum+0}')
|
||||||
|
dateutil_setter_count=$(find src/main/java -name "*.java" -exec grep -c "\.set.*Time(DateUtil\." {} \; | awk '{sum += $1} END {print sum+0}')
|
||||||
|
compare_issues_count=$(find src/main/java -name "*.java" -exec grep -c "\.compareTo(DateUtil\.date())" {} \; | awk '{sum += $1} END {print sum+0}')
|
||||||
|
|
||||||
|
total_issues=$((type_mismatch_count + dateutil_setter_count + compare_issues_count))
|
||||||
|
|
||||||
|
if [ "$total_issues" -eq 0 ]; then
|
||||||
|
echo "🎉 所有时间类型兼容性问题已修复!"
|
||||||
|
echo "✅ 项目已成功统一使用LocalDateTime"
|
||||||
|
echo "✅ 可以安全地进行编译和测试"
|
||||||
|
else
|
||||||
|
echo "⚠️ 还有 $total_issues 个潜在问题需要检查"
|
||||||
|
echo " - 类型不匹配: $type_mismatch_count"
|
||||||
|
echo " - DateUtil setter调用: $dateutil_setter_count"
|
||||||
|
echo " - 比较问题: $compare_issues_count"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "建议:"
|
||||||
|
echo "1. 运行项目编译检查是否有编译错误"
|
||||||
|
echo "2. 运行单元测试确保功能正常"
|
||||||
|
echo "3. 特别测试时间相关的功能(过期检查、时间设置等)"
|
||||||
@@ -289,7 +289,7 @@ public class BszxPayController extends BaseController {
|
|||||||
// 2. 未支付则处理更新订单状态
|
// 2. 未支付则处理更新订单状态
|
||||||
if (order.getPayStatus().equals(false)) {
|
if (order.getPayStatus().equals(false)) {
|
||||||
// 5. TODO 处理订单状态
|
// 5. TODO 处理订单状态
|
||||||
order.setPayTime(DateUtil.date());
|
order.setPayTime(LocalDateTime.now());
|
||||||
order.setPayStatus(true);
|
order.setPayStatus(true);
|
||||||
order.setTransactionId(transactionId);
|
order.setTransactionId(transactionId);
|
||||||
order.setPayPrice(new BigDecimal(NumberUtil.decimalFormat("0.00", total * 0.01)));
|
order.setPayPrice(new BigDecimal(NumberUtil.decimalFormat("0.00", total * 0.01)));
|
||||||
|
|||||||
@@ -16,6 +16,9 @@ import org.slf4j.LoggerFactory;
|
|||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
import java.time.Instant;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.ZoneId;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -119,7 +122,7 @@ public class GpsMessageProcessor {
|
|||||||
car.setLongitude(gps.getLng());
|
car.setLongitude(gps.getLng());
|
||||||
car.setLatitude(gps.getLat());
|
car.setLatitude(gps.getLat());
|
||||||
car.setSpeed(gps.getSpeed());
|
car.setSpeed(gps.getSpeed());
|
||||||
car.setUpdateTime(DateUtil.date(gps.getTime() * 1000));
|
car.setUpdateTime(LocalDateTime.ofInstant(Instant.ofEpochMilli(gps.getTime() * 1000), ZoneId.systemDefault()));
|
||||||
car.setGpsNo(gps.getImei());
|
car.setGpsNo(gps.getImei());
|
||||||
|
|
||||||
if (hjmCarService.updateByGpsNo(car)) {
|
if (hjmCarService.updateByGpsNo(car)) {
|
||||||
@@ -240,7 +243,7 @@ public class GpsMessageProcessor {
|
|||||||
|
|
||||||
// 更新围栏状态
|
// 更新围栏状态
|
||||||
car.setInFence(isInFence);
|
car.setInFence(isInFence);
|
||||||
car.setUpdateTime(DateUtil.date());
|
car.setUpdateTime(LocalDateTime.now());
|
||||||
hjmCarService.updateById(car);
|
hjmCarService.updateById(car);
|
||||||
|
|
||||||
logger.info("车辆围栏检查完成: 车辆={}, 围栏={}, 是否在围栏内={}",
|
logger.info("车辆围栏检查完成: 车辆={}, 围栏={}, 是否在围栏内={}",
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -112,7 +113,7 @@ public class HjmCarServiceImpl extends ServiceImpl<HjmCarMapper, HjmCar> impleme
|
|||||||
// 将围栏判断结果保存到车辆对象中
|
// 将围栏判断结果保存到车辆对象中
|
||||||
byCode.setInFence(isInFence);
|
byCode.setInFence(isInFence);
|
||||||
System.out.println("车辆 " + code + " 是否在围栏内: " + isInFence);
|
System.out.println("车辆 " + code + " 是否在围栏内: " + isInFence);
|
||||||
byCode.setUpdateTime(DateUtil.date());
|
byCode.setUpdateTime(LocalDateTime.now());
|
||||||
hjmCarService.updateById(byCode);
|
hjmCarService.updateById(byCode);
|
||||||
return byCode;
|
return byCode;
|
||||||
|
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ public class HouseViewsLogServiceImpl extends MPJBaseServiceImpl<HouseViewsLogMa
|
|||||||
viewsLog.setHouseId(houseInfo.getHouseId());
|
viewsLog.setHouseId(houseInfo.getHouseId());
|
||||||
viewsLog.setHouseUserId(houseInfo.getUserId());
|
viewsLog.setHouseUserId(houseInfo.getUserId());
|
||||||
}
|
}
|
||||||
viewsLog.setUpdateTime(DateUtil.date());
|
viewsLog.setUpdateTime(LocalDateTime.now());
|
||||||
saveOrUpdate(viewsLog);
|
saveOrUpdate(viewsLog);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -120,8 +120,8 @@ public class ProjectRenewController extends BaseController {
|
|||||||
projectService.updateById(project);
|
projectService.updateById(project);
|
||||||
}
|
}
|
||||||
// 保存到期时间所在的年月日
|
// 保存到期时间所在的年月日
|
||||||
final Date expirationTime = project.getExpirationTime();
|
final LocalDateTime expirationTime = project.getExpirationTime();
|
||||||
LocalDate localDate = expirationTime.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
|
LocalDate localDate = expirationTime.toLocalDate();
|
||||||
int year = localDate.getYear();
|
int year = localDate.getYear();
|
||||||
int month = localDate.getMonthValue(); // 获取月份,范围是1到12
|
int month = localDate.getMonthValue(); // 获取月份,范围是1到12
|
||||||
int day = localDate.getDayOfMonth(); // 获取日,范围是1到31
|
int day = localDate.getDayOfMonth(); // 获取日,范围是1到31
|
||||||
|
|||||||
@@ -211,8 +211,8 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|||||||
project.setRenewCount(project.getRenewCount() + 1);
|
project.setRenewCount(project.getRenewCount() + 1);
|
||||||
|
|
||||||
// 保存到期时间所在的年月日
|
// 保存到期时间所在的年月日
|
||||||
final Date expirationTime = project.getExpirationTime();
|
final LocalDateTime expirationTime = project.getExpirationTime();
|
||||||
LocalDate localDate = expirationTime.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
|
LocalDate localDate = expirationTime.toLocalDate();
|
||||||
int year = localDate.getYear();
|
int year = localDate.getYear();
|
||||||
int month = localDate.getMonthValue(); // 获取月份,范围是1到12
|
int month = localDate.getMonthValue(); // 获取月份,范围是1到12
|
||||||
int day = localDate.getDayOfMonth(); // 获取日,范围是1到31
|
int day = localDate.getDayOfMonth(); // 获取日,范围是1到31
|
||||||
@@ -257,7 +257,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|||||||
// 是否过期 -1已过期 大于0 未过期
|
// 是否过期 -1已过期 大于0 未过期
|
||||||
d.setExpired(d.getExpirationTime().compareTo(now));
|
d.setExpired(d.getExpirationTime().compareTo(now));
|
||||||
// 剩余天数
|
// 剩余天数
|
||||||
d.setExpiredDays((int) java.time.temporal.ChronoUnit.DAYS.between(now, d.getExpirationTime()));
|
d.setExpiredDays(java.time.temporal.ChronoUnit.DAYS.between(now, d.getExpirationTime()));
|
||||||
// 续费次数
|
// 续费次数
|
||||||
d.setRenewCount((long) projectRenewService.count(new LambdaQueryWrapper<ProjectRenew>().eq(ProjectRenew::getAppId, d.getAppId()).eq(ProjectRenew::getDeleted, 0)));
|
d.setRenewCount((long) projectRenewService.count(new LambdaQueryWrapper<ProjectRenew>().eq(ProjectRenew::getAppId, d.getAppId()).eq(ProjectRenew::getDeleted, 0)));
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user