diff --git a/erm.frontend/package.json b/erm.frontend/package.json index c4476668..dcf0039c 100644 --- a/erm.frontend/package.json +++ b/erm.frontend/package.json @@ -112,7 +112,7 @@ "node-sql-parser": "5.3.6", "pinia": "2.3.0", "pinia-undo": "0.2.4", - "platform-core": "8.2.63", + "platform-core": "8.2.65", "quasar": "2.17.6", "sort-array": "5.0.0", "svg-path-commander": "2.1.7", diff --git a/io.sc.engine.mv.frontend/package.json b/io.sc.engine.mv.frontend/package.json index 273fb796..f7177423 100644 --- a/io.sc.engine.mv.frontend/package.json +++ b/io.sc.engine.mv.frontend/package.json @@ -112,7 +112,7 @@ "node-sql-parser": "5.3.6", "pinia": "2.3.0", "pinia-undo": "0.2.4", - "platform-core": "8.2.63", + "platform-core": "8.2.65", "quasar": "2.17.6", "sort-array": "5.0.0", "svg-path-commander": "2.1.7", diff --git a/io.sc.engine.rule.frontend/package.json b/io.sc.engine.rule.frontend/package.json index 6fa7edd2..a4e22895 100644 --- a/io.sc.engine.rule.frontend/package.json +++ b/io.sc.engine.rule.frontend/package.json @@ -112,7 +112,7 @@ "node-sql-parser": "5.3.6", "pinia": "2.3.0", "pinia-undo": "0.2.4", - "platform-core": "8.2.63", + "platform-core": "8.2.65", "quasar": "2.17.6", "sort-array": "5.0.0", "svg-path-commander": "2.1.7", diff --git a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/resource/controller/ResourcePermissionWebController.java b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/resource/controller/ResourcePermissionWebController.java index bffdfa58..3e1f8258 100644 --- a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/resource/controller/ResourcePermissionWebController.java +++ b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/resource/controller/ResourcePermissionWebController.java @@ -23,8 +23,6 @@ public class ResourcePermissionWebController { /** * 列出所有资源,并且将角色所拥有的资源列表作出标记 - * @param request HttpServletRequest 对象 - * @param response HttpServletResponse 对象 * @param roleId 角色ID * @return 所有资源,并且将角色所拥有的资源列表作出标记 * @throws Exception 违例 diff --git a/io.sc.engine.st.frontend/package.json b/io.sc.engine.st.frontend/package.json index ba4dd329..9347181e 100644 --- a/io.sc.engine.st.frontend/package.json +++ b/io.sc.engine.st.frontend/package.json @@ -112,7 +112,7 @@ "node-sql-parser": "5.3.6", "pinia": "2.3.0", "pinia-undo": "0.2.4", - "platform-core": "8.2.63", + "platform-core": "8.2.65", "quasar": "2.17.6", "sort-array": "5.0.0", "svg-path-commander": "2.1.7", diff --git a/io.sc.platform.ai.frontend/package.json b/io.sc.platform.ai.frontend/package.json index ab8b8b1d..4bbbb99a 100644 --- a/io.sc.platform.ai.frontend/package.json +++ b/io.sc.platform.ai.frontend/package.json @@ -112,7 +112,7 @@ "node-sql-parser": "5.3.6", "pinia": "2.3.0", "pinia-undo": "0.2.4", - "platform-core": "8.2.63", + "platform-core": "8.2.65", "quasar": "2.17.6", "sort-array": "5.0.0", "svg-path-commander": "2.1.7", diff --git a/io.sc.platform.core.frontend/src/components/index.ts b/io.sc.platform.core.frontend/src/components/index.ts index 5e95116b..2255b98d 100644 --- a/io.sc.platform.core.frontend/src/components/index.ts +++ b/io.sc.platform.core.frontend/src/components/index.ts @@ -2,6 +2,7 @@ * 此文件为自动生成文件,请勿修改 */ +import component_testcase_globalRoute from '@/views/testcase/global-route/GlobalRoute.vue'; import component_testcase_openNoMenuRoute from '@/views/testcase/route/OpenNoMenuRoute.vue'; import component_testcase_noMenuRoute from '@/views/testcase/route/NoMenuRoute.vue'; import component_testcase_mathEditor from '@/views/testcase/math/MathEditor.vue'; @@ -23,6 +24,7 @@ import component_testcase_gridLayout from '@/views/likm/GridLayout.vue'; import component_testcase_likmTreeGrid from '@/views/likm/TreeGrid.vue'; const localComponents = { + 'component.testcase.globalRoute': component_testcase_globalRoute, 'component.testcase.openNoMenuRoute': component_testcase_openNoMenuRoute, 'component.testcase.noMenuRoute': component_testcase_noMenuRoute, 'component.testcase.mathEditor': component_testcase_mathEditor, diff --git a/io.sc.platform.core.frontend/src/platform/layout/sub-layout/Topper.vue b/io.sc.platform.core.frontend/src/platform/layout/sub-layout/Topper.vue index 89c88cbd..ba62b83b 100644 --- a/io.sc.platform.core.frontend/src/platform/layout/sub-layout/Topper.vue +++ b/io.sc.platform.core.frontend/src/platform/layout/sub-layout/Topper.vue @@ -62,18 +62,26 @@ - + - {{ item.name }} -
+ {{ item.businessDescription }} + {{ item.processDefinitionName }} [{{ item.name }}]
{{ item.createTimeAndNowDiff }}{{ $t(item.createTimeAndNowDiffUnit) }}{{ $t('before') }} - {{ item.processDefinitionName }}
@@ -81,7 +89,15 @@ - + @@ -100,7 +116,15 @@ - + @@ -195,6 +219,7 @@ + @@ -209,6 +234,7 @@ import LoginDialog from '@/platform/views/LoginDialog'; import AboutDialog from './AboutDialog.vue'; import ChangePasswordDialog from './ChangePasswordDialog.vue'; import ChangeRoleDialog from './ChangeRoleDialog.vue'; +import ViewTaskDialog from './ViewTaskDialog.vue'; import ViewNotificationDialog from './ViewNotificationDialog.vue'; import ViewAnnouncementDialog from './ViewAnnouncementDialog.vue'; @@ -221,6 +247,7 @@ const loginDialog = ref(); const aboutDialog = ref(); const changePasswordDialog = ref(); const changeRoleDialog = ref(); +const viewTaskDialog = ref(); const viewNotificationDialog = ref(); const viewAnnouncementDialog = ref(); const { t } = useI18n(); @@ -322,6 +349,10 @@ const findUnReadedAnnouncements = () => { }); }; +const viewTask = (item) => { + viewNotificationDialog.value.open(item); +}; + const viewNotification = (item) => { viewNotificationDialog.value.open(item); }; diff --git a/io.sc.platform.core.frontend/src/platform/layout/sub-layout/ViewNotificationDialog.vue b/io.sc.platform.core.frontend/src/platform/layout/sub-layout/ViewNotificationDialog.vue index f4be46e0..eabc882b 100644 --- a/io.sc.platform.core.frontend/src/platform/layout/sub-layout/ViewNotificationDialog.vue +++ b/io.sc.platform.core.frontend/src/platform/layout/sub-layout/ViewNotificationDialog.vue @@ -15,8 +15,9 @@ bg-color="primary" > + diff --git a/io.sc.platform.core.frontend/src/routes/routes.json b/io.sc.platform.core.frontend/src/routes/routes.json index dda10bc7..7dd075b3 100644 --- a/io.sc.platform.core.frontend/src/routes/routes.json +++ b/io.sc.platform.core.frontend/src/routes/routes.json @@ -1,4 +1,16 @@ [ + { + "name": "route.testcase.globalRoute", + "path": "/testcase/globalRoute", + "parent": null, + "priority": 0, + "component": "component.testcase.globalRoute", + "componentPath": "@/views/testcase/global-route/GlobalRoute.vue", + "redirect": null, + "meta": { + "permissions": ["/testcase/loading/**/*"] + } + }, { "name": "route.testcase.openNoMenuRoute", "path": "testcase/openNoMenuRoute", diff --git a/io.sc.platform.core.frontend/src/views/testcase/global-route/GlobalRoute.vue b/io.sc.platform.core.frontend/src/views/testcase/global-route/GlobalRoute.vue new file mode 100644 index 00000000..2b0f72ae --- /dev/null +++ b/io.sc.platform.core.frontend/src/views/testcase/global-route/GlobalRoute.vue @@ -0,0 +1,4 @@ + + diff --git a/io.sc.platform.core.frontend/template-project/package.json b/io.sc.platform.core.frontend/template-project/package.json index 9248b22f..8449fb97 100644 --- a/io.sc.platform.core.frontend/template-project/package.json +++ b/io.sc.platform.core.frontend/template-project/package.json @@ -1,6 +1,6 @@ { "name": "platform-core", - "version": "8.2.63", + "version": "8.2.65", "description": "前端核心包,用于快速构建前端的脚手架", "private": false, "keywords": [], @@ -111,7 +111,7 @@ "mockjs": "1.1.0", "node-sql-parser": "5.3.6", "pinia": "2.3.0", - "platform-core": "8.2.63", + "platform-core": "8.2.65", "quasar": "2.17.6", "sort-array": "5.0.0", "svg-path-commander": "2.1.7", diff --git a/io.sc.platform.developer.doc/package.json b/io.sc.platform.developer.doc/package.json index 7ef3c652..4bec3e49 100644 --- a/io.sc.platform.developer.doc/package.json +++ b/io.sc.platform.developer.doc/package.json @@ -28,7 +28,7 @@ "vuepress": "2.0.0-rc.15" }, "dependencies": { - "platform-core": "8.2.63", + "platform-core": "8.2.65", "quasar": "2.17.6", "vue": "3.5.13", "vue-i18n": "11.0.1" diff --git a/io.sc.platform.developer.frontend/package.json b/io.sc.platform.developer.frontend/package.json index 01c5bdc8..12415cea 100644 --- a/io.sc.platform.developer.frontend/package.json +++ b/io.sc.platform.developer.frontend/package.json @@ -112,7 +112,7 @@ "node-sql-parser": "5.3.6", "pinia": "2.3.0", "pinia-undo": "0.2.4", - "platform-core": "8.2.63", + "platform-core": "8.2.65", "quasar": "2.17.6", "sort-array": "5.0.0", "svg-path-commander": "2.1.7", diff --git a/io.sc.platform.flowable/src/main/java/io/sc/platform/flowable/api/ProcessVo.java b/io.sc.platform.flowable/src/main/java/io/sc/platform/flowable/api/ProcessVo.java index 2968db69..748b5063 100644 --- a/io.sc.platform.flowable/src/main/java/io/sc/platform/flowable/api/ProcessVo.java +++ b/io.sc.platform.flowable/src/main/java/io/sc/platform/flowable/api/ProcessVo.java @@ -14,7 +14,8 @@ public class ProcessVo extends CorporationAuditorVo { private String xml; private ProcessStatus status; private Boolean canClaimTask; - private String taskDescriptionSql; + private String businessDescriptionSql; + private String routePath; public String getId() { return id; @@ -96,11 +97,19 @@ public class ProcessVo extends CorporationAuditorVo { this.canClaimTask = canClaimTask; } - public String getTaskDescriptionSql() { - return taskDescriptionSql; + public String getBusinessDescriptionSql() { + return businessDescriptionSql; } - public void setTaskDescriptionSql(String taskDescriptionSql) { - this.taskDescriptionSql = taskDescriptionSql; + public void setBusinessDescriptionSql(String businessDescriptionSql) { + this.businessDescriptionSql = businessDescriptionSql; + } + + public String getRoutePath() { + return routePath; + } + + public void setRoutePath(String routePath) { + this.routePath = routePath; } } diff --git a/io.sc.platform.flowable/src/main/java/io/sc/platform/flowable/jpa/entity/ProcessEntity.java b/io.sc.platform.flowable/src/main/java/io/sc/platform/flowable/jpa/entity/ProcessEntity.java index b46c7cab..d843ab07 100644 --- a/io.sc.platform.flowable/src/main/java/io/sc/platform/flowable/jpa/entity/ProcessEntity.java +++ b/io.sc.platform.flowable/src/main/java/io/sc/platform/flowable/jpa/entity/ProcessEntity.java @@ -76,9 +76,13 @@ public class ProcessEntity extends CorporationAuditorEntity { @Convert(converter= NumericBooleanConverter.class) private Boolean canClaimTask; - @Column(name="TASK_DESCRIPTION_SQL_") + @Column(name="BUSINESS_DESC_SQL_") @Size(max=1024) - private String taskDescriptionSql; + private String businessDescriptionSql; + + @Column(name="ROUTE_PATH_") + @Size(max=1024) + private String routePath; @Override public ProcessVo toVo() { @@ -94,7 +98,8 @@ public class ProcessEntity extends CorporationAuditorEntity { vo.setXml(this.getXml()); vo.setStatus(this.getStatus()); vo.setCanClaimTask(this.getCanClaimTask()); - vo.setTaskDescriptionSql(this.getTaskDescriptionSql()); + vo.setBusinessDescriptionSql(this.getBusinessDescriptionSql()); + vo.setRoutePath(this.getRoutePath()); return vo; } @@ -178,12 +183,20 @@ public class ProcessEntity extends CorporationAuditorEntity { this.canClaimTask = canClaimTask; } - public String getTaskDescriptionSql() { - return taskDescriptionSql; + public String getBusinessDescriptionSql() { + return businessDescriptionSql; + } + + public void setBusinessDescriptionSql(String businessDescriptionSql) { + this.businessDescriptionSql = businessDescriptionSql; + } + + public String getRoutePath() { + return routePath; } - public void setTaskDescriptionSql(String taskDescriptionSql) { - this.taskDescriptionSql = taskDescriptionSql; + public void setRoutePath(String routePath) { + this.routePath = routePath; } @Override diff --git a/io.sc.platform.flowable/src/main/java/io/sc/platform/flowable/service/impl/ProcessQueryServiceImpl.java b/io.sc.platform.flowable/src/main/java/io/sc/platform/flowable/service/impl/ProcessQueryServiceImpl.java index 980cc5d3..71a156dd 100644 --- a/io.sc.platform.flowable/src/main/java/io/sc/platform/flowable/service/impl/ProcessQueryServiceImpl.java +++ b/io.sc.platform.flowable/src/main/java/io/sc/platform/flowable/service/impl/ProcessQueryServiceImpl.java @@ -1,5 +1,7 @@ package io.sc.platform.flowable.service.impl; +import io.sc.platform.core.support.KeyValue; +import io.sc.platform.flowable.jpa.entity.ProcessEntity; import io.sc.platform.flowable.service.AssigneeQueryService; import io.sc.platform.flowable.service.ProcessEntityService; import io.sc.platform.flowable.service.ProcessQueryService; @@ -10,6 +12,7 @@ import io.sc.platform.orm.service.support.QueryResult; import io.sc.platform.orm.service.support.criteria.Criteria; import io.sc.platform.orm.service.support.criteria.impl.Equals; import io.sc.platform.util.CollectionUtil; +import io.sc.platform.util.StringUtil; import org.flowable.bpmn.model.BpmnModel; import org.flowable.bpmn.model.EndEvent; import org.flowable.bpmn.model.FlowElement; @@ -274,6 +277,7 @@ public class ProcessQueryServiceImpl implements ProcessQueryService { List wrappers =new ArrayList<>(); Set processIntanceIds =new HashSet<>(); + Map> processDefineAndInstanceAndBusinessMap =new HashMap<>(); for(Task item : items){ ProcessTaskWrapper wrapper =new ProcessTaskWrapper(); wrapper.setId(item.getId()); @@ -298,23 +302,86 @@ public class ProcessQueryServiceImpl implements ProcessQueryService { wrapper.setFormKey(item.getFormKey()); wrapper.setClaimTime(item.getClaimTime()); wrappers.add(wrapper); + Map processInstanceAndBusinessMap =processDefineAndInstanceAndBusinessMap.get(item.getProcessDefinitionId()); + if(processInstanceAndBusinessMap==null){ + processInstanceAndBusinessMap =new HashMap<>(); + processDefineAndInstanceAndBusinessMap.put(item.getProcessDefinitionId(),processInstanceAndBusinessMap); + } + processInstanceAndBusinessMap.put(item.getProcessInstanceId(),new BusinessKeyAndDescription()); processIntanceIds.add(item.getProcessInstanceId()); } - - Map businessKeyMap =new HashMap<>(); + // 建立流程实例和业务Key的关系 List processInstances =runtimeService.createProcessInstanceQuery().processInstanceIds(processIntanceIds).list(); if(CollectionUtil.hasElements(processInstances)) { for (ProcessInstance processInstance : processInstances) { - businessKeyMap.put(processInstance.getId(), new String[]{processInstance.getBusinessKey(),processInstance.getProcessDefinitionName()}); + Map processInstanceAndBusinessMap =processDefineAndInstanceAndBusinessMap.get(processInstance.getProcessDefinitionId()); + if(processInstanceAndBusinessMap!=null){ + BusinessKeyAndDescription businessKeyAndDescription =processInstanceAndBusinessMap.get(processInstance.getId()); + if(businessKeyAndDescription!=null){ + businessKeyAndDescription.setProcessDefinitionName(processInstance.getProcessDefinitionName()); + businessKeyAndDescription.setBusinessKey(processInstance.getBusinessKey()); + businessKeyAndDescription.setBusinessDescription(processInstance.getProcessDefinitionName()); + } + } + } + } + + for(String processDefineId : processDefineAndInstanceAndBusinessMap.keySet()) { + Map processInstanceAndBusinessMap =processDefineAndInstanceAndBusinessMap.get(processDefineId); + if(processInstanceAndBusinessMap==null || processInstanceAndBusinessMap.size()<=0){ + continue; + } + ProcessEntity processEntity =processEntityService.getRepository().findByDeployedId(processDefineId); + for(String processInstanceId : processInstanceAndBusinessMap.keySet()){ + BusinessKeyAndDescription businessKeyAndDescription =processInstanceAndBusinessMap.get(processInstanceId); + if(businessKeyAndDescription!=null){ + businessKeyAndDescription.setRoutePath(processEntity.getRoutePath()); + } + } + if(processEntity==null){ + continue; + } + String sql =processEntity.getBusinessDescriptionSql(); + if(!StringUtils.hasText(sql)){ + continue; + } + + Set businessKeys =new HashSet<>(); + for(Map.Entry entry: processInstanceAndBusinessMap.entrySet()){ + businessKeys.add(entry.getValue().getBusinessKey()); + } + if(!CollectionUtil.hasElements(businessKeys)){ + continue; + } + Map variables =new HashMap<>(); + variables.put("bussinessKeys","'" + StringUtil.combine("','",businessKeys) + "'"); + sql =StringUtil.format(sql,variables); + List> result =jdbcTemplate.queryForList(sql); + if(!CollectionUtil.hasElements(result)){ + continue; + } + for(Map row : result){ + String bussinessKey =row.get("BUSSINESS_KEY").toString(); + String bussinessDescription =row.get("BUSSINESS_DESCRIPTION").toString(); + for(String processInstanceId : processInstanceAndBusinessMap.keySet()){ + BusinessKeyAndDescription businessKeyAndDescription =processInstanceAndBusinessMap.get(processInstanceId); + if(businessKeyAndDescription.getBusinessKey().equals(bussinessKey)){ + businessKeyAndDescription.setBusinessDescription(bussinessDescription); + break; + } + } } } //合并 for(ProcessTaskWrapper wrapper : wrappers){ - String[] item =businessKeyMap.get(wrapper.getProcessInstanceId()); - wrapper.setBusinessKey(item[0]); - wrapper.setProcessDefinitionName(item[1]); + Map processInstanceAndBusinessMap =processDefineAndInstanceAndBusinessMap.get(wrapper.getProcessDefinitionId()); + BusinessKeyAndDescription businessKeyAndDescription =processInstanceAndBusinessMap.get(wrapper.getProcessInstanceId()); + wrapper.setBusinessKey(businessKeyAndDescription.getBusinessKey()); + wrapper.setBusinessDescription(businessKeyAndDescription.getBusinessDescription()); + wrapper.setProcessDefinitionName(businessKeyAndDescription.getProcessDefinitionName()); + wrapper.setRoutePath(businessKeyAndDescription.getRoutePath()); } return new PageImpl(wrappers,pageable,total); diff --git a/io.sc.platform.flowable/src/main/java/io/sc/platform/flowable/support/BusinessKeyAndDescription.java b/io.sc.platform.flowable/src/main/java/io/sc/platform/flowable/support/BusinessKeyAndDescription.java new file mode 100644 index 00000000..71224995 --- /dev/null +++ b/io.sc.platform.flowable/src/main/java/io/sc/platform/flowable/support/BusinessKeyAndDescription.java @@ -0,0 +1,40 @@ +package io.sc.platform.flowable.support; + +public class BusinessKeyAndDescription { + private String processDefinitionName; + private String businessKey; + private String businessDescription; + private String routePath; + + public String getProcessDefinitionName() { + return processDefinitionName; + } + + public void setProcessDefinitionName(String processDefinitionName) { + this.processDefinitionName = processDefinitionName; + } + + public String getBusinessKey() { + return businessKey; + } + + public void setBusinessKey(String businessKey) { + this.businessKey = businessKey; + } + + public String getBusinessDescription() { + return businessDescription; + } + + public void setBusinessDescription(String businessDescription) { + this.businessDescription = businessDescription; + } + + public String getRoutePath() { + return routePath; + } + + public void setRoutePath(String routePath) { + this.routePath = routePath; + } +} diff --git a/io.sc.platform.flowable/src/main/java/io/sc/platform/flowable/support/ProcessTaskWrapper.java b/io.sc.platform.flowable/src/main/java/io/sc/platform/flowable/support/ProcessTaskWrapper.java index 1d33b13d..ed39bb62 100644 --- a/io.sc.platform.flowable/src/main/java/io/sc/platform/flowable/support/ProcessTaskWrapper.java +++ b/io.sc.platform.flowable/src/main/java/io/sc/platform/flowable/support/ProcessTaskWrapper.java @@ -33,6 +33,8 @@ public class ProcessTaskWrapper { private String processDefinitionName; private String businessKey; + private String businessDescription; + private String routePath; private long createTimeAndNowDiff; private ChronoUnit createTimeAndNowDiffUnit; @@ -180,6 +182,22 @@ public class ProcessTaskWrapper { this.businessKey = businessKey; } + public String getBusinessDescription() { + return businessDescription; + } + + public void setBusinessDescription(String businessDescription) { + this.businessDescription = businessDescription; + } + + public String getRoutePath() { + return routePath; + } + + public void setRoutePath(String routePath) { + this.routePath = routePath; + } + public long getCreateTimeAndNowDiff() { return createTimeAndNowDiff; } diff --git a/io.sc.platform.flowable/src/main/resources/liquibase/io.sc.platform.flowable_8.0.0_20220606__Process Manager Database Schema DDL.xml b/io.sc.platform.flowable/src/main/resources/liquibase/io.sc.platform.flowable_8.0.0_20220606__Process Manager Database Schema DDL.xml index acdd66f4..bfbf830d 100644 --- a/io.sc.platform.flowable/src/main/resources/liquibase/io.sc.platform.flowable_8.0.0_20220606__Process Manager Database Schema DDL.xml +++ b/io.sc.platform.flowable/src/main/resources/liquibase/io.sc.platform.flowable_8.0.0_20220606__Process Manager Database Schema DDL.xml @@ -25,7 +25,7 @@ - + diff --git a/io.sc.platform.lcdp.frontend/package.json b/io.sc.platform.lcdp.frontend/package.json index 6c76c32b..9f41a197 100644 --- a/io.sc.platform.lcdp.frontend/package.json +++ b/io.sc.platform.lcdp.frontend/package.json @@ -112,7 +112,7 @@ "node-sql-parser": "5.3.6", "pinia": "2.3.0", "pinia-undo": "0.2.4", - "platform-core": "8.2.63", + "platform-core": "8.2.65", "quasar": "2.17.6", "sort-array": "5.0.0", "svg-path-commander": "2.1.7", diff --git a/io.sc.platform.lcdp.frontend/src/i18n/messages.json b/io.sc.platform.lcdp.frontend/src/i18n/messages.json index ba2704d1..a530db5c 100644 --- a/io.sc.platform.lcdp.frontend/src/i18n/messages.json +++ b/io.sc.platform.lcdp.frontend/src/i18n/messages.json @@ -164,7 +164,8 @@ "lcdp.bpm.processDefine.grid.toolbar.queryProcessInstance": "Query Process Instance", "lcdp.bpm.processDefine.grid.entity.deployId": "Deploy ID", "lcdp.bpm.processDefine.grid.entity.canClaimTask": "Can Claim Task", - "lcdp.bpm.processDefine.grid.entity.taskDescriptionSql": "Task Description SQL with Bussiness Properties", + "lcdp.bpm.processDefine.grid.entity.businessDescriptionSql": "Bussiness Description SQL", + "lcdp.bpm.processDefine.grid.entity.routePath": "Front End Route Path (start with /)", "lcdp.bpm.designer.dialog.title.prefix": "Process Designer", diff --git a/io.sc.platform.lcdp.frontend/src/i18n/messages_tw_CN.json b/io.sc.platform.lcdp.frontend/src/i18n/messages_tw_CN.json index 28d62a7c..fdcdfc5c 100644 --- a/io.sc.platform.lcdp.frontend/src/i18n/messages_tw_CN.json +++ b/io.sc.platform.lcdp.frontend/src/i18n/messages_tw_CN.json @@ -164,7 +164,8 @@ "lcdp.bpm.processDefine.grid.toolbar.queryProcessInstance": "查詢流程實例", "lcdp.bpm.processDefine.grid.entity.deployId": "發佈 ID", "lcdp.bpm.processDefine.grid.entity.canClaimTask": "允許領取任務", - "lcdp.bpm.processDefine.grid.entity.taskDescriptionSql": "任務描述 SQL 語句(帶業務屬性)", + "lcdp.bpm.processDefine.grid.entity.businessDescriptionSql": "業務描述 SQL", + "lcdp.bpm.processDefine.grid.entity.routePath": "前端路由路徑(以 / 開頭)", "lcdp.bpm.designer.dialog.title.prefix": "流程設計器", diff --git a/io.sc.platform.lcdp.frontend/src/i18n/messages_zh_CN.json b/io.sc.platform.lcdp.frontend/src/i18n/messages_zh_CN.json index c2a3168f..7ff40a50 100644 --- a/io.sc.platform.lcdp.frontend/src/i18n/messages_zh_CN.json +++ b/io.sc.platform.lcdp.frontend/src/i18n/messages_zh_CN.json @@ -164,7 +164,8 @@ "lcdp.bpm.processDefine.grid.toolbar.queryProcessInstance": "查询流程实例", "lcdp.bpm.processDefine.grid.entity.deployId": "发布 ID", "lcdp.bpm.processDefine.grid.entity.canClaimTask": "允许领取任务", - "lcdp.bpm.processDefine.grid.entity.taskDescriptionSql": "任务描述 SQL 语句(带业务属性)", + "lcdp.bpm.processDefine.grid.entity.businessDescriptionSql": "业务描述 SQL", + "lcdp.bpm.processDefine.grid.entity.routePath": "前端路由路径(以 / 开头)", "lcdp.bpm.designer.dialog.title.prefix": "流程设计器", diff --git a/io.sc.platform.lcdp.frontend/src/views/bpm/Bpm.vue b/io.sc.platform.lcdp.frontend/src/views/bpm/Bpm.vue index 5ecc110c..90ae86a0 100644 --- a/io.sc.platform.lcdp.frontend/src/views/bpm/Bpm.vue +++ b/io.sc.platform.lcdp.frontend/src/views/bpm/Bpm.vue @@ -19,7 +19,7 @@ :checkbox-selection="true" :data-url="Environment.apiContextPath('/api/flowable/process')" :pageable="true" - :sort-by="['-lastModifyDate']" + :sort-by="['key', '-status', '-version']" :query-form-cols-num="4" :query-form-fields="[ { name: 'key', label: $t('code'), type: 'w-text', clearable: true }, @@ -176,7 +176,7 @@ ]" :editor="{ dialog: { - width: '600px', + width: '800px', }, form: { colsNum: 1, @@ -216,21 +216,42 @@ { name: 'xml', label: $t('xml'), type: 'w-textarea' }, { name: 'status', label: $t('status'), type: 'w-text', defaultValue: 'SKETCH', showIf: false }, { name: 'canClaimTask', label: $t('lcdp.bpm.processDefine.grid.entity.canClaimTask'), type: 'w-checkbox', defaultValue: true, rule: [] }, + { name: 'routePath', label: $t('lcdp.bpm.processDefine.grid.entity.routePath'), type: 'w-text', defaultValue: '/' }, { - name: 'taskDescriptionSqlSample', - label: $t('lcdp.bpm.processDefine.grid.entity.taskDescriptionSql'), - type: 'q-btn', - outline: true, - style: 'width:200px', + type: 'w-form-group', + align: 'right', + fields: [ + { + name: 'businessDescriptionSqlExample', + label: $t('example'), + type: 'q-btn', + outline: true, + noCaps: true, + style: 'width:100px', + onClick: (args: any) => { + let sql = 'select\n'; + sql += '\tbusinessKeyFieldName BUSSINESS_KEY,\n'; + sql += '\tbusinessDescriptionFieldName BUSSINESS_DESCRIPTION\n'; + sql += 'from bussinessTable\n'; + sql += 'where businessKeyFieldName in (${bussinessKeys})'; + processDefineGridRef.getEditorForm().setFieldValue('businessDescriptionSql', sql); + }, + }, + ], }, { - name: 'taskDescriptionSql', - label: $t('lcdp.bpm.processDefine.grid.entity.taskDescriptionSql'), + name: 'businessDescriptionSql', + label: $t('lcdp.bpm.processDefine.grid.entity.businessDescriptionSql'), type: 'w-code-mirror', - rows: 5, + rows: 6, lang: 'sql', toolbar: false, - modelValue: 'select \'任务描述\' from 业务表\nwhere 业务表.id in (${bussinessKeys})', + lineHeight: '1.3rem', + fontSize: '0.75rem', + lineNumber: true, + lineWrap: false, + lineBreak: true, + placeholder: true, }, ], }, diff --git a/io.sc.platform.license.keygen.frontend/package.json b/io.sc.platform.license.keygen.frontend/package.json index 8d97cd71..523bc764 100644 --- a/io.sc.platform.license.keygen.frontend/package.json +++ b/io.sc.platform.license.keygen.frontend/package.json @@ -112,7 +112,7 @@ "node-sql-parser": "5.3.6", "pinia": "2.3.0", "pinia-undo": "0.2.4", - "platform-core": "8.2.63", + "platform-core": "8.2.65", "quasar": "2.17.6", "sort-array": "5.0.0", "svg-path-commander": "2.1.7", diff --git a/io.sc.platform.mvc.frontend/package.json b/io.sc.platform.mvc.frontend/package.json index 0d8ac8e6..847b2abd 100644 --- a/io.sc.platform.mvc.frontend/package.json +++ b/io.sc.platform.mvc.frontend/package.json @@ -112,7 +112,7 @@ "node-sql-parser": "5.3.6", "pinia": "2.3.0", "pinia-undo": "0.2.4", - "platform-core": "8.2.63", + "platform-core": "8.2.65", "quasar": "2.17.6", "sort-array": "5.0.0", "svg-path-commander": "2.1.7", diff --git a/io.sc.platform.scheduler.manager.frontend/package.json b/io.sc.platform.scheduler.manager.frontend/package.json index e8ab15c5..aace8ec5 100644 --- a/io.sc.platform.scheduler.manager.frontend/package.json +++ b/io.sc.platform.scheduler.manager.frontend/package.json @@ -112,7 +112,7 @@ "node-sql-parser": "5.3.6", "pinia": "2.3.0", "pinia-undo": "0.2.4", - "platform-core": "8.2.63", + "platform-core": "8.2.65", "quasar": "2.17.6", "sort-array": "5.0.0", "svg-path-commander": "2.1.7", diff --git a/io.sc.platform.system.frontend/package.json b/io.sc.platform.system.frontend/package.json index 26dcb735..4e79d64b 100644 --- a/io.sc.platform.system.frontend/package.json +++ b/io.sc.platform.system.frontend/package.json @@ -111,7 +111,7 @@ "mockjs": "1.1.0", "node-sql-parser": "5.3.6", "pinia": "2.3.0", - "platform-core": "8.2.63", + "platform-core": "8.2.65", "quasar": "2.17.6", "sort-array": "5.0.0", "svg-path-commander": "2.1.7", diff --git a/io.sc.platform.system/src/main/java/io/sc/platform/system/notification/service/impl/NotificationServiceImpl.java b/io.sc.platform.system/src/main/java/io/sc/platform/system/notification/service/impl/NotificationServiceImpl.java index f5a0a2e1..66f9c175 100644 --- a/io.sc.platform.system/src/main/java/io/sc/platform/system/notification/service/impl/NotificationServiceImpl.java +++ b/io.sc.platform.system/src/main/java/io/sc/platform/system/notification/service/impl/NotificationServiceImpl.java @@ -9,11 +9,14 @@ import io.sc.platform.system.api.notification.NotificationVo; import io.sc.platform.system.notification.jpa.entity.NotificationEntity; import io.sc.platform.system.notification.jpa.repository.NotificationRepository; import io.sc.platform.system.notification.service.NotificationService; +import io.sc.platform.util.CollectionUtil; import org.springframework.data.domain.Page; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; +import javax.transaction.Transactional; import java.util.Collections; +import java.util.Date; import java.util.List; @Service("io.sc.platform.system.notification.service.impl.NotificationServiceImpl") @@ -35,10 +38,17 @@ public class NotificationServiceImpl extends DaoServiceImpl findNotificationsBySender(String sender) throws Exception { if(!StringUtils.hasText(sender)){ return Collections.emptyList(); } - return EntityVoUtil.toVo(repository.findNotificationsBySender(sender,SecurityUtil.getLoginName())); + List entities =repository.findNotificationsBySender(sender,SecurityUtil.getLoginName()); + if(CollectionUtil.hasElements(entities)){ + for(NotificationEntity entity : entities){ + entity.setReceiveDate(new Date()); + } + } + return EntityVoUtil.toVo(entities); } } diff --git a/io.sc.standard.frontend/package.json b/io.sc.standard.frontend/package.json index 803009cb..36b6fdf7 100644 --- a/io.sc.standard.frontend/package.json +++ b/io.sc.standard.frontend/package.json @@ -112,7 +112,7 @@ "node-sql-parser": "5.3.6", "pinia": "2.3.0", "pinia-undo": "0.2.4", - "platform-core": "8.2.63", + "platform-core": "8.2.65", "quasar": "2.17.6", "sort-array": "5.0.0", "svg-path-commander": "2.1.7", diff --git a/io.sc.website/package.json b/io.sc.website/package.json index 50898b6f..72e0d724 100644 --- a/io.sc.website/package.json +++ b/io.sc.website/package.json @@ -28,6 +28,6 @@ }, "dependencies": { "vue": "3.5.13", - "platform-core": "8.2.63" + "platform-core": "8.2.65" } } \ No newline at end of file