package com.steerinfo.meterwork.meterworkcaractualfirstbak.service;


import com.steerinfo.meterwork.meterworkcaractualbak.model.MeterWorkCarActualBak;
import com.steerinfo.meterwork.meterworkcaractualfirstbak.model.MeterWorkCarActualFirstBak;
import com.steerinfo.framework.controller.RESTfulResult;
import com.steerinfo.framework.service.IBaseService;
import com.steerinfo.framework.service.pagehelper.PageList;
import com.steerinfo.metermonitor.metermonitornote.model.MeterMonitorNote;
import com.steerinfo.meterwork.dto.*;
import com.steerinfo.meterwork.meterworkprelink.model.MeterWorkPreLink;
import com.steerinfo.pretrack.pretrackscale.model.PreTrackScale;

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

/**
 * MeterWorkCarActualFirstBak服务接口：
 * @author generator
 * @version 1.0-SNAPSHORT 2020-09-17 11:28
 * 类描述
 * 修订历史：
 * 日期：2020-09-17
 * 作者：generator
 * 参考：
 * 描述：MeterWorkCarActualFirstBak服务接口
 * @see null
 * @Copyright 湖南视拓信息技术股份有限公司. All rights reserved.
 */
public interface IMeterWorkCarActualFirstBakService extends IBaseService<MeterWorkCarActualFirstBak, String> {
    RESTfulResult checkandadd(MeterWorkCarActualFirstBak model, MeterMonitorNote note)  throws Exception;

    int checkandupdate(MeterWorkCarActualFirstBak model);

    int checkcarandupdate(MeterWorkCarActualFirstBak model);

    RESTfulResult firstDataSupplement(MeterWorkCarActualFirstBak model);

    int audit(MeterWorkCarActualFirstBak model);

    int abolish(List<MeterWorkCarActualFirstBak> models);

    int recover(List<MeterWorkCarActualFirstBak> models);

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

    int remove(List<MeterWorkCarActualFirstBak> models);

    RESTfulResult match(String actualFirstNo, String predictionNo);

    int unaudit(MeterWorkCarActualFirstBak model);

    PageList<MeterWorkCarActualFirstBak> selectTa(Map<String, Object> parmas, String weightType, Integer pageNum, Integer pageSize);

    PageList<MeterWorkCarActualFirstBak> selectNet(String weightType, String carNo, Integer pageNum, Integer pageSize);

    PageList<StaffPerformanceAnalysis> analysis(String startTime, String endTime,Integer pageNum, Integer pageSize);

    PageList<UtensilDto> utensil(String startTime, String endTime,Integer pageNum, Integer pageSize);

    List<MeterTypeDto> meterType(String baseSpotNo, String startTime, String endTime);

    List<TimesDto> daily(String baseSpotNo, String startTime, String endTime);

    List<TimesDto> period(String baseSpotNo, String startTime, String endTime);

    List<MeterWorkCarActualFirstBak> detailed(String times, String num);

    PageList<AbnormalDto> abnormal(String baseSpotNo, String startTime, String endTime,Integer pageNum, Integer pageSize);

    PageList<MeterWorkCarActualFirstBak> getByAbnormal(String meterReasonNo, String meterReasonName, Integer pageNum, Integer pageSize);

    RESTfulResult doQueryWf(MeterWorkCarActualFirstBak oci);

    RESTfulResult queryFirst(String carNo);

    RESTfulResult doUpdateWf(MeterWorkCarActualFirstBak oci);

    RESTfulResult doAddNetHZHX(MeterWorkCarActualFirstBak secondDb, MeterWorkCarActualBak netDb, MeterWorkCarActualFirstBak onceDb, MeterMonitorNote note) throws Exception;

    RESTfulResult doAddInnerWf(MeterWorkCarActualFirstBak oci, String saveTare, MeterMonitorNote note) throws Exception;

    RESTfulResult doNetAddMuchGross(List<MeterWorkCarActualFirstBak> gross, MeterWorkCarActualFirstBak tare, MeterMonitorNote note) throws Exception;

    RESTfulResult doNetAddMuch(MeterWorkCarActualFirstBak actualFirst) throws Exception;

    RESTfulResult doAddNetInnerWf(MeterWorkCarActualFirstBak secondDb, MeterWorkCarActualBak netDb, String saveTare, MeterMonitorNote note) throws Exception;

    RESTfulResult doAddNetNewHZHX(MeterWorkCarActualFirstBak secondDb, MeterWorkCarActualBak netDb, MeterWorkCarActualFirstBak once, String saveTare, MeterMonitorNote note) throws Exception;

