| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295 |
- <?php
- namespace App\Traits;
- use App\Logistic;
- use App\OracleDOCOrderDetail;
- use App\OracleDOCWaveDetails;
- use App\Owner;
- use App\OwnerLogisticPrintTemplate;
- use Illuminate\Support\Carbon;
- use Illuminate\Support\Facades\Cache;
- trait DeliveryProcess
- {
- use DrawImage;
- // 将 base64编码 转 图片 进行修改并保存,后把修改保存的图片转为 base64编码 返回
- function processing(&$params)
- {
- // TODO 获取模板
- $owner_query = Owner::query()->selectRaw('id')->where('code', $params['owner_code']);
- $logistic_query = Logistic::query()->selectRaw('id')->where('code', $params['logistic_code']);
- $item = OwnerLogisticPrintTemplate::query()->with('printTemplate')->where('owner_id', $owner_query)->where('logistic_id', $logistic_query)->first();
- $path = '';
- $img = $this->getImage($params['base64'], $path);
- $img = $this->draw($params['delivery'] ?? [], $item, $img);
- $img->save($path);
- $arr = [];
- if (Cache::has('print-template-file-list')) {
- $arr = Cache::get('print-template-file-list');
- }
- $arr[] = ['time' => Carbon::now(), 'path' => $path];
- Cache::put('print-template-file-list', $arr);
- // TODO 将文件进行base64编码
- if ($fp = fopen($path, "rp", 0)) {
- $gambar = fread($fp, filesize($path));
- fclose($fp);
- $params['base64'] = chunk_split(base64_encode($gambar));
- }
- $params['is_process'] = true;
- return $params;
- }
- // $item
- // 将按条件转化为
- function getDeliveryInfo($item, $type): ?array
- {
- if (in_array($type, ['TB', 'PDD', 'SF'])) return $this->getDocOrderDeliveryInfo($item);
- else if (in_array($type, ['JD', 'SFQHD'])) return $this->getDocOrderInfo($item);
- return [];
- }
- // 菜鸟面单和拼多多面单 TB PDD
- function getDocOrderDeliveryInfo($docOrderDelivery): array
- {
- // 波次订单总数
- $wave_count = (function () use ($docOrderDelivery) {
- $count = OracleDOCWaveDetails::query()->where('waveno', $docOrderDelivery->docOrderHeader['waveno'])->count();
- return $count ? strval($count) : '0';
- })();
- // 备注
- list($remark1, $remark2, $remark3) = (function () use ($docOrderDelivery) {
- switch ($docOrderDelivery->docOrderHeader['customerid'] ?? '') {
- case 'BOAO':
- return ['易碎、易融', '不可放置自提柜!', '需当面签收!'];
- case 'LINGFEI':
- return ['快递小哥送货路远,风吹日晒注意安全,', '见到小主代问声好,你我共建文明家园!', ''];
- case 'WEIXI1':
- return ['售后电话13816946227', '', ''];
- default:
- return ['', '', ''];
- }
- })();
- // 仓库
- $wh = (function () use ($docOrderDelivery) {
- $customerid = $docOrderDelivery->docOrderHeader['customerid'] ?? '';
- if (strstr('泗砖', $customerid)) return '泗砖宝石仓';
- if (strstr('武乡', $customerid)) return '武乡宝石仓';
- if (strstr('九干', $customerid)) return '九干宝石仓';
- return '宝时仓';
- })();
- // whaddr 仓库地址
- $whaddr = (function () use ($docOrderDelivery) {
- $peo = $docOrderDelivery->docOrderHeader->oracleBASCustomer['address1'];
- if (strstr($peo, '九干')) return '上海上海市松江区九干路1300号';
- if (strstr($peo, '武乡')) return '上海嘉定区徐行镇武乡路9号';
- if (strstr($peo, '泗砖')) return '上海嘉定区徐行镇武乡路9号';
- return '宝时仓';
- })();
- // 城镇 收货
- $raddr = (function () use ($docOrderDelivery) {
- $docOrderHeader = $docOrderDelivery['doc_order_header'];
- return ($docOrderHeader['c_province'] ?? '') . ' ' . ($docOrderHeader['c_city'] ?? '') . ' ' . ($docOrderHeader['c_address2'] ?? '');
- })();
- // 韵达特殊处理
- $yd = (function () use ($docOrderDelivery) {
- $carrierid = $docOrderDelivery->docOrderHeader['carrierid'];
- if ($carrierid !== "YUNDA") return '';
- if (in_array($carrierid, ['上海', '上海市'])) return 'A';
- if (in_array($carrierid, ['江苏', '江苏省', '浙江', '浙江省'])) return 'B';
- if (in_array($carrierid, ['北京', '北京市', '安徽', '安徽省', '山东', '河南', '江西', '湖南', '湖北', '山东省', '河南省', '江西省', '湖南省', '湖北省'])) return 'C';
- if (in_array($carrierid, [
- '上海', '上海市', '江苏', '江苏省', '浙江', '浙江省', '北京', '北京市', '安徽', '安徽省', '山东', '河南', '江西', '湖南', '湖北', '山东省', '河南省', '江西省', '湖南省', '湖北省'
- ])) return 'D';
- return '';
- })();
- return [
- 'waveno' => $docOrderDelivery->docOrderHeader['waveno'] ?? '', // 波次
- 'print_sum' => '总打印数' . ($wave_count ?? 0) . '行号#' . $docOrderDelivery->docOrderHeader->oracleDOCWaveDetail['seqno'], // 订单所处波次的序号
- 'wave_count' => $wave_count,
- // 订单总数
- 'count' => (function () use ($docOrderDelivery) {
- $count = OracleDOCOrderDetail::query()->where('orderno', $docOrderDelivery->docOrderHeader['ordenro'])->sum('qtyAllocated_each') ;
- return $count ? strval($count) : "0";
- })(), // 订单商品总数
- 'remark1' => $remark1,
- 'remark2' => $remark2,
- 'remark3' => $remark3,
- 'wh' => $wh,
- 'whaddr' => $whaddr, // 仓库地址
- 'deliveryno' => $docOrderDelivery->docOrderHeader['deliveryno'] ?? $docOrderDelivery->docOrderHeader['soreference5'], // 快递单号
- 'c_contact' => $docOrderDelivery->docOrderHeader['c_contact'] ?? '',
- 'c_province' => $docOrderDelivery->docOrderHeader['c_province'] ?? '',
- 'c_city' => $docOrderDelivery->docOrderHeader['c_city'] ?? '',
- 'c_address2' => $docOrderDelivery->docOrderHeader['c_address2'] ?? $docOrderDelivery->docOrderHeader['c_district'],
- 'c_tel1' => $docOrderDelivery->docOrderHeader['c_tel1'] ?? $docOrderDelivery->docOrderHeader['c_tel2'],
- 'c_tel2' => $docOrderDelivery->docOrderHeader['c_tel2'],
- 'issuepartyname' => $docOrderDelivery->docOrderHeader['issuepartyname'] ?? '宝时云仓',
- 'logistic_number' => $docOrderDelivery['delivery_no'],
- 'raddr' => $raddr, // 收货地址
- 'YD' => $yd, // 韵达自定义
- 'H_EDI_15' => $docOrderDelivery->docOrderHeader['H_EDI_15'] ?? '', // 大头笔
- 'logistic_name' => (function () use ($docOrderDelivery) {
- $logistic = Logistic::query()->where('code', $docOrderDelivery->docOrderHeader['carrierid'])->first();
- return $logistic['name'] ?? '';
- })(), // 承运商
- 'consigneeid' => $docOrderDelivery->docOrderHeader['consigneeid'] ?? '',
- 'qrcode' => $docOrderDelivery['qrcode'] ?? '',
- 'date' => Carbon::now()->format(Carbon::DEFAULT_TO_STRING_FORMAT)
- ];
- }
- // 非菜鸟面单 SF SFQHD JD
- function getDocOrderInfo($docOrderHeader): array
- {
- // 联系号码
- $tel = (function () use ($docOrderHeader) {
- if (in_array($docOrderHeader['customerid'], ['HANDA', 'BAIPING', 'JINBAOBEI', 'DUOCHOU', 'YUNKAI']) &&
- in_array($docOrderHeader['issuepartyname'], ['私密渠道A', '私密渠道BP', '金宝贝启蒙', 'ATSUGI厚木', '初品公司'])) {
- return '18616839461';
- }
- if (in_array($docOrderHeader['customerid'], ['HEDI']) &&
- in_array($docOrderHeader['issuepartyname'], ['马丁'])) {
- return '18811144744';
- }
- return '13761413262';
- })();
- // whaddr 仓库地址
- $whaddr = (function () use ($docOrderHeader) {
- $address = $docOrderHeader->oracleBASCustomer['address1'] ?? '';
- if (strstr($address, '泗砖')) return '上海上海市松江区泗砖公路351号';
- if (strstr($address, '武乡')) return '上海嘉定区徐行镇武乡路9号';
- if (strstr($address, '九干')) return '上海上海市松江区九干路1300号';
- return '';
- })();
- // $ordercount 订单波次的订单总数
- $owner_count = (function () use ($docOrderHeader) {
- $count = OracleDOCWaveDetails::query()->where('waveno', $docOrderHeader['waveno'])->count();
- return $count ? strval($count) : "0";
- })();
- // orderseq 订单在波次里的序号
- $orderseq = (function () use ($docOrderHeader) {
- return $docOrderHeader->oracleDOCWaveDetail->seqno ?? '';
- })();
- // seqno
- $seqno = (function () use ($docOrderHeader, $orderseq) {
- $count = OracleDOCWaveDetails::query()->where('waveno', $docOrderHeader['waveno'])->count();
- return '总打印数' . ($count) . " 行号#" . $orderseq;
- })();
- // 备注
- list($remark1, $remark2, $remark3) = (function () use ($docOrderHeader) {
- switch ($docOrderHeader['customerid'] ?? '') {
- case 'BOAO':
- return ['易碎、易融', '不可放置自提柜!', '需当面签收!'];
- case 'LINGFEI':
- return ['快递小哥送货路远,风吹日晒注意安全,', '见到小主代问声好,你我共建文明家园!', ''];
- case 'WEIXI1':
- return ['售后电话13816946227', '', ''];
- default:
- return ['', '', ''];
- }
- })();
- $number = (function () use ($docOrderHeader) {
- if (in_array($docOrderHeader['userdefine1'], ['SFJR', 'SFJRDF'])) return '1';
- if (in_array($docOrderHeader['userdefine1'], ['SFSY', 'SFSYDF', 'SFSYQHD'])) return '4';
- if (in_array($docOrderHeader['userdefine1'], ['SFTH', 'SFTHQHD'])){
- if (in_array($docOrderHeader['c_province'], ['西藏', '西藏自治区'])) return '4';
- else return '68';
- }
- if ($docOrderHeader['userdefine1'] == 'SFTHDF'){
- if (in_array($docOrderHeader['c_province'], ['上海', '上海市', '江苏', '江苏省', '浙江', '浙江省', '安徽省', '安徽', '西藏', '西藏自治区'])) return '4';
- else return '6';
- }
- return '';
- })();
- // js 结算方式
- $js = (function () use ($docOrderHeader) {
- if (in_array($docOrderHeader['userdefine1'], ['SFSYDF', 'SFTHDF'])) return "到付";
- else return '季付月结';
- })();
- // 寄付月结
- $jfyj = (function () use ($docOrderHeader) {
- $base_customer = $docOrderHeader['oracleBASCustomer'];
- if (in_array($docOrderHeader['userdefine1'], ['SFSY', 'SFSYQHD', 'SFJR'])) return '寄付月结:0210188294';
- if (in_array($docOrderHeader['userdefine1'], ['SFTH', 'SFTHQHD'])) {
- if ($base_customer['udf3'] == '货安') return '寄付月结:0210321137';
- if ($base_customer['udf3'] != '货安') return '寄付月结:0218877996';
- }
- if (in_array($docOrderHeader['userdefine1'], ['SFTH', 'SFTHQHD'])) return '到付';
- return '寄付月结:0210188294';
- })();
- // 仓库
- $wh = (function () use ($docOrderHeader) {
- $customerid = $docOrderHeader['customerid'] ?? '';
- if (strstr($customerid,'泗砖' )) return '泗砖宝石仓';
- if (strstr($customerid,'武乡' )) return '武乡宝石仓';
- if (strstr($customerid,'九干' )) return '九干宝石仓';
- return '宝时仓';
- })();
- $yd = (function () use ($docOrderHeader) {
- if ($docOrderHeader['carrierid'] == 'YUNDA') {
- if (in_array($docOrderHeader['c_province'], ['上海', '上海市'])) return 'A';
- if (in_array($docOrderHeader['c_province'], ['江苏', '江苏省', '浙江', '浙江省'])) return 'B';
- if (in_array($docOrderHeader['c_province'], ['北京', '北京市', '安徽', '安徽省', '山东', '河南', '江西', '湖南', '湖北', '山东省', '河南省', '江西省', '湖南省', '湖北省'])) return 'C';
- if (!in_array($docOrderHeader['c_province'],['上海','上海市','江苏','江苏省','浙江','浙江省','北京','北京市','安徽','安徽省','山东','河南','江西','湖南','湖北','山东省','河南省','江西省','湖南省','湖北省']))
- return 'D';
- }
- return '';
- })();
- return [
- 'waveno' => $docOrderHeader['waveno'] ?? '',
- 'print_sum' => '总打印数' . ($owner_count ?? 0) . '行号#' .$docOrderHeader->oracleDOCWaveDetail['seqno'] ?? '', // 订单所处波次的序号,
- 'wave_count' => $owner_count,
- 'orderno' => $docOrderHeader['orderno'] ?? '',
- 'logistic_number' => $docOrderHeader['deliveryno'] ?? $docOrderHeader['soreference5'],
- 'count' => $owner_count, // 订单所属波次订单总数
- 'orderseq' => $orderseq, // 订单序号
- 'seqno' => $seqno, // 打印序号
- 'remark1' => $remark1, // 备注1
- 'remark2' => $remark2, // 备注2
- 'remark3' => $remark3, // 备注3
- 'grossweight' => $docOrderHeader->oracleDOCWaveDetail['grossweight'] ?? '', // 重量
- 'wh' => $wh, // 仓库
- 'whaddr' => $whaddr, // 仓库地址
- 'deliveryno' => '', // 快递单号
- 'raddr' => ($docOrderHeader['c_province'] ?? '') . ' ' . ($docOrderHeader['c_city'] ?? '') . ' ' . ($docOrderHeader['c_address2'] ?? ''), // 发货地址
- 'c_contact' => $docOrderHeader['c_contact'],
- 'c_province' => $docOrderHeader['c_province'],
- 'c_city'=> $docOrderHeader['c_city'],
- 'c_address2' => $docOrderHeader['c_address2'] ?? $docOrderHeader['c_district'],
- 'c_tel1' => $docOrderHeader['c_tel1'] ?? $docOrderHeader['c_tel2'],
- 'c_tel2' => $docOrderHeader['c_tel2'] ,
- 'issuepartyname' => $docOrderHeader['issuepartyname'] ?? '宝时云仓',
- 'tel' => $tel, // 售后电话
- 'number' => $number, //
- 'js' => $js, // 结算方式
- 'jfyj' => $jfyj, // 季付 月结
- 'YD' => $yd, // 韵达自定义
- 'date' => Carbon::now()->format(Carbon::DEFAULT_TO_STRING_FORMAT)
- ];
- }
- }
|