package org.dromara.work.service;

import com.github.yulichang.base.MPJBaseService;
import org.dromara.system.domain.bo.SysDeptBo;
import org.dromara.system.domain.bo.SysUserBo;
import org.dromara.work.domain.TpOrder;
import org.dromara.work.domain.bo.OrderRankingBo;
import org.dromara.work.domain.vo.DeptRankingVo;
import org.dromara.work.domain.vo.OrderDayListVo;
import org.dromara.work.domain.vo.PerCountVo;
import org.dromara.work.domain.vo.PerSumVo;

import java.util.List;

public interface IOrderService extends MPJBaseService<TpOrder> {

/**
     * 部门排行榜
     * @param bo
     * @return
     */
    List<DeptRankingVo> deptRankingList(SysDeptBo bo);

    /**
     * 部门排行榜
     * @param bo
     * @return
     */
    List<DeptRankingVo> deptRankingList1(SysDeptBo bo);

    List<DeptRankingVo> deptRankingJSList(SysDeptBo bo);

    List<DeptRankingVo> deptRankingJSList1(SysDeptBo bo);

    /**
     * 客服日统计
     * @param bo
     * @return
     */
    List<OrderDayListVo> kfDayList(OrderRankingBo bo, List<Long> userIds);

    /**
     * 分图月统计
     * @param bo
     * @param userIds
     * @return
     */
    List<OrderDayListVo> ftDayList(OrderRankingBo bo, List<Long> userIds);

    /**
     * 技术月统计
     * @param bo
     * @param userIds
     * @return
     */
    List<OrderDayListVo> jsDayList(OrderRankingBo bo, List<Long> userIds);

    /**
     * 业绩按月统计
     * @param month
     * @param deptId
     * @return
     */
    List<PerSumVo> monthArrivedPer(String month, Long deptId);

    /**
     * 业绩按年统计
     * @param year
     * @param deptId
     * @return
     */
    List<PerSumVo> yearArrivedPer(String year, Long deptId);

    /**
     * 订单类型统计
     * @param month
     * @param deptId
     * @return
     */
    List<PerCountVo> monthOrderType(String month, Long deptId);

    /**
     * 订单空间统计
     * @param month
     * @param deptId
     * @return
     */
    List<PerCountVo> monthOrderSpace(String month, Long deptId);

    /**
     * 订单风格统计
     * @param month
     * @param deptId
     * @return
     */
    List<PerCountVo> monthOrderStyle(String month, Long deptId);

    /**
     * 新老客户占比
     * @param month
     * @param deptId
     * @return
     */
    List<PerCountVo> newOldOrderPer(String month, Long deptId);

    /**
     * 更新订单部门信息
     * @param sysUserBo
     * @return
     */
    Boolean updateOrder(SysUserBo sysUserBo);
}
