package com.bonus.canteen.core.order.weight.service.impl;

import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.ListUtil;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.bonus.canteen.core.order.weight.mapper.MacPlateidBindSerialMapper;
import com.bonus.canteen.core.order.weight.model.MacPlateidBindSerial;
import com.bonus.canteen.core.order.weight.service.MacPlateidBindSerialService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;

import java.lang.invoke.SerializedLambda;
import java.util.List;

@Service
public class MacPlateidBindSerialServiceImpl extends ServiceImpl<MacPlateidBindSerialMapper, MacPlateidBindSerial>
        implements MacPlateidBindSerialService {
   private static final Logger log = LoggerFactory.getLogger(MacPlateidBindSerialServiceImpl.class);

//   public boolean insertAndUpdatePlateSerial(MacPlateidBindSerial macPlateidBindSerial) {
//      MacPlateidBindSerial macPlateidBindSerial1 = null;
//      if (macPlateidBindSerial.getPlateType() != null && !macPlateidBindSerial.getPlateType().equals(MacPlateidBindSerialTypeEnum.COMMON_PLATE.key())) {
//         if (macPlateidBindSerial.getPlateType().equals(2)) {
//            macPlateidBindSerial1 = (MacPlateidBindSerial)((MacPlateidBindSerialMapper)this.baseMapper).selectOne((Wrapper)Wrappers.lambdaQuery(MacPlateidBindSerial.class).eq(MacPlateidBindSerial::getPlateSerialNum, macPlateidBindSerial.getPlateSerialNum()));
//            if (macPlateidBindSerial1 != null) {
//               macPlateidBindSerial.setPlateId("0");
//               macPlateidBindSerial1.setPlateSerialNum(macPlateidBindSerial.getPlateSerialNum());
//               macPlateidBindSerial1.setPlateType(2);
//               ((MacPlateidBindSerialMapper)this.baseMapper).updateById(macPlateidBindSerial1);
//            } else {
//               macPlateidBindSerial.setPlateId("0");
//               ((MacPlateidBindSerialMapper)this.baseMapper).insert(macPlateidBindSerial);
//            }
//         }
//      } else {
//         macPlateidBindSerial1 = (MacPlateidBindSerial)((MacPlateidBindSerialMapper)this.baseMapper).selectOne((Wrapper)((LambdaQueryWrapper)((LambdaQueryWrapper)Wrappers.lambdaQuery(MacPlateidBindSerial.class).eq(MacPlateidBindSerial::getPlateSerialNum, macPlateidBindSerial.getPlateSerialNum())).or()).eq(MacPlateidBindSerial::getPlateId, macPlateidBindSerial.getPlateId()));
//         if (macPlateidBindSerial1 != null) {
//            macPlateidBindSerial1.setPlateType(MacPlateidBindSerialTypeEnum.COMMON_PLATE.key());
//            macPlateidBindSerial1.setPlateSerialNum(macPlateidBindSerial.getPlateSerialNum());
//            macPlateidBindSerial1.setPlateType(1);
//            ((MacPlateidBindSerialMapper)this.baseMapper).updateById(macPlateidBindSerial1);
//         } else {
//            macPlateidBindSerial.setPlateType(MacPlateidBindSerialTypeEnum.COMMON_PLATE.key());
//            ((MacPlateidBindSerialMapper)this.baseMapper).insert(macPlateidBindSerial);
//         }
//      }
//
//      return true;
//   }
//
//   public MacPlateidBindSerial queryBindByPlateId(String plateSerialNum) {
//      return ((MacPlateidBindSerialMapper)this.baseMapper).queryBindByPlateId(plateSerialNum);
//   }
//
//   public MacPlateidBindSerial queryBindByPlateSerialNum(String plateSerialNum) {
//      return ((MacPlateidBindSerialMapper)this.baseMapper).queryBindByPlateSerialNum(plateSerialNum);
//   }

   @Override
   public List<MacPlateidBindSerial> queryBindByPlateSerialNumList(List<String> plateSerialNumList) {
      return CollUtil.isEmpty(plateSerialNumList) ? ListUtil.empty() : ((MacPlateidBindSerialMapper)this.baseMapper).selectList((Wrapper<MacPlateidBindSerial>)Wrappers.lambdaQuery(MacPlateidBindSerial.class).select(MacPlateidBindSerial::getPlateId, MacPlateidBindSerial::getPlateSerialNum).in(MacPlateidBindSerial::getPlateSerialNum, plateSerialNumList));
   }

//   private static Object $deserializeLambda$(SerializedLambda lambda) {
//      switch (lambda.getImplMethodName()) {
//         case "getPlateId":
//            if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("net/xnzn/core/order/weight/model/MacPlateidBindSerial") && lambda.getImplMethodSignature().equals("()Ljava/lang/String;")) {
//               return MacPlateidBindSerial::getPlateId;
//            }
//
//            if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("net/xnzn/core/order/weight/model/MacPlateidBindSerial") && lambda.getImplMethodSignature().equals("()Ljava/lang/String;")) {
//               return MacPlateidBindSerial::getPlateId;
//            }
//            break;
//         case "getPlateSerialNum":
//            if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("net/xnzn/core/order/weight/model/MacPlateidBindSerial") && lambda.getImplMethodSignature().equals("()Ljava/lang/String;")) {
//               return MacPlateidBindSerial::getPlateSerialNum;
//            }
//
//            if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("net/xnzn/core/order/weight/model/MacPlateidBindSerial") && lambda.getImplMethodSignature().equals("()Ljava/lang/String;")) {
//               return MacPlateidBindSerial::getPlateSerialNum;
//            }
//
//            if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("net/xnzn/core/order/weight/model/MacPlateidBindSerial") && lambda.getImplMethodSignature().equals("()Ljava/lang/String;")) {
//               return MacPlateidBindSerial::getPlateSerialNum;
//            }
//
//            if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("net/xnzn/core/order/weight/model/MacPlateidBindSerial") && lambda.getImplMethodSignature().equals("()Ljava/lang/String;")) {
//               return MacPlateidBindSerial::getPlateSerialNum;
//            }
//      }
//
//      throw new IllegalArgumentException("Invalid lambda deserialization");
//   }
}
