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
75aee235
Commit
75aee235
authored
Jul 01, 2025
by
yangyang
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/develop_tzs_register' into develop_tzs_register
parents
f0ad8f26
43929d75
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
521 additions
and
52 deletions
+521
-52
JgResumeInfoMapper.java
...in/amos/boot/module/jg/api/mapper/JgResumeInfoMapper.java
+3
-0
JgResumeInfoMapper.xml
...e-jg-api/src/main/resources/mapper/JgResumeInfoMapper.xml
+16
-0
JgUseRegistrationMapper.xml
...api/src/main/resources/mapper/JgUseRegistrationMapper.xml
+1
-0
CommonServiceImpl.java
...os/boot/module/jg/biz/service/impl/CommonServiceImpl.java
+13
-0
CompanyAdvanceSearchEnum.java
...module/statistics/api/enums/CompanyAdvanceSearchEnum.java
+13
-9
ConditionEnum.java
.../amos/boot/module/statistics/api/enums/ConditionEnum.java
+1
-0
DataQualityScoreEnum.java
...oot/module/statistics/api/enums/DataQualityScoreEnum.java
+49
-0
EquipAdvanceSearchEnum.java
...t/module/statistics/api/enums/EquipAdvanceSearchEnum.java
+28
-24
EquipStateEnum.java
...amos/boot/module/statistics/api/enums/EquipStateEnum.java
+51
-0
IsSupervisoryCodeEnum.java
...ot/module/statistics/api/enums/IsSupervisoryCodeEnum.java
+48
-0
PersonAdvanceSearchEnum.java
.../module/statistics/api/enums/PersonAdvanceSearchEnum.java
+16
-10
UscDateEnum.java
...in/amos/boot/module/statistics/api/enums/UscDateEnum.java
+50
-0
TzsCustomFilterMapper.java
...t/module/statistics/api/mapper/TzsCustomFilterMapper.java
+3
-0
TzsCustomFilterMapper.xml
...s-api/src/main/resources/mapper/TzsCustomFilterMapper.xml
+14
-0
ComprehensiveStatisticalAnalysisController.java
...ontroller/ComprehensiveStatisticalAnalysisController.java
+122
-2
ComprehensiveStatisticalAnalysisServiceImpl.java
...ice/impl/ComprehensiveStatisticalAnalysisServiceImpl.java
+93
-7
No files found.
amos-boot-system-tzs/amos-boot-module-jg/amos-boot-module-jg-api/src/main/java/com/yeejoin/amos/boot/module/jg/api/mapper/JgResumeInfoMapper.java
View file @
75aee235
...
...
@@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import
com.yeejoin.amos.boot.module.jg.api.dto.JgResumeInfoDto
;
import
com.yeejoin.amos.boot.module.jg.api.entity.JgResumeInfo
;
import
org.apache.ibatis.annotations.Param
;
import
java.util.List
;
import
java.util.Set
;
/**
...
...
@@ -19,4 +21,5 @@ public interface JgResumeInfoMapper extends BaseMapper<JgResumeInfo> {
Page
<
JgResumeInfoDto
>
queryPageListByChangeIds
(
Page
<?>
page
,
@Param
(
"equIds"
)
Set
<
String
>
equIds
);
List
<
JgResumeInfoDto
>
selectResumeInfoByEquips
(
@Param
(
"recordOrPIds"
)
List
<
String
>
recordOrPIds
,
@Param
(
"applyNo"
)
String
applyNo
);
}
amos-boot-system-tzs/amos-boot-module-jg/amos-boot-module-jg-api/src/main/resources/mapper/JgResumeInfoMapper.xml
View file @
75aee235
...
...
@@ -19,4 +19,20 @@
</foreach>
order by rec_date desc
</select>
<select
id=
"selectResumeInfoByEquips"
resultType=
"com.yeejoin.amos.boot.module.jg.api.dto.JgResumeInfoDto"
>
SELECT
sequence_nbr,
business_type,
apply_no
FROM
"tzs_jg_resume_info"
WHERE
"equ_id" in
<foreach
collection=
"recordOrPIds"
item=
"equId"
open=
"("
separator=
"or"
close=
")"
>
equ_id = #{equId}
</foreach>
and resume_type= '0'
and apply_no
<![CDATA[<>]]>
#{applyNo}
ORDER BY "rec_date" DESC
</select>
</mapper>
amos-boot-system-tzs/amos-boot-module-jg/amos-boot-module-jg-api/src/main/resources/mapper/JgUseRegistrationMapper.xml
View file @
75aee235
...
...
@@ -130,6 +130,7 @@
from
idx_biz_jg_supervision_info ibjsi where ibjsi.RECORD in (select re.equ_id from tzs_jg_use_registration_eq re where ur.sequence_nbr = re.equip_transfer_id)) as orgBranchName
from
tzs_jg_use_registration ur
</sql>
...
...
amos-boot-system-tzs/amos-boot-module-jg/amos-boot-module-jg-biz/src/main/java/com/yeejoin/amos/boot/module/jg/biz/service/impl/CommonServiceImpl.java
View file @
75aee235
...
...
@@ -294,6 +294,9 @@ public class CommonServiceImpl implements ICommonService {
@Autowired
private
CbDataDictTypeHandler
dataDictTypeHandler
;
@Autowired
private
JgResumeInfoServiceImpl
jgResumeInfoService
;
public
static
final
String
DATA_QUALITY_SCORE
=
"DATA_QUALITY_SCORE"
;
public
static
byte
[]
file2byte
(
File
file
)
{
...
...
@@ -3204,4 +3207,13 @@ public class CommonServiceImpl implements ICommonService {
}
}
/**
* 查询非指定单据的设备或者装置的履历信息
* @param recordOrPIds 设备或者装置id集合
* @return 指定单据的设备或者装置的履历信息数组
*/
public
List
<
JgResumeInfoDto
>
getResumeInfosBatch
(
List
<
String
>
recordOrPIds
,
String
applyNo
){
return
jgResumeInfoService
.
getBaseMapper
().
selectResumeInfoByEquips
(
recordOrPIds
,
applyNo
);
}
}
\ No newline at end of file
amos-boot-system-tzs/amos-boot-module-statistics/amos-boot-module-statistics-api/src/main/java/com/yeejoin/amos/boot/module/statistics/api/enums/CompanyAdvanceSearchEnum.java
View file @
75aee235
...
...
@@ -13,15 +13,15 @@ public enum CompanyAdvanceSearchEnum {
/**
* 高级搜索枚举
*/
ADDRESS
(
"详细地址"
,
"address"
,
TechnicalParameter
.
ParamType
.
STRING
,
""
),
EXPIRYDATE
(
"许可有效期"
,
"expiryDate"
,
TechnicalParameter
.
ParamType
.
DATE
,
""
),
UNIT_TYPE
(
"企业类型"
,
"unitType"
,
null
,
"
"
),
REGULATORY_LABELS
(
"企业等级"
,
"regulatoryLabels"
,
null
,
""
),
INDUSTRY_SUPERVISOR
(
"行业主管部门"
,
"industrySupervisor"
,
null
,
"
"
),
ITEM_CODE
(
"许可项目"
,
"itemCode"
,
null
,
"
"
),
SUB_ITEM_CODE
(
"许可子项目"
,
"subItemCode"
,
null
,
""
),
OPERATING_STATUS
(
"经营状态"
,
"operatingStatus"
,
null
,
"
"
),
EQUIP_CATEGORY
(
"监管设备类型"
,
"equipCategory"
,
null
,
"
"
),
ADDRESS
(
"详细地址"
,
"address"
,
TechnicalParameter
.
ParamType
.
STRING
,
""
,
null
,
null
),
EXPIRYDATE
(
"许可有效期"
,
"expiryDate"
,
TechnicalParameter
.
ParamType
.
DATE
,
""
,
null
,
null
),
UNIT_TYPE
(
"企业类型"
,
"unitType"
,
null
,
"
/statistics/comprehensiveStatisticalAnalysis/select/queryUnitType"
,
null
,
null
),
REGULATORY_LABELS
(
"企业等级"
,
"regulatoryLabels"
,
null
,
""
,
null
,
null
),
INDUSTRY_SUPERVISOR
(
"行业主管部门"
,
"industrySupervisor"
,
null
,
"
/statistics/comprehensiveStatisticalAnalysis/select/queryDicData?type={type}"
,
"HYZGBM"
,
null
),
ITEM_CODE
(
"许可项目"
,
"itemCode"
,
null
,
"
/statistics/comprehensiveStatisticalAnalysis/select/queryXK"
,
null
,
null
),
SUB_ITEM_CODE
(
"许可子项目"
,
"subItemCode"
,
null
,
"
/statistics/comprehensiveStatisticalAnalysis/select/queryXK?type={type}"
,
null
,
"itemCode
"
),
OPERATING_STATUS
(
"经营状态"
,
"operatingStatus"
,
null
,
"
/statistics/comprehensiveStatisticalAnalysis/select/queryDicData?type={type}"
,
"jyzt"
,
null
),
EQUIP_CATEGORY
(
"监管设备类型"
,
"equipCategory"
,
null
,
"
/statistics/comprehensiveStatisticalAnalysis/select/queryEquipList"
,
null
,
null
),
;
...
...
@@ -29,6 +29,8 @@ public enum CompanyAdvanceSearchEnum {
private
String
code
;
private
TechnicalParameter
.
ParamType
paramType
;
private
String
url
;
private
String
dataKey
;
private
String
argKey
;
public
static
JSONArray
getAll
(){
JSONArray
jsonArray
=
new
JSONArray
();
...
...
@@ -37,6 +39,8 @@ public enum CompanyAdvanceSearchEnum {
jsonObject
.
put
(
"label"
,
item
.
name
);
jsonObject
.
put
(
"value"
,
item
.
code
);
jsonObject
.
put
(
"key"
,
item
.
code
);
jsonObject
.
put
(
"dataKey"
,
item
.
dataKey
);
jsonObject
.
put
(
"argKey"
,
item
.
argKey
);
jsonObject
.
put
(
"paramType"
,
item
.
paramType
);
jsonObject
.
put
(
"isMulti"
,
false
);
if
(
TechnicalParameter
.
ParamType
.
BIG_DECIMAL
.
equals
(
item
.
paramType
)){
...
...
amos-boot-system-tzs/amos-boot-module-statistics/amos-boot-module-statistics-api/src/main/java/com/yeejoin/amos/boot/module/statistics/api/enums/ConditionEnum.java
View file @
75aee235
...
...
@@ -29,6 +29,7 @@ public enum ConditionEnum {
dateLe
(
"小于等于"
,
"le"
,
TechnicalParameter
.
ParamType
.
DATE
),
in
(
"包含"
,
"in"
,
null
),
notin
(
"不包含"
,
"notin"
,
null
),
eq
(
"等于"
,
"eq"
,
null
),
;
...
...
amos-boot-system-tzs/amos-boot-module-statistics/amos-boot-module-statistics-api/src/main/java/com/yeejoin/amos/boot/module/statistics/api/enums/DataQualityScoreEnum.java
0 → 100644
View file @
75aee235
package
com
.
yeejoin
.
amos
.
boot
.
module
.
statistics
.
api
.
enums
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
java.util.HashMap
;
import
java.util.Map
;
@AllArgsConstructor
@Getter
public
enum
DataQualityScoreEnum
{
/**
* *设备等级
*/
I
(
"I级"
,
"3"
),
II
(
"II级"
,
"2"
),
III
(
"III级"
,
"1"
),
;
private
String
name
;
private
String
code
;
public
static
Map
<
String
,
String
>
getName
=
new
HashMap
<>();
public
static
Map
<
String
,
String
>
getCode
=
new
HashMap
<>();
static
{
for
(
DataQualityScoreEnum
e
:
DataQualityScoreEnum
.
values
())
{
getName
.
put
(
e
.
code
,
e
.
name
);
getCode
.
put
(
e
.
name
,
e
.
code
);
}
}
public
static
JSONArray
getAll
(){
JSONArray
jsonArray
=
new
JSONArray
();
for
(
DataQualityScoreEnum
e
:
DataQualityScoreEnum
.
values
())
{
JSONObject
jsonObject
=
new
JSONObject
();
jsonObject
.
put
(
"label"
,
e
.
name
);
jsonObject
.
put
(
"value"
,
e
.
name
);
jsonObject
.
put
(
"key"
,
e
.
code
);
jsonArray
.
add
(
jsonObject
);
}
return
jsonArray
;
}
}
amos-boot-system-tzs/amos-boot-module-statistics/amos-boot-module-statistics-api/src/main/java/com/yeejoin/amos/boot/module/statistics/api/enums/EquipAdvanceSearchEnum.java
View file @
75aee235
...
...
@@ -13,31 +13,31 @@ public enum EquipAdvanceSearchEnum {
/**
* 高级搜索枚举
*/
USE_ORG_CODE
(
"使用登记证编号"
,
"USE_ORG_CODE"
,
TechnicalParameter
.
ParamType
.
STRING
,
""
),
EQU_LIST
(
"设备种类"
,
"EQU_LIST
"
,
null
,
""
),
EQU_CATEGORY
(
"设备类别"
,
"EQU_CATEGORY
"
,
null
,
"
"
),
EQU_DEFINE
(
"设备品种"
,
"EQU_DEFINE
"
,
null
,
"
"
),
PRODUCT_NAME
(
"设备名称"
,
"PRODUCT_NAME"
,
TechnicalParameter
.
ParamType
.
STRING
,
""
),
TECH_PARAM
(
"技术参数"
,
"techParam"
,
null
,
""
),
PARAM_RANGE
(
"参数范围"
,
"paramRange"
,
TechnicalParameter
.
ParamType
.
STRING
,
""
),
NEXT_INSPECT_DATE
(
"检验有效期"
,
"nextInspectDate"
,
TechnicalParameter
.
ParamType
.
DATE
,
""
),
EQU_STATE
(
"
检验有效期"
,
"EQU_STATE"
,
null
,
""
),
// SUPERVISORY_CODE("赋码状态", "", null,""
),
// SUPERVISORY_CODE("设备等级", "", null,""
),
// SUPERVISORY_CODE("使用年限", "", null,""
),
UNIT_TYPE
(
"所属单位类型"
,
"unitType"
,
null
,
"
"
),
USC_UNIT_NAME
(
"所属单位名称"
,
"USC_UNIT_NAME"
,
TechnicalParameter
.
ParamType
.
STRING
,
""
),
PRODUCE_UNIT_NAME
(
"制造单位名称"
,
"PRODUCE_UNIT_NAME"
,
TechnicalParameter
.
ParamType
.
STRING
,
""
),
DESIGN_UNIT_NAME
(
"设计单位名称"
,
"DESIGN_UNIT_NAME"
,
TechnicalParameter
.
ParamType
.
STRING
,
""
),
ME_UNIT_NAME
(
"维保单位名称"
,
"ME_UNIT_NAME"
,
TechnicalParameter
.
ParamType
.
STRING
,
""
),
AZUSC_UNIT_NAME
(
"安装单位名称"
,
"USC_UNIT_NAME"
,
TechnicalParameter
.
ParamType
.
STRING
,
""
),
CODE96333
(
"96333识别码"
,
"CODE96333"
,
TechnicalParameter
.
ParamType
.
STRING
,
""
),
SUPERVISORY_CODE
(
"监管码"
,
"SUPERVISORY_CODE"
,
TechnicalParameter
.
ParamType
.
STRING
,
""
),
EQU_TYPE
(
"设备型号"
,
"EQU_TYPE"
,
TechnicalParameter
.
ParamType
.
STRING
,
""
),
PRODUCE_DATE
(
"制造日期"
,
"PRODUCE_DATE"
,
TechnicalParameter
.
ParamType
.
DATE
,
""
),
USE_ORG_CODE
(
"使用登记证编号"
,
"USE_ORG_CODE"
,
TechnicalParameter
.
ParamType
.
STRING
,
""
,
null
,
null
),
EQU_LIST
(
"设备种类"
,
"EQU_LIST
_CODE"
,
null
,
"/statistics/comprehensiveStatisticalAnalysis/select/queryEquipList"
,
null
,
null
),
EQU_CATEGORY
(
"设备类别"
,
"EQU_CATEGORY
_CODE"
,
null
,
"/statistics/comprehensiveStatisticalAnalysis/select/queryEquCategory?type={type}"
,
null
,
"EQU_LIST_CODE
"
),
EQU_DEFINE
(
"设备品种"
,
"EQU_DEFINE
_CODE"
,
null
,
"/statistics/comprehensiveStatisticalAnalysis/select/queryEquDefine?type={type}"
,
null
,
"EQU_CATEGORY_CODE
"
),
PRODUCT_NAME
(
"设备名称"
,
"PRODUCT_NAME"
,
TechnicalParameter
.
ParamType
.
STRING
,
""
,
null
,
null
),
TECH_PARAM
(
"技术参数"
,
"techParam"
,
null
,
"
/statistics/comprehensiveStatisticalAnalysis/select/queryTechParam?type={type}"
,
null
,
"EQU_LIST_CODE
"
),
PARAM_RANGE
(
"参数范围"
,
"paramRange"
,
TechnicalParameter
.
ParamType
.
STRING
,
""
,
null
,
null
),
NEXT_INSPECT_DATE
(
"检验有效期"
,
"nextInspectDate"
,
TechnicalParameter
.
ParamType
.
DATE
,
""
,
null
,
null
),
EQU_STATE
(
"
设备状态"
,
"EQU_STATE"
,
null
,
"/statistics/comprehensiveStatisticalAnalysis/select/queryEquState"
,
null
,
null
),
IS_SUPERVISORY_CODE
(
"赋码状态"
,
"IS_SUPERVISORY_CODE"
,
null
,
"/statistics/comprehensiveStatisticalAnalysis/select/queryIsSupervisoryCode"
,
null
,
null
),
DATA_QUALITY_SCORE
(
"数据完整性"
,
"DATA_QUALITY_SCORE"
,
null
,
"/statistics/comprehensiveStatisticalAnalysis/select/queryDataQualityScore"
,
null
,
null
),
USC_DATE
(
"使用年限"
,
"USC_DATE"
,
null
,
"/statistics/comprehensiveStatisticalAnalysis/select/queryUscDate"
,
null
,
null
),
UNIT_TYPE
(
"所属单位类型"
,
"unitType"
,
null
,
"
/statistics/comprehensiveStatisticalAnalysis/select/queryUnitType"
,
null
,
null
),
USC_UNIT_NAME
(
"所属单位名称"
,
"USC_UNIT_NAME"
,
TechnicalParameter
.
ParamType
.
STRING
,
""
,
null
,
null
),
PRODUCE_UNIT_NAME
(
"制造单位名称"
,
"PRODUCE_UNIT_NAME"
,
TechnicalParameter
.
ParamType
.
STRING
,
""
,
null
,
null
),
DESIGN_UNIT_NAME
(
"设计单位名称"
,
"DESIGN_UNIT_NAME"
,
TechnicalParameter
.
ParamType
.
STRING
,
""
,
null
,
null
),
ME_UNIT_NAME
(
"维保单位名称"
,
"ME_UNIT_NAME"
,
TechnicalParameter
.
ParamType
.
STRING
,
""
,
null
,
null
),
AZUSC_UNIT_NAME
(
"安装单位名称"
,
"USC_UNIT_NAME"
,
TechnicalParameter
.
ParamType
.
STRING
,
""
,
null
,
null
),
CODE96333
(
"96333识别码"
,
"CODE96333"
,
TechnicalParameter
.
ParamType
.
STRING
,
""
,
null
,
null
),
SUPERVISORY_CODE
(
"监管码"
,
"SUPERVISORY_CODE"
,
TechnicalParameter
.
ParamType
.
STRING
,
""
,
null
,
null
),
EQU_TYPE
(
"设备型号"
,
"EQU_TYPE"
,
TechnicalParameter
.
ParamType
.
STRING
,
""
,
null
,
null
),
PRODUCE_DATE
(
"制造日期"
,
"PRODUCE_DATE"
,
TechnicalParameter
.
ParamType
.
DATE
,
""
,
null
,
null
),
// PRODUCE_DATE("是否进口", "PRODUCE_DATE", TechnicalParameter.ParamType.DATE,""),
USE_PLACE_CODE
(
"使用地点"
,
"USE_PLACE_CODE"
,
TechnicalParameter
.
ParamType
.
STRING
,
""
),
USE_PLACE
(
"使用场所"
,
"USE_PLACE"
,
null
,
"
"
),
USE_PLACE_CODE
(
"使用地点"
,
"USE_PLACE_CODE"
,
TechnicalParameter
.
ParamType
.
STRING
,
""
,
null
,
null
),
USE_PLACE
(
"使用场所"
,
"USE_PLACE"
,
null
,
"
/statistics/comprehensiveStatisticalAnalysis/select/queryDicData"
,
"ADDRESS"
,
null
),
;
...
...
@@ -45,6 +45,8 @@ public enum EquipAdvanceSearchEnum {
private
String
code
;
private
TechnicalParameter
.
ParamType
paramType
;
private
String
url
;
private
String
dataKey
;
private
String
argKey
;
public
static
JSONArray
getAll
(){
JSONArray
jsonArray
=
new
JSONArray
();
...
...
@@ -53,6 +55,8 @@ public enum EquipAdvanceSearchEnum {
jsonObject
.
put
(
"label"
,
item
.
name
);
jsonObject
.
put
(
"value"
,
item
.
code
);
jsonObject
.
put
(
"key"
,
item
.
code
);
jsonObject
.
put
(
"dataKey"
,
item
.
dataKey
);
jsonObject
.
put
(
"argKey"
,
item
.
argKey
);
jsonObject
.
put
(
"paramType"
,
item
.
paramType
);
jsonObject
.
put
(
"isMulti"
,
false
);
if
(
TechnicalParameter
.
ParamType
.
BIG_DECIMAL
.
equals
(
item
.
paramType
)){
...
...
amos-boot-system-tzs/amos-boot-module-statistics/amos-boot-module-statistics-api/src/main/java/com/yeejoin/amos/boot/module/statistics/api/enums/EquipStateEnum.java
0 → 100644
View file @
75aee235
package
com
.
yeejoin
.
amos
.
boot
.
module
.
statistics
.
api
.
enums
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
java.util.HashMap
;
import
java.util.Map
;
@AllArgsConstructor
@Getter
public
enum
EquipStateEnum
{
/**
* *设备状态
*/
WDJ
(
"未登记"
,
"0"
),
ZY
(
"在用"
,
"1"
),
TY
(
"停用"
,
"2"
),
BF
(
"报废"
,
"3"
),
ZX
(
"注销"
,
"4"
),
;
private
String
name
;
private
String
code
;
public
static
Map
<
String
,
String
>
getName
=
new
HashMap
<>();
public
static
Map
<
String
,
String
>
getCode
=
new
HashMap
<>();
static
{
for
(
EquipStateEnum
e
:
EquipStateEnum
.
values
())
{
getName
.
put
(
e
.
code
,
e
.
name
);
getCode
.
put
(
e
.
name
,
e
.
code
);
}
}
public
static
JSONArray
getAll
(){
JSONArray
jsonArray
=
new
JSONArray
();
for
(
EquipStateEnum
e
:
EquipStateEnum
.
values
())
{
JSONObject
jsonObject
=
new
JSONObject
();
jsonObject
.
put
(
"label"
,
e
.
name
);
jsonObject
.
put
(
"value"
,
e
.
name
);
jsonObject
.
put
(
"key"
,
e
.
code
);
jsonArray
.
add
(
jsonObject
);
}
return
jsonArray
;
}
}
amos-boot-system-tzs/amos-boot-module-statistics/amos-boot-module-statistics-api/src/main/java/com/yeejoin/amos/boot/module/statistics/api/enums/IsSupervisoryCodeEnum.java
0 → 100644
View file @
75aee235
package
com
.
yeejoin
.
amos
.
boot
.
module
.
statistics
.
api
.
enums
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
java.util.HashMap
;
import
java.util.Map
;
@AllArgsConstructor
@Getter
public
enum
IsSupervisoryCodeEnum
{
/**
* *赋码状态
*/
WFM
(
"未赋码"
,
"0"
),
YFM
(
"已赋码"
,
"1"
),
;
private
String
name
;
private
String
code
;
public
static
Map
<
String
,
String
>
getName
=
new
HashMap
<>();
public
static
Map
<
String
,
String
>
getCode
=
new
HashMap
<>();
static
{
for
(
IsSupervisoryCodeEnum
e
:
IsSupervisoryCodeEnum
.
values
())
{
getName
.
put
(
e
.
code
,
e
.
name
);
getCode
.
put
(
e
.
name
,
e
.
code
);
}
}
public
static
JSONArray
getAll
(){
JSONArray
jsonArray
=
new
JSONArray
();
for
(
IsSupervisoryCodeEnum
e
:
IsSupervisoryCodeEnum
.
values
())
{
JSONObject
jsonObject
=
new
JSONObject
();
jsonObject
.
put
(
"label"
,
e
.
name
);
jsonObject
.
put
(
"value"
,
e
.
name
);
jsonObject
.
put
(
"key"
,
e
.
code
);
jsonArray
.
add
(
jsonObject
);
}
return
jsonArray
;
}
}
amos-boot-system-tzs/amos-boot-module-statistics/amos-boot-module-statistics-api/src/main/java/com/yeejoin/amos/boot/module/statistics/api/enums/PersonAdvanceSearchEnum.java
View file @
75aee235
...
...
@@ -13,18 +13,20 @@ public enum PersonAdvanceSearchEnum {
/**
* 高级搜索枚举
*/
NAME
(
"人员名称"
,
"name"
,
TechnicalParameter
.
ParamType
.
STRING
,
""
),
NEWPOST
(
"人员类型"
,
"newPost"
,
TechnicalParameter
.
ParamType
.
DATE
,
""
),
SUBPOST
(
"人员子类型"
,
"subPost"
,
null
,
""
),
NAME
(
"人员名称"
,
"name"
,
TechnicalParameter
.
ParamType
.
STRING
,
""
,
null
,
null
),
NEWPOST
(
"人员类型"
,
"newPost"
,
null
,
"/statistics/comprehensiveStatisticalAnalysis/select/queryRYLX"
,
null
,
null
),
SUBPOST
(
"人员子类型"
,
"subPost"
,
null
,
"
/statistics/comprehensiveStatisticalAnalysis/select/queryRYLX?type={type}"
,
null
,
"newPost
"
),
// REGULATORY_LABELS("有无资质", "regulatoryLabels",null,""),
// REGULATORY_LABELS("资质状态", "regulatoryLabels",null,""),
CERT_TYPE
(
"证书类型"
,
"certType"
,
null
,
""
),
PERMISSION_LEVEL
(
"证书级别"
,
"permissionLevel"
,
null
,
""
),
JOB_ITEM
(
"作业项目"
,
"jobItem"
,
null
,
""
),
ISSUE_DATE
(
"发证日期"
,
"issueDate"
,
TechnicalParameter
.
ParamType
.
DATE
,
""
),
EDUCATION
(
"学历"
,
"education"
,
null
,
""
),
ADDRESS
(
"住址"
,
"address"
,
TechnicalParameter
.
ParamType
.
STRING
,
""
),
EQUIP_TYPE
(
"监管设备类型"
,
"equipType"
,
null
,
""
),
CERT_TYPE
(
"证书类型"
,
"certType"
,
null
,
"/statistics/comprehensiveStatisticalAnalysis/select/queryCertType"
,
null
,
null
),
PERMISSION_LEVEL
(
"证书级别"
,
"permissionLevel"
,
null
,
"/statistics/comprehensiveStatisticalAnalysis/select/queryPermissionLevel"
,
null
,
null
),
JOB_ITEM
(
"作业项目"
,
"jobItem"
,
null
,
"/statistics/comprehensiveStatisticalAnalysis/select/queryZYXM?type={type}"
,
null
,
"certType|permissionLevel"
),
ISSUE_DATE
(
"发证日期"
,
"issueDate"
,
TechnicalParameter
.
ParamType
.
DATE
,
""
,
null
,
null
),
EDUCATION
(
"学历"
,
"education"
,
null
,
"/statistics/comprehensiveStatisticalAnalysis/select/queryDicData"
,
"XLLX"
,
null
),
ADDRESS
(
"住址"
,
"address"
,
TechnicalParameter
.
ParamType
.
STRING
,
""
,
null
,
null
),
UNITCODE
(
"所属企业"
,
"unitCode"
,
TechnicalParameter
.
ParamType
.
STRING
,
""
,
null
,
null
),
SUPERVISEORGCODE
(
"管辖机构"
,
"superviseOrgCode"
,
null
,
"/statistics/comprehensiveStatisticalAnalysis/select/queryUnitByOrgCode?type={type}"
,
null
,
"orgTreeId"
),
EQUIP_TYPE
(
"监管设备类型"
,
"equipType"
,
null
,
"/statistics/comprehensiveStatisticalAnalysis/select/queryEquipList"
,
null
,
null
),
;
...
...
@@ -32,6 +34,8 @@ public enum PersonAdvanceSearchEnum {
private
String
code
;
private
TechnicalParameter
.
ParamType
paramType
;
private
String
url
;
private
String
dataKey
;
private
String
argKey
;
public
static
JSONArray
getAll
(){
JSONArray
jsonArray
=
new
JSONArray
();
...
...
@@ -40,6 +44,8 @@ public enum PersonAdvanceSearchEnum {
jsonObject
.
put
(
"label"
,
item
.
name
);
jsonObject
.
put
(
"value"
,
item
.
code
);
jsonObject
.
put
(
"key"
,
item
.
code
);
jsonObject
.
put
(
"dataKey"
,
item
.
dataKey
);
jsonObject
.
put
(
"argKey"
,
item
.
argKey
);
jsonObject
.
put
(
"paramType"
,
item
.
paramType
);
jsonObject
.
put
(
"isMulti"
,
false
);
if
(
TechnicalParameter
.
ParamType
.
BIG_DECIMAL
.
equals
(
item
.
paramType
)){
...
...
amos-boot-system-tzs/amos-boot-module-statistics/amos-boot-module-statistics-api/src/main/java/com/yeejoin/amos/boot/module/statistics/api/enums/UscDateEnum.java
0 → 100644
View file @
75aee235
package
com
.
yeejoin
.
amos
.
boot
.
module
.
statistics
.
api
.
enums
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
java.util.HashMap
;
import
java.util.Map
;
@AllArgsConstructor
@Getter
public
enum
UscDateEnum
{
/**
* *使用年限
*/
FIVE_YEARS_OR_LESS
(
"5年以下"
,
"5"
),
FIVE_TO_TEN_YEARS
(
"5~10年"
,
"5-10"
),
TEN_TO_FIFTEEN_YEARS
(
"10~15年"
,
"10-15"
),
MORE_THAN_FIFTEEN_YEARS
(
"15年以上"
,
"15"
),
;
private
String
name
;
private
String
code
;
public
static
Map
<
String
,
String
>
getName
=
new
HashMap
<>();
public
static
Map
<
String
,
String
>
getCode
=
new
HashMap
<>();
static
{
for
(
UscDateEnum
e
:
UscDateEnum
.
values
())
{
getName
.
put
(
e
.
code
,
e
.
name
);
getCode
.
put
(
e
.
name
,
e
.
code
);
}
}
public
static
JSONArray
getAll
(){
JSONArray
jsonArray
=
new
JSONArray
();
for
(
UscDateEnum
e
:
UscDateEnum
.
values
())
{
JSONObject
jsonObject
=
new
JSONObject
();
jsonObject
.
put
(
"label"
,
e
.
name
);
jsonObject
.
put
(
"value"
,
e
.
name
);
jsonObject
.
put
(
"key"
,
e
.
code
);
jsonArray
.
add
(
jsonObject
);
}
return
jsonArray
;
}
}
amos-boot-system-tzs/amos-boot-module-statistics/amos-boot-module-statistics-api/src/main/java/com/yeejoin/amos/boot/module/statistics/api/mapper/TzsCustomFilterMapper.java
View file @
75aee235
package
com
.
yeejoin
.
amos
.
boot
.
module
.
statistics
.
api
.
mapper
;
import
com.alibaba.fastjson.JSONArray
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.yeejoin.amos.boot.module.statistics.api.entity.TzsCustomFilter
;
import
org.apache.ibatis.annotations.MapKey
;
...
...
@@ -18,4 +19,6 @@ public interface TzsCustomFilterMapper extends BaseMapper<TzsCustomFilter> {
@MapKey
(
"key"
)
List
<
Map
<
String
,
Object
>>
selectEquipmentCategoryByParentId
(
@Param
(
"parentId"
)
String
parentId
);
JSONArray
queryEquCategory
(
@Param
(
"type"
)
String
type
,
@Param
(
"description"
)
String
description
);
}
amos-boot-system-tzs/amos-boot-module-statistics/amos-boot-module-statistics-api/src/main/resources/mapper/TzsCustomFilterMapper.xml
View file @
75aee235
...
...
@@ -10,4 +10,18 @@
from tz_equipment_category
where parent_id = #{parentId}
</select>
<select
id=
"queryEquCategory"
resultType=
"com.alibaba.fastjson.JSONArray"
>
SELECT
code AS value,
code AS key,
name AS label
FROM
tz_equipment_category
WHERE
description = #{description}
<if
test=
"type != null and type != ''"
>
AND parent_id = (SELECT id FROM tz_equipment_category where code = #{type})
</if>
</select>
</mapper>
amos-boot-system-tzs/amos-boot-module-statistics/amos-boot-module-statistics-biz/src/main/java/com/yeejoin/amos/boot/module/statistcs/biz/controller/ComprehensiveStatisticalAnalysisController.java
View file @
75aee235
...
...
@@ -142,8 +142,8 @@ public class ComprehensiveStatisticalAnalysisController extends BaseController {
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@GetMapping
(
value
=
"/select/queryUnitByOrgCode"
)
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"根据监管机构查询企业"
,
notes
=
"根据监管机构查询企业"
)
public
ResponseModel
<
JSONArray
>
queryUnitByOrgCode
(
@RequestParam
String
orgCod
e
)
{
return
ResponseHelper
.
buildResponse
(
statisticalAnalysisService
.
queryUnitByOrgCode
(
orgCod
e
));
public
ResponseModel
<
JSONArray
>
queryUnitByOrgCode
(
@RequestParam
String
typ
e
)
{
return
ResponseHelper
.
buildResponse
(
statisticalAnalysisService
.
queryUnitByOrgCode
(
typ
e
));
}
/**
...
...
@@ -180,5 +180,125 @@ public class ComprehensiveStatisticalAnalysisController extends BaseController {
return
ResponseHelper
.
buildResponse
(
"后台处理中,请注意下载!"
);
}
/**
* @param
* @return
*/
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@GetMapping
(
value
=
"/select/queryEquipList"
)
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"高级搜索设备种类"
,
notes
=
"高级搜索设备种类"
)
public
ResponseModel
<
JSONArray
>
queryEquipList
()
{
return
ResponseHelper
.
buildResponse
(
statisticalAnalysisService
.
queryEquipList
());
}
/**
* @param
* @return
*/
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@GetMapping
(
value
=
"/select/queryEquCategory"
)
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"高级搜索设备类别"
,
notes
=
"高级搜索设备类别"
)
public
ResponseModel
<
JSONArray
>
queryEquCategory
(
@RequestParam
(
required
=
false
)
String
type
)
{
return
ResponseHelper
.
buildResponse
(
statisticalAnalysisService
.
queryEquCategory
(
type
));
}
/**
* @param
* @return
*/
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@GetMapping
(
value
=
"/select/queryEquDefine"
)
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"高级搜索设备品种"
,
notes
=
"高级搜索设备品种"
)
public
ResponseModel
<
JSONArray
>
queryEquDefine
(
@RequestParam
(
required
=
false
)
String
type
)
{
return
ResponseHelper
.
buildResponse
(
statisticalAnalysisService
.
queryEquDefine
(
type
));
}
/**
* @param
* @return
*/
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@GetMapping
(
value
=
"/select/queryEquState"
)
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"高级搜索设备状态"
,
notes
=
"高级搜索设备状态"
)
public
ResponseModel
<
JSONArray
>
queryEquState
()
{
return
ResponseHelper
.
buildResponse
(
statisticalAnalysisService
.
queryEquState
());
}
/**
* @param
* @return
*/
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@GetMapping
(
value
=
"/select/queryDicData"
)
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"高级搜索字典类型"
,
notes
=
"高级搜索字典类型"
)
public
ResponseModel
<
JSONArray
>
queryDicData
(
@RequestParam
String
dataKey
)
{
return
ResponseHelper
.
buildResponse
(
statisticalAnalysisService
.
getData
(
dataKey
));
}
/**
* @param
* @return
*/
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@GetMapping
(
value
=
"/select/queryIsSupervisoryCode"
)
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"高级搜索赋码状态"
,
notes
=
"高级搜索赋码状态"
)
public
ResponseModel
<
JSONArray
>
queryIsSupervisoryCode
()
{
return
ResponseHelper
.
buildResponse
(
statisticalAnalysisService
.
queryIsSupervisoryCode
());
}
/**
* @param
* @return
*/
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@GetMapping
(
value
=
"/select/queryDataQualityScore"
)
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"高级搜索设备等级"
,
notes
=
"高级搜索设备等级"
)
public
ResponseModel
<
JSONArray
>
queryDataQualityScore
()
{
return
ResponseHelper
.
buildResponse
(
statisticalAnalysisService
.
queryDataQualityScore
());
}
/**
* @param
* @return
*/
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@GetMapping
(
value
=
"/select/queryUscDate"
)
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"高级搜索使用年限"
,
notes
=
"高级搜索使用年限"
)
public
ResponseModel
<
JSONArray
>
queryUscDate
()
{
return
ResponseHelper
.
buildResponse
(
statisticalAnalysisService
.
queryUscDate
());
}
/**
* @param
* @return
*/
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@GetMapping
(
value
=
"/select/queryTechParam"
)
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"高级搜索技术参数"
,
notes
=
"高级搜索技术参数"
)
public
ResponseModel
<
JSONArray
>
queryTechParam
(
String
type
)
{
return
ResponseHelper
.
buildResponse
(
statisticalAnalysisService
.
queryTechParam
(
type
));
}
/**
* @param
* @return
*/
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@GetMapping
(
value
=
"/select/queryCertType"
)
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"高级搜索证书类型"
,
notes
=
"高级搜索证书类型"
)
public
ResponseModel
<
JSONArray
>
queryCertType
()
{
return
ResponseHelper
.
buildResponse
(
statisticalAnalysisService
.
queryCertType
());
}
/**
* @param
* @return
*/
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@GetMapping
(
value
=
"/select/queryPermissionLevel"
)
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"高级搜索证书级别"
,
notes
=
"高级搜索证书级别"
)
public
ResponseModel
<
JSONArray
>
queryPermissionLevel
()
{
return
ResponseHelper
.
buildResponse
(
statisticalAnalysisService
.
queryPermissionLevel
());
}
}
amos-boot-system-tzs/amos-boot-module-statistics/amos-boot-module-statistics-biz/src/main/java/com/yeejoin/amos/boot/module/statistcs/biz/service/impl/ComprehensiveStatisticalAnalysisServiceImpl.java
View file @
75aee235
...
...
@@ -15,10 +15,7 @@ import com.yeejoin.amos.boot.module.common.biz.utils.TechParamUtil;
import
com.yeejoin.amos.boot.module.jg.api.enums.DPMapStatisticsItemEnum
;
import
com.yeejoin.amos.boot.module.statistcs.biz.utils.JsonUtils
;
import
com.yeejoin.amos.boot.module.statistcs.biz.utils.MinioUtils
;
import
com.yeejoin.amos.boot.module.statistics.api.enums.EquipAdvanceSearchEnum
;
import
com.yeejoin.amos.boot.module.statistics.api.enums.ConditionEnum
;
import
com.yeejoin.amos.boot.module.statistics.api.enums.StatisticalAnalysisEnum
;
import
com.yeejoin.amos.boot.module.statistics.api.enums.UnitTypeEnum
;
import
com.yeejoin.amos.boot.module.statistics.api.enums.*
;
import
com.yeejoin.amos.boot.module.statistics.api.mapper.TzsCustomFilterMapper
;
import
com.yeejoin.amos.boot.module.statistics.api.vo.EquipInfoVo
;
import
com.yeejoin.amos.boot.module.ymt.api.dto.EquipmentCategoryDto
;
...
...
@@ -131,7 +128,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
return
list
;
}
p
rivate
JSONArray
getData
(
String
dictCode
)
{
p
ublic
JSONArray
getData
(
String
dictCode
)
{
JSONArray
jsonArray
=
new
JSONArray
();
//根据dictCode查询数据字典
List
<
DataDictionary
>
dictionaries
=
dataDictionaryService
.
getByType
(
dictCode
);
...
...
@@ -154,9 +151,9 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
if
(
"equip"
.
equals
(
type
))
{
all
=
EquipAdvanceSearchEnum
.
getAll
();
}
else
if
(
"company"
.
equals
(
type
)){
all
=
CompanyAdvanceSearchEnum
.
getAll
();
}
else
if
(
"person"
.
equals
(
type
))
{
all
=
PersonAdvanceSearchEnum
.
getAll
();
}
return
all
;
}
...
...
@@ -1043,4 +1040,92 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
return
result
;
}
public
JSONArray
queryEquipList
()
{
List
<
EquipmentCategoryDto
>
equipmentCategoryDtos
=
equipmentCategoryMapper
.
selectClassify
();
JSONArray
equipCategoryData
=
new
JSONArray
();
for
(
int
i
=
0
;
i
<
equipmentCategoryDtos
.
size
();
i
++){
JSONObject
object
=
new
JSONObject
();
object
.
put
(
"key"
,
equipmentCategoryDtos
.
get
(
i
).
getCode
());
object
.
put
(
"value"
,
equipmentCategoryDtos
.
get
(
i
).
getCode
());
object
.
put
(
"label"
,
equipmentCategoryDtos
.
get
(
i
).
getName
());
equipCategoryData
.
add
(
object
);
}
return
equipCategoryData
;
}
public
JSONArray
queryEquCategory
(
String
type
)
{
JSONArray
result
=
tzsCustomFilterMapper
.
queryEquCategory
(
type
,
"EQU_CATEGORY"
);
return
result
;
}
public
JSONArray
queryEquDefine
(
String
type
)
{
JSONArray
result
=
tzsCustomFilterMapper
.
queryEquCategory
(
type
,
"EQU_DEFINE"
);
return
result
;
}
public
JSONArray
queryEquState
()
{
return
EquipStateEnum
.
getAll
();
}
public
JSONArray
queryIsSupervisoryCode
()
{
return
IsSupervisoryCodeEnum
.
getAll
();
}
public
JSONArray
queryDataQualityScore
()
{
return
DataQualityScoreEnum
.
getAll
();
}
public
JSONArray
queryUscDate
()
{
return
UscDateEnum
.
getAll
();
}
public
JSONArray
queryTechParam
(
String
type
)
{
List
<
TechParamItem
>
paramMetaList
=
TechParamUtil
.
getParamMetaList
(
type
);
JSONArray
list
=
new
JSONArray
();
for
(
int
i
=
0
;
i
<
paramMetaList
.
size
();
i
++)
{
JSONObject
object
=
new
JSONObject
();
object
.
put
(
"key"
,
paramMetaList
.
get
(
i
).
getParamKey
());
object
.
put
(
"value"
,
paramMetaList
.
get
(
i
).
getParamKey
());
object
.
put
(
"label"
,
paramMetaList
.
get
(
i
).
getParamLabel
());
list
.
add
(
object
);
}
return
list
;
}
public
JSONArray
queryCertType
()
{
//证书类型
List
<
DictionarieValueModel
>
certType
=
Systemctl
.
dictionarieClient
.
dictValues
(
"CERT_TYPE"
).
getResult
();
JSONArray
certTypeArray
=
new
JSONArray
();
for
(
int
i
=
0
;
i
<
certType
.
size
();
i
++){
JSONObject
object
=
new
JSONObject
();
object
.
put
(
"key"
,
certType
.
get
(
i
).
getDictDataKey
());
object
.
put
(
"value"
,
certType
.
get
(
i
).
getDictDataKey
());
object
.
put
(
"label"
,
certType
.
get
(
i
).
getDictDataValue
());
certTypeArray
.
add
(
object
);
}
return
certTypeArray
;
}
public
JSONArray
queryPermissionLevel
()
{
//证书级别
List
<
DictionarieValueModel
>
RYJB_JC
=
Systemctl
.
dictionarieClient
.
dictValues
(
"RYJB_JC"
).
getResult
();
List
<
DictionarieValueModel
>
RYJB_JY
=
Systemctl
.
dictionarieClient
.
dictValues
(
"RYJB_JY"
).
getResult
();
JSONArray
permissionLevelArray
=
new
JSONArray
();
for
(
int
i
=
0
;
i
<
RYJB_JC
.
size
();
i
++){
JSONObject
object
=
new
JSONObject
();
object
.
put
(
"key"
,
RYJB_JC
.
get
(
i
).
getDictDataKey
());
object
.
put
(
"value"
,
RYJB_JC
.
get
(
i
).
getDictDataKey
());
object
.
put
(
"label"
,
RYJB_JC
.
get
(
i
).
getDictDataValue
());
permissionLevelArray
.
add
(
object
);
}
for
(
int
i
=
0
;
i
<
RYJB_JY
.
size
();
i
++){
JSONObject
object
=
new
JSONObject
();
object
.
put
(
"key"
,
RYJB_JY
.
get
(
i
).
getDictDataKey
());
object
.
put
(
"value"
,
RYJB_JY
.
get
(
i
).
getDictDataKey
());
object
.
put
(
"label"
,
RYJB_JY
.
get
(
i
).
getDictDataValue
());
permissionLevelArray
.
add
(
object
);
}
return
permissionLevelArray
;
}
}
\ 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