/* * 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.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.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.*; /** * 工作流服务实现类 * * @author wang1 */ @Slf4j @Service @AllArgsConstructor public class FlowTaskUserServiceImpl extends ServiceImpl implements FlowTaskUserService { private FlowEngineService flowEngineService; private FlowTaskUserMapper flowTaskUserMapper; /** * 查询当前登陆人对这个流程的taskUser * @return */ @Override public FlowTaskUserC getUser(){ QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("CREATED_BY", AuthUtil.getUserId()); List flowTaskUsers = baseMapper.selectList(queryWrapper); FlowTaskUserC flowTaskUserCR = new FlowTaskUserC(); if(flowTaskUsers.size()==0){ return flowTaskUserCR; } flowTaskUserCR.setName(flowTaskUsers.get(0).getName());//收藏名称 flowTaskUserCR.setFlowTaskUsers(flowTaskUsers); return flowTaskUserCR; } @Override public void saveOrUpdateUser(FlowTaskUserC flowTaskUserC){ List flowTaskUsers = flowTaskUserC.getFlowTaskUsers(); String name = flowTaskUserC.getName();//收藏名称 //新增情况下验证收藏名称不重复 if(flowTaskUsers.get(0).getId()!=null) { Map 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("收藏名称已经存在!"); } } for (FlowTaskUser flowTaskUseri:flowTaskUsers){ flowTaskUseri.setName(name); } //新增、修改 this.saveOrUpdateBatch(flowTaskUsers); } @Override public void deleteUser(String name){ Map m = new HashMap<>(); m.put("name", name); m.put("created_by", AuthUtil.getUserId()); baseMapper.deleteByMap(m); } }