From 13c0df7fffbbc915bbcddb71742ef3d0fc1924e3 Mon Sep 17 00:00:00 2001 From: wangyidong Date: Wed, 1 Nov 2017 09:39:16 +0800 Subject: [PATCH] =?UTF-8?q?Finish=20task#3238=20=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E6=8C=82=E8=B5=B7=E5=86=8D=E6=BF=80=E6=B4=BB=E7=9A=84=E6=97=B6?= =?UTF-8?q?=E5=80=99=E7=BB=99=E7=94=A8=E6=88=B7=E9=80=89=E6=8B=A9=E6=98=AF?= =?UTF-8?q?=E5=90=A6=E9=A1=BA=E5=BB=B6=E4=BB=BB=E5=8A=A1=E8=B5=B7=E6=AD=A2?= =?UTF-8?q?=E6=97=B6=E9=97=B4,cost:3=20left:0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- module/project/control.php | 7 +++++ module/project/lang/en.php | 2 ++ module/project/lang/zh-cn.php | 2 ++ module/project/model.php | 43 ++++++++++++++++++++++++++- module/project/view/activate.html.php | 34 +++++++++++++++++++-- 5 files changed, 85 insertions(+), 3 deletions(-) diff --git a/module/project/control.php b/module/project/control.php index 81e089333e..18d557a42c 100644 --- a/module/project/control.php +++ b/module/project/control.php @@ -1166,11 +1166,18 @@ class project extends control die(js::reload('parent.parent')); } + $newBegin = date('Y-m-d'); + $dateDiff = helper::diffDate($newBegin, $project->begin); + $newEnd = date('Y-m-d', strtotime($project->end) + $dateDiff * 24 * 3600); + $this->view->title = $this->view->project->name . $this->lang->colon .$this->lang->project->activate; $this->view->position[] = html::a($this->createLink('project', 'browse', "projectID=$projectID"), $this->view->project->name); $this->view->position[] = $this->lang->project->activate; + $this->view->project = $project; $this->view->users = $this->loadModel('user')->getPairs('noletter'); $this->view->actions = $this->loadModel('action')->getList('project', $projectID); + $this->view->newBegin = $newBegin; + $this->view->newEnd = $newEnd; $this->display(); } diff --git a/module/project/lang/en.php b/module/project/lang/en.php index fdeae95528..a51c8c57c9 100644 --- a/module/project/lang/en.php +++ b/module/project/lang/en.php @@ -52,6 +52,8 @@ $lang->project->other = 'Other:'; $lang->project->deleted = 'Deleted'; $lang->project->delayed = 'Delayed'; $lang->project->product = $lang->project->products; +$lang->project->readjustTime = 'Readjust project time for begin and end'; +$lang->project->readjustTask = 'Readjust task start date and deadline'; $lang->project->start = 'Start'; $lang->project->activate = 'Activate'; diff --git a/module/project/lang/zh-cn.php b/module/project/lang/zh-cn.php index 6dbfd2d991..75dfc0e5aa 100644 --- a/module/project/lang/zh-cn.php +++ b/module/project/lang/zh-cn.php @@ -52,6 +52,8 @@ $lang->project->other = '其他:'; $lang->project->deleted = '已删除'; $lang->project->delayed = '已延期'; $lang->project->product = $lang->project->products; +$lang->project->readjustTime = '调整项目起止时间'; +$lang->project->readjustTask = '顺延任务的起止时间'; $lang->project->start = '开始'; $lang->project->activate = '激活'; diff --git a/module/project/model.php b/module/project/model.php index 2424cb8a3c..cddf057094 100644 --- a/module/project/model.php +++ b/module/project/model.php @@ -508,13 +508,54 @@ class projectModel extends model $now = helper::now(); $project = fixer::input('post') ->setDefault('status', 'doing') - ->remove('comment')->get(); + ->remove('comment,readjustTime,readjustTask') + ->get(); + + if(!$this->post->readjustTime) + { + unset($project->begin); + unset($project->end); + } $this->dao->update(TABLE_PROJECT)->data($project) ->autoCheck() ->where('id')->eq((int)$projectID) ->exec(); + /* Readjust task. */ + if($this->post->readjustTime and $this->post->readjustTask) + { + $beginTimeStamp = strtotime($project->begin); + $tasks = $this->dao->select('id,estStarted,deadline,status')->from(TABLE_TASK) + ->where('deadline')->ne('0000-00-00') + ->andWhere('status')->in('wait,doing') + ->fetchAll(); + foreach($tasks as $task) + { + if($task->status == 'wait' and $task->estStarted != '0000-00-00') + { + $taskDays = helper::diffDate($task->deadline, $task->estStarted); + $taskOffset = helper::diffDate($task->estStarted, $oldProject->begin); + + $estStartedTimeStamp = $beginTimeStamp + $taskOffset * 24 * 3600; + $estStarted = date('Y-m-d', $estStartedTimeStamp); + $deadline = date('Y-m-d', $estStartedTimeStamp + $taskDays * 24 * 3600); + + if($estStarted > $project->end) $estStarted = $project->end; + if($deadline > $project->end) $deadline = $project->end; + $this->dao->update(TABLE_TASK)->set('estStarted')->eq($estStarted)->set('deadline')->eq($deadline)->where('id')->eq($task->id)->exec(); + } + else + { + $taskOffset = helper::diffDate($task->deadline, $oldProject->begin); + $deadline = date('Y-m-d', $beginTimeStamp + $taskOffset * 24 * 3600); + + if($deadline > $project->end) $deadline = $project->end; + $this->dao->update(TABLE_TASK)->set('deadline')->eq($deadline)->where('id')->eq($task->id)->exec(); + } + } + } + if(!dao::isError()) return common::createChanges($oldProject, $project); } diff --git a/module/project/view/activate.html.php b/module/project/view/activate.html.php index ba62c720ac..c45035806f 100644 --- a/module/project/view/activate.html.php +++ b/module/project/view/activate.html.php @@ -12,6 +12,7 @@ ?> +
@@ -24,8 +25,28 @@
- - + + + + + + + + + + + @@ -35,4 +56,13 @@
+
comment;?>project->beginAndEnd;?>begin . ' ~ ' . $project->end;?> + +
+
+ + ~ + + + + +
+
comment;?>