فهرست منبع

制作单打印

shish 4 سال پیش
والد
کامیت
04d51ca385
4فایلهای تغییر یافته به همراه150 افزوده شده و 107 حذف شده
  1. 11 8
      app-hd/controllers/WorkController.php
  2. 3 96
      biz-hd/order/classes/OrderClass.php
  3. 45 0
      biz-hd/work/classes/WorkClass.php
  4. 91 3
      common/components/printUtil.php

+ 11 - 8
app-hd/controllers/WorkController.php

@@ -2,12 +2,10 @@
 
 namespace hd\controllers;
 
-use biz\stat\classes\StatWorkCountClass;
 use bizHd\goods\classes\CategoryClass;
 use bizHd\goods\classes\GoodsClass;
 use bizHd\work\classes\WorkClass;
 use bizHd\work\classes\WorkItemClass;
-use bizHd\work\services\WorkService;
 use common\components\imgUtil;
 use common\components\orderSn;
 use common\components\util;
@@ -18,6 +16,17 @@ class WorkController extends BaseController
 
     public $guestAccess = [];
 
+    //打印制作单 ssh 20220601
+    public function actionPrint()
+    {
+        $get = Yii::$app->request->get();
+        $id = $get['id'] ?? 0;
+        $work = WorkClass::getById($id, true);
+        WorkClass::valid($work, $this->mainId);
+        WorkClass::print($work);
+        util::complete();
+    }
+
     //制作单列表 ssh 20220319
     public function actionList()
     {
@@ -175,10 +184,4 @@ class WorkController extends BaseController
         }
     }
 
-    //打印
-    public function actionPrint()
-    {
-        util::complete();
-    }
-
 }

+ 3 - 96
biz-hd/order/classes/OrderClass.php

@@ -543,6 +543,8 @@ class OrderClass extends BaseClass
         $content .= '门店名称:' . $currentName . '<BR>';
         $content .= "<BR>";
 
+        $p = new printUtil($printSn);
+
         $orderSn = $order->orderSn ?? '';
         $workList = WorkClass::getAllByCondition(['orderSn' => $orderSn], null, '*', null, true);
         if (!empty($workList)) {
@@ -553,107 +555,12 @@ class OrderClass extends BaseClass
                 $sn = $work->sn ?? '';
                 $content .= '<B>制单编号:' . $sn . '<B>';
                 // 1-523 有-特殊符号,使用飞鹅自带的函数处理
-                $content .= self::bar_code($goodsSn);
+                $content .= $p->bar_code($goodsSn);
             }
         }
-
-        $p = new printUtil($printSn);
         $p->printMsg($content);
-
     }
 
