ShuanghongS 5 kuukautta sitten
vanhempi
commit
b967532543
2 muutettua tiedostoa jossa 87 lisäystä ja 57 poistoa
  1. 71 1
      utils/common.class.php
  2. 16 56
      utils/utils.class.php

+ 71 - 1
utils/common.class.php

@@ -3134,6 +3134,76 @@ class common {
         $sqlArr = explode(";", $fixed_sql);
         if(count($sqlArr) > 1){
             $sqlDetail = $sqlArr[1];
+            $sqlDetail = "with oo as(
+                SELECT h_bol, place_of_receipt_exp, place_of_delivery_exp,serial_no,transport_mode,order_from
+                FROM public.kln_ocean oo
+                WHERE  <{ExtendHand_KLN}> and ((oo.ata is not null and oo.ata >= CURRENT_DATE - INTERVAL '3 months' AND oo.ata < CURRENT_DATE) 
+                    or not exists( select 1 from public.ocean_milestone a where a.serial_no = oo.serial_no and a.act_date is not null  and a.code = 'IFFDEL')) and oo.transport_mode = 'sea' and order_from = 'public' order by id limit 10 
+            )
+
+            SELECT oo.*,mil.description,mil.act_date,mil.act_time,o.cargo_type,
+                COALESCE(jsonb_data->>'milestone','')::jsonb->>'timezone' as timezone,
+                COALESCE(jsonb_data->>'milestone','')::jsonb->>'locations' as locations
+            from oo  
+            inner join LATERAL (select case when is_hazardous = 't' then 'Dangerous Goods'::text else 'General'::text end as cargo_type 
+                from public.ocean o where o.serial_no = oo.serial_no) o on true
+            left join LATERAL (select a.code,s.description,to_char(a.act_date, 'YYYY-MM-DD') as act_date ,a.act_time
+                from public.ocean_milestone a 
+                    left join public.customer_service_milestone_sno s on a.code = s.code 
+                    and s.type = 'sea' 
+                    and a.serial_no = oo.serial_no
+                    and a.act_date is not null 
+                    order by s.sno desc limit 1) mil on true
+            left join LATERAL (select public.getTimeAndLocationForKln(oo.serial_no,mil.code,''::text)::jsonb as jsonb_data) lt on true
+            where oo.transport_mode = 'sea' and order_from = 'public'
+            union all 
+            SELECT oo.*,mil.description,mil.act_date,mil.act_time,o.cargo_type,
+                COALESCE(jsonb_data->>'milestone','')::jsonb->>'timezone' as timezone,
+                COALESCE(jsonb_data->>'milestone','')::jsonb->>'locations' as locations
+            from oo  
+            inner join LATERAL (select case when is_hazardous = 't' then 'Dangerous Goods'::text else 'General'::text end as cargo_type 
+                from sfs.ocean o where o.serial_no = oo.serial_no) o on true
+            left join LATERAL (select a.code,s.description,to_char(a.act_date, 'YYYY-MM-DD') as act_date ,a.act_time
+                from public.ocean_milestone a 
+                    left join public.customer_service_milestone_sno s on a.code = s.code 
+                    and s.type = 'air' 
+                    and a.serial_no = oo.serial_no
+                    and a.act_date is not null 
+                    order by s.sno desc limit 1) mil on true
+                left join LATERAL (select public.getTimeAndLocationForKln(oo.serial_no,mil.code,''::text)::jsonb as jsonb_data) lt on true		
+            where oo.transport_mode = 'sea' and order_from = 'sfs'
+            union all 
+            SELECT oo.*,mil.description,mil.act_date,mil.act_time,o.cargo_type,
+                COALESCE(jsonb_data->>'milestone','')::jsonb->>'timezone' as timezone,
+                COALESCE(jsonb_data->>'milestone','')::jsonb->>'locations' as locations
+            from oo  
+            inner join LATERAL (select case when is_hazardous = 't' then 'Dangerous Goods'::text else 'General'::text end as cargo_type 
+                from public.ocean o where o.serial_no = oo.serial_no) o on true
+            left join LATERAL (select a.code,s.description,to_char(a.act_date, 'YYYY-MM-DD') as act_date ,a.act_time
+                from public.air_milestone a 
+                    left join public.customer_service_milestone_sno s on a.code = s.code 
+                    and s.type = 'air' 
+                    and a.serial_no = oo.serial_no
+                    and a.act_date is not null 
+                    order by s.sno desc limit 1) mil on true
+            left join LATERAL (select public.getTimeAndLocationForKln(oo.serial_no,mil.code,''::text)::jsonb as jsonb_data) lt on true		
+            where oo.transport_mode = 'air' and order_from = 'public'
+            union all 
+            SELECT oo.*,mil.description,mil.act_date,mil.act_time,o.cargo_type,
+                COALESCE(jsonb_data->>'milestone','')::jsonb->>'timezone' as timezone,
+                COALESCE(jsonb_data->>'milestone','')::jsonb->>'locations' as locations
+            from oo  
+            inner join LATERAL (select case when is_hazardous = 't' then 'Dangerous Goods'::text else 'General'::text end as cargo_type 
+                from sfs.ocean o where o.serial_no = oo.serial_no) o on true
+            left join LATERAL (select a.code,s.description,to_char(a.act_date, 'YYYY-MM-DD') as act_date ,a.act_time
+                from sfs.air_milestone a 
+                    left join public.customer_service_milestone_sno s on a.code = s.code 
+                    and s.type = 'air' 
+                    and a.serial_no = oo.serial_no
+                    and a.act_date is not null 
+                    order by s.sno desc limit 1) mil on true
+            left join LATERAL (select public.getTimeAndLocationForKln(oo.serial_no,mil.code,''::text)::jsonb as jsonb_data) lt on true		
+            where oo.transport_mode = 'air' and order_from = 'sfs'";
             $search = 'limit 10';
             $sqlDetail = str_ireplace($search, '', $sqlDetail);
         }
