Explorar el Código

code commit 2

ShuanghongS hace 1 año
padre
commit
69ef61add4
Se han modificado 4 ficheros con 220 adiciones y 151 borrados
  1. 1 1
      main_new_version.php
  2. 45 23
      service/ocean_booking.class.php
  3. 165 125
      service/ocean_order.class.php
  4. 9 2
      utils/utils.class.php

+ 1 - 1
main_new_version.php

@@ -400,7 +400,7 @@ switch ($action) {
         //先固定死
         $json = '[{"lng":"100.78594000","lat":"13.68521000","infor":"Place of receipt: LAT KRABANG, THAILAND","sort":"0","stime":null,"ptype":"por"},{"lng":"100.88333333","lat":"13.08333333","infor":"POL: LAEM CHABANG PORT,THAILAND","sort":"1","stime":null,"ptype":"pol"},{"lng":"-122.28640000","lat":"37.79784000","infor":"POD: OAKLAND, CA, USA","sort":"2","stime":null,"ptype":"pod"},{"lng":"93.78333333","lat":"37.68333333","infor":"Place of delivery: STOCKTON, CA, USA","sort":"3","stime":null,"ptype":"poe"}]';
         $rss = json_decode($json,true);
-        common::echo_json_encode("200", $rss);
+        common::echo_json_encode(200, $rss);
         exit();
         break;
     case 'main_welcome':

+ 45 - 23
service/ocean_booking.class.php

@@ -334,32 +334,17 @@ class ocean_booking {
         where lower(serial_no) = '" . strtolower($serial_no) . "'";
         $ocean = common::excuteObjectSql($sql);
 
+        $vueData = $this->returnBookingDetailData($ocean,$status);
         //处理transportInfo信息数据
-        $transportInfo = array("bookingNo." =>$ocean['booking_no'],"status"=>$status,"mode" => "","origin" =>$ocean['origin_station'],"destination" =>$ocean['destination_station'],
-            "etd" =>$ocean['f_etd'],"atd" =>"","eta" =>$ocean['m_eta'],"ata" =>"");
+        $transportInfo = $vueData["transportInfo"];
 
         //处理basicInfo信息数据
-        $vessel = utils::outDisplayForMerge($ocean['f_vessel'],$ocean['m_vessel']);
-        $voyage = utils::outDisplayForMerge($ocean['f_voyage'],$ocean['m_voyage']);
-        $basicInfo = array("bookingNo." =>$ocean['booking_no'],"HAWB/HBOL" => $ocean['h_bol'],"Carrier_Booking_No" =>$ocean['carrier_booking'],
-            "PO_NO" =>$ocean['po_no'],"Vessel/Airline" =>$vessel,"Voyage/Filght" =>$voyage,
-            "Incoterm" =>$ocean['terms'],"Service_Type" =>$ocean['service']);
+        $basicInfo = $vueData["basicInfo"];
 
         //处理 拼接地址 ocean表单exp 字段无法精准分割电话和地址信息,只能从contacts表里查询
-        $shipper_address = common::retStationInfo($ocean['sh_address_1'], $ocean['sh_address_2'], $ocean['sh_address_3'], $ocean['sh_address_4'], 
-            $ocean['sh_city'], $ocean['sh_state'], $ocean['sh_zipcode'], $ocean['sh_country']);
-        $consignee_address = common::retStationInfo($ocean['cn_address_1'], $ocean['cn_address_2'], $ocean['cn_address_3'], $ocean['cn_address_4'], 
-            $ocean['cn_city'], $ocean['cn_state'], $ocean['cn_zipcode'], $ocean['cn_country']);
-        $origin_address = common::retStationInfo($ocean['aa_address_1'], $ocean['aa_address_2'], $ocean['aa_address_3'], $ocean['aa_address_4'], 
-            $ocean['aa_city'], $ocean['aa_state'], $ocean['aa_zipcode'], $ocean['aa_country']); 
-        $destination_address = common::retStationInfo($ocean['dd_address_1'], $ocean['dd_address_2'], $ocean['dd_address_3'], $ocean['dd_address_4'], 
-            $ocean['dd_city'], $ocean['dd_state'], $ocean['dd_zipcode'], $ocean['dd_country']);    
+        $businessPartners = $vueData["businessPartners"];
 
-        $shipperPartners = array("company" =>$ocean['sh_company'],"address"=>$shipper_address,"phone"=>$ocean['sh_phone']);
-        $consigneePartners = array("company" =>$ocean['cn_company'],"address"=>$consignee_address,"phone"=>$ocean['cn_phone']);
-        $originPartners = array("company" =>$ocean['aa_company'],"address"=>$origin_address,"phone"=>$ocean['aa_phone']);
-        $destinationPartners = array("company" =>$ocean['dd_company'],"address"=>$destination_address,"phone"=>$ocean['dd_phone']);
-        $businessPartners = array("shipper"=>$shipperPartners,"consignee" => $consigneePartners,"origin" => $originPartners,"destination" => $destinationPartners);
+        $marksAndDescription = $vueData["marksAndDescription"];
 
         //处理ocean_reference
         $ref_no = array();
@@ -370,8 +355,6 @@ class ocean_booking {
             }
         }
       
-        $marksAndDescription = array("marks"=>$ocean['marks'],"description"=>$ocean['description']);
-
         //处理返回booking的 Container 信息数据
         $booking_container_column = array();
         $container_column = column::getInstance()->getDisplayColumnAll('Booking_Container');
@@ -387,7 +370,7 @@ class ocean_booking {
         }
         $containers = array("container_column"=>$booking_container_column,"container_data" =>$rss);
 
-        //todo 不确定信息
+        //packing
         $quantity_tolal = 0;
         $packages = "CTN";
         $g_weight_tolal = 0;
@@ -400,6 +383,7 @@ class ocean_booking {
             $cbm_tolal += $pv['cbm'];
             $packages = " ".$pv['unit'];
         }
+
         //$packing = array("Quantity/Unit"=>"47 CTN","G. Weight" => "480.25 KGS","Ch. Weight" => "689.26 KGS","Volume" => "3.801 CBM");
         $packing = array("Quantity/Unit"=>$quantity_tolal.$packages,"G. Weight" => $g_weight_tolal." KGS","Ch. Weight" => $ch_weight_tolal." LBS","Volume" => $cbm_tolal." CBM");
         
@@ -486,6 +470,44 @@ class ocean_booking {
         }
         return $stationInfo;
     }
