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
6eb5eaef
Commit
6eb5eaef
authored
Aug 11, 2021
by
chenhao
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
提交代码,关于acvtivty的设置
parent
e7579f09
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
262 additions
and
83 deletions
+262
-83
RemoteWorkFlowService.java
.../amos/boot/biz/common/workflow/RemoteWorkFlowService.java
+0
-0
HttpUtil.java
...amos/boot/biz/common/workflow/business/util/HttpUtil.java
+0
-0
XJConstant.java
...n/amos/boot/biz/common/workflow/constants/XJConstant.java
+0
-0
WorkFlowUriEnum.java
.../amos/boot/biz/common/workflow/enums/WorkFlowUriEnum.java
+58
-0
YesOrNoEnum.java
...join/amos/boot/biz/common/workflow/enums/YesOrNoEnum.java
+56
-0
FailureAuditDto.java
...join/amos/boot/module/common/api/dto/FailureAuditDto.java
+8
-0
FailureMaintainDto.java
...n/amos/boot/module/common/api/dto/FailureMaintainDto.java
+3
-0
FailureAudit.java
...join/amos/boot/module/common/api/entity/FailureAudit.java
+5
-0
IFailureAuditService.java
.../boot/module/common/api/service/IFailureAuditService.java
+2
-1
FailureAuditController.java
.../module/common/biz/controller/FailureAuditController.java
+3
-0
FailureDetailsController.java
...odule/common/biz/controller/FailureDetailsController.java
+41
-32
FailureMaintainController.java
...dule/common/biz/controller/FailureMaintainController.java
+14
-1
FailureAuditServiceImpl.java
...dule/common/biz/service/impl/FailureAuditServiceImpl.java
+62
-49
FailureDetailsServiceImpl.java
...le/common/biz/service/impl/FailureDetailsServiceImpl.java
+0
-0
FailureMaintainServiceImpl.java
...e/common/biz/service/impl/FailureMaintainServiceImpl.java
+10
-0
No files found.
amos-boot-biz-common/src/main/java/com/yeejoin/amos/boot/biz/common/workflow/RemoteWorkFlowService.java
0 → 100644
View file @
6eb5eaef
This diff is collapsed.
Click to expand it.
amos-boot-biz-common/src/main/java/com/yeejoin/amos/boot/biz/common/workflow/business/util/HttpUtil.java
0 → 100644
View file @
6eb5eaef
This diff is collapsed.
Click to expand it.
amos-boot-biz-common/src/main/java/com/yeejoin/amos/boot/biz/common/workflow/constants/XJConstant.java
0 → 100644
View file @
6eb5eaef
This diff is collapsed.
Click to expand it.
amos-boot-biz-common/src/main/java/com/yeejoin/amos/boot/biz/common/workflow/enums/WorkFlowUriEnum.java
0 → 100644
View file @
6eb5eaef
package
com
.
yeejoin
.
amos
.
boot
.
biz
.
common
.
workflow
.
enums
;
public
enum
WorkFlowUriEnum
{
启动流程
(
"启动流程"
,
"/workflow/task/startTask"
,
""
),
流程详情
(
"流程详情"
,
"/workflow/task/{taskId}"
,
"taskId"
),
合并启动流程
(
"合并启动流程"
,
"/workflow/task/startProcess"
,
""
),
所有已执行任务详情
(
"所有已执行任务详情"
,
"/workflow/activitiHistory/task/detail/{taskId}"
,
"taskId"
),
流程任务
(
"流程任务"
,
"/workflow/task?processInstanceId={processInstanceId}"
,
"processInstanceId"
),
我的代办
(
"我的代办"
,
"/workflow/task/all-list?processDefinitionKey={processDefinitionKey}"
,
"processDefinitionKey"
),
我的代办有
ID
(
"我的代办有ID"
,
"/workflow/task/all-list?processDefinitionKey={processDefinitionKey}&userId={userId}"
,
"processDefinitionKey,userId"
),
已执行任务
(
"已执行任务"
,
"/workflow/activitiHistory/all-historytasks?processDefinitionKey={processDefinitionKey}"
,
"processDefinitionKey"
),
已执行任务有
ID
(
"已执行任务有ID"
,
"/workflow/activitiHistory/all-historytasks?processDefinitionKey={processDefinitionKey}&userId={userId}"
,
"processDefinitionKey,userId"
),
启动免登录流程
(
"启动免登录流程"
,
"/processes/{appKey}"
,
"appKey"
),
当前节点
(
"当前节点"
,
"/wf/taskstodo?processInstanceId={processInstanceId}"
,
"processInstanceId"
),
执行流程
(
"执行流程"
,
"/workflow/task/pickupAndCompleteTask/{taskId}"
,
"taskId"
),
终止流程
(
"终止流程"
,
"/wf/processes/{processInstanceId}?deleteReason={deleteReason}"
,
"processInstanceId,deleteReason"
),
当前子节点
(
"当前子节点"
,
"/wf/processes/{processInstanceId}/tasks?taskDefinitionKey={taskDefinitionKey}"
,
"processInstanceId,taskDefinitionKey"
),
工作流流水
(
"工作流流水"
,
"/wf/processes/{processInstanceId}/tasks"
,
"processInstanceId"
),
子节点信息
(
"子节点信息"
,
"/workflow/task/list/all/{instanceId}"
,
"instanceId"
),
所有已执行任务集合
(
"所有已执行任务集合"
,
"/workflow/activitiHistory/tasks/{processInstanceId}"
,
"processInstanceId"
);
private
String
desc
;
private
String
uri
;
private
String
params
;
WorkFlowUriEnum
(
String
desc
,
String
uri
,
String
params
)
{
this
.
desc
=
desc
;
this
.
uri
=
uri
;
this
.
params
=
params
;
}
public
String
getDesc
()
{
return
desc
;
}
public
void
setDesc
(
String
desc
)
{
this
.
desc
=
desc
;
}
public
String
getUri
()
{
return
uri
;
}
public
void
setUri
(
String
uri
)
{
this
.
uri
=
uri
;
}
public
String
getParams
()
{
return
params
;
}
public
void
setParams
(
String
params
)
{
this
.
params
=
params
;
}
}
amos-boot-biz-common/src/main/java/com/yeejoin/amos/boot/biz/common/workflow/enums/YesOrNoEnum.java
0 → 100644
View file @
6eb5eaef
package
com
.
yeejoin
.
amos
.
boot
.
biz
.
common
.
workflow
.
enums
;
/**
* 是否枚举
* @author WJK
*
*/
public
enum
YesOrNoEnum
{
NO
(
"否"
,
"0"
),
YES
(
"是"
,
"1"
);
/**
* 名称,描述
*/
private
String
name
;
/**
* 编码
*/
private
String
code
;
private
YesOrNoEnum
(
String
name
,
String
code
){
this
.
name
=
name
;
this
.
code
=
code
;
}
public
static
YesOrNoEnum
getEnum
(
String
code
)
{
YesOrNoEnum
jPushTypeEnum
=
null
;
for
(
YesOrNoEnum
type:
YesOrNoEnum
.
values
())
{
if
(
type
.
getCode
().
equals
(
code
))
{
jPushTypeEnum
=
type
;
break
;
}
}
return
jPushTypeEnum
;
}
public
String
getName
()
{
return
name
;
}
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
public
String
getCode
()
{
return
code
;
}
public
void
setCode
(
String
code
)
{
this
.
code
=
code
;
}
}
amos-boot-module/amos-boot-module-api/amos-boot-module-common-api/src/main/java/com/yeejoin/amos/boot/module/common/api/dto/FailureAuditDto.java
View file @
6eb5eaef
...
...
@@ -25,6 +25,9 @@ public class FailureAuditDto extends BaseDto {
@ApiModelProperty
(
value
=
"审核部门"
)
private
String
auditDepartment
;
@ApiModelProperty
(
value
=
"审核部门"
)
private
Long
auditDepartmentId
;
@ApiModelProperty
(
value
=
"审核时间"
)
private
Date
auditTime
;
...
...
@@ -37,5 +40,10 @@ public class FailureAuditDto extends BaseDto {
@ApiModelProperty
(
value
=
"设备故障报修单id"
)
private
Long
faultId
;
@ApiModelProperty
(
value
=
"审核结果条件判断,0同意,1拒绝,2驳回"
)
private
String
condition
;
}
amos-boot-module/amos-boot-module-api/amos-boot-module-common-api/src/main/java/com/yeejoin/amos/boot/module/common/api/dto/FailureMaintainDto.java
View file @
6eb5eaef
...
...
@@ -51,5 +51,8 @@ public class FailureMaintainDto extends BaseDto {
@ApiModelProperty
(
value
=
"附件"
)
private
List
<
SourceFile
>
attachment
;
@ApiModelProperty
(
value
=
"审核结果条件判断,0同意,1拒绝,2驳回"
)
private
String
condition
;
}
amos-boot-module/amos-boot-module-api/amos-boot-module-common-api/src/main/java/com/yeejoin/amos/boot/module/common/api/entity/FailureAudit.java
View file @
6eb5eaef
...
...
@@ -34,6 +34,9 @@ public class FailureAudit extends BaseEntity {
*/
@TableField
(
"audit_department"
)
private
String
auditDepartment
;
@TableField
(
"audit_department_id"
)
private
Long
auditDepartmentId
;
/**
* 审核时间
...
...
@@ -52,5 +55,7 @@ public class FailureAudit extends BaseEntity {
*/
@TableField
(
"fault_id"
)
private
Long
faultId
;
}
amos-boot-module/amos-boot-module-api/amos-boot-module-common-api/src/main/java/com/yeejoin/amos/boot/module/common/api/service/IFailureAuditService.java
View file @
6eb5eaef
package
com
.
yeejoin
.
amos
.
boot
.
module
.
common
.
api
.
service
;
import
com.yeejoin.amos.boot.module.common.api.entity.FailureAudit
;
/**
* 接口类
...
...
@@ -8,5 +9,5 @@ package com.yeejoin.amos.boot.module.common.api.service;
* @date 2021-08-04
*/
public
interface
IFailureAuditService
{
public
FailureAudit
findByFaultId
(
Long
faultId
)
;
}
amos-boot-module/amos-boot-module-biz/amos-boot-module-common-biz/src/main/java/com/yeejoin/amos/boot/module/common/biz/controller/FailureAuditController.java
View file @
6eb5eaef
...
...
@@ -86,4 +86,7 @@ public class FailureAuditController extends BaseController {
public
ResponseModel
<
List
<
FailureAuditDto
>>
selectForList
()
{
return
ResponseHelper
.
buildResponse
(
failureAuditServiceImpl
.
queryForFailureAuditList
());
}
}
amos-boot-module/amos-boot-module-biz/amos-boot-module-common-biz/src/main/java/com/yeejoin/amos/boot/module/common/biz/controller/FailureDetailsController.java
View file @
6eb5eaef
package
com
.
yeejoin
.
amos
.
boot
.
module
.
common
.
biz
.
controller
;
import
java.util.List
;
import
javax.servlet.http.HttpServletRequest
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.DeleteMapping
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PathVariable
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.PutMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
import
org.typroject.tyboot.core.foundation.enumeration.UserType
;
import
org.typroject.tyboot.core.restful.doc.TycloudOperation
;
import
org.typroject.tyboot.core.restful.utils.ResponseHelper
;
import
org.typroject.tyboot.core.restful.utils.ResponseModel
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.yeejoin.amos.boot.biz.common.controller.BaseController
;
import
com.yeejoin.amos.boot.module.common.api.dto.FailureDetailsDto
;
import
com.yeejoin.amos.boot.module.common.api.entity.FailureDetails
;
import
com.yeejoin.amos.boot.module.common.biz.service.impl.FailureDetailsServiceImpl
;
import
com.yeejoin.amos.feign.privilege.model.AgencyUserModel
;
/*import com.yeejoin.amos.patrol.business.util.CommonResponse;
import com.yeejoin.amos.patrol.business.util.CommonResponseUtil;*/
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.util.ObjectUtils
;
import
org.springframework.web.bind.annotation.*
;
import
org.typroject.tyboot.core.foundation.enumeration.UserType
;
import
org.typroject.tyboot.core.restful.doc.TycloudOperation
;
import
org.typroject.tyboot.core.restful.utils.ResponseHelper
;
import
org.typroject.tyboot.core.restful.utils.ResponseModel
;
import
javax.servlet.http.HttpServletRequest
;
import
java.util.List
;
/**
*
...
...
@@ -44,29 +53,29 @@ public class FailureDetailsController extends BaseController {
*
* @return
*/
/*
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@PostMapping
(
value
=
"/save"
)
@ApiOperation
(
httpMethod
=
"POST"
,
value
=
"新增"
,
notes
=
"新增"
)
public
CommonResponse
save(@RequestBody FailureDetailsDto model) {
*/
/* model = failureDetailsServiceImpl.savemodel(model
);
return ResponseHelper.buildResponse(
model);*//*
CommonResponse commonResponse = new CommonResponse();
try {
AgencyUserModel user = getUserInfo();
if (ObjectUtils.isEmpty(user)) {
return CommonResponseUtil.failure("用户session过期");
}
return failureDetailsServiceImpl.savemodel(model);
} catch (Exception e) {
logger.error("", e.getMessage());
return CommonResponseUtil.failure("系统繁忙,请稍后再试");
}
public
ResponseModel
<
Object
>
save
(
@RequestBody
FailureDetailsDto
model
)
{
Object
result
=
failureDetailsServiceImpl
.
savemodel
(
model
,
getSelectedOrgInfo
()
);
return
ResponseHelper
.
buildResponse
(
result
);
//
CommonResponse commonResponse = new CommonResponse();
//
try {
//
AgencyUserModel user = getUserInfo();
//
if (ObjectUtils.isEmpty(user)) {
//
return CommonResponseUtil.failure("用户session过期");
//
}
//
return failureDetailsServiceImpl.savemodel(model);
//
} catch (Exception e) {
//
logger.error("", e.getMessage());
//
return CommonResponseUtil.failure("系统繁忙,请稍后再试");
//
}
}
*/
/**
* 根据sequenceNbr更新
...
...
amos-boot-module/amos-boot-module-biz/amos-boot-module-common-biz/src/main/java/com/yeejoin/amos/boot/module/common/biz/controller/FailureMaintainController.java
View file @
6eb5eaef
...
...
@@ -118,5 +118,18 @@ public class FailureMaintainController extends BaseController {
return
ResponseHelper
.
buildResponse
(
failureMaintainServiceImpl
.
queryForFailureMaintainList
());
}
/**
* 查询历史流程审核信息记录
*
* @return
*/
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"设备故障报修单详情-报修日志"
,
notes
=
"设备故障报修单详情-报修日志"
)
@GetMapping
(
value
=
"/getProcessHistory/{sequenceNbr}"
)
public
ResponseModel
<
List
<
Object
>>
getProcessHistory
(
@PathVariable
Long
sequenceNbr
)
{
if
(
sequenceNbr
==
null
)
{
return
ResponseHelper
.
buildResponse
(
null
);
}
return
ResponseHelper
.
buildResponse
(
failureMaintainServiceImpl
.
getProcessHistoryList
(
sequenceNbr
));
}
}
amos-boot-module/amos-boot-module-biz/amos-boot-module-common-biz/src/main/java/com/yeejoin/amos/boot/module/common/biz/service/impl/FailureAuditServiceImpl.java
View file @
6eb5eaef
package
com
.
yeejoin
.
amos
.
boot
.
module
.
common
.
biz
.
service
.
impl
;
import
java.util.List
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.typroject.tyboot.core.rdbms.service.BaseService
;
import
org.typroject.tyboot.core.restful.utils.ResponseModel
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.yeejoin.amos.boot.module.common.api.dto.FailureAuditDto
;
import
com.yeejoin.amos.boot.module.common.api.dto.FailureDetailsDto
;
...
...
@@ -9,13 +17,6 @@ import com.yeejoin.amos.boot.module.common.api.enums.FailureStatuEnum;
import
com.yeejoin.amos.boot.module.common.api.mapper.FailureAuditMapper
;
import
com.yeejoin.amos.boot.module.common.api.service.IFailureAuditService
;
import
java.util.List
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.typroject.tyboot.core.rdbms.service.BaseService
;
/**
* 服务实现类
*
...
...
@@ -23,53 +24,64 @@ import org.typroject.tyboot.core.rdbms.service.BaseService;
* @date 2021-08-04
*/
@Service
public
class
FailureAuditServiceImpl
extends
BaseService
<
FailureAuditDto
,
FailureAudit
,
FailureAuditMapper
>
implements
IFailureAuditService
{
@Autowired
FailureDetailsServiceImpl
failureDetailsService
;
/* @Autowired
RemoteWorkFlowService remoteWorkFlowService;*/
public
class
FailureAuditServiceImpl
extends
BaseService
<
FailureAuditDto
,
FailureAudit
,
FailureAuditMapper
>
implements
IFailureAuditService
{
@Autowired
FailureDetailsServiceImpl
failureDetailsService
;
// @Autowired
// RemoteWorkFlowService remoteWorkFlowService;
/**
* 分页查询
*/
public
Page
<
FailureAuditDto
>
queryForFailureAuditPage
(
Page
<
FailureAuditDto
>
page
)
{
return
this
.
queryForPage
(
page
,
null
,
false
);
}
/**
* 分页查询
*/
public
Page
<
FailureAuditDto
>
queryForFailureAuditPage
(
Page
<
FailureAuditDto
>
page
)
{
return
this
.
queryForPage
(
page
,
null
,
false
);
}
/**
* 列表查询 示例
*/
public
List
<
FailureAuditDto
>
queryForFailureAuditList
()
{
return
this
.
queryForList
(
""
,
false
);
}
/**
* 列表查询 示例
*/
public
List
<
FailureAuditDto
>
queryForFailureAuditList
()
{
return
this
.
queryForList
(
""
,
false
);
}
/**
* 发起审核
*/
public
FailureAuditDto
savemodel
(
FailureAuditDto
model
)
{
/**
* 发起审核
*/
public
FailureAuditDto
savemodel
(
FailureAuditDto
model
)
{
// remoteWorkFlowService.currentTask();
// remoteWorkFlowService.currentTask();
this
.
createWithModel
(
model
);
Integer
auditResult
=
model
.
getAuditResult
();
if
(
auditResult
.
equals
(
AuditResultEnum
.
AGREE
.
getCode
()))
{
updateStatus
(
model
,
FailureStatuEnum
.
WAITING_MAINTAIN
.
getCode
());
}
else
if
(
auditResult
.
equals
(
AuditResultEnum
.
REFUSE
.
getCode
()))
{
updateStatus
(
model
,
FailureStatuEnum
.
REFUSE
.
getCode
());
}
else
if
(
auditResult
.
equals
(
AuditResultEnum
.
SEND_BACK
.
getCode
()))
{
updateStatus
(
model
,
FailureStatuEnum
.
WAITING_SUBMIT
.
getCode
());
}
return
model
;
}
this
.
createWithModel
(
model
);
Integer
auditResult
=
model
.
getAuditResult
();
if
(
auditResult
.
equals
(
AuditResultEnum
.
AGREE
.
getCode
()))
{
updateStatus
(
model
,
FailureStatuEnum
.
WAITING_MAINTAIN
.
getCode
());
}
else
if
(
auditResult
.
equals
(
AuditResultEnum
.
REFUSE
.
getCode
()))
{
updateStatus
(
model
,
FailureStatuEnum
.
REFUSE
.
getCode
());
}
else
if
(
auditResult
.
equals
(
AuditResultEnum
.
SEND_BACK
.
getCode
()))
{
updateStatus
(
model
,
FailureStatuEnum
.
WAITING_SUBMIT
.
getCode
());
}
return
model
;
}
/**
* 修改故障保修单任务状态
*/
FailureDetailsDto
updateStatus
(
FailureAuditDto
model
,
Integer
status
)
{
FailureDetailsDto
failureDetailsDto
=
failureDetailsService
.
queryBySeq
(
model
.
getFaultId
());
failureDetailsDto
.
setCurrentStatus
(
status
);
failureDetailsDto
.
setSequenceNbr
(
model
.
getFaultId
());
return
failureDetailsService
.
updateWithModel
(
failureDetailsDto
);
/**
* 修改故障保修单任务状态
*/
FailureDetailsDto
updateStatus
(
FailureAuditDto
model
,
Integer
status
)
{
FailureDetailsDto
failureDetailsDto
=
failureDetailsService
.
queryBySeq
(
model
.
getFaultId
());
failureDetailsDto
.
setCurrentStatus
(
status
);
failureDetailsDto
.
setSequenceNbr
(
model
.
getFaultId
());
return
failureDetailsService
.
updateWithModel
(
failureDetailsDto
);
}
}
public
FailureAudit
findByFaultId
(
Long
faultId
)
{
LambdaQueryWrapper
<
FailureAudit
>
wrapper
=
new
LambdaQueryWrapper
<
FailureAudit
>();
wrapper
.
eq
(
FailureAudit:
:
getIsDelete
,
false
);
wrapper
.
eq
(
FailureAudit:
:
getFaultId
,
faultId
);
wrapper
.
orderByAsc
(
FailureAudit:
:
getAuditTime
);
wrapper
.
last
(
"LIMIT 1"
);
return
this
.
baseMapper
.
selectOne
(
wrapper
);
}
}
\ No newline at end of file
amos-boot-module/amos-boot-module-biz/amos-boot-module-common-biz/src/main/java/com/yeejoin/amos/boot/module/common/biz/service/impl/FailureDetailsServiceImpl.java
View file @
6eb5eaef
This diff is collapsed.
Click to expand it.
amos-boot-module/amos-boot-module-biz/amos-boot-module-common-biz/src/main/java/com/yeejoin/amos/boot/module/common/biz/service/impl/FailureMaintainServiceImpl.java
View file @
6eb5eaef
...
...
@@ -73,4 +73,13 @@ public class FailureMaintainServiceImpl extends BaseService<FailureMaintainDto,F
}
return
failureMaintainDto
;
}
/**
* 查询当前故障报修单的流程的审批历史节点
* @param sequenceNbr
* @return
*/
public
List
<
Object
>
getProcessHistoryList
(
Long
sequenceNbr
)
{
// TODO Auto-generated method stub
return
null
;
}
}
\ 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