* Refactor updateOrderByGantt method.

This commit is contained in:
tianshujie
2023-08-22 13:55:45 +08:00
parent c3ccc82be0
commit ec48fc8465
5 changed files with 57 additions and 6 deletions
+3
View File
@@ -54,3 +54,6 @@ $config->programplan->form->updateDateByGantt['id'] = array('required' =>
$config->programplan->form->updateDateByGantt['startDate'] = array('required' => false, 'type' => 'string', 'default' => null);
$config->programplan->form->updateDateByGantt['endDate'] = array('required' => false, 'type' => 'string', 'default' => '');
$config->programplan->form->updateDateByGantt['type'] = array('required' => false, 'type' => 'string', 'default' => '');
$config->programplan->form->updateTaskOrderByGantt['id'] = array('required' => false, 'type' => 'string', 'default' => '');
$config->programplan->form->updateTaskOrderByGantt['tasks'] = array('required' => false, 'type' => 'array', 'default' => array());
+2 -1
View File
@@ -227,7 +227,8 @@ class programplan extends control
$taskID = !empty($idList[1]) ? $idList[1] : 0;
if(empty($taskID)) return $this->send(array('result' => 'fail', 'message' => ''));
$this->loadModel('task')->updateOrderByGantt();
$postData = form::data($this->config->programplan->form->updateTaskOrderByGantt)->get();
$this->loadModel('task')->updateOrderByGantt($postData);
if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError()));
$this->loadModel('action')->create('task', $taskID, 'ganttMove');
+6 -5
View File
@@ -2645,23 +2645,24 @@ class taskModel extends model
}
/**
* 拖动甘特图更新任务的顺序。
* Update order by gantt.
*
* @param object $postData
* @access public
* @return void
* @return bool
*/
public function updateOrderByGantt()
public function updateOrderByGantt(object $postData): bool
{
$data = fixer::input('post')->get();
$order = 1;
foreach($data->tasks as $task)
foreach($postData->tasks as $task)
{
$idList = explode('-', $task);
$taskID = $idList[1];
$this->dao->update(TABLE_TASK)->set('`order`')->eq($order)->where('id')->eq($taskID)->exec();
$order ++;
}
return !dao::isError();
}
/**
@@ -0,0 +1,25 @@
#!/usr/bin/env php
<?php
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/task.class.php';
su('admin');
zdTable('task')->config('task', true)->gen(30);
/**
title=taskModel->updateOrderByGantt();
timeout=0
cid=1
*/
$taskIdList[0] = array(1, 2, 3, 4, 5);
$taskIdList[1] = array(2, 3, 1, 4, 5);
$taskIdList[2] = array(4, 2, 3, 1, 5);
$taskTester = new taskTest();
r($taskTester->updateOrderByGanttTest(3, 1, $taskIdList[0])) && p() && e('1,2,3,4,5'); // 测试更新开发任务11的顺序
r($taskTester->updateOrderByGanttTest(3, 1, $taskIdList[1])) && p() && e('3,1,2,4,5'); // 测试更新开发任务11的顺序
r($taskTester->updateOrderByGanttTest(3, 4, $taskIdList[2])) && p() && e('4,2,3,1,5'); // 测试更新开发任务14的顺序
+21
View File
@@ -2147,4 +2147,25 @@ class taskTest
if(dao::isError()) return dao::getError();
return true;
}
/**
* 拖动甘特图更新任务的顺序。
* Update order by gantt.
*
* @param int $executionID
* @param int $taskID
* @param array $taskIdList
* @access public
* @return string
*/
public function updateOrderByGanttTest(int $executionID, int $taskID, array $taskIdList): string
{
$postData = new stdclass();
$postData->id = "{$executionID}-{$taskID}";
foreach($taskIdList as $id) $postData->tasks[] = "{$executionID}-{$id}";
$this->objectModel->updateOrderByGantt($postData);
return $this->objectModel->dao->select('GROUP_CONCAT(`order`) as taskOrder')->from(TABLE_TASK)->where('id')->in($taskIdList)->fetch('taskOrder');
}
}