Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
ghsby
o2oa
提交
951d5143
o2oa
项目概览
ghsby
/
o2oa
落后 Fork 源项目 2880 个版本
Fork自
浙江兰德纵横网络技术股份有限公司 / o2oa
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
o2oa
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
951d5143
编写于
9月 04, 2020
作者:
Z
zhourui
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add proxy
上级
56a75bcc
变更
19
隐藏空白更改
内联
并排
Showing
19 changed file
with
757 addition
and
509 deletion
+757
-509
o2server/configSample/node_127.0.0.1.json
o2server/configSample/node_127.0.0.1.json
+3
-1
o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/WebServer.java
...c/main/java/com/x/base/core/project/config/WebServer.java
+24
-0
o2server/x_base_core_project/src/main/java/com/x/base/core/project/x_processplatform_assemble_designer.java
...ase/core/project/x_processplatform_assemble_designer.java
+3
-2
o2server/x_base_core_project/src/main/java/com/x/base/core/project/x_processplatform_assemble_surface.java
...base/core/project/x_processplatform_assemble_surface.java
+3
-2
o2server/x_console/src/main/java/com/x/server/console/server/web/WebServerTools.java
.../java/com/x/server/console/server/web/WebServerTools.java
+5
-0
o2server/x_processplatform_assemble_designer/src/main/java/com/x/processplatform/assemble/designer/jaxrs/form/ActionCreate.java
...ssplatform/assemble/designer/jaxrs/form/ActionCreate.java
+52
-2
o2server/x_processplatform_assemble_designer/src/main/java/com/x/processplatform/assemble/designer/jaxrs/form/ActionEdit.java
...cessplatform/assemble/designer/jaxrs/form/ActionEdit.java
+57
-6
o2server/x_processplatform_assemble_surface/pom.xml
o2server/x_processplatform_assemble_surface/pom.xml
+8
-0
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/Business.java
...java/com/x/processplatform/assemble/surface/Business.java
+64
-62
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/factory/cms/CmsFactory.java
...cessplatform/assemble/surface/factory/cms/CmsFactory.java
+21
-0
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/factory/cms/ScriptFactory.java
...splatform/assemble/surface/factory/cms/ScriptFactory.java
+17
-0
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/factory/portal/PortalFactory.java
...atform/assemble/surface/factory/portal/PortalFactory.java
+21
-0
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/factory/portal/ScriptFactory.java
...atform/assemble/surface/factory/portal/ScriptFactory.java
+17
-0
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/form/ActionGetWithWorkOrWorkCompleted.java
.../surface/jaxrs/form/ActionGetWithWorkOrWorkCompleted.java
+53
-174
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/form/ActionGetWithWorkOrWorkCompletedMobile.java
...ce/jaxrs/form/ActionGetWithWorkOrWorkCompletedMobile.java
+53
-174
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/form/BaseAction.java
...ocessplatform/assemble/surface/jaxrs/form/BaseAction.java
+215
-1
o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/content/WorkCompletedProperties.java
...platform/core/entity/content/WorkCompletedProperties.java
+58
-1
o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/element/Form.java
.../java/com/x/processplatform/core/entity/element/Form.java
+26
-84
o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/element/FormProperties.java
...x/processplatform/core/entity/element/FormProperties.java
+57
-0
未找到文件。
o2server/configSample/node_127.0.0.1.json
浏览文件 @
951d5143
...
...
@@ -78,7 +78,9 @@
"###dirAllowed"
:
"允许浏览目录,###"
,
"###statEnable"
:
"启用统计,默认启用统计.###"
,
"###statExclusions"
:
"统计忽略路径,默认忽略*.gif,*.jpg,*.png,*.ico###"
,
"###cacheControlMaxAge"
:
"服务器max-age缓存时间(秒)###"
"###cacheControlMaxAge"
:
"服务器max-age缓存时间(秒)###"
,
"###proxyCenterEnable"
:
"是否启用center服务器代理.###"
,
"###proxyApplicationEnable"
:
"是否启用application服务器代理###"
},
"data"
:
{
"enable"
:
true
,
...
...
o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/WebServer.java
浏览文件 @
951d5143
...
...
@@ -31,6 +31,8 @@ public class WebServer extends ConfigObject {
private
static
final
Boolean
DEFAULT_STATENABLE
=
false
;
private
static
final
String
DEFAULT_STATEXCLUSIONS
=
"*.gif,*.jpg,*.png,*.ico"
;
private
static
final
Integer
DEFAULT_CACHECONTROLMAXAGE
=
0
;
private
static
final
Boolean
DEFAULT_PROXYCENTERENABLE
=
true
;
private
static
final
Boolean
DEFAULT_PROXYAPPLICATIONENABLE
=
true
;
@FieldDescribe
(
"是否启用"
)
private
Boolean
enable
;
...
...
@@ -53,6 +55,20 @@ public class WebServer extends ConfigObject {
@FieldDescribe
(
"服务器max-age缓存时间(秒)"
)
private
Integer
cacheControlMaxAge
;
@FieldDescribe
(
"是否启用center服务器代理."
)
private
Boolean
proxyCenterEnable
;
@FieldDescribe
(
"是否启用application服务器代理"
)
private
Boolean
proxyApplicationEnable
;
public
Boolean
getProxyCenterEnable
()
{
return
proxyCenterEnable
==
null
?
DEFAULT_PROXYCENTERENABLE
:
this
.
proxyCenterEnable
;
}
public
Boolean
getProxyApplicationEnable
()
{
return
proxyApplicationEnable
==
null
?
DEFAULT_PROXYAPPLICATIONENABLE
:
this
.
proxyApplicationEnable
;
}
public
Integer
getCacheControlMaxAge
()
{
if
(
cacheControlMaxAge
==
null
||
cacheControlMaxAge
<
0
)
{
return
DEFAULT_CACHECONTROLMAXAGE
;
...
...
@@ -136,4 +152,12 @@ public class WebServer extends ConfigObject {
this
.
weight
=
weight
;
}
public
void
setProxyApplicationEnable
(
Boolean
proxyApplicationEnable
)
{
this
.
proxyApplicationEnable
=
proxyApplicationEnable
;
}
public
void
setProxyCenterEnable
(
Boolean
proxyCenterEnable
)
{
this
.
proxyCenterEnable
=
proxyCenterEnable
;
}
}
o2server/x_base_core_project/src/main/java/com/x/base/core/project/x_processplatform_assemble_designer.java
浏览文件 @
951d5143
...
...
@@ -29,9 +29,10 @@ import com.x.base.core.project.annotation.ModuleType;
"com.x.processplatform.core.entity.element.ApplicationDictItem"
,
"com.x.processplatform.core.entity.element.QueryView"
,
"com.x.processplatform.core.entity.element.QueryStat"
,
"com.x.processplatform.core.entity.element.Mapping"
,
"com.x.query.core.entity.Item"
,
"com.x.cms.core.entity.element.Script"
,
"com.x.portal.core.entity.Script"
,
"com.x.query.dynamic.entity.*"
},
storeJars
=
{
"x_organization_core_entity"
,
"x_organization_core_express"
,
"x_processplatform_core_entity"
,
"x_processplatform_core_express"
,
"x_
query
_core_entity"
},
dynamicJars
=
{
"x_processplatform_core_entity"
,
"x_processplatform_core_express"
,
"x_query_core_entity"
,
"x_
cms_core_entity"
,
"x_portal
_core_entity"
},
dynamicJars
=
{
"x_query_dynamic_entity"
,
},
storageTypes
=
{
StorageType
.
processPlatform
})
public
class
x_processplatform_assemble_designer
extends
Deployable
{
...
...
o2server/x_base_core_project/src/main/java/com/x/base/core/project/x_processplatform_assemble_surface.java
浏览文件 @
951d5143
...
...
@@ -28,8 +28,9 @@ import com.x.base.core.project.annotation.ModuleType;
"com.x.processplatform.core.entity.element.Script"
,
"com.x.processplatform.core.entity.element.Service"
,
"com.x.processplatform.core.entity.element.Split"
,
"com.x.processplatform.core.entity.element.QueryView"
,
"com.x.processplatform.core.entity.element.QueryStat"
,
"com.x.processplatform.core.entity.element.Mapping"
,
"com.x.query.core.entity.Item"
},
storageTypes
=
{
StorageType
.
processPlatform
},
storeJars
=
{
"com.x.query.core.entity.Item"
,
"com.x.cms.core.entity.element.Script"
,
"com.x.portal.core.entity.Script"
},
storageTypes
=
{
StorageType
.
processPlatform
},
storeJars
=
{
"x_organization_core_entity"
,
"x_organization_core_express"
,
"x_processplatform_core_entity"
,
"x_processplatform_core_express"
,
"x_query_core_entity"
})
"x_processplatform_core_express"
,
"x_query_core_entity"
,
"x_cms_core_entity"
,
"x_portal_core_entity"
})
public
class
x_processplatform_assemble_surface
extends
Deployable
{
}
o2server/x_console/src/main/java/com/x/server/console/server/web/WebServerTools.java
浏览文件 @
951d5143
package
com.x.server.console.server.web
;
import
java.io.File
;
import
java.nio.file.Files
;
import
java.nio.file.Path
;
import
java.util.ArrayList
;
import
java.util.EnumSet
;
import
java.util.HashMap
;
...
...
@@ -9,11 +11,13 @@ import java.util.List;
import
java.util.Map
;
import
java.util.Map.Entry
;
import
java.util.Objects
;
import
java.util.stream.Stream
;
import
javax.servlet.DispatcherType
;
import
org.apache.commons.codec.binary.Base64
;
import
org.apache.commons.io.FileUtils
;
import
org.apache.commons.io.FilenameUtils
;
import
org.apache.commons.lang3.BooleanUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.eclipse.jetty.server.Server
;
...
...
@@ -27,6 +31,7 @@ import org.eclipse.jetty.webapp.WebAppContext;
import
com.alibaba.druid.support.http.StatViewServlet
;
import
com.alibaba.druid.support.http.WebStatFilter
;
import
com.google.gson.Gson
;
import
com.x.base.core.project.x_program_center
;
import
com.x.base.core.project.config.Config
;
import
com.x.base.core.project.config.WebServer
;
import
com.x.base.core.project.gson.XGsonBuilder
;
...
...
o2server/x_processplatform_assemble_designer/src/main/java/com/x/processplatform/assemble/designer/jaxrs/form/ActionCreate.java
浏览文件 @
951d5143
...
...
@@ -2,7 +2,9 @@ package com.x.processplatform.assemble.designer.jaxrs.form;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.LinkedHashMap
;
import
java.util.List
;
import
java.util.Map
;
import
com.google.gson.JsonElement
;
import
com.x.base.core.container.EntityManagerContainer
;
...
...
@@ -12,7 +14,7 @@ import com.x.base.core.entity.annotation.CheckPersistType;
import
com.x.base.core.project.annotation.FieldDescribe
;
import
com.x.base.core.project.bean.WrapCopier
;
import
com.x.base.core.project.bean.WrapCopierFactory
;
import
com.x.base.core.project.cache.
CacheManager
;
import
com.x.base.core.project.cache.
ApplicationCache
;
import
com.x.base.core.project.http.ActionResult
;
import
com.x.base.core.project.http.EffectivePerson
;
import
com.x.base.core.project.jaxrs.WoId
;
...
...
@@ -44,6 +46,10 @@ class ActionCreate extends BaseAction {
form
.
setApplication
(
application
.
getId
());
form
.
setLastUpdatePerson
(
effectivePerson
.
getDistinguishedName
());
form
.
setLastUpdateTime
(
new
Date
());
form
.
getProperties
().
setRelatedFormList
(
wi
.
getRelatedFormList
());
form
.
getProperties
().
setMobileRelatedFormList
(
wi
.
getMobileRelatedFormList
());
form
.
getProperties
().
setRelatedScriptMap
(
wi
.
getRelatedScriptMap
());
form
.
getProperties
().
setMobileRelatedScriptMap
(
wi
.
getMobileRelatedScriptMap
());
emc
.
persist
(
form
,
CheckPersistType
.
all
);
emc
.
commit
();
List
<
FormField
>
formFields
=
WiFormField
.
copier
.
copy
(
wi
.
getFormFieldList
());
...
...
@@ -54,7 +60,7 @@ class ActionCreate extends BaseAction {
emc
.
persist
(
o
,
CheckPersistType
.
all
);
}
emc
.
commit
();
CacheManager
.
notify
(
Form
.
class
);
ApplicationCache
.
notify
(
Form
.
class
);
Wo
wo
=
new
Wo
();
wo
.
setId
(
form
.
getId
());
result
.
setData
(
wo
);
...
...
@@ -75,6 +81,18 @@ class ActionCreate extends BaseAction {
@FieldDescribe
(
"字段"
)
private
List
<
WiFormField
>
formFieldList
=
new
ArrayList
<>();
@FieldDescribe
(
"关联表单"
)
private
List
<
String
>
relatedFormList
=
new
ArrayList
<>();
@FieldDescribe
(
"移动端关联表单"
)
private
List
<
String
>
mobileRelatedFormList
=
new
ArrayList
<>();
@FieldDescribe
(
"关联脚本."
)
private
Map
<
String
,
String
>
relatedScriptMap
=
new
LinkedHashMap
<>();
@FieldDescribe
(
"移动端关联脚本."
)
private
Map
<
String
,
String
>
mobileRelatedScriptMap
=
new
LinkedHashMap
<>();
public
List
<
WiFormField
>
getFormFieldList
()
{
return
formFieldList
;
}
...
...
@@ -83,6 +101,38 @@ class ActionCreate extends BaseAction {
this
.
formFieldList
=
formFieldList
;
}
public
List
<
String
>
getRelatedFormList
()
{
return
relatedFormList
;
}
public
void
setRelatedFormList
(
List
<
String
>
relatedFormList
)
{
this
.
relatedFormList
=
relatedFormList
;
}
public
List
<
String
>
getMobileRelatedFormList
()
{
return
mobileRelatedFormList
;
}
public
void
setMobileRelatedFormList
(
List
<
String
>
mobileRelatedFormList
)
{
this
.
mobileRelatedFormList
=
mobileRelatedFormList
;
}
public
Map
<
String
,
String
>
getRelatedScriptMap
()
{
return
relatedScriptMap
;
}
public
void
setRelatedScriptMap
(
Map
<
String
,
String
>
relatedScriptMap
)
{
this
.
relatedScriptMap
=
relatedScriptMap
;
}
public
Map
<
String
,
String
>
getMobileRelatedScriptMap
()
{
return
mobileRelatedScriptMap
;
}
public
void
setMobileRelatedScriptMap
(
Map
<
String
,
String
>
mobileRelatedScriptMap
)
{
this
.
mobileRelatedScriptMap
=
mobileRelatedScriptMap
;
}
}
public
static
class
WiFormField
extends
FormField
{
...
...
o2server/x_processplatform_assemble_designer/src/main/java/com/x/processplatform/assemble/designer/jaxrs/form/ActionEdit.java
浏览文件 @
951d5143
...
...
@@ -2,7 +2,9 @@ package com.x.processplatform.assemble.designer.jaxrs.form;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.LinkedHashMap
;
import
java.util.List
;
import
java.util.Map
;
import
com.google.gson.JsonElement
;
import
com.x.base.core.container.EntityManagerContainer
;
...
...
@@ -12,7 +14,7 @@ import com.x.base.core.entity.annotation.CheckPersistType;
import
com.x.base.core.project.annotation.FieldDescribe
;
import
com.x.base.core.project.bean.WrapCopier
;
import
com.x.base.core.project.bean.WrapCopierFactory
;
import
com.x.base.core.project.cache.
CacheManager
;
import
com.x.base.core.project.cache.
ApplicationCache
;
import
com.x.base.core.project.http.ActionResult
;
import
com.x.base.core.project.http.EffectivePerson
;
import
com.x.base.core.project.jaxrs.WoId
;
...
...
@@ -22,6 +24,7 @@ import com.x.processplatform.assemble.designer.ThisApplication;
import
com.x.processplatform.core.entity.element.Application
;
import
com.x.processplatform.core.entity.element.Form
;
import
com.x.processplatform.core.entity.element.FormField
;
import
com.x.processplatform.core.entity.element.FormProperties
;
import
com.x.processplatform.core.entity.element.FormVersion
;
class
ActionEdit
extends
BaseAction
{
...
...
@@ -60,11 +63,15 @@ class ActionEdit extends BaseAction {
Wi
.
copier
.
copy
(
wi
,
form
);
form
.
setId
(
id
);
form
.
setApplication
(
application
.
getId
());
form
.
setLastUpdatePerson
(
effectivePerson
.
getDistinguishedName
());
form
.
setLastUpdateTime
(
new
Date
());
FormProperties
properties
=
new
FormProperties
();
properties
.
setRelatedFormList
(
wi
.
getRelatedFormList
());
properties
.
setMobileRelatedFormList
(
wi
.
getMobileRelatedFormList
());
properties
.
setRelatedScriptMap
(
wi
.
getRelatedScriptMap
());
properties
.
setMobileRelatedScriptMap
(
wi
.
getMobileRelatedScriptMap
());
form
.
setProperties
(
properties
);
emc
.
check
(
form
,
CheckPersistType
.
all
);
emc
.
commit
();
CacheManager
.
notify
(
Form
.
class
);
ApplicationCache
.
notify
(
Form
.
class
);
/* 保存历史版本 */
ThisApplication
.
formVersionQueue
.
send
(
new
FormVersion
(
form
.
getId
(),
jsonElement
));
Wo
wo
=
new
Wo
();
...
...
@@ -81,12 +88,24 @@ class ActionEdit extends BaseAction {
private
static
final
long
serialVersionUID
=
4289841165185269299L
;
static
WrapCopier
<
Wi
,
Form
>
copier
=
WrapCopierFactory
.
wi
(
Wi
.
class
,
Form
.
class
,
null
,
ListTools
.
toList
(
JpaObject
.
FieldsUnmodifyExcludeId
,
Form
.
lastUpdatePerson_FIELDNAME
,
Form
.
lastUpdateTime_FIELDNAME
));
static
WrapCopier
<
Wi
,
Form
>
copier
=
WrapCopierFactory
.
wi
(
Wi
.
class
,
Form
.
class
,
null
,
ListTools
.
toList
(
JpaObject
.
FieldsUnmodify
,
Form
.
lastUpdatePerson_FIELDNAME
,
Form
.
lastUpdateTime_FIELDNAME
));
@FieldDescribe
(
"字段"
)
private
List
<
WiFormField
>
formFieldList
=
new
ArrayList
<>();
@FieldDescribe
(
"关联表单"
)
private
List
<
String
>
relatedFormList
=
new
ArrayList
<>();
@FieldDescribe
(
"移动端关联表单"
)
private
List
<
String
>
mobileRelatedFormList
=
new
ArrayList
<>();
@FieldDescribe
(
"关联脚本."
)
private
Map
<
String
,
String
>
relatedScriptMap
=
new
LinkedHashMap
<>();
@FieldDescribe
(
"移动端关联脚本."
)
private
Map
<
String
,
String
>
mobileRelatedScriptMap
=
new
LinkedHashMap
<>();
public
List
<
WiFormField
>
getFormFieldList
()
{
return
formFieldList
;
}
...
...
@@ -95,6 +114,38 @@ class ActionEdit extends BaseAction {
this
.
formFieldList
=
formFieldList
;
}
public
List
<
String
>
getRelatedFormList
()
{
return
relatedFormList
;
}
public
void
setRelatedFormList
(
List
<
String
>
relatedFormList
)
{
this
.
relatedFormList
=
relatedFormList
;
}
public
List
<
String
>
getMobileRelatedFormList
()
{
return
mobileRelatedFormList
;
}
public
void
setMobileRelatedFormList
(
List
<
String
>
mobileRelatedFormList
)
{
this
.
mobileRelatedFormList
=
mobileRelatedFormList
;
}
public
Map
<
String
,
String
>
getRelatedScriptMap
()
{
return
relatedScriptMap
;
}
public
void
setRelatedScriptMap
(
Map
<
String
,
String
>
relatedScriptMap
)
{
this
.
relatedScriptMap
=
relatedScriptMap
;
}
public
Map
<
String
,
String
>
getMobileRelatedScriptMap
()
{
return
mobileRelatedScriptMap
;
}
public
void
setMobileRelatedScriptMap
(
Map
<
String
,
String
>
mobileRelatedScriptMap
)
{
this
.
mobileRelatedScriptMap
=
mobileRelatedScriptMap
;
}
}
public
static
class
WiFormField
extends
FormField
{
...
...
o2server/x_processplatform_assemble_surface/pom.xml
浏览文件 @
951d5143
...
...
@@ -36,6 +36,14 @@
<groupId>
o2oa
</groupId>
<artifactId>
x_processplatform_core_express
</artifactId>
</dependency>
<dependency>
<groupId>
o2oa
</groupId>
<artifactId>
x_cms_core_entity
</artifactId>
</dependency>
<dependency>
<groupId>
o2oa
</groupId>
<artifactId>
x_portal_core_entity
</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
...
...
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/Business.java
浏览文件 @
951d5143
...
...
@@ -20,6 +20,7 @@ import com.x.base.core.project.http.EffectivePerson;
import
com.x.base.core.project.organization.OrganizationDefinition
;
import
com.x.base.core.project.tools.ListTools
;
import
com.x.organization.core.express.Organization
;
import
com.x.processplatform.assemble.surface.factory.cms.CmsFactory
;
import
com.x.processplatform.assemble.surface.factory.content.AttachmentFactory
;
import
com.x.processplatform.assemble.surface.factory.content.ItemFactory
;
import
com.x.processplatform.assemble.surface.factory.content.JobFactory
;
...
...
@@ -54,6 +55,7 @@ import com.x.processplatform.assemble.surface.factory.element.RouteFactory;
import
com.x.processplatform.assemble.surface.factory.element.ScriptFactory
;
import
com.x.processplatform.assemble.surface.factory.element.ServiceFactory
;
import
com.x.processplatform.assemble.surface.factory.element.SplitFactory
;
import
com.x.processplatform.assemble.surface.factory.portal.PortalFactory
;
import
com.x.processplatform.core.entity.content.Attachment
;
import
com.x.processplatform.core.entity.content.Read
;
import
com.x.processplatform.core.entity.content.ReadCompleted
;
...
...
@@ -387,24 +389,6 @@ public class Business {
return
script
;
}
// private QueryViewFactory queryView;
//
// public QueryViewFactory queryView() throws Exception {
// if (null == this.queryView) {
// this.queryView = new QueryViewFactory(this);
// }
// return queryView;
// }
//
// private QueryStatFactory queryStat;
//
// public QueryStatFactory queryStat() throws Exception {
// if (null == this.queryStat) {
// this.queryStat = new QueryStatFactory(this);
// }
// return queryStat;
// }
private
FileFactory
file
;
public
FileFactory
file
()
throws
Exception
{
...
...
@@ -414,6 +398,24 @@ public class Business {
return
file
;
}
private
CmsFactory
cms
;
public
CmsFactory
cms
()
throws
Exception
{
if
(
null
==
this
.
cms
)
{
this
.
cms
=
new
CmsFactory
(
this
);
}
return
cms
;
}
private
PortalFactory
portal
;
public
PortalFactory
portal
()
throws
Exception
{
if
(
null
==
this
.
portal
)
{
this
.
portal
=
new
PortalFactory
(
this
);
}
return
portal
;
}
public
Activity
getActivity
(
Work
work
)
throws
Exception
{
return
this
.
getActivity
(
work
.
getActivity
(),
work
.
getActivityType
());
}
...
...
@@ -422,50 +424,50 @@ public class Business {
Activity
o
=
null
;
if
(
null
!=
activityType
)
{
switch
(
activityType
)
{
case
agent:
o
=
agent
().
pick
(
id
);
break
;
case
begin:
o
=
begin
().
pick
(
id
);
break
;
case
cancel:
o
=
cancel
().
pick
(
id
);
break
;
case
choice:
o
=
choice
().
pick
(
id
);
break
;
case
delay:
o
=
delay
().
pick
(
id
);
break
;
case
embed:
o
=
embed
().
pick
(
id
);
break
;
case
end:
o
=
end
().
pick
(
id
);
break
;
case
invoke:
o
=
invoke
().
pick
(
id
);
break
;
case
manual:
o
=
manual
().
pick
(
id
);
break
;
case
merge:
o
=
merge
().
pick
(
id
);
break
;
case
message:
o
=
message
().
pick
(
id
);
break
;
case
parallel:
o
=
parallel
().
pick
(
id
);
break
;
case
service:
o
=
service
().
pick
(
id
);
break
;
case
split:
o
=
service
().
pick
(
id
);
break
;
default
:
break
;
case
agent:
o
=
agent
().
pick
(
id
);
break
;
case
begin:
o
=
begin
().
pick
(
id
);
break
;
case
cancel:
o
=
cancel
().
pick
(
id
);
break
;
case
choice:
o
=
choice
().
pick
(
id
);
break
;
case
delay:
o
=
delay
().
pick
(
id
);
break
;
case
embed:
o
=
embed
().
pick
(
id
);
break
;
case
end:
o
=
end
().
pick
(
id
);
break
;
case
invoke:
o
=
invoke
().
pick
(
id
);
break
;
case
manual:
o
=
manual
().
pick
(
id
);
break
;
case
merge:
o
=
merge
().
pick
(
id
);
break
;
case
message:
o
=
message
().
pick
(
id
);
break
;
case
parallel:
o
=
parallel
().
pick
(
id
);
break
;
case
service:
o
=
service
().
pick
(
id
);
break
;
case
split:
o
=
service
().
pick
(
id
);
break
;
default
:
break
;
}
}
return
o
;
...
...
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/factory/cms/CmsFactory.java
0 → 100644
浏览文件 @
951d5143
package
com.x.processplatform.assemble.surface.factory.cms
;
import
com.x.processplatform.assemble.surface.AbstractFactory
;
import
com.x.processplatform.assemble.surface.Business
;
public
class
CmsFactory
extends
AbstractFactory
{
public
CmsFactory
(
Business
abstractBusiness
)
throws
Exception
{
super
(
abstractBusiness
);
}
private
ScriptFactory
script
;
public
ScriptFactory
script
()
throws
Exception
{
if
(
null
==
this
.
script
)
{
this
.
script
=
new
ScriptFactory
(
this
.
business
());
}
return
script
;
}
}
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/factory/cms/ScriptFactory.java
0 → 100644
浏览文件 @
951d5143
package
com.x.processplatform.assemble.surface.factory.cms
;
import
com.x.cms.core.entity.element.Script
;
import
com.x.processplatform.assemble.surface.Business
;
import
com.x.processplatform.assemble.surface.factory.element.ElementFactory
;
public
class
ScriptFactory
extends
ElementFactory
{
public
ScriptFactory
(
Business
abstractBusiness
)
throws
Exception
{
super
(
abstractBusiness
);
}
public
Script
pick
(
String
flag
)
throws
Exception
{
return
this
.
pick
(
flag
,
Script
.
class
);
}
}
\ No newline at end of file
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/factory/portal/PortalFactory.java
0 → 100644
浏览文件 @
951d5143
package
com.x.processplatform.assemble.surface.factory.portal
;
import
com.x.processplatform.assemble.surface.AbstractFactory
;
import
com.x.processplatform.assemble.surface.Business
;
public
class
PortalFactory
extends
AbstractFactory
{
public
PortalFactory
(
Business
abstractBusiness
)
throws
Exception
{
super
(
abstractBusiness
);
}
private
ScriptFactory
script
;
public
ScriptFactory
script
()
throws
Exception
{
if
(
null
==
this
.
script
)
{
this
.
script
=
new
ScriptFactory
(
this
.
business
());
}
return
script
;
}
}
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/factory/portal/ScriptFactory.java
0 → 100644
浏览文件 @
951d5143
package
com.x.processplatform.assemble.surface.factory.portal
;
import
com.x.portal.core.entity.Script
;
import
com.x.processplatform.assemble.surface.Business
;
import
com.x.processplatform.assemble.surface.factory.element.ElementFactory
;
public
class
ScriptFactory
extends
ElementFactory
{
public
ScriptFactory
(
Business
abstractBusiness
)
throws
Exception
{
super
(
abstractBusiness
);
}
public
Script
pick
(
String
flag
)
throws
Exception
{
return
this
.
pick
(
flag
,
Script
.
class
);
}
}
\ No newline at end of file
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/form/ActionGetWithWorkOrWorkCompleted.java
浏览文件 @
951d5143
package
com.x.processplatform.assemble.surface.jaxrs.form
;
import
java.util.HashMap
;
import
java.util.Map
;
import
java.util.Map.Entry
;
import
org.apache.commons.lang3.StringUtils
;
...
...
@@ -10,7 +9,6 @@ import com.x.base.core.container.EntityManagerContainer;
import
com.x.base.core.container.factory.EntityManagerContainerFactory
;
import
com.x.base.core.project.exception.ExceptionAccessDenied
;
import
com.x.base.core.project.exception.ExceptionEntityNotExist
;
import
com.x.base.core.project.gson.GsonPropertyObject
;
import
com.x.base.core.project.http.ActionResult
;
import
com.x.base.core.project.http.EffectivePerson
;
import
com.x.base.core.project.logger.Audit
;
...
...
@@ -20,6 +18,7 @@ import com.x.base.core.project.tools.PropertyTools;
import
com.x.processplatform.assemble.surface.Business
;
import
com.x.processplatform.core.entity.content.Work
;
import
com.x.processplatform.core.entity.content.WorkCompleted
;
import
com.x.processplatform.core.entity.content.WorkCompletedProperties
;
import
com.x.processplatform.core.entity.element.Activity
;
import
com.x.processplatform.core.entity.element.Form
;
import
com.x.processplatform.core.entity.element.Script
;
...
...
@@ -65,204 +64,84 @@ class ActionGetWithWorkOrWorkCompleted extends BaseAction {
if
(
StringUtils
.
isNotEmpty
(
id
))
{
Form
form
=
business
.
form
().
pick
(
id
);
if
(
null
!=
form
)
{
wo
.
setForm
(
toWoForm
(
form
));
wo
.
setForm
(
toWoForm
DataOrMobileData
(
form
));
related
(
business
,
wo
,
form
);
}
}
return
wo
;
}
private
void
related
(
Business
business
,
Wo
wo
,
Form
form
)
throws
Exception
{
if
(
StringUtils
.
isNotBlank
(
form
.
getData
()))
{
for
(
String
relatedFormId
:
form
.
getRelatedFormList
())
{
Form
relatedForm
=
business
.
form
().
pick
(
relatedFormId
);
if
(
null
!=
relatedForm
)
{
wo
.
getRelatedFormMap
().
put
(
relatedFormId
,
toWoForm
(
relatedForm
));
}
}
}
else
{
for
(
String
relatedFormId
:
form
.
getMobileRelatedFormList
())
{
Form
relatedForm
=
business
.
form
().
pick
(
relatedFormId
);
if
(
null
!=
relatedForm
)
{
wo
.
getRelatedFormMap
().
put
(
relatedFormId
,
toWoMobileForm
(
relatedForm
));
}
}
}
for
(
String
relatedScriptId
:
form
.
getRelatedScriptList
())
{
Script
relatedScript
=
business
.
script
().
pick
(
relatedScriptId
);
if
(
null
!=
relatedScript
)
{
wo
.
getRelatedScriptMap
().
put
(
relatedScriptId
,
toWoScript
(
relatedScript
));
}
}
}
private
Wo
workCompleted
(
Business
business
,
WorkCompleted
workCompleted
)
throws
Exception
{
Wo
wo
=
new
Wo
();
// 先使用当前库的表单,如果不存在使用储存的表单.
if
(
StringUtils
.
isNotEmpty
(
workCompleted
.
getForm
()))
{
Form
form
=
business
.
form
().
pick
(
workCompleted
.
getForm
());
if
(
null
!=
form
)
{
wo
.
setForm
(
toWoForm
(
form
));
wo
.
setForm
(
toWoForm
DataOrMobileData
(
form
));
related
(
business
,
wo
,
form
);
}
}
else
{
if
(
null
!=
workCompleted
.
getProperties
().
getForm
())
{
wo
.
form
=
toWoForm
(
workCompleted
.
getProperties
().
getForm
());
}
}
else
if
(
null
!=
workCompleted
.
getProperties
().
getForm
())
{
wo
.
setForm
(
toWoFormDataOrMobileData
(
workCompleted
.
getProperties
().
getForm
()));
if
(
StringUtils
.
isNotBlank
(
workCompleted
.
getProperties
().
getForm
().
getData
()))
{
for
(
Form
f
:
workCompleted
.
getProperties
().
getRelatedFormList
())
{
wo
.
getRelatedFormMap
().
put
(
f
.
getId
(),
toWoForm
(
f
));
}
workCompleted
.
getProperties
().
getRelatedFormList
()
.
forEach
(
o
->
wo
.
getRelatedFormMap
().
put
(
o
.
getId
(),
toWoFormDataOrMobileData
(
o
)));
}
else
{
for
(
Form
f
:
workCompleted
.
getProperties
().
getRelatedFormList
())
{
wo
.
getRelatedFormMap
().
put
(
f
.
getId
(),
toWoMobileForm
(
f
));
}
}
for
(
Script
s
:
workCompleted
.
getProperties
().
getRelatedScriptList
())
{
wo
.
getRelatedScriptMap
().
put
(
s
.
getId
(),
toWoScript
(
s
));
workCompleted
.
getProperties
().
getMobileRelatedFormList
()
.
forEach
(
o
->
wo
.
getRelatedFormMap
().
put
(
o
.
getId
(),
toWoFormMobileDataOrData
(
o
)));
}
}
workCompleted
.
getProperties
().
getRelatedScriptList
().
stream
()
.
forEach
(
o
->
wo
.
getRelatedScriptMap
().
put
(
o
.
getId
(),
toWoScript
(
o
)));
return
wo
;
}
private
WoForm
toWoForm
(
Form
form
)
{
WoForm
wo
=
new
WoForm
();
wo
.
setId
(
form
.
getId
());
wo
.
setName
(
form
.
getName
());
wo
.
setAlias
(
form
.
getAlias
());
wo
.
setData
(
form
.
getDataOrMobileData
());
return
wo
;
}
private
WoForm
toWoMobileForm
(
Form
form
)
{
WoForm
wo
=
new
WoForm
();
wo
.
setId
(
form
.
getId
());
wo
.
setName
(
form
.
getName
());
wo
.
setAlias
(
form
.
getAlias
());
wo
.
setData
(
form
.
getMobileDataOrData
());
return
wo
;
}
private
WoScript
toWoScript
(
Script
script
)
{
WoScript
wo
=
new
WoScript
();
wo
.
setId
(
script
.
getId
());
wo
.
setName
(
script
.
getName
());
wo
.
setAlias
(
script
.
getAlias
());
wo
.
setText
(
script
.
getText
());
return
wo
;
}
public
static
class
WoForm
extends
GsonPropertyObject
{
private
String
id
;
private
String
alias
;
private
String
name
;
private
String
data
;
public
String
getAlias
()
{
return
alias
;
}
public
void
setAlias
(
String
alias
)
{
this
.
alias
=
alias
;
}
public
String
getName
()
{
return
name
;
}
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
public
String
getId
()
{
return
id
;
}
public
void
setId
(
String
id
)
{
this
.
id
=
id
;
}
public
String
getData
()
{
return
data
;
}
public
void
setData
(
String
data
)
{
this
.
data
=
data
;
private
void
related
(
Business
business
,
Wo
wo
,
Form
form
)
throws
Exception
{
if
(
StringUtils
.
isNotBlank
(
form
.
getData
()))
{
for
(
String
relatedFormId
:
form
.
getProperties
().
getRelatedFormList
())
{
Form
relatedForm
=
business
.
form
().
pick
(
relatedFormId
);
if
(
null
!=
relatedForm
)
{
wo
.
getRelatedFormMap
().
put
(
relatedFormId
,
toWoFormDataOrMobileData
(
relatedForm
));
}
}
}
else
{
for
(
String
mobileRelatedFormId
:
form
.
getProperties
().
getMobileRelatedFormList
())
{
Form
mobileRelatedForm
=
business
.
form
().
pick
(
mobileRelatedFormId
);
if
(
null
!=
mobileRelatedForm
)
{
wo
.
getRelatedFormMap
().
put
(
mobileRelatedFormId
,
toWoFormMobileDataOrData
(
mobileRelatedForm
));
}
}
}
relatedScript
(
business
,
wo
,
form
);
}
public
static
class
WoScript
extends
GsonPropertyObject
{
private
String
id
;
private
String
alias
;
private
String
name
;
private
String
text
;
public
String
getId
()
{
return
id
;
}
public
void
setId
(
String
id
)
{
this
.
id
=
id
;
}
public
String
getText
()
{
return
text
;
}
public
void
setText
(
String
text
)
{
this
.
text
=
text
;
}
public
String
getAlias
()
{
return
alias
;
}
public
void
setAlias
(
String
alias
)
{
this
.
alias
=
alias
;
}
public
String
getName
()
{
return
name
;
}
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
protected
void
relatedScript
(
Business
business
,
AbstractWo
wo
,
Form
form
)
throws
Exception
{
for
(
Entry
<
String
,
String
>
entry
:
form
.
getProperties
().
getRelatedScriptMap
().
entrySet
())
{
switch
(
entry
.
getValue
())
{
case
WorkCompletedProperties
.
Script
.
TYPE_PROCESSPLATFORM
:
Script
relatedScript
=
business
.
script
().
pick
(
entry
.
getKey
());
if
(
null
!=
relatedScript
)
{
wo
.
getRelatedScriptMap
().
put
(
entry
.
getKey
(),
toWoScript
(
relatedScript
));
}
break
;
case
WorkCompletedProperties
.
Script
.
TYPE_CMS
:
com
.
x
.
cms
.
core
.
entity
.
element
.
Script
relatedCmsScript
=
business
.
cms
().
script
().
pick
(
entry
.
getKey
());
if
(
null
!=
relatedCmsScript
)
{
wo
.
getRelatedScriptMap
().
put
(
entry
.
getKey
(),
toWoScript
(
relatedCmsScript
));
}
break
;
case
WorkCompletedProperties
.
Script
.
TYPE_PORTAL
:
com
.
x
.
portal
.
core
.
entity
.
Script
relatedPortalScript
=
business
.
portal
().
script
().
pick
(
entry
.
getKey
());
if
(
null
!=
relatedPortalScript
)
{
wo
.
getRelatedScriptMap
().
put
(
entry
.
getKey
(),
toWoScript
(
relatedPortalScript
));
}
break
;
default
:
break
;
}
}
}
public
static
class
Wo
extends
GsonPropertyObject
{
private
WoForm
form
;
private
Map
<
String
,
WoForm
>
relatedFormMap
=
new
HashMap
<>();
private
Map
<
String
,
WoScript
>
relatedScriptMap
=
new
HashMap
<>();
public
WoForm
getForm
()
{
return
form
;
}
public
void
setForm
(
WoForm
form
)
{
this
.
form
=
form
;
}
public
Map
<
String
,
WoForm
>
getRelatedFormMap
()
{
return
relatedFormMap
;
}
public
void
setRelatedFormMap
(
Map
<
String
,
WoForm
>
relatedFormMap
)
{
this
.
relatedFormMap
=
relatedFormMap
;
}
public
Map
<
String
,
WoScript
>
getRelatedScriptMap
()
{
return
relatedScriptMap
;
}
public
void
setRelatedScriptMap
(
Map
<
String
,
WoScript
>
relatedScriptMap
)
{
this
.
relatedScriptMap
=
relatedScriptMap
;
}
public
static
class
Wo
extends
AbstractWo
{
}
...
...
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/form/ActionGetWithWorkOrWorkCompletedMobile.java
浏览文件 @
951d5143
package
com.x.processplatform.assemble.surface.jaxrs.form
;
import
java.util.HashMap
;
import
java.util.Map
;
import
java.util.Map.Entry
;
import
org.apache.commons.lang3.StringUtils
;
...
...
@@ -10,7 +9,6 @@ import com.x.base.core.container.EntityManagerContainer;
import
com.x.base.core.container.factory.EntityManagerContainerFactory
;
import
com.x.base.core.project.exception.ExceptionAccessDenied
;
import
com.x.base.core.project.exception.ExceptionEntityNotExist
;
import
com.x.base.core.project.gson.GsonPropertyObject
;
import
com.x.base.core.project.http.ActionResult
;
import
com.x.base.core.project.http.EffectivePerson
;
import
com.x.base.core.project.logger.Audit
;
...
...
@@ -20,6 +18,7 @@ import com.x.base.core.project.tools.PropertyTools;
import
com.x.processplatform.assemble.surface.Business
;
import
com.x.processplatform.core.entity.content.Work
;
import
com.x.processplatform.core.entity.content.WorkCompleted
;
import
com.x.processplatform.core.entity.content.WorkCompletedProperties
;
import
com.x.processplatform.core.entity.element.Activity
;
import
com.x.processplatform.core.entity.element.Form
;
import
com.x.processplatform.core.entity.element.Script
;
...
...
@@ -65,204 +64,84 @@ class ActionGetWithWorkOrWorkCompletedMobile extends BaseAction {
if
(
StringUtils
.
isNotEmpty
(
id
))
{
Form
form
=
business
.
form
().
pick
(
id
);
if
(
null
!=
form
)
{
wo
.
setForm
(
toWo
MobileForm
(
form
));
wo
.
setForm
(
toWo
FormMobileDataOrData
(
form
));
related
(
business
,
wo
,
form
);
}
}
return
wo
;
}
private
void
related
(
Business
business
,
Wo
wo
,
Form
form
)
throws
Exception
{
if
(
StringUtils
.
isNotBlank
(
form
.
getMobileData
()))
{
for
(
String
relatedFormId
:
form
.
getMobileRelatedFormList
())
{
Form
relatedForm
=
business
.
form
().
pick
(
relatedFormId
);
if
(
null
!=
relatedForm
)
{
wo
.
getRelatedFormMap
().
put
(
relatedFormId
,
toWoMobileForm
(
relatedForm
));
}
}
}
else
{
for
(
String
relatedFormId
:
form
.
getRelatedFormList
())
{
Form
relatedForm
=
business
.
form
().
pick
(
relatedFormId
);
if
(
null
!=
relatedForm
)
{
wo
.
getRelatedFormMap
().
put
(
relatedFormId
,
toWoForm
(
relatedForm
));
}
}
}
for
(
String
relatedScriptId
:
form
.
getRelatedScriptList
())
{
Script
relatedScript
=
business
.
script
().
pick
(
relatedScriptId
);
if
(
null
!=
relatedScript
)
{
wo
.
getRelatedScriptMap
().
put
(
relatedScriptId
,
toWoScript
(
relatedScript
));
}
}
}
private
Wo
workCompleted
(
Business
business
,
WorkCompleted
workCompleted
)
throws
Exception
{
Wo
wo
=
new
Wo
();
// 先使用当前库的表单,如果不存在使用储存的表单.
if
(
StringUtils
.
isNotEmpty
(
workCompleted
.
getForm
()))
{
Form
form
=
business
.
form
().
pick
(
workCompleted
.
getForm
());
if
(
null
!=
form
)
{
wo
.
setForm
(
toWo
MobileForm
(
form
));
wo
.
setForm
(
toWo
FormMobileDataOrData
(
form
));
related
(
business
,
wo
,
form
);
}
}
else
{
if
(
null
!=
workCompleted
.
getProperties
().
getForm
())
{
wo
.
form
=
toWoMobileForm
(
workCompleted
.
getProperties
().
getForm
());
}
}
else
if
(
null
!=
workCompleted
.
getProperties
().
getForm
())
{
wo
.
setForm
(
toWoFormMobileDataOrData
(
workCompleted
.
getProperties
().
getForm
()));
if
(
StringUtils
.
isNotBlank
(
workCompleted
.
getProperties
().
getForm
().
getMobileData
()))
{
for
(
Form
f
:
workCompleted
.
getProperties
().
getMobileRelatedFormList
())
{
wo
.
getRelatedFormMap
().
put
(
f
.
getId
(),
toWoMobileForm
(
f
));
}
workCompleted
.
getProperties
().
getMobileRelatedFormList
()
.
forEach
(
o
->
wo
.
getRelatedFormMap
().
put
(
o
.
getId
(),
toWoFormMobileDataOrData
(
o
)));
}
else
{
for
(
Form
f
:
workCompleted
.
getProperties
().
getRelatedFormList
())
{
wo
.
getRelatedFormMap
().
put
(
f
.
getId
(),
toWoForm
(
f
));
}
}
for
(
Script
s
:
workCompleted
.
getProperties
().
getRelatedScriptList
())
{
wo
.
getRelatedScriptMap
().
put
(
s
.
getId
(),
toWoScript
(
s
));
workCompleted
.
getProperties
().
getRelatedFormList
()
.
forEach
(
o
->
wo
.
getRelatedFormMap
().
put
(
o
.
getId
(),
toWoFormDataOrMobileData
(
o
)));
}
}
workCompleted
.
getProperties
().
getRelatedScriptList
().
stream
()
.
forEach
(
o
->
wo
.
getRelatedScriptMap
().
put
(
o
.
getId
(),
toWoScript
(
o
)));
return
wo
;
}
private
WoForm
toWoForm
(
Form
form
)
{
WoForm
wo
=
new
WoForm
();
wo
.
setId
(
form
.
getId
());
wo
.
setName
(
form
.
getName
());
wo
.
setAlias
(
form
.
getAlias
());
wo
.
setData
(
form
.
getDataOrMobileData
());
return
wo
;
}
private
WoForm
toWoMobileForm
(
Form
form
)
{
WoForm
wo
=
new
WoForm
();
wo
.
setId
(
form
.
getId
());
wo
.
setName
(
form
.
getName
());
wo
.
setAlias
(
form
.
getAlias
());
wo
.
setData
(
form
.
getMobileDataOrData
());
return
wo
;
}
private
WoScript
toWoScript
(
Script
script
)
{
WoScript
wo
=
new
WoScript
();
wo
.
setId
(
script
.
getId
());
wo
.
setName
(
script
.
getName
());
wo
.
setAlias
(
script
.
getAlias
());
wo
.
setText
(
script
.
getText
());
return
wo
;
}
public
static
class
WoForm
extends
GsonPropertyObject
{
private
String
id
;
private
String
alias
;
private
String
name
;
private
String
data
;
public
String
getAlias
()
{
return
alias
;
}
public
void
setAlias
(
String
alias
)
{
this
.
alias
=
alias
;
}
public
String
getName
()
{
return
name
;
}
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
public
String
getId
()
{
return
id
;
}
public
void
setId
(
String
id
)
{
this
.
id
=
id
;
}
public
String
getData
()
{
return
data
;
}
public
void
setData
(
String
data
)
{
this
.
data
=
data
;
private
void
related
(
Business
business
,
Wo
wo
,
Form
form
)
throws
Exception
{
if
(
StringUtils
.
isNotBlank
(
form
.
getMobileData
()))
{
for
(
String
mobileRelatedFormId
:
form
.
getProperties
().
getMobileRelatedFormList
())
{
Form
relatedForm
=
business
.
form
().
pick
(
mobileRelatedFormId
);
if
(
null
!=
relatedForm
)
{
wo
.
getRelatedFormMap
().
put
(
mobileRelatedFormId
,
toWoFormMobileDataOrData
(
relatedForm
));
}
}
}
else
{
for
(
String
relatedFormId
:
form
.
getProperties
().
getRelatedFormList
())
{
Form
relatedForm
=
business
.
form
().
pick
(
relatedFormId
);
if
(
null
!=
relatedForm
)
{
wo
.
getRelatedFormMap
().
put
(
relatedFormId
,
toWoFormDataOrMobileData
(
relatedForm
));
}
}
}
relatedScript
(
business
,
wo
,
form
);
}
public
static
class
WoScript
extends
GsonPropertyObject
{
private
String
id
;
private
String
alias
;
private
String
name
;
private
String
text
;
public
String
getId
()
{
return
id
;
}
public
void
setId
(
String
id
)
{
this
.
id
=
id
;
}
public
String
getText
()
{
return
text
;
}
public
void
setText
(
String
text
)
{
this
.
text
=
text
;
}
public
String
getAlias
()
{
return
alias
;
}
public
void
setAlias
(
String
alias
)
{
this
.
alias
=
alias
;
}
public
String
getName
()
{
return
name
;
}
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
protected
void
relatedScript
(
Business
business
,
AbstractWo
wo
,
Form
form
)
throws
Exception
{
for
(
Entry
<
String
,
String
>
entry
:
form
.
getProperties
().
getMobileRelatedScriptMap
().
entrySet
())
{
switch
(
entry
.
getValue
())
{
case
WorkCompletedProperties
.
Script
.
TYPE_PROCESSPLATFORM
:
Script
relatedScript
=
business
.
script
().
pick
(
entry
.
getKey
());
if
(
null
!=
relatedScript
)
{
wo
.
getRelatedScriptMap
().
put
(
entry
.
getKey
(),
toWoScript
(
relatedScript
));
}
break
;
case
WorkCompletedProperties
.
Script
.
TYPE_CMS
:
com
.
x
.
cms
.
core
.
entity
.
element
.
Script
relatedCmsScript
=
business
.
cms
().
script
().
pick
(
entry
.
getKey
());
if
(
null
!=
relatedCmsScript
)
{
wo
.
getRelatedScriptMap
().
put
(
entry
.
getKey
(),
toWoScript
(
relatedCmsScript
));
}
break
;
case
WorkCompletedProperties
.
Script
.
TYPE_PORTAL
:
com
.
x
.
portal
.
core
.
entity
.
Script
relatedPortalScript
=
business
.
portal
().
script
().
pick
(
entry
.
getKey
());
if
(
null
!=
relatedPortalScript
)
{
wo
.
getRelatedScriptMap
().
put
(
entry
.
getKey
(),
toWoScript
(
relatedPortalScript
));
}
break
;
default
:
break
;
}
}
}
public
static
class
Wo
extends
GsonPropertyObject
{
private
WoForm
form
;
private
Map
<
String
,
WoForm
>
relatedFormMap
=
new
HashMap
<>();
private
Map
<
String
,
WoScript
>
relatedScriptMap
=
new
HashMap
<>();
public
WoForm
getForm
()
{
return
form
;
}
public
void
setForm
(
WoForm
form
)
{
this
.
form
=
form
;
}
public
Map
<
String
,
WoForm
>
getRelatedFormMap
()
{
return
relatedFormMap
;
}
public
void
setRelatedFormMap
(
Map
<
String
,
WoForm
>
relatedFormMap
)
{
this
.
relatedFormMap
=
relatedFormMap
;
}
public
Map
<
String
,
WoScript
>
getRelatedScriptMap
()
{
return
relatedScriptMap
;
}
public
void
setRelatedScriptMap
(
Map
<
String
,
WoScript
>
relatedScriptMap
)
{
this
.
relatedScriptMap
=
relatedScriptMap
;
}
public
static
class
Wo
extends
AbstractWo
{
}
...
...
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/form/BaseAction.java
浏览文件 @
951d5143
package
com.x.processplatform.assemble.surface.jaxrs.form
;
import
java.util.HashMap
;
import
java.util.Map
;
import
java.util.Map.Entry
;
import
com.x.base.core.project.cache.ApplicationCache
;
import
com.x.base.core.project.gson.GsonPropertyObject
;
import
com.x.base.core.project.jaxrs.StandardJaxrsAction
;
import
com.x.processplatform.assemble.surface.Business
;
import
com.x.processplatform.core.entity.content.WorkCompletedProperties
;
import
com.x.processplatform.core.entity.element.Form
;
import
com.x.processplatform.core.entity.element.Script
;
import
net.sf.ehcache.Ehcache
;
abstract
class
BaseAction
extends
StandardJaxrsAction
{
protected
static
Ehcache
CACHE
=
ApplicationCache
.
instance
().
getCache
(
Form
.
class
,
Script
.
class
,
com
.
x
.
portal
.
core
.
entity
.
Script
.
class
,
com
.
x
.
cms
.
core
.
entity
.
element
.
Script
.
class
);
protected
WoForm
toWoFormDataOrMobileData
(
Form
form
)
{
WoForm
wo
=
new
WoForm
();
wo
.
setId
(
form
.
getId
());
wo
.
setName
(
form
.
getName
());
wo
.
setAlias
(
form
.
getAlias
());
wo
.
setCategory
(
form
.
getCategory
());
wo
.
setApplication
(
form
.
getApplication
());
wo
.
setHasMobile
(
form
.
getHasMobile
());
wo
.
setData
(
form
.
getDataOrMobileData
());
return
wo
;
}
protected
WoForm
toWoFormMobileDataOrData
(
Form
form
)
{
WoForm
wo
=
new
WoForm
();
wo
.
setId
(
form
.
getId
());
wo
.
setName
(
form
.
getName
());
wo
.
setAlias
(
form
.
getAlias
());
wo
.
setCategory
(
form
.
getCategory
());
wo
.
setApplication
(
form
.
getApplication
());
wo
.
setHasMobile
(
form
.
getHasMobile
());
wo
.
setData
(
form
.
getMobileDataOrData
());
return
wo
;
}
protected
WoScript
toWoScript
(
Script
script
)
{
WoScript
wo
=
new
WoScript
();
wo
.
setId
(
script
.
getId
());
wo
.
setName
(
script
.
getName
());
wo
.
setAlias
(
script
.
getAlias
());
wo
.
setText
(
script
.
getText
());
return
wo
;
}
protected
WoScript
toWoScript
(
com
.
x
.
cms
.
core
.
entity
.
element
.
Script
script
)
{
WoScript
wo
=
new
WoScript
();
wo
.
setId
(
script
.
getId
());
wo
.
setName
(
script
.
getName
());
wo
.
setAlias
(
script
.
getAlias
());
wo
.
setText
(
script
.
getText
());
return
wo
;
}
protected
WoScript
toWoScript
(
com
.
x
.
portal
.
core
.
entity
.
Script
script
)
{
WoScript
wo
=
new
WoScript
();
wo
.
setId
(
script
.
getId
());
wo
.
setName
(
script
.
getName
());
wo
.
setAlias
(
script
.
getAlias
());
wo
.
setText
(
script
.
getText
());
return
wo
;
}
protected
WoScript
toWoScript
(
WorkCompletedProperties
.
Script
script
)
{
WoScript
wo
=
new
WoScript
();
wo
.
setId
(
script
.
getId
());
wo
.
setName
(
script
.
getName
());
wo
.
setAlias
(
script
.
getAlias
());
wo
.
setText
(
script
.
getText
());
return
wo
;
}
public
static
class
WoForm
extends
GsonPropertyObject
{
private
String
id
;
private
String
alias
;
private
String
name
;
private
String
data
;
private
String
category
;
private
String
application
;
private
Boolean
hasMobile
;
public
String
getCategory
()
{
return
category
;
}
public
void
setCategory
(
String
category
)
{
this
.
category
=
category
;
}
public
String
getApplication
()
{
return
application
;
}
public
void
setApplication
(
String
application
)
{
this
.
application
=
application
;
}
public
Boolean
getHasMobile
()
{
return
hasMobile
;
}
public
void
setHasMobile
(
Boolean
hasMobile
)
{
this
.
hasMobile
=
hasMobile
;
}
public
String
getAlias
()
{
return
alias
;
}
public
void
setAlias
(
String
alias
)
{
this
.
alias
=
alias
;
}
public
String
getName
()
{
return
name
;
}
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
public
String
getId
()
{
return
id
;
}
public
void
setId
(
String
id
)
{
this
.
id
=
id
;
}
public
String
getData
()
{
return
data
;
}
public
void
setData
(
String
data
)
{
this
.
data
=
data
;
}
}
public
static
class
WoScript
extends
GsonPropertyObject
{
private
String
id
;
private
String
alias
;
private
String
name
;
private
String
text
;
public
String
getId
()
{
return
id
;
}
public
void
setId
(
String
id
)
{
this
.
id
=
id
;
}
public
String
getText
()
{
return
text
;
}
public
void
setText
(
String
text
)
{
this
.
text
=
text
;
}
public
String
getAlias
()
{
return
alias
;
}
public
void
setAlias
(
String
alias
)
{
this
.
alias
=
alias
;
}
public
String
getName
()
{
return
name
;
}
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
}
public
static
class
AbstractWo
extends
GsonPropertyObject
{
private
WoForm
form
;
private
Map
<
String
,
WoForm
>
relatedFormMap
=
new
HashMap
<>();
private
Map
<
String
,
WoScript
>
relatedScriptMap
=
new
HashMap
<>();
public
WoForm
getForm
()
{
return
form
;
}
public
void
setForm
(
WoForm
form
)
{
this
.
form
=
form
;
}
public
Map
<
String
,
WoForm
>
getRelatedFormMap
()
{
return
relatedFormMap
;
}
public
void
setRelatedFormMap
(
Map
<
String
,
WoForm
>
relatedFormMap
)
{
this
.
relatedFormMap
=
relatedFormMap
;
}
public
Map
<
String
,
WoScript
>
getRelatedScriptMap
()
{
return
relatedScriptMap
;
}
public
void
setRelatedScriptMap
(
Map
<
String
,
WoScript
>
relatedScriptMap
)
{
this
.
relatedScriptMap
=
relatedScriptMap
;
}
}
}
\ No newline at end of file
o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/content/WorkCompletedProperties.java
浏览文件 @
951d5143
...
...
@@ -6,7 +6,6 @@ import java.util.List;
import
com.x.base.core.entity.JsonProperties
;
import
com.x.base.core.project.annotation.FieldDescribe
;
import
com.x.processplatform.core.entity.element.Form
;
import
com.x.processplatform.core.entity.element.Script
;
public
class
WorkCompletedProperties
extends
JsonProperties
{
...
...
@@ -109,4 +108,62 @@ public class WorkCompletedProperties extends JsonProperties {
this
.
mobileRelatedScriptList
=
mobileRelatedScriptList
;
}
public
static
class
Script
{
public
static
final
String
TYPE_PROCESSPLATFORM
=
"processPlatform"
;
public
static
final
String
TYPE_CMS
=
"cms"
;
public
static
final
String
TYPE_PORTAL
=
"portal"
;
private
String
id
;
private
String
alias
;
private
String
name
;
private
String
type
;
private
String
text
;
public
String
getId
()
{
return
id
;
}
public
void
setId
(
String
id
)
{
this
.
id
=
id
;
}
public
String
getAlias
()
{
return
alias
;
}
public
void
setAlias
(
String
alias
)
{
this
.
alias
=
alias
;
}
public
String
getName
()
{
return
name
;
}
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
public
String
getType
()
{
return
type
;
}
public
void
setType
(
String
type
)
{
this
.
type
=
type
;
}
public
String
getText
()
{
return
text
;
}
public
void
setText
(
String
text
)
{
this
.
text
=
text
;
}
}
}
o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/element/Form.java
浏览文件 @
951d5143
package
com.x.processplatform.core.entity.element
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Objects
;
import
javax.persistence.Basic
;
...
...
@@ -12,16 +11,13 @@ import javax.persistence.Id;
import
javax.persistence.Inheritance
;
import
javax.persistence.InheritanceType
;
import
javax.persistence.Lob
;
import
javax.persistence.OrderColumn
;
import
javax.persistence.Table
;
import
javax.persistence.UniqueConstraint
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.openjpa.persistence.PersistentCollection
;
import
org.apache.openjpa.persistence.jdbc.ContainerTable
;
import
org.apache.openjpa.persistence.jdbc.ElementColumn
;
import
org.apache.openjpa.persistence.jdbc.ElementIndex
;
import
org.apache.openjpa.persistence.Persistent
;
import
org.apache.openjpa.persistence.jdbc.Index
;
import
org.apache.openjpa.persistence.jdbc.Strategy
;
import
com.x.base.core.entity.AbstractPersistenceProperties
;
import
com.x.base.core.entity.JpaObject
;
...
...
@@ -98,6 +94,17 @@ public class Form extends SliceJpaObject {
// nothing
}
public
Form
()
{
this
.
properties
=
new
FormProperties
();
}
public
FormProperties
getProperties
()
{
if
(
null
==
this
.
properties
)
{
this
.
properties
=
new
FormProperties
();
}
return
this
.
properties
;
}
public
String
getDataOrMobileData
()
{
if
(
StringUtils
.
isNotEmpty
(
this
.
getData
()))
{
return
this
.
getData
();
...
...
@@ -187,8 +194,8 @@ public class Form extends SliceJpaObject {
public
static
final
String
data_FIELDNAME
=
"data"
;
@FieldDescribe
(
"文本内容."
)
@Lob
@Basic
(
fetch
=
FetchType
.
EAGER
)
//
@Persistent(fetch = FetchType.EAGER)
@Basic
(
fetch
=
FetchType
.
EAGER
)
//
@Persistent(fetch = FetchType.EAGER)
@Column
(
length
=
JpaObject
.
length_10M
,
name
=
ColumnNamePrefix
+
data_FIELDNAME
)
@CheckPersist
(
allowEmpty
=
true
)
private
String
data
;
...
...
@@ -196,7 +203,8 @@ public class Form extends SliceJpaObject {
public
static
final
String
mobileData_FIELDNAME
=
"mobileData"
;
@FieldDescribe
(
"移动端文本内容."
)
@Lob
@Basic
(
fetch
=
FetchType
.
EAGER
)
@Basic
(
fetch
=
FetchType
.
EAGER
)
//@Persistent(fetch = FetchType.EAGER)
@Column
(
length
=
JpaObject
.
length_10M
,
name
=
ColumnNamePrefix
+
mobileData_FIELDNAME
)
@CheckPersist
(
allowEmpty
=
true
)
private
String
mobileData
;
...
...
@@ -206,68 +214,14 @@ public class Form extends SliceJpaObject {
@Column
(
name
=
ColumnNamePrefix
+
hasMobile_FIELDNAME
)
private
Boolean
hasMobile
;
public
static
final
String
relatedFormList_FIELDNAME
=
"relatedFormList"
;
@FieldDescribe
(
"related form."
)
@PersistentCollection
(
fetch
=
FetchType
.
EAGER
)
@ContainerTable
(
name
=
TABLE
+
ContainerTableNameMiddle
+
relatedFormList_FIELDNAME
,
joinIndex
=
@Index
(
name
=
TABLE
+
IndexNameMiddle
+
relatedFormList_FIELDNAME
+
JoinIndexNameSuffix
))
@OrderColumn
(
name
=
ORDERCOLUMNCOLUMN
)
@ElementColumn
(
length
=
length_255B
,
name
=
ColumnNamePrefix
+
relatedFormList_FIELDNAME
)
@ElementIndex
(
name
=
TABLE
+
IndexNameMiddle
+
relatedFormList_FIELDNAME
+
ElementIndexNameSuffix
)
@CheckPersist
(
allowEmpty
=
true
)
private
List
<
String
>
relatedFormList
;
public
static
final
String
relatedScriptList_FIELDNAME
=
"relatedScriptList"
;
@FieldDescribe
(
"related form."
)
@PersistentCollection
(
fetch
=
FetchType
.
EAGER
)
@ContainerTable
(
name
=
TABLE
+
ContainerTableNameMiddle
+
relatedScriptList_FIELDNAME
,
joinIndex
=
@Index
(
name
=
TABLE
+
IndexNameMiddle
+
relatedScriptList_FIELDNAME
+
JoinIndexNameSuffix
))
@OrderColumn
(
name
=
ORDERCOLUMNCOLUMN
)
@ElementColumn
(
length
=
length_255B
,
name
=
ColumnNamePrefix
+
relatedScriptList_FIELDNAME
)
@ElementIndex
(
name
=
TABLE
+
IndexNameMiddle
+
relatedScriptList_FIELDNAME
+
ElementIndexNameSuffix
)
@CheckPersist
(
allowEmpty
=
true
)
private
List
<
String
>
relatedScriptList
;
public
static
final
String
mobileRelatedFormList_FIELDNAME
=
"mobileRelatedFormList"
;
@FieldDescribe
(
"关联移动表单."
)
@PersistentCollection
(
fetch
=
FetchType
.
EAGER
)
@ContainerTable
(
name
=
TABLE
+
ContainerTableNameMiddle
+
mobileRelatedFormList_FIELDNAME
,
joinIndex
=
@Index
(
name
=
TABLE
+
IndexNameMiddle
+
mobileRelatedFormList_FIELDNAME
+
JoinIndexNameSuffix
))
@OrderColumn
(
name
=
ORDERCOLUMNCOLUMN
)
@ElementColumn
(
length
=
length_255B
,
name
=
ColumnNamePrefix
+
mobileRelatedFormList_FIELDNAME
)
@ElementIndex
(
name
=
TABLE
+
IndexNameMiddle
+
mobileRelatedFormList_FIELDNAME
+
ElementIndexNameSuffix
)
public
static
final
String
properties_FIELDNAME
=
"properties"
;
// @Basic(fetch = FetchType.EAGER)
@FieldDescribe
(
"属性对象存储字段."
)
@Persistent
(
fetch
=
FetchType
.
EAGER
)
@Strategy
(
JsonPropertiesValueHandler
)
@Column
(
length
=
JpaObject
.
length_10M
,
name
=
ColumnNamePrefix
+
properties_FIELDNAME
)
@CheckPersist
(
allowEmpty
=
true
)
private
List
<
String
>
mobileRelatedFormList
;
public
static
final
String
mobileRelatedScriptList_FIELDNAME
=
"mobileRelatedScriptList"
;
@FieldDescribe
(
"关联移动脚本."
)
@PersistentCollection
(
fetch
=
FetchType
.
EAGER
)
@ContainerTable
(
name
=
TABLE
+
ContainerTableNameMiddle
+
mobileRelatedScriptList_FIELDNAME
,
joinIndex
=
@Index
(
name
=
TABLE
+
IndexNameMiddle
+
mobileRelatedScriptList_FIELDNAME
+
JoinIndexNameSuffix
))
@OrderColumn
(
name
=
ORDERCOLUMNCOLUMN
)
@ElementColumn
(
length
=
length_255B
,
name
=
ColumnNamePrefix
+
mobileRelatedScriptList_FIELDNAME
)
@ElementIndex
(
name
=
TABLE
+
IndexNameMiddle
+
mobileRelatedScriptList_FIELDNAME
+
ElementIndexNameSuffix
)
@CheckPersist
(
allowEmpty
=
true
)
private
List
<
String
>
mobileRelatedScriptList
;
public
List
<
String
>
getMobileRelatedFormList
()
{
return
mobileRelatedFormList
;
}
public
void
setMobileRelatedFormList
(
List
<
String
>
mobileRelatedFormList
)
{
this
.
mobileRelatedFormList
=
mobileRelatedFormList
;
}
public
List
<
String
>
getMobileRelatedScriptList
()
{
return
mobileRelatedScriptList
;
}
public
void
setMobileRelatedScriptList
(
List
<
String
>
mobileRelatedScriptList
)
{
this
.
mobileRelatedScriptList
=
mobileRelatedScriptList
;
}
private
FormProperties
properties
;
public
void
setCategory
(
String
category
)
{
this
.
category
=
category
;
...
...
@@ -353,20 +307,8 @@ public class Form extends SliceJpaObject {
this
.
hasMobile
=
hasMobile
;
}
public
List
<
String
>
getRelatedFormList
()
{
return
relatedFormList
;
}
public
void
setRelatedFormList
(
List
<
String
>
relatedFormList
)
{
this
.
relatedFormList
=
relatedFormList
;
}
public
List
<
String
>
getRelatedScriptList
()
{
return
relatedScriptList
;
}
public
void
setRelatedScriptList
(
List
<
String
>
relatedScriptList
)
{
this
.
relatedScriptList
=
relatedScriptList
;
public
void
setProperties
(
FormProperties
properties
)
{
this
.
properties
=
properties
;
}
}
\ No newline at end of file
o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/element/FormProperties.java
0 → 100644
浏览文件 @
951d5143
package
com.x.processplatform.core.entity.element
;
import
java.util.ArrayList
;
import
java.util.LinkedHashMap
;
import
java.util.List
;
import
java.util.Map
;
import
com.x.base.core.entity.JsonProperties
;
import
com.x.base.core.project.annotation.FieldDescribe
;
public
class
FormProperties
extends
JsonProperties
{
@FieldDescribe
(
"关联表单."
)
private
List
<
String
>
relatedFormList
=
new
ArrayList
<>();
@FieldDescribe
(
"移动端关联表单."
)
private
List
<
String
>
mobileRelatedFormList
=
new
ArrayList
<>();
@FieldDescribe
(
"关联脚本."
)
private
Map
<
String
,
String
>
relatedScriptMap
=
new
LinkedHashMap
<>();
@FieldDescribe
(
"移动端关联脚本."
)
private
Map
<
String
,
String
>
mobileRelatedScriptMap
=
new
LinkedHashMap
<>();
public
List
<
String
>
getRelatedFormList
()
{
return
this
.
relatedFormList
==
null
?
new
ArrayList
<>()
:
this
.
relatedFormList
;
}
public
List
<
String
>
getMobileRelatedFormList
()
{
return
this
.
mobileRelatedFormList
==
null
?
new
ArrayList
<>()
:
this
.
mobileRelatedFormList
;
}
public
Map
<
String
,
String
>
getRelatedScriptMap
()
{
return
this
.
relatedScriptMap
==
null
?
new
LinkedHashMap
<>()
:
this
.
relatedScriptMap
;
}
public
Map
<
String
,
String
>
getMobileRelatedScriptMap
()
{
return
this
.
mobileRelatedScriptMap
==
null
?
new
LinkedHashMap
<>()
:
this
.
mobileRelatedScriptMap
;
}
public
void
setRelatedFormList
(
List
<
String
>
relatedFormList
)
{
this
.
relatedFormList
=
relatedFormList
;
}
public
void
setMobileRelatedFormList
(
List
<
String
>
mobileRelatedFormList
)
{
this
.
mobileRelatedFormList
=
mobileRelatedFormList
;
}
public
void
setRelatedScriptMap
(
Map
<
String
,
String
>
relatedScriptMap
)
{
this
.
relatedScriptMap
=
relatedScriptMap
;
}
public
void
setMobileRelatedScriptMap
(
Map
<
String
,
String
>
mobileRelatedScriptMap
)
{
this
.
mobileRelatedScriptMap
=
mobileRelatedScriptMap
;
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录