Преглед изворни кода

fix:完善自动计算相关的流程控制

brook пре 3 година
родитељ
комит
3be7d09921

+ 2 - 1
common/helpers/bonus/Calc/CalcConsole.php

@@ -28,6 +28,7 @@ class CalcConsole extends BaseBusiness
             ->asArray()->one();
         //用户选择是否自动执行
         $autoExec = $businessPeriod['AUTO_EXEC'] > 0;
+        $businessIsCalculated = $businessPeriod['IS_CALCULATED'] > 0;
 
         if (2 == $period['IS_PREPARE'] && 1 == $period['IS_PERFED'] && $autoExec) {
             //拉取期业绩
@@ -54,7 +55,7 @@ class CalcConsole extends BaseBusiness
 
         }
 
-        if (4 == $period['IS_PREPARE'] && 1 == $period['IS_CALCULATED'] && $autoExec) {
+        if (4 == $period['IS_PREPARE'] && 1 == $period['IS_CALCULATED'] && $autoExec && !$businessIsCalculated) {
             CalcRecord::record($period['PERIOD_NUM'], '第' . $period['PERIOD_NUM'] . '期的奖金已计算完成');
             CalcRecord::record($period['PERIOD_NUM'], '开始拉取第' . $period['PERIOD_NUM'] . '期的奖金数据');
 

+ 1 - 1
common/models/forms/PeriodForm.php

@@ -387,7 +387,7 @@ class PeriodForm extends Model
         $settings      = \Yii::$app->params['swooleAsyncTimer'];
         $bonusSettings = \Yii::$app->params['swooleBonusConfig'];
         $settings      = array_merge($settings, $bonusSettings);
-        $taskKey       = \Yii::$app->swooleAsyncTimer->asyncHandle('calc/auto-execr', \Yii::$app->request->get(), $settings);
+        $taskKey       = \Yii::$app->swooleAsyncTimer->asyncHandle('calc/auto-exec', \Yii::$app->request->get(), $settings);
         if ($taskKey === false) {
             $this->addError('send', '请求失败');
             return null;

+ 7 - 0
console/controllers/CalcController.php

@@ -8,6 +8,7 @@
 
 namespace console\controllers;
 
+use common\helpers\bonus\Calc\CalcConsole;
 use common\helpers\bonus\Calc\GeneratePerfOrder;
 use common\helpers\bonus\Calc\PullCalcBonusData;
 use common\helpers\bonus\Calc\PullPerfDataFromCalc;
@@ -49,6 +50,12 @@ class CalcController extends BaseController
         $db        = 'dbCalc';
         //生成业绩单 状态已修改
         CalcRecord::record($periodNum, '开始生成业绩单');
+        //重置业务系统的计算进度标识
+        \Yii::$app->$db->createCommand()->update('AR_PERIOD', ['IS_PERFED' => 0, 'IS_CALCULATED' => 0], 'PERIOD_NUM=' . $periodNum)->execute();
+        //重置计算系统的计算进度标识
+        $db = CalcConsole::CALC_DB_NAME;
+        \Yii::$app->$db->createCommand()->update('AR_PERIOD', ['IS_PREPARE' => 0, 'IS_PERFED' => 0, 'IS_CALCULATED' => 0], 'PERIOD_NUM=' . $periodNum)->execute();
+
         $res = (new GeneratePerfOrder($periodNum))->start();
         if (200 == $res['code']) {
             CalcRecord::record($periodNum, '业绩单已生成');