package com.usky.oa.service;

import com.usky.common.core.bean.CommonPage;
import com.usky.common.log.annotation.Log;
import com.usky.common.log.enums.BusinessType;
import com.usky.oa.domain.OaFormDefinition;
import com.usky.common.mybatis.core.CrudService;
import com.usky.oa.service.vo.OaFormNameResponseVO;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 表单定义表 服务类
 * </p>
 *
 * @author fu
 * @since 2024-12-10
 */
public interface OaFormDefinitionService extends CrudService<OaFormDefinition> {

    /**
     * 新增/更新 表单
     * @param oaFormDefinition
     */
    void addForm(OaFormDefinition oaFormDefinition);

    /**
     * 删除表单
     * @param formId
     */
    void delForm(Integer formId);

    /**
     * 分页查询表单列表
     * @param formName 表单名称
     * @param pageNum 页码
     * @param pageSize 页大小
     * @return
     */
    CommonPage<OaFormDefinition> pageList(Integer formId, String formName, Integer formGroup, Integer formStatus, Integer pageNum, Integer pageSize);

    /**
     * 更新表单状态并校验
     * @param formId
     * @param formStatus
     */
    void validUpdateStatus(Integer formId, Integer formStatus);

    /**
     * @description: 根据表单标识查询表单信息-数据权限
     * @author: fyc
     * @email yuchuan.fu@chinausky.com
     * @date: 2025/1/3 14:07
     * @param: [formSign]
     * @return: java.util.List<com.usky.oa.domain.OaFormDefinition>
     **/
    List<OaFormDefinition> selectByScope(String formSign);

    /**
     * @description: 获取表单名称列表
     * @author: fyc
     * @email yuchuan.fu@chinausky.com
     * @date: 2025/1/3 14:07
     * @param: []
     * @return: java.util.Map<java.lang.Integer,java.lang.String>
     **/
    List<OaFormNameResponseVO> getFormName(String formSign, String formName, Integer formId);

}
