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
2cc5544b
Commit
2cc5544b
authored
Dec 30, 2024
by
麻笑宇
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/develop_tzs_bugfix' into develop_tzs_bugfix
parents
6ee83ea4
b6e667a3
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
190 additions
and
29 deletions
+190
-29
EquipInfoExcelDto.java
...eejoin/amos/boot/module/jg/api/dto/EquipInfoExcelDto.java
+8
-0
EquipmentInfoDto.java
...yeejoin/amos/boot/module/jg/api/dto/EquipmentInfoDto.java
+6
-0
JgUseRegistrationManageMapper.xml
...c/main/resources/mapper/JgUseRegistrationManageMapper.xml
+20
-10
DataHandlerController.java
.../boot/module/jg/biz/controller/DataHandlerController.java
+11
-0
IIdxBizJgSupervisionInfoService.java
...odule/jg/biz/service/IIdxBizJgSupervisionInfoService.java
+2
-1
DataDockServiceImpl.java
.../boot/module/jg/biz/service/impl/DataDockServiceImpl.java
+23
-16
DataHandlerServiceImpl.java
...ot/module/jg/biz/service/impl/DataHandlerServiceImpl.java
+60
-0
IdxBizJgRegisterInfoServiceImpl.java
.../jg/biz/service/impl/IdxBizJgRegisterInfoServiceImpl.java
+31
-0
JgUseRegistrationManageServiceImpl.java
.../biz/service/impl/JgUseRegistrationManageServiceImpl.java
+12
-1
JgUseRegistrationServiceImpl.java
...ule/jg/biz/service/impl/JgUseRegistrationServiceImpl.java
+5
-0
TzBaseEnterpriseInfoMapper.java
...oot/module/ymt/api/mapper/TzBaseEnterpriseInfoMapper.java
+8
-0
TzBaseEnterpriseInfoMapper.xml
.../src/main/resources/mapper/TzBaseEnterpriseInfoMapper.xml
+3
-0
GenerateCodeServiceImpl.java
.../module/ymt/biz/service/impl/GenerateCodeServiceImpl.java
+1
-1
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/dto/EquipInfoExcelDto.java
View file @
2cc5544b
...
@@ -21,6 +21,14 @@ public class EquipInfoExcelDto extends BaseDto {
...
@@ -21,6 +21,14 @@ public class EquipInfoExcelDto extends BaseDto {
@ExcelIgnore
@ExcelIgnore
private
static
final
long
serialVersionUID
=
1L
;
private
static
final
long
serialVersionUID
=
1L
;
@ExcelIgnore
@ApiModelProperty
(
"资料是否完整齐全:1-齐全;2-不齐全【历史无证设备需要】"
)
private
String
designIsComplete
;
@ExcelIgnore
@ApiModelProperty
(
"资料是否完整齐全:1-齐全;2-不齐全【历史无证设备需要】"
)
private
String
factoryIsComplete
;
//----------------------------------------------------------------------基本信息
//----------------------------------------------------------------------基本信息
@ApiModelProperty
(
value
=
"设备种类"
)
@ApiModelProperty
(
value
=
"设备种类"
)
...
...
amos-boot-system-tzs/amos-boot-module-jg/amos-boot-module-jg-api/src/main/java/com/yeejoin/amos/boot/module/jg/api/dto/EquipmentInfoDto.java
View file @
2cc5544b
...
@@ -23,4 +23,9 @@ public class EquipmentInfoDto {
...
@@ -23,4 +23,9 @@ public class EquipmentInfoDto {
private
String
receiveOrgCode
;
private
String
receiveOrgCode
;
private
String
receiveOrgName
;
private
String
receiveOrgName
;
private
String
possession
;
private
String
possession
;
/**
* 属地监管部门:orgCode_名称
*/
private
String
orgBranchCode
;
}
}
\ No newline at end of file
amos-boot-system-tzs/amos-boot-module-jg/amos-boot-module-jg-api/src/main/resources/mapper/JgUseRegistrationManageMapper.xml
View file @
2cc5544b
...
@@ -216,16 +216,26 @@
...
@@ -216,16 +216,26 @@
</select>
</select>
<select
id=
"initUseRegistrationCodeIntoRedis"
resultType=
"java.util.Map"
>
<select
id=
"initUseRegistrationCodeIntoRedis"
resultType=
"java.util.Map"
>
SELECT SUBSTR(t.use_registration_code, 1, 5) AS prefix,
SELECT
SUBSTR(MAX(t.use_registration_code), 6, 5) AS code
SUBSTR(t.use_registration_code, 1, 5) AS prefix,
FROM tzs_jg_use_registration_manage t
SUBSTR(MAX(t.use_registration_code), 6, 5) AS code
LEFT JOIN tzs_jg_use_registration tjur on tjur.use_registration_code = t.use_registration_code
FROM
WHERE LENGTH(t.use_registration_code) = 14
tzs_jg_use_registration_manage t
AND SUBSTR(t.use_registration_code, 1, 1) IN ('容', '锅', '管', '瓶', '梯', '起', '索', '游', '车')
LEFT JOIN
AND TRIM(t.use_registration_code) LIKE concat('%(',#{year},')')
tzs_jg_use_registration tjur
AND (tjur.reg_type IS NULL OR tjur.reg_type = '2' OR tjur.reg_type = '0')
ON tjur.use_registration_code = t.use_registration_code
AND tjur.is_delete = 0
AND (tjur.reg_type IS NULL OR tjur.reg_type = '2' OR tjur.reg_type = '0')
GROUP BY SUBSTR(t.use_registration_code, 1, 5)
AND tjur.is_delete = 0
LEFT JOIN
tzs_jg_vehicle_information v
ON v.use_registration_code = t.use_registration_code
and v.reg_type = '0'
WHERE
LENGTH(t.use_registration_code) = 14
AND SUBSTR(t.use_registration_code, 1, 1) IN ('容', '锅', '管', '瓶', '梯', '起', '索', '游', '车')
AND TRIM(t.use_registration_code) LIKE concat('%(',#{year},')')
GROUP BY
SUBSTR(t.use_registration_code, 1, 5)
HAVING code
<![CDATA[ <> ]]>
'00000'
HAVING code
<![CDATA[ <> ]]>
'00000'
ORDER BY prefix
ORDER BY prefix
</select>
</select>
...
...
amos-boot-system-tzs/amos-boot-module-jg/amos-boot-module-jg-biz/src/main/java/com/yeejoin/amos/boot/module/jg/biz/controller/DataHandlerController.java
View file @
2cc5544b
...
@@ -6,6 +6,7 @@ import com.yeejoin.amos.boot.module.jg.biz.service.impl.DataHandlerServiceImpl;
...
@@ -6,6 +6,7 @@ import com.yeejoin.amos.boot.module.jg.biz.service.impl.DataHandlerServiceImpl;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PutMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
org.springframework.web.bind.annotation.RestController
;
import
org.typroject.tyboot.core.foundation.enumeration.UserType
;
import
org.typroject.tyboot.core.foundation.enumeration.UserType
;
...
@@ -58,4 +59,14 @@ public class DataHandlerController extends BaseController {
...
@@ -58,4 +59,14 @@ public class DataHandlerController extends BaseController {
public
ResponseModel
<
Boolean
>
writeDataUseCodeIsNull2ProjectContraption
()
{
public
ResponseModel
<
Boolean
>
writeDataUseCodeIsNull2ProjectContraption
()
{
return
ResponseHelper
.
buildResponse
(
dataHandlerService
.
writeDataUseCodeIsNull2ProjectContraption
());
return
ResponseHelper
.
buildResponse
(
dataHandlerService
.
writeDataUseCodeIsNull2ProjectContraption
());
}
}
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@ApiOperation
(
value
=
"使用登记表属地监管部门历史数据处理"
,
notes
=
"supervisionOrgCode在history表json数据写入,气瓶导入页面无此字段,使用单位的属地监管部门写入"
)
@PutMapping
(
value
=
"/useRegistration/supervisionOrgCode"
)
public
ResponseModel
<
Boolean
>
writeSupervisionOrgCode2UseRegister
(){
dataHandlerService
.
writeSupervisionOrgCode2UseRegister
();
return
ResponseHelper
.
buildResponse
(
true
);
}
}
}
amos-boot-system-tzs/amos-boot-module-jg/amos-boot-module-jg-biz/src/main/java/com/yeejoin/amos/boot/module/jg/biz/service/IIdxBizJgSupervisionInfoService.java
View file @
2cc5544b
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jg
.
biz
.
service
;
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jg
.
biz
.
service
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.yeejoin.amos.boot.module.ymt.api.entity.IdxBizJgSupervisionInfo
;
import
com.yeejoin.amos.boot.module.ymt.api.entity.IdxBizJgSupervisionInfo
;
import
java.util.List
;
import
java.util.List
;
...
@@ -11,7 +12,7 @@ import java.util.List;
...
@@ -11,7 +12,7 @@ import java.util.List;
* @author system_generator
* @author system_generator
* @date 2023-08-17
* @date 2023-08-17
*/
*/
public
interface
IIdxBizJgSupervisionInfoService
{
public
interface
IIdxBizJgSupervisionInfoService
extends
IService
<
IdxBizJgSupervisionInfo
>
{
boolean
saveOrUpdateData
(
IdxBizJgSupervisionInfo
supervisionInfo
);
boolean
saveOrUpdateData
(
IdxBizJgSupervisionInfo
supervisionInfo
);
...
...
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/DataDockServiceImpl.java
View file @
2cc5544b
...
@@ -193,7 +193,6 @@ public class DataDockServiceImpl {
...
@@ -193,7 +193,6 @@ public class DataDockServiceImpl {
IdxBizJgDesignInfo
designInfo
=
JSON
.
parseObject
(
JSON
.
toJSONString
(
equ
),
IdxBizJgDesignInfo
.
class
);
IdxBizJgDesignInfo
designInfo
=
JSON
.
parseObject
(
JSON
.
toJSONString
(
equ
),
IdxBizJgDesignInfo
.
class
);
if
(!
ValidationUtil
.
isEmpty
(
designInfo
))
{
if
(!
ValidationUtil
.
isEmpty
(
designInfo
))
{
designInfo
.
setRecord
(
record
);
designInfo
.
setRecord
(
record
);
designInfo
.
setDesignIsComplete
(
"1"
);
designInfo
.
setRecDate
(
new
Date
());
designInfo
.
setRecDate
(
new
Date
());
idxBizJgDesignInfoService
.
save
(
designInfo
);
idxBizJgDesignInfoService
.
save
(
designInfo
);
}
}
...
@@ -210,7 +209,6 @@ public class DataDockServiceImpl {
...
@@ -210,7 +209,6 @@ public class DataDockServiceImpl {
if
(!
ValidationUtil
.
isEmpty
(
factoryInfo
))
{
if
(!
ValidationUtil
.
isEmpty
(
factoryInfo
))
{
factoryInfo
.
setRecord
(
record
);
factoryInfo
.
setRecord
(
record
);
factoryInfo
.
setRecDate
(
new
Date
());
factoryInfo
.
setRecDate
(
new
Date
());
factoryInfo
.
setFactoryIsComplete
(
"1"
);
idxBizJgFactoryInfoService
.
save
(
factoryInfo
);
idxBizJgFactoryInfoService
.
save
(
factoryInfo
);
}
}
}
}
...
@@ -786,25 +784,34 @@ public class DataDockServiceImpl {
...
@@ -786,25 +784,34 @@ public class DataDockServiceImpl {
checkNotBlank
(
data
.
getUseUnit
(),
"使用单位名称不能为空;"
,
rowError
);
checkNotBlank
(
data
.
getUseUnit
(),
"使用单位名称不能为空;"
,
rowError
);
// 设计信息 电梯、场车、起重机械无"设计信息"
// 设计信息 电梯、场车、起重机械无"设计信息"
if
(!
isDT
&&
!
isCC
&&
!
isQZJX
)
{
if
(!
isDT
&&
!
isCC
&&
!
isQZJX
)
{
checkNotBlank
(
data
.
getDesignUnitCreditCode
(),
"设计单位统一社会信用代码不能为空;"
,
rowError
);
if
(
ValidationUtil
.
isEmpty
(
data
.
getDesignUnitCreditCode
())
||
ValidationUtil
.
isEmpty
(
data
.
getDesignUnitName
())
||
ValidationUtil
.
isEmpty
(
data
.
getDesignUseDate
())
||
ValidationUtil
.
isEmpty
(
data
.
getDesignDate
()))
{
Optional
.
ofNullable
(
data
.
getDesignUnitCreditCode
()).
ifPresent
(
v
->
checkCreditCode
(
v
,
"设计单位统一社会信用代码格式不正确;"
,
rowError
));
data
.
setDesignIsComplete
(
"2"
);
checkNotBlank
(
data
.
getDesignUnitName
(),
"设计单位名称不能为空;"
,
rowError
);
}
else
{
if
(!
isYLGD
)
{
data
.
setDesignIsComplete
(
"1"
);
checkNotBlank
(
data
.
getDesignUseDate
(),
"设计使用年限不能为空;"
,
rowError
);
Optional
.
ofNullable
(
data
.
getDesignUseDate
()).
ifPresent
(
v
->
checkDateFormatNumber
(
v
,
"设计使用年限不能为数字以外的其他类型;"
,
rowError
));
checkNotBlank
(
data
.
getDesignUseDate
(),
"设计日期不能为空;"
,
rowError
);
Optional
.
ofNullable
(
data
.
getDesignDate
()).
ifPresent
(
v
->
checkDateFormatCorrect
(
v
,
"设计日期格式不正确;"
,
rowError
));
Optional
.
ofNullable
(
data
.
getAppraisalDate
()).
ifPresent
(
v
->
checkDateFormatCorrect
(
v
,
"设计文件鉴定日期格式不正确;"
,
rowError
));
}
}
// checkNotBlank(data.getDesignUnitCreditCode(), "设计单位统一社会信用代码不能为空;", rowError);
Optional
.
ofNullable
(
data
.
getDesignUnitCreditCode
()).
ifPresent
(
v
->
checkCreditCode
(
v
,
"设计单位统一社会信用代码格式不正确;"
,
rowError
));
// checkNotBlank(data.getDesignUnitName(), "设计单位名称不能为空;", rowError);
// checkNotBlank(data.getDesignUseDate(), "设计使用年限不能为空;", rowError);
Optional
.
ofNullable
(
data
.
getDesignUseDate
()).
ifPresent
(
v
->
checkDateFormatNumber
(
v
,
"设计使用年限不能为数字以外的其他类型;"
,
rowError
));
// checkNotBlank(data.getDesignDate(), "设计日期不能为空;", rowError);
Optional
.
ofNullable
(
data
.
getDesignDate
()).
ifPresent
(
v
->
checkDateFormatCorrect
(
v
,
"设计日期格式不正确;"
,
rowError
));
Optional
.
ofNullable
(
data
.
getAppraisalDate
()).
ifPresent
(
v
->
checkDateFormatCorrect
(
v
,
"设计文件鉴定日期格式不正确;"
,
rowError
));
}
}
// 制造信息
// 制造信息
if
(!
isYLGD
)
{
if
(!
isYLGD
)
{
checkNotBlank
(
data
.
getProduceUnitCreditCode
(),
"制造单位统一社会信用代码不能为空;"
,
rowError
);
if
(
ValidationUtil
.
isEmpty
(
data
.
getProduceUnitCreditCode
())
||
ValidationUtil
.
isEmpty
(
data
.
getProduceUnitName
())
||
ValidationUtil
.
isEmpty
(
data
.
getProduceLicenseNum
())
||
ValidationUtil
.
isEmpty
(
data
.
getFactoryNum
())
||
ValidationUtil
.
isEmpty
(
data
.
getProduceDate
()))
{
data
.
setFactoryIsComplete
(
"2"
);
}
else
{
data
.
setFactoryIsComplete
(
"1"
);
}
// checkNotBlank(data.getProduceUnitCreditCode(), "制造单位统一社会信用代码不能为空;", rowError);
Optional
.
ofNullable
(
data
.
getProduceUnitCreditCode
()).
ifPresent
(
v
->
checkCreditCode
(
v
,
"制造单位统一社会信用代码格式不正确;"
,
rowError
));
Optional
.
ofNullable
(
data
.
getProduceUnitCreditCode
()).
ifPresent
(
v
->
checkCreditCode
(
v
,
"制造单位统一社会信用代码格式不正确;"
,
rowError
));
checkNotBlank
(
data
.
getProduceUnitName
(),
"制造单位名称不能为空;"
,
rowError
);
//
checkNotBlank(data.getProduceUnitName(), "制造单位名称不能为空;", rowError);
checkNotBlank
(
data
.
getProduceLicenseNum
(),
"制造许可编号不能为空;"
,
rowError
);
//
checkNotBlank(data.getProduceLicenseNum(), "制造许可编号不能为空;", rowError);
checkNotBlank
(
data
.
getFactoryNum
(),
"出厂编号/产品编码不能为空;"
,
rowError
);
//
checkNotBlank(data.getFactoryNum(), "出厂编号/产品编码不能为空;", rowError);
checkNotBlank
(
data
.
getProduceDate
(),
"制造日期不能为空;"
,
rowError
);
//
checkNotBlank(data.getProduceDate(), "制造日期不能为空;", rowError);
Optional
.
ofNullable
(
data
.
getProduceDate
()).
ifPresent
(
v
->
checkDateFormatCorrect
(
v
,
"制造日期格式不正确;"
,
rowError
));
Optional
.
ofNullable
(
data
.
getProduceDate
()).
ifPresent
(
v
->
checkDateFormatCorrect
(
v
,
"制造日期格式不正确;"
,
rowError
));
}
}
}
}
...
...
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/DataHandlerServiceImpl.java
View file @
2cc5544b
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jg
.
biz
.
service
.
impl
;
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jg
.
biz
.
service
.
impl
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSON
;
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.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper
;
import
com.fasterxml.jackson.core.type.TypeReference
;
import
com.fasterxml.jackson.core.type.TypeReference
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
com.yeejoin.amos.boot.biz.common.entity.BaseEntity
;
import
com.yeejoin.amos.boot.biz.common.utils.SnowflakeIdUtil
;
import
com.yeejoin.amos.boot.biz.common.utils.SnowflakeIdUtil
;
import
com.yeejoin.amos.boot.module.common.api.dao.ESEquipmentCategory
;
import
com.yeejoin.amos.boot.module.common.api.dao.ESEquipmentCategory
;
import
com.yeejoin.amos.boot.module.common.api.dto.ESEquipmentCategoryDto
;
import
com.yeejoin.amos.boot.module.common.api.dto.ESEquipmentCategoryDto
;
...
@@ -12,8 +15,11 @@ import com.yeejoin.amos.boot.module.jg.api.entity.*;
...
@@ -12,8 +15,11 @@ import com.yeejoin.amos.boot.module.jg.api.entity.*;
import
com.yeejoin.amos.boot.module.jg.api.enums.PipelineEnum
;
import
com.yeejoin.amos.boot.module.jg.api.enums.PipelineEnum
;
import
com.yeejoin.amos.boot.module.ymt.api.entity.*
;
import
com.yeejoin.amos.boot.module.ymt.api.entity.*
;
import
com.yeejoin.amos.boot.module.ymt.api.enums.FlowStatusEnum
;
import
com.yeejoin.amos.boot.module.ymt.api.enums.FlowStatusEnum
;
import
com.yeejoin.amos.boot.module.ymt.api.mapper.BaseUnitLicenceMapper
;
import
com.yeejoin.amos.boot.module.ymt.api.mapper.EquipmentCategoryMapper
;
import
com.yeejoin.amos.boot.module.ymt.api.mapper.EquipmentCategoryMapper
;
import
com.yeejoin.amos.boot.module.ymt.api.mapper.TzBaseEnterpriseInfoMapper
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.util.ObjectUtils
;
import
org.springframework.util.ObjectUtils
;
...
@@ -22,6 +28,7 @@ import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
...
@@ -22,6 +28,7 @@ import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import
javax.annotation.Resource
;
import
javax.annotation.Resource
;
import
java.util.*
;
import
java.util.*
;
import
java.util.concurrent.ConcurrentHashMap
;
import
java.util.concurrent.atomic.AtomicReference
;
import
java.util.concurrent.atomic.AtomicReference
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
...
@@ -77,6 +84,11 @@ public class DataHandlerServiceImpl {
...
@@ -77,6 +84,11 @@ public class DataHandlerServiceImpl {
@Resource
@Resource
private
ESEquipmentCategory
esEquipmentCategory
;
private
ESEquipmentCategory
esEquipmentCategory
;
@Resource
TzBaseEnterpriseInfoMapper
tzBaseEnterpriseInfoMapper
;
@Autowired
private
BaseUnitLicenceMapper
baseUnitLicenceMapper
;
/**
/**
* 安装告知压力管道历史数据修复-详情中的设备列表修改为汇总表格式
* 安装告知压力管道历史数据修复-详情中的设备列表修改为汇总表格式
...
@@ -462,4 +474,52 @@ public class DataHandlerServiceImpl {
...
@@ -462,4 +474,52 @@ public class DataHandlerServiceImpl {
}
}
return
Boolean
.
TRUE
;
return
Boolean
.
TRUE
;
}
}
public
void
writeSupervisionOrgCode2UseRegister
()
{
// 使用历史表补充属地监管部门字段
filledDataFromHistory
();
// 查询历史登记且单位办理的数据进行刷库(历史气瓶导入,manage_type=unit and reg_type=1)
filledHisRegCylinderByUnit
();
}
private
void
filledHisRegCylinderByUnit
()
{
List
<
JgUseRegistration
>
useRegistrations
=
useRegistrationService
.
list
(
new
LambdaQueryWrapper
<
JgUseRegistration
>()
.
isNull
(
JgUseRegistration:
:
getSupervisionOrgCode
).
eq
(
JgUseRegistration:
:
getManageType
,
"unit"
).
eq
(
JgUseRegistration:
:
getRegType
,
"1"
).
select
(
BaseEntity:
:
getSequenceNbr
,
JgUseRegistration:
:
getUseUnitCreditCode
));
Map
<
String
,
String
>
unitSuperOrgCodeMap
=
new
ConcurrentHashMap
<>();
useRegistrations
.
parallelStream
().
forEach
(
u
->{
LambdaUpdateWrapper
<
JgUseRegistration
>
updateWrapper
=
new
LambdaUpdateWrapper
<>();
updateWrapper
.
eq
(
JgUseRegistration:
:
getSequenceNbr
,
u
.
getSequenceNbr
());
if
(
unitSuperOrgCodeMap
.
get
(
u
.
getUseUnitCreditCode
())
!=
null
){
updateWrapper
.
set
(
JgUseRegistration:
:
getSupervisionOrgCode
,
unitSuperOrgCodeMap
.
get
(
u
.
getUseUnitCreditCode
()));
}
else
{
TzBaseEnterpriseInfo
baseEnterpriseInfo
=
tzBaseEnterpriseInfoMapper
.
selectByUseUnitCode
(
u
.
getUseUnitCreditCode
());
if
(
baseEnterpriseInfo
!=
null
){
unitSuperOrgCodeMap
.
put
(
u
.
getUseUnitCreditCode
(),
baseEnterpriseInfo
.
getSuperviseOrgCode
());
updateWrapper
.
set
(
JgUseRegistration:
:
getSupervisionOrgCode
,
baseEnterpriseInfo
.
getSuperviseOrgCode
());
}
else
{
updateWrapper
.
set
(
JgUseRegistration:
:
getSupervisionOrgCode
,
null
);
}
}
useRegistrationService
.
update
(
null
,
updateWrapper
);
});
}
private
void
filledDataFromHistory
()
{
List
<
JgUseRegistration
>
useRegistrations
=
useRegistrationService
.
list
(
new
LambdaQueryWrapper
<
JgUseRegistration
>().
isNull
(
JgUseRegistration:
:
getSupervisionOrgCode
).
select
(
BaseEntity:
:
getSequenceNbr
));
useRegistrations
.
parallelStream
().
forEach
(
u
->{
JgRegistrationHistory
history
=
getRegistrationHistory
(
u
.
getSequenceNbr
()
+
""
);
if
(
history
!=
null
)
{
JSONObject
jsonObject
=
JSON
.
parseObject
(
history
.
getChangeData
());
String
orgBranchCodeWithName
=
jsonObject
.
getString
(
"orgBranchCode"
);
if
(
orgBranchCodeWithName
!=
null
&&
!
orgBranchCodeWithName
.
isEmpty
())
{
u
.
setSupervisionOrgCode
(
orgBranchCodeWithName
.
split
(
"_"
)[
0
]);
LambdaUpdateWrapper
<
JgUseRegistration
>
updateWrapper
=
new
LambdaUpdateWrapper
<>();
updateWrapper
.
set
(
JgUseRegistration:
:
getSupervisionOrgCode
,
u
.
getSupervisionOrgCode
());
updateWrapper
.
eq
(
JgUseRegistration:
:
getSequenceNbr
,
u
.
getSequenceNbr
());
useRegistrationService
.
update
(
null
,
updateWrapper
);
}
}
});
}
}
}
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/IdxBizJgRegisterInfoServiceImpl.java
View file @
2cc5544b
...
@@ -3674,6 +3674,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
...
@@ -3674,6 +3674,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
List
<
ESEquipmentCategoryDto
>
esEquipmentCategoryList
=
new
ArrayList
<>();
List
<
ESEquipmentCategoryDto
>
esEquipmentCategoryList
=
new
ArrayList
<>();
List
<
JgUseRegistrationEq
>
jgRelationEquipList
=
new
ArrayList
<>();
List
<
JgUseRegistrationEq
>
jgRelationEquipList
=
new
ArrayList
<>();
List
<
Map
<
String
,
Object
>>
equipmentLists
=
new
ArrayList
<>();
List
<
Map
<
String
,
Object
>>
equipmentLists
=
new
ArrayList
<>();
List
<
IdxBizJgSupervisionInfo
>
supervisionInfoList
=
new
ArrayList
<>();
if
(
paramMap
==
null
)
{
if
(
paramMap
==
null
)
{
throw
new
IllegalArgumentException
(
"参数Map不能为空"
);
throw
new
IllegalArgumentException
(
"参数Map不能为空"
);
...
@@ -3684,6 +3685,17 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
...
@@ -3684,6 +3685,17 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
// 登记证记录表主键
// 登记证记录表主键
Long
changeRecordId
=
sequence
.
nextId
();
Long
changeRecordId
=
sequence
.
nextId
();
List
<
EquipInfoCylinderExcelDto
>
equipInfoCylinderExcelDtoList
=
JSON
.
parseArray
(
JSON
.
toJSONString
(
attachmentUpload
.
get
(
EQU_LISTS
)),
EquipInfoCylinderExcelDto
.
class
);
List
<
EquipInfoCylinderExcelDto
>
equipInfoCylinderExcelDtoList
=
JSON
.
parseArray
(
JSON
.
toJSONString
(
attachmentUpload
.
get
(
EQU_LISTS
)),
EquipInfoCylinderExcelDto
.
class
);
// 属地监管部门
String
orgBranchCode
;
String
orgBranchName
;
if
(
equipInfoDto
.
getOrgBranchCode
()
!=
null
){
String
[]
splitOrgBranchCode
=
equipInfoDto
.
getOrgBranchCode
().
split
(
"_"
);
orgBranchCode
=
splitOrgBranchCode
.
length
>
1
?
splitOrgBranchCode
[
0
]
:
""
;
orgBranchName
=
splitOrgBranchCode
.
length
>
1
?
splitOrgBranchCode
[
1
]
:
""
;
}
else
{
orgBranchName
=
""
;
orgBranchCode
=
""
;
}
equipInfoCylinderExcelDtoList
.
forEach
(
data
->
{
equipInfoCylinderExcelDtoList
.
forEach
(
data
->
{
JgUseRegistrationEq
jgRelationEquip
=
new
JgUseRegistrationEq
();
JgUseRegistrationEq
jgRelationEquip
=
new
JgUseRegistrationEq
();
if
(
"his"
.
equals
(
equipInfoDto
.
getDataSource
())
&&
"1"
.
equals
(
data
.
getWhetherVehicleCylinder
()))
{
if
(
"his"
.
equals
(
equipInfoDto
.
getDataSource
())
&&
"1"
.
equals
(
data
.
getWhetherVehicleCylinder
()))
{
...
@@ -3808,6 +3820,9 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
...
@@ -3808,6 +3820,9 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
otherInfo
.
setClaimStatus
(
"已认领"
);
otherInfo
.
setClaimStatus
(
"已认领"
);
otherInfoList
.
add
(
otherInfo
);
otherInfoList
.
add
(
otherInfo
);
//监督管理信息
setSupervisionInfo
(
orgBranchCode
,
orgBranchName
,
record
,
supervisionInfoList
);
// 技术参数
// 技术参数
List
<
DictionarieValueModel
>
fillingMedium
=
Systemctl
.
dictionarieClient
.
dictValues
(
"FILLING_MEDIUM"
).
getResult
();
List
<
DictionarieValueModel
>
fillingMedium
=
Systemctl
.
dictionarieClient
.
dictValues
(
"FILLING_MEDIUM"
).
getResult
();
Map
<
String
,
Object
>
fillingMediumMap
=
fillingMedium
.
stream
().
collect
(
Collectors
.
toMap
(
DictionarieValueModel:
:
getDictDataValue
,
Map
<
String
,
Object
>
fillingMediumMap
=
fillingMedium
.
stream
().
collect
(
Collectors
.
toMap
(
DictionarieValueModel:
:
getDictDataValue
,
...
@@ -3837,6 +3852,8 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
...
@@ -3837,6 +3852,8 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
esEquipmentDto
.
setEQU_LIST
(
equipInfoDto
.
getEquList
());
esEquipmentDto
.
setEQU_LIST
(
equipInfoDto
.
getEquList
());
esEquipmentDto
.
setEQU_DEFINE_CODE
(
equipInfoDto
.
getEquDefineCode
());
esEquipmentDto
.
setEQU_DEFINE_CODE
(
equipInfoDto
.
getEquDefineCode
());
esEquipmentDto
.
setSUPERVISORY_CODE
(
otherInfo
.
getSupervisoryCode
());
esEquipmentDto
.
setSUPERVISORY_CODE
(
otherInfo
.
getSupervisoryCode
());
esEquipmentDto
.
setORG_BRANCH_CODE
(
orgBranchCode
);
esEquipmentDto
.
setORG_BRANCH_NAME
(
orgBranchName
);
esEquipmentDto
.
setEQU_DEFINE
(
equipInfoDto
.
getEquDefine
());
esEquipmentDto
.
setEQU_DEFINE
(
equipInfoDto
.
getEquDefine
());
esEquipmentDto
.
setINFORMATION_SITUATION
(
otherInfo
.
getInformationSituation
());
esEquipmentDto
.
setINFORMATION_SITUATION
(
otherInfo
.
getInformationSituation
());
esEquipmentDto
.
setSTATUS
(
"已认领"
);
esEquipmentDto
.
setSTATUS
(
"已认领"
);
...
@@ -3942,6 +3959,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
...
@@ -3942,6 +3959,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
jgUseRegistration
.
setStatus
(
FlowStatusEnum
.
TO_BE_FINISHED
.
getName
());
jgUseRegistration
.
setStatus
(
FlowStatusEnum
.
TO_BE_FINISHED
.
getName
());
jgUseRegistration
.
setUseRegistrationCode
(
jgUseRegistrationManage
.
getUseRegistrationCode
());
jgUseRegistration
.
setUseRegistrationCode
(
jgUseRegistrationManage
.
getUseRegistrationCode
());
jgUseRegistration
.
setRegType
(
"1"
);
//历史登记
jgUseRegistration
.
setRegType
(
"1"
);
//历史登记
jgUseRegistration
.
setSupervisionOrgCode
(
orgBranchCode
);
jgUseRegistrationService
.
save
(
jgUseRegistration
);
jgUseRegistrationService
.
save
(
jgUseRegistration
);
jgRelationEquipMapper
.
batchInsert
(
String
.
valueOf
(
jgUseRegistration
.
getSequenceNbr
()),
jgRelationEquipList
);
jgRelationEquipMapper
.
batchInsert
(
String
.
valueOf
(
jgUseRegistration
.
getSequenceNbr
()),
jgRelationEquipList
);
...
@@ -3949,9 +3967,11 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
...
@@ -3949,9 +3967,11 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
BeanUtil
.
beanToMap
(
jgUseRegistration
,
objectHashMap
,
false
,
false
);
BeanUtil
.
beanToMap
(
jgUseRegistration
,
objectHashMap
,
false
,
false
);
objectHashMap
.
put
(
"equipmentLists"
,
equipmentLists
);
objectHashMap
.
put
(
"equipmentLists"
,
equipmentLists
);
objectHashMap
.
put
(
"EQU_CATEGORY_CODE"
,
equipInfoDto
.
getEquCategoryCode
());
objectHashMap
.
put
(
"EQU_CATEGORY_CODE"
,
equipInfoDto
.
getEquCategoryCode
());
objectHashMap
.
put
(
"orgBranchCode"
,
equipInfoDto
.
getOrgBranchCode
());
updateHistory
(
objectHashMap
,
String
.
valueOf
(
jgUseRegistration
.
getSequenceNbr
()));
updateHistory
(
objectHashMap
,
String
.
valueOf
(
jgUseRegistration
.
getSequenceNbr
()));
}
}
Optional
.
of
(
supervisionInfoList
).
filter
(
list
->
!
list
.
isEmpty
()).
ifPresent
(
iIdxBizJgSupervisionInfoService:
:
saveBatch
);
Optional
.
of
(
useInfoList
).
filter
(
list
->
!
list
.
isEmpty
()).
ifPresent
(
idxBizJgUseInfoService:
:
saveBatch
);
Optional
.
of
(
useInfoList
).
filter
(
list
->
!
list
.
isEmpty
()).
ifPresent
(
idxBizJgUseInfoService:
:
saveBatch
);
Optional
.
of
(
designInfoList
).
filter
(
list
->
!
list
.
isEmpty
()).
ifPresent
(
idxBizJgDesignInfoService:
:
saveBatch
);
Optional
.
of
(
designInfoList
).
filter
(
list
->
!
list
.
isEmpty
()).
ifPresent
(
idxBizJgDesignInfoService:
:
saveBatch
);
Optional
.
of
(
registerInfoList
).
filter
(
list
->
!
list
.
isEmpty
()).
ifPresent
(
idxBizJgRegisterInfoService:
:
saveBatch
);
Optional
.
of
(
registerInfoList
).
filter
(
list
->
!
list
.
isEmpty
()).
ifPresent
(
idxBizJgRegisterInfoService:
:
saveBatch
);
...
@@ -3963,6 +3983,16 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
...
@@ -3963,6 +3983,16 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
return
String
.
format
(
"导入完成,成功导入: %d 条数据!"
,
useInfoList
.
size
());
return
String
.
format
(
"导入完成,成功导入: %d 条数据!"
,
useInfoList
.
size
());
}
}
private
static
void
setSupervisionInfo
(
String
orgBranchCode
,
String
orgBranchName
,
String
record
,
List
<
IdxBizJgSupervisionInfo
>
supervisionInfoList
)
{
IdxBizJgSupervisionInfo
supervisionInfo
=
new
IdxBizJgSupervisionInfo
();
supervisionInfo
.
setOrgBranchCode
(
orgBranchCode
);
supervisionInfo
.
setOrgBranchName
(
orgBranchName
);
supervisionInfo
.
setRecord
(
record
);
supervisionInfo
.
setRecDate
(
new
Date
());
supervisionInfo
.
setRecUserId
(
RequestContext
.
getExeUserId
());
supervisionInfoList
.
add
(
supervisionInfo
);
}
/**
/**
* 使用登记证编号判断是否使用未来系统生成编号
* 使用登记证编号判断是否使用未来系统生成编号
* @param useRegistrationCode 使用登记证编号
* @param useRegistrationCode 使用登记证编号
...
@@ -4066,6 +4096,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
...
@@ -4066,6 +4096,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
if
(
"his"
.
equals
(
equipmentInfoForm
.
get
(
"DATA_SOURCE"
)))
{
if
(
"his"
.
equals
(
equipmentInfoForm
.
get
(
"DATA_SOURCE"
)))
{
dto
.
setReceiveOrgCode
(((
String
)
equipmentInfoForm
.
get
(
"RECEIVE_ORG_CODE"
)).
split
(
"_"
)[
0
]);
dto
.
setReceiveOrgCode
(((
String
)
equipmentInfoForm
.
get
(
"RECEIVE_ORG_CODE"
)).
split
(
"_"
)[
0
]);
dto
.
setReceiveOrgName
(((
String
)
equipmentInfoForm
.
get
(
"RECEIVE_ORG_CODE"
)).
split
(
"_"
)[
1
]);
dto
.
setReceiveOrgName
(((
String
)
equipmentInfoForm
.
get
(
"RECEIVE_ORG_CODE"
)).
split
(
"_"
)[
1
]);
dto
.
setOrgBranchCode
(
equipmentInfoForm
.
getOrDefault
(
"orgBranchCode"
,
""
).
toString
());
}
}
dto
.
setPossession
((
String
)
equipmentInfoForm
.
get
(
"VEHICLE_APANAGE"
));
dto
.
setPossession
((
String
)
equipmentInfoForm
.
get
(
"VEHICLE_APANAGE"
));
return
dto
;
return
dto
;
...
...
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/JgUseRegistrationManageServiceImpl.java
View file @
2cc5544b
...
@@ -774,11 +774,22 @@ public class JgUseRegistrationManageServiceImpl extends BaseService<JgUseRegistr
...
@@ -774,11 +774,22 @@ public class JgUseRegistrationManageServiceImpl extends BaseService<JgUseRegistr
jgUseRegistrationManageMapper
.
initUseRegistrationCodeIntoRedis
(
currentYearSuffix
)
jgUseRegistrationManageMapper
.
initUseRegistrationCodeIntoRedis
(
currentYearSuffix
)
.
forEach
(
resultMap
->
.
forEach
(
resultMap
->
Optional
.
ofNullable
(
resultMap
)
Optional
.
ofNullable
(
resultMap
)
.
ifPresent
(
map
->
setValueWith
Expiration
(
map
.
get
(
"prefix"
),
map
.
get
(
"code"
),
endOfYear
))
.
ifPresent
(
map
->
setValueWith
outExpiration
(
map
.
get
(
"prefix"
),
map
.
get
(
"code"
)
))
);
);
}
}
/**
/**
* redis 设置不过期的 key
*
* @param key key
* @param value value
*/
public
void
setValueWithoutExpiration
(
String
key
,
String
value
)
{
ValueOperations
<
String
,
String
>
valueOps
=
redisTemplate
.
opsForValue
();
valueOps
.
set
(
key
,
value
);
}
/**
* redis设置key
* redis设置key
*
*
* @param key key
* @param key key
...
...
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/JgUseRegistrationServiceImpl.java
View file @
2cc5544b
...
@@ -807,6 +807,11 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
...
@@ -807,6 +807,11 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
if
(!
ObjectUtils
.
isEmpty
(
map
.
get
(
"otherAccessories"
)))
{
if
(!
ObjectUtils
.
isEmpty
(
map
.
get
(
"otherAccessories"
)))
{
useRegistration
.
setOtherAccessories
(
JSONObject
.
toJSONString
(
map
.
get
(
"otherAccessories"
)));
useRegistration
.
setOtherAccessories
(
JSONObject
.
toJSONString
(
map
.
get
(
"otherAccessories"
)));
}
}
if
(
map
.
containsKey
(
"orgBranchCode"
))
{
// 监察处置机构代码
String
[]
splitOrgBranchCode
=
String
.
valueOf
(
map
.
getString
(
"orgBranchCode"
)).
split
(
"_"
);
useRegistration
.
setSupervisionOrgCode
(
splitOrgBranchCode
[
0
]);
}
// 使用地点
// 使用地点
Map
<
String
,
List
<
LinkedHashMap
>>
locationMap
=
MapBuilder
.<
String
,
List
<
LinkedHashMap
>>
create
()
Map
<
String
,
List
<
LinkedHashMap
>>
locationMap
=
MapBuilder
.<
String
,
List
<
LinkedHashMap
>>
create
()
...
...
amos-boot-system-tzs/amos-boot-module-ymt/amos-boot-module-ymt-api/src/main/java/com/yeejoin/amos/boot/module/ymt/api/mapper/TzBaseEnterpriseInfoMapper.java
View file @
2cc5544b
...
@@ -96,4 +96,12 @@ public interface TzBaseEnterpriseInfoMapper extends BaseMapper<TzBaseEnterpriseI
...
@@ -96,4 +96,12 @@ public interface TzBaseEnterpriseInfoMapper extends BaseMapper<TzBaseEnterpriseI
List
<
TzBaseEnterpriseInfoDto
>
queryByUseCode
(
@Param
(
"useCodes"
)
List
<
String
>
useCode
);
List
<
TzBaseEnterpriseInfoDto
>
queryByUseCode
(
@Param
(
"useCodes"
)
List
<
String
>
useCode
);
List
<
TzBaseEnterpriseInfoDto
>
selectExpiringUnits
(
@Param
(
"operator"
)
String
operator
);
List
<
TzBaseEnterpriseInfoDto
>
selectExpiringUnits
(
@Param
(
"operator"
)
String
operator
);
/**
* 根据企业信用代码查询企业
*
* @param useUnitCode 企业信用代码
* @return TzBaseEnterpriseInfo
*/
TzBaseEnterpriseInfo
selectByUseUnitCode
(
String
useUnitCode
);
}
}
amos-boot-system-tzs/amos-boot-module-ymt/amos-boot-module-ymt-api/src/main/resources/mapper/TzBaseEnterpriseInfoMapper.xml
View file @
2cc5544b
...
@@ -339,4 +339,7 @@
...
@@ -339,4 +339,7 @@
AND tbul.expiry_date ${operator} CURRENT_DATE
AND tbul.expiry_date ${operator} CURRENT_DATE
</if>
</if>
</select>
</select>
<select
id=
"selectByUseUnitCode"
resultType=
"com.yeejoin.amos.boot.module.ymt.api.entity.TzBaseEnterpriseInfo"
>
select * from tz_base_enterprise_info where use_unit_code = #{useUnitCode}
</select>
</mapper>
</mapper>
amos-boot-system-tzs/amos-boot-module-ymt/amos-boot-module-ymt-biz/src/main/java/com/yeejoin/amos/boot/module/ymt/biz/service/impl/GenerateCodeServiceImpl.java
View file @
2cc5544b
...
@@ -249,7 +249,7 @@ public class GenerateCodeServiceImpl implements IGenerateCodeService {
...
@@ -249,7 +249,7 @@ public class GenerateCodeServiceImpl implements IGenerateCodeService {
if
(
lockKey
.
equals
(
LOCK_KEY_DR
))
{
if
(
lockKey
.
equals
(
LOCK_KEY_DR
))
{
setValueWithMonthlyExpiration
(
sequenceKey
,
String
.
valueOf
(
formattedSequence
));
setValueWithMonthlyExpiration
(
sequenceKey
,
String
.
valueOf
(
formattedSequence
));
}
else
{
}
else
{
setValueWith
Yearly
Expiration
(
sequenceKey
,
String
.
valueOf
(
formattedSequence
));
setValueWith
out
Expiration
(
sequenceKey
,
String
.
valueOf
(
formattedSequence
));
}
}
String
generatedSequence
=
sequenceKey
+
formattedSequence
;
String
generatedSequence
=
sequenceKey
+
formattedSequence
;
...
...
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