Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
Z
zhmes-agecal
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
耿迪迪
zhmes-agecal
Commits
2103aee4
Commit
2103aee4
authored
Dec 29, 2025
by
wanghao
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1 老化 第一阶段 和 第三阶段 写时间 后 时间比对调整。
parent
2aa9911b
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
170 additions
and
129 deletions
+170
-129
Modbus4jUtils.java
...ain/java/com/zehong/system/modbus/util/Modbus4jUtils.java
+151
-51
AgingStageOneProcessJob.java
.../java/com/zehong/system/task/AgingStageOneProcessJob.java
+15
-15
AgingStageThreeProcessJob.java
...ava/com/zehong/system/task/AgingStageThreeProcessJob.java
+2
-61
RealTimeReadAgingDataFunction.java
...com/zehong/system/task/RealTimeReadAgingDataFunction.java
+2
-2
No files found.
zhmes-agecal-system/src/main/java/com/zehong/system/modbus/util/Modbus4jUtils.java
View file @
2103aee4
This diff is collapsed.
Click to expand it.
zhmes-agecal-system/src/main/java/com/zehong/system/task/AgingStageOneProcessJob.java
View file @
2103aee4
package
com
.
zehong
.
system
.
task
;
import
com.serotonin.modbus4j.ModbusMaster
;
import
com.sun.org.apache.xpath.internal.operations.Mod
;
import
com.zehong.system.domain.PalletDeviceBinding
;
import
com.zehong.system.domain.TEquipmentAlarmData
;
import
com.zehong.system.domain.TStoreyInfo
;
...
...
@@ -170,16 +169,14 @@ public class AgingStageOneProcessJob implements Job {
if
(!
allSuccess
)
{
log
.
warn
(
"设备{}写入时间失败: ip={}, port={}"
,
deviceId
,
ip
,
port
);
binding
.
setWriteTimeStatus
(
"0"
);
palletDeviceBindingMapper
.
updatePalletDeviceBinding
(
binding
);
errorCount
.
incrementAndGet
();
return
false
;
}
else
{
binding
.
setRecordYear
(
String
.
valueOf
(
writeCurrentTimeVo
.
getYear
()));
binding
.
setRecordMonth
(
String
.
valueOf
(
writeCurrentTimeVo
.
getMonth
()));
binding
.
setRecordDate
(
String
.
valueOf
(
writeCurrentTimeVo
.
getDay
()));
binding
.
setRecordHour
(
String
.
valueOf
(
writeCurrentTimeVo
.
getHour
()));
binding
.
setRecordMinute
(
String
.
valueOf
(
writeCurrentTimeVo
.
getMinute
()));
binding
.
setWriteTimeStatus
(
"1"
);
}
binding
.
setRecordYear
(
String
.
valueOf
(
writeCurrentTimeVo
.
getYear
()));
binding
.
setRecordMonth
(
String
.
valueOf
(
writeCurrentTimeVo
.
getMonth
()));
binding
.
setRecordDate
(
String
.
valueOf
(
writeCurrentTimeVo
.
getDay
()));
binding
.
setRecordHour
(
String
.
valueOf
(
writeCurrentTimeVo
.
getHour
()));
binding
.
setRecordMinute
(
String
.
valueOf
(
writeCurrentTimeVo
.
getMinute
()));
binding
.
setWriteTimeStatus
(
"1"
);
}
// 5. 写入自检让设备开始自检,跟 上面的状态没关系
writeSelfCheckStatus
(
master
,
deviceId
,
binding
);
...
...
@@ -188,16 +185,19 @@ public class AgingStageOneProcessJob implements Job {
palletDeviceBindingMapper
.
updatePalletDeviceBinding
(
binding
);
log
.
info
(
"设备{}处理完成: ip={}, port={}, status={}"
,
deviceId
,
ip
,
port
,
result
[
1
]);
if
((
result
[
1
]
==
1
||
result
[
1
]
==
3
||
result
[
1
]
==
4
)
&&
"0"
.
equals
(
binding
.
getWriteTimeStatus
()))
{
errorCount
.
incrementAndGet
();
return
false
;
}
return
true
;
}
catch
(
Exception
e
)
{
log
.
info
(
"设备{}处理异常: ip={}, port={}"
,
deviceId
,
ip
,
port
,
e
);
if
(
binding
==
null
)
{
binding
=
palletDeviceBindingMapper
.
selectByTrayIdAndIndex
(
ip
,
deviceId
);
if
(
binding
!=
null
)
{
binding
.
setStatus
(
"5"
);
binding
.
setWriteTimeStatus
(
"0"
);
palletDeviceBindingMapper
.
updatePalletDeviceBinding
(
binding
);
}
binding
.
setStatus
(
"5"
);
binding
.
setWriteTimeStatus
(
"0"
);
palletDeviceBindingMapper
.
updatePalletDeviceBinding
(
binding
);
errorCount
.
incrementAndGet
();
return
false
;
}
finally
{
...
...
zhmes-agecal-system/src/main/java/com/zehong/system/task/AgingStageThreeProcessJob.java
View file @
2103aee4
...
...
@@ -292,7 +292,7 @@ public class AgingStageThreeProcessJob implements Job {
systemYear
,
systemMonth
,
systemDay
,
systemHour
,
systemMinute
);
// 3. 比较时间差异
if
(
isTimeConsistent
(
deviceYear
,
deviceMonth
,
deviceDay
,
deviceHour
,
deviceMinute
,
if
(
Modbus4jUtils
.
isTimeConsistent
(
deviceYear
,
deviceMonth
,
deviceDay
,
deviceHour
,
deviceMinute
,
systemYear
,
systemMonth
,
systemDay
,
systemHour
,
systemMinute
))
{
// 时间一致
handleTimeConsistent
(
deviceId
,
binding
);
...
...
@@ -310,38 +310,12 @@ public class AgingStageThreeProcessJob implements Job {
}
}
/**
* 判断设备时间与系统时间是否一致(差异在2分钟内)
* 考虑跨年、跨月等边界情况
*/
private
boolean
isTimeConsistent
(
int
deviceYear
,
int
deviceMonth
,
int
deviceDay
,
int
deviceHour
,
int
deviceMinute
,
int
systemYear
,
int
systemMonth
,
int
systemDay
,
int
systemHour
,
int
systemMinute
)
{
// 1. 首先检查年份差异(考虑跨年)
if
(
Math
.
abs
(
deviceYear
-
systemYear
)
>
1
)
{
log
.
debug
(
"年份差异超过1年: 设备{}年 vs 系统{}年"
,
deviceYear
,
systemYear
);
return
false
;
}
// 2. 转换为总分钟数进行比较(考虑跨年、跨月、跨日)
long
deviceTotalMinutes
=
calculateTotalMinutes
(
deviceYear
,
deviceMonth
,
deviceDay
,
deviceHour
,
deviceMinute
);
long
systemTotalMinutes
=
calculateTotalMinutes
(
systemYear
,
systemMonth
,
systemDay
,
systemHour
,
systemMinute
);
long
minuteDiff
=
Math
.
abs
(
deviceTotalMinutes
-
systemTotalMinutes
);
log
.
debug
(
"时间差异比较: 设备分钟数={}, 系统分钟数={}, 差异={}分钟"
,
deviceTotalMinutes
,
systemTotalMinutes
,
minuteDiff
);
// 3. 差异在2分钟内认为一致
return
minuteDiff
<=
2
;
}
/**
* 处理时间一致的情况
*/
private
void
handleTimeConsistent
(
int
deviceId
,
PalletDeviceBinding
binding
)
{
log
.
info
(
"设备{}时间与系统时间一致,无需更新"
,
deviceId
);
binding
.
setWriteTimeStatus
(
"1"
);
binding
.
setRunTimeStatus
(
"1"
);
// 时间状态正常
log
.
info
(
"设备{}时间检查完成:时间一致"
,
deviceId
);
}
...
...
@@ -383,39 +357,6 @@ public class AgingStageThreeProcessJob implements Job {
recordAlarmByBinding
(
binding
,
"设备时间更新异常: "
+
e
.
getMessage
());
}
}
/**
* 计算从参考时间点(如2000年)开始的总分钟数
* 用于准确比较时间差异,考虑跨年跨月
*/
private
long
calculateTotalMinutes
(
int
year
,
int
month
,
int
day
,
int
hour
,
int
minute
)
{
// 使用2000-01-01 00:00:00作为参考点
Calendar
cal
=
Calendar
.
getInstance
();
cal
.
set
(
Calendar
.
YEAR
,
2000
);
cal
.
set
(
Calendar
.
MONTH
,
Calendar
.
JANUARY
);
cal
.
set
(
Calendar
.
DAY_OF_MONTH
,
1
);
cal
.
set
(
Calendar
.
HOUR_OF_DAY
,
0
);
cal
.
set
(
Calendar
.
MINUTE
,
0
);
cal
.
set
(
Calendar
.
SECOND
,
0
);
cal
.
set
(
Calendar
.
MILLISECOND
,
0
);
long
baseTimeInMillis
=
cal
.
getTimeInMillis
();
// 设置目标时间
cal
.
set
(
Calendar
.
YEAR
,
year
);
cal
.
set
(
Calendar
.
MONTH
,
month
-
1
);
// 转换为Calendar月份(0-based)
cal
.
set
(
Calendar
.
DAY_OF_MONTH
,
day
);
cal
.
set
(
Calendar
.
HOUR_OF_DAY
,
hour
);
cal
.
set
(
Calendar
.
MINUTE
,
minute
);
cal
.
set
(
Calendar
.
SECOND
,
0
);
cal
.
set
(
Calendar
.
MILLISECOND
,
0
);
long
targetTimeInMillis
=
cal
.
getTimeInMillis
();
// 返回总分钟数
return
(
targetTimeInMillis
-
baseTimeInMillis
)
/
(
1000
*
60
);
}
/**
* 写入当前时间到设备
*/
...
...
zhmes-agecal-system/src/main/java/com/zehong/system/task/RealTimeReadAgingDataFunction.java
View file @
2103aee4
...
...
@@ -228,7 +228,7 @@ public class RealTimeReadAgingDataFunction {
/**
* 处理单个设备(仅读取)
*/
private
CompletableFuture
<
DeviceResult
>
processDevice
(
String
ip
,
int
port
,
int
deviceId
)
{
private
CompletableFuture
<
DeviceResult
>
processDevice
(
String
ip
,
int
port
,
int
deviceId
)
{
return
CompletableFuture
.
supplyAsync
(()
->
{
try
{
// 1. 异步读取设备数据
...
...
@@ -478,4 +478,4 @@ public class RealTimeReadAgingDataFunction {
'}'
;
}
}
}
\ No newline at end of file
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment