from(Purchase::tableName()); $date = date("Y-m-d H:i:s"); $query->where(['status' => PurchaseClass::STATUS_UN_PAY])->andWhere(['<=', 'deadline', $date]); $query->orderBy('deadline ASC'); Yii::$app->params['ptStyle'] = dict::getDict('ptStyle', 'hd'); //如果有报错,抛出异常 Yii::$app->params['errorReport'] = 1; $arr = []; foreach ($query->batch() as $purchases) { foreach ($purchases as $purchase) { $connection = Yii::$app->db;//事务处理 $transaction = $connection->beginTransaction(); $id = $purchase['id'] ?? 0; $orderSn = $purchase['orderSn'] ?? ''; try { $current = PurchaseClass::getById($id, true); PurchaseService::expire($current); $transaction->commit(); //noticeUtil::push("采购单已过期,库存已回滚 订单号:{$orderSn}", '15280215347'); } catch (\Exception $e) { $transaction->rollBack(); $msg = $e->getMessage(); noticeUtil::push("采购单过期处理报错了!订单号:{$orderSn},错误信息:{$msg}", '15280215347'); } $log = "过期的采购单:{$id} json:" . json_encode($purchase); $arr[] = $log; } } if (!empty($arr)) { foreach ($arr as $item) { Yii::info($item); } } } }