Browse Source

fix changes

Volovikov Alexander 3 tháng trước cách đây
mục cha
commit
9367056c89
1 tập tin đã thay đổi với 72 bổ sung7 xóa
  1. 72 7
      _Infra/scripts/HomeWork20250214.sql

+ 72 - 7
_Infra/scripts/HomeWork20250214.sql

@@ -110,7 +110,8 @@ create table measurment_input_params
 	temperature numeric(8,2) default 0,
 	pressure numeric(8,2) default 0,
 	wind_direction numeric(8,2) default 0,
-	wind_speed numeric(8,2) default 0
+	wind_speed numeric(8,2) default 0,
+	bullet_demolition_range numeric(8,2) default 0
 );
 
 insert into measurment_input_params(id, measurment_type_id, height, temperature, pressure, wind_direction,wind_speed )
@@ -192,7 +193,8 @@ create type input_params as
 	temperature numeric(8,2),
 	pressure numeric(8,2),
 	wind_direction numeric(8,2),
-	wind_speed numeric(8,2)
+	wind_speed numeric(8,2),
+	bullet_demolition_range numeric(8,2)
 );
 
 raise notice 'Расчетные структуры сформированы';
@@ -319,7 +321,7 @@ $body$;
 
 
 -- Функция для проверки входных параметров
-drop function if exists public.fn_check_input_params;
+drop function if exists public.fn_check_input_params(numeric(8,2), numeric(8,2),   numeric(8,2), numeric(8,2), numeric(8,2), numeric(8,2));
 create function public.fn_check_input_params(
 	par_height numeric(8,2),
 	par_temperature numeric(8,2),
@@ -431,8 +433,28 @@ begin
 end;
 $body$;
 
+-- Функция для проверки параметров
+drop function if exists public.fn_check_input_params(input_params);
+create function public.fn_check_input_params(
+	par_param input_params
+)
+returns public.input_params
+language 'plpgsql'
+as $body$
+declare
+	var_result input_params;
+begin
 
+	var_result := fn_check_input_params(
+		par_param.height, par_param.temperature, par_param.pressure, par_param.wind_direction,
+		par_param.wind_speed, par_param.bullet_demolition_range
+	);
 
+	return var_result;
+	
+end ;
+$body$;
+		
 -- Функция для расчета интерполяции
 drop function if exists public.fn_calc_temperature_interpolation;
 create function public.fn_calc_temperature_interpolation(
@@ -575,9 +597,56 @@ end;
 $body$;
 
 
+-- Функция для расчета метео приближенный
+drop function if exists fn_calc_header_meteo_avg;
+create function fn_calc_header_meteo_avg(
+	par_params input_params
+)
+returns text
+language 'plpgsql'
+as $body$
+declare
+	var_result text;
+	var_params input_params;
+begin
+
+	-- Проверяю аргументы
+	var_params := public.fn_check_input_params(par_params);
+	
+	select
+		-- Дата
+		public.fn_calc_header_period(now()) ||
+		--Высота расположения метеопоста над уровнем моря.
+	    lpad( 340::text, 4, '0' ) ||
+		-- Отклонение наземного давления атмосферы
+		lpad(
+				case when coalesce(var_params.pressure,0) < 0 then
+					'5' 
+				else ''
+				end ||
+				lpad ( abs(( coalesce(var_params.pressure, 0) )::int)::text,2,'0')
+			, 3, '0') as "БББ",
+		-- Отклонение приземной виртуальной температуры	
+		lpad( 
+				case when coalesce( var_params.temperature, 0) < 0 then
+					'5'
+				else
+					''
+				end ||
+				( coalesce(var_params.temperature,0)::int)::text
+			, 2,'0')
+		into 	var_result;
+	return 	var_result;
+
+end;
+$body$;
+
+
+
 raise notice 'Структура сформирована успешно';
 end $$;
 
+
 -- Проверка расчета
 do $$
 declare
@@ -692,7 +761,3 @@ begin
 	
 end $$;
 
--- Проверки
-select * from public.measurment_input_params;
-select public.fn_check_input_params(
-0, 0, 0, 0, 0, 0);