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
9f0c274d
Commit
9f0c274d
authored
Nov 04, 2022
by
limei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
项目列表、安装告知短信接口修改
parent
14a1039c
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
181 additions
and
33 deletions
+181
-33
InstallNoticeMsgMapper.java
...os/boot/module/ugp/api/mapper/InstallNoticeMsgMapper.java
+3
-1
ProjectMapper.java
...eejoin/amos/boot/module/ugp/api/mapper/ProjectMapper.java
+2
-1
ProjectResourceMapper.java
...mos/boot/module/ugp/api/mapper/ProjectResourceMapper.java
+2
-1
IProjectService.java
...oin/amos/boot/module/ugp/api/service/IProjectService.java
+1
-1
InstallNoticeMsgMapper.xml
...-api/src/main/resources/mapper/InstallNoticeMsgMapper.xml
+7
-1
ProjectMapper.xml
...odule-ugp-api/src/main/resources/mapper/ProjectMapper.xml
+17
-0
ProjectResourceMapper.xml
...p-api/src/main/resources/mapper/ProjectResourceMapper.xml
+7
-2
ProjectController.java
...mos/boot/module/ugp/biz/controller/ProjectController.java
+3
-7
InstallNoticeMsgServiceImpl.java
...ule/ugp/biz/service/impl/InstallNoticeMsgServiceImpl.java
+29
-1
ProjectResourceServiceImpl.java
...dule/ugp/biz/service/impl/ProjectResourceServiceImpl.java
+12
-7
ProjectServiceImpl.java
.../boot/module/ugp/biz/service/impl/ProjectServiceImpl.java
+98
-11
No files found.
amos-boot-system-ugp/amos-boot-module-ugp-api/src/main/java/com/yeejoin/amos/boot/module/ugp/api/mapper/InstallNoticeMsgMapper.java
View file @
9f0c274d
...
...
@@ -8,6 +8,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import
org.apache.ibatis.annotations.Mapper
;
import
org.apache.ibatis.annotations.Param
;
import
java.util.Set
;
/**
* 项目安装告知短信记录表 Mapper 接口
*
...
...
@@ -18,7 +20,7 @@ import org.apache.ibatis.annotations.Param;
public
interface
InstallNoticeMsgMapper
extends
BaseMapper
<
InstallNoticeMsg
>
{
//安装告知申请页面分页列表
Page
<
InstallNoticeMsgPageDto
>
InstallNoticeMsgPage
(
IPage
<
InstallNoticeMsgPageDto
>
page
,
@Param
(
"name"
)
String
name
,
@Param
(
"installationUnit"
)
String
installationUnit
);
Page
<
InstallNoticeMsgPageDto
>
InstallNoticeMsgPage
(
IPage
<
InstallNoticeMsgPageDto
>
page
,
@Param
(
"name"
)
String
name
,
@Param
(
"installationUnit"
)
String
installationUnit
,
Set
<
String
>
seqs
);
Page
<
InstallNoticeMsgPageDto
>
selectByName
(
Page
<
InstallNoticeMsgPageDto
>
page
,
@Param
(
"name"
)
String
name
,
@Param
(
"unit"
)
String
unit
);
...
...
amos-boot-system-ugp/amos-boot-module-ugp-api/src/main/java/com/yeejoin/amos/boot/module/ugp/api/mapper/ProjectMapper.java
View file @
9f0c274d
...
...
@@ -12,6 +12,7 @@ import org.springframework.web.bind.annotation.RequestParam;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Set
;
/**
* 项目信息表 Mapper 接口
...
...
@@ -27,5 +28,5 @@ public interface ProjectMapper extends BaseMapper<Project> {
ProjectDto
getDetail
(
Long
sequenceNbr
);
//项目模糊筛选
Page
<
ProjectDto
>
queryProjectPage
(
IPage
<
ProjectDto
>
page
,
Project
project
);
IPage
<
ProjectDto
>
queryProjectPage
(
IPage
<
ProjectDto
>
page
,
Project
project
,
String
roleName
,
String
companyId
,
Set
<
String
>
codes
);
}
amos-boot-system-ugp/amos-boot-module-ugp-api/src/main/java/com/yeejoin/amos/boot/module/ugp/api/mapper/ProjectResourceMapper.java
View file @
9f0c274d
...
...
@@ -12,6 +12,7 @@ import org.apache.ibatis.annotations.Param;
import
org.aspectj.weaver.ast.Test
;
import
java.util.List
;
import
java.util.Set
;
/**
* 项目资源表(包括焊工、管材、设备) Mapper 接口
...
...
@@ -41,5 +42,5 @@ public interface ProjectResourceMapper extends BaseMapper<ProjectResource> {
* 获取当前登录人所在单位下的所有项目
* 根据登录人角色去筛选
*/
List
<
Project
>
getProjectPage
(
String
roleName
,
String
companyId
);
List
<
Project
>
getProjectPage
(
String
roleName
,
String
companyId
,
Set
<
String
>
codes
);
}
amos-boot-system-ugp/amos-boot-module-ugp-api/src/main/java/com/yeejoin/amos/boot/module/ugp/api/service/IProjectService.java
View file @
9f0c274d
...
...
@@ -16,5 +16,5 @@ import com.yeejoin.amos.boot.module.ugp.api.entity.Project;
*/
public
interface
IProjectService
{
Page
<
ProjectDto
>
queryProjectPage
(
Page
<
ProjectDto
>
pag
e
,
Project
project
);
public
IPage
<
ProjectDto
>
queryProjectPage
(
String
current
,
String
siz
e
,
Project
project
);
}
amos-boot-system-ugp/amos-boot-module-ugp-api/src/main/resources/mapper/InstallNoticeMsgMapper.xml
View file @
9f0c274d
...
...
@@ -3,7 +3,7 @@
<mapper
namespace=
"com.yeejoin.amos.boot.module.ugp.api.mapper.InstallNoticeMsgMapper"
>
<select
id=
"InstallNoticeMsgPage"
resultType=
"com.yeejoin.amos.boot.module.ugp.api.dto.InstallNoticeMsgPageDto"
>
SELECT
name
,
SELECT
`name`
,
install_region,
start_date,
construction_unit,
...
...
@@ -24,6 +24,12 @@
<if
test=
"installationUnit != null and installationUnit != ''"
>
and tz_ugp_project.installation_unit like concat("%",#{installationUnit},"%")
</if>
<if
test=
" seqs != null"
>
and tz_ugp_install_notice_msg.install_notice_id in
<foreach
collection=
"seqs"
item =
"item"
index=
"index"
open=
"("
separator=
","
close=
")"
>
#{item}
</foreach>
</if>
</select>
<select
id=
"selectByName"
resultType=
"com.yeejoin.amos.boot.module.ugp.api.dto.InstallNoticeMsgPageDto"
>
SELECT name,
...
...
amos-boot-system-ugp/amos-boot-module-ugp-api/src/main/resources/mapper/ProjectMapper.xml
View file @
9f0c274d
...
...
@@ -21,6 +21,23 @@
<select
id=
"queryProjectPage"
resultType=
"com.yeejoin.amos.boot.module.ugp.api.dto.ProjectDto"
>
select * from tz_ugp_project
<where>
<if
test=
"roleName == '建设单位'"
>
and construction_unit_id = #{companyId}
</if>
<if
test=
"roleName == '安装单位'"
>
and installation_unit_id = #{companyId}
</if>
<if
test=
"roleName == '设计单位'"
>
and design_unit_id = #{companyId}
</if>
<if
test=
"codes != null "
>
<if
test=
"roleName == '监察部门' or roleName == '监检机构'"
>
and install_region_code in
<foreach
collection=
"codes"
item =
"item"
index=
"index"
open=
"("
separator=
","
close=
")"
>
#{item}
</foreach>
</if>
</if>
<if
test=
"project.name != '' and project.name != null"
>
and `name` like concat('%',#{project.name},'%')
</if>
...
...
amos-boot-system-ugp/amos-boot-module-ugp-api/src/main/resources/mapper/ProjectResourceMapper.xml
View file @
9f0c274d
...
...
@@ -123,8 +123,13 @@
<if
test=
"roleName == '设计单位'"
>
and design_unit_id = #{companyId}
</if>
<if
test=
"roleName == '监察部门' or roleName == '监检机构'"
>
and install_region_code = #{companyId}
<if
test=
"codes != null "
>
<if
test=
"roleName == '监察部门' or roleName == '监检机构'"
>
and install_region_code in
<foreach
collection=
"codes"
item =
"item"
index=
"index"
open=
"("
separator=
","
close=
")"
>
#{item}
</foreach>
</if>
</if>
</where>
</select>
...
...
amos-boot-system-ugp/amos-boot-module-ugp-biz/src/main/java/com/yeejoin/amos/boot/module/ugp/biz/controller/ProjectController.java
View file @
9f0c274d
...
...
@@ -160,16 +160,12 @@ public class ProjectController extends BaseController {
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
,
needAuth
=
false
)
@GetMapping
(
value
=
"/page"
)
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"项目信息表分页查询"
,
notes
=
"项目信息表分页查询"
)
public
ResponseModel
<
Page
<
ProjectDto
>>
queryForPage
(
@RequestParam
(
value
=
"current"
)
int
current
,
@RequestParam
(
value
=
"size"
)
int
size
,
Project
project
)
{
Page
<
ProjectDto
>
page
=
new
Page
<>();
page
.
setSize
(
size
);
page
.
setCurrent
(
current
);
return
ResponseHelper
.
buildResponse
(
projectServiceImpl
.
queryProjectPage
(
page
,
project
));
public
ResponseModel
<
IPage
<
ProjectDto
>>
queryForPage
(
String
current
,
String
size
,
Project
project
)
{
return
ResponseHelper
.
buildResponse
(
projectServiceImpl
.
queryProjectPage
(
current
,
size
,
project
));
}
/**
* 列表全部数据查询
*
...
...
amos-boot-system-ugp/amos-boot-module-ugp-biz/src/main/java/com/yeejoin/amos/boot/module/ugp/biz/service/impl/InstallNoticeMsgServiceImpl.java
View file @
9f0c274d
package
com
.
yeejoin
.
amos
.
boot
.
module
.
ugp
.
biz
.
service
.
impl
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.yeejoin.amos.boot.module.ugp.api.dto.InstallNoticeDto
;
import
com.yeejoin.amos.boot.module.ugp.api.dto.InstallNoticeMsgPageDto
;
import
com.yeejoin.amos.boot.module.ugp.api.entity.InstallNotice
;
import
com.yeejoin.amos.boot.module.ugp.api.entity.InstallNoticeMsg
;
import
com.yeejoin.amos.boot.module.ugp.api.entity.Project
;
import
com.yeejoin.amos.boot.module.ugp.api.mapper.InstallNoticeMapper
;
import
com.yeejoin.amos.boot.module.ugp.api.mapper.InstallNoticeMsgMapper
;
import
com.yeejoin.amos.boot.module.ugp.api.service.IInstallNoticeMsgService
;
import
com.yeejoin.amos.boot.module.ugp.api.dto.InstallNoticeMsgDto
;
...
...
@@ -9,7 +14,11 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.typroject.tyboot.core.rdbms.service.BaseService
;
import
org.springframework.stereotype.Service
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
java.util.ArrayList
;
import
java.util.HashSet
;
import
java.util.List
;
import
java.util.Set
;
/**
* 项目安装告知短信记录表服务实现类
...
...
@@ -22,6 +31,12 @@ public class InstallNoticeMsgServiceImpl extends BaseService<InstallNoticeMsgDto
@Autowired
InstallNoticeMsgMapper
installNoticeMsgMapper
;
@Autowired
ProjectResourceServiceImpl
projectResourceService
;
@Autowired
InstallNoticeMapper
installNoticeMapper
;
@Autowired
InstallNoticeServiceImpl
installNoticeService
;
/**
* 分页查询
*/
...
...
@@ -41,7 +56,20 @@ public class InstallNoticeMsgServiceImpl extends BaseService<InstallNoticeMsgDto
*/
@Override
public
Page
<
InstallNoticeMsgPageDto
>
installNoticeMsgList
(
Page
<
InstallNoticeMsgPageDto
>
page
,
String
name
,
String
installationUnit
){
return
this
.
getBaseMapper
().
InstallNoticeMsgPage
(
page
,
name
,
installationUnit
);
List
<
Project
>
projectList
=
projectResourceService
.
getProjectList
();
List
<
InstallNotice
>
installNoticeList
=
new
ArrayList
<>();
for
(
Project
project:
projectList
){
LambdaQueryWrapper
<
InstallNotice
>
wrapper
=
new
LambdaQueryWrapper
<>();
wrapper
.
eq
(
InstallNotice:
:
getProjectId
,
project
.
getSequenceNbr
());
List
<
InstallNotice
>
installNotice
=
installNoticeService
.
list
(
wrapper
);
installNoticeList
.
addAll
(
installNotice
);
}
Set
<
String
>
seqs
=
new
HashSet
<>();
for
(
InstallNotice
installNotice
:
installNoticeList
){
String
seq
=
String
.
valueOf
(
installNotice
.
getSequenceNbr
());
seqs
.
add
(
seq
);
}
return
installNoticeMsgMapper
.
InstallNoticeMsgPage
(
page
,
name
,
installationUnit
,
seqs
);
}
@Override
...
...
amos-boot-system-ugp/amos-boot-module-ugp-biz/src/main/java/com/yeejoin/amos/boot/module/ugp/biz/service/impl/ProjectResourceServiceImpl.java
View file @
9f0c274d
...
...
@@ -221,19 +221,24 @@ public class ProjectResourceServiceImpl extends BaseService<ProjectResourceDto,P
String
roleName
=
reginParams
.
getRole
().
getRoleName
();
LambdaQueryWrapper
<
SuperviseRule
>
wrapper
=
new
LambdaQueryWrapper
<>();
List
<
Project
>
projectList
=
new
ArrayList
<>();
S
tring
reginCode
=
""
;
S
et
<
String
>
codes
=
new
HashSet
<>()
;
if
(
OrgEnum
.
监察部门
.
getName
().
equals
(
roleName
)){
wrapper
.
eq
(
SuperviseRule:
:
getSuperviseDeptId
,
companyId
);
reginCode
=
superviseRuleService
.
getOne
(
wrapper
).
getAdminRegion
();
List
<
SuperviseRule
>
superviseRuleList
=
superviseRuleService
.
list
(
wrapper
);
for
(
SuperviseRule
superviseRule
:
superviseRuleList
){
codes
.
add
(
String
.
valueOf
(
superviseRule
.
getAdminRegionCode
()));
}
}
else
if
(
OrgEnum
.
监检机构
.
getName
().
equals
(
roleName
)){
wrapper
.
eq
(
SuperviseRule:
:
getInspectionUnitId
,
companyId
);
reginCode
=
superviseRuleService
.
getOne
(
wrapper
).
getAdminRegion
();
List
<
SuperviseRule
>
superviseRuleList
=
superviseRuleService
.
list
(
wrapper
);
for
(
SuperviseRule
superviseRule
:
superviseRuleList
){
codes
.
add
(
String
.
valueOf
(
superviseRule
.
getAdminRegionCode
()));
}
}
else
{
projectList
=
projectResourceMapper
.
getProjectPage
(
roleName
,
companyId
);
projectList
=
projectResourceMapper
.
getProjectPage
(
roleName
,
companyId
,
codes
);
}
if
(!
ValidationUtil
.
isEmpty
(
reginCode
)){
projectList
=
projectResourceMapper
.
getProjectPage
(
roleName
,
reginCode
);
if
(!
ValidationUtil
.
isEmpty
(
codes
)){
projectList
=
projectResourceMapper
.
getProjectPage
(
roleName
,
companyId
,
codes
);
}
return
projectList
;
}
...
...
amos-boot-system-ugp/amos-boot-module-ugp-biz/src/main/java/com/yeejoin/amos/boot/module/ugp/biz/service/impl/ProjectServiceImpl.java
View file @
9f0c274d
...
...
@@ -6,27 +6,26 @@ import com.alibaba.fastjson.JSONObject;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.yeejoin.amos.boot.biz.common.bo.ReginParams
;
import
com.yeejoin.amos.boot.module.ugp.api.Enum.OrgEnum
;
import
com.yeejoin.amos.boot.module.ugp.api.Enum.ProjectInitiationEnum
;
import
com.yeejoin.amos.boot.module.ugp.api.constants.XJConstant
;
import
com.yeejoin.amos.boot.module.ugp.api.dto.EquipmentDto
;
import
com.yeejoin.amos.boot.module.ugp.api.dto.ProjectDto
;
import
com.yeejoin.amos.boot.module.ugp.api.entity.Attachment
;
import
com.yeejoin.amos.boot.module.ugp.api.entity.Equipment
;
import
com.yeejoin.amos.boot.module.ugp.api.entity.Project
;
import
com.yeejoin.amos.boot.module.ugp.api.entity.ProjectInitiation
;
import
com.yeejoin.amos.boot.module.ugp.api.entity.*
;
import
com.yeejoin.amos.boot.module.ugp.api.mapper.ProjectMapper
;
import
com.yeejoin.amos.boot.module.ugp.api.mapper.ProjectResourceMapper
;
import
com.yeejoin.amos.boot.module.ugp.api.service.IProjectService
;
import
com.yeejoin.amos.boot.module.ugp.biz.framework.BusinessIdentify
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.typroject.tyboot.core.foundation.utils.ValidationUtil
;
import
org.typroject.tyboot.core.rdbms.service.BaseService
;
import
org.typroject.tyboot.core.restful.utils.ResponseHelper
;
import
java.util.ArrayList
;
import
java.util.HashSet
;
import
java.util.List
;
import
java.util.Set
;
/**
* 项目信息表服务实现类
...
...
@@ -36,6 +35,7 @@ import java.util.List;
*/
@Service
public
class
ProjectServiceImpl
extends
BaseService
<
ProjectDto
,
Project
,
ProjectMapper
>
implements
IProjectService
{
@Autowired
ProjectMapper
projectMapper
;
...
...
@@ -48,6 +48,15 @@ public class ProjectServiceImpl extends BaseService<ProjectDto, Project, Project
@Autowired
EquipmentServiceImpl
equipmentService
;
@Autowired
OrgServiceImpl
orgService
;
@Autowired
SuperviseRuleServiceImpl
superviseRuleService
;
@Autowired
ProjectResourceMapper
projectResourceMapper
;
@Autowired
AttachmentServiceImpl
attachmentServiceImpl
;
...
...
@@ -175,14 +184,91 @@ public class ProjectServiceImpl extends BaseService<ProjectDto, Project, Project
return
"ok"
;
}
// //项目模糊筛选
// @Override
// public Page<ProjectDto> queryProjectPage(Page<ProjectDto> page, Project project) {
// Page<ProjectDto> projectDtoPage = projectMapper.queryProjectPage(page,project);
// List<ProjectDto> projects = projectDtoPage.getRecords();
// for(ProjectDto projectDto:projects){
// getProjectState(projectDto);
// }
// return projectDtoPage;
// }
//项目模糊筛选
// @BusinessIdentify
// @Override
// public IPage<ProjectDto> queryProjectPage(String current,String size, Project project) {
// IPage<ProjectDto> page = new Page<>();
// page.setCurrent(Long.parseLong(current));
// page.setSize(Long.parseLong(size));
// ReginParams reginParams = orgService.getReginParams();
// String companyId = String.valueOf(reginParams.getBusinessInfo().getCompanySequenceNbr());
// String roleName = reginParams.getRole().getRoleName();
// LambdaQueryWrapper<SuperviseRule> wrapper = new LambdaQueryWrapper<>();
// String reginCode = "";
// if(OrgEnum.监察部门.getName().equals(roleName)){
// wrapper.eq(SuperviseRule::getSuperviseDeptId,companyId);
// reginCode = superviseRuleService.getOne(wrapper).getAdminRegion();
// } else if(OrgEnum.监检机构.getName().equals(roleName)){
// wrapper.eq(SuperviseRule::getInspectionUnitId,companyId);
// reginCode = superviseRuleService.getOne(wrapper).getAdminRegion();
// } else {
// page = projectMapper.queryProjectPage(page, project, roleName, companyId);
// }
// if(!ValidationUtil.isEmpty(reginCode)){
// page = projectMapper.queryProjectPage(page, project, roleName, reginCode);
// }
// List<ProjectDto> projects = page.getRecords();
// for(ProjectDto projectDto:projects){
// getProjectState(projectDto);
// }
// return page;
// }
//
@BusinessIdentify
@Override
public
Page
<
ProjectDto
>
queryProjectPage
(
Page
<
ProjectDto
>
page
,
Project
project
)
{
Page
<
ProjectDto
>
projectDtoPage
=
projectMapper
.
queryProjectPage
(
page
,
project
);
List
<
ProjectDto
>
projects
=
projectDtoPage
.
getRecords
();
public
IPage
<
ProjectDto
>
queryProjectPage
(
String
current
,
String
size
,
Project
project
)
{
IPage
<
ProjectDto
>
page
=
new
Page
<>();
page
.
setCurrent
(
Long
.
parseLong
(
current
));
page
.
setSize
(
Long
.
parseLong
(
size
));
ReginParams
reginParams
=
orgService
.
getReginParams
();
String
companyId
=
String
.
valueOf
(
reginParams
.
getBusinessInfo
().
getCompanySequenceNbr
());
String
roleName
=
reginParams
.
getRole
().
getRoleName
();
LambdaQueryWrapper
<
SuperviseRule
>
wrapper
=
new
LambdaQueryWrapper
<>();
Set
<
String
>
codes
=
new
HashSet
<>();
if
(
OrgEnum
.
监察部门
.
getName
().
equals
(
roleName
)){
wrapper
.
eq
(
SuperviseRule:
:
getSuperviseDeptId
,
companyId
);
List
<
SuperviseRule
>
superviseRuleList
=
superviseRuleService
.
list
(
wrapper
);
for
(
SuperviseRule
superviseRule
:
superviseRuleList
){
codes
.
add
(
String
.
valueOf
(
superviseRule
.
getAdminRegionCode
()));
}
}
else
if
(
OrgEnum
.
监检机构
.
getName
().
equals
(
roleName
)){
wrapper
.
eq
(
SuperviseRule:
:
getInspectionUnitId
,
companyId
);
List
<
SuperviseRule
>
superviseRuleList
=
superviseRuleService
.
list
(
wrapper
);
for
(
SuperviseRule
superviseRule
:
superviseRuleList
){
codes
.
add
(
String
.
valueOf
(
superviseRule
.
getAdminRegionCode
()));
}
}
else
{
page
=
projectMapper
.
queryProjectPage
(
page
,
project
,
roleName
,
companyId
,
codes
);
}
if
(!
ValidationUtil
.
isEmpty
(
codes
)){
page
=
projectMapper
.
queryProjectPage
(
page
,
project
,
roleName
,
companyId
,
codes
);
}
List
<
ProjectDto
>
projects
=
page
.
getRecords
();
for
(
ProjectDto
projectDto:
projects
){
getProjectState
(
projectDto
);
}
return
p
rojectDtoP
age
;
return
page
;
}
}
\ 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