-    //飞鹅自带函数 ssh 20220601
-    public static function bar_code($strnum)
-    {
-        $chr = '';
-        $codeB = array("\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39");//匹配字符集B
-        $codeC = array("\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0A", "\x0B", "\x0C", "\x0D", "\x0E", "\x0F", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1A", "\x1B", "\x1C", "\x1D", "\x1E", "\x1F", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2A", "\x2B", "\x2C", "\x2D", "\x2E", "\x2F", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3A", "\x3B", "\x3C", "\x3D", "\x3E", "\x3F", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4A", "\x4B", "\x4C", "\x4D", "\x4E", "\x4F", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5A", "\x5B", "\x5C", "\x5D", "\x5E", "\x5F", "\x60", "\x61", "\x62", "\x63");//匹配字符集C
-        $length = strlen($strnum);
-        $b = array();
-        $b[0] = "\x1b";
-        $b[1] = "\x64";
-        $b[2] = "\x02";
-        $b[3] = "\x1d";
-        $b[4] = "\x48";
-        $b[5] = "\x32";//条形码显示控制,\x32上图下字,\x31上字下图,\x30只显示条形码
-        $b[6] = "\x1d";
-        $b[7] = "\x68";
-        $b[8] = "\x50";// \x30 设置条形码高度,7F是最大的高度
-        $b[9] = "\x1d";
-        $b[10] = "\x77";
-        $b[11] = "\x02";// \x01 设置条形码宽度,1-6
-        $b[12] = "\x1d";
-        $b[13] = "\x6b";
-        $b[14] = "\x49";//选择条形码类型code128,code39,codabar等等
-        $b[15] = chr($length + 2);
-        $b[16] = "\x7b";
-        $b[17] = "\x42";//选择字符集
-        if ($length > 14 && is_numeric($strnum)) {//大于14个字符,且为纯数字的进来这个区间
-            $b[17] = "\x43";
-            $j = 0;
-            $key = 18;
-            $ss = $length / 2;//初始化数组长度
-            if ($length % 2 == 1) {//判断条形码为单数
-                $ss = $ss - 0.5;
-            }
-            for ($i = 0; $i < $ss; $i++) {
-                $temp = substr($strnum, $j, 2);
-                $iindex = intval($temp);
-                $j = $j + 2;
-                if ($iindex == 0) {
-                    $chr = '';
-                    if ($b[$key + $i - 1] == '0' && $b[$key + $i - 2] == '0') {//判断前面的为字符集B,此时不需要转换字符集
-                        $b[$key + $i] = $codeB[0];
-                        $b[$key + $i + 1] = $codeB[0];
-                        $key += 1;
-                    } else {
-                        if ($b[$key + $i - 1] == 'C' && $b[$key + $i - 2] == '{') {//判断前面的为字符集C时转换字符集B
-                            $b[$key + $i - 2] = "\x7b";
-                            $b[$key + $i - 1] = "\x42";
-                            $b[$key + $i] = $codeB[0];
-                            $b[$key + $i + 1] = $codeB[0];
-                            $key += 1;
-                        } else {
-                            $b[$key + $i] = "\x7b";
-                            $b[$key + $i + 1] = "\x42";
-                            $b[$key + $i + 2] = $codeB[0];
-                            $b[$key + $i + 3] = $codeB[0];
-                            $key += 3;
-                        }
-                    }
-                } else {
-                    if ($b[$key + $i - 1] == '0' && $b[$key + $i - 2] == '0' && $chr != 'chr') {//判断前面的为字符集B,此时要转换字符集C
-                        $b[$key + $i] = "\x7b";
-                        $b[$key + $i + 1] = "\x43";
-                        $b[$key + $i + 2] = $codeC[$iindex];
-                        $key += 2;
-                    } else {
-                        $chr = '';
-                        $b[$key + $i] = $codeC[$iindex];
-                        if ($iindex == 48) $chr = 'chr';//判断chr(48)等于0的情况
-                    }
-                }
-            }
-            @$lastkey = end(array_keys($b));//取得数组的最后一个元素的键
-            if ($length % 2 > 0) {
-                $lastnum = substr($strnum, -1);//取得字符串的最后一个数字
-                if ($b[$lastkey] == '0' && $b[$lastkey - 1] == '0') {//判断前面的为字符集B,此时不需要转换字符集
-                    $b[$lastkey + 1] = $codeB[$lastnum];
-                } else {
-                    $b[$lastkey + 1] = "\x7b";
-                    $b[$lastkey + 2] = "\x42";
-                    $b[$lastkey + 3] = $codeB[$lastnum];
-                }
-            }
-            @$b[15] = chr(end(array_keys($b)) - 15);//得出条形码长度
-            $str = implode("", $b);
-        } else {//1-14个字符的纯数字和非纯数字的条形码进来这个区间,支持数字,大小写字母,特殊字符例如:  !@#$%^&*()-=+_
-            $str = "\x1b\x64\x02\x1d\x48\x32\x1d\x68\x50\x1d\x77\x02\x1d\x6b\x49" . chr($length + 2) . "\x7b\x42" . $strnum;
-        }
-        return $str;
-    }
-
-
     //打印数据 ssh 20210702
     public static function getPrintData($order, $debtAmount)
     {

+ 45 - 0
biz-hd/work/classes/WorkClass.php

@@ -2,14 +2,17 @@
 
 namespace bizHd\work\classes;
 
+use biz\shop\classes\ShopExtClass;
 use biz\stat\classes\StatWorkCountClass;
 use bizHd\goods\classes\CategoryClass;
 use bizHd\goods\classes\GoodsCategoryClass;
 use bizHd\goods\classes\GoodsClass;
 use bizHd\goods\classes\GoodsItemClass;
+use bizHd\order\classes\OrderClass;
 use bizHd\order\classes\OrderGoodsClass;
 use common\components\imgUtil;
 use common\components\orderSn;
+use common\components\printUtil;
 use common\components\util;
 use bizHd\base\classes\BaseClass;
 
@@ -22,6 +25,48 @@ class WorkClass extends BaseClass
     const STATUS_COMPLETE = 1;
     const STATUS_CANCEL = 2;
 
+    //打印工单 ssh 20220601
+    public static function print($work)
+    {
+        $orderSn = $work->orderSn ?? '';
+        if (!empty($orderSn)) {
+            $order = OrderClass::getByCondition(['orderSn' => $orderSn], true);
+            if (empty($order)) {
+                util::fail('没有找到订单');
+            }
+            OrderClass::onlinePrint($order);
+        } else {
+            self::printWork($work);
+        }
+    }
+
+    //云打印
+    public static function printWork($work)
+    {
+        $shopId = $work->shopId ?? 0;
+        $ext = ShopExtClass::getByCondition(['shopId' => $shopId]);
+        $printSn = $ext['printSn'] ?? '';
+        if (empty($printSn)) {
+            return false;
+        }
+        $p = new printUtil($printSn);
+        $content = '';
+        $workSn = $work->workSn ?? '';
+        $workList = WorkClass::getAllByCondition(['workSn' => $workSn], null, '*', null, true);
+        if (!empty($workList)) {
+            $content .= "<BR>";
+            $content .= '--------------------------------<BR>';
+            foreach ($workList as $work) {
+                $goodsSn = $work->goodsSn ?? '';
+                $sn = $work->sn ?? '';
+                $content .= '<B>制单编号:' . $sn . '<B>';
+                // 1-523 有-特殊符号,使用飞鹅自带的函数处理
+                $content .= $p->bar_code($goodsSn);
+            }
+        }
+        $p->printMsg($content);
+    }
+
     public static function goodsCreateFinish($data, $main)
     {
         $goods = $data['goods'] ?? '';

+ 91 - 3
common/components/printUtil.php

@@ -6,9 +6,6 @@ use Yii;
 use yii\helpers\Json;
 use linslin\yii2\curl;
 
-/**
- * 微信和微信开放平台交互接口
- */
 class printUtil
 {
     public $access_token;
@@ -100,4 +97,95 @@ class printUtil
         $client->getContent();
     }
 
+    //飞鹅自带函数 ssh 20220601
+    public function bar_code($strnum)
+    {
+        $chr = '';
+        $codeB = array("\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39");//匹配字符集B
+        $codeC = array("\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0A", "\x0B", "\x0C", "\x0D", "\x0E", "\x0F", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1A", "\x1B", "\x1C", "\x1D", "\x1E", "\x1F", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2A", "\x2B", "\x2C", "\x2D", "\x2E", "\x2F", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3A", "\x3B", "\x3C", "\x3D", "\x3E", "\x3F", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4A", "\x4B", "\x4C", "\x4D", "\x4E", "\x4F", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5A", "\x5B", "\x5C", "\x5D", "\x5E", "\x5F", "\x60", "\x61", "\x62", "\x63");//匹配字符集C
+        $length = strlen($strnum);
+        $b = array();
+        $b[0] = "\x1b";
+        $b[1] = "\x64";
+        $b[2] = "\x02";
+        $b[3] = "\x1d";
+        $b[4] = "\x48";
+        $b[5] = "\x32";//条形码显示控制,\x32上图下字,\x31上字下图,\x30只显示条形码
+        $b[6] = "\x1d";
+        $b[7] = "\x68";
+        $b[8] = "\x50";// \x30 设置条形码高度,7F是最大的高度
+        $b[9] = "\x1d";
+        $b[10] = "\x77";
+        $b[11] = "\x02";// \x01 设置条形码宽度,1-6
+        $b[12] = "\x1d";
+        $b[13] = "\x6b";
+        $b[14] = "\x49";//选择条形码类型code128,code39,codabar等等
+        $b[15] = chr($length + 2);
+        $b[16] = "\x7b";
+        $b[17] = "\x42";//选择字符集
+        if ($length > 14 && is_numeric($strnum)) {//大于14个字符,且为纯数字的进来这个区间
+            $b[17] = "\x43";
+            $j = 0;
+            $key = 18;
+            $ss = $length / 2;//初始化数组长度
+            if ($length % 2 == 1) {//判断条形码为单数
+                $ss = $ss - 0.5;
+            }
+            for ($i = 0; $i < $ss; $i++) {
+                $temp = substr($strnum, $j, 2);
+                $iindex = intval($temp);
+                $j = $j + 2;
+                if ($iindex == 0) {
+                    $chr = '';
+                    if ($b[$key + $i - 1] == '0' && $b[$key + $i - 2] == '0') {//判断前面的为字符集B,此时不需要转换字符集
+                        $b[$key + $i] = $codeB[0];
+                        $b[$key + $i + 1] = $codeB[0];
+                        $key += 1;
+                    } else {
+                        if ($b[$key + $i - 1] == 'C' && $b[$key + $i - 2] == '{') {//判断前面的为字符集C时转换字符集B
+                            $b[$key + $i - 2] = "\x7b";
+                            $b[$key + $i - 1] = "\x42";
+                            $b[$key + $i] = $codeB[0];
+                            $b[$key + $i + 1] = $codeB[0];
+                            $key += 1;
+                        } else {
+                            $b[$key + $i] = "\x7b";
+                            $b[$key + $i + 1] = "\x42";
+                            $b[$key + $i + 2] = $codeB[0];
+                            $b[$key + $i + 3] = $codeB[0];
+                            $key += 3;
+                        }
+                    }
+                } else {
+                    if ($b[$key + $i - 1] == '0' && $b[$key + $i - 2] == '0' && $chr != 'chr') {//判断前面的为字符集B,此时要转换字符集C
+                        $b[$key + $i] = "\x7b";
+                        $b[$key + $i + 1] = "\x43";
+                        $b[$key + $i + 2] = $codeC[$iindex];
+                        $key += 2;
+                    } else {
+                        $chr = '';
+                        $b[$key + $i] = $codeC[$iindex];
+                        if ($iindex == 48) $chr = 'chr';//判断chr(48)等于0的情况
+                    }
+                }
+            }
+            @$lastkey = end(array_keys($b));//取得数组的最后一个元素的键
+            if ($length % 2 > 0) {
+                $lastnum = substr($strnum, -1);//取得字符串的最后一个数字
+                if ($b[$lastkey] == '0' && $b[$lastkey - 1] == '0') {//判断前面的为字符集B,此时不需要转换字符集
+                    $b[$lastkey + 1] = $codeB[$lastnum];
+                } else {
+                    $b[$lastkey + 1] = "\x7b";
+                    $b[$lastkey + 2] = "\x42";
+                    $b[$lastkey + 3] = $codeB[$lastnum];
+                }
+            }
+            @$b[15] = chr(end(array_keys($b)) - 15);//得出条形码长度
+            $str = implode("", $b);
+        } else {//1-14个字符的纯数字和非纯数字的条形码进来这个区间,支持数字,大小写字母,特殊字符例如:  !@#$%^&*()-=+_
+            $str = "\x1b\x64\x02\x1d\x48\x32\x1d\x68\x50\x1d\x77\x02\x1d\x6b\x49" . chr($length + 2) . "\x7b\x42" . $strnum;
+        }
+        return $str;
+    }
+
 }