public function exportcsvAction() { $request = $this->getRequest()->getParams(); $whereSearch = "1=1"; foreach ($request as $k => $v) { if ($v) { if ($k == 'search_tag') { $whereSearch .= " and (ifnull(t1.code,'') like '%{$v}%' or ifnull(t1.fullname,'') like '%{$v}%' or ifnull(t1.name,'') like '%{$v}%' or ifnull(t1.description,'') like '%{$v}%' or ifnull(t1.remark,'') like '%{$v}%' or ifnull(t1.secretlevel,'') like '%{$v}%')"; } else { if ($k == 'search_type') { if ($v) { $v = json_decode($v); $v = implode(',', $v); if ($v) { $whereSearch .= " and t1.category in ({$v})"; } } } else { $col = str_replace('search_', '', $k); if ($col != $k) { // 查询条件 $whereSearch .= " and ifnull(t1." . $col . ",'') like '%" . $v . "%'"; } } } } } print chr(0xef) . chr(0xbb) . chr(0xbf); $record = new Dcc_Model_Record(); $type = new Dcc_Model_Type(); $flow = new Admin_Model_Flow(); $step = new Admin_Model_Step(); $data = $type->getTypeList($whereSearch); $data_csv = array(); $title = array('cnt' => '#', 'id' => 'ID', 'code' => '文件简号', 'name' => '中文解释', 'fullname' => '全称', 'category' => '文件类别', 'resp_dept_id' => '责任部门', 'resp_emp_id' => '责任人', 'filerequire' => '文件是否必须', 'secretlevel' => '文件密级', 'template' => '文件模板编号', 'duration' => '审核时效', 'length' => '流水号长度', 'autotype' => '自动编码方式', 'description' => '描述', 'model_id' => '新文件自定义表单', 'dev_model_id' => '新版自定义表单', 'flow_id' => '新文件审批流程', 'dev_flow_id' => '升版文件审批流程', 'remark' => '备注', 'creater' => '添加人', 'create_time' => '生效日期', 'update_time' => '取消日期'); $title = $this->object_array($title); $date = date('YmdHsi'); $filename = "type_list" . $date; $path = "../temp/" . $filename . ".csv"; $file = fopen($path, "w"); fputcsv($file, $title); array_push($data_csv, $title); $typeids = array(); $typenames = array(); $k = 0; for ($i = 0; $i < count($data); $i++) { if ($data[$i]['state'] != 1) { } else { $data[$i]['update_time'] = ""; } $data[$i]['state'] = $data[$i]['state'] == 1 ? true : false; $data[$i]['autocode'] = $data[$i]['autocode'] == 1 ? true : false; $data[$i]['modelrequire'] = $data[$i]['modelrequire'] == 1 ? true : false; $data[$i]['filerequire'] = $data[$i]['filerequire'] == 1 ? '是' : '否'; // 查询所有审核阶段 if ($data[$i]['step_ids']) { $stepRows = $step->getListByFlow($data[$i]['step_ids']); $step_name = ""; if (count($stepRows) > 0) { $first = true; foreach ($stepRows as $row) { if ($step_name) { $step_name .= "->"; } $step_name .= $row['step_name']; } } $data[$i]['step'] = $step_name; } if ($data[$i]['dev_step_ids']) { $devStepRows = $step->getListByFlow($data[$i]['dev_step_ids']); $dev_step_name = ""; if (count($devStepRows) > 0) { $first = true; foreach ($devStepRows as $row) { if ($dev_step_name) { $dev_step_name .= "->"; } $dev_step_name .= $row['step_name']; } } $data[$i]['dev_step'] = $dev_step_name; } $data[$i]['resp_emp_name'] = ""; $data[$i]['resp_dept_name'] = ""; $data[$i]['grant_dept_name'] = ""; if ($data[$i]['resp_emp_id']) { $emp = $data[$i]['resp_emp_id']; $sql = "select GROUP_CONCAT(name) as resp_emp_name from oa_employee_post where id in ({$emp})"; $db = $step->getAdapter(); $result = $db->query($sql)->fetchObject(); $data[$i]['resp_emp_name'] = $result->resp_emp_name; } if ($data[$i]['resp_dept_id']) { $dept = $data[$i]['resp_dept_id']; $sql = "select GROUP_CONCAT(name) as resp_dept_name from oa_employee_dept where id in ({$dept})"; $db = $step->getAdapter(); $result = $db->query($sql)->fetchObject(); $data[$i]['resp_dept_name'] = $result->resp_dept_name; } if ($data[$i]['grant_dept_id']) { $dept = $data[$i]['grant_dept_id']; $sql = "select GROUP_CONCAT(name) as grant_dept_name from oa_employee_dept where id in ({$dept})"; $db = $step->getAdapter(); $result = $db->query($sql)->fetchObject(); $data[$i]['grant_dept_name'] = $result->grant_dept_name; } //$data[$i]['record'] = $record->getHis($data[$i]['id'], 'materiel'); $d = $data[$i]; $k++; $info = array('cnt' => $k, 'id' => $d['id'], 'code' => $d['code'], 'name' => $d['name'], 'fullname' => $d['fullname'], 'category' => $d['category_name'], 'resp_dept_id' => $d['resp_dept_name'], 'resp_emp_id' => $d['resp_emp_name'], 'filerequire' => $d['filerequire'], 'secretlevel' => $d['secretlevel'], 'template' => $d['template'], 'duration' => $d['duration'], 'length' => $d['length'], 'autotype' => $d['auto_description'], 'description' => $d['description'], 'model_id' => $d['model_name'], 'dev_model_id' => $d['dev_model_name'], 'flow_id' => $d['flow_name'], 'dev_flow_id' => $d['dev_flow_name'], 'remark' => $d['remark'], 'creater' => $d['creater'], 'create_time' => $d['create_time'], 'update_time' => $d['update_time']); $d = $this->object_array($info); array_push($data_csv, $info); fputcsv($file, $d); } fclose($file); $this->operate("文件分类导出"); echo $filename; exit; }
/** * @abstract 根据文件简号和流水号生成最新文件编码 * @return null */ private function getCode($type_id, $proj_no) { $type = new Dcc_Model_Type(); // 获取流水号长度和自动编码方式 $data = $type->getLengthAndMethod($type_id); $type_code = $data['code']; $length = $data['length']; $automethod = $data['automethod']; $code = new Dcc_Model_Code(); if (strripos($automethod, 'S') !== false) { // 获取产品系列代码 $seriesData = $code->getAdapter()->query("select code from oa_product_catalog_series where id = (select series_id from oa_product_catalog where id = {$proj_no})")->fetchObject(); $ymd = $seriesData->code; if (!$ymd) { $result['result'] = false; $result['info'] = "产品型号对应的产品代码不存在!"; echo Zend_Json::encode($result); exit; } } else { // 查询符合当前长度和编码方式的流水号 $ymd = str_replace('DD', date('d'), str_replace('MM', date('m'), str_replace('YYYY', date('y'), str_replace('9', '', $automethod)))); } if ($length) { $prefix = $type_code . $ymd; $like = ""; for ($i = 0; $i < $length; $i++) { $like .= "_"; } $mData = $code->getAdapter()->query("select max(code) as maxcode from oa_doc_code where code like '{$prefix}{$like}'")->fetchObject(); $num = ""; if ($mData && $mData->maxcode) { $max = $mData->maxcode; $num = str_replace($prefix, '', $max); if (strlen($num) != $length) { $num = ""; for ($i = 0; $i < $length; $i++) { $num .= "0"; } } } else { for ($i = 0; $i < $length; $i++) { $num .= "0"; } } // +1 $prefix .= substr("1" . $num + 1, 1); return $prefix; } else { return ""; } // // 真实流水号长度 //// $num_length = $length - strlen($ymd); // $num_length = $length; // // 查询条件 // $prefix = $type_code . $ymd; // $like = $prefix; // $up = 1; // for ($i = 0; $i < $num_length; $i++) { // if ($num_length != $length) { // $like .= '_'; // } // $up *= 10; // if ($i + 1 == $num_length) { // $prefix .= '1'; // } else { // $prefix .= '0'; // } // } // if ($num_length == $length) { // $like = $prefix . '%'; // } // $c = $code->getApply($like); // if ($c) { // $current_code = $c['code']; // $prefix_code = substr($current_code, 0, strlen($current_code) - $num_length); // $real_code = substr($current_code, strlen($prefix_code), $num_length); // $tmp = substr($up + $real_code + 1, 1); // $next_code = $prefix_code . $tmp; // $return_code = $next_code; // } else { // $return_code = $prefix; // } // return $return_code; }