orderOptionCateringLogModel->where('id',$this->printId)->first(); if (empty($printInfo)) throw new ErrException('打印机不存在-1'); if (empty($printInfo->code_value) || $printInfo->code_value == '') throw new ErrException('打印机不存在-2'); $this->token = $this->ylyBasicsLib->selfAppAccredit(); $this->machineCode = $printInfo->code_value; } /** * @return true * @throws ContainerExceptionInterface * @throws NotFoundExceptionInterface */ public function printList(): true { $this->checkOrderData(); $this->buildOrderContent(); $this->ylyBasicsLib->printTextRequest($this->token,$this->machineCode,$this->content); return true; } /** * @return void */ private function checkOrderData(): void { if (empty($this->data)) throw new ErrException('打印商品数据不存在'); if ( empty($this->data['pickup_code']) || empty($this->data['driver_num']) || empty($this->data['site_order']) || empty($this->data['site_text']) || empty($this->data['sku']) || empty($this->data['order_sno']) || empty($this->data['username']) || empty($this->data['mobile']) || empty($this->data['date']) || empty($this->data['heapsort']) ) throw new ErrException('打印数据丢失'); } /** * @return void */ private function buildOrderContent(): void { //重置数据 $this->content = ''; //设置高度 $this->content .= "100,1"; //设置宽度 $this->content .= "048"; $this->content .= "\n"; $this->content .= "\n"; //取餐号 $this->content .= "{$this->data['pickup_code']}\n"; //司机号码 - 线路顺序 $this->content .= "线路:{$this->data['driver_num']}-{$this->data['site_order']}\n"; //配送点 $this->content .= "配送点:{$this->data['site_text']}\n"; // 表头 $this->content .= "--------------------------------\n"; //菜品表格 $codeNum = []; foreach ($this->data['sku'] as $one) { for ($i = 0;$i < $one['num'];$i++) { $codeNum[] = $one['code_num']; } } sort($codeNum); $goodsArr = array_chunk($codeNum,3,true); foreach ($goodsArr as $one) { $one = array_values($one); switch (count($one)) { case 1: $this->content .= "{$one[0]}\n"; break; case 2: $this->content .= "{$one[0]}.{$one[1]}\n"; break; case 3: $this->content .= "{$one[0]}.{$one[1]}.{$one[2]}\n"; break; } } //下面分割符号 $this->content .= "--------------------------------\n"; //订单号 截取订单号 $last8Chars = substr($this->data['order_sno'], strlen($this->data['order_sno']) - 8, 8); $this->content .= "订单尾号,{$last8Chars}"; //用户昵称 $this->content .= "用户昵称,{$this->data['username']}"; //手机尾号 $last4Chars = substr($this->data['mobile'], strlen($this->data['mobile']) - 4, 4); $this->content .= "手机尾号,{$last4Chars}"; //套餐日期 $this->content .= "套餐日期,{$this->data['date']}"; //生产日期 $productionTime = $this->data['date'].config('print.yly.production_time'); $this->content .= "生产日期,$productionTime"; //保质期 $contentEdibleTimeTips = config('print.yly.content_edible_time_tips'); $this->content .= "保质期,$contentEdibleTimeTips"; $this->content .= "{$this->data['heapsort']}"; } /** * @return true * @throws ContainerExceptionInterface * @throws NotFoundExceptionInterface */ public function printSingleOrder(): true { return $this->printList(); } /** * @return void * @throws ContainerExceptionInterface * @throws NotFoundExceptionInterface */ public function printCancel(): void { $this->ylyBasicsLib->cancelRequest($this->token,$this->machineCode); } /** * @return true * @throws ContainerExceptionInterface * @throws NotFoundExceptionInterface */ public function printBoxLabel(): true { $this->checkBoxLabelData(); $this->buildBoxContent(); $this->ylyBasicsLib->printTextRequest($this->token,$this->machineCode,$this->content); return true; } /** * @return void */ private function checkBoxLabelData(): void { if (empty($this->data)) throw new ErrException('打印标签数据不存在'); if ( empty($this->data['driver_num']) || empty($this->data['site_order']) || empty($this->data['site_text']) || empty($this->data['copies_num']) || empty($this->data['driver_name']) || empty($this->data['current_num']) || empty($this->data['date_text']) ) throw new ErrException('打印数据丢失'); } /** * @return void */ private function buildBoxContent(): void { // 重置 $this->content = ''; //设置高度 $this->content .= "100,1"; //设置宽度 $this->content .= "048"; //上下居中 $this->content .= "\n"; $this->content .= "\n"; $this->content .= "\n"; $this->content .= "\n"; $this->content .= "\n"; $this->content .= "\n"; $this->content .= "\n"; // 司机号码 - 线路顺序 $this->content .= "线路:{$this->data['driver_num']}-{$this->data['site_order']}\n"; $this->content .= "\n"; // 总量 $this->content .= "总份数:{$this->data['copies_num']}\n"; $this->content .= "\n"; // 箱数 $currentNum = str_pad($this->data['current_num'], 2, '0', STR_PAD_LEFT); $this->content .= "箱数:$currentNum\n"; $this->content .= "\n"; // 配送点 $this->content .= "配送司机: {$this->data['driver_name']}\n"; $this->content .= "\n"; // 配送点 $this->content .= "配送点: {$this->data['site_text']}\n"; $this->content .= "\n"; // 套餐日期 $this->content .= "{$this->data['date_text']}\n"; } }