ShuanghongS 1 年之前
父节点
当前提交
36b4b055ec
共有 1 个文件被更改,包括 66 次插入7 次删除
  1. 66 7
      service/login.class.php

+ 66 - 7
service/login.class.php

@@ -1140,7 +1140,7 @@ class login {
 
     private function getTrackingInfo($reference_number){
         $sql = "SELECT o.* ,sh.*, cn.* ,aa.*,dd.* ,cc.status as new_status
-                from ocean o 
+                from public.ocean o 
                 left join LATERAL (select case when a.code='IFFBCF' then 'Booked'
                                 when a.code='IFFCPU' then 'Cargo Received'
                                 when a.code='IFFREC' then 'Cargo Received'
@@ -1159,7 +1159,7 @@ class login {
                     address_4 as cn_address_4,
                     city as cn_city, state as cn_state, zipcode as cn_zipcode, country as cn_country,
                     phone_1 as cn_phone
-                FROM contacts c WHERE o.consignee::text = c.contact_id::text) cn ON true
+                FROM ocean.contacts c WHERE o.consignee::text = c.contact_id::text) cn ON true
                 LEFT JOIN LATERAL ( SELECT company as sh_company,
                     address_1 as sh_address_1,
                     address_2 as sh_address_2,
@@ -1167,7 +1167,7 @@ class login {
                     address_4 as sh_address_4,
                     city as sh_city, state as sh_state, zipcode as sh_zipcode, country as sh_country,
                     phone_1 as sh_phone
-                FROM contacts c WHERE o.shipper::text = c.contact_id::text) sh ON true
+                FROM ocean.contacts c WHERE o.shipper::text = c.contact_id::text) sh ON true
                 LEFT JOIN LATERAL ( SELECT company as aa_company,
                     address_1 as aa_address_1,
                     address_2 as aa_address_2,
@@ -1175,7 +1175,7 @@ class login {
                     address_4 as aa_address_4,
                     city as aa_city, state as aa_state, zipcode as aa_zipcode, country as aa_country,
                     phone_1 as aa_phone
-                FROM contacts c WHERE o.origin_station::text = c.contact_id::text) aa ON true
+                FROM ocean.contacts c WHERE o.origin_station::text = c.contact_id::text) aa ON true
                 LEFT JOIN LATERAL ( SELECT company as dd_company,
                     address_1 as dd_address_1,
                     address_2 as dd_address_2,
@@ -1183,7 +1183,7 @@ class login {
                     address_4 as dd_address_4,
                     city as dd_city, state as dd_state, zipcode as dd_zipcode, country as dd_country,
                     phone_1 as dd_phone
-                FROM contacts c WHERE o.destination_station::text = c.contact_id::text) dd ON true
+                FROM ocean.contacts c WHERE o.destination_station::text = c.contact_id::text) dd ON true
             where (lower(tracking_no) = '" . strtolower($reference_number) . "' 
                 or lower(booking_no) = '" . strtolower($reference_number) . "'
                 or lower(h_bol) = '" . strtolower($reference_number) . "'
@@ -1194,8 +1194,11 @@ class login {
                 or exists (select 1 from oc_container oc where o.serial_no = oc.serial_no and oc.ctnr = '$reference_number'))";
         $ocean_arr = common::excuteListSql($sql);
         if(empty($ocean_arr)){
-            $data = array("msg" =>"No matches");
-            return $data;
+            $ocean_arr = $this->trackingSfsSql($reference_number);
+            if(empty($ocean_arr)){
+                $data = array("msg" =>"No matches");
+                return $data;
+            }
         }
         if(!empty($ocean_arr) && count($ocean_arr) > 1){
             $data = array("msg" =>"Multiple results");
@@ -1265,6 +1268,62 @@ class login {
         return array("msg" =>"success","data" =>$data);
     }
 
+    private function trackingSfsSql($reference_number){
+        $sql = "SELECT o.* ,sh.*, cn.* ,aa.*,dd.* ,cc.status as new_status
+            from sfs.ocean o 
+            left join LATERAL (select case when a.code='IFFBCF' then 'Booked'
+                            when a.code='IFFCPU' then 'Cargo Received'
+                            when a.code='IFFREC' then 'Cargo Received'
+                            when a.code='IFFDEP' then 'Departed'
+                            when a.code='IFFARR' then 'Arrived'
+                            when a.code='IFFAFD' then 'Completed'
+                            else 'Booked' END as status,
+                    from  ocean_milestone a 
+            where a.serial_no=o.serial_no 
+                and a.code in (select regexp_split_to_table('IFFBCF,IFFCPU,IFFREC,IFFDEP,IFFARR,IFFAFD', ','))
+            order by id desc limit 1) cc on true
+            LEFT JOIN LATERAL ( SELECT company as cn_company,
+                address_1 as cn_address_1,
+                address_2 as cn_address_2,
+                address_3 as cn_address_3,
+                address_4 as cn_address_4,
+                city as cn_city, state as cn_state, zipcode as cn_zipcode, country as cn_country,
+                phone_1 as cn_phone
+            FROM sfs.contacts c WHERE o.consignee::text = c.contact_id::text) cn ON true
+            LEFT JOIN LATERAL ( SELECT company as sh_company,
+                address_1 as sh_address_1,
+                address_2 as sh_address_2,
+                address_3 as sh_address_3,
+                address_4 as sh_address_4,
+                city as sh_city, state as sh_state, zipcode as sh_zipcode, country as sh_country,
+                phone_1 as sh_phone
+            FROM sfs.contacts c WHERE o.shipper::text = c.contact_id::text) sh ON true
+            LEFT JOIN LATERAL ( SELECT company as aa_company,
+                address_1 as aa_address_1,
+                address_2 as aa_address_2,
+                address_3 as aa_address_3,
+                address_4 as aa_address_4,
+                city as aa_city, state as aa_state, zipcode as aa_zipcode, country as aa_country,
+                phone_1 as aa_phone
+            FROM sfs.contacts c WHERE o.origin_station::text = c.contact_id::text) aa ON true
+            LEFT JOIN LATERAL ( SELECT company as dd_company,
+                address_1 as dd_address_1,
+                address_2 as dd_address_2,
+                address_3 as dd_address_3,
+                address_4 as dd_address_4,
+                city as dd_city, state as dd_state, zipcode as dd_zipcode, country as dd_country,
+                phone_1 as dd_phone
+            FROM sfs.contacts c WHERE o.destination_station::text = c.contact_id::text) dd ON true
+        where (lower(tracking_no) = '" . strtolower($reference_number) . "' 
+            or lower(booking_no) = '" . strtolower($reference_number) . "'
+            or lower(h_bol) = '" . strtolower($reference_number) . "'
+            or lower(m_bol) = '" . strtolower($reference_number) . "'
+            or lower(po_no) = '" . strtolower($reference_number) . "'
+            or lower(quote_no) = '" . strtolower($reference_number) . "'
+            or lower(invoice_no) = '" . strtolower($reference_number) . "'
+            or exists (select 1 from oc_container oc where o.serial_no = oc.serial_no and oc.ctnr = '$reference_number'))";
+        return $sql;
+    }
 }
 
 ?>