DeliveryProcess.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276
  1. <?php
  2. namespace App\Traits;
  3. use App\Logistic;
  4. use App\OracleDOCOrderDetail;
  5. use App\OracleDOCOrderHeader;
  6. use App\OracleDOCWaveDetails;
  7. use App\Owner;
  8. use App\OwnerLogisticPrintTemplate;
  9. use Illuminate\Support\Carbon;
  10. use Illuminate\Support\Facades\Cache;
  11. trait DeliveryProcess
  12. {
  13. use DrawImage;
  14. // 将 base64编码 转 图片 进行修改并保存,后把修改保存的图片转为 base64编码 返回
  15. function processing(&$params)
  16. {
  17. // TODO 获取模板
  18. $owner_query = Owner::query()->selectRaw('id')->where('code', $params['owner_code']);
  19. $logistic_query = Logistic::query()->selectRaw('id')->where('code', $params['logistic_code']);
  20. $item = OwnerLogisticPrintTemplate::query()->with('printTemplate')->where('owner_id', $owner_query)->where('logistic_id', $logistic_query)->first();
  21. $item = $item->printTemplate;
  22. $item->printTemplate;
  23. $path = '';
  24. $img = $this->getImage($params['base64'], $path);
  25. $img = $this->draw(null, $item, $img);
  26. $img->save($path);
  27. $arr = [];
  28. if (Cache::has('print-template-file-list')) {
  29. $arr = Cache::get('print-template-file-list');
  30. }
  31. $arr[] = ['time' => Carbon::now(), 'path' => $path];
  32. Cache::put('print-template-file-list', $arr);
  33. // TODO 将文件进行base64编码
  34. if ($fp = fopen($path, "rp", 0)) {
  35. $gambar = fread($fp, filesize($path));
  36. fclose($fp);
  37. $params['base64'] = chunk_split(base64_encode($gambar));
  38. }
  39. $params['is_process'] = true;
  40. return $params;
  41. }
  42. // $item
  43. // 将按条件转化为
  44. function getDeliveryInfo($item, $type): ?array
  45. {
  46. if (in_array($type, ['TB', '', 'PDD', 'SF'])) return $this->getDocOrderDeliveryInfo($item);
  47. else if (in_array($type, ['JD', 'SFQHD'])) return $this->getDocOrderInfo($item);
  48. return [];
  49. }
  50. // TB PDD
  51. function getDocOrderDeliveryInfo($docOrderDelivery)
  52. {
  53. // 承运商
  54. $logistic_name = (function () use ($docOrderDelivery) {
  55. $logistic = Logistic::query()->where('code', $docOrderDelivery->docOrderHeader['carrierid'])->first();
  56. return $logistic['name'] ?? '';
  57. })();
  58. // 波次
  59. $wave_count = (function () use ($docOrderDelivery) {
  60. return OracleDOCWaveDetails::query()->where('waveno', $docOrderDelivery->docOrderHeader['waveno'])->count();
  61. });
  62. // 订单商品总数
  63. $sum = (function () use ($docOrderDelivery) {
  64. return OracleDOCOrderDetail::query()->where('orderno', $docOrderDelivery->docOrderHeader['ordenro'])->sum('qtyAllocated_each');
  65. });
  66. // 备注
  67. list($remark1, $remark2, $remark3) = (function () use ($docOrderDelivery) {
  68. switch ($docOrderDelivery->docOrderHeader['customerid'] ?? '') {
  69. case 'BOAO':
  70. return ['易碎、易融', '不可放置自提柜!', '需当面签收!'];
  71. case 'LINGFEI':
  72. return ['快递小哥送货路远,风吹日晒注意安全,', '见到小主代问声好,你我共建文明家园!', ''];
  73. case 'WEIXI1':
  74. return ['售后电话13816946227', '', ''];
  75. default:
  76. return ['', '', ''];
  77. }
  78. })();
  79. // 大头笔
  80. $H_EDI_15 = $docOrderDelivery->docOrderHeader['H_EDI_15'];
  81. // 仓库
  82. $wh = (function () use ($docOrderDelivery) {
  83. $customerid = $docOrderDelivery->docOrderHeader['customerid'] ?? '';
  84. if (strstr('泗砖', $customerid)) return '泗砖宝石仓';
  85. if (strstr('武乡', $customerid)) return '武乡宝石仓';
  86. if (strstr('九干', $customerid)) return '九干宝石仓';
  87. return '宝时仓';
  88. });
  89. // whaddr 仓库地址
  90. $whaddr = (function () use ($docOrderDelivery) {
  91. $peo = $docOrderDelivery->docOrderHeader->oracleBASCustomer['address1'];
  92. if (strstr($peo, '九干')) return '上海上海市松江区九干路1300号';
  93. if (strstr($peo, '武乡')) return '上海嘉定区徐行镇武乡路9号';
  94. if (strstr($peo, '泗砖')) return '上海嘉定区徐行镇武乡路9号';
  95. return '宝时仓';
  96. });
  97. $consigneeid = $docOrderDelivery->docOrderHeader['consigneeid'];
  98. // 城镇 收货
  99. $raddr = (function () use ($docOrderDelivery) {
  100. return ($docOrderHeader['c_province'] ?? '') . ' ' . ($docOrderHeader['c_city'] ?? '') . ' ' . ($docOrderHeader['c_address2'] ?? '');
  101. })();
  102. // 韵达特殊处理
  103. $yd = (function () use ($docOrderDelivery) {
  104. $carrierid = $docOrderDelivery->docOrderHeader['carrierid'];
  105. if ($carrierid !== "YUNDA") return '';
  106. if (in_array($carrierid, ['上海', '上海市'])) return 'A';
  107. if (in_array($carrierid, ['江苏', '江苏省', '浙江', '浙江省'])) return 'B';
  108. if (in_array($carrierid, ['北京', '北京市', '安徽', '安徽省', '山东', '河南', '江西', '湖南', '湖北', '山东省', '河南省', '江西省', '湖南省', '湖北省'])) return 'C';
  109. if (in_array($carrierid, [
  110. '上海', '上海市', '江苏', '江苏省', '浙江', '浙江省', '北京', '北京市', '安徽', '安徽省', '山东', '河南', '江西', '湖南', '湖北', '山东省', '河南省', '江西省', '湖南省', '湖北省'
  111. ])) return 'D';
  112. return '';
  113. });
  114. return [
  115. 'waveno' => $docOrderDelivery->docOrderHeader['owner'], // 波次
  116. 'print_sum' => '总打印数' . ($count ?? 0) . '行号#' . $docOrderDelivery->docOrderHeader->oracleDOCWaveDetail['seqno'], // 订单所处波次的序号
  117. 'count' => $sum, // 订单商品总数
  118. 'remark1' => $remark1,
  119. 'remark2' => $remark2,
  120. 'remark3' => $remark3,
  121. 'wh' => $wh,
  122. 'whaddr' => $whaddr, // 仓库地址
  123. 'deliveryno' => $item->docOrderHeader['deliveryno'] ?? $docOrderDelivery->docOrderHeader['soreference5'], // 快递单号
  124. 'raddr' => $raddr, // 收货地址
  125. 'yd' => $yd, // 韵达特殊处理
  126. ];
  127. }
  128. // SF SFQHD JD
  129. function getDocOrderInfo($docOrderHeader)
  130. {
  131. $c_contact = $docOrderHeader['c_contact'];
  132. $c_province = $docOrderHeader['c_province'];
  133. $c_city = $docOrderHeader['c_city'];
  134. $c_address2 = $docOrderHeader['c_address2'] ?? $docOrderHeader['c_district'];
  135. $c_tel1 = $docOrderHeader['c_tel1'] ?? $docOrderHeader['c_tel2'];
  136. $c_tel1 = $docOrderHeader['c_tel2'];
  137. $issuepartyname = $docOrderHeader['issuepartyname'] ?? '宝时云仓';
  138. $tel = (function () use ($docOrderHeader) {
  139. if (in_array($docOrderHeader['customerid'], ['HANDA', 'BAIPING', 'JINBAOBEI', 'DUOCHOU', 'YUNKAI']) &&
  140. in_array($docOrderHeader['issuepartyname'], ['私密渠道A', '私密渠道BP', '金宝贝启蒙', 'ATSUGI厚木', '初品公司'])) {
  141. return '18616839461';
  142. }
  143. if (in_array($docOrderHeader['customerid'], ['HEDI']) &&
  144. in_array($docOrderHeader['issuepartyname'], ['马丁'])) {
  145. return 18811144744;
  146. }
  147. return '13761413262';
  148. })();
  149. $bas_customer = $docOrderHeader->bas_customer;
  150. // whaddr 仓库地址
  151. $whaddr = (function () use ($bas_customer) {
  152. $address = $bas_customer['address1'];
  153. if (strstr($address, '泗砖')) return '上海上海市松江区泗砖公路351号';
  154. if (strstr($address, '武乡')) return '上海嘉定区徐行镇武乡路9号';
  155. if (strstr($address, '九干')) return '上海上海市松江区九干路1300号';
  156. return '';
  157. })();
  158. // $ordercount 订单波次的订单总数
  159. $ordercount = (function () use ($docOrderHeader) {
  160. return OracleDOCWaveDetails::query()->where('waveno', $docOrderHeader['waveno'])->count();
  161. })();
  162. // orderseq 订单在波次里的序号
  163. $orderseq = (function () use ($docOrderHeader) {
  164. return $docOrderHeader->oracleDOCWaveDetail->seqno ?? '';
  165. })();
  166. // seqno
  167. $seqno = (function () use ($docOrderHeader, $orderseq) {
  168. $count = OracleDOCWaveDetails::query()->where('waveno', $docOrderHeader['waveno'])->count();
  169. return '总打印数' . ($count) . " 行号#" . $orderseq;
  170. })();
  171. $orderno = $docOrderHeader['orderno'];
  172. // 重量
  173. $grossweight = $docOrderHeader->oracleDOCWaveDetail['grossweight'] ?? '';
  174. // 备注
  175. list($remark1, $remark2, $remark3) = (function () use ($docOrderHeader) {
  176. switch ($docOrderHeader['customerid'] ?? '') {
  177. case 'BOAO':
  178. return ['易碎、易融', '不可放置自提柜!', '需当面签收!'];
  179. case 'LINGFEI':
  180. return ['快递小哥送货路远,风吹日晒注意安全,', '见到小主代问声好,你我共建文明家园!', ''];
  181. case 'WEIXI1':
  182. return ['售后电话13816946227', '', ''];
  183. default:
  184. return ['', '', ''];
  185. }
  186. })();
  187. $number = (function () use ($docOrderHeader) {
  188. if (in_array($docOrderHeader['userdefine1'], ['SFJR', 'SFJRDF'])) return '1';
  189. if (in_array($docOrderHeader['userdefine1'], ['SFSY', 'SFSYDF', 'SFSYQHD'])) return '4';
  190. if (in_array($docOrderHeader['userdefine1'], ['SFTH', 'SFTHQHD'])
  191. && in_array($docOrderHeader['c_province'], ['西藏', '西藏自治区']))
  192. return '4';
  193. if (in_array($docOrderHeader['userdefine1'], ['SFTH', 'SFTHQHD'])
  194. && !in_array($docOrderHeader['c_province'], ['西藏', '西藏自治区']))
  195. return '68';
  196. if ($docOrderHeader['userdefine1'] == 'SFTHDF'
  197. && in_array($docOrderHeader['c_province'], ['上海', '上海市', '江苏', '江苏省', '浙江', '浙江省', '安徽省', '安徽', '西藏', '西藏自治区']))
  198. return '4';
  199. if ($docOrderHeader['userdefine1'] == 'SFTHDF'
  200. && !in_array($docOrderHeader['c_province'], ['上海', '上海市', '江苏', '江苏省', '浙江', '浙江省', '安徽省', '安徽', '西藏', '西藏自治区']))
  201. return '6';
  202. })();
  203. // js 结算方式
  204. $js = (function () use ($docOrderHeader) {
  205. if (in_array($docOrderHeader['userdefine1'], ['SFSYDF', 'SFTHDF'])) return "到付";
  206. else return '季付月结';
  207. })();
  208. //
  209. $jfyj = (function()use($docOrderHeader){
  210. $base_customer = $docOrderHeader['oracleBASCustomer'];
  211. if (in_array($docOrderHeader['userdefine1'],['SFSY','SFSYQHD','SFJR'])) return '寄付月结:0210188294';
  212. if (in_array($docOrderHeader['userdefine1'],['SFTH','SFTHQHD'])){
  213. if ($base_customer['udf3'] == '货安') return '寄付月结:0210321137';
  214. if ($base_customer['udf3'] != '货安') return '寄付月结:0218877996';
  215. }
  216. if (in_array($docOrderHeader['userdefine1'],['SFTH','SFTHQHD'])) return '到付';
  217. return '寄付月结:0210188294';
  218. })();
  219. return [
  220. 'waveno' => $docOrderHeader['owner'],
  221. 'print_sum' => '',
  222. 'count' => '',
  223. 'remark1' => $remark1,
  224. 'remark2' => $remark2,
  225. 'remark3' => $remark3,
  226. 'wh' => '',
  227. 'whaddr' => '',
  228. 'deliveryno' => '',
  229. 'raddr' => '',
  230. 'yd' => '',
  231. ];
  232. }
  233. }