From fdc9b93d82337aef0549dce33125e544cbc9653a Mon Sep 17 00:00:00 2001 From: wangyidong Date: Thu, 8 Sep 2022 16:08:03 +0800 Subject: [PATCH] * adjust for upgrade and holiday. --- module/holiday/model.php | 43 +++++++++++++++++--------------------- module/project/model.php | 5 ++++- module/task/lang/de.php | 1 + module/task/lang/en.php | 1 + module/task/lang/fr.php | 1 + module/task/lang/zh-cn.php | 1 + module/upgrade/model.php | 6 +++++- module/weekly/model.php | 3 ++- 8 files changed, 34 insertions(+), 27 deletions(-) diff --git a/module/holiday/model.php b/module/holiday/model.php index ca538c2936..e43442f049 100644 --- a/module/holiday/model.php +++ b/module/holiday/model.php @@ -205,21 +205,19 @@ class holidayModel extends model $workingDays = $this->getWorkingDays($begin, $end); $weekend = isset($this->config->project->weekend) ? $this->config->project->weekend : 2; + $holidaysFlip = array_flip($holidays); + $workingDaysFlip = array_flip($workingDays); + /* When the start date and end date are the same. */ + $beginTimestamp = strtotime($begin); if($begin == $end) { - if(in_array($begin, $workingDays)) return $actualDays[] = $begin; - if(in_array($begin, $holidays)) return $actualDays; + if(isset($workingDaysFlip[$begin])) return $actualDays[] = $begin; + if(isset($holidaysFlip[$begin])) return $actualDays; - $w = date('w', strtotime($begin)); - if($weekend == 2) - { - if($w == 0 or $w == 6) return $actualDays; - } - else - { - if($w == 0) return $actualDays; - } + $w = date('w', $beginTimestamp); + if($weekend == 2 and ($w == 0 or $w == 6)) return $actualDays; + if($weekend != 2 and $w == 0) return $actualDays; $actualDays[] = $begin; return $actualDays; @@ -227,24 +225,21 @@ class holidayModel extends model for($i = 0; $currentDay < $end; $i ++) { - $currentDay = date('Y-m-d', strtotime("$begin + $i days")); - $w = date('w', strtotime($currentDay)); + $currentTimestamp = $beginTimestamp + ($i * 24 * 3600); + $currentDay = date('Y-m-d', $currentTimestamp); - if(in_array($currentDay, $workingDays)) + if(isset($workingDaysFlip[$currentDay])) { $actualDays[] = $currentDay; continue; } - if(in_array($currentDay, $holidays)) continue; - if($weekend == 2) - { - if($w == 0 or $w == 6) continue; - } - else - { - if($w == 0) continue; - } + if(isset($holidaysFlip[$currentDay])) continue; + + $w = date('w', $currentTimestamp); + if($weekend == 2 and ($w == 0 or $w == 6)) continue; + if($weekend != 2 and $w == 0) continue; + $actualDays[] = $currentDay; } @@ -266,7 +261,7 @@ class holidayModel extends model $days = ($endTime - $beginTime) / 86400; $dateList = array(); - for($i = 0; $i <= $days; $i ++) $dateList[] = date('Y-m-d', strtotime("+$i days", $beginTime)); + for($i = 0; $i <= $days; $i ++) $dateList[] = date('Y-m-d', $beginTime + ($i *24 *3600)); return $dateList; } diff --git a/module/project/model.php b/module/project/model.php index 72733bd399..42d8d4d869 100644 --- a/module/project/model.php +++ b/module/project/model.php @@ -432,6 +432,8 @@ class projectModel extends model $AC = 0; while($task = $stmt->fetch()) { + if(empty($task->estimate)) continue; + $PV += $task->estimate; $AC += $task->consumed; if($task->status == 'done' or $task->closedReason == 'done') @@ -440,7 +442,8 @@ class projectModel extends model } else { - $task->progress = round($task->consumed / ($task->consumed + $task->left), 2) * 100; + $task->progress = 0; + if(($task->consumed + $task->left) > 0) $task->progress = round($task->consumed / ($task->consumed + $task->left), 2) * 100; $EV += round($task->estimate * $task->progress / 100, 2); } } diff --git a/module/task/lang/de.php b/module/task/lang/de.php index ae446ab049..7102e3a512 100644 --- a/module/task/lang/de.php +++ b/module/task/lang/de.php @@ -47,6 +47,7 @@ $lang->task->exportAction = "Export Task"; $lang->task->reportChart = "Bericht Chart"; $lang->task->fromBug = 'Von Bug'; $lang->task->case = 'Fall'; +$lang->task->process = 'Process Task'; $lang->task->confirmStoryChange = "Storyäanderung bestätigen"; $lang->task->storyChange = "Story Changed"; $lang->task->progress = 'Fortschritt'; diff --git a/module/task/lang/en.php b/module/task/lang/en.php index db1d23cd9a..f025152247 100755 --- a/module/task/lang/en.php +++ b/module/task/lang/en.php @@ -47,6 +47,7 @@ $lang->task->exportAction = "Export Task"; $lang->task->reportChart = "Report Chart"; $lang->task->fromBug = 'From Bug'; $lang->task->case = 'Linked Case'; +$lang->task->process = 'Process Task'; $lang->task->confirmStoryChange = "Confirm Change"; $lang->task->storyChange = "Story Changed"; $lang->task->progress = 'Progress'; diff --git a/module/task/lang/fr.php b/module/task/lang/fr.php index c741e93de7..fb699093ed 100644 --- a/module/task/lang/fr.php +++ b/module/task/lang/fr.php @@ -47,6 +47,7 @@ $lang->task->exportAction = "Exporter Tâche"; $lang->task->reportChart = "Rapport Graphique"; $lang->task->fromBug = 'à partir Bug'; $lang->task->case = 'Associée CasTest'; +$lang->task->process = 'Process Task'; $lang->task->confirmStoryChange = "Confirmer Changement"; $lang->task->storyChange = "Story Changée"; $lang->task->progress = 'Progression'; diff --git a/module/task/lang/zh-cn.php b/module/task/lang/zh-cn.php index 3478a6e044..b875f0168f 100755 --- a/module/task/lang/zh-cn.php +++ b/module/task/lang/zh-cn.php @@ -47,6 +47,7 @@ $lang->task->exportAction = "导出任务"; $lang->task->reportChart = "报表统计"; $lang->task->fromBug = '来源Bug'; $lang->task->case = '相关用例'; +$lang->task->process = '处理任务'; $lang->task->confirmStoryChange = "确认{$lang->SRCommon}变动"; $lang->task->storyChange = "{$lang->SRCommon}变更"; $lang->task->progress = '进度'; diff --git a/module/upgrade/model.php b/module/upgrade/model.php index e575fd583b..a85f188266 100644 --- a/module/upgrade/model.php +++ b/module/upgrade/model.php @@ -7332,6 +7332,7 @@ class upgradeModel extends model { $estimates = $this->dao->select('*')->from(TABLE_TASKESTIMATE)->orderBy('id')->fetchAll(); + $this->app->loadLang('task'); $this->loadModel('action'); foreach($estimates as $estimate) { @@ -7343,7 +7344,7 @@ class upgradeModel extends model $effort->product = $relation['product']; $effort->project = (int)$relation['project']; $effort->account = $estimate->account; - $effort->work = empty($estimate->work) ? $this->lang->effort->handleTask : $estimate->work; + $effort->work = empty($estimate->work) ? $this->lang->task->process : $estimate->work; $effort->date = $estimate->date; $effort->left = $estimate->left; $effort->consumed = $estimate->consumed; @@ -7380,6 +7381,7 @@ class upgradeModel extends model $chats = $this->dao->select('gid, id')->from(TABLE_IM_CHAT) ->where('createdDate')->eq('0000-00-00 00:00:00') ->fetchPairs('gid'); + if(empty($chats)) return true; $createdDateData = array(); @@ -7423,6 +7425,7 @@ class upgradeModel extends model }, $chatDates); $knownMinDates = array_merge($knownMinDates, $chatDates); + if(empty($knownMinDates)) return true; $queryData = array(); foreach($knownMinDates as $gid => $date) $queryData[] = "WHEN {$chats[$gid]} THEN '{$date}'"; @@ -7450,6 +7453,7 @@ class upgradeModel extends model ->orWhere('endIndex')->eq(0) ->orderBy('id_asc') ->fetchAll(); + if(empty($chatTableData)) return true; /* Sort ranges by table. */ $tableRanges = array(); diff --git a/module/weekly/model.php b/module/weekly/model.php index 961c336ea8..666d8f8ff1 100755 --- a/module/weekly/model.php +++ b/module/weekly/model.php @@ -433,7 +433,8 @@ class weeklyModel extends model } else { - $task->progress = round($task->consumed / ($task->consumed + $task->left), 2) * 100; + $task->progress = 0; + if(($task->consumed + $task->left) > 0) $task->progress = round($task->consumed / ($task->consumed + $task->left), 2) * 100; $EV += round($thisPV * $task->progress / 100, 2); } $PV += $thisPV;