+
+    private function returnBookingDetailData($ocean,$status){
+        $data = array();
+        //处理transportInfo信息数据
+        $transportInfo = array("bookingNo." =>$ocean['booking_no'],"status"=>$status,"mode" => "","origin" =>$ocean['origin_station'],"destination" =>$ocean['destination_station'],
+            "etd" =>$ocean['f_etd'],"atd" =>"","eta" =>$ocean['m_eta'],"ata" =>"");
+        $data["transportInfo"] = $transportInfo;
+
+        //处理basicInfo信息数据
+        $vessel = utils::outDisplayForMerge($ocean['f_vessel'],$ocean['m_vessel']);
+        $voyage = utils::outDisplayForMerge($ocean['f_voyage'],$ocean['m_voyage']);
+        $basicInfo = array("bookingNo." =>$ocean['booking_no'],"HAWB/HBOL" => $ocean['h_bol'],"Carrier_Booking_No" =>$ocean['carrier_booking'],
+            "PO_NO" =>$ocean['po_no'],"Vessel/Airline" =>$vessel,"Voyage/Filght" =>$voyage,
+            "Incoterm" =>$ocean['terms'],"Service_Type" =>$ocean['service']);
+        $data["basicInfo"] = $basicInfo;    
+
+        //处理 拼接地址 ocean表单exp 字段无法精准分割电话和地址信息,只能从contacts表里查询
+        $shipper_address = common::retStationInfo($ocean['sh_address_1'], $ocean['sh_address_2'], $ocean['sh_address_3'], $ocean['sh_address_4'], 
+            $ocean['sh_city'], $ocean['sh_state'], $ocean['sh_zipcode'], $ocean['sh_country']);
+        $consignee_address = common::retStationInfo($ocean['cn_address_1'], $ocean['cn_address_2'], $ocean['cn_address_3'], $ocean['cn_address_4'], 
+            $ocean['cn_city'], $ocean['cn_state'], $ocean['cn_zipcode'], $ocean['cn_country']);
+        $origin_address = common::retStationInfo($ocean['aa_address_1'], $ocean['aa_address_2'], $ocean['aa_address_3'], $ocean['aa_address_4'], 
+            $ocean['aa_city'], $ocean['aa_state'], $ocean['aa_zipcode'], $ocean['aa_country']); 
+        $destination_address = common::retStationInfo($ocean['dd_address_1'], $ocean['dd_address_2'], $ocean['dd_address_3'], $ocean['dd_address_4'], 
+            $ocean['dd_city'], $ocean['dd_state'], $ocean['dd_zipcode'], $ocean['dd_country']);    
+
+        $shipperPartners = array("company" =>$ocean['sh_company'],"address"=>$shipper_address,"phone"=>$ocean['sh_phone']);
+        $consigneePartners = array("company" =>$ocean['cn_company'],"address"=>$consignee_address,"phone"=>$ocean['cn_phone']);
+        $originPartners = array("company" =>$ocean['aa_company'],"address"=>$origin_address,"phone"=>$ocean['aa_phone']);
+        $destinationPartners = array("company" =>$ocean['dd_company'],"address"=>$destination_address,"phone"=>$ocean['dd_phone']);
+        $businessPartners = array("shipper"=>$shipperPartners,"consignee" => $consigneePartners,"origin" => $originPartners,"destination" => $destinationPartners);
+        $data["businessPartners"] = $businessPartners;
+
+        $marksAndDescription = array("marks"=>$ocean['marks'],"description"=>$ocean['description']);
+        $data["marksAndDescription"] = $marksAndDescription;
+
+        return $data;    
+    }
 }
 
 ?>

