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";
}
}