Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
O
operation-control-platform
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
王锦盛
operation-control-platform
Commits
58b21702
Commit
58b21702
authored
Apr 06, 2022
by
胡秀武
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/master'
parents
d1401310
5c20ec0a
Changes
20
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
1440 additions
and
5 deletions
+1440
-5
src/main/java/com/pms/ocp/OcpApplication.java
src/main/java/com/pms/ocp/OcpApplication.java
+3
-1
src/main/java/com/pms/ocp/biz/BizModelDemandService.java
src/main/java/com/pms/ocp/biz/BizModelDemandService.java
+61
-0
src/main/java/com/pms/ocp/biz/impl/BizModelDemandServiceImpl.java
.../java/com/pms/ocp/biz/impl/BizModelDemandServiceImpl.java
+192
-0
src/main/java/com/pms/ocp/controller/ModelControlDemandController.java
.../com/pms/ocp/controller/ModelControlDemandController.java
+57
-0
src/main/java/com/pms/ocp/mapper/ModelBaseVersionMapper.java
src/main/java/com/pms/ocp/mapper/ModelBaseVersionMapper.java
+15
-0
src/main/java/com/pms/ocp/mapper/ModelDemandMapper.java
src/main/java/com/pms/ocp/mapper/ModelDemandMapper.java
+15
-0
src/main/java/com/pms/ocp/mapper/ModelPropertyVersionMapper.java
...n/java/com/pms/ocp/mapper/ModelPropertyVersionMapper.java
+15
-0
src/main/java/com/pms/ocp/model/dto/ModelDemandAndPropertyVersionDTO.java
...m/pms/ocp/model/dto/ModelDemandAndPropertyVersionDTO.java
+197
-0
src/main/java/com/pms/ocp/model/dto/ModelDemandDTO.java
src/main/java/com/pms/ocp/model/dto/ModelDemandDTO.java
+215
-0
src/main/java/com/pms/ocp/model/entity/ModelBaseVersion.java
src/main/java/com/pms/ocp/model/entity/ModelBaseVersion.java
+87
-0
src/main/java/com/pms/ocp/model/entity/ModelDemand.java
src/main/java/com/pms/ocp/model/entity/ModelDemand.java
+118
-0
src/main/java/com/pms/ocp/model/entity/ModelPropertyVersion.java
...n/java/com/pms/ocp/model/entity/ModelPropertyVersion.java
+116
-0
src/main/java/com/pms/ocp/service/ModelBaseVersionService.java
...ain/java/com/pms/ocp/service/ModelBaseVersionService.java
+48
-0
src/main/java/com/pms/ocp/service/ModelDemandService.java
src/main/java/com/pms/ocp/service/ModelDemandService.java
+57
-0
src/main/java/com/pms/ocp/service/ModelPropertyVersionService.java
...java/com/pms/ocp/service/ModelPropertyVersionService.java
+37
-0
src/main/java/com/pms/ocp/service/ModelService.java
src/main/java/com/pms/ocp/service/ModelService.java
+12
-2
src/main/java/com/pms/ocp/service/impl/ModelBaseVersionServiceImpl.java
...com/pms/ocp/service/impl/ModelBaseVersionServiceImpl.java
+69
-0
src/main/java/com/pms/ocp/service/impl/ModelDemandServiceImpl.java
...java/com/pms/ocp/service/impl/ModelDemandServiceImpl.java
+71
-0
src/main/java/com/pms/ocp/service/impl/ModelPropertyVersionServiceImpl.java
...pms/ocp/service/impl/ModelPropertyVersionServiceImpl.java
+53
-0
src/main/resources/application-local.yml
src/main/resources/application-local.yml
+2
-2
No files found.
src/main/java/com/pms/ocp/OcpApplication.java
View file @
58b21702
...
...
@@ -8,11 +8,12 @@ import org.springframework.boot.SpringApplication;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
import
org.springframework.boot.context.properties.ConfigurationPropertiesScan
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.transaction.annotation.EnableTransactionManagement
;
import
springfox.documentation.oas.annotations.EnableOpenApi
;
import
java.util.TimeZone
;
/**
/**
* @Auther: wangjian
* @Date: 2022/2/21 15:48
* @Description:启动类
...
...
@@ -22,6 +23,7 @@ import java.util.TimeZone;
@MapperScan
(
basePackages
=
{
"com.pms.ocp.mapper"
})
@ConfigurationPropertiesScan
@EnableOpenApi
@EnableTransactionManagement
public
class
OcpApplication
{
public
static
void
main
(
String
[]
args
)
{
TimeZone
.
setDefault
(
TimeZone
.
getTimeZone
(
"GMT+8"
));
...
...
src/main/java/com/pms/ocp/biz/BizModelDemandService.java
0 → 100644
View file @
58b21702
package
com.pms.ocp.biz
;
import
com.pms.ocp.model.dto.ModelDemandDTO
;
import
com.pms.ocp.model.dto.ModelDemandAndPropertyVersionDTO
;
import
com.pms.ocp.model.entity.Model
;
import
java.util.List
;
/**
* @Auther: wangjian
* @Date: 2022/4/1 10:29
* @Description:
*/
public
interface
BizModelDemandService
{
/**
* 创建模型需求
* 创建模型表或者模型属性
*
* @param modelDemandDTO
* @return
*/
Integer
createModelDemand
(
ModelDemandDTO
modelDemandDTO
);
/**
* 修改模型需求与模型基础版本
*
* @param modelDemandDTO
* @return
*/
Integer
updateModelDemand
(
ModelDemandDTO
modelDemandDTO
);
/**
* 删除模型需求
*
* @param targetType
* @param demandId
* @param modelId
* @param proId
* @return
*/
Integer
deleteModelDemand
(
String
targetType
,
String
demandId
,
String
modelId
,
String
proId
);
/**
* 获取模型需求
*
* @param
* @return
*/
List
<
Model
>
getModelDemandList
(
String
objId
,
String
modelGroupCode
,
int
currentPage
,
int
pageSize
);
/**
* 获取模型需求
*
* @param objId
* @param modelGroupCode
* @return
*/
Model
getModelDemand
(
String
objId
,
String
modelGroupCode
);
}
src/main/java/com/pms/ocp/biz/impl/BizModelDemandServiceImpl.java
0 → 100644
View file @
58b21702
package
com.pms.ocp.biz.impl
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.pms.ocp.biz.BizModelDemandService
;
import
com.pms.ocp.model.entity.*
;
import
com.pms.ocp.model.dto.ModelDemandDTO
;
import
com.pms.ocp.service.ModelBaseVersionService
;
import
com.pms.ocp.service.ModelDemandService
;
import
com.pms.ocp.service.ModelPropertyVersionService
;
import
com.pms.ocp.service.OcpModelGroupService
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.time.LocalDateTime
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.Collections
;
import
java.util.List
;
/**
* @Auther: wangjian
* @Date: 2022/4/1 11:19
* @Description:
*/
@Service
public
class
BizModelDemandServiceImpl
implements
BizModelDemandService
{
@Autowired
private
ModelDemandService
modelDemandService
;
@Autowired
private
ModelBaseVersionService
modelBaseVersionService
;
@Autowired
private
ModelPropertyVersionService
modelPropertyVersionService
;
@Transactional
@Override
public
Integer
createModelDemand
(
ModelDemandDTO
modelDemandDTO
)
{
ModelDemand
modelDemand
=
new
ModelDemand
();
BeanUtils
.
copyProperties
(
modelDemandDTO
,
modelDemand
);
modelDemand
.
setApplyCtime
(
LocalDateTime
.
now
());
if
(
modelDemandDTO
.
getTargetType
().
equals
(
"1"
))
{
ModelBaseVersion
modelBaseVersion
=
new
ModelBaseVersion
();
BeanUtils
.
copyProperties
(
modelDemandDTO
,
modelBaseVersion
);
modelBaseVersionService
.
createModelBaseVersion
(
modelBaseVersion
);
}
else
{
ModelPropertyVersion
modelPropertyVersion
=
new
ModelPropertyVersion
();
BeanUtils
.
copyProperties
(
modelDemandDTO
,
modelPropertyVersion
);
modelPropertyVersionService
.
createModelPropertyVersion
(
modelPropertyVersion
);
}
modelDemandService
.
createModelDemand
(
modelDemand
);
return
1
;
}
@Transactional
@Override
public
Integer
updateModelDemand
(
ModelDemandDTO
modelDemandDTO
)
{
ModelDemand
modelDemand
=
new
ModelDemand
();
BeanUtils
.
copyProperties
(
modelDemandDTO
,
modelDemand
);
modelDemand
.
setApplyCtime
(
LocalDateTime
.
now
());
if
(
modelDemandDTO
.
getTargetType
().
equals
(
"1"
))
{
ModelBaseVersion
modelBaseVersion
=
new
ModelBaseVersion
();
BeanUtils
.
copyProperties
(
modelDemandDTO
,
modelBaseVersion
);
modelBaseVersionService
.
updateModelBaseVersion
(
modelBaseVersion
);
}
else
{
ModelPropertyVersion
modelPropertyVersion
=
new
ModelPropertyVersion
();
BeanUtils
.
copyProperties
(
modelDemandDTO
,
modelPropertyVersion
);
modelPropertyVersionService
.
updateModelPropertyVersion
(
modelPropertyVersion
);
}
modelDemandService
.
updateModelDemand
(
modelDemand
);
return
1
;
}
@Transactional
@Override
public
Integer
deleteModelDemand
(
String
targetType
,
String
demandId
,
String
modelId
,
String
proId
)
{
modelDemandService
.
deleteModelDemand
(
modelId
,
demandId
);
if
(
StringUtils
.
isNotEmpty
(
modelId
))
{
modelBaseVersionService
.
deleteModelBaseVersion
(
modelId
,
demandId
);
}
if
(
StringUtils
.
isNotEmpty
(
proId
))
{
modelPropertyVersionService
.
deleteModelPropertyVersion
(
demandId
,
proId
);
}
return
1
;
}
@Autowired
private
OcpModelGroupService
ocpModelGroupService
;
@Override
public
Model
getModelDemand
(
String
objId
,
String
modelGroupCode
)
{
return
null
;
}
// public List<String> getGroupCodeRecursion(String modelGroupCode) {
//
//
// List<String> modelGroupCodeList = new ArrayList<>();
// if (StringUtils.isNotEmpty(modelGroupCode)) {
//
// modelGroupCodeList.add(modelGroupCode);
//
// QueryWrapper<ModelClassify> queryWrapper = new QueryWrapper();
// if (StringUtils.isNotEmpty(modelGroupCode)) {
// queryWrapper.lambda().eq(ModelClassify::getModelGroupPcode, modelGroupCode);
// }
// List<ModelClassify> list = ocpModelGroupService.list(queryWrapper);
//
// if (!list.isEmpty()) {
// for (ModelClassify modelClassify : list) {
//
// String modelGroupCode1 = modelClassify.getModelGroupCode();
// modelGroupCodeList.add(modelGroupCode1);
//
// QueryWrapper<ModelClassify> queryWrapper1 = new QueryWrapper();
//
// if (StringUtils.isNotEmpty(modelGroupCode1)) {
// queryWrapper1.lambda().eq(ModelClassify::getModelGroupPcode, modelGroupCode1);
// }
// List<ModelClassify> list2 = ocpModelGroupService.list(queryWrapper1);
//
// if (!list2.isEmpty()) {
// getGroupCodeRecursion(modelGroupCode1);
// }
//
// }
// }
//
// }
//
// return modelGroupCodeList;
// }
@Override
public
List
<
Model
>
getModelDemandList
(
String
objId
,
String
modelGroupCode
,
int
currentPage
,
int
pageSize
)
{
List
<
String
>
modelGroupCodeList
=
new
ArrayList
<>();
QueryWrapper
<
ModelClassify
>
queryWrapper
=
new
QueryWrapper
();
List
<
ModelClassify
>
modelClassifyList
=
ocpModelGroupService
.
list
(
queryWrapper
);
getParentNode
(
modelGroupCodeList
,
modelClassifyList
,
modelGroupCode
);
modelGroupCodeList
.
add
(
modelGroupCode
);
modelGroupCodeList
.
size
();
// List<ModelBaseVersion> modelBaseVersionList = modelBaseVersionService.getModelBaseVersionList(modelGroupCodeList, currentPage, pageSize);
return
null
;
}
/**
* 递归获取某个父节点下面的所有子节点
*
* @param childMenu 要返回的结果
* @param menuList 数据库查询出来的所有集合
* @param modelGroupPcode 父类编码
*/
private
static
void
getParentNode
(
List
<
String
>
childMenu
,
List
<
ModelClassify
>
menuList
,
String
modelGroupPcode
)
{
menuList
.
stream
()
//过滤出父id等于参数的id
.
filter
(
menu
->
StringUtils
.
isNotBlank
(
menu
.
getModelGroupPcode
())
&&
menu
.
getModelGroupPcode
().
equals
(
modelGroupPcode
))
.
forEach
(
menu
->
{
//递归遍历下一级
getParentNode
(
childMenu
,
menuList
,
menu
.
getModelGroupCode
());
//添加
childMenu
.
add
(
menu
.
getModelGroupCode
());
});
}
}
src/main/java/com/pms/ocp/controller/ModelControlDemandController.java
0 → 100644
View file @
58b21702
package
com.pms.ocp.controller
;
import
com.pms.ocp.biz.BizModelDemandService
;
import
com.pms.ocp.model.dto.ModelDemandDTO
;
import
com.pms.ocp.model.vo.ResponseVO
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiParam
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
/**
* @Auther: wangjian
* @Date: 2022/3/29 17:18
* @Description:模型库管理管控需求接口
*/
@Slf4j
@RequestMapping
(
"/model-control/v1"
)
@RestController
@Api
(
tags
=
"模型库管理管控需求接口"
)
public
class
ModelControlDemandController
{
@Autowired
private
BizModelDemandService
bizModelDemandService
;
/**
* 模型需求-增加
*
* @return
*/
@ApiOperation
(
"模型需求-增加"
)
@PostMapping
(
"/create/modelDemand"
)
public
ResponseVO
createModelDemand
(
@RequestBody
ModelDemandDTO
modelDemandDTO
)
{
return
ResponseVO
.
ok
(
bizModelDemandService
.
createModelDemand
(
modelDemandDTO
));
}
/**
* 模型需求-查询列表
*
* @return
*/
@ApiOperation
(
"模型需求-查询列表"
)
@GetMapping
(
"/get/modelDemand/list"
)
public
ResponseVO
getModelDemandList
(
@ApiParam
(
value
=
"所属级别"
)
@RequestParam
(
value
=
"belongLevel"
,
defaultValue
=
"0"
)
String
belongLevel
,
@ApiParam
(
value
=
"模型编码"
)
@RequestParam
(
value
=
"modelGroupCode"
,
required
=
false
)
String
modelGroupCode
,
@ApiParam
(
value
=
"当前页"
)
@RequestParam
(
value
=
"currentPage"
)
Integer
currentPage
,
@ApiParam
(
value
=
"每页数量"
)
@RequestParam
(
value
=
"pageSize"
)
Integer
pageSize
,
@ApiParam
(
value
=
"模糊搜索条件"
)
@RequestParam
(
value
=
"searchCondition"
,
required
=
false
)
String
searchCondition
)
{
return
ResponseVO
.
ok
(
bizModelDemandService
.
getModelDemandList
(
belongLevel
,
modelGroupCode
,
currentPage
,
pageSize
));
}
}
src/main/java/com/pms/ocp/mapper/ModelBaseVersionMapper.java
0 → 100644
View file @
58b21702
package
com.pms.ocp.mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.pms.ocp.model.entity.ModelBaseVersion
;
import
org.apache.ibatis.annotations.Mapper
;
/**
* @Auther: wangjian
* @Date: 2022/4/1 09:45
* @Description:模型基础信息版本数据层接口
*/
@Mapper
public
interface
ModelBaseVersionMapper
extends
BaseMapper
<
ModelBaseVersion
>
{
}
src/main/java/com/pms/ocp/mapper/ModelDemandMapper.java
0 → 100644
View file @
58b21702
package
com.pms.ocp.mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.pms.ocp.model.entity.ModelDemand
;
import
org.apache.ibatis.annotations.Mapper
;
/**
* @Auther: wangjian
* @Date: 2022/3/29 17:36
* @Description:
*/
@Mapper
public
interface
ModelDemandMapper
extends
BaseMapper
<
ModelDemand
>
{
}
\ No newline at end of file
src/main/java/com/pms/ocp/mapper/ModelPropertyVersionMapper.java
0 → 100644
View file @
58b21702
package
com.pms.ocp.mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.pms.ocp.model.entity.ModelPropertyVersion
;
import
org.apache.ibatis.annotations.Mapper
;
/**
* @Auther: wangjian
* @Date: 2022/4/1 09:45
* @Description:模型基础信息版本数据层接口
*/
@Mapper
public
interface
ModelPropertyVersionMapper
extends
BaseMapper
<
ModelPropertyVersion
>
{
}
src/main/java/com/pms/ocp/model/dto/ModelDemandAndPropertyVersionDTO.java
0 → 100644
View file @
58b21702
package
com.pms.ocp.model.dto
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
/**
* @Auther: wangjian
* @Date: 2022/3/29 17:27
* @Description:模型属性需求传输对象
*/
@Deprecated
@ApiModel
(
"模型属性需求传输对象"
)
@Data
public
class
ModelDemandAndPropertyVersionDTO
{
/**
* 模型编号
*/
@ApiModelProperty
(
value
=
"模型编号"
)
private
String
modelId
;
/**
* 属性名称
*/
@ApiModelProperty
(
value
=
"属性名称"
)
private
String
columnName
;
/**
* 属性编码
*/
@ApiModelProperty
(
value
=
"属性编码"
)
private
String
columnCode
;
/**
* 属性描述
*/
@ApiModelProperty
(
value
=
"属性描述"
)
private
String
columnComments
;
/**
* 数据类型
*/
@ApiModelProperty
(
value
=
"数据类型"
)
private
Integer
dataType
;
/**
* 数据长度
*/
@ApiModelProperty
(
value
=
"数据长度"
)
private
Integer
dataLength
;
/**
* 数据精度
*/
@ApiModelProperty
(
value
=
"数据精度"
)
private
Integer
dataScale
;
/**
* 是否主键
*/
@ApiModelProperty
(
value
=
"是否主键"
)
private
Integer
boolPk
;
/**
* 是否必填
*/
@ApiModelProperty
(
value
=
"是否必填"
)
private
Integer
boolRequired
;
/**
* 推广类型
*/
@ApiModelProperty
(
value
=
"推广类型"
)
private
Integer
propPromotion
;
/**
* 是否启用
*/
@ApiModelProperty
(
value
=
"是否启用"
)
private
Integer
boolUse
;
/**
* 省公司ID
*/
@ApiModelProperty
(
value
=
"省公司ID"
)
private
String
companyId
;
/**
* 省公司名称
*/
@ApiModelProperty
(
value
=
"省公司名称"
)
private
String
companyName
;
/**
* 显示顺序
*/
@ApiModelProperty
(
value
=
"显示顺序"
)
private
Integer
propDispidx
;
/**
* 模型编码
*/
@ApiModelProperty
(
value
=
"模型编码"
)
private
String
model_code
;
/**
* 版本
*/
@ApiModelProperty
(
value
=
"版本"
)
private
String
demandVersion
;
/**
* 提交人id
*/
@ApiModelProperty
(
value
=
"提交人id"
)
private
String
applyUserId
;
/**
* 提交人姓名
*/
@ApiModelProperty
(
value
=
"提交人姓名"
)
private
String
applyUserName
;
/**
* 流程类型
*/
@ApiModelProperty
(
value
=
"流程类型"
)
private
Integer
flowType
;
/**
* 需求描述
*/
@ApiModelProperty
(
value
=
"需求描述"
)
private
String
flowMessage
;
/**
* 需求审核状态
*/
@ApiModelProperty
(
value
=
"需求审核状态"
)
private
Integer
flowStatus
;
/**
* 审核意见
*/
@ApiModelProperty
(
value
=
"审核意见"
)
private
String
flowComment
;
/**
* 审核人id
*/
@ApiModelProperty
(
value
=
"审核人id"
)
private
String
flowUserId
;
/**
* 审核人姓名
*/
@ApiModelProperty
(
value
=
"审核人姓名"
)
private
String
flowUserName
;
}
// 字段名称 字段描述 字段类型 允许为NULL 备注
// demand_id 主键 varchar(42) 否
// model_id 模型编号 varchar(42) 否
// prop_id 属性编号 varchar(42) 是
// demand_version 版本 varchar(10) 是
// company_id 省公司ID varchar(42) 是
// company_name 省公司名称 varchar(50) 是
// apply_user_id 提交人id varchar(42) 否
// apply_user_name 提交人姓名 varchar(64) 否
// apply_ctime 创建时间 timestamp(6) 否
// flow_type 流程类型 int4 否 0:新增,1:迭代
// flow_message 需求描述 varchar(1000) 是
// flow_statu 需求审核状态 int4 是 0:不同意, 1:同意
// flow_comment 审核意见 varchar(100) 是
// flow_user_id 审核人id "varchar(42) " 是
// flow_user_name 审核人姓名 varchar(64) 是
// flow_mtime 审核时间 timestamp(6) 是
// "applyUserId": "",
// "applyUserName": "",
// "companyId": "",
// "companyName": "",
// "demandVersion": "",
// "flowComment": "",
// "flowMessage": "",
// "flowStatu": 0,
// "flowType": 0,
// "flowUserId": "",
// "flowUserName": "",
// "model_code": "",
// "model_name": "",
// "model_table": ""
src/main/java/com/pms/ocp/model/dto/ModelDemandDTO.java
0 → 100644
View file @
58b21702
package
com.pms.ocp.model.dto
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
/**
* @Auther: wangjian
* @Date: 2022/3/29 17:27
* @Description:模型需求传输对象
*/
@ApiModel
(
"模型需求传输对象"
)
@Data
public
class
ModelDemandDTO
{
/**
* 目标类型
*/
@ApiModelProperty
(
value
=
"目标类型(1=表;2=属性)"
)
private
String
targetType
;
/**
* 模型编号
*/
@ApiModelProperty
(
value
=
"模型编号"
)
private
String
modelId
;
/**
* 属性名称
*/
@ApiModelProperty
(
value
=
"属性名称"
)
private
String
columnName
;
/**
* 属性编码
*/
@ApiModelProperty
(
value
=
"属性编码"
)
private
String
columnCode
;
/**
* 属性描述
*/
@ApiModelProperty
(
value
=
"属性描述"
)
private
String
columnComments
;
/**
* 数据类型
*/
@ApiModelProperty
(
value
=
"数据类型"
)
private
Integer
dataType
;
/**
* 数据长度
*/
@ApiModelProperty
(
value
=
"数据长度"
)
private
Integer
dataLength
;
/**
* 数据精度
*/
@ApiModelProperty
(
value
=
"数据精度"
)
private
Integer
dataScale
;
/**
* 是否主键
*/
@ApiModelProperty
(
value
=
"是否主键"
)
private
Integer
boolPk
;
/**
* 是否必填
*/
@ApiModelProperty
(
value
=
"是否必填"
)
private
Integer
boolRequired
;
/**
* 推广类型
*/
@ApiModelProperty
(
value
=
"推广类型"
)
private
Integer
propPromotion
;
/**
* 是否启用
*/
@ApiModelProperty
(
value
=
"是否启用"
)
private
Integer
boolUse
;
/**
* 省公司ID
*/
@ApiModelProperty
(
value
=
"省公司ID"
)
private
String
companyId
;
/**
* 省公司名称
*/
@ApiModelProperty
(
value
=
"省公司名称"
)
private
String
companyName
;
/**
* 显示顺序
*/
@ApiModelProperty
(
value
=
"显示顺序"
)
private
Integer
propDispidx
;
/**
* 模型编码
*/
@ApiModelProperty
(
value
=
"模型编码"
)
private
String
model_code
;
/**
* 版本
*/
@ApiModelProperty
(
value
=
"版本"
)
private
String
demandVersion
;
/**
* 提交人id
*/
@ApiModelProperty
(
value
=
"提交人id"
)
private
String
applyUserId
;
/**
* 提交人姓名
*/
@ApiModelProperty
(
value
=
"提交人姓名"
)
private
String
applyUserName
;
/**
* 流程类型
*/
@ApiModelProperty
(
value
=
"流程类型"
)
private
Integer
flowType
;
/**
* 需求描述
*/
@ApiModelProperty
(
value
=
"需求描述"
)
private
String
flowMessage
;
/**
* 需求审核状态
*/
@ApiModelProperty
(
value
=
"需求审核状态"
)
private
Integer
flowStatus
;
/**
* 审核意见
*/
@ApiModelProperty
(
value
=
"审核意见"
)
private
String
flowComment
;
/**
* 审核人id
*/
@ApiModelProperty
(
value
=
"审核人id"
)
private
String
flowUserId
;
/**
* 审核人姓名
*/
@ApiModelProperty
(
value
=
"审核人姓名"
)
private
String
flowUserName
;
/**
* 模型名称
*/
@ApiModelProperty
(
value
=
"模型名称"
)
private
String
model_name
;
/**
* 模型表名称
*/
@ApiModelProperty
(
value
=
"模型表名称"
)
private
String
model_table
;
}
// 字段名称 字段描述 字段类型 允许为NULL 备注
// demand_id 主键 varchar(42) 否
// model_id 模型编号 varchar(42) 否
// prop_id 属性编号 varchar(42) 是
// demand_version 版本 varchar(10) 是
// company_id 省公司ID varchar(42) 是
// company_name 省公司名称 varchar(50) 是
// apply_user_id 提交人id varchar(42) 否
// apply_user_name 提交人姓名 varchar(64) 否
// apply_ctime 创建时间 timestamp(6) 否
// flow_type 流程类型 int4 否 0:新增,1:迭代
// flow_message 需求描述 varchar(1000) 是
// flow_statu 需求审核状态 int4 是 0:不同意, 1:同意
// flow_comment 审核意见 varchar(100) 是
// flow_user_id 审核人id "varchar(42) " 是
// flow_user_name 审核人姓名 varchar(64) 是
// flow_mtime 审核时间 timestamp(6) 是
// "applyUserId": "",
// "applyUserName": "",
// "companyId": "",
// "companyName": "",
// "demandVersion": "",
// "flowComment": "",
// "flowMessage": "",
// "flowStatu": 0,
// "flowType": 0,
// "flowUserId": "",
// "flowUserName": "",
// "model_code": "",
// "model_name": "",
// "model_table": ""
src/main/java/com/pms/ocp/model/entity/ModelBaseVersion.java
0 → 100644
View file @
58b21702
package
com.pms.ocp.model.entity
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
lombok.Data
;
/**
* @Auther: wangjian
* @Date: 2022/3/30 17:17
* @Description:模型基础信息版本表对象
*/
@Data
@TableName
(
"ocp_model_base_ver"
)
public
class
ModelBaseVersion
{
/**
* 主键
*/
@TableId
(
value
=
"model_id"
,
type
=
IdType
.
ASSIGN_ID
)
private
String
modelId
;
/**
* 模型名称
*/
private
String
modelName
;
/**
* 模型编码
*/
private
String
modelCode
;
/**
* 模型分类id
*/
private
String
modelGroupId
;
/**
* 模型分类编码
*/
private
String
modelGroupCode
;
/**
* 模型分类名称
*/
private
String
modelGroupName
;
/**
* 模型表名称
*/
private
String
modelTable
;
/**
* 模型关联关系
*/
private
String
modelRelation
;
/**
* 推广类型
*/
private
Integer
modelPromotion
;
/**
* 省公司ID
*/
private
String
companyId
;
/**
* 省公司名称
*/
private
String
companyName
;
}
// 字段名称 字段描述 字段类型 允许为NULL 备注
// model_id 主键 varchar(40) 否
// model_name 模型名称 varchar(50) 否
// model_code 模型编码 varchar(42) 否
// model_group_id 模型分类id varchar(42) 否
// model_group_name 模型分类名称 varchar(50) 否
// model_table 模型表名称 varchar(50) 否
// model_relation 模型关联关系 text 是 存储模型之间的关系json格式;例如[{ model_group_id : t_public_manage_model_group.group_id}]
// model_promotion 推广类型 int4 否 0:统推,1:自建
// company_id 省公司ID varchar(42) 是
// company_name 省公司名称 varchar(50) 是
src/main/java/com/pms/ocp/model/entity/ModelDemand.java
0 → 100644
View file @
58b21702
package
com.pms.ocp.model.entity
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
lombok.Data
;
import
java.time.LocalDateTime
;
/**
* @Auther: wangjian
* @Date: 2022/3/29 17:27
* @Description:模型需求对象
*/
@Data
@TableName
(
"ocp_model_demand"
)
public
class
ModelDemand
{
/**
* 主键
*/
@TableId
(
"demand_id"
)
private
String
demandId
;
/**
* 模型编号
*/
private
String
modelId
;
/**
* 属性编号
*/
private
String
propId
;
/**
* 版本
*/
private
String
demandVersion
;
/**
* 省公司ID
*/
private
String
companyId
;
/**
* 省公司名称
*/
private
String
companyName
;
/**
* 提交人id
*/
private
String
applyUserId
;
/**
* 提交人姓名
*/
private
String
applyUserName
;
/**
* 创建时间
*/
private
LocalDateTime
applyCtime
;
/**
* 流程类型
*/
private
Integer
flowType
;
/**
* 需求描述
*/
private
String
flowMessage
;
/**
* 需求审核状态
*/
private
Integer
flowStatus
;
/**
* 审核意见
*/
private
String
flowComment
;
/**
* 审核人id
*/
private
String
flowUserId
;
/**
* 审核人姓名
*/
private
String
flowUserName
;
/**
* 审核时间
*/
private
LocalDateTime
flowMtime
;
}
// 字段名称 字段描述 字段类型 允许为NULL 备注
// demand_id 主键 varchar(42) 否
// model_id 模型编号 varchar(42) 否
// prop_id 属性编号 varchar(42) 是
// demand_version 版本 varchar(10) 是
// company_id 省公司ID varchar(42) 是
// company_name 省公司名称 varchar(50) 是
// apply_user_id 提交人id varchar(42) 否
// apply_user_name 提交人姓名 varchar(64) 否
// apply_ctime 创建时间 timestamp(6) 否
// flow_type 流程类型 int4 否 0:新增,1:迭代
// flow_message 需求描述 varchar(1000) 是
// flow_statu 需求审核状态 int4 是 0:不同意, 1:同意
// flow_comment 审核意见 varchar(100) 是
// flow_user_id 审核人id "varchar(42) " 是
// flow_user_name 审核人姓名 varchar(64) 是
// flow_mtime 审核时间 timestamp(6) 是
src/main/java/com/pms/ocp/model/entity/ModelPropertyVersion.java
0 → 100644
View file @
58b21702
package
com.pms.ocp.model.entity
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
lombok.Data
;
/**
* @Auther: wangjian
* @Date: 2022/3/30 17:26
* @Description:模型属性版本表对象
*/
@Data
@TableName
(
"ocp_model_prop_ver"
)
public
class
ModelPropertyVersion
{
/**
* 主键
*/
@TableId
(
value
=
"prop_id"
,
type
=
IdType
.
ASSIGN_ID
)
private
String
propId
;
/**
* 模型id
*/
private
String
modelId
;
/**
* 属性名称
*/
private
String
columnName
;
/**
* 属性编码
*/
private
String
columnCode
;
/**
* 属性描述
*/
private
String
columnComments
;
/**
* 数据类型
*/
private
Integer
dataType
;
/**
* 数据长度
*/
private
Integer
dataLength
;
/**
* 数据精度
*/
private
Integer
dataScale
;
/**
* 是否主键
*/
@TableField
(
"is_pk"
)
private
Integer
boolPk
;
/**
* 是否必填
*/
@TableField
(
"is_required"
)
private
Integer
boolRequired
;
/**
* 推广类型
*/
private
Integer
propPromotion
;
/**
* 是否启用
*/
@TableField
(
"is_use"
)
private
Integer
boolUse
;
/**
* 省公司ID
*/
private
String
companyId
;
/**
* 省公司名称
*/
private
String
companyName
;
/**
* 显示顺序
*/
private
Integer
propDispidx
;
}
// t_public_manage_model_prop_ver
// 字段名称 字段描述 字段类型 允许为NULL 备注
// prop_id 主键 varchar(42) 否
// model_id 模型id varchar(42) 否
// column_name 属性名称 varchar(50) 否
// column_code 属性编码 varchar(42) 否
// column_comments 属性描述 varchar(50) 否
// data_type 数据类型 int4 否
// data_length 数据长度 int4 是
// data_scale 数据精度 int4 是
// is_pk 是否主键 int4 否 0:否,1:是
// is_required 是否必填 int4 是 0:否,1:是
// prop_promotion 推广类型 int4 是 0:统推,1:自建
// is_use 是否启用 int4 0:待启用,1:启用,2:废弃
// company_id 省公司ID varchar(42) 是
// company_name 省公司名称 varchar(50) 是
// prop_dispidx 显示顺序 int4 否
src/main/java/com/pms/ocp/service/ModelBaseVersionService.java
0 → 100644
View file @
58b21702
package
com.pms.ocp.service
;
import
com.pms.ocp.model.entity.ModelBaseVersion
;
import
com.pms.ocp.model.vo.ResponseVO
;
import
java.util.List
;
/**
* @Auther: wangjian
* @Date: 2022/4/1 09:47
* @Description:模型基础信息版本业务层接口
*/
public
interface
ModelBaseVersionService
{
/**
* 创建模型基础版本信息
*
* @param modelBaseVersion
* @return
*/
Integer
createModelBaseVersion
(
ModelBaseVersion
modelBaseVersion
);
/**
* 删除模型基础版本信息
*
* @param modelId
* @param modelCode
* @return
*/
Integer
deleteModelBaseVersion
(
String
modelId
,
String
modelCode
);
/**
* 更新模型基础版本信息
*
* @param modelBaseVersion
* @return
*/
Integer
updateModelBaseVersion
(
ModelBaseVersion
modelBaseVersion
);
/**
* 获取模型列表
*
* @param modelCodeList
* @return
*/
ResponseVO
getModelBaseVersionList
(
List
<
String
>
modelCodeList
,
Integer
currentPage
,
Integer
pageSize
);
}
src/main/java/com/pms/ocp/service/ModelDemandService.java
0 → 100644
View file @
58b21702
package
com.pms.ocp.service
;
import
com.pms.ocp.model.dto.ModelDTO
;
import
com.pms.ocp.model.entity.ModelDemand
;
import
java.util.List
;
/**
* @Auther: wangjian
* @Date: 2022/3/29 17:43
* @Description:模型需求业务层接口
*/
public
interface
ModelDemandService
{
/**
* 创建模型需求
*
* @param modelDemand
* @return
*/
Integer
createModelDemand
(
ModelDemand
modelDemand
);
/**
* 删除模型需求
*
* @param demandId
* @param modelId
* @return
*/
Integer
deleteModelDemand
(
String
demandId
,
String
modelId
);
/**
* 更新模型需求
*
* @param modelDemand
* @return
*/
Integer
updateModelDemand
(
ModelDemand
modelDemand
);
/**
* 获取模型需求
*
* @param
* @return
*/
List
<
ModelDemand
>
getModelDemandList
(
List
<
String
>
modelIds
);
/**
* 获取模型需求列表
*
* @param objId
* @param modelCode
* @return
*/
ModelDemand
getModelDemand
(
String
objId
,
String
modelCode
);
}
src/main/java/com/pms/ocp/service/ModelPropertyVersionService.java
0 → 100644
View file @
58b21702
package
com.pms.ocp.service
;
import
com.pms.ocp.model.entity.ModelPropertyVersion
;
/**
* @Auther: wangjian
* @Date: 2022/4/1 09:47
* @Description:模型属性版本业务层接口
*/
public
interface
ModelPropertyVersionService
{
/**
* 创建模型属性版本信息
*
* @param modelPropertyVersion
* @return
*/
Integer
createModelPropertyVersion
(
ModelPropertyVersion
modelPropertyVersion
);
/**
* 删除模型属性版本信息
*
* @param columnCode
* @param propId
* @return
*/
Integer
deleteModelPropertyVersion
(
String
propId
,
String
columnCode
);
/**
* 更新模型属性版本信息
*
* @param modelPropertyVersion
* @return
*/
Integer
updateModelPropertyVersion
(
ModelPropertyVersion
modelPropertyVersion
);
}
src/main/java/com/pms/ocp/service/ModelService.java
View file @
58b21702
...
...
@@ -49,7 +49,7 @@ public interface ModelService {
Boolean
importModel
(
MultipartFile
file
)
throws
IOException
;
/**
* 获取模型
* 获取模型
列表
*
* @param
* @return
...
...
@@ -57,7 +57,7 @@ public interface ModelService {
List
<
Model
>
getModelList
(
String
objId
,
String
modelCode
,
List
<
String
>
ownerCompanyCodes
,
List
<
String
>
modelGroupCodes
);
/**
* 获取模型
列表
* 获取模型
*
* @param objId
* @param modelCode
...
...
@@ -65,5 +65,15 @@ public interface ModelService {
*/
Model
getModel
(
String
objId
,
String
modelCode
);
/**
* 获取模型列表
*
* @param belongLevel
* @param modelCode
* @param currentPage
* @param pageSize
* @param searchCondition
* @return
*/
ResponseVO
getModeBaselList
(
String
belongLevel
,
String
modelCode
,
Integer
currentPage
,
Integer
pageSize
,
String
searchCondition
);
}
src/main/java/com/pms/ocp/service/impl/ModelBaseVersionServiceImpl.java
0 → 100644
View file @
58b21702
package
com.pms.ocp.service.impl
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper
;
import
com.pms.ocp.mapper.ModelBaseVersionMapper
;
import
com.pms.ocp.model.entity.ModelBaseVersion
;
import
com.pms.ocp.model.vo.ResponseVO
;
import
com.pms.ocp.service.ModelBaseVersionService
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
/**
* @Auther: wangjian
* @Date: 2022/4/1 11:21
* @Description:模型基础信息版本需求业务接口实现层
*/
@Service
public
class
ModelBaseVersionServiceImpl
implements
ModelBaseVersionService
{
@Autowired
private
ModelBaseVersionMapper
modelBaseVersionMapper
;
@Override
public
Integer
createModelBaseVersion
(
ModelBaseVersion
modelBaseVersion
)
{
return
modelBaseVersionMapper
.
insert
(
modelBaseVersion
);
}
@Override
public
Integer
deleteModelBaseVersion
(
String
modelId
,
String
modelCode
)
{
QueryWrapper
<
ModelBaseVersion
>
queryWrapper
=
new
QueryWrapper
();
if
(
StringUtils
.
isNotEmpty
(
modelId
))
{
queryWrapper
.
lambda
().
eq
(
ModelBaseVersion:
:
getModelId
,
modelId
);
}
if
(
StringUtils
.
isNotEmpty
(
modelCode
))
{
queryWrapper
.
lambda
().
eq
(
ModelBaseVersion:
:
getModelCode
,
modelCode
);
}
return
modelBaseVersionMapper
.
delete
(
queryWrapper
);
}
@Override
public
Integer
updateModelBaseVersion
(
ModelBaseVersion
modelBaseVersion
)
{
UpdateWrapper
<
ModelBaseVersion
>
updateWrapper
=
new
UpdateWrapper
<>();
updateWrapper
.
lambda
().
eq
(
ModelBaseVersion:
:
getModelId
,
modelBaseVersion
.
getModelId
());
return
modelBaseVersionMapper
.
update
(
modelBaseVersion
,
updateWrapper
);
}
@Override
public
ResponseVO
getModelBaseVersionList
(
List
<
String
>
modelGroupCodeList
,
Integer
currentPage
,
Integer
pageSize
)
{
QueryWrapper
<
ModelBaseVersion
>
queryWrapper
=
new
QueryWrapper
();
if
(!
modelGroupCodeList
.
isEmpty
())
{
queryWrapper
.
lambda
().
in
(
ModelBaseVersion:
:
getModelGroupCode
,
modelGroupCodeList
);
}
modelBaseVersionMapper
.
selectList
(
queryWrapper
);
return
null
;
}
}
src/main/java/com/pms/ocp/service/impl/ModelDemandServiceImpl.java
0 → 100644
View file @
58b21702
package
com.pms.ocp.service.impl
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper
;
import
com.pms.ocp.mapper.ModelDemandMapper
;
import
com.pms.ocp.model.entity.ModelDemand
;
import
com.pms.ocp.service.ModelDemandService
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
/**
* @Auther: wangjian
* @Date: 2022/3/29 17:43
* @Description:模型需求业务层接口实现
*/
@Service
public
class
ModelDemandServiceImpl
implements
ModelDemandService
{
@Autowired
private
ModelDemandMapper
modelDemandMapper
;
@Override
public
Integer
createModelDemand
(
ModelDemand
modelDemand
)
{
return
modelDemandMapper
.
insert
(
modelDemand
);
}
@Override
public
Integer
deleteModelDemand
(
String
demandId
,
String
modelId
)
{
QueryWrapper
<
ModelDemand
>
queryWrapper
=
new
QueryWrapper
();
if
(
StringUtils
.
isNotEmpty
(
demandId
))
{
queryWrapper
.
lambda
().
eq
(
ModelDemand:
:
getDemandId
,
demandId
);
}
if
(
StringUtils
.
isNotEmpty
(
modelId
))
{
queryWrapper
.
lambda
().
eq
(
ModelDemand:
:
getModelId
,
modelId
);
}
return
modelDemandMapper
.
delete
(
queryWrapper
);
}
@Override
public
Integer
updateModelDemand
(
ModelDemand
modelDemand
)
{
UpdateWrapper
<
ModelDemand
>
updateWrapper
=
new
UpdateWrapper
<>();
updateWrapper
.
lambda
().
eq
(
ModelDemand:
:
getDemandId
,
modelDemand
.
getDemandId
());
return
modelDemandMapper
.
update
(
modelDemand
,
updateWrapper
);
}
@Override
public
List
<
ModelDemand
>
getModelDemandList
(
List
<
String
>
modelIds
)
{
QueryWrapper
<
ModelDemand
>
wrapper
=
new
QueryWrapper
<>();
if
(!
modelIds
.
isEmpty
())
{
wrapper
.
lambda
().
in
(
ModelDemand:
:
getModelId
,
modelIds
);
}
return
modelDemandMapper
.
selectList
(
wrapper
);
}
@Override
public
ModelDemand
getModelDemand
(
String
objId
,
String
modelCode
)
{
return
null
;
}
}
src/main/java/com/pms/ocp/service/impl/ModelPropertyVersionServiceImpl.java
0 → 100644
View file @
58b21702
package
com.pms.ocp.service.impl
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper
;
import
com.pms.ocp.mapper.ModelPropertyVersionMapper
;
import
com.pms.ocp.model.entity.ModelPropertyVersion
;
import
com.pms.ocp.service.ModelPropertyVersionService
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
/**
* @Auther: wangjian
* @Date: 2022/4/1 14:57
* @Description:模型属性版本业务层接口实现
*/
@Service
public
class
ModelPropertyVersionServiceImpl
implements
ModelPropertyVersionService
{
@Autowired
private
ModelPropertyVersionMapper
modelPropertyVersionMapper
;
@Override
public
Integer
createModelPropertyVersion
(
ModelPropertyVersion
modelPropertyVersion
)
{
return
modelPropertyVersionMapper
.
insert
(
modelPropertyVersion
);
}
@Override
public
Integer
deleteModelPropertyVersion
(
String
propId
,
String
columnCode
)
{
QueryWrapper
<
ModelPropertyVersion
>
queryWrapper
=
new
QueryWrapper
();
if
(
StringUtils
.
isNotEmpty
(
propId
))
{
queryWrapper
.
lambda
().
eq
(
ModelPropertyVersion:
:
getPropId
,
propId
);
}
if
(
StringUtils
.
isNotEmpty
(
columnCode
))
{
queryWrapper
.
lambda
().
eq
(
ModelPropertyVersion:
:
getColumnCode
,
columnCode
);
}
return
modelPropertyVersionMapper
.
delete
(
queryWrapper
);
}
@Override
public
Integer
updateModelPropertyVersion
(
ModelPropertyVersion
modelPropertyVersion
)
{
UpdateWrapper
<
ModelPropertyVersion
>
updateWrapper
=
new
UpdateWrapper
<>();
updateWrapper
.
lambda
().
eq
(
ModelPropertyVersion:
:
getModelId
,
modelPropertyVersion
.
getModelId
());
return
modelPropertyVersionMapper
.
update
(
modelPropertyVersion
,
updateWrapper
);
}
}
src/main/resources/application-local.yml
View file @
58b21702
...
...
@@ -2,11 +2,11 @@ spring:
datasource
:
driver-class-name
:
org.postgresql.Driver
username
:
postgres
password
:
root
password
:
1234
type
:
com.zaxxer.hikari.HikariDataSource
# jdbc-url: jdbc:postgresql://192.168.43.20:33072/pms3?currentSchema=public&stringtype=unspecified&TimeZone=Asia/Shanghai&useAffectedRows=true
# jdbc-url: jdbc:postgresql://172.20.10.9:33072/pms3?currentSchema=public&stringtype=unspecified&TimeZone=Asia/Shanghai&useAffectedRows=true
url
:
jdbc:postgresql://localhost:5432/
postgres
?currentSchema=operating_platform&stringtype=unspecified&TimeZone=Asia/Shanghai&useAffectedRows=true
url
:
jdbc:postgresql://localhost:5432/
operatemonitordb
?currentSchema=operating_platform&stringtype=unspecified&TimeZone=Asia/Shanghai&useAffectedRows=true
knife4j
:
enable
:
true
...
...
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