    RESTfulResult doAddNetInnerWfError(MeterWorkCarActualFirstBak secondDb, MeterWorkCarActualBak netDb, String saveTare, MeterMonitorNote note) throws Exception;

    RESTfulResult doAddWf(MeterWorkCarActualFirstBak oci, MeterWorkPreLink link, String isLock, String saveTare, MeterMonitorNote note) throws Exception;

    RESTfulResult doAddNetWf(MeterWorkCarActualFirstBak secondDb, MeterWorkCarActualBak netDb, MeterMonitorNote note, MeterWorkPreLink link, String isLock, String saveTare) throws Exception;

    String encryption(String str) throws Exception;
    String encryptionTest(String str) throws Exception;
    RESTfulResult decryptionTest(String str) throws Exception;

    RESTfulResult doAddNetByTermWf(MeterWorkCarActualFirstBak one, MeterWorkCarActualBak two, MeterMonitorNote three);

    RESTfulResult doNetTermTare(MeterWorkCarActualFirstBak actualFirst, MeterWorkCarActualBak netDb, String saveTare) throws Exception;

    //按照时间排序
    PageList<MeterWorkCarActualFirstBak> queryOrderByTime(HashMap parmas, Integer pageNum, Integer pageSize);

    RESTfulResult doAddLianDaWf(MeterWorkCarActualFirstBak one, MeterMonitorNote two) throws Exception;

//    RESTfulResult doNetMass(MeterWorkCarActualFirstBak one, MeterWorkCarActualBak two, PreTrackScale three, PreTrackScale four) throws Exception;

    RESTfulResult doNetAddTwo(MeterWorkCarActualFirstBak one, MeterWorkCarActualBak two, PreTrackScale three, PreTrackScale four) throws Exception;

    RESTfulResult doAddNetLianDaWf(MeterWorkCarActualFirstBak one, MeterWorkCarActualBak two, MeterMonitorNote three) throws Exception;

    RESTfulResult doAddNetDouble(MeterWorkCarActualFirstBak secondDb, MeterWorkCarActualBak netDb1, MeterMonitorNote note, MeterWorkCarActualBak netDb2) throws Exception;

    RESTfulResult doCraneDbWf(MeterWorkCarActualFirstBak one, MeterMonitorNote two) throws Exception;

    RESTfulResult doCraneNetDbWf(MeterWorkCarActualFirstBak one, MeterWorkCarActualBak two, MeterMonitorNote three) throws Exception;

    //根据传入时间和车号，查询给定时间段去重车号
//    List<String> distinctCarNo(String carNo, String startTime, String endTime,String baseSpotNo,String matterName,String predictionNo,String forwardingUnitName,String receivingUintName,String valueFlag);
    List<String> distinctCarNo(HashMap<String, Object> params);

    String mixedLoading(String actualNo1, String actualNo2,String actualNo3, String predictionNo1,String predictionNo2);

    String mixedDischarge(String actualNo1, String actualNo2,String actualNo3, String predictionNo1,String predictionNo2);

    RESTfulResult doubleEntrustmentMatch(String actualNo1, String actualNo2, String predictionNo1, String predictionNo2);

    RESTfulResult addEmergency(List<MeterWorkCarActualFirstBak> meterWorkCarActualFirstBaks)  throws Exception;
    RESTfulResult addFirstEmergency(MeterWorkCarActualFirstBak meterWorkCarActualFirstsBak)  throws Exception;
    RESTfulResult doNetEmergency(MeterWorkCarActualBak meterWorkCarActualBak)  throws Exception;

    PageList<MeterWorkCarActualFirstBak> likeByDesc(Map<String, Object> var1, Integer pageNum, Integer pageSize);
    PageList<MeterWorkCarActualFirstBak> ApplikeByDesc(Map<String, Object> var1, Integer pageNum, Integer pageSize);


    List<MeterWorkCarActualFirstBak> queryForTimeInterval(Map<String, Object> var1);
    RESTfulResult doNetByFirst(MeterWorkCarActualFirstBak grossModel, MeterWorkCarActualFirstBak tareModel, PreTrackScale scale);

    RESTfulResult furConversion(HashMap<String, Object> params);
    RESTfulResult doNetByTermData(HashMap<String, Object> params);

    RESTfulResult batchCheckAdd(List<MeterWorkCarActualFirstBak> models);

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

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

    RESTfulResult addFirstEmergencyList(List<MeterWorkCarActualFirstBak> model) throws Exception;

    List<MeterWorkCarActualFirstBak> likeByDescNoPage(HashMap parmas);
}
