* Finish task #84584.

This commit is contained in:
liumengyi
2023-02-16 05:28:39 +00:00
parent 020b742dc7
commit 9be6fa2fd2
5 changed files with 83 additions and 130 deletions
+27 -43
View File
@@ -708,22 +708,12 @@ class programplanModel extends model
$parentACL = $parentStage->acl;
}
if(!$this->checkNameUnique($names))
{
$this->app->loadLang('execution');
dao::$errors['message'][] = empty($type) ? $this->lang->programplan->error->sameName : str_replace($this->lang->execution->stage, '', $this->lang->programplan->error->sameName);;
return false;
}
$names = array_filter($names);
$sameNames = array_diff_assoc($names, array_unique($names));
$project = $this->loadModel('project')->getByID($projectID);
$setCode = (!isset($this->config->setCode) or $this->config->setCode == 1) ? true : false;
$checkCode = $this->checkCodeUnique($codes, isset($planIDList) ? $planIDList : '');
if($setCode and $checkCode !== true)
{
if($checkCode) dao::$errors['message'][] = sprintf($this->lang->error->repeat, $this->lang->execution->code, $checkCode);
else dao::$errors['message'][] = $this->lang->programplan->error->sameCode;
return false;
}
$sameCodes = $this->checkCodeUnique($codes, isset($planIDList) ? $planIDList : '');
$datas = array();
foreach($names as $key => $name)
@@ -756,68 +746,61 @@ class programplanModel extends model
$totalPercent = 0;
$totalDevType = 0;
$milestone = 0;
foreach($datas as $plan)
foreach($datas as $index => $plan)
{
if(!empty($sameNames) and in_array($plan->name, $sameNames)) dao::$errors[$index]['name'] = empty($type) ? $this->lang->programplan->error->sameName : str_replace($this->lang->execution->stage, '', $this->lang->programplan->error->sameName);
if($setCode and $sameCodes !== true and !empty($sameCodes) and in_array($plan->code, $sameCodes)) dao::$errors[$index]['code'] = sprintf($this->lang->error->repeat, $this->lang->execution->code, $plan->code);
if($plan->percent and !preg_match("/^[0-9]+(.[0-9]{1,3})?$/", $plan->percent))
{
dao::$errors['message'][] = $this->lang->programplan->error->percentNumber;
return false;
dao::$errors[$index]['percent'] = $this->lang->programplan->error->percentNumber;
}
if(helper::isZeroDate($plan->begin))
{
dao::$errors['message'][] = $this->lang->programplan->emptyBegin;
return false;
dao::$errors[$index]['begin'] = $this->lang->programplan->emptyBegin;
}
if(!validater::checkDate($plan->begin))
if(!validater::checkDate($plan->begin) and empty(dao::$errors[$index]['begin']))
{
dao::$errors['message'][] = $this->lang->programplan->checkBegin;
return false;
dao::$errors[$index]['begin'] = $this->lang->programplan->checkBegin;
}
if(helper::isZeroDate($plan->end))
{
dao::$errors['message'][] = $this->lang->programplan->emptyEnd;
return false;
dao::$errors[$index]['end'] = $this->lang->programplan->emptyEnd;
}
if(!validater::checkDate($plan->end))
if(!validater::checkDate($plan->end) and empty(dao::$errors[$index]['end']))
{
dao::$errors['message'][] = $this->lang->programplan->checkEnd;
return false;
dao::$errors[$index]['end'] = $this->lang->programplan->checkEnd;
}
if(!helper::isZeroDate($plan->end) and $plan->end < $plan->begin)
if(!helper::isZeroDate($plan->end) and $plan->end < $plan->begin and empty(dao::$errors[$index]['begin']))
{
dao::$errors['message'][] = $this->lang->programplan->error->planFinishSmall;
return false;
dao::$errors[$index]['end'] = $this->lang->programplan->error->planFinishSmall;
}
if(isset($parentStage) and ($plan->end > $parentStage->end || $plan->begin < $parentStage->begin))
{
dao::$errors['message'][] = $this->lang->programplan->error->parentDuration;
return false;
if($plan->begin < $parentStage->begin and empty(dao::$errors[$index]['begin'])) dao::$errors[$index]['begin'] = $this->lang->programplan->error->parentDuration;
if($plan->end < $parentStage->end and empty(dao::$errors[$index]['end'])) dao::$errors[$index]['end'] = $this->lang->programplan->error->parentDuration;
}
if($plan->begin < $project->begin)
if($plan->begin < $project->begin and empty(dao::$errors[$index]['begin']))
{
dao::$errors['message'][] = sprintf($this->lang->programplan->errorBegin, $project->begin);
return false;
dao::$errors[$index]['begin'] = sprintf($this->lang->programplan->errorBegin, $project->begin);
}
if(!helper::isZeroDate($plan->end) and $plan->end > $project->end)
if(!helper::isZeroDate($plan->end) and $plan->end > $project->end and empty(dao::$errors[$index]['end']))
{
dao::$errors['message'][] = sprintf($this->lang->programplan->errorEnd, $project->end);
return false;
dao::$errors[$index]['end'] = sprintf($this->lang->programplan->errorEnd, $project->end);
}
if(helper::isZeroDate($plan->begin)) $plan->begin = '';
if(helper::isZeroDate($plan->end)) $plan->end = '';
if($setCode and empty($plan->code))
{
dao::$errors['message'][] = sprintf($this->lang->error->notempty, $this->lang->execution->code);
return false;
dao::$errors[$index]['code'] = sprintf($this->lang->error->notempty, $this->lang->execution->code);
}
foreach(explode(',', $this->config->programplan->create->requiredFields) as $field)
{
$field = trim($field);
if($field and empty($plan->$field))
{
dao::$errors['message'][] = sprintf($this->lang->error->notempty, $this->lang->programplan->$field);
return false;
dao::$errors[$index][$field] = sprintf($this->lang->error->notempty, $this->lang->programplan->$field);
}
}
@@ -827,7 +810,8 @@ class programplanModel extends model
if($plan->milestone) $milestone = 1;
}
if($totalPercent > 100) return dao::$errors['message'][] = $this->lang->programplan->error->percentOver;
if($totalPercent > 100) dao::$errors['percent'] = $this->lang->programplan->error->percentOver;
if(dao::isError()) return false;
$this->loadModel('action');
$this->loadModel('user');
@@ -1350,7 +1334,7 @@ class programplanModel extends model
->andWhere('deleted')->eq('0')
->andWhere('code')->in($codes)
->beginIF($planIDList)->andWhere('id')->notin($planIDList)->fi()
->fetch('code');
->fetchPairs('code');
return $code ? $code : true;
}