Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
提交反馈
为 GitLab 提交贡献
登录
切换导航
I
ibizlab-generator
项目
项目
详情
动态
版本
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
ibiz4jteam
ibizlab-generator
提交
2f391f52
提交
2f391f52
编写于
1月 25, 2022
作者:
sq3536
浏览文件
操作
浏览文件
下载
差异文件
Merge remote-tracking branch 'origin/master'
上级
674bb3ee
ec958233
变更
175
隐藏空白字符变更
内嵌
并排
正在显示
175 个修改的文件
包含
8107 行增加
和
437 行删除
+8107
-437
pom.xml
modules/ibizlab-generator-core/pom.xml
+1
-1
AppEntityModel.java
...rc/main/java/cn/ibizlab/codegen/model/AppEntityModel.java
+7
-2
ModelStorage.java
.../src/main/java/cn/ibizlab/codegen/model/ModelStorage.java
+9
-1
PageModel.java
...ore/src/main/java/cn/ibizlab/codegen/model/PageModel.java
+16
-2
SysUtilModel.java
.../src/main/java/cn/ibizlab/codegen/model/SysUtilModel.java
+26
-0
SystemModel.java
...e/src/main/java/cn/ibizlab/codegen/model/SystemModel.java
+20
-0
WorkflowModel.java
...src/main/java/cn/ibizlab/codegen/model/WorkflowModel.java
+19
-0
TemplateFileType.java
.../java/cn/ibizlab/codegen/templating/TemplateFileType.java
+2
-0
.gitignore.hbs
...enerator-core/src/main/resources/templ/doc/.gitignore.hbs
+15
-0
.ibizlab-generator-ignore
...re/src/main/resources/templ/doc/.ibizlab-generator-ignore
+3
-0
net.ibizsys.model.wf.IPSWFInteractiveLink.item.md.hbs
...cro/net.ibizsys.model.wf.IPSWFInteractiveLink.item.md.hbs
+14
-0
net.ibizsys.model.wf.IPSWFLink.list.md.hbs
...mpl/doc/@macro/net.ibizsys.model.wf.IPSWFLink.list.md.hbs
+3
-0
net.ibizsys.model.wf.IPSWFProcess.list.md.hbs
.../doc/@macro/net.ibizsys.model.wf.IPSWFProcess.list.md.hbs
+3
-0
net.ibizsys.model.wf.IPSWFRouteLink.item.md.hbs
...oc/@macro/net.ibizsys.model.wf.IPSWFRouteLink.item.md.hbs
+68
-0
net.ibizsys.model.wf.IPSWFStartProcess.item.md.hbs
...@macro/net.ibizsys.model.wf.IPSWFStartProcess.item.md.hbs
+98
-0
net.ibizsys.model.wf.IPSWFCallOrgActivityProcess.item.md.hbs
....ibizsys.model.wf.IPSWFCallOrgActivityProcess.item.md.hbs
+129
-0
net.ibizsys.model.wf.IPSWFDEActionProcess.item.md.hbs
...tem/net.ibizsys.model.wf.IPSWFDEActionProcess.item.md.hbs
+132
-0
net.ibizsys.model.wf.IPSWFEmbedWFProcess.item.md.hbs
...item/net.ibizsys.model.wf.IPSWFEmbedWFProcess.item.md.hbs
+126
-0
net.ibizsys.model.wf.IPSWFEndProcess.item.md.hbs
...low/item/net.ibizsys.model.wf.IPSWFEndProcess.item.md.hbs
+127
-0
net.ibizsys.model.wf.IPSWFExclusiveGatewayProcess.item.md.hbs
...ibizsys.model.wf.IPSWFExclusiveGatewayProcess.item.md.hbs
+119
-0
net.ibizsys.model.wf.IPSWFInclusiveGatewayProcess.item.md.hbs
...ibizsys.model.wf.IPSWFInclusiveGatewayProcess.item.md.hbs
+119
-0
net.ibizsys.model.wf.IPSWFInteractiveLink.item.md.hbs
...tem/net.ibizsys.model.wf.IPSWFInteractiveLink.item.md.hbs
+0
-0
net.ibizsys.model.wf.IPSWFInteractiveProcess.item.md.hbs
.../net.ibizsys.model.wf.IPSWFInteractiveProcess.item.md.hbs
+284
-0
net.ibizsys.model.wf.IPSWFParallelGatewayProcess.item.md.hbs
....ibizsys.model.wf.IPSWFParallelGatewayProcess.item.md.hbs
+119
-0
net.ibizsys.model.wf.IPSWFParallelSubWFProcess.item.md.hbs
...et.ibizsys.model.wf.IPSWFParallelSubWFProcess.item.md.hbs
+126
-0
net.ibizsys.model.wf.IPSWFProcess.item.md.hbs
...rkflow/item/net.ibizsys.model.wf.IPSWFProcess.item.md.hbs
+119
-0
net.ibizsys.model.wf.IPSWFProcessParam.item.md.hbs
...w/item/net.ibizsys.model.wf.IPSWFProcessParam.item.md.hbs
+68
-0
net.ibizsys.model.wf.IPSWFRouteLink.item.md.hbs
...flow/item/net.ibizsys.model.wf.IPSWFRouteLink.item.md.hbs
+68
-0
net.ibizsys.model.wf.IPSWFStartProcess.item.md.hbs
...w/item/net.ibizsys.model.wf.IPSWFStartProcess.item.md.hbs
+132
-0
net.ibizsys.model.wf.IPSWFTimerEventProcess.item.md.hbs
...m/net.ibizsys.model.wf.IPSWFTimerEventProcess.item.md.hbs
+119
-0
net.ibizsys.model.wf.IPSWFLink.list.md.hbs
.../workflow/list/net.ibizsys.model.wf.IPSWFLink.list.md.hbs
+0
-0
net.ibizsys.model.wf.IPSWFProcess.list.md.hbs
...rkflow/list/net.ibizsys.model.wf.IPSWFProcess.list.md.hbs
+132
-0
net.ibizsys.model.wf.IPSWFProcessParam.list.md.hbs
...w/list/net.ibizsys.model.wf.IPSWFProcessParam.list.md.hbs
+132
-0
README.md.hbs
...generator-core/src/main/resources/templ/doc/README.md.hbs
+14
-0
index.html.hbs
...enerator-core/src/main/resources/templ/doc/index.html.hbs
+127
-0
navbar.md.hbs
...generator-core/src/main/resources/templ/doc/navbar.md.hbs
+3
-0
{{workflows}}.md.hbs
.../src/main/resources/templ/doc/{{wf}}/{{workflows}}.md.hbs
+103
-0
include-dashboard.hbs
.../front-end/widgets/dashboard-detail/include-dashboard.hbs
+1
-0
portlet.hbs
.../r7/@macro/front-end/widgets/dashboard-detail/portlet.hbs
+27
-0
components.d.ts
.../src/main/resources/templ/r7/app_{{apps}}/components.d.ts
+48
-1
app.ts
...e/src/main/resources/templ/r7/app_{{apps}}/src/app/app.ts
+45
-32
login.vue
...ces/templ/r7/app_{{apps}}/src/components/common/login.vue
+51
-230
app-code.vue
...templ/r7/app_{{apps}}/src/components/editors/app-code.vue
+1
-1
app-raw.vue
.../templ/r7/app_{{apps}}/src/components/editors/app-raw.vue
+2
-2
app-span.vue
...templ/r7/app_{{apps}}/src/components/editors/app-span.vue
+1
-1
app-upload.vue
...mpl/r7/app_{{apps}}/src/components/editors/app-upload.vue
+2
-2
app-portal-view-layout.vue
...{{apps}}/src/components/layout/app-portal-view-layout.vue
+29
-0
app-drawer.vue
...empl/r7/app_{{apps}}/src/components/render/app-drawer.vue
+212
-0
app-form-group.vue
.../r7/app_{{apps}}/src/components/render/app-form-group.vue
+1
-1
app-form-item.vue
...l/r7/app_{{apps}}/src/components/render/app-form-item.vue
+1
-1
app-icon-text.vue
...l/r7/app_{{apps}}/src/components/render/app-icon-text.vue
+1
-1
app-menu-center.vue
...r7/app_{{apps}}/src/components/render/app-menu-center.vue
+2
-2
app-menu-item.vue
...l/r7/app_{{apps}}/src/components/render/app-menu-item.vue
+2
-2
app-modal.vue
...templ/r7/app_{{apps}}/src/components/render/app-modal.vue
+216
-0
app-popover.vue
...mpl/r7/app_{{apps}}/src/components/render/app-popover.vue
+210
-0
app-user.vue
.../templ/r7/app_{{apps}}/src/components/render/app-user.vue
+2
-2
i-app.ts
...ces/templ/r7/app_{{apps}}/src/core/interface/app/i-app.ts
+35
-20
i-app-auth-service.ts
...{{apps}}/src/core/interface/service/i-app-auth-service.ts
+44
-0
i-app-notification-service.ts
.../src/core/interface/service/i-app-notification-service.ts
+41
-0
index.ts
...templ/r7/app_{{apps}}/src/core/interface/service/index.ts
+3
-1
index.ts
...s/templ/r7/app_{{apps}}/src/core/logic/app-logic/index.ts
+0
-2
app-action-base.ts
..._{{apps}}/src/core/logic/app-ui-action/app-action-base.ts
+2
-2
index.ts
...n/resources/templ/r7/app_{{apps}}/src/core/logic/index.ts
+0
-1
app-base.ts
...es/templ/r7/app_{{apps}}/src/core/modules/app/app-base.ts
+37
-35
index.ts
...ces/templ/r7/app_{{apps}}/src/core/modules/views/index.ts
+3
-1
main-view.ts
...pp_{{apps}}/src/core/modules/views/main-view/main-view.ts
+2
-16
index.ts
.../app_{{apps}}/src/core/modules/views/portal-view/index.ts
+3
-0
portal-view-prop.ts
...}}/src/core/modules/views/portal-view/portal-view-prop.ts
+11
-0
portal-view-state.ts
...}/src/core/modules/views/portal-view/portal-view-state.ts
+11
-0
portal-view.ts
...{apps}}/src/core/modules/views/portal-view/portal-view.ts
+68
-0
index.ts
...app_{{apps}}/src/core/modules/views/tab-exp-view/index.ts
+3
-0
tab-exp-view-prop.ts
.../src/core/modules/views/tab-exp-view/tab-exp-view-prop.ts
+9
-0
tab-exp-view-state.ts
...src/core/modules/views/tab-exp-view/tab-exp-view-state.ts
+9
-0
tab-exp-view.ts
...pps}}/src/core/modules/views/tab-exp-view/tab-exp-view.ts
+31
-0
view-base.ts
...pp_{{apps}}/src/core/modules/views/view-base/view-base.ts
+17
-4
control-base.ts
...s}}/src/core/modules/widgets/control-base/control-base.ts
+10
-1
dashboard-control-prop.ts
...dules/widgets/dashboard-control/dashboard-control-prop.ts
+11
-0
dashboard-control-state.ts
...ules/widgets/dashboard-control/dashboard-control-state.ts
+11
-0
dashboard-control.ts
...re/modules/widgets/dashboard-control/dashboard-control.ts
+53
-0
index.ts
...pps}}/src/core/modules/widgets/dashboard-control/index.ts
+3
-0
index.ts
...s/templ/r7/app_{{apps}}/src/core/modules/widgets/index.ts
+4
-0
md-control.ts
...{apps}}/src/core/modules/widgets/md-control/md-control.ts
+14
-12
index.ts
...{apps}}/src/core/modules/widgets/portlet-control/index.ts
+3
-0
portlet-control-prop.ts
...e/modules/widgets/portlet-control/portlet-control-prop.ts
+11
-0
portlet-control-state.ts
.../modules/widgets/portlet-control/portlet-control-state.ts
+11
-0
portlet-control.ts
...c/core/modules/widgets/portlet-control/portlet-control.ts
+66
-0
searchbar-control.ts
...re/modules/widgets/searchbar-control/searchbar-control.ts
+4
-4
index.ts
...}/src/core/modules/widgets/tab-exp-panel-control/index.ts
+3
-0
tab-exp-panel-control-prop.ts
...dgets/tab-exp-panel-control/tab-exp-panel-control-prop.ts
+11
-0
tab-exp-panel-control-state.ts
...gets/tab-exp-panel-control/tab-exp-panel-control-state.ts
+11
-0
tab-exp-panel-control.ts
...es/widgets/tab-exp-panel-control/tab-exp-panel-control.ts
+33
-0
index.ts
.../src/core/modules/widgets/tab-view-panel-control/index.ts
+3
-0
tab-view-panel-control-prop.ts
...ets/tab-view-panel-control/tab-view-panel-control-prop.ts
+11
-0
tab-view-panel-control-state.ts
...ts/tab-view-panel-control/tab-view-panel-control-state.ts
+10
-0
tab-view-panel-control.ts
.../widgets/tab-view-panel-control/tab-view-panel-control.ts
+31
-0
app-action-service-base.ts
...}/src/core/service/app-service/app-action-service-base.ts
+9
-22
app-auth-service-base.ts
...s}}/src/core/service/app-service/app-auth-service-base.ts
+244
-0
app-func-service-base.ts
...s}}/src/core/service/app-service/app-func-service-base.ts
+14
-25
app-notification-service-base.ts
...core/service/app-service/app-notification-service-base.ts
+54
-0
index.ts
...mpl/r7/app_{{apps}}/src/core/service/app-service/index.ts
+5
-0
open-view-service-base.ts
...}}/src/core/service/app-service/open-view-service-base.ts
+60
-0
entity-ui-service-base.ts
.../core/service/entity-ui-service/entity-ui-service-base.ts
+0
-0
index.ts
.../app_{{apps}}/src/core/service/entity-ui-service/index.ts
+1
-0
index.ts
...resources/templ/r7/app_{{apps}}/src/core/service/index.ts
+4
-3
index.ts
...empl/r7/app_{{apps}}/src/core/service/ui-service/index.ts
+0
-1
index.ts
...esources/templ/r7/app_{{apps}}/src/core/utils/ui/index.ts
+0
-1
index.ts.hbs
...n/resources/templ/r7/app_{{apps}}/src/router/index.ts.hbs
+9
-2
app-action-service.ts
...s/templ/r7/app_{{apps}}/src/service/app-action-service.ts
+32
-0
app-auth-service.ts
...ces/templ/r7/app_{{apps}}/src/service/app-auth-service.ts
+31
-0
app-func-service.ts
...ces/templ/r7/app_{{apps}}/src/service/app-func-service.ts
+31
-0
app-notification-service.ts
...l/r7/app_{{apps}}/src/service/app-notification-service.ts
+33
-0
app-drawer.ts
..._{{apps}}/src/service/app-open-view-service/app-drawer.ts
+123
-0
app-modal.ts
...p_{{apps}}/src/service/app-open-view-service/app-modal.ts
+130
-0
app-popover.ts
...{{apps}}/src/service/app-open-view-service/app-popover.ts
+203
-0
index.ts
...7/app_{{apps}}/src/service/app-open-view-service/index.ts
+4
-0
open-view-service.ts
...}}/src/service/app-open-view-service/open-view-service.ts
+71
-0
index.ts
...main/resources/templ/r7/app_{{apps}}/src/service/index.ts
+5
-0
index.scss
...resources/templ/r7/app_{{apps}}/src/style/base/index.scss
+14
-0
index.ts.hbs
...views/{{appModules}}/{{pages@APPPORTALVIEW}}/index.ts.hbs
+3
-0
{{pages@APPPORTALVIEW}}-state.ts.hbs
...ages@APPPORTALVIEW}}/{{pages@APPPORTALVIEW}}-state.ts.hbs
+3
-0
{{pages@APPPORTALVIEW}}.vue.hbs
...}/{{pages@APPPORTALVIEW}}/{{pages@APPPORTALVIEW}}.vue.hbs
+64
-0
index.ts.hbs
.../views/{{appModules}}/{{pages@DETABEXPVIEW}}/index.ts.hbs
+3
-0
{{pages@DETABEXPVIEW}}-state.ts.hbs
...{pages@DETABEXPVIEW}}/{{pages@DETABEXPVIEW}}-state.ts.hbs
+3
-0
{{pages@DETABEXPVIEW}}.vue.hbs
...s}}/{{pages@DETABEXPVIEW}}/{{pages@DETABEXPVIEW}}.vue.hbs
+60
-0
index.ts.hbs
...{appEntities}}/{{ctrls@DASHBOARD}}-dashboard/index.ts.hbs
+3
-0
{{ctrls@DASHBOARD}}-dashboard-state.ts.hbs
...RD}}-dashboard/{{ctrls@DASHBOARD}}-dashboard-state.ts.hbs
+6
-0
{{ctrls@DASHBOARD}}-dashboard.vue.hbs
...SHBOARD}}-dashboard/{{ctrls@DASHBOARD}}-dashboard.vue.hbs
+100
-0
{{ctrls@PICKUPVIEWPANEL}}-pickup-view-panel.vue.hbs
...panel/{{ctrls@PICKUPVIEWPANEL}}-pickup-view-panel.vue.hbs
+2
-0
index.ts.hbs
...ts/{{appEntities}}/{{ctrls@PORTLET}}-portlet/index.ts.hbs
+3
-0
{{ctrls@PORTLET}}-portlet-state.ts.hbs
...@PORTLET}}-portlet/{{ctrls@PORTLET}}-portlet-state.ts.hbs
+5
-0
{{ctrls@PORTLET}}-portlet.vue.hbs
...ctrls@PORTLET}}-portlet/{{ctrls@PORTLET}}-portlet.vue.hbs
+34
-0
index.ts.hbs
...tities}}/{{ctrls@TABEXPPANEL}}-tab-exp-panel/index.ts.hbs
+3
-0
{{ctrls@TABEXPPANEL}}-tab-exp-panel-state.ts.hbs
...xp-panel/{{ctrls@TABEXPPANEL}}-tab-exp-panel-state.ts.hbs
+5
-0
{{ctrls@TABEXPPANEL}}-tab-exp-panel.vue.hbs
...tab-exp-panel/{{ctrls@TABEXPPANEL}}-tab-exp-panel.vue.hbs
+60
-0
index.ts.hbs
...ties}}/{{ctrls@TABVIEWPANEL}}-tab-view-panel/index.ts.hbs
+3
-0
{{ctrls@TABVIEWPANEL}}-tab-view-panel-state.ts.hbs
...-panel/{{ctrls@TABVIEWPANEL}}-tab-view-panel-state.ts.hbs
+5
-0
{{ctrls@TABVIEWPANEL}}-tab-view-panel.vue.hbs
...-view-panel/{{ctrls@TABVIEWPANEL}}-tab-view-panel.vue.hbs
+49
-0
yarn.lock
...r-core/src/main/resources/templ/r7/app_{{apps}}/yarn.lock
+10
-0
.gitignore.hbs
...generator-core/src/main/resources/templ/r8/.gitignore.hbs
+14
-0
.ibizlab-generator-ignore
...ore/src/main/resources/templ/r8/.ibizlab-generator-ignore
+3
-0
.ibizproject.hbs
...nerator-core/src/main/resources/templ/r8/.ibizproject.hbs
+9
-0
config.xml.hbs
...generator-core/src/main/resources/templ/r8/config.xml.hbs
+157
-0
pom.xml.hbs
...ab-generator-core/src/main/resources/templ/r8/pom.xml.hbs
+55
-0
pom.xml.hbs
.../main/resources/templ/r8/{{projectName}}-core/pom.xml.hbs
+158
-0
JobsConfiguration.java.hbs
...va/{{packageName}}/core/config/JobsConfiguration.java.hbs
+12
-0
ISystemRuntime.java.hbs
...java/{{packageName}}/core/runtime/ISystemRuntime.java.hbs
+13
-0
SystemRuntime.java.hbs
.../java/{{packageName}}/core/runtime/SystemRuntime.java.hbs
+5
-0
SystemRuntimeBase.java.hbs
...a/{{packageName}}/core/runtime/SystemRuntimeBase.java.hbs
+50
-0
StaticDict.java.ftl
...ava/{{packageName}}/core/runtime/dict/StaticDict.java.ftl
+76
-0
I{{syUtils}}.java.hbs
...{packageName}}/core/runtime/sysutil/I{{syUtils}}.java.hbs
+9
-0
{{syUtils}}.java.hbs
...{{packageName}}/core/runtime/sysutil/{{syUtils}}.java.hbs
+15
-0
{{apiDtos@DEFAULT}}.java.hbs
...eName}}/core/{{modules}}/dto/{{apiDtos@DEFAULT}}.java.hbs
+73
-0
I{{entities@SQL}}Service.java.hbs
...ore/{{modules}}/service/I{{entities@SQL}}Service.java.hbs
+165
-0
{{entities@SQL}}ServiceImpl.java.hbs
...dules}}/service/impl/{{entities@SQL}}ServiceImpl.java.hbs
+140
-0
messages_%LANGUAGE%.properties.ftl
...s/i18n/{{projectName}}/messages_%LANGUAGE%.properties.ftl
+10
-0
init.xml.ftl
...-core/src/main/resources/liquibase/changelog/init.xml.ftl
+4
-0
init_h2.sql.ftl
...-core/src/main/resources/liquibase/config/init_h2.sql.ftl
+13
-0
empty.xml.ftl
...ectName}}-core/src/main/resources/liquibase/empty.xml.ftl
+9
-0
h2.xml.ftl
...rojectName}}-core/src/main/resources/liquibase/h2.xml.ftl
+10
-0
h2_table.xml.ftl
...Name}}-core/src/main/resources/liquibase/h2_table.xml.ftl
+113
-0
master.xml.ftl
...ctName}}-core/src/main/resources/liquibase/master.xml.ftl
+10
-0
master_table.xml.ftl
...}}-core/src/main/resources/liquibase/master_table.xml.ftl
+9
-0
view.xml.ftl
...jectName}}-core/src/main/resources/liquibase/view.xml.ftl
+57
-0
pom.xml.hbs
...sources/templ/r8/{{projectName}}-dependencies/pom.xml.hbs
+422
-0
pom.xml.hbs
...n/resources/templ/r8/{{projectName}}-provider/pom.xml.hbs
+155
-0
Dockerfile.hbs
...8/{{projectName}}-provider/src/main/docker/Dockerfile.hbs
+14
-0
{{projectName}}-provider-%SYSAPI_PKGPATH%-k8s.yaml.hbs
...er/{{projectName}}-provider-%SYSAPI_PKGPATH%-k8s.yaml.hbs
+172
-0
{{projectName}}-provider-%SYSAPI_PKGPATH%.yaml.hbs
...docker/{{projectName}}-provider-%SYSAPI_PKGPATH%.yaml.hbs
+148
-0
IBizRuntimeApplication.java.hbs
...main/java/{{packageName}}/IBizRuntimeApplication.java.hbs
+35
-0
SampleApiSecurityConfig.java.hbs
...a/{{packageName}}/config/SampleApiSecurityConfig.java.hbs
+117
-0
application-eureka.yml.hbs
...}}-provider/src/main/resources/application-eureka.yml.hbs
+14
-0
application-nacos.yml.hbs
...e}}-provider/src/main/resources/application-nacos.yml.hbs
+11
-0
application-sys.yml.hbs
...ame}}-provider/src/main/resources/application-sys.yml.hbs
+183
-0
application.yml.hbs
...ectName}}-provider/src/main/resources/application.yml.hbs
+5
-0
logback-spring.xml.hbs
...Name}}-provider/src/main/resources/logback-spring.xml.hbs
+42
-0
未找到文件。
modules/ibizlab-generator-core/pom.xml
浏览文件 @
2f391f52
...
...
@@ -156,7 +156,7 @@
<dependency>
<groupId>
net.ibizsys.model
</groupId>
<artifactId>
ibiz-model
</artifactId>
<version>
0.
3.0
</version>
<version>
0.
2.23
</version>
<exclusions>
<exclusion>
<artifactId>
slf4j-simple
</artifactId>
...
...
modules/ibizlab-generator-core/src/main/java/cn/ibizlab/codegen/model/AppEntityModel.java
浏览文件 @
2f391f52
...
...
@@ -69,8 +69,13 @@ public class AppEntityModel extends BaseModel{
}
// 初始化界面行为
keyField
=
getAppDataEntity
().
getPSDataEntity
().
getKeyPSDEField
().
getCodeName
();
majorField
=
getAppDataEntity
().
getPSDataEntity
().
getMajorPSDEField
().
getCodeName
();
try
{
keyField
=
getAppDataEntity
().
getPSDataEntity
().
getKeyPSDEField
().
getCodeName
();
majorField
=
getAppDataEntity
().
getPSDataEntity
().
getMajorPSDEField
().
getCodeName
();
}
catch
(
Exception
e
){
}
if
(
getAppDataEntity
().
getAllPSAppDEUIActions
()
!=
null
){
getAppDataEntity
().
getAllPSAppDEUIActions
().
forEach
(
appDEUIAction
->{
JSONObject
actionJson
=
new
JSONObject
();
...
...
modules/ibizlab-generator-core/src/main/java/cn/ibizlab/codegen/model/ModelStorage.java
浏览文件 @
2f391f52
...
...
@@ -113,7 +113,7 @@ public class ModelStorage {
CliOption
opt
=
newCliOption
(
TemplateFileType
.
apiDto
)
.
setCliSubType
(
dto
.
getType
())
.
baseData
(
dto
,
dto
.
getCodeName
())
.
set
(
"apiDtos"
,
dto
.
getCodeName
()).
set
(
"apis"
,
dto
.
getApi
().
getCodeName
().
toLowerCase
());
.
set
(
"apiDtos"
,
dto
.
getCodeName
()).
set
(
"apis"
,
dto
.
getApi
().
getCodeName
().
toLowerCase
())
.
set
(
"modules"
,
item
.
getEntity
().
getModule
())
;
rt
.
addOption
(
opt
);
});
});
...
...
@@ -146,6 +146,14 @@ public class ModelStorage {
getSystemModel
().
getWorkflows
().
forEach
(
item
->
{
CliOption
opt
=
newCliOption
(
TemplateFileType
.
workflow
)
.
baseData
(
item
,
item
.
getCodeName
().
toString
())
.
set
(
"wf"
,
item
.
getWFVer
().
getWFCodeName
());
rt
.
addOption
(
opt
);
});
}
else
if
(
type
.
equals
(
TemplateFileType
.
sysUtil
))
{
getSystemModel
().
getSysUtils
().
forEach
(
item
->
{
CliOption
opt
=
newCliOption
(
TemplateFileType
.
sysUtil
)
.
baseData
(
item
,
item
.
getCodeName
().
toString
());
rt
.
addOption
(
opt
);
});
...
...
modules/ibizlab-generator-core/src/main/java/cn/ibizlab/codegen/model/PageModel.java
浏览文件 @
2f391f52
...
...
@@ -9,9 +9,11 @@ import lombok.experimental.Accessors;
import
net.ibizsys.model.app.view.IPSAppView
;
import
net.ibizsys.model.control.IPSControl
;
import
net.ibizsys.model.control.expbar.IPSExpBar
;
import
net.ibizsys.model.control.expbar.IPSTabExpPanel
;
import
net.ibizsys.model.control.toolbar.IPSDETBUIActionItem
;
import
net.ibizsys.model.control.toolbar.IPSDEToolbar
;
import
net.ibizsys.model.view.IPSUIAction
;
import
net.ibizsys.model.control.dashboard.IPSDashboard
;
import
java.util.*
;
...
...
@@ -48,9 +50,21 @@ public class PageModel extends BaseModel{
if
(!
this
.
ctrlsMap
.
containsKey
(
ctrl
.
getId
())){
this
.
ctrlsMap
.
put
(
ctrl
.
getId
(),
ctrl
);
}
String
ctrlType
=
ctrl
.
getControl
().
getControlType
();
// 树导航栏获取数据部件
if
(
"TREEEXPBAR"
.
equals
(
ctrl
.
getControl
().
getControlType
()))
{
List
<
IPSControl
>
controls
=
((
IPSExpBar
)
item
).
getPSControls
();
if
(
"TREEEXPBAR"
.
equals
(
ctrlType
)
||
"DASHBOARD"
.
equals
(
ctrlType
)
||
"TABEXPPANEL"
.
equals
(
ctrlType
))
{
List
<
IPSControl
>
controls
=
new
ArrayList
<>();
switch
(
ctrlType
)
{
case
"TREEEXPBAR"
:
controls
=
((
IPSExpBar
)
item
).
getPSControls
();
break
;
case
"DASHBOARD"
:
controls
=
((
IPSDashboard
)
item
).
getPSControls
();
break
;
case
"TABEXPPANEL"
:
controls
=
((
IPSTabExpPanel
)
item
).
getPSControls
();
break
;
}
if
(
controls
.
size
()
>
0
)
{
for
(
IPSControl
control
:
controls
)
{
CtrlModel
ctrlModel
=
new
CtrlModel
(
appModel
,
control
);
...
...
modules/ibizlab-generator-core/src/main/java/cn/ibizlab/codegen/model/SysUtilModel.java
0 → 100644
浏览文件 @
2f391f52
package
cn
.
ibizlab
.
codegen
.
model
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
lombok.experimental.Accessors
;
import
net.ibizsys.model.res.IPSSysUtil
;
import
net.ibizsys.model.service.IPSSubSysServiceAPI
;
import
java.util.Collection
;
import
java.util.LinkedHashMap
;
import
java.util.Map
;
@Getter
@Setter
@NoArgsConstructor
@Accessors
(
chain
=
true
)
public
class
SysUtilModel
extends
BaseModel
{
public
SysUtilModel
(
IPSSysUtil
ipsSysUtil
)
{
this
.
opt
=
ipsSysUtil
;
this
.
setCodeName
(
ipsSysUtil
.
getCodeName
());
this
.
setName
(
ipsSysUtil
.
getName
());
}
}
modules/ibizlab-generator-core/src/main/java/cn/ibizlab/codegen/model/SystemModel.java
浏览文件 @
2f391f52
...
...
@@ -142,6 +142,26 @@ public class SystemModel extends BaseModel {
return
getWorkflowsMap
().
values
();
}
private
Map
<
String
,
SysUtilModel
>
sysUtilModelMap
;
public
synchronized
Map
<
String
,
SysUtilModel
>
getSysUtilModelMaps
()
{
if
(
sysUtilModelMap
==
null
)
{
try
{
sysUtilModelMap
=
new
LinkedHashMap
<>();
getSystem
().
getAllPSSysUtils
().
forEach
(
iPSSysUtil
->
{
sysUtilModelMap
.
put
(
iPSSysUtil
.
getCodeName
(),
new
SysUtilModel
(
iPSSysUtil
));
});
}
catch
(
Exception
e
)
{
}
}
return
sysUtilModelMap
;
}
public
Collection
<
SysUtilModel
>
getSysUtils
()
{
return
getSysUtilModelMaps
().
values
();
}
public
boolean
isHasMsgTemplate
()
{
return
!
ObjectUtils
.
isEmpty
(
getSystem
().
getAllPSSysMsgTempls
());
}
...
...
modules/ibizlab-generator-core/src/main/java/cn/ibizlab/codegen/model/WorkflowModel.java
浏览文件 @
2f391f52
...
...
@@ -10,6 +10,7 @@ import net.ibizsys.model.dataentity.action.IPSDEAction;
import
net.ibizsys.model.dataentity.action.IPSDELogicAction
;
import
net.ibizsys.model.dataentity.action.IPSDEScriptAction
;
import
net.ibizsys.model.wf.*
;
import
org.springframework.util.CollectionUtils
;
import
org.springframework.util.DigestUtils
;
import
org.springframework.util.ObjectUtils
;
import
org.springframework.util.StringUtils
;
...
...
@@ -515,5 +516,23 @@ public class WorkflowModel extends BaseModel{
return
fieldCond
;
}
public
List
<
IPSWFLink
>
getLinks
()
{
List
<
IPSWFLink
>
links
=
new
ArrayList
<>();
IPSWFProcess
startProcess
=
getWFVer
().
getStartPSWFProcess
();
getProcessLink
(
startProcess
,
links
);
return
links
;
}
public
void
getProcessLink
(
IPSWFProcess
process
,
List
<
IPSWFLink
>
links
)
{
List
<
IPSWFLink
>
processLinks
=
process
.
getPSWFLinks
();
if
(
CollectionUtils
.
isEmpty
(
processLinks
))
return
;
for
(
IPSWFLink
link
:
processLinks
)
{
if
(
links
.
stream
().
anyMatch
(
l
->
l
.
getId
().
equals
(
link
.
getId
())))
continue
;
links
.
add
(
link
);
getProcessLink
(
link
.
getToPSWFProcess
(),
links
);
}
}
}
modules/ibizlab-generator-core/src/main/java/cn/ibizlab/codegen/templating/TemplateFileType.java
浏览文件 @
2f391f52
...
...
@@ -10,6 +10,7 @@ public enum TemplateFileType {
entity
(
Constants
.
ENTITIES
),
module
(
Constants
.
MODULES
),
workflow
(
Constants
.
WORKFLOWS
),
sysUtil
(
Constants
.
SYSUTILS
),
subService
(
Constants
.
SUB_SERVICEAPIS
),
subEntity
(
Constants
.
SUB_ENTITIES
),
api
(
Constants
.
APIS
),
...
...
@@ -52,6 +53,7 @@ public enum TemplateFileType {
public
static
final
String
APPS
=
"apps"
;
public
static
final
String
ENTITIES
=
"entities"
;
public
static
final
String
WORKFLOWS
=
"workflows"
;
public
static
final
String
SYSUTILS
=
"syUtils"
;
public
static
final
String
SUB_SERVICEAPIS
=
"subServiceApis"
;
public
static
final
String
SUB_ENTITIES
=
"subEntities"
;
public
static
final
String
API_ENTITIES
=
"apiEntities"
;
...
...
modules/ibizlab-generator-core/src/main/resources/templ/doc/.gitignore.hbs
0 → 100644
浏览文件 @
2f391f52
*volumes
*target
.settings
*node_modules
*bin
*.project
*.classpath
*.factorypath
.history
.vscode
.idea
**.iml
*.jar
*.log
.DS_Store
modules/ibizlab-generator-core/src/main/resources/templ/doc/.ibizlab-generator-ignore
0 → 100644
浏览文件 @
2f391f52
**.ibizlab-generator-ignore
**.DS_Store
**@macro/**
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/doc/@macro/net.ibizsys.model.wf.IPSWFInteractiveLink.item.md.hbs
0 → 100644
浏览文件 @
2f391f52
{{#
eq
_item
.
wFLinkType
'IAACTION'
}}
####
{{
_item
.
name
}}{{#if
(
and
(
_item
.
parentModel
)
(
or
(
and
(
eq
_item
.
modelType
"PSSYSTEM"
)
(
neq
_item
.
parentModel
.
modelType
"PSSYSTEM"
))
(
neq
_item
.
parentModel
.
modelType
_item
.
modelType
)
)
)
}}
@
{{
_item
.
parentModel
.
name
}}{{/if}}
| 项 |值 |说明 |
|-------------------|:---------------------|:------------------------|
{{#if
(
and
_item
.
name
(
neq
_item
.
name
""
))
}}
|名称
(name)|
{{
_item
.
name
}}
|
|
{{/if}}
{{#if
(
and
_item
.
logicName
(
neq
_item
.
logicName
""
))
}}
|逻辑名称
(logicName)|
{{
_item
.
logicName
}}
|
|
{{/if}}
{{#if
(
and
_item
.
userTag
(
neq
_item
.
userTag
""
))
}}
|用户标记
(userTag)|
{{
_item
.
userTag
}}
|
|
{{/if}}
{{/
eq
}}
modules/ibizlab-generator-core/src/main/resources/templ/doc/@macro/net.ibizsys.model.wf.IPSWFLink.list.md.hbs
0 → 100644
浏览文件 @
2f391f52
{{#
each
items
as
|
_item
|
}}
{{>
@macro
/
net
.
ibizsys
.
model
.
wf
.
IPSWFInteractiveLink
.
item
.
md
.
hbs
_item
=
_item
}}
{{/
each
}}
modules/ibizlab-generator-core/src/main/resources/templ/doc/@macro/net.ibizsys.model.wf.IPSWFProcess.list.md.hbs
0 → 100644
浏览文件 @
2f391f52
{{#
each
items
as
|
_item
|
}}
{{>
@macro
/
net
.
ibizsys
.
model
.
wf
.
IPSWFStartProcess
.
item
.
md
.
hbs
_item
=
_item
}}
{{/
each
}}
modules/ibizlab-generator-core/src/main/resources/templ/doc/@macro/net.ibizsys.model.wf.IPSWFRouteLink.item.md.hbs
0 → 100644
浏览文件 @
2f391f52
{{#
eq
_item
.
wFLinkType
'ROUTE'
}}
####
{{
_item
.
name
}}
| 项 |值 |说明 |
|-------------------|:---------------------|:------------------------|
{{#if
_item
.
name
}}
|名称
(name)|
{{
_item
.
name
}}
|
|
{{/if}}
{{#if
_item
.
logicName
}}
|逻辑名称
(logicName)|
{{
_item
.
logicName
}}
|
|
{{/if}}
{{#if
_item
.
userTag
}}
|用户标记
(userTag)|
{{
_item
.
userTag
}}
|
|
{{/if}}
{{#if
_item
.
userTag2
}}
|用户标记2
(userTag2)|
{{
_item
.
userTag2
}}
|
|
{{/if}}
{{#if
_item
.
userTag3
}}
|用户标记3
(userTag3)|
{{
_item
.
userTag3
}}
|
|
{{/if}}
{{#if
_item
.
userTag4
}}
|用户标记4
(userTag4)|
{{
_item
.
userTag4
}}
|
|
{{/if}}
{{#if
_item
.
userCat
}}
|用户模型分类
(userCat)|
{{
_item
.
userCat
}}
|
|
{{/if}}
{{#if
_item
.
autoModel
}}
|自动产生模型
(autoModel)|
{{
_item
.
autoModel
}}
|
|
{{/if}}
{{#if
_item
.
customCond
}}
|自定义条件
(customCond)|
{{
_item
.
customCond
}}
|
|
{{/if}}
{{#if
_item
.
formCodeName
}}
|操作表单标记
(formCodeName)|
{{
_item
.
formCodeName
}}
|
|
{{/if}}
{{#if
_item
.
fromPSWFProcess
}}
|源流程处理
(fromPSWFProcess)|
{{
_item
.
fromPSWFProcess
.
name
}}
|
|
{{/if}}
{{#if
_item
.
lNPSLanguageRes
}}
|逻辑名称语言资源
(lNPSLanguageRes)|
{{
_item
.
lNPSLanguageRes
.
name
}}
|
|
{{/if}}
{{#if
_item
.
mobFormCodeName
}}
|移动端操作表单标记
(mobFormCodeName)|
{{
_item
.
mobFormCodeName
}}
|
|
{{/if}}
{{#if
_item
.
mobViewCodeName
}}
|移动端操作视图标记
(mobViewCodeName)|
{{
_item
.
mobViewCodeName
}}
|
|
{{/if}}
{{#if
_item
.
nextCondition
}}
|下一步条件
(nextCondition)|
{{
_item
.
nextCondition
}}
|
|
{{/if}}
{{#if
_item
.
pSDynaModel
}}
|动态模型对象
(pSDynaModel)|
{{
_item
.
pSDynaModel
.
name
}}
|
|
{{/if}}
{{#if
_item
.
toPSWFProcess
}}
|目标流程处理
(toPSWFProcess)|
{{
_item
.
toPSWFProcess
.
name
}}
|
|
{{/if}}
{{#if
_item
.
userData
}}
|连接数据
(userData)|
{{
_item
.
userData
}}
|
|
{{/if}}
{{#if
_item
.
userData2
}}
|连接数据2
(userData2)|
{{
_item
.
userData2
}}
|
|
{{/if}}
{{#if
_item
.
viewCodeName
}}
|操作视图标记
(viewCodeName)|
{{
_item
.
viewCodeName
}}
|
|
{{/if}}
{{#if
_item
.
wFLinkType
}}
|处理连接处理
(wFLinkType)|
{{
item
.
wFLinkType
}}
(
{{
_item
.
wFLinkType
}}
)|
|
{{/if}}
{{/
eq
}}
modules/ibizlab-generator-core/src/main/resources/templ/doc/@macro/net.ibizsys.model.wf.IPSWFStartProcess.item.md.hbs
0 → 100644
浏览文件 @
2f391f52
{{#
eq
_item
.
wFProcessType
"START"
}}
####
{{
_item
.
name
}}{{#if
(
and
_item
.
parentModel
(
or
(
and
(
eq
_item
.
modelType
"PSSYSTEM"
)
(
neq
_item
.
parentModel
.
modelType
"PSSYSTEM"
))
(
neq
_item
.
parentModel
.
modelType
_item
.
modelType
)))
}}
@
{{
_item
.
parentModel
.
name
}}{{/if}}
| 项 |值 |说明 |
|-------------------|:---------------------|:------------------------|
{{#if
_item
.
name
}}
|名称
(name)|
{{
_item
.
name
}}
|
|
{{/if}}
{{#if
_item
.
codeName
}}
|代码标识
(codeName)|
{{
_item
.
codeName
}}
|
|
{{/if}}
{{#if
_item
.
logicName
}}
|逻辑名称
(logicName)|
{{
_item
.
logicName
}}
|
|
{{/if}}
{{#if
_item
.
userTag
}}
|用户标记
(userTag)|
{{
_item
.
userTag
}}
|
|
{{/if}}
{{#if
_item
.
userTag2
}}
{{/if}}
{{#if
_item
.
userTag3
}}
|用户标记3
(userTag3)|
{{
_item
.
userTag3
}}
|
|
{{/if}}
{{#if
_item
.
userTag4
}}
{{/if}}
{{#if
_item
.
userCat
}}
|用户模型分类
(userCat)|
{{
_item
.
userCat
}}
|
|
{{/if}}
{{#if
_item
.
autoModel
}}
|自动产生模型
(autoModel)|
{{
_item
.
autoModel
}}
|
|
{{/if}}
{{#if
_item
.
formCodeName
}}
|操作表单标记
(formCodeName)|
{{
_item
.
formCodeName
}}
|
|
{{/if}}
{{#if
_item
.
height
}}
|高度
(height)|
{{
_item
.
height
}}
|
|
{{/if}}
{{#if
_item
.
leftPos
}}
|左侧位置
(leftPos)|
{{
_item
.
leftPos
}}
|
|
{{/if}}
{{#if
_item
.
mobFormCodeName
}}
|移动端操作表单标记
(mobFormCodeName)|
{{
_item
.
mobFormCodeName
}}
|
|
{{/if}}
{{#if
_item
.
namePSLanguageRes
}}
|名称语言资源
(namePSLanguageRes)|
{{
_item
.
namePSLanguageRes
.
name
}}
|
|
{{/if}}
{{#if
_item
.
pSDynaModel
}}
|动态模型对象
(pSDynaModel)|
{{
_item
.
pSDynaModel
.
name
}}
|
|
{{/if}}
{{#if
_item
.
pSSysMsgTempl
}}
|通知消息模板
(pSSysMsgTempl)|
{{
_item
.
pSSysMsgTempl
.
name
}}
|
|
{{/if}}
{{#if
_item
.
pSWFWorkTime
}}
|流程工作时间
(pSWFWorkTime)|
{{
_item
.
pSWFWorkTime
.
name
}}
|
|
{{/if}}
{{#if
_item
.
timeout
}}
|处理超时时长
(timeout)|
{{
_item
.
timeout
}}
|
|
{{/if}}
{{#if
_item
.
timeoutField
}}
|动态超时时长存放属性
(timeoutField)|
{{
_item
.
timeoutField
}}
|
|
{{/if}}
{{#if
_item
.
timeoutType
}}
|处理超时单位
(timeoutType)|srfcodelist('WFTimeoutType', _item.timeoutType)
(
{{
_item
.
timeoutType
}}
)|
|
{{/if}}
{{#if
_item
.
topPos
}}
|上方位置
(topPos)|
{{
_item
.
topPos
}}
|
|
{{/if}}
{{#if
_item
.
userData
}}
|处理数据
(userData)|
{{
_item
.
userData
}}
|
|
{{/if}}
{{#if
_item
.
userData2
}}
|处理数据2
(userData2)|
{{
_item
.
userData2
}}
|
|
{{/if}}
{{#if
_item
.
wFProcessType
}}
|流程处理类型
(wFProcessType)|srfcodelist('AllWFProcessType', _item.wFProcessType)
(
{{
_item
.
wFProcessType
}}
)|
|
{{/if}}
{{#if
_item
.
wFStepValue
}}
|流程步骤值
(wFStepValue)|
{{
_item
.
wFStepValue
}}
|
|
{{/if}}
{{#if
_item
.
width
}}
|宽度
(width)|
{{
_item
.
width
}}
|
|
{{/if}}
{{#if
_item
.
asynchronousProcess
}}
|异步处理
(asynchronousProcess)|
{{
_item
.
asynchronousProcess
}}
|
|
{{/if}}
{{#if
_item
.
enableTimeout
}}
|启用处理超时
(enableTimeout)|
{{
_item
.
enableTimeout
}}
|
|
{{/if}}
{{#if
_item
.
startProcess
}}
|开始处理
(startProcess)|
{{
_item
.
startProcess
}}
|
|
{{/if}}
*来源:getPSWFProcessParams*
{{#if
_item
.
pSWFProcessParams
}}
##### 处理参数集合
<
#
ibizinclude
>
../TEMPL/net.ibizsys.model.wf.IPSWFProcessParam.list.md
</
#
ibizinclude>
{{/if}}
{{/
eq
}}
modules/ibizlab-generator-core/src/main/resources/templ/doc/@macro/workflow/item/net.ibizsys.model.wf.IPSWFCallOrgActivityProcess.item.md.hbs
0 → 100644
浏览文件 @
2f391f52
<
#
comment
>
net.ibizsys.model.wf.IPSWFCallOrgActivityProcess
</
#
comment>
<
#
if
_item
.
getWFProcessType
()=='
CALLORGACTIVITY
'
>
#### ${_item.getName()}
<
#
if
_item
.
getParentModel
()??
&&
((
item
.
getModelType
()
==
'
PSSYSTEM
'
&&
_item
.
getParentModel
().
getModelType
()!='
PSSYSTEM
')||(
_item
.
getParentModel
().
getModelType
()
!=
item
.
getModelType
()))
>
@${_item.getParentModel().name}
</
#
if>
| 项 |值 |说明 |
|-------------------|:---------------------|:------------------------|
<
#
if
_item
.
getName
()??
&&
_item
.
getName
()?
length
gt
0
>
|名称
(name)|${_item.getName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getCodeName
()??
&&
_item
.
getCodeName
()?
length
gt
0
>
|代码标识
(codeName)|${_item.getCodeName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getLogicName
()??
&&
_item
.
getLogicName
()?
length
gt
0
>
|逻辑名称
(logicName)|${_item.getLogicName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserTag
()??
&&
_item
.
getUserTag
()?
length
gt
0
>
|用户标记
(userTag)|${_item.getUserTag()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserTag2
()??
&&
_item
.
getUserTag2
()?
length
gt
0
>
|用户标记2
(userTag2)|${_item.getUserTag2()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserTag3
()??
&&
_item
.
getUserTag3
()?
length
gt
0
>
|用户标记3
(userTag3)|${_item.getUserTag3()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserTag4
()??
&&
_item
.
getUserTag4
()?
length
gt
0
>
|用户标记4
(userTag4)|${_item.getUserTag4()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserCat
()??
&&
_item
.
getUserCat
()?
length
gt
0
>
|用户模型分类
(userCat)|${_item.getUserCat()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
isAutoModel
()
&&
_item
.
isAutoModel
()??
>
|自动产生模型
(autoModel)|${_item.isAutoModel()?c}|
|
</
#
if>
<
#
if
_item
.
getHeight
()??
>
|高度
(height)|${_item.getHeight()?c}|
|
</
#
if>
<
#
if
_item
.
getLeftPos
()??
>
|左侧位置
(leftPos)|${_item.getLeftPos()?c}|
|
</
#
if>
<
#
if
_item
.
getNamePSLanguageRes
()??
>
|名称语言资源
(getNamePSLanguageRes)|
<
#
if
_item
.
getNamePSLanguageRes
().
getRTMOSFilePath
()??
&&
_item
.
getNamePSLanguageRes
().
getRTMOSFilePath
()?
length
gt
0
><a
href=
"${_prepath}${_item.getNamePSLanguageRes().getRTMOSFilePath()}"
>
${_item.getNamePSLanguageRes().getName()}
</a><
#
else
>
${_item.getNamePSLanguageRes().getName()}
</
#
if>
|
|
</
#
if>
<
#
if
_item
.
getPSDynaModel
()??
>
|动态模型对象
(getPSDynaModel)|
<
#
if
_item
.
getPSDynaModel
().
getRTMOSFilePath
()??
&&
_item
.
getPSDynaModel
().
getRTMOSFilePath
()?
length
gt
0
><a
href=
"${_prepath}${_item.getPSDynaModel().getRTMOSFilePath()}"
>
${_item.getPSDynaModel().getName()}
</a><
#
else
>
${_item.getPSDynaModel().getName()}
</
#
if>
|
|
</
#
if>
<
#
if
_item
.
getPSSysMsgTempl
()??
>
|通知消息模板
(getPSSysMsgTempl)|
<
#
if
_item
.
getPSSysMsgTempl
().
getRTMOSFilePath
()??
&&
_item
.
getPSSysMsgTempl
().
getRTMOSFilePath
()?
length
gt
0
><a
href=
"${_prepath}${_item.getPSSysMsgTempl().getRTMOSFilePath()}"
>
${_item.getPSSysMsgTempl().getName()}
</a><
#
else
>
${_item.getPSSysMsgTempl().getName()}
</
#
if>
|
|
</
#
if>
<
#
if
_item
.
getPSWFWorkTime
()??
>
|流程工作时间
(getPSWFWorkTime)|
<
#
if
_item
.
getPSWFWorkTime
().
getRTMOSFilePath
()??
&&
_item
.
getPSWFWorkTime
().
getRTMOSFilePath
()?
length
gt
0
><a
href=
"${_prepath}${_item.getPSWFWorkTime().getRTMOSFilePath()}"
>
${_item.getPSWFWorkTime().getName()}
</a><
#
else
>
${_item.getPSWFWorkTime().getName()}
</
#
if>
|
|
</
#
if>
<
#
if
_item
.
getTargetPSWF
()??
>
|调用目标流程
(getTargetPSWF)|
<
#
if
_item
.
getTargetPSWF
().
getRTMOSFilePath
()??
&&
_item
.
getTargetPSWF
().
getRTMOSFilePath
()?
length
gt
0
><a
href=
"${_prepath}${_item.getTargetPSWF().getRTMOSFilePath()}"
>
${_item.getTargetPSWF().getName()}
</a><
#
else
>
${_item.getTargetPSWF().getName()}
</
#
if>
|
|
</
#
if>
<
#
if
_item
.
getTimeout
()??
>
|处理超时时长
(timeout)|${_item.getTimeout()?c}|
|
</
#
if>
<
#
if
_item
.
getTimeoutField
()??
&&
_item
.
getTimeoutField
()?
length
gt
0
>
|动态超时时长存放属性
(timeoutField)|${_item.getTimeoutField()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getTimeoutType
()??
&&
_item
.
getTimeoutType
()?
length
gt
0
>
|处理超时单位
(timeoutType)|${srfcodelist('WFTimeoutType', _item.getTimeoutType())}
(${_item.getTimeoutType()?replace('
','
<BR>
')?replace('
','
<BR>
')})|
|
</
#
if>
<
#
if
_item
.
getTopPos
()??
>
|上方位置
(topPos)|${_item.getTopPos()?c}|
|
</
#
if>
<
#
if
_item
.
getUserData
()??
&&
_item
.
getUserData
()?
length
gt
0
>
|处理数据
(userData)|${_item.getUserData()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserData2
()??
&&
_item
.
getUserData2
()?
length
gt
0
>
|处理数据2
(userData2)|${_item.getUserData2()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getWFProcessType
()??
&&
_item
.
getWFProcessType
()?
length
gt
0
>
|流程处理类型
(wFProcessType)|${srfcodelist('AllWFProcessType', _item.getWFProcessType())}
(${_item.getWFProcessType()?replace('
','
<BR>
')?replace('
','
<BR>
')})|
|
</
#
if>
<
#
if
_item
.
getWFStepValue
()??
&&
_item
.
getWFStepValue
()?
length
gt
0
>
|流程步骤值
(wFStepValue)|${_item.getWFStepValue()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getWidth
()??
>
|宽度
(width)|${_item.getWidth()?c}|
|
</
#
if>
<
#
if
_item
.
isAsynchronousProcess
()??
>
|异步处理
(asynchronousProcess)|${_item.isAsynchronousProcess()?c}|
|
</
#
if>
<
#
if
_item
.
isEnableTimeout
()??
>
|启用处理超时
(enableTimeout)|${_item.isEnableTimeout()?c}|
|
</
#
if>
*来源:getPSWFProcessParams*
<
#
if
_item
.
getPSWFProcessParams
()??
&&
srflist
(
_item
.
getPSWFProcessParams
())?
size
gt
0
>
##### 处理参数集合
<
#
assign
_items2 =
_item.getPSWFProcessParams()
>
<
#
ibizinclude
>
../TEMPL/net.ibizsys.model.wf.IPSWFProcessParam.list.md
</
#
ibizinclude>
</
#
if>
*来源:getPSWFProcessRoles*
<
#
if
_item
.
getPSWFProcessRoles
()??
&&
srflist
(
_item
.
getPSWFProcessRoles
())?
size
gt
0
>
##### 组织角色集合
<
#
assign
_items2 =
_item.getPSWFProcessRoles()
>
<
#
ibizinclude
>
../TEMPL/net.ibizsys.model.wf.IPSWFProcessRole.list.md
</
#
ibizinclude>
</
#
if>
</
#
if>
modules/ibizlab-generator-core/src/main/resources/templ/doc/@macro/workflow/item/net.ibizsys.model.wf.IPSWFDEActionProcess.item.md.hbs
0 → 100644
浏览文件 @
2f391f52
<
#
if
_item
.
getWFProcessType
()=='
PROCESS
'
>
#### ${_item.getName()}
<
#
if
_item
.
getParentModel
()??
&&
((
item
.
getModelType
()
==
'
PSSYSTEM
'
&&
_item
.
getParentModel
().
getModelType
()!='
PSSYSTEM
')||(
_item
.
getParentModel
().
getModelType
()
!=
item
.
getModelType
()))
>
@${_item.getParentModel().name}
</
#
if>
| 项 |值 |说明 |
|-------------------|:---------------------|:------------------------|
<
#
if
_item
.
getName
()??
&&
_item
.
getName
()?
length
gt
0
>
|名称
(name)|${_item.getName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getCodeName
()??
&&
_item
.
getCodeName
()?
length
gt
0
>
|代码标识
(codeName)|${_item.getCodeName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getLogicName
()??
&&
_item
.
getLogicName
()?
length
gt
0
>
|逻辑名称
(logicName)|${_item.getLogicName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserTag
()??
&&
_item
.
getUserTag
()?
length
gt
0
>
|用户标记
(userTag)|${_item.getUserTag()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserTag2
()??
&&
_item
.
getUserTag2
()?
length
gt
0
>
|用户标记2
(userTag2)|${_item.getUserTag2()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserTag3
()??
&&
_item
.
getUserTag3
()?
length
gt
0
>
|用户标记3
(userTag3)|${_item.getUserTag3()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserTag4
()??
&&
_item
.
getUserTag4
()?
length
gt
0
>
|用户标记4
(userTag4)|${_item.getUserTag4()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserCat
()??
&&
_item
.
getUserCat
()?
length
gt
0
>
|用户模型分类
(userCat)|${_item.getUserCat()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
isAutoModel
()
&&
_item
.
isAutoModel
()??
>
|自动产生模型
(autoModel)|${_item.isAutoModel()?c}|
|
</
#
if>
<
#
if
_item
.
getDEActionName
()??
&&
_item
.
getDEActionName
()?
length
gt
0
>
|实体行为标识
(dEActionName)|${_item.getDEActionName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getHeight
()??
>
|高度
(height)|${_item.getHeight()?c}|
|
</
#
if>
<
#
if
_item
.
getLeftPos
()??
>
|左侧位置
(leftPos)|${_item.getLeftPos()?c}|
|
</
#
if>
<
#
if
_item
.
getNamePSLanguageRes
()??
>
|名称语言资源
(getNamePSLanguageRes)|
<
#
if
_item
.
getNamePSLanguageRes
().
getRTMOSFilePath
()??
&&
_item
.
getNamePSLanguageRes
().
getRTMOSFilePath
()?
length
gt
0
><a
href=
"${_prepath}${_item.getNamePSLanguageRes().getRTMOSFilePath()}"
>
${_item.getNamePSLanguageRes().getName()}
</a><
#
else
>
${_item.getNamePSLanguageRes().getName()}
</
#
if>
|
|
</
#
if>
<
#
if
_item
.
getPSDEAction
()??
>
|实体行为
(getPSDEAction)|
<
#
if
_item
.
getPSDEAction
().
getRTMOSFilePath
()??
&&
_item
.
getPSDEAction
().
getRTMOSFilePath
()?
length
gt
0
><a
href=
"${_prepath}${_item.getPSDEAction().getRTMOSFilePath()}"
>
${_item.getPSDEAction().getName()}
</a><
#
else
>
${_item.getPSDEAction().getName()}
</
#
if>
|
|
</
#
if>
<
#
if
_item
.
getPSDEWF
()??
>
|实体工作流
(getPSDEWF)|
<
#
if
_item
.
getPSDEWF
().
getRTMOSFilePath
()??
&&
_item
.
getPSDEWF
().
getRTMOSFilePath
()?
length
gt
0
><a
href=
"${_prepath}${_item.getPSDEWF().getRTMOSFilePath()}"
>
${_item.getPSDEWF().getName()}
</a><
#
else
>
${_item.getPSDEWF().getName()}
</
#
if>
|
|
</
#
if>
<
#
if
_item
.
getPSDataEntity
()??
>
|实体对象
(getPSDataEntity)|
<
#
if
_item
.
getPSDataEntity
().
getRTMOSFilePath
()??
&&
_item
.
getPSDataEntity
().
getRTMOSFilePath
()?
length
gt
0
><a
href=
"${_prepath}${_item.getPSDataEntity().getRTMOSFilePath()}"
>
${_item.getPSDataEntity().getName()}
</a><
#
else
>
${_item.getPSDataEntity().getName()}
</
#
if>
|
|
</
#
if>
<
#
if
_item
.
getPSDynaModel
()??
>
|动态模型对象
(getPSDynaModel)|
<
#
if
_item
.
getPSDynaModel
().
getRTMOSFilePath
()??
&&
_item
.
getPSDynaModel
().
getRTMOSFilePath
()?
length
gt
0
><a
href=
"${_prepath}${_item.getPSDynaModel().getRTMOSFilePath()}"
>
${_item.getPSDynaModel().getName()}
</a><
#
else
>
${_item.getPSDynaModel().getName()}
</
#
if>
|
|
</
#
if>
<
#
if
_item
.
getPSSysMsgTempl
()??
>
|通知消息模板
(getPSSysMsgTempl)|
<
#
if
_item
.
getPSSysMsgTempl
().
getRTMOSFilePath
()??
&&
_item
.
getPSSysMsgTempl
().
getRTMOSFilePath
()?
length
gt
0
><a
href=
"${_prepath}${_item.getPSSysMsgTempl().getRTMOSFilePath()}"
>
${_item.getPSSysMsgTempl().getName()}
</a><
#
else
>
${_item.getPSSysMsgTempl().getName()}
</
#
if>
|
|
</
#
if>
<
#
if
_item
.
getPSWFWorkTime
()??
>
|流程工作时间
(getPSWFWorkTime)|
<
#
if
_item
.
getPSWFWorkTime
().
getRTMOSFilePath
()??
&&
_item
.
getPSWFWorkTime
().
getRTMOSFilePath
()?
length
gt
0
><a
href=
"${_prepath}${_item.getPSWFWorkTime().getRTMOSFilePath()}"
>
${_item.getPSWFWorkTime().getName()}
</a><
#
else
>
${_item.getPSWFWorkTime().getName()}
</
#
if>
|
|
</
#
if>
<
#
if
_item
.
getTimeout
()??
>
|处理超时时长
(timeout)|${_item.getTimeout()?c}|
|
</
#
if>
<
#
if
_item
.
getTimeoutField
()??
&&
_item
.
getTimeoutField
()?
length
gt
0
>
|动态超时时长存放属性
(timeoutField)|${_item.getTimeoutField()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getTimeoutType
()??
&&
_item
.
getTimeoutType
()?
length
gt
0
>
|处理超时单位
(timeoutType)|${srfcodelist('WFTimeoutType', _item.getTimeoutType())}
(${_item.getTimeoutType()?replace('
','
<BR>
')?replace('
','
<BR>
')})|
|
</
#
if>
<
#
if
_item
.
getTopPos
()??
>
|上方位置
(topPos)|${_item.getTopPos()?c}|
|
</
#
if>
<
#
if
_item
.
getUserData
()??
&&
_item
.
getUserData
()?
length
gt
0
>
|处理数据
(userData)|${_item.getUserData()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserData2
()??
&&
_item
.
getUserData2
()?
length
gt
0
>
|处理数据2
(userData2)|${_item.getUserData2()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getWFProcessType
()??
&&
_item
.
getWFProcessType
()?
length
gt
0
>
|流程处理类型
(wFProcessType)|${srfcodelist('AllWFProcessType', _item.getWFProcessType())}
(${_item.getWFProcessType()?replace('
','
<BR>
')?replace('
','
<BR>
')})|
|
</
#
if>
<
#
if
_item
.
getWFStepValue
()??
&&
_item
.
getWFStepValue
()?
length
gt
0
>
|流程步骤值
(wFStepValue)|${_item.getWFStepValue()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getWidth
()??
>
|宽度
(width)|${_item.getWidth()?c}|
|
</
#
if>
<
#
if
_item
.
isAsynchronousProcess
()??
>
|异步处理
(asynchronousProcess)|${_item.isAsynchronousProcess()?c}|
|
</
#
if>
<
#
if
_item
.
isEnableTimeout
()??
>
|启用处理超时
(enableTimeout)|${_item.isEnableTimeout()?c}|
|
</
#
if>
*来源:getPSWFProcessParams*
<
#
if
_item
.
getPSWFProcessParams
()??
&&
srflist
(
_item
.
getPSWFProcessParams
())?
size
gt
0
>
##### 处理参数集合
<
#
assign
_items2 =
_item.getPSWFProcessParams()
>
<
#
ibizinclude
>
../TEMPL/net.ibizsys.model.wf.IPSWFProcessParam.list.md
</
#
ibizinclude>
</
#
if>
</
#
if>
modules/ibizlab-generator-core/src/main/resources/templ/doc/@macro/workflow/item/net.ibizsys.model.wf.IPSWFEmbedWFProcess.item.md.hbs
0 → 100644
浏览文件 @
2f391f52
<
#
comment
>
net.ibizsys.model.wf.IPSWFEmbedWFProcess
</
#
comment>
<
#
if
_item
.
getWFProcessType
()=='
EMBED
'
>
#### ${_item.getName()}
<
#
if
_item
.
getParentModel
()??
&&
((
item
.
getModelType
()
==
'
PSSYSTEM
'
&&
_item
.
getParentModel
().
getModelType
()!='
PSSYSTEM
')||(
_item
.
getParentModel
().
getModelType
()
!=
item
.
getModelType
()))
>
@${_item.getParentModel().name}
</
#
if>
| 项 |值 |说明 |
|-------------------|:---------------------|:------------------------|
<
#
if
_item
.
getName
()??
&&
_item
.
getName
()?
length
gt
0
>
|名称
(name)|${_item.getName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getCodeName
()??
&&
_item
.
getCodeName
()?
length
gt
0
>
|代码标识
(codeName)|${_item.getCodeName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getLogicName
()??
&&
_item
.
getLogicName
()?
length
gt
0
>
|逻辑名称
(logicName)|${_item.getLogicName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserTag
()??
&&
_item
.
getUserTag
()?
length
gt
0
>
|用户标记
(userTag)|${_item.getUserTag()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserTag2
()??
&&
_item
.
getUserTag2
()?
length
gt
0
>
|用户标记2
(userTag2)|${_item.getUserTag2()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserTag3
()??
&&
_item
.
getUserTag3
()?
length
gt
0
>
|用户标记3
(userTag3)|${_item.getUserTag3()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserTag4
()??
&&
_item
.
getUserTag4
()?
length
gt
0
>
|用户标记4
(userTag4)|${_item.getUserTag4()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserCat
()??
&&
_item
.
getUserCat
()?
length
gt
0
>
|用户模型分类
(userCat)|${_item.getUserCat()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
isAutoModel
()
&&
_item
.
isAutoModel
()??
>
|自动产生模型
(autoModel)|${_item.isAutoModel()?c}|
|
</
#
if>
<
#
if
_item
.
getHeight
()??
>
|高度
(height)|${_item.getHeight()?c}|
|
</
#
if>
<
#
if
_item
.
getLeftPos
()??
>
|左侧位置
(leftPos)|${_item.getLeftPos()?c}|
|
</
#
if>
<
#
if
_item
.
getNamePSLanguageRes
()??
>
|名称语言资源
(getNamePSLanguageRes)|
<
#
if
_item
.
getNamePSLanguageRes
().
getRTMOSFilePath
()??
&&
_item
.
getNamePSLanguageRes
().
getRTMOSFilePath
()?
length
gt
0
><a
href=
"${_prepath}${_item.getNamePSLanguageRes().getRTMOSFilePath()}"
>
${_item.getNamePSLanguageRes().getName()}
</a><
#
else
>
${_item.getNamePSLanguageRes().getName()}
</
#
if>
|
|
</
#
if>
<
#
if
_item
.
getPSDynaModel
()??
>
|动态模型对象
(getPSDynaModel)|
<
#
if
_item
.
getPSDynaModel
().
getRTMOSFilePath
()??
&&
_item
.
getPSDynaModel
().
getRTMOSFilePath
()?
length
gt
0
><a
href=
"${_prepath}${_item.getPSDynaModel().getRTMOSFilePath()}"
>
${_item.getPSDynaModel().getName()}
</a><
#
else
>
${_item.getPSDynaModel().getName()}
</
#
if>
|
|
</
#
if>
<
#
if
_item
.
getPSSysMsgTempl
()??
>
|通知消息模板
(getPSSysMsgTempl)|
<
#
if
_item
.
getPSSysMsgTempl
().
getRTMOSFilePath
()??
&&
_item
.
getPSSysMsgTempl
().
getRTMOSFilePath
()?
length
gt
0
><a
href=
"${_prepath}${_item.getPSSysMsgTempl().getRTMOSFilePath()}"
>
${_item.getPSSysMsgTempl().getName()}
</a><
#
else
>
${_item.getPSSysMsgTempl().getName()}
</
#
if>
|
|
</
#
if>
<
#
if
_item
.
getPSWFWorkTime
()??
>
|流程工作时间
(getPSWFWorkTime)|
<
#
if
_item
.
getPSWFWorkTime
().
getRTMOSFilePath
()??
&&
_item
.
getPSWFWorkTime
().
getRTMOSFilePath
()?
length
gt
0
><a
href=
"${_prepath}${_item.getPSWFWorkTime().getRTMOSFilePath()}"
>
${_item.getPSWFWorkTime().getName()}
</a><
#
else
>
${_item.getPSWFWorkTime().getName()}
</
#
if>
|
|
</
#
if>
<
#
if
_item
.
getTimeout
()??
>
|处理超时时长
(timeout)|${_item.getTimeout()?c}|
|
</
#
if>
<
#
if
_item
.
getTimeoutField
()??
&&
_item
.
getTimeoutField
()?
length
gt
0
>
|动态超时时长存放属性
(timeoutField)|${_item.getTimeoutField()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getTimeoutType
()??
&&
_item
.
getTimeoutType
()?
length
gt
0
>
|处理超时单位
(timeoutType)|${srfcodelist('WFTimeoutType', _item.getTimeoutType())}
(${_item.getTimeoutType()?replace('
','
<BR>
')?replace('
','
<BR>
')})|
|
</
#
if>
<
#
if
_item
.
getTopPos
()??
>
|上方位置
(topPos)|${_item.getTopPos()?c}|
|
</
#
if>
<
#
if
_item
.
getUserData
()??
&&
_item
.
getUserData
()?
length
gt
0
>
|处理数据
(userData)|${_item.getUserData()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserData2
()??
&&
_item
.
getUserData2
()?
length
gt
0
>
|处理数据2
(userData2)|${_item.getUserData2()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getWFProcessType
()??
&&
_item
.
getWFProcessType
()?
length
gt
0
>
|流程处理类型
(wFProcessType)|${srfcodelist('AllWFProcessType', _item.getWFProcessType())}
(${_item.getWFProcessType()?replace('
','
<BR>
')?replace('
','
<BR>
')})|
|
</
#
if>
<
#
if
_item
.
getWFStepValue
()??
&&
_item
.
getWFStepValue
()?
length
gt
0
>
|流程步骤值
(wFStepValue)|${_item.getWFStepValue()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getWidth
()??
>
|宽度
(width)|${_item.getWidth()?c}|
|
</
#
if>
<
#
if
_item
.
isAsynchronousProcess
()??
>
|异步处理
(asynchronousProcess)|${_item.isAsynchronousProcess()?c}|
|
</
#
if>
<
#
if
_item
.
isEnableTimeout
()??
>
|启用处理超时
(enableTimeout)|${_item.isEnableTimeout()?c}|
|
</
#
if>
*来源:getPSWFProcessParams*
<
#
if
_item
.
getPSWFProcessParams
()??
&&
srflist
(
_item
.
getPSWFProcessParams
())?
size
gt
0
>
##### 处理参数集合
<
#
assign
_items2 =
_item.getPSWFProcessParams()
>
<
#
ibizinclude
>
../TEMPL/net.ibizsys.model.wf.IPSWFProcessParam.list.md
</
#
ibizinclude>
</
#
if>
*来源:getPSWFProcessSubWFs*
<
#
if
_item
.
getPSWFProcessSubWFs
()??
&&
srflist
(
_item
.
getPSWFProcessSubWFs
())?
size
gt
0
>
##### 嵌套流程集合
<
#
assign
_items2 =
_item.getPSWFProcessSubWFs()
>
<
#
ibizinclude
>
../TEMPL/net.ibizsys.model.wf.IPSWFProcessSubWF.list.md
</
#
ibizinclude>
</
#
if>
</
#
if>
modules/ibizlab-generator-core/src/main/resources/templ/doc/@macro/workflow/item/net.ibizsys.model.wf.IPSWFEndProcess.item.md.hbs
0 → 100644
浏览文件 @
2f391f52
<
#
comment
>
net.ibizsys.model.wf.IPSWFEndProcess
</
#
comment>
<
#
if
_item
.
getWFProcessType
()=='
END
'
>
#### ${_item.getName()}
<
#
if
_item
.
getParentModel
()??
&&
((
item
.
getModelType
()
==
'
PSSYSTEM
'
&&
_item
.
getParentModel
().
getModelType
()!='
PSSYSTEM
')||(
_item
.
getParentModel
().
getModelType
()
!=
item
.
getModelType
()))
>
@${_item.getParentModel().name}
</
#
if>
| 项 |值 |说明 |
|-------------------|:---------------------|:------------------------|
<
#
if
_item
.
getName
()??
&&
_item
.
getName
()?
length
gt
0
>
|名称
(name)|${_item.getName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getCodeName
()??
&&
_item
.
getCodeName
()?
length
gt
0
>
|代码标识
(codeName)|${_item.getCodeName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getLogicName
()??
&&
_item
.
getLogicName
()?
length
gt
0
>
|逻辑名称
(logicName)|${_item.getLogicName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserTag
()??
&&
_item
.
getUserTag
()?
length
gt
0
>
|用户标记
(userTag)|${_item.getUserTag()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserTag2
()??
&&
_item
.
getUserTag2
()?
length
gt
0
>
|用户标记2
(userTag2)|${_item.getUserTag2()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserTag3
()??
&&
_item
.
getUserTag3
()?
length
gt
0
>
|用户标记3
(userTag3)|${_item.getUserTag3()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserTag4
()??
&&
_item
.
getUserTag4
()?
length
gt
0
>
|用户标记4
(userTag4)|${_item.getUserTag4()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserCat
()??
&&
_item
.
getUserCat
()?
length
gt
0
>
|用户模型分类
(userCat)|${_item.getUserCat()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
isAutoModel
()
&&
_item
.
isAutoModel
()??
>
|自动产生模型
(autoModel)|${_item.isAutoModel()?c}|
|
</
#
if>
<
#
if
_item
.
getExitStateValue
()??
&&
_item
.
getExitStateValue
()?
length
gt
0
>
|结束状态值
(exitStateValue)|${_item.getExitStateValue()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getHeight
()??
>
|高度
(height)|${_item.getHeight()?c}|
|
</
#
if>
<
#
if
_item
.
getLeftPos
()??
>
|左侧位置
(leftPos)|${_item.getLeftPos()?c}|
|
</
#
if>
<
#
if
_item
.
getNamePSLanguageRes
()??
>
|名称语言资源
(getNamePSLanguageRes)|
<
#
if
_item
.
getNamePSLanguageRes
().
getRTMOSFilePath
()??
&&
_item
.
getNamePSLanguageRes
().
getRTMOSFilePath
()?
length
gt
0
><a
href=
"${_prepath}${_item.getNamePSLanguageRes().getRTMOSFilePath()}"
>
${_item.getNamePSLanguageRes().getName()}
</a><
#
else
>
${_item.getNamePSLanguageRes().getName()}
</
#
if>
|
|
</
#
if>
<
#
if
_item
.
getPSDynaModel
()??
>
|动态模型对象
(getPSDynaModel)|
<
#
if
_item
.
getPSDynaModel
().
getRTMOSFilePath
()??
&&
_item
.
getPSDynaModel
().
getRTMOSFilePath
()?
length
gt
0
><a
href=
"${_prepath}${_item.getPSDynaModel().getRTMOSFilePath()}"
>
${_item.getPSDynaModel().getName()}
</a><
#
else
>
${_item.getPSDynaModel().getName()}
</
#
if>
|
|
</
#
if>
<
#
if
_item
.
getPSSysMsgTempl
()??
>
|通知消息模板
(getPSSysMsgTempl)|
<
#
if
_item
.
getPSSysMsgTempl
().
getRTMOSFilePath
()??
&&
_item
.
getPSSysMsgTempl
().
getRTMOSFilePath
()?
length
gt
0
><a
href=
"${_prepath}${_item.getPSSysMsgTempl().getRTMOSFilePath()}"
>
${_item.getPSSysMsgTempl().getName()}
</a><
#
else
>
${_item.getPSSysMsgTempl().getName()}
</
#
if>
|
|
</
#
if>
<
#
if
_item
.
getPSWFWorkTime
()??
>
|流程工作时间
(getPSWFWorkTime)|
<
#
if
_item
.
getPSWFWorkTime
().
getRTMOSFilePath
()??
&&
_item
.
getPSWFWorkTime
().
getRTMOSFilePath
()?
length
gt
0
><a
href=
"${_prepath}${_item.getPSWFWorkTime().getRTMOSFilePath()}"
>
${_item.getPSWFWorkTime().getName()}
</a><
#
else
>
${_item.getPSWFWorkTime().getName()}
</
#
if>
|
|
</
#
if>
<
#
if
_item
.
getTimeout
()??
>
|处理超时时长
(timeout)|${_item.getTimeout()?c}|
|
</
#
if>
<
#
if
_item
.
getTimeoutField
()??
&&
_item
.
getTimeoutField
()?
length
gt
0
>
|动态超时时长存放属性
(timeoutField)|${_item.getTimeoutField()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getTimeoutType
()??
&&
_item
.
getTimeoutType
()?
length
gt
0
>
|处理超时单位
(timeoutType)|${srfcodelist('WFTimeoutType', _item.getTimeoutType())}
(${_item.getTimeoutType()?replace('
','
<BR>
')?replace('
','
<BR>
')})|
|
</
#
if>
<
#
if
_item
.
getTopPos
()??
>
|上方位置
(topPos)|${_item.getTopPos()?c}|
|
</
#
if>
<
#
if
_item
.
getUserData
()??
&&
_item
.
getUserData
()?
length
gt
0
>
|处理数据
(userData)|${_item.getUserData()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserData2
()??
&&
_item
.
getUserData2
()?
length
gt
0
>
|处理数据2
(userData2)|${_item.getUserData2()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getWFProcessType
()??
&&
_item
.
getWFProcessType
()?
length
gt
0
>
|流程处理类型
(wFProcessType)|${srfcodelist('AllWFProcessType', _item.getWFProcessType())}
(${_item.getWFProcessType()?replace('
','
<BR>
')?replace('
','
<BR>
')})|
|
</
#
if>
<
#
if
_item
.
getWFStepValue
()??
&&
_item
.
getWFStepValue
()?
length
gt
0
>
|流程步骤值
(wFStepValue)|${_item.getWFStepValue()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getWidth
()??
>
|宽度
(width)|${_item.getWidth()?c}|
|
</
#
if>
<
#
if
_item
.
isAsynchronousProcess
()??
>
|异步处理
(asynchronousProcess)|${_item.isAsynchronousProcess()?c}|
|
</
#
if>
<
#
if
_item
.
isEnableTimeout
()??
>
|启用处理超时
(enableTimeout)|${_item.isEnableTimeout()?c}|
|
</
#
if>
<
#
if
_item
.
isTerminalProcess
()??
>
|终止处理
(terminalProcess)|${_item.isTerminalProcess()?c}|
|
</
#
if>
*来源:getPSWFProcessParams*
<
#
if
_item
.
getPSWFProcessParams
()??
&&
srflist
(
_item
.
getPSWFProcessParams
())?
size
gt
0
>
##### 处理参数集合
<
#
assign
_items2 =
_item.getPSWFProcessParams()
>
<
#
ibizinclude
>
../TEMPL/net.ibizsys.model.wf.IPSWFProcessParam.list.md
</
#
ibizinclude>
</
#
if>
</
#
if>
modules/ibizlab-generator-core/src/main/resources/templ/doc/@macro/workflow/item/net.ibizsys.model.wf.IPSWFExclusiveGatewayProcess.item.md.hbs
0 → 100644
浏览文件 @
2f391f52
<
#
comment
>
net.ibizsys.model.wf.IPSWFExclusiveGatewayProcess
</
#
comment>
<
#
if
_item
.
getWFProcessType
()=='
EXCLUSIVEGATEWAY
'
>
#### ${_item.getName()}
<
#
if
_item
.
getParentModel
()??
&&
((
item
.
getModelType
()
==
'
PSSYSTEM
'
&&
_item
.
getParentModel
().
getModelType
()!='
PSSYSTEM
')||(
_item
.
getParentModel
().
getModelType
()
!=
item
.
getModelType
()))
>
@${_item.getParentModel().name}
</
#
if>
| 项 |值 |说明 |
|-------------------|:---------------------|:------------------------|
<
#
if
_item
.
getName
()??
&&
_item
.
getName
()?
length
gt
0
>
|名称
(name)|${_item.getName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getCodeName
()??
&&
_item
.
getCodeName
()?
length
gt
0
>
|代码标识
(codeName)|${_item.getCodeName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getLogicName
()??
&&
_item
.
getLogicName
()?
length
gt
0
>
|逻辑名称
(logicName)|${_item.getLogicName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserTag
()??
&&
_item
.
getUserTag
()?
length
gt
0
>
|用户标记
(userTag)|${_item.getUserTag()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserTag2
()??
&&
_item
.
getUserTag2
()?
length
gt
0
>
|用户标记2
(userTag2)|${_item.getUserTag2()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserTag3
()??
&&
_item
.
getUserTag3
()?
length
gt
0
>
|用户标记3
(userTag3)|${_item.getUserTag3()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserTag4
()??
&&
_item
.
getUserTag4
()?
length
gt
0
>
|用户标记4
(userTag4)|${_item.getUserTag4()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserCat
()??
&&
_item
.
getUserCat
()?
length
gt
0
>
|用户模型分类
(userCat)|${_item.getUserCat()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
isAutoModel
()
&&
_item
.
isAutoModel
()??
>
|自动产生模型
(autoModel)|${_item.isAutoModel()?c}|
|
</
#
if>
<
#
if
_item
.
getHeight
()??
>
|高度
(height)|${_item.getHeight()?c}|
|
</
#
if>
<
#
if
_item
.
getLeftPos
()??
>
|左侧位置
(leftPos)|${_item.getLeftPos()?c}|
|
</
#
if>
<
#
if
_item
.
getNamePSLanguageRes
()??
>
|名称语言资源
(getNamePSLanguageRes)|
<
#
if
_item
.
getNamePSLanguageRes
().
getRTMOSFilePath
()??
&&
_item
.
getNamePSLanguageRes
().
getRTMOSFilePath
()?
length
gt
0
><a
href=
"${_prepath}${_item.getNamePSLanguageRes().getRTMOSFilePath()}"
>
${_item.getNamePSLanguageRes().getName()}
</a><
#
else
>
${_item.getNamePSLanguageRes().getName()}
</
#
if>
|
|
</
#
if>
<
#
if
_item
.
getPSDynaModel
()??
>
|动态模型对象
(getPSDynaModel)|
<
#
if
_item
.
getPSDynaModel
().
getRTMOSFilePath
()??
&&
_item
.
getPSDynaModel
().
getRTMOSFilePath
()?
length
gt
0
><a
href=
"${_prepath}${_item.getPSDynaModel().getRTMOSFilePath()}"
>
${_item.getPSDynaModel().getName()}
</a><
#
else
>
${_item.getPSDynaModel().getName()}
</
#
if>
|
|
</
#
if>
<
#
if
_item
.
getPSSysMsgTempl
()??
>
|通知消息模板
(getPSSysMsgTempl)|
<
#
if
_item
.
getPSSysMsgTempl
().
getRTMOSFilePath
()??
&&
_item
.
getPSSysMsgTempl
().
getRTMOSFilePath
()?
length
gt
0
><a
href=
"${_prepath}${_item.getPSSysMsgTempl().getRTMOSFilePath()}"
>
${_item.getPSSysMsgTempl().getName()}
</a><
#
else
>
${_item.getPSSysMsgTempl().getName()}
</
#
if>
|
|
</
#
if>
<
#
if
_item
.
getPSWFWorkTime
()??
>
|流程工作时间
(getPSWFWorkTime)|
<
#
if
_item
.
getPSWFWorkTime
().
getRTMOSFilePath
()??
&&
_item
.
getPSWFWorkTime
().
getRTMOSFilePath
()?
length
gt
0
><a
href=
"${_prepath}${_item.getPSWFWorkTime().getRTMOSFilePath()}"
>
${_item.getPSWFWorkTime().getName()}
</a><
#
else
>
${_item.getPSWFWorkTime().getName()}
</
#
if>
|
|
</
#
if>
<
#
if
_item
.
getTimeout
()??
>
|处理超时时长
(timeout)|${_item.getTimeout()?c}|
|
</
#
if>
<
#
if
_item
.
getTimeoutField
()??
&&
_item
.
getTimeoutField
()?
length
gt
0
>
|动态超时时长存放属性
(timeoutField)|${_item.getTimeoutField()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getTimeoutType
()??
&&
_item
.
getTimeoutType
()?
length
gt
0
>
|处理超时单位
(timeoutType)|${srfcodelist('WFTimeoutType', _item.getTimeoutType())}
(${_item.getTimeoutType()?replace('
','
<BR>
')?replace('
','
<BR>
')})|
|
</
#
if>
<
#
if
_item
.
getTopPos
()??
>
|上方位置
(topPos)|${_item.getTopPos()?c}|
|
</
#
if>
<
#
if
_item
.
getUserData
()??
&&
_item
.
getUserData
()?
length
gt
0
>
|处理数据
(userData)|${_item.getUserData()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserData2
()??
&&
_item
.
getUserData2
()?
length
gt
0
>
|处理数据2
(userData2)|${_item.getUserData2()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getWFProcessType
()??
&&
_item
.
getWFProcessType
()?
length
gt
0
>
|流程处理类型
(wFProcessType)|${srfcodelist('AllWFProcessType', _item.getWFProcessType())}
(${_item.getWFProcessType()?replace('
','
<BR>
')?replace('
','
<BR>
')})|
|
</
#
if>
<
#
if
_item
.
getWFStepValue
()??
&&
_item
.
getWFStepValue
()?
length
gt
0
>
|流程步骤值
(wFStepValue)|${_item.getWFStepValue()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getWidth
()??
>
|宽度
(width)|${_item.getWidth()?c}|
|
</
#
if>
<
#
if
_item
.
isAsynchronousProcess
()??
>
|异步处理
(asynchronousProcess)|${_item.isAsynchronousProcess()?c}|
|
</
#
if>
<
#
if
_item
.
isEnableTimeout
()??
>
|启用处理超时
(enableTimeout)|${_item.isEnableTimeout()?c}|
|
</
#
if>
*来源:getPSWFProcessParams*
<
#
if
_item
.
getPSWFProcessParams
()??
&&
srflist
(
_item
.
getPSWFProcessParams
())?
size
gt
0
>
##### 处理参数集合
<
#
assign
_items2 =
_item.getPSWFProcessParams()
>
<
#
ibizinclude
>
../TEMPL/net.ibizsys.model.wf.IPSWFProcessParam.list.md
</
#
ibizinclude>
</
#
if>
</
#
if>
modules/ibizlab-generator-core/src/main/resources/templ/doc/@macro/workflow/item/net.ibizsys.model.wf.IPSWFInclusiveGatewayProcess.item.md.hbs
0 → 100644
浏览文件 @
2f391f52
<
#
comment
>
net.ibizsys.model.wf.IPSWFInclusiveGatewayProcess
</
#
comment>
<
#
if
_item
.
getWFProcessType
()=='
INCLUSIVEGATEWAY
'
>
#### ${_item.getName()}
<
#
if
_item
.
getParentModel
()??
&&
((
item
.
getModelType
()
==
'
PSSYSTEM
'
&&
_item
.
getParentModel
().
getModelType
()!='
PSSYSTEM
')||(
_item
.
getParentModel
().
getModelType
()
!=
item
.
getModelType
()))
>
@${_item.getParentModel().name}
</
#
if>
| 项 |值 |说明 |
|-------------------|:---------------------|:------------------------|
<
#
if
_item
.
getName
()??
&&
_item
.
getName
()?
length
gt
0
>
|名称
(name)|${_item.getName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getCodeName
()??
&&
_item
.
getCodeName
()?
length
gt
0
>
|代码标识
(codeName)|${_item.getCodeName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getLogicName
()??
&&
_item
.
getLogicName
()?
length
gt
0
>
|逻辑名称
(logicName)|${_item.getLogicName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserTag
()??
&&
_item
.
getUserTag
()?
length
gt
0
>
|用户标记
(userTag)|${_item.getUserTag()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserTag2
()??
&&
_item
.
getUserTag2
()?
length
gt
0
>
|用户标记2
(userTag2)|${_item.getUserTag2()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserTag3
()??
&&
_item
.
getUserTag3
()?
length
gt
0
>
|用户标记3
(userTag3)|${_item.getUserTag3()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserTag4
()??
&&
_item
.
getUserTag4
()?
length
gt
0
>
|用户标记4
(userTag4)|${_item.getUserTag4()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserCat
()??
&&
_item
.
getUserCat
()?
length
gt
0
>
|用户模型分类
(userCat)|${_item.getUserCat()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
isAutoModel
()
&&
_item
.
isAutoModel
()??
>
|自动产生模型
(autoModel)|${_item.isAutoModel()?c}|
|
</
#
if>
<
#
if
_item
.
getHeight
()??
>
|高度
(height)|${_item.getHeight()?c}|
|
</
#
if>
<
#
if
_item
.
getLeftPos
()??
>
|左侧位置
(leftPos)|${_item.getLeftPos()?c}|
|
</
#
if>
<
#
if
_item
.
getNamePSLanguageRes
()??
>
|名称语言资源
(getNamePSLanguageRes)|
<
#
if
_item
.
getNamePSLanguageRes
().
getRTMOSFilePath
()??
&&
_item
.
getNamePSLanguageRes
().
getRTMOSFilePath
()?
length
gt
0
><a
href=
"${_prepath}${_item.getNamePSLanguageRes().getRTMOSFilePath()}"
>
${_item.getNamePSLanguageRes().getName()}
</a><
#
else
>
${_item.getNamePSLanguageRes().getName()}
</
#
if>
|
|
</
#
if>
<
#
if
_item
.
getPSDynaModel
()??
>
|动态模型对象
(getPSDynaModel)|
<
#
if
_item
.
getPSDynaModel
().
getRTMOSFilePath
()??
&&
_item
.
getPSDynaModel
().
getRTMOSFilePath
()?
length
gt
0
><a
href=
"${_prepath}${_item.getPSDynaModel().getRTMOSFilePath()}"
>
${_item.getPSDynaModel().getName()}
</a><
#
else
>
${_item.getPSDynaModel().getName()}
</
#
if>
|
|
</
#
if>
<
#
if
_item
.
getPSSysMsgTempl
()??
>
|通知消息模板
(getPSSysMsgTempl)|
<
#
if
_item
.
getPSSysMsgTempl
().
getRTMOSFilePath
()??
&&
_item
.
getPSSysMsgTempl
().
getRTMOSFilePath
()?
length
gt
0
><a
href=
"${_prepath}${_item.getPSSysMsgTempl().getRTMOSFilePath()}"
>
${_item.getPSSysMsgTempl().getName()}
</a><
#
else
>
${_item.getPSSysMsgTempl().getName()}
</
#
if>
|
|
</
#
if>
<
#
if
_item
.
getPSWFWorkTime
()??
>
|流程工作时间
(getPSWFWorkTime)|
<
#
if
_item
.
getPSWFWorkTime
().
getRTMOSFilePath
()??
&&
_item
.
getPSWFWorkTime
().
getRTMOSFilePath
()?
length
gt
0
><a
href=
"${_prepath}${_item.getPSWFWorkTime().getRTMOSFilePath()}"
>
${_item.getPSWFWorkTime().getName()}
</a><
#
else
>
${_item.getPSWFWorkTime().getName()}
</
#
if>
|
|
</
#
if>
<
#
if
_item
.
getTimeout
()??
>
|处理超时时长
(timeout)|${_item.getTimeout()?c}|
|
</
#
if>
<
#
if
_item
.
getTimeoutField
()??
&&
_item
.
getTimeoutField
()?
length
gt
0
>
|动态超时时长存放属性
(timeoutField)|${_item.getTimeoutField()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getTimeoutType
()??
&&
_item
.
getTimeoutType
()?
length
gt
0
>
|处理超时单位
(timeoutType)|${srfcodelist('WFTimeoutType', _item.getTimeoutType())}
(${_item.getTimeoutType()?replace('
','
<BR>
')?replace('
','
<BR>
')})|
|
</
#
if>
<
#
if
_item
.
getTopPos
()??
>
|上方位置
(topPos)|${_item.getTopPos()?c}|
|
</
#
if>
<
#
if
_item
.
getUserData
()??
&&
_item
.
getUserData
()?
length
gt
0
>
|处理数据
(userData)|${_item.getUserData()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserData2
()??
&&
_item
.
getUserData2
()?
length
gt
0
>
|处理数据2
(userData2)|${_item.getUserData2()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getWFProcessType
()??
&&
_item
.
getWFProcessType
()?
length
gt
0
>
|流程处理类型
(wFProcessType)|${srfcodelist('AllWFProcessType', _item.getWFProcessType())}
(${_item.getWFProcessType()?replace('
','
<BR>
')?replace('
','
<BR>
')})|
|
</
#
if>
<
#
if
_item
.
getWFStepValue
()??
&&
_item
.
getWFStepValue
()?
length
gt
0
>
|流程步骤值
(wFStepValue)|${_item.getWFStepValue()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getWidth
()??
>
|宽度
(width)|${_item.getWidth()?c}|
|
</
#
if>
<
#
if
_item
.
isAsynchronousProcess
()??
>
|异步处理
(asynchronousProcess)|${_item.isAsynchronousProcess()?c}|
|
</
#
if>
<
#
if
_item
.
isEnableTimeout
()??
>
|启用处理超时
(enableTimeout)|${_item.isEnableTimeout()?c}|
|
</
#
if>
*来源:getPSWFProcessParams*
<
#
if
_item
.
getPSWFProcessParams
()??
&&
srflist
(
_item
.
getPSWFProcessParams
())?
size
gt
0
>
##### 处理参数集合
<
#
assign
_items2 =
_item.getPSWFProcessParams()
>
<
#
ibizinclude
>
../TEMPL/net.ibizsys.model.wf.IPSWFProcessParam.list.md
</
#
ibizinclude>
</
#
if>
</
#
if>
modules/ibizlab-generator-core/src/main/resources/templ/doc/@macro/workflow/item/net.ibizsys.model.wf.IPSWFInteractiveLink.item.md.hbs
0 → 100644
浏览文件 @
2f391f52
modules/ibizlab-generator-core/src/main/resources/templ/doc/@macro/workflow/item/net.ibizsys.model.wf.IPSWFInteractiveProcess.item.md.hbs
0 → 100644
浏览文件 @
2f391f52
<
#
comment
>
net.ibizsys.model.wf.IPSWFInteractiveProcess
</
#
comment>
<
#
if
_item
.
getWFProcessType
()=='
INTERACTIVE
'
>
#### ${_item.getName()}
<
#
if
_item
.
getParentModel
()??
&&
((
item
.
getModelType
()
==
'
PSSYSTEM
'
&&
_item
.
getParentModel
().
getModelType
()!='
PSSYSTEM
')||(
_item
.
getParentModel
().
getModelType
()
!=
item
.
getModelType
()))
>
@${_item.getParentModel().name}
</
#
if>
| 项 |值 |说明 |
|-------------------|:---------------------|:------------------------|
<
#
if
_item
.
getName
()??
&&
_item
.
getName
()?
length
gt
0
>
|名称
(name)|${_item.getName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getCodeName
()??
&&
_item
.
getCodeName
()?
length
gt
0
>
|代码标识
(codeName)|${_item.getCodeName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getLogicName
()??
&&
_item
.
getLogicName
()?
length
gt
0
>
|逻辑名称
(logicName)|${_item.getLogicName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserTag
()??
&&
_item
.
getUserTag
()?
length
gt
0
>
|用户标记
(userTag)|${_item.getUserTag()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserTag2
()??
&&
_item
.
getUserTag2
()?
length
gt
0
>
|用户标记2
(userTag2)|${_item.getUserTag2()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserTag3
()??
&&
_item
.
getUserTag3
()?
length
gt
0
>
|用户标记3
(userTag3)|${_item.getUserTag3()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserTag4
()??
&&
_item
.
getUserTag4
()?
length
gt
0
>
|用户标记4
(userTag4)|${_item.getUserTag4()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserCat
()??
&&
_item
.
getUserCat
()?
length
gt
0
>
|用户模型分类
(userCat)|${_item.getUserCat()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
isAutoModel
()
&&
_item
.
isAutoModel
()??
>
|自动产生模型
(autoModel)|${_item.isAutoModel()?c}|
|
</
#
if>
<
#
if
_item
.
getEditMode
()??
>
|编辑模式
(editMode)|${srfcodelist('WFProcessEditMode', _item.getEditMode())}
(${_item.getEditMode()?c})|
|
</
#
if>
<
#
if
_item
.
getFormCodeName
()??
&&
_item
.
getFormCodeName
()?
length
gt
0
>
|操作表单标记
(formCodeName)|${_item.getFormCodeName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getHeight
()??
>
|高度
(height)|${_item.getHeight()?c}|
|
</
#
if>
<
#
if
_item
.
getLeftPos
()??
>
|左侧位置
(leftPos)|${_item.getLeftPos()?c}|
|
</
#
if>
<
#
if
_item
.
getMemoField
()??
&&
_item
.
getMemoField
()?
length
gt
0
>
|处理意见字段
(memoField)|${_item.getMemoField()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getMobFormCodeName
()??
&&
_item
.
getMobFormCodeName
()?
length
gt
0
>
|移动端操作表单标记
(mobFormCodeName)|${_item.getMobFormCodeName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getMobUAGroupCodeName
()??
&&
_item
.
getMobUAGroupCodeName
()?
length
gt
0
>
|移动端附加界面行为组标记
(mobUAGroupCodeName)|${_item.getMobUAGroupCodeName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getMobUtil2FormCodeName
()??
&&
_item
.
getMobUtil2FormCodeName
()?
length
gt
0
>
|移动端功能2操作表单标记
(mobUtil2FormCodeName)|${_item.getMobUtil2FormCodeName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getMobUtil2FormName
()??
&&
_item
.
getMobUtil2FormName
()?
length
gt
0
>
|移动端功能2操作表单名称
(mobUtil2FormName)|${_item.getMobUtil2FormName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getMobUtil3FormCodeName
()??
&&
_item
.
getMobUtil3FormCodeName
()?
length
gt
0
>
|移动端功能3操作表单标记
(mobUtil3FormCodeName)|${_item.getMobUtil3FormCodeName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getMobUtil3FormName
()??
&&
_item
.
getMobUtil3FormName
()?
length
gt
0
>
|移动端功能3操作表单名称
(mobUtil3FormName)|${_item.getMobUtil3FormName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getMobUtil4FormCodeName
()??
&&
_item
.
getMobUtil4FormCodeName
()?
length
gt
0
>
|移动端功能4操作表单标记
(mobUtil4FormCodeName)|${_item.getMobUtil4FormCodeName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getMobUtil4FormName
()??
&&
_item
.
getMobUtil4FormName
()?
length
gt
0
>
|移动端功能4操作表单名称
(mobUtil4FormName)|${_item.getMobUtil4FormName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getMobUtil5FormCodeName
()??
&&
_item
.
getMobUtil5FormCodeName
()?
length
gt
0
>
|移动端功能5操作表单标记
(mobUtil5FormCodeName)|${_item.getMobUtil5FormCodeName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getMobUtil5FormName
()??
&&
_item
.
getMobUtil5FormName
()?
length
gt
0
>
|移动端功能5操作表单名称
(mobUtil5FormName)|${_item.getMobUtil5FormName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getMobUtilFormCodeName
()??
&&
_item
.
getMobUtilFormCodeName
()?
length
gt
0
>
|移动端功能操作表单标记
(mobUtilFormCodeName)|${_item.getMobUtilFormCodeName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getMobUtilFormName
()??
&&
_item
.
getMobUtilFormName
()?
length
gt
0
>
|移动端功能操作表单名称
(mobUtilFormName)|${_item.getMobUtilFormName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getMsgType
()??
>
|发送通知类型
(msgType)|${srfcodelist('WFInfomMsgType', _item.getMsgType())}
(${_item.getMsgType()?c})|
|
</
#
if>
<
#
if
_item
.
getMultiInstMode
()??
&&
_item
.
getMultiInstMode
()?
length
gt
0
>
|多实例模式
(multiInstMode)|${srfcodelist('WFProcMultiInstMode', _item.getMultiInstMode())}
(${_item.getMultiInstMode()?replace('
','
<BR>
')?replace('
','
<BR>
')})|
|
</
#
if>
<
#
if
_item
.
getNamePSLanguageRes
()??
>
|名称语言资源
(getNamePSLanguageRes)|
<
#
if
_item
.
getNamePSLanguageRes
().
getRTMOSFilePath
()??
&&
_item
.
getNamePSLanguageRes
().
getRTMOSFilePath
()?
length
gt
0
><a
href=
"${_prepath}${_item.getNamePSLanguageRes().getRTMOSFilePath()}"
>
${_item.getNamePSLanguageRes().getName()}
</a><
#
else
>
${_item.getNamePSLanguageRes().getName()}
</
#
if>
|
|
</
#
if>
<
#
if
_item
.
getPSDynaModel
()??
>
|动态模型对象
(getPSDynaModel)|
<
#
if
_item
.
getPSDynaModel
().
getRTMOSFilePath
()??
&&
_item
.
getPSDynaModel
().
getRTMOSFilePath
()?
length
gt
0
><a
href=
"${_prepath}${_item.getPSDynaModel().getRTMOSFilePath()}"
>
${_item.getPSDynaModel().getName()}
</a><
#
else
>
${_item.getPSDynaModel().getName()}
</
#
if>
|
|
</
#
if>
<
#
if
_item
.
getPSSysMsgTempl
()??
>
|通知消息模板
(getPSSysMsgTempl)|
<
#
if
_item
.
getPSSysMsgTempl
().
getRTMOSFilePath
()??
&&
_item
.
getPSSysMsgTempl
().
getRTMOSFilePath
()?
length
gt
0
><a
href=
"${_prepath}${_item.getPSSysMsgTempl().getRTMOSFilePath()}"
>
${_item.getPSSysMsgTempl().getName()}
</a><
#
else
>
${_item.getPSSysMsgTempl().getName()}
</
#
if>
|
|
</
#
if>
<
#
if
_item
.
getPSWFWorkTime
()??
>
|流程工作时间
(getPSWFWorkTime)|
<
#
if
_item
.
getPSWFWorkTime
().
getRTMOSFilePath
()??
&&
_item
.
getPSWFWorkTime
().
getRTMOSFilePath
()?
length
gt
0
><a
href=
"${_prepath}${_item.getPSWFWorkTime().getRTMOSFilePath()}"
>
${_item.getPSWFWorkTime().getName()}
</a><
#
else
>
${_item.getPSWFWorkTime().getName()}
</
#
if>
|
|
</
#
if>
<
#
if
_item
.
getTimeout
()??
>
|处理超时时长
(timeout)|${_item.getTimeout()?c}|
|
</
#
if>
<
#
if
_item
.
getTimeoutField
()??
&&
_item
.
getTimeoutField
()?
length
gt
0
>
|动态超时时长存放属性
(timeoutField)|${_item.getTimeoutField()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getTimeoutType
()??
&&
_item
.
getTimeoutType
()?
length
gt
0
>
|处理超时单位
(timeoutType)|${srfcodelist('WFTimeoutType', _item.getTimeoutType())}
(${_item.getTimeoutType()?replace('
','
<BR>
')?replace('
','
<BR>
')})|
|
</
#
if>
<
#
if
_item
.
getTopPos
()??
>
|上方位置
(topPos)|${_item.getTopPos()?c}|
|
</
#
if>
<
#
if
_item
.
getUAGroupCodeName
()??
&&
_item
.
getUAGroupCodeName
()?
length
gt
0
>
|附加界面行为组标记
(uAGroupCodeName)|${_item.getUAGroupCodeName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserData
()??
&&
_item
.
getUserData
()?
length
gt
0
>
|处理数据
(userData)|${_item.getUserData()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserData2
()??
&&
_item
.
getUserData2
()?
length
gt
0
>
|处理数据2
(userData2)|${_item.getUserData2()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUtil2FormCodeName
()??
&&
_item
.
getUtil2FormCodeName
()?
length
gt
0
>
|功能2操作表单标记
(util2FormCodeName)|${_item.getUtil2FormCodeName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUtil2FormName
()??
&&
_item
.
getUtil2FormName
()?
length
gt
0
>
|功能2操作表单名称
(util2FormName)|${_item.getUtil2FormName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUtil3FormCodeName
()??
&&
_item
.
getUtil3FormCodeName
()?
length
gt
0
>
|功能3操作表单标记
(util3FormCodeName)|${_item.getUtil3FormCodeName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUtil3FormName
()??
&&
_item
.
getUtil3FormName
()?
length
gt
0
>
|功能3操作表单名称
(util3FormName)|${_item.getUtil3FormName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUtil4FormCodeName
()??
&&
_item
.
getUtil4FormCodeName
()?
length
gt
0
>
|功能4操作表单标记
(util4FormCodeName)|${_item.getUtil4FormCodeName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUtil4FormName
()??
&&
_item
.
getUtil4FormName
()?
length
gt
0
>
|功能4操作表单名称
(util4FormName)|${_item.getUtil4FormName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUtil5FormCodeName
()??
&&
_item
.
getUtil5FormCodeName
()?
length
gt
0
>
|功能5操作表单标记
(util5FormCodeName)|${_item.getUtil5FormCodeName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUtil5FormName
()??
&&
_item
.
getUtil5FormName
()?
length
gt
0
>
|功能5操作表单名称
(util5FormName)|${_item.getUtil5FormName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUtilFormCodeName
()??
&&
_item
.
getUtilFormCodeName
()?
length
gt
0
>
|功能操作表单标记
(utilFormCodeName)|${_item.getUtilFormCodeName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUtilFormName
()??
&&
_item
.
getUtilFormName
()?
length
gt
0
>
|功能操作表单名称
(utilFormName)|${_item.getUtilFormName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getWFProcessType
()??
&&
_item
.
getWFProcessType
()?
length
gt
0
>
|流程处理类型
(wFProcessType)|${srfcodelist('AllWFProcessType', _item.getWFProcessType())}
(${_item.getWFProcessType()?replace('
','
<BR>
')?replace('
','
<BR>
')})|
|
</
#
if>
<
#
if
_item
.
getWFStepValue
()??
&&
_item
.
getWFStepValue
()?
length
gt
0
>
|流程步骤值
(wFStepValue)|${_item.getWFStepValue()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getWidth
()??
>
|宽度
(width)|${_item.getWidth()?c}|
|
</
#
if>
<
#
if
_item
.
isAsynchronousProcess
()??
>
|异步处理
(asynchronousProcess)|${_item.isAsynchronousProcess()?c}|
|
</
#
if>
<
#
if
_item
.
isEditable
()??
>
|支持编辑
(editable)|${_item.isEditable()?c}|
|
</
#
if>
<
#
if
_item
.
isEnableTimeout
()??
>
|启用处理超时
(enableTimeout)|${_item.isEnableTimeout()?c}|
|
</
#
if>
<
#
if
_item
.
isSendInform
()??
>
|发送通知
(sendInform)|${_item.isSendInform()?c}|
|
</
#
if>
*来源:getEditFields*
<
#
if
_item
.
getEditFields
()??
&&
srflist
(
_item
.
getEditFields
())?
size
gt
0
>
##### 编辑相关属性
<
#
list
_item
.
getEditFields
()
as
x2
>
<
#
if
x2_index
gt
0
>
、
</
#
if>
${x2}
</
#
list>
</
#
if>
*来源:getPSWFProcessParams*
<
#
if
_item
.
getPSWFProcessParams
()??
&&
srflist
(
_item
.
getPSWFProcessParams
())?
size
gt
0
>
##### 处理参数集合
<
#
assign
_items2 =
_item.getPSWFProcessParams()
>
<
#
ibizinclude
>
../TEMPL/net.ibizsys.model.wf.IPSWFProcessParam.list.md
</
#
ibizinclude>
</
#
if>
*来源:getPSWFProcessRoles*
<
#
if
_item
.
getPSWFProcessRoles
()??
&&
srflist
(
_item
.
getPSWFProcessRoles
())?
size
gt
0
>
##### 交互处理角色集合
<
#
assign
_items2 =
_item.getPSWFProcessRoles()
>
<
#
ibizinclude
>
../TEMPL/net.ibizsys.model.wf.IPSWFProcessRole.list.md
</
#
ibizinclude>
</
#
if>
*来源:getPredefinedActions*
<
#
if
_item
.
getPredefinedActions
()??
&&
srflist
(
_item
.
getPredefinedActions
())?
size
gt
0
>
##### 预定义行为
<
#
list
_item
.
getPredefinedActions
()
as
x2
>
<
#
if
x2_index
gt
0
>
、
</
#
if>
${x2}
</
#
list>
</
#
if>
</
#
if>
modules/ibizlab-generator-core/src/main/resources/templ/doc/@macro/workflow/item/net.ibizsys.model.wf.IPSWFParallelGatewayProcess.item.md.hbs
0 → 100644
浏览文件 @
2f391f52
<
#
comment
>
net.ibizsys.model.wf.IPSWFParallelGatewayProcess
</
#
comment>
<
#
if
_item
.
getWFProcessType
()=='
PARALLELGATEWAY
'
>
#### ${_item.getName()}
<
#
if
_item
.
getParentModel
()??
&&
((
item
.
getModelType
()
==
'
PSSYSTEM
'
&&
_item
.
getParentModel
().
getModelType
()!='
PSSYSTEM
')||(
_item
.
getParentModel
().
getModelType
()
!=
item
.
getModelType
()))
>
@${_item.getParentModel().name}
</
#
if>
| 项 |值 |说明 |
|-------------------|:---------------------|:------------------------|
<
#
if
_item
.
getName
()??
&&
_item
.
getName
()?
length
gt
0
>
|名称
(name)|${_item.getName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getCodeName
()??
&&
_item
.
getCodeName
()?
length
gt
0
>
|代码标识
(codeName)|${_item.getCodeName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getLogicName
()??
&&
_item
.
getLogicName
()?
length
gt
0
>
|逻辑名称
(logicName)|${_item.getLogicName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserTag
()??
&&
_item
.
getUserTag
()?
length
gt
0
>
|用户标记
(userTag)|${_item.getUserTag()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserTag2
()??
&&
_item
.
getUserTag2
()?
length
gt
0
>
|用户标记2
(userTag2)|${_item.getUserTag2()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserTag3
()??
&&
_item
.
getUserTag3
()?
length
gt
0
>
|用户标记3
(userTag3)|${_item.getUserTag3()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserTag4
()??
&&
_item
.
getUserTag4
()?
length
gt
0
>
|用户标记4
(userTag4)|${_item.getUserTag4()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserCat
()??
&&
_item
.
getUserCat
()?
length
gt
0
>
|用户模型分类
(userCat)|${_item.getUserCat()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
isAutoModel
()
&&
_item
.
isAutoModel
()??
>
|自动产生模型
(autoModel)|${_item.isAutoModel()?c}|
|
</
#
if>
<
#
if
_item
.
getHeight
()??
>
|高度
(height)|${_item.getHeight()?c}|
|
</
#
if>
<
#
if
_item
.
getLeftPos
()??
>
|左侧位置
(leftPos)|${_item.getLeftPos()?c}|
|
</
#
if>
<
#
if
_item
.
getNamePSLanguageRes
()??
>
|名称语言资源
(getNamePSLanguageRes)|
<
#
if
_item
.
getNamePSLanguageRes
().
getRTMOSFilePath
()??
&&
_item
.
getNamePSLanguageRes
().
getRTMOSFilePath
()?
length
gt
0
><a
href=
"${_prepath}${_item.getNamePSLanguageRes().getRTMOSFilePath()}"
>
${_item.getNamePSLanguageRes().getName()}
</a><
#
else
>
${_item.getNamePSLanguageRes().getName()}
</
#
if>
|
|
</
#
if>
<
#
if
_item
.
getPSDynaModel
()??
>
|动态模型对象
(getPSDynaModel)|
<
#
if
_item
.
getPSDynaModel
().
getRTMOSFilePath
()??
&&
_item
.
getPSDynaModel
().
getRTMOSFilePath
()?
length
gt
0
><a
href=
"${_prepath}${_item.getPSDynaModel().getRTMOSFilePath()}"
>
${_item.getPSDynaModel().getName()}
</a><
#
else
>
${_item.getPSDynaModel().getName()}
</
#
if>
|
|
</
#
if>
<
#
if
_item
.
getPSSysMsgTempl
()??
>
|通知消息模板
(getPSSysMsgTempl)|
<
#
if
_item
.
getPSSysMsgTempl
().
getRTMOSFilePath
()??
&&
_item
.
getPSSysMsgTempl
().
getRTMOSFilePath
()?
length
gt
0
><a
href=
"${_prepath}${_item.getPSSysMsgTempl().getRTMOSFilePath()}"
>
${_item.getPSSysMsgTempl().getName()}
</a><
#
else
>
${_item.getPSSysMsgTempl().getName()}
</
#
if>
|
|
</
#
if>
<
#
if
_item
.
getPSWFWorkTime
()??
>
|流程工作时间
(getPSWFWorkTime)|
<
#
if
_item
.
getPSWFWorkTime
().
getRTMOSFilePath
()??
&&
_item
.
getPSWFWorkTime
().
getRTMOSFilePath
()?
length
gt
0
><a
href=
"${_prepath}${_item.getPSWFWorkTime().getRTMOSFilePath()}"
>
${_item.getPSWFWorkTime().getName()}
</a><
#
else
>
${_item.getPSWFWorkTime().getName()}
</
#
if>
|
|
</
#
if>
<
#
if
_item
.
getTimeout
()??
>
|处理超时时长
(timeout)|${_item.getTimeout()?c}|
|
</
#
if>
<
#
if
_item
.
getTimeoutField
()??
&&
_item
.
getTimeoutField
()?
length
gt
0
>
|动态超时时长存放属性
(timeoutField)|${_item.getTimeoutField()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getTimeoutType
()??
&&
_item
.
getTimeoutType
()?
length
gt
0
>
|处理超时单位
(timeoutType)|${srfcodelist('WFTimeoutType', _item.getTimeoutType())}
(${_item.getTimeoutType()?replace('
','
<BR>
')?replace('
','
<BR>
')})|
|
</
#
if>
<
#
if
_item
.
getTopPos
()??
>
|上方位置
(topPos)|${_item.getTopPos()?c}|
|
</
#
if>
<
#
if
_item
.
getUserData
()??
&&
_item
.
getUserData
()?
length
gt
0
>
|处理数据
(userData)|${_item.getUserData()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserData2
()??
&&
_item
.
getUserData2
()?
length
gt
0
>
|处理数据2
(userData2)|${_item.getUserData2()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getWFProcessType
()??
&&
_item
.
getWFProcessType
()?
length
gt
0
>
|流程处理类型
(wFProcessType)|${srfcodelist('AllWFProcessType', _item.getWFProcessType())}
(${_item.getWFProcessType()?replace('
','
<BR>
')?replace('
','
<BR>
')})|
|
</
#
if>
<
#
if
_item
.
getWFStepValue
()??
&&
_item
.
getWFStepValue
()?
length
gt
0
>
|流程步骤值
(wFStepValue)|${_item.getWFStepValue()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getWidth
()??
>
|宽度
(width)|${_item.getWidth()?c}|
|
</
#
if>
<
#
if
_item
.
isAsynchronousProcess
()??
>
|异步处理
(asynchronousProcess)|${_item.isAsynchronousProcess()?c}|
|
</
#
if>
<
#
if
_item
.
isEnableTimeout
()??
>
|启用处理超时
(enableTimeout)|${_item.isEnableTimeout()?c}|
|
</
#
if>
*来源:getPSWFProcessParams*
<
#
if
_item
.
getPSWFProcessParams
()??
&&
srflist
(
_item
.
getPSWFProcessParams
())?
size
gt
0
>
##### 处理参数集合
<
#
assign
_items2 =
_item.getPSWFProcessParams()
>
<
#
ibizinclude
>
../TEMPL/net.ibizsys.model.wf.IPSWFProcessParam.list.md
</
#
ibizinclude>
</
#
if>
</
#
if>
modules/ibizlab-generator-core/src/main/resources/templ/doc/@macro/workflow/item/net.ibizsys.model.wf.IPSWFParallelSubWFProcess.item.md.hbs
0 → 100644
浏览文件 @
2f391f52
<
#
comment
>
net.ibizsys.model.wf.IPSWFParallelSubWFProcess
</
#
comment>
<
#
if
_item
.
getWFProcessType
()=='
PARALLEL
'
>
#### ${_item.getName()}
<
#
if
_item
.
getParentModel
()??
&&
((
item
.
getModelType
()
==
'
PSSYSTEM
'
&&
_item
.
getParentModel
().
getModelType
()!='
PSSYSTEM
')||(
_item
.
getParentModel
().
getModelType
()
!=
item
.
getModelType
()))
>
@${_item.getParentModel().name}
</
#
if>
| 项 |值 |说明 |
|-------------------|:---------------------|:------------------------|
<
#
if
_item
.
getName
()??
&&
_item
.
getName
()?
length
gt
0
>
|名称
(name)|${_item.getName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getCodeName
()??
&&
_item
.
getCodeName
()?
length
gt
0
>
|代码标识
(codeName)|${_item.getCodeName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getLogicName
()??
&&
_item
.
getLogicName
()?
length
gt
0
>
|逻辑名称
(logicName)|${_item.getLogicName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserTag
()??
&&
_item
.
getUserTag
()?
length
gt
0
>
|用户标记
(userTag)|${_item.getUserTag()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserTag2
()??
&&
_item
.
getUserTag2
()?
length
gt
0
>
|用户标记2
(userTag2)|${_item.getUserTag2()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserTag3
()??
&&
_item
.
getUserTag3
()?
length
gt
0
>
|用户标记3
(userTag3)|${_item.getUserTag3()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserTag4
()??
&&
_item
.
getUserTag4
()?
length
gt
0
>
|用户标记4
(userTag4)|${_item.getUserTag4()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserCat
()??
&&
_item
.
getUserCat
()?
length
gt
0
>
|用户模型分类
(userCat)|${_item.getUserCat()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
isAutoModel
()
&&
_item
.
isAutoModel
()??
>
|自动产生模型
(autoModel)|${_item.isAutoModel()?c}|
|
</
#
if>
<
#
if
_item
.
getHeight
()??
>
|高度
(height)|${_item.getHeight()?c}|
|
</
#
if>
<
#
if
_item
.
getLeftPos
()??
>
|左侧位置
(leftPos)|${_item.getLeftPos()?c}|
|
</
#
if>
<
#
if
_item
.
getNamePSLanguageRes
()??
>
|名称语言资源
(getNamePSLanguageRes)|
<
#
if
_item
.
getNamePSLanguageRes
().
getRTMOSFilePath
()??
&&
_item
.
getNamePSLanguageRes
().
getRTMOSFilePath
()?
length
gt
0
><a
href=
"${_prepath}${_item.getNamePSLanguageRes().getRTMOSFilePath()}"
>
${_item.getNamePSLanguageRes().getName()}
</a><
#
else
>
${_item.getNamePSLanguageRes().getName()}
</
#
if>
|
|
</
#
if>
<
#
if
_item
.
getPSDynaModel
()??
>
|动态模型对象
(getPSDynaModel)|
<
#
if
_item
.
getPSDynaModel
().
getRTMOSFilePath
()??
&&
_item
.
getPSDynaModel
().
getRTMOSFilePath
()?
length
gt
0
><a
href=
"${_prepath}${_item.getPSDynaModel().getRTMOSFilePath()}"
>
${_item.getPSDynaModel().getName()}
</a><
#
else
>
${_item.getPSDynaModel().getName()}
</
#
if>
|
|
</
#
if>
<
#
if
_item
.
getPSSysMsgTempl
()??
>
|通知消息模板
(getPSSysMsgTempl)|
<
#
if
_item
.
getPSSysMsgTempl
().
getRTMOSFilePath
()??
&&
_item
.
getPSSysMsgTempl
().
getRTMOSFilePath
()?
length
gt
0
><a
href=
"${_prepath}${_item.getPSSysMsgTempl().getRTMOSFilePath()}"
>
${_item.getPSSysMsgTempl().getName()}
</a><
#
else
>
${_item.getPSSysMsgTempl().getName()}
</
#
if>
|
|
</
#
if>
<
#
if
_item
.
getPSWFWorkTime
()??
>
|流程工作时间
(getPSWFWorkTime)|
<
#
if
_item
.
getPSWFWorkTime
().
getRTMOSFilePath
()??
&&
_item
.
getPSWFWorkTime
().
getRTMOSFilePath
()?
length
gt
0
><a
href=
"${_prepath}${_item.getPSWFWorkTime().getRTMOSFilePath()}"
>
${_item.getPSWFWorkTime().getName()}
</a><
#
else
>
${_item.getPSWFWorkTime().getName()}
</
#
if>
|
|
</
#
if>
<
#
if
_item
.
getTimeout
()??
>
|处理超时时长
(timeout)|${_item.getTimeout()?c}|
|
</
#
if>
<
#
if
_item
.
getTimeoutField
()??
&&
_item
.
getTimeoutField
()?
length
gt
0
>
|动态超时时长存放属性
(timeoutField)|${_item.getTimeoutField()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getTimeoutType
()??
&&
_item
.
getTimeoutType
()?
length
gt
0
>
|处理超时单位
(timeoutType)|${srfcodelist('WFTimeoutType', _item.getTimeoutType())}
(${_item.getTimeoutType()?replace('
','
<BR>
')?replace('
','
<BR>
')})|
|
</
#
if>
<
#
if
_item
.
getTopPos
()??
>
|上方位置
(topPos)|${_item.getTopPos()?c}|
|
</
#
if>
<
#
if
_item
.
getUserData
()??
&&
_item
.
getUserData
()?
length
gt
0
>
|处理数据
(userData)|${_item.getUserData()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserData2
()??
&&
_item
.
getUserData2
()?
length
gt
0
>
|处理数据2
(userData2)|${_item.getUserData2()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getWFProcessType
()??
&&
_item
.
getWFProcessType
()?
length
gt
0
>
|流程处理类型
(wFProcessType)|${srfcodelist('AllWFProcessType', _item.getWFProcessType())}
(${_item.getWFProcessType()?replace('
','
<BR>
')?replace('
','
<BR>
')})|
|
</
#
if>
<
#
if
_item
.
getWFStepValue
()??
&&
_item
.
getWFStepValue
()?
length
gt
0
>
|流程步骤值
(wFStepValue)|${_item.getWFStepValue()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getWidth
()??
>
|宽度
(width)|${_item.getWidth()?c}|
|
</
#
if>
<
#
if
_item
.
isAsynchronousProcess
()??
>
|异步处理
(asynchronousProcess)|${_item.isAsynchronousProcess()?c}|
|
</
#
if>
<
#
if
_item
.
isEnableTimeout
()??
>
|启用处理超时
(enableTimeout)|${_item.isEnableTimeout()?c}|
|
</
#
if>
*来源:getPSWFProcessParams*
<
#
if
_item
.
getPSWFProcessParams
()??
&&
srflist
(
_item
.
getPSWFProcessParams
())?
size
gt
0
>
##### 处理参数集合
<
#
assign
_items2 =
_item.getPSWFProcessParams()
>
<
#
ibizinclude
>
../TEMPL/net.ibizsys.model.wf.IPSWFProcessParam.list.md
</
#
ibizinclude>
</
#
if>
*来源:getPSWFProcessSubWFs*
<
#
if
_item
.
getPSWFProcessSubWFs
()??
&&
srflist
(
_item
.
getPSWFProcessSubWFs
())?
size
gt
0
>
##### 嵌套流程集合
<
#
assign
_items2 =
_item.getPSWFProcessSubWFs()
>
<
#
ibizinclude
>
../TEMPL/net.ibizsys.model.wf.IPSWFProcessSubWF.list.md
</
#
ibizinclude>
</
#
if>
</
#
if>
modules/ibizlab-generator-core/src/main/resources/templ/doc/@macro/workflow/item/net.ibizsys.model.wf.IPSWFProcess.item.md.hbs
0 → 100644
浏览文件 @
2f391f52
<
#
comment
>
net.ibizsys.model.wf.IPSWFProcess
</
#
comment>
<
#
if
_item
.
getWFProcessType
()!='
END
'
&&
_item
.
getWFProcessType
()!='
START
'&&
_item
.
getWFProcessType
()!='
PROCESS
'&&
_item
.
getWFProcessType
()!='
CALLORGACTIVITY
'&&
_item
.
getWFProcessType
()!='
EMBED
'&&
_item
.
getWFProcessType
()!='
EXCLUSIVEGATEWAY
'&&
_item
.
getWFProcessType
()!='
INCLUSIVEGATEWAY
'&&
_item
.
getWFProcessType
()!='
INTERACTIVE
'&&
_item
.
getWFProcessType
()!='
PARALLELGATEWAY
'&&
_item
.
getWFProcessType
()!='
PARALLEL
'&&
_item
.
getWFProcessType
()!='
TIMEREVENT
'&&
_item
.
getWFProcessType
()!='
END
'
>
#### ${_item.getName()}
<
#
if
_item
.
getParentModel
()??
&&
((
item
.
getModelType
()
==
'
PSSYSTEM
'
&&
_item
.
getParentModel
().
getModelType
()!='
PSSYSTEM
')||(
_item
.
getParentModel
().
getModelType
()
!=
item
.
getModelType
()))
>
@${_item.getParentModel().name}
</
#
if>
| 项 |值 |说明 |
|-------------------|:---------------------|:------------------------|
<
#
if
_item
.
getName
()??
&&
_item
.
getName
()?
length
gt
0
>
|名称
(name)|${_item.getName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getCodeName
()??
&&
_item
.
getCodeName
()?
length
gt
0
>
|代码标识
(codeName)|${_item.getCodeName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getLogicName
()??
&&
_item
.
getLogicName
()?
length
gt
0
>
|逻辑名称
(logicName)|${_item.getLogicName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserTag
()??
&&
_item
.
getUserTag
()?
length
gt
0
>
|用户标记
(userTag)|${_item.getUserTag()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserTag2
()??
&&
_item
.
getUserTag2
()?
length
gt
0
>
|用户标记2
(userTag2)|${_item.getUserTag2()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserTag3
()??
&&
_item
.
getUserTag3
()?
length
gt
0
>
|用户标记3
(userTag3)|${_item.getUserTag3()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserTag4
()??
&&
_item
.
getUserTag4
()?
length
gt
0
>
|用户标记4
(userTag4)|${_item.getUserTag4()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserCat
()??
&&
_item
.
getUserCat
()?
length
gt
0
>
|用户模型分类
(userCat)|${_item.getUserCat()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
isAutoModel
()
&&
_item
.
isAutoModel
()??
>
|自动产生模型
(autoModel)|${_item.isAutoModel()?c}|
|
</
#
if>
<
#
if
_item
.
getHeight
()??
>
|高度
(height)|${_item.getHeight()?c}|
|
</
#
if>
<
#
if
_item
.
getLeftPos
()??
>
|左侧位置
(leftPos)|${_item.getLeftPos()?c}|
|
</
#
if>
<
#
if
_item
.
getNamePSLanguageRes
()??
>
|名称语言资源
(getNamePSLanguageRes)|
<
#
if
_item
.
getNamePSLanguageRes
().
getRTMOSFilePath
()??
&&
_item
.
getNamePSLanguageRes
().
getRTMOSFilePath
()?
length
gt
0
><a
href=
"${_prepath}${_item.getNamePSLanguageRes().getRTMOSFilePath()}"
>
${_item.getNamePSLanguageRes().getName()}
</a><
#
else
>
${_item.getNamePSLanguageRes().getName()}
</
#
if>
|
|
</
#
if>
<
#
if
_item
.
getPSDynaModel
()??
>
|动态模型对象
(getPSDynaModel)|
<
#
if
_item
.
getPSDynaModel
().
getRTMOSFilePath
()??
&&
_item
.
getPSDynaModel
().
getRTMOSFilePath
()?
length
gt
0
><a
href=
"${_prepath}${_item.getPSDynaModel().getRTMOSFilePath()}"
>
${_item.getPSDynaModel().getName()}
</a><
#
else
>
${_item.getPSDynaModel().getName()}
</
#
if>
|
|
</
#
if>
<
#
if
_item
.
getPSSysMsgTempl
()??
>
|通知消息模板
(getPSSysMsgTempl)|
<
#
if
_item
.
getPSSysMsgTempl
().
getRTMOSFilePath
()??
&&
_item
.
getPSSysMsgTempl
().
getRTMOSFilePath
()?
length
gt
0
><a
href=
"${_prepath}${_item.getPSSysMsgTempl().getRTMOSFilePath()}"
>
${_item.getPSSysMsgTempl().getName()}
</a><
#
else
>
${_item.getPSSysMsgTempl().getName()}
</
#
if>
|
|
</
#
if>
<
#
if
_item
.
getPSWFWorkTime
()??
>
|流程工作时间
(getPSWFWorkTime)|
<
#
if
_item
.
getPSWFWorkTime
().
getRTMOSFilePath
()??
&&
_item
.
getPSWFWorkTime
().
getRTMOSFilePath
()?
length
gt
0
><a
href=
"${_prepath}${_item.getPSWFWorkTime().getRTMOSFilePath()}"
>
${_item.getPSWFWorkTime().getName()}
</a><
#
else
>
${_item.getPSWFWorkTime().getName()}
</
#
if>
|
|
</
#
if>
<
#
if
_item
.
getTimeout
()??
>
|处理超时时长
(timeout)|${_item.getTimeout()?c}|
|
</
#
if>
<
#
if
_item
.
getTimeoutField
()??
&&
_item
.
getTimeoutField
()?
length
gt
0
>
|动态超时时长存放属性
(timeoutField)|${_item.getTimeoutField()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getTimeoutType
()??
&&
_item
.
getTimeoutType
()?
length
gt
0
>
|处理超时单位
(timeoutType)|${srfcodelist('WFTimeoutType', _item.getTimeoutType())}
(${_item.getTimeoutType()?replace('
','
<BR>
')?replace('
','
<BR>
')})|
|
</
#
if>
<
#
if
_item
.
getTopPos
()??
>
|上方位置
(topPos)|${_item.getTopPos()?c}|
|
</
#
if>
<
#
if
_item
.
getUserData
()??
&&
_item
.
getUserData
()?
length
gt
0
>
|处理数据
(userData)|${_item.getUserData()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserData2
()??
&&
_item
.
getUserData2
()?
length
gt
0
>
|处理数据2
(userData2)|${_item.getUserData2()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getWFProcessType
()??
&&
_item
.
getWFProcessType
()?
length
gt
0
>
|流程处理类型
(wFProcessType)|${srfcodelist('AllWFProcessType', _item.getWFProcessType())}
(${_item.getWFProcessType()?replace('
','
<BR>
')?replace('
','
<BR>
')})|
|
</
#
if>
<
#
if
_item
.
getWFStepValue
()??
&&
_item
.
getWFStepValue
()?
length
gt
0
>
|流程步骤值
(wFStepValue)|${_item.getWFStepValue()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getWidth
()??
>
|宽度
(width)|${_item.getWidth()?c}|
|
</
#
if>
<
#
if
_item
.
isAsynchronousProcess
()??
>
|异步处理
(asynchronousProcess)|${_item.isAsynchronousProcess()?c}|
|
</
#
if>
<
#
if
_item
.
isEnableTimeout
()??
>
|启用处理超时
(enableTimeout)|${_item.isEnableTimeout()?c}|
|
</
#
if>
*来源:getPSWFProcessParams*
<
#
if
_item
.
getPSWFProcessParams
()??
&&
srflist
(
_item
.
getPSWFProcessParams
())?
size
gt
0
>
##### 处理参数集合
<
#
assign
_items2 =
_item.getPSWFProcessParams()
>
<
#
ibizinclude
>
../TEMPL/net.ibizsys.model.wf.IPSWFProcessParam.list.md
</
#
ibizinclude>
</
#
if>
</
#
if>
modules/ibizlab-generator-core/src/main/resources/templ/doc/@macro/workflow/item/net.ibizsys.model.wf.IPSWFProcessParam.item.md.hbs
0 → 100644
浏览文件 @
2f391f52
<
#
comment
>
net.ibizsys.model.wf.IPSWFProcessParam
</
#
comment>
###### ${_item2.getName()}
| 项 |值 |说明 |
|-------------------|:---------------------|:------------------------|
<
#
if
_item2
.
getName
()??
&&
_item2
.
getName
()?
length
gt
0
>
|名称
(name)|${_item2.getName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item2
.
getUserTag
()??
&&
_item2
.
getUserTag
()?
length
gt
0
>
|用户标记
(userTag)|${_item2.getUserTag()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item2
.
getUserTag2
()??
&&
_item2
.
getUserTag2
()?
length
gt
0
>
|用户标记2
(userTag2)|${_item2.getUserTag2()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item2
.
getUserTag3
()??
&&
_item2
.
getUserTag3
()?
length
gt
0
>
|用户标记3
(userTag3)|${_item2.getUserTag3()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item2
.
getUserTag4
()??
&&
_item2
.
getUserTag4
()?
length
gt
0
>
|用户标记4
(userTag4)|${_item2.getUserTag4()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item2
.
getUserCat
()??
&&
_item2
.
getUserCat
()?
length
gt
0
>
|用户模型分类
(userCat)|${_item2.getUserCat()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item2
.
isAutoModel
()
&&
_item2
.
isAutoModel
()??
>
|自动产生模型
(autoModel)|${_item2.isAutoModel()?c}|
|
</
#
if>
<
#
if
_item2
.
getDstField
()??
&&
_item2
.
getDstField
()?
length
gt
0
>
|目标属性
(dstField)|${_item2.getDstField()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item2
.
getPSDynaModel
()??
>
|动态模型对象
(getPSDynaModel)|
<
#
if
_item2
.
getPSDynaModel
().
getRTMOSFilePath
()??
&&
_item2
.
getPSDynaModel
().
getRTMOSFilePath
()?
length
gt
0
><a
href=
"${_prepath}${_item2.getPSDynaModel().getRTMOSFilePath()}"
>
${_item2.getPSDynaModel().getName()}
</a><
#
else
>
${_item2.getPSDynaModel().getName()}
</
#
if>
|
|
</
#
if>
<
#
if
_item2
.
getPSWFProcess
()??
>
|流程处理
(getPSWFProcess)|
<
#
if
_item2
.
getPSWFProcess
().
getRTMOSFilePath
()??
&&
_item2
.
getPSWFProcess
().
getRTMOSFilePath
()?
length
gt
0
><a
href=
"${_prepath}${_item2.getPSWFProcess().getRTMOSFilePath()}"
>
${_item2.getPSWFProcess().getName()}
</a><
#
else
>
${_item2.getPSWFProcess().getName()}
</
#
if>
|
|
</
#
if>
<
#
if
_item2
.
getSrcValue
()??
&&
_item2
.
getSrcValue
()?
length
gt
0
>
|源值
(srcValue)|${_item2.getSrcValue()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item2
.
getSrcValueType
()??
&&
_item2
.
getSrcValueType
()?
length
gt
0
>
|源值类型
(srcValueType)|${_item2.getSrcValueType()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item2
.
getUserData
()??
&&
_item2
.
getUserData
()?
length
gt
0
>
|处理角色数据
(userData)|${_item2.getUserData()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item2
.
getUserData2
()??
&&
_item2
.
getUserData2
()?
length
gt
0
>
|处理角色数据2
(userData2)|${_item2.getUserData2()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
modules/ibizlab-generator-core/src/main/resources/templ/doc/@macro/workflow/item/net.ibizsys.model.wf.IPSWFRouteLink.item.md.hbs
0 → 100644
浏览文件 @
2f391f52
{{#
eq
_item
.
wFLinkType
'IAACTION'
}}
####
{{
_item
.
name
}}
| 项 |值 |说明 |
|-------------------|:---------------------|:------------------------|
{{#if
_item
.
name
}}
|名称
(name)|
{{
_item
.
name
}}
|
|
{{/if}}
{{#if
_item
.
logicName
}}
|逻辑名称
(logicName)|
{{
_item
.
logicName
}}
|
|
{{/if}}
{{#if
_item
.
userTag
}}
|用户标记
(userTag)|
{{
_item
.
userTag
}}
|
|
{{/if}}
{{#if
_item
.
userTag2
}}
|用户标记2
(userTag2)|
{{
_item
.
userTag2
}}
|
|
{{/if}}
{{#if
_item
.
userTag3
}}
|用户标记3
(userTag3)|
{{
_item
.
userTag3
}}
|
|
{{/if}}
{{#if
_item
.
userTag4
}}
|用户标记4
(userTag4)|
{{
_item
.
userTag4
}}
|
|
{{/if}}
{{#if
_item
.
userCat
}}
|用户模型分类
(userCat)|
{{
_item
.
userCat
}}
|
|
{{/if}}
{{#if
_item
.
autoModel
}}
|自动产生模型
(autoModel)|
{{
_item
.
autoModel
}}
|
|
{{/if}}
{{#if
_item
.
customCond
}}
|自定义条件
(customCond)|
{{
_item
.
customCond
}}
|
|
{{/if}}
{{#if
_item
.
formCodeName
}}
|操作表单标记
(formCodeName)|
{{
_item
.
formCodeName
}}
|
|
{{/if}}
{{#if
_item
.
fromPSWFProcess
}}
|源流程处理
(fromPSWFProcess)|
{{
_item
.
fromPSWFProcess
.
name
}}
|
|
{{/if}}
{{#if
_item
.
lNPSLanguageRes
}}
|逻辑名称语言资源
(lNPSLanguageRes)|
{{
_item
.
lNPSLanguageRes
.
name
}}
|
|
{{/if}}
{{#if
_item
.
mobFormCodeName
}}
|移动端操作表单标记
(mobFormCodeName)|
{{
_item
.
mobFormCodeName
}}
|
|
{{/if}}
{{#if
_item
.
mobViewCodeName
}}
|移动端操作视图标记
(mobViewCodeName)|
{{
_item
.
mobViewCodeName
}}
|
|
{{/if}}
{{#if
_item
.
nextCondition
}}
|下一步条件
(nextCondition)|
{{
_item
.
nextCondition
}}
|
|
{{/if}}
{{#if
_item
.
pSDynaModel
}}
|动态模型对象
(pSDynaModel)|
{{
_item
.
pSDynaModel
.
name
}}
|
|
{{/if}}
{{#if
_item
.
toPSWFProcess
}}
|目标流程处理
(toPSWFProcess)|
{{
_item
.
toPSWFProcess
.
name
}}
|
|
{{/if}}
{{#if
_item
.
userData
}}
|连接数据
(userData)|
{{
_item
.
userData
}}
|
|
{{/if}}
{{#if
_item
.
userData2
}}
|连接数据2
(userData2)|
{{
_item
.
userData2
}}
|
|
{{/if}}
{{#if
_item
.
viewCodeName
}}
|操作视图标记
(viewCodeName)|
{{
_item
.
viewCodeName
}}
|
|
{{/if}}
{{#if
_item
.
wFLinkType
}}
|处理连接处理
(wFLinkType)|
{{
item
.
wFLinkType
}}
(
{{
_item
.
wFLinkType
}}
)|
|
{{/if}}
{{/
eq
}}
modules/ibizlab-generator-core/src/main/resources/templ/doc/@macro/workflow/item/net.ibizsys.model.wf.IPSWFStartProcess.item.md.hbs
0 → 100644
浏览文件 @
2f391f52
<
#
comment
>
net.ibizsys.model.wf.IPSWFStartProcess
</
#
comment>
<
#
if
_item
.
getWFProcessType
()=='
START
'
>
#### ${_item.getName()}
<
#
if
_item
.
getParentModel
()??
&&
((
item
.
getModelType
()
==
'
PSSYSTEM
'
&&
_item
.
getParentModel
().
getModelType
()!='
PSSYSTEM
')||(
_item
.
getParentModel
().
getModelType
()
!=
item
.
getModelType
()))
>
@${_item.getParentModel().name}
</
#
if>
| 项 |值 |说明 |
|-------------------|:---------------------|:------------------------|
<
#
if
_item
.
getName
()??
&&
_item
.
getName
()?
length
gt
0
>
|名称
(name)|${_item.getName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getCodeName
()??
&&
_item
.
getCodeName
()?
length
gt
0
>
|代码标识
(codeName)|${_item.getCodeName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getLogicName
()??
&&
_item
.
getLogicName
()?
length
gt
0
>
|逻辑名称
(logicName)|${_item.getLogicName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserTag
()??
&&
_item
.
getUserTag
()?
length
gt
0
>
|用户标记
(userTag)|${_item.getUserTag()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserTag2
()??
&&
_item
.
getUserTag2
()?
length
gt
0
>
|用户标记2
(userTag2)|${_item.getUserTag2()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserTag3
()??
&&
_item
.
getUserTag3
()?
length
gt
0
>
|用户标记3
(userTag3)|${_item.getUserTag3()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserTag4
()??
&&
_item
.
getUserTag4
()?
length
gt
0
>
|用户标记4
(userTag4)|${_item.getUserTag4()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserCat
()??
&&
_item
.
getUserCat
()?
length
gt
0
>
|用户模型分类
(userCat)|${_item.getUserCat()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
isAutoModel
()
&&
_item
.
isAutoModel
()??
>
|自动产生模型
(autoModel)|${_item.isAutoModel()?c}|
|
</
#
if>
<
#
if
_item
.
getFormCodeName
()??
&&
_item
.
getFormCodeName
()?
length
gt
0
>
|操作表单标记
(formCodeName)|${_item.getFormCodeName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getHeight
()??
>
|高度
(height)|${_item.getHeight()?c}|
|
</
#
if>
<
#
if
_item
.
getLeftPos
()??
>
|左侧位置
(leftPos)|${_item.getLeftPos()?c}|
|
</
#
if>
<
#
if
_item
.
getMobFormCodeName
()??
&&
_item
.
getMobFormCodeName
()?
length
gt
0
>
|移动端操作表单标记
(mobFormCodeName)|${_item.getMobFormCodeName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getNamePSLanguageRes
()??
>
|名称语言资源
(getNamePSLanguageRes)|
<
#
if
_item
.
getNamePSLanguageRes
().
getRTMOSFilePath
()??
&&
_item
.
getNamePSLanguageRes
().
getRTMOSFilePath
()?
length
gt
0
><a
href=
"${_prepath}${_item.getNamePSLanguageRes().getRTMOSFilePath()}"
>
${_item.getNamePSLanguageRes().getName()}
</a><
#
else
>
${_item.getNamePSLanguageRes().getName()}
</
#
if>
|
|
</
#
if>
<
#
if
_item
.
getPSDynaModel
()??
>
|动态模型对象
(getPSDynaModel)|
<
#
if
_item
.
getPSDynaModel
().
getRTMOSFilePath
()??
&&
_item
.
getPSDynaModel
().
getRTMOSFilePath
()?
length
gt
0
><a
href=
"${_prepath}${_item.getPSDynaModel().getRTMOSFilePath()}"
>
${_item.getPSDynaModel().getName()}
</a><
#
else
>
${_item.getPSDynaModel().getName()}
</
#
if>
|
|
</
#
if>
<
#
if
_item
.
getPSSysMsgTempl
()??
>
|通知消息模板
(getPSSysMsgTempl)|
<
#
if
_item
.
getPSSysMsgTempl
().
getRTMOSFilePath
()??
&&
_item
.
getPSSysMsgTempl
().
getRTMOSFilePath
()?
length
gt
0
><a
href=
"${_prepath}${_item.getPSSysMsgTempl().getRTMOSFilePath()}"
>
${_item.getPSSysMsgTempl().getName()}
</a><
#
else
>
${_item.getPSSysMsgTempl().getName()}
</
#
if>
|
|
</
#
if>
<
#
if
_item
.
getPSWFWorkTime
()??
>
|流程工作时间
(getPSWFWorkTime)|
<
#
if
_item
.
getPSWFWorkTime
().
getRTMOSFilePath
()??
&&
_item
.
getPSWFWorkTime
().
getRTMOSFilePath
()?
length
gt
0
><a
href=
"${_prepath}${_item.getPSWFWorkTime().getRTMOSFilePath()}"
>
${_item.getPSWFWorkTime().getName()}
</a><
#
else
>
${_item.getPSWFWorkTime().getName()}
</
#
if>
|
|
</
#
if>
<
#
if
_item
.
getTimeout
()??
>
|处理超时时长
(timeout)|${_item.getTimeout()?c}|
|
</
#
if>
<
#
if
_item
.
getTimeoutField
()??
&&
_item
.
getTimeoutField
()?
length
gt
0
>
|动态超时时长存放属性
(timeoutField)|${_item.getTimeoutField()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getTimeoutType
()??
&&
_item
.
getTimeoutType
()?
length
gt
0
>
|处理超时单位
(timeoutType)|${srfcodelist('WFTimeoutType', _item.getTimeoutType())}
(${_item.getTimeoutType()?replace('
','
<BR>
')?replace('
','
<BR>
')})|
|
</
#
if>
<
#
if
_item
.
getTopPos
()??
>
|上方位置
(topPos)|${_item.getTopPos()?c}|
|
</
#
if>
<
#
if
_item
.
getUserData
()??
&&
_item
.
getUserData
()?
length
gt
0
>
|处理数据
(userData)|${_item.getUserData()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserData2
()??
&&
_item
.
getUserData2
()?
length
gt
0
>
|处理数据2
(userData2)|${_item.getUserData2()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getWFProcessType
()??
&&
_item
.
getWFProcessType
()?
length
gt
0
>
|流程处理类型
(wFProcessType)|${srfcodelist('AllWFProcessType', _item.getWFProcessType())}
(${_item.getWFProcessType()?replace('
','
<BR>
')?replace('
','
<BR>
')})|
|
</
#
if>
<
#
if
_item
.
getWFStepValue
()??
&&
_item
.
getWFStepValue
()?
length
gt
0
>
|流程步骤值
(wFStepValue)|${_item.getWFStepValue()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getWidth
()??
>
|宽度
(width)|${_item.getWidth()?c}|
|
</
#
if>
<
#
if
_item
.
isAsynchronousProcess
()??
>
|异步处理
(asynchronousProcess)|${_item.isAsynchronousProcess()?c}|
|
</
#
if>
<
#
if
_item
.
isEnableTimeout
()??
>
|启用处理超时
(enableTimeout)|${_item.isEnableTimeout()?c}|
|
</
#
if>
<
#
if
_item
.
isStartProcess
()??
>
|开始处理
(startProcess)|${_item.isStartProcess()?c}|
|
</
#
if>
*来源:getPSWFProcessParams*
<
#
if
_item
.
getPSWFProcessParams
()??
&&
srflist
(
_item
.
getPSWFProcessParams
())?
size
gt
0
>
##### 处理参数集合
<
#
assign
_items2 =
_item.getPSWFProcessParams()
>
<
#
ibizinclude
>
../TEMPL/net.ibizsys.model.wf.IPSWFProcessParam.list.md
</
#
ibizinclude>
</
#
if>
</
#
if>
modules/ibizlab-generator-core/src/main/resources/templ/doc/@macro/workflow/item/net.ibizsys.model.wf.IPSWFTimerEventProcess.item.md.hbs
0 → 100644
浏览文件 @
2f391f52
<
#
comment
>
net.ibizsys.model.wf.IPSWFTimerEventProcess
</
#
comment>
<
#
if
_item
.
getWFProcessType
()=='
TIMEREVENT
'
>
#### ${_item.getName()}
<
#
if
_item
.
getParentModel
()??
&&
((
item
.
getModelType
()
==
'
PSSYSTEM
'
&&
_item
.
getParentModel
().
getModelType
()!='
PSSYSTEM
')||(
_item
.
getParentModel
().
getModelType
()
!=
item
.
getModelType
()))
>
@${_item.getParentModel().name}
</
#
if>
| 项 |值 |说明 |
|-------------------|:---------------------|:------------------------|
<
#
if
_item
.
getName
()??
&&
_item
.
getName
()?
length
gt
0
>
|名称
(name)|${_item.getName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getCodeName
()??
&&
_item
.
getCodeName
()?
length
gt
0
>
|代码标识
(codeName)|${_item.getCodeName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getLogicName
()??
&&
_item
.
getLogicName
()?
length
gt
0
>
|逻辑名称
(logicName)|${_item.getLogicName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserTag
()??
&&
_item
.
getUserTag
()?
length
gt
0
>
|用户标记
(userTag)|${_item.getUserTag()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserTag2
()??
&&
_item
.
getUserTag2
()?
length
gt
0
>
|用户标记2
(userTag2)|${_item.getUserTag2()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserTag3
()??
&&
_item
.
getUserTag3
()?
length
gt
0
>
|用户标记3
(userTag3)|${_item.getUserTag3()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserTag4
()??
&&
_item
.
getUserTag4
()?
length
gt
0
>
|用户标记4
(userTag4)|${_item.getUserTag4()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserCat
()??
&&
_item
.
getUserCat
()?
length
gt
0
>
|用户模型分类
(userCat)|${_item.getUserCat()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
isAutoModel
()
&&
_item
.
isAutoModel
()??
>
|自动产生模型
(autoModel)|${_item.isAutoModel()?c}|
|
</
#
if>
<
#
if
_item
.
getHeight
()??
>
|高度
(height)|${_item.getHeight()?c}|
|
</
#
if>
<
#
if
_item
.
getLeftPos
()??
>
|左侧位置
(leftPos)|${_item.getLeftPos()?c}|
|
</
#
if>
<
#
if
_item
.
getNamePSLanguageRes
()??
>
|名称语言资源
(getNamePSLanguageRes)|
<
#
if
_item
.
getNamePSLanguageRes
().
getRTMOSFilePath
()??
&&
_item
.
getNamePSLanguageRes
().
getRTMOSFilePath
()?
length
gt
0
><a
href=
"${_prepath}${_item.getNamePSLanguageRes().getRTMOSFilePath()}"
>
${_item.getNamePSLanguageRes().getName()}
</a><
#
else
>
${_item.getNamePSLanguageRes().getName()}
</
#
if>
|
|
</
#
if>
<
#
if
_item
.
getPSDynaModel
()??
>
|动态模型对象
(getPSDynaModel)|
<
#
if
_item
.
getPSDynaModel
().
getRTMOSFilePath
()??
&&
_item
.
getPSDynaModel
().
getRTMOSFilePath
()?
length
gt
0
><a
href=
"${_prepath}${_item.getPSDynaModel().getRTMOSFilePath()}"
>
${_item.getPSDynaModel().getName()}
</a><
#
else
>
${_item.getPSDynaModel().getName()}
</
#
if>
|
|
</
#
if>
<
#
if
_item
.
getPSSysMsgTempl
()??
>
|通知消息模板
(getPSSysMsgTempl)|
<
#
if
_item
.
getPSSysMsgTempl
().
getRTMOSFilePath
()??
&&
_item
.
getPSSysMsgTempl
().
getRTMOSFilePath
()?
length
gt
0
><a
href=
"${_prepath}${_item.getPSSysMsgTempl().getRTMOSFilePath()}"
>
${_item.getPSSysMsgTempl().getName()}
</a><
#
else
>
${_item.getPSSysMsgTempl().getName()}
</
#
if>
|
|
</
#
if>
<
#
if
_item
.
getPSWFWorkTime
()??
>
|流程工作时间
(getPSWFWorkTime)|
<
#
if
_item
.
getPSWFWorkTime
().
getRTMOSFilePath
()??
&&
_item
.
getPSWFWorkTime
().
getRTMOSFilePath
()?
length
gt
0
><a
href=
"${_prepath}${_item.getPSWFWorkTime().getRTMOSFilePath()}"
>
${_item.getPSWFWorkTime().getName()}
</a><
#
else
>
${_item.getPSWFWorkTime().getName()}
</
#
if>
|
|
</
#
if>
<
#
if
_item
.
getTimeout
()??
>
|处理超时时长
(timeout)|${_item.getTimeout()?c}|
|
</
#
if>
<
#
if
_item
.
getTimeoutField
()??
&&
_item
.
getTimeoutField
()?
length
gt
0
>
|动态超时时长存放属性
(timeoutField)|${_item.getTimeoutField()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getTimeoutType
()??
&&
_item
.
getTimeoutType
()?
length
gt
0
>
|处理超时单位
(timeoutType)|${srfcodelist('WFTimeoutType', _item.getTimeoutType())}
(${_item.getTimeoutType()?replace('
','
<BR>
')?replace('
','
<BR>
')})|
|
</
#
if>
<
#
if
_item
.
getTopPos
()??
>
|上方位置
(topPos)|${_item.getTopPos()?c}|
|
</
#
if>
<
#
if
_item
.
getUserData
()??
&&
_item
.
getUserData
()?
length
gt
0
>
|处理数据
(userData)|${_item.getUserData()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserData2
()??
&&
_item
.
getUserData2
()?
length
gt
0
>
|处理数据2
(userData2)|${_item.getUserData2()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getWFProcessType
()??
&&
_item
.
getWFProcessType
()?
length
gt
0
>
|流程处理类型
(wFProcessType)|${srfcodelist('AllWFProcessType', _item.getWFProcessType())}
(${_item.getWFProcessType()?replace('
','
<BR>
')?replace('
','
<BR>
')})|
|
</
#
if>
<
#
if
_item
.
getWFStepValue
()??
&&
_item
.
getWFStepValue
()?
length
gt
0
>
|流程步骤值
(wFStepValue)|${_item.getWFStepValue()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getWidth
()??
>
|宽度
(width)|${_item.getWidth()?c}|
|
</
#
if>
<
#
if
_item
.
isAsynchronousProcess
()??
>
|异步处理
(asynchronousProcess)|${_item.isAsynchronousProcess()?c}|
|
</
#
if>
<
#
if
_item
.
isEnableTimeout
()??
>
|启用处理超时
(enableTimeout)|${_item.isEnableTimeout()?c}|
|
</
#
if>
*来源:getPSWFProcessParams*
<
#
if
_item
.
getPSWFProcessParams
()??
&&
srflist
(
_item
.
getPSWFProcessParams
())?
size
gt
0
>
##### 处理参数集合
<
#
assign
_items2 =
_item.getPSWFProcessParams()
>
<
#
ibizinclude
>
../TEMPL/net.ibizsys.model.wf.IPSWFProcessParam.list.md
</
#
ibizinclude>
</
#
if>
</
#
if>
modules/ibizlab-generator-core/src/main/resources/templ/doc/@macro/workflow/list/net.ibizsys.model.wf.IPSWFLink.list.md.hbs
0 → 100644
浏览文件 @
2f391f52
modules/ibizlab-generator-core/src/main/resources/templ/doc/@macro/workflow/list/net.ibizsys.model.wf.IPSWFProcess.list.md.hbs
0 → 100644
浏览文件 @
2f391f52
<
#
comment
>
net.ibizsys.model.wf.IPSWFStartProcess
</
#
comment>
<
#
if
_item
.
getWFProcessType
()=='
START
'
>
#### ${_item.getName()}
<
#
if
_item
.
getParentModel
()??
&&
((
item
.
getModelType
()
==
'
PSSYSTEM
'
&&
_item
.
getParentModel
().
getModelType
()!='
PSSYSTEM
')||(
_item
.
getParentModel
().
getModelType
()
!=
item
.
getModelType
()))
>
@${_item.getParentModel().name}
</
#
if>
| 项 |值 |说明 |
|-------------------|:---------------------|:------------------------|
<
#
if
_item
.
getName
()??
&&
_item
.
getName
()?
length
gt
0
>
|名称
(name)|${_item.getName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getCodeName
()??
&&
_item
.
getCodeName
()?
length
gt
0
>
|代码标识
(codeName)|${_item.getCodeName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getLogicName
()??
&&
_item
.
getLogicName
()?
length
gt
0
>
|逻辑名称
(logicName)|${_item.getLogicName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserTag
()??
&&
_item
.
getUserTag
()?
length
gt
0
>
|用户标记
(userTag)|${_item.getUserTag()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserTag2
()??
&&
_item
.
getUserTag2
()?
length
gt
0
>
|用户标记2
(userTag2)|${_item.getUserTag2()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserTag3
()??
&&
_item
.
getUserTag3
()?
length
gt
0
>
|用户标记3
(userTag3)|${_item.getUserTag3()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserTag4
()??
&&
_item
.
getUserTag4
()?
length
gt
0
>
|用户标记4
(userTag4)|${_item.getUserTag4()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserCat
()??
&&
_item
.
getUserCat
()?
length
gt
0
>
|用户模型分类
(userCat)|${_item.getUserCat()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
isAutoModel
()
&&
_item
.
isAutoModel
()??
>
|自动产生模型
(autoModel)|${_item.isAutoModel()?c}|
|
</
#
if>
<
#
if
_item
.
getFormCodeName
()??
&&
_item
.
getFormCodeName
()?
length
gt
0
>
|操作表单标记
(formCodeName)|${_item.getFormCodeName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getHeight
()??
>
|高度
(height)|${_item.getHeight()?c}|
|
</
#
if>
<
#
if
_item
.
getLeftPos
()??
>
|左侧位置
(leftPos)|${_item.getLeftPos()?c}|
|
</
#
if>
<
#
if
_item
.
getMobFormCodeName
()??
&&
_item
.
getMobFormCodeName
()?
length
gt
0
>
|移动端操作表单标记
(mobFormCodeName)|${_item.getMobFormCodeName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getNamePSLanguageRes
()??
>
|名称语言资源
(getNamePSLanguageRes)|
<
#
if
_item
.
getNamePSLanguageRes
().
getRTMOSFilePath
()??
&&
_item
.
getNamePSLanguageRes
().
getRTMOSFilePath
()?
length
gt
0
><a
href=
"${_prepath}${_item.getNamePSLanguageRes().getRTMOSFilePath()}"
>
${_item.getNamePSLanguageRes().getName()}
</a><
#
else
>
${_item.getNamePSLanguageRes().getName()}
</
#
if>
|
|
</
#
if>
<
#
if
_item
.
getPSDynaModel
()??
>
|动态模型对象
(getPSDynaModel)|
<
#
if
_item
.
getPSDynaModel
().
getRTMOSFilePath
()??
&&
_item
.
getPSDynaModel
().
getRTMOSFilePath
()?
length
gt
0
><a
href=
"${_prepath}${_item.getPSDynaModel().getRTMOSFilePath()}"
>
${_item.getPSDynaModel().getName()}
</a><
#
else
>
${_item.getPSDynaModel().getName()}
</
#
if>
|
|
</
#
if>
<
#
if
_item
.
getPSSysMsgTempl
()??
>
|通知消息模板
(getPSSysMsgTempl)|
<
#
if
_item
.
getPSSysMsgTempl
().
getRTMOSFilePath
()??
&&
_item
.
getPSSysMsgTempl
().
getRTMOSFilePath
()?
length
gt
0
><a
href=
"${_prepath}${_item.getPSSysMsgTempl().getRTMOSFilePath()}"
>
${_item.getPSSysMsgTempl().getName()}
</a><
#
else
>
${_item.getPSSysMsgTempl().getName()}
</
#
if>
|
|
</
#
if>
<
#
if
_item
.
getPSWFWorkTime
()??
>
|流程工作时间
(getPSWFWorkTime)|
<
#
if
_item
.
getPSWFWorkTime
().
getRTMOSFilePath
()??
&&
_item
.
getPSWFWorkTime
().
getRTMOSFilePath
()?
length
gt
0
><a
href=
"${_prepath}${_item.getPSWFWorkTime().getRTMOSFilePath()}"
>
${_item.getPSWFWorkTime().getName()}
</a><
#
else
>
${_item.getPSWFWorkTime().getName()}
</
#
if>
|
|
</
#
if>
<
#
if
_item
.
getTimeout
()??
>
|处理超时时长
(timeout)|${_item.getTimeout()?c}|
|
</
#
if>
<
#
if
_item
.
getTimeoutField
()??
&&
_item
.
getTimeoutField
()?
length
gt
0
>
|动态超时时长存放属性
(timeoutField)|${_item.getTimeoutField()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getTimeoutType
()??
&&
_item
.
getTimeoutType
()?
length
gt
0
>
|处理超时单位
(timeoutType)|${srfcodelist('WFTimeoutType', _item.getTimeoutType())}
(${_item.getTimeoutType()?replace('
','
<BR>
')?replace('
','
<BR>
')})|
|
</
#
if>
<
#
if
_item
.
getTopPos
()??
>
|上方位置
(topPos)|${_item.getTopPos()?c}|
|
</
#
if>
<
#
if
_item
.
getUserData
()??
&&
_item
.
getUserData
()?
length
gt
0
>
|处理数据
(userData)|${_item.getUserData()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserData2
()??
&&
_item
.
getUserData2
()?
length
gt
0
>
|处理数据2
(userData2)|${_item.getUserData2()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getWFProcessType
()??
&&
_item
.
getWFProcessType
()?
length
gt
0
>
|流程处理类型
(wFProcessType)|${srfcodelist('AllWFProcessType', _item.getWFProcessType())}
(${_item.getWFProcessType()?replace('
','
<BR>
')?replace('
','
<BR>
')})|
|
</
#
if>
<
#
if
_item
.
getWFStepValue
()??
&&
_item
.
getWFStepValue
()?
length
gt
0
>
|流程步骤值
(wFStepValue)|${_item.getWFStepValue()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getWidth
()??
>
|宽度
(width)|${_item.getWidth()?c}|
|
</
#
if>
<
#
if
_item
.
isAsynchronousProcess
()??
>
|异步处理
(asynchronousProcess)|${_item.isAsynchronousProcess()?c}|
|
</
#
if>
<
#
if
_item
.
isEnableTimeout
()??
>
|启用处理超时
(enableTimeout)|${_item.isEnableTimeout()?c}|
|
</
#
if>
<
#
if
_item
.
isStartProcess
()??
>
|开始处理
(startProcess)|${_item.isStartProcess()?c}|
|
</
#
if>
*来源:getPSWFProcessParams*
<
#
if
_item
.
getPSWFProcessParams
()??
&&
srflist
(
_item
.
getPSWFProcessParams
())?
size
gt
0
>
##### 处理参数集合
<
#
assign
_items2 =
_item.getPSWFProcessParams()
>
<
#
ibizinclude
>
../TEMPL/net.ibizsys.model.wf.IPSWFProcessParam.list.md
</
#
ibizinclude>
</
#
if>
</
#
if>
modules/ibizlab-generator-core/src/main/resources/templ/doc/@macro/workflow/list/net.ibizsys.model.wf.IPSWFProcessParam.list.md.hbs
0 → 100644
浏览文件 @
2f391f52
<
#
comment
>
net.ibizsys.model.wf.IPSWFStartProcess
</
#
comment>
<
#
if
_item
.
getWFProcessType
()=='
START
'
>
#### ${_item.getName()}
<
#
if
_item
.
getParentModel
()??
&&
((
item
.
getModelType
()
==
'
PSSYSTEM
'
&&
_item
.
getParentModel
().
getModelType
()!='
PSSYSTEM
')||(
_item
.
getParentModel
().
getModelType
()
!=
item
.
getModelType
()))
>
@${_item.getParentModel().name}
</
#
if>
| 项 |值 |说明 |
|-------------------|:---------------------|:------------------------|
<
#
if
_item
.
getName
()??
&&
_item
.
getName
()?
length
gt
0
>
|名称
(name)|${_item.getName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getCodeName
()??
&&
_item
.
getCodeName
()?
length
gt
0
>
|代码标识
(codeName)|${_item.getCodeName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getLogicName
()??
&&
_item
.
getLogicName
()?
length
gt
0
>
|逻辑名称
(logicName)|${_item.getLogicName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserTag
()??
&&
_item
.
getUserTag
()?
length
gt
0
>
|用户标记
(userTag)|${_item.getUserTag()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserTag2
()??
&&
_item
.
getUserTag2
()?
length
gt
0
>
|用户标记2
(userTag2)|${_item.getUserTag2()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserTag3
()??
&&
_item
.
getUserTag3
()?
length
gt
0
>
|用户标记3
(userTag3)|${_item.getUserTag3()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserTag4
()??
&&
_item
.
getUserTag4
()?
length
gt
0
>
|用户标记4
(userTag4)|${_item.getUserTag4()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserCat
()??
&&
_item
.
getUserCat
()?
length
gt
0
>
|用户模型分类
(userCat)|${_item.getUserCat()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
isAutoModel
()
&&
_item
.
isAutoModel
()??
>
|自动产生模型
(autoModel)|${_item.isAutoModel()?c}|
|
</
#
if>
<
#
if
_item
.
getFormCodeName
()??
&&
_item
.
getFormCodeName
()?
length
gt
0
>
|操作表单标记
(formCodeName)|${_item.getFormCodeName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getHeight
()??
>
|高度
(height)|${_item.getHeight()?c}|
|
</
#
if>
<
#
if
_item
.
getLeftPos
()??
>
|左侧位置
(leftPos)|${_item.getLeftPos()?c}|
|
</
#
if>
<
#
if
_item
.
getMobFormCodeName
()??
&&
_item
.
getMobFormCodeName
()?
length
gt
0
>
|移动端操作表单标记
(mobFormCodeName)|${_item.getMobFormCodeName()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getNamePSLanguageRes
()??
>
|名称语言资源
(getNamePSLanguageRes)|
<
#
if
_item
.
getNamePSLanguageRes
().
getRTMOSFilePath
()??
&&
_item
.
getNamePSLanguageRes
().
getRTMOSFilePath
()?
length
gt
0
><a
href=
"${_prepath}${_item.getNamePSLanguageRes().getRTMOSFilePath()}"
>
${_item.getNamePSLanguageRes().getName()}
</a><
#
else
>
${_item.getNamePSLanguageRes().getName()}
</
#
if>
|
|
</
#
if>
<
#
if
_item
.
getPSDynaModel
()??
>
|动态模型对象
(getPSDynaModel)|
<
#
if
_item
.
getPSDynaModel
().
getRTMOSFilePath
()??
&&
_item
.
getPSDynaModel
().
getRTMOSFilePath
()?
length
gt
0
><a
href=
"${_prepath}${_item.getPSDynaModel().getRTMOSFilePath()}"
>
${_item.getPSDynaModel().getName()}
</a><
#
else
>
${_item.getPSDynaModel().getName()}
</
#
if>
|
|
</
#
if>
<
#
if
_item
.
getPSSysMsgTempl
()??
>
|通知消息模板
(getPSSysMsgTempl)|
<
#
if
_item
.
getPSSysMsgTempl
().
getRTMOSFilePath
()??
&&
_item
.
getPSSysMsgTempl
().
getRTMOSFilePath
()?
length
gt
0
><a
href=
"${_prepath}${_item.getPSSysMsgTempl().getRTMOSFilePath()}"
>
${_item.getPSSysMsgTempl().getName()}
</a><
#
else
>
${_item.getPSSysMsgTempl().getName()}
</
#
if>
|
|
</
#
if>
<
#
if
_item
.
getPSWFWorkTime
()??
>
|流程工作时间
(getPSWFWorkTime)|
<
#
if
_item
.
getPSWFWorkTime
().
getRTMOSFilePath
()??
&&
_item
.
getPSWFWorkTime
().
getRTMOSFilePath
()?
length
gt
0
><a
href=
"${_prepath}${_item.getPSWFWorkTime().getRTMOSFilePath()}"
>
${_item.getPSWFWorkTime().getName()}
</a><
#
else
>
${_item.getPSWFWorkTime().getName()}
</
#
if>
|
|
</
#
if>
<
#
if
_item
.
getTimeout
()??
>
|处理超时时长
(timeout)|${_item.getTimeout()?c}|
|
</
#
if>
<
#
if
_item
.
getTimeoutField
()??
&&
_item
.
getTimeoutField
()?
length
gt
0
>
|动态超时时长存放属性
(timeoutField)|${_item.getTimeoutField()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getTimeoutType
()??
&&
_item
.
getTimeoutType
()?
length
gt
0
>
|处理超时单位
(timeoutType)|${srfcodelist('WFTimeoutType', _item.getTimeoutType())}
(${_item.getTimeoutType()?replace('
','
<BR>
')?replace('
','
<BR>
')})|
|
</
#
if>
<
#
if
_item
.
getTopPos
()??
>
|上方位置
(topPos)|${_item.getTopPos()?c}|
|
</
#
if>
<
#
if
_item
.
getUserData
()??
&&
_item
.
getUserData
()?
length
gt
0
>
|处理数据
(userData)|${_item.getUserData()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getUserData2
()??
&&
_item
.
getUserData2
()?
length
gt
0
>
|处理数据2
(userData2)|${_item.getUserData2()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getWFProcessType
()??
&&
_item
.
getWFProcessType
()?
length
gt
0
>
|流程处理类型
(wFProcessType)|${srfcodelist('AllWFProcessType', _item.getWFProcessType())}
(${_item.getWFProcessType()?replace('
','
<BR>
')?replace('
','
<BR>
')})|
|
</
#
if>
<
#
if
_item
.
getWFStepValue
()??
&&
_item
.
getWFStepValue
()?
length
gt
0
>
|流程步骤值
(wFStepValue)|${_item.getWFStepValue()?replace('
','
<BR>
')?replace('
','
<BR>
')}|
|
</
#
if>
<
#
if
_item
.
getWidth
()??
>
|宽度
(width)|${_item.getWidth()?c}|
|
</
#
if>
<
#
if
_item
.
isAsynchronousProcess
()??
>
|异步处理
(asynchronousProcess)|${_item.isAsynchronousProcess()?c}|
|
</
#
if>
<
#
if
_item
.
isEnableTimeout
()??
>
|启用处理超时
(enableTimeout)|${_item.isEnableTimeout()?c}|
|
</
#
if>
<
#
if
_item
.
isStartProcess
()??
>
|开始处理
(startProcess)|${_item.isStartProcess()?c}|
|
</
#
if>
*来源:getPSWFProcessParams*
<
#
if
_item
.
getPSWFProcessParams
()??
&&
srflist
(
_item
.
getPSWFProcessParams
())?
size
gt
0
>
##### 处理参数集合
<
#
assign
_items2 =
_item.getPSWFProcessParams()
>
<
#
ibizinclude
>
../TEMPL/net.ibizsys.model.wf.IPSWFProcessParam.list.md
</
#
ibizinclude>
</
#
if>
</
#
if>
modules/ibizlab-generator-core/src/main/resources/templ/doc/README.md.hbs
0 → 100644
浏览文件 @
2f391f52
#
{{
system
.
logicName
}}
## 基本
| 项 |值 |说明 |
|-------------------|:---------------------|:------------------------|
|名称
(name)|
{{
system
.
name
}}
|
|
|代码标识
(codeName)|
{{
system
.
codeName
}}
|
|
|逻辑名称
(logicName)|
{{
system
.
logicName
}}
|
|
## 工作流集合
|名称|版本|代码标识|说明|
|-------------------|:-------------------|:-------------------|:-------------------|
{{#
each
system
.
workflows
}}
|
<a
href=
"#/
{{
wFCodeName
}}
/
{{
codeName
}}
"
>
{{
name
}}
</a>
|
{{
wFVersion
}}
|
{{
codeName
}}
|
|
{{/
each
}}
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/doc/index.html.hbs
0 → 100644
浏览文件 @
2f391f52
<!DOCTYPE html>
<html
lang=
"en"
>
<head>
<meta
charset=
"UTF-8"
>
<title>
{{
system
.
logicName
}}
</title>
<meta
http-equiv=
"X-UA-Compatible"
content=
"IE=edge,chrome=1"
/>
<meta
name=
"description"
content=
"Description"
>
<meta
name=
"viewport"
content=
"width=device-width, initial-scale=1.0, minimum-scale=1.0"
>
<link
rel=
"stylesheet"
href=
"//cdn.jsdelivr.net/npm/docsify@4/lib/themes/vue.css"
>
<link
rel=
"stylesheet"
href=
"//unpkg.com/@fortawesome/fontawesome-free/css/fontawesome.css"
/>
<link
rel=
"stylesheet"
href=
"//unpkg.com/@fortawesome/fontawesome-free/css/brands.css"
/>
<link
rel=
"stylesheet"
href=
"//unpkg.com/@fortawesome/fontawesome-free/css/regular.css"
/>
<link
rel=
"stylesheet"
href=
"//unpkg.com/@fortawesome/fontawesome-free/css/solid.css"
/>
<!-- Theme -->
<!-- //jhildenbiddle.github.io/docsify-themeable -->
<!-- Theme: Simple Dark -->
<!-- <link rel="stylesheet" href="//cdn.jsdelivr.net/npm/docsify-themeable@0/dist/css/theme-simple-dark.css"> -->
<link
rel=
"stylesheet"
href=
"//cdn.jsdelivr.net/npm/@sujaykumarh/docsify-plugin-footer@1.x/dist/plugin.min.css"
>
<link
rel=
"stylesheet"
href=
"//unpkg.com/@markbattistella/docsify-charty@latest/dist/docsify-charty.min.css"
>
</head>
<style>
:root
{
--content-max-width
:
55em
;
}
.content
{
padding-top
:
0px
;
}
</style>
<body>
<div
id=
"app"
></div>
<script>
window
.
$docsify
=
{
// routerMode: 'history',
// crossOriginLinks: ['http://cdn.jsdelivr.net','http://172.16.100.202','http://demo.ibizlab.cn'],
loadNavbar
:
true
,
loadNavbar
:
'navbar.md'
,
// loadSidebar: true,
// loadSidebar: 'sidebar.md',
repo
:
'
{{
system
.
pSSVNInstRepo
.
gitPath
}}
'
,
auto2top
:
true
,
themeable
:
{
readyTransition
:
true
,
responsiveTables
:
true
},
plantuml
:
{
skin
:
'classic'
,
renderSvgAsObject
:
true
,
serverPath
:
"http://172.16.240.229:8080/svg/"
},
tabs
:
{
theme
:
"material"
,
sync
:
false
,
},
copyCode
:
{
buttonText
:
'复制到剪贴板'
,
errorText
:
'错误'
,
successText
:
'已复制'
},
progress
:
{
position
:
"top"
,
color
:
"var(--theme-color,#42b983)"
,
height
:
"2px"
,
},
customPageFooter
:
{
showPoweredBy
:
false
,
showCopyright
:
true
,
copyright
:
'<div class="copyright"><span>XXXX </span> <span>Copyright @2021 ibizsys.cn</span> <span>X</span></div>'
,
useLocalStorage
:
false
,
},
}
</script>
<!-- Docsify v4 -->
<script
src=
"//cdn.jsdelivr.net/npm/docsify@4"
></script>
<script
src=
"//cdn.jsdelivr.net/npm/docsify/lib/plugins/search.min.js"
></script>
<!-- docsify-themeable (latest v0.x.x) -->
<!-- <script src="//cdn.jsdelivr.net/npm/docsify-themeable@0/dist/js/docsify-themeable.min.js"></script> -->
<script
src=
"//cdn.jsdelivr.net/npm/prismjs@1.25.0/components/prism-java.min.js"
></script>
<script
src=
"//cdn.jsdelivr.net/npm/prismjs@1.25.0/components/prism-sql.min.js"
></script>
<script
src=
"//cdn.jsdelivr.net/npm/prismjs@1.25.0/components/prism-git.min.js"
></script>
<script
src=
"//cdn.jsdelivr.net/npm/prismjs@1.25.0/components/prism-json.js"
></script>
<script
src=
"//cdn.jsdelivr.net/npm/prismjs@1.25.0/components/prism-yaml.min.js"
></script>
<!-- tabs -->
<script
src=
"//cdn.jsdelivr.net/npm/docsify-tabs@1"
></script>
<!-- copy code -->
<script
src=
"//unpkg.com/docsify-copy-code@2"
></script>
<!-- plantuml -->
<script
src=
"//unpkg.com/docsify-plantuml/dist/docsify-plantuml.min.js"
></script>
<!-- progress -->
<script
src=
"//cdn.jsdelivr.net/npm/docsify-progress@latest/dist/progress.min.js"
></script>
<!-- charty -->
<script
src=
"//unpkg.com/@markbattistella/docsify-charty@latest/dist/docsify-charty.min.js"
></script>
<!-- footer -->
<script
src=
"//cdn.jsdelivr.net/npm/@sujaykumarh/docsify-plugin-footer@1.x/dist/plugin.min.js"
></script>
<!-- glossary -->
<script
src=
"//unpkg.com/docsify-glossary/dist/docsify-glossary.min.js"
></script>
<!-- fontawesome -->
<script
src=
"//unpkg.com/docsify-fontawesome/dist/docsify-fontawesome.min.js"
></script>
<!-- example -->
<script
src=
"//cdn.jsdelivr.net/npm/docsify-example-panels"
></script>
</body>
</html>
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/doc/navbar.md.hbs
0 → 100644
浏览文件 @
2f391f52
- [iBiz MosDynamic](http://studio.ibizmodeling.cn/mosdynamictool/mos-dynamic-mgr/#/mosdynamicmgr/${sys.getPubSystemId()} "iBiz MosDynamic")
- [MeterSphere](http://172.16.240.229:8081)
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/doc/{{wf}}/{{workflows}}.md.hbs
0 → 100644
浏览文件 @
2f391f52
#
{{
workflow
.
name
}}
*对象:net.ibizsys.model.wf.IPSWFVersion
## 基本
| 项 |值 |说明 |
|-------------------|:---------------------|:------------------------|
|名称
(name)|
{{
workflow
.
name
}}
|
|
|版本
(wFVersion)|
{{
workflow
.
wFVersion
}}
|
|
|代码标识
(codeName)|
{{
workflow
.
codeName
}}
|
|
{{#if
workflow
.
links
}}
```plantuml
@startuml
!theme plain
hide footbox
{{#
each
workflow
.
links
}}
{{#
eq
fromPSWFProcess
.
wFProcessType
"START"
}}
(*)
{{/
eq
}}{{#
neq
fromPSWFProcess
.
wFProcessType
"START"
}}
"
{{
fromPSWFProcess
.
name
}}
"
{{/
neq
}}
--> [
{{#if
logicName
}}{{
logicName
}}{{/if}}{{#
unless
logicName
}}{{
name
}}{{/
unless
}}
]
{{#
eq
toPSWFProcess
.
wFProcessType
"END"
}}
(*)
{{/
eq
}}{{#
neq
toPSWFProcess
.
wFProcessType
"END"
}}
"
{{
toPSWFProcess
.
name
}}
"
{{/
neq
}}
{{/
each
}}
@enduml
```
{{/if}}
## 逻辑
### 流程处理集合
*来源:getPSWFProcesses*
{{#if
workflow
.
pSWFProcesses
}}
{{>
@macro
/
net
.
ibizsys
.
model
.
wf
.
IPSWFProcess
.
list
.
md
.
hbs
items
=
workflow
.
pSWFProcesses
}}
{{else}}
*(无数据)*
{{/if}}
### 流程连接集合
*来源:getPSWFLinks*
{{#if
workflow
.
pSWFLinks
}}
{{>
@macro
/
net
.
ibizsys
.
model
.
wf
.
IPSWFLink
.
list
.
md
.
hbs
items
=
workflow
.
pSWFLinks
}}
{{else}}
*(无数据)*
{{/if}}
## 用户扩展
| 项 |值 |说明 |
|-------------------|:---------------------|:------------------------|
{{#if
workflow
.
userTag
}}
|用户标记
(userTag)|
{{
workflow
.
userTag
}}
|
|
{{/if}}
{{#if
workflow
.
userTag2
}}
|用户标记2
(userTag2)|
{{
workflow
.
userTag2
}}
|
|
{{/if}}
{{#if
workflow
.
userTag3
}}
|用户标记3
(userTag3)|
{{
workflow
.
userTag3
}}
|
|
{{/if}}
{{#if
workflow
.
userTag4
}}
|用户标记4
(userTag4)|
{{
workflow
.
userTag4
}}
|
|
{{/if}}
{{#if
workflow
.
userCat
}}
|用户模型分类
(userCat)|
{{
workflow
.
userCat
}}
|
|
{{/if}}
## 其它
| 项 |值 |说明 |
|-------------------|:---------------------|:------------------------|
{{#if
workflow
.
autoModel
}}
|自动产生模型
(autoModel)|
{{
workflow
.
autoModel
}}
|
|
{{/if}}
{{#if
workflow
.
dynaInstMode
}}
|动态实例模式
(dynaInstMode)|
{{
workflow
.
dynaInstMode
}}
|
|
{{/if}}
{{#if
workflow
.
dynaInstTag
}}
|动态实例标记
(dynaInstTag)|
{{
workflow
.
dynaInstTag
}}
|
|
{{/if}}
{{#if
workflow
.
dynaInstTag2
}}
|动态实例标记2
(dynaInstTag2)|
{{
workflow
.
dynaInstTag2
}}
|
|
{{/if}}
{{#if
workflow
.
pSDynaModel
}}
|动态模型对象
(getPSDynaModel)|
{{
workflow
.
pSDynaModel
.
name
}}
|
|
{{/if}}
{{#if
workflow
.
pSWorkflow
}}
|工作流
(getPSWorkflow)|
{{
workflow
.
pSWorkflow
.
name
}}
|
|
{{/if}}
{{#if
workflow
.
startPSWFProcess
}}
|开始处理
(getStartPSWFProcess)|
{{
workflow
.
startPSWFProcess
.
name
}}
|
|
{{/if}}
{{#if
workflow
.
wFCodeName
}}
|工作流代码标识
(wFCodeName)|
{{
workflow
.
wFCodeName
}}
|
|
{{/if}}
{{#if
workflow
.
wFMode
}}
|流程模式
(wFMode)|
{{
workflow
.
wFMode
}}
|
|
{{/if}}
{{#if
workflow
.
wFStepPSCodeList
}}
|流程步骤代码表
(getWFStepPSCodeList)|
{{
workflow
.
wFStepPSCodeList
.
name
}}
|
|
{{/if}}
{{#if
workflow
.
mobStartView
}}
|有移动端流程启动视图
(hasMobStartView)|
{{
workflow
.
mobStartView
}}
|
|
{{/if}}
{{#if
workflow
.
startView
}}
|有流程启动视图
(hasStartView)|
{{
workflow
.
startView
}}
|
|
{{/if}}
{{#if
workflow
.
valid
}}
|是否启用
(valid)|
{{
workflow
.
valid
}}
|
|
{{/if}}
## 模型
```yaml
{srfjson2yaml(workflow.getModel().toString())}
```
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/@macro/front-end/widgets/dashboard-detail/include-dashboard.hbs
0 → 100644
浏览文件 @
2f391f52
{{#
*
inline
"PORTLET"
}}{{>
@macro
/
front-end
/
widgets
/
dashboard-detail
/
portlet
.
hbs
}}{{/
inline
}}
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/@macro/front-end/widgets/dashboard-detail/portlet.hbs
0 → 100644
浏览文件 @
2f391f52
{{#
eq
ctrl
.
psLayout
.
layout
"FLEX"
}}
<div
class=
"app-dashboard-layout-flex"
style=
"
{{#if
ctrl
.
psLayout
.
dir
}}
flex-direction:
{{
ctrl
.
psLayout
.
dir
}}
;
{{/if}}{{#if
ctrl
.
psLayout
.
align
}}
justify-content:
{{
ctrl
.
psLayout
.
align
}}
;
{{/if}}{{#if
ctrl
.
psLayout
.
vAlign
}}
align-items:
{{
ctrl
.
psLayout
.
vAlign
}}
;
{{/if}}
"
>
</div>
{{else}}
<a-row
class=
"app-dashboard-layout-table"
>
{{#
each
ctrl
.
PSControls
as
|
portlet
|
}}
<a-col
{{>
@macro
/
front-end
/
widgets
/
common
/
layout-pos
.
hbs
item
=
portlet
.
psLayoutPos
}}
>
{{#
eq
portlet
.
portletType
'CONTAINER'
}}
{{#if
portlet
.
PSControls
}}
<div
class=
"portlet-card"
:bordered=
"false"
dis-hover
:padding=
"0"
>
{{else}}
<div
class=
"portlet-card custom-card"
:bordered=
"false"
dis-hover
:padding=
"10"
>
{{/if}}
{{#if
(
and
portlet
.
showTitleBar
portlet
.
title
)
}}
<div
class=
"portlet-card-title"
>
\{{portlet.title}}
</div>
{{/if}}
</div>
{{/if}}
</div>
{{/
eq
}}
</a-col>
{{/
each
}}
</a-row>
{{/
eq
}}
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/components.d.ts
浏览文件 @
2f391f52
...
...
@@ -4,7 +4,54 @@
declare
module
'vue'
{
export
interface
GlobalComponents
{
404
:
typeof
import
(
'./src/components/common/404.vue'
)[
'default'
]
AppAutoComplete
:
typeof
import
(
'./src/components/editors/app-auto-complete.vue'
)[
'default'
]
AppCheckbox
:
typeof
import
(
'./src/components/editors/app-checkbox.vue'
)[
'default'
]
AppCheckboxList
:
typeof
import
(
'./src/components/editors/app-checkbox-list.vue'
)[
'default'
]
AppCode
:
typeof
import
(
'./src/components/editors/app-code.vue'
)[
'default'
]
AppDataPicker
:
typeof
import
(
'./src/components/editors/app-data-picker.vue'
)[
'default'
]
AppDataPickerView
:
typeof
import
(
'./src/components/editors/app-data-picker-view.vue'
)[
'default'
]
AppDatePicker
:
typeof
import
(
'./src/components/editors/app-date-picker.vue'
)[
'default'
]
AppDefaultIndexViewLayout
:
typeof
import
(
'./src/components/layout/app-default-index-view-layout.vue'
)[
'default'
]
AppDrawer
:
typeof
import
(
'./src/components/render/app-drawer.vue'
)[
'default'
]
AppDropdownList
:
typeof
import
(
'./src/components/editors/app-dropdown-list.vue'
)[
'default'
]
AppEditViewLayout
:
typeof
import
(
'./src/components/layout/app-edit-view-layout.vue'
)[
'default'
]
AppFilterTree
:
typeof
import
(
'./src/components/render/app-filter-tree.vue'
)[
'default'
]
AppFormDruipart
:
typeof
import
(
'./src/components/render/app-form-druipart.vue'
)[
'default'
]
AppFormGroup
:
typeof
import
(
'./src/components/render/app-form-group.vue'
)[
'default'
]
AppFormItem
:
typeof
import
(
'./src/components/render/app-form-item.vue'
)[
'default'
]
AppGridViewLayout
:
typeof
import
(
'./src/components/layout/app-grid-view-layout.vue'
)[
'default'
]
AppIconText
:
typeof
import
(
'./src/components/render/app-icon-text.vue'
)[
'default'
]
AppIndexViewBaseLayout
:
typeof
import
(
'./src/components/layout/app-index-view-base-layout.vue'
)[
'default'
]
AppInput
:
typeof
import
(
'./src/components/editors/app-input.vue'
)[
'default'
]
AppInputIp
:
typeof
import
(
'./src/components/editors/app-input-ip.vue'
)[
'default'
]
AppListBox
:
typeof
import
(
'./src/components/editors/app-list-box.vue'
)[
'default'
]
AppLoading
:
typeof
import
(
'./src/components/render/app-loading.vue'
)[
'default'
]
AppMenuCenter
:
typeof
import
(
'./src/components/render/app-menu-center.vue'
)[
'default'
]
AppMenuItem
:
typeof
import
(
'./src/components/render/app-menu-item.vue'
)[
'default'
]
AppModal
:
typeof
import
(
'./src/components/render/app-modal.vue'
)[
'default'
]
AppMpickupViewLayout
:
typeof
import
(
'./src/components/layout/app-mpickup-view-layout.vue'
)[
'default'
]
AppPickupGridViewLayout
:
typeof
import
(
'./src/components/layout/app-pickup-grid-view-layout.vue'
)[
'default'
]
AppPickupViewLayout
:
typeof
import
(
'./src/components/layout/app-pickup-view-layout.vue'
)[
'default'
]
AppPopover
:
typeof
import
(
'./src/components/render/app-popover.vue'
)[
'default'
]
AppPortalViewLayout
:
typeof
import
(
'./src/components/layout/app-portal-view-layout.vue'
)[
'default'
]
AppQuickGroup
:
typeof
import
(
'./src/components/render/app-quick-group.vue'
)[
'default'
]
AppRadioGroup
:
typeof
import
(
'./src/components/editors/app-radio-group.vue'
)[
'default'
]
AppRating
:
typeof
import
(
'./src/components/editors/app-rating.vue'
)[
'default'
]
AppRaw
:
typeof
import
(
'./src/components/editors/app-raw.vue'
)[
'default'
]
AppRichText
:
typeof
import
(
'./src/components/editors/app-rich-text.vue'
)[
'default'
]
AppSlider
:
typeof
import
(
'./src/components/editors/app-slider.vue'
)[
'default'
]
AppSpan
:
typeof
import
(
'./src/components/editors/app-span.vue'
)[
'default'
]
AppSplit
:
typeof
import
(
'./src/components/common/app-split.vue'
)[
'default'
]
AppStepper
:
typeof
import
(
'./src/components/editors/app-stepper.vue'
)[
'default'
]
AppSwitch
:
typeof
import
(
'./src/components/editors/app-switch.vue'
)[
'default'
]
AppToolbar
:
typeof
import
(
'./src/components/render/app-toolbar.vue'
)[
'default'
]
AppTreeExpViewLayout
:
typeof
import
(
'./src/components/layout/app-tree-exp-view-layout.vue'
)[
'default'
]
AppTreeViewLayout
:
typeof
import
(
'./src/components/layout/app-tree-view-layout.vue'
)[
'default'
]
AppUpload
:
typeof
import
(
'./src/components/editors/app-upload.vue'
)[
'default'
]
AppUser
:
typeof
import
(
'./src/components/render/app-user.vue'
)[
'default'
]
AppViewBaseLayout
:
typeof
import
(
'./src/components/layout/app-view-base-layout.vue'
)[
'default'
]
Login
:
typeof
import
(
'./src/components/common/login.vue'
)[
'default'
]
}
}
...
...
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/app/app.ts
浏览文件 @
2f391f52
import
{
SyncSeriesHook
}
from
"qx-util"
;
import
{
Environment
}
from
"@/environments/environment"
;
import
router
from
"@/router"
;
import
{
OpenViewService
}
from
"@/utils"
;
import
{
AppBase
,
IParam
,
ViewDetail
,
IApp
,
IOpenViewService
,
deepCopy
,
getSessionStorage
,
Http
,
AppUtil
}
from
"@core"
;
import
{
AppBase
,
IParam
,
ViewDetail
,
IApp
,
IOpenViewService
,
deepCopy
,
Http
,
IAppAuthService
,
IAppNotificationService
,
IAppFuncService
,
IAppActionService
}
from
"@core"
;
import
{
AppFuncConfig
,
AppViewConfig
,
AppEntityConfig
}
from
'./config'
;
import
{
DataServiceRegister
,
UIServiceRegister
}
from
"./register"
;
import
{
AppActionService
,
AppAuthService
,
AppFuncService
,
AppNotificationService
,
OpenViewService
}
from
"@/service"
;
export
class
App
extends
AppBase
implements
IApp
{
...
...
@@ -50,31 +50,14 @@ export class App extends AppBase implements IApp {
}
/**
* 初始化应用
权限
* 初始化应用
*
* @param {IParam} params 应用预置参数
* @return {*} {Promise<any>}
* @memberof App
*/
public
async
initAppAuth
(
params
:
IParam
):
Promise
<
any
>
{
let
result
=
true
;
if
(
Environment
&&
Environment
.
SaaSMode
)
{
if
(
getSessionStorage
(
'activeOrgData'
))
{
result
=
await
AppUtil
.
getAppData
(
App
.
hooks
,
params
);
}
else
{
result
=
await
AppUtil
.
getOrgsByDcsystem
(
App
.
hooks
);
if
(
result
)
{
result
=
await
AppUtil
.
getAppData
(
App
.
hooks
,
params
);
}
}
}
else
{
result
=
await
AppUtil
.
getAppData
(
App
.
hooks
,
params
);
}
if
(
!
result
)
{
// 登录
}
// TODO
return
true
;
public
async
initApp
(
params
:
IParam
):
Promise
<
any
>
{
return
await
this
.
getAppAuthService
().
initAppAuth
(
params
,
App
.
hooks
);
}
/**
...
...
@@ -87,6 +70,16 @@ export class App extends AppBase implements IApp {
return
AppFuncConfig
;
}
/**
* 获取应用权限服务
*
* @return {*} {IAppAuthService}
* @memberof App
*/
public
getAppAuthService
():
IAppAuthService
{
return
AppAuthService
.
getInstance
();
}
/**
* 获取打开视图服务
*
...
...
@@ -97,6 +90,36 @@ export class App extends AppBase implements IApp {
return
OpenViewService
.
getInstance
();
}
/**
* 获取通知服务
*
* @return {*} {IAppNotificationService}
* @memberof App
*/
public
getNotificationService
():
IAppNotificationService
{
return
AppNotificationService
.
getInstance
();
}
/**
* 获取应用功能服务
*
* @return {IAppFuncService}
* @memberof App
*/
public
getAppFuncService
():
IAppFuncService
{
return
AppFuncService
.
getInstance
();
}
/**
* 获取界面行为服务
*
* @return {*} {IAppActionService}
* @memberof App
*/
public
getAppActionService
():
IAppActionService
{
return
AppActionService
.
getInstance
();
}
/**
* 获取UI服务
*
...
...
@@ -158,14 +181,4 @@ export class App extends AppBase implements IApp {
}
}
/**
* @description 登录
*
* @return {*} {Promise<IParam>}
* @memberof App
*/
handleLogin
():
Promise
<
IParam
>
{
throw
new
Error
(
"Method not implemented."
);
}
}
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/components/common/login.vue
浏览文件 @
2f391f52
<
template
>
<div
class=
"login"
>
<img
src=
"@/assets/img/background.png"
class=
"login-background"
/>
<div
class=
"login-con"
v-if=
"!isEmbedThridPlatForm"
>
<div
class=
"login-con"
>
<card
:bordered=
"false"
class=
"login-card"
>
<div
slot=
"title"
class=
"login-header"
>
<p
class=
"login-caption"
style=
"text-align: center"
>
桌面端应用示例
</p>
</div>
<div
class=
"login-content"
>
<div
class=
"login-content"
>
<div
class=
"form-con"
>
<a-form
ref=
"loginForm"
:rules=
"rules"
:model=
"loginState"
>
<a-form-item
name=
"loginname"
>
...
...
@@ -14,7 +14,8 @@
size=
"large"
v-model:value=
"loginState.loginname"
placeholder=
"请输入用户名"
@
pressEnter=
"handleSubmit"
>
@
pressEnter=
"handleSubmit"
>
<template
#
prefix
>
<user-outlined
/>
</
template
>
...
...
@@ -26,19 +27,16 @@
v-model:value=
"loginState.password"
type=
"password"
placeholder=
"请输入密码"
@
pressEnter=
"handleSubmit"
>
@
pressEnter=
"handleSubmit"
>
<
template
#
prefix
>
<lock-outlined
/>
</
template
>
</a-input-password>
</a-form-item>
<a-form-item>
<a-button
@
click=
"handleSubmit"
type=
"primary"
class=
"login_btn"
>
登录
</a-button>
<a-button
@
click=
"goReset"
type=
"success"
class=
"login_reset"
>
重置
</a-button>
<a-button
@
click=
"handleSubmit"
type=
"primary"
class=
"login_btn"
>
登录
</a-button>
<a-button
@
click=
"goReset"
type=
"success"
class=
"login_reset"
>
重置
</a-button>
</a-form-item>
<a-form-item>
<div
style=
"text-align: center"
>
...
...
@@ -54,31 +52,30 @@
</div>
</a-form-item>
</a-form>
<p
class=
"login-tip"
>
\{{loginTip
}}
</p>
<p
class=
"login-tip"
>
{{ loginTip
}}
</p>
</div>
</div>
</card>
<div
class=
"log_footer"
>
<div
class=
"copyright"
>
<a
href=
"https://www.ibizlab.cn/"
target=
"_blank"
>
is based on ibizlab .
</a>
<a
href=
"https://www.ibizlab.cn/"
target=
"_blank"
>
is based on ibizlab .
</a>
</div>
</div>
</div>
<div
class=
"login-loadding-container"
v-if=
"isEmbedThridPlatForm"
>
<div
class=
"content-loadding"
>
<span>
第三方登录跳转中
</span>
<!-- loading待补充 -->
</div>
</div>
</div>
</template>
<
script
setup
lang=
"ts"
>
import
{
Ref
,
ref
}
from
'vue'
;
import
{
Ref
,
ref
,
unref
}
from
'vue'
;
import
{
useRoute
,
useRouter
}
from
'vue-router'
;
import
{
clearCookie
,
setCookie
}
from
'qx-util'
;
import
{
Environment
}
from
'@/environments/environment'
;
import
{
setCookie
}
from
'qx-util'
;
import
{
Http
}
from
'@core'
;
interface
LoginState
{
loginname
:
string
;
password
:
''
;
}
/**
* 表单对象
*
...
...
@@ -86,8 +83,8 @@ import { Http } from '@core';
* @memberof Login
*/
const
loginState
=
reactive
<
LoginState
>
({
loginname
:
''
,
password
:
''
loginname
:
''
,
password
:
''
,
});
/**
...
...
@@ -99,74 +96,46 @@ const loginState = reactive<LoginState>({
const
loginTip
:
Ref
<
string
>
=
ref
(
''
);
/**
*
运行平台
*
值规则
*
* @type {*}
* @memberof Login
*/
const
platform
:
Ref
<
any
>
=
ref
({});
const
rules
:
Ref
<
any
>
=
ref
({
loginname
:
[{
required
:
true
,
message
:
'用户名不能为空'
,
trigger
:
'change'
}],
password
:
[{
required
:
true
,
message
:
'密码不能为空'
,
trigger
:
'change'
}],
});
/**
*
是否嵌入第三方平台
*
登录表单
*
* @type {
boolean
}
* @type {
*
}
* @memberof Login
*/
const
isEmbedThridPlatForm
:
Ref
<
boolean
>
=
ref
(
false
);
const
loginForm
:
Ref
<
any
>
=
ref
(
null
);
/**
*
按钮可点击
*
路由对象
*
* @type {
boolean
}
* @type {
*
}
* @memberof Login
*/
const
canClick
:
Ref
<
boolean
>
=
ref
(
true
);
const
route
=
useRoute
(
);
/**
*
应用名称
*
路由器对象
*
* @type {
string
}
* @type {
*
}
* @memberof Login
*/
const
appTitle
:
string
=
Environment
.
AppTitle
;
interface
LoginState
{
loginname
:
string
,
password
:
''
}
const
router
=
useRouter
();
/**
*
值规则
*
消除loadding
*
* @type {*}
* @memberof Login
*/
const
rules
:
Ref
<
any
>
=
ref
({});
const
loginForm
:
Ref
<
any
>
=
ref
(
null
);
const
route
=
useRoute
();
const
router
=
useRouter
();
const
setRules
=
()
=>
{
rules
.
value
=
{
loginname
:
[{
required
:
true
,
message
:
'用户名不能为空'
,
trigger
:
'change'
}],
password
:
[{
required
:
true
,
message
:
'密码不能为空'
,
trigger
:
'change'
}],
};
};
const
afterCreated
=
()
=>
{
setRules
();
platform
.
value
=
window
.
navigator
.
userAgent
.
toUpperCase
();
if
(
platform
.
value
.
indexOf
(
'DINGTALK'
)
!==
-
1
)
{
// this.DingDingLogin();
isEmbedThridPlatForm
.
value
=
true
;
}
else
if
(
platform
.
value
.
indexOf
(
'WXWORK'
)
!==
-
1
)
{
// this.WXWorkLogin();
isEmbedThridPlatForm
.
value
=
true
;
}
};
onMounted
(()
=>
{
setTimeout
(()
=>
{
const
el
=
document
.
getElementById
(
'app-loading-x'
);
...
...
@@ -176,23 +145,32 @@ onMounted(() => {
},
300
);
});
/**
* 重置
*
* @type {*}
* @memberof Login
*/
const
goReset
=
()
=>
{
loginForm
.
value
=
{
loginname
:
''
,
password
:
''
};
};
/**
* 提交表单数据
*
* @type {*}
* @memberof Login
*/
const
handleSubmit
=
():
void
=>
{
// clearAppData();
const
_form
=
unref
(
loginForm
);
const
form
=
unref
(
loginForm
);
let
validatestate
:
boolean
=
true
;
_
form
.
validate
((
valid
:
boolean
)
=>
{
form
.
validate
((
valid
:
boolean
)
=>
{
validatestate
=
valid
?
true
:
false
;
});
if
(
!
validatestate
)
{
return
;
}
const
loginname
:
string
=
loginState
.
loginname
;
console
.
log
(
"登录用户名"
,
loginState
)
// TODO 使用AppAuthService
Http
.
getInstance
()
.
post
(
'/v7/login'
,
loginState
,
true
)
.
then
((
post
:
any
)
=>
{
...
...
@@ -207,7 +185,7 @@ const handleSubmit = (): void => {
// 设置cookie,保存账号密码7天
setCookie
(
'loginname'
,
loginname
,
7
,
true
);
// TODO 从路由中获取
const
url
:
any
=
route
.
query
?.
redirecrt
?
route
.
query
.
redirecrt
:
'/'
;
const
url
:
any
=
unref
(
route
).
query
?.
redirecrt
?
unref
(
route
)
.
query
.
redirecrt
:
'/'
;
router
.
push
({
path
:
url
});
}
})
...
...
@@ -223,169 +201,12 @@ const handleSubmit = (): void => {
});
};
const
clearAppData
=
()
=>
{
// 清除user、token
clearCookie
(
'ibzuaa-token'
,
true
);
clearCookie
(
'ibzuaa-expired'
,
true
);
clearCookie
(
'ibzuaa-user'
,
true
);
// 清除应用级数据
localStorage
.
removeItem
(
'localdata'
);
// this.$store.commit('addAppData', {});
// this.$store.dispatch('authresource/commitAuthData', {});
// 清除租户相关信息
// removeSessionStorage("activeOrgData");
// removeSessionStorage("srfdynaorgid");
// removeSessionStorage("dcsystem");
// removeSessionStorage("orgsData");
};
/**
* 第三方登录(网页扫码方式)
*
* @memberof Login
*/
const
handleThridLogin
=
(
type
:
string
)
=>
{
if
(
!
type
)
return
;
switch
(
type
)
{
case
'DINGDING'
:
dingtalkHandleClick
();
break
;
case
'WXWORK'
:
wxWorkHandleClick
();
break
;
default
:
// LogUtil.log(`暂不支持${type}登录`);
break
;
}
};
/**
* 钉钉授权登录
*
* @memberof Login
*/
const
dingtalkHandleClick
=
async
()
=>
{
// let result: any = await this.appThirdService.dingtalkLogin(Environment);
// if (result?.state && Object.is(result?.state, 'SUCCESS')) {
// const data = result.data;
// // 截取地址,拼接需要部分组成新地址
// const baseUrl = this.getNeedLocation();
// // 1.钉钉开放平台提供的appId
// const appId = data.appid;
// // 2.钉钉扫码后回调地址,需要UrlEncode转码
// const redirect_uri = baseUrl + 'assets/third/dingdingRedirect.html?id=' + data.appid;
// const redirect_uri_encode = encodeURIComponent(redirect_uri);
// // 3.钉钉扫码url
// const url =
// 'https://oapi.dingtalk.com/connect/qrconnect?response_type=code' +
// '&appid=' +
// appId +
// '&redirect_uri=' +
// redirect_uri_encode +
// '&scope=snsapi_login' +
// '&state=STATE';
// // 4.跳转钉钉扫码
// window.location.href = url;
// } else {
// this.$throw(result?.message,'dingtalkHandleClick');
// }
};
/**
* 企业微信授权登录
*
* @memberof Login
*/
const
wxWorkHandleClick
=
async
()
=>
{
// let result: any = await this.appThirdService.wxWorkLogin(Environment);
// if (result?.state && Object.is(result?.state, 'SUCCESS')) {
// const data = result.data;
// // 截取地址,拼接需要部分组成新地址
// const baseUrl = this.getNeedLocation();
// // 1.钉钉开放平台提供的appId
// const appId = data.corp_id;
// const agentId = data.agentid;
// // 2.钉钉扫码后回调地址,需要UrlEncode转码
// const redirect_uri = baseUrl + 'assets/third/wxWorkRedirect.html?id=' + data.appid;
// const redirect_uri_encode = encodeURIComponent(redirect_uri);
// // 3.钉钉扫码url
// const url =
// 'https://open.work.weixin.qq.com/wwopen/sso/qrConnect?state=STATE' +
// '&appid=' +
// appId +
// '&agentid=' +
// agentId +
// '&redirect_uri=' +
// redirect_uri_encode;
// // 4.跳转钉钉扫码
// window.location.href = url;
// } else {
// // this.$throw(result?.message,'wxWorkHandleClick');
// }
};
/**
* 钉钉免登
*
* @memberof Login
*/
const
DingDingLogin
=
async
()
=>
{
// let result: any = await this.appThirdService.embedDingTalkLogin(Environment);
// if (result?.state && Object.is(result?.state, 'SUCCESS')) {
// if (result.data.token && result.data.user) {
// setCookie('ibzuaa-token', result.data.token, 7,true);
// if (this.$route.query.redirect) {
// window.location.href = decodeURIComponent(this.$route.query.redirect as any);
// } else {
// this.$router.push({ path: '/' });
// }
// }
// } else {
// this.$throw(result?.message,'DingDingLogin');
// }
};
const
WXWorkLogin
=
async
()
=>
{
// let result: any = await this.appThirdService.embedwxWorkLogin(Environment);
// if (result?.state && Object.is(result?.state, 'SUCCESS')) {
// // 截取地址,拼接需要部分组成新地址
// const baseUrl = this.getNeedLocation();
// // 1.企业微信提供的corp_id
// const appId = result.data.corp_id;
// // 2.认证成功后回调地址,需要UrlEncode转码
// const redirect_uri = baseUrl + 'assets/third/wxWorkRedirect.html?id=' + result.data.appid;
// const redirect_uri_encode = encodeURIComponent(redirect_uri);
// // 3.微信认证url
// const url =
// 'https://open.weixin.qq.com/connect/oauth2/authorize?response_type=code&scope=snsapi_base&#wechat_redirect' +
// '&appid=' +
// appId +
// '&redirect_uri=' +
// redirect_uri_encode +
// '&scope=snsapi_base' +
// '&state=STATE';
// // 4.跳转到微信认证地址
// window.location.href = url;
// } else {
// this.$throw(result?.message,'WXWorkLogin');
// }
};
const
getNeedLocation
=
()
=>
{
// 截取地址,拼接需要部分组成新地址
const
scheme
=
window
.
location
.
protocol
;
const
host
=
window
.
location
.
host
;
let
baseUrl
:
any
=
scheme
+
'//'
+
host
;
const
port
=
window
.
location
.
port
;
if
(
port
)
{
if
(
port
==
'80'
||
port
==
'443'
)
{
baseUrl
+=
'/'
;
}
else
{
baseUrl
+=
':'
+
port
+
'/'
;
}
}
else
{
baseUrl
+=
'/'
;
}
return
baseUrl
;
console
.
log
(
`暂不支持
${
type
}
登录`
);
};
</
script
>
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/components/editors/app-code.vue
浏览文件 @
2f391f52
...
...
@@ -253,7 +253,7 @@ const onLanguageChange = (item: string) => {
:value=
"language"
v-for=
"(language,index) in languages"
:key=
"index"
>
\
{{
language
}}
</a-select-option>
>
{{
language
}}
</a-select-option>
</a-select>
</div>
<div
class=
"right-toolbar"
>
...
...
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/components/editors/app-raw.vue
浏览文件 @
2f391f52
...
...
@@ -45,9 +45,9 @@ const emit = defineEmits<EditorEmit>();
<
template
>
<div
:class=
"['app-raw-item', 'app-raw', `app-raw-$
{name}`]">
<div
class=
"raw-caption"
v-if=
"caption"
>
\
{{
caption
}}
</div>
<div
class=
"raw-caption"
v-if=
"caption"
>
{{
caption
}}
</div>
<div
v-if=
"Object.is(contentType, 'RAW')"
>
\
{{
value
}}
{{
value
}}
</div>
<div
v-else-if=
"Object.is(contentType, 'HTML')"
v-html=
"value"
/>
<div
v-else-if=
"Object.is(contentType, 'IMAGE')"
>
...
...
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/components/editors/app-span.vue
浏览文件 @
2f391f52
...
...
@@ -134,7 +134,7 @@ onBeforeMount(() => {
<
template
>
<div
:class=
"['app-editor-container', 'app-span', `app-span-$
{name}`]">
<span
v-format=
"textFormat"
>
\
{{
text
}}
</span>
<span
v-format=
"textFormat"
>
{{
text
}}
</span>
</div>
</
template
>
...
...
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/components/editors/app-upload.vue
浏览文件 @
2f391f52
...
...
@@ -134,11 +134,11 @@ const onChange = ($event: any) => {
@change="onChange">
<a-button
v-if=
"Object.is(listType,'text')"
>
<upload-outlined></upload-outlined>
\
{{
tooltip
}}
{{
tooltip
}}
</a-button>
<div
v-else
>
<plus-outlined
/>
<div
class=
"ant-upload-text"
>
\
{{
tooltip
}}
</div>
<div
class=
"ant-upload-text"
>
{{
tooltip
}}
</div>
</div>
</a-upload>
</div>
...
...
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/components/layout/app-portal-view-layout.vue
0 → 100644
浏览文件 @
2f391f52
<
script
setup
lang=
"ts"
>
</
script
>
<
template
>
<AppViewBaseLayout>
<template
v-slot:header-left
>
<slot
name=
"caption"
/>
</
template
>
<
template
v-slot:header-right
>
<slot
name=
"toolbar"
/>
</
template
>
<
template
v-slot:header-bottom
>
<slot
name=
"topMessage"
/>
</
template
>
<
template
v-slot:body-top
>
<slot
name=
"bodyMessage"
/>
</
template
>
<slot
/>
<
template
v-slot:footer-content
>
<slot
name=
"bottomMessage"
/>
</
template
>
</AppViewBaseLayout>
</template>
<
style
lang=
"scss"
>
</
style
>
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/components/render/app-drawer.vue
0 → 100644
浏览文件 @
2f391f52
<
script
setup
lang=
"ts"
>
import
{
IParam
,
ViewDetail
}
from
'@core'
;
import
{
Subject
}
from
'rxjs'
;
import
{
Ref
,
ref
}
from
'vue'
;
interface
AppDrawerProps
{
/**
* @description 视图
*/
view
:
ViewDetail
;
/**
* @description 视图上下文参数
*/
context
?:
any
;
/**
* @description 视图参数
*/
viewParams
?:
any
;
/**
* @description 数据传递对象
*/
subject
?:
Subject
<
any
>
;
/**
* @description 关闭回调
*/
close
:
Function
;
/**
* @description 是否全屏
*/
isFullscreen
:
boolean
;
/**
* @description 模态参数
*/
option
?:
IParam
;
}
const
props
=
withDefaults
(
defineProps
<
AppDrawerProps
>
(),
{
context
:
{},
viewParams
:
{},
});
/**
* 是否显示
*/
let
isVisible
:
Ref
<
boolean
>
=
ref
(
false
);
/**
* 临时结果
*/
let
tempResult
=
{
ret
:
''
};
/**
* 视图名称
*/
let
viewName
:
Ref
<
string
>
=
ref
(
''
);
/**
* 抽屉的方向
*/
let
placement
:
Ref
<
string
>
=
ref
(
'right'
);
/**
* 视图标题
*/
let
title
:
string
=
''
;
/**
* 视图宽度
*/
let
width
:
Ref
<
number
>
=
ref
(
0
);
/**
* 视图高度
*/
let
height
:
Ref
<
number
>
=
ref
(
0
);
/**
* 视图样式
*/
let
style
:
any
=
{};
/**
* 暴露subject
*/
const
getSubject
=
()
=>
{
return
props
.
subject
;
};
/**
* Vue生命周期beforeMount
*/
onBeforeMount
(()
=>
{
if
(
props
.
view
)
{
viewName
.
value
=
props
.
view
.
name
as
string
;
title
=
props
.
view
.
title
||
''
;
placement
.
value
=
props
.
view
.
placement
||
'right'
;
if
(
props
.
isFullscreen
)
{
Object
.
assign
(
style
,
{
height
:
'auto'
});
}
else
{
if
(
!
props
.
view
.
width
||
props
.
view
.
width
===
0
||
Object
.
is
(
props
.
view
.
width
,
'0px'
))
{
let
viewWidth
=
600
;
if
(
window
&&
window
.
innerWidth
>
100
)
{
if
(
window
.
innerWidth
>
100
)
{
viewWidth
=
window
.
innerWidth
-
100
;
}
else
{
viewWidth
=
window
.
innerWidth
;
}
}
width
.
value
=
viewWidth
;
}
else
{
width
.
value
=
props
.
view
.
width
;
}
if
(
props
.
view
.
height
&&
!
Object
.
is
(
props
.
view
.
height
,
'0px'
))
{
Object
.
assign
(
style
,
{
height
:
props
.
view
.
height
+
'px'
});
height
.
value
=
props
.
view
.
height
;
}
else
{
height
.
value
=
800
;
}
}
}
});
/**
* Vue生命周期mounted
*/
onMounted
(()
=>
{
isVisible
.
value
=
true
;
});
/**
* 视图关闭
*/
const
close
=
(
result
:
any
)
=>
{
if
(
result
&&
Array
.
isArray
(
result
)
&&
result
.
length
>
0
)
{
Object
.
assign
(
tempResult
,
{
ret
:
'OK'
},
{
datas
:
JSON
.
parse
(
JSON
.
stringify
(
result
))
});
}
isVisible
.
value
=
false
;
};
/**
* 视图数据变化
*/
const
viewDataChange
=
(
result
:
any
)
=>
{
tempResult
=
{
ret
:
''
};
if
(
result
&&
Array
.
isArray
(
result
)
&&
result
.
length
>
0
)
{
Object
.
assign
(
tempResult
,
{
ret
:
'OK'
},
{
datas
:
JSON
.
parse
(
JSON
.
stringify
(
result
))
});
}
};
/**
* 视图数据激活
*/
const
viewDataActivated
=
(
result
:
any
)
=>
{
if
(
result
&&
Array
.
isArray
(
result
)
&&
result
.
length
>
0
)
{
close
(
result
);
}
};
/**
* 模态显示隐藏切换回调
*/
const
onVisibleChange
=
(
$event
:
any
)
=>
{
handleShowState
(
$event
);
props
.
close
(
tempResult
);
};
/**
* 处理数据,向外抛值
*/
const
handleShowState
=
(
$event
:
any
)
=>
{
if
(
props
.
subject
&&
tempResult
)
{
props
.
subject
.
next
(
tempResult
);
}
};
</
script
>
<
template
>
<a-drawer
ref=
"curDrawer"
class=
"app-drawer"
v-model:visible=
"isVisible"
:placement=
"placement"
:title=
"title"
:footer=
"null"
:maskClosable=
"true"
:destroyOnClose=
"true"
:width=
"width"
:height=
"height"
:bodyStyle=
"style"
@
close=
"onVisibleChange($event)"
>
<component
:is=
"viewName"
class=
"app-drawer-view-component"
:width=
"width"
:height=
"height"
:context=
"context"
:viewParams=
"viewParams"
:viewDefaultUsage=
"false"
:noViewCaption=
"true"
@
viewDataChange=
"viewDataChange($event)"
@
viewDataActivated=
"viewDataActivated($event)"
@
close=
"close($event)"
:ref=
"viewName"
></component>
</a-drawer>
</
template
>
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/components/render/app-form-group.vue
浏览文件 @
2f391f52
...
...
@@ -48,7 +48,7 @@ const handleMenuGroupAction = ($event: IParam) => {
<template
v-if=
"Object.is(uIActionGroup.extractMode, 'ITEMS')"
>
<a-dropdown>
<a
class=
"group-action"
@
click
.
prevent
>
\
{{
uIActionGroup
.
caption
}}
{{
uIActionGroup
.
caption
}}
</a>
<template
#
overlay
>
<a-menu
@
click=
"handleMenuGroupAction"
>
...
...
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/components/render/app-form-item.vue
浏览文件 @
2f391f52
...
...
@@ -45,7 +45,7 @@ const initRules = () => {
:validateStatus=
"error ? 'error' : 'validating'"
>
<template
#
label
>
<label
:style=
"
{ width: labelWidth + 'px' }" :class="titleStyle">
\
{{
label
}}
</label>
<label
:style=
"
{ width: labelWidth + 'px' }" :class="titleStyle">
{{
label
}}
</label>
</
template
>
<slot></slot>
</a-form-item>
...
...
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/components/render/app-icon-text.vue
浏览文件 @
2f391f52
...
...
@@ -34,7 +34,7 @@ const extraClass = {
<i
v-if=
"iconClass"
:class=
"'app-icon-text__icon ' + iconClass"
/>
<img
v-else-if=
"imgPath"
class=
"app-icon-text__icon-img"
:src=
"imgPath"
/>
</
template
>
<span
class=
"app-icon-text__text"
v-if=
"text"
>
\
{{text}}
</span>
<span
class=
"app-icon-text__text"
v-if=
"text"
>
{{text}}
</span>
<
template
v-if=
"position == 'right'"
>
<i
v-if=
"iconClass"
:class=
"'app-icon-text__icon ' + iconClass"
/>
<img
v-else-if=
"imgPath"
class=
"app-icon-text__icon-img"
:src=
"imgPath"
/>
...
...
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/components/render/app-menu-center.vue
浏览文件 @
2f391f52
...
...
@@ -45,7 +45,7 @@ const getLayout = (item: IParam ,name: string) => {
<a-space
:size=
"24"
class=
"app-menu__card--flex"
>
<template
v-for=
"item in menu.items"
>
<a-button
v-if=
"!item.hidden"
size=
"large"
:class=
"['app-menu-item', item.itemSysCss]"
@
click=
"onClick(item)"
>
\
{{
item
.
caption
}}
{{
item
.
caption
}}
</a-button>
</
template
>
</a-space>
...
...
@@ -64,7 +64,7 @@ const getLayout = (item: IParam ,name: string) => {
@
click=
"onClick(item)"
>
<a-button
size=
"large"
>
\
{{
item
.
caption
}}
{{
item
.
caption
}}
</a-button>
</a-col>
</a-row>
...
...
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/components/render/app-menu-item.vue
浏览文件 @
2f391f52
...
...
@@ -16,7 +16,7 @@ const props = withDefaults(defineProps<Props>(), {
<template
#
icon
>
<AppIconText
:iconClass=
"item.iconClass"
:imgPath=
"item.imgPath"
:text=
"collapsed ? item.caption[0] : undefined"
/>
</
template
>
<a-tooltip
:title=
"item.tooltip"
>
\
{{item.caption}}
</a-tooltip>
<a-tooltip
:title=
"item.tooltip"
>
{{item.caption}}
</a-tooltip>
</a-menu-item>
</template>
<
template
v-else
>
...
...
@@ -24,7 +24,7 @@ const props = withDefaults(defineProps<Props>(), {
<template
#
icon
>
<AppIconText
:iconClass=
"item.iconClass"
:imgPath=
"item.imgPath"
:text=
"collapsed ? item.caption[0] : undefined"
/>
</
template
>
<
template
#
title
><a-tooltip
:title=
"item.tooltip"
>
\
{{
item
.
caption
}}
</a-tooltip></
template
>
<
template
#
title
><a-tooltip
:title=
"item.tooltip"
>
{{
item
.
caption
}}
</a-tooltip></
template
>
<AppMenuItem
:items=
"item.items"
/>
</a-sub-menu>
</template>
...
...
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/components/render/app-modal.vue
0 → 100644
浏览文件 @
2f391f52
<
script
setup
lang=
"ts"
>
import
{
IActionParam
,
IParam
,
ViewDetail
}
from
'@core'
;
import
{
Subject
}
from
'rxjs'
;
import
{
Ref
,
ref
}
from
'vue'
;
interface
AppModalProps
{
/**
* @description 视图
*/
view
:
ViewDetail
;
/**
* @description 视图上下文参数
*/
context
?:
any
;
/**
* @description 视图参数
*/
viewParams
?:
any
;
/**
* @description 数据传递对象
*/
subject
?:
Subject
<
any
>
;
/**
* @description 关闭回调
*/
close
:
Function
;
/**
* @description 是否全屏
*/
isFullscreen
:
boolean
;
/**
* @description 模态参数
*/
option
?:
IParam
;
}
const
props
=
withDefaults
(
defineProps
<
AppModalProps
>
(),
{
context
:
{},
viewParams
:
{},
});
/**
* 是否显示
*/
let
isVisible
:
Ref
<
boolean
>
=
ref
(
false
);
/**
* 临时结果
*/
let
tempResult
=
{
ret
:
''
};
/**
* 视图名称
*/
let
viewName
:
Ref
<
string
>
=
ref
(
''
);
/**
* 视图标题
*/
let
title
:
string
=
''
;
/**
* 视图宽度
*/
let
width
:
Ref
<
number
>
=
ref
(
0
);
/**
* 视图高度
*/
let
height
:
Ref
<
number
>
=
ref
(
0
);
/**
* 视图样式
*/
let
style
:
any
=
{};
/**
* 暴露subject
*/
const
getSubject
=
()
=>
{
return
props
.
subject
;
};
/**
* Vue生命周期beforeMount
*/
onBeforeMount
(()
=>
{
if
(
props
.
view
)
{
viewName
.
value
=
props
.
view
.
name
as
string
;
title
=
props
.
view
.
title
||
''
;
if
(
props
.
isFullscreen
)
{
Object
.
assign
(
style
,
{
height
:
'auto'
});
}
else
{
if
(
!
props
.
view
.
width
||
props
.
view
.
width
===
0
||
Object
.
is
(
props
.
view
.
width
,
'0px'
))
{
let
viewWidth
=
600
;
if
(
window
&&
window
.
innerWidth
>
100
)
{
if
(
window
.
innerWidth
>
100
)
{
viewWidth
=
window
.
innerWidth
-
100
;
}
else
{
viewWidth
=
window
.
innerWidth
;
}
}
width
.
value
=
viewWidth
;
}
else
{
width
.
value
=
props
.
view
.
width
;
}
if
(
props
.
view
.
height
&&
!
Object
.
is
(
props
.
view
.
height
,
'0px'
))
{
Object
.
assign
(
style
,
{
height
:
props
.
view
.
height
+
'px'
});
height
.
value
=
props
.
view
.
height
;
}
else
{
height
.
value
=
800
;
}
}
}
});
/**
* Vue生命周期mounted
*/
onMounted
(()
=>
{
isVisible
.
value
=
true
;
});
/**
* 视图关闭
*/
const
close
=
(
result
:
any
)
=>
{
if
(
result
&&
Array
.
isArray
(
result
)
&&
result
.
length
>
0
)
{
Object
.
assign
(
tempResult
,
{
ret
:
'OK'
},
{
resultData
:
JSON
.
parse
(
JSON
.
stringify
(
result
))
});
}
props
.
subject
?.
next
(
tempResult
);
isVisible
.
value
=
false
;
};
/**
* 视图数据变化
*/
const
viewDataChange
=
(
result
:
any
)
=>
{
tempResult
=
{
ret
:
''
};
if
(
result
&&
Array
.
isArray
(
result
)
&&
result
.
length
>
0
)
{
Object
.
assign
(
tempResult
,
{
ret
:
'OK'
},
{
resultData
:
JSON
.
parse
(
JSON
.
stringify
(
result
))
});
}
};
/**
* 视图数据激活
*/
const
viewDataActivated
=
(
result
:
any
)
=>
{
if
(
result
&&
Array
.
isArray
(
result
)
&&
result
.
length
>
0
)
{
close
(
result
);
}
};
const
handelViewEvent
=
(
actionParam
:
IActionParam
)
=>
{
const
{
tag
,
action
,
data
}
=
actionParam
;
switch
(
action
)
{
case
'viewDataChange'
:
viewDataChange
(
data
);
break
;
case
'close'
:
close
(
data
);
break
;
}
};
/**
* 模态显示隐藏切换回调
*/
const
onVisibleChange
=
(
$event
:
any
)
=>
{
handleShowState
(
$event
);
props
.
close
(
tempResult
);
};
/**
* 处理数据,向外抛值
*/
const
handleShowState
=
(
$event
:
any
)
=>
{
if
(
props
.
subject
&&
tempResult
)
{
props
.
subject
.
next
(
tempResult
);
}
};
</
script
>
<
template
>
<a-modal
ref=
"curModal"
class=
"app-modal"
v-model:visible=
"isVisible"
:title=
"title"
:footer=
"null"
:maskClosable=
"true"
:destroyOnClose=
"true"
:width=
"width"
:height=
"height"
:bodyStyle=
"style"
@
cancel=
"onVisibleChange($event)"
>
<component
:is=
"viewName"
class=
"app-modal-view-component"
:context=
"context"
:viewParams=
"viewParams"
:viewDefaultUsage=
"false"
:noViewCaption=
"true"
@
viewEvent=
"handelViewEvent($event)"
@
viewDataActivated=
"viewDataActivated($event)"
@
close=
"close($event)"
:ref=
"viewName"
></component>
</a-modal>
</
template
>
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/components/render/app-popover.vue
0 → 100644
浏览文件 @
2f391f52
<
script
setup
lang=
"ts"
>
import
{
IActionParam
,
IParam
,
ViewDetail
}
from
'@core'
;
import
{
Subject
}
from
'rxjs'
;
import
{
Ref
,
ref
,
h
}
from
'vue'
;
interface
AppPopoverProps
{
/**
* @description 视图
*/
view
:
ViewDetail
;
/**
* @description 视图上下文参数
*/
context
?:
any
;
/**
* @description 视图参数
*/
viewParams
?:
any
;
/**
* @description 数据传递对象
*/
subject
?:
Subject
<
any
>
;
/**
* @description 是否全屏
*/
isFullscreen
:
boolean
;
/**
* @description 模态参数
*/
option
?:
IParam
;
/**
* @description 鼠标移出回调
*/
mouseout
:
Function
;
}
const
props
=
withDefaults
(
defineProps
<
AppPopoverProps
>
(),
{
context
:
{},
viewParams
:
{},
});
/**
* 临时结果
*/
let
tempResult
=
{
ret
:
''
};
/**
* 视图名称
*/
let
viewName
:
Ref
<
string
>
=
ref
(
''
);
/**
* 抽屉的方向
*/
let
placement
:
Ref
<
string
>
=
ref
(
'bottom'
);
/**
* 视图标题
*/
let
title
:
string
=
''
;
/**
* 视图宽度
*/
let
width
:
Ref
<
number
>
=
ref
(
0
);
/**
* 视图高度
*/
let
height
:
Ref
<
number
>
=
ref
(
0
);
/**
* 视图样式
*/
let
style
:
any
=
{};
/**
* 暴露subject
*/
const
getSubject
=
()
=>
{
return
props
.
subject
;
};
/**
* Vue生命周期beforeMount
*/
onBeforeMount
(()
=>
{
if
(
props
.
view
)
{
viewName
.
value
=
props
.
view
.
name
as
string
;
title
=
props
.
view
.
title
||
''
;
placement
.
value
=
props
.
view
.
placement
||
'bottom'
;
if
(
props
.
isFullscreen
)
{
Object
.
assign
(
style
,
{
height
:
'auto'
});
}
else
{
if
(
!
props
.
view
.
width
||
props
.
view
.
width
===
0
||
Object
.
is
(
props
.
view
.
width
,
'0px'
))
{
width
.
value
=
300
;
Object
.
assign
(
style
,
{
width
:
width
.
value
+
'px'
});
}
else
{
width
.
value
=
props
.
view
.
width
;
Object
.
assign
(
style
,
{
width
:
width
.
value
+
'px'
});
}
if
(
props
.
view
.
height
&&
!
Object
.
is
(
props
.
view
.
height
,
'0px'
))
{
height
.
value
=
props
.
view
.
height
;
Object
.
assign
(
style
,
{
height
:
height
.
value
+
'px'
});
}
else
{
height
.
value
=
300
;
Object
.
assign
(
style
,
{
height
:
height
.
value
+
'px'
});
}
}
}
});
/**
* 视图关闭
*/
const
close
=
(
result
:
any
)
=>
{
if
(
result
&&
Array
.
isArray
(
result
)
&&
result
.
length
>
0
)
{
Object
.
assign
(
tempResult
,
{
ret
:
'OK'
},
{
datas
:
JSON
.
parse
(
JSON
.
stringify
(
result
))
});
}
props
.
subject
?.
next
(
tempResult
);
};
/**
* 视图数据变化
*/
const
viewDataChange
=
(
result
:
any
)
=>
{
tempResult
=
{
ret
:
''
};
if
(
result
&&
Array
.
isArray
(
result
)
&&
result
.
length
>
0
)
{
Object
.
assign
(
tempResult
,
{
ret
:
'OK'
},
{
datas
:
JSON
.
parse
(
JSON
.
stringify
(
result
))
});
}
};
/**
* 视图数据激活
*/
const
viewDataActivated
=
(
result
:
any
)
=>
{
if
(
result
&&
Array
.
isArray
(
result
)
&&
result
.
length
>
0
)
{
close
(
result
);
}
};
/**
* 显示隐藏切换回调
*/
const
onVisibleChange
=
(
$event
:
any
)
=>
{
handleShowState
(
$event
);
};
/**
* 处理数据,向外抛值
*/
const
handleShowState
=
(
$event
:
any
)
=>
{
if
(
props
.
subject
&&
tempResult
)
{
props
.
subject
.
next
(
tempResult
);
}
};
/**
* 处理视图事件
*/
const
handelViewEvent
=
(
actionParam
:
IActionParam
)
=>
{
const
{
tag
,
action
,
data
}
=
actionParam
;
switch
(
action
)
{
case
'viewDataChange'
:
viewDataChange
(
data
);
break
;
case
'close'
:
close
(
data
);
break
;
}
};
/**
* 点击事件
*/
const
click
=
(
e
:
any
)
=>
{
e
.
stopPropagation
()
}
/**
* 鼠标移出事件
*/
const
mouseout
=
(
e
:
any
)
=>
{
props
.
mouseout
();
}
</
script
>
<
template
>
<div
:style=
"style"
class=
"app-popover"
@
click=
"click"
@
mouseleave=
"mouseout"
>
<component
:is=
"viewName"
class=
"app-popover-component"
:width=
"width"
:height=
"height"
:context=
"context"
:viewParams=
"viewParams"
:viewDefaultUsage=
"false"
:noViewCaption=
"true"
@
viewEvent=
"handelViewEvent($event)"
@
viewDataActivated=
"viewDataActivated($event)"
@
close=
"close($event)"
></component>
</div>
</
template
>
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/components/render/app-user.vue
浏览文件 @
2f391f52
...
...
@@ -74,7 +74,7 @@ const dropdownList = [
<
template
>
<div
class=
"app-user"
>
<span
class=
"user-name"
>
\
{{
user
.
name
}}
</span>
<span
class=
"user-name"
>
{{
user
.
name
}}
</span>
<a-dropdown>
<a-avatar
size=
"large"
:src=
"user.avatar"
@
click
.
prevent
>
<template
#
icon
><AppIconText
iconClass=
"fa fa-user-o"
></AppIconText></
template
>
...
...
@@ -82,7 +82,7 @@ const dropdownList = [
<
template
#
overlay
>
<a-menu
@
click=
"dropdownClick"
>
<a-menu-item
:value=
"item.tag"
v-for=
"item in dropdownList"
:key=
"item.tag"
>
\
{{
item
.
label
}}
{{
item
.
label
}}
</a-menu-item>
</a-menu>
</
template
>
...
...
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/core/interface/app/i-app.ts
浏览文件 @
2f391f52
import
{
IParam
,
ViewDetail
}
from
"../common"
;
import
{
IApp
Func
Service
,
IOpenViewService
}
from
"../service"
;
import
{
IApp
ActionService
,
IAppAuthService
,
IAppFuncService
,
IAppNotification
Service
,
IOpenViewService
}
from
"../service"
;
/**
...
...
@@ -11,21 +11,13 @@ import { IAppFuncService, IOpenViewService } from "../service";
export
interface
IApp
{
/**
* 初始化应用
权限
* 初始化应用
*
* @param {IParam} params 应用预置参数
* @return {*} {Promise<any>}
* @memberof IApp
*/
initAppAuth
(
params
:
IParam
):
Promise
<
any
>
;
/**
* 获取应用所有功能
*
* @return {*} {IParam[]}
* @memberof IApp
*/
getAllFuncs
():
IParam
[];
initApp
(
params
:
IParam
):
Promise
<
any
>
;
/**
* 获取应用功能服务
...
...
@@ -43,6 +35,30 @@ export interface IApp {
*/
getOpenViewService
():
IOpenViewService
;
/**
* 获取应用权限服务
*
* @return {*} {IAppAuthService}
* @memberof IApp
*/
getAppAuthService
():
IAppAuthService
;
/**
* 获取通知服务
*
* @return {*} {IAppNotificationService}
* @memberof IApp
*/
getNotificationService
():
IAppNotificationService
;
/**
* 获取界面行为服务
*
* @return {*} {IAppActionService}
* @memberof IApp
*/
getAppActionService
():
IAppActionService
;
/**
* 获取UI服务
*
...
...
@@ -63,6 +79,14 @@ export interface IApp {
*/
getDataService
(
entityKey
:
string
,
context
?:
IParam
):
Promise
<
any
>
;
/**
* 获取应用所有功能
*
* @return {*} {IParam[]}
* @memberof IApp
*/
getAllFuncs
():
IParam
[];
/**
* 获取指定视图信息
*
...
...
@@ -82,7 +106,6 @@ export interface IApp {
*/
getEntityInfo
(
codeName
:
string
):
any
;
/**
* 获取应用数据
*
...
...
@@ -106,12 +129,4 @@ export interface IApp {
*/
gotoLoginPage
():
void
;
/**
* @description 登录
*
* @return {*} {Promise<IParam>}
* @memberof IApp
*/
handleLogin
():
Promise
<
IParam
>
;
}
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/core/interface/service/i-app-auth-service.ts
0 → 100644
浏览文件 @
2f391f52
import
{
IParam
}
from
"../common"
;
/**
* @description 应用权限服务
* @export
* @interface IAppAuthService
*/
export
interface
IAppAuthService
{
/**
* 初始化应用权限
*
* @param {IParam} params 应用预置参数
* @return {*} {Promise<any>}
* @memberof IAppAuthService
*/
initAppAuth
(
params
:
IParam
,
hooks
:
IParam
):
Promise
<
any
>
;
/**
* 获取应用数据
*
* @return {*} {IParam}
* @memberof IAppAuthService
*/
getAppData
():
IParam
;
/**
* 设置应用数据
*
* @param {IParam} opt
* @memberof IAppAuthService
*/
setAppData
(
opt
:
IParam
):
void
;
/**
* 登录
*
* @param {IParam} params 应用预置参数
* @return {*} {Promise<any>}
* @memberof IAppAuthService
*/
login
(
opts
:
IParam
):
Promise
<
IParam
>
;
}
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/core/interface/service/i-app-notification-service.ts
0 → 100644
浏览文件 @
2f391f52
/**
* @description 应用权限服务
* @export
* @interface IAppNotificationService
*/
export
interface
IAppNotificationService
{
/**
* 成功提示
*
* @param {*} opts 参数
* @memberof IAppNotificationService
*/
success
(
opts
:
any
):
void
;
/**
* 信息提示
*
* @param {*} opts 参数
* @memberof IAppNotificationService
*/
info
(
opts
:
any
):
void
;
/**
* 警告提示
*
* @param {*} opts 参数
* @memberof IAppNotificationService
*/
warning
(
opts
:
any
):
void
;
/**
* 错误提示
*
* @param {*} opts 参数
* @memberof IAppNotificationService
*/
error
(
opts
:
any
):
void
;
}
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/core/interface/service/index.ts
浏览文件 @
2f391f52
export
*
from
'./i-app-func-service'
;
export
*
from
'./i-app-notification-service'
;
export
*
from
'./i-app-action-service'
;
export
*
from
'./i-open-view-service'
;
export
*
from
'./i-data-service-register'
;
export
*
from
'./i-ui-service-register'
;
\ No newline at end of file
export
*
from
'./i-ui-service-register'
;
export
*
from
'./i-app-auth-service'
;
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/core/logic/app-logic/index.ts
已删除
100644 → 0
浏览文件 @
674bb3ee
export
*
from
'./app-func-service'
;
export
*
from
'./app-action-service'
;
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/core/logic/app-ui-action/app-action-base.ts
浏览文件 @
2f391f52
import
{
AppActionService
,
IContext
,
IParam
,
UIActionUtil
}
from
"@core"
;
import
{
IContext
,
IParam
,
UIActionUtil
}
from
"@core"
;
export
interface
ActionParams
{
/**
...
...
@@ -211,7 +211,7 @@ export class AppActionBase {
return
;
}
// 参数合并 todo
App
ActionService
.
getInstan
ce
().
execute
(
actionModel
,
params
);
App
.
getAppActionServi
ce
().
execute
(
actionModel
,
params
);
}
/**
...
...
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/core/logic/index.ts
浏览文件 @
2f391f52
export
*
from
'./app-logic'
;
export
*
from
'./app-ui-action'
;
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/core/modules/app/app-base.ts
浏览文件 @
2f391f52
import
{
AppFuncService
,
IApp
,
IAppFuncService
,
IOpenViewService
,
ViewDetail
}
from
"@core"
;
import
{
IParam
}
from
"@core/interface"
;
import
{
IApp
,
IAppFuncService
,
IOpenViewService
,
ViewDetail
}
from
"@core"
;
import
{
I
AppActionService
,
IAppAuthService
,
IAppNotificationService
,
I
Param
}
from
"@core/interface"
;
/**
* 应用基类
...
...
@@ -10,52 +10,53 @@ import { IParam } from "@core/interface";
export
abstract
class
AppBase
implements
IApp
{
/**
*
应用功能服务
*
初始化应用
*
* @private
* @type {AppFuncService}
* @param {IParam} opt
* @memberof AppBase
*/
private
appFuncService
:
AppFuncService
=
AppFuncService
.
getInstance
();
public
initApp
(
params
:
IParam
):
Promise
<
any
>
{
throw
new
Error
(
"Method not implemented."
);
}
/**
* 应用数据
*
设置
应用数据
*
* @private
* @type {IParam}
* @param {IParam} opt
* @memberof AppBase
*/
private
appData
:
IParam
=
{};
public
setAppData
(
opt
:
IParam
):
void
{
this
.
getAppAuthService
().
setAppData
(
opt
);
}
/**
*
初始化应用权限
*
获取应用数据
*
* @param {IParam} params 应用预置参数
* @return {*} {Promise<any>}
* @return {*} {IParam}
* @memberof AppBase
*/
public
async
initAppAuth
(
params
:
IParam
):
Promise
<
any
>
{
throw
new
Error
(
"Method not implemented."
);
public
getAppData
():
IParam
{
return
this
.
getAppAuthService
().
getAppData
(
);
}
/**
*
设置应用数据
*
获取应用权限服务
*
* @
param {IParam} opt
* @
return {IAppFuncService}
* @memberof AppBase
*/
public
setAppData
(
opt
:
IParam
):
void
{
th
is
.
appData
=
opt
;
public
getAppAuthService
():
IAppAuthService
{
th
row
new
Error
(
"Method not implemented."
)
;
}
/**
*
获取应用数据
*
获取通知服务
*
* @return {*} {I
Param
}
* @return {*} {I
AppNotificationService
}
* @memberof AppBase
*/
public
get
AppData
():
IParam
{
return
this
.
appData
;
public
get
NotificationService
():
IAppNotificationService
{
throw
new
Error
(
"Method not implemented."
)
;
}
/**
...
...
@@ -65,7 +66,7 @@ export abstract class AppBase implements IApp {
* @memberof AppBase
*/
public
getAppFuncService
():
IAppFuncService
{
return
this
.
appFuncService
;
throw
new
Error
(
"Method not implemented."
)
;
}
/**
...
...
@@ -78,6 +79,16 @@ export abstract class AppBase implements IApp {
throw
new
Error
(
"Method not implemented."
);
}
/**
* 获取界面行为服务
*
* @return {*} {IAppActionService}
* @memberof AppBase
*/
public
getAppActionService
():
IAppActionService
{
throw
new
Error
(
"Method not implemented."
);
}
/**
* 获取UI服务
*
...
...
@@ -132,21 +143,12 @@ export abstract class AppBase implements IApp {
}
/**
* @description 跳转登录页
* @description 跳转登录页
面
*
* @memberof AppBase
*/
gotoLoginPage
():
void
{
public
gotoLoginPage
():
void
{
throw
new
Error
(
"Method not implemented."
);
}
/**
* @description 登录
*
* @return {*} {Promise<IParam>}
* @memberof AppBase
*/
handleLogin
():
Promise
<
IParam
>
{
throw
new
Error
(
"Method not implemented."
);
}
}
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/core/modules/views/index.ts
浏览文件 @
2f391f52
...
...
@@ -9,4 +9,6 @@ export * from './pickup-view'
export
*
from
'./mpickup-view'
export
*
from
'./pickup-grid-view'
export
*
from
'./tree-exp-view'
export
*
from
'./tree-view'
\ No newline at end of file
export
*
from
'./tree-view'
export
*
from
'./portal-view'
export
*
from
'./tab-exp-view'
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/core/modules/views/main-view/main-view.ts
浏览文件 @
2f391f52
import
{
ViewBase
,
MainViewState
,
IActionParam
,
IParam
,
AppActionService
}
from
'@core'
;
import
{
ViewBase
,
MainViewState
,
IActionParam
,
IParam
}
from
'@core'
;
/**
* 实体视图
...
...
@@ -49,20 +49,7 @@ export class MainView extends ViewBase {
actionEnvironment
:
this
};
// 执行行为
AppActionService
.
getInstance
().
execute
(
uIAction
,
inputParam
);
}
/**
* 处理部件事件
*
* @param {IActionParam} actionParam
* @memberof MainView
*/
public
onCtrlEvent
(
actionParam
:
IActionParam
)
{
const
{
tag
,
action
,
data
}
=
actionParam
;
if
(
Object
.
is
(
action
,
'closeView'
))
{
this
.
closeView
();
}
App
.
getAppActionService
().
execute
(
uIAction
,
inputParam
);
}
/**
...
...
@@ -76,7 +63,6 @@ export class MainView extends ViewBase {
...
superParams
,
xDataControl
:
this
.
xDataControl
,
onToolbarEvent
:
this
.
onToolbarEvent
.
bind
(
this
),
onCtrlEvent
:
this
.
onCtrlEvent
.
bind
(
this
),
};
}
}
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/core/modules/views/portal-view/index.ts
0 → 100644
浏览文件 @
2f391f52
export
*
from
'./portal-view-prop'
export
*
from
'./portal-view-state'
export
*
from
'./portal-view'
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/core/modules/views/portal-view/portal-view-prop.ts
0 → 100644
浏览文件 @
2f391f52
import
{
ViewPropsBase
}
from
"@core"
;
/**
* @description 应用看板(门户)视图props
* @export
* @interface PortalViewProps
* @extends {ViewPropsBase}
*/
export
interface
PortalViewProps
extends
ViewPropsBase
{
}
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/core/modules/views/portal-view/portal-view-state.ts
0 → 100644
浏览文件 @
2f391f52
import
{
ViewStateBase
}
from
"@core"
;
/**
* @description 应用看板(门户)视图state
* @export
* @interface PortalViewState
* @extends {ViewStateBase}
*/
export
interface
PortalViewState
extends
ViewStateBase
{
}
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/core/modules/views/portal-view/portal-view.ts
0 → 100644
浏览文件 @
2f391f52
import
{
PortalViewState
,
IParam
,
ViewBase
}
from
'@core'
;
/**
* @description 应用看板(门户)视图
* @export
* @class PortalView
* @extends {PortalView}
*/
export
class
PortalView
extends
ViewBase
{
/**
* 视图状态
*
* @type {PortalViewState}
* @memberof PortalView
*/
public
declare
state
:
PortalViewState
;
/**
* 当前视图数据看板
*
* @type {IParam}
* @memberof PortalView
*/
public
declare
dashboard
:
IParam
;
/**
* @description 处理视图初始化
*
* @memberof PortalView
*/
public
useViewInit
()
{
// 初始化数据看板引用
this
.
dashboard
=
ref
(
null
);
const
{
viewSubject
}
=
this
.
state
;
onMounted
(()
=>
{
const
{
viewParams
}
=
this
.
state
;
viewSubject
.
next
({
tag
:
this
.
getDashboard
().
name
,
action
:
"load"
,
data
:
viewParams
});
})
}
/**
* 获取数据看板部件
*
* @return {*} {*}
* @memberof PortalView
*/
public
getDashboard
():
any
{
if
(
this
.
dashboard
.
value
)
{
return
this
.
dashboard
.
value
;
}
else
{
return
null
;
}
}
/**
* @description 安装视图所有功能模块的方法
*
* @memberof PortalView
*/
public
moduleInstall
()
{
const
superParams
=
super
.
moduleInstall
();
return
{
...
superParams
,
dashboard
:
this
.
dashboard
};
}
}
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/core/modules/views/tab-exp-view/index.ts
0 → 100644
浏览文件 @
2f391f52
export
*
from
'./tab-exp-view-prop'
;
export
*
from
'./tab-exp-view-state'
;
export
{
TabExpView
}
from
'./tab-exp-view'
;
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/core/modules/views/tab-exp-view/tab-exp-view-prop.ts
0 → 100644
浏览文件 @
2f391f52
import
{
ExpViewProps
}
from
"@core"
;
/**
* @description 树导航视图props
* @export
* @interface TabExpViewProps
* @extends {ExpViewProps}
*/
export
interface
TabExpViewProps
extends
ExpViewProps
{}
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/core/modules/views/tab-exp-view/tab-exp-view-state.ts
0 → 100644
浏览文件 @
2f391f52
import
{
ExpViewState
}
from
"@core"
;
/**
* @description 树导航视图状态
* @export
* @interface TabExpViewState
* @extends {ExpViewState}
*/
export
interface
TabExpViewState
extends
ExpViewState
{}
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/core/modules/views/tab-exp-view/tab-exp-view.ts
0 → 100644
浏览文件 @
2f391f52
import
{
ExpView
}
from
"@core"
;
import
{
TabExpViewProps
}
from
"./tab-exp-view-prop"
;
import
{
TabExpViewState
}
from
"./tab-exp-view-state"
;
/**
* @description 分页导航视图
* @export
* @class TabExpView
* @extends {ExpView}
*/
export
class
TabExpView
extends
ExpView
{
/**
* @description 视图状态
* @type {TabExpViewState}
* @memberof TabExpView
*/
public
declare
state
:
TabExpViewState
;
/**
* @description 安装视图所有功能模块的方法
* @return {*}
* @memberof TabExpView
*/
public
moduleInstall
()
{
const
superParams
=
super
.
moduleInstall
();
return
{
...
superParams
};
}
}
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/core/modules/views/view-base/view-base.ts
浏览文件 @
2f391f52
...
...
@@ -92,7 +92,7 @@ export class ViewBase {
* 关闭视图
*
*/
public
closeView
(){
public
closeView
()
{
window
.
history
.
go
(
-
1
);
}
...
...
@@ -109,8 +109,8 @@ export class ViewBase {
const
{
appViewNavContexts
,
appViewNavParams
}
=
this
.
state
;
if
(
Object
.
is
(
props
.
openType
,
'ROUTE'
))
{
// 应用上下文
const
app
Context
=
App
.
getAppData
();
Object
.
assign
(
context
.
value
,
app
Context
);
const
app
Data
=
App
.
getAppData
();
Object
.
assign
(
context
.
value
,
app
Data
.
context
?
appData
.
context
:
{}
);
// 视图应用上下文
const
pageContext
=
{};
const
routeParams
=
useRoute
().
params
;
...
...
@@ -204,6 +204,18 @@ export class ViewBase {
*/
public
useCounterService
()
{
}
/**
* 处理部件事件
*
* @param {IActionParam} actionParam
* @memberof ViewBase
*/
public
onCtrlEvent
(
actionParam
:
IActionParam
)
{
const
{
tag
,
action
,
data
}
=
actionParam
;
if
(
Object
.
is
(
action
,
'closeView'
))
{
this
.
closeView
();
}
}
/**
* @description 安装视图所有功能模块的方法
...
...
@@ -224,7 +236,8 @@ export class ViewBase {
// 处理视图初始化
this
.
useViewInit
();
return
{
state
:
this
.
state
state
:
this
.
state
,
onCtrlEvent
:
this
.
onCtrlEvent
.
bind
(
this
),
};
}
}
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/core/modules/widgets/control-base/control-base.ts
浏览文件 @
2f391f52
...
...
@@ -82,6 +82,14 @@ export class ControlBase {
this
.
emit
(
'ctrlEvent'
,
{
tag
:
this
.
props
.
name
,
action
:
'closeView'
,
data
:
undefined
});
}
/**
* 处理部件事件
*
* @param {IActionParam} actionParam
* @memberof ControlBase
*/
public
onCtrlEvent
(
actionParam
:
IActionParam
)
{}
/**
* @description 安装部件所有功能模块的方法
* @param {ControlPropsBase} props 传入的Props
...
...
@@ -94,7 +102,8 @@ export class ControlBase {
this
.
useControlContextParams
();
return
{
state
:
this
.
state
,
getData
:
this
.
getData
getData
:
this
.
getData
.
bind
(
this
),
onCtrlEvent
:
this
.
onCtrlEvent
.
bind
(
this
),
};
}
}
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/core/modules/widgets/dashboard-control/dashboard-control-prop.ts
0 → 100644
浏览文件 @
2f391f52
import
{
IParam
,
MainControlProps
}
from
"@core"
;
/**
* @description 数据看板部件的props
* @export
* @interface DashboardControlProps
* @extends {MainControlProps}
*/
export
interface
DashboardControlProps
extends
MainControlProps
{
}
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/core/modules/widgets/dashboard-control/dashboard-control-state.ts
0 → 100644
浏览文件 @
2f391f52
import
{
IParam
,
MainControlState
}
from
'@core'
;
/**
* @description 数据看板部件状态
* @export
* @interface DashboardControlState
* @extends {MainControlState}
*/
export
interface
DashboardControlState
extends
MainControlState
{
}
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/core/modules/widgets/dashboard-control/dashboard-control.ts
0 → 100644
浏览文件 @
2f391f52
import
{
IActionParam
,
MainControl
}
from
'@core'
;
import
{
DashboardControlProps
}
from
'./dashboard-control-prop'
;
import
{
DashboardControlState
}
from
'./dashboard-control-state'
;
/**
* @description 选择视图面板部件
* @export
* @class DashboardControl
* @extends {MainControl}
*/
export
class
DashboardControl
extends
MainControl
{
/**
* @description 部件状态
* @type {DashboardControlState}
* @memberof DashboardControl
*/
public
declare
state
:
DashboardControlState
;
/**
* @description
* @param {DashboardControlProps} props
* @memberof DashboardControl
*/
public
useLoad
(
props
:
DashboardControlProps
)
{
const
{
viewSubject
,
controlName
,
context
,
viewParams
}
=
this
.
state
;
// 订阅viewSubject,监听load行为
if
(
viewSubject
)
{
let
subscription
=
viewSubject
.
subscribe
(({
tag
,
action
,
data
}:
IActionParam
)
=>
{
if
(
Object
.
is
(
controlName
,
tag
)
&&
Object
.
is
(
"load"
,
action
))
{
viewSubject
.
next
({
tag
:
tag
,
action
:
"load"
,
data
:
data
});
}
})
// 部件卸载时退订viewSubject
onUnmounted
(()
=>
{
subscription
.
unsubscribe
();
})
}
}
/**
* @description 安装部件所有功能模块的方法
* @return {*}
* @memberof DashboardControl
*/
public
moduleInstall
()
{
const
superParams
=
super
.
moduleInstall
();
return
{
...
superParams
,
load
:
this
.
useLoad
.
bind
(
this
),
};
}
}
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/core/modules/widgets/dashboard-control/index.ts
0 → 100644
浏览文件 @
2f391f52
export
*
from
'./dashboard-control-prop'
export
*
from
'./dashboard-control-state'
export
*
from
'./dashboard-control'
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/core/modules/widgets/index.ts
浏览文件 @
2f391f52
...
...
@@ -11,3 +11,7 @@ export * from './tree-control'
export
*
from
'./search-form-control'
export
*
from
'./quick-search-form-control'
export
*
from
'./searchbar-control'
export
*
from
'./dashboard-control'
export
*
from
'./portlet-control'
export
*
from
'./tab-exp-panel-control'
export
*
from
'./tab-view-panel-control'
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/core/modules/widgets/md-control/md-control.ts
浏览文件 @
2f391f52
...
...
@@ -34,7 +34,7 @@ export class MDControl extends MainControl {
* @protected
* @param [opt={}]
*/
protected
async
load
(
opt
:
any
=
{})
{}
protected
async
load
(
opt
:
any
=
{})
{
}
/**
* @description 使用加载功能模块
...
...
@@ -80,9 +80,11 @@ export class MDControl extends MainControl {
}
this
.
handleStateChange
();
}
}
catch
(
error
)
{
// todo 错误异常处理
console
.
log
(
error
);
}
catch
(
error
:
any
)
{
App
.
getNotificationService
().
error
({
message
:
'加载数据失败'
,
description
:
error
?.
data
})
}
};
...
...
@@ -111,7 +113,7 @@ export class MDControl extends MainControl {
* @protected
* @param [opt={}]
*/
protected
async
save
(
opt
:
any
=
{})
{}
protected
async
save
(
opt
:
any
=
{})
{
}
/**
* @description 使用保存功能模块
...
...
@@ -128,7 +130,7 @@ export class MDControl extends MainControl {
const
{
updateAction
,
createAction
}
=
controlAction
;
const
saveAction
:
any
=
item
.
rowDataState
==
'update'
?
updateAction
:
item
.
rowDataState
==
'create'
?
createAction
:
''
;
const
saveFunName
=
item
.
rowDataState
==
'update'
?
'update'
:
'create'
;
const
saveFunName
=
item
.
rowDataState
==
'update'
?
'update'
:
'create'
;
if
(
!
saveAction
)
{
return
;
}
...
...
@@ -175,7 +177,7 @@ export class MDControl extends MainControl {
* @protected
* @param [opt={}]
*/
protected
async
remove
(
opt
:
any
=
{})
{}
protected
async
remove
(
opt
:
any
=
{})
{
}
/**
* @description 使用删除功能模块
...
...
@@ -255,7 +257,7 @@ export class MDControl extends MainControl {
* @protected
* @param [opt={}]
*/
protected
async
newRow
(
opt
:
any
=
{})
{}
protected
async
newRow
(
opt
:
any
=
{})
{
}
/**
* @description 使用新建功能模块
...
...
@@ -313,7 +315,7 @@ export class MDControl extends MainControl {
* @protected
* @param [opt={}]
*/
protected
async
refresh
(
opt
:
any
=
{})
{}
protected
async
refresh
(
opt
:
any
=
{})
{
}
/**
* @description 使用刷新功能模块
...
...
@@ -358,7 +360,7 @@ export class MDControl extends MainControl {
*
* @memberof MDControl
*/
public
handleStateChange
()
{}
public
handleStateChange
()
{
}
/**
* 处理数据分组
...
...
@@ -382,7 +384,7 @@ export class MDControl extends MainControl {
* @protected
* @memberof MDControl
*/
protected
autoGroupData
()
{}
protected
autoGroupData
()
{
}
/**
* 代码表分组
...
...
@@ -390,7 +392,7 @@ export class MDControl extends MainControl {
* @protected
* @memberof MDControl
*/
protected
codeListGroupData
()
{}
protected
codeListGroupData
()
{
}
/**
* 获取当前激活数据
...
...
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/core/modules/widgets/portlet-control/index.ts
0 → 100644
浏览文件 @
2f391f52
export
*
from
'./portlet-control-prop'
export
*
from
'./portlet-control-state'
export
*
from
'./portlet-control'
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/core/modules/widgets/portlet-control/portlet-control-prop.ts
0 → 100644
浏览文件 @
2f391f52
import
{
MainControlProps
}
from
"@core"
;
/**
* @description 门户部件参数
* @export
* @interface PortletControlProps
* @extends {MainControlProps}
*/
export
interface
PortletControlProps
extends
MainControlProps
{
}
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/core/modules/widgets/portlet-control/portlet-control-state.ts
0 → 100644
浏览文件 @
2f391f52
import
{
IParam
,
MainControlState
}
from
'@core'
;
/**
* @description 门户部件状态
* @export
* @interface PortletControlState
* @extends {MainControlState}
*/
export
interface
PortletControlState
extends
MainControlState
{
}
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/core/modules/widgets/portlet-control/portlet-control.ts
0 → 100644
浏览文件 @
2f391f52
import
{
IActionParam
,
MainControl
}
from
'@core'
;
import
{
PortletControlProps
}
from
'./portlet-control-prop'
;
import
{
PortletControlState
}
from
'./portlet-control-state'
;
/**
* @description 门户部件
* @export
* @class PortletControl
* @extends {MainControl}
*/
export
class
PortletControl
extends
MainControl
{
/**
* @description 部件状态
* @type {PortletControlState}
* @memberof PortletControl
*/
public
declare
state
:
PortletControlState
;
/**
* @description 加载
* @param {PortletControlProps} props
* @memberof PortletControl
*/
public
useLoad
(
props
:
PortletControlProps
)
{
const
{
viewSubject
,
controlName
,
context
,
viewParams
}
=
this
.
state
;
// 订阅viewSubject,监听load行为
if
(
viewSubject
)
{
let
subscription
=
viewSubject
.
subscribe
(({
tag
,
action
,
data
}:
IActionParam
)
=>
{
if
(
Object
.
is
(
controlName
,
tag
)
&&
Object
.
is
(
"load"
,
action
))
{
viewSubject
.
next
({
tag
:
tag
,
action
:
"load"
,
data
:
data
});
}
})
// 部件卸载时退订viewSubject
onUnmounted
(()
=>
{
subscription
.
unsubscribe
();
})
}
}
/**
* 部件事件
*
* @param {IActionParam} actionParam
* @memberof PortletControl
*/
public
onViewEvent
(
actionParam
:
IActionParam
)
{
const
{
tag
,
action
,
data
}
=
actionParam
;
const
{
controlName
}
=
this
.
state
;
}
/**
* @description 安装部件所有功能模块的方法
* @return {*}
* @memberof PortletControl
*/
public
moduleInstall
()
{
const
superParams
=
super
.
moduleInstall
();
return
{
...
superParams
,
load
:
this
.
useLoad
.
bind
(
this
),
onViewEvent
:
this
.
onViewEvent
.
bind
(
this
)
};
}
}
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/core/modules/widgets/searchbar-control/searchbar-control.ts
浏览文件 @
2f391f52
...
...
@@ -20,8 +20,8 @@ export class SearchBarControl extends MainControl {
* @param {SearchBarControlProps} props
* @memberof SearchBarControl
*/
public
setState
(
props
:
SearchBarControlState
)
{
super
.
setState
(
props
);
public
setState
()
{
super
.
setState
();
this
.
state
.
filterFields
=
Object
.
values
(
this
.
state
.
detailsModel
);
this
.
state
.
filterItems
=
[];
}
...
...
@@ -33,8 +33,8 @@ export class SearchBarControl extends MainControl {
* @return {*}
* @memberof SearchBarControl [emit] 事件
*/
public
moduleInstall
(
props
:
SearchBarControlProps
,
emit
?:
Function
)
{
const
superParams
=
super
.
moduleInstall
(
props
,
emit
);
public
moduleInstall
()
{
const
superParams
=
super
.
moduleInstall
();
return
{
...
superParams
,
state
:
this
.
state
,
...
...
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/core/modules/widgets/tab-exp-panel-control/index.ts
0 → 100644
浏览文件 @
2f391f52
export
*
from
'./tab-exp-panel-control-prop'
export
*
from
'./tab-exp-panel-control-state'
export
*
from
'./tab-exp-panel-control'
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/core/modules/widgets/tab-exp-panel-control/tab-exp-panel-control-prop.ts
0 → 100644
浏览文件 @
2f391f52
import
{
IParam
,
MainControlProps
}
from
"@core"
;
/**
* @description 搜索栏部件的props
* @export
* @interface TabExpPanelControlProps
* @extends {MainControlProps}
*/
export
interface
TabExpPanelControlProps
extends
MainControlProps
{
}
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/core/modules/widgets/tab-exp-panel-control/tab-exp-panel-control-state.ts
0 → 100644
浏览文件 @
2f391f52
import
{
IParam
,
MainControlState
}
from
'@core'
;
/**
* @description 搜索栏部件状态
* @export
* @interface TabExpPanelControlState
* @extends {MainControlState}
*/
export
interface
TabExpPanelControlState
extends
MainControlState
{
}
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/core/modules/widgets/tab-exp-panel-control/tab-exp-panel-control.ts
0 → 100644
浏览文件 @
2f391f52
import
{
UIUtil
,
deepCopy
,
IActionParam
,
IParam
,
MainControl
,
TabExpPanelControlState
,
TabExpPanelControlProps
}
from
'@core'
;
/**
* @description 分页导航部件
* @export
* @class TabExpPanelControl
* @extends {MainControl}
*/
export
class
TabExpPanelControl
extends
MainControl
{
/**
* @description 部件状态
* @type {TabExpPanelControlState}
* @memberof TabExpPanelControl
*/
public
declare
state
:
TabExpPanelControlState
;
/**
* @description 安装部件所有功能模块的方法
* @param {TabExpPanelControlProps} props
* @param {Function} [emit]
* @return {*}
* @memberof TabExpPanelControl [emit] 事件
*/
public
moduleInstall
()
{
const
superParams
=
super
.
moduleInstall
();
return
{
...
superParams
,
state
:
this
.
state
,
};
}
}
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/core/modules/widgets/tab-view-panel-control/index.ts
0 → 100644
浏览文件 @
2f391f52
export
*
from
'./tab-view-panel-control-prop'
export
*
from
'./tab-view-panel-control-state'
export
*
from
'./tab-view-panel-control'
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/core/modules/widgets/tab-view-panel-control/tab-view-panel-control-prop.ts
0 → 100644
浏览文件 @
2f391f52
import
{
MainControlProps
}
from
"@core"
;
/**
* @description 选择视图面板部件参数
* @export
* @interface TabViewPanelControlProps
* @extends {MainControlProps}
*/
export
interface
TabViewPanelControlProps
extends
MainControlProps
{
}
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/core/modules/widgets/tab-view-panel-control/tab-view-panel-control-state.ts
0 → 100644
浏览文件 @
2f391f52
import
{
IParam
,
MainControlState
}
from
'@core'
;
/**
* @description 选择视图面板通讯对象
* @export
* @interface TabViewPanelControlState
* @extends {MainControlState}
*/
export
interface
TabViewPanelControlState
extends
MainControlState
{
}
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/core/modules/widgets/tab-view-panel-control/tab-view-panel-control.ts
0 → 100644
浏览文件 @
2f391f52
import
{
IActionParam
,
MainControl
}
from
'@core'
;
import
{
TabViewPanelControlProps
}
from
'./tab-view-panel-control-prop'
;
import
{
TabViewPanelControlState
}
from
'./tab-view-panel-control-state'
;
/**
* @description 分页视图面板部件
* @export
* @class TabViewPanelControl
* @extends {MainControl}
*/
export
class
TabViewPanelControl
extends
MainControl
{
/**
* @description 部件状态
* @type {FormControlState}
* @memberof TabViewPanelControl
*/
public
declare
state
:
TabViewPanelControlState
;
/**
* @description 安装部件所有功能模块的方法
* @return {*}
* @memberof TabViewPanelControl
*/
public
moduleInstall
()
{
const
superParams
=
super
.
moduleInstall
();
return
{
...
superParams
,
};
}
}
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/core/
logic/app-logic/app-action-servic
e.ts
→
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/core/
service/app-service/app-action-service-bas
e.ts
浏览文件 @
2f391f52
import
{
hasFunction
}
from
"@core"
;
import
{
IParam
,
IContext
,
IAppActionService
}
from
"@core/interface"
;
import
{
AppSysAction
}
from
"../app-ui-action/app-sys-action"
;
import
{
AppSysAction
,
hasFunction
,
IAppActionService
,
IContext
,
IParam
}
from
"@core"
;
export
class
AppActionService
implements
IAppActionService
{
/**
* @description 唯一实例
* @private
* @static
* @memberof AppActionService
*/
private
static
readonly
instance
=
new
AppActionService
();
/**
* @description 获取唯一实例
* @static
* @return {*} {AppActionService}
* @memberof AppActionService
*/
public
static
getInstance
():
AppActionService
{
return
AppActionService
.
instance
;
}
/**
* 界面行为服务基类
*
* @export
* @class AppActionServiceBase
* @implements {IAppActionService}
*/
export
abstract
class
AppActionServiceBase
implements
IAppActionService
{
/**
* 执行界面行为
...
...
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/core/
utils/ui/app-util
.ts
→
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/core/
service/app-service/app-auth-service-base
.ts
浏览文件 @
2f391f52
import
qs
from
"qs"
;
import
{
getCookie
}
from
"qx-util"
;
import
{
clearCookie
,
getCookie
,
setCookie
}
from
"qx-util"
;
import
{
deepCopy
,
getSessionStorage
,
Http
,
IAppAuthService
,
IParam
,
removeSessionStorage
,
setSessionStorage
}
from
"@core"
;
import
{
Environment
}
from
"@/environments/environment"
;
import
{
getSessionStorage
,
Http
,
IParam
,
setSessionStorage
}
from
"@core"
;
/**
* 应用
相关处理逻辑工具
类
* 应用
权限服务基
类
*
* @export
* @class AppUtil
* @abstract
* @class AppAuthServiceBase
* @implements {IAppAuthService}
*/
export
class
AppUtil
{
export
abstract
class
AppAuthServiceBase
implements
IAppAuthService
{
/**
* 应用数据
*
* @private
* @type {IParam}
* @memberof AppAuthServiceBase
*/
private
appData
:
IParam
=
{};
/**
* 获取应用数据
*
* @static
* @return {*} {IParam}
* @memberof AppAuthServiceBase
*/
public
getAppData
():
IParam
{
return
this
.
appData
;
}
/**
* 设置应用数据
*
* @param {IParam} opt
* @memberof AppAuthServiceBase
*/
public
setAppData
(
opt
:
IParam
=
{}):
void
{
this
.
appData
=
opt
;
}
/**
* 初始化应用权限
*
* @param {IParam} params 应用预置参数
* @return {*} {Promise<any>}
* @memberof AppAuthServiceBase
*/
public
async
initAppAuth
(
params
:
IParam
,
hooks
:
IParam
):
Promise
<
any
>
{
let
result
=
true
;
if
(
Environment
&&
Environment
.
SaaSMode
)
{
if
(
getSessionStorage
(
'activeOrgData'
))
{
result
=
await
this
.
getAppInitData
(
hooks
,
params
);
}
else
{
result
=
await
this
.
getOrgsByDcsystem
(
hooks
);
if
(
result
)
{
result
=
await
this
.
getAppInitData
(
hooks
,
params
);
}
}
}
else
{
result
=
await
this
.
getAppInitData
(
hooks
,
params
);
}
return
result
;
}
/**
* 获取应用初始数据
*
* @param {IParam} hooks 应用钩子
* @param {IParam} [params={}] 应用参数
* @return {*} {Promise<boolean>}
* @memberof App
Util
* @memberof App
AuthServiceBase
*/
public
static
async
getApp
Data
(
hooks
:
IParam
,
params
:
IParam
=
{}):
Promise
<
boolean
>
{
public
async
getAppInit
Data
(
hooks
:
IParam
,
params
:
IParam
=
{}):
Promise
<
boolean
>
{
try
{
const
url
=
'/appdata'
;
hooks
.
appBefore
.
callSync
({
url
:
url
,
param
:
params
});
...
...
@@ -32,22 +86,24 @@ export class AppUtil {
return
false
;
}
// token认证把用户信息放入应用级数据
let
localAppData
:
any
=
{};
if
(
getCookie
(
'ibzuaa-user'
))
{
let
user
:
any
=
JSON
.
parse
(
getCookie
(
'ibzuaa-user'
)
as
string
);
let
localAppData
:
any
=
{};
if
(
user
.
sessionParams
)
{
localAppData
=
{
context
:
user
.
sessionParams
};
Object
.
assign
(
localAppData
,
data
);
}
else
{
Object
.
assign
(
localAppData
,
data
);
}
data
=
JSON
.
parse
(
JSON
.
stringify
(
localAppData
));
}
else
{
Object
.
assign
(
localAppData
,
data
);
}
App
.
setAppData
(
data
);
this
.
setAppData
(
deepCopy
(
localAppData
)
);
return
true
;
}
else
{
return
false
;
}
}
catch
(
error
)
{
// App.gotoLoginPage();
return
false
;
}
}
...
...
@@ -58,9 +114,9 @@ export class AppUtil {
* @static
* @param {IParam} hooks 应用钩子
* @return {*} {Promise<boolean>}
* @memberof App
Util
* @memberof App
AuthServiceBase
*/
public
static
async
getOrgsByDcsystem
(
hooks
:
IParam
):
Promise
<
boolean
>
{
public
async
getOrgsByDcsystem
(
hooks
:
IParam
):
Promise
<
boolean
>
{
try
{
let
tempViewParam
=
this
.
hanldeViewParam
(
window
.
location
.
href
);
if
(
!
tempViewParam
.
srfdcsystem
)
{
...
...
@@ -95,20 +151,85 @@ export class AppUtil {
return
false
;
}
}
catch
(
error
)
{
// App.gotoLoginPage();
return
false
;
}
}
/**
* @description 登录
*
* @memberof AppAuthServiceBase
*/
public
async
login
(
opts
:
IParam
):
Promise
<
IParam
>
{
try
{
this
.
clearAppData
();
const
result
:
IParam
=
await
Http
.
getInstance
().
post
(
'/v7/login'
,
opts
,
true
);
const
{
status
,
data
}
=
result
;
if
(
status
==
200
)
{
if
(
data
&&
data
.
token
)
{
setCookie
(
'ibzuaa-token'
,
data
.
token
,
7
,
true
);
}
if
(
data
&&
data
.
user
)
{
setCookie
(
'ibzuaa-user'
,
JSON
.
stringify
(
data
.
user
),
7
,
true
);
}
setCookie
(
'loginname'
,
opts
.
loginname
,
7
,
true
);
return
result
;
}
else
{
return
result
;
}
}
catch
(
error
:
any
)
{
return
error
;
}
}
/**
* 登出
*
* @return {*} {Promise<IParam>}
* @memberof AppAuthServiceBase
*/
public
async
logout
():
Promise
<
IParam
>
{
try
{
const
result
:
IParam
=
await
Http
.
getInstance
().
get
(
'/v7/logout'
);
const
{
status
,
data
}
=
result
;
if
(
status
===
200
)
{
this
.
clearAppData
();
return
data
;
}
else
{
return
data
;
}
}
catch
(
error
:
any
)
{
return
error
;
}
}
/**
* 清除应用级数据
*
* @memberof AppAuthServiceBase
*/
public
clearAppData
()
{
// 清除登录信息
clearCookie
(
'ibzuaa-token'
,
true
);
clearCookie
(
'ibzuaa-user'
,
true
);
clearCookie
(
'loginname'
,
true
);
// 清除应用级数据
this
.
setAppData
();
// 清除租户相关信息
removeSessionStorage
(
'dcsystem'
);
removeSessionStorage
(
'orgsData'
);
removeSessionStorage
(
'activeOrgData'
);
}
/**
* 处理路径数据
*
* @static
* @param {string} urlStr 路径
* @return {*} {*}
* @memberof App
Util
* @memberof App
AuthServiceBase
*/
public
static
hanldeViewParam
(
urlStr
:
string
):
any
{
public
hanldeViewParam
(
urlStr
:
string
):
any
{
let
tempViewParam
:
any
=
{};
const
tempViewparam
:
any
=
urlStr
.
slice
(
urlStr
.
indexOf
(
'?'
)
+
1
);
const
viewparamArray
:
Array
<
string
>
=
decodeURIComponent
(
tempViewparam
).
split
(
';'
);
...
...
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/core/
logic/app-logic/app-func-servic
e.ts
→
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/core/
service/app-service/app-func-service-bas
e.ts
浏览文件 @
2f391f52
import
{
IAppFuncService
,
IParam
}
from
"@core"
;
export
class
AppFuncService
implements
IAppFuncService
{
/**
* @description 唯一实例
* @private
* @static
* @memberof AppFuncService
*/
private
static
readonly
instance
=
new
AppFuncService
();
/**
* @description 获取唯一实例
* @static
* @return {*} {AppFuncService}
* @memberof AppFuncService
*/
public
static
getInstance
():
AppFuncService
{
return
AppFuncService
.
instance
;
}
/**
* 应用功能服务基类
*
* @export
* @class AppFuncServiceBase
* @implements {IAppFuncService}
*/
export
abstract
class
AppFuncServiceBase
implements
IAppFuncService
{
/**
* @description 执行应用功能
* @param {string} menu 菜单项
* @param {IParam} context 上下文
* @param {IParam} viewParams 视图参数
* @memberof AppFuncService
* @memberof AppFuncService
Base
*/
executeAppFunc
(
menu
:
IParam
,
context
:
IParam
,
viewParams
:
IParam
)
{
const
appFunc
=
App
.
getAllFuncs
().
find
((
func
:
IParam
)
=>
Object
.
is
(
func
.
funcTag
,
menu
.
funcTag
));
...
...
@@ -54,7 +43,7 @@ export class AppFuncService implements IAppFuncService{
* @param {IParam} appFunc 应用功能
* @param {IParam} context 上下文
* @param {IParam} viewParams 视图参数
* @memberof AppFuncService
* @memberof AppFuncService
Base
*/
executeCustomFunc
(
appFunc
:
IParam
,
context
:
IParam
,
viewParams
:
IParam
)
{
console
.
warn
(
`
${
appFunc
.
appFuncType
}
类型应用功能暂未支持`
);
...
...
@@ -65,7 +54,7 @@ export class AppFuncService implements IAppFuncService{
* @param {IParam} appFunc 应用功能
* @param {IParam} context 上下文
* @param {IParam} viewParams 视图参数
* @memberof AppFuncService
* @memberof AppFuncService
Base
*/
executeJavaScript
(
appFunc
:
IParam
,
context
:
IParam
,
viewParams
:
IParam
)
{
console
.
warn
(
`
${
appFunc
.
appFuncType
}
类型应用功能暂未支持`
);
...
...
@@ -77,7 +66,7 @@ export class AppFuncService implements IAppFuncService{
* @param {IParam} appFunc 应用功能
* @param {IParam} context 上下文
* @param {IParam} viewParams 视图参数
* @memberof AppFuncService
* @memberof AppFuncService
Base
*/
executePresetFunc
(
appFunc
:
IParam
,
context
:
IParam
,
viewParams
:
IParam
)
{
console
.
warn
(
`
${
appFunc
.
appFuncType
}
类型应用功能暂未支持`
);
...
...
@@ -88,7 +77,7 @@ export class AppFuncService implements IAppFuncService{
* @param {IParam} appFunc 应用功能
* @param {IParam} context 上下文
* @param {IParam} viewParams 视图参数
* @memberof AppFuncService
* @memberof AppFuncService
Base
*/
openHtmlPage
(
appFunc
:
IParam
,
context
:
IParam
,
viewParams
:
IParam
)
{
window
.
open
(
appFunc
.
htmlPageUrl
,
'_blank'
);
...
...
@@ -99,7 +88,7 @@ export class AppFuncService implements IAppFuncService{
* @param {IParam} appFunc 应用功能
* @param {IParam} context 上下文
* @param {IParam} viewParams 视图参数
* @memberof AppFuncService
* @memberof AppFuncService
Base
*/
openAppView
(
appFunc
:
IParam
,
context
:
IParam
,
viewParams
:
IParam
)
{
const
view
=
{
...
...
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/core/service/app-service/app-notification-service-base.ts
0 → 100644
浏览文件 @
2f391f52
import
{
IAppNotificationService
}
from
"@core/interface"
;
import
{
notification
}
from
'ant-design-vue'
;
/**
* 应用通知服务基类
*
* @export
* @abstract
* @class AppNotificationServiceBase
* @implements {IAppNotificationService}
*/
export
abstract
class
AppNotificationServiceBase
implements
IAppNotificationService
{
/**
* 成功提示
*
* @param {*} opts
* @memberof AppNotificationServiceBase
*/
public
success
(
opts
:
any
):
void
{
notification
.
success
(
opts
);
}
/**
* 信息提示
*
* @param {*} opts
* @memberof AppNotificationServiceBase
*/
public
info
(
opts
:
any
):
void
{
notification
.
info
(
opts
);
}
/**
* 警告提示
*
* @param {*} opts
* @memberof AppNotificationServiceBase
*/
public
warning
(
opts
:
any
):
void
{
notification
.
warning
(
opts
);
}
/**
* 错误提示
*
* @param {*} opts
* @memberof AppNotificationServiceBase
*/
public
error
(
opts
:
any
):
void
{
notification
.
error
(
opts
);
}
}
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/core/service/app-service/index.ts
0 → 100644
浏览文件 @
2f391f52
export
{
AppActionServiceBase
}
from
'./app-action-service-base'
;
export
{
AppAuthServiceBase
}
from
'./app-auth-service-base'
;
export
{
AppFuncServiceBase
}
from
'./app-func-service-base'
;
export
{
AppNotificationServiceBase
}
from
'./app-notification-service-base'
;
export
{
OpenViewServiceBase
}
from
'./open-view-service-base'
;
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/core/service/app-service/open-view-service-base.ts
0 → 100644
浏览文件 @
2f391f52
import
{
IOpenViewService
,
IParam
,
ViewDetail
}
from
"@core"
;
import
{
Subject
}
from
"rxjs"
;
/**
* 打开视图服务
*
* @export
* @class OpenViewService
*/
export
abstract
class
OpenViewServiceBase
implements
IOpenViewService
{
/**
* @description 打开视图
* @param {ViewDetail} view 视图对象参数
* @param {IParam} params 打开视图参数
* @return {*} {*}
* @memberof OpenViewServiceBase
*/
public
openView
(
view
:
ViewDetail
,
params
:
IParam
):
Subject
<
any
>
|
undefined
{
// 获取详细视图信息
let
_view
:
ViewDetail
|
undefined
=
App
.
getViewInfo
(
view
.
codeName
);
if
(
!
_view
)
{
console
.
error
(
`应用中不存在
${
view
.
codeName
}
视图`
);
return
;
}
// view的openMode覆盖配置的
if
(
view
.
openMode
)
{
_view
.
openMode
=
view
.
openMode
;
}
// 重定向视图走重定向逻辑,其他根据openMode打开
if
(
_view
.
redirectView
)
{
this
.
openRedirectView
(
_view
,
params
);
}
else
{
return
this
.
openByOpenMode
(
_view
,
params
);
}
}
/**
* 根据打开方式打开视图
*
* @param view 视图信息
* @param params 相关参数
* @memberof OpenViewServiceBase
*/
public
openByOpenMode
(
_view
:
ViewDetail
,
params
:
IParam
):
Subject
<
any
>
|
undefined
{
throw
new
Error
(
"Method not implemented."
);
}
/**
* 打开重定向视图
*
* @param {ViewDetail} _view
* @param {IParam} params
* @memberof OpenViewServiceBase
*/
public
openRedirectView
(
_view
:
ViewDetail
,
params
:
IParam
)
{
throw
new
Error
(
"Method not implemented."
);
}
}
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/core/service/
ui-service/
ui-service-base.ts
→
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/core/service/
entity-ui-service/entity-
ui-service-base.ts
浏览文件 @
2f391f52
文件已移动
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/core/service/entity-ui-service/index.ts
0 → 100644
浏览文件 @
2f391f52
export
{
UIServiceBase
}
from
'./entity-ui-service-base'
;
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/core/service/index.ts
浏览文件 @
2f391f52
export
*
from
'./control-service'
export
*
from
'./entity-service'
export
*
from
'./ui-service'
\ No newline at end of file
export
*
from
'./app-service'
;
export
*
from
'./control-service'
;
export
*
from
'./entity-service'
;
export
*
from
'./entity-ui-service'
;
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/core/service/ui-service/index.ts
已删除
100644 → 0
浏览文件 @
674bb3ee
export
{
UIServiceBase
}
from
'./ui-service-base'
;
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/core/utils/ui/index.ts
浏览文件 @
2f391f52
...
...
@@ -2,5 +2,4 @@ export { RouteUtil } from './route-util';
export
{
UIUtil
}
from
'./ui-util'
;
export
{
UIActionUtil
}
from
'./uiaction-util'
;
export
{
ViewUtil
}
from
'./view-util'
;
export
{
AppUtil
}
from
'./app-util'
;
export
{
DataTypes
}
from
'./data-types'
;
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/router/index.ts.hbs
浏览文件 @
2f391f52
...
...
@@ -6,7 +6,7 @@ const routes = [
path: "/apps/:app?",
beforeEnter: async (to: any, from: any) => {
const appParams:IParam = {};
const auth: Promise
<any>
= await App.initApp
Auth
(appParams);
const auth: Promise
<any>
= await App.initApp(appParams);
return auth;
},
meta: {
...
...
@@ -18,7 +18,13 @@ const routes = [
{{#if
appEntityResource
.
appDataEntity
.
allPSAppViews
}}
{{#
each
appEntityResource
.
appDataEntity
.
allPSAppViews
as
|
appView
|
}}
{{#if
(
eq
appView
.
getRefFlag
true
)
}}
{{#if
(
or
(
eq
appView
.
viewType
'DEEDITVIEW'
)
(
eq
appView
.
viewType
'DEGRIDVIEW'
)
(
eq
appView
.
viewType
'DETREEEXPVIEW'
)
(
eq
appView
.
viewType
'DETREEVIEW'
))
}}
{{#if
(
or
(
eq
appView
.
viewType
'DEEDITVIEW'
)
(
eq
appView
.
viewType
'DEGRIDVIEW'
)
(
eq
appView
.
viewType
'DETREEEXPVIEW'
)
(
eq
appView
.
viewType
'DETREEVIEW'
)
(
eq
appView
.
viewType
'DETABEXPVIEW'
)
)
}}
{
path: "
{{
appEntityResource
.
path
}}
/views/
{{
lowerCase
appView
.
codeName
}}
",
meta: {
...
...
@@ -53,6 +59,7 @@ const routes = [
},
{
path: '/404',
name: '404',
component: () => import('@components/common/404.vue')
},
{
...
...
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/service/app-action-service.ts
0 → 100644
浏览文件 @
2f391f52
import
{
AppActionServiceBase
}
from
"@core"
;
import
{
IAppActionService
}
from
"@core/interface"
;
/**
* 界面行为服务
*
* @export
* @class AppActionService
* @extends {AppActionServiceBase}
* @implements {IAppActionService}
*/
export
class
AppActionService
extends
AppActionServiceBase
implements
IAppActionService
{
/**
* @description 唯一实例
* @private
* @static
* @memberof AppActionService
*/
private
static
readonly
instance
=
new
AppActionService
();
/**
* @description 获取唯一实例
* @static
* @return {*} {AppActionService}
* @memberof AppActionService
*/
public
static
getInstance
():
AppActionService
{
return
AppActionService
.
instance
;
}
}
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/service/app-auth-service.ts
0 → 100644
浏览文件 @
2f391f52
import
{
AppAuthServiceBase
,
IAppAuthService
,
IParam
}
from
"@core"
;
/**
* 应用权限服务
*
* @export
* @class AppAuthService
*/
export
class
AppAuthService
extends
AppAuthServiceBase
implements
IAppAuthService
{
/**
* 唯一实例
*
* @private
* @static
* @memberof AppAuthService
*/
private
static
readonly
instance
=
new
AppAuthService
();
/**
* 获取唯一实例
*
* @static
* @return {*} {AppAuthService}
* @memberof AppAuthService
*/
public
static
getInstance
():
AppAuthService
{
return
AppAuthService
.
instance
;
}
}
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/service/app-func-service.ts
0 → 100644
浏览文件 @
2f391f52
import
{
AppFuncServiceBase
,
IAppFuncService
}
from
"@core"
;
/**
* 应用功能服务
*
* @export
* @class AppFuncService
* @extends {AppFuncServiceBase}
* @implements {IAppFuncService}
*/
export
class
AppFuncService
extends
AppFuncServiceBase
implements
IAppFuncService
{
/**
* @description 唯一实例
* @private
* @static
* @memberof AppFuncService
*/
private
static
readonly
instance
=
new
AppFuncService
();
/**
* @description 获取唯一实例
* @static
* @return {*} {AppFuncService}
* @memberof AppFuncService
*/
public
static
getInstance
():
AppFuncService
{
return
AppFuncService
.
instance
;
}
}
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/service/app-notification-service.ts
0 → 100644
浏览文件 @
2f391f52
import
{
IAppNotificationService
,
AppNotificationServiceBase
}
from
"@core"
;
/**
* 通知提示服务
*
* @export
* @class AppNotificationService
* @extends {AppNotificationServiceBase}
* @implements {IAppNotificationService}
*/
export
class
AppNotificationService
extends
AppNotificationServiceBase
implements
IAppNotificationService
{
/**
* 唯一实例
*
* @private
* @static
* @memberof AppNotificationService
*/
private
static
readonly
instance
=
new
AppNotificationService
();
/**
* 获取唯一实例
*
* @static
* @return {*} {AppNotificationService}
* @memberof AppNotificationService
*/
public
static
getInstance
():
AppNotificationService
{
return
AppNotificationService
.
instance
;
}
}
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/service/app-open-view-service/app-drawer.ts
0 → 100644
浏览文件 @
2f391f52
import
{
Subject
}
from
'rxjs'
;
import
Router
from
'@/router'
;
import
Antd
from
'ant-design-vue'
;
import
AppDrawerComponent
from
"@components/render/app-drawer.vue"
;
import
AppLoading
from
'@components/render/app-loading.vue'
;
import
{
IParam
,
ViewDetail
}
from
'@core'
;
export
class
AppDrawer
{
/**
* 实例对象
*
* @private
* @static
* @memberof AppDrawer
*/
private
static
drawer
=
new
AppDrawer
();
/**
* 构造方法
*
* @memberof AppDrawer
*/
constructor
()
{
if
(
AppDrawer
.
drawer
)
{
return
AppDrawer
.
drawer
;
}
}
/**
* 获取实例对象
*
* @static
* @returns
* @memberof AppDrawer
*/
public
static
getInstance
()
{
if
(
!
AppDrawer
.
drawer
)
{
AppDrawer
.
drawer
=
new
AppDrawer
();
}
return
AppDrawer
.
drawer
;
}
/**
* 创建 Vue 实例对象
*
* @private
* @param {view} ViewDetail 视图对象
* @param {IParam} params 视图参数
* @param {IParam} [options] 模态配置项
* @return {*} {Subject<any>}
* @memberof AppDrawer
*/
private
createVueExample
(
view
:
ViewDetail
,
params
:
IParam
,
options
?:
IParam
):
Subject
<
any
>
{
try
{
let
subject
:
null
|
Subject
<
any
>
=
new
Subject
<
any
>
();
let
props
=
{
view
:
view
,
context
:
params
.
context
,
viewParams
:
params
.
viewParams
,
isFullscreen
:
params
.
isFullscreen
,
subject
:
subject
,
options
:
options
};
let
dir
=
view
.
fileDir
?.
replace
(
/@views/
,
''
);
//Vite 支持使用特殊的 import.meta.glob 函数从文件系统导入多个模块
const
modules
=
import
.
meta
.
glob
(
'../../page/*/*/index.ts'
);
const
AsyncComp
=
defineAsyncComponent
({
// 工厂函数
loader
:
modules
[
'../../page'
+
dir
+
'/index.ts'
],
// 加载异步组件时要使用的组件
loadingComponent
:
AppLoading
,
// 在显示 loadingComponent 之前的延迟 | 默认值:200(单位 ms)
delay
:
0
,
});
if
(
AsyncComp
)
{
const
component
=
AppDrawerComponent
;
const
div
=
document
.
createElement
(
'div'
);
document
.
body
.
appendChild
(
div
);
const
app
=
createApp
(
component
,
{
close
:
()
=>
{
document
.
body
.
removeChild
(
div
);
app
.
unmount
();
},
...
props
}
);
app
.
component
(
view
.
name
as
string
,
AsyncComp
);
app
.
use
(
Router
).
use
(
Antd
).
mount
(
div
);
}
return
subject
;
}
catch
(
error
)
{
console
.
error
(
error
);
return
new
Subject
<
any
>
();
}
}
/**
* 打开抽屉
*
* @param {View} view 视图对象
* @param {IParam} params 视图参数
* @param {IParam} [options] 模态配置项
* @returns {Subject<any>}
* @memberof AppDrawer
*/
public
openDrawer
(
view
:
ViewDetail
,
params
:
IParam
,
options
?:
IParam
):
Subject
<
any
>
{
try
{
const
subject
=
this
.
createVueExample
(
view
,
params
,
options
);
return
subject
;
}
catch
(
error
)
{
console
.
log
(
error
);
return
new
Subject
<
any
>
();
}
}
/**
* 生成uuid
*
* @private
* @returns {string}
* @memberof AppDrawer
*/
private
getUUID
():
string
{
function
s4
()
{
return
Math
.
floor
((
1
+
Math
.
random
())
*
0x10000
).
toString
(
16
).
substring
(
1
);
}
return
s4
()
+
s4
()
+
'-'
+
s4
()
+
'-'
+
s4
()
+
'-'
+
s4
()
+
'-'
+
s4
()
+
s4
()
+
s4
();
}
}
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/service/app-open-view-service/app-modal.ts
0 → 100644
浏览文件 @
2f391f52
import
{
Subject
}
from
'rxjs'
;
import
Router
from
'@/router'
;
import
Antd
from
'ant-design-vue'
;
import
AppModalComponent
from
"@components/render/app-modal.vue"
;
import
AppLoading
from
'@components/render/app-loading.vue'
;
import
{
IParam
,
ViewDetail
}
from
'@core'
;
export
class
AppModal
{
/**
* 实例对象
*
* @private
* @static
* @memberof AppModal
*/
private
static
modal
=
new
AppModal
();
/**
*
*
* @type {*}
* @memberof AppModal
*/
public
asyncComp
:
any
;
/**
* Creates an instance of AppModal.
*
* @memberof AppModal
*/
private
constructor
()
{
if
(
AppModal
.
modal
)
{
return
AppModal
.
modal
;
}
}
/**
* 获取单例对象
*
* @static
* @returns {AppModal}
* @memberof AppModal
*/
public
static
getInstance
():
AppModal
{
if
(
!
AppModal
.
modal
)
{
AppModal
.
modal
=
new
AppModal
();
}
return
AppModal
.
modal
;
}
/**
* 创建vue对象
*
* @private
* @param {view} ViewDetail 视图对象
* @param {IParam} params 视图参数
* @param {IParam} [options] 模态配置项
* @return {*} {Subject<any>}
* @memberof AppModal
*/
private
createVueExample
(
view
:
ViewDetail
,
params
:
IParam
,
options
?:
IParam
):
Subject
<
any
>
{
try
{
let
subject
:
null
|
Subject
<
any
>
=
new
Subject
<
any
>
();
let
props
=
{
view
:
view
,
context
:
params
.
context
,
viewParams
:
params
.
viewParams
,
isFullscreen
:
params
.
isFullscreen
,
subject
:
subject
,
options
:
options
};
let
dir
=
view
.
fileDir
?.
replace
(
/@views/
,
''
);
//Vite 支持使用特殊的 import.meta.glob 函数从文件系统导入多个模块
const
modules
=
import
.
meta
.
glob
(
'../../views/*/*/index.ts'
);
const
AsyncComp
=
defineAsyncComponent
({
// 工厂函数
loader
:
modules
[
'../../views'
+
dir
+
'/index.ts'
],
// 加载异步组件时要使用的组件
loadingComponent
:
AppLoading
,
// 在显示 loadingComponent 之前的延迟 | 默认值:200(单位 ms)
delay
:
0
,
});
if
(
AsyncComp
)
{
const
component
=
AppModalComponent
;
const
div
=
document
.
createElement
(
'div'
);
document
.
body
.
appendChild
(
div
);
const
app
=
createApp
(
component
,
{
close
:
()
=>
{
document
.
body
.
removeChild
(
div
);
app
.
unmount
();
},
...
props
}
);
app
.
component
(
view
.
name
as
string
,
AsyncComp
);
app
.
use
(
Router
).
use
(
Antd
).
mount
(
div
);
}
return
subject
;
}
catch
(
error
)
{
console
.
error
(
error
);
return
new
Subject
<
any
>
();
}
}
/**
* 打开模态视图
*
* @param {View} view 视图对象
* @param {IParam} params 视图参数
* @param {IParam} [options] 模态配置项
* @return {*} {Subject<any>}
* @memberof AppModal
*/
public
openModal
(
view
:
ViewDetail
,
params
:
IParam
,
options
?:
IParam
):
Subject
<
any
>
{
try
{
const
subject
=
this
.
createVueExample
(
view
,
params
,
options
);
return
subject
;
}
catch
(
error
)
{
console
.
log
(
error
);
return
new
Subject
<
any
>
();
}
}
/**
* 获取节点标识
*
* @private
* @returns {string}
* @memberof AppModal
*/
private
getUUID
():
string
{
function
s4
()
{
return
Math
.
floor
((
1
+
Math
.
random
())
*
0x10000
).
toString
(
16
).
substring
(
1
);
}
return
s4
()
+
s4
()
+
'-'
+
s4
()
+
'-'
+
s4
()
+
'-'
+
s4
()
+
'-'
+
s4
()
+
s4
()
+
s4
();
}
}
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/service/app-open-view-service/app-popover.ts
0 → 100644
浏览文件 @
2f391f52
import
{
Subject
}
from
'rxjs'
;
import
Router
from
'@/router'
;
import
Antd
from
'ant-design-vue'
;
import
AppPopoverComponent
from
"@components/render/app-popover.vue"
;
import
AppLoading
from
'@components/render/app-loading.vue'
;
import
{
IParam
,
ViewDetail
}
from
'@core'
;
import
{
createPopper
,
Instance
}
from
'@popperjs/core/lib/popper-lite.js'
;
import
preventOverflow
from
'@popperjs/core/lib/modifiers/preventOverflow.js'
;
import
flip
from
'@popperjs/core/lib/modifiers/flip.js'
;
import
{
Placement
}
from
'@popperjs/core/lib/enums'
;
export
class
AppPopover
{
/**
* 实例对象
*
* @private
* @static
* @memberof AppPopover
*/
private
static
popover
=
new
AppPopover
();
/**
* PopperJs实例
*
* @private
* @type {Instance}
* @memberof AppPopover
*/
private
popperExample
?:
Instance
;
/**
* 是否显示悬浮窗
*
* @private
* @type {boolean}
* @memberof AppPopover
*/
private
showPopper
:
boolean
=
false
;
/**
* 是否在点击空白区域时自动关闭
*
* @private
* @type {boolean}
* @memberof AppPopover
*/
private
isAutoClose
:
boolean
=
true
;
/**
* 是否在离开该飘窗区域时自动关闭
*
* @private
* @type {boolean}
* @memberof AppPopover
*/
private
isMoveOutClose
:
boolean
=
false
;
/**
* 构造方法
*
* @memberof AppPopover
*/
constructor
()
{
if
(
AppPopover
.
popover
)
{
return
AppPopover
.
popover
;
}
}
/**
* 获取实例对象
*
* @static
* @returns
* @memberof AppPopover
*/
public
static
getInstance
()
{
if
(
!
AppPopover
.
popover
)
{
AppPopover
.
popover
=
new
AppPopover
();
}
return
AppPopover
.
popover
;
}
/**
* 创建 Vue 实例对象
*
* @private
* @param event
* @param {view} ViewDetail 视图对象
* @param {IParam} params 视图参数
* @param {IParam} [options] 模态配置项
* @return {*} {Subject<any>}
* @memberof AppPopover
*/
private
createVueExample
(
event
:
any
,
view
:
ViewDetail
,
params
:
IParam
,
options
?:
IParam
):
Subject
<
any
>
{
try
{
// 阻止事件冒泡
event
.
stopPropagation
();
// 处理关闭模式(点击空白区域关闭、鼠标离开飘窗区域)
if
(
params
.
isAutoClose
)
{
this
.
isAutoClose
=
params
.
isAutoClose
;
}
if
(
params
.
isMoveOutClose
)
{
this
.
isMoveOutClose
=
params
.
isMoveOutClose
;
}
// 获取悬浮窗相对位置的元素
const
element
:
Element
=
event
.
toElement
||
event
.
srcElement
;
let
subject
:
null
|
Subject
<
any
>
=
new
Subject
<
any
>
();
let
props
=
{
element
:
element
,
view
:
view
,
context
:
params
.
context
,
viewParams
:
params
.
viewParams
,
isFullscreen
:
params
.
isFullscreen
,
subject
:
subject
,
options
:
options
};
// 解析文件路径
let
dir
=
view
.
fileDir
?.
replace
(
/@views/
,
''
);
// Vite 支持使用特殊的 import.meta.glob 函数从文件系统导入多个模块
const
modules
=
import
.
meta
.
glob
(
'../../page/*/*/index.ts'
);
// 创建一个只有在需要时才会加载的异步组件
const
AsyncComp
=
defineAsyncComponent
({
// 工厂函数
loader
:
modules
[
'../../page'
+
dir
+
'/index.ts'
],
// 加载异步组件时要使用的组件
loadingComponent
:
AppLoading
,
// 在显示 loadingComponent 之前的延迟 | 默认值:200(单位 ms)
delay
:
0
,
});
if
(
AsyncComp
)
{
const
component
=
AppPopoverComponent
;
// 创建dom
const
container
=
document
.
createElement
(
'div'
);
container
.
className
=
'app-popover-wrapper'
;
const
div
=
document
.
createElement
(
'div'
);
container
.
appendChild
(
div
);
document
.
body
.
appendChild
(
container
);
this
.
showPopper
=
true
;
const
app
=
createApp
(
component
,
{
mouseout
:
()
=>
{
if
(
!
this
.
showPopper
||
!
this
.
isMoveOutClose
)
{
return
;
}
this
.
popperDestroy
();
document
.
body
.
removeChild
(
container
);
app
.
unmount
();
},
...
props
}
);
app
.
component
(
view
.
name
as
string
,
AsyncComp
);
app
.
use
(
Router
).
use
(
Antd
).
mount
(
div
);
// 创建Popover实例
this
.
popperExample
=
createPopper
(
element
,
div
,
{
placement
:
view
.
placement
as
Placement
,
strategy
:
'absolute'
,
modifiers
:
[
preventOverflow
,
flip
]
});
// 点击空白区域时事件处理
container
.
addEventListener
(
'click'
,
()
=>
{
if
(
!
this
.
showPopper
||
!
this
.
isAutoClose
)
{
return
;
}
this
.
popperDestroy
();
document
.
body
.
removeChild
(
container
);
app
.
unmount
();
})
}
return
subject
;
}
catch
(
error
)
{
console
.
error
(
error
);
return
new
Subject
<
any
>
();
}
}
/**
* 打开飘窗
*
* @param {*} event
* @param {View} view 视图对象
* @param {IParam} params 视图参数
* @param {IParam} [options] 模态配置项
* @returns {Subject<any>}
* @memberof AppPopover
*/
public
openPopover
(
event
:
any
,
view
:
ViewDetail
,
params
:
IParam
,
options
?:
IParam
):
Subject
<
any
>
{
try
{
const
subject
=
this
.
createVueExample
(
event
,
view
,
params
,
options
);
return
subject
;
}
catch
(
error
)
{
console
.
log
(
error
);
return
new
Subject
<
any
>
();
}
}
/**
* 销毁popper(带回填数据)
*
* @memberof AppPopover
*/
public
popperDestroy
():
void
{
if
(
this
.
popperExample
)
{
this
.
popperExample
.
destroy
();
this
.
showPopper
=
false
;
}
}
}
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/service/app-open-view-service/index.ts
0 → 100644
浏览文件 @
2f391f52
export
{
AppDrawer
}
from
'./app-drawer'
;
export
{
AppModal
}
from
'./app-modal'
;
export
{
AppPopover
}
from
'./app-popover'
;
export
{
OpenViewService
}
from
'./open-view-service'
;
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/service/app-open-view-service/open-view-service.ts
0 → 100644
浏览文件 @
2f391f52
import
{
IOpenViewService
,
IParam
,
OpenViewServiceBase
,
RouteUtil
,
ViewDetail
}
from
'@core'
;
import
router
from
'@/router'
;
import
{
Subject
}
from
'rxjs'
;
import
{
AppModal
}
from
'./app-modal'
;
/**
* 打开视图服务
* @export
* @class OpenViewService
*/
export
class
OpenViewService
extends
OpenViewServiceBase
implements
IOpenViewService
{
/**
* 唯一实例
*
* @private
* @static
* @memberof OpenViewService
*/
private
static
readonly
instance
=
new
OpenViewService
();
/**
* 获取唯一实例
*
* @static
* @return {*} {OpenViewService}
* @memberof OpenViewService
*/
public
static
getInstance
():
OpenViewService
{
return
OpenViewService
.
instance
;
}
/**
* 根据打开方式打开视图
*
* @param view 视图信息
* @param params 相关参数
*/
public
openByOpenMode
(
view
:
ViewDetail
,
params
:
IParam
):
Subject
<
any
>
|
undefined
{
const
openMode
=
params
.
openMode
||
view
.
openMode
;
const
{
viewParams
,
context
}
=
params
;
// 路由打开视图
if
(
openMode
==
'INDEXVIEWTAB'
||
openMode
==
'POPUPAPP'
)
{
// TODO 视图关系参数处理
const
routePath
=
RouteUtil
.
buildUpRoutePath
(
view
,
context
,
viewParams
,
router
.
currentRoute
.
value
);
if
(
openMode
==
'INDEXVIEWTAB'
)
{
router
.
push
(
routePath
);
}
else
{
window
.
open
(
'./#'
+
routePath
,
'_blank'
);
}
return
;
}
else
if
(
openMode
==
'POPUPMODAL'
)
{
return
AppModal
.
getInstance
().
openModal
(
view
,
params
);
}
else
if
(
openMode
?.
indexOf
(
'DRAWER'
)
!==
-
1
)
{
// TODO PMS上面抽屉DRAWER_TOP
}
else
if
(
openMode
==
'POPOVER'
)
{
// TODO 打开气泡卡片
}
else
{
console
.
error
(
`未支持
${
openMode
}
打开方式`
);
}
}
/**
* 打开重定向视图
*
* @param view 视图信息
* @param params 相关参数
*/
public
openRedirectView
(
view
:
any
,
params
:
IParam
)
{
// TODO 重定向视图处理
}
}
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/service/index.ts
0 → 100644
浏览文件 @
2f391f52
export
*
from
'./app-open-view-service'
;
export
{
AppActionService
}
from
'./app-action-service'
;
export
{
AppAuthService
}
from
'./app-auth-service'
;
export
{
AppFuncService
}
from
'./app-func-service'
;
export
{
AppNotificationService
}
from
'./app-notification-service'
;
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/style/base/index.scss
浏览文件 @
2f391f52
...
...
@@ -25,4 +25,18 @@ body{
border-radius
:
0
;
box-shadow
:
none
;
border
:
0
;
}
// 飘窗样式
.app-popover-wrapper
{
position
:
absolute
;
top
:
0
;
right
:
0
;
bottom
:
0
;
left
:
0
;
.app-popover
{
border-radius
:
5px
;
overflow
:
auto
;
background
:
#e8e8e8
;
}
}
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/views/{{appModules}}/{{pages@APPPORTALVIEW}}/index.ts.hbs
0 → 100644
浏览文件 @
2f391f52
import
{{
page
.
codeName
}}
from "./
{{
spinalCase
page
.
codeName
}}
.vue";
export default
{{
page
.
codeName
}}
;
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/views/{{appModules}}/{{pages@APPPORTALVIEW}}/{{pages@APPPORTALVIEW}}-state.ts.hbs
0 → 100644
浏览文件 @
2f391f52
export const viewState = {
{{>
@macro
/
front-end
/
views
/
view-base-config
.
hbs
}}
};
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/views/{{appModules}}/{{pages@APPPORTALVIEW}}/{{pages@APPPORTALVIEW}}.vue.hbs
0 → 100644
浏览文件 @
2f391f52
<script
setup
lang=
"ts"
>
import
{
Subject
}
from
'rxjs'
;
import
{
PortalView
,
IActionParam
,
IParam
,
IContext
}
from
'@core'
;
import
{
viewState
}
from
'./
{{
spinalCase
page
.
codeName
}}
-state'
;
{{#
page
.
ctrls
}}
{{#
eq
controlType
"DASHBOARD"
}}
import
{
{{
codeName
}}
Dashboard
}
from
'@widgets/app/
{{
spinalCase
codeName
}}
-dashboard'
;
{{/
eq
}}
{{/
page
.
ctrls
}}
// props声明和默认值处理
interface
Props
{
context
?:
IContext
;
viewParams
?:
IParam
;
openType
?:
"ROUTE"
|
"MODAL"
|
"EMBED"
;
viewSubject
?:
Subject
<
IActionParam
>
;
}
const
props
=
withDefaults
(
defineProps
<
Props
>
(),
{
openType
:
'ROUTE'
,
viewSubject
:
()
=>
new
Subject
<
IActionParam
>
()
})
// emit声明
interface
ViewEmit
{
(
name
:
"onViewEvent"
,
value
:
IActionParam
):
void
;
}
const
emit
=
defineEmits
<
ViewEmit
>
();
// 安装功能模块,提供状态和能力方法
const
{
state
}
=
new
PortalView
(
viewState
,
props
,
emit
).
moduleInstall
();
</script>
<template>
<AppPortalViewLayout
:class=
"['app-edit-view', state.viewSysCss]"
>
<template
v-slot:caption
>
<AppIconText
class=
"app-view__caption"
size=
"large"
:subCaption=
"state.subCaption"
:showCaptionBar=
"state.showCaptionBar"
:text=
"state.viewCaption"
/>
</template>
{{#
page
.
ctrls
}}
{{#
eq
controlType
"DASHBOARD"
}}
<
{{
codeName
}}
Dashboard
ref=
"dashboard"
name=
"
{{
name
}}
"
:context=
"state.context"
:viewParams=
"state.viewParams"
:controlAction=
"state.
{{
name
}}
.action"
:viewSubject=
"state.viewSubject"
@
ctrlEvent=
"onCtrlEvent"
></
{{
codeName
}}
Dashboard>
{{/
eq
}}
{{/
page
.
ctrls
}}
</AppPortalViewLayout>
</template>
<style
lang=
"scss"
>
</style>
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/views/{{appModules}}/{{pages@DETABEXPVIEW}}/index.ts.hbs
0 → 100644
浏览文件 @
2f391f52
import
{{
page
.
codeName
}}
from "./
{{
spinalCase
page
.
codeName
}}
.vue";
export default
{{
page
.
codeName
}}
;
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/views/{{appModules}}/{{pages@DETABEXPVIEW}}/{{pages@DETABEXPVIEW}}-state.ts.hbs
0 → 100644
浏览文件 @
2f391f52
export const viewState = {
{{>
@macro
/
front-end
/
views
/
view-base-config
.
hbs
}}
};
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/views/{{appModules}}/{{pages@DETABEXPVIEW}}/{{pages@DETABEXPVIEW}}.vue.hbs
0 → 100644
浏览文件 @
2f391f52
<script
setup
lang=
"ts"
>
import
{
Subject
}
from
'rxjs'
;
import
{
PickupView
,
IActionParam
,
IParam
,
IContext
}
from
'@core'
;
import
{
viewState
}
from
'./
{{
spinalCase
page
.
codeName
}}
-state'
;
{{#
page
.
ctrls
}}
{{#
eq
controlType
"TABEXPPANEL"
}}
import
{
{{
codeName
}}
TabExpPanel
}
from
'@widgets/
{{
spinalCase
appEntity
.
codeName
}}
/
{{
spinalCase
codeName
}}
-tab-exp-panel'
;
{{/
eq
}}
{{/
page
.
ctrls
}}
// props声明和默认值处理
interface
Props
{
context
?:
IContext
;
viewParams
?:
IParam
;
openType
?:
"ROUTE"
|
"MODAL"
|
"EMBED"
;
viewSubject
?:
Subject
<
IActionParam
>
;
}
const
props
=
withDefaults
(
defineProps
<
Props
>
(),
{
openType
:
'ROUTE'
,
viewSubject
:
()
=>
new
Subject
<
IActionParam
>
()
})
// emit声明
interface
ViewEmit
{
(
name
:
"viewEvent"
,
value
:
IActionParam
):
void
;
}
const
emit
=
defineEmits
<
ViewEmit
>
();
// 安装功能模块,提供状态和能力方法
const
{
state
,
onCancel
,
onConfirm
,
onCtrlEvent
,
selectData
}
=
new
PickupView
(
viewState
,
props
,
emit
).
moduleInstall
();
</script>
<template>
<AppPickupViewLayout
:class=
"['app-tab-exp-view', state.viewSysCss]"
>
<template
#
caption
>
<AppIconText
class=
"app-view__caption"
size=
"large"
:text=
"state.viewCaption"
/>
</template>
{{#
page
.
ctrls
}}
{{#
eq
controlType
"TOOLBAR"
}}
<template
v-slot:toolbar
>
<AppToolbar
mode=
"button"
name=
"
{{
lowerCase
codeName
}}
"
:actionModel=
"state.viewToolbarModel"
@
onToolbarEvent=
"onToolbarEvent"
/>
</template>
{{/
eq
}}
{{#
eq
controlType
"TABEXPPANEL"
}}
<
{{
codeName
}}
TabExpPanel
name=
"
{{
name
}}
"
:context=
"state.context"
:viewParams=
"state.viewParams"
:viewSubject=
"state.viewSubject"
@
onCtrlEvent=
"onCtrlEvent"
></
{{
codeName
}}
TabExpPanel>
{{/
eq
}}
{{/
page
.
ctrls
}}
</AppPickupViewLayout>
</template>
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/widgets/{{appEntities}}/{{ctrls@DASHBOARD}}-dashboard/index.ts.hbs
0 → 100644
浏览文件 @
2f391f52
import
{{
ctrl
.
codeName
}}
Dashboard from "./
{{
spinalCase
ctrl
.
codeName
}}
-dashboard.vue";
export {
{{
ctrl
.
codeName
}}
Dashboard };
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/widgets/{{appEntities}}/{{ctrls@DASHBOARD}}-dashboard/{{ctrls@DASHBOARD}}-dashboard-state.ts.hbs
0 → 100644
浏览文件 @
2f391f52
// 部件配置对象
export const ctrlState = {
controlCodeName: '
{{
ctrl
.
codeName
}}
',
controlName: '
{{
ctrl
.
name
}}
',
isEnableCustomized:
{{
ctrl
.
enableCustomized
}}
,
};
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/widgets/{{appEntities}}/{{ctrls@DASHBOARD}}-dashboard/{{ctrls@DASHBOARD}}-dashboard.vue.hbs
0 → 100644
浏览文件 @
2f391f52
<script
setup
lang=
"ts"
>
import
{
Subject
}
from
'rxjs'
;
import
{
ctrlState
}
from
'./
{{
spinalCase
ctrl
.
codeName
}}
-dashboard-state'
;
import
{
DashboardControl
,
IActionParam
,
IParam
,
IContext
}
from
'@core'
;
{{#
each
ctrl
.
psControls
as
|
control
|
}}
{{#
neq
portletType
"CONTAINER"
}}
{{#if
control
.
psAppDataEntity
}}
import
{
{{
codeName
}}
Portlet
}
from
'@widgets/
{{
spinalCase
control
.
psAppDataEntity
.
codeName
}}
/
{{
spinalCase
codeName
}}
-portlet'
;
{{else}}
import
{
{{
codeName
}}
Portlet
}
from
'@widgets/app/
{{
spinalCase
codeName
}}
-portlet'
;
{{/if}}
{{/
neq
}}
{{/
each
}}
interface
Props
{
name
:
string
,
context
:
IContext
;
viewParams
?:
IParam
;
viewSubject
:
Subject
<
IActionParam
>
;
}
const
props
=
withDefaults
(
defineProps
<
Props
>
(),
{
viewSubject
:
()
=>
new
Subject
<
IActionParam
>
(),
})
// emit声明
interface
CtrlEmit
{
(
name
:
"ctrlEvent"
,
value
:
IActionParam
):
void
;
}
const
emit
=
defineEmits
<
CtrlEmit
>
();
// 安装功能模块,提供状态和能力方法
const
{
state
}
=
new
DashboardControl
(
ctrlState
,
props
,
emit
).
moduleInstall
();
// 暴露内部状态及能力
defineExpose
({
state
,
name
:
'
{{
ctrl
.
name
}}
'
});
</script>
<template>
<div
class=
"app-dashboard
{{#if
ctrl
.
psSysCss
}}
{{
ctrl
.
psSysCss
.
cssName
}}{{/if}}
"
>
{{#if
(
eq
ctrl
.
enableCustomized
false
)
}}
{{#
eq
ctrl
.
psLayout
.
layout
"FLEX"
}}
<div
class=
"app-dashboard-layout-flex"
style=
"
{{#if
ctrl
.
psLayout
.
dir
}}
flex-direction:
{{
ctrl
.
psLayout
.
dir
}}
;
{{/if}}{{#if
ctrl
.
psLayout
.
align
}}
justify-content:
{{
ctrl
.
psLayout
.
align
}}
;
{{/if}}{{#if
ctrl
.
psLayout
.
vAlign
}}
align-items:
{{
ctrl
.
psLayout
.
vAlign
}}
;
{{/if}}
"
>
</div>
{{else}}
<a-row
class=
"app-dashboard-layout-table"
>
{{#
each
ctrl
.
psPortlets
as
|
portlet
|
}}
<a-col
{{>
@macro
/
front-end
/
widgets
/
common
/
layout-pos
.
hbs
item
=
portlet
.
psLayoutPos
}}
>
{{#
eq
portlet
.
portletType
'CONTAINER'
}}
{{#if
portlet
.
psPortlets
}}
<div
class=
"portlet-card"
:bordered=
"false"
dis-hover
:padding=
"0"
>
{{else}}
<div
class=
"portlet-card custom-card"
:bordered=
"false"
dis-hover
:padding=
"10"
>
{{/if}}
{{#if
(
and
portlet
.
showTitleBar
portlet
.
title
)
}}
<div
class=
"portlet-card-title"
>
{{
portlet
.
title
}}
</div>
{{/if}}
{{#
each
portlet
.
psPortlets
as
|
item
|
}}
{{#
eq
item
.
psLayout
.
layout
"FLEX"
}}
<div
class=
"app-dashboard-layout-flex"
style=
"
{{#if
item
.
psLayout
.
dir
}}
flex-direction:
{{
item
.
psLayout
.
dir
}}
;
{{/if}}{{#if
item
.
psLayout
.
align
}}
justify-content:
{{
item
.
psLayout
.
align
}}
;
{{/if}}{{#if
item
.
psLayout
.
vAlign
}}
align-items:
{{
item
.
psLayout
.
vAlign
}}
;
{{/if}}
"
>
</div>
{{else}}
<a-row
class=
"app-dashboard-layout-table"
>
<a-col
{{>
@macro
/
front-end
/
widgets
/
common
/
layout-pos
.
hbs
item
=
item
.
psLayoutPos
}}
>
<
{{
codeName
}}
Portlet
ref=
"portlet"
name=
"
{{
item
.
name
}}
"
:context=
"state.context"
:viewParams=
"state.viewParams"
:viewSubject=
"state.viewSubject"
@
ctrlEvent=
"onCtrlEvent"
></
{{
codeName
}}
Portlet>
</a-col>
</a-row>
{{/
eq
}}
{{/
each
}}
</div>
{{else}}
<
{{
codeName
}}
Portlet
ref=
"portlet"
name=
"
{{
name
}}
"
:context=
"state.context"
:viewParams=
"state.viewParams"
:viewSubject=
"state.viewSubject"
@
ctrlEvent=
"onCtrlEvent"
></
{{
codeName
}}
Portlet>
{{/
eq
}}
</a-col>
{{/
each
}}
</a-row>
{{/
eq
}}
{{/if}}
</div>
</template>
<style
lang=
"scss"
>
</style>
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/widgets/{{appEntities}}/{{ctrls@PICKUPVIEWPANEL}}-pickup-view-panel/{{ctrls@PICKUPVIEWPANEL}}-pickup-view-panel.vue.hbs
浏览文件 @
2f391f52
...
...
@@ -45,6 +45,8 @@ defineExpose({ state, name: '{{ctrl.name}}' });
<div
class=
"app-pickup-view-panel
{{#if
ctrl
.
psSysCss
}}
{{
ctrl
.
psSysCss
.
cssName
}}{{/if}}
"
>
{{#if
ctrl
.
embeddedPSAppDEView
}}
<
{{
ctrl
.
embeddedPSAppDEView
.
codeName
}}
:context
="
state
.
context
"
:viewParams=
"state.viewParams"
:isShowButton=
"state.isShowButton"
:selectedData=
"state.selectedData"
:viewSubject=
"state.viewSubject"
...
...
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/widgets/{{appEntities}}/{{ctrls@PORTLET}}-portlet/index.ts.hbs
0 → 100644
浏览文件 @
2f391f52
import
{{
ctrl
.
codeName
}}
Portlet from "./
{{
spinalCase
ctrl
.
codeName
}}
-portlet.vue";
export {
{{
ctrl
.
codeName
}}
Portlet };
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/widgets/{{appEntities}}/{{ctrls@PORTLET}}-portlet/{{ctrls@PORTLET}}-portlet-state.ts.hbs
0 → 100644
浏览文件 @
2f391f52
// 部件配置对象
export const ctrlState = {
controlCodeName: '
{{
ctrl
.
codeName
}}
',
controlName: '
{{
ctrl
.
name
}}
',
};
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/widgets/{{appEntities}}/{{ctrls@PORTLET}}-portlet/{{ctrls@PORTLET}}-portlet.vue.hbs
0 → 100644
浏览文件 @
2f391f52
<script
setup
lang=
"ts"
>
import
{
Subject
}
from
'rxjs'
;
import
{
ctrlState
}
from
'./
{{
spinalCase
ctrl
.
codeName
}}
-portlet-state'
;
import
{
PortletControl
,
IActionParam
,
IParam
,
IContext
}
from
'@core'
;
interface
Props
{
name
:
string
,
context
:
IContext
;
viewParams
?:
IParam
;
viewSubject
:
Subject
<
IActionParam
>
;
}
const
props
=
withDefaults
(
defineProps
<
Props
>
(),
{
viewSubject
:
()
=>
new
Subject
<
IActionParam
>
(),
})
// emit声明
interface
CtrlEmit
{
(
name
:
"ctrlEvent"
,
value
:
IActionParam
):
void
;
}
const
emit
=
defineEmits
<
CtrlEmit
>
();
// 安装功能模块,提供状态和能力方法
const
{
state
}
=
new
PortletControl
(
ctrlState
,
props
,
emit
).
moduleInstall
();
// 暴露内部状态及能力
defineExpose
({
state
,
name
:
'
{{
ctrl
.
name
}}
'
});
</script>
<template>
<div>
portlet
</div>
</template>
<style
lang=
"scss"
>
</style>
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/widgets/{{appEntities}}/{{ctrls@TABEXPPANEL}}-tab-exp-panel/index.ts.hbs
0 → 100644
浏览文件 @
2f391f52
import
{{
ctrl
.
codeName
}}
TabExpPanel from "./
{{
spinalCase
ctrl
.
codeName
}}
-tab-exp-panel.vue";
export {
{{
ctrl
.
codeName
}}
TabExpPanel };
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/widgets/{{appEntities}}/{{ctrls@TABEXPPANEL}}-tab-exp-panel/{{ctrls@TABEXPPANEL}}-tab-exp-panel-state.ts.hbs
0 → 100644
浏览文件 @
2f391f52
export const ctrlState = {
controlCodeName: '
{{
ctrl
.
codeName
}}
',
controlName: '
{{
ctrl
.
name
}}
',
data: {},
};
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/widgets/{{appEntities}}/{{ctrls@TABEXPPANEL}}-tab-exp-panel/{{ctrls@TABEXPPANEL}}-tab-exp-panel.vue.hbs
0 → 100644
浏览文件 @
2f391f52
<script
setup
lang=
"ts"
>
import
{
Subject
}
from
'rxjs'
;
import
{
IActionParam
,
IParam
,
ControlAction
,
TabExpPanelControl
,
IContext
}
from
'@core'
;
import
{
ctrlState
}
from
'./
{{
spinalCase
ctrl
.
codeName
}}
-tab-exp-panel-state'
;
{{#
each
ctrl
.
psControls
as
|
viewPanel
|
}}
import
{
{{
codeName
}}
TabViewPanel
}
from
'@widgets/
{{
spinalCase
viewPanel
.
psAppDataEntity
.
codeName
}}
/
{{
spinalCase
codeName
}}
-tab-view-panel'
;
{{/
each
}}
interface
Props
{
name
:
string
,
context
:
IContext
;
viewParams
?:
IParam
;
showBusyIndicator
?:
boolean
;
selectedData
?:
string
;
viewSubject
:
Subject
<
IActionParam
>
;
}
const
props
=
withDefaults
(
defineProps
<
Props
>
(),
{
viewSubject
:
()
=>
new
Subject
<
IActionParam
>
(),
showBusyIndicator
:
true
,
})
// emit声明
interface
CtrlEmit
{
(
name
:
"onCtrlEvent"
,
value
:
IActionParam
):
void
;
}
const
emit
=
defineEmits
<
CtrlEmit
>
();
// 安装功能模块,提供状态和能力方法
const
{
state
,
onCtrlEvent
}
=
new
TabExpPanelControl
(
ctrlState
,
props
,
emit
).
moduleInstall
();
// 暴露内部状态及能力
defineExpose
({
state
,
name
:
'
{{
ctrl
.
name
}}
'
});
</script>
<template>
<div
class=
"app-tab-exp-panel
{{#if
ctrl
.
psSysCss
}}
{{
ctrl
.
psSysCss
.
cssName
}}{{/if}}
"
>
{{#if
ctrl
.
psControls
}}
<a-tabs
class=
"app-tab-exp-panel__tabs"
>
{{#
each
ctrl
.
psControls
as
|
viewPanel
|
}}
<a-tab-pane
{{#if
viewPanel
.
psSysCss
}}
class=
"
{{
viewPanel
.
psSysCss
.
cssName
}}
"
{{/if}}
key=
"
{{
viewPanel
.
codeName
}}
"
>
<template
#
tab
>
<AppIconText
{{#if
viewPanel
.
psSysImage
}}{{#if
viewPanel
.
psSysImage
.
cssClass
}}
:iconClass=
"
{{
viewPanel
.
psSysImage
.
cssClass
}}
"
{{/if}}{{#if
viewPanel
.
psSysImage
.
imagePath
}}
:imgPath=
"
{{
viewPanel
.
psSysImage
.
imagePath
}}
"
{{/if}}{{/if}}
text=
"
{{
viewPanel
.
caption
}}
"
/>
</template>
<
{{
viewPanel
.
codeName
}}
TabViewPanel
name=
"
{{
name
}}
"
:context=
"state.context"
:viewParams=
"state.viewParams"
:viewSubject=
"state.viewSubject"
@
onCtrlEvent=
"onCtrlEvent"
/>
</a-tab-pane>
{{/
each
}}
</a-tabs>
{{else}}
<div
class=
"app-tab-exp-panel--empty"
>
视图不存在,请配置分页视图
</div>
{{/if}}
</div>
</template>
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/widgets/{{appEntities}}/{{ctrls@TABVIEWPANEL}}-tab-view-panel/index.ts.hbs
0 → 100644
浏览文件 @
2f391f52
import
{{
ctrl
.
codeName
}}
TabViewPanel from "./
{{
spinalCase
ctrl
.
codeName
}}
-tab-view-panel.vue";
export {
{{
ctrl
.
codeName
}}
TabViewPanel };
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/widgets/{{appEntities}}/{{ctrls@TABVIEWPANEL}}-tab-view-panel/{{ctrls@TABVIEWPANEL}}-tab-view-panel-state.ts.hbs
0 → 100644
浏览文件 @
2f391f52
export const ctrlState = {
controlCodeName: '
{{
ctrl
.
codeName
}}
',
controlName: '
{{
ctrl
.
name
}}
',
data: {},
};
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/widgets/{{appEntities}}/{{ctrls@TABVIEWPANEL}}-tab-view-panel/{{ctrls@TABVIEWPANEL}}-tab-view-panel.vue.hbs
0 → 100644
浏览文件 @
2f391f52
<script
setup
lang=
"ts"
>
import
{
Subject
}
from
'rxjs'
;
import
{
IActionParam
,
IParam
,
ControlAction
,
TabViewPanelControl
,
IContext
}
from
'@core'
;
import
{
ctrlState
}
from
'./
{{
spinalCase
ctrl
.
codeName
}}
-tab-view-panel-state'
;
{{#if
ctrl
.
embeddedPSAppDEView
}}
import
{{
ctrl
.
embeddedPSAppDEView
.
codeName
}}
from
'@views/
{{
spinalCase
ctrl
.
embeddedPSAppDEView
.
psAppModule
.
codeName
}}
/
{{
spinalCase
ctrl
.
embeddedPSAppDEView
.
codeName
}}
'
;
{{/if}}
interface
Props
{
name
:
string
,
context
:
IContext
;
viewParams
?:
IParam
;
showBusyIndicator
?:
boolean
;
viewSubject
:
Subject
<
IActionParam
>
;
}
const
props
=
withDefaults
(
defineProps
<
Props
>
(),
{
viewSubject
:
()
=>
new
Subject
<
IActionParam
>
(),
showBusyIndicator
:
true
,
})
// emit声明
interface
CtrlEmit
{
(
name
:
"onCtrlEvent"
,
value
:
IActionParam
):
void
;
}
const
emit
=
defineEmits
<
CtrlEmit
>
();
// 安装功能模块,提供状态和能力方法
const
{
state
,
onViewEvent
}
=
new
TabViewPanelControl
(
ctrlState
,
props
,
emit
).
moduleInstall
();
// 暴露内部状态及能力
defineExpose
({
state
,
name
:
'
{{
ctrl
.
name
}}
'
});
</script>
<template>
<div
class=
"app-tab-view-panel
{{#if
ctrl
.
psSysCss
}}
{{
ctrl
.
psSysCss
.
cssName
}}{{/if}}
"
>
{{#if
ctrl
.
embeddedPSAppDEView
}}
<
{{
ctrl
.
embeddedPSAppDEView
.
codeName
}}
:context
="
state
.
context
"
:viewParams=
"state.viewParams"
:viewSubject=
"state.viewSubject"
@
viewEvent=
"onViewEvent"
/>
{{else}}
<div
class=
"app-tab-view-panel--empty"
>
视图不存在,请配置选择视图
</div>
{{/if}}
</div>
</template>
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/yarn.lock
浏览文件 @
2f391f52
...
...
@@ -407,6 +407,11 @@ assert-never@^1.2.1:
resolved "https://registry.npmmirror.com/assert-never/download/assert-never-1.2.1.tgz#11f0e363bf146205fb08193b5c7b90f4d1cf44fe"
integrity sha1-EfDjY78UYgX7CBk7XHuQ9NHPRP4=
async-validator@^3.3.0:
version "3.5.2"
resolved "https://registry.yarnpkg.com/async-validator/-/async-validator-3.5.2.tgz#68e866a96824e8b2694ff7a831c1a25c44d5e500"
integrity sha512-8eLCg00W9pIRZSB781UUX/H6Oskmm8xloZfr09lz5bikRpBVDlJ3hRVuxxP1SxcwsEYfJ4IU8Q19Y8/893r3rQ==
async-validator@^4.0.0, async-validator@^4.0.7:
version "4.0.7"
resolved "https://registry.yarnpkg.com/async-validator/-/async-validator-4.0.7.tgz#034a0fd2103a6b2ebf010da75183bec299247afe"
...
...
@@ -980,6 +985,11 @@ mlly@^0.2.2:
dependencies:
import-meta-resolve "^1.1.1"
moment@2.24.0:
version "2.24.0"
resolved "https://registry.yarnpkg.com/moment/-/moment-2.24.0.tgz#0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b"
integrity sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==
monaco-editor@^0.24.0:
version "0.24.0"
resolved "https://registry.yarnpkg.com/monaco-editor/-/monaco-editor-0.24.0.tgz#990b55096bcc95d08d8d28e55264c6eb17707269"
...
...
modules/ibizlab-generator-core/src/main/resources/templ/r8/.gitignore.hbs
0 → 100644
浏览文件 @
2f391f52
*volumes
*target
.settings
*node_modules
*bin
*.project
*.classpath
*.factorypath
.history
.idea
**.iml
*.jar
*.log
.DS_Store
modules/ibizlab-generator-core/src/main/resources/templ/r8/.ibizlab-generator-ignore
0 → 100644
浏览文件 @
2f391f52
**.ibizlab-generator-ignore
**.DS_Store
**@macro/**
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r8/.ibizproject.hbs
0 → 100644
浏览文件 @
2f391f52
type: PSSYSTEM
psdevsln:
{{
system
.
getPSDevSlnId
}}
psdevslnsys:
{{
system
.
getPubSystemId
}}
psdevslnsysname:
{{
system
.
getLogicName
}}
{{#if
system
.
pSSVNInstRepo
}}
git-remote:
{{
system
.
pSSVNInstRepo
.
gitPath
}}
{{else}}
# 需自行补充 git-remote 参数,值为 git 地址
{{/if}}
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r8/config.xml.hbs
0 → 100644
浏览文件 @
2f391f52
<
#
if
pub
.
getPSDeployCenter
()??
&&
sysrun
.
getRunMode
()??
>
<
#
if
pub
.
getPSDeployCenter
().
getCIType
()??
&&
(
pub
.
getPSDeployCenter
().
getCIType
()=="
JENKINS
")
>
<
#
if
sysrun
.
getRunMode
()
==
"
STARTMSAPI
"
>
<
#
assign
depapi =
sysrun.getPSDevSlnMSDepAPI()
>
<
#
assign
configId =
depapi.getId()
>
<
#
assign
config =
"api"
+
depapi
.
getName
()
>
<
#
assign
depnode =
sysrun.getPSDevSlnMSDepAPI().getPSDCMSPlatformNode()
>
<
#
assign
depplatform =
sysrun.getPSDevSlnMSDepAPI().getPSDCMSPlatform()
>
<
#
elseif
sysrun
.
getRunMode
()
==
"
STARTMSAPP
"
>
<
#
assign
depapp =
sysrun.getPSDevSlnMSDepApp()
>
<
#
assign
configId =
depapp.getId()
>
<
#
assign
config =
"app"
+
depapp
.
getName
()
>
<
#
assign
depnode =
sysrun.getPSDevSlnMSDepApp().getPSDCMSPlatformNode()
>
<
#
assign
depplatform =
sysrun.getPSDevSlnMSDepApp().getPSDCMSPlatform()
>
</
#
if>
<
#
if
sys
.
getPSSVNInstRepo
().
getGitBranch
()??
&&
sys
.
getPSSVNInstRepo
().
getGitBranch
()!=""
>
<
#
assign
branch=
sys.getPSSVNInstRepo().getGitBranch()
>
<
#
else
>
<
#
assign
branch=
'master'
>
</
#
if>
<?xml version='1.1' encoding='UTF-8'?>
<project>
<actions/>
<description>
${sys.codeName}
</description>
<keepDependencies>
false
</keepDependencies>
<properties>
<hudson
.
model
.
ParametersDefinitionProperty
>
<parameterDefinitions>
<hudson
.
model
.
StringParameterDefinition
>
<name>
para1
</name>
<description></description>
<defaultValue>
para1
</defaultValue>
<trim>
false
</trim>
</hudson
.model.StringParameterDefinition
>
<hudson
.
model
.
StringParameterDefinition
>
<name>
para2
</name>
<description></description>
<defaultValue>
para2
</defaultValue>
<trim>
false
</trim>
</hudson
.model.StringParameterDefinition
>
</parameterDefinitions>
</hudson
.model.ParametersDefinitionProperty
>
</properties>
<scm
class=
"hudson.scm.NullSCM"
/>
<canRoam>
true
</canRoam>
<disabled>
false
</disabled>
<blockBuildWhenDownstreamBuilding>
false
</blockBuildWhenDownstreamBuilding>
<blockBuildWhenUpstreamBuilding>
false
</blockBuildWhenUpstreamBuilding>
<triggers/>
<concurrentBuild>
false
</concurrentBuild>
<builders>
<hudson
.
tasks
.
Shell
>
<command>
BUILD_ID=DONTKILLME
source /etc/profile
rm -rf ${sys.codeName?lower_case}
git clone -b ${branch} $para2 ${sys.codeName?lower_case}/
export NODE_OPTIONS=--max-old-space-size=4096
cd ${sys.codeName?lower_case}/
<
#
if
sysrun
.
getRunMode
()
==
"
STARTMSAPP
"
>
<
#
if
pub
.
getPSDeployCenter
().
getCDType
()??
&&
(
pub
.
getPSDeployCenter
().
getCDType
()=="
SWARM
")
>
mkdir -p /var/lib/jenkins/appcache/${depapp.getId()}
cd app_${pub.getPSApplication().getPKGCodeName()}/app
yarn
ln -s /var/lib/jenkins/appcache/${depapp.getId()} node_modules/.cache
yarn build
cd ..
yarn
yarn build
rm -rf app
tar -zcvf docker/
{{
projectName
}}
-app-${pub.getPSApplication().getPKGCodeName()?lower_case}.tar.gz --exclude=docker * > /dev/null
cd docker
docker build -t registry.cn-shanghai.aliyuncs.com/ibizsys/
{{
projectName
}}
-app-${pub.getPSApplication().getPKGCodeName()?lower_case}:latest .
docker push registry.cn-shanghai.aliyuncs.com/ibizsys/
{{
projectName
}}
-app-${pub.getPSApplication().getPKGCodeName()?lower_case}:latest
docker -H $para1 stack deploy --compose-file=swarm.yaml ${depplatform.getName()} --with-registry-auth
<
#
elseif
pub
.
getPSDeployCenter
().
getCDType
()??
&&
(
pub
.
getPSDeployCenter
().
getCDType
()=="
K8S
")
>
cd app_${pub.getPSApplication().getPKGCodeName()}/app
yarn
yarn build
cd ..
yarn
yarn build
rm -rf app
tar -zcvf docker/
{{
projectName
}}
-app-${pub.getPSApplication().getPKGCodeName()?lower_case}.tar.gz * > /dev/null
cd docker
docker build -t registry.cn-shanghai.aliyuncs.com/ibizsys/
{{
projectName
}}
-app-${pub.getPSApplication().getPKGCodeName()?lower_case}:latest .
docker push registry.cn-shanghai.aliyuncs.com/ibizsys/
{{
projectName
}}
-app-${pub.getPSApplication().getPKGCodeName()?lower_case}:latest
set +e
kubectl --kubeconfig ~/shanghai-demo-01 delete -f k8s.yaml -n ${depplatform.getName()?lower_case}
set -e
kubectl --kubeconfig ~/shanghai-demo-01 create -f k8s.yaml -n ${depplatform.getName()?lower_case}
<
#
else
>
echo
'
echo
"
$para1
"'
>
apppasswd.sh
chmod -R 777 *
setsid env SSH_ASKPASS=
'
./apppasswd.sh
'
DISPLAY=
'
none:0
'
ssh ${depnode.getSSHUserName()}@${depnode.getSSHIPAddr()}
"
mkdir -p ${depnode.getWorkshopPath()}/${configId}
"
setsid env SSH_ASKPASS=
'
./apppasswd.sh
'
DISPLAY=
'
none:0
'
scp -r
{{
projectName
}}
-app-${pub.getPSApplication().getPKGCodeName()?lower_case}.jar ${depnode.getSSHUserName()}@${depnode.getSSHIPAddr()}:${depnode.getWorkshopPath()}/${configId}
setsid env SSH_ASKPASS=
'
./apppasswd.sh
'
DISPLAY=
'
none:0
'
ssh ${depnode.getSSHUserName()}@${depnode.getSSHIPAddr()}
"
ps -ef | grep
'
${depnode.getWorkshopPath()}/${configId}
'
| tr -s
'
'
|cut -d
'
'
-f2,8,9 | grep -v grep | grep
'
jar
'
| cut -d
'
'
-f1|xargs --no-run-if-empty kill -9
"
setsid env SSH_ASKPASS=
'
./apppasswd.sh
'
DISPLAY=
'
none:0
'
ssh ${depnode.getSSHUserName()}@${depnode.getSSHIPAddr()}
"
source /etc/profile;source ~/.bash_profile; nohup java -jar -Xms512m -Xmx1024m -XX:PermSize=128M -XX:MaxPermSize=128m ${depnode.getWorkshopPath()}/${configId}/
{{
projectName
}}
-app-${pub.getPSApplication().getPKGCodeName()?lower_case}.jar
>>
${depnode.getWorkshopPath()}/${configId}/${sys.codeName?lower_case}_${config?lower_case}-`date --date=
'
0 days ago
'
+%Y-%m-%d`.log 2
>&
1
&"
</
#
if>
</
#
if>
<
#
if
sysrun
.
getRunMode
()
==
"
STARTMSAPI
"
>
mvn clean package -P${pub.getPSSysServiceAPI().getCodeName()?lower_case}
mvn install -P${pub.getPSSysServiceAPI().getCodeName()?lower_case}
<
#
if
pub
.
getPSDeployCenter
().
getCDType
()??
&&
(
pub
.
getPSDeployCenter
().
getCDType
()=="
SWARM
")
>
cd
{{
projectName
}}
-provider
<
#
if
depapi
.
getUserParam
("
multiplatform
","")??
&&
depapi
.
getUserParam
("
multiplatform
","")=="
true
"
>
mvn -P${pub.getPSSysServiceAPI().getCodeName()?lower_case} exec:exec@prepare
mvn -P${pub.getPSSysServiceAPI().getCodeName()?lower_case} exec:exec@buildpush
<
#
else
>
mvn -P${pub.getPSSysServiceAPI().getCodeName()?lower_case} docker:build
mvn -P${pub.getPSSysServiceAPI().getCodeName()?lower_case} docker:push
</
#
if>
docker -H $para1 stack deploy --compose-file=src/main/docker/
{{
projectName
}}
-provider-${pub.getPSSysServiceAPI().getCodeName()?lower_case}.yaml ${depplatform.getName()} --with-registry-auth
<
#
elseif
pub
.
getPSDeployCenter
().
getCDType
()??
&&
(
pub
.
getPSDeployCenter
().
getCDType
()=="
K8S
")
>
cd
{{
projectName
}}
-provider
<
#
if
depapi
.
getUserParam
("
multiplatform
","")??
&&
depapi
.
getUserParam
("
multiplatform
","")=="
true
"
>
mvn -P${pub.getPSSysServiceAPI().getCodeName()?lower_case} exec:exec@prepare
mvn -P${pub.getPSSysServiceAPI().getCodeName()?lower_case} exec:exec@buildpush
<
#
else
>
mvn -P${pub.getPSSysServiceAPI().getCodeName()?lower_case} docker:build
mvn -P${pub.getPSSysServiceAPI().getCodeName()?lower_case} docker:push
</
#
if>
set +e
kubectl --kubeconfig ~/shanghai-demo-01 delete -f src/main/docker/
{{
projectName
}}
-provider-${pub.getPSSysServiceAPI().getCodeName()?lower_case}-k8s.yaml -n ${depplatform.getName()?lower_case}
set -e
kubectl --kubeconfig ~/shanghai-demo-01 create -f src/main/docker/
{{
projectName
}}
-provider-${pub.getPSSysServiceAPI().getCodeName()?lower_case}-k8s.yaml -n ${depplatform.getName()?lower_case}
<
#
else
>
echo
'
echo
"
$para1
"'
>
apppasswd.sh
chmod -R 777 *
setsid env SSH_ASKPASS=
'
./apppasswd.sh
'
DISPLAY=
'
none:0
'
ssh ${depnode.getSSHUserName()}@${depnode.getSSHIPAddr()}
"
mkdir -p ${depnode.getWorkshopPath()}/${configId}
"
setsid env SSH_ASKPASS=
'
./apppasswd.sh
'
DISPLAY=
'
none:0
'
scp -r
{{
projectName
}}
-provider-${pub.getPSSysServiceAPI().getCodeName()?lower_case}.jar ${depnode.getSSHUserName()}@${depnode.getSSHIPAddr()}:${depnode.getWorkshopPath()}/${configId}
setsid env SSH_ASKPASS=
'
./apppasswd.sh
'
DISPLAY=
'
none:0
'
ssh ${depnode.getSSHUserName()}@${depnode.getSSHIPAddr()}
"
ps -ef | grep
'
${depnode.getWorkshopPath()}/${configId}
'
| tr -s
'
'
|cut -d
'
'
-f2,8,9 | grep -v grep | grep
'
jar
'
| cut -d
'
'
-f1|xargs --no-run-if-empty kill -9
"
setsid env SSH_ASKPASS=
'
./apppasswd.sh
'
DISPLAY=
'
none:0
'
ssh ${depnode.getSSHUserName()}@${depnode.getSSHIPAddr()}
"
source /etc/profile;source ~/.bash_profile; nohup java -jar -Xms512m -Xmx1024m -XX:PermSize=128M -XX:MaxPermSize=128m ${depnode.getWorkshopPath()}/${configId}/
{{
projectName
}}
-provider-${pub.getPSSysServiceAPI().getCodeName()?lower_case}.jar
>>
${depnode.getWorkshopPath()}/${configId}/${sys.codeName?lower_case}_${config?lower_case}-`date --date=
'
0 days ago
'
+%Y-%m-%d`.log 2
>&
1
&"
</
#
if>
</
#
if>
</command>
</hudson
.tasks.Shell
>
</builders>
<publishers>
<hudson
.
plugins
.
ws__cleanup
.
WsCleanup
plugin=
"ws-cleanup@0.34"
>
<patterns
class=
"empty-list"
/>
<deleteDirs>
false
</deleteDirs>
<skipWhenFailed>
false
</skipWhenFailed>
<cleanWhenSuccess>
true
</cleanWhenSuccess>
<cleanWhenUnstable>
true
</cleanWhenUnstable>
<cleanWhenFailure>
true
</cleanWhenFailure>
<cleanWhenNotBuilt>
true
</cleanWhenNotBuilt>
<cleanWhenAborted>
true
</cleanWhenAborted>
<notFailBuild>
false
</notFailBuild>
<cleanupMatrixParent>
false
</cleanupMatrixParent>
<externalDelete></externalDelete>
</hudson
.plugins.ws__cleanup.WsCleanup
>
</publishers>
<buildWrappers/>
</project>
</
#
if>
</
#
if>
modules/ibizlab-generator-core/src/main/resources/templ/r8/pom.xml.hbs
0 → 100644
浏览文件 @
2f391f52
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<modelVersion>
4.0.0
</modelVersion>
<artifactId>
{{
projectName
}}
</artifactId>
<packaging>
pom
</packaging>
<parent>
<groupId>
{{
packageName
}}
</groupId>
<artifactId>
{{
projectName
}}
-dependencies
</artifactId>
<version>
1.0.0.0
</version>
<relativePath>
{{
projectName
}}
-dependencies/pom.xml
</relativePath>
</parent>
<modules>
<!-- dependencies -->
<module>
{{
projectName
}}
-dependencies
</module>
<!-- cores -->
<module>
{{
projectName
}}
-core
</module>
<!-- services -->
<module>
{{
projectName
}}
-provider
</module>
</modules>
<dependencies>
<dependency>
<groupId>
net.ibizsys.central.r8
</groupId>
<artifactId>
ibiz-central-r8
</artifactId>
<version>
0.2.15
</version>
</dependency>
<dependency>
<groupId>
org.apache.rocketmq
</groupId>
<artifactId>
rocketmq-client
</artifactId>
<version>
4.7.0
</version>
</dependency>
</dependencies>
<repositories>
<repository>
<id>
ibizmvnrepository
</id>
<name>
ibizmvnrepository
</name>
<url>
http://172.16.240.220:8081/nexus/content/groups/public/
</url>
<layout>
default
</layout>
<releases>
<enabled>
true
</enabled>
</releases>
<snapshots>
<enabled>
true
</enabled>
<updatePolicy>
always
</updatePolicy>
</snapshots>
</repository>
</repositories>
</project>
modules/ibizlab-generator-core/src/main/resources/templ/r8/{{projectName}}-core/pom.xml.hbs
0 → 100644
浏览文件 @
2f391f52
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<modelVersion>
4.0.0
</modelVersion>
<parent>
<artifactId>
{{
projectName
}}
</artifactId>
<groupId>
{{
packageName
}}
</groupId>
<version>
1.0.0.0
</version>
</parent>
<artifactId>
{{
projectName
}}
-core
</artifactId>
<dependencies>
<dependency>
<groupId>
org.springframework.data
</groupId>
<artifactId>
spring-data-commons
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.security
</groupId>
<artifactId>
spring-security-core
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.cloud
</groupId>
<artifactId>
spring-cloud-starter-security
</artifactId>
</dependency>
<!-- JBPM -->
<dependency>
<groupId>
org.jbpm
</groupId>
<artifactId>
jbpm-flow-builder
</artifactId>
</dependency>
<dependency>
<groupId>
org.jbpm
</groupId>
<artifactId>
jbpm-bpmn2
</artifactId>
</dependency>
<!-- Drools -->
<dependency>
<groupId>
org.drools
</groupId>
<artifactId>
drools-compiler
</artifactId>
</dependency>
<dependency>
<groupId>
org.drools
</groupId>
<artifactId>
drools-core
</artifactId>
</dependency>
<dependency>
<groupId>
org.kie
</groupId>
<artifactId>
kie-spring
</artifactId>
</dependency>
<dependency>
<groupId>
org.kie
</groupId>
<artifactId>
kie-api
</artifactId>
</dependency>
<!-- <dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
</dependency> -->
<!--MapStruct高性能属性映射工具-->
<dependency>
<groupId>
org.mapstruct
</groupId>
<artifactId>
mapstruct-jdk8
</artifactId>
</dependency>
<dependency>
<groupId>
org.mapstruct
</groupId>
<artifactId>
mapstruct-processor
</artifactId>
</dependency>
<!--baomidou-jobs定时服务 -->
<dependency>
<groupId>
com.baomidou
</groupId>
<artifactId>
jobs-spring-boot-starter
</artifactId>
</dependency>
<dependency>
<groupId>
io.github.openfeign
</groupId>
<artifactId>
feign-httpclient
</artifactId>
</dependency>
</dependencies>
<properties>
<maven
.
build
.
timestamp
.
format
>
yyyyMMddHHmmss
</maven
.build.timestamp.format
>
</properties>
<profiles>
<profile>
<id>
diff
</id>
<build>
<plugins>
<plugin>
<groupId>
org.liquibase
</groupId>
<artifactId>
liquibase-maven-plugin
</artifactId>
<version>
${liquibase.version}'}
</version>
<executions>
<execution>
<id>
prepare-newdb
</id>
<configuration>
<changeLogFile>
${project.basedir}'}/src/main/resources/liquibase/h2_table.xml
</changeLogFile>
<driver>
org.h2.Driver
</driver>
<url>
jdbc:h2:file:${project.build.directory}/db/new;MODE=mysql
</url>
<username>
root
</username>
<dropFirst>
true
</dropFirst>
</configuration>
<phase>
process-resources
</phase>
<goals>
<goal>
update
</goal>
</goals>
</execution>
<execution>
<id>
prepare-olddb
</id>
<configuration>
<changeLogFile>
${project.basedir}/src/main/resources/liquibase/master_table.xml
</changeLogFile>
<driver>
org.h2.Driver
</driver>
<url>
jdbc:h2:file:${project.build.directory}/db/last;MODE=mysql
</url>
<username>
root
</username>
<dropFirst>
true
</dropFirst>
</configuration>
<phase>
process-resources
</phase>
<goals>
<goal>
update
</goal>
</goals>
</execution>
<execution>
<id>
make-diff
</id>
<configuration>
<changeLogFile>
${project.basedir}/src/main/resources/liquibase/empty.xml
</changeLogFile>
<diffChangeLogFile>
${project.basedir}/src/main/resources/liquibase/changelog/${maven.build.timestamp}_changelog.xml
</diffChangeLogFile>
<driver>
org.h2.Driver
</driver>
<url>
jdbc:h2:file:${project.build.directory}/db/last;MODE=mysql
</url>
<username>
root
</username>
<password></password>
<referenceUrl>
jdbc:h2:file:${project.build.directory}/db/new;MODE=mysql
</referenceUrl>
<referenceDriver>
org.h2.Driver
</referenceDriver>
<referenceUsername>
root
</referenceUsername>
<verbose>
true
</verbose>
<logging>
debug
</logging>
<contexts>
!test
</contexts>
<diffExcludeObjects>
Index:.*,table:ibzfile,ibzuser,ibzdataaudit,ibzcfg,IBZFILE,IBZUSER,IBZDATAAUDIT,IBZCFG
</diffExcludeObjects>
</configuration>
<phase>
process-resources
</phase>
<goals>
<goal>
diff
</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>
modules/ibizlab-generator-core/src/main/resources/templ/r8/{{projectName}}-core/src/main/java/{{packageName}}/core/config/JobsConfiguration.java.hbs
0 → 100644
浏览文件 @
2f391f52
package
{{
packageName
}}
.core.config;
import com.baomidou.jobs.starter.EnableJobs;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Configuration;
@EnableJobs
@Configuration
@ConditionalOnProperty(name = "jobs.enabled", havingValue = "true", matchIfMissing = false)
public class JobsConfiguration {
}
modules/ibizlab-generator-core/src/main/resources/templ/r8/{{projectName}}-core/src/main/java/{{packageName}}/core/runtime/ISystemRuntime.java.hbs
0 → 100644
浏览文件 @
2f391f52
package
{{
packageName
}}
.core.runtime;
public interface ISystemRuntime extends net.ibizsys.central.r8.IR8SystemRuntime {
{{#
each
system
.
allPSDataEntities
as
|
entity
|
}}
default
{{
packageName
}}
.core.
{{
lowerCase
entity
.
pSSystemModule
.
codeName
}}
.service.I
{{
pascalCase
entity
.
codeName
}}
Service get
{{
pascalCase
entity
.
codeName
}}
Service(){
return (
{{
packageName
}}
.core.
{{
lowerCase
entity
.
pSSystemModule
.
codeName
}}
.service.I
{{
pascalCase
entity
.
codeName
}}
Service) this.getDEService("
{{
entity
.
dynaModelFilePath
}}
");
}
{{/
each
}}
}
modules/ibizlab-generator-core/src/main/resources/templ/r8/{{projectName}}-core/src/main/java/{{packageName}}/core/runtime/SystemRuntime.java.hbs
0 → 100644
浏览文件 @
2f391f52
package
{{
packageName
}}
.core.runtime;
public class SystemRuntime extends SystemRuntimeBase {
}
modules/ibizlab-generator-core/src/main/resources/templ/r8/{{projectName}}-core/src/main/java/{{packageName}}/core/runtime/SystemRuntimeBase.java.hbs
0 → 100644
浏览文件 @
2f391f52
package
{{
packageName
}}
.core.runtime;
import net.ibizsys.central.dataentity.IDataEntityRuntime;
import net.ibizsys.central.dataentity.service.IDEService;
import net.ibizsys.central.r8.R8SystemRuntime;
import net.ibizsys.model.IPSDynaInstService;
import net.ibizsys.model.res.IPSSysUtil;
import net.ibizsys.runtime.res.ISysUtilRuntime;
public class SystemRuntimeBase extends R8SystemRuntime implements ISystemRuntime {
@Override
public String getName() {
return "
{{
system
.
name
}}
";
}
{{#if
system
.
allPSSysUtils
}}
@Override
protected ISysUtilRuntime createDefaultSysUtilRuntime(IPSSysUtil iPSSysUtil) {
{{#
each
system
.
allPSSysUtils
as
|
sysUtil
|
}}
{{#if
(
and
(
eq
sysUtil
.
utilType
"USER"
))
(
unless
sysUtil
.
pSSysSFPlugin
)
}}
if(iPSSysUtil.getCodeName().equals("
{{
sysUtil
.
codeName
}}
"))
return new
{{
packageName
}}
.core.runtime.sysutil.
{{
sysUtil
.
codeName
}}
();
{{/if}}
{{/
each
}}
return super.createDefaultSysUtilRuntime(iPSSysUtil);
}
{{/if}}
@Override
protected void onInit() throws Exception {
this.registerDEServiceObjs();
super.onInit();
}
@Override
public IDEService getDEService(IDataEntityRuntime iDataEntityRuntime) {
if (!this.getSystemGatewayContext().isMultiSystemMode()) {
return this.getSystemGatewayContext().getDEService("
{{
packageName
}}
.core.runtime.ISystemRuntime", iDataEntityRuntime.getId());
}
return super.getDEService(iDataEntityRuntime);
}
protected void registerDEServiceObjs() {
{{#
each
system
.
allPSDataEntities
as
|
entity
|
}}
this.registerDEServiceObj("
{{
entity
.
dynaModelFilePath
}}
","{entityService}");
{{/
each
}}
}
}
modules/ibizlab-generator-core/src/main/resources/templ/r8/{{projectName}}-core/src/main/java/{{packageName}}/core/runtime/dict/StaticDict.java.ftl
0 → 100644
浏览文件 @
2f391f52
<#
assign
hasCodeList
=
false
>
<#
if
sys
.
getAllPSCodeLists
()??>
<#
list
sys
.
getAllPSCodeLists
()
as
codeList
>
<#
if
codeList
.
getCodeListType
()==
'STATIC'
>
<#
assign
hasCodeList
=
true
>
<#
break
>
</#
if
>
</#
list
>
</#
if
>
<#
if
hasCodeList
>
package
{{
packageName
}}.
core
.
runtime
.
dict
;
import
lombok
.
Getter
;
public
class
StaticDict
{
<#
if
sys
.
getAllPSCodeLists
()??>
<#
list
sys
.
getAllPSCodeLists
()
as
codeList
>
<#
assign
hasCodeItem
=
calcHasCodeItem
(
codeList
)>
<#
if
codeList
.
getCodeListType
()==
'STATIC'
&&
hasCodeItem
>
<#
assign
codeListName
=
codeList
.
codeName
>
<#
comment
>
数值代码表
int
,其余为
String
</#
comment
>
<#
if
codeList
.
isCodeItemValueNumber
()>
<#
assign
valueType
=
"int"
>
<#
else
>
<#
assign
valueType
=
"String"
>
</#
if
>
/**
*
代码表
[${
codeList
.
name
}]
*/
@
Getter
public
enum
${
codeListName
}
{
<#
if
codeList
.
getAllPSCodeItems
()??>
<#
list
codeList
.
getAllPSCodeItems
()
as
codeItem
>
<#
assign
codeItemValue
=
codeItem
.
getValue
()>
<#
assign
codeItemText
=
codeItem
.
getText
()>
${
codeItem
.
codeName
?
upper_case
}(<#
if
valueType
==
'int'
>${
codeItemValue
}<#
else
>
"${codeItemValue}"
</#
if
>,
"${codeItemText}"
)<#
if
codeItem_has_next
>,<#
else
>;</#
if
>
</#
list
>
</#
if
>
private
${
valueType
}
value
;
private
String
text
;
private
String
valueSeparator
=
"<#if codeList.getValueSeparator()??>${codeList.getValueSeparator()}</#if>"
;
private
String
textSeparator
=
"<#if codeList.getTextSeparator()??>${codeList.getTextSeparator()}</#if>"
;
private
String
emptyText
=
"<#if codeList.getEmptyText()?? && codeList.getEmptyText()!='未定义'>${codeList.getEmptyText()}</#if>"
;
${
codeListName
}(${
valueType
}
value
,
String
text
)
{
this
.
value
=
value
;
this
.
text
=
text
;
}
}
</#
if
>
</#
list
>
</#
if
>
}
</#
if
>
<#
comment
>
替换代码表中的特殊字符
</#
comment
>
<#
function
replaceCodeItemValue
codeItemValue
>
<#
assign
result
=
codeItemValue
?
replace
(
"[^
\\
w]+"
,
"_"
,
"r"
)>
<#
return
result
>
</#
function
>
<#
comment
>
判断是否含有代码项
</#
comment
>
<#
function
calcHasCodeItem
codeList
>
<#
assign
hasCodeItem
=
false
>
<#
if
codeList
.
getAllPSCodeItems
()??>
<#
list
codeList
.
getAllPSCodeItems
()
as
codeItem
>
<#
assign
hasCodeItem
=
true
>
<#
break
>
</#
list
>
</#
if
>
<#
return
hasCodeItem
>
</#
function
>
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r8/{{projectName}}-core/src/main/java/{{packageName}}/core/runtime/sysutil/I{{syUtils}}.java.hbs
0 → 100644
浏览文件 @
2f391f52
{{#if
(
and
(
eq
sysUtil
.
utilType
"USER"
))
(
unless
sysUtil
.
pSSysSFPlugin
)
}}
package
{{
packageName
}}
.core.runtime.sysutil;
import net.ibizsys.central.r8.sysutil.IR8SysUtilRuntime;
public interface I
{{
sysUtil
.
codeName
}}
extends IR8SysUtilRuntime {
}
{{/if}}
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r8/{{projectName}}-core/src/main/java/{{packageName}}/core/runtime/sysutil/{{syUtils}}.java.hbs
0 → 100644
浏览文件 @
2f391f52
{{#if
(
and
(
eq
sysUtil
.
utilType
"USER"
))
(
unless
sysUtil
.
pSSysSFPlugin
)
}}
package
{{
packageName
}}
.core.runtime.sysutil;
import net.ibizsys.central.r8.sysutil.IR8SysUtilRuntime;
import net.ibizsys.central.r8.sysutil.R8SysUtilRuntimeBase;
import
{{
packageName
}}
.core.runtime.ISystemRuntime;
public class
{{
sysUtil
.
codeName
}}
extends R8SysUtilRuntimeBase implements I
{{
sysUtil
.
codeName
}}
{
public ISystemRuntime getSystemRuntime() {
return (ISystemRuntime) super.getSystemRuntime();
}
}
{{/if}}
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r8/{{projectName}}-core/src/main/java/{{packageName}}/core/{{modules}}/dto/{{apiDtos@DEFAULT}}.java.hbs
0 → 100644
浏览文件 @
2f391f52
package
{{
packageName
}}
.core.
{{
modules
}}
.dto;
import java.sql.Timestamp;
import java.util.List;
import java.math.BigDecimal;
import net.ibizsys.central.util.EntityDTO;
import com.fasterxml.jackson.annotation.JsonIgnore;
import net.ibizsys.runtime.util.DataTypeUtils;
public class
{{
apiDto
.
codeName
}}
extends EntityDTO {
{{#
each
apiDto
.
apiDtoFields
as
|
field
|
}}
/**
*
{{
field
.
logicName
}}
*/
public final static String FIELD_
{{
upperCase
field
.
codeName
}}
= "
{{
field
.
codeName
}}
";
/**
* 设置「
{{
field
.
logicName
}}
」
*
* @param
{{
camelCase
codeName
}}
*/
@JsonIgnore
public
{{
apiDto
.
codeName
}}
set
{{
pascalCase
codeName
}}
(
{{
javaType
}}
{{
camelCase
codeName
}}
) {
this._set(FIELD_
{{
upperCase
field
.
codeName
}}
,
{{
camelCase
codeName
}}
);
return this;
}
/**
* 获取「
{{
field
.
logicName
}}
」值
*
*/
@JsonIgnore
public
{{
javaType
}}
get
{{
pascalCase
codeName
}}
() {
{{#if
(
or
(
eq
javaType
'Integer'
)
(
eq
javaType
'Long'
)
(
eq
javaType
'Double'
)
(
eq
javaType
'BigInteger'
)
(
eq
javaType
'BigDecimal'
)
(
eq
javaType
'Timestamp'
))
}}
try{
{{#if
(
eq
javaType
'Timestamp'
)
}}
return DataTypeUtils.getDateTimeValue(this._get(FIELD_
{{
upperCase
field
.
codeName
}}
),null);
{{else}}
return DataTypeUtils.get
{{
javaType
}}
Value(this._get(FIELD_
{{
upperCase
field
.
codeName
}}
),null);
{{/if}}
}catch (Exception e){
throw new RuntimeException(e);
}
{{else}}
return (
{{
javaType
}}
) this._get(FIELD_
{{
upperCase
field
.
codeName
}}
);
{{/if}}
}
/**
* 判断 「
{{
field
.
logicName
}}
」是否有值
*
*/
@JsonIgnore
public boolean contains
{{
pascalCase
codeName
}}
() {
return this._contains(FIELD_
{{
upperCase
field
.
codeName
}}
);
}
/**
* 重置 「
{{
field
.
logicName
}}
」
*
*/
@JsonIgnore
public
{{
apiDto
.
codeName
}}
reset
{{
pascalCase
codeName
}}
() {
this._reset(FIELD_
{{
upperCase
field
.
codeName
}}
);
return this;
}
{{/
each
}}
}
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r8/{{projectName}}-core/src/main/java/{{packageName}}/core/{{modules}}/service/I{{entities@SQL}}Service.java.hbs
0 → 100644
浏览文件 @
2f391f52
package
{{
packageName
}}
.core.
{{
entity
.
module
}}
.service;
{{#
each
entity
.
allPSDEMethodDTOs
as
|
deMethodDTO
|
}}
{{#if
(
or
(
eq
deMethodDTO
.
type
'DEFAULT'
)
(
eq
deMethodDTO
.
type
'DEACTIONINPUT'
))
}}
import
{{
packageName
}}
.core.
{{
entity
.
module
}}
.dto.
{{
deMethodDTO
.
name
}}
;
{{/if}}
{{/
each
}}
import net.ibizsys.central.dataentity.service.IDEService;
import net.ibizsys.central.util.IEntityDTO;
import net.ibizsys.central.util.ISearchContextDTO;
import net.ibizsys.central.util.SearchContextDTO;
import net.ibizsys.model.dataentity.action.IPSDEAction;
import net.ibizsys.model.dataentity.ds.IPSDEDataSet;
import net.ibizsys.model.dataentity.service.IPSDEMethodDTO;
import java.math.BigDecimal;
import java.util.List;
import org.springframework.data.domain.Page;
/**
*
{{
entity
.
logicName
}}
{{#if
entity
.
memo
}}
*
{{
entity
.
memo
}}
{{/if}}
*
*/
public interface I
{{
entity
.
codeName
}}
Service extends IDEService
<
{{
entity
.
defaultPSDEMethodDTO
.
name
}}
,
SearchContextDTO
>
{
{{#
each
entity
.
allPSDEFields
as
|
field
|
}}
/**
* 属性:
{{
field
.
logicName
}}
*/
String FIELD_
{{
upperCase
field
.
name
}}
= "
{{
field
.
name
}}
";
{{/
each
}}
{{#
each
entity
.
allPSDEActions
as
|
action
|
}}
/**
* 行为:
{{
action
.
logicName
}}
*/
String ACTION_
{{
upperCase
action
.
name
}}
= "
{{
action
.
name
}}
";
{{/
each
}}
{{#
each
entity
.
allPSDEDataQueries
as
|
query
|
}}
/**
* 查询:
{{
query
.
logicName
}}
*/
String DATAQUERY_
{{
upperCase
query
.
name
}}
= "
{{
query
.
name
}}
";
{{/
each
}}
{{#
each
entity
.
allPSDEDataSets
as
|
dataSet
|
}}
/**
* 集合:
{{
dataSet
.
logicName
}}
*/
String DATASET_
{{
upperCase
dataSet
.
name
}}
= "
{{
dataSet
.
name
}}
";
{{/
each
}}
@Override
default String getDataEntityId() {
return "
{{
entity
.
dynaModelFilePath
}}
";
}
@Override
default IEntityDTO createEntityDTO(IPSDEMethodDTO iPSDEMethodDTO) {
String strName = iPSDEMethodDTO.getName();
switch (strName) {
{{#
each
entity
.
allPSDEMethodDTOs
as
|
deMethodDTO
|
}}
{{#if
(
or
(
eq
deMethodDTO
.
type
'DEFAULT'
)
(
eq
deMethodDTO
.
type
'DEACTIONINPUT'
))
}}
case "
{{
deMethodDTO
.
name
}}
":
return new
{{
deMethodDTO
.
name
}}
();
{{/if}}
{{/
each
}}
default:
return null;
}
}
@Override
default ISearchContextDTO createSearchContextDTO(IPSDEMethodDTO iPSDEMethodDTO) {
return new SearchContextDTO();
}
@Override
default Object executeAction(String strActionName, IPSDEAction iPSDEAction, Object[] args) throws Throwable {
switch (strActionName.toLowerCase()) {
{{#
each
entity
.
allPSDEActions
as
|
deAction
|
}}
{{#if
deAction
.
enableBackend
}}
case "
{{
lowerCase
deAction
.
name
}}
" :
{{#if
neq
deAction
.
pSDEActionReturn
.
type
'VOID'
}}
return this.{srfmethodname(deAction.getCodeName())}(({getDEActionInputType(deAction)}) args[0]);
{{else}}
this.{srfmethodname(deAction.getCodeName())}(({getDEActionInputType(deAction)}) args[0]);
return null;
{{/if}}
{{/if}}
{{/
each
}}
}
return this.getDataEntityRuntime().executeAction(strActionName, iPSDEAction, args, true);
}
@Override
default Object fetchDataSet(String strDataSetName, IPSDEDataSet iPSDEDataSet, Object[] args) throws Throwable {
switch (strDataSetName.toLowerCase()) {
{{#
each
entity
.
allPSDEDataSets
as
|
deDataSet
|
}}
case "
{{
lowerCase
deDataSet
.
name
}}
" :
return this.fetch
{{
pascalCase
deDataSet
.
codeName
}}
((ISearchContextDTO) args[0]);
{{/
each
}}
}
return this.getDataEntityRuntime().fetchDataSet(strDataSetName, iPSDEDataSet, args, true);
}
{{#
each
entity
.
allPSDEActions
as
|
deAction
|
}}
{{#if
deAction
.
enableBackend
}}
/**
*
{{#if
deAction
.
logicName
}}{{
deAction
.
logicName
}}{{else}}{{
deAction
.
name
}}{{/if}}
{{#if
deAction
.
memo
}}
*
{{
deAction
.
memo
}}
{{/if}}
*
* @param dto
* @throws Throwable
*/
default {getDEActionReturn(deAction)} {srfmethodname(deAction.getCodeName())}({getDEActionInput(deAction)}) throws Throwable {
{{#if
neq
deAction
.
pSDEActionReturn
.
type
'VOID'
}}
return ({getDEActionReturn(deAction)})
{{/if}}
this.getDataEntityRuntime().executeAction("{deAction.getName()}", null, new Object[]
{{
getDEActionInputParams
(
deAction
)
}}
, true);
}
{{/if}}
{{/
each
}}
{{#
each
entity
.
allPSDEDataSets
as
|
dataSet
|
}}
{{#
neq
dataSet
.
ctionHoldera
2
}}
/**
*
{{#if
dataSet
.
logicName
}}{{
dataSet
.
logicName
}}{{else}}{{
dataSet
.
name
}}{{/if}}
{{#if
dataSet
.
memo
}}
*
{{
dataSet
.
memo
}}
{{/if}}
*
* @param dto
* @return
* @throws Throwable
*/
default Page
<
{{
entity
.
defaultPSDEMethodDTO
.
name
}}
>
fetch
{{
pascalCase
dataSet
.
codeName
}}
(ISearchContextDTO dto) throws Throwable {
return (Page
<
{{
entity
.
defaultPSDEMethodDTO
.
name
}}
>
) this.getDataEntityRuntime().fetchDataSet("
{{
dataSet
.
name
}}
", null, new Object[]{dto}, true);
}
{{/
neq
}}
{{/
each
}}
{{#
each
entity
.
allPSDEDataQueries
as
|
dataQuery
|
}}
/**
*
{{#if
dataQuery
.
logicName
}}{{
dataQuery
.
logicName
}}{{else}}{{
dataQuery
.
name
}}{{/if}}
{{#if
dataQuery
.
memo
}}
*
{{
dataQuery
.
memo
}}
{{/if}}
*
* @param dto
* @return
* @throws Throwable
*/
default List
<
{{
entity
.
defaultPSDEMethodDTO
.
name
}}
>
select
{{
pascalCase
dataQuery
.
codeName
}}
(ISearchContextDTO dto) throws Throwable {
Object obj = this.getDataEntityRuntime().selectDataQuery("
{{
dataQuery
.
name
}}
", dto);
return (List
<
{{
entity
.
defaultPSDEMethodDTO
.
name
}}
>
) obj;
}
{{/
each
}}
}
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r8/{{projectName}}-core/src/main/java/{{packageName}}/core/{{modules}}/service/impl/{{entities@SQL}}ServiceImpl.java.hbs
0 → 100644
浏览文件 @
2f391f52
package
{{
packageName
}}
.core.
{{
entity
.
module
}}
.service.impl;
{{#
each
entity
.
allPSDEMethodDTOs
as
|
deMethodDTO
|
}}
{{#if
(
or
(
eq
deMethodDTO
.
type
'DEFAULT'
)
(
eq
deMethodDTO
.
type
'DEACTIONINPUT'
))
}}
import
{{
packageName
}}
.core.
{{
entity
.
module
}}
.dto.
{{
deMethodDTO
.
name
}}
;
{{/if}}
{{/
each
}}
import net.ibizsys.central.dataentity.service.DEServiceBase;
import net.ibizsys.central.dataentity.service.IDEService;
import net.ibizsys.central.r8.IR8SystemGateway;
import
{{
packageName
}}
.core.runtime.ISystemRuntime;
import net.ibizsys.model.dataentity.action.IPSDEAction;
import net.ibizsys.central.util.SearchContextDTO;
import net.ibizsys.model.dataentity.ds.IPSDEDataSet;
import net.ibizsys.runtime.dataentity.DataEntityRuntimeException;
import net.ibizsys.runtime.dataentity.IDataEntityRuntimeContext;
import net.ibizsys.runtime.dataentity.action.IDEActionPluginRuntime;
import net.ibizsys.runtime.dataentity.ds.IDEDataSetPluginRuntime;
import net.ibizsys.runtime.util.ActionSessionManager;
import net.ibizsys.runtime.util.Errors;
import net.ibizsys.runtime.util.IAction;
import net.ibizsys.runtime.util.ITransactionalUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
import java.math.BigDecimal;
import java.util.List;
@Service
public class
{{
entity
.
codeName
}}
ServiceImpl extends DEServiceBase
<
{{
entity
.
defaultPSDEMethodDTO
.
name
}}
,
SearchContextDTO
>
implements
{{
packageName
}}
.core.
{{
entity
.
module
}}
.service.I
{{
entity
.
codeName
}}
Service {
@Autowired(required = false)
IR8SystemGateway systemGateway;
ISystemRuntime iSystemRuntime;
@Override
public ISystemRuntime getSystemRuntime() {
if (this.iSystemRuntime == null)
this.iSystemRuntime = systemGateway.getSystemRuntime(ISystemRuntime.class, false);
return this.iSystemRuntime;
}
@PostConstruct
private void postConstruct() throws Exception {
if (systemGateway != null
&&
!systemGateway.isMultiSystemMode()) {
try {
IDEService iDEService = systemGateway.getDEService("
{{
packageName
}}
.core.runtime.ISystemRuntime", this.getDataEntityId());
if(iDEService.getClass() ==
{{
entity
.
codeName
}}
ServiceImpl.class)
systemGateway.registerDEService("
{{
packageName
}}
.core.runtime.ISystemRuntime", this.getDataEntityId(), this);
}catch (Exception e){
systemGateway.registerDEService("
{{
packageName
}}
.core.runtime.ISystemRuntime", this.getDataEntityId(), this);
}
}
}
@Override
protected void onPrepare() {
super.onPrepare();
try {
{{#
each
entity
.
allPSDEActions
as
|
deAction
|
}}
<
#
if
deAction
.
isEnableBackend
()
&&
!(
deAction
.
getPSSysSFPlugin
()??)
>
{{#if
(
eq
deAction
.
actionType
'USERCUSTOM'
)
}}
this.getDataEntityRuntime().registerDEActionPluginRuntime(ACTION_
{{
upperCase
deAction
.
name
}}
, new IDEActionPluginRuntime() {
@Override
public Object execute(IDataEntityRuntimeContext iDataEntityRuntimeContext, IPSDEAction iPSDEAction, Object[] args, Object actionData) throws Throwable {
{{#if
neq
deAction
.
pSDEActionReturn
.
type
'VOID'
}}
return ActionSessionManager.getCurrentSession().execute(new IAction() {
@Override
public Object execute(Object[] args) throws Throwable {
return on
{{
pascalCase
deAction
.
codeName
}}
(({getDEActionInputType(deAction)}) args[0]);
}
}, args, ITransactionalUtil.PROPAGATION_REQUIRED);
{{else}}
return ActionSessionManager.getCurrentSession().execute(new IAction() {
@Override
public Object execute(Object[] args) throws Throwable {
on
{{
pascalCase
deAction
.
codeName
}}
(({getDEActionInputType(deAction)}) args[0]);
return null;
}
}, args, ITransactionalUtil.PROPAGATION_REQUIRED);
{{/if}}
}
});
{{
elseif
deAction
.
isRenderBeforeAfter
}}
this.getDataEntityRuntime().registerDEActionPluginRuntime(ACTION_
{{
upperCase
deAction
.
name
}}
, new IDEActionPluginRuntime() {
@Override
public Object execute(IDataEntityRuntimeContext iDataEntityRuntimeContext, IPSDEAction iPSDEAction, Object[] args, Object actionData) throws Throwable {
{getDEActionInputType2(deAction)} dto = ({getDEActionInputType2(deAction)}) args[0];
onBefore{deAction.getCodeName()}(dto);
<
#
if
actionReturnType
!=
'
VOID
'
>
{getDEActionReturn(deAction)} result = ({getDEActionReturn(deAction)})
</
#
if>
iDataEntityRuntimeContext.executeActionReal(iPSDEAction, args, actionData);
<
#
if
actionReturnType
!=
'
VOID
'
>
return onAfter{deAction.getCodeName()}(
<
#
if
actionReturnType
!=
'
VOID
'
>
result,
</
#
if>
dto);
<
#
else
>
onAfter{deAction.getCodeName()}(
<
#
if
actionReturnType
!=
'
VOID
'
>
result,
</
#
if>
dto);
return null;
</
#
if>
}
});
</
#
if>
{{/if}}
{{/
each
}}
//结果集
{{#
each
entity
.
allPSDEDataSets
as
|
dataSet
|
}}
this.getDataEntityRuntime().registerDEDataSetPluginRuntime(DATASET_
{{
upperCase
dataSet
.
name
}}
, new IDEDataSetPluginRuntime() {
@Override
public Object fetch(IDataEntityRuntimeContext iDataEntityRuntimeContext, IPSDEDataSet iPSDEDataSet, Object[] args, Object actionData) throws Throwable {
return iDataEntityRuntimeContext.fetchDataSetReal(iPSDEDataSet, args, actionData);
}
});
{{/
each
}}
} catch (Throwable e) {
throw new RuntimeException(String.format("准备实体服务发生异常,%s", e.getMessage()), e);
}
}
{{#
each
entity
.
allPSDEActions
as
|
deAction
|
}}
{{#if
(
and
deAction
.
enableBackend
(
unless
deAction
.
pSSysSFPlugin
))
}}
{{#if
(
eq
deAction
.
actionType
'USERCUSTOM'
)
}}
protected {getDEActionReturn(deAction)} on
{{
pascalCase
deAction
.
codeName
}}
({getDEActionInput(deAction)}) throws Throwable {
throw new DataEntityRuntimeException(this.getDataEntityRuntime(), String.format("行为[%s]未实现", "
{{#if
deAction
.
logicName
}}{{
deAction
.
logicName
}}{{else}}{{
deAction
.
name
}}{{/if}}
"), Errors.NOTIMPL);
}
{{
elseif
deAction
.
isRenderBeforeAfter
}}
protected void onBefore
{{
pascalCase
deAction
.
codeName
}}
({getDEActionInput2(deAction)}) throws Throwable {
}
protected {getDEActionReturn(deAction)} onAfter
{{
pascalCase
deAction
.
codeName
}}
(
{{#if
neq
deAction
.
pSDEActionReturn
.
type
'VOID'
}}
{getDEActionReturn(deAction)} result,
{{/if}}
{getDEActionInput2(deAction)}) throws Throwable {
{{#if
neq
deAction
.
pSDEActionReturn
.
type
'VOID'
}}
return result;
{{/if}}
}
{{/if}}
{{/if}}
{{/
each
}}
}
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r8/{{projectName}}-core/src/main/resources/i18n/{{projectName}}/messages_%LANGUAGE%.properties.ftl
0 → 100644
浏览文件 @
2f391f52
<#ibiztemplate>
TARGET=PSSYSLOCALE
</#ibiztemplate>
#${item.name}
<#list sys.getAllPSLanguageReses() as res>
<#assign content=res.getContent(item.id,false)>
<#if content?? && content?length gt 0>
${res.getLanResTag()}=${srfibiz5msg(content)}
</#if>
</#list>
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r8/{{projectName}}-core/src/main/resources/liquibase/changelog/init.xml.ftl
0 → 100644
浏览文件 @
2f391f52
<?xml version="1.1" encoding="UTF-8" standalone="no"?>
<databaseChangeLog
xmlns=
"http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:ext=
"http://www.liquibase.org/xml/ns/dbchangelog-ext"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"
>
</databaseChangeLog>
modules/ibizlab-generator-core/src/main/resources/templ/r8/{{projectName}}-core/src/main/resources/liquibase/config/init_h2.sql.ftl
0 → 100644
浏览文件 @
2f391f52
<#if sysrun.getPSDBDevInst()??>
<#assign dbinst = sysrun.getPSDBDevInst()>
create schema if not exists ${dbinst.getUserName()};
set schema ${dbinst.getUserName()};
<#--CREATE ALIAS IF NOT EXISTS TO_NUMBER AS $$-->
<#--Long toNumber(String value) {-->
<#--return value == null ? null : Long.valueOf(value);-->
<#--}-->
<#--$$;-->
</#if>
modules/ibizlab-generator-core/src/main/resources/templ/r8/{{projectName}}-core/src/main/resources/liquibase/empty.xml.ftl
0 → 100644
浏览文件 @
2f391f52
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xmlns=
"http://www.liquibase.org/xml/ns/dbchangelog"
xsi:schemaLocation=
"http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd"
>
<!--liquibase启动时需要指定chanlogxml,若无changelog,则使用此xml来初始化liquibase,使liquibase能正常启动 -->
</databaseChangeLog>
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r8/{{projectName}}-core/src/main/resources/liquibase/h2.xml.ftl
0 → 100644
浏览文件 @
2f391f52
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xmlns=
"http://www.liquibase.org/xml/ns/dbchangelog"
xsi:schemaLocation=
"http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd"
>
<include
file=
"h2_table.xml"
relativeToChangelogFile=
"true"
/>
<include
file=
"view.xml"
relativeToChangelogFile=
"true"
/>
</databaseChangeLog>
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r8/{{projectName}}-core/src/main/resources/liquibase/h2_table.xml.ftl
0 → 100644
浏览文件 @
2f391f52
<#ibiztemplate>
TARGET=PSSYSTEM
</#ibiztemplate>
<#if sysrun.getPSDBDevInst()??>
<#assign dbinst = sysrun.getPSDBDevInst()>
<#assign curdate=.now?string["yyyyMMddHHmmss"]>
</#if>
<?xml version="1.1" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
<#assign sequenceNumber=0>
<#list sys.getAllPSDataEntities() as de>
<#if de.getTableName?? &&de.getTableName()?? &&de.getStorageMode()?? &&de.getStorageMode()==1 && de.isSubSysDE()==false>
<#assign bPubDb=false>
<#if de.getAllPSDEDBConfigs()?? >
<#list de.getAllPSDEDBConfigs() as dbpub>
<#if dbpub.isPubModel() == true >
<#assign bPubDb = true>
<#break >
</#if>
</#list>
</#if>
<#assign sequenceNumber=sequenceNumber+1>
<#assign deVersion=de.getVersion()?c>
<#assign deName=de.getName()?lower_case>
<#assign hasPhisicalDEField=false>
<#comment>判断表中是否有物理属性</#comment>
<#list de.getAllPSDEFields() as defield>
<#if defield.isPhisicalDEField()==true>
<#assign hasPhisicalDEField=true>
<#break>
</#if>
</#list>
<#comment>输出表结构</#comment>
<#if bPubDb==true && hasPhisicalDEField==true>
<!--输出实体[${de.getName()}]数据结构 -->
<changeSet author="root" id="tab-${deName}-${deVersion}-${sequenceNumber}">
<createTable tableName="${de.getTableName()}">
<#list de.getAllPSDEFields() as defield>
<#if defield.isPhisicalDEField()==true><#comment>物理属性</#comment>
<#assign dataType="${srfdatatype(defield.getStdDataType())}">
<#assign javaType="${srfr7javatype(defield.stdDataType)}">
<#comment>varchar需要设置字段长度,若不设置,则liquibase比较时会自动填充,最终恢复到生产库会报错</#comment>
<#if javaType=='String'>
<#if defield.getLength()?? && defield.getLength()?c!='-1'>
<#assign dataType="${srfdatatype(defield.getStdDataType())}(${defield.getLength()?c})" >
<#else>
<#assign dataType="${srfdatatype(defield.getStdDataType())}(200)">
</#if>
<#elseif dataType?lower_case=='decimal'>
<#assign dataType="${srfdatatype(defield.getStdDataType())}(38,2)"><#comment>设置数值类型精度</#comment>
</#if>
<#if javaType='BigDecimal'>
<#assign dataType="DECIMAL(38,2)"><#comment>数据类型转换varchar-->decimal</#comment>
</#if>
<#comment>由于liquibase不支持修改mysql的remarks,修改remarks会导致启动报错,所以mysql数据库暂时不发remarks</#comment>
<column name="${defield.getName()}" remarks="<#if dbinst?? && (dbinst.getDBType()!='MYSQL5')>${defield.getLogicName()}</#if>" type="${dataType}">
<#if defield.isKeyDEField()==true>
<#comment>oracle中约束名长度不能大于30</#comment>
<#assign constraintName="PK_"+de.getName()+"_"+defield.getName()>
<#if constraintName?length gt 30>
<#assign constraintName=constraintName?substring(0,30)>
</#if>
<constraints primaryKey="true" primaryKeyName="${constraintName}"/>
</#if>
</column>
</#if>
</#list>
</createTable>
</changeSet>
</#if>
</#if>
</#list>
<#comment>输出外键</#comment>
<#list sys.getAllPSDataEntities() as de>
<#assign deVersion=de.getVersion()?c>
<#assign deName=de.getName()?lower_case>
<#if de.getTableName?? &&de.getTableName()?? &&de.getTableName()?upper_case!='IBZUSER'&&de.getTableName()?upper_case!='IBZFILE'&&de.getTableName()?upper_case!='IBZDATAAUDIT' &&de.getStorageMode()?? &&de.getStorageMode()==1 && de.isSubSysDE()==false>
<#assign bPubDb=false>
<#if de.getAllPSDEDBConfigs()?? >
<#list de.getAllPSDEDBConfigs() as dbpub>
<#if dbpub.isPubModel() == true >
<#assign bPubDb = true>
<#break >
</#if>
</#list>
</#if>
<#if de.getMinorPSDERs?? && de.getMinorPSDERs()?? >
<#list de.getMinorPSDERs() as fk>
<#if fk.getDERType()=='DER1N' && fk.isEnableFKey()==true>
<#if fk.getMajorPSDataEntity().getTableName()??>
<#assign sequenceNumber=sequenceNumber+1>
<#comment>oracle中约束名长度不能大于30</#comment>
<#assign fkConstraintName=fk.getName()>
<#if fkConstraintName?length gt 30>
<#assign fkConstraintName=fkConstraintName?substring(0,30)>
</#if>
<#if !P.exists("fk_",fkConstraintName,"") && bPubDb==true>
<!--输出实体[${de.getName()}]外键关系 -->
<changeSet author="root" id="fk-${deName}-${deVersion}-${sequenceNumber}">
<addForeignKeyConstraint baseColumnNames="${fk.getPSPickupDEField().getName()}" baseTableName="${de.getTableName()}" constraintName="${fkConstraintName}" deferrable="false" initiallyDeferred="false" onDelete="RESTRICT" onUpdate="RESTRICT" referencedColumnNames="${fk.getMajorPSDataEntity().getKeyPSDEField().getName()}" referencedTableName="${fk.getMajorPSDataEntity().getTableName()}" validate="true"/>
</changeSet>
</#if>
</#if>
</#if>
</#list>
</#if>
</#if>
</#list>
</databaseChangeLog>
modules/ibizlab-generator-core/src/main/resources/templ/r8/{{projectName}}-core/src/main/resources/liquibase/master.xml.ftl
0 → 100644
浏览文件 @
2f391f52
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xmlns=
"http://www.liquibase.org/xml/ns/dbchangelog"
xsi:schemaLocation=
"http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd"
>
<includeAll
path=
"liquibase/changelog/"
/>
<include
file=
"view.xml"
relativeToChangelogFile=
"true"
/>
</databaseChangeLog>
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r8/{{projectName}}-core/src/main/resources/liquibase/master_table.xml.ftl
0 → 100644
浏览文件 @
2f391f52
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xmlns=
"http://www.liquibase.org/xml/ns/dbchangelog"
xsi:schemaLocation=
"http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd"
>
<includeAll
path=
"liquibase/changelog/"
/>
</databaseChangeLog>
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r8/{{projectName}}-core/src/main/resources/liquibase/view.xml.ftl
0 → 100644
浏览文件 @
2f391f52
<#if sysrun.getPSDBDevInst()??>
<#assign dbinst = sysrun.getPSDBDevInst()>
<#assign curdate=.now?string["yyyyMMddHHmmss"]>
</#if>
<?xml version="1.1" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
<#assign sequenceNumber=0>
<#comment>输出视图信息</#comment>
<#list sys.getAllPSDataEntities() as de>
<#if de.getStorageMode()==1>
<#if de.getViewName?? && ((de.getViewName()!'')!='') && de.isSubSysDE()==false && de.isNoViewMode()!=true>
<#assign bPubDb=false>
<#if de.getAllPSDEDBConfigs()?? >
<#list de.getAllPSDEDBConfigs() as dbpub>
<#if dbpub.isPubModel() == true >
<#assign bPubDb = true>
<#break >
</#if>
</#list>
</#if>
<#assign sequenceNumber=sequenceNumber+1>
<#assign deVersion=de.getVersion()?c>
<#assign deName=de.getName()?lower_case>
<#if !P.exists("view_",de.getViewName(),"") && bPubDb == true>
<!--输出实体[${de.getName()}]视图结构信息 runOnChange="true" 当视图发生变更时,通过liquibase强刷prod的视图,实现视图的同步-->
<changeSet author="root" id="view-${deName}-${deVersion}-${sequenceNumber}" runOnChange="true">
<createView fullDefinition="false" replaceIfExists="true" viewName="${de.getViewName()}">
<#if de.getAllPSDEDataQueries?? && de.getAllPSDEDataQueries()??>
<#assign resultDataQuery = de.getAllPSDEDataQueries()>
<#list resultDataQuery as singleQuery>
<#if singleQuery.getCodeName()?lower_case=='default'>
<#if singleQuery.getAllPSDEDataQueryCodes()??>
<#assign queryCodeList = singleQuery.getAllPSDEDataQueryCodes()>
<#assign sql="">
<#comment>遍历数据查询,有oracle则输出,无则输出mysql</#comment>
<#list singleQuery.getAllPSDEDataQueryCodes() as dedqcode>
<#assign sql=srfjavasqlcode('${dedqcode.getQueryCode()}')>
<#assign dbtype=dedqcode.getDBType()?lower_case?replace("mysql5","mysql")>
<#if dbtype?lower_case=='oracle'>
<#break>
</#if>
</#list>
<![CDATA[ ${sql}]]>
<#break>
</#if>
</#if>
</#list>
</#if>
</createView>
</changeSet>
</#if>
</#if>
</#if>
</#list>
</databaseChangeLog>
modules/ibizlab-generator-core/src/main/resources/templ/r8/{{projectName}}-dependencies/pom.xml.hbs
0 → 100644
浏览文件 @
2f391f52
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<modelVersion>
4.0.0
</modelVersion>
<artifactId>
{{
projectName
}}
-dependencies
</artifactId>
<groupId>
{{
packageName
}}
</groupId>
<version>
1.0.0.0
</version>
<packaging>
pom
</packaging>
<!-- Spring Boot -->
<parent>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-parent
</artifactId>
<version>
2.2.1.RELEASE
</version>
</parent>
<properties>
<!-- Spring Cloud Alibaba(2.2.x.RELEASE) & Spring Cloud(Spring Cloud Greenwich) & Spring Boot(2.2.x.RELEASE) compatibility -->
<spring-cloud-alibaba
.
version
>
2.2.1.RELEASE
</spring-cloud-alibaba
.version
>
<spring-cloud-openfeign
.
version
>
2.2.1.RELEASE
</spring-cloud-openfeign
.version
>
<!-- Alibaba Druid -->
<!-- <alibaba-druid.version>1.1.21</alibaba-druid.version> -->
<!-- Mybatis Plus -->
<mybatis-plus
.
version
>
3.4.1
</mybatis-plus
.version
>
<mybatis-plus-dynamic-datasource
.
version
>
3.2.1
</mybatis-plus-dynamic-datasource
.version
>
<!-- Swagger2 -->
<springfox-swagger
.
version
>
2.9.2
</springfox-swagger
.version
>
<!-- JBPM+Drools -->
<drools-version>
7.23.0.Final
</drools-version>
<!-- Error -->
<zalando-problem-spring-web
.
version
>
0.23.0
</zalando-problem-spring-web
.version
>
<!-- Security -->
<spring-cloud-security
.
version
>
2.1.1.RELEASE
</spring-cloud-security
.version
>
<maven-jar-plugin
.
version
>
3.1.1
</maven-jar-plugin
.version
>
<!--logstash-logback-encoder-->
<logstash
.
version
>
5.2
</logstash
.version
>
<!--Zuul网关-->
<spring-cloud-starter-netflix-zuul
.
version
>
2.2.1.RELEASE
</spring-cloud-starter-netflix-zuul
.version
>
<!--MapStruct高性能属性映射工具-->
<mapstruct
.
version
>
1.3.0.Final
</mapstruct
.version
>
<!--Java Web Token-->
<jsonwebtoken-jjwt
.
version
>
0.9.1
</jsonwebtoken-jjwt
.version
>
<!--Liquibase数据库版本更新工具-->
<liquibase
.
version
>
3.9.0
</liquibase
.version
>
<!--H2内存数据库-->
<h2
.
version
>
1.4.200
</h2
.version
>
<!--caffeine缓存-->
<caffeine-cache
.
version
>
2.6.0
</caffeine-cache
.version
>
<!--反序列化工具-->
<kryo
.
version
>
4.0.2
</kryo
.version
>
<!--httpClient -->
<openfeign-httpclient
.
version
>
11.0
</openfeign-httpclient
.version
>
<!--baomidou-jobs定时服务 -->
<baomidou-jobs
.
version
>
1.0.3
</baomidou-jobs
.version
>
<!-- eureka微服务注册中心 -->
<eureka-client
.
version
>
2.2.1.RELEASE
</eureka-client
.version
>
<!-- 阿里sentinel熔断器 -->
<alibaba-sentinel
.
version
>
2.1.1.RELEASE
</alibaba-sentinel
.version
>
<!-- 阿里seata分布式事务 -->
<alibaba-seata
.
version
>
1.3.0
</alibaba-seata
.version
>
{{#
each
system
.
allPSSystemDBConfigs
as
|
dbConfig
|
}}
{{#if
(
eq
dbConfig
.
dBType
'MYSQL5'
)
}}
{{else
if
(
eq
dbConfig
.
dBType
'ORACLE'
)
}}
<!-- Oracle 驱动 -->
<oracle
.
version
>
19.8.0.0
</oracle
.version
>
{{else
if
(
eq
dbConfig
.
dBType
'POSTGRESQL'
)
}}
<!-- PostgreSql 驱动 -->
<postgresql
.
version
>
42.2.6
</postgresql
.version
>
{{/if}}
{{/
each
}}
{{#if
system
.
enableMQ
}}
<rocketmq
.
version
>
4.7.0
</rocketmq
.version
>
{{/if}}
<flowable-modeler
.
version
>
6.4.2
</flowable-modeler
.version
>
</properties>
<dependencyManagement>
<dependencies>
<!-- Alibaba Cloud -->
<dependency>
<groupId>
com.alibaba.cloud
</groupId>
<artifactId>
spring-cloud-alibaba-dependencies
</artifactId>
<version>
${spring-cloud-alibaba.version}
</version>
<type>
pom
</type>
<scope>
import
</scope>
</dependency>
<!-- Spring Cloud -->
<dependency>
<groupId>
org.springframework.cloud
</groupId>
<artifactId>
spring-cloud-openfeign-dependencies
</artifactId>
<version>
${spring-cloud-openfeign.version}
</version>
<type>
pom
</type>
<scope>
import
</scope>
</dependency>
<!-- Alibaba Sentinel -->
<dependency>
<groupId>
com.alibaba.cloud
</groupId>
<artifactId>
spring-cloud-starter-alibaba-sentinel
</artifactId>
<version>
${alibaba-sentinel.version}
</version>
</dependency>
<!-- eureka服务注册中心 -->
<dependency>
<groupId>
org.springframework.cloud
</groupId>
<artifactId>
spring-cloud-starter-netflix-eureka-client
</artifactId>
<version>
${eureka-client.version}
</version>
</dependency>
<dependency>
<groupId>
com.alibaba
</groupId>
<artifactId>
druid-spring-boot-starter
</artifactId>
<version>
${alibaba-druid.version}
</version>
</dependency>
<!-- Mybatis Plus
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>${mybatis-plus-dynamic-datasource.version}</version>
</dependency> -->
<!-- Liquibase -->
<dependency>
<groupId>
org.liquibase
</groupId>
<artifactId>
liquibase-core
</artifactId>
<version>
${liquibase.version}
</version>
</dependency>
<!-- H2 -->
<dependency>
<groupId>
com.h2database
</groupId>
<artifactId>
h2
</artifactId>
<version>
${h2.version}
</version>
</dependency>
<!-- Swagger2 -->
<dependency>
<groupId>
io.springfox
</groupId>
<artifactId>
springfox-swagger2
</artifactId>
<version>
${springfox-swagger.version}
</version>
</dependency>
<dependency>
<groupId>
io.springfox
</groupId>
<artifactId>
springfox-swagger-ui
</artifactId>
<version>
${springfox-swagger.version}
</version>
</dependency>
<!-- JBPM -->
<dependency>
<groupId>
org.jbpm
</groupId>
<artifactId>
jbpm-flow-builder
</artifactId>
<version>
${drools-version}
</version>
</dependency>
<dependency>
<groupId>
org.jbpm
</groupId>
<artifactId>
jbpm-bpmn2
</artifactId>
<version>
${drools-version}
</version>
</dependency>
<!-- Drools -->
<dependency>
<groupId>
org.drools
</groupId>
<artifactId>
drools-compiler
</artifactId>
<version>
${drools-version}
</version>
</dependency>
<dependency>
<groupId>
org.drools
</groupId>
<artifactId>
drools-core
</artifactId>
<version>
${drools-version}
</version>
</dependency>
<dependency>
<groupId>
org.kie
</groupId>
<artifactId>
kie-spring
</artifactId>
<version>
${drools-version}
</version>
</dependency>
<dependency>
<groupId>
org.kie
</groupId>
<artifactId>
kie-api
</artifactId>
<version>
${drools-version}
</version>
</dependency>
<dependency>
<groupId>
net.logstash.logback
</groupId>
<artifactId>
logstash-logback-encoder
</artifactId>
<version>
${logstash.version}
</version>
</dependency>
<dependency>
<groupId>
org.springframework.cloud
</groupId>
<artifactId>
spring-cloud-starter-netflix-zuul
</artifactId>
<version>
${spring-cloud-starter-netflix-zuul.version}
</version>
</dependency>
<dependency>
<groupId>
org.mapstruct
</groupId>
<artifactId>
mapstruct-jdk8
</artifactId>
<version>
${mapstruct.version}
</version>
</dependency>
<dependency>
<groupId>
org.mapstruct
</groupId>
<artifactId>
mapstruct-processor
</artifactId>
<version>
${mapstruct.version}
</version>
</dependency>
<dependency>
<groupId>
org.springframework.cloud
</groupId>
<artifactId>
spring-cloud-starter-security
</artifactId>
<version>
${spring-cloud-security.version}
</version>
</dependency>
<dependency>
<groupId>
io.jsonwebtoken
</groupId>
<artifactId>
jjwt
</artifactId>
<version>
${jsonwebtoken-jjwt.version}
</version>
</dependency>
<dependency>
<groupId>
org.zalando
</groupId>
<artifactId>
problem-spring-web
</artifactId>
<version>
${zalando-problem-spring-web.version}
</version>
</dependency>
<dependency>
<groupId>
com.github.ben-manes.caffeine
</groupId>
<artifactId>
caffeine
</artifactId>
<version>
${caffeine-cache.version}
</version>
</dependency>
<dependency>
<groupId>
com.esotericsoftware
</groupId>
<artifactId>
kryo-shaded
</artifactId>
<version>
${kryo.version}
</version>
</dependency>
<dependency>
<groupId>
io.github.openfeign
</groupId>
<artifactId>
feign-httpclient
</artifactId>
<version>
${openfeign-httpclient.version}
</version>
</dependency>
<dependency>
<groupId>
com.baomidou
</groupId>
<artifactId>
jobs-spring-boot-starter
</artifactId>
<version>
${baomidou-jobs.version}
</version>
</dependency>
{{#if
system
.
enableGlobalTransaction
}}
<!-- 阿里seata分布式事务 -->
<dependency>
<groupId>
io.seata
</groupId>
<artifactId>
seata-spring-boot-starter
</artifactId>
<version>
${alibaba-seata.version}
</version>
<exclusions>
<exclusion>
<groupId>
com.alibaba
</groupId>
<artifactId>
druid
</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>
com.alibaba.cloud
</groupId>
<artifactId>
spring-cloud-starter-alibaba-seata
</artifactId>
<version>
${spring-cloud-alibaba.version}
</version>
<exclusions>
<exclusion>
<groupId>
io.seata
</groupId>
<artifactId>
seata-spring-boot-starter
</artifactId>
</exclusion>
</exclusions>
</dependency>
{{/if}}
<dependency>
<groupId>
org.flowable
</groupId>
<artifactId>
flowable-json-converter
</artifactId>
<version>
${flowable-modeler.version}
</version>
</dependency>
<dependency>
<groupId>
org.flowable
</groupId>
<artifactId>
flowable-ui-modeler-conf
</artifactId>
<version>
${flowable-modeler.version}
</version>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<!-- Spring Boot -->
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-web
</artifactId>
</dependency>
<!-- Spring Cloud -->
<dependency>
<groupId>
org.springframework.cloud
</groupId>
<artifactId>
spring-cloud-starter-openfeign
</artifactId>
</dependency>
<!-- Alibaba Sentinel -->
<dependency>
<groupId>
com.alibaba.cloud
</groupId>
<artifactId>
spring-cloud-starter-alibaba-sentinel
</artifactId>
</dependency>
<!-- Lombok -->
<dependency>
<groupId>
org.projectlombok
</groupId>
<artifactId>
lombok
</artifactId>
</dependency>
<!-- Httpclient -->
<dependency>
<groupId>
org.apache.httpcomponents
</groupId>
<artifactId>
httpclient
</artifactId>
</dependency>
<!-- Liquibase -->
<dependency>
<groupId>
org.liquibase
</groupId>
<artifactId>
liquibase-core
</artifactId>
</dependency>
<!-- H2内存库 -->
<dependency>
<groupId>
com.h2database
</groupId>
<artifactId>
h2
</artifactId>
</dependency>
{{#
each
system
.
allPSSystemDBConfigs
as
|
dbConfig
|
}}
{{#if
(
eq
dbConfig
.
dBType
'MYSQL5'
)
}}
<!-- MySQL驱动包 -->
<dependency>
<groupId>
mysql
</groupId>
<artifactId>
mysql-connector-java
</artifactId>
<version>
5.1.49
</version>
</dependency>
{{else
if
(
eq
dbConfig
.
dBType
'ORACLE'
)
}}
<!-- Oracle驱动包 -->
<dependency>
<groupId>
com.oracle.database.jdbc
</groupId>
<artifactId>
ojdbc8
</artifactId>
<version>
${oracle.version}
</version>
</dependency>
<dependency>
<groupId>
com.oracle.database.nls
</groupId>
<artifactId>
orai18n
</artifactId>
<version>
${oracle.version}
</version>
</dependency>
{{else
if
(
eq
dbConfig
.
dBType
'POSTGRESQL'
)
}}
<!-- PostgreSQL驱动包 -->
<dependency>
<groupId>
org.postgresql
</groupId>
<artifactId>
postgresql
</artifactId>
<version>
${postgresql.version}
</version>
</dependency>
{{/if}}
{{/
each
}}
{{#if
system
.
enableES
}}
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-data-elasticsearch
</artifactId>
</dependency>
{{/if}}
{{#if
system
.
enableMQ
}}
<dependency>
<groupId>
org.apache.rocketmq
</groupId>
<artifactId>
rocketmq-client
</artifactId>
<version>
${rocketmq.version}
</version>
</dependency>
{{/if}}
{{#
each
system
.
allPSSysSFPubs
as
|
pub
|
}}
{{#
eq
pub
.
contentType
"CODE"
}}
{{#
each
pub
.
getPSSysSFPubPkgs
as
|
package
|
}}
{{#if
package
.
pkgParam
}}
{{
package
.
pkgParam
}}
{{/if}}
{{/
each
}}
{{/
eq
}}
{{/
each
}}
</dependencies>
</project>
modules/ibizlab-generator-core/src/main/resources/templ/r8/{{projectName}}-provider/pom.xml.hbs
0 → 100644
浏览文件 @
2f391f52
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<modelVersion>
4.0.0
</modelVersion>
<parent>
<artifactId>
{{
projectName
}}
</artifactId>
<groupId>
{{
packageName
}}
</groupId>
<version>
1.0.0.0
</version>
</parent>
<artifactId>
{{
projectName
}}
-provider
</artifactId>
<dependencies>
<dependency>
<groupId>
{{
packageName
}}
</groupId>
<artifactId>
{{
projectName
}}
-core
</artifactId>
<version>
${project.version}
</version>
</dependency>
<dependency>
<groupId>
javax.servlet
</groupId>
<artifactId>
javax.servlet-api
</artifactId>
<scope>
provided
</scope>
</dependency>
</dependencies>
<properties>
<docker
.
image
.
prefix
>
registry.cn-shanghai.aliyuncs.com/ibizsys
</docker
.image.prefix
>
</properties>
<profiles>
<profile>
<id>
runtime
</id>
<build>
<resources>
<resource>
<directory>
${basedir}/src/main/resources
</directory>
<includes>
<include>
**/**
</include>
</includes>
</resource>
</resources>
<plugins>
<plugin>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-maven-plugin
</artifactId>
<configuration>
<finalName>
{{
projectName
}}
-provider
</finalName>
<jvmArguments>
-Dfile.encoding=UTF-8
</jvmArguments>
<mainClass>
{{
packageName
}}
.IBizRuntimeApplication
</mainClass>
<outputDirectory>
../
</outputDirectory>
</configuration>
<executions>
<execution>
<goals>
<goal>
repackage
</goal>
</goals>
</execution>
</executions>
</plugin>
{{!--
<#if pub.getPSDeployCenter()?? && pub.getPSDeployCenter().getPSRegistryRepo()??>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.13</version>
<configuration>
<serverId>ibiz-dev</serverId>
<imageName>${docker.image.prefix}/${project.artifactId}:latest</imageName>
<dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>../</directory>
<include>${project.artifactId}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<id>prepare</id>
<configuration>
<executable>cp</executable>
<arguments>
<argument>../${project.artifactId}.jar</argument>
<argument>${project.basedir}/src/main/docker/</argument>
</arguments>
</configuration>
</execution>
<execution>
<id>buildpush</id>
<configuration>
<executable>docker</executable>
<arguments>
<argument>buildx</argument>
<argument>build</argument>
<argument>--platform</argument>
<argument>linux/amd64,linux/arm64</argument>
<argument>-t</argument>
<argument>${docker.image.prefix}/${project.artifactId}:latest</argument>
<argument>${project.basedir}/src/main/docker</argument>
<argument>--push</argument>
</arguments>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.2.0</version>
<executions>
<execution>
<id>copy-model</id>
<phase>process-sources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<encoding>UTF-8</encoding>
<!-- 输出目录 -->
<outputDirectory>${project.build.outputDirectory}/model--${sys.getPubSystemId()}--${sys.getSysVersion()}</outputDirectory>
<resources>
<resource>
<!-- 资源目录 -->
<directory>${project.basedir}/../model</directory>
<includes>
<include>**/**</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
</#if>
--}}
</plugins>
</build>
</profile>
</profiles>
</project>
modules/ibizlab-generator-core/src/main/resources/templ/r8/{{projectName}}-provider/src/main/docker/Dockerfile.hbs
0 → 100644
浏览文件 @
2f391f52
FROM image.ibizlab.cn/library/openjdk:8-jre-alpine
ENV TZ=Asia/Shanghai \
SPRING_OUTPUT_ANSI_ENABLED=ALWAYS \
IBIZ_SLEEP=0 \
JAVA_OPTS=""
CMD echo "The application will start in ${IBIZ_SLEEP}s..."
&&
\
sleep ${IBIZ_SLEEP}
&&
\
java ${JAVA_OPTS} -Duser.timezone=$TZ -Djava.security.egd=file:/dev/./urandom -jar /
{{
projectName
}}
-provider.jar
EXPOSE 8081
ADD
{{
projectName
}}
-provider.jar /
{{
projectName
}}
-provider.jar
modules/ibizlab-generator-core/src/main/resources/templ/r8/{{projectName}}-provider/src/main/docker/{{projectName}}-provider-%SYSAPI_PKGPATH%-k8s.yaml.hbs
0 → 100644
浏览文件 @
2f391f52
<
#
ibiztemplate
>
TARGET=PSSYSSERVICEAPI
</
#
ibiztemplate>
<
#
assign
httpPort =
"8081"
>
<
#
assign
nacosUrl =
"127.0.0.1:8848"
>
<
#
assign
redisHost =
"127.0.0.1"
>
<
#
assign
redisPort =
"6379"
>
<
#
assign
redisDataBase =
"0"
>
<
#
assign
dbUserName=
"root"
>
<
#
assign
dbPassWord=
"123456"
>
<
#
assign
dbUrl=
"jdbc:mysql://127.0.0.1:3306/"
+
sys
.
name
+"?
useSSL=
false&autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&useOldAliasMetadataBehavior=true&allowMultiQueries=true"
>
<
#
assign
dbDriver=
"com.mysql.jdbc.Driver"
>
<
#
assign
dockerPortMap=
""
>
<
#
if
sysrun
??
&&
sysrun
.
getPSDevSlnMSDepAPI
()??
>
<
#
assign
depSysApi=
sysrun.getPSDevSlnMSDepAPI()
>
<
#
if
depSysApi
.
getHttpPort
()??
>
<
#
assign
httpPort =
depSysApi.getHttpPort()?c
>
</
#
if>
<
#
if
depSysApi
.
getPSDCMSPlatformNode
()??
>
<
#
assign
depSysApiPlatformNode=
depSysApi.getPSDCMSPlatformNode()
>
<
#
assign
depSysApiPlatform=
depSysApi.getPSDCMSPlatform()
>
<
#
if
depSysApiPlatform
.
getUserParam
("
nacos
","
127
.
0
.
0
.
1:8848
")??
>
<
#
assign
nacosUrl =
depSysApiPlatform.getUserParam("nacos","127.0.0.1:8848")
>
</
#
if>
<
#
if
depSysApi
.
getUserParam
("
spring
.
redis
.
host
","")??
&&
depSysApi
.
getUserParam
("
spring
.
redis
.
host
","")!=""
>
<
#
assign
redisHost =
depSysApi.getUserParam("spring.redis.host","")
>
<
#
elseif
depSysApiPlatform
.
getUserParam
("
spring
.
redis
.
host
","")??
&&
depSysApiPlatform
.
getUserParam
("
spring
.
redis
.
host
","")!=""
>
<
#
assign
redisHost =
depSysApiPlatform.getUserParam("spring.redis.host","")
>
</
#
if>
<
#
if
depSysApi
.
getUserParam
("
spring
.
redis
.
port
","")??
&&
depSysApi
.
getUserParam
("
spring
.
redis
.
port
","")!=""
>
<
#
assign
redisPort =
depSysApi.getUserParam("spring.redis.port")
>
<
#
elseif
depSysApiPlatform
.
getUserParam
("
spring
.
redis
.
port
","")??
&&
depSysApiPlatform
.
getUserParam
("
spring
.
redis
.
port
","")!=""
>
<
#
assign
redisPort =
depSysApiPlatform.getUserParam("spring.redis.port")
>
</
#
if>
<
#
if
depSysApi
.
getUserParam
("
spring
.
redis
.
database
","")??
&&
depSysApi
.
getUserParam
("
spring
.
redis
.
database
","")!=""
>
<
#
assign
redisDataBase =
depSysApi.getUserParam("spring.redis.database","")
>
<
#
elseif
depSysApiPlatform
.
getUserParam
("
spring
.
redis
.
database
","")??
&&
depSysApiPlatform
.
getUserParam
("
spring
.
redis
.
database
","")!=""
>
<
#
assign
redisDataBase =
depSysApiPlatform.getUserParam("spring.redis.database","")
>
</
#
if>
<
#
if
depSysApi
.
getUserParam
("
portmap
","")??
&&
depSysApi
.
getUserParam
("
portmap
","")!=""
>
<
#
assign
dockerPortMap=
depSysApi.getUserParam("portmap","")
>
</
#
if>
</
#
if>
</
#
if>
<
#
comment
>
数据库配置
</
#
comment>
<
#
if
sysrun
.
getPSDBDevInst
()??
>
<
#
assign
sysRunDBInst =
sysrun.getPSDBDevInst()
>
<
#
assign
dbUserName=
sysRunDBInst.getUserName()
>
<
#
assign
dbPassWord=
sysRunDBInst.getPassword()
>
<
#
assign
dbUrl=
sysRunDBInst.getConnUrl()
>
<
#
if
(
sysRunDBInst
.
getDBType
()=='
MYSQL5
')
>
<
#
assign
dbDriver=
"com.mysql.jdbc.Driver"
>
<
#
assign
dbUrl=
dbUrl+"&allowMultiQueries=true&serverTimezone=GMT%2B8"
>
<
#
elseif
(
sysRunDBInst
.
getDBType
()=='
DB2
')
>
<
#
assign
dbDriver=
"com.ibm.db2.jcc.DB2Driver"
>
<
#
elseif
(
sysRunDBInst
.
getDBType
()=='
ORACLE
')
>
<
#
assign
dbDriver=
"oracle.jdbc.driver.OracleDriver"
>
<
#
elseif
(
sysRunDBInst
.
getDBType
()=='
SQLSERVER
')
>
<
#
assign
dbDriver=
"com.microsoft.sqlserver.jdbc.SQLServerDriver"
>
<
#
elseif
(
sysRunDBInst
.
getDBType
()=='
POSTGRESQL
')
>
<
#
assign
dbDriver=
"org.postgresql.Driver"
>
<
#
elseif
(
sysRunDBInst
.
getDBType
()=='
PPAS
')
>
<
#
assign
dbDriver=
"com.edb.Driver"
>
</
#
if>
</
#
if>
---
apiVersion: apps/v1
kind: Deployment
metadata:
name:
{{
projectName
}}
-provider
labels:
app:
{{
projectName
}}
-provider
spec:
replicas: 1
selector:
matchLabels:
app:
{{
projectName
}}
-provider
template:
metadata:
labels:
app:
{{
projectName
}}
-provider
spec:
imagePullSecrets:
- name: aly-shanghai
containers:
- name:
{{
projectName
}}
-provider
image: registry.cn-shanghai.aliyuncs.com/ibizsys/
{{
projectName
}}
-provider:latest
imagePullPolicy: Always
ports:
- containerPort: ${httpPort}
<
#
if
sysrun
??
&&
sysrun
.
getPSDevSlnMSDepAPI
()??
&&
sysrun
.
getPSDevSlnMSDepAPI
().
getPSDCMSPlatformNode
()??
>
<
#
assign
depSysApi=
sysrun.getPSDevSlnMSDepAPI()
>
<
#
assign
depSysApiPlatformNode=
sysrun.getPSDevSlnMSDepAPI().getPSDCMSPlatformNode()
>
<
#
assign
depSysApiPlatform=
sysrun.getPSDevSlnMSDepAPI().getPSDCMSPlatform()
>
env:
<
#
if
depSysApiPlatformNode
.
getSSHIPAddr
()??
>
- name: SPRING_CLOUD_NACOS_DISCOVERY_IP
value: "${depSysApiPlatformNode.getSSHIPAddr()}"
</
#
if>
<
#
comment
>
系统运行参数设置,从SysRun中获取到当前部署相关信息
</
#
comment>
- name: SERVER_PORT
value: "${httpPort}"
- name: SPRING_CLOUD_NACOS_DISCOVERY_SERVER-ADDR
value: "${nacosUrl}"
- name: SPRING_REDIS_HOST
value: "${redisHost}"
- name: SPRING_REDIS_PORT
value: "${redisPort}"
- name: SPRING_REDIS_DATABASE
value: "${redisDataBase}"
- name: SPRING_DATASOURCE_USERNAME
value: "${dbUserName}"
- name: SPRING_DATASOURCE_PASSWORD
value: "${dbPassWord}"
- name: SPRING_DATASOURCE_URL
value: "${dbUrl}"
- name: SPRING_DATASOURCE_DRIVER-CLASS-NAME
value: "${dbDriver}"
- name: SPRING_DATASOURCE_DEFAULTSCHEMA
value: "${dbUserName}"
<
#
comment
>
输出服务接口自定义参数替换标准参数
</
#
comment>
<
#
if
depSysApi
.
getUserParamNames
()??
>
<
@
outputUserParam
depSysApi
depSysApi
.
getUserParamNames
()
/>
</
#
if>
<
#
comment
>
输出微服务平台自定义参数替换标准参数
</
#
comment>
<
#
if
depSysApiPlatform
.
getUserParamNames
()??
>
<
@
outputUserParam
depSysApiPlatform
depSysApiPlatform
.
getUserParamNames
()
/>
</
#
if>
</
#
if>
---
apiVersion: v1
kind: Service
metadata:
name:
{{
projectName
}}
-provider
labels:
app:
{{
projectName
}}
-provider
spec:
type: NodePort
ports:
- name: http
port: ${httpPort}
targetPort: ${httpPort}
nodePort: ${httpPort}
protocol: TCP
<
#
if
dockerPortMap
!=''
>
- name: portmap
port: ${dockerPortMap}
targetPort: ${dockerPortMap}
nodePort: ${dockerPortMap}
protocol: TCP
</
#
if>
selector:
app:
{{
projectName
}}
-provider
<
#
comment
>
输出用户自定义参数
</
#
comment>
<
#
macro
outputUserParam
paramObj
paramList
>
<
#
list
paramList
as
param
>
<
#
assign
userParamkey=
param?upper_case?replace(".","_")
>
<
#
comment
>
nacos、数据库连接等信息从sysRun中获取
</
#
comment>
<
#
if
userParamkey
!="
SPRING_CLOUD_NACOS_DISCOVERY_SERVER-ADDR
"
&&
userParamkey
!="
SPRING_REDIS_HOST
"
&&
userParamkey
!="
SERVER_PORT
"
&&
userParamkey
!="
SPRING_REDIS_PORT
"
&&
userParamkey
!="
SPRING_REDIS_DATABASE
"
&&
userParamkey
!="
SPRING_DATASOURCE_USERNAME
"
&&
userParamkey
!="
SPRING_DATASOURCE_PASSWORD
"
&&
userParamkey
!="
SPRING_DATASOURCE_URL
"
&&
userParamkey
!="
SPRING_DATASOURCE_DRIVER-CLASS-NAME
"
&&
userParamkey
!="
SPRING_DATASOURCE_DEFAULTSCHEMA
"
>
<
#
comment
>
扩展标准配置:用户配置参数替换标准配置(application-sys.yml)
</
#
comment>
<
#
if
!
P
.
exists
('
SysApiDeployUserParam
',
param
)
>
- name: ${userParamkey}
value: "${paramObj.getUserParam(param,"")}"
</
#
if>
</
#
if>
</
#
list>
</
#
macro>
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r8/{{projectName}}-provider/src/main/docker/{{projectName}}-provider-%SYSAPI_PKGPATH%.yaml.hbs
0 → 100644
浏览文件 @
2f391f52
<
#
ibiztemplate
>
TARGET=PSSYSSERVICEAPI
</
#
ibiztemplate>
<
#
assign
httpPort =
"8081"
>
<
#
assign
nacosUrl =
"127.0.0.1:8848"
>
<
#
assign
redisHost =
"127.0.0.1"
>
<
#
assign
redisPort =
"6379"
>
<
#
assign
redisDataBase =
"0"
>
<
#
assign
dbUserName=
"root"
>
<
#
assign
dbPassWord=
"123456"
>
<
#
assign
dbUrl=
"jdbc:mysql://127.0.0.1:3306/"
+
sys
.
name
+"?
useSSL=
false&autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&useOldAliasMetadataBehavior=true&allowMultiQueries=true"
>
<
#
assign
dbDriver=
"com.mysql.jdbc.Driver"
>
<
#
assign
dockerPortMap=
""
>
<
#
if
sysrun
??
&&
sysrun
.
getPSDevSlnMSDepAPI
()??
>
<
#
assign
depSysApi=
sysrun.getPSDevSlnMSDepAPI()
>
<
#
if
depSysApi
.
getHttpPort
()??
>
<
#
assign
httpPort =
depSysApi.getHttpPort()?c
>
</
#
if>
<
#
if
depSysApi
.
getPSDCMSPlatformNode
()??
>
<
#
assign
depSysApiPlatformNode=
depSysApi.getPSDCMSPlatformNode()
>
<
#
assign
depSysApiPlatform=
depSysApi.getPSDCMSPlatform()
>
<
#
if
depSysApiPlatform
.
getUserParam
("
nacos
","
127
.
0
.
0
.
1:8848
")??
>
<
#
assign
nacosUrl =
depSysApiPlatform.getUserParam("nacos","127.0.0.1:8848")
>
</
#
if>
<
#
if
depSysApi
.
getUserParam
("
spring
.
redis
.
host
","")??
&&
depSysApi
.
getUserParam
("
spring
.
redis
.
host
","")!=""
>
<
#
assign
redisHost =
depSysApi.getUserParam("spring.redis.host","")
>
<
#
elseif
depSysApiPlatform
.
getUserParam
("
spring
.
redis
.
host
","")??
&&
depSysApiPlatform
.
getUserParam
("
spring
.
redis
.
host
","")!=""
>
<
#
assign
redisHost =
depSysApiPlatform.getUserParam("spring.redis.host","")
>
</
#
if>
<
#
if
depSysApi
.
getUserParam
("
spring
.
redis
.
port
","")??
&&
depSysApi
.
getUserParam
("
spring
.
redis
.
port
","")!=""
>
<
#
assign
redisPort =
depSysApi.getUserParam("spring.redis.port")
>
<
#
elseif
depSysApiPlatform
.
getUserParam
("
spring
.
redis
.
port
","")??
&&
depSysApiPlatform
.
getUserParam
("
spring
.
redis
.
port
","")!=""
>
<
#
assign
redisPort =
depSysApiPlatform.getUserParam("spring.redis.port")
>
</
#
if>
<
#
if
depSysApi
.
getUserParam
("
spring
.
redis
.
database
","")??
&&
depSysApi
.
getUserParam
("
spring
.
redis
.
database
","")!=""
>
<
#
assign
redisDataBase =
depSysApi.getUserParam("spring.redis.database","")
>
<
#
elseif
depSysApiPlatform
.
getUserParam
("
spring
.
redis
.
database
","")??
&&
depSysApiPlatform
.
getUserParam
("
spring
.
redis
.
database
","")!=""
>
<
#
assign
redisDataBase =
depSysApiPlatform.getUserParam("spring.redis.database","")
>
</
#
if>
<
#
if
depSysApi
.
getUserParam
("
portmap
","")??
&&
depSysApi
.
getUserParam
("
portmap
","")!=""
>
<
#
assign
dockerPortMap=
depSysApi.getUserParam("portmap","")
>
</
#
if>
</
#
if>
</
#
if>
<
#
comment
>
数据库配置
</
#
comment>
<
#
if
sysrun
.
getPSDBDevInst
()??
>
<
#
assign
sysRunDBInst =
sysrun.getPSDBDevInst()
>
<
#
assign
dbUserName=
sysRunDBInst.getUserName()
>
<
#
assign
dbPassWord=
sysRunDBInst.getPassword()
>
<
#
assign
dbUrl=
sysRunDBInst.getConnUrl()
>
<
#
if
(
sysRunDBInst
.
getDBType
()=='
MYSQL5
')
>
<
#
assign
dbDriver=
"com.mysql.jdbc.Driver"
>
<
#
assign
dbUrl=
dbUrl+"&allowMultiQueries=true&serverTimezone=GMT%2B8"
>
<
#
elseif
(
sysRunDBInst
.
getDBType
()=='
DB2
')
>
<
#
assign
dbDriver=
"com.ibm.db2.jcc.DB2Driver"
>
<
#
elseif
(
sysRunDBInst
.
getDBType
()=='
ORACLE
')
>
<
#
assign
dbDriver=
"oracle.jdbc.driver.OracleDriver"
>
<
#
elseif
(
sysRunDBInst
.
getDBType
()=='
SQLSERVER
')
>
<
#
assign
dbDriver=
"com.microsoft.sqlserver.jdbc.SQLServerDriver"
>
<
#
elseif
(
sysRunDBInst
.
getDBType
()=='
POSTGRESQL
')
>
<
#
assign
dbDriver=
"org.postgresql.Driver"
>
<
#
elseif
(
sysRunDBInst
.
getDBType
()=='
PPAS
')
>
<
#
assign
dbDriver=
"com.edb.Driver"
>
</
#
if>
</
#
if>
version: "3.2"
services:
{{
projectName
}}
-provider:
image: registry.cn-shanghai.aliyuncs.com/ibizsys/
{{
projectName
}}
-provider:latest
ports:
- "${httpPort}:${httpPort}"
<
#
if
dockerPortMap
!=''
>
- "${dockerPortMap}"
</
#
if>
networks:
- agent_network
<
#
if
sysrun
??
&&
sysrun
.
getPSDevSlnMSDepAPI
()??
&&
sysrun
.
getPSDevSlnMSDepAPI
().
getPSDCMSPlatformNode
()??
>
<
#
assign
depSysApi=
sysrun.getPSDevSlnMSDepAPI()
>
<
#
assign
depSysApiPlatformNode=
sysrun.getPSDevSlnMSDepAPI().getPSDCMSPlatformNode()
>
<
#
assign
depSysApiPlatform=
sysrun.getPSDevSlnMSDepAPI().getPSDCMSPlatform()
>
environment:
<
#
if
depSysApiPlatformNode
.
getSSHIPAddr
()??
>
- SPRING_CLOUD_NACOS_DISCOVERY_IP=${depSysApiPlatformNode.getSSHIPAddr()}
</
#
if>
<
#
comment
>
系统运行参数设置,从SysRun中获取到当前部署相关信息
</
#
comment>
- SERVER_PORT=${httpPort}
- SPRING_CLOUD_NACOS_DISCOVERY_SERVER-ADDR=${nacosUrl}
- SPRING_REDIS_HOST=${redisHost}
- SPRING_REDIS_PORT=${redisPort}
- SPRING_REDIS_DATABASE=${redisDataBase}
- SPRING_DATASOURCE_USERNAME=${dbUserName}
- SPRING_DATASOURCE_PASSWORD=${dbPassWord}
- SPRING_DATASOURCE_URL=${dbUrl}
- SPRING_DATASOURCE_DRIVER-CLASS-NAME=${dbDriver}
- SPRING_DATASOURCE_DEFAULTSCHEMA=${dbUserName}
<
#
comment
>
输出服务接口自定义参数替换标准参数
</
#
comment>
<
#
if
depSysApi
.
getUserParamNames
()??
>
<
@
outputUserParam
depSysApi
depSysApi
.
getUserParamNames
()
/>
</
#
if>
<
#
comment
>
输出微服务平台自定义参数替换标准参数
</
#
comment>
<
#
if
depSysApiPlatform
.
getUserParamNames
()??
>
<
@
outputUserParam
depSysApiPlatform
depSysApiPlatform
.
getUserParamNames
()
/>
</
#
if>
</
#
if>
deploy:
resources:
limits:
memory: 4048M
reservations:
memory: 400M
mode: replicated
replicas: 1
restart_policy:
condition: on-failure
max_attempts: 3
window: 120s
volumes:
- "nfs:/app/file"
volumes:
nfs:
driver: local
driver_opts:
type: "nfs"
o: "addr=172.16.240.109,rw"
device: ":/nfs"
networks:
agent_network:
driver: overlay
attachable: true
<
#
comment
>
输出用户自定义参数
</
#
comment>
<
#
macro
outputUserParam
paramObj
paramList
>
<
#
list
paramList
as
param
>
<
#
assign
userParamkey=
param?upper_case?replace(".","_")
>
<
#
comment
>
nacos、数据库连接等信息从sysRun中获取
</
#
comment>
<
#
if
userParamkey
!="
SPRING_CLOUD_NACOS_DISCOVERY_SERVER-ADDR
"
&&
userParamkey
!="
SPRING_REDIS_HOST
"
&&
userParamkey
!="
SERVER_PORT
"
&&
userParamkey
!="
SPRING_REDIS_PORT
"
&&
userParamkey
!="
SPRING_REDIS_DATABASE
"
&&
userParamkey
!="
SPRING_DATASOURCE_USERNAME
"
&&
userParamkey
!="
SPRING_DATASOURCE_PASSWORD
"
&&
userParamkey
!="
SPRING_DATASOURCE_URL
"
&&
userParamkey
!="
SPRING_DATASOURCE_DRIVER-CLASS-NAME
"
&&
userParamkey
!="
SPRING_DATASOURCE_DEFAULTSCHEMA
"
>
<
#
comment
>
扩展标准配置:用户配置参数替换标准配置(application-sys.yml)
</
#
comment>
<
#
if
!
P
.
exists
('
SysApiDeployUserParam
',
param
)
>
- ${userParamkey}=${paramObj.getUserParam(param,"")}
</
#
if>
</
#
if>
</
#
list>
</
#
macro>
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r8/{{projectName}}-provider/src/main/java/{{packageName}}/IBizRuntimeApplication.java.hbs
0 → 100644
浏览文件 @
2f391f52
package
{{
packageName
}}
;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
@Slf4j
@EnableDiscoveryClient
@Configuration
@EnableTransactionManagement
@ComponentScan(basePackages = { "net.ibizsys.central.database", "net.ibizsys.central.r8", "
{{
packageName
}}
" })
@SpringBootApplication(exclude = {
org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration.class,
})
@Import({ org.springframework.cloud.openfeign.FeignClientsConfiguration.class })
@EnableFeignClients(basePackages = { "net.ibizsys.central.r8", "
{{
packageName
}}
" })
@EnableAsync
@EnableScheduling
public class IBizRuntimeApplication extends WebMvcConfigurerAdapter {
public static void main(String[] args) {
SpringApplication.run(IBizRuntimeApplication.class, args);
}
}
modules/ibizlab-generator-core/src/main/resources/templ/r8/{{projectName}}-provider/src/main/java/{{packageName}}/config/SampleApiSecurityConfig.java.hbs
0 → 100644
浏览文件 @
2f391f52
package
{{
packageName
}}
.config;
import net.ibizsys.central.r8.security.AuthorizationTokenFilter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpMethod;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.config.core.GrantedAuthorityDefaults;
import org.springframework.security.config.http.SessionCreationPolicy;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.web.AuthenticationEntryPoint;
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
@Configuration
@EnableWebSecurity
public class SampleApiSecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private AuthenticationEntryPoint unauthorizedHandler;
@Autowired
private UserDetailsService userDetailsService;
/**
* 自定义基于JWT的安全过滤器
*/
@Autowired
AuthorizationTokenFilter authenticationTokenFilter;
@Value("${ibiz.auth.path:v7/login}")
private String loginPath;
@Value("${ibiz.auth.logoutpath:v7/logout}")
private String logoutPath;
@Value("${ibiz.file.uploadpath:ibizutil/upload}")
private String uploadpath;
@Value("${ibiz.file.downloadpath:ibizutil/download}")
private String downloadpath;
@Value("${ibiz.file.previewpath:ibizutil/preview}")
private String previewpath;
@Value("${ibiz.auth.excludesPattern:}")
private String[] excludesPattern;
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService).passwordEncoder(passwordEncoderBean());
}
@Bean
GrantedAuthorityDefaults grantedAuthorityDefaults() {
// Remove the ROLE_ prefix
return new GrantedAuthorityDefaults("");
}
@Bean
public PasswordEncoder passwordEncoderBean() {
return new BCryptPasswordEncoder();
}
@Bean
@Override
public AuthenticationManager authenticationManagerBean() throws Exception {
return super.authenticationManagerBean();
}
@Override
protected void configure(HttpSecurity httpSecurity) throws Exception {
httpSecurity
// 禁用 CSRF
.csrf().disable()
// 授权异常
.exceptionHandling().authenticationEntryPoint(unauthorizedHandler).and()
// 不创建会话
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and()
// 过滤请求
.authorizeRequests()
.antMatchers(HttpMethod.GET, "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/**/*.ico", "/**/assets/**",
"/**/css/**", "/**/fonts/**", "/**/js/**", "/**/img/**", "/", "webjars/**", "/swagger-resources/**",
"/v2/**")
.permitAll()
// 放行登录请求
.antMatchers(HttpMethod.POST, "/" + loginPath).permitAll()
// 放行注销请求
//.antMatchers(HttpMethod.GET, "/" + logoutPath).permitAll()
// 文件操作
.antMatchers("/" + downloadpath + "/**").permitAll().antMatchers("/" + uploadpath).permitAll()
.antMatchers("/" + previewpath + "/**").permitAll();
for (String excludePattern : excludesPattern) {
authenticationTokenFilter.addExcludePattern(excludePattern);
httpSecurity.authorizeRequests().antMatchers(excludePattern).permitAll();
}
// 所有请求都需要认证
httpSecurity.authorizeRequests().anyRequest().authenticated()
// 防止iframe 造成跨域
.and().headers().frameOptions().disable();
httpSecurity.addFilterBefore(authenticationTokenFilter, UsernamePasswordAuthenticationFilter.class);
}
}
modules/ibizlab-generator-core/src/main/resources/templ/r8/{{projectName}}-provider/src/main/resources/application-eureka.yml.hbs
0 → 100644
浏览文件 @
2f391f52
#eureka配置中心
spring:
cloud:
nacos:
discovery:
enabled: false
eureka:
client:
enabled: true
serviceUrl:
defaultZone: http://127.0.0.1:8762/eureka/
modules/ibizlab-generator-core/src/main/resources/templ/r8/{{projectName}}-provider/src/main/resources/application-nacos.yml.hbs
0 → 100644
浏览文件 @
2f391f52
#nacos配置中心
spring:
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
enabled: true
eureka:
client:
enabled: false
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r8/{{projectName}}-provider/src/main/resources/application-sys.yml.hbs
0 → 100644
浏览文件 @
2f391f52
#缓存、数据源
spring:
jackson:
time-zone: GMT+8
cache:
redis:
time-to-live: 72000
caffeine:
spec: initialCapacity=5,maximumSize=500,expireAfterWrite=72000s
redis:
host: 172.16.240.110
port: 6379
password:
database: 0
lettuce:
pool:
max-active: 32
max-wait: 300ms
max-idle: 16
min-idle: 8
servlet:
multipart:
max-file-size: 100MB
max-request-size: 100MB
{{#if
(
or
system
.
enableMongo
system
.
enableES
)
}}
data:
{{/if}}
{{#if
system
.
enableMongo
}}
mongodb:
uri: mongodb://admin:admin@127.0.0.1:27017/
{{
projectName
}}
{{/if}}
{{#if
system
.
enableES
}}
elasticsearch:
cluster-name: es-cluster
cluster-nodes: 127.0.0.1:9300
repositories:
enabled: true
{{/if}}
datasource:
username: a_LAB01_da1af574b
password: 'D33f8870'
url: jdbc:mysql://172.16.186.185:3306/a_LAB01_da1af574b?autoReconnect=true
&
useUnicode=true
&
characterEncoding=UTF-8
&
useOldAliasMetadataBehavior=true
&
serverTimezone=Asia/Shanghai
&
allowMultiQueries=true
&
serverTimezone=GMT%2B8
&
useSSL=false
driver-class-name: com.mysql.jdbc.Driver
isSyncDBSchema: false
defaultSchema: a_LAB01_da1af574b
dynamic:
druid: #以下是全局默认值,可以全局更改
filters: stat,wall,log4j2
#配置初始化大小/最小/最大
initial-size: 1
min-idle: 1
max-active: 20
#获取连接等待超时时间
max-wait: 60000
#间隔多久进行一次检测,检测需要关闭的空闲连接
time-between-eviction-runs-millis: 60000
#一个连接在池中最小生存的时间
min-evictable-idle-time-millis: 300000
validation-query: SELECT 1 FROM DUAL
test-while-idle: true
test-on-borrow: false
test-on-return: false
#打开PSCache,并指定每个连接上PSCache的大小。oracle设为true,mysql设为false。分库分表较多推荐设置为false
pool-prepared-statements: false
#max-pool-prepared-statement-per-connection-size: 20
datasource:
master:
username: ${spring.datasource.username}
password: ${spring.datasource.password}
url: ${spring.datasource.url}
driver-class-name: ${spring.datasource.driver-class-name}
#启动是否加载liquibase构建表结构
liquibase:
enabled: false
change-log: classpath:liquibase/master.xml
# Mybatis-plus配置
mybatis-plus:
global-config:
refresh-mapper: true
db-config:
# 全局逻辑已删除默认值
logic-delete-value: 0
# 全局逻辑未删除默认值
logic-not-delete-value: 1
# mapper-locations: classpath*:/mapper/*/*/*.xml
configuration:
jdbc-type-for-null: 'null'
map-underscore-to-camel-case: false
type-handlers-package: net.ibizsys.central.database.mybatis.typehandler
{{#if
system
.
enableES
}}
management:
health:
elasticsearch:
enabled: false
{{/if}}
# 阿里sentinel熔断器
feign:
httpclient:
enabled: true
sentinel:
enabled: true
compression:
request:
enabled: true
mime-types: application/javascript,text/css,application/json,application/xml,text/html,text/xml,text/plain
min-response-size: 10240
response:
enabled: true
#zuul网关超时设置
ribbon:
ReadTimeout: 60000
ConnectTimeout: 60000
{{#if
system
.
enableGlobalTransaction
}}
seata:
enabled: true #是否开启全局事务
application-id:
{{
projectName
}}
#服务标识
tx-service-group:
{{
projectName
}}
group #事务组
service:
vgroup-mapping:
{{
projectName
}}
group: default #指定事务组对应的Tc Server集群
registry:
type: nacos #注册中心
nacos:
application: seata-server #Tc Server服务标识
server-addr: 127.0.0.1:8848 #注册中心地址
group: DEFAULT_GROUP #服务组
namespace: #服务命名空间
userName: #用户名
password: #密码
{{/if}}
{{#if
system
.
enableMQ
}}
rocketmq:
producer:
namesrvAddr: 127.0.0.1:9876
isOnOff: 'off'
groupName: default
topic: default
consumer:
namesrvAddr: 127.0.0.1:9876
isOnOff: 'off'
groupName: default
topic: default
{{/if}}
#Log配置
logging:
level:
net.ibizsys.central.database.mybatis: INFO
org.springframework.boot.autoconfigure: ERROR
#系统是否开启权限验证、是否开启缓存
#缓存级别:无缓存(无配置项)、一级缓存(L1)、二级缓存(L2)
ibiz:
systemid:
{{
system
.
codeName
}}
systemname:
{{
system
.
logicName
}}
enablePermissionValid: true
cacheLevel: L1 #(L1)一级本地caffeine缓存;(L2)caffeine缓存+Redis缓存
{{#
eq
system
.
saaSMode
4
}}
saas:
column: SRFDCID
sys-tables: ACT_RU_TASK,act_re_procdef,databasechangelog,databasechangeloglock
{{#
each
system
.
entities
as
|
entity
|
}}{{#if
(
and
(
eq
entity
.
storage
"SQL"
)
(
entity
.
saaSMode
0
))
}}
,
{{
entity
.
tableName
}}{{/if}}{{/
each
}}
{{/
eq
}}
### jobs
jobs:
#admin-address: http://127.0.0.1:40005
app-name: ibznotify
app-port: 9999
#app-ip: 127.0.0.1
### 启用Gzip压缩
server:
compression:
enabled: true
mime-types: application/javascript,text/css,application/json,application/xml,text/html,text/xml,text/plain
min-response-size: 10240
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r8/{{projectName}}-provider/src/main/resources/application.yml.hbs
0 → 100644
浏览文件 @
2f391f52
spring:
profiles:
include: sys, nacos
application:
name:
{{
projectName
}}
-provider
modules/ibizlab-generator-core/src/main/resources/templ/r8/{{projectName}}-provider/src/main/resources/logback-spring.xml.hbs
0 → 100644
浏览文件 @
2f391f52
<?xml version="1.0" encoding="UTF-8"?>
<configuration
debug=
"false"
>
<property
name=
"LOG_PATH"
value=
"logs"
/>
<property
name=
"LOG_PATTERN"
value=
"%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %-40.40logger{39} : %msg%n"
/>
<!-- 彩色日志 -->
<!-- 彩色日志依赖的渲染类 -->
<conversionRule
conversionWord=
"clr"
converterClass=
"org.springframework.boot.logging.logback.ColorConverter"
/>
<conversionRule
conversionWord=
"wex"
converterClass=
"org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"
/>
<conversionRule
conversionWord=
"wEx"
converterClass=
"org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"
/>
<!-- 彩色日志格式 -->
<property
name=
"LOG_PATTERN2"
value=
"${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr([${LOG_LEVEL_PATTERN:-%5p}]) %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"
/>
<!-- 控制台输出 -->
<appender
name=
"Console"
class=
"ch.qos.logback.core.ConsoleAppender"
>
<encoder
class=
"ch.qos.logback.classic.encoder.PatternLayoutEncoder"
>
<pattern>
${LOG_PATTERN}
</pattern>
</encoder>
</appender>
<!-- 按照每天生成日志文件 -->
<appender
name=
"file"
class=
"ch.qos.logback.core.rolling.RollingFileAppender"
>
<rollingPolicy
class=
"ch.qos.logback.core.rolling.TimeBasedRollingPolicy"
>
<!--日志文件输出的文件名-->
<FileNamePattern>
${LOG_PATH}/
{{
projectName
}}
-provider.%d{yyyy-MM-dd}.log
</FileNamePattern>
<!--日志文件保留天数-->
<MaxHistory>
30
</MaxHistory>
</rollingPolicy>
<encoder
class=
"ch.qos.logback.classic.encoder.PatternLayoutEncoder"
>
<pattern>
${LOG_PATTERN}
</pattern>
</encoder>
<!--日志文件最大的大小-->
<triggeringPolicy
class=
"ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"
>
<MaxFileSize>
100MB
</MaxFileSize>
</triggeringPolicy>
</appender>
<!-- 日志输出级别 -->
<root
level=
"INFO"
>
<appender-ref
ref=
"Console"
/>
<!-- <appender-ref ref="file" /> -->
</root>
</configuration>
\ No newline at end of file
编辑
预览
Markdown
格式
0%
请重试
or
添加新附件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
先完成此消息的编辑!
取消
想要评论请
注册
或
登录