Browse Source

基础框架发布: 8.2.32

1) 支持回退时返回给原处理人, 提交时选择任务候选处理人

前端核心发布: 8.2.122
 1) 首页任务列表增加按日期倒序
main
wangshaoping 1 month ago
parent
commit
ac7f45b850
  1. 4
      cips.frontend/package.json
  2. 4
      erm.frontend/package.json
  3. 4
      gradle.properties
  4. 4
      io.sc.engine.mv.frontend/package.json
  5. 4
      io.sc.engine.rule.frontend/package.json
  6. 4
      io.sc.engine.st.frontend/package.json
  7. 4
      io.sc.platform.ai.frontend/package.json
  8. 2
      io.sc.platform.core.frontend/package.json
  9. 2
      io.sc.platform.core.frontend/src/platform/views/home/MyDoneTask.vue
  10. 2
      io.sc.platform.core.frontend/src/platform/views/home/MyFinishedTask.vue
  11. 2
      io.sc.platform.core.frontend/src/platform/views/home/MyTask.vue
  12. 4
      io.sc.platform.core.frontend/template-project/package.json
  13. 4
      io.sc.platform.developer.doc/package.json
  14. 4
      io.sc.platform.developer.frontend/package.json
  15. 85
      io.sc.platform.flowable/src/main/java/io/sc/platform/flowable/service/impl/ProcessOperationServiceImpl.java
  16. 1
      io.sc.platform.flowable/src/main/java/io/sc/platform/flowable/service/impl/ProcessQueryServiceImpl.java
  17. 4
      io.sc.platform.lcdp.frontend/package.json
  18. 59
      io.sc.platform.lcdp.frontend/src/views/bpm/Bpm.vue
  19. 4
      io.sc.platform.license.keygen.frontend/package.json
  20. 2
      io.sc.platform.license.keygen/src/main/java/io/sc/platform/license/keygen/controller/LicenseKeyGeneratorWebController.java
  21. 4
      io.sc.platform.mvc.frontend/package.json
  22. 2
      io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/impl/DaoServiceImpl.java
  23. 4
      io.sc.platform.scheduler.manager.frontend/package.json
  24. 4
      io.sc.platform.system.frontend/package.json
  25. 4
      io.sc.standard.frontend/package.json
  26. 4
      io.sc.website/package.json
  27. 4
      wra.report.frontend/package.json

4
cips.frontend/package.json