@@ -3273,7 +3343,7 @@ class common {
         }
 
         if($faq == "What is the current status of my active shipments?"){
-           foreach($data as $key => $val){
+           foreach($data as $key => $d){
                 $temp = array();
                 $temp['h_bol'] = $d['h_bol'];
                 $temp['place_of_receipt_exp'] = $d['place_of_receipt_exp'];

+ 16 - 56
utils/utils.class.php

@@ -1148,27 +1148,16 @@ class utils {
             select serial_no
             from (SELECT oo.serial_no from public.ocean_milestone a 
                         inner join public.customer_service_milestone_sno s on a.code = s.code 
-                        inner join public.kln_ocean oo on oo.serial_no = a.serial_no and (<{ExtendHand_KLN}>)
+                        inner join public.kln_ocean oo on oo.serial_no = a.serial_no 
                     where s.type = 'sea' 
                         and a.act_date is not null
-                        and COALESCE(a.update_date, a.create_date) >= CURRENT_DATE - INTERVAL '7 days') po
-            union all 
-            select serial_no
-            from (SELECT oo.serial_no from public.air_milestone a 
-                        inner join public.customer_service_milestone_sno s on a.code = s.code 
-                        inner join public.kln_ocean oo on oo.serial_no = a.serial_no and (<{ExtendHand_KLN}>)
-                    where s.type = 'air' 
-                        and a.act_date is not null
-                        and COALESCE(a.update_date, a.create_date) >= CURRENT_DATE - INTERVAL '7 days') pa
-            union all 
-            select serial_no
-            from (SELECT oo.serial_no from sfs.air_milestone a 
-                        inner join public.customer_service_milestone_sno s on a.code = s.code 
-                        inner join public.kln_ocean oo on oo.serial_no = a.serial_no and (<{ExtendHand_KLN}>)
-                    where s.type = 'air' 
-                        and a.act_date is not null
-                        and COALESCE(a.update_date, a.create_date) >= CURRENT_DATE - INTERVAL '7 days') sa
-            )t;select serial_no,order_from,h_bol, description,update_date_format,update_date,
+                        ) po
+            
+           
+            )t;
+
+
+            select serial_no,order_from,h_bol, description,update_date_format,update_date,
                     COALESCE(m.jsonb_data->>'milestone','')::jsonb->>'timezone' as timezone,
                     COALESCE(m.jsonb_data->>'milestone','')::jsonb->>'locations' as locations 
             from (
@@ -1176,53 +1165,24 @@ class utils {
             from (SELECT oo.serial_no,oo.order_from,oo.h_bol,s.description,COALESCE(a.update_date, a.create_date) as update_date,a.code
                     from public.ocean_milestone a 
                         inner join public.customer_service_milestone_sno s on a.code = s.code 
-                        inner join public.kln_ocean oo on oo.serial_no = a.serial_no and (<{ExtendHand_KLN}>)
+                        inner join public.kln_ocean oo on oo.serial_no = a.serial_no 
                     where s.type = 'sea' 
                         and a.act_date is not null
-                        and COALESCE(a.update_date, a.create_date) >= CURRENT_DATE - INTERVAL '7 days') po
-            union all 
-            select serial_no,order_from,h_bol,description,to_char(update_date,'Mon DD')as update_date_format,update_date,code
-            from (SELECT oo.serial_no,oo.order_from,oo.h_bol,s.description,COALESCE(a.update_date, a.create_date) as update_date,a.code
-                    from public.air_milestone a 
-                        inner join public.customer_service_milestone_sno s on a.code = s.code 
-                        inner join public.kln_ocean oo on oo.serial_no = a.serial_no and (<{ExtendHand_KLN}>)
-                    where s.type = 'air' 
-                        and a.act_date is not null
-                        and COALESCE(a.update_date, a.create_date) >= CURRENT_DATE - INTERVAL '7 days') pa
-            union all 
-            select serial_no,order_from,h_bol,description,to_char(update_date,'Mon DD')as update_date_format,update_date,code
-            from (SELECT oo.serial_no,oo.order_from,oo.h_bol,s.description,COALESCE(a.update_date, a.create_date) as update_date,a.code
-                    from sfs.air_milestone a 
-                        inner join public.customer_service_milestone_sno s on a.code = s.code 
-                        inner join public.kln_ocean oo on oo.serial_no = a.serial_no and (<{ExtendHand_KLN}>)
-                    where s.type = 'air' 
-                        and a.act_date is not null
-                        and COALESCE(a.update_date, a.create_date) >= CURRENT_DATE - INTERVAL '7 days') sa
+                        ) po
             )t  left join LATERAL (select public.getTimeAndLocationForKln(serial_no,code,''::text)::jsonb as jsonb_data) m on true 
-            order by update_date limit 10;select aa.update_date_format, COUNT(*) AS total_count
+            order by update_date limit 10;
+
+            select aa.update_date_format, COUNT(*) AS total_count
             from (
                 select DISTINCT ON (h_bol) h_bol, update_date_format
                 from (
                 select h_bol,to_char(update_date,'Mon DD') as update_date_format
                 from (SELECT oo.h_bol,COALESCE(a.update_date, a.create_date) as update_date
                         from public.ocean_milestone a 
-                            inner join public.kln_ocean oo on oo.serial_no = a.serial_no and (<{ExtendHand_KLN}>)
-                        where a.act_date is not null
-                            and COALESCE(a.update_date, a.create_date) >= CURRENT_DATE - INTERVAL '7 days') po
-                union all 
-                select h_bol,to_char(update_date,'Mon DD') as update_date_format
-                from (SELECT oo.h_bol,COALESCE(a.update_date, a.create_date) as update_date
-                        from public.air_milestone a 
-                            inner join public.kln_ocean oo on oo.serial_no = a.serial_no and (<{ExtendHand_KLN}>)
-                        where a.act_date is not null
-                            and COALESCE(a.update_date, a.create_date) >= CURRENT_DATE - INTERVAL '7 days') pa
-                union all 
-                select h_bol,to_char(update_date,'Mon DD') as update_date_format
-                from (SELECT oo.h_bol,COALESCE(a.update_date, a.create_date) as update_date
-                        from sfs.air_milestone a 
-                            inner join public.kln_ocean oo on oo.serial_no = a.serial_no and (<{ExtendHand_KLN}>)
+                            inner join public.kln_ocean oo on oo.serial_no = a.serial_no 
                         where a.act_date is not null
-                            and COALESCE(a.update_date, a.create_date) >= CURRENT_DATE - INTERVAL '7 days') sa
+                            ) po
+              
                 )t order by h_bol
             ) aa
             group by aa.update_date_format order by aa.update_date_format ";