浏览代码

feat: EK-3320: 订单增加 Invoice 下载

zhangl 1 月之前
父节点
当前提交
85ba82edd5
共有 1 个文件被更改,包括 62 次插入16 次删除
  1. 62 16
      common/libs/export/BaseExport.php

+ 62 - 16
common/libs/export/BaseExport.php

@@ -158,15 +158,15 @@ class BaseExport extends Component {
      */
     public function getSavePath() {
         $this->savePath = $this->pathCreator(date('Ymd', Date::nowTime()));
-        return trim($this->savePath, __DS__);
+        return trim((string)$this->savePath, __DS__);
     }
 
     /**
      * @return bool|string|null
      */
     public function getSaveBasePath() {
-        $this->saveBasePath = Yii::getAlias('@backendApi') . __DS__ . 'web' . __DS__ . 'upload' . __DS__ . \Yii::$app->params['excelLocalDir'];
-        return trim($this->saveBasePath, __DS__);
+        $this->saveBasePath = Yii::getAlias('@backendApi') . __DS__ . 'web' . __DS__ . 'upload' . __DS__ . (isset(\Yii::$app->params['excelLocalDir']) ? \Yii::$app->params['excelLocalDir'] : '');
+        return trim((string)$this->saveBasePath, __DS__);
     }
 
     /**
@@ -1555,24 +1555,70 @@ ORDER;
         $this->_listModel->isExport = true;
 
         // 查询订单数据
-        $query = OrderGoods::find()
-            ->alias('OG')
-            ->where($this->params['condition'], $this->params['params'])
-            ->select('OG.ID AS AID,O.*,U.REAL_NAME,U.DEC_ID,SG.CATEGORY_TYPE,OG.REAL_PRICE,OG.TAX_RATE,OG.BUY_NUMS,OG.SKU_CODE,OG.GOODS_TITLE,OG.REAL_PV')
-            ->join('LEFT JOIN', ORDER::tableName() . ' AS O', 'OG.ORDER_SN=O.SN')
-            ->join('LEFT JOIN', User::tableName() . ' AS U', 'U.ID=O.USER_ID')
-            ->join('LEFT JOIN', ShopGoods::tableName() . ' AS SG', 'SG.ID=OG.GOODS_ID')
-            ->orderBy('O.CREATED_AT DESC')
-            ->asArray();
-
+        // 使用新的查询对象,禁用查询缓存,确保获取最新数据
+        $query = OrderGoods::find() 
+             ->alias('OG') 
+             ->where($this->params['condition'], $this->params['params']) 
+             ->select('OG.ID AS AID,O.*,U.REAL_NAME,U.DEC_ID,SG.CATEGORY_TYPE,OG.REAL_PRICE,OG.TAX_RATE,OG.BUY_NUMS,OG.SKU_CODE,OG.GOODS_TITLE,OG.REAL_PV') 
+             ->join('LEFT JOIN', ORDER::tableName() . ' AS O', 'OG.ORDER_SN=O.SN') 
+             ->join('LEFT JOIN', User::tableName() . ' AS U', 'U.ID=O.USER_ID') 
+             ->join('LEFT JOIN', ShopGoods::tableName() . ' AS SG', 'SG.ID=OG.GOODS_ID') 
+             ->asArray()
+             ->noCache(); // 禁用查询缓存
+
+        // 添加详细的调试信息
+        $rawSql = $query->createCommand()->getRawSql();
         $oderList = $query->all();
-
+        
+        // 同时使用原生SQL查询进行对比测试
+        $nativeConnection = Yii::$app->db;
+        $nativeQuery = "SELECT 
+	 `OG`.`ID` AS `AID`, 
+	 `O`.*, 
+	 `U`.`REAL_NAME`, 
+	 `U`.`DEC_ID`, 
+	 `SG`.`CATEGORY_TYPE`, 
+	 `OG`.`REAL_PRICE`, 
+	 `OG`.`TAX_RATE`, 
+	 `OG`.`BUY_NUMS`, 
+	 `OG`.`SKU_CODE`, 
+	 `OG`.`GOODS_TITLE`, 
+	 `OG`.`REAL_PV` 
+FROM 
+	 `AR_ORDER_GOODS` `OG` 
+	 LEFT JOIN `AR_ORDER` `O` ON OG.ORDER_SN = O.SN 
+	 LEFT JOIN `AR_USER` `U` ON U.ID = O.USER_ID 
+	 LEFT JOIN `AR_SHOP_GOODS` `SG` ON SG.ID = OG.GOODS_ID 
+WHERE 
+	 O.IS_DELETE = 0 
+	 AND O.SN = 'OS202511087870502295' 
+ORDER BY 
+	 `O`.`CREATED_AT` DESC";
+        $nativeResults = $nativeConnection->createCommand($nativeQuery)->queryAll();
+        
+        Yii::info('原生SQL查询结果数量: ' . count($nativeResults), 'export_debug');
+        Yii::info('原生SQL查询结果: ' . json_encode($nativeResults), 'export_debug');
+        
+        // 如果原生查询有结果但Yii查询没有,使用原生查询结果
+        if(count($nativeResults) > 0 && count($oderList) < count($nativeResults)) {
+            Yii::warning('检测到查询结果不匹配,使用原生SQL查询结果', 'export_debug');
+            $oderList = $nativeResults;
+        }
+        
         LoggerTool::debug([
-            'sql' => $query->createCommand()->getRawSql(),
+            'sql' => $rawSql,
             'condition' => $this->params['condition'],
             'params' => $this->params,
-            'orderList' => $oderList
+            'orderListCount' => count($oderList),
+            'orderList' => $oderList,
+            'fullParams' => $this->params
         ]);
+        
+        // 检查是否有查询缓存影响
+        Yii::info('查询结果数量: ' . count($oderList), 'export_debug');
+        Yii::info('完整SQL: ' . $rawSql, 'export_debug');
+        Yii::info('查询条件: ' . json_encode($this->params['condition']), 'export_debug');
+        Yii::info('查询参数: ' . json_encode($this->params['params']), 'export_debug');
 
         if ($oderList) {
             $userId = '';