public function missystemnotice() { $WORKNUM = 10; //配置显示条数 审核进度跟踪模块 $MisWorkMonitoringViewModel = D("MisWorkMonitoringView"); $map['dostatus'] = 0; //代表待办任务strtolower //$map['_string'] = 'FIND_IN_SET( '.$_SESSION[C('USER_AUTH_KEY')].', curNodeUser )'; if (!$_SESSION["a"] == 1) { $map['_string'] = 'FIND_IN_SET( ' . $_SESSION[C('USER_AUTH_KEY')] . ', curNodeUser )'; } $map['node.status'] = 1; $MisWorkMonitoringList = $MisWorkMonitoringViewModel->where($map)->select(); $list = array(); $pidList = array(); foreach ($MisWorkMonitoringList as $key => $val) { $listArray = array(); if (getFieldBy($val['pid'], 'id', 'pid', 'node') != 1) { $val['pid'] = getFieldBy($val['pid'], 'id', 'pid', 'node'); } if ($pidList[$val['pid']]) { $listArr = array('name' => $val['name'], 'tableid' => $val['tableid'], 'title' => $val['title'], 'createid' => $val['createid'], 'orderno' => $val['orderno'], 'timeout' => getCHStimeDifference($val['createtime'], $val['dotime'])); $list[$val['pid']]['list'][] = $listArr; } else { $pidList[$val['pid']] = 1; $listArray[] = array('name' => $val['name'], 'tableid' => $val['tableid'], 'title' => $val['title'], 'createid' => $val['createid'], 'orderno' => $val['orderno'], 'timeout' => getCHStimeDifference($val['createtime'], $val['dotime'])); $list[$val['pid']] = array('type' => getFieldBy($val['pid'], 'id', 'title', 'node'), 'list' => $listArray); } } $this->assign("WorkMonitonList", $list); // dump($list); return $this->fetch("MisSystemPanelMethod:waitingfirst"); }
/** * @Title: getCurrentWork * @Description: 首页index页面,点击待处理后请求执行的方法,为了获取代办事项 * @return 返回带处理任务的数据信息,以及点击数据后,请求的方法地址。 * @author 黎明刚 * @date 2014年11月28日 下午2:34:56 * @throws */ public function getCurrentWork() { $workexeList = array(); //当前登录人id $userid = $_SESSION[C('USER_AUTH_KEY')]; //获取带我处理的工作条数信息 $model = D('MisWorkMonitoring'); $map['dostatus'] = 0; $map['_string'] = 'FIND_IN_SET( ' . $userid . ', curNodeUser )'; $workdata = $model->where($map)->select(); //计算总条数 $daibanNum = count($workdata); //定义变量存放 待我审核,待我执行的数据集合 $moduleNameList = array(); foreach ($workdata as $k => $v) { $auditTimeOut = ""; //计算推送时间到至今有多少小时。判断是否即将超时。 $hours = getCHStimeDifference($v['createtime'], time(), "H"); //获取系统中预留的超时提醒 $referHours = C("AUDIT_TIMEOUT"); //超期提前提醒时间 $remindHours = C("AUDIT_TIMEOUT_REMIND"); $countH = $hours + $remindHours; if ($countH >= $referHours) { $auditTimeOut = "即将超期"; if ($hours >= $referHours) { $auditTimeOut = "已超期"; } } if (in_array($v['tablename'], array_keys($moduleNameList))) { if ($v['createtime'] > $moduleNameList[$v['tablename']]['createtime']) { $moduleNameList[$v['tablename']]['createtime'] = $v['createtime']; } if ($moduleNameList[$v['tablename']]['auditTimeOut'] != "已超期" && $auditTimeOut) { $moduleNameList[$v['tablename']]['auditTimeOut'] = $auditTimeOut; } $moduleNameList[$v['tablename']]['count'] = $moduleNameList[$v['tablename']]['count'] + 1; } else { $moduleNameList[$v['tablename']] = array('createtime' => $v['createtime'], 'title' => "[审批]" . getFieldBy($v['tablename'], 'name', 'title', 'node'), 'url' => __APP__ . "/MisWorkExecuting/index/jump/3/md/MisWorkMonitoring/worktype/1/rel/MisWorkExecutingbox/mytodoname/" . $v['tablename'], 'count' => 1, 'auditTimeOut' => $auditTimeOut); } } //工作审批 end //审批后执行数组 $Model = M(); //查询 可执行的 模块 名称 $isexecutoridSql = "SELECT a.`name`,a.cname,b.executorid AS executorida,b.turnexecutorid,p.executorid\n\t\t\t\tFROM mis_work_executing_set AS a\n\t\t\t\tLEFT JOIN mis_work_executing AS b ON a. NAME = b.tablename\n\t\t\t\tLEFT JOIN process_info as p ON p.id = b.ptmptid\n\t\t\t\tWHERE dotype <> 1 and a.status=1"; $isexecutoridArr = $this->query($isexecutoridSql); $executorid = array(); //执行人 数组 $workExecutor = array(); //定义 可执行的tablename foreach ($isexecutoridArr as $k => $v) { $executorid = array_merge(explode(",", $v['executorida']), explode(",", $v['turnexecutorid']), explode(",", $v['executorid'])); if (in_array($userid, $executorid) || isset($_SESSION['a'])) { //当前登录人在执行人数组中 $workExecutor[] = $v['name']; } } //构造 查询 要处理的数量sql $numsql .= "SELECT COUNT(tablename) AS num, tablename, b.executorid AS executoridb, b.turnexecutorid,p.executorid\n\t\t\t\tFROM mis_work_executing_set AS a\n\t\t\t\tLEFT JOIN mis_work_executing AS b ON a. NAME = b.tablename\n\t\t\t\tLEFT JOIN process_info AS p ON b.ptmptid = p.id\n\t\t\t\tWHERE (dotype <> 1)"; if (!isset($_SESSION['a'])) { //如果不是管理员 过滤条件 $numsql .= "AND ( ( FIND_IN_SET('{$userid}', turnexecutorid) )\n\t\t\tOR ( FIND_IN_SET('{$userid}', b.executorid) )\n\t\t\tOR ( FIND_IN_SET('{$userid}', p.executorid) ) ) "; } $numsql .= "GROUP BY tablename"; //获取 需要处理的数量 数组 $numlist = $this->query($numsql); //查询 信息sql $workmap['name'] = array('in', $workExecutor); $workmap['dotype'] = array('neq', 1); $workSet = M("mis_work_executing_set"); //数组 $arrlist = $workSet->field("mis_work_executing_set.id,name,b.createtime,cname,dotype")->where($workmap)->join(" LEFT JOIN mis_work_executing as b ON b.tablename =mis_work_executing_set.`name`")->group("tablename")->select(); //组装数量到数组中 foreach ($numlist as $k => $v) { foreach ($arrlist as $k1 => $v1) { if ($v['tablename'] == $v1['name']) { $moduleNameList[$v1['name'] . $k1] = array('createtime' => $v1['createtime'], 'title' => "[待办]" . $v1['cname'], 'url' => __APP__ . "/MisWorkExecuting/index/jump/4/md/" . $v1['name'] . "/dotype/0/rel/" . $v1['name'] . "_1", 'count' => $v['num']); } } $daibanNum += $v['num']; //待办总数量 } //工作协同待办 查询待办事项条数 $MisOaFlowsInstanceModel = D("MisOaFlowsInstance"); $oamapdoing['flowsuser'] = $userid; $oamapdoing['status'] = 1; $oamapdoing['dostatus'] = array('lt', 2); $oaitemdoing = $MisOaFlowsInstanceModel->where($oamapdoing)->order("createtime desc")->select(); if ($oaitemdoing) { $moduleNameList["MisWorkExecutingbox"] = array('createtime' => $oaitemdoing[0]['createtime'], 'title' => "[协同]工作协同", 'url' => __APP__ . "/MisWorkExecuting/index/jump/5/md/MisOaItems/type/3/rel/MisWorkExecutingbox", 'count' => count($oaitemdoing)); } //对数组进行排序 rsort($moduleNameList); //循环数组。进行li的封装 if ($moduleNameList) { foreach ($moduleNameList as $key => $val) { $workexeList['html'] .= '<li><a tabid="MisWorkExecuting" tabname="工作中心" href="javascript:;" taburl="' . $val['url'] . '">' . $val['title'] . ' ( ' . $val['count'] . ' )</a></li>'; } } $daibanNum += count($oaitemdoing); //待办总数量 if ($daibanNum > 99) { $daibanNum = '99+'; } $workexeList['daiban'] = $daibanNum; $workexeList['list'] = $moduleNameList; return $workexeList; }