|
|
@@ -7,6 +7,8 @@ use bizGhs\base\services\BaseService;
|
|
|
use bizGhs\custom\classes\CustomClass;
|
|
|
use bizGhs\item\classes\ItemClassClass;
|
|
|
use bizGhs\product\classes\ProductClass;
|
|
|
+use common\components\barcodeUtil;
|
|
|
+use common\components\dirUtil;
|
|
|
use common\services\xhItemService;
|
|
|
use Yii;
|
|
|
|
|
|
@@ -235,4 +237,112 @@ class ProductService extends BaseService
|
|
|
return ['file' => '/priceTable/' . $sjId . '/' . $file, 'shortFile' => $file];
|
|
|
}
|
|
|
|
|
|
+ //生成条形码 linqh 20211227
|
|
|
+ public static function generateBarcodeTable($sjId, $shopId)
|
|
|
+ {
|
|
|
+ $classIds = ItemClassClass::getGhsItemClassAll($sjId);
|
|
|
+ $where['sjId'] = $sjId;
|
|
|
+ $where['shopId'] = $shopId;
|
|
|
+ $where['delStatus'] = 0;
|
|
|
+ $product = ProductClass::getAllByCondition($where,null,"*");
|
|
|
+ $data = [];
|
|
|
+ foreach ($product as $v){
|
|
|
+ $tmp = [];
|
|
|
+ $tmp['id'] = $v['id'];
|
|
|
+ $tmp['name'] = $v['name'];
|
|
|
+ $data[$v['classId']][] = $tmp;
|
|
|
+ }
|
|
|
+ $phpExcelFile = Yii::getAlias("@vendor/phpoffice/phpexcel/");
|
|
|
+ require_once($phpExcelFile . 'Classes/PHPExcel.php');
|
|
|
+
|
|
|
+ $objPHPExcel = new \PHPExcel();
|
|
|
+ $objPHPExcel->getProperties()->setCreator("Maarten Balliauw")
|
|
|
+ ->setLastModifiedBy("Maarten Balliauw")
|
|
|
+ ->setTitle("Office 2007 XLSX Test Document")
|
|
|
+ ->setSubject("Office 2007 XLSX Test Document")
|
|
|
+ ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")
|
|
|
+ ->setKeywords("office 2007 openxml php")
|
|
|
+ ->setCategory("Test result file");
|
|
|
+
|
|
|
+ //一行五列
|
|
|
+ $column_start = "A";
|
|
|
+ $column_end = "F";
|
|
|
+ $title_array = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q',
|
|
|
+ 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'AG', 'AH'];
|
|
|
+ $i = 1;
|
|
|
+ $page = 0;
|
|
|
+ $objPHPExcel->setActiveSheetIndex($page);
|
|
|
+ foreach ($classIds as $k=>$v){
|
|
|
+ //if(($i%30==1|| $i%30==2 || $i%30==3 || $i%30==0 ) && $i >=30){
|
|
|
+ if($i >=30){
|
|
|
+ $i = 1;
|
|
|
+ $page ++;
|
|
|
+ $objPHPExcel->createSheet();
|
|
|
+ $objPHPExcel->setActiveSheetIndex($page);
|
|
|
+ }
|
|
|
+ $productData = $data[$v['id']]??[];
|
|
|
+ if(empty($productData)){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ $cate_name = $v['name']??'';
|
|
|
+ $objPHPExcel->getActiveSheet()->mergeCells("{$column_start}{$i}:{$column_end}{$i}")->setCellValue("A".$i,$cate_name);
|
|
|
+ //居中
|
|
|
+ $objPHPExcel->getActiveSheet()->getStyle("{$column_start}{$i}:{$column_end}{$i}")->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
|
|
|
+ //加粗
|
|
|
+ $objPHPExcel->getActiveSheet()->getStyle("{$column_start}{$i}:{$column_end}{$i}")->getFont()->setSize(18)->setBold(true);
|
|
|
+ $i ++;
|
|
|
+
|
|
|
+ if($productData){
|
|
|
+ $newChunk = array_chunk($productData,6); //6个一组
|
|
|
+ foreach ($newChunk as $c){
|
|
|
+
|
|
|
+ foreach ($c as $ck=>$cv){
|
|
|
+ $objPHPExcel->getActiveSheet()->setCellValue($title_array[$ck] . $i, $cv['name']);
|
|
|
+ //居中
|
|
|
+ $objPHPExcel->getActiveSheet()->getStyle("$title_array[$ck]$i")->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
|
|
|
+ }
|
|
|
+ $i++;
|
|
|
+ foreach ($c as $ck=>$cv){
|
|
|
+ $objDrawing = new \PHPExcel_Worksheet_Drawing;
|
|
|
+ $p = dirUtil::getBarcodeDir().$cv['id'].".jpg";
|
|
|
+ if(!file_exists($p)){
|
|
|
+ //生成条形码
|
|
|
+ barcodeUtil::generatorProductBarcode($cv['id']);
|
|
|
+ }
|
|
|
+ $objDrawing->setPath($p);
|
|
|
+ //$objDrawing->setHeight(130);//设置图片高度
|
|
|
+ $objDrawing->setOffsetX(12);//设置图片水平偏移
|
|
|
+ //$objDrawing->setOffsetY(1);//设置图片垂直偏移
|
|
|
+ $objPHPExcel->getActiveSheet()->getColumnDimension($title_array[$ck])->setWidth(15);
|
|
|
+ $objPHPExcel->getActiveSheet()->getRowDimension($i)->setRowHeight(30);
|
|
|
+ $objPHPExcel->getActiveSheet()->getStyle("{$title_array[$ck] }{$i}:{$title_array[$ck] }{$i}")->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
|
|
|
+ $objDrawing->setCoordinates($title_array[$ck] . ($i));
|
|
|
+ $objDrawing->setWorksheet($objPHPExcel->getActiveSheet());
|
|
|
+ //居中
|
|
|
+ $objPHPExcel->getActiveSheet()->getStyle("$title_array[$ck]$i")->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
|
|
|
+
|
|
|
+ }
|
|
|
+ $i++;
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $dir = './barcodeTable/' . $shopId;
|
|
|
+ if (file_exists($dir) == false) {
|
|
|
+ mkdir($dir, 0777, true);
|
|
|
+ }
|
|
|
+ //$date = date("m-d") . "-" . $levelName . "-编号" . $level;
|
|
|
+ $date = date("m-d");
|
|
|
+
|
|
|
+ $file = $date . '.xlsx';
|
|
|
+ $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
|
|
|
+
|
|
|
+ if (file_exists($dir . '/' . $file)) {
|
|
|
+ unlink($dir . '/' . $file);
|
|
|
+ }
|
|
|
+ $objWriter->save($dir . '/' . $file);
|
|
|
+
|
|
|
+ return ['file' => '/barcodeTable/' . $shopId . '/' . $file, 'shortFile' => $file];
|
|
|
+ }
|
|
|
+
|
|
|
}
|