| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- <?php
- namespace App\Services;
- use App\OracleDocOrderDeliveryInfo;
- use App\OracleDOCOrderHeader;
- use App\PrintTemplate;
- use App\Traits\ModelSearchWay;
- use App\Traits\ServiceAppAop;
- use Illuminate\Database\Eloquent\Builder;
- use Illuminate\Database\Eloquent\Collection;
- use Illuminate\Support\Facades\File;
- use Illuminate\Support\Facades\Storage;
- use Intervention\Image\Facades\Image;
- class PrintService
- {
- use ModelSearchWay;
- use ServiceAppAop;
- /**
- * 分列 订单号,快递单号,波次号
- * @param string $print
- * @return array[]
- */
- public function conversionPrintData(string $print): array
- {
- preg_match_all('/[\w]+/',$print,$nos);
- foreach ($nos[0] as $no){
- if(strstr($no,'SO')) $orderCodes[] = $no;
- elseif(strstr($no,'W')) $batchesCodes[] = $no;
- else $logistic_numbers[] = $no;
- }
- return [$batchesCodes ?? [],$orderCodes ?? [],$logistic_numbers ?? []];
- }
- /**
- * 返回WMS中对应的快递单号
- * @param array $batchCodes
- * @param array $orderCodes
- * @param array $logistic_numbers
- * @return array|mixed
- */
- public function getLogisticNumber($batchCodes=[],$orderCodes = [],$logistic_numbers = []): array
- {
- if($batchCodes){
- $orderHeaders = OracleDOCOrderHeader::query()->selectRaw('OrderNo')->whereIn('WaveNo',$batchCodes)->get()->map(function($item) {
- return $item->orderno;
- });
- $orderCodes = array_merge($orderHeaders, $orderCodes);
- }
- if($orderCodes) {
- $info = OracleDocOrderDeliveryInfo::query()->where('OrderNo',$orderCodes)->get()->map(function($item){
- return $item->tackingno;
- });
- $logistic_numbers = array_merge($info, $logistic_numbers);
- }
- return $logistic_numbers ?? [];
- }
- /**
- * 获取打印信息
- * @param string $print
- * @return Builder[]|Collection
- */
- public function getPrintData(string $print)
- {
- list($batchesCodes,$orderCodes,$logistic_numbers) = $this->conversionPrintData($print);
- $logistic_numbers = $this->getLogisticNumber($batchesCodes, $orderCodes, $logistic_numbers);
- $items = OracleDocOrderDeliveryInfo::query()->select(['TackingNo','OrderNO','UserDefine1'])->whereIn('tackingNo',$logistic_numbers)->get();
- return $this->disposesPrintInfo($items);
- }
- /**
- * 处理打印请求参数
- * @param $oracleDocOrderDeliveryInfos
- * @return array
- */
- public function disposesPrintInfo($oracleDocOrderDeliveryInfos): array
- {
- foreach ($oracleDocOrderDeliveryInfos as $key => $info){
- $data[] = [
- 'documentID' => $info->orderno ?? '',
- 'encryptedData' => $info->userDefine4->encryptedData ?? '',
- 'signature' => $info->userDefine4->signature ?? '',
- 'templateURL' => $info->userDefine4->templateURL ?? '',
- 'ver' => $info->userDefine4->ver ?? '',
- ];
- }
- return $data ?? [];
- }
- public function processingPrintData(array $params)
- {
- foreach ($params as $param) {
- // $owner_id = $param['owner_id'];
- // $logistic_id = $param['logistic_id'];
- $img_base64_code = $param['base64'];
- $img = Image::make($img_base64_code);
- $printTemplate = PrintTemplate::query()->where('name','123')->first();
- $img = $this->convertPrintImage($img,$printTemplate);
- return $img->response("jpg");
- }
- }
- public function convertPrintImage($image,$printTemplate,$order_package = null)
- {
- foreach ($printTemplate->value as $item) {
- }
- return $image;
- }
- }
|