Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
amos-boot-biz
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
项目统一框架
amos-boot-biz
Commits
d2d857a9
Commit
d2d857a9
authored
Jun 06, 2025
by
maoying
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
添加指标偏移量
parent
e6e32733
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
218 additions
and
42 deletions
+218
-42
EquipmentSpecificIndex.java
...oin/equipmanage/common/entity/EquipmentSpecificIndex.java
+4
-0
MqttReceiveServiceImpl.java
...join/equipmanage/service/impl/MqttReceiveServiceImpl.java
+152
-41
FormulaCalculator.java
...java/com/yeejoin/equipmanage/utils/FormulaCalculator.java
+45
-0
wl-3.6.0.xml
...ot-system-equip/src/main/resources/changelog/wl-3.6.0.xml
+15
-0
EquipmentSpecificIndexMapper.xml
...rc/main/resources/mapper/EquipmentSpecificIndexMapper.xml
+2
-1
No files found.
amos-boot-module/amos-boot-module-api/amos-boot-module-equip-api/src/main/java/com/yeejoin/equipmanage/common/entity/EquipmentSpecificIndex.java
View file @
d2d857a9
...
@@ -213,4 +213,8 @@ public class EquipmentSpecificIndex extends BaseEntity {
...
@@ -213,4 +213,8 @@ public class EquipmentSpecificIndex extends BaseEntity {
@ApiModelProperty
(
value
=
"是否遥测"
)
@ApiModelProperty
(
value
=
"是否遥测"
)
@TableField
(
value
=
"is_trend"
)
@TableField
(
value
=
"is_trend"
)
private
Boolean
isTrend
;
private
Boolean
isTrend
;
@ApiModelProperty
(
value
=
"计算公式"
)
@TableField
(
value
=
"formula"
)
private
String
formula
;
}
}
amos-boot-module/amos-boot-module-biz/amos-boot-module-equip-biz/src/main/java/com/yeejoin/equipmanage/service/impl/MqttReceiveServiceImpl.java
View file @
d2d857a9
package
com
.
yeejoin
.
equipmanage
.
service
.
impl
;
package
com
.
yeejoin
.
equipmanage
.
service
.
impl
;
import
cn.hutool.core.date.DatePattern
;
import
static
com
.
yeejoin
.
equipmanage
.
common
.
enums
.
MqttConstant
.
DIS_CREATE
;
import
cn.hutool.core.date.DateUtil
;
import
static
com
.
yeejoin
.
equipmanage
.
common
.
enums
.
MqttConstant
.
FALSE
;
import
static
com
.
yeejoin
.
equipmanage
.
common
.
enums
.
MqttConstant
.
ONE_1
;
import
static
com
.
yeejoin
.
equipmanage
.
common
.
enums
.
MqttConstant
.
ONE_1_0
;
import
static
com
.
yeejoin
.
equipmanage
.
common
.
enums
.
MqttConstant
.
STATE
;
import
static
com
.
yeejoin
.
equipmanage
.
common
.
enums
.
MqttConstant
.
TRUE
;
import
java.io.IOException
;
import
java.math.BigDecimal
;
import
java.math.BigInteger
;
import
java.math.RoundingMode
;
import
java.nio.charset.StandardCharsets
;
import
java.text.SimpleDateFormat
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.Calendar
;
import
java.util.Collections
;
import
java.util.Comparator
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.Iterator
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Objects
;
import
java.util.Optional
;
import
java.util.UUID
;
import
java.util.stream.Collectors
;
import
org.apache.commons.io.IOUtils
;
import
org.apache.commons.lang3.math.NumberUtils
;
import
org.eclipse.paho.client.mqttv3.MqttException
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.context.annotation.Lazy
;
import
org.springframework.core.io.Resource
;
import
org.springframework.scheduling.annotation.Async
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.support.TransactionSynchronization
;
import
org.springframework.transaction.support.TransactionSynchronizationManager
;
import
org.springframework.util.CollectionUtils
;
import
org.springframework.util.ObjectUtils
;
import
org.springframework.util.StringUtils
;
import
org.typroject.tyboot.component.emq.EmqKeeper
;
import
org.typroject.tyboot.core.foundation.utils.ValidationUtil
;
import
org.typroject.tyboot.core.restful.exception.instance.BadRequest
;
import
org.typroject.tyboot.core.restful.utils.ResponseModel
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.JSONObject
;
...
@@ -17,59 +64,102 @@ import com.yeejoin.amos.feign.systemctl.model.MessageModel;
...
@@ -17,59 +64,102 @@ import com.yeejoin.amos.feign.systemctl.model.MessageModel;
import
com.yeejoin.equipmanage.common.datasync.entity.FireEquipmentDefectAlarm
;
import
com.yeejoin.equipmanage.common.datasync.entity.FireEquipmentDefectAlarm
;
import
com.yeejoin.equipmanage.common.datasync.entity.FireEquipmentFaultAlarm
;
import
com.yeejoin.equipmanage.common.datasync.entity.FireEquipmentFaultAlarm
;
import
com.yeejoin.equipmanage.common.datasync.entity.FireEquipmentFireAlarm
;
import
com.yeejoin.equipmanage.common.datasync.entity.FireEquipmentFireAlarm
;
import
com.yeejoin.equipmanage.common.dto.TemperatureAlarmDto
;
import
com.yeejoin.equipmanage.common.dto.EquipIndexDto
;
import
com.yeejoin.equipmanage.common.dto.EquipIndexDto
;
import
com.yeejoin.equipmanage.common.entity.*
;
import
com.yeejoin.equipmanage.common.dto.TemperatureAlarmDto
;
import
com.yeejoin.equipmanage.common.entity.CarProperty
;
import
com.yeejoin.equipmanage.common.entity.EquipmentAlarmReportDay
;
import
com.yeejoin.equipmanage.common.entity.EquipmentDetail
;
import
com.yeejoin.equipmanage.common.entity.EquipmentIndex
;
import
com.yeejoin.equipmanage.common.entity.EquipmentSpecific
;
import
com.yeejoin.equipmanage.common.entity.EquipmentSpecificAlarm
;
import
com.yeejoin.equipmanage.common.entity.EquipmentSpecificAlarmLog
;
import
com.yeejoin.equipmanage.common.entity.EquipmentSpecificIndex
;
import
com.yeejoin.equipmanage.common.entity.FireFightingSystemEntity
;
import
com.yeejoin.equipmanage.common.entity.ManufacturerInfo
;
import
com.yeejoin.equipmanage.common.entity.MarqueeData
;
import
com.yeejoin.equipmanage.common.entity.publics.BaseEntity
;
import
com.yeejoin.equipmanage.common.entity.publics.BaseEntity
;
import
com.yeejoin.equipmanage.common.entity.vo.*
;
import
com.yeejoin.equipmanage.common.entity.vo.CarPropertyVo
;
import
com.yeejoin.equipmanage.common.enums.*
;
import
com.yeejoin.equipmanage.common.entity.vo.EquipmentIndexVO
;
import
com.yeejoin.equipmanage.common.entity.vo.EquipmentSpecificVo
;
import
com.yeejoin.equipmanage.common.entity.vo.EquipmentStateVo
;
import
com.yeejoin.equipmanage.common.entity.vo.IndexStateVo
;
import
com.yeejoin.equipmanage.common.enums.AlarmStatusEnum
;
import
com.yeejoin.equipmanage.common.enums.AlarmTypeEnum
;
import
com.yeejoin.equipmanage.common.enums.CarForGisEnum
;
import
com.yeejoin.equipmanage.common.enums.ConfigPageTopicEnum
;
import
com.yeejoin.equipmanage.common.enums.ConfirmAlamEnum
;
import
com.yeejoin.equipmanage.common.enums.DynamicLabelEnum
;
import
com.yeejoin.equipmanage.common.enums.EquipAndCarEnum
;
import
com.yeejoin.equipmanage.common.enums.EquipQrcodeColorEnum
;
import
com.yeejoin.equipmanage.common.enums.EquipmentIndexLabelsEnum
;
import
com.yeejoin.equipmanage.common.enums.EquipmentRiskTypeEnum
;
import
com.yeejoin.equipmanage.common.enums.NBalarmEnum
;
import
com.yeejoin.equipmanage.common.enums.PressurePumpCheckEnum
;
import
com.yeejoin.equipmanage.common.enums.PressurePumpEnum
;
import
com.yeejoin.equipmanage.common.enums.PressurePumpMessageEnum
;
import
com.yeejoin.equipmanage.common.enums.PressurePumpValueEnum
;
import
com.yeejoin.equipmanage.common.enums.RiskLeverForAutoSys
;
import
com.yeejoin.equipmanage.common.enums.TemperatureAlarm
;
import
com.yeejoin.equipmanage.common.enums.TopicEnum
;
import
com.yeejoin.equipmanage.common.enums.TrueOrFalseEnum
;
import
com.yeejoin.equipmanage.common.enums.UnitEnum
;
import
com.yeejoin.equipmanage.common.utils.DateUtils
;
import
com.yeejoin.equipmanage.common.utils.DateUtils
;
import
com.yeejoin.equipmanage.common.utils.StringUtil
;
import
com.yeejoin.equipmanage.common.utils.StringUtil
;
import
com.yeejoin.equipmanage.common.utils.UUIDUtils
;
import
com.yeejoin.equipmanage.common.utils.UUIDUtils
;
import
com.yeejoin.equipmanage.common.vo.*
;
import
com.yeejoin.equipmanage.common.vo.BizMessage
;
import
com.yeejoin.equipmanage.common.vo.BizMessage
;
import
com.yeejoin.equipmanage.common.vo.CarIndexGisVo
;
import
com.yeejoin.equipmanage.common.vo.CustomizeItems
;
import
com.yeejoin.equipmanage.common.vo.CustomizeItems
;
import
com.yeejoin.equipmanage.common.vo.EquipmentIndexLabelsVo
;
import
com.yeejoin.equipmanage.common.vo.EquipmentVo
;
import
com.yeejoin.equipmanage.common.vo.IotDataVO
;
import
com.yeejoin.equipmanage.common.vo.RiskBizInfoVo
;
import
com.yeejoin.equipmanage.common.vo.RiskDataVo
;
import
com.yeejoin.equipmanage.common.vo.RiskDynamicDetailsVo
;
import
com.yeejoin.equipmanage.common.vo.SShanMessage
;
import
com.yeejoin.equipmanage.common.vo.SShanStationMessage
;
import
com.yeejoin.equipmanage.common.vo.SendToMsgRiskAlarmInfoVo
;
import
com.yeejoin.equipmanage.common.vo.SendToMsgRiskDetailVo
;
import
com.yeejoin.equipmanage.common.vo.SendToMsgRiskEquipInfoVo
;
import
com.yeejoin.equipmanage.common.vo.StationMessage
;
import
com.yeejoin.equipmanage.common.vo.TableContentVo
;
import
com.yeejoin.equipmanage.common.vo.Token
;
import
com.yeejoin.equipmanage.common.vo.TopicEntityVo
;
import
com.yeejoin.equipmanage.controller.PoolStatisticController
;
import
com.yeejoin.equipmanage.controller.PoolStatisticController
;
import
com.yeejoin.equipmanage.dto.TabContent
;
import
com.yeejoin.equipmanage.fegin.IotFeign
;
import
com.yeejoin.equipmanage.fegin.IotFeign
;
import
com.yeejoin.equipmanage.fegin.SystemctlFeign
;
import
com.yeejoin.equipmanage.fegin.SystemctlFeign
;
import
com.yeejoin.equipmanage.mapper.*
;
import
com.yeejoin.equipmanage.mapper.CarMapper
;
import
com.yeejoin.equipmanage.mapper.EquipQrcodeRecordMapper
;
import
com.yeejoin.equipmanage.mapper.EquipmentDetailMapper
;
import
com.yeejoin.equipmanage.mapper.EquipmentSpecificAlarmLogMapper
;
import
com.yeejoin.equipmanage.mapper.EquipmentSpecificAlarmMapper
;
import
com.yeejoin.equipmanage.mapper.EquipmentSpecificIndexMapper
;
import
com.yeejoin.equipmanage.mapper.EquipmentSpecificMapper
;
import
com.yeejoin.equipmanage.mapper.FireFightingSystemMapper
;
import
com.yeejoin.equipmanage.mapper.ManufacturerInfoMapper
;
import
com.yeejoin.equipmanage.mapper.MarqueeDataMapper
;
import
com.yeejoin.equipmanage.quartz.PumpSendMessage
;
import
com.yeejoin.equipmanage.quartz.PumpSendMessage
;
import
com.yeejoin.equipmanage.quartz.QuartzManager
;
import
com.yeejoin.equipmanage.quartz.QuartzManager
;
import
com.yeejoin.equipmanage.remote.RemoteSecurityService
;
import
com.yeejoin.equipmanage.remote.RemoteSecurityService
;
import
com.yeejoin.equipmanage.service.*
;
import
com.yeejoin.equipmanage.service.ICarPropertyService
;
import
com.yeejoin.equipmanage.service.IESeqService
;
import
com.yeejoin.equipmanage.service.IEquipmentAlarmReportDayService
;
import
com.yeejoin.equipmanage.service.IEquipmentIndexService
;
import
com.yeejoin.equipmanage.service.IEquipmentService
;
import
com.yeejoin.equipmanage.service.IEquipmentSpecificAlarmLogService
;
import
com.yeejoin.equipmanage.service.IEquipmentSpecificAlarmService
;
import
com.yeejoin.equipmanage.service.IEquipmentSpecificIndexService
;
import
com.yeejoin.equipmanage.service.IEquipmentSpecificSerivce
;
import
com.yeejoin.equipmanage.service.IFireFightingSystemService
;
import
com.yeejoin.equipmanage.service.IPressurePumpService
;
import
com.yeejoin.equipmanage.service.ISyncDataService
;
import
com.yeejoin.equipmanage.service.MqttReceiveService
;
import
com.yeejoin.equipmanage.service.MqttSendGateway
;
import
com.yeejoin.equipmanage.utils.BeanUtil
;
import
com.yeejoin.equipmanage.utils.BeanUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
com.yeejoin.equipmanage.utils.FormulaCalculator
;
import
org.apache.commons.io.IOUtils
;
import
org.eclipse.paho.client.mqttv3.MqttException
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.context.annotation.Lazy
;
import
org.springframework.scheduling.annotation.Async
;
import
org.springframework.core.io.Resource
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.support.TransactionSynchronization
;
import
org.springframework.transaction.support.TransactionSynchronizationManager
;
import
org.springframework.util.CollectionUtils
;
import
org.springframework.util.ObjectUtils
;
import
org.springframework.util.StringUtils
;
import
org.typroject.tyboot.component.emq.EmqKeeper
;
import
org.typroject.tyboot.core.foundation.utils.ValidationUtil
;
import
org.typroject.tyboot.core.restful.exception.instance.BadRequest
;
import
org.typroject.tyboot.core.restful.utils.ResponseModel
;
import
java.io.IOException
;
import
cn.hutool.core.date.DatePattern
;
import
java.math.BigDecimal
;
import
cn.hutool.core.date.DateUtil
;
import
java.math.BigInteger
;
import
lombok.extern.slf4j.Slf4j
;
import
java.math.RoundingMode
;
import
java.nio.charset.StandardCharsets
;
import
java.text.SimpleDateFormat
;
import
java.util.*
;
import
java.util.stream.Collectors
;
import
static
com
.
yeejoin
.
equipmanage
.
common
.
enums
.
MqttConstant
.*;
/**
/**
...
@@ -1135,6 +1225,27 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
...
@@ -1135,6 +1225,27 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
}
}
}
}
private
String
executeRule
(
EquipmentSpecificIndex
equipmentSpecificIndex
,
String
value
)
{
String
formula
=
equipmentSpecificIndex
.
getFormula
();
if
(
StringUtils
.
isEmpty
(
formula
)
||
!
equipmentSpecificIndex
.
getIsTrend
()
||
!
NumberUtils
.
isCreatable
(
value
)){
return
value
;
}
try
{
Map
<
String
,
Object
>
params
=
new
HashMap
();
params
.
put
(
"value"
,
new
BigDecimal
(
value
));
Object
result
=
FormulaCalculator
.
calculate
(
equipmentSpecificIndex
.
getFormula
(),
params
);
return
String
.
format
(
"%.2f"
,
result
);
// 格式化输出
}
catch
(
Exception
e
)
{
throw
new
BadRequest
(
"公式执行失败: "
+
e
.
getMessage
());
}
// Map<String, Object> valueMap = new HashMap();
// valueMap.put("value", NumberUtils.createNumber(value));
// formula = formula.replace("value", "(value)");
// Object result = FormulaCalculator.calculate(formula, valueMap);
// return result.toString();
}
/**
/**
* 装备实时数据处理
* 装备实时数据处理
*
*
...
@@ -1159,7 +1270,7 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
...
@@ -1159,7 +1270,7 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
BeanUtils
.
copyProperties
(
equipmentSpecificIndex
,
equipmentSpeIndex
);
BeanUtils
.
copyProperties
(
equipmentSpecificIndex
,
equipmentSpeIndex
);
String
value
=
iotDataVO
.
getValue
().
toString
();
String
value
=
iotDataVO
.
getValue
().
toString
();
String
traceId
=
iotDataVO
.
getTraceId
();
String
traceId
=
iotDataVO
.
getTraceId
();
equipmentSpeIndex
.
setValue
(
value
);
equipmentSpeIndex
.
setValue
(
executeRule
(
equipmentSpeIndex
,
value
)
);
equipmentSpeIndex
.
setUnit
(
equipmentSpecificIndex
.
getIndexUnitName
());
equipmentSpeIndex
.
setUnit
(
equipmentSpecificIndex
.
getIndexUnitName
());
equipmentSpeIndex
.
setTraceId
(
traceId
);
equipmentSpeIndex
.
setTraceId
(
traceId
);
equipmentSpeIndex
.
setValueLabel
(
valueTranslate
(
value
,
equipmentSpecificIndex
.
getValueEnum
()));
equipmentSpeIndex
.
setValueLabel
(
valueTranslate
(
value
,
equipmentSpecificIndex
.
getValueEnum
()));
...
...
amos-boot-module/amos-boot-module-biz/amos-boot-module-equip-biz/src/main/java/com/yeejoin/equipmanage/utils/FormulaCalculator.java
0 → 100644
View file @
d2d857a9
package
com
.
yeejoin
.
equipmanage
.
utils
;
import
java.math.BigDecimal
;
import
java.util.Map
;
import
java.util.concurrent.ConcurrentHashMap
;
import
javax.script.Compilable
;
import
javax.script.CompiledScript
;
import
javax.script.ScriptEngine
;
import
javax.script.ScriptEngineManager
;
import
javax.script.ScriptException
;
import
javax.script.SimpleBindings
;
public
class
FormulaCalculator
{
private
static
final
ScriptEngine
engine
=
new
ScriptEngineManager
().
getEngineByName
(
"js"
);
private
static
final
Map
<
String
,
CompiledScript
>
compiledCache
=
new
ConcurrentHashMap
<>();
public
static
synchronized
Object
calculate
(
String
formula
,
Map
<
String
,
Object
>
variables
)
throws
ScriptException
{
try
{
// 类型安全转换
variables
.
replaceAll
((
k
,
v
)
->
v
instanceof
String
?
new
BigDecimal
((
String
)
v
)
:
v
);
CompiledScript
script
=
compiledCache
.
computeIfAbsent
(
formula
,
f
->
{
try
{
return
((
Compilable
)
engine
).
compile
(
f
);
}
catch
(
ScriptException
e
)
{
e
.
printStackTrace
();
// TODO Auto-generated catch block
throw
new
IllegalArgumentException
(
"输入值格式错误"
);
}
}
);
return
script
.
eval
(
new
SimpleBindings
(
variables
));
}
catch
(
ClassCastException
e
)
{
throw
new
IllegalArgumentException
(
"输入值格式错误"
);
}
}
}
amos-boot-system-equip/src/main/resources/changelog/wl-3.6.0.xml
View file @
d2d857a9
...
@@ -1231,4 +1231,18 @@
...
@@ -1231,4 +1231,18 @@
alter table `f_equipment` add column `drain_duration` double DEFAULT NULL COMMENT '排空时长(分钟)';
alter table `f_equipment` add column `drain_duration` double DEFAULT NULL COMMENT '排空时长(分钟)';
</sql>
</sql>
</changeSet>
</changeSet>
<changeSet
author=
"my"
id=
"17491871450000"
>
<preConditions
onFail=
"MARK_RAN"
>
<not>
<columnExists
tableName=
"wl_equipment_specific_index"
columnName=
"formula"
/>
</not>
</preConditions>
<comment>
wl_equipment_specific_index add column formula
</comment>
<sql>
ALTER TABLE `wl_equipment_specific_index`
ADD COLUMN `formula` varchar(255) NULL DEFAULT '' COMMENT '计算公式';
</sql>
</changeSet>
</databaseChangeLog>
</databaseChangeLog>
\ No newline at end of file
amos-boot-system-equip/src/main/resources/mapper/EquipmentSpecificIndexMapper.xml
View file @
d2d857a9
...
@@ -68,7 +68,8 @@
...
@@ -68,7 +68,8 @@
sd.warehouse_structure_id AS buildId,
sd.warehouse_structure_id AS buildId,
wes.biz_org_name AS bizOrgName,
wes.biz_org_name AS bizOrgName,
wes.biz_org_code AS bizOrgCode,
wes.biz_org_code AS bizOrgCode,
wesi.alarm_rule AS alarmRule
wesi.alarm_rule AS alarmRule,
wesi.formula
FROM
FROM
wl_equipment_specific_index AS wesi
wl_equipment_specific_index AS wesi
LEFT JOIN wl_equipment_specific AS wes
LEFT JOIN wl_equipment_specific AS wes
...
...
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