package com.bonus.canteen.core.notice.print.v2.business.impl;

import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSON;
import com.bonus.canteen.core.notice.print.v2.constant.PrintColumnGroupEnum;
import com.bonus.canteen.core.notice.print.v2.constant.PrintColumnTypeEnum;
import com.bonus.canteen.core.notice.print.v2.po.PrintResponsePO;
import com.bonus.canteen.core.notice.print.v2.utils.NoticePrintTransformUtil;
import com.bonus.canteen.core.notice.print.v2.vo.NoticePrintTemplateSettingVO;
import com.bonus.canteen.core.order.api.vo.NoticePrintDetailVO;
import com.bonus.common.houqin.constant.LeConstants;
import com.bonus.common.houqin.i18n.I18n;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;

import java.util.*;

@Service
public class NoticePrinterXinYeBusiness extends NoticePrinterAbstractBusiness {
   private static final Logger log = LoggerFactory.getLogger(NoticePrinterXinYeBusiness.class);
   private static final String PARTING_LINE = "--------------------------------\n";

//   public Integer getPrintStatus(String sn, String ip) {
//      if (ObjectUtil.isEmpty(ip)) {
//         return LeConstants.COMMON_NO;
//      } else {
//         return XinYePrint.getPrinter().queryOnlineStatus(ip) ? LeConstants.COMMON_YES : LeConstants.COMMON_NO;
//      }
//   }
//
//   protected PrintResponsePO executePrint(Map<String, String> paramMap, List<NoticePrintTemplateSettingVO> settingList, String sn, String ip, Long recordId) throws Exception {
//      EscCommand esc = new EscCommand();
//      esc.addInitializePrinter();
//      settingList.sort(Comparator.comparing(NoticePrintTemplateSettingVO::getSort));
//      Iterator var7 = settingList.iterator();
//
//      while(var7.hasNext()) {
//         NoticePrintTemplateSettingVO setting = (NoticePrintTemplateSettingVO)var7.next();
//         if (ObjectUtil.equal(setting.getColumnGroup(), PrintColumnGroupEnum.TITLE.getKey())) {
//            esc.addSelectJustification(JUSTIFICATION.CENTER);
//            esc.addSetCharcterSize(WIDTH_ZOOM.MUL_2, HEIGHT_ZOOM.MUL_2);
//            this.addText(esc, setting, paramMap);
//            esc.addSetCharcterSize(WIDTH_ZOOM.MUL_1, HEIGHT_ZOOM.MUL_1);
//            esc.addSelectJustification(JUSTIFICATION.LEFT);
//         } else {
//            PrintColumnTypeEnum printColumnTypeEnum = PrintColumnTypeEnum.getPrintColumnTypeEnum(setting.getColumnType());
//            if (!ObjectUtil.isNull(printColumnTypeEnum)) {
//               if (this.noticePrintBurialPointBusiness.checkSpecialPrintColumn(setting)) {
//                  this.noticePrintBurialPointBusiness.didJiaboSpecialPrintColumn(setting, paramMap, esc);
//               } else {
//                  switch (printColumnTypeEnum) {
//                     case TEXT:
//                        this.addText(esc, setting, paramMap);
//                        break;
//                     case TEXT_ARRAY:
//                        this.addArray(esc, setting, paramMap);
//                        break;
//                     case QR:
//                        this.addQr(esc, setting, paramMap);
//                  }
//               }
//            }
//         }
//      }
//
//      esc.addText("--------------------------------\n");
//      esc.addText(I18n.getMessage("notice_print_thanks_msg", new Object[0]) + "\n");
//      esc.addPrintAndFeedLines((byte)4);
//      Vector<Byte> vector = (Vector)ObjectUtil.clone(esc.getCommand());
//      byte[] bytes = new byte[vector.size()];
//
//      for(int i = 0; i < bytes.length; ++i) {
//         bytes[i] = (Byte)vector.get(i);
//      }
//
//      boolean result = XinYePrint.getPrinter().doExecute(ip, bytes);
//      return result ? PrintResponsePO.getSuccessPO(String.valueOf(recordId)) : PrintResponsePO.getFailPO(String.valueOf(recordId));
//   }
//
//   private void addText(EscCommand esc, NoticePrintTemplateSettingVO setting, Map<String, String> paramMap) {
//      String paramValue = NoticePrintTransformUtil.getPrintParamValue(setting, paramMap);
//      if (!ObjectUtil.isEmpty(paramValue)) {
//         boolean boldFlag = this.checkBoldColumns(setting);
//         if (boldFlag) {
//            esc.addSetCharcterSize(WIDTH_ZOOM.MUL_1, HEIGHT_ZOOM.MUL_2);
//         }
//
//         if (ObjectUtil.isEmpty(setting.getColumnName())) {
//            esc.addText(paramValue + "\n");
//         } else {
//            String var10001 = setting.getColumnName();
//            Object[] var10002 = new Object[]{paramValue};
//            esc.addText(I18n.getMessage(var10001, var10002) + "\n");
//         }
//
//         if (boldFlag) {
//            esc.addSetCharcterSize(WIDTH_ZOOM.MUL_1, HEIGHT_ZOOM.MUL_1);
//         }
//
//      }
//   }
//
//   private void addArray(EscCommand esc, NoticePrintTemplateSettingVO setting, Map<String, String> paramMap) {
//      String paramValue = NoticePrintTransformUtil.getPrintParamValue(setting, paramMap);
//      if (!ObjectUtil.isEmpty(paramValue)) {
//         this.addDishesList(esc, paramValue, this.checkBoldColumns(setting));
//         esc.addText("--------------------------------\n");
//         esc.addPrintAndLineFeed();
//      }
//   }
//
//   private void addDishesList(EscCommand esc, String dishesStr, boolean boldFlag) {
//      List<NoticePrintDetailVO> ordDetailList = JSON.parseArray(dishesStr, NoticePrintDetailVO.class);
//      if (!ObjectUtil.isEmpty(ordDetailList)) {
//         int pricePosition = 175;
//         esc.addText(I18n.getMessage("notice_print_order_detail_name", new Object[0]));
//         esc.addSetAbsolutePrintPosition((short)200);
//         esc.addText(I18n.getMessage("notice_print_order_detail_price", new Object[0]));
//         esc.addSetAbsolutePrintPosition((short)265);
//         esc.addText(I18n.getMessage("notice_print_order_detail_num", new Object[0]));
//         esc.addSetAbsolutePrintPosition((short)325);
//         esc.addText(I18n.getMessage("notice_print_order_detail_total_amount", new Object[0]) + "\n");
//         esc.addText("--------------------------------\n");
//         int nameLength = pricePosition / 25 + 1;
//         Iterator var7 = ordDetailList.iterator();
//
//         while(var7.hasNext()) {
//            NoticePrintDetailVO printOrdDetail = (NoticePrintDetailVO)var7.next();
//            String goodsName = printOrdDetail.getGoodsDishesName();
//            Object nameList;
//            int i;
//            if (goodsName.length() <= nameLength) {
//               nameList = Collections.singletonList(goodsName);
//            } else {
//               nameList = CollUtil.newArrayList(new String[0]);
//               i = goodsName.length() % nameLength == 0 ? goodsName.length() / nameLength : goodsName.length() / nameLength + 1;
//
//               for(int index = 0; index < i; ++index) {
//                  String childStr = NoticePrintTransformUtil.getSubstring(goodsName, index * nameLength, (index + 1) * nameLength);
//                  ((List)nameList).add(childStr);
//               }
//            }
//
//            for(i = 0; i < ((List)nameList).size(); ++i) {
//               if (i == 0) {
//                  if (boldFlag) {
//                     esc.addSetCharcterSize(WIDTH_ZOOM.MUL_1, HEIGHT_ZOOM.MUL_2);
//                  }
//
//                  esc.addText((String)((List)nameList).get(i));
//                  if (boldFlag) {
//                     esc.addSetCharcterSize(WIDTH_ZOOM.MUL_1, HEIGHT_ZOOM.MUL_1);
//                  }
//
//                  esc.addSetAbsolutePrintPosition((short)200);
//                  esc.addText(NoticePrintTransformUtil.transformAmountYuan(printOrdDetail.getPrice()));
//                  esc.addSetAbsolutePrintPosition((short)275);
//                  if (boldFlag) {
//                     esc.addSetCharcterSize(WIDTH_ZOOM.MUL_1, HEIGHT_ZOOM.MUL_2);
//                  }
//
//                  esc.addText(String.valueOf(printOrdDetail.getQuantity()));
//                  if (boldFlag) {
//                     esc.addSetCharcterSize(WIDTH_ZOOM.MUL_1, HEIGHT_ZOOM.MUL_1);
//                  }
//
//                  esc.addSetAbsolutePrintPosition((short)315);
//                  String var10001 = this.getDetailTotalPrice(printOrdDetail);
//                  esc.addText(var10001 + "\n");
//               } else {
//                  if (boldFlag) {
//                     esc.addSetCharcterSize(WIDTH_ZOOM.MUL_1, HEIGHT_ZOOM.MUL_2);
//                  }
//
//                  Object var14 = ((List)nameList).get(i);
//                  esc.addText((String)var14 + "\n");
//                  if (boldFlag) {
//                     esc.addSetCharcterSize(WIDTH_ZOOM.MUL_1, HEIGHT_ZOOM.MUL_1);
//                  }
//               }
//            }
//         }
//
//      }
//   }
//
//   private void addQr(EscCommand esc, NoticePrintTemplateSettingVO setting, Map<String, String> paramMap) {
//      String paramValue = NoticePrintTransformUtil.getPrintParamValue(setting, paramMap);
//      if (!ObjectUtil.isEmpty(paramValue)) {
//         esc.addSelectJustification(JUSTIFICATION.CENTER);
//         esc.addSelectErrorCorrectionLevelForQRCode((byte)49);
//         esc.addSelectSizeOfModuleForQRCode((byte)8);
//         esc.addStoreQRCodeData(NoticePrintTransformUtil.getOrderQRCode((String)paramMap.get("sourceType"), paramValue));
//         esc.addPrintQRCode();
//         esc.addSelectJustification(JUSTIFICATION.LEFT);
//         esc.addSetCharcterSize(WIDTH_ZOOM.MUL_1, HEIGHT_ZOOM.MUL_1);
//         esc.addPrintAndFeedLines((byte)1);
//      }
//   }
}
