package com.steerinfo.meterwork.meterworkcaractualbak.service;

import com.steerinfo.meterwork.meterworkcaractualbak.model.MeterWorkCarActualBak;
import com.steerinfo.framework.controller.RESTfulResult;
import com.steerinfo.framework.service.IBaseService;
import com.steerinfo.framework.service.pagehelper.PageList;
import com.steerinfo.meterwork.meterworkcaractualfirstbak.model.MeterWorkCarActualFirstBak;
import com.steerinfo.util.CommonPage;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;

/**
 * MeterWorkCarActualBak服务接口：
 * @author generator
 * @version 1.0-SNAPSHORT 2020-09-17 11:03
 * 类描述
 * 修订历史：
 * 日期：2020-09-17
 * 作者：generator
 * 参考：
 * 描述：MeterWorkCarActualBak服务接口
 * @see null
 * @Copyright 湖南视拓信息技术股份有限公司. All rights reserved.
 */
public interface IMeterWorkCarActualBakService extends IBaseService<MeterWorkCarActualBak, String>{

    int checkandadd(MeterWorkCarActualBak model);

    int checkandadditional(MeterWorkCarActualBak model);

    RESTfulResult supplementaryData(MeterWorkCarActualBak model);

    int audit(MeterWorkCarActualBak model);

    int unaudit(MeterWorkCarActualBak model);

    int publish(MeterWorkCarActualBak model);

    int revocation(MeterWorkCarActualBak model);

    int updateCar(MeterWorkCarActualBak model);

    int cancel(MeterWorkCarActualBak model);

    int manualInput (MeterWorkCarActualBak model);

    RESTfulResult matchPrediction(String actualNo, String predictionNo, String note);

    MeterWorkCarActualBak cleanPrediction(MeterWorkCarActualBak model);

    PageList<MeterWorkCarActualBak> selectView(Map<Objects,String> parmas, Integer pageNum, Integer pageSize);

    MeterWorkCarActualBak clean(String actualFirstNo, String dataNo, String predictionNo, String note);

    int remove(List<MeterWorkCarActualBak> models);

    public int removeButNotEntrust(List<MeterWorkCarActualBak> models);

    RESTfulResult specialRemove(HashMap map);
    RESTfulResult commonRemove(HashMap map);

    MeterWorkCarActualBak termclean(String actualFirstNo, String dataNo);

    RESTfulResult doQueryWf(CommonPage<MeterWorkCarActualBak> oci);

    RESTfulResult dataConversionOfCar();

    /*按合同号，新增单包计量/驻外检测数据*/
    MeterWorkCarActualBak insertByNotice(MeterWorkCarActualBak actual);

    /*转换火车实绩到汽车实绩表中*/
    MeterWorkCarActualBak conversionTrainToCar(String predictionNo, String actualNo);

    /*按预报编号，新增单包计量/驻外检测数据*/
    MeterWorkCarActualBak insertByScale(MeterWorkCarActualBak actual);

    //批量修改单包计量数据
    int updateByDanBao(List<MeterWorkCarActualBak> models);

    //批量修改驻外检测的计量数据
    int updateByZhuWai(List<MeterWorkCarActualBak> models);

    //根据传入时间和车号，查询给定时间段去重车号
    List<String> distinctCarNo(HashMap<String, Object> params);

    // 根据传入的一次计量数据和结净数据实体进行结净操作
    MeterWorkCarActualBak clientClean(MeterWorkCarActualFirstBak first, MeterWorkCarActualBak net);
    //根据实绩id获取一次计量信息和委托信息
    RESTfulResult firstAndEntrustById(String actualNo);

    PageList<MeterWorkCarActualBak> likeByDesc(HashMap<String, Object> params, Integer pageNum, Integer pageSize);

    RESTfulResult abolish(List<MeterWorkCarActualBak> models);

    RESTfulResult selectByMap(HashMap<String, Object> params);
    RESTfulResult findPictureByActualNo(String actualNo);

    //内倒车辆复制到一次表
    void ndCopyToActual(List<String> ids,String carNo) throws Exception;

    //外进外发车辆复制到一次表
    void wwCopyToActual(List<String> ids,String carNo) throws Exception;

    List<MeterWorkCarActualBak> likeByDescNoPage(HashMap params);
}
