示例#1
0
 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;
 }