| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198 |
- <?php
- /**
- * Created by PhpStorm.
- * User: leo
- * Date: 2018/3/9
- * Time: 上午11:56
- */
- 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;
- use common\helpers\bonus\Calc\PushBaseDataToCalc;
- use common\helpers\Cache;
- use common\models\CalcRecord;
- use common\models\Period;
- class CalcController extends BaseController
- {
- public function actionPerfOrder($taskKey)
- {
- $params = Cache::getAsyncParams($taskKey);
- $periodNum = $params['periodNum'] ?? 0;
- CalcRecord::record($periodNum, '业绩单生成中');
- //生成业绩单 状态已修改
- $res = (new GeneratePerfOrder($periodNum))->start();
- //该期状态改为不在计算中
- // Period::updatePeriodIsProcessing($periodNum, Period::NOT_PROCESSING);
- if (200 == $res['code']) {
- self::recordCalcAndProcessStatus($periodNum, '业绩单已生成');
- \Yii::$app->swooleAsyncTimer->pushAsyncResultToAdmin($params['handleUserId'], "第{$params['periodNum']}期生成业绩单更新成功");
- return true;
- } else {
- self::recordCalcAndProcessStatus($periodNum, '业绩单生成失败,原因:' . substr($res['msg'],0,1000) ?? '');
- \Yii::$app->swooleAsyncTimer->pushAsyncResultToAdmin($params['handleUserId'], "第{$params['periodNum']}期生成业绩单更新失败,原因:" . $res['msg'] ?? '', false);
- return false;
- }
- }
- //自动执行
- public static function actionAutoExec($taskKey): bool
- {
- $params = Cache::getAsyncParams($taskKey);
- $periodNum = $params['periodNum'] ?? 0;
- //生成业绩单 状态已修改
- 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, '业绩单已生成');
- } else {
- Period::updatePeriodIsProcessing($periodNum, Period::NOT_PROCESSING);
- CalcRecord::record($periodNum, '第' . $periodNum . '期业绩单生成失败,原因:' . substr($res['msg'],0,100));
- return false;
- }
- //推送基础数据
- CalcRecord::record($periodNum, '开始推送基础数据');
- $res = (new PushBaseDataToCalc($periodNum))->start();
- if (200 == $res['code']) {
- CalcRecord::record($periodNum, '基础数据完成推送');
- } else {
- Period::updatePeriodIsProcessing($periodNum, Period::NOT_PROCESSING);
- CalcRecord::record($periodNum, '第' . $periodNum . '期基础数据推送失败,原因:' . $res['msg']);
- return false;
- }
- //todo 完成需要修改状态
- //通知结算系统生成期业绩
- CalcRecord::record($periodNum, '开始生成' . $periodNum . '期的期业绩');
- \Yii::$app->$db->createCommand()->update('AR_PERIOD', ['IS_PREPARE' => 1], 'PERIOD_NUM=' . $periodNum)->execute();
- //todo 完成需要修改状态
- //自动监听 拉取期业绩 并计算奖金
- // (new PullPerfDataFromCalc($periodNum))->start();
- //通知结算系统计算奖金
- // \Yii::$app->$db->createCommand()->update('AR_PERIOD', ['IS_PREPARE' => 3], 'PERIOD_NUM=' . $periodNum)->execute();
- //自动监听 计算完成 自动拉取奖金结果并修改状态
- // (new PullCalcBonusData($period['PERIOD_NUM']))->start();
- return true;
- }
- //自动计算业绩
- public static function actionAutoPerf($taskKey): bool
- {
- $params = Cache::getAsyncParams($taskKey);
- $periodNum = $params['periodNum'] ?? 0;
- //生成业绩单 状态已修改
- 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, '业绩单已生成');
- } else {
- Period::updatePeriodIsProcessing($periodNum, Period::NOT_PROCESSING);
- CalcRecord::record($periodNum, '第' . $periodNum . '期业绩单生成失败,原因:' . substr($res['msg'],0,100));
- return false;
- }
- //推送基础数据
- CalcRecord::record($periodNum, '开始推送基础数据');
- $res = (new PushBaseDataToCalc($periodNum))->start();
- if (200 == $res['code']) {
- CalcRecord::record($periodNum, '基础数据完成推送');
- } else {
- Period::updatePeriodIsProcessing($periodNum, Period::NOT_PROCESSING);
- CalcRecord::record($periodNum, '第' . $periodNum . '期基础数据推送失败,原因:' . $res['msg']);
- return false;
- }
- //todo 完成需要修改状态
- //通知结算系统生成期业绩
- CalcRecord::record($periodNum, '开始生成' . $periodNum . '期的期业绩');
- \Yii::$app->$db->createCommand()->update('AR_PERIOD', ['IS_PREPARE' => 1], 'PERIOD_NUM=' . $periodNum)->execute();
- //todo 完成需要修改状态
- //自动监听 拉取期业绩 并计算奖金
- // (new PullPerfDataFromCalc($periodNum))->start();
- //通知结算系统计算奖金
- // \Yii::$app->$db->createCommand()->update('AR_PERIOD', ['IS_PREPARE' => 3], 'PERIOD_NUM=' . $periodNum)->execute();
- //自动监听 计算完成 自动拉取奖金结果并修改状态
- // (new PullCalcBonusData($period['PERIOD_NUM']))->start();
- return true;
- }
- public static function recordCalcAndProcessStatus($periodNum, $text)
- {
- Period::updatePeriodIsProcessing($periodNum, Period::NOT_PROCESSING);
- CalcRecord::record($periodNum, $text);
- return true;
- }
- public function actionPushData($taskKey): bool
- {
- $params = Cache::getAsyncParams($taskKey);
- $periodNum = $params['periodNum'] ?? 0;
- CalcRecord::record($periodNum, '开始推送基础数据');
- //推送数据 状态已修改
- $res = (new PushBaseDataToCalc($periodNum))->start();
- if (200 == $res['code']) {
- self::recordCalcAndProcessStatus($periodNum, '基础数据已全部推送');
- return true;
- } else {
- self::recordCalcAndProcessStatus($periodNum, '基础数据推送失败,原因:' . $res['msg'] ?? '');
- return false;
- }
- }
- public function actionPullPeriod($taskKey): bool
- {
- $params = Cache::getAsyncParams($taskKey);
- $periodNum = $params['periodNum'] ?? 0;
- CalcRecord::record($periodNum, '开始拉取期业绩数据');
- //推送数据 状态已修改
- $res = (new PullPerfDataFromCalc($periodNum))->start();
- if (200 == $res['code']) {
- self::recordCalcAndProcessStatus($periodNum, '期业绩数据已全部拉取');
- return true;
- } else {
- self::recordCalcAndProcessStatus($periodNum, '期业绩数据拉取失败,原因:' . $res['msg'] ?? '');
- return false;
- }
- }
- public function actionPullBonus($taskKey): bool
- {
- $params = Cache::getAsyncParams($taskKey);
- $periodNum = $params['periodNum'] ?? 0;
- CalcRecord::record($periodNum, '开始拉取奖金数据');
- //推送数据 状态已修改
- $res = (new PullCalcBonusData($periodNum))->start();
- if (200 == $res['code']) {
- self::recordCalcAndProcessStatus($periodNum, '奖金数据已全部拉取');
- return true;
- } else {
- self::recordCalcAndProcessStatus($periodNum, '奖金数据拉取失败,原因:' . $res['msg'] ?? '');
- return false;
- }
- }
- }
|