From 8194d0ed1986d1c82f98c1ad1abfc0db1b460ede Mon Sep 17 00:00:00 2001 From: wang1 <844966816@qq.com> Date: 星期五, 16 六月 2023 18:32:47 +0800 Subject: [PATCH] 主数据流程代码初次提交 --- Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/FlowTaskUserC.java | 7 Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/enumpck/ProcessTemplateTypeEnum.java | 4 Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/mapper/UserMapper.java | 4 Source/UBCS/ubcs-service/ubcs-user/src/main/resources/mapper/UserMapper.xml | 6 Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/FlowEngineService.java | 2 Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/FlowTaskUser.java | 1 Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/IUserService.java | 18 ++ Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/FlowTaskUserController.java | 7 Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/FlowTaskUserServiceImpl.java | 87 ++++++++-- Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/VCIFlowserviceImpl.java | 145 ++++++++++++++++++ Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/VCIFlowController.java | 44 +++++ Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/VICFlowService.java | 37 ++++ Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/impl/UserServiceImpl.java | 18 ++ Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/FlowProcessTSController.java | 4 Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/business/service/impl/FlowBusinessServiceImpl.java | 14 + Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/FlowEngineServiceImpl.java | 11 + Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/controller/UserController.java | 6 Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/FlowTaskUserService.java | 11 + 18 files changed, 387 insertions(+), 39 deletions(-) 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 a84b86b..c2ce243 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 @@ -25,6 +25,7 @@ import com.vci.ubcs.flow.engine.entity.FlowProcess; import com.vci.ubcs.flow.engine.utils.FlowCache; import lombok.AllArgsConstructor; +import org.apache.commons.lang3.StringUtils; import org.flowable.engine.HistoryService; import org.flowable.engine.TaskService; import org.flowable.engine.history.HistoricProcessInstance; @@ -117,7 +118,7 @@ HistoricProcessInstanceQuery historyQuery = historyService.createHistoricProcessInstanceQuery().startedBy(taskUser).orderByProcessInstanceStartTime().desc(); - if (bladeFlow.getCategory() != null) { + if (StringUtils.isNotEmpty(bladeFlow.getCategory())) { historyQuery.processDefinitionCategory(bladeFlow.getCategory()); } if (bladeFlow.getProcessDefinitionName() != null) { @@ -142,7 +143,7 @@ String[] businessKey = Func.toStrArray(StringPool.COLON, historicProcessInstance.getBusinessKey()); if (businessKey.length > 1) { flow.setBusinessTable(businessKey[0]); - flow.setBusinessId(businessKey[1]); + flow.setBusinessId(businessKey.length>1?businessKey[1]:"1"); } flow.setHistoryActivityName(historicProcessInstance.getName()); flow.setProcessInstanceId(historicProcessInstance.getId()); @@ -190,7 +191,7 @@ HistoricTaskInstanceQuery doneQuery = historyService.createHistoricTaskInstanceQuery().taskAssignee(taskUser).finished() .includeProcessVariables().orderByHistoricTaskInstanceEndTime().desc(); - if (bladeFlow.getCategory() != null) { + if (StringUtils.isNotEmpty(bladeFlow.getCategory())) { doneQuery.processCategoryIn(Func.toStrList(bladeFlow.getCategory())); } if (bladeFlow.getProcessDefinitionName() != null) { @@ -230,7 +231,7 @@ if (Func.isNotEmpty(historicProcessInstance)) { String[] businessKey = Func.toStrArray(StringPool.COLON, historicProcessInstance.getBusinessKey()); flow.setBusinessTable(businessKey[0]); - flow.setBusinessId(businessKey[1]); + flow.setBusinessId(businessKey.length>1?businessKey[1]:"1"); if (historicProcessInstance.getEndActivityId() != null) { flow.setProcessIsFinished(FlowEngineConstant.STATUS_FINISHED); } else { @@ -278,7 +279,8 @@ * @param status 鐘舵�� */ private void buildFlowTaskList(BladeFlow bladeFlow, List<BladeFlow> flowList, TaskQuery taskQuery, String status) { - if (bladeFlow.getCategory() != null) { +// if (bladeFlow.getCategory() != null) { + if (StringUtils.isNotEmpty(bladeFlow.getCategory())) { taskQuery.processCategoryIn(Func.toStrList(bladeFlow.getCategory())); } if (bladeFlow.getProcessDefinitionName() != null) { @@ -305,7 +307,7 @@ if (Func.isNotEmpty(historicProcessInstance)) { String[] businessKey = Func.toStrArray(StringPool.COLON, historicProcessInstance.getBusinessKey()); flow.setBusinessTable(businessKey[0]); - flow.setBusinessId(businessKey[1]); + flow.setBusinessId(businessKey.length>1?businessKey[1]:"1"); } FlowProcess processDefinition = FlowCache.getProcessDefinition(task.getProcessDefinitionId()); diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/ProcessTSController.java b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/FlowProcessTSController.java similarity index 97% rename from Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/ProcessTSController.java rename to Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/FlowProcessTSController.java index 4bf34b9..37ecad5 100644 --- a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/ProcessTSController.java +++ b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/FlowProcessTSController.java @@ -29,7 +29,7 @@ @RestController @RequestMapping("processTS") @AllArgsConstructor -public class ProcessTSController { +public class FlowProcessTSController { private final FlowEngineService flowEngineService; private final ProcessTemplateService processTemplateService; @@ -41,7 +41,7 @@ @GetMapping("/tlist") public R<IPage<ProcessTemplate>> tlist(@RequestParam Map<String, Object> flow, Query query) { IPage<ProcessTemplate> pages = processTemplateService.page(Condition.getPage(query), Condition.getQueryWrapper(flow, ProcessTemplate.class) - .select("id,model_key modelKey,model_name modelName,button_Type_Key buttonTypeKey,button_Type_value buttonTypeValue") + .select("id,model_key modelKey,model_name modelName,button_Type_Key buttonTypeKey,button_Type_value buttonTypeValue,description") .orderByDesc("last_updated")); return R.data(pages); } diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/FlowTaskUserController.java b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/FlowTaskUserController.java index 8aaba6c..bc67b15 100644 --- a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/FlowTaskUserController.java +++ b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/FlowTaskUserController.java @@ -8,6 +8,8 @@ import org.springblade.core.tool.api.R; import org.springframework.web.bind.annotation.*; +import java.util.List; + /** * 娴佺▼task瀹℃壒鎺у埗 @@ -24,11 +26,12 @@ /** * 娴佺▼task瀹℃壒浜哄憳鍒楄〃 + * ProcessTemplateTypeEnum * @return */ @GetMapping("list") - public R<FlowTaskUserC> list() { - return R.data(taskUserService.getUser()); + public R<Object> list(String type,String templateId) { + return R.data(taskUserService.getUser(type,templateId)); } /** diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/VCIFlowController.java b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/VCIFlowController.java new file mode 100644 index 0000000..fba4637 --- /dev/null +++ b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/VCIFlowController.java @@ -0,0 +1,44 @@ +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.service.VICFlowService; +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; + + +/** + * 瀹氬埗娴佺▼銆佸惎鍔ㄣ�佽浆鍙戙�佸畬鎴愭帶鍒跺櫒 + * + * @author wang1 + */ +@NonDS +@RestController +@RequestMapping("vciflow") +@AllArgsConstructor +public class VCIFlowController { + + private final VICFlowService vicFlowService; + + /** + * 鍚姩 + * @return + */ + @PostMapping("start") + public R<BladeFlow> list(@RequestBody FlowTaskUserC flowTaskUserC) { + return vicFlowService.startProcess(flowTaskUserC); + } + + /** + * 娴佺▼棰勬祴 + */ + @PostMapping("a") + public R<BladeFlow> a(@RequestBody FlowTaskUserC flowTaskUserC) { + return vicFlowService.startProcess(flowTaskUserC); + } +} diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/FlowTaskUser.java b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/FlowTaskUser.java index dde1fb2..fbab2e8 100644 --- a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/FlowTaskUser.java +++ b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/FlowTaskUser.java @@ -37,6 +37,7 @@ private String id; private String name;//淇濆瓨鐨勮繖涓敹钘忓悕绉� private String modelKey; + private String modelName; private String classifyId; private String templateId; private String taskId;//娴佺▼taskid diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/FlowTaskUserC.java b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/FlowTaskUserC.java index 9e862db..8e77956 100644 --- a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/FlowTaskUserC.java +++ b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/FlowTaskUserC.java @@ -34,10 +34,17 @@ private String createdBy; private String name;//淇濆瓨鐨勮繖涓敹钘忓悕绉� private String modelKey; + private String modelName; + private String processName; + private String processDesc; + private String topName; private String classifyId; private String templateId; private String taskId;//闃舵id锛屽氨鏄祦绋媡askid private String taskName;//闃舵鍚嶇О private List<FlowTaskUser> flowTaskUsers;//姣忎釜鑺傜偣鏀惰棌浜� private List<ProcessStageAttr> processStageAttr;//娴佺▼闃舵淇濆瓨鐨勫睘鎬� + private List<String> ids;//娴佺▼鍙戣捣涓紶閫掕繃鏉ョ殑鏁版嵁id + + } diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/FlowEngineService.java b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/FlowEngineService.java index 9ea5718..de9f38b 100644 --- a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/FlowEngineService.java +++ b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/FlowEngineService.java @@ -173,4 +173,6 @@ */ List<Map<String,String>> getNodeByFlowableKey(String key); + String getTaskIdString(); + } diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/FlowTaskUserService.java b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/FlowTaskUserService.java index a7ba9b4..d5950d0 100644 --- a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/FlowTaskUserService.java +++ b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/FlowTaskUserService.java @@ -35,9 +35,10 @@ /** * 鏌ヨ褰撳墠鐧婚檰浜哄杩欎釜娴佺▼鐨則askUser + * @param type ProcessTemplateTypeEnum * @return */ - FlowTaskUserC getUser(); + Object getUser(String type,String templateId); /** * 鏂板/淇敼娴佺▼鑺傜偣瀹℃牳浜洪厤缃�佸苟涓斾慨鏀规祦绋媥ml閮ㄧ讲鏂囦欢 @@ -51,4 +52,12 @@ * @param name */ void deleteUser(String name); + + /** + * 閫氳繃妯℃澘id鍜屾ā鍨媖ey鏌ヨ瀹℃壒浜� + * @param templateId + * @param modelKey + * @return + */ + List<FlowTaskUser> getTaskUserByTemplateAndModelKey(String templateId,String modelKey); } diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/VICFlowService.java b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/VICFlowService.java new file mode 100644 index 0000000..6f14049 --- /dev/null +++ b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/VICFlowService.java @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * Neither the name of the dreamlu.net developer nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * Author: Chill 搴勯獮 (smallchill@163.com) + */ +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 org.springblade.core.tool.api.R; + +/** + * FlowService + * + * @author wang1 + */ +public interface VICFlowService{ + + /** + * 鍚姩娴佺▼ + * @return + */ + R<BladeFlow> startProcess(FlowTaskUserC flowTaskUserC); +} diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/FlowEngineServiceImpl.java b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/FlowEngineServiceImpl.java index a11071e..297d6ca 100644 --- a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/FlowEngineServiceImpl.java +++ b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/FlowEngineServiceImpl.java @@ -93,6 +93,8 @@ 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(); @@ -508,16 +510,19 @@ 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()); + mi.put(TASKID,flowElement.getId()); + mi.put(TASKNAME,flowElement.getName()); ll.add(mi); } } } - return ll; } + @Override + public String getTaskIdString(){ + return TASKID; + } /** * 鏄惁宸插畬缁� * diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/FlowTaskUserServiceImpl.java b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/FlowTaskUserServiceImpl.java index ecdc82a..993a297 100644 --- a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/FlowTaskUserServiceImpl.java +++ b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/FlowTaskUserServiceImpl.java @@ -28,6 +28,7 @@ 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; @@ -92,23 +93,62 @@ private FlowEngineService flowEngineService; private FlowTaskUserMapper flowTaskUserMapper; + private ProcessTemplateMapper processTemplateMapper; /** * 鏌ヨ褰撳墠鐧婚檰浜哄杩欎釜娴佺▼鐨則askUser + * @param type ProcessTemplateTypeEnum * @return */ @Override - public FlowTaskUserC getUser(){ - QueryWrapper<FlowTaskUser> queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("CREATED_BY", AuthUtil.getUserId()); - List<FlowTaskUser> flowTaskUsers = baseMapper.selectList(queryWrapper); - FlowTaskUserC flowTaskUserCR = new FlowTaskUserC(); - if(flowTaskUsers.size()==0){ - return flowTaskUserCR; + public Object getUser(String type,String templateId){ + Map kv = new HashMap(); + + //鏍规嵁type鏌ヨtop娴佺▼鏁版嵁 + Map<String, Object> m = new HashMap<>(); + m.put("button_type_key", type); + m.put("template_id", templateId); + List<ProcessTemplate> processTemplates = processTemplateMapper.selectByMap(m); + if(processTemplates.size()==0){ + throw new ServiceException("涓婚搴撳畾涔�-妯℃澘绠$悊-娴佺▼妯℃澘锛屾病鏈夌粦瀹氭祦绋�!"); } - flowTaskUserCR.setName(flowTaskUsers.get(0).getName());//鏀惰棌鍚嶇О - flowTaskUserCR.setFlowTaskUsers(flowTaskUsers); - return flowTaskUserCR; + ProcessTemplate processTemplate = processTemplates.get(0); + kv.put("flow",processTemplate); + + + //top鏀惰棌閮ㄥ垎鏁版嵁 + QueryWrapper<FlowTaskUser> queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("CREATED_BY", TaskUtil.getTaskUser()); + List<FlowTaskUser> flowTaskUsers = baseMapper.selectList(queryWrapper); + List<FlowTaskUserC> cl = new ArrayList<>(); + + Map<String,List<FlowTaskUser>> nameMap = new HashMap<>(); + for(FlowTaskUser flowTaskUser:flowTaskUsers){ + String name = flowTaskUser.getName();//鏀惰棌鍚嶇О + List<FlowTaskUser> flowTaskUserListo = null; + if(nameMap.get(name)==null){ + flowTaskUserListo = new ArrayList<>(); + }else { + flowTaskUserListo = nameMap.get(name); + } + flowTaskUserListo.add(flowTaskUser); + nameMap.put(name,flowTaskUserListo); + } + + for (String name:nameMap.keySet()){ + FlowTaskUserC flowTaskUserCR = new FlowTaskUserC(); + flowTaskUserCR.setName(name);//鏀惰棌鍚嶇О + flowTaskUserCR.setModelKey(nameMap.get(name).get(0).getModelKey()); + flowTaskUserCR.setModelName(nameMap.get(name).get(0).getModelName()); + flowTaskUserCR.setFlowTaskUsers(nameMap.get(name)); + cl.add(flowTaskUserCR); + } + kv.put("collect",cl); + + //鏁版嵁鑺傜偣鏁版嵁 + List<Map<String,String>> tl = flowEngineService.getNodeByFlowableKey(processTemplate.getModelKey()); + kv.put("user",tl); + return kv; } @Override @@ -117,17 +157,20 @@ String name = flowTaskUserC.getName();//鏀惰棌鍚嶇О //鏂板鎯呭喌涓嬮獙璇佹敹钘忓悕绉颁笉閲嶅 - if(flowTaskUsers.get(0).getId()!=null) { - Map<String, Object> m = new HashMap<>(); - m.put("name", name); - QueryWrapper q = Condition.getQueryWrapper(m, FlowTaskUser.class) - .select("id,model_key modelKey,name,description,version,created,last_updated lastUpdated"); - if(flowTaskUserMapper.selectCount(q)>0){ - throw new ServiceException("鏀惰棌鍚嶇О宸茬粡瀛樺湪!"); - } + Map<String, Object> m = new HashMap<>(); + m.put("name", name); + m.put("created_by", TaskUtil.getTaskUser()); + QueryWrapper q = Condition.getQueryWrapper(m, FlowTaskUser.class) + .select("1"); + if(flowTaskUserMapper.selectCount(q)>0){ + throw new ServiceException("鏀惰棌鍚嶇О宸茬粡瀛樺湪!"); } + for (FlowTaskUser flowTaskUseri:flowTaskUsers){ flowTaskUseri.setName(name); + flowTaskUseri.setCreatedBy(TaskUtil.getTaskUser()); + flowTaskUseri.setTemplateId(flowTaskUserC.getTemplateId()); + flowTaskUseri.setModelKey(flowTaskUserC.getModelKey()); } //鏂板銆佷慨鏀� this.saveOrUpdateBatch(flowTaskUsers); @@ -139,8 +182,14 @@ public void deleteUser(String name){ Map<String, Object> m = new HashMap<>(); m.put("name", name); - m.put("created_by", AuthUtil.getUserId()); + m.put("created_by", TaskUtil.getTaskUser()); baseMapper.deleteByMap(m); } + public List<FlowTaskUser> getTaskUserByTemplateAndModelKey(String templateId,String modelKey){ + Map<String, Object> m = new HashMap<>(); + m.put("template_id", templateId); + m.put("model_key", modelKey); + return baseMapper.selectByMap(m); + } } 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 new file mode 100644 index 0000000..9012c4b --- /dev/null +++ b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/VCIFlowserviceImpl.java @@ -0,0 +1,145 @@ +/* + * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * Neither the name of the dreamlu.net developer nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * Author: Chill 搴勯獮 (smallchill@163.com) + */ +package com.vci.ubcs.flow.engine.service.impl; + +import com.vci.ubcs.flow.core.constant.ProcessConstant; +import com.vci.ubcs.flow.core.entity.BladeFlow; +import com.vci.ubcs.flow.core.utils.TaskUtil; +import com.vci.ubcs.flow.engine.entity.*; +import com.vci.ubcs.flow.engine.service.FlowEngineService; +import com.vci.ubcs.flow.engine.service.FlowTaskUserService; +import com.vci.ubcs.flow.engine.service.VICFlowService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +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; +import org.springframework.stereotype.Service; +import java.util.*; + +/** + * 宸ヤ綔娴佹湇鍔″疄鐜扮被 + * + * @author Chill + */ +@Slf4j +@Service +@AllArgsConstructor +public class VCIFlowserviceImpl implements VICFlowService { + + private final RuntimeService runtimeService; + private final IdentityService identityService; + private final RepositoryService repositoryService; + private final TaskService taskService; + private final FlowTaskUserService flowTaskUserService; + private final FlowEngineService flowEngineService; + private final HistoryService historyService; + + @Override + public R<BladeFlow> startProcess(FlowTaskUserC flowTaskUserC){ + String modelKey = flowTaskUserC.getModelKey(); + String templateId = flowTaskUserC.getTemplateId(); + + Kv kv = Kv.create() + .set(ProcessConstant.TASK_VARIABLE_CREATE_USER, AuthUtil.getUserName()); + + // 璁剧疆娴佺▼鍚姩鐢ㄦ埛 + identityService.setAuthenticatedUserId(TaskUtil.getTaskUser()); + + // 寮�鍚祦绋� + //鏌ヨ鏈�鏂扮殑娴佺▼閮ㄧ讲id + ProcessDefinition latesDefinition = repositoryService.createProcessDefinitionQuery().latestVersion().processDefinitionKey(modelKey).singleResult(); + String processDefinitionId = latesDefinition.getId(); + + //鏌ヨ姣忎竴姝ュ鏍镐汉 + List<FlowTaskUser> taskUsers = flowTaskUserService.getTaskUserByTemplateAndModelKey(templateId,modelKey); + Set<String> taskIdSet = new HashSet<>(); + for (FlowTaskUser taskUser:taskUsers){ + kv.put(taskUser.getTaskId(),TaskUtil.getTaskUser(taskUser.getUserId())); + taskIdSet.add(taskUser.getTaskId()); + } + + //瀵规瘮閰嶇疆鐨勫鏍镐汉鍛樺拰娴佺▼涓妭鐐规槸鍚︿竴鑷达紝鍙兘瀛樺湪娴佺▼鑺傜偣鍙樻洿浜嗭紝澶氫簡鎴栬�呭皯浜嗚妭鐐癸紝浣嗘槸閰嶇疆瀹℃牳浜哄憳鐨勮妭鐐规病鏈夊彉 + 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.. + + ProcessInstance processInstance = runtimeService.startProcessInstanceById(processDefinitionId, modelKey, kv); + // 缁勮娴佺▼閫氱敤绫� + BladeFlow flow = new BladeFlow(); + flow.setProcessInstanceId(processInstance.getId()); + + nextFlowNode("next","039ac1d8-0c1e-11ee-bebb-5c3a4570456d"); + return R.data(flow); + } + + /** + * 鑾峰彇浠诲姟鑺傜偣 + * + * @param node 鏌ヨ鑺傜偣閫夋嫨 + * @param processInstanceId 娴佺▼瀹炰緥id + */ + public void nextFlowNode(String node, String processInstanceId) { + + 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); + // 杈撳嚭杩炵嚎 + List<SequenceFlow> outFlows = flowNode.getOutgoingFlows(); + for (SequenceFlow sequenceFlow : outFlows) { + //褰撳墠瀹℃壒鑺傜偣 + if ("now".equals(node)) { + FlowElement sourceFlowElement = sequenceFlow.getSourceFlowElement(); + System.out.println("褰撳墠鑺傜偣: id=" + sourceFlowElement.getId() + ",name=" + sourceFlowElement.getName()); + } else if ("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()); + } + } + + + } + } +} diff --git a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/enumpck/ProcessTemplateTypeEnum.java b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/enumpck/ProcessTemplateTypeEnum.java index 3284d8e..6f47626 100644 --- a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/enumpck/ProcessTemplateTypeEnum.java +++ b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/enumpck/ProcessTemplateTypeEnum.java @@ -20,12 +20,12 @@ /** * 鍋滅敤 */ - ENABLE("ENABLE","鍋滅敤"), + ENABLE("ENABLE","鍚敤"), /** * 鍚敤 */ - DISABLE("DISABLE","鍚敤"); + DISABLE("DISABLE","鍋滅敤"); /** * 鏋氫妇鐨勫�� diff --git a/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/controller/UserController.java b/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/controller/UserController.java index 4fe20fa..5322e78 100644 --- a/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/controller/UserController.java +++ b/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/controller/UserController.java @@ -142,6 +142,12 @@ return R.data(UserWrapper.build().pageVO(pages)); } + @GetMapping("/allPage") + public R<List<UserVO>> allPage(User user,Long deptId) { + List<User> userss = userService.selectAllUser(user,deptId); + return R.data(UserWrapper.build().listVO(userss)); + } + /** * 鏂板鎴栦慨鏀� */ diff --git a/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/mapper/UserMapper.java b/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/mapper/UserMapper.java index 0d21766..847bac9 100644 --- a/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/mapper/UserMapper.java +++ b/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/mapper/UserMapper.java @@ -43,6 +43,8 @@ */ List<User> selectUserPage(IPage<User> page, @Param("user") User user, @Param("deptIdList") List<Long> deptIdList, @Param("tenantId") String tenantId); + List<User> selectUserPage(@Param("user") User user, @Param("deptIdList") List<Long> deptIdList, @Param("tenantId") String tenantId); + /** * 鑾峰彇鐢ㄦ埛 * @@ -50,7 +52,7 @@ * @param account * @return */ - User getUser(String tenantId, String account); + User getUser(String tenantId, String account,String name); /** * 鑾峰彇瀵煎嚭鐢ㄦ埛鏁版嵁 diff --git a/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/IUserService.java b/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/IUserService.java index 51ace0f..1d38c73 100644 --- a/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/IUserService.java +++ b/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/IUserService.java @@ -84,6 +84,15 @@ * 鑷畾涔夊垎椤� * * @param user + * @param deptId + * @return + */ + List<User> selectAllUser(User user, Long deptId); + + /** + * 鑷畾涔夊垎椤� + * + * @param user * @param query * @return */ @@ -107,6 +116,15 @@ UserInfo userInfo(String tenantId, String account); /** + * 鐢ㄦ埛淇℃伅,涓哄暐涓嶅垹浜嗕笂杈归偅涓柟娉曞憿锛屽洜涓烘垜涓嶆暍,鐗垫壇鏈夌偣澶� + * + * @param tenantId + * @param account + * @return + */ + UserInfo userInfo(String tenantId, String account,String name); + + /** * 鐢ㄦ埛淇℃伅 * * @param tenantId diff --git a/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/impl/UserServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/impl/UserServiceImpl.java index 4502b3c..c66d5f2 100644 --- a/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/impl/UserServiceImpl.java +++ b/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/impl/UserServiceImpl.java @@ -162,6 +162,13 @@ } @Override + public List<User> selectAllUser(User user, Long deptId){ + List<Long> deptIdList = SysCache.getDeptChildIds(deptId); + List<User> users = baseMapper.selectUserPage(user, deptIdList, (AuthUtil.getTenantId().equals(BladeConstant.ADMIN_TENANT_ID) ? StringPool.EMPTY : AuthUtil.getTenantId())); + return users; + } + + @Override public IPage<UserVO> selectUserSearch(UserVO user, Query query) { LambdaQueryWrapper<User> queryWrapper = Wrappers.<User>query().lambda(); String tenantId = AuthUtil.getTenantId(); @@ -206,13 +213,20 @@ @Override public UserInfo userInfo(String tenantId, String account) { - User user = baseMapper.getUser(tenantId, account); + User user = baseMapper.getUser(tenantId, account,null); return buildUserInfo(user); } @Override + public UserInfo userInfo(String tenantId, String account,String name) { + User user = baseMapper.getUser(tenantId, account,name); + UserInfo userInfo = buildUserInfo(user); + return null; + } + + @Override public UserInfo userInfo(String tenantId, String account, UserEnum userEnum) { - User user = baseMapper.getUser(tenantId, account); + User user = baseMapper.getUser(tenantId, account,null); return buildUserInfo(user, userEnum); } diff --git a/Source/UBCS/ubcs-service/ubcs-user/src/main/resources/mapper/UserMapper.xml b/Source/UBCS/ubcs-service/ubcs-user/src/main/resources/mapper/UserMapper.xml index 89d7627..2229dba 100644 --- a/Source/UBCS/ubcs-service/ubcs-user/src/main/resources/mapper/UserMapper.xml +++ b/Source/UBCS/ubcs-service/ubcs-user/src/main/resources/mapper/UserMapper.xml @@ -77,7 +77,11 @@ LEFT JOIN PL_SYS_USER_PWDSTRATEGY plup on plup.USER_ID=pou.ID LEFT JOIN PL_SYS_PWDSTRATEGY pss on pss.ID=plup.PWDSTRATEGY_ID WHERE - tenant_id = #{param1} and account = #{param2} and is_deleted = 0 + tenant_id = #{param1} and account = #{param2} + <if test="param3!=null and param3 != ''"> + and name = #{param3} + </if> + and is_deleted = 0 </select> <select id="exportUser" resultType="com.vci.ubcs.system.user.excel.UserExcel"> -- Gitblit v1.9.3