/*
 * Author: wangjian
 * 生成ServiceImpl
 */
package com.tofly.flow.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;

import com.tofly.common.oauth.util.SecurityUtils;
import com.tofly.flow.dto.ProcessTemplateNodeInfoDto;
import com.tofly.flow.entity.ProcessInstance;
import com.tofly.flow.entity.ProcessInstanceNodeInfo;
import com.tofly.flow.entity.ProcessTemplateNode;
import com.tofly.flow.mapper.ProcessInstanceMapper;
import com.tofly.flow.mapper.ProcessTemplateNodeMapper;
import com.tofly.flow.service.ProcessInstanceService;
import com.tofly.flow.service.ProcessTemplateNodeService;

import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.io.FileUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.MultiValueMap;
import org.springframework.web.multipart.MultipartFile;

import java.io.*;
import java.util.*;
import java.util.stream.Collectors;

/**
 * ${comments}
 *
 * @author zhoux
 * @date Wed Mar 10 00:00:00 CST 2021
 */
@Service("processTemplateNodeService")
public class ProcessTemplateNodeServiceImpl extends ServiceImpl<ProcessTemplateNodeMapper, ProcessTemplateNode> implements ProcessTemplateNodeService {

	@Override
	@Transactional(rollbackFor = Exception.class)
	public Map<String, String> configTemplateNode(ProcessTemplateNodeInfoDto processTemplateNodeInfoDto) throws Exception {
		
		Map<String,String> returnMap =new HashMap<String,String>();
				
		ProcessTemplateNode processTemplateNode =  baseMapper.selectOne(Wrappers.<ProcessTemplateNode>lambdaQuery()
				.eq(ProcessTemplateNode::getProcessTemplateId,processTemplateNodeInfoDto.getProcessTemplateId())
				.eq(ProcessTemplateNode::getApprovalPersonId,processTemplateNodeInfoDto.getBeforeApprovalPersonId())
				.eq(ProcessTemplateNode::getProcessNodeAlias,processTemplateNodeInfoDto.getNodeAlias()));		
	
		if(null==processTemplateNode) {
			ProcessTemplateNode templateNodeInfo =new ProcessTemplateNode();
			
			templateNodeInfo.setApprovalPersonId(processTemplateNodeInfoDto.getApprovalPersonId());
			templateNodeInfo.setApprovalPersonName(processTemplateNodeInfoDto.getApprovalPersonName());
			templateNodeInfo.setApprovalType(processTemplateNodeInfoDto.getApprovalType());
			templateNodeInfo.setProcessNodeAlias(processTemplateNodeInfoDto.getNodeAlias());
			templateNodeInfo.setProcessNodeName(processTemplateNodeInfoDto.getNodeName());
			templateNodeInfo.setProcessTemplateId(processTemplateNodeInfoDto.getProcessTemplateId());
			templateNodeInfo.setSortNum(processTemplateNodeInfoDto.getNodeSortNum());
			
			
			baseMapper.insert(templateNodeInfo);		
		}else {
			ProcessTemplateNode templateNodeInfo =new ProcessTemplateNode();
			
			templateNodeInfo.setApprovalPersonId(processTemplateNodeInfoDto.getApprovalPersonId());
			templateNodeInfo.setApprovalPersonName(processTemplateNodeInfoDto.getApprovalPersonName());
			templateNodeInfo.setApprovalType(processTemplateNodeInfoDto.getApprovalType());
			templateNodeInfo.setProcessNodeAlias(processTemplateNodeInfoDto.getNodeAlias());
			templateNodeInfo.setProcessNodeName(processTemplateNodeInfoDto.getNodeName());
			templateNodeInfo.setProcessTemplateId(processTemplateNodeInfoDto.getProcessTemplateId());
			templateNodeInfo.setSortNum(processTemplateNodeInfoDto.getNodeSortNum());
			templateNodeInfo.setId(processTemplateNode.getId());
			baseMapper.updateById(templateNodeInfo);
		}			

			
		returnMap.put("flag", "true");
		returnMap.put("msg", "配置节点成功");

		return returnMap;
	}

	
	
}