Browse Source

修复打印订单超过5000字节报错

shizhongqi 10 months ago
parent
commit
d25e5a9740

+ 0 - 3
app-ghs/controllers/OrderController.php

@@ -27,14 +27,11 @@ use common\components\noticeUtil;
 use common\components\orderSn;
 use common\components\oss;
 use common\components\payUtil;
-use common\components\printUtil;
 use common\components\qrCodeUtil;
 use common\components\stringUtil;
 use Yii;
 use common\components\util;
 use biz\shop\classes\ShopAdminClass;
-use biz\notice\classes\NoticeClass;
-use biz\wx\classes\WxMessageClass;
 use biz\shop\classes\ShopClass;
 use common\components\lakala\Lakala;
 

+ 0 - 3
app-ghs/controllers/PurchaseOrderController.php

@@ -4,7 +4,6 @@ namespace ghs\controllers;
 
 use biz\ghs\classes\GhsClass;
 use biz\sj\classes\SjClass;
-use biz\wx\classes\WxMessageClass;
 use bizGhs\book\classes\BookItemClass;
 use bizGhs\order\classes\PurchaseOrderClass;
 use bizGhs\order\classes\PurchaseOrderItemClass;
@@ -12,13 +11,11 @@ use bizGhs\product\classes\ProductClass;
 use bizGhs\shop\classes\ShopClass;
 use bizHd\purchase\classes\PurchaseClass;
 use common\components\dateUtil;
-use common\components\dict;
 use common\components\dirUtil;
 use common\components\noticeUtil;
 use common\components\printUtil;
 use common\components\stringUtil;
 use common\components\util;
-use biz\shop\classes\ShopExtClass;
 use Yii;
 
 class PurchaseOrderController extends BaseController

+ 0 - 1
biz-ghs/order/classes/OrderClass.php

@@ -1737,7 +1737,6 @@ class OrderClass extends BaseClass
     //云打印 ssh 20210709
     public static function onlinePrint($orderInfo, $showPrice = 1)
     {
-
         if (getenv('YII_ENV') == 'production') {
             //淮北花语集、丽子鲜花,客户线上下单不显示价格,门店开单显示价格
             if ($orderInfo->shopId == 1527 || $orderInfo->mainId == 52291) {

+ 45 - 4
common/components/printUtil.php

@@ -37,8 +37,19 @@ class printUtil
             'content' => $content,
             'times' => $this->times//打印次数
         );
-        $client = new \HttpClient(self::IP, self::PORT);
-        if (!$client->post(self::PATH, $msgInfo)) {
+        try {
+            $client = new \HttpClient(self::IP, self::PORT);
+            $client->useGzip(false); //禁用 Gzip
+            $rs = $client->post(self::PATH, $msgInfo);
+            //服务器返回的JSON字符串,建议要当做日志记录起来
+            $result = $client->getContent();
+            //echo $result;
+        } catch (\Exception $e) {
+            Yii::error('打印日志:' . $e->getMessage());
+            noticeUtil::push("出现打印标签,内容:{$content},原因:" . $e->getMessage(), '15280215347');
+            return;
+        }
+        if (!$rs) {
             //echo 'error';
         } else {
             //服务器返回的JSON字符串,建议要当做日志记录起来
@@ -48,6 +59,28 @@ class printUtil
     }
 
     public function printMsg($content, $shop = null, $orderSn = '')
+    {
+        $contentLength = strlen($content);
+        if ($contentLength > 5000) {
+            $contents = explode("<BR>", $content);
+            $newContent = '';
+            foreach ($contents as $line) {
+                if (strlen($newContent . $line . "<BR>") > 5000) {
+                    $this->doPrint($newContent, $shop, $orderSn);
+                    $newContent = $line . "<BR>";
+                } else {
+                    $newContent .= $line . "<BR>";
+                }
+            }
+            if (!empty($newContent)) {
+                $this->doPrint($newContent, $shop, $orderSn);
+            }
+        } else {
+            $this->doPrint($content, $shop, $orderSn);
+        }
+    }
+
+    private function doPrint($content, $shop = null, $orderSn = '')
     {
         $time = time();         //请求时间
         $msgInfo = array(
@@ -59,8 +92,16 @@ class printUtil
             'content' => $content,
             'times' => $this->times//打印次数
         );
-        $client = new \HttpClient(self::IP, self::PORT);
-        if (!$client->post(self::PATH, $msgInfo)) {
+        try {
+            $client = new \HttpClient(self::IP, self::PORT);
+            $client->useGzip(false); // 禁用 Gzip
+            $rs = $client->post(self::PATH, $msgInfo);
+        } catch (\Exception $e) {
+            Yii::error('打印日志:' . $e->getMessage());
+            noticeUtil::push($shop->merchantName . $shop->shopName . " 出现订单打印未成功,订单号:{$orderSn},原因:" . $e->getMessage(), '15280215347');
+            return;
+        }
+        if (!$rs) {
             //echo 'error';
         } else {
             //服务器返回的JSON字符串,建议要当做日志记录起来