///* // * 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 org.springblade.flow.demo.leave.service.impl; // //import lombok.AllArgsConstructor; //import lombok.extern.slf4j.Slf4j; //import org.springblade.core.log.exception.ServiceException; //import org.springblade.core.mp.base.BaseServiceImpl; //import org.springblade.core.secure.utils.AuthUtil; //import org.springblade.core.tool.support.Kv; //import org.springblade.core.tool.utils.DateUtil; //import org.springblade.core.tool.utils.Func; //import org.springblade.flow.business.service.IFlowService; //import org.springblade.flow.core.constant.ProcessConstant; //import org.springblade.flow.core.entity.BladeFlow; //import org.springblade.flow.core.utils.FlowUtil; //import org.springblade.flow.core.utils.TaskUtil; //import org.springblade.flow.demo.leave.entity.ProcessLeave; //import org.springblade.flow.demo.leave.mapper.LeaveMapper; //import org.springblade.flow.demo.leave.service.ILeaveService; //import org.springframework.stereotype.Service; //import org.springframework.transaction.annotation.Transactional; // ///** // * 服务实现类 // * // * @author Chill // */ //@Slf4j //@Service //@AllArgsConstructor //public class LeaveServiceImpl extends BaseServiceImpl implements ILeaveService { // // private final IFlowService flowService; // // @Override // @Transactional(rollbackFor = Exception.class) // public boolean startProcess(ProcessLeave leave) { // String businessTable = FlowUtil.getBusinessTable(ProcessConstant.LEAVE_KEY); // if (Func.isEmpty(leave.getId())) { // // 保存leave // leave.setApplyTime(DateUtil.now()); // save(leave); // // 启动流程 // Kv variables = Kv.create() // .set(ProcessConstant.TASK_VARIABLE_CREATE_USER, AuthUtil.getUserName()) // .set("taskUser", TaskUtil.getTaskUser(leave.getTaskUser())) // .set("days", DateUtil.between(leave.getStartTime(), leave.getEndTime()).toDays()); // BladeFlow flow = flowService.startProcessInstanceById(leave.getProcessDefinitionId(), FlowUtil.getBusinessKey(businessTable, String.valueOf(leave.getId())), variables); // if (Func.isNotEmpty(flow)) { // log.debug("流程已启动,流程ID:" + flow.getProcessInstanceId()); // // 返回流程id写入leave // leave.setProcessInstanceId(flow.getProcessInstanceId()); // updateById(leave); // } else { // throw new ServiceException("开启流程失败"); // } // } else { // // updateById(leave); // } // return true; // } // //}