From 5bd552eec6cc822278691e3495a1f6a97038dbb7 Mon Sep 17 00:00:00 2001 From: fujunling <2984387807@qq.com> Date: 星期一, 26 六月 2023 18:17:12 +0800 Subject: [PATCH] Merge branch 'master' of http://dev.vci-tech.com:1065/r/ubcs --- Source/UBCS-WEB/src/components/refer/vciWebReferTable.vue | 3 Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/FlowTaskDTO.java | 2 Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/business/service/impl/FlowBusinessServiceImpl.java | 32 ++++++++++ Source/UBCS-WEB/src/components/refer/vciWebReferDefalut.vue | 3 Source/UBCS-WEB/src/components/template/SetPersonnel.vue | 8 +- Source/UBCS-WEB/src/views/work/process/leave/handle.vue | 8 ++ Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/feign/BtmTypeClient.java | 7 +- Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/VCIFlowserviceImpl.java | 76 +++++++++++++++++++++---- 8 files changed, 112 insertions(+), 27 deletions(-) diff --git a/Source/UBCS-WEB/src/components/refer/vciWebReferDefalut.vue b/Source/UBCS-WEB/src/components/refer/vciWebReferDefalut.vue index 690e721..c27c046 100644 --- a/Source/UBCS-WEB/src/components/refer/vciWebReferDefalut.vue +++ b/Source/UBCS-WEB/src/components/refer/vciWebReferDefalut.vue @@ -272,8 +272,7 @@ var query={} if (this.query) { for (var key in this.query) { - query['conditionMap["' + key + '"]'] = '*'+this.query[key]+'*'; - query[key]='*'+this.query[key]+'*'; + query['conditionMap["' + key + '"]'] = this.query[key]; } } getList(Object.assign(params,this.params,this.query, query),page.currentPage, page.pageSize, this.url).then(res => { diff --git a/Source/UBCS-WEB/src/components/refer/vciWebReferTable.vue b/Source/UBCS-WEB/src/components/refer/vciWebReferTable.vue index 366f9f2..31782b5 100644 --- a/Source/UBCS-WEB/src/components/refer/vciWebReferTable.vue +++ b/Source/UBCS-WEB/src/components/refer/vciWebReferTable.vue @@ -330,8 +330,7 @@ var query={} if (this.query) { for (var key in this.query) { - query['conditionMap["' + key + '"]'] = '*'+this.query[key]+'*'; - query[key]='*'+this.query[key]+'*'; + query['conditionMap["' + key + '"]'] = this.query[key]; } } getList(Object.assign(params,this.params,this.query, query),page.currentPage, page.pageSize, this.url).then(res => { diff --git a/Source/UBCS-WEB/src/components/template/SetPersonnel.vue b/Source/UBCS-WEB/src/components/template/SetPersonnel.vue index 17edef3..f96be3f 100644 --- a/Source/UBCS-WEB/src/components/template/SetPersonnel.vue +++ b/Source/UBCS-WEB/src/components/template/SetPersonnel.vue @@ -100,7 +100,7 @@ tags: [], typeName: [], collectParam: {}, - saveParam: this.saveParam(), + saveParam: this.setSaveParam(), users: [], rules: { processName: [ @@ -116,7 +116,7 @@ // this.apiDict() }, methods: { - saveParam() { + setSaveParam() { return { processName: this.parameter[this.parameterKeys.flowTemplate], topName: this.title, @@ -200,8 +200,8 @@ message: "璇烽�夋嫨鑺傜偣锛�" }); } else { - const {modelKey,modelName,processDesc,processName,templateId,topName,vars} = this.saveParam - const vals= {modelKey,modelName,processDesc,processName,templateId,topName,...vars} + const {modelKey,modelName,processDesc,processName,templateId,topName,vars,ids} = this.saveParam + const vals= {modelKey,modelName,processDesc,processName,templateId,topName,ids,...vars} const response = await personnelSave({ variables:vals, flowTaskUsers: this.collectParam.flowTaskUsers, }) if (response.status === 200) { console.log(response) diff --git a/Source/UBCS-WEB/src/views/work/process/leave/handle.vue b/Source/UBCS-WEB/src/views/work/process/leave/handle.vue index 056cfed..665405d 100644 --- a/Source/UBCS-WEB/src/views/work/process/leave/handle.vue +++ b/Source/UBCS-WEB/src/views/work/process/leave/handle.vue @@ -94,7 +94,7 @@ indexLabelClassName: '搴忓彿', column: [ { label: '浠诲姟鍚嶇О', prop: 'historyActivityName', minWidth: 120 }, - { label: '鎵ц鎿嶄綔', prop: 'sex', minWidth: 80 }, + { label: '鎵ц鎿嶄綔', prop: 'pass', minWidth: 80 ,formatter:this.formatterPass}, { label: '浠诲姟寮�濮嬫椂闂�', prop: 'createTime', minWidth: 140 }, { label: '瀹℃壒鎰忚', prop: 'comment', minWidth: 220, overHidden: true }, { label: '鎵ц浜�', prop: 'assigneeName', minWidth: 80 }, @@ -130,6 +130,10 @@ } }) this.apiGetBtnTask(this.processInstanceId) + }, + formatterPass(row, value, column) { + console.log('value',value) + return value?'鍚屾剰':'椹冲洖' }, async apiGetBtnTask(id) { const response = await getBtnTask({ processInstanceId: id }) @@ -185,7 +189,7 @@ display: -ms-flexbox; display: flex; justify-content: space-between; - height: 70vh; + height: 85vh; &_tab { width: 79%; diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/business/service/impl/FlowBusinessServiceImpl.java b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/business/service/impl/FlowBusinessServiceImpl.java index 46130f0..4e70d5f 100644 --- a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/business/service/impl/FlowBusinessServiceImpl.java +++ b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/business/service/impl/FlowBusinessServiceImpl.java @@ -27,12 +27,17 @@ import lombok.AllArgsConstructor; import org.apache.commons.lang3.StringUtils; import org.flowable.engine.HistoryService; +import org.flowable.engine.RuntimeService; import org.flowable.engine.TaskService; import org.flowable.engine.history.HistoricProcessInstance; import org.flowable.engine.history.HistoricProcessInstanceQuery; +import org.flowable.engine.runtime.Execution; +import org.flowable.engine.runtime.ProcessInstance; +import org.flowable.task.api.Task; import org.flowable.task.api.TaskQuery; import org.flowable.task.api.history.HistoricTaskInstance; import org.flowable.task.api.history.HistoricTaskInstanceQuery; +import org.springblade.core.log.exception.ServiceException; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.support.Kv; import org.springblade.core.tool.utils.Func; @@ -55,6 +60,7 @@ private final TaskService taskService; private final HistoryService historyService; + private final RuntimeService runtimeService; @Override public IPage<BladeFlow> selectClaimPage(IPage<BladeFlow> page, BladeFlow bladeFlow) { @@ -264,8 +270,22 @@ variables = Kv.create(); } variables.put(ProcessConstant.PASS_KEY, flow.isPass()); + // 瀹屾垚浠诲姟 taskService.complete(taskId, variables); + +// //璁剧疆涓嬩竴姝ュ鏍镐汉 +// Task task = taskService.createTaskQuery().processInstanceId(processInstanceId).active().singleResult();//涓嬩竴姝ヨ妭鐐� +// String taskKey = task.getTaskDefinitionKey();//灏辨槸娴佺▼閰嶇疆鐨勮妭鐐筰d +// Object to = getVar(processInstanceId,taskKey); +// if(to==null){ +// throw new ServiceException(taskKey+"娌℃湁璁剧疆瀹℃牳浜�"); +// } +// String assignee = to.toString(); +// +// if(StringUtils.isNotEmpty(assignee)) { +// task.setAssignee(assignee); +// } return true; } @@ -332,4 +352,16 @@ return historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstanceId).singleResult(); } + public Object getVar(String processInstanceId,String key){ + Object t = null; + List<Execution> list = runtimeService.createExecutionQuery().processInstanceId(processInstanceId).list(); + for (Execution execution : list) { + Object va = runtimeService.getVariable(execution.getId(),key); + if(va!=null){ + t=va; + } + } + return t; + } + } diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/FlowTaskDTO.java b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/FlowTaskDTO.java index 62ee9c6..4a065b9 100644 --- a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/FlowTaskDTO.java +++ b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/FlowTaskDTO.java @@ -58,7 +58,7 @@ //娴佺▼涓弬鏁� private List<FlowTaskDTO> toTasks;//娴佺▼涓嬩竴姝ユ寜閽� - private Map<String, Object> vars;//娴佺▼鍙傛暟 + private Map<String, Object> variables;//娴佺▼鍙傛暟 diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/VCIFlowserviceImpl.java b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/VCIFlowserviceImpl.java index 1221fa3..f1deaf9 100644 --- a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/VCIFlowserviceImpl.java +++ b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/VCIFlowserviceImpl.java @@ -25,12 +25,14 @@ import com.vci.ubcs.flow.engine.service.VICFlowService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.flowable.bpmn.model.*; import org.flowable.engine.*; import org.flowable.engine.impl.persistence.entity.ExecutionEntity; import org.flowable.engine.repository.ProcessDefinition; import org.flowable.engine.runtime.ProcessInstance; import org.flowable.task.api.Task; +import org.springblade.core.log.exception.ServiceException; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; import org.springblade.core.tool.support.Kv; @@ -55,13 +57,14 @@ private final FlowEngineService flowEngineService; private final HistoryService historyService; + private static String MODELKEY = "modelKey";//鍓嶇浼犺繃鏉ョ殑妯″瀷key @Override public R<BladeFlow> startProcess(FlowTaskDTO flowTaskUserC){ - String modelKey = flowTaskUserC.getModelKey(); - String templateId = flowTaskUserC.getTemplateId(); + Map<String, Object> kvv = flowTaskUserC.getVariables(); - Kv kv = Kv.create() - .set(ProcessConstant.TASK_VARIABLE_CREATE_USER, AuthUtil.getUserName()); + String modelKey = kvv.get(MODELKEY).toString(); + + Kv kv = Kv.create().set(ProcessConstant.TASK_VARIABLE_CREATE_USER, AuthUtil.getUserName()); // 璁剧疆娴佺▼鍚姩鐢ㄦ埛 identityService.setAuthenticatedUserId(TaskUtil.getTaskUser()); @@ -72,11 +75,11 @@ String processDefinitionId = latesDefinition.getId(); //鏌ヨ姣忎竴姝ュ鏍镐汉 - List<FlowTaskUser> taskUsers = flowTaskUserService.getTaskUserByTemplateAndModelKey(templateId,modelKey); - Set<String> taskIdSet = new HashSet<>(); + List<FlowTaskUser> taskUsers = flowTaskUserC.getFlowTaskUsers(); +// Set<String> taskIdSet = new HashSet<>(); for (FlowTaskUser taskUser:taskUsers){ kv.put(taskUser.getTaskId(),TaskUtil.getTaskUser(taskUser.getUserId())); - taskIdSet.add(taskUser.getTaskId()); +// taskIdSet.add(taskUser.getTaskId()); } //瀵规瘮閰嶇疆鐨勫鏍镐汉鍛樺拰娴佺▼涓妭鐐规槸鍚︿竴鑷达紝鍙兘瀛樺湪娴佺▼鑺傜偣鍙樻洿浜嗭紝澶氫簡鎴栬�呭皯浜嗚妭鐐癸紝浣嗘槸閰嶇疆瀹℃牳浜哄憳鐨勮妭鐐规病鏈夊彉 @@ -92,13 +95,28 @@ // } //娴佺▼涓枃浠躲�佸彉閲忕瓑 - //do.. + if(kvv!=null&&!kvv.isEmpty()){ + kv.putAll(kvv); + } ProcessInstance processInstance = runtimeService.startProcessInstanceById(processDefinitionId, modelKey, kv); // 缁勮娴佺▼閫氱敤绫� BladeFlow flow = new BladeFlow(); flow.setProcessInstanceId(processInstance.getId()); +// //璁剧疆涓嬩竴姝ュ鏍镐汉 +// Task task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).active().singleResult(); +// String taskId = task.getTaskDefinitionKey(); +// String assignee = null; +// for (FlowTaskUser taskUser:taskUsers) { +// if(taskId.equals(taskUser.getTaskId())){ +// assignee = taskUser.getUserId(); +// } +// } +// if(StringUtils.isEmpty(assignee)){ +// throw new ServiceException(taskId+"娌℃湁閰嶇疆瀹℃牳浜�!"); +// } +// taskService.setAssignee(task.getId(),assignee); return R.data(flow); } @@ -126,7 +144,7 @@ //杩欎釜瀹炰緥鐨勬墍鏈夎妭鐐� ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult(); Map<String, Object> processVariables = processInstance.getProcessVariables();//鎵�鏈夊弬鏁� - flowTaskDTO.setVars(processVariables); + flowTaskDTO.setVariables(processVariables); String modelKey = processInstance.getProcessDefinitionKey(); List<FlowTaskDTO> mis = flowEngineService.getNodeByFlowableKey(modelKey); @@ -142,7 +160,24 @@ // 涓嬩竴涓鎵硅妭鐐� FlowElement targetFlow = sequenceFlow.getTargetFlowElement(); if (targetFlow instanceof UserTask) { - System.out.println("涓嬩竴鑺傜偣: id=" + targetFlow.getId() + ",name=" + targetFlow.getName()); + FlowTaskDTO flowTaskUserCi = new FlowTaskDTO(); + //flowTaskUserCi.setConditionKey(null); + //flowTaskUserCi.setConditionValue(null); + flowTaskUserCi.setToName("鍚屾剰"); + flowTaskUserCi.setToTaskId(targetFlow.getId()); + flowTaskUserCi.setToTaskName(targetFlow.getName()); + taskList.add(flowTaskUserCi); + } + + //缁撴潫 + if (targetFlow instanceof EndEvent) { + FlowTaskDTO flowTaskUserCi = new FlowTaskDTO(); + //flowTaskUserCi.setConditionKey(null); + //flowTaskUserCi.setConditionValue(null); + flowTaskUserCi.setToName("鍚屾剰"); + flowTaskUserCi.setToTaskId(targetFlow.getId()); + flowTaskUserCi.setToTaskName(targetFlow.getName()); + taskList.add(flowTaskUserCi); } // 濡傛灉涓嬩釜瀹℃壒鑺傜偣涓烘帓浠栫綉鍏� if (targetFlow instanceof ExclusiveGateway) { @@ -157,9 +192,20 @@ for (FlowTaskDTO flowTaskUserCi:mis){ if(taskId.equals(flowTaskUserCi.getTaskId())){ flowTaskUserCi.setCondition(conditionExpression); - if(conditionExpression.split("=").length>1) { - flowTaskUserCi.setConditionKey(conditionExpression.split("=")[0]); - flowTaskUserCi.setConditionValue(conditionExpression.split("=")[1]); + if(conditionExpression.contains("=")||conditionExpression.contains("<")||conditionExpression.contains(">")) { + conditionExpression = conditionExpression.replace("${","").replace("}","").replaceAll("\"",""); + String[] conditionExpressionStr = conditionExpression.split("=="); + if(conditionExpression.contains("<")){ + conditionExpressionStr = conditionExpression.split("<"); + }else if(conditionExpression.contains("<=")){ + conditionExpressionStr = conditionExpression.split("<="); + }else if(conditionExpression.contains(">")){ + conditionExpressionStr = conditionExpression.split(">"); + }else if(conditionExpression.contains(">=")){ + conditionExpressionStr = conditionExpression.split(">="); + } + flowTaskUserCi.setConditionKey(conditionExpressionStr.length>0?conditionExpressionStr[0]:null); + flowTaskUserCi.setConditionValue(conditionExpressionStr.length>1?conditionExpressionStr[1]:null); } flowTaskUserCi.setToName(name); flowTaskUserCi.setToTaskId(taskId); @@ -171,6 +217,10 @@ } } } + Map<String,Object> variables = runtimeService.getVariables(processInstanceId); + if(!variables.isEmpty()){ + flowTaskDTO.setVariables(variables); + } return flowTaskDTO; } } diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/feign/BtmTypeClient.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/feign/BtmTypeClient.java index 97373b4..3ed8b36 100644 --- a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/feign/BtmTypeClient.java +++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/feign/BtmTypeClient.java @@ -78,12 +78,13 @@ String domainValue = conditionMap.get(DOMAIN); VciBaseUtil.alertNotNull(domainValue,"棰嗗煙鍊�"); conditionMap.remove(DOMAIN); - BtmType queryObj = new BtmType(); - BeanMap.create(queryObj).putAll(conditionMap); +// BtmType queryObj = new BtmType(); +// BeanMap.create(queryObj).putAll(conditionMap); + Map<String, Object> condition = new HashMap<>(conditionMap); Query query = new Query(); query.setSize(pageHelper.getLimit()); query.setCurrent(pageHelper.getPage()); - IPage<BtmType> page = btmTypeService.page(Condition.getPage(query), Condition.getQueryWrapper(queryObj).lambda().eq(BtmType::getDomain, domainValue).orderByAsc(BtmType::getId)); + IPage<BtmType> page = btmTypeService.page(Condition.getPage(query), Condition.getQueryWrapper(condition,BtmType.class).lambda().eq(BtmType::getDomain, domainValue).orderByAsc(BtmType::getId)); if (CollectionUtils.isEmpty(page.getRecords())){ return R.data(null); } -- Gitblit v1.9.3