package com.jwipc.inquiry.logic;

import com.jwipc.inquiry.dto.InquiryTemplateDTO;
import com.jwipc.inquiry.dto.InquiryTemplateFieldDTO;
import com.jwipc.inquiry.model.query.InquiryTemplateFieldQuery;
import com.jwipc.inquiry.model.query.InquiryTemplateQuery;
import com.jwipc.page.PageView;

import java.util.List;

/**
 * @author shenyang.ou
 * @date 2024/2/4 19:51
 * @desc 询价模板
 */
public interface InquiryTemplateLogic {
    PageView findByPage(InquiryTemplateQuery query);

    InquiryTemplateDTO getById(Long id);

    /**
     * 获取系统默认字段(新增用)
     * @return 字段
     */
    List<InquiryTemplateFieldDTO> getTemplateField(InquiryTemplateFieldQuery query);

    /**
     * 根据模板id和模板字段分组获取模板字段(编辑用)
     * @param templateId 模板id
     * @param fieldGroup 模板字段分组；0-基础字段；1-基础扩展；2-阶梯报价；3-自定义扩展字段
     * @return 字段
     */
    List<InquiryTemplateFieldDTO> getFieldByTemplateIdAndFieldGroup(Long templateId,Integer fieldGroup);

    /**
     * 根据模板编码和模板字段分组获取模板字段(查询模板字段用)
     * @param templateCode 模板编码
     * @param fieldGroup 模板字段分组；0-基础字段；1-基础扩展；2-阶梯报价；3-自定义扩展字段
     * @param supplierLookFlag 供应商显示；0-否；1-是；(null则不查)
     * @return 字段
     */
    List<InquiryTemplateFieldDTO> getFieldByTemplateCodeAndFieldGroup(String templateCode,Integer fieldGroup,Integer supplierLookFlag);

    void saveOrUpdate(InquiryTemplateDTO param);

    void updateDeleteFlag(Long id);

    /**
     * 根据采购组编码获取询价模板且包含全部采购组
     * @param purchaseGroupCode 采购组编码
     */
    List<InquiryTemplateDTO> getAllListByPurchaseGroupCode(String purchaseGroupCode);

    /**
     * 根据模板编码获取供应商显示和编辑字段
     * @param templateCode 模板编码
     * @return 字段
     */
    List<InquiryTemplateFieldDTO> getSupplierFieldByTemplateCode(String templateCode);

    /**
     * 根据模板编码获取定价显示字段
     * @param templateCode 模板编码
     * @return 字段
     */
    List<InquiryTemplateFieldDTO> getFixFieldByTemplateCode(String templateCode);

    List<InquiryTemplateDTO> listAll(InquiryTemplateQuery query);
}
