最近接触的开发任务,需要导入客户信息,并支持按照“导入批次”筛选客户信息。特此记录。
需求:若批次名称不填写,则默认名称为未命名,客户列表中,按批次导入时间排序,最新导入的批次,优先显示。筛选值为批次名称+导入时间(显示月日时分),跟据导入时间先后显示,若批次名称相同,则显示批次名称(n),数字从1开始逐渐累加
$importBatchName = $data[0];//导入批次 if (empty($importBatchName)) $importBatchName = "未命名"; $searchBatchKey = $importBatchName . "-" . $import_batch_time; if (array_key_exists ($searchBatchKey, $existImportBatch['importBatchs'])) { //表示同一个批次,使用原值 $cmData['import_batch'] = $existImportBatch['importBatchs'][$searchBatchKey]; } elseif (array_key_exists ($importBatchName, $existImportBatch['maxBatchNumbers'])) { //查找 $curMaxBatchNumber = $existImportBatch['maxBatchNumbers'][$importBatchName] + 1;//当前批次号加1 $cmData['import_batch'] = sprintf ("%s(%d)", $importBatchName, $curMaxBatchNumber); //添加到导入批次hash表 $existImportBatch['importBatchs'][$searchBatchKey] = $cmData['import_batch']; $existImportBatch['maxBatchNumbers'][$importBatchName] = $curMaxBatchNumber; } else { $cmData['import_batch'] = $importBatchName; //添加到导入批次hash表 $existImportBatch['importBatchs'][$searchBatchKey] = $importBatchName; $existImportBatch['maxBatchNumbers'][$importBatchName] = 0; }
/** * 获取导入批次号,根据导入时间分组 * @param int $eid 企业id * @return array 批次号数组(数组为 批次名称+时间 组成key :批次名称+批次序号 是value */ public static function GetExistImportBatch($eid){ if(empty($eid)) return array(); $cmModel = M('Customer'); $cmMap['eid'] = $eid; $cmMap['import_batch'] = array('neq','');//不查询为空的记录 $cmDatas = $cmModel->field('import_batch,import_batch_time')->where($cmMap)->group('import_batch')->select(); if(empty($cmDatas)) return array(); $batchKeys = array(); //批次名称+导入时间 为key的hash表 $maxBatchNumbers = array(); //批次名称 为key 的hash表,存储批次名称的最大批次号 foreach($cmDatas as $cmData){ if(empty($cmData['import_batch'])) continue; //导入批次为空的跳过 $tempMaxNumber = 0;//当前记录的批次号 $importPatchName = ""; // 批次名称 if(empty($cmData["import_batch"]) || empty($cmData["import_batch_time"])) continue;//批次号或时间为空不处理,单个创建的用户没有批次号 preg_match("/\((\d+)\)$/i",$cmData["import_batch"], $matches); //查找批次号 //$maxBatchNumber = "";//当前最大的序号 if(empty($matches) || count($matches) < 2){ $importPatchName = $cmData["import_batch"]; }else{ $importPatchName = substr($cmData["import_batch"],0,strrpos($cmData["import_batch"],"("));//最后一个(截取字符串 $tempMaxNumber = intval($matches[1]); } $batchKey = $importPatchName."-".$cmData["import_batch_time"];//去掉批次号码+数字和导入时间组成唯一串 $batchKeys[$batchKey] = $cmData["import_batch"]; if(array_key_exists($importPatchName, $maxBatchNumbers)){ if(!empty($tempMaxNumber) && $maxBatchNumbers[$importPatchName] < $tempMaxNumber) $maxBatchNumbers[$importPatchName] = $tempMaxNumber; }else{ $maxBatchNumbers[$importPatchName] = 0; } } $retData = array("importBatchs"=>$batchKeys,"maxBatchNumbers"=>$maxBatchNumbers); return $retData; }