package com.project.zcustom.service.unit;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;

import com.project.zcustom.controller.core.PageParamVo;
import com.project.zcustom.domain.addional.LargeProject;

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

/**
 * 工程项目Service接口
 *
 * @author change
 * @date 2024-12-30
 */
public interface ILargeProjectService extends IService<LargeProject> {

    /**
     * 分页查询工程项目列表
     *
     * @param largeProject 工程项目
     * @return 工程项目集合
     */
    public IPage<LargeProject> pagingLargeProjectList(LargeProject largeProject);

    /**
     * 分页查询工程项目列表
     *
     * @param lqw
     * @return 工程项目集合
     */
    public IPage<LargeProject> pagingLargeProjectList(PageParamVo pageParamVo, LambdaQueryWrapper<LargeProject> lqw);

    /**
     * 查询工程项目列表
     *
     * @param largeProject 工程项目
     * @return 工程项目集合
     */
    public List<LargeProject> selectLargeProjectList(LargeProject largeProject);

    /**
     * 查询工程项目列表
     *
     * @param largeProject 工程项目
     * @return 工程项目集合
     */
    public List<LargeProject> selectLargeProjectList(LargeProject largeProject,Long limitNum);

    /**
     * 根据指定字段查询信息
     *
     * @param field 字段名称
     * @param filedValue 字段值
     * @return 工程项目
     */
    public LargeProject getLargeProjectByField(String field, String filedValue);

    /**
     * 根据指定字段查询信息列表
     *
     * @param field 字段名称
     * @param filedValue 字段值
     * @return 工程项目
     */
    public List<LargeProject> selectLargeProjectListByField(String field, String filedValue);

    /**
     * 根据指定字段查询信息列表
     *
     * @param field 字段名称
     * @param filedValue 字段值
     * @return 工程项目
     */
    public List<LargeProject> selectLargeProjectListByField(String field, String filedValue,Long limitNum);

    /**
     *判断指定字段值是否存在
     *
     * @param field 字段名称
     * @param filedValue 字段值
     */
    public void checkFieldExist(String field, String filedValue,String tips,Long id);

    /**
     *  真删接口
     */
    public void reallyDeleteLargeProject(LambdaQueryWrapper<LargeProject> lqw);

    public Long getProjectNum(String appOrg);

    public List<LargeProject> getProjectNumX(String appOrg);

    public List<LargeProject> getProjectNumY(String appOrg);

    public List<LargeProject> getProjectByAppOrg(String appOrg);

    public List<LargeProject> getCameraNumList(String appOrg);

    public int getProjectNumThisWeek(String appOrg);

    public Map<String, Object> getProjectNumZ();
}
