permission->is_admin(false); $this->load->model('workflow_model'); } //首页 public function index() { if ($this->session->userdata('admin_chtcdn') === FALSE) { $this->permission->is_admin(); } $data=array(); $typelist=$this->workflow_model->get_type_list('all'); $data['typelist']=array(); foreach ($typelist as $t) { $data['typelist'][$t->wt_parentid][]=$t; } if (empty($data['typelist'])) { $data['typelist'][0]=array(); } $data['left_nav']='index'; $this->load->view('n-header', $data); $this->load->view('w-nav'); $this->load->view('w-left'); $this->load->view('index/index'); $this->load->view('w-bottom'); $this->load->view('n-footer'); } //添加具体事务页面 public function add_work($wt_sn) { $this->permission->is_admin(); $data=array(); //当前类型信息 $data['typelist']=$this->workflow_model->get_type_list('all',$wt_sn); //提取使用的表单 $form=$data['typelist'][0]->wt_form; $data['current_wt']=$wt_sn; $data['add_work']=1; $data['left_nav']='index'; $this->load->view('n-header', $data); $this->load->view('w-nav'); $this->load->view('w-left'); $this->load->view("form/$form"); $this->load->view('w-bottom'); $this->load->view('n-footer'); } //添加一个具体事务到数据库 public function do_add_work() { //判断是不是补填的值班记录 if ($this->input->post('mail_title')=='值班记录') { //本月和上个月的值班表(有可能本月初和上月尾是连着的假期) $currentmonth=date('Y-m-01 00:00:00',time()); $datetime = strtotime("$currentmonth -1 month"); $data['list']=$this->workflow_model->get_rata_list($datetime,2,'DESC'); foreach ($data['list'] as $v) { $data['flow_data'][]=$this->workflow_model->get_work_flow_data($v->wf_sn); } //节假日列表 $needdate_list=array(); foreach ($data['flow_data'] as $f) { foreach ($f as $d) { $wfd_key_arr=explode('_', $d->wfd_key); if ($wfd_key_arr[0]=='weekend' && $d->wfd_value==1) { $wfd_key_arr[1]=strlen($wfd_key_arr[1])==7?substr($wfd_key_arr[1], 0,-1).'0'.substr($wfd_key_arr[1],-1):$wfd_key_arr[1]; $needdate_list[]=$wfd_key_arr[1]; } } } $zhiban_date=date('Ymd',strtotime($this->input->post('wf_time'))); if (!in_array($zhiban_date, $needdate_list)) { echo json_encode(array('status'=>'no','msg'=>'请把左上角的日期改为你值班当天的日期')); return true; } } //保存任务 $this->load->model('operator_model'); $current_user=$this->input->post('wf_user'); $tmp = $this->operator_model->get_user_by_name($current_user); $wf_user=$tmp['OPI_SN']; $wf_time=strtotime($this->input->post('wf_time')); $group_admin=explode('@', $this->input->post('wf_wt_sn')); $wf_wt_sn=$group_admin[0]; $wfd_wf_sn=$this->workflow_model->add_work($wf_wt_sn,$wf_user,$wf_time); //保存键值对 $col_val=''; $mail_data=array(); $mail_data['wf_time']=$wf_time; foreach ($this->input->post() as $wfd_key => $wfd_value) { if ($wfd_key=='emailcontent') { $wfd_value=htmlspecialchars($wfd_value); } $col_val.="('".trim($wfd_key)."','".$wfd_value."',".$wfd_wf_sn."),"; $mail_data[$wfd_key]=$wfd_value; $mail_data['flow_data'][$wfd_key]=$wfd_value; } $apply_user=$this->input->post('apply_user'); if (empty($apply_user)) { $col_val.="('apply_user','".$current_user."',".$wfd_wf_sn."),"; } $col_val=substr($col_val, 0, -1); $wfd_sn=$this->workflow_model->add_work_data($col_val); //添加审核人 $typeinfo=$this->workflow_model->get_type_list(0,$wf_wt_sn); $verify_tolist_array=$this->get_verify_admin_list($wfd_wf_sn,$group_admin[1],$typeinfo[0]->wt_linear); //抄送邮件给指定人员 if ($wfd_wf_sn && $wfd_sn) { $data['userdata']=$this->session->userdata('admin_chtcdn'); //发送邮件给审核人员 $this->load->model('common_model'); if ($typeinfo[0]->wt_needmail==1) { $verify_from_email=$data['userdata']['whu_email']; $verify_subject=$this->input->post('mail_title'); $verify_mailbody='
我刚刚提交了一份'.$verify_subject.',请您审核一下下:
http://www.mycht.cn/webht.php/apps/workflow/index/verify/'.$wfd_wf_sn.'/0/verify
'; $verify_mailbody.='非常感谢!
'; $verify_mailbody.='本次提醒邮件来自中华游在线平台
'; $this->common_model->sendmail($verify_from_email,$verify_tolist_array,array(),$verify_subject,$verify_mailbody); } //抄送邮件给指定人员 $cc_mail_list=$this->input->post('cc_mail_list'); if (!empty($cc_mail_list)) { $typeinfo[0]->wt_msg_user=$cc_mail_list.';'.$typeinfo[0]->wt_msg_user; } $tolist_array=explode(';', $typeinfo[0]->wt_msg_user); if(!empty($tolist_array)){ $mail_tpl=$typeinfo[0]->wt_form; $subject=$current_user.'-'.date('Y-m-d',$wf_time).'-'.$this->input->post('mail_title'); $mailbody=$subject.'我刚刚通过了这份'.$verify_subject.',请您审核一下下:
http://www.mycht.cn/webht.php/apps/workflow/index/verify/'.$wv_wf_sn.'/0/verify
'; $verify_mailbody.='非常感谢!
'; $verify_mailbody.='本次提醒邮件来自中华游在线平台
'; $this->load->model('common_model'); $this->common_model->sendmail($verify_from_email,$verify_tolist_array,array(),$verify_subject,$verify_mailbody); } } echo json_encode(array('status'=>'ok_notips','msg'=>'操作成功!')); } public function get_verify_admin_list($wfd_wf_sn,$wv_admins,$wt_linear=0) { //取得申请人列表 $apply_user=$this->input->post('apply_user')?$this->input->post('apply_user'):$this->input->post('wf_user'); $apply_user=str_replace(' ', ';', $apply_user); $apply_user=str_replace(';', ';', $apply_user); $apply_user=str_replace('(', '(', $apply_user); $apply_user=str_replace(')', ');', $apply_user); $apply_user=str_replace('惠毅', '惠 毅', $apply_user); $apply_user=str_replace("\n", ";", $apply_user); $apply_user=str_replace("\r", ";", $apply_user); $name_arr=explode(';', $apply_user); $uname_array=(array_filter(array_flip(array_flip($name_arr)))); $user_list=$this->workflow_model->get_department_by_name($uname_array); //取得N级线性上司职务信息 $admin_str=''; if ($wt_linear!=0) { $admin_roles=array(); foreach ($user_list as $u) { if (empty($u->role)) { $admin_roles[]=$this->workflow_model->get_parent_admin('',$wt_linear); }else{ $role=$this->workflow_model->get_user_top_role($u->role); $admin_roles[]=$this->workflow_model->get_parent_admin($role->is_level,$wt_linear); } } $newadmin_roles=array(); foreach ($admin_roles as $admins) { foreach ($admins as $admin) { $newadmin_roles[$admin->is_level]=$admin->wt_sn; } } krsort($newadmin_roles); $admin_str=implode(';',$newadmin_roles); } $wv_admins=$admin_str.$wv_admins; $wv_admins=trim($wv_admins,';'); $wv_admins=explode(';', $wv_admins); $verify_tolist_array=array(); foreach ($wv_admins as $level=>$wt_sn) { $role_type=$this->workflow_model->get_type_list(0,$wt_sn,0,2); //如果是事业部分组的负责人,则取出对应分组的负责人 if ($role_type[0]->wt_form==0) { $department_str=''; foreach ($user_list as $u) { $u->department=$u->department==36?15:$u->department;//是产品组的话,算到德语事业部里面去 $department_str.=$u->department.','; } $department_str.='0'; $isid_list=$this->workflow_model->get_department_parent($department_str); $wt_parentids=''; foreach ($isid_list as $key => $is) { $wt_parentids.=$is->is_path; } $wt_parentids=rtrim($wt_parentids,','); $admin_user_list=$this->workflow_model->get_user_by_wtparentid($role_type[0]->wt_sn,$wt_parentids); } //如果是跨事业部的职务,则取出符合当前职务的用户 else { $admin_user_list=$this->workflow_model->get_user_by_role($role_type[0]->wt_sn); } foreach ($admin_user_list as $ad) { $wv_time=time(); $wv_wf_sn=$wfd_wf_sn; if ($level==0) { $verify_tolist_array[]=$ad->whu_email; $wv_actived=0; }else{ $wv_actived=-1; } $wv_sn=$this->workflow_model->add_work_verify($ad->whu_uid,$wv_time,$wv_wf_sn,$level,$wv_actived); } } return $verify_tolist_array; } public function other_verify($wf_sn,$wv_status=0) { //获取当前值班名单 $userdata=$this->session->userdata('admin_chtcdn'); $data['userdata']=$userdata; $haslog=$this->workflow_model->get_work_flow_data_by_key($wf_sn); if (empty($haslog)) { $data['haslog']=false; }else{ $data['haslog']=true; } $flow_data=$this->workflow_model->get_work_flow_data($wf_sn); $en_uname_list=$sw_uname_list=$jd_uname_list=$js_uname_list=$weekend_list=array(); $js_ct_list=array('文娟','王征','宋芳馨','岑靖鑫','赵嘉琪','赵鹏','罗玲玲'); $datetemp=$datetemp2=$datetemp3=array(); foreach ($flow_data as $value) { if (!empty($value->wfd_value) && stripos($value->wfd_key, 'en_uname')!==false) { $tmp['name']=$value->wfd_value; $wfd_key=explode('_', $value->wfd_key); $tmp['date']=end($wfd_key); $en_uname_list[$value->wfd_value][]=$tmp; } elseif (!empty($value->wfd_value) && stripos($value->wfd_key, 'sw_uname')!==false) { $tmp2['name']=$value->wfd_value; $wfd_key=explode('_', $value->wfd_key); $tmp2['date']=end($wfd_key); $datetemp[]=$tmp2['date']; $sw_uname_list[]=$tmp2; } elseif (!empty($value->wfd_value) && stripos($value->wfd_key, 'jd_uname')!==false) { $tmp3['name']=$value->wfd_value; $wfd_key=explode('_', $value->wfd_key); $tmp3['date']=end($wfd_key); $datetemp2[]=$tmp3['date']; $jd_uname_list[]=$tmp3; } elseif (!empty($value->wfd_value) && stripos($value->wfd_key, 'js_uname')!==false) { $wfd_key=explode('_', $value->wfd_key); $date=end($wfd_key); $wfd_value=$value->wfd_value; $wfd_value=str_replace(' ', ';', $wfd_value); $wfd_value=str_replace(';', ';', $wfd_value); $wfd_value=str_replace("\n", ";", $wfd_value); $wfd_value=str_replace("\r", ";", $wfd_value); $name_list=explode(';', $wfd_value); foreach ($name_list as $n) { $tmp4['isct']=0; if (in_array(trim($n), $js_ct_list)) { $tmp4['isct']=1; } $tmp4['date']=$date; $tmp4['name']=$n; $datetemp3[]=$tmp4['date']; $js_uname_list[]=$tmp4; } }elseif ($value->wfd_value==1 && stripos($value->wfd_key, 'weekend')!==false) { $wfd_key=explode('_', $value->wfd_key); $weekend_list[]=end($wfd_key); } } foreach ($js_uname_list as $key=>$v) { if (!in_array($v['date'], $weekend_list)) { unset($js_uname_list[$key]); unset($datetemp3[$key]); } } array_multisort($datetemp, SORT_ASC, $sw_uname_list); array_multisort($datetemp2, SORT_ASC, $jd_uname_list); array_multisort($datetemp3, SORT_ASC, $js_uname_list); $data['en_uname_list']=$en_uname_list; $data['sw_uname_list']=$sw_uname_list; $data['jd_uname_list']=$jd_uname_list; $data['js_uname_list']=$js_uname_list; $data['wf_sn']=$wf_sn; $data['nav_type']='rata_list'; $data['left_nav']='rata_list'; $this->load->view('n-header', $data); $this->load->view('w-nav'); $this->load->view('w-left'); $this->load->view('index/other_verify'); $this->load->view('w-bottom'); $this->load->view('n-footer'); } public function do_other_verify() { $this->load->model('Kaoqin_model'); $username=$this->input->post('username'); $rotadate=date('Y-m-d 00:00:00',strtotime($this->input->post('rotadate'))); $jabtimes=$this->input->post('jabtimes'); $wf_sn=$this->input->post('wf_sn'); $atd_sn_arr=$this->Kaoqin_model->get_atd_type('JAB'); $epy_sn_arr=$this->Kaoqin_model->get_epy_by_name($username); $ATD_StartDate=$rotadate; $ATD_EndDate=$rotadate; if (isset($atd_sn_arr[0]->ATT_SN) && isset($epy_sn_arr[0]->EPY_ID)) { $this->Kaoqin_model->add_atd($epy_sn_arr[0]->EPY_ID,$atd_sn_arr[0]->ATT_SN,$jabtimes,'小时',$ATD_StartDate,$ATD_EndDate); $col_val="('rota".trim($wf_sn)."','1',0)"; if($this->input->post('hasinsert')==0) { $this->workflow_model->add_work_data($col_val); } echo json_encode(array('status'=>'ok','msg'=>$col_val)); }else{ echo json_encode(array('status'=>'no','msg'=>$col_val)); } } //我的事务 public function work_list($page=1) { $wt_sn=false; $userdata=$this->session->userdata('admin_chtcdn'); //分页 $page_flag=true; $list=$this->workflow_model->get_user_work_list($userdata['OPI_SN'],$wt_sn,$page_flag); $pages['total']=count($list);//数据总条数 $pages['pageSize']= 30;//每页展示数量 $pages['url'] = site_url("apps/workflow/index/work_list");//页码链接 $pages['current']=$page;//当前页码 $data['pageinfo']=show_page($pages); //获取事务列表 $task_id_str=0; $list=array_slice($list,$pages['pageSize']*($page-1),$pages['pageSize']); foreach ($list as $v) { $task_id_str.=','.$v->wf_sn; } $data['list']=$this->workflow_model->get_user_work_list($userdata['OPI_SN'],$wt_sn,false,$task_id_str); $data['nav_type']='userlist'; $data['left_nav']='userlist'; $this->load->view('n-header', $data); $this->load->view('w-nav'); $this->load->view('w-left'); $this->load->view('index/unverify'); $this->load->view('w-bottom'); $this->load->view('n-footer'); } //待审核事务 public function unverify($wv_status=0,$page=1) { $userdata=$this->session->userdata('admin_chtcdn'); //分页 $page_flag=true; $list=$this->workflow_model->get_work_list($userdata['whu_uid'],$wv_status,false,$page_flag,false); $pages['total']=count($list);//数据总条数 $pages['pageSize']= 30;//每页展示数量 $pages['url'] = site_url("apps/workflow/index/unverify/$wv_status/");//页码链接 $pages['current']=$page;//当前页码 $data['pageinfo']=show_page($pages); //获取事务列表 $task_id_str=0; $list=array_slice($list,$pages['pageSize']*($page-1),$pages['pageSize']); foreach ($list as $v) { $task_id_str.=','.$v->wv_sn; } $datalist=$this->workflow_model->get_work_list_by_sn($task_id_str); $worklist=array(); foreach ($datalist as $wlist) { $worklist[$wlist->wf_sn]=$wlist; } $data['list']=$worklist; $data['nav_type']='verify'; $data['left_nav']=$wv_status==0?'unverify':'verify'; $data['wv_status']=$wv_status; if ($wv_status==1) { $data['nav_type']='verifyed'; } $this->load->view('n-header', $data); $this->load->view('w-nav'); $this->load->view('w-left'); $this->load->view('index/unverify'); $this->load->view('w-bottom'); $this->load->view('n-footer'); } //值班表 public function rata_list() { $data['list']=$this->workflow_model->get_rata_list(false,12); $data['nav_type']='rata_list'; $data['left_nav']='rata_list'; $this->load->view('n-header', $data); $this->load->view('w-nav'); $this->load->view('w-left'); $this->load->view('index/rata_list'); $this->load->view('w-bottom'); $this->load->view('n-footer'); } //事务类型列表 public function work_type_list() { $data['type_list']=$this->workflow_model->get_type_list('all',false,'all'); $data['left_nav']='type_list'; $this->load->view('n-header', $data); $this->load->view('w-nav'); $this->load->view('w-left'); $this->load->view('index/type_list'); $this->load->view('w-bottom'); $this->load->view('n-footer'); } //添加事务类型界面 public function add_work_type($wt_sn=false) { $data=array(); //类型列表 $wt_isdelete=$wt_sn===false?0:'all'; $data['typelist']=$this->workflow_model->get_type_list(0,false,$wt_isdelete); //职务列表 $data['rolelist']=$this->workflow_model->get_department_list(2); //表单列表 $form_path=APPPATH."third_party/workflow/views/form"; $form_array=scandir($form_path); unset($form_array[0],$form_array[1]); $data['formlist']=$form_array; //要编辑的事务类型信息 if ($wt_sn!=false) { $data['type_info']=$this->workflow_model->get_type_list(0,$wt_sn); isset($data['type_info'][0]) && $data['type_info']=$data['type_info'][0]; } $this->load->model('operator_model'); if (isset($data['type_info']->wt_step) && !empty($data['type_info']->wt_step)) { $OPI_SN_STRING=str_replace(';', ',', $data['type_info']->wt_step); $OPI_SN_STRING=trim($OPI_SN_STRING,','); $admin=$this->operator_model->get_user_by_sn($OPI_SN_STRING); $data['wt_step_uname']=''; foreach ($admin as $u) { $wt_step_uname[$u->OPI_SN]=$u->OPI_Name; } $wt_step_array=explode(';', $data['type_info']->wt_step); foreach ($wt_step_array as $v) { $data['wt_step_uname'].=$wt_step_uname[$v].'->'; } $data['wt_step_uname']=rtrim($data['wt_step_uname'],'->'); } $this->load->view('index/add_work_type',$data); } //职务类型管理 public function add_role_type($is_id='') { $data=array(); $data['title']='职务'; $data['wt_refuse']=2; $data['structure_list']=$this->workflow_model->get_structure_list($data['wt_refuse']); if (empty($data['structure_list'])) { $this->add_partment_tree($data['wt_refuse'],$data['title'],0,false); redirect(site_url("apps/workflow/index/add_partment_type")); } if (empty($is_id)) { $is_id = $data['structure_list'][0]->id; } $data['is_id']=$is_id; $data['typelist']=$this->workflow_model->get_type_list($is_id,false,0,$data['wt_refuse']); $this->load->view('n-header', $data); $this->load->view('w-nav'); $this->load->view('w-left'); $this->load->view('index/role_type'); $this->load->view('w-bottom'); $this->load->view('n-footer'); } //事业部小组类型管理 public function add_partment_type($is_id='') { $data=array(); $data['title']='事业部'; $data['wt_refuse']=1; $data['structure_list']=$this->workflow_model->get_structure_list(); if (empty($data['structure_list'])) { $this->add_partment_tree($data['wt_refuse'],$data['title'],0,false); redirect(site_url("apps/workflow/index/add_partment_type")); } if (empty($is_id)) { $is_id = $data['structure_list'][0]->id; } $data['is_id']=$is_id; $data['typelist']=$this->workflow_model->get_type_list($is_id,false,0,$data['wt_refuse']); $this->load->view('n-header', $data); $this->load->view('w-nav'); $this->load->view('w-left'); $this->load->view('index/partment_type'); $this->load->view('w-bottom'); $this->load->view('n-footer'); } //添加事业部节点 public function add_partment_tree($wt_refuse=1,$title='事业部',$is_parent_id=0,$is_ajax=true) { $this->load->model('InfoStructures_model'); $insert_id = $this->InfoStructures_model->Add($is_parent_id); $wt_name=$title; $wt_form=''; $wt_msg_user=''; $wt_step=''; $wt_parentid=$insert_id; $wt_time=time(); if ($insert_id && $wt_sn=$this->workflow_model->add_type($wt_name,$wt_form,$wt_step,$wt_msg_user,$wt_parentid,$wt_time,$wt_refuse)){ $data[] = array('name' => 'ok', 'value' => $insert_id); }else{ $data[] = array('name' => 'no', 'value' => $this->lang->line('form_info_error')); } if ($is_ajax) { echo json_encode($data); return TRUE; } return $insert_id; } //移动排序树形结构 public function tree_move() { //网站会提交一个同级节点id列表字符串,按照这个去排序 $this->load->model('InfoStructures_model'); $parent_id = $this->input->post('pid'); $idsStr = $this->input->post('ids'); $idsArray = explode(',', $idsStr); foreach ($idsArray as $key => $value) { if ($value) { //设置排序 $this->InfoStructures_model->set_sort($value, $key); //设置path $this->InfoStructures_model->set_path($parent_id, $value); } } $data[] = array('name' => 'ok', 'value' => $this->lang->line('structures_success_move')); echo json_encode($data); return TRUE; } //删除指定事业部分组 public function delete_partment_tree() { $isdelete=$this->workflow_model->delete_wt($this->input->post('wt_sn')); if ($isdelete) { $this->load->model('InfoStructures_model'); $this->InfoStructures_model->Delete($this->input->post('wt_parentid')); $data[] = array('name' => 'ok', 'value' => site_url('apps/workflow/index/add_partment_type')); echo json_encode($data); }else{ $data[] = array('name' => 'no', 'value' => $this->lang->line('form_keyworlds_error')); echo json_encode($data); } } //员工管理 public function user_manage($whu_uid=false) { //事业部分组 $data['typelist']=$this->workflow_model->get_department_list(); //职务列表 $data['rolelist']=$this->workflow_model->get_department_list(2); //用户列表 $data['userlist']=$this->workflow_model->get_user_list(); if ($whu_uid!==false) { $data['userinfo']=$this->workflow_model->get_user_list($whu_uid); $data['userinfo']=$data['userinfo'][0]; $data['userrole']=array_filter(explode(',', $data['userinfo']->role)); } $this->load->view('n-header', $data); $this->load->view('w-nav'); $this->load->view('w-left'); $this->load->view('index/user_manage'); $this->load->view('w-bottom'); $this->load->view('n-footer'); } //员工资料更新 public function user_edit() { $whu_role=$this->input->post('userrole'); $whu_uname=$this->input->post('whu_uname'); $whu_email=$this->input->post('whu_email'); $whu_ip=$this->input->post('whu_ip'); $department=$this->input->post('department'); $role=!empty($whu_role)?implode(',',$this->input->post('userrole')):NULL; $whu_uid=$this->input->post('whu_uid'); $result=$this->workflow_model->update_webuser($whu_uname,$whu_email,$whu_ip,$department,$role,$whu_uid); if ($result) { echo json_encode(array('status'=>'ok','msg'=>'保存成功!')); }else{ echo json_encode(array('status'=>'no','msg'=>'保存失败!')); } } //添加事业部、职务类型 public function do_add_role_type() { $wt_name=$this->input->post('wt_name'); $wt_refuse=$this->input->post('wt_refuse'); $wt_form=$this->input->post('wt_form')?1:0; $wt_msg_user=''; $wt_step=''; $wt_parentid=$this->input->post('wt_parentid')?$this->input->post('wt_parentid'):0; $wt_time=time(); if ($this->input->post('wt_sn')) { $result=$this->workflow_model->update_wt($wt_name,$wt_form,$wt_step,$wt_msg_user,$wt_parentid,$this->input->post('wt_sn')); }else{ $result=$this->workflow_model->add_type($wt_name,$wt_form,$wt_step,$wt_msg_user,$wt_parentid,$wt_time,$wt_refuse); } if ($result) { echo json_encode(array('status'=>'ok','msg'=>'保存成功!')); }else{ echo json_encode(array('status'=>'no','msg'=>'保存失败!')); } } //更换值班对话框 public function changerota($wf_sn) { $data['wf_sn']=$wf_sn; $this->load->view('index/changerota',$data); } //执行更换值班操作 public function dochangerota() { $wf_sn=$this->input->post('wf_sn'); $yusername=$this->input->post('yusername'); $yrotadate=$this->input->post('yrotadate'); $tausername=$this->input->post('tausername'); $tarotadate=$this->input->post('tarotadate'); if (empty($yrotadate) && empty($tarotadate)) { echo json_encode(array('status'=>'no','msg'=>'当前月份你们两个都没有值班安排!')); return false; } if (empty($yusername) || empty($tausername)) { echo json_encode(array('status'=>'no','msg'=>'请把更换人填写完整!')); return false; } $yrotadate=str_replace('-', '', $yrotadate); $tarotadate=str_replace('-', '', $tarotadate); if (!$wf_sn) { $datetime=$yrotadate; if(empty($yrotadate)) $datetime=$tarotadate; $datetime=strtotime(date('Y-m-01 00:00:00',strtotime($datetime))); $list=$this->workflow_model->get_rata_list($datetime,1,'ASC'); if(empty($list)){ echo json_encode(array('status'=>'no','msg'=>'更换失败,请联系梁宇云!')); return false; } $wf_sn=$list[0]->wf_sn; } $y_data=''; $ta_data=''; $flow_data=$this->workflow_model->get_work_flow_data($wf_sn); foreach ($flow_data as $d) { if ($yrotadate && stripos($d->wfd_key, $yrotadate)!==false && stripos($d->wfd_value, $yusername)!==false) { $y_data=$d; }elseif ($tarotadate && stripos($d->wfd_key, $tarotadate)!==false && stripos($d->wfd_value, $tausername)!==false) { $ta_data=$d; } } //当月我有值班,TA没有值班 if ($yrotadate && empty($tarotadate)) { $new_y_wfd_sn=$y_data->wfd_sn; $new_y_wfd_value=str_replace($yusername, $tausername, $y_data->wfd_value); $this->workflow_model->update_wfd($new_y_wfd_sn,$new_y_wfd_value); } //当前月我没有值班,TA有值班 elseif (empty($yrotadate) && $tarotadate) { $new_ta_wfd_sn=$ta_data->wfd_sn; $new_ta_wfd_value=str_replace($tausername, $yusername, $ta_data->wfd_value); $this->workflow_model->update_wfd($new_ta_wfd_sn,$new_ta_wfd_value); } //当月两人同时有值班 else { $new_y_wfd_sn=$y_data->wfd_sn; $new_y_wfd_value=str_replace($yusername, $tausername, $y_data->wfd_value); $new_ta_wfd_sn=$ta_data->wfd_sn; $new_ta_wfd_value=str_replace($tausername, $yusername, $ta_data->wfd_value); $this->workflow_model->update_wfd($new_y_wfd_sn,$new_y_wfd_value); $this->workflow_model->update_wfd($new_ta_wfd_sn,$new_ta_wfd_value); } //给双方发送值班更换通知 $userdata=$this->session->userdata('admin_chtcdn'); $from_email=$userdata['whu_email']; $this->load->model('operator_model'); $tolist_array[]=$this->operator_model->get_webhtuser_by_name($tausername,'whu_email'); $tolist_array[]=$from_email; $subject=$yusername.'和你更换了值班,请注意查看中华游值班表'; $mailbody=$subject.'中华游温馨提醒,本周有您的值班的安排:
'; $mailbody.='PS:本次提醒仅供参考,详情请查看中华游值班表
'; $this->common_model->sendmail($from_email,$tolist_array,array('cht07@citsguilin.com'),$subject,$mailbody); echo 'ok'; } public function send_after_notify() { //本月和上个月的值班表(有可能本月初和上月尾是连着的假期) $currentmonth=date('Y-m-01 00:00:00',time()); $datetime = strtotime("$currentmonth -1 month"); $data['list']=$this->workflow_model->get_rata_list($datetime,2,'DESC'); if(empty($data['list'])) return false; foreach ($data['list'] as $v) { $data['flow_data'][]=$this->workflow_model->get_work_flow_data($v->wf_sn); } //获取今天之前且离今天最近的假期值班人员列表 $today=date('Ymd'); $userlist=array(); $needdate_list=array(); if(empty($data['flow_data'])) return false; foreach ($data['flow_data'] as $f) { foreach ($f as $d) { $wfd_key_arr=explode('_', $d->wfd_key); //值班日期在今天之前的值班人 if (!empty($d->wfd_value) && isset($wfd_key_arr[2]) && is_numeric($wfd_key_arr[2])) { $wfd_key_arr[2]=strlen($wfd_key_arr[2])==7?substr($wfd_key_arr[2], 0,-1).'0'.substr($wfd_key_arr[2],-1):$wfd_key_arr[2]; $wfd_key_arr[2]<$today && $userlist[$wfd_key_arr[2]][]=$d->wfd_value; } //获取非上班的值班日期集合 if ($wfd_key_arr[0]=='weekend' && $d->wfd_value==1) { $wfd_key_arr[1]=strlen($wfd_key_arr[1])==7?substr($wfd_key_arr[1], 0,-1).'0'.substr($wfd_key_arr[1],-1):$wfd_key_arr[1]; $needdate_list[]=$wfd_key_arr[1]; } } } //如果没有获取到值班人或者当前日期正值节假日,则不继续处理 if(empty($userlist) || in_array($today, $needdate_list)) return false; krsort($userlist,SORT_NUMERIC); $num=0; $name_string=''; $time_arr=array(); //剔除非休假时间 foreach ($userlist as $key => $value) { if (!in_array($key, $needdate_list)) { continue; } //如果已经不是最近一个假期,则跳出循环 if ($num-$key>1) { $islastmonth = date('Ymd',strtotime("$num -1 day")); if ($islastmonth!=$key) { break; } } $num=$key; $time_arr[]=$key; foreach ($value as $n) { $name_string.=$n.';'; } } //如果不是节后第一天,停止发送提醒邮件处理 $last_festival=max($time_arr); $after_festival=date('Ymd',strtotime("$last_festival +1 day")); if ($today!=$after_festival) { echo '已经发送过了'; return false; } $name_string=str_replace(' ', ';', $name_string); $name_string=str_replace(';', ';', $name_string); $name_string=str_replace('(', '(', $name_string); $name_string=str_replace(')', ')', $name_string); $name_string=str_replace('(', ';(', $name_string); $name_string=str_replace(')', ');', $name_string); $name_string=str_replace('惠毅', '惠毅;惠 毅', $name_string); $name_string=str_replace(array(',',",","\t","\n","\r"),';', $name_string); $name_arr=explode(';', $name_string); $name_arr=(array_filter(array_flip(array_flip($name_arr)))); //过滤掉已经发了记录的名字 $namestring="'".implode("','", $name_arr)."'"; $date_time=strtotime(min($time_arr)); $remarks=$this->workflow_model->get_list_by_namestring($namestring,$date_time); foreach ($remarks as $key => $value) { if (in_array($value->OPI_Name, $name_arr)) { if ($value->OPI_Name=='惠毅') { unset($name_arr[array_search('惠 毅', $name_arr)]); } unset($name_arr[array_search($value->OPI_Name, $name_arr)]); } } if (empty($name_arr)) return false; //提取邮件地址 $map=' WHERE '; foreach ($name_arr as $name) { $name=trim($name); !empty($name) && $map.=" whu_uname like '$name%' OR "; } $map=substr($map, 0,-3); $this->load->model('operator_model'); $mailarr=$this->operator_model->get_webhtuser_by_name($map,'*',true); $tolist_array=array(); foreach ($mailarr as $list) { !empty($list->whu_email) && $tolist_array[]=$list->whu_email; //echo $list->whu_uname.':'.$list->whu_email.'你的值班记录还没有填写:
'; $mailbody.='PS:本次提醒名单由程序自动提取,如果你已经填过了,请忽略!
'; !empty($tolist_array) && $this->common_model->sendmail($from_email,$tolist_array,array('cht07@citsguilin.com','CHT67@citsguilin.com'),$subject,$mailbody); echo 'ok'; } public function print_business($wf_sn,$wv_status=1,$nav_type='userlist') { $data['wf_sn']=$wf_sn; $data['wv_status']=$wv_status; $data['nav_type']=$nav_type; $this->load->view('index/print_business',$data); } public function print_text($wf_sn,$wv_status=1,$nav_type='userlist') { $data['userdata']=$this->session->userdata('admin_chtcdn'); //事务申请人信息 $userdata=$this->session->userdata('admin_chtcdn'); $flow=$this->workflow_model->get_work_list($userdata['OPI_SN'],$wv_status,$wf_sn); $data['flow']=$flow[0]; //事务具体内容 $flow_data=$this->workflow_model->get_work_flow_data($wf_sn); $data['flow_data']=array(); foreach ($flow_data as $d) { $data[$d->wfd_key]=$d->wfd_value; $data['flow_data'][$d->wfd_key]=$d->wfd_value; } $form=$data['flow']->wt_form; $data['wf_sn']=$wf_sn; //事务类型 $data['typelist']=$this->workflow_model->get_type_list($data['flow']->wt_parentid,false,'all'); //以往步骤的审核信息 $data['verify_data']=$this->workflow_model->get_verify_by_filed($wf_sn,'wv_comment'); $data['nav_type']=$nav_type; if ($nav_type=='userlist') { $data['left_nav']='userlist'; }elseif ($nav_type=='rata_list') { $data['left_nav']='rata_list'; }elseif ($wv_status==0) { $data['left_nav']='unverify'; }else{ $data['left_nav']='verify'; } $this->load->view('index/print_text', $data); } }