| | |
| | | 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.dto.FlowTaskDTO; |
| | | import com.vci.ubcs.flow.core.entity.FlowTaskUser; |
| | | import com.vci.ubcs.flow.core.entity.ProcessTemplate; |
| | | 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.*; |
| | | |
| | | /** |
| | |
| | | |
| | | private FlowEngineService flowEngineService; |
| | | private FlowTaskUserMapper flowTaskUserMapper; |
| | | private ProcessTemplateMapper processTemplateMapper; |
| | | |
| | | /** |
| | | * 查询当前登陆人对这个流程的taskUser |
| | | * @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<FlowTaskDTO> 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()){ |
| | | FlowTaskDTO flowTaskUserCR = new FlowTaskDTO(); |
| | | 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<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();//收藏名称 |
| | | |
| | | //新增情况下验证收藏名称不重复 |
| | | 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); |
| | |
| | | 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); |
| | | } |
| | | } |