package com.boco.nbd.wios.flow.service;

import com.boco.nbd.framework.persistence.IBaseDaoService3;
import com.boco.nbd.wios.flow.entity.bo.*;
import com.boco.nbd.wios.flow.entity.po.FlowNodePO;
import com.boco.nbd.wios.flow.entity.po.FlowNodeUserPO;
import com.boco.nbd.wios.flow.entity.po.NodePO;
import com.boco.nbd.wios.flow.entity.po.VendorPO;
import com.boco.nbd.wios.flow.entity.qo.NodeQo;

import java.util.List;

/**
 * @author:cao hai
 * @date:2022/6/22 16:18
 * @version:V1.0
 * @description:INodeService
 * @modify:
 */
public interface INodeService extends IBaseDaoService3<NodePO> {

    /**
     * 核查Node
     *
     * @param po
     * @return
     */
    boolean checkNode(NodePO po);

    /**
     * 查询节点数据
     *
     * @param qo
     * @return
     */
    List<NodeVO> searchNode(NodeQo qo);


    /**
     * 获取流程节点配置的用户组
     *
     * @param nodeId
     * @return
     */
    List<NodeGroupBO> getNodeGroupsInfo(Long nodeId);

    /**
     * 更新节点配置的用户组
     *
     * @param vo
     */
    void updateGroupNode(NodeGroupVO vo);

    /**
     * 根据流程ID与节点id查数据
     *
     * @param flowCode
     * @param nodeCode
     * @return
     */
    FlowNodePO selectDataByFlowAndNode(String flowCode, String nodeCode);


    /**
     * 更新用户组绑定用户
     *
     * @param groupId
     * @param userIds
     * @return
     */
    boolean updateGroupUsers(Long groupId, String userIds);

    /**
     * 加载用户
     *
     * @param groupId
     * @param vendorId
     * @return
     */
    List<UserVO> loadUsers(Long groupId,Integer vendorId);

    /**
     * 获取厂家信息
     *
     * @return
     */
    List<VendorPO> getSelectVendorInfo();

    /**
     * 加载节点用户信息
     *
     * @param nodeCode
     * @param vendorId
     * @param userName
     * @return
     */
    List<FlowNodeUserPO> getFlowNodeUserInfo(Integer nodeCode, Integer vendorId, String userName);


    /**
     * 获取首联配置信息
     *
     * @return
     */
    List<ConnectConfigBO> getConnectConfig();

    /**
     * 首联配置信息
     *
     * @param item
     */
    void saveConnectConfig(ConnectConfigBO item);

    /**
     * 获取首联人
     *
     * @param id:工单
     * @param oemId:主机厂Id
     * @return
     */
    ConnectUserConfigBO getConnectUser(String id, Integer oemId);

}