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) ]; } }