package com.qtzl.alterSales.manager.service;
import cn.com.taiji.common.manager.net.http.ServiceHandleException;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSON;
import com.google.common.collect.Lists;
import com.qtzl.alterSales.dao.entity.primary.AflApPayOrder;
import com.qtzl.alterSales.dao.entity.primary.FssPaccountPay;
import com.qtzl.alterSales.dao.entity.primary.WechatBillPayApply;
import com.qtzl.alterSales.dao.entity.primary.WechatBillPaySuccess;
import com.qtzl.alterSales.dao.entity.second.AflPaccountRefundCount;
import com.qtzl.alterSales.dao.repo.jpa.primary.AflApPayOrderRepo;
import com.qtzl.alterSales.dao.repo.jpa.primary.AflSupplementaryPayOrderRepo;
import com.qtzl.alterSales.dao.repo.jpa.primary.FssPaccountPayRepo;
import com.qtzl.alterSales.dao.repo.jpa.primary.FssPaccountRefundRepo;
import com.qtzl.alterSales.dao.repo.jpa.primary.WechatBillPayApplyRepo;
import com.qtzl.alterSales.dao.repo.jpa.primary.WechatBillPaySuccessRepo;
import com.qtzl.alterSales.dao.repo.jpa.second.AflPaccountRefundCountRepo;
import com.qtzl.alterSales.manager.enums.VehiclePlateColorEnum;
import com.qtzl.alterSales.manager.model.protocol.UcServiceError;
import com.qtzl.alterSales.manager.model.protocol.sales.FssPaccountPayResultFindByPayIdResponse;
import com.qtzl.alterSales.manager.vo.AflPaccountRefundCountFindVo;
import com.qtzl.alterSales.manager.vo.VehicleAgreementNumBillsVo;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.UUID;
/***
*
* 选装-原始流水 service
*
* @author hou yi
* {@code @date} 2023/10/12 11:43
**/
@Service
public class FssPaccountPayServiceImpl implements FssPaccountPayService {
private static final Logger log = LoggerFactory.getLogger(FssPaccountPayServiceImpl.class);
@Resource
private FssPaccountPayRepo paccountPayRepo;
@Resource
private AflPaccountRefundCountRepo aflPaccountRefundCountRepo;
@Resource
private FssPaccountRefundRepo fssPaccountRefundRepo;
@Resource
private AflSupplementaryPayOrderRepo supplementaryPayOrderRepo;
@Resource
private WechatBillPayApplyRepo wechatBillPayApplyRepo;
@Resource
private WechatBillPaySuccessRepo successRepo;
@Resource
private AflApPayOrderRepo apPayOrderRepo;
@Override
public List getAgreementBills(String plateNumber, Integer plateColor) throws ServiceHandleException {
if (StringUtils.isEmpty(plateNumber) || null == plateColor) {
throw UcServiceError.BUSINESS_VALIDATE_ERR.toHandleException("请指定车牌号、车牌颜色");
}
List agreementBills = paccountPayRepo.findByVehicleId(plateNumber + "_" + plateColor);
if (CollectionUtils.isEmpty(agreementBills)) {
return Lists.newArrayList();
}
/* // 过滤掉已生成补缴单的流水
final List payIds = agreementBills.stream().map(FssPaccountPay::getPayId).toList();
final List orders = supplementaryPayOrderRepo.findAll((root, query, cb) -> query
.where(
root.get("payId").in(payIds)
).getRestriction());
if (!CollectionUtils.isEmpty(orders)) {
final List orderPayIds = orders.stream().map(AflSupplementaryPayOrder::getPayId).toList();
agreementBills = agreementBills.stream().filter(vo -> !orderPayIds.contains(vo.getPayId())).toList();
}*/
return toVo(agreementBills);
}
@Override
public List findByPayId(List payIds) {
if (CollectionUtils.isEmpty(payIds)) {
return Lists.newArrayList();
}
return toVo(paccountPayRepo.findByPayIdIn(payIds));
}
@Override
public void count(int day) throws ServiceHandleException {
// 获取当前日期前一天的日期
LocalDate localDate = LocalDate.now().minusDays(day);//1代表提前多少天
String yesterday = localDate.toString();
System.out.println("当前导入记录日期=" + yesterday);
Integer i = aflPaccountRefundCountRepo.findByToDay(yesterday.replaceAll("-", ""));
if (i != null && i > 0) {
throw UcServiceError.BUSINESS_VALIDATE_ERR.toHandleException("当前n+" + day + "天记录已存在");
}
List