+ 165 - 125
service/ocean_order.class.php

@@ -27,6 +27,7 @@ class ocean_order {
         }
         return self::$_ocean;
     }
+
     public function ocean_order() {
         $operate = utils::_get('operate');
         $operate = strtolower($operate);
@@ -192,13 +193,13 @@ class ocean_order {
 
             //detail  information 
             $detail_information_column = array();
-            $detail_information_column[] = array("title" =>"SN","field" =>"sn","formatter" =>"","type" =>"normal");
-            $detail_information_column[] = array("title" =>"Carrier Booking No.","field" =>"carrier_booking_no","formatter" =>"","type" =>"normal");
-            $detail_information_column[] = array("title" =>"Container No","field" =>"ctnr","formatter" =>"","type" =>"normal");
-            $detail_information_column[] = array("title" =>"VGM Weight","field" =>"vgm_weight","formatter" =>"","type" =>"input");
-            $detail_information_column[] = array("title" =>"VGM Unit","field" =>"unit","formatter" =>"","type" =>"select");
-            $detail_information_column[] = array("title" =>"VGM Time","field" =>"vgm_time","formatter" =>"","type" =>"dateTime");
-            $detail_information_column[] = array("title" =>"VGM Method","field" =>"vgm_method","formatter" =>"","type" =>"input");
+            $detail_information_column[] = array("title" =>"SN","field" =>"sn","formatter" =>"","edit_type" =>"normal",);
+            $detail_information_column[] = array("title" =>"Carrier Booking No.","field" =>"carrier_booking_no","formatter" =>"","edit_type" =>"normal");
+            $detail_information_column[] = array("title" =>"Container No","field" =>"ctnr","formatter" =>"","edit_type" =>"normal");
+            $detail_information_column[] = array("title" =>"VGM Weight","field" =>"vgm_weight","formatter" =>"","edit_type" =>"input");
+            $detail_information_column[] = array("title" =>"VGM Unit","field" =>"unit","formatter" =>"","edit_type" =>"select");
+            $detail_information_column[] = array("title" =>"VGM Time","field" =>"vgm_time","formatter" =>"","edit_type" =>"dateTime");
+            $detail_information_column[] = array("title" =>"VGM Method","field" =>"vgm_method","formatter" =>"","edit_type" =>"input");
             foreach($rs as $rk => $rv){
                 $log[$rk]['sn'] = $rk +1;
             }
@@ -459,59 +460,10 @@ class ocean_order {
 
     private function _ocean_detail() {
         $serial_no = common::deCode($_GET['a'], 'D');
-        $sql = "SELECT m_eta as _m_eta,  h_bol as _h_bol, m_bol as _m_bol,job_no as _job_bol,
-                    public.z_get_eta_dest(o.final_eta::date, o.eta_dest::text, o.service::text, o.m_eta::date, o.place_of_delivery::text, o.mport_of_discharge::text) as _eta_dest, 
-                    to_char(final_eta, 'MM/DD/YYYY') as _final_eta,
-                    o.* ,sh.*, cn.* ,aa.*,dd.*,ee.status as new_status
-                from ocean o 
-                left join LATERAL (select case when a.description='Booking Confirmation' then 'Booked'
-							when a.description='Cargo Pickup' then 'Cargo Received'
-							when a.description='Cargo Arrived at Origin' then 'Cargo Received'
-							when a.description='Departure' then 'Departed'
-							when a.description='Arrived at Final Destination Port Arrived' then 'Arrived'
-							when a.description='Arrived at Final Destination' then 'Completed'
-							else 'Booked' END as status
-				    from  ocean_milestone a 
-					    where a.serial_no=online_ocean.serial_no 
-					    and a.description in (
-						    select regexp_split_to_table('Booking Confirmation,Cargo Pickup,Cargo Arrived at Origin,Departure,Arrived at Final Destination Port,Arrived at Final Destination', ','))
-				    order by id desc limit 1) ee 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 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 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 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 contacts c WHERE o.destination_station::text = c.contact_id::text) dd ON true
-            where lower(serial_no) = '" . strtolower($serial_no) . "'";
+        $sql = $this->getOceanDetail($serial_no);
         $ocean = common::excuteObjectSql($sql);
+        
         if (!empty($ocean)) {
-         
             $ocean['_isf_bol'] = $ocean['isf_bol'];
             if (empty($ocean['_isf_bol'])) {
                 $ocean['_isf_bol'] = "AMAW" . $ocean['_h_bol'];
@@ -519,7 +471,6 @@ class ocean_order {
             $isf_ss = md5(md5($ocean['_isf_bol']));
             $isf_ss = substr($isf_ss, 7) . substr($isf_ss, 0, 7);
             //ETA Dest的计算逻辑移除
-
             // most update status
             $_schemas = $_REQUEST["_schemas"];
             $mostStatusSql = "select last_status_loc, last_status_city, to_char(last_status_315_date, 'MM/DD/YYYY') as last_status_315_date,last_status_315_code "
@@ -547,56 +498,24 @@ class ocean_order {
             $uncode .= "'";
         }
 
+        $vueData = $this->returnOceanDetailData($ocean,$state);
         //处理shipment data暂时写死
-        $simplexData = array();
-        $simplexData[] = array("index" =>1,"label" =>"Place of Receipt",
-            "path" =>$ocean['place_of_receipt_exp']."/".$ocean['place_of_receipt'],"isArrival" =>$state == 1 ? true : false);
-
-        $simplexData[] = array("index" =>2,"label" =>"Port of Loading",
-            "path" =>$ocean['fport_of_loading_exp_exp']."/".$ocean['fport_of_loading_exp'],"isArrival" =>$state == 2 ? true : false,
-            "children" =>array(array("label" =>"Cargo arrival at Origin","date" =>"2024-02-01"),
-                            array("label" =>"'Departure","date" =>"2024-02-01")));
-
-        $simplexData[] = array("index" =>3,"label" =>"Port of Discharge",
-            "path" =>$ocean['mport_of_discharge_exp']."/".$ocean['mport_of_discharge'],"isArrival" =>$state == 3 ? true : false,
-            "children" =>array(array("label" =>"ETA","date" =>"2024-02-01")));
-
-        $simplexData[] = array("index" =>4,"label" =>"Place of Delivery",
-            "path" =>$ocean['place_of_delivery_exp']."/".$ocean['place_of_delivery'],"isArrival" =>$state == 4 ? true : false);
-
-
+        $simplexData = $vueData['shipmentData'];
+       
         //处理transportInfo信息数据
-        $transportInfo = array("Tracking No." =>$ocean['tracking_no'],"status"=>$ocean['new_status'],"mode" => "Ocean Freight",
-            "origin" =>$ocean['origin_station'],"destination" =>$ocean['destination_station'],
-            "etd" =>$ocean['f_etd'],"atd" =>"","eta" =>$ocean['m_eta'],"ata" =>"");
+        $transportInfo = $vueData['transportInfo'];
 
         //处理basicInfo信息数据
-        $vessel = utils::outDisplayForMerge($ocean['f_vessel'],$ocean['m_vessel']);
-        $voyage = utils::outDisplayForMerge($ocean['f_voyage'],$ocean['m_voyage']);
-        $basicInfo = array("MAWB/MBL No." =>$ocean['m_bol'],"HAWB/HBOL" => $ocean['h_bol'],"Carrier_Booking_No" =>$ocean['carrier_booking'],
-            "PO_NO" =>$ocean['po_no'],"Vessel/Airline" =>$vessel,"Voyage/Filght" =>$voyage,
-            "Incoterm" =>$ocean['terms'],"Service_Type" =>$ocean['service']);
+        $basicInfo = $vueData['basicInfo'];
 
         //处理 拼接地址 ocean表单exp 字段无法精准分割电话和地址信息,只能从contacts表里查询
-        $shipper_address = common::retStationInfo($ocean['sh_address_1'], $ocean['sh_address_2'], $ocean['sh_address_3'], $ocean['sh_address_4'], 
-            $ocean['sh_city'], $ocean['sh_state'], $ocean['sh_zipcode'], $ocean['sh_country']);
-        $consignee_address = common::retStationInfo($ocean['cn_address_1'], $ocean['cn_address_2'], $ocean['cn_address_3'], $ocean['cn_address_4'], 
-            $ocean['cn_city'], $ocean['cn_state'], $ocean['cn_zipcode'], $ocean['cn_country']);
-        $origin_address = common::retStationInfo($ocean['aa_address_1'], $ocean['aa_address_2'], $ocean['aa_address_3'], $ocean['aa_address_4'], 
-            $ocean['aa_city'], $ocean['aa_state'], $ocean['aa_zipcode'], $ocean['aa_country']); 
-        $destination_address = common::retStationInfo($ocean['dd_address_1'], $ocean['dd_address_2'], $ocean['dd_address_3'], $ocean['dd_address_4'], 
-            $ocean['dd_city'], $ocean['dd_state'], $ocean['dd_zipcode'], $ocean['dd_country']);    
-
-        $shipperPartners = array("company" =>$ocean['sh_company'],"address"=>$shipper_address,"phone"=>$ocean['sh_phone']);
-        $consigneePartners = array("company" =>$ocean['cn_company'],"address"=>$consignee_address,"phone"=>$ocean['cn_phone']);
-        $originPartners = array("company" =>$ocean['aa_company'],"address"=>$origin_address,"phone"=>$ocean['aa_phone']);
-        $destinationPartners = array("company" =>$ocean['dd_company'],"address"=>$destination_address,"phone"=>$ocean['dd_phone']);
-        $businessPartners = array("shipper"=>$shipperPartners,"consignee" => $consigneePartners,"origin" => $originPartners,"destination" => $destinationPartners);
+        $businessPartners = $vueData['businessPartners'];
     
         //处理routes 转船可能有多个情况
-        $routes = array(array("mode" =>"Sea", "origin" =>$ocean['origin_station'],
-            "destination" => $ocean['destination_station'], "etd" => $ocean['f_etd'],"atd" => "",
-            "eta" =>$ocean['m_eta'],"ata" =>"","vessel" =>$vessel,"voyageNo" =>$voyage));    
+        $routes = $vueData['routes']; 
+
+        //处理marksAndDescription
+        $marksAndDescription = $vueData['marksAndDescription']; 
 
          //处理ocean_reference
          $ref_no = array();
@@ -606,12 +525,8 @@ class ocean_order {
                  $ref_no[] = array("label"=>$ref["ref_code"],"value"=>$ref["ref_value"]);
              }
          }
-
-         //处理marksAndDescription
-         $marksAndDescription = array("marks"=>$ocean['marks'],"description"=>$ocean['description']);
         
-        //配置Ocean_Container字段 UI 需要的字段有:Container.no Packing,quantity,Gross weight(kg),Gross weight(LB),CBM,seal#,size.service
-        //处理Container
+        //处理Container :配置Ocean_Container字段 UI 需要的字段有:Container.no Packing,quantity,Gross weight(kg),Gross weight(LB),CBM,seal#,size.service
         $ocean_container_column = array();
         $container_column = column::getInstance()->getDisplayColumnAll('Ocean_Container');
         foreach($container_column as $cc){
@@ -640,7 +555,7 @@ class ocean_order {
         }
         $containers = array("container_column"=>$ocean_container_column,"container_data" =>$rss);
 
-        //Packing 不确定信息
+        //Packing信息
         $packing = array("Quantity/Unit"=>$quantity_tolal.$packages,"G. Weight" => $g_weight_tolal." KGS","Ch. Weight" => $ch_weight_tolal." LBS","Volume" => $cbm_tolal." CBM");
        
         /* Container Status */
@@ -668,21 +583,7 @@ class ocean_order {
         }
 
         //Milestones info  列名固定
-        $Milestones_column = array();
-        $Milestones_column[] = array("title" =>"Milestones","field" =>"milestones","formatter" =>"","type" =>"normal");
-        $Milestones_column[] = array("title" =>"Date Time","field" =>"date_time","formatter" =>"","type" =>"normal");
-        $Milestones_column[] = array("title" =>"Locations","field" =>"locations","formatter" =>"","type" =>"normal");
-        $Milestones_column[] = array("title" =>"Remarks","field" =>"remarks","formatter" =>"","type" =>"normal");
-
-        //Milestones 数据信息待定
-        $Milestones_data = array();
-        $Milestones_data_arr = common::excuteListSql("select description,act_date||' '||act_time as date_time, remark,timezone from  ocean_milestone a 
-		 			where a.serial_no='".$ocean["serial_no"]."' order by id");           
-        foreach($Milestones_data_arr as $mda){
-            $Milestones_data[] = array("milestones"=>$mda['description'],"date_time"=>$mda['date_time'],"timezone" =>$mda['timezone'],
-                "locations" => "", "remarks" =>$mda['remark']);
-        }  
-        $Milestones = array("Milestones_column"=>$Milestones_column,"Milestones_data" =>$Milestones_data);
+        $Milestones = $this->getMilestonesInfo($ocean);
 
         //页面固定写死的信息
         $document_column = array();
@@ -781,6 +682,7 @@ class ocean_order {
                         'isf_ss' => $isf_ss,
                         '_schemas' =>$_schemas,
                         'uncode' =>$uncode,
+                        'serial_no' =>$serial_no,
                         'can_upload_doc' => strtolower($_SESSION['ONLINE_USER']['can_upload_doc']) == 't' || strtolower($_SESSION['ONLINE_USER']['can_view_doc']) == 't',
                         'canEdiVgm' => _canEdiVgm(),
                         'copyright' =>$_COPYRIGHT);
@@ -804,7 +706,7 @@ class ocean_order {
         $amsLog = array();
         //页面固定写死的信息
         $amsLog_column = array();
-        $amsLog_column[] = array("title" =>"Date Time","field" =>"atime","formatter" =>"","type" =>"normal");
+        $amsLog_column[] = array("title" =>"Date Time","field" =>"atime","formatter" =>"","type" =>"dateTime");
         $amsLog_column[] = array("title" =>"Code","field" =>"cbperrorcode","formatter" =>"","type" =>"normal");
         $amsLog_column[] = array("title" =>"Name","field" =>"isams_submit","formatter" =>"","type" =>"normal");
         $amsLog_column[] = array("title" =>"Description","field" =>"amslog","formatter" =>"","type" =>"normal");
@@ -844,7 +746,7 @@ class ocean_order {
         $isfLog = array();
         //页面固定写死的信息
         $isfLog_column = array();
-        $isfLog_column[] = array("title" =>"Date Time","field" =>"atime","formatter" =>"","type" =>"normal");
+        $isfLog_column[] = array("title" =>"Date Time","field" =>"atime","formatter" =>"","type" =>"dateTime");
         $isfLog_column[] = array("title" =>"Code","field" =>"cbperrorcode","formatter" =>"","type" =>"normal");
         $isfLog_column[] = array("title" =>"Name","field" =>"isfsubmit","formatter" =>"","type" =>"normal");
         $isfLog_column[] = array("title" =>"Description","field" =>"isflog","formatter" =>"","type" =>"normal");
@@ -1133,6 +1035,144 @@ class ocean_order {
             return "success";
         }
     }
-}
 
+    private function getOceanDetail($serial_no) {
+        $sql = "SELECT m_eta as _m_eta,  h_bol as _h_bol, m_bol as _m_bol,job_no as _job_bol,
+                public.z_get_eta_dest(o.final_eta::date, o.eta_dest::text, o.service::text, o.m_eta::date, o.place_of_delivery::text, o.mport_of_discharge::text) as _eta_dest, 
+                to_char(final_eta, 'MM/DD/YYYY') as _final_eta,
+                o.* ,sh.*, cn.* ,aa.*,dd.*,ee.status as new_status
+            from ocean o 
+            left join LATERAL (select case when a.description='Booking Confirmation' then 'Booked'
+                        when a.description='Cargo Pickup' then 'Cargo Received'
+                        when a.description='Cargo Arrived at Origin' then 'Cargo Received'
+                        when a.description='Departure' then 'Departed'
+                        when a.description='Arrived at Final Destination Port Arrived' then 'Arrived'
+                        when a.description='Arrived at Final Destination' then 'Completed'
+                        else 'Booked' END as status
+                from  ocean_milestone a 
+                    where a.serial_no=o.serial_no 
+                    and a.description in (
+                        select regexp_split_to_table('Booking Confirmation,Cargo Pickup,Cargo Arrived at Origin,Departure,Arrived at Final Destination Port,Arrived at Final Destination', ','))
+                order by id desc limit 1) ee 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 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 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 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 contacts c WHERE o.destination_station::text = c.contact_id::text) dd ON true
+        where lower(serial_no) = '" . strtolower($serial_no) . "'";
+        return $sql;
+    }
+
+    private function returnOceanDetailData($ocean,$state){
+        $data = array();
+        //处理shipment data暂时写死
+        $simplexData = array();
+        $simplexData[] = array("index" =>1,"label" =>"Place of Receipt",
+            "path" =>$ocean['place_of_receipt_exp']."/".$ocean['place_of_receipt'],"isArrival" =>$state == 1 ? true : false);
+
+        $simplexData[] = array("index" =>2,"label" =>"Port of Loading",
+            "path" =>$ocean['fport_of_loading_exp_exp']."/".$ocean['fport_of_loading_exp'],"isArrival" =>$state == 2 ? true : false,
+            "children" =>array(array("label" =>"Cargo arrival at Origin","date" =>"2024-02-01"),
+                            array("label" =>"'Departure","date" =>"2024-02-01")));
+
+        $simplexData[] = array("index" =>3,"label" =>"Port of Discharge",
+            "path" =>$ocean['mport_of_discharge_exp']."/".$ocean['mport_of_discharge'],"isArrival" =>$state == 3 ? true : false,
+            "children" =>array(array("label" =>"ETA","date" =>"2024-02-01")));
+
+        $simplexData[] = array("index" =>4,"label" =>"Place of Delivery",
+            "path" =>$ocean['place_of_delivery_exp']."/".$ocean['place_of_delivery'],"isArrival" =>$state == 4 ? true : false);
+        $data['shipmentData'] = $simplexData;
+
+        //处理transportInfo信息数据
+        $transportInfo = array("Tracking No." =>$ocean['tracking_no'],"status"=>$ocean['new_status'],"mode" => "Ocean Freight",
+            "origin" =>$ocean['origin_station'],"destination" =>$ocean['destination_station'],
+            "etd" =>$ocean['f_etd'],"atd" =>"","eta" =>$ocean['m_eta'],"ata" =>"");
+        $data['transportInfo'] = $transportInfo;
+
+        //处理basicInfo信息数据
+        $vessel = utils::outDisplayForMerge($ocean['f_vessel'],$ocean['m_vessel']);
+        $voyage = utils::outDisplayForMerge($ocean['f_voyage'],$ocean['m_voyage']);
+        $basicInfo = array("MAWB/MBL No." =>$ocean['m_bol'],"HAWB/HBOL" => $ocean['h_bol'],"Carrier_Booking_No" =>$ocean['carrier_booking'],
+            "PO_NO" =>$ocean['po_no'],"Vessel/Airline" =>$vessel,"Voyage/Filght" =>$voyage,
+            "Incoterm" =>$ocean['terms'],"Service_Type" =>$ocean['service']);
+        $data['basicInfo'] = $basicInfo;    
+
+        //处理 拼接地址 ocean表单exp 字段无法精准分割电话和地址信息,只能从contacts表里查询
+        $shipper_address = common::retStationInfo($ocean['sh_address_1'], $ocean['sh_address_2'], $ocean['sh_address_3'], $ocean['sh_address_4'], 
+            $ocean['sh_city'], $ocean['sh_state'], $ocean['sh_zipcode'], $ocean['sh_country']);
+        $consignee_address = common::retStationInfo($ocean['cn_address_1'], $ocean['cn_address_2'], $ocean['cn_address_3'], $ocean['cn_address_4'], 
+            $ocean['cn_city'], $ocean['cn_state'], $ocean['cn_zipcode'], $ocean['cn_country']);
+        $origin_address = common::retStationInfo($ocean['aa_address_1'], $ocean['aa_address_2'], $ocean['aa_address_3'], $ocean['aa_address_4'], 
+            $ocean['aa_city'], $ocean['aa_state'], $ocean['aa_zipcode'], $ocean['aa_country']); 
+        $destination_address = common::retStationInfo($ocean['dd_address_1'], $ocean['dd_address_2'], $ocean['dd_address_3'], $ocean['dd_address_4'], 
+            $ocean['dd_city'], $ocean['dd_state'], $ocean['dd_zipcode'], $ocean['dd_country']);    
+
+        $shipperPartners = array("company" =>$ocean['sh_company'],"address"=>$shipper_address,"phone"=>$ocean['sh_phone']);
+        $consigneePartners = array("company" =>$ocean['cn_company'],"address"=>$consignee_address,"phone"=>$ocean['cn_phone']);
+        $originPartners = array("company" =>$ocean['aa_company'],"address"=>$origin_address,"phone"=>$ocean['aa_phone']);
+        $destinationPartners = array("company" =>$ocean['dd_company'],"address"=>$destination_address,"phone"=>$ocean['dd_phone']);
+        $businessPartners = array("shipper"=>$shipperPartners,"consignee" => $consigneePartners,"origin" => $originPartners,"destination" => $destinationPartners);
+        $data['businessPartners'] = $businessPartners;  
+    
+        //处理routes 转船可能有多个情况
+        $routes = array(array("mode" =>"Sea", "origin" =>$ocean['origin_station'],
+            "destination" => $ocean['destination_station'], "etd" => $ocean['f_etd'],"atd" => "",
+            "eta" =>$ocean['m_eta'],"ata" =>"","vessel" =>$vessel,"voyageNo" =>$voyage));
+        $data['routes'] = $routes;
+        
+        //处理marksAndDescription
+        $marksAndDescription = array("marks"=>$ocean['marks'],"description"=>$ocean['description']);
+        $data['marksAndDescription'] = $marksAndDescription;
+
+        return $data;    
+    }
+
+    private function getMilestonesInfo($ocean){
+        //Milestones info  列名固定
+        $Milestones_column = array();
+        $Milestones_column[] = array("title" =>"Milestones","field" =>"milestones","formatter" =>"","type" =>"normal");
+        $Milestones_column[] = array("title" =>"Date Time","field" =>"date_time","formatter" =>"","type" =>"normal");
+        $Milestones_column[] = array("title" =>"Locations","field" =>"locations","formatter" =>"","type" =>"normal");
+        $Milestones_column[] = array("title" =>"Remarks","field" =>"remarks","formatter" =>"","type" =>"normal");
+
+        //Milestones 数据信息待定
+        $Milestones_data = array();
+        $Milestones_data_arr = common::excuteListSql("select description,act_date||' '||act_time as date_time, remark,timezone from  ocean_milestone a 
+		 			where a.serial_no='".$ocean["serial_no"]."' order by id");           
+        foreach($Milestones_data_arr as $mda){
+            $Milestones_data[] = array("milestones"=>$mda['description'],"date_time"=>$mda['date_time'],"timezone" =>$mda['timezone'],
+                "locations" => "", "remarks" =>$mda['remark']);
+        }  
+        $Milestones = array("Milestones_column"=>$Milestones_column,"Milestones_data" =>$Milestones_data);
+
+        return $Milestones;
+    }
+}
 ?>

+ 9 - 2
utils/utils.class.php

@@ -355,7 +355,7 @@ class utils {
         }
         $user_type = _isCustomerLogin() ? "Customer" : "Employee";
         $user_name = _getLoginName();
-        $page = utils::getPageByAction($_REQUEST["action"]);
+        $page = utils::getPageByAction($_REQUEST["action"],$_REQUEST["operate"]);
         $operation = $_REQUEST["operate"];
         $operation_detail = utils::jsonFiltration("null", "\"\"", json_encode($_REQUEST));
         $sql = "INSERT INTO public.customer_service_operation_log(user_type, user_name, page, operation, operation_detail, 
@@ -364,7 +364,14 @@ class utils {
         common::excuteUpdateSql($sql);
     }
 
-    public static function getPageByAction($action){
+    public static function getPageByAction($action,$operate){
+        //取消
+        $actionConvert = array(
+            "login=do_login" => array("page" =>"Login","operate"=>"Login"),
+            "login=logout" => array("page" =>"logout","operate"=>"logout"),
+            "ocean_booking" => array("page" =>"logout","operate"=>"logout"),
+            "ocean_order" => array("page" =>"logout","operate"=>"logout"));
+
         if($action == "ocean_booking"){
             $action = "Booking";
         }elseif($action == "ocean_order"){