model('basic_material'); $sql = "SELECT count(*)as _count FROM sdb_material_basic_material as mbm"; $sql_filter = $this->get_filter($filter); $sql = $sql.$sql_filter; $rs_material = $mdlMaterialBasic->db->select($sql); return $rs_material[0]['_count']; } public function getList($cols = '*', $params = array(), $offset = 0, $limit = -1, $orderType = null){ $mdlMaterialBasic = app::get('material')->model('basic_material'); $mdlMaterialBasicExt = app::get('material')->model('basic_material_ext'); $mdlOmeBrand = app::get('ome')->model('brand'); $mdlOmeGoodsType = app::get('ome')->model('goods_type'); $sql = "SELECT mbm.bm_id,mbm.material_name,mbm.material_bn FROM sdb_material_basic_material as mbm"; $sql_filter = $this->get_filter($params); if($limit){ $sql = $sql.$sql_filter." limit ". $offset .",". $limit; }else{ $sql = $sql.$sql_filter; } $rs_material = $mdlMaterialBasic->db->select($sql); if(empty($rs_material)){ return array(); } $bm_ids = array(); foreach ($rs_material as $var_material){ $bm_ids[] = $var_material["bm_id"]; } $rs_material_ext = $mdlMaterialBasicExt->getList("bm_id,specifications,brand_id,cat_id",array("bm_id|in"=>$bm_ids)); $brand_ids = array(); $cat_ids = array(); foreach ($rs_material_ext as $var_material_ext){ if($var_material_ext["brand_id"] && !in_array($var_material_ext["brand_id"],$brand_ids)){ $brand_ids[] = $var_material_ext["brand_id"]; } if($var_material_ext["cat_id"] && !in_array($var_material_ext["cat_id"],$cat_ids)){ $cat_ids[] = $var_material_ext["cat_id"]; } } //获取品牌 if($brand_ids){ $rs_brand = $mdlOmeBrand->getList("brand_id,brand_name",array("brand_id|in"=>$brand_ids)); $rl_brand_id_name = array(); foreach ($rs_brand as $var_brand){ $rl_brand_id_name[$var_brand["brand_id"]] = $var_brand["brand_name"]; } } //获取类型 if($cat_ids){ $rs_cat = $mdlOmeGoodsType->getList("type_id,name",array("type_id|in"=>$cat_ids)); $rl_type_id_name = array(); foreach ($rs_cat as $var_cat){ $rl_type_id_name[$var_cat["type_id"]] = $var_cat["name"]; } } //获取bm_id和规格、品牌、类型 $rl_bm_id_info = array(); foreach ($rs_material_ext as $item_material_ext){ $rl_bm_id_info[$item_material_ext["bm_id"]] = array( "specifications" => $item_material_ext["specifications"], "brand_name" => $rl_brand_id_name[$item_material_ext["brand_id"]], "type_name" => $rl_type_id_name[$item_material_ext["cat_id"]], ); } foreach ($rs_material as &$item_material){ $item_material["specifications"] = "-"; $item_material["brand_name"] = "-"; $item_material["type_name"] = "-"; if($rl_bm_id_info[$item_material["bm_id"]]["specifications"]){ $item_material["specifications"] = $rl_bm_id_info[$item_material["bm_id"]]["specifications"]; } if($rl_bm_id_info[$item_material["bm_id"]]["brand_name"]){ $item_material["brand_name"] = $rl_bm_id_info[$item_material["bm_id"]]["brand_name"]; } if($rl_bm_id_info[$item_material["bm_id"]]["type_name"]){ $item_material["type_name"] = $rl_bm_id_info[$item_material["bm_id"]]["type_name"]; } } unset($item_material); return $rs_material; } private function get_filter($params=array()){ $sql_filter = " where mbm.visibled=1"; if(!empty($params)){ if (isset($params['material_name'])) { $sql_filter = $sql_filter." and mbm.material_name like '".$params['material_name']."%'"; } if (isset($params['material_bn'])) { $sql_filter = $sql_filter." and mbm.material_bn like '".$params['material_bn']."%'"; } if (isset($params['brand_name'])) { $sql_join = " left join sdb_material_basic_material_ext as mbme on mbm.bm_id=mbme.bm_id"; $sql_filter = $sql_join.$sql_filter." and mbme.brand_id=".intval($params['brand_name']); } if (isset($params['type_name'])) { $sql_join = " left join sdb_material_basic_material_ext as mbme on mbm.bm_id=mbme.bm_id"; $sql_filter = $sql_join.$sql_filter." and mbme.cat_id=".intval($params['type_name']); } } return $sql_filter; } function searchOptions(){ $parentOptions = parent::searchOptions(); $childOptions = array( 'material_name'=>app::get('ome')->_('物料名称'), 'material_bn'=>app::get('ome')->_('物料编码'), 'brand_name'=>app::get('ome')->_('品牌'), 'type_name' =>app::get('ome')->_('分类'), ); return $Options = array_merge($parentOptions,$childOptions); } /** * 获取_schema * @return mixed 返回结果 */ public function get_schema(){ $schema = array ( 'columns' => array ( 'bm_id'=>array( 'type' => 'number', 'required' => true, 'pkey' => true, 'extra' => 'auto_increment', 'editable' => false, 'deny_export' => true, ), 'material_name' => array ( 'label' => '基础物料名称', 'width' => 120, 'order' => 1, ), 'material_bn'=>array( 'label' => '基础物料编码', 'width' => '70' ), 'brand_name' => array( 'label' => '品牌', 'width' => 120, ), 'type_name' => array( 'label' => '分类', 'width' => 120, ), 'specifications' => array( 'label' => '规格', 'width' => 130, ) ), 'idColumn' => 'bm_id', 'in_list' => array( 0 => 'material_name', 1 => 'material_bn', 2 => 'brand_name', 3 => 'type_name', 4 => 'specifications', ), 'default_in_list' => array( 0 => 'material_name', 1 => 'material_bn', 2 => 'brand_name', 3 => 'type_name', 4 => 'specifications' ), ); return $schema; } }