Source/UBCS-WEB/package-lock.json
ÎļþÒÑɾ³ý Source/UBCS-WEB/src/components/Crud/VciMasterCrud.vue
@@ -34,7 +34,7 @@ <el-button plain size="small" type="primary">æ¥çæµç¨åå²</el-button> <el-button plain size="small" type="primary">å é¤</el-button> <el-button plain size="small" type="primary" @click="setHandler">åå¸</el-button> <set-personnel :visible.sync="visibleFlow" :parameter="parameter" <set-personnel :visible.sync="visibleFlow" :parameter="this.parameter" ></set-personnel> <el-button plain size="small" type="primary" @click="DataChange">æ°æ®æ´æ¹</el-button> <FormTemplateDialog @@ -150,6 +150,7 @@ }, templateOid: { type: String, default:'' }, tableHeadDataFateher: { type: Array, @@ -168,8 +169,8 @@ similarVisible:false, //åå¸ parameter:{ ids:['0000','22222222'], code:this.templateOid, ids:[], code:'', type:'PUBLIC', template:'模æ¿template' }, @@ -180,7 +181,6 @@ label: 'name' }, tableHeadFindDatas:[], templateOid: "", addvisible: false, editvisible: false, findvisible: false, @@ -213,11 +213,9 @@ }, computed: {}, created() { // this.CrudHeaderRend(); // this.tableHeadHandle() }, mounted() { }, activated() { this.doLayout() @@ -245,13 +243,21 @@ this.page.total = newval; } }, templateOid:{ handler(newval,oldval) { this.parameter.code=newval; }, deep:true } }, methods: { setHandler() { this.visibleFlow = true; }, huishouHandler() { if (this.selectRow.length <= 0) { this.$message.warning('è¯·éæ©ä¸æ¡æ°æ®') } else { this.visibleFlow = true; } }, openD() { this.dialogPush = true; @@ -386,6 +392,10 @@ } this.selectRow = row; console.log(row) row.forEach(item=>{ this.parameter.ids.push(item.oid) console.log( this.parameter.ids) }) }, //ç¼è¾ editHandler() { Source/UBCS-WEB/src/views/MasterData/items.vue
@@ -62,7 +62,6 @@ methods:{ codeClassifyOidList(val){ this.codeClassifyOid=val; console.log(val) }, coderuleoidList(val){ this.coderuleoid=val; @@ -87,7 +86,6 @@ }, nodeClick(val){ this.templateOid=val; console.log('val',val) this.isLoading=true; setTimeout(() => { this.isLoading = false; Source/UBCS-WEB/src/views/modeling/BusinessAdd.vue
@@ -203,6 +203,7 @@ reserveSelection: true, searchMenuSpan:8, highlightCurrentRow: true, rowKey: 'id', column: [ { label: 'è±æåç§°', @@ -373,7 +374,9 @@ }, // ç¡®è®¤å±æ§æ± å¾é confirmSelectAttr(){ this.btmType.attributes = []; if(!this.btmType.attributes){ this.btmType.attributes = []; } this.attrRef.queryNotIn = ""; this.attrRef.selectData.forEach(item => { this.btmType.attributes.push({ Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/business/service/impl/FlowBusinessServiceImpl.java
@@ -264,7 +264,6 @@ variables = Kv.create(); } variables.put(ProcessConstant.PASS_KEY, flow.isPass()); variables.put("yn","y"); // å®æä»»å¡ taskService.complete(taskId, variables); return true; Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/FlowModelController.java
@@ -69,7 +69,6 @@ .select("id,model_key modelKey,name,description,version,created,last_updated lastUpdated") .orderByDesc("last_updated")); flowEngineService.getNodeByFlowableKey("process_t"); return R.data(pages); } Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/FlowProcessTSController.java
@@ -2,8 +2,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.vci.ubcs.flow.engine.entity.FlowTaskUser; import com.vci.ubcs.flow.engine.entity.FlowTaskUserC; import com.vci.ubcs.flow.engine.entity.FlowTaskDTO; import com.vci.ubcs.flow.engine.entity.ProcessStageAttr; import com.vci.ubcs.flow.engine.entity.ProcessTemplate; import com.vci.ubcs.flow.engine.service.FlowEngineService; @@ -81,7 +80,7 @@ * æµç¨é¶æ®µï¼è¿ä¸ªæµç¨çå个èç¹ */ @GetMapping("/sslist") public R<List<Map<String,String>>> sslist(@RequestParam String modelKey) { public R<List<FlowTaskDTO>> sslist(@RequestParam String modelKey) { return R.data(flowEngineService.getNodeByFlowableKey(modelKey)); } @@ -105,7 +104,7 @@ * @return */ @PostMapping("sasou") public R<ProcessTemplate> stageAttributeSaveOrUpdate(@RequestBody FlowTaskUserC flowTaskUserC) { public R<ProcessTemplate> stageAttributeSaveOrUpdate(@RequestBody FlowTaskDTO flowTaskUserC) { processStageAttrService.saveOrUpdateUser(flowTaskUserC); return R.success("ä¿åæå"); } Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/FlowTaskUserController.java
@@ -1,14 +1,11 @@ package com.vci.ubcs.flow.engine.controller; import com.vci.ubcs.flow.engine.entity.FlowTaskUserC; import com.vci.ubcs.flow.engine.service.FlowEngineService; import com.vci.ubcs.flow.engine.entity.FlowTaskDTO; import com.vci.ubcs.flow.engine.service.FlowTaskUserService; import lombok.AllArgsConstructor; import org.springblade.core.tenant.annotation.NonDS; import org.springblade.core.tool.api.R; import org.springframework.web.bind.annotation.*; import java.util.List; /** @@ -40,7 +37,7 @@ * @return */ @PostMapping("su") public R<String> saveUser(@RequestBody FlowTaskUserC flowTaskUserC) { public R<String> saveUser(@RequestBody FlowTaskDTO flowTaskUserC) { taskUserService.saveOrUpdateUser(flowTaskUserC); return R.success("ä¿åæå"); } @@ -51,7 +48,7 @@ * @return */ @PostMapping("du") public R<String> deleteUser(@RequestBody FlowTaskUserC flowTaskUserC) { public R<String> deleteUser(@RequestBody FlowTaskDTO flowTaskUserC) { taskUserService.deleteUser(flowTaskUserC.getName()); return R.success("å 餿å"); } Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/VCIFlowController.java
@@ -1,8 +1,7 @@ package com.vci.ubcs.flow.engine.controller; import com.vci.ubcs.flow.core.entity.BladeFlow; import com.vci.ubcs.flow.engine.entity.FlowTaskUserC; import com.vci.ubcs.flow.engine.service.FlowTaskUserService; import com.vci.ubcs.flow.engine.entity.FlowTaskDTO; import com.vci.ubcs.flow.engine.service.VICFlowService; import lombok.AllArgsConstructor; import org.springblade.core.tenant.annotation.NonDS; @@ -10,6 +9,8 @@ import org.springframework.web.bind.annotation.*; import java.util.List; import static com.vci.ubcs.flow.engine.service.impl.VCIFlowserviceImpl.NODE_NEXT; /** @@ -30,15 +31,15 @@ * @return */ @PostMapping("start") public R<BladeFlow> list(@RequestBody FlowTaskUserC flowTaskUserC) { public R<BladeFlow> list(@RequestBody FlowTaskDTO flowTaskUserC) { return vicFlowService.startProcess(flowTaskUserC); } /** * æµç¨é¢æµ * æµç¨é¢æµ,æµç¨ä»»å¡æé® */ @PostMapping("a") public R<BladeFlow> a(@RequestBody FlowTaskUserC flowTaskUserC) { return vicFlowService.startProcess(flowTaskUserC); @PostMapping("next") public R<FlowTaskDTO> next(@RequestBody FlowTaskDTO flowTaskUserC) { return R.data(vicFlowService.nextFlowNode(NODE_NEXT,flowTaskUserC.getProcessInstanceId())); } } Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/FlowTaskDTO.java
ÎļþÃû´Ó Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/FlowTaskUserC.java ÐÞ¸Ä @@ -20,6 +20,7 @@ import java.io.Serializable; import java.util.List; import java.util.Map; /** * æµç¨èç¹å®¡æ ¸äººæ¶è @@ -27,12 +28,13 @@ * @author wang1 */ @Data public class FlowTaskUserC implements Serializable { public class FlowTaskDTO implements Serializable { private static final long serialVersionUID = 1L; private String createdBy; private String name;//ä¿åçè¿ä¸ªæ¶èåç§° private String processInstanceId;//æµç¨å®ä¾id private String modelKey; private String modelName; private String processName; @@ -46,5 +48,18 @@ private List<ProcessStageAttr> processStageAttr;//æµç¨é¶æ®µä¿åç屿§ private List<String> ids;//æµç¨åèµ·ä¸ä¼ éè¿æ¥çæ°æ®id //æµç¨é©³åè·¯å¾ private String toName;//åæã驳å private String toTaskName;//åæã驳åå°çä¸ä¸ä¸ªèç¹ private String toTaskId;//åæã驳åå°çä¸ä¸ä¸ªèç¹ private String condition;//åæã驳åå°çä¸ä¸ä¸ªèç¹çæ¡ä»¶ private String conditionKey;//åæã驳åå°çä¸ä¸ä¸ªèç¹çæ¡ä»¶key private String conditionValue;//åæã驳åå°çä¸ä¸ä¸ªèç¹çæ¡ä»¶value //æµç¨ä¸åæ° private List<FlowTaskDTO> toTasks;//æµç¨ä¸ä¸æ¥æé® private Map<String, Object> vars;//æµç¨åæ° } Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/FlowEngineService.java
@@ -22,8 +22,8 @@ import com.vci.ubcs.flow.engine.entity.FlowExecution; import com.vci.ubcs.flow.engine.entity.FlowModel; import com.vci.ubcs.flow.engine.entity.FlowProcess; import com.vci.ubcs.flow.engine.entity.FlowTaskDTO; import org.springframework.web.multipart.MultipartFile; import org.w3c.dom.Document; import javax.servlet.http.HttpServletResponse; import java.util.List; @@ -171,8 +171,14 @@ * @param key * @return */ List<Map<String,String>> getNodeByFlowableKey(String key); List<FlowTaskDTO> getNodeByFlowableKey(String key); String getTaskIdString(); /** * æ ¹æ®æµç¨æ¨¡åkeyè·åXMLä¸èç¹é ç½®çå¤ç人,读åèç¹åç§°åé ç½®çå¼ï¼æµç¨æ¨¡åkeyå·²ç»éå¶ä¸éå¤ * * @param key * @return */ FlowTaskDTO getNodeByFlowableKey(String key, String taskId); } Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/FlowTaskUserService.java
@@ -16,15 +16,10 @@ */ package com.vci.ubcs.flow.engine.service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; import com.vci.ubcs.flow.core.entity.BladeFlow; import com.vci.ubcs.flow.engine.entity.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.util.List; import java.util.Map; /** * FlowService @@ -45,7 +40,7 @@ * @param flowTaskUserC * @return */ void saveOrUpdateUser(FlowTaskUserC flowTaskUserC); void saveOrUpdateUser(FlowTaskDTO flowTaskUserC); /** * å 餿µç¨å®¡æ ¸äººå Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/ProcessStageAttrService.java
@@ -17,10 +17,8 @@ package com.vci.ubcs.flow.engine.service; import com.baomidou.mybatisplus.extension.service.IService; import com.vci.ubcs.flow.engine.entity.FlowTaskUserC; import com.vci.ubcs.flow.engine.entity.FlowTaskDTO; import com.vci.ubcs.flow.engine.entity.ProcessStageAttr; import java.util.List; /** * æµç¨é¶æ®µæå¡ @@ -34,6 +32,6 @@ * @param flowTaskUserC * @return */ void saveOrUpdateUser(FlowTaskUserC flowTaskUserC); void saveOrUpdateUser(FlowTaskDTO flowTaskUserC); } Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/ProcessTemplateService.java
@@ -17,10 +17,7 @@ package com.vci.ubcs.flow.engine.service; import com.baomidou.mybatisplus.extension.service.IService; import com.vci.ubcs.flow.engine.entity.FlowTaskUser; import com.vci.ubcs.flow.engine.entity.FlowTaskUserC; import com.vci.ubcs.flow.engine.entity.ProcessTemplate; import com.vci.ubcs.starter.web.enumpck.ProcessTemplateTypeEnum; import java.util.List; import java.util.Map; Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/VICFlowService.java
@@ -16,10 +16,8 @@ */ package com.vci.ubcs.flow.engine.service; import com.baomidou.mybatisplus.extension.service.IService; import com.vci.ubcs.flow.core.entity.BladeFlow; import com.vci.ubcs.flow.engine.entity.FlowTaskUser; import com.vci.ubcs.flow.engine.entity.FlowTaskUserC; import com.vci.ubcs.flow.engine.entity.FlowTaskDTO; import org.springblade.core.tool.api.R; /** @@ -33,5 +31,14 @@ * å¯å¨æµç¨ * @return */ R<BladeFlow> startProcess(FlowTaskUserC flowTaskUserC); R<BladeFlow> startProcess(FlowTaskDTO flowTaskUserC); /** * æµç¨å®¡æ¹ä¸ä¸ä¸æ¥æé® * @param node * @param processInstanceId * @return */ FlowTaskDTO nextFlowNode(String node, String processInstanceId); } Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/FlowEngineServiceImpl.java
@@ -16,8 +16,6 @@ */ package com.vci.ubcs.flow.engine.service.impl; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.fasterxml.jackson.databind.ObjectMapper; @@ -29,6 +27,7 @@ import com.vci.ubcs.flow.engine.entity.FlowExecution; import com.vci.ubcs.flow.engine.entity.FlowModel; import com.vci.ubcs.flow.engine.entity.FlowProcess; import com.vci.ubcs.flow.engine.entity.FlowTaskDTO; import com.vci.ubcs.flow.engine.mapper.FlowMapper; import com.vci.ubcs.flow.engine.service.FlowEngineService; import com.vci.ubcs.flow.engine.utils.FlowCache; @@ -37,7 +36,6 @@ import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.StringUtils; import org.flowable.bpmn.converter.BpmnXMLConverter; import org.flowable.bpmn.model.*; @@ -51,7 +49,6 @@ import org.flowable.engine.impl.persistence.entity.ExecutionEntityImpl; import org.flowable.engine.impl.persistence.entity.ProcessDefinitionEntityImpl; import org.flowable.engine.repository.Deployment; import org.flowable.engine.repository.DeploymentQuery; import org.flowable.engine.repository.ProcessDefinition; import org.flowable.engine.repository.ProcessDefinitionQuery; import org.flowable.engine.runtime.ProcessInstance; @@ -67,17 +64,12 @@ import org.springblade.core.tool.utils.StringUtil; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import org.w3c.dom.*; import org.xml.sax.InputSource; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.StringReader; import java.util.*; /** @@ -93,8 +85,6 @@ private static final String USR_TASK = "userTask"; private static final String IMAGE_NAME = "image"; private static final String XML_NAME = "xml"; private static final String TASKID = "taskId"; private static final String TASKNAME = "taskName"; private static final Integer INT_1024 = 1024; private static final BpmnJsonConverter BPMN_JSON_CONVERTER = new BpmnJsonConverter(); private static final BpmnXMLConverter BPMN_XML_CONVERTER = new BpmnXMLConverter(); @@ -500,29 +490,43 @@ * @return */ @Override public List<Map<String,String>> getNodeByFlowableKey(String key){ public List<FlowTaskDTO> getNodeByFlowableKey(String key){ String processDefinitionId = repositoryService.createProcessDefinitionQuery().latestVersion().processDefinitionKey(key).singleResult().getId(); BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinitionId); Process process = bpmnModel.getProcesses().get(0);//åªæä¸ä¸ª List<Map<String,String>> ll = new ArrayList<>(); List<FlowTaskDTO> ll = new ArrayList<>(); if (CollectionUtils.isNotEmpty(process.getFlowElements())) { for (FlowElement flowElement : process.getFlowElements()) { if (flowElement instanceof UserTask) { Map<String,String> mi = new HashMap<>(); mi.put(TASKID,flowElement.getId()); mi.put(TASKNAME,flowElement.getName()); ll.add(mi); FlowTaskDTO flowTaskUserC = new FlowTaskDTO(); flowTaskUserC.setTaskId(flowElement.getId()); flowTaskUserC.setTaskName(flowElement.getName()); ll.add(flowTaskUserC); } } } return ll; } @Override public String getTaskIdString(){ return TASKID; public FlowTaskDTO getNodeByFlowableKey(String key, String taskId){ String processDefinitionId = repositoryService.createProcessDefinitionQuery().latestVersion().processDefinitionKey(key).singleResult().getId(); BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinitionId); Process process = bpmnModel.getProcesses().get(0);//åªæä¸ä¸ª FlowTaskDTO flowTaskUserC = new FlowTaskDTO(); if (CollectionUtils.isNotEmpty(process.getFlowElements())) { for (FlowElement flowElement : process.getFlowElements()) { if (flowElement instanceof UserTask&&taskId.equals(flowElement.getId())) { flowTaskUserC.setTaskId(flowElement.getId()); flowTaskUserC.setTaskName(flowElement.getName()); break; } } } return flowTaskUserC; } /** * æ¯å¦å·²å®ç» * Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/FlowTaskUserServiceImpl.java
@@ -17,68 +17,19 @@ package com.vci.ubcs.flow.engine.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; import com.vci.ubcs.flow.core.entity.BladeFlow; import com.vci.ubcs.flow.core.enums.FlowModeEnum; import com.vci.ubcs.flow.core.utils.TaskUtil; import com.vci.ubcs.flow.engine.constant.FlowEngineConstant; import com.vci.ubcs.flow.engine.entity.*; import com.vci.ubcs.flow.engine.mapper.FlowMapper; import com.vci.ubcs.flow.engine.mapper.FlowTaskUserMapper; import com.vci.ubcs.flow.engine.mapper.ProcessTemplateMapper; import com.vci.ubcs.flow.engine.service.FlowEngineService; import com.vci.ubcs.flow.engine.service.FlowTaskUserService; import com.vci.ubcs.flow.engine.utils.FlowCache; import com.vci.ubcs.system.user.cache.UserCache; import com.vci.ubcs.system.user.entity.User; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.flowable.bpmn.converter.BpmnXMLConverter; import org.flowable.bpmn.model.BpmnModel; import org.flowable.bpmn.model.Process; import org.flowable.common.engine.impl.util.IoUtil; import org.flowable.common.engine.impl.util.io.StringStreamSource; import org.flowable.editor.language.json.converter.BpmnJsonConverter; import org.flowable.engine.*; import org.flowable.engine.history.HistoricActivityInstance; import org.flowable.engine.history.HistoricProcessInstance; import org.flowable.engine.impl.persistence.entity.ExecutionEntityImpl; import org.flowable.engine.impl.persistence.entity.ProcessDefinitionEntityImpl; import org.flowable.engine.repository.Deployment; import org.flowable.engine.repository.ProcessDefinition; import org.flowable.engine.repository.ProcessDefinitionQuery; import org.flowable.engine.runtime.ProcessInstance; import org.flowable.engine.runtime.ProcessInstanceQuery; import org.flowable.engine.task.Comment; import org.flowable.image.ProcessDiagramGenerator; import org.springblade.core.launch.constant.FlowConstant; import org.springblade.core.log.exception.ServiceException; import org.springblade.core.mp.support.Condition; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.tool.utils.FileUtil; import org.springblade.core.tool.utils.Func; import org.springblade.core.tool.utils.StringUtil; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; import org.xml.sax.InputSource; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.StringReader; import java.util.*; /** @@ -120,7 +71,7 @@ QueryWrapper<FlowTaskUser> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("CREATED_BY", TaskUtil.getTaskUser()); List<FlowTaskUser> flowTaskUsers = baseMapper.selectList(queryWrapper); List<FlowTaskUserC> cl = new ArrayList<>(); List<FlowTaskDTO> cl = new ArrayList<>(); Map<String,List<FlowTaskUser>> nameMap = new HashMap<>(); for(FlowTaskUser flowTaskUser:flowTaskUsers){ @@ -136,7 +87,7 @@ } for (String name:nameMap.keySet()){ FlowTaskUserC flowTaskUserCR = new FlowTaskUserC(); FlowTaskDTO flowTaskUserCR = new FlowTaskDTO(); flowTaskUserCR.setName(name);//æ¶èåç§° flowTaskUserCR.setModelKey(nameMap.get(name).get(0).getModelKey()); flowTaskUserCR.setModelName(nameMap.get(name).get(0).getModelName()); @@ -146,13 +97,13 @@ kv.put("collect",cl); //æ°æ®èç¹æ°æ® List<Map<String,String>> tl = flowEngineService.getNodeByFlowableKey(processTemplate.getModelKey()); List<FlowTaskDTO> tl = flowEngineService.getNodeByFlowableKey(processTemplate.getModelKey()); kv.put("user",tl); return kv; } @Override public void saveOrUpdateUser(FlowTaskUserC flowTaskUserC){ public void saveOrUpdateUser(FlowTaskDTO flowTaskUserC){ List<FlowTaskUser> flowTaskUsers = flowTaskUserC.getFlowTaskUsers(); String name = flowTaskUserC.getName();//æ¶èåç§° Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/ProcessStageAttrServiceImpl.java
@@ -19,7 +19,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.vci.ubcs.flow.engine.entity.FlowTaskUser; import com.vci.ubcs.flow.engine.entity.FlowTaskUserC; import com.vci.ubcs.flow.engine.entity.FlowTaskDTO; import com.vci.ubcs.flow.engine.entity.ProcessStageAttr; import com.vci.ubcs.flow.engine.mapper.ProcessStageAttrMapper; import com.vci.ubcs.flow.engine.service.ProcessStageAttrService; @@ -49,7 +49,7 @@ * @return */ @Transactional public void saveOrUpdateUser(FlowTaskUserC flowTaskUserC){ public void saveOrUpdateUser(FlowTaskDTO flowTaskUserC){ List<ProcessStageAttr> processStageAttrs = flowTaskUserC.getProcessStageAttr(); String modelKey = flowTaskUserC.getModelKey(); String templateId = flowTaskUserC.getTemplateId(); Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/ProcessTemplateServiceImpl.java
@@ -19,21 +19,14 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.vci.ubcs.flow.core.utils.TaskUtil; import com.vci.ubcs.flow.engine.entity.FlowTaskUser; import com.vci.ubcs.flow.engine.entity.FlowTaskUserC; import com.vci.ubcs.flow.engine.entity.ProcessTemplate; import com.vci.ubcs.flow.engine.mapper.FlowTaskUserMapper; import com.vci.ubcs.flow.engine.mapper.ProcessTemplateMapper; import com.vci.ubcs.flow.engine.service.FlowEngineService; import com.vci.ubcs.flow.engine.service.FlowTaskUserService; import com.vci.ubcs.flow.engine.service.ProcessTemplateService; import com.vci.ubcs.starter.web.enumpck.ProcessTemplateTypeEnum; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springblade.core.launch.constant.FlowConstant; import org.springblade.core.log.exception.ServiceException; import org.springblade.core.mp.support.Condition; import org.springframework.stereotype.Service; import java.util.*; @@ -58,6 +51,7 @@ //æ ¡éªè¿ä¸ªæ¨¡æ¿ä¸ï¼ä¸ç±»æé®åªè½æä¸ä¸ªæ¨¡æ¿ QueryWrapper<ProcessTemplate> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("button_type_key", processTemplate.getButtonTypeKey()); queryWrapper.eq("template_id", processTemplate.getTemplateId()); if(StringUtils.isNotEmpty(processTemplate.getId())) {//ä¿®æ¹çæ¶å,idä¸ºç©ºå°±æ¯æ°å¢ queryWrapper.ne("id", processTemplate.getId()); } Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/VCIFlowserviceImpl.java
@@ -31,7 +31,6 @@ 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; @@ -57,7 +56,7 @@ private final HistoryService historyService; @Override public R<BladeFlow> startProcess(FlowTaskUserC flowTaskUserC){ public R<BladeFlow> startProcess(FlowTaskDTO flowTaskUserC){ String modelKey = flowTaskUserC.getModelKey(); String templateId = flowTaskUserC.getTemplateId(); @@ -81,16 +80,16 @@ } //对æ¯é ç½®çå®¡æ ¸äººååæµç¨ä¸èç¹æ¯å¦ä¸è´ï¼å¯è½å卿µç¨èç¹åæ´äºï¼å¤äºæè å°äºèç¹ï¼ä½æ¯é ç½®å®¡æ ¸äººåçèç¹æ²¡æå List<Map<String,String>> processTasks = flowEngineService.getNodeByFlowableKey(modelKey); for (Map<String,String> mi:processTasks){ String taskId = mi.get(flowEngineService.getTaskIdString()); if(!taskIdSet.contains(taskId)){ throw new ServiceException("æµç¨å·²éæ°é¨ç½²ï¼èç¹å·²æ¹åï¼è¯·è®¾ç½®å®¡æ ¸äººåï¼"); } } if(taskIdSet.size()!=processTasks.size()){ throw new ServiceException("æµç¨å·²éæ°é¨ç½²ï¼èç¹å·²æ¹åï¼è¯·è®¾ç½®å®¡æ ¸äººåï¼"); } // List<Map<String,String>> processTasks = flowEngineService.getNodeByFlowableKey(modelKey); // for (Map<String,String> mi:processTasks){ // String taskId = mi.get(flowEngineService.getTaskIdString()); // if(!taskIdSet.contains(taskId)){ // throw new ServiceException("æµç¨å·²éæ°é¨ç½²ï¼èç¹å·²æ¹åï¼è¯·è®¾ç½®å®¡æ ¸äººåï¼"); // } // } // if(taskIdSet.size()!=processTasks.size()){ // throw new ServiceException("æµç¨å·²éæ°é¨ç½²ï¼èç¹å·²æ¹åï¼è¯·è®¾ç½®å®¡æ ¸äººåï¼"); // } //æµç¨ä¸æä»¶ãåéç //do.. @@ -100,46 +99,78 @@ BladeFlow flow = new BladeFlow(); flow.setProcessInstanceId(processInstance.getId()); nextFlowNode("next","039ac1d8-0c1e-11ee-bebb-5c3a4570456d"); return R.data(flow); } public static String NODE_NOW = "now"; public static String NODE_NEXT = "next"; /** * è·åä»»å¡èç¹ * * @param node æ¥è¯¢èç¹éæ© * @param processInstanceId æµç¨å®ä¾id */ public void nextFlowNode(String node, String processInstanceId) { public FlowTaskDTO nextFlowNode(String node, String processInstanceId) { FlowTaskDTO flowTaskDTO = new FlowTaskDTO(); List<FlowTaskDTO> taskList = new ArrayList<>();//èç¹æé® flowTaskDTO.setToTasks(taskList); Task task = taskService.createTaskQuery().processInstanceId(processInstanceId).active().singleResult(); ExecutionEntity ee = (ExecutionEntity) runtimeService.createExecutionQuery() .executionId(task.getExecutionId()).singleResult(); // å½å审æ¹èç¹ String crruentActivityId = ee.getActivityId(); BpmnModel bpmnModel = repositoryService.getBpmnModel(task.getProcessDefinitionId()); FlowNode flowNode = (FlowNode) bpmnModel.getFlowElement(crruentActivityId); //è¿ä¸ªå®ä¾çææèç¹ ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult(); Map<String, Object> processVariables = processInstance.getProcessVariables();//ææåæ° flowTaskDTO.setVars(processVariables); String modelKey = processInstance.getProcessDefinitionKey(); List<FlowTaskDTO> mis = flowEngineService.getNodeByFlowableKey(modelKey); // è¾åºè¿çº¿ List<SequenceFlow> outFlows = flowNode.getOutgoingFlows(); for (SequenceFlow sequenceFlow : outFlows) { //å½å审æ¹èç¹ if ("now".equals(node)) { if (NODE_NOW.equals(node)) { FlowElement sourceFlowElement = sequenceFlow.getSourceFlowElement(); System.out.println("å½åèç¹: id=" + sourceFlowElement.getId() + ",name=" + sourceFlowElement.getName()); } else if ("next".equals(node)) { } else if (NODE_NEXT.equals(node)) { // ä¸ä¸ä¸ªå®¡æ¹èç¹ FlowElement targetFlow = sequenceFlow.getTargetFlowElement(); if (targetFlow instanceof UserTask) { System.out.println("ä¸ä¸èç¹: id=" + targetFlow.getId() + ",name=" + targetFlow.getName()); } // 妿ä¸ä¸ªå®¡æ¹èç¹ä¸ºç»æèç¹ if (targetFlow instanceof EndEvent) { System.out.println("ä¸ä¸èç¹ä¸ºç»æèç¹ï¼id=" + targetFlow.getId() + ",name=" + targetFlow.getName()); // 妿ä¸ä¸ªå®¡æ¹èç¹ä¸ºæä»ç½å ³ if (targetFlow instanceof ExclusiveGateway) { ExclusiveGateway exclusiveGateway = (ExclusiveGateway) targetFlow; List<SequenceFlow> exclusiveGatewayOutgoingFlows = exclusiveGateway.getOutgoingFlows(); for (SequenceFlow nexti:exclusiveGatewayOutgoingFlows){ String conditionExpression = nexti.getConditionExpression();//condition String taskId = nexti.getTargetRef();//taskId String name = nexti.getName();//toName,驳åãåæ 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]); } flowTaskUserCi.setToName(name); flowTaskUserCi.setToTaskId(taskId); flowTaskUserCi.setToTaskName(flowTaskUserCi.getTaskName()); taskList.add(flowTaskUserCi); } } } } } } return flowTaskDTO; } } Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/constant/BtmTypeFieldConstant.java
@@ -70,6 +70,7 @@ this.put("lastmodifytime", "æåä¿®æ¹æ¶é´"); this.put("ts", "æ¶é´æ³"); this.put("owner", "æ¥æè "); this.put("tenentId","ç§æ·"); } }; BASE_MODEL_COMPATIBILITY_MAP = new HashMap() { Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/enumpck/ProcessTemplateTypeEnum.java
@@ -25,7 +25,12 @@ /** * å¯ç¨ */ DISABLE("DISABLE","åç¨"); DISABLE("DISABLE","åç¨"), /** * åæ¶ */ ROLLBACK("ROLLBACK","åæ¶"); /** * æä¸¾çå¼ Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/feign/BtmTypeClient.java
@@ -1,6 +1,7 @@ package com.vci.ubcs.omd.feign; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.vci.ubcs.omd.entity.BtmType; @@ -83,6 +84,9 @@ 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)); if (CollectionUtils.isEmpty(page.getRecords())){ return R.data(null); } Page<BtmTypeVO> pageVO = new Page<>(); BeanUtil.copy(page,pageVO); pageVO.setRecords(BtmTypeWrapper.build().listEntityVO(page.getRecords())); @@ -112,6 +116,9 @@ BtmType queryObj = new BtmType(); BeanMap.create(queryObj).putAll(conditionMap); List<BtmType> list = btmTypeService.list(Condition.getQueryWrapper(queryObj).lambda().eq(BtmType::getDomain, domainValue).orderByAsc(BtmType::getId)); if (CollectionUtils.isEmpty(list)){ return R.data(null); } return R.data(BtmTypeWrapper.build().listEntityVO(list)); } @@ -131,6 +138,9 @@ ) ).orElseGet(ArrayList::new) ); if (CollectionUtils.isEmpty(voList)){ return R.data(null); } return R.data(voList); } @@ -150,6 +160,9 @@ ) ).orElseGet(ArrayList::new) ); if (CollectionUtils.isEmpty(voList)){ return R.data(null); } return R.data(voList); } Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/BtmTypeServiceImpl.java
@@ -110,7 +110,11 @@ @Override public BtmTypeVO getBtmTypeByOid(String pkBtmType) throws ServiceException { Func.requireNotNull(pkBtmType,"ä¸å¡ç±»å主é®ä¸è½ä¸ºç©º"); BtmTypeVO btmTypeVO = BtmTypeWrapper.build().entityVO(baseMapper.selectOne(Wrappers.<BtmType>query().lambda().eq(BtmType::getOid, pkBtmType))); BtmType queryBtmType = baseMapper.selectOne(Wrappers.<BtmType>query().lambda().eq(BtmType::getOid, pkBtmType)); if (queryBtmType == null){ return null; } BtmTypeVO btmTypeVO = BtmTypeWrapper.build().entityVO(queryBtmType); btmTypeVO.setAttributes(btmTypeAttributeService.getAttributeByBtmTypeOid(pkBtmType)); return btmTypeVO; } Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/BtmTypeWrapper.java
@@ -37,7 +37,7 @@ public BtmTypeVO entityVO(BtmType entity) { BtmTypeVO vo = Objects.requireNonNull(BeanUtil.copy(entity, BtmTypeVO.class)); vo.setDomainText(NewAppConstantEnum.getTextByName(vo.getDomain())); vo.setTableName(vo.getTableName().toUpperCase(Locale.ROOT)); vo.setTableName(vo.getTableName() == null? "" : vo.getTableName().toUpperCase(Locale.ROOT)); // å¨è¿é设置æä¸¾æ¾ç¤ºå¼ vo.setRevisionFlag(BooleanEnum.TRUE.getValue().equals(entity.getRevisionFlag())); vo.setSecretFlag(BooleanEnum.TRUE.getValue().equals(entity.getSecretFlag()));