package com.fs.company.service;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

import com.fs.common.core.domain.R;
import com.fs.company.domain.Company;
import com.fs.company.param.CompanyParam;
import com.fs.company.vo.CompanyCrmVO;
import com.fs.company.vo.CompanyNameVO;
import com.fs.company.vo.CompanyVO;
import com.fs.store.domain.FsStoreOrder;
import com.fs.store.domain.FsStorePayment;
import com.fs.his.vo.OptionsVO;

/**
 * 企业Service接口
 *
 * @author fs
 * @date 2021-10-04
 */
public interface ICompanyService
{
    List<OptionsVO> selectAllCompanyList() ;
    /**
     * 查询企业
     *
     * @param companyId 企业ID
     * @return 企业
     */
    public Company selectCompanyById(Long companyId);

    /**
     * 查询企业列表
     *
     * @param company 企业
     * @return 企业集合
     */
    public List<Company> selectCompanyList(Company company);

    /**
     * 新增企业
     *
     * @param company 企业
     * @return 结果
     */
    public R insertCompany(Company company);

    /**
     * 修改企业
     *
     * @param company 企业
     * @return 结果
     */
    public int updateCompany(Company company);

    /**
     * 批量删除企业
     *
     * @param companyIds 需要删除的企业ID
     * @return 结果
     */
    public int deleteCompanyByIds(Long[] companyIds);

    /**
     * 删除企业信息
     *
     * @param companyId 企业ID
     * @return 结果
     */
    public int deleteCompanyById(Long companyId);

    List<CompanyVO> selectCompanyVOList(CompanyParam param);

    List<CompanyNameVO> selectCompanyNameVOList(CompanyParam param);


    List<CompanyCrmVO> selectCompanyCrmDayCountList(CompanyParam param);

    Integer selectCompanyCount();

    void addCompanyTuiMoney(FsStoreOrder order);



    void addCompanyMoney(FsStoreOrder order);

    void subCompanyMoney(FsStoreOrder order);

    Company selectCompanyByAppId(String appId);

    void resetMoney(Long companyId);

    void addCompanyPaymentMoney(FsStorePayment storePayment);

    void subCompanyPaymentMoney(FsStorePayment payment);

    String selectOmsCodeByCompanyId(Long companyId);

    void updateOmsCodeByCompanyIds(List<Long> companyIds,String omsCode);

    List<Long> selectCompanyByOmsCode(String omsCode);

    Company selectCompanyByIdForUpdate(Long companyId);

    void updateMoney(Long companyId, BigDecimal money);

    void configUserCheck(Long companyId, Integer userIsDefaultBlack);
}
