package com.bonus.canteen.core.supply.purchase.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.bonus.canteen.core.supply.purchase.domain.bo.DrpPurSendEmailDTO;
import com.bonus.canteen.core.supply.purchase.domain.bo.DrpPurchasePlan;
import com.bonus.canteen.core.supply.purchase.domain.param.*;
import com.bonus.canteen.core.supply.purchase.domain.vo.*;
import org.springframework.web.multipart.MultipartFile;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

public interface DrpPurchasePlanService extends IService<DrpPurchasePlan> {
   DrpPurchasePlanAddVO addSaveDrpPurchasePlan(DrpPurchasePlanSaveDTO content);

   DrpPurchasePlanAddVO addCommitDrpPurchasePlan(DrpPurchasePlanSaveDTO content);

   void reduceInventory(String planId);

   List<DrpPurchasePlanPageVO> getDrpPurchasePlanPage(DrpPurchasePlanPageDTO content);

   void removeByPlanId(String planId);

//   List<String> sendEmail(DrpPurSendEmailDTO content);

   List<DrpPurMaterialPageVO> pageMaterial(DrpPurMaterialPageDTO content);

   List<DrpPurMaterialInfoPageVO> pageMaterialInfo(DrpPurMaterialInfoPageDTO content);

   String generateOrderGoods(DrpPurGenerateOrderGoodsDTO content);

   String generateInquiry(DrpPurGenerateInquiryDTO content);

//   void applyApproval(String planId);

   List<MaterialInventoryVO> listPurDetailInventory(MaterialInventoryDTO content);

   List<DrpPurPlanDetailListVO> listPurDetail(String planId);

   void purGenerateOrder(List<DrpPurGenerateOrderDTO> content);

   void purGenerateInquiry(List<DrpPurDismantleGenerateInquiryDTO> content);

//   void purPlanApproveAgree(PurPlanApproveDTO content);
//
//   void purPlanApproveReject(PurPlanApproveDTO content);
//
//   DrpPurchasePlanAddVO morePurPlanMergeOne(DrpMorePurPlanMergeOneDTO content);

   void purGenerateInquiryByGoods(DrpPurDismantleGenerateInquiryDTO dto);

   AmountBaseByPageHelperVO<DrpProductionPlanMaterialCountVO> materialCount(DrpPurchasePlanPageDTO content);

   DrpPurchasePlanPageVO detail(String content);

//   DrpPurchasePlanMergeVO mergeDetail(List<String> content);

   Map<Long, BigDecimal> syncPurchasePrice(List<Long> content, Long canteenId);

//   void importExcel(MultipartFile excel);
//
//   DrpPurchasePlanTotalVO getTotal();
//
//   List<DrpFetchMaterialImportPurPlanPageVO> pageFetchMaterialImportPurPlan(DrpFetchMaterialImportPurPlanPageDTO content);
//
//   List<DrpFetchMaterialImportPurPlanDetailPageVO> pageFetchMaterialImportPurPlanDetail(DrpFetchMaterialImportPurPlanDetailPageDTO content);

   boolean deductionInventory(Long content);
}
