Пример #1
0
 /**
  * @abstract    保存
  * @return      null
  */
 public function editAction()
 {
     // 返回值数组
     $result = array('success' => true, 'result' => true, 'info' => '保存成功');
     $request = $this->getRequest()->getParams();
     $now = date('Y-m-d H:i:s');
     $user_session = new Zend_Session_Namespace('user');
     $user = $user_session->user_info['employee_id'];
     $val = (object) $request;
     $materiel = new Product_Model_Materiel();
     $record = new Dcc_Model_Record();
     $review = new Dcc_Model_Review();
     $employee = new Hra_Model_Employee();
     $mail = new Application_Model_Log_Mail();
     $member = new Admin_Model_Member();
     // 根据物料类别获取审批流
     $typeId = $val->type_id;
     $stepRows = array();
     if ($typeId) {
         $type = new Product_Model_Type();
         // 获取当前物料类别对应的流程ID 如果找不到,继续往上搜索
         $flow_id = $type->getFlowId($typeId, 'new');
         if ($flow_id) {
             // 根据流程ID获取阶段
             $flow = new Admin_Model_Flow();
             $step = new Admin_Model_Step();
             $flowRow = $flow->getRow($flow_id);
             $step_ids = $flowRow['step_ids'];
             if ($step_ids) {
                 $stepRows = $step->getListByFlow($step_ids);
                 $state = "Reviewing";
             }
         }
     }
     // 新增还是编辑
     if (isset($val->id) && $val->id) {
         $result['info'] = '修改成功';
         $data = array('type' => $val->type_id, 'description' => $val->description, 'remark' => $val->remark, 'ver' => $val->ver, 'unit' => $val->unit, 'state' => isset($state) ? 'Reviewing' : 'Active', 'manufacturers' => $val->manufacturers, 'supply1' => $val->supply1, 'supply2' => $val->supply2, 'mpq' => $val->mpq, 'moq' => $val->moq, 'tod' => $val->tod, 'data_file_id' => $val->data_file_id, 'first_report_id' => $val->first_report_id);
         $id = $val->id;
         $where = "id = " . $id;
         try {
             if ($id) {
                 $materiel->update($data, $where);
                 /*
                  $attrval = new Admin_Model_Formval();
                  // 自定义字段
                  foreach($request as $field => $value) {
                  if(stripos($field, "intelligenceField") !== false) {
                  $attrId = str_replace("intelligenceField", "", $field);
                  $menu = 'oa_doc_files_'.$id;
                 
                  $formval = array(
                  'attrid' => $attrId,
                  'value' => $value,
                  'menu' => $menu
                  );
                  $where = "attrid = ".$attrId." and menu = '".$menu."'";
                  if($attrval->fetchAll($where)->count() > 0) {
                  // 更新
                  $attrval->update($formval, $where);
                  } else {
                  $attrval->insert($formval);
                  }
                  }
                  }
                 */
                 // 操作记录
                 $data = array('type' => "materiel", 'table_name' => "oa_product_materiel", 'table_id' => $id, 'handle_user' => $user, 'handle_time' => $now, 'action' => "编辑", 'ip' => $_SERVER['REMOTE_ADDR']);
                 $record->insert($data);
                 // 审核流程
                 // 删除已存在的审核记录
                 $review->delete("type = 'materiel' and file_id = " . $id);
                 // 把阶段信息插入review记录
                 $first = true;
                 foreach ($stepRows as $s) {
                     $plan_user = $s['user'];
                     if ($s['dept']) {
                         $tmpUser = array();
                         $plan_dept = $s['dept'];
                         foreach (explode(',', $plan_dept) as $role) {
                             $tmpRole = $member->getMemberWithNoManager($role);
                             foreach ($tmpRole as $m) {
                                 $tmpUser[] = $m['user_id'];
                             }
                         }
                         if (count($tmpUser) == 0 && !$plan_user) {
                             $tmpUser = $member->getUserids("系统管理员");
                         }
                         if (count($tmpUser) > 0) {
                             $tmpUser = $employee->getAdapter()->query("select group_concat(employee_id) as users from oa_user where active = 1 and id in ( " . implode(',', $tmpUser) . ")")->fetchObject();
                             $users = $tmpUser->users;
                         }
                         if ($users) {
                             if ($plan_user) {
                                 $plan_user .= ",";
                             }
                             $plan_user .= $users;
                         }
                     }
                     $repeatUser = explode(',', $plan_user);
                     $repeatUser = array_unique($repeatUser);
                     $plan_user = implode(',', $repeatUser);
                     $reviewData = array('type' => "materiel", 'file_id' => $id, 'plan_user' => $plan_user, 'method' => $s['method'], 'return' => $s['return'], 'step_name' => $s['step_name'], 'step_ename' => $s['step_ename']);
                     $review->insert($reviewData);
                 }
             }
         } catch (Exception $e) {
             $result['result'] = false;
             $result['info'] = $e->getMessage();
             echo Zend_Json::encode($result);
             exit;
         }
         echo Zend_Json::encode($result);
         exit;
     } else {
         $data = array('type' => $val->type_id, 'description' => $val->description, 'remark' => $val->remark, 'ver' => $val->ver, 'unit' => $val->unit, 'state' => isset($state) ? 'Reviewing' : 'Active', 'manufacturers' => $val->manufacturers, 'supply1' => $val->supply1, 'supply2' => $val->supply2, 'mpq' => $val->mpq, 'moq' => $val->moq, 'tod' => $val->tod, 'data_file_id' => $val->data_file_id, 'first_report_id' => $val->first_report_id, 'create_user' => $user, 'create_time' => $now);
         try {
             $id = $materiel->insert($data);
             if ($id) {
                 /*
                  // 自定义字段
                  $attrval = new Admin_Model_Formval();
                  foreach($request as $field => $value) {
                  if(stripos($field, "intelligenceField") !== false && $value) {
                  $attrId = str_replace("intelligenceField", "", $field);
                  $menu = 'oa_doc_files_'.$id;
                 
                  $formval = array(
                  'attrid' => $attrId,
                  'value' => $value,
                  'menu' => $menu
                  );
                  $attrval->insert($formval);
                  }
                  }
                 */
                 // 操作记录
                 $data = array('type' => "materiel", 'table_name' => "oa_product_materiel", 'table_id' => $id, 'handle_user' => $user, 'handle_time' => $now, 'action' => "申请", 'ip' => $_SERVER['REMOTE_ADDR']);
                 $record->insert($data);
                 // 审核流程
                 // 把阶段信息插入review记录
                 $first = true;
                 foreach ($stepRows as $s) {
                     $plan_user = $s['user'];
                     if ($s['dept']) {
                         $tmpUser = array();
                         $plan_dept = $s['dept'];
                         foreach (explode(',', $plan_dept) as $role) {
                             $tmpRole = $member->getMemberWithNoManager($role);
                             foreach ($tmpRole as $m) {
                                 $tmpUser[] = $m['user_id'];
                             }
                         }
                         if (count($tmpUser) == 0 && !$plan_user) {
                             $tmpUser = $member->getUserids("系统管理员");
                         }
                         if (count($tmpUser) > 0) {
                             $tmpUser = $employee->getAdapter()->query("select group_concat(employee_id) as users from oa_user where active = 1 and id in ( " . implode(',', $tmpUser) . ")")->fetchObject();
                             $users = $tmpUser->users;
                         }
                         if ($users) {
                             if ($plan_user) {
                                 $plan_user .= ",";
                             }
                             $plan_user .= $users;
                         }
                     }
                     $repeatUser = explode(',', $plan_user);
                     $repeatUser = array_unique($repeatUser);
                     $plan_user = implode(',', $repeatUser);
                     $reviewData = array('type' => "materiel", 'file_id' => $id, 'plan_user' => $plan_user, 'method' => $s['method'], 'return' => $s['return'], 'step_name' => $s['step_name'], 'step_ename' => $s['step_ename']);
                     $review->insert($reviewData);
                     // 邮件任务
                     if ($first) {
                         $to = $employee->getAdapter()->query("select group_concat(email) as mail_to from oa_employee where id in ( " . $plan_user . ")")->fetchObject();
                         $mailData = array('type' => '物料号归档审批', 'subject' => '物料号归档审批', 'to' => $to->mail_to, 'cc' => '', 'content' => '你有新物料号归档申请需要审核,请登录系统查看详情', 'send_time' => $now, 'add_date' => $now);
                         $mailId = $mail->insert($mailData);
                         if ($mailId) {
                             $mail->send($mailId);
                         }
                     }
                     $first = false;
                 }
             }
         } catch (Exception $e) {
             $result['result'] = false;
             $result['info'] = $e->getMessage();
             echo Zend_Json::encode($result);
             exit;
         }
         echo Zend_Json::encode($result);
         exit;
     }
 }