package cn.iocoder.yudao.module.inspection.service;

import cn.iocoder.yudao.module.label.vo.LabelPageReqVO;
import cn.iocoder.yudao.module.label.vo.LabelRespVO;
import cn.iocoder.yudao.module.partner.entity.PartnerBalance;
import cn.iocoder.yudao.module.partner.entity.PartnerBalanceDetail;
import cn.iocoder.yudao.module.partner.entity.PartnerWorker;
import cn.iocoder.yudao.module.payment.entity.OrderInfo;
import cn.iocoder.yudao.module.system.dal.dataobject.dept.PostDO;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import cn.iocoder.yudao.module.inspection.entity.*;
import cn.iocoder.yudao.module.inspection.query.PartnerListQuery;
import cn.iocoder.yudao.module.inspection.vo.*;
import cn.iocoder.yudao.module.shop.entity.ShopCouponTemplate;
import cn.iocoder.yudao.module.shop.entity.ShopMallPartners;
import java.util.List;
import java.util.Map;


public interface AppInspectionPartnerService extends IService<ShopMallPartners> {
   IPage<PartnerListVo> partnerList(Page<PartnerListVo> page, PartnerListQuery partnerListQuery);
   List<ShopInspectionCategory> categoryList(Long partnerId);
   PartnerListVo shopDetail(PartnerListQuery partnerListQuery);
   void addSalesNum(Long partnerId);
   ShopMallPartners shopInfo() throws Exception;

   /**
    * 重写shopInfo()方法
    *
    */
   ShopMallPartners shopInfoByUserId() throws Exception;

   JSONObject getAppointAndPickNum() throws Exception;

   void startOrEnd(Long partnerId);
   StatisticsInfo statisticsInfo(Long partnerId);
   JSONObject chartInfoAmount(Long partnerId,String unit);
   JSONObject newChartInfoAmount(String unit);
   JSONObject chartLineInspectionNum(Long partnerId,String unit);
   JSONObject newChartLineInspectionNum(String unit);
   JSONObject chartLineInspectionAmount(Long partnerId,String unit);

   JSONObject chartInfoNum(Long partnerId,String unit);
   JSONObject newChartInfoNum(String unit);
   JSONObject chartInfoRatio(Long partnerId, String unit);
   JSONObject newChartInfoRatio(String unit);
   List<OrderInfo> orderInfo(Long partnerId);
   List<HotGoodsVo> hotGoodsList(Long partnerId);
   List<HotGoodsVo> newHotGoodsList();
   void addGoods(ShopInspectionGoods goods) throws Exception;
   IPage<GoodsVo> goodsList(Page<GoodsVo> page,Long partnerId, String isListing, String goodsTitle);
   List<JSONObject> canUseGoods(Long partnerId);
   ShopInspectionGoods  goodsDetail(Long goodsId);
   void editGoods(ShopInspectionGoods goods) throws Exception;
   void editSkuPrice(ShopInspectionGoods goods) throws Exception;

   void changeListing(Long goodsId) throws Exception;
   void delGoods(Long goodsId) throws Exception;
   void editPartnerInfo(ShopMallPartners partners);
   PartnerVo getPartnerInfo(Long partnerId);
   PartnerBalance accountInfo(Long partnerId);
   IPage<PartnerBalanceDetail> accountDetail(Page<PartnerBalanceDetail> page,Long partnerId, Integer pageNum, Integer pageSize);
    IPage<OrderAppDetail> orderList(Page<OrderAppDetail> page,Long partnerId,String phoneNum, String title);
   OrderAppDetail orderDetail(Long partnerId,Long orderId);
   Long   orderDetailByCode(Long partnerId,String code) throws Exception;
    void takeOut(Long partnerId,Long orderId,Long workId,String carNum) throws Exception;
   void addWorker(Long partnerId,String realName,String phoneNum,Long postId) throws Exception;
   List<PartnerWorker> getWorkList(Long partnerId, Long postId, String workName, String phoneNum);

   IPage<PartnerWorker> pageWorkList(Long partnerId, Long postId, String workName, String phoneNum, Page<LabelRespVO> page);

   void delWorker(Long partnerId,Long workId);

   IPage<InspectionInfo> inspectionList(Page<InspectionInfo> page,Long partnerId, String status, String carNum);
   InspectionInfoVo inspectionDetail(Long inspectionInfoId);

   List<InspectionInfo> workerInspectionList(Long partnerId,String status,String searchValue);
   void addStepInfo(InspectionStepInfo stepInfo);
   void stopInspection(InspectionInfo info) throws Exception;
   void makeCertOk(Long inspectionId);
   IPage<InspectionAppointment> getAppointmentList(Page<InspectionAppointment> page,Long partnerId,String phoneNum);
   IPage<OrderInfo>  validationList(Page<OrderInfo> page,Long partnerId,String searchValue);
   void sendCoupon(ShopCouponTemplate template) throws Exception;
   IPage<ShopCouponTemplate> listCoupon(Page<ShopCouponTemplate> page,Long partnerId,String searchValue);
   void delCoupon(Long partnerId,Long id);
   void designatePickCarWorker(Long pickCarId,Long workerId);
   IPage<InspectionPickCar> getPickCarList(Page page,Long partnerId, String phoneNum,String pickStatus);
   InspectionPickCar getPickCarDetail(Long dataId);
   IPage<InspectionPickCar> getPickCarListOfWorker(Page<InspectionPickCar> page,Long workerId, String phoneNum);
   JSONObject vehicleLicenseOCR(String imagePath) throws Exception;
   void offlineCharging(InspectionInfoVo infoVo);
   String workOrderView(Long inspectionId);
   List<PostDO> inspectionPostInfo();
   Map<String,Double>  staticsTable1(Long partnerId, String startTime, String endTime);
   Map<String,Double>  newStaticsTable1(String startTime, String endTime);
   Map<String,Integer>  staticsTable2(Long partnerId, String startTime, String endTime);
   Map<String,Integer>  newStaticsTable2(String startTime, String endTime);
   List<Map<String,Object>>  staticsTable3(Long partnerId, String startTime, String endTime);
   List<Map<String,Object>>  newStaticsTable3(String startTime, String endTime);
   List<Map<String,Object>>  staticsTable3Detail(Long partnerId, String startTime, String endTime,String remark);

   List<Map<String,Object>>  staticsTable4(Long partnerId, String startTime, String endTime);
   List<Map<String,Object>>  staticsTable5(Long partnerId, String startTime, String endTime);


   //新检测金额折线图
   JSONObject newChartLineInspectionAmount(String unit);
}
