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
f2aacfb2
Commit
f2aacfb2
authored
Oct 30, 2023
by
tangwei
Browse files
Options
Browse Files
Download
Plain Diff
解决冲突
parents
79288489
3c58a8bb
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
140 additions
and
7 deletions
+140
-7
BigScreenAnalyseController.java
...dule/jxiop/biz/controller/BigScreenAnalyseController.java
+94
-4
IdxBizFanHealthLevelMapper.java
.../module/jxiop/biz/mapper2/IdxBizFanHealthLevelMapper.java
+15
-0
CommonServiceImpl.java
...boot/module/jxiop/biz/service/impl/CommonServiceImpl.java
+0
-0
HealthStatusIndicatorServiceImpl.java
...op/biz/service/impl/HealthStatusIndicatorServiceImpl.java
+3
-1
IdxBizFanHealthIndexMapper.xml
...n/resources/mapper/cluster/IdxBizFanHealthIndexMapper.xml
+2
-1
IdxBizFanHealthLevelMapper.xml
...n/resources/mapper/cluster/IdxBizFanHealthLevelMapper.xml
+25
-0
IdxBizPvHealthIndexMapper.xml
...in/resources/mapper/cluster/IdxBizPvHealthIndexMapper.xml
+1
-1
No files found.
amos-boot-system-jxiop/amos-boot-module-jxiop-analyse-biz/src/main/java/com/yeejoin/amos/boot/module/jxiop/biz/controller/BigScreenAnalyseController.java
View file @
f2aacfb2
...
@@ -5,6 +5,7 @@ import cn.hutool.core.text.CharSequenceUtil;
...
@@ -5,6 +5,7 @@ import cn.hutool.core.text.CharSequenceUtil;
import
cn.hutool.core.util.StrUtil
;
import
cn.hutool.core.util.StrUtil
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.JSONObject
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.yeejoin.amos.boot.biz.common.controller.BaseController
;
import
com.yeejoin.amos.boot.biz.common.controller.BaseController
;
...
@@ -15,11 +16,10 @@ import com.yeejoin.amos.boot.module.jxiop.api.mapper.StationBasicMapper;
...
@@ -15,11 +16,10 @@ import com.yeejoin.amos.boot.module.jxiop.api.mapper.StationBasicMapper;
import
com.yeejoin.amos.boot.module.jxiop.biz.dto.FullViewRecallDataDTO
;
import
com.yeejoin.amos.boot.module.jxiop.biz.dto.FullViewRecallDataDTO
;
import
com.yeejoin.amos.boot.module.jxiop.biz.dto.FullViewRecallInfoDTO
;
import
com.yeejoin.amos.boot.module.jxiop.biz.dto.FullViewRecallInfoDTO
;
import
com.yeejoin.amos.boot.module.jxiop.biz.entity.*
;
import
com.yeejoin.amos.boot.module.jxiop.biz.entity.*
;
import
com.yeejoin.amos.boot.module.jxiop.biz.mapper2.IdxBizFanHealthIndexMapper
;
import
com.yeejoin.amos.boot.module.jxiop.biz.mapper2.*
;
import
com.yeejoin.amos.boot.module.jxiop.biz.mapper2.IdxBizFanHealthLevelMapper
;
import
com.yeejoin.amos.boot.module.jxiop.biz.mapper2.IdxBizFanWarningRecordMapper
;
import
com.yeejoin.amos.boot.module.jxiop.biz.mapper2.IdxBizPvHealthLevelMapper
;
import
com.yeejoin.amos.boot.module.jxiop.biz.service.impl.CommonServiceImpl
;
import
com.yeejoin.amos.boot.module.jxiop.biz.service.impl.CommonServiceImpl
;
import
com.yeejoin.amos.boot.module.jxiop.biz.service.impl.IdxBizFanWarningRuleSetServiceImpl
;
import
com.yeejoin.amos.boot.module.jxiop.biz.service.impl.IdxBizPvWarningRuleSetServiceImpl
;
import
com.yeejoin.amos.boot.module.jxiop.biz.tdmapper.IndicatorDataMapper
;
import
com.yeejoin.amos.boot.module.jxiop.biz.tdmapper.IndicatorDataMapper
;
import
com.yeejoin.amos.component.feign.model.FeignClientResult
;
import
com.yeejoin.amos.component.feign.model.FeignClientResult
;
import
com.yeejoin.amos.feign.privilege.Privilege
;
import
com.yeejoin.amos.feign.privilege.Privilege
;
...
@@ -72,6 +72,13 @@ public class BigScreenAnalyseController extends BaseController {
...
@@ -72,6 +72,13 @@ public class BigScreenAnalyseController extends BaseController {
@Autowired
@Autowired
RiskWarningFeign
riskWarningFeign
;
RiskWarningFeign
riskWarningFeign
;
@Autowired
private
IdxBizFanWarningRuleSetServiceImpl
idxBizFanWarningRuleSetService
;
@Autowired
private
IdxBizPvWarningRuleSetServiceImpl
idxBizPvWarningRuleSetService
;
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
,
needAuth
=
false
)
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
,
needAuth
=
false
)
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"场站设备健康状态指数与趋势 - 仪表盘"
,
notes
=
"场站设备健康状态指数与趋势 - 仪表盘"
)
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"场站设备健康状态指数与趋势 - 仪表盘"
,
notes
=
"场站设备健康状态指数与趋势 - 仪表盘"
)
@GetMapping
(
value
=
"/getHealthScoreInfo"
)
@GetMapping
(
value
=
"/getHealthScoreInfo"
)
...
@@ -1019,4 +1026,87 @@ public class BigScreenAnalyseController extends BaseController {
...
@@ -1019,4 +1026,87 @@ public class BigScreenAnalyseController extends BaseController {
return
ResponseHelper
.
buildResponse
(
map
);
return
ResponseHelper
.
buildResponse
(
map
);
}
}
@TycloudOperation
(
needAuth
=
false
,
ApiLevel
=
UserType
.
AGENCY
)
@ApiOperation
(
value
=
"修改业务事实表的一条数据"
)
@PutMapping
(
"/updateRowAndManyTable"
)
public
ResponseModel
<
Boolean
>
updateRowAndManyTable
(
@RequestBody
Map
<
String
,
Object
>
kv
)
{
if
(
"安全"
.
equals
(
kv
.
get
(
"HEALTH_LEVEL"
).
toString
())
&&
(!
"100.0"
.
equals
(
kv
.
get
(
"GROUP_UPPER_LIMIT"
).
toString
())
&&
!
"100"
.
equals
(
kv
.
get
(
"GROUP_UPPER_LIMIT"
).
toString
())))
{
throw
new
RuntimeException
(
"安全的分数上限只能是100"
);
}
if
(
"危险"
.
equals
(
kv
.
get
(
"HEALTH_LEVEL"
).
toString
())
&&
(!
"0.0"
.
equals
(
kv
.
get
(
"GROUP_LOWER_LIMIT"
).
toString
())
&&
!
"0"
.
equals
(
kv
.
get
(
"GROUP_LOWER_LIMIT"
).
toString
())))
{
throw
new
RuntimeException
(
"危险的分数下限只能是0"
);
}
idxBizFanHealthLevelMapper
.
updateByInfo
(
"idx_biz_pv_health_level"
,
kv
.
get
(
"GROUP_UPPER_LIMIT"
).
toString
(),
kv
.
get
(
"GROUP_LOWER_LIMIT"
).
toString
(),
kv
.
get
(
"ANALYSIS_OBJ_TYPE"
).
toString
(),
kv
.
get
(
"HEALTH_LEVEL"
).
toString
());
idxBizFanHealthLevelMapper
.
updateByInfo
(
"idx_biz_fan_health_level"
,
kv
.
get
(
"GROUP_UPPER_LIMIT"
).
toString
(),
kv
.
get
(
"GROUP_LOWER_LIMIT"
).
toString
(),
kv
.
get
(
"ANALYSIS_OBJ_TYPE"
).
toString
(),
kv
.
get
(
"HEALTH_LEVEL"
).
toString
());
if
(
"安全"
.
equals
(
kv
.
get
(
"HEALTH_LEVEL"
).
toString
()))
{
idxBizFanHealthLevelMapper
.
updateByInfoIsNull
(
"idx_biz_fan_health_level"
,
kv
.
get
(
"GROUP_LOWER_LIMIT"
).
toString
(),
null
,
kv
.
get
(
"ANALYSIS_OBJ_TYPE"
).
toString
(),
"注意"
);
idxBizFanHealthLevelMapper
.
updateByInfoIsNull
(
"idx_biz_pv_health_level"
,
kv
.
get
(
"GROUP_LOWER_LIMIT"
).
toString
(),
null
,
kv
.
get
(
"ANALYSIS_OBJ_TYPE"
).
toString
(),
"注意"
);
}
else
if
(
"注意"
.
equals
(
kv
.
get
(
"HEALTH_LEVEL"
).
toString
()))
{
idxBizFanHealthLevelMapper
.
updateByInfoIsNull
(
"idx_biz_fan_health_level"
,
kv
.
get
(
"GROUP_LOWER_LIMIT"
).
toString
(),
null
,
kv
.
get
(
"ANALYSIS_OBJ_TYPE"
).
toString
(),
"警告"
);
idxBizFanHealthLevelMapper
.
updateByInfoIsNull
(
"idx_biz_pv_health_level"
,
kv
.
get
(
"GROUP_LOWER_LIMIT"
).
toString
(),
null
,
kv
.
get
(
"ANALYSIS_OBJ_TYPE"
).
toString
(),
"警告"
);
}
else
if
(
"警告"
.
equals
(
kv
.
get
(
"HEALTH_LEVEL"
).
toString
()))
{
idxBizFanHealthLevelMapper
.
updateByInfoIsNull
(
"idx_biz_fan_health_level"
,
kv
.
get
(
"GROUP_LOWER_LIMIT"
).
toString
(),
null
,
kv
.
get
(
"ANALYSIS_OBJ_TYPE"
).
toString
(),
"危险"
);
idxBizFanHealthLevelMapper
.
updateByInfoIsNull
(
"idx_biz_pv_health_level"
,
kv
.
get
(
"GROUP_LOWER_LIMIT"
).
toString
(),
null
,
kv
.
get
(
"ANALYSIS_OBJ_TYPE"
).
toString
(),
"危险"
);
}
if
(
"测点"
.
equals
(
kv
.
get
(
"ANALYSIS_OBJ_TYPE"
).
toString
()))
{
LambdaUpdateWrapper
<
IdxBizFanWarningRuleSet
>
lambda1
=
new
LambdaUpdateWrapper
<>();
lambda1
.
set
(
IdxBizFanWarningRuleSet:
:
getWarningIf
,
"<="
+
kv
.
get
(
"GROUP_UPPER_LIMIT"
).
toString
());
lambda1
.
eq
(
IdxBizFanWarningRuleSet:
:
getWarningName
,
kv
.
get
(
"HEALTH_LEVEL"
).
toString
());
idxBizFanWarningRuleSetService
.
update
(
lambda1
);
LambdaUpdateWrapper
<
IdxBizPvWarningRuleSet
>
lambda2
=
new
LambdaUpdateWrapper
<>();
lambda2
.
set
(
IdxBizPvWarningRuleSet:
:
getWarningIf
,
"<="
+
kv
.
get
(
"GROUP_UPPER_LIMIT"
).
toString
());
lambda2
.
eq
(
IdxBizPvWarningRuleSet:
:
getWarningName
,
kv
.
get
(
"HEALTH_LEVEL"
).
toString
());
idxBizPvWarningRuleSetService
.
update
(
lambda2
);
}
return
ResponseHelper
.
buildResponse
(
true
);
}
}
}
amos-boot-system-jxiop/amos-boot-module-jxiop-analyse-biz/src/main/java/com/yeejoin/amos/boot/module/jxiop/biz/mapper2/IdxBizFanHealthLevelMapper.java
View file @
f2aacfb2
...
@@ -2,6 +2,7 @@ package com.yeejoin.amos.boot.module.jxiop.biz.mapper2;
...
@@ -2,6 +2,7 @@ package com.yeejoin.amos.boot.module.jxiop.biz.mapper2;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.yeejoin.amos.boot.module.jxiop.biz.entity.IdxBizFanHealthLevel
;
import
com.yeejoin.amos.boot.module.jxiop.biz.entity.IdxBizFanHealthLevel
;
import
org.apache.ibatis.annotations.Param
;
/**
/**
* Mapper 接口
* Mapper 接口
...
@@ -11,4 +12,18 @@ import com.yeejoin.amos.boot.module.jxiop.biz.entity.IdxBizFanHealthLevel;
...
@@ -11,4 +12,18 @@ import com.yeejoin.amos.boot.module.jxiop.biz.entity.IdxBizFanHealthLevel;
*/
*/
public
interface
IdxBizFanHealthLevelMapper
extends
BaseMapper
<
IdxBizFanHealthLevel
>
{
public
interface
IdxBizFanHealthLevelMapper
extends
BaseMapper
<
IdxBizFanHealthLevel
>
{
int
updateByInfo
(
@Param
(
"tableName"
)
String
tableName
,
@Param
(
"groupUpperLimit"
)
String
groupUpperLimit
,
@Param
(
"groupLowerLimit"
)
String
groupLowerLimit
,
@Param
(
"analysisObjType"
)
String
analysisObjType
,
@Param
(
"healthLevel"
)
String
healthLevel
);
/**
* 可以为空的情况
*/
int
updateByInfoIsNull
(
@Param
(
"tableName"
)
String
tableName
,
@Param
(
"groupUpperLimit"
)
String
groupUpperLimit
,
@Param
(
"groupLowerLimit"
)
String
groupLowerLimit
,
@Param
(
"analysisObjType"
)
String
analysisObjType
,
@Param
(
"healthLevel"
)
String
healthLevel
);
}
}
amos-boot-system-jxiop/amos-boot-module-jxiop-analyse-biz/src/main/java/com/yeejoin/amos/boot/module/jxiop/biz/service/impl/CommonServiceImpl.java
View file @
f2aacfb2
This diff is collapsed.
Click to expand it.
amos-boot-system-jxiop/amos-boot-module-jxiop-analyse-biz/src/main/java/com/yeejoin/amos/boot/module/jxiop/biz/service/impl/HealthStatusIndicatorServiceImpl.java
View file @
f2aacfb2
...
@@ -275,6 +275,7 @@ public class HealthStatusIndicatorServiceImpl {
...
@@ -275,6 +275,7 @@ public class HealthStatusIndicatorServiceImpl {
LambdaQueryWrapper
<
IdxBizPvHealthIndex
>
wrapper
=
new
LambdaQueryWrapper
<>();
LambdaQueryWrapper
<
IdxBizPvHealthIndex
>
wrapper
=
new
LambdaQueryWrapper
<>();
wrapper
.
eq
(
IdxBizPvHealthIndex:
:
getAnalysisType
,
"按小时"
);
wrapper
.
eq
(
IdxBizPvHealthIndex:
:
getAnalysisType
,
"按小时"
);
wrapper
.
ne
(
IdxBizPvHealthIndex:
:
getHealthLevel
,
"安全"
);
wrapper
.
ne
(
IdxBizPvHealthIndex:
:
getHealthLevel
,
"安全"
);
wrapper
.
eq
(
IdxBizPvHealthIndex:
:
getAnalysisObjType
,
"测点"
);
wrapper
.
ge
(
IdxBizPvHealthIndex:
:
getRecDate
,
df
.
format
(
calendar
.
getTime
()));
wrapper
.
ge
(
IdxBizPvHealthIndex:
:
getRecDate
,
df
.
format
(
calendar
.
getTime
()));
wrapper
.
orderByDesc
(
IdxBizPvHealthIndex:
:
getRecDate
);
wrapper
.
orderByDesc
(
IdxBizPvHealthIndex:
:
getRecDate
);
List
<
IdxBizPvHealthIndex
>
healthIndices
=
idxBizPvHealthIndexMapper
.
selectList
(
wrapper
);
List
<
IdxBizPvHealthIndex
>
healthIndices
=
idxBizPvHealthIndexMapper
.
selectList
(
wrapper
);
...
@@ -712,6 +713,7 @@ public class HealthStatusIndicatorServiceImpl {
...
@@ -712,6 +713,7 @@ public class HealthStatusIndicatorServiceImpl {
LambdaQueryWrapper
<
IdxBizFanHealthIndex
>
wrapper
=
new
LambdaQueryWrapper
<>();
LambdaQueryWrapper
<
IdxBizFanHealthIndex
>
wrapper
=
new
LambdaQueryWrapper
<>();
wrapper
.
eq
(
IdxBizFanHealthIndex:
:
getAnalysisType
,
"按小时"
);
wrapper
.
eq
(
IdxBizFanHealthIndex:
:
getAnalysisType
,
"按小时"
);
wrapper
.
eq
(
IdxBizFanHealthIndex:
:
getAnalysisObjType
,
"测点"
);
wrapper
.
ne
(
IdxBizFanHealthIndex:
:
getHealthLevel
,
"安全"
);
wrapper
.
ne
(
IdxBizFanHealthIndex:
:
getHealthLevel
,
"安全"
);
wrapper
.
ge
(
IdxBizFanHealthIndex:
:
getRecDate
,
df
.
format
(
calendar
.
getTime
()));
wrapper
.
ge
(
IdxBizFanHealthIndex:
:
getRecDate
,
df
.
format
(
calendar
.
getTime
()));
wrapper
.
orderByDesc
(
IdxBizFanHealthIndex:
:
getRecDate
);
wrapper
.
orderByDesc
(
IdxBizFanHealthIndex:
:
getRecDate
);
...
@@ -722,7 +724,7 @@ public class HealthStatusIndicatorServiceImpl {
...
@@ -722,7 +724,7 @@ public class HealthStatusIndicatorServiceImpl {
List
<
String
>
collect
=
healthIndices
.
stream
().
map
(
IdxBizFanHealthIndex:
:
getAnalysisObjSeq
).
collect
(
Collectors
.
toList
());
List
<
String
>
collect
=
healthIndices
.
stream
().
map
(
IdxBizFanHealthIndex:
:
getAnalysisObjSeq
).
collect
(
Collectors
.
toList
());
LambdaQueryWrapper
<
IdxBizFanWarningRuleSet
>
queryWrapper
=
new
LambdaQueryWrapper
<>();
LambdaQueryWrapper
<
IdxBizFanWarningRuleSet
>
queryWrapper
=
new
LambdaQueryWrapper
<>();
queryWrapper
.
eq
(
IdxBizFanWarningRuleSet:
:
getAnalysisType
,
"小时"
);
queryWrapper
.
eq
(
IdxBizFanWarningRuleSet:
:
getAnalysisType
,
"
按
小时"
);
queryWrapper
.
in
(
IdxBizFanWarningRuleSet:
:
getAnalysisPointId
,
collect
);
queryWrapper
.
in
(
IdxBizFanWarningRuleSet:
:
getAnalysisPointId
,
collect
);
List
<
IdxBizFanWarningRuleSet
>
idxBizPvWarningRules
=
idxBizFanWarningRuleSetMapper
.
selectList
(
queryWrapper
);
List
<
IdxBizFanWarningRuleSet
>
idxBizPvWarningRules
=
idxBizFanWarningRuleSetMapper
.
selectList
(
queryWrapper
);
...
...
amos-boot-system-jxiop/amos-boot-module-jxiop-analyse-biz/src/main/resources/mapper/cluster/IdxBizFanHealthIndexMapper.xml
View file @
f2aacfb2
...
@@ -292,7 +292,8 @@
...
@@ -292,7 +292,8 @@
count(1) as num,
count(1) as num,
(select count(1) from ${tableName} as tb
(select count(1) from ${tableName} as tb
<where>
<where>
tb.DISPOSOTION_STATE = '未处置'
((tb.DISPOSOTION_STATE = '未处置')
or (tb.DISPOSOTION_STATE = '已处置' and tb.DISPOSOTION_DATE > DATE_ADD( now(), INTERVAL - 3 DAY ) ))
and tb.POINT_NAME = a.POINT_NAME
and tb.POINT_NAME = a.POINT_NAME
<if
test=
"areaCode != null and areaCode != ''"
>
<if
test=
"areaCode != null and areaCode != ''"
>
and tb.ARAE like concat('%', #{areaCode}, '%')
and tb.ARAE like concat('%', #{areaCode}, '%')
...
...
amos-boot-system-jxiop/amos-boot-module-jxiop-analyse-biz/src/main/resources/mapper/cluster/IdxBizFanHealthLevelMapper.xml
View file @
f2aacfb2
...
@@ -2,4 +2,29 @@
...
@@ -2,4 +2,29 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.yeejoin.amos.boot.module.jxiop.biz.mapper2.IdxBizFanHealthLevelMapper"
>
<mapper
namespace=
"com.yeejoin.amos.boot.module.jxiop.biz.mapper2.IdxBizFanHealthLevelMapper"
>
<update
id=
"updateByInfo"
>
UPDATE ${tableName}
<if
test=
"groupLowerLimit != null and groupLowerLimit != ''"
>
set GROUP_LOWER_LIMIT = #{groupLowerLimit}
</if>
<if
test=
"groupUpperLimit != null and groupUpperLimit != ''"
>
, GROUP_UPPER_LIMIT = #{groupUpperLimit}
</if>
WHERE
ANALYSIS_OBJ_TYPE = #{analysisObjType}
AND HEALTH_LEVEL = #{healthLevel}
</update>
<update
id=
"updateByInfoIsNull"
>
UPDATE ${tableName}
<if
test=
"groupLowerLimit != null and groupLowerLimit != ''"
>
set GROUP_LOWER_LIMIT = #{groupLowerLimit}
</if>
<if
test=
"groupUpperLimit != null and groupUpperLimit != ''"
>
set GROUP_UPPER_LIMIT = #{groupUpperLimit}
</if>
WHERE
ANALYSIS_OBJ_TYPE = #{analysisObjType}
AND HEALTH_LEVEL = #{healthLevel}
</update>
</mapper>
</mapper>
amos-boot-system-jxiop/amos-boot-module-jxiop-analyse-biz/src/main/resources/mapper/cluster/IdxBizPvHealthIndexMapper.xml
View file @
f2aacfb2
...
@@ -198,7 +198,7 @@
...
@@ -198,7 +198,7 @@
POINT_NAME ,
POINT_NAME ,
STATION,
STATION,
CAST(HEALTH_INDEX AS UNSIGNED) as HEALTH_INDEX,
CAST(HEALTH_INDEX AS UNSIGNED) as HEALTH_INDEX,
CAST(HEALTH_INDEX AS UNSIGNED) as value
CAST(HEALTH_INDEX AS UNSIGNED) as value
,
HEALTH_LEVEL,
HEALTH_LEVEL,
SUBARRAY,
SUBARRAY,
REC_DATE,
REC_DATE,
...
...
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