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

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.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> {
   List<PartnerListVo> partnerList(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 chartLineInspectionNum(Long partnerId,String unit);
   JSONObject chartLineInspectionAmount(Long partnerId,String unit);

   JSONObject chartInfoNum(Long partnerId,String unit);
   JSONObject chartInfoRatio(Long partnerId, String unit);
   List<OrderInfo> orderInfo(Long partnerId);
   List<HotGoodsVo> hotGoodsList(Long partnerId);
   void addGoods(ShopInspectionGoods goods) throws Exception;
   List<GoodsVo> goodsList(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);
   List<PartnerBalanceDetail> accountDetail(Long partnerId, Integer pageNum, Integer pageSize);
    List<OrderAppDetail> orderList(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);

   void delWorker(Long partnerId,Long workId);

   List<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);
   List<InspectionAppointment> getAppointmentList(Page<InspectionAppointment> page,Long partnerId,String phoneNum);
   List<OrderInfo>  validationList(Long partnerId,String searchValue);
   void sendCoupon(ShopCouponTemplate template) throws Exception;
   List<ShopCouponTemplate> listCoupon(Long partnerId,String searchValue);
   void delCoupon(Long partnerId,Long id);
   void designatePickCarWorker(Long pickCarId,Long workerId);
   List<InspectionPickCar> getPickCarList(Long partnerId, String phoneNum,String pickStatus);
   InspectionPickCar getPickCarDetail(Long dataId);
   List<InspectionPickCar> getPickCarListOfWorker(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,Integer>  staticsTable2(Long partnerId, String startTime, String endTime);
   List<Map<String,Object>>  staticsTable3(Long partnerId, 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);




}
