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

封期周期天数改为可配置

kevin_zhangl пре 3 година
родитељ
комит
371308952d
1 измењених фајлова са 15 додато и 3 уклоњено
  1. 15 3
      common/models/forms/ConfigPeriodForm.php

+ 15 - 3
common/models/forms/ConfigPeriodForm.php

@@ -17,6 +17,7 @@ class ConfigPeriodForm extends Model
     public $calcYear;
     public $closeWeekDate;
     public $closeTime;
+    public $closeDays;
 
     public function init() {
         parent::init();
@@ -31,10 +32,11 @@ class ConfigPeriodForm extends Model
     public function rules()
     {
         return [
-            [['calcYear', 'closeWeekDate', 'closeTime'], 'required'],
+            [['calcYear', 'closeWeekDate', 'closeTime', 'closeDays'], 'required'],
             [['calcYear'], 'integer', 'max'=>2050, 'min'=>2018],
             [['closeWeekDate'], 'match', 'pattern' => '/^[0-6]/', 'message' => '请填写有效的星期'],
             [['closeTime'], 'time', 'format'=>'HH:mm'],
+            [['closeDays'], 'match', 'pattern' => '/^[1-4]/', 'message' => '请填写有效的天数'],
         ];
     }
 
@@ -44,6 +46,7 @@ class ConfigPeriodForm extends Model
             'calcYear' => '计算至年份',
             'closeWeekDate' => '封期日期',
             'closeTime' => '封期时间',
+            'closeDays' => '封期周期天数',
         ];
     }
 
@@ -75,10 +78,13 @@ class ConfigPeriodForm extends Model
             if(!Config::updateAll(['VALUE'=>$this->closeTime, 'UPDATED_AT'=>Date::nowTime()], "CONFIG_NAME='closeTime'")){
                 throw new Exception('封期时间更新失败');
             }
+            if(!Config::updateAll(['VALUE'=>$this->closeDays, 'UPDATED_AT'=>Date::nowTime()], "CONFIG_NAME='closeDays'")){
+                throw new Exception('封期天数更新失败');
+            }
             // 异步重新生成业绩期先注释掉
             // 异步处理添加任务
-            //$taskKey = \Yii::$app->swooleAsyncTimer->asyncHandle('config/update-period', \Yii::$app->request->post());
-            $taskKey = true;
+            $taskKey = \Yii::$app->swooleAsyncTimer->asyncHandle('config/update-period', \Yii::$app->request->post());
+//            $taskKey = true;
             if($taskKey === false){
                 throw new Exception('请求异步服务器失败');
             }
@@ -120,8 +126,14 @@ class ConfigPeriodForm extends Model
         $startDateTemp = $nowPeriodStart;
         $transaction = \Yii::$app->db->beginTransaction();
         try{
+            $days = 1;
             for($startDate = $nowPeriodStart + 86400; $startDate < strtotime($this->calcYear.'-12-31'); $startDate += 86400 ){
                 if(Date::dateWeek(\date('Y-m-d',$startDate)) == $this->closeWeekDate){
+                    $days++;
+                    if ($days % $this->closeDays != 0) {
+                        continue;
+                    }
+
                     $periodModel = new Period();
                     $periodModel->PERIOD_NUM = $nowPeriodNum;
                     $periodModel->START_TIME = $startDateTemp;