getMessage()); } $select_param_sql = ""; foreach ($result_param_need_params as $value) { $result[$value] = []; $select_param_sql .= "\"{$process_code}.{$value}\","; } // 初始化结果数组,保证返回的数据结构完整 foreach ($result_param_need_params as $value) { $result[$value] = array_fill(0, count($battery_ids), '0'); // 先填充默认值 } foreach ($battery_ids as $k => $battery_id) { if ($battery_id === '') { continue; // 空电池ID不查询,保留默认值 } $sql = sprintf( "SELECT tray,lot,batch,subbatch FROM hf_mes_production_battery_map WHERE battery_id='%s' ORDER BY id DESC LIMIT 1;", $battery_id ); $ret = Db::fetch($sql); if (is_null($ret)) { continue; // 查询不到也跳过,默认值仍然有效 } list($tray, $lot, $batch, $subbatch) = [ $ret['tray'], $ret['lot'], $ret['batch'], $ret['subbatch'] ]; $sql = sprintf( "SELECT $select_param_sql class,classname,next_process_code FROM \"%s\" WHERE battery_id='%s' AND tray='%s' AND lot='%s' LIMIT 1;", config('app.bkv_prefix') . $subbatch, $battery_id, $tray, $lot ); $ret = Db::fetch($sql); if (is_null($ret)) { continue; // 查询不到,默认值仍然有效 } foreach ($result_param_need_params as $value) { $result[$value][$k] = $ret["{$process_code}.{$value}"] ?? ''; // 直接覆盖到对应索引 } } return $result; } }