/** * 保存会议数据 * * @param $data */ public function onSave(Tudu_Model_Tudu_Entity_Tudu $tudu, Tudu_Model_Tudu_Entity_Extension_Abstract $data) { /* @var $daoCycle Dao_Td_Tudu_Cycle */ $daoCycle = Tudu_Dao_Manager::getDao('Dao_Td_Tudu_Cycle', Tudu_Dao_Manager::DB_TS); $cycle = $data->getAttributes(); if (null !== $daoCycle->getCycle(array('cycleid' => $tudu->cycleId))) { $daoCycle->updateCycle($tudu->cycleId, $cycle); } else { $daoCycle->createCycle($cycle); } }
/** * 保存会议数据 * * @param $data */ public function onSave(Tudu_Model_Tudu_Entity_Tudu $tudu, Tudu_Model_Tudu_Entity_Extension_Abstract $data) { /* @var $daoMeeting Dao_Td_Tudu_Meeting */ $daoMeeting = Tudu_Dao_Manager::getDao('Dao_Td_Tudu_Meeting', Tudu_Dao_Manager::DB_TS); $attrs = $data->getAttributes(); if ($daoMeeting->existsMeeting($tudu->tuduId)) { if (empty($attrs)) { return true; } $ret = $daoMeeting->updateMeeting($tudu->tuduId, $attrs); } else { $attrs['tuduid'] = $tudu->tuduId; $attrs['orgid'] = $tudu->orgId; $ret = $daoMeeting->createMeeting($attrs); } }
/** * 保存会议数据 * * @param $data */ public function onSave(Tudu_Model_Tudu_Entity_Tudu $tudu, Tudu_Model_Tudu_Entity_Extension_Abstract $data) { /* @var $daoMeeting Dao_Td_Tudu_Meeting */ $daoVote = Tudu_Dao_Manager::getDao('Dao_Td_Tudu_Vote', Tudu_Dao_Manager::DB_TS); $attrs = $data->getAttributes(); $options = $data->getOptions(); $vote = array(); if (isset($attrs['maxchoices']) && is_int($attrs['maxchoices'])) { $vote['maxchoices'] = $attrs['maxchoices']; } if (isset($attrs['privacy'])) { $vote['privacy'] = $attrs['privacy'] ? 1 : 0; } if (isset($attrs['visible'])) { $vote['visible'] = $attrs['visible'] ? 1 : 0; } if (isset($attrs['expiretime']) && is_int($attrs['expiretime'])) { $vote['expiretime'] = $attrs['expiretime']; } if (isset($attrs['votecount'])) { $vote['votecount'] = (int) $attrs['votecount']; } $vote['tuduid'] = $tudu->tuduId; if ($daoVote->existsVote($tudu->tuduId)) { $ret = $daoVote->updateVote($tudu->tuduId, $vote); } else { $ret = $daoVote->createVote($vote); } foreach ($options as $option) { if (!empty($option['isnew'])) { $option['tuduid'] = $tudu->tuduId; $daoVote->createOption($option); } else { $daoVote->updateOption($tudu->tuduId, $option['optionid'], $option); } } }
/** * * @param Tudu_Model_Tudu_Entity_Extension_Abstract $extension */ public function addExtension(Tudu_Model_Tudu_Entity_Extension_Abstract $extension) { $this->_extensions[] = $extension; $extension->init($this); }
/** * 审批 * * @param $data */ public function onReview(Tudu_Model_Tudu_Entity_Tudu $tudu, Tudu_Model_Tudu_Entity_Extension_Abstract $data) { // 完成 if ($tudu->stepId == '^end') { // 补签申请的另外处理 if ($data->getAttribute('categoryid') == '^checkin') { return $this->updateCheckinApply($tudu, $data); } $data = $data->getAttributes(); /* @var $daoApply Dao_App_Attend_Apply */ $daoApply = Tudu_Dao_Manager::getDao('Dao_App_Attend_Apply', Tudu_Dao_Manager::DB_APP); $daoApply->updateApply($data['applyid'], array('status' => 2)); $daoApply->updateReviewer($data['applyid'], $tudu->uniqueId, array('status' => 1)); $startTime = $data['starttime']; $endTime = $data['endtime']; // 更新考勤信息备注 /* @var $daoDate Dao_App_Attend_Date */ $daoDate = Tudu_Dao_Manager::getDao('Dao_App_Attend_Date', Tudu_Dao_Manager::DB_APP); /* @var $daoMonth Dao_App_Attend_Month */ $daoMonth = Tudu_Dao_Manager::getDao('Dao_App_Attend_Month', Tudu_Dao_Manager::DB_APP); /* @var $daoTotal Dao_App_Attend_Total */ $daoTotal = Tudu_Dao_Manager::getDao('Dao_App_Attend_Total', Tudu_Dao_Manager::DB_APP); $start = strtotime(date('Y-m-d', $startTime)); $end = strtotime(date('Y-m-d', $endTime)); $days = floor(($end - $start) / 86400); $period = round($data['period'], 1); $memo = array($data['categoryname'], $data['starttime'], $data['endtime'], $period); for ($i = 0; $i < $days + 1; $i++) { $date = $start + $i * 86400; $daoDate->addApply(array('orgid' => $data['orgid'], 'uniqueid' => $data['uniqueid'], 'date' => $date, 'categoryid' => $data['categoryid'], 'memo' => implode('|', $memo))); if ($date <= strtotime('today')) { if (!$daoDate->existsRecord($data['uniqueid'], $date)) { $daoDate->create(array('orgid' => $data['orgid'], 'uniqueid' => $data['uniqueid'], 'date' => $date)); } $daoDate->update($data['uniqueid'], $date, array('iswork' => 0, 'islate' => 0, 'isleave' => 0, 'checkinstatus' => 0)); } } $months = array(); $months[date('Ym', $start)] = array('year' => date('Y', $start), 'month' => date('m', $start)); $months[date('Ym', $end)] = array('year' => date('Y', $end), 'month' => date('m', $end)); foreach ($months as $month => $val) { // 判断月统计表是否已有当月的统计记录 $sum = $daoDate->dateSum(array('uniqueid' => $data['uniqueid'], 'startdate' => mktime(0, 0, 0, $val['month'], 1, $val['year']), 'enddate' => mktime(0, 0, 0, $val['month'] + 1, 1, $val['year']))); $monthParams = array(); if (!empty($sum)) { $monthParams['updatetime'] = time(); $monthParams['late'] = (int) $sum['late']; $monthParams['leave'] = (int) $sum['leave']; $monthParams['unwork'] = (int) $sum['unwork']; if (!$daoMonth->existsRecord($data['uniqueid'], $month)) { $monthParams['orgid'] = $data['orgid']; $monthParams['uniqueid'] = $data['uniqueid']; $monthParams['date'] = $month; $daoMonth->create($monthParams); } else { $daoMonth->update($data['uniqueid'], $month, $monthParams); } } // 统计考勤类型次数等 if (!$daoTotal->existsRecord($data['categoryid'], $data['uniqueid'], $month)) { $daoTotal->create(array('orgid' => $data['orgid'], 'uniqueid' => $data['uniqueid'], 'categoryid' => $data['categoryid'], 'date' => $month, 'total' => $period, 'updatetime' => time())); } else { $daoTotal->updateTotal($data['categoryid'], $data['uniqueid'], $month, $period); } } $manager = Tudu_Tudu_Manager::getInstance(); $manager->doneTudu($tudu->tuduId, 1, 0); // 没有的 } else { /* @var $daoApply Dao_App_Attend_Apply */ $daoApply = Tudu_Dao_Manager::getDao('Dao_App_Attend_Apply', Tudu_Dao_Manager::DB_APP); $apply = $daoApply->getApply(array('tuduid' => $tudu->tuduId)); // 不同意 if (!$tudu->isAgree) { $daoApply->updateApply($apply->applyId, array('status' => 3)); //$manager = Tudu_Tudu_Manager::getInstance(); //$manager->doneTudu($tudu->tuduId, 1, 0); } else { $daoApply->updateApply($apply->applyId, array('status' => 1)); } if (null !== $apply) { $daoApply->updateReviewer($apply->applyId, $tudu->uniqueId, array('status' => $tudu->isAgree ? 1 : 2)); if ($tudu->recipient) { $recipients = $tudu->recipient; foreach ($recipients as $rec) { if (!empty($rec['isreview'])) { $daoApply->addReviewer($apply->applyId, $rec['uniqueid'], 0); } } } } } }
public function prevSave(Tudu_Model_Tudu_Entity_Tudu $tudu, Tudu_Model_Tudu_Entity_Extension_Abstract &$data) { $steps = $data->getSteps(); $currentStepId = null; // 没有预订流程,按照图度参数生成流程步骤 if (empty($steps)) { $steps = array(); $orderNum = 1; if ($tudu->reviewer) { $stepId = Dao_Td_Tudu_Step::getStepId(); $reviewStep = new Tudu_Model_Tudu_Entity_Step(array('orgid' => $tudu->orgId, 'tuduid' => $tudu->tuduId, 'uniqueid' => $tudu->uniqueId, 'stepid' => $stepId, 'type' => Dao_Td_Tudu_Step::TYPE_EXAMINE, 'prevstepid' => self::NODE_HEAD, 'nextstepid' => self::NODE_END, 'ordernum' => $orderNum++)); foreach ($tudu->reviewer as $sec) { $reviewStep->addSection($sec); } $steps[$stepId] = $reviewStep; $currentStepId = $stepId; } if ($tudu->to) { $stepId = Dao_Td_Tudu_Step::getStepId(); $prevId = self::NODE_HEAD; if ($currentStepId) { $steps[$currentStepId]->nextStepId = $stepId; $prevId = $currentStepId; } else { $currentStepId = $stepId; } $step = new Tudu_Model_Tudu_Entity_Step(array('orgid' => $tudu->orgId, 'tuduid' => $tudu->tuduId, 'uniqueid' => $tudu->uniqueId, 'stepid' => $stepId, 'type' => $tudu->acceptMode ? Dao_Td_Tudu_Step::TYPE_CLAIM : Dao_Td_Tudu_Step::TYPE_EXECUTE, 'prevstepid' => $prevId, 'nextstepid' => self::NODE_END, 'ordernum' => $orderNum++)); $sec = array(); foreach ($tudu->to as $user) { $sec[] = $user; } $step->addSection($sec); $steps[$stepId] = $step; } } else { $from = explode(' ', $tudu->target); $prevUsers = array(array('email' => $from[0], 'truename' => $from[1])); $addressBook = Tudu_AddressBook::getInstance(); foreach ($steps as $step) { $users = $step->getAttribute('users'); // 解析步骤人员 if (is_string($users)) { if (0 === strpos($users, '^')) { foreach ($prevUsers as $u) { $u = $addressBook->searchUser($tudu->orgId, $u['email']); $sections = $this->_getHeigherUsers($u['email'], $tudu->orgId, $u['deptid'] === null ? '^root' : $u['deptid'], $users == '^uppers'); if (null === $sections) { require_once 'Tudu/Model/Tudu/Exception.php'; throw new Tudu_Model_Tudu_Exception('Missing flow steps upper reviewer'); } } } else { $sections = $this->parseStepUsers($steps, $users); } } $step->setAttribute('tuduid', $tudu->tuduId); $step->setAttribute('orgid', $tudu->orgId); foreach ($sections as $section) { $step->addSection($section); } $prevUsers = array_pop($sections); } } $data->setAttribute('flowsteps', $steps); }