package com.zcxk.charge.web.service;


import com.zcxk.charge.api.vo.DeviceWaterSupplyVo;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
/**
 * @author Andy
 **/
public interface AppPageReportService {

    /**
    * App数据总览-生产数据-前N个月的售水量
    * @author Andy
    * @date 16:58 2021/8/13
    * @param companyOrgId:
    * @param month:
    * @return java.util.List<com.zcxk.charge.api.vo.DeviceWaterSupplyVo>
    **/
    List<DeviceWaterSupplyVo> deviceSellerWaterReportForMonth(Integer companyOrgId, Integer month);

    /**
    * App数据总览-营收数据-前N个月的营收金额
    * @author Andy
    * @date 16:58 2021/8/13
    * @param companyOrgId:
    * @param month:
    * @return java.util.List<com.zcxk.charge.api.vo.DeviceWaterSupplyVo>
    **/
    List<DeviceWaterSupplyVo> deviceSellerAmountReportForMonth(Integer companyOrgId, Integer month);

    /**
    * App数据总览-生产数据-前N个月的去取水量（水源：4）前N个月的去制水量（水厂：3）
    * @author Andy
    * @date 16:58 2021/8/13
    * @param companyOrgId:
    * @param sceneType:
    * @param parmType:
    * @param month:
    * @return java.util.List<com.zcxk.charge.api.vo.DeviceWaterSupplyVo>
    **/
    List<DeviceWaterSupplyVo> deviceWaterReportForMonth(Integer companyOrgId, String sceneType, Integer parmType, Integer month);

    /**
    * deviceWaterReportForDay
    * @author Andy
    * @date 18:46 2021/8/17
    * @param companyOrgId:
    * @param sceneType:
    * @param parmType:
    * @param day:
    * @return java.util.List<com.zcxk.charge.api.vo.DeviceWaterSupplyVo>
    **/
    List<DeviceWaterSupplyVo> deviceWaterReportForDay(Integer companyOrgId, String sceneType, Integer parmType, Integer day);

    /**
    * calculationComparison2
    * @author Andy
    * @date 18:47 2021/8/17
    * @param comparisonList:
    * @param type:
    * @return java.math.BigDecimal
    **/
    BigDecimal calculationComparison2(List<DeviceWaterSupplyVo> comparisonList, int type);

    /**
    * findSceneAmount
    * @author Andy
    * @date 18:47 2021/8/17
    * @param companyOrgId:
    * @param months:
    * @return java.util.List<java.util.Map<java.lang.String,java.lang.Object>>
    **/
    List<Map<String,Object>> findSceneAmount(Long companyOrgId, Integer months);

    /**
    * 计算产销差
    * @author Andy
    * @date 16:29 2021/8/16
    * @param supplyWaterList:
    * @param makingWaterList:
    * @param sellerWaterList:
    * @param map:
    * @return void
    **/
    void calculationNrw(List<DeviceWaterSupplyVo> supplyWaterList, List<DeviceWaterSupplyVo> makingWaterList, List<DeviceWaterSupplyVo> sellerWaterList, Map<String, Object> map);
}
