package com.fjhx.service.check;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fjhx.base.Condition;
import com.fjhx.base.StorageBaseService;
import com.fjhx.entity.check.CheckInfo;
import com.fjhx.params.check.CheckDetailVo;
import com.fjhx.params.check.CheckInfoEx;

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

/**
 * <p>
 * 盘点 服务类
 * </p>
 *
 * @author ${author}
 * @since 2022-11-01
 */
public interface CheckInfoService extends StorageBaseService<CheckInfo> {

    /**
     * 自动盘点
     */
    void automaticCheck();

    /**
     * 盘点分页
     */
    Page<Map<String, Object>> getPage(Condition condition);

    /**
     * 提交盘点记录
     */
    void submit(CheckDetailVo checkDetailVo);

    /**
     * 库存管理盘点记录 按月统计
     */
    Map<String, Object> monthlyStatistics(Condition condition);

    /**
     * 根据年月获取盘点条数
     */
    Long getCount(Condition condition);

    /**
     * 按仓库统计盘点次数
     */
    List<Map<String, Object>> houseCount(Condition condition);

    /**
     * 按盘点类型统计盘点次数
     *
     * @return
     */
    Map<String, Object> typeCount(Condition condition);

    /**
     * 按盘点结果统计盘点次数
     */
    Map<String, Object> peopleCheckResultCount(Condition condition);

    /**
     * 分页
     */
    Page<Map<String, Object>> webPage(Condition condition);

    /**
     * 按盘点人统计盘点次数
     */
    List<Map<String, Object>> userCount(Condition condition);

    /**
     * 异常标签工艺类型统计
     */
    List<Map<String, Object>> errorTagTechnologyTypeCount(Condition condition);

    /**
     * 异常标签用途统计
     */
    List<Map<String, Object>> errorTagPurposeCount(Condition condition);

    /**
     * 异常标签处理类型统计
     */
    List<Map<String, Object>> errorTagHandleTypeCount(Condition condition);

    /**
     * 异常标签分页
     */
    Page<Map<String, Object>> errorTagPage(Condition condition);

    /**
     * 异常物料类型
     */
    List<String> errorMaterialPurpose(Condition condition);

    /**
     * 异常物料分页
     */
    Page<Map<String, Object>> errorMaterialPage(Condition condition);

    /**
     * 异常物料标签分页
     */
    Page<Map<String, Object>> errorMaterialTagPage(Condition condition);

    /**
     * 盘点结果统计
     */
    Map<String, Object> checkResultStatistics(Condition condition);

    /**
     * 查看物料分页
     */
    Page<Map<String, Object>> materialDetailPage(Condition condition);

    /**
     * 发起人工盘点
     */
    void initiateManualCounting(CheckInfoEx checkInfoEx);

}
