ShuanghongS vor 4 Tagen
Ursprung
Commit
e6acbaa182
3 geänderte Dateien mit 65 neuen und 16 gelöschten Zeilen
  1. 1 1
      service/login.class.php
  2. 32 3
      service/report.class.php
  3. 32 12
      utils/common.class.php

+ 1 - 1
service/login.class.php

@@ -24,7 +24,7 @@ class login {
     private function getLoginSql() {
         return "select first_name,last_name,user_login,
         redant_decode(temp_password) as temp_password,(temp_password_expires > LOCALTIMESTAMP) as is_temp_password_expires,
-        employee_company_name,employee_contact_id_user,employee_search_type,employee_air_company_name,employee_air_contact_id_user,
+        employee_company_name,employee_contact_id_user,employee_search_type,employee_air_company_name,employee_air_contact_id_user,employee_air_search_type,
         (select active from public.employee ee where ee.employee_id=u.employee_id) as employee_id_active,
         (select email from public.employee ee where ee.employee_id=u.employee_id) as employee_email,
          can_visit_vgm,can_add_booking, can_add_tk_status,truck_driver,po_booking,o_final_delivery_u,ipad_view_po,can_view_doc,can_upload_doc,can_add_catalog,can_add_po,packing_list_company,is_only_vgm,contact_id_user,is_demo, ra_password as password,employee_id, contact_id, user_type, last_pwd_change, EXTRACT(DAY from (now() - last_pwd_change)) as last_pwd_change_date, email, user_webtype_id, active, is_online, station, allow_login_remote, can_see_amslog,can_view_eccn, can_see_isflog, can_see_isflog_withaddress, 

+ 32 - 3
service/report.class.php

@@ -466,12 +466,14 @@ class report {
             //return array("vvSearchKLN"=>$vvSearchKLN,"klnOceanSearchKLN"=>$klnOceanSearchKLN,"ocItemSearchKLN"=>$ocItemSearchKLN);
             $count_sql = str_replace('<{klnOceanSearchKLN}>', $filterSQLArr['klnOceanSearchKLN'], $count_sql);
             $count_sql = str_replace('<{ocItemSearchKLN}>', $filterSQLArr['ocItemSearchKLN'], $count_sql);
+            $count_sql = str_replace('<{ocItemSearchKLNSFS}>', $filterSQLArr['ocItemSearchKLNSFS'], $count_sql);
             $count_sql = str_replace('<{vvSearchKLN}>', $filterSQLArr['vvSearchKLN'], $count_sql);
             $count_sql = str_replace('<{orderby}>', "", $count_sql);
             error_log($reportFiled['name'].": report_detail_count, ".$count_sql);
 
             $report_sql = str_replace('<{klnOceanSearchKLN}>', $filterSQLArr['klnOceanSearchKLN'], $report_sql);
             $report_sql = str_replace('<{ocItemSearchKLN}>', $filterSQLArr['ocItemSearchKLN'], $report_sql);
+            $report_sql = str_replace('<{ocItemSearchKLNSFS}>', $filterSQLArr['ocItemSearchKLNSFS'], $report_sql);
             $report_sql = str_replace('<{CustomFiled}>', $CustomFiled, $report_sql);
             $report_sql = str_replace('<{vvSearchKLN}>', $filterSQLArr['vvSearchKLN'], $report_sql);
             $report_sql = str_replace('<{orderby}>', $this->returnSortBySql(), $report_sql);
@@ -1113,6 +1115,7 @@ class report {
         //$klnOceanSearchKLN = " where  created_time > CURRENT_DATE - INTERVAL '1 years' and  " . common::searchExtendHand_KLN("ocean", $_SESSION["ONLINE_USER"]);
         $klnOceanSearchKLN = " where   " . common::searchExtendHand_KLN("ocean", $_SESSION["ONLINE_USER"]);
         $ocItemSearchKLN = " where 1=1 ";
+        $ocItemSearchKLNSFS = " where 1=1 ";
 
         $filterFields = array();
         foreach($filtersList as $fiter){
@@ -1163,6 +1166,18 @@ class report {
                         || $fiter['field'] == "last_mile_delivery _address"
                         || $fiter['field'] == "co2e_intensity"){
                         $ocItemSearchKLN .= $temp_sql_where;
+
+                        //sfs 移除这些条件筛选
+                        if(!($fiter['field'] == "pickup_postal_code"
+                            || $fiter['field'] == "pickup_mode_type"
+                            || $fiter['field'] == "last_mile_delivery_postal_code"
+                            || $fiter['field'] == "last_mile_delivery_mode_type"
+                            || $fiter['field'] == "last_mile_delivery_date"
+                            || $fiter['field'] == "last_mile_delivery_time"
+                            || $fiter['field'] == "last_mile_delivery_city"
+                            || $fiter['field'] == "last_mile_delivery _address")){
+                            $ocItemSearchKLNSFS .= $temp_sql_where;
+                        }
                     } else {
                         $klnOceanSearchKLN .= $temp_sql_where;
                     }
@@ -1201,7 +1216,9 @@ class report {
             }
         }
         
-        return array("vvSearchKLN"=>$vvSearchKLN,"klnOceanSearchKLN"=>$klnOceanSearchKLN,"ocItemSearchKLN"=>$ocItemSearchKLN,"filterFields"=>$filterFields);
+        return array("vvSearchKLN"=>$vvSearchKLN,"klnOceanSearchKLN"=>$klnOceanSearchKLN,
+            "ocItemSearchKLN"=>$ocItemSearchKLN,"ocItemSearchKLNSFS"=>$ocItemSearchKLNSFS,
+            "filterFields"=>$filterFields);
     }
 
     /**
@@ -1210,10 +1227,22 @@ class report {
     public function returnSortBySql(){
         $sortByField = $_POST['sortByField'];
         $sortByOrder = $_POST['sortByOrder'];
-
         $sort_sql_temp = " ";
         if(!empty($sortByField) && !empty($sortByOrder)){
-            $sort_sql_temp = " order by \"".$sortByField."\" ". $sortByOrder;
+
+            $field_display_name = $sortByField;
+            $field_display_name = strtolower($field_display_name);
+            $field_display_name = preg_replace('/[^a-z0-9]+/', '_', $field_display_name); // 非字母数字 → _
+            $field_display_name = trim($field_display_name, '_');
+
+            $klnVipDb = common::getReportRealDBFiled();
+            $key = array_search($field_display_name, $klnVipDb);
+            if (utils::startWith($key,"kln_ocean.")
+                || $field_display_name == "voyage_flight"  
+                || $field_display_name == "vessel_airline" 
+                || $field_display_name == "vslvoy_flight"){
+                $sort_sql_temp = " order by ".$key." ". $sortByOrder;
+            }
         }
         return  $sort_sql_temp;
     }

+ 32 - 12
utils/common.class.php

@@ -5064,13 +5064,24 @@ class common {
         $pickupLateral = '';
         if ($need_pickup) {
             $pickupLateral = "
-                LEFT JOIN LATERAL (
+               LEFT JOIN LATERAL (
                     SELECT 
                         cap.postal_code,
                         h.mode_type
                     FROM station_data.do_header h
-                        LEFT JOIN public.contacts_address cap ON cap.sync_key = h.collect_addr_key AND cap.addr_type = 'D'
-                    WHERE h.serial_no = oo.serial_no AND NULLIF(TRIM(cap.postal_code), '') IS NOT NULL  AND h.collect_addr_key is not null  ORDER BY h.id DESC  LIMIT 1
+                        LEFT JOIN station_data.do_detail d on h.id = d.do_header_id and h.from_station = d.from_station 
+                        LEFT JOIN public.contacts_address cap ON cap.sync_key = h.collect_addr_key
+                    WHERE (h.serial_no = oo.serial_no  
+                            or h.serial_no = (case when oo.order_from  ='public' and oo.transport_mode  ='sea' 
+                                                        then (select master_base_number from public.ocean ex where ex.serial_no = oo.serial_no limit 1)
+                                                when oo.order_from  ='sfs' and oo.transport_mode  ='sea'
+                                                        then (select master_base_number from sfs.ocean ex where ex.serial_no = oo.serial_no limit 1)
+                                                else ''::text end))  
+                        AND h.from_station = oo.origin
+                        AND COALESCE(h.serial_no) <> ''				
+                        AND COALESCE(h.void_by,'') = ''	
+                        AND (d.ctnr = oc.ctnr or coalesce(oc.ctnr,''::text)=''::text)				
+                        AND h.collect_addr_key is not null  ORDER BY h.id DESC  LIMIT 1
                 ) AS wo_pickup ON true
                 LEFT JOIN LATERAL (
                     SELECT 
@@ -5079,11 +5090,11 @@ class common {
                     FROM (
                         SELECT pickup_postal_code, pickup_mode_type
                             FROM station_data.ocean_pickup_delivery
-                        WHERE serial_no = oo.serial_no AND oo.transport_mode = 'sea' AND NULLIF(TRIM(pickup_postal_code), '') IS NOT NULL
+                        WHERE serial_no = oo.serial_no AND from_station = oo.origin AND oo.transport_mode = 'sea' 
                         UNION ALL
                         SELECT pickup_postal_code, pickup_mode_type
                             FROM station_data.air_pickup_delivery 
-                        WHERE serial_no = oo.serial_no  AND oo.transport_mode = 'air' AND NULLIF(TRIM(pickup_postal_code), '') IS NOT NULL
+                        WHERE serial_no = oo.serial_no AND from_station = oo.origin AND oo.transport_mode = 'air' 
                     ) u
                     LIMIT 1
                 ) AS routing_pickup ON true ";
@@ -5101,8 +5112,19 @@ class common {
                         CONCAT_WS('',cad.ctry_code,cad.city_code) as city,
                         COALESCE(cad.addr1, '') || ' ' || COALESCE(cad.addr2, '') || ' ' || COALESCE(cad.addr3, '') || ' ' || COALESCE(cad.addr4, '') AS full_address
                     FROM station_data.do_header h
-                        LEFT JOIN public.contacts_address cad ON cad.sync_key = h.consignee_addr_key AND cad.addr_type = 'D'
-                    WHERE h.serial_no = oo.serial_no AND NULLIF(TRIM(cad.postal_code), '') IS NOT NULL AND h.consignee_addr_key is not null ORDER BY h.id DESC LIMIT 1
+                        LEFT JOIN station_data.do_detail d on h.id = d.do_header_id and h.from_station = d.from_station 
+                        LEFT JOIN public.contacts_address cad ON cad.sync_key = h.consignee_addr_key 
+                    WHERE (h.serial_no = oo.serial_no  
+                            or h.serial_no = (case when oo.order_from  ='public' and oo.transport_mode  ='sea' 
+                                                        then (select master_base_number from public.ocean ex where ex.serial_no = oo.serial_no limit 1)
+                                                when oo.order_from  ='sfs' and oo.transport_mode  ='sea'
+                                                        then (select master_base_number from sfs.ocean ex where ex.serial_no = oo.serial_no limit 1)
+                                                else ''::text end)) 
+                        AND h.from_station = oo.agent
+                        AND COALESCE(h.serial_no) <> '' 				
+                        AND COALESCE(h.void_by,'') = ''	
+                        AND (d.ctnr = oc.ctnr or coalesce(oc.ctnr,''::text)=''::text)  
+                        AND h.consignee_addr_key is not null ORDER BY h.id DESC LIMIT 1
                 ) AS wo_delivery ON true
                 LEFT JOIN LATERAL (
                     SELECT 
@@ -5111,11 +5133,11 @@ class common {
                     FROM (
                         SELECT delivery_postal_code, delivery_mode_type
                             FROM station_data.ocean_pickup_delivery
-                        WHERE serial_no = oo.serial_no AND oo.transport_mode = 'sea' AND NULLIF(TRIM(delivery_postal_code), '') IS NOT NULL
+                        WHERE serial_no = oo.serial_no AND from_station = oo.agent AND oo.transport_mode = 'sea'
                         UNION ALL
                         SELECT delivery_postal_code, delivery_mode_type
                             FROM station_data.air_pickup_delivery
-                        WHERE serial_no = oo.serial_no  AND oo.transport_mode = 'air' AND NULLIF(TRIM(delivery_postal_code), '') IS NOT NULL
+                        WHERE serial_no = oo.serial_no AND from_station = oo.agent AND oo.transport_mode = 'air' 
                     ) u
                     LIMIT 1
                 ) AS routing_delivery ON true ";
@@ -5172,9 +5194,7 @@ class common {
             {$joinSfs}
             {$oeLateral}
             {$co2Lateral}
-            {$pickupLateral}
-            {$deliveryLateral}
-            <{ocItemSearchKLN}>
+            <{ocItemSearchKLNSFS}>
         )
         SELECT COUNT(*) FROM (
             SELECT * FROM vv_public