public function getlistAction() { $fa = new Product_Model_Fa(); $fa->updateArchiveTime(); $request = $this->getRequest()->getParams(); $limit = $request['limit']; $start = $request['start']; $db = $fa->getAdapter(); $whereSearch = "1=1"; foreach ($request as $k => $v) { if ($v) { if ($k == 'search_key') { $whereSearch .= " and "; if (preg_match('/[a-zA-Z]\\d/', $v)) { // 可能是器件位置 $sonData = $db->query("select group_concat(DISTINCT recordkey) as recordkey from oa_product_bom_son where partposition like '%{$v}%'")->fetchObject(); if ($sonData && $sonData->recordkey) { $recordkey = $sonData->recordkey; $whereSearch .= " t1.recordkey in (" . $recordkey . ") and "; } } $cols = array("t1.remark", "t5.model_internal", "t1.code", "t3.description", "t3.name"); $arr = preg_split('/\\s+/', trim($v)); for ($i = 0; $i < count($arr); $i++) { $tmp = array(); foreach ($cols as $c) { $tmp[] = "ifnull({$c},'')"; } $arr[$i] = "concat(" . implode(',', $tmp) . ") like '%" . $arr[$i] . "%'"; } $whereSearch .= ' ' . join(' AND ', $arr); // $whereSearch .= " ifnull(t1.remark,'') like '%$v%' or ifnull(t3.name,'') like '%$v%' or ifnull(t3.description,'') like '%$v%' or ifnull(t5.model_internal, '') like '%$v%')"; } else { if ("search_archive_date_from" == $k && $v) { $whereSearch .= " and t1.bom_upd_time >= '" . str_replace('T', ' ', $v) . "'"; } else { if ("search_archive_date_to" == $k && $v) { $whereSearch .= " and t1.bom_upd_time <= '" . str_replace('T00:00:00', ' 23:59:59', $v) . "'"; } else { if ("search_fa" == $k && $v) { $whereSearch .= " and t1.code like '%" . $v . "%'"; } else { if ("search_son" == $k && $v) { $recordkey = ""; $sonData = $db->query("select group_concat(DISTINCT recordkey) as recordkey from oa_product_bom_son where code like '%{$v}%'")->fetchObject(); if ($sonData && $sonData->recordkey) { $recordkey = $sonData->recordkey; } if (!$recordkey) { $recordkey = "0"; $recordkeys = array("0"); } else { $recordkeys = array(); foreach (explode(',', $recordkey) as $rk) { $recordkeys = $this->getRecordkeyRecursive($rk, $recordkeys); } $recordkeys = array_unique($recordkeys); } $whereSearch .= " and t1.recordkey in (" . implode(',', $recordkeys) . ")"; } else { $col = str_replace('search_', '', $k); if ($col != $k) { // 查询条件 $whereSearch .= " and ifnull(t1." . $col . ",'') like '%" . $v . "%'"; } } } } } } } } $user_session = new Zend_Session_Namespace('user'); $user = $user_session->user_info['employee_id']; $fa = new Product_Model_Fa(); $son = new Product_Model_Son(); // 获取物料数据 $data = $fa->getListMy($whereSearch, $start, $limit, $user); $totalCount = $fa->getListCountMy($whereSearch, $user); for ($i = 0; $i < count($data); $i++) { if (!$data[$i]['type'] || $data[$i]['type'] == 'new') { $data[$i]['archive_time'] = strtotime($data[$i]['archive_time_new']); $data[$i]['remark_head'] = $data[$i]['remark_new']; $data[$i]['description_head'] = $data[$i]['description_new']; $data[$i]['upd_type'] = 'new'; } else { $data[$i]['archive_time'] = strtotime($data[$i]['archive_time_upd']); $data[$i]['remark_head'] = $data[$i]['remark_upd']; $data[$i]['description_head'] = $data[$i]['description_upd']; } if (!$data[$i]['archive_time'] && $data[$i]['bom_upd_time']) { $data[$i]['archive_time'] = strtotime($data[$i]['bom_upd_time']); } if ($data[$i]['bom_file']) { $codes = array(); foreach (explode(',', $data[$i]['bom_file']) as $code) { $codes[] = "'" . $code . "'"; } $sql = "select group_concat(t1.ver) as ver, group_concat(t2.description) as des from oa_doc_files t1 inner join oa_doc_code t2 on t1.code = t2.code where t1.state='Active' and t1.`code` in (" . implode(',', $codes) . ")"; $res = $fa->getAdapter()->query($sql)->fetchObject(); if ($res && $res->ver) { $data[$i]['file_ver'] = $res->ver; $data[$i]['file_desc'] = $res->des; } } } $result = array("totalCount" => $totalCount, "topics" => $data); // 转为json格式并输出 echo Zend_Json::encode($result); exit; }