@ -1,6 +1,6 @@
{
"name": "cips.frontend",
"version": "8.2.31",
"version": "8.2.32",
"description": "",
"private": false,
"keywords": [],
@ -113,7 +113,7 @@
"node-sql-parser": "5.3.6",
"pinia": "2.3.0",
"pinia-undo": "0.2.4",
"platform-core": "8.2.121",
"platform-core": "8.2.122",
"quasar": "2.17.6",
"sort-array": "5.0.0",
"svg-path-commander": "2.1.7",

4
erm.frontend/package.json

@ -1,6 +1,6 @@
{
"name": "erm.frontend",
"version": "8.2.31",
"version": "8.2.32",
"description": "",
"private": false,
"keywords": [],
@ -113,7 +113,7 @@
"node-sql-parser": "5.3.6",
"pinia": "2.3.0",
"pinia-undo": "0.2.4",
"platform-core": "8.2.121",
"platform-core": "8.2.122",
"quasar": "2.17.6",
"sort-array": "5.0.0",
"svg-path-commander": "2.1.7",

4
gradle.properties

@ -37,9 +37,9 @@ application_version=1.0.0
# platform
###########################################################
platform_group=io.sc
platform_version=8.2.31
platform_version=8.2.32
platform_plugin_version=8.2.10
platform_core_frontend_version=8.2.121
platform_core_frontend_version=8.2.122
###########################################################
# dependencies version

4
io.sc.engine.mv.frontend/package.json

@ -1,6 +1,6 @@
{
"name": "io.sc.engine.mv.frontend",
"version": "8.2.31",
"version": "8.2.32",
"description": "",
"private": false,
"keywords": [],
@ -113,7 +113,7 @@
"node-sql-parser": "5.3.6",
"pinia": "2.3.0",
"pinia-undo": "0.2.4",
"platform-core": "8.2.121",
"platform-core": "8.2.122",
"quasar": "2.17.6",
"sort-array": "5.0.0",
"svg-path-commander": "2.1.7",

4
io.sc.engine.rule.frontend/package.json

@ -1,6 +1,6 @@
{
"name": "io.sc.engine.rule.frontend",
"version": "8.2.31",
"version": "8.2.32",
"description": "",
"private": false,
"keywords": [],
@ -113,7 +113,7 @@
"node-sql-parser": "5.3.6",
"pinia": "2.3.0",
"pinia-undo": "0.2.4",
"platform-core": "8.2.121",
"platform-core": "8.2.122",
"quasar": "2.17.6",
"sort-array": "5.0.0",
"svg-path-commander": "2.1.7",

4
io.sc.engine.st.frontend/package.json

@ -1,6 +1,6 @@
{
"name": "io.sc.engine.st.frontend",
"version": "8.2.31",
"version": "8.2.32",
"description": "",
"private": false,
"keywords": [],
@ -113,7 +113,7 @@
"node-sql-parser": "5.3.6",
"pinia": "2.3.0",
"pinia-undo": "0.2.4",
"platform-core": "8.2.121",
"platform-core": "8.2.122",
"quasar": "2.17.6",
"sort-array": "5.0.0",
"svg-path-commander": "2.1.7",

4
io.sc.platform.ai.frontend/package.json

@ -1,6 +1,6 @@
{
"name": "io.sc.platform.ai.frontend",
"version": "8.2.31",
"version": "8.2.32",
"description": "",
"private": false,
"keywords": [],
@ -113,7 +113,7 @@
"node-sql-parser": "5.3.6",
"pinia": "2.3.0",
"pinia-undo": "0.2.4",
"platform-core": "8.2.121",
"platform-core": "8.2.122",
"quasar": "2.17.6",
"sort-array": "5.0.0",
"svg-path-commander": "2.1.7",

2
io.sc.platform.core.frontend/package.json

@ -1,6 +1,6 @@
{
"name": "platform-core",
"version": "8.2.121",
"version": "8.2.122",
"description": "前端核心包,用于快速构建前端的脚手架",
"//main": "库的主文件",
"main": "dist/platform-core.js",

2
io.sc.platform.core.frontend/src/platform/views/home/MyDoneTask.vue

@ -88,7 +88,7 @@ const changeFirstColMaxWidth = () => {
const refresh = () => {
loadingRef.value = true;
axios
.get(Environment.apiContextPath('/api/flowable/process/query/myDoneTask?page=1&size=10&pageable=true'))
.get(Environment.apiContextPath('/api/flowable/process/query/myDoneTask?page=1&size=10&pageable=true&sortBy=-startTime'))
.then((response: any) => {
itemsRef.value = response.data.content || [];
loadingRef.value = false;

2
io.sc.platform.core.frontend/src/platform/views/home/MyFinishedTask.vue

@ -88,7 +88,7 @@ const changeFirstColMaxWidth = () => {
const refresh = () => {
loadingRef.value = true;
axios
.get(Environment.apiContextPath('/api/flowable/process/query/myFinishedTask?page=1&size=10&pageable=true'))
.get(Environment.apiContextPath('/api/flowable/process/query/myFinishedTask?page=1&size=10&pageable=true&sortBy=-startTime'))
.then((response: any) => {
itemsRef.value = response.data.content || [];
loadingRef.value = false;

2
io.sc.platform.core.frontend/src/platform/views/home/MyTask.vue

@ -90,7 +90,7 @@ const changeFirstColMaxWidth = () => {
const refresh = () => {
loadingRef.value = true;
axios
.get(Environment.apiContextPath('/api/flowable/process/query/myTask?page=1&size=10&pageable=true'))
.get(Environment.apiContextPath('/api/flowable/process/query/myTask?page=1&size=10&pageable=true&sortBy=-startTime'))
.then((response: any) => {
itemsRef.value = response.data.content || [];
loadingRef.value = false;

4
io.sc.platform.core.frontend/template-project/package.json

@ -1,6 +1,6 @@
{
"name": "platform-core",
"version": "8.2.121",
"version": "8.2.122",
"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.121",
"platform-core": "8.2.122",
"quasar": "2.17.6",
"sort-array": "5.0.0",
"svg-path-commander": "2.1.7",

4
io.sc.platform.developer.doc/package.json

@ -1,6 +1,6 @@
{
"name": "io.sc.platform.developer.doc",
"version": "8.2.31",
"version": "8.2.32",
"description": "",
"main": "index.js",
"scripts": {
@ -28,7 +28,7 @@
"vuepress": "2.0.0-rc.15"
},
"dependencies": {
"platform-core": "8.2.121",
"platform-core": "8.2.122",
"quasar": "2.17.6",
"vue": "3.5.13",
"vue-i18n": "11.0.1"

4
io.sc.platform.developer.frontend/package.json

@ -1,6 +1,6 @@
{
"name": "io.sc.platform.developer.frontend",
"version": "8.2.31",
"version": "8.2.32",
"description": "",
"private": false,
"keywords": [],
@ -113,7 +113,7 @@
"node-sql-parser": "5.3.6",
"pinia": "2.3.0",
"pinia-undo": "0.2.4",
"platform-core": "8.2.121",
"platform-core": "8.2.122",
"quasar": "2.17.6",
"sort-array": "5.0.0",
"svg-path-commander": "2.1.7",

85
io.sc.platform.flowable/src/main/java/io/sc/platform/flowable/service/impl/ProcessOperationServiceImpl.java

@ -81,7 +81,6 @@ public class ProcessOperationServiceImpl implements ProcessOperationService {
ProcessInstanceBuilder builder =runtimeService.createProcessInstanceBuilder();
builder.processDefinitionKey(processDefinitionKey);
builder.businessKey(bussinessKey);
//builder.name(getNameByProcessDefinitionKey(processDefinitionKey,bussinessKey));
if(variables!=null){
builder.variables(variables);
}
@ -105,7 +104,6 @@ public class ProcessOperationServiceImpl implements ProcessOperationService {
ProcessInstanceBuilder builder =runtimeService.createProcessInstanceBuilder();
builder.processDefinitionId(processDefinitionId);
builder.businessKey(bussinessKey);
//builder.name(getNameByProcessDefinitionId(processDefinitionId,bussinessKey));
if(variables!=null){
builder.variables(variables);
}
@ -266,6 +264,9 @@ public class ProcessOperationServiceImpl implements ProcessOperationService {
return;
}
//是否是退回操作
boolean isReturn =isReturn(task,newTask);
//如果未分配到单一的一个处理人,需要根据流程定义查找可用的处理人
String taskDefinitionKey =newTask.getTaskDefinitionKey();
String procDefinitionId =newTask.getProcessDefinitionId();
@ -299,7 +300,7 @@ public class ProcessOperationServiceImpl implements ProcessOperationService {
}
}
String historyAssignee =historyTask.getAssignee();
if(StringUtils.hasText(historyAssignee)) {
if(StringUtils.hasText(historyAssignee) && isReturn) {
AgentEntity agent =getAgent(historyAssignee);
if(agent!=null){
taskService.setAssignee(newTask.getId(), agent.getAgentLoginName());
@ -353,6 +354,84 @@ public class ProcessOperationServiceImpl implements ProcessOperationService {
}
}
/**
* 判断节点间连线是否是回退操作
* @param fromTask from 任务
* @param toTask to 任务
* @return 是否是回退操作
*/
private boolean isReturn(Task fromTask,Task toTask){
if(fromTask==null || toTask==null){
return false;
}
// from 节点 KEY
String fromTaskDefinitionKey =fromTask.getTaskDefinitionKey();
if(!StringUtils.hasText(fromTaskDefinitionKey)){
return false;
}
// to 节点 Key
String toTaskDefinitionKey =toTask.getTaskDefinitionKey();
if(!StringUtils.hasText(toTaskDefinitionKey)){
return false;
}
//获取流程定义模型对象
BpmnModel model = repositoryService.getBpmnModel(fromTask.getProcessDefinitionId());
if(model==null){
return false;
}
//获取所有元素
Collection<FlowElement> elements =model.getMainProcess().getFlowElements();
if(elements==null || elements.size()==0){
return false;
}
//查找 from 任务的节点
UserTask fromUserTaskDefinition =null;
if(elements!=null && elements.size()>0){
for(FlowElement element : elements){
if(fromTaskDefinitionKey.equals(element.getId()) && (element instanceof UserTask)){
fromUserTaskDefinition =(UserTask)element;
break;
}
}
}
if(fromUserTaskDefinition==null){
return false;
}
//查找 to 任务的节点
UserTask toUserTaskDefinition =null;
if(elements!=null && elements.size()>0){
for(FlowElement element : elements){
if(toTaskDefinitionKey.equals(element.getId()) && (element instanceof UserTask)){
toUserTaskDefinition =(UserTask)element;
break;
}
}
}
if(toUserTaskDefinition==null){
return false;
}
// 查找从 from 到 to 的线
SequenceFlow from2toFlow =null;
List<SequenceFlow> flows =fromUserTaskDefinition.getOutgoingFlows();
for(SequenceFlow flow : flows){
if(toTaskDefinitionKey.equals(flow.getTargetFlowElement().getId())){
from2toFlow =flow;
break;
}
}
if(from2toFlow==null){
return false;
}
// 获取线上配置的 goback 值
Integer value =parseGobackVariableValue(from2toFlow.getConditionExpression());
if(value==null){
return false;
}
return value<0;
}
@Override
@Transactional
public List<Goback> getGobacks(String taskId) throws Exception {

1
io.sc.platform.flowable/src/main/java/io/sc/platform/flowable/service/impl/ProcessQueryServiceImpl.java

@ -233,7 +233,6 @@ public class ProcessQueryServiceImpl implements ProcessQueryService {
}
public Page<ProcessTaskWrapper> queryProcessTasks(QueryParameter queryParameter) throws Exception {
runtimeService.createProcessInstanceQuery().processInstanceId("").list();
Map<String,Class<?>> fieldTypeMap =new HashMap<>();
fieldTypeMap.put("processDefinitionId",String.class);
fieldTypeMap.put("processInstanceId",String.class);

4
io.sc.platform.lcdp.frontend/package.json

@ -1,6 +1,6 @@
{
"name": "io.sc.platform.lcdp.frontend",
"version": "8.2.31",
"version": "8.2.32",
"description": "",
"private": false,
"keywords": [],
@ -113,7 +113,7 @@
"node-sql-parser": "5.3.6",
"pinia": "2.3.0",
"pinia-undo": "0.2.4",
"platform-core": "8.2.121",
"platform-core": "8.2.122",
"quasar": "2.17.6",
"sort-array": "5.0.0",
"svg-path-commander": "2.1.7",

59
io.sc.platform.lcdp.frontend/src/views/bpm/Bpm.vue

@ -7,7 +7,6 @@
<q-tab name="processInstance" icon="bi-sliders" :label="$t('lcdp.bpm.tabs.processInstance')" />
<q-tab name="task" icon="bi-receipt" :label="$t('lcdp.bpm.tabs.task')" />
<q-tab name="tools" icon="bi-wrench-adjustable" :label="$t('lcdp.bpm.tabs.tools')" />
<q-tab name="workbench" icon="bi-layers" :label="$t('lcdp.bpm.tabs.workbench')" />
</q-tabs>
</template>
<template #after>
@ -520,7 +519,7 @@
:data-url="Environment.apiContextPath('/api/flowable/process/query/task')"
:auto-fetch-data="false"
:pageable="true"
:sort-by="['-createTime']"
:sort-by="['-startTime']"
:query-form-rows-num="2"
:query-form-cols-num="3"
:query-form-fields="[
@ -704,60 +703,6 @@
<q-btn :label="$t('lcdp.bpm.tools.action.cleanHistoryData')" color="primary" no-caps @click="cleanHistoryData"></q-btn>
</div>
</q-tab-panel>
<q-tab-panel name="workbench" class="pl-1 pr-0 pb-0" style="height: 100%">
<w-splitter :model-value="50" horizontal style="height: 100%">
<template #before>
<w-grid
ref="workbenchProcessDefineGridRef"
:title="$t('lcdp.bpm.task.grid.workbench.processDefine')"
dense
:data-url="Environment.apiContextPath('/api/flowable/process/query/task')"
:auto-fetch-data="true"
:pageable="false"
:sort-by="[]"
:toolbar-actions="['refresh', 'separator', 'add', 'edit', 'remove', 'separator', 'view']"
:columns="[
{ width: '50%', name: 'code', label: $t('code'), sortable: false },
{ width: '50%', name: 'name', label: $t('name') },
]"
:editor="{
dialog: {
width: '600px',
},
form: {
colsNum: 1,
fields: [],
},
}"
></w-grid>
</template>
<template #after>
<w-grid
ref="workbenchProcessStatusGridRef"
:title="$t('lcdp.bpm.task.grid.workbench.processStatus')"
dense
:data-url="Environment.apiContextPath('/api/flowable/process/query/task')"
:auto-fetch-data="true"
:pageable="false"
:sort-by="[]"
:toolbar-actions="['refresh', 'separator', 'add', 'edit', 'remove', 'separator', 'view']"
:columns="[
{ width: '50%', name: 'code', label: $t('code'), sortable: false },
{ width: '50%', name: 'name', label: $t('name') },
]"
:editor="{
dialog: {
width: '600px',
},
form: {
colsNum: 1,
fields: [],
},
}"
></w-grid>
</template>
</w-splitter>
</q-tab-panel>
</q-tab-panels>
</template>
</q-splitter>
@ -788,8 +733,6 @@ const selectedTabRef = ref('processDefine');
const processDefineGridRef = ref();
const processInstanceGridRef = ref();
const taskGridRef = ref();
const workbenchProcessDefineGridRef = ref();
const workbenchProcessStatusGridRef = ref();
const variableDialogRef = ref();
const completeTaskDialogRef = ref();

4
io.sc.platform.license.keygen.frontend/package.json

@ -1,6 +1,6 @@
{
"name": "io.sc.platform.license.keygen.frontend",
"version": "8.2.31",
"version": "8.2.32",
"description": "",
"private": false,
"keywords": [],
@ -113,7 +113,7 @@
"node-sql-parser": "5.3.6",
"pinia": "2.3.0",
"pinia-undo": "0.2.4",
"platform-core": "8.2.121",
"platform-core": "8.2.122",
"quasar": "2.17.6",
"sort-array": "5.0.0",
"svg-path-commander": "2.1.7",

2
io.sc.platform.license.keygen/src/main/java/io/sc/platform/license/keygen/controller/LicenseKeyGeneratorWebController.java

@ -133,7 +133,7 @@ public class LicenseKeyGeneratorWebController {
queryParameter.addCriterias(criterias);
}
ByteArrayOutputStream outputStream =new ByteArrayOutputStream();
DataExportConfigure cofigure =licenseService.export(queryParameter,outputStream);
DataExportConfigure cofigure =licenseService.export(queryParameter,outputStream,null);
if(cofigure==null){
return;
}

4
io.sc.platform.mvc.frontend/package.json

@ -1,6 +1,6 @@
{
"name": "io.sc.platform.mvc.frontend",
"version": "8.2.31",
"version": "8.2.32",
"description": "",
"private": false,
"keywords": [],
@ -113,7 +113,7 @@
"node-sql-parser": "5.3.6",
"pinia": "2.3.0",
"pinia-undo": "0.2.4",
"platform-core": "8.2.121",
"platform-core": "8.2.122",
"quasar": "2.17.6",
"sort-array": "5.0.0",
"svg-path-commander": "2.1.7",

2
io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/impl/DaoServiceImpl.java

@ -670,7 +670,7 @@ public abstract class DaoServiceImpl<E,ID extends Serializable,R extends DaoRepo
Context context = new Context();
context.putVar("list", this.list(queryParameter));
try(InputStream inputStream =new ByteArrayInputStream(template.getBytes());){
JxlsHelper.getInstance().processTemplate(inputStream, outputStream,context);
JxlsHelper.getInstance().setEvaluateFormulas(true).processTemplate(inputStream, outputStream,context);
}
return dataExportConfigure;
}

4
io.sc.platform.scheduler.manager.frontend/package.json

@ -1,6 +1,6 @@
{
"name": "io.sc.platform.scheduler.manager.frontend",
"version": "8.2.31",
"version": "8.2.32",
"description": "",
"private": false,
"keywords": [],
@ -113,7 +113,7 @@
"node-sql-parser": "5.3.6",
"pinia": "2.3.0",
"pinia-undo": "0.2.4",
"platform-core": "8.2.121",
"platform-core": "8.2.122",
"quasar": "2.17.6",
"sort-array": "5.0.0",
"svg-path-commander": "2.1.7",

4
io.sc.platform.system.frontend/package.json

@ -1,6 +1,6 @@
{
"name": "io.sc.platform.system.frontend",
"version": "8.2.31",
"version": "8.2.32",
"description": "",
"private": false,
"keywords": [],
@ -112,7 +112,7 @@
"mockjs": "1.1.0",
"node-sql-parser": "5.3.6",
"pinia": "2.3.0",
"platform-core": "8.2.121",
"platform-core": "8.2.122",
"quasar": "2.17.6",
"sort-array": "5.0.0",
"svg-path-commander": "2.1.7",

4
io.sc.standard.frontend/package.json

@ -1,6 +1,6 @@
{
"name": "io.sc.standard.frontend",
"version": "8.2.31",
"version": "8.2.32",
"description": "",
"private": false,
"keywords": [],
@ -113,7 +113,7 @@
"node-sql-parser": "5.3.6",
"pinia": "2.3.0",
"pinia-undo": "0.2.4",
"platform-core": "8.2.121",
"platform-core": "8.2.122",
"quasar": "2.17.6",
"sort-array": "5.0.0",
"svg-path-commander": "2.1.7",

4
io.sc.website/package.json

@ -1,6 +1,6 @@
{
"name": "io.sc.website",
"version": "8.2.31",
"version": "8.2.32",
"description": "",
"main": "index.js",
"scripts": {
@ -28,6 +28,6 @@
},
"dependencies": {
"vue": "3.5.13",
"platform-core": "8.2.121"
"platform-core": "8.2.122"
}
}

4
wra.report.frontend/package.json

@ -1,6 +1,6 @@
{
"name": "wra.report.frontend",
"version": "8.2.31",
"version": "8.2.32",
"description": "",
"private": false,
"keywords": [],
@ -112,7 +112,7 @@
"mockjs": "1.1.0",
"node-sql-parser": "5.3.6",
"pinia": "2.3.0",
"platform-core": "8.2.121",
"platform-core": "8.2.122",
"quasar": "2.17.6",
"sort-array": "5.0.0",
"svg-path-commander": "2.1.7",

Loading…
Cancel
Save