|
|
@@ -3,8 +3,11 @@
|
|
|
namespace common\helpers\bonus\Calc;
|
|
|
|
|
|
|
|
|
+use common\helpers\Form;
|
|
|
use common\models\CalcRecord;
|
|
|
+use common\models\forms\PeriodForm;
|
|
|
use common\models\Period;
|
|
|
+use Yii;
|
|
|
|
|
|
class CalcConsole extends BaseBusiness
|
|
|
{
|
|
|
@@ -96,6 +99,40 @@ if (empty($period)){
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
+ public static function autoPrePerf(){
|
|
|
+ $nowTs = time();
|
|
|
+ $currentPeriod = Period::find()->where('START_TIME< :NOW_TIME',['NOW_TIME'=>$nowTs])->where('END_TIME>= :NOW_TIME',['NOW_TIME'=>$nowTs-6])->asArray()->one();
|
|
|
+ $periodNum = $currentPeriod['PERIOD_NUM'];
|
|
|
+
|
|
|
+ if($nowTs+86400>$currentPeriod['END_TIME'] ){
|
|
|
+ $nowMin = date("i", $nowTs);
|
|
|
+ $nowSec = date("s", $nowTs);
|
|
|
+ if(($nowMin!=0 || $nowSec >= 5 ) || Period::isProcessing($periodNum)){ // 当不是整点小时,当计算中,不计算
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ print_r("该预结算".$nowMin.PHP_EOL.$nowSec);
|
|
|
+ //设置计算进行中标识
|
|
|
+ Period::updatePeriodIsProcessing($periodNum, Period::IS_PROCESSING);
|
|
|
+ //设置自动计算标识
|
|
|
+ Period::updatePeriodIsAutoExec($periodNum, Period::MANUAL_EXEC_CALC);
|
|
|
+ //记录开始计算的时间
|
|
|
+ Period::updateAll(['START_EXEC_TIME' => time()], ['PERIOD_NUM' => $periodNum]);
|
|
|
+ $formModel = new PeriodForm();
|
|
|
+ $formModel->scenario = 'autoPerf';
|
|
|
+
|
|
|
+ if($formModel->load(['periodNum'=>$periodNum], '') && $formModel->autoPrePerf()) {
|
|
|
+ echo('自动计算已开始,请等待'.PHP_EOL);
|
|
|
+ CalcRecord::record($periodNum, '第' . $periodNum . '期,定时计算开始');
|
|
|
+ } else {
|
|
|
+ echo('自动计算未开始'.PHP_EOL);
|
|
|
+ CalcRecord::record($periodNum, '第' . $periodNum . '期,定时计算未开始');
|
|
|
+ }
|
|
|
+ return;
|
|
|
+ }else{
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
public static function listenAutoPerfPeriod()
|
|
|
{
|
|
|
$db = self::CALC_DB_NAME;
|