|
|
@@ -49,12 +49,14 @@ class ProductService extends BaseService
|
|
|
foreach ($classIds as $classVal) {
|
|
|
$classId = $classVal['id'];
|
|
|
$className = $classVal['name'] ?? '';
|
|
|
- $cover = imgUtil::groupImg($classVal['cover'])."?x-oss-process=image/resize,m_fill,h_90,w_90";
|
|
|
+ $print = $classVal['print'] ?? 1;
|
|
|
+ $cover = imgUtil::groupImg($classVal['cover']) . "?x-oss-process=image/resize,m_fill,h_90,w_90";
|
|
|
if ($classId > 0) {
|
|
|
$tmp = [];
|
|
|
$tmp['classId'] = $classId;
|
|
|
$tmp['className'] = $classVal['name'] ?? '';
|
|
|
$tmp['classCover'] = $cover;
|
|
|
+ $tmp['print'] = $print;
|
|
|
$items = $classMapItem[$classId] ?? [];
|
|
|
if ($items) {
|
|
|
if ($itemInfoData) {
|
|
|
@@ -63,6 +65,7 @@ class ProductService extends BaseService
|
|
|
//冗余给前端使用 2021.1.31 lqh
|
|
|
$v['classId'] = $classId;
|
|
|
$v['className'] = $className;
|
|
|
+ $v['print'] = $print;
|
|
|
$tmp['child'][] = $v;
|
|
|
}
|
|
|
}
|
|
|
@@ -76,7 +79,8 @@ class ProductService extends BaseService
|
|
|
}
|
|
|
}
|
|
|
if ($showTodayDiscount && !empty($tjItem)) {
|
|
|
- $tjClass = [['classId' => self::TJ_CLASS_ID, 'className' => '今日特价', 'classCover' => imgUtil::groupImg('item_class/tj.jpg'), 'child' => $tjItem,]];
|
|
|
+ $tjClass = [['classId' => self::TJ_CLASS_ID, 'className' => '今日特价', 'print' => 0,
|
|
|
+ 'classCover' => imgUtil::groupImg('item_class/tj.jpg'), 'child' => $tjItem,]];
|
|
|
$classData = array_merge($tjClass, $classData);
|
|
|
}
|
|
|
return $classData;
|
|
|
@@ -111,6 +115,142 @@ class ProductService extends BaseService
|
|
|
return $data;
|
|
|
}
|
|
|
|
|
|
+ //生成价格表 ssh 20210922
|
|
|
+ public static function generateItemTable($sjId, $level, $mainId = 0)
|
|
|
+ {
|
|
|
+ $status = 1;
|
|
|
+
|
|
|
+ //获取所有当前供货商的分类
|
|
|
+ //根据分类组装分类下的花材信息
|
|
|
+ //中央ID
|
|
|
+ $classIds = ItemClassClass::getGhsItemClassAll($mainId);
|
|
|
+
|
|
|
+ $where['mainId'] = $mainId;
|
|
|
+ $where['status'] = $status;
|
|
|
+ $where['delStatus'] = 0;
|
|
|
+
|
|
|
+ $itemInfoData = ProductClass::getAllByCondition($where, ['inTurn' => SORT_DESC, 'actualSold' => SORT_DESC], "*");
|
|
|
+ $itemInfoData = ProductClass::groupProductInfo($itemInfoData, $level);
|
|
|
+
|
|
|
+ $data = self::assembleData($classIds, $itemInfoData, true);
|
|
|
+
|
|
|
+ $formatData = [];
|
|
|
+
|
|
|
+ foreach ($data as $key => $class) {
|
|
|
+ $print = $class['print'] ?? 1;
|
|
|
+ if ($print == 0) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ $name = $class['className'] ?? '';
|
|
|
+ $formatData[] = ['name' => $name, 'price' => ''];
|
|
|
+ if (isset($class['child']) && !empty($class['child'])) {
|
|
|
+ foreach ($class['child'] as $cKey => $child) {
|
|
|
+ $cName = $child['name'] ?? '';
|
|
|
+ $price = $child['price'] ?? '';
|
|
|
+ $formatData[] = [
|
|
|
+ 'name' => $cName,
|
|
|
+ 'price' => $price,
|
|
|
+ ];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ $map = CustomClass::$nickNameMap;
|
|
|
+ $levelName = $map[$level] ?? '';
|
|
|
+
|
|
|
+ $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");
|
|
|
+
|
|
|
+ //$objPHPExcel->getActiveSheet()->getHeaderFooter()->setOddHeader(date('n月j日') . " " . $levelName . "客户");
|
|
|
+ //$objPHPExcel->getActiveSheet()->getHeaderFooter()->setOddHeader(date('n月j日') . " 编号 " . $level);
|
|
|
+ $topLevelName = $levelName;
|
|
|
+ if ($level == CustomClass::LEVEL_SK) {
|
|
|
+ $topLevelName = '';
|
|
|
+ }
|
|
|
+ $objPHPExcel->getActiveSheet()->getHeaderFooter()->setOddHeader(date('n月j日') . " " . $topLevelName);
|
|
|
+
|
|
|
+ $objPHPExcel->getActiveSheet()->getPageMargins()->setTop(0.7);
|
|
|
+ $objPHPExcel->getActiveSheet()->getPageMargins()->setBottom(0.1);
|
|
|
+ $objPHPExcel->getActiveSheet()->getPageMargins()->setLeft(0.5);
|
|
|
+ $objPHPExcel->getActiveSheet()->getPageMargins()->setRight(0);
|
|
|
+ $objPHPExcel->getActiveSheet()->getPageMargins()->setHeader(0.1);
|
|
|
+ $objPHPExcel->getActiveSheet()->getPageMargins()->setFooter(0);
|
|
|
+
|
|
|
+ $i = 1;
|
|
|
+ $letter = [1 => ['A', 'B'], 2 => ['C', 'D'], 3 => ['E', 'F'], 4 => ['G', 'H'], 5 => ['I', 'J'], 6 => ['K', 'L'], 7 => ['M', 'N'],
|
|
|
+ 8 => ['O', 'P'], 9 => ['Q', 'R'], 10 => ['S', 'T'], 11 => ['U', 'V']];
|
|
|
+ $lastCell = '';
|
|
|
+ //最大行
|
|
|
+ $max = 50;
|
|
|
+ foreach ($formatData as $key => $product) {
|
|
|
+ $currentPage = ceil($i / $max);
|
|
|
+ $x = $i % $max == 0 ? $max : $i % $max;
|
|
|
+ $before = $letter[$currentPage][0] ?? 'A';
|
|
|
+ $after = $letter[$currentPage][1] ?? 'B';
|
|
|
+
|
|
|
+ //行高14
|
|
|
+ $objPHPExcel->getActiveSheet()->getRowDimension($x)->setRowHeight(15);
|
|
|
+
|
|
|
+ //设置表格宽度
|
|
|
+ $objPHPExcel->getActiveSheet()->getColumnDimension($before)->setWidth(11);
|
|
|
+ $objPHPExcel->getActiveSheet()->getColumnDimension($after)->setWidth(5);
|
|
|
+
|
|
|
+ if (isset($product['price']) == false || empty($product['price'])) {
|
|
|
+ //没有价格的合并单元格
|
|
|
+ $objPHPExcel->getActiveSheet()->mergeCells("{$before}{$x}:{$after}{$x}")->setCellValue($before . $x, $product['name']);
|
|
|
+ //加粗
|
|
|
+ $objPHPExcel->getActiveSheet()->getStyle($before . $x)->getFont()->setSize(9)->setBold(true);
|
|
|
+ $objPHPExcel->getActiveSheet()->getStyle($before . $x)->getFont()->setName('微软雅黑');
|
|
|
+ //居中
|
|
|
+ $objPHPExcel->getActiveSheet()->getStyle($before . $x)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
|
|
|
+ //垂直居中
|
|
|
+ $objPHPExcel->getActiveSheet()->getStyle($before . $x)->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
|
|
|
+ } else {
|
|
|
+ $objPHPExcel->getActiveSheet()->setCellValue($before . $x, $product['name'])->setCellValue($after . $x, '');
|
|
|
+ //字体大小
|
|
|
+ $objPHPExcel->getActiveSheet()->getStyle($before . $x)->getFont()->setSize(9);
|
|
|
+ //垂直居中
|
|
|
+ $objPHPExcel->getActiveSheet()->getStyle($before . $x)->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
|
|
|
+ }
|
|
|
+ $lastCell = $after . $max;
|
|
|
+ $i++;
|
|
|
+ }
|
|
|
+
|
|
|
+ //设置边框
|
|
|
+ $objPHPExcel->getActiveSheet()->getStyle('A1:' . $lastCell)->applyFromArray(array('borders' => array('allborders' => array('style' => \PHPExcel_Style_Border::BORDER_THIN),)));
|
|
|
+
|
|
|
+ $objPHPExcel->getActiveSheet()->setTitle('价格表');
|
|
|
+
|
|
|
+ $objPHPExcel->setActiveSheetIndex(0);
|
|
|
+
|
|
|
+ $dir = './priceTable/' . $sjId;
|
|
|
+ if (file_exists($dir) == false) {
|
|
|
+ mkdir($dir, 0777, true);
|
|
|
+ }
|
|
|
+ //$date = date("m-d") . "-" . $levelName . "-编号" . $level;
|
|
|
+ $date = date("m-d") . "-" . $levelName;
|
|
|
+
|
|
|
+ $file = $date . '.xls';
|
|
|
+ $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
|
|
|
+
|
|
|
+ if (file_exists($dir . '/' . $file)) {
|
|
|
+ unlink($dir . '/' . $file);
|
|
|
+ }
|
|
|
+ $objWriter->save($dir . '/' . $file);
|
|
|
+
|
|
|
+ return ['file' => '/priceTable/' . $sjId . '/' . $file, 'shortFile' => $file];
|
|
|
+ }
|
|
|
+
|
|
|
//生成价格表 ssh 20210922
|
|
|
public static function generatePriceTable($sjId, $level, $mainId = 0)
|
|
|
{
|