/*
 * Copyright [2022] [https://www.xiaonuo.vip]
 *
 * Snowy采用APACHE LICENSE 2.0开源协议，您在使用过程中，需要注意以下几点：
 *
 * 1.请不要删除和修改根目录下的LICENSE文件。
 * 2.请不要删除和修改Snowy源码头部的版权声明。
 * 3.本项目代码可免费商业使用，商业使用请保留源码和相关描述文件的项目出处，作者声明等。
 * 4.分发源码时候，请注明软件出处 https://www.xiaonuo.vip
 * 5.不可二次分发开源参与同类竞品，如有想法可联系团队xiaonuobase@qq.com商议合作。
 * 6.若您的项目无法满足以上几点，需要更多功能代码，获取Snowy商业授权许可，请在官网购买授权，地址为 https://www.xiaonuo.vip
 */
package com.unis.basic.info.modular.grainPriceCollectCitySum.mapper;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.unis.basic.info.modular.grainPriceCollectCitySum.entity.GrainPriceCollectCitySum;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

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

/**
 * 市级粮食价格采集汇总Mapper接口
 *
 * @author TS
 * @date  2024/04/03 10:36
 **/
public interface GrainPriceCollectCitySumMapper extends BaseMapper<GrainPriceCollectCitySum> {
    /**
     *获取当前市州本周上报站点数据(只查询待审核数据，驳回数据在在修改之后状态变化待审核)
     * @param orgId
     * @param auditStatus
     * @param monday
     * @param sunday
     * @return
     */
    @Select("SELECT a.id as \"id\",a. NAME AS \"name\",IF(IFNULL(b.audit_status,'-1') = '-1','-1',CONCAT(b.audit_status,'')) AS \"status\"  FROM  biz_price_monitor  a LEFT JOIN biz_grain_price_collect b ON b.price_monitor_id = a.id and date_format(user_collect_date,'%Y-%m-%d') BETWEEN #{monday} and #{sunday} " +
            " WHERE a.sys_org_id = #{orgId}" +
            " and IFNULL(b.audit_status,0) in (${auditStatus}) ")
    List<Map<String,Object>> getMonitors(@Param("orgId") String orgId,@Param("auditStatus") String auditStatus,@Param("monday") String monday,@Param("sunday") String sunday);

    /**
     * 取得本市州本期间内同粮油不同价格类型平均值
     * @param orgId
     * @param type
     * @param monday
     * @param sunday
     * @return
     */
    List<Map<String,Object>> getAvgPrice(@Param("orgId") String orgId,
                                         @Param("type") String type,
                                         @Param("monday") String monday,
                                         @Param("sunday") String sunday
                                         );

    /**
     * 取得本市州上一期间内同粮油同类型价格值，以便比较
     * @param orgId
     * @param type
     * @param monday
     * @param sunday
     * @param priceType
     * @param firstLevel
     * @param secondLevel
     * @param threeLevel
     * @return
     */
    List<Map<String,Object>> getOffAvgPrice(@Param("orgId") String orgId,
                                         @Param("type") String type,
                                         @Param("monday") String monday,
                                         @Param("sunday") String sunday,
                                         @Param("priceType") String priceType,
                                         @Param("firstLevel") String firstLevel,
                                         @Param("secondLevel") String secondLevel,
                                         @Param("threeLevel") String threeLevel
                                         );
    /**
     * 自定义sql分页
     * @param page
     * @param queryWrapper 看这里看这里，如果自定义的方法中需要用到wrapper查询条件，需要这样写
     * @return
     */
    IPage<Map<String,Object>> selectMyMapsPage(Page<GrainPriceCollectCitySum> page, @Param(Constants.WRAPPER)QueryWrapper<GrainPriceCollectCitySum> queryWrapper);

    /**
     * 通过条件修改价格采集对应的市级汇总表Id
     * @param orgId
     * @param monday
     * @param sunday
     */
    void updateGrainPriceCollect(@Param("orgId")String orgId,@Param("cityId") String cityId,@Param("monday")String monday,@Param("sunday")String sunday);
}
