From a95c2774113c764b33730c6eb0a1e0f12a3e9522 Mon Sep 17 00:00:00 2001 From: lyt Date: Fri, 31 May 2019 13:38:49 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=91=E9=80=81=E7=BA=BF=E8=B7=AF=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E8=AE=A1=E5=88=92,=20=E5=90=AB=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E8=BE=93=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../vendorPlanSync/controllers/index.php | 2 +- .../vendorPlanSync/libraries/Tulanduo.php | 353 ++++++++++++------ .../vendorPlanSync/libraries/trippest.php | 29 ++ .../models/BIZ_orders_model.php | 8 +- .../vendorPlanSync/models/Group_model.php | 37 +- ...uo_addOrUpdateRouteOrderContentBuilder.php | 23 +- 6 files changed, 314 insertions(+), 138 deletions(-) diff --git a/webht/third_party/vendorPlanSync/controllers/index.php b/webht/third_party/vendorPlanSync/controllers/index.php index 25fc9c5d..076db79e 100644 --- a/webht/third_party/vendorPlanSync/controllers/index.php +++ b/webht/third_party/vendorPlanSync/controllers/index.php @@ -32,7 +32,7 @@ class Index extends CI_Controller { public function push($GRI_SN=0, $vendor_str=null) { -log_message('error',"\n\n---------------------------------------------------PUSH------------------------------------------------------------\n"); +log_message('error',"begin\n\n---------------------------------------------------PUSH------------------------------------------------------------\n"); $start_date = date('Y-m-d'); $end_date = date('Y-m-d 23:59:59', strtotime("+2 months")); // test diff --git a/webht/third_party/vendorPlanSync/libraries/Tulanduo.php b/webht/third_party/vendorPlanSync/libraries/Tulanduo.php index d8409460..7e0c67bd 100644 --- a/webht/third_party/vendorPlanSync/libraries/Tulanduo.php +++ b/webht/third_party/vendorPlanSync/libraries/Tulanduo.php @@ -54,6 +54,9 @@ class Tulanduo // public $detail_url = "http://djb3c.ltsoftware.net:9921/action/api/detailRouteOrder/"; // public $neworder_url = "http://djb3c.ltsoftware.net:9921/action/api/addOrUpdateRouteOrder/"; + private $tulanduo_trippest_pag = array(); + private $tulanduo_trippest_code = array(); + public function __construct(){ $this->ci =& get_instance(); mb_regex_encoding("UTF-8"); @@ -72,12 +75,18 @@ class Tulanduo public function order_push($order=null) { + // 初始化所有Trippest合作项目的包价产品 + $this->tulanduo_trippest_pag = $this->ci->BIZ_order->get_packageDetails('', implode(',', $this->vendor_ids)); + $this->tulanduo_trippest_code = array_map(function($ele){return mb_strtoupper($ele->PAG_Code);}, $this->tulanduo_trippest_pag); + $this->tulanduo_trippest_pag = array_combine($this->tulanduo_trippest_code, $this->tulanduo_trippest_pag); + // 目的地计划 if (strval($order->GRI_OrderType) === "227002" && strval($order->department) === "30") { return $this->push_trippest($order); } // 商务 if (strval($order->GRI_OrderType) === "227002") { + return false; // todo: return $this->push_tour($order); } // 传统订单 @@ -90,146 +99,261 @@ class Tulanduo /*! * 发送线路订单计划 - * @date 2018-11-22 */ public function push_tour($vas=null) { - $userId = $this->send_host["1"]["userId"]; - $userKey = $this->send_host["1"]["key"]; $gri_sn = $vas->GRI_SN; $vas_sn = $vas->VAS_SN; $vei_sn = $vas->VAS_VEI_SN; - $is_send_vary = $vas->VAS_SendVary; - $change_info = $vas->VAS_ChangeText; - if (trim($change_info) !== "") { - preg_match_all('/(.*)={6}(.*)(\d{4}\-\d{2}\-\d{2})/ismU', characet($change_info,'UTF-8'), $change_arr); - $change_info = $change_arr[0][0]; - } - $change_info = str_replace("\n", "
", $change_info); $grd_info = $this->ci->Group_model->get_vendor_plan_info($gri_sn, $vei_sn); if (empty($grd_info)) { return false; } - $all_day_no = array_map(function($ele){return $ele->GRD_DayNo;}, $grd_info); - $arrange_info = $this->ci->Group_model->get_arrange_info($gri_sn, $vei_sn); - $routeName = "中华游" . $arrange_info[0]->tocity . "常规线路"; // TODO: 线路名称 - // $routeType = "桂林海纳国旅"; // TODO: 线路类型 - $routeType = $routeName; - $agcOrderNo = $vas->GRI_Name . "-" . $arrange_info[0]->citycode; - $agcOrderNo .= "(" . $vas->operator . ")"; - $first_date = $grd_info[0]->day_no_raw; - $last_date = count($grd_info)-1; - $end_date = $grd_info[$last_date]->day_no_raw; - $request_info = $this->ci->Group_model->get_plan_request($gri_sn); - $order_type = 1; - $this->ci->tldOrderBuilder->setUserId($userId) - ->setKey($userKey) - ->setOrderType($order_type) - ->setRouteName($routeName) - ->setRouteType($routeType) - ->setAgcOrderNo($agcOrderNo) - ->setAdultNum(intval($arrange_info[0]->ACI_PersonNum)) - ->setChildNum(intval(bcadd($arrange_info[0]->ACI_ChildNum, $arrange_info[0]->ACI_BabyNum))) - ->setDestination($arrange_info[0]->tocity) - ->setTravelDate($first_date) - ->setLeavedDate($end_date) - // ->setOrderRemark($order_remark) // 订单备注 TODO: - ->setRoomStandard($request_info->GCI_HotelRequest) // 住房标准 - ->setRouteStandard($request_info->GCI_Request) // 行程服务标准 - ; $guestlist = $this->ci->orders_model->get_customer_list($gri_sn); - foreach ($guestlist as $key => $vg) { - $this->ci->tldOrderBuilder->setCustomersName($key, $vg->MemberName ) - ->setCustomersPeopleType($key, (calc_age_type($vg->BirthDay)==1 ? "成人" : "儿童")) - ->setCustomersDocumentType($key, "护照") // Passport No. - ->setCustomersDocumentNo($key, $vg->PassportNo) - ->setCustomersOtherInfo($key, $vg->Country . "; " . $vg->phone); + $request_info = $this->ci->Group_model->get_plan_request($vas->GRI_SN); + /** + * TODO:团队类型? 先写2 + * ??是否同一天含多个包价项目 + */ + /*! + // 同一天含多个包价产品时, 需要先合并.避免丢失 + $all_trippest_package = array_filter(array_map(function ($ele){return $ele->pag_code_arr;}, $grd_info)); + $reduce_package_code = array(); + foreach ($all_trippest_package as $ktp => $vtp) { + $reduce_package_code = array_merge($reduce_package_code, $vtp); } - $travel_fee = 0; - foreach ($arrange_info as $kaci => $vaci) { - $travel_fee = bcadd($travel_fee, $vaci->ACI_Amount); + $reduce_package_code = array_filter($reduce_package_code); + */ + $grd_apart_info = $this->tour_apart($grd_info); + $big_order_index = 0; + $expect_order_cnt = count($grd_apart_info['com'])+intval(!empty($grd_apart_info['big_pvt']))+intval(!empty($grd_apart_info['pvt'])); + // echo json_encode($grd_apart_info);exit; + foreach ($grd_apart_info as $group_key => $grd_a) { + $big_order_index = $this->tour_apart_order_exec($group_key, $vas, $request_info, $guestlist, $grd_a, $big_order_index); } - // TODO: 是否需要travelFee - $this->ci->tldOrderBuilder->setTravelFeesType(0, "Per Group") - ->setTravelFeesMoney(0, $travel_fee) - ->setTravelFeesNum(0, 1) - ->setTravelFeesUnit(0, 1) - ->setTravelFeesSumMoney(0, $travel_fee) - ->setTravelFeesRemark(0, ""); - // 补全空的日期,行程为空 - $date1 = new DateTime($first_date); - $date_end = new DateTime($end_date); - $date_diff = $date_end->diff($date1); - $d = ($date_diff->format("%a")); - $all_date = array(); - for ($j=0; $j < ($d+1); $j++) { - $all_date[] = date('Y-m-d', strtotime("+$j day", strtotime($first_date))); + if ($big_order_index === $expect_order_cnt) { + /** VendorArrangeState VAS_IsReceive */ + $this->ci->Group_model->set_plan_received($vas_sn); } - $real_date = array_map(function ($ele){return $ele->day_no_raw;}, $grd_info); - foreach ($all_date as $kd => $vd) { - if ( ! in_array($vd, $real_date)) { - $this->ci->tldOrderBuilder->setScheduleDetailsTitle($kd, "无") - ->setScheduleDetailsContent($kd, "无") - ->setScheduleDetailsAccommodation($kd, "") - // ->setScheduleDetailsTraffic($kd, ($vso->PAG_Vehicle>60001 ? 1 : 0)) - ->setScheduleDetailsBreakFirst($kd, 0 ) - ->setScheduleDetailsDinner($kd, 0) - ->setScheduleDetailsLunch($kd, 0) - ; - continue; + return "[Tulanduo>push_tour] Done. "; + } + + /*! + * @Author: LYT + * @Date: 2019-05-30 16:11:34 + * @Desc: 执行发送订单计划信息. 参数已拆分归类好的行程 + */ + public function tour_apart_order_exec($group_type, $vas, $request_info, $guestlist, $grd, $total_order_index) + { + if (empty($grd)) { + return $total_order_index; + } + $userId = $this->send_host["1"]["userId"]; + $userKey = $this->send_host["1"]["key"]; + switch ($group_type) { + case 'big_pvt': + $total_order_index ++; + $all_grd = array($grd); + $routeName = "中华游" . $grd['details'][0]->tocity . "常规线路"; + $routeType = $routeName; + $agcOrderNo = $vas->GRI_Name . "-" . $grd['details'][0]->citycode . "-" . $total_order_index; + $agcOrderNo .= "(" . $vas->operator . ")"; + $order_type = 1; + break; + case 'pvt': + $total_order_index ++; + $all_grd = array($grd); + $routeName = empty($grd['details'][0]->GRD_Landscape) ? $grd['details'][0]->PAG_Title : $grd['details'][0]->GRD_Landscape; + $routeName .= "(" . $grd['details'][0]->PAG_Code . ")"; + $routeType = $grd['details'][0]->tocity . "目的地线路"; + $agcOrderNo = $vas->GRI_Name . "-" . $grd['details'][0]->citycode . "-" . $total_order_index; + $agcOrderNo .= "(" . $vas->operator . ")"; + $order_type = 1; + break; + case 'com': + default: + $all_grd = ($grd); + $order_type = 2; + break; + } + foreach ($all_grd as $ko => $vo) { + if ($order_type === 2) { + $total_order_index ++; + $routeName = $vo['PAG_Name']; + if (empty($routeName)) { + $routeName = $vo['details'][0]->GRD_Landscape . "(" . $vo['details'][0]->PAG_Code . ")"; + } + $routeType = $vo['details'][0]->tocity . "目的地线路"; + $agcOrderNo = $vas->GRI_Name . "-" . $vo['details'][0]->citycode . "-" . $total_order_index; + $agcOrderNo .= "(" . $vas->operator . ")"; } - foreach ($grd_info as $kgrd => $vgrd) { - if ($vd==$vgrd->day_no_raw) { - $this->ci->tldOrderBuilder->setScheduleDetailsTitle($kd, $vgrd->GRD_OrderDate) - ->setScheduleDetailsContent($kd, $vgrd->GRD_Landscape . "\r\n" . $vgrd->GRD_Traffic) - ->setScheduleDetailsAccommodation($kd, $vgrd->GRD_Hotel) - ->setScheduleDetailsTraffic($kd, ($vgrd->GRD_Traffic)) + $first_date = $vo['details'][0]->day_no_raw; + $last_date = count($vo['details'])-1; + $end_date = $vo['details'][$last_date]->day_no_raw; + $this->ci->tldOrderBuilder->resetBizContent(); + $this->ci->tldOrderBuilder->setUserId($userId) + ->setKey($userKey) + ->setOrderType($order_type) + ->setRouteName($routeName) + ->setRouteType($routeType) + ->setAgcOrderNo($agcOrderNo) + ->setAdultNum(intval($vo['details'][0]->ACI_PersonNum)) + ->setChildNum(intval(bcadd($vo['details'][0]->ACI_ChildNum, $vo['details'][0]->ACI_BabyNum))) + ->setDestination($vo['details'][0]->tocity) + ->setTravelDate($first_date) + ->setLeavedDate($end_date) + // ->setOrderRemark($order_remark) // 订单备注 TODO: + ->setRoomStandard($request_info->GCI_HotelRequest) // 住房标准 + ->setRouteStandard($request_info->GCI_Request) // 行程服务标准 + ; + foreach ($guestlist as $key => $vg) { + $this->ci->tldOrderBuilder->setCustomersName($key, $vg->MemberName ) + ->setCustomersPeopleType($key, (calc_age_type($vg->BirthDay)==1 ? "成人" : "儿童")) + ->setCustomersDocumentType($key, "护照") // Passport No. + ->setCustomersDocumentNo($key, $vg->PassportNo) + ->setCustomersOtherInfo($key, $vg->Country . "; " . $vg->phone); + } + // 补全空的日期,行程为空 + $date1 = new DateTime($first_date); + $date_end = new DateTime($end_date); + $date_diff = $date_end->diff($date1); + $d = ($date_diff->format("%a")); + $all_date = array(); + for ($j=0; $j < ($d+1); $j++) { + $all_date[] = date('Y-m-d', strtotime("+$j day", strtotime($first_date))); + } + $real_date = array_map(function ($ele){return $ele->day_no_raw;}, $vo['details']); + foreach ($all_date as $kd => $vd) { + if ( ! in_array($vd, $real_date)) { + $this->ci->tldOrderBuilder->setScheduleDetailsTitle($kd, "无") + ->setScheduleDetailsContent($kd, "无") + ->setScheduleDetailsAccommodation($kd, "") + // ->setScheduleDetailsTraffic($kd, ($vso->PAG_Vehicle>60001 ? 1 : 0)) ->setScheduleDetailsBreakFirst($kd, 0 ) - ->setScheduleDetailsDinner($kd, (trim($vgrd->GRD_Meal_S)==="" ? 0 : 1 )) - ->setScheduleDetailsLunch($kd, (trim($vgrd->GRD_Meal_L)==="" ? 0 : 1 )) + ->setScheduleDetailsDinner($kd, 0) + ->setScheduleDetailsLunch($kd, 0) ; + continue; + } + foreach ($vo['details'] as $kgrd => $vgrd) { + if ($vd==$vgrd->day_no_raw) { + $this->ci->tldOrderBuilder->setScheduleDetailsTitle($kd, $vgrd->GRD_OrderDate) + ->setScheduleDetailsContent($kd, + $vgrd->GRD_LeaveCity . "-" . $vgrd->GRD_ServiceCity . "\r\n" . + $vgrd->GRD_Landscape . "\r\n" . $vgrd->GRD_Traffic) + ->setScheduleDetailsAccommodation($kd, $vgrd->GRD_Hotel) + ->setScheduleDetailsTraffic($kd, ($vgrd->GRD_Traffic)) + ->setScheduleDetailsBreakFirst($kd, 0 ) + ->setScheduleDetailsDinner($kd, (trim($vgrd->GRD_Meal_S)==="" ? 0 : 1 )) + ->setScheduleDetailsLunch($kd, (trim($vgrd->GRD_Meal_L)==="" ? 0 : 1 )) + ; + } } } - } - // 查询是否变更 TODO: deprecated at 2019-05 - $sync_orderstate = 10; - $vps_sn = 0; - $vendor_orderid = 0; - $this->ci->tldOrderBuilder->clearModifyLogInfo(); - // $resp = $this->excute_curl($this->neworder_url, $this->ci->tldOrderBuilder); - $resp = '{"status":1,"errMsg":"","responseData":{"orderId":' . rand(1000,9999) . '}}'; // test: + // 查询是否变更 TODO: deprecated at 2019-05 + $sync_orderstate = 10; + $this->ci->tldOrderBuilder->clearModifyLogInfo(); + $resp = $this->excute_curl($this->neworder_url, $this->ci->tldOrderBuilder); + // $resp = '{"status":1,"errMsg":"","responseData":{"orderId":' . rand(1000,9999) . '}}'; // test: echo $this->ci->tldOrderBuilder->getBizContent(); log_message('error',$resp); - $response = json_decode($resp); - if ($response->status == 1) { - /** VendorPlanSync */ - $sync_ret = array( - "VPS_VAS_SN" => $vas_sn - ,"VPS_GRI_SN" => $gri_sn - ,"VPS_VEI_SN" => $vei_sn - ,"VPS_startDate" => $first_date - ,"VPS_endDate" => $end_date - ,"VPS_sendHost" => $userId - ,"VPS_externalId" => $response->responseData->orderId - ,"VPS_externalorderType" => $order_type - ,"VPS_externalorderState" => $sync_orderstate - ,"VPS_sendTime" => date('Y-m-d H:i:s') - ); - if ($vps_sn === 0) { + $response = json_decode($resp); + if ($response->status == 1) { + /** VendorPlanSync */ + $sync_ret = array( + "VPS_VAS_SN" => $vas->VAS_SN + ,"VPS_GRI_SN" => $vas->GRI_SN + ,"VPS_VEI_SN" => $vas->VAS_VEI_SN + ,"VPS_startDate" => $first_date + ,"VPS_endDate" => $end_date + ,"VPS_sendHost" => $userId + ,"VPS_externalId" => $response->responseData->orderId + ,"VPS_externalorderType" => $order_type + ,"VPS_externalorderState" => $sync_orderstate + ,"VPS_sendTime" => date('Y-m-d H:i:s') + ); $sync_id = $this->ci->Group_model->insert_VendorPlanSync($sync_ret); + } + } + return $total_order_index; + } + + /*! + * @Author: LYT + * @Date: 2019-05-29 14:54:17 + * @Desc: 线路订单计划拆分. + * 合并同样的行程 + * 根据行程类型拆分 + * @return $ret = array( + * 'big_pvt'=>array(), // 不是合作项目的产品 + * 'pvt'=>array(), // 合作项目中的pvt + * 'com'=>array( // 合作项目中的拼团 + * 'details' => [],'PAG_Code'=> 'XXX' + * ) + * ) + */ + public function tour_apart($all_pag_info) + { + $apart = array(); $ret = array(); + foreach ($all_pag_info as $key => $pag) { + // CH下的产品编号修正 + if (intval($pag->PAG_DEI_SN)===1 && ! empty($pag->PAG_Code)) { + $pag->PAG_Code = $this->ci->trippest->ch_code_transfer( mb_strtoupper($pag->PAG_Code)); + $pag->PAG_ExtendType = $this->tulanduo_trippest_pag[$pag->PAG_Code]->PAG_ExtendType; + } + if (empty($pag->PAG_Code)) // 已在grd查询中增加是否目的地产品的判断 + { + $apart['big_pvt']['details'][] = $pag; + continue; + } + if (empty($pag->PAG_Title) ) { + $pag->PAG_Title = $this->tulanduo_trippest_pag[$pag->PAG_Code]->PAG_Title; + } + // 合作的产品 + if ($this->ci->trippest->if_tour_pvt(array($pag))===1) { + $apart["pvt"]['details'][] = $pag; } else { - $update = $this->ci->Group_model->update_VendorPlanSync($vps_sn, $sync_ret); + $apart["com"]['details'][$pag->PAG_Code][] = $pag; } - /** VendorArrangeState VAS_IsReceive */ - $this->ci->Group_model->set_plan_received($vas_sn); } - return "[Tulanduo>push_tour] Done. "; + $apart_com = array(); + if ( ! empty($apart['com'])) { + $all_com_pag = array_keys($apart['com']['details']); + $full_pag = array(); + $process_pag = array(); + foreach ($all_com_pag as $kp => $vp) { + $apart_com[$vp]['details'] = array(); + $this_include_pags = $this->ci->trippest->tour_code($vp); + if( isset($this->ci->trippest->special_route[$vp]) ) { + $full_pag = array_diff($this_include_pags, array_merge($full_pag,$process_pag)); + foreach ($this_include_pags as $vi) { + if ($vi !== $vp) { + unset($apart_com[$vi]); + } + // $apart_com[$vp]['details'][] = $apart['com']['details'][$vi]; + $apart_com[$vp]['details'] = array_merge($apart_com[$vp]['details'], $apart['com']['details'][$vi]); + $apart_com[$vp]['PAG_Code'] = $vp; + $apart_com[$vp]['PAG_Name'] = $this->ci->trippest->special_route[$vp]['name']; + } + } else { + $full_pag = array_merge($full_pag, $this_include_pags); + // $apart_com[$vp]['details'][] = $apart['com']['details'][$vp]; + $apart_com[$vp]['details'] = array_merge($apart_com[$vp]['details'], $apart['com']['details'][$vp]); + $apart_com[$vp]['PAG_Code'] = $vp; + $apart_com[$vp]['PAG_Name'] = ""; + } + $process_pag[] = $vp; + $this_include_pags = array(); + } + } + $ret['big_pvt'] = empty($apart['big_pvt']) ? null : $apart['big_pvt']; + $ret['pvt'] = empty($apart['pvt']['details']) ? null : ($apart['pvt']); + $ret['com'] = array_values($apart_com); + return $ret; } /*! * 发送目的地项目组预订计划到图兰朵地接系统 - * 地接社未接收的或有变更的 - * @date 2018-10-26 */ public function push_trippest($vas=null) { @@ -241,13 +365,6 @@ log_message('error',$resp); $gri_sn = $vas->GRI_SN; $vas_sn = $vas->VAS_SN; $vei_sn = $vas->VAS_VEI_SN; - $is_send_vary = $vas->VAS_SendVary; - $change_info = $vas->VAS_ChangeText; - if (trim($change_info) !== "") { - preg_match_all('/(.*)={6}(.*)(\d{4}\-\d{2}\-\d{2})/ismU', characet($change_info,'UTF-8'), $change_arr); - $change_info = $change_arr[0][0]; - } - $change_info = str_replace("\n", "
", $change_info); $vei_sn_str = implode(",", $this->vendor_ids); $orderinfo = $this->ci->BIZ_order->get_orderinfo_detail($gri_sn, $vei_sn_str); if(empty($orderinfo)) {return "[Tulanduo>push_trippest] Not found order detail. ";} diff --git a/webht/third_party/vendorPlanSync/libraries/trippest.php b/webht/third_party/vendorPlanSync/libraries/trippest.php index fe64e35b..876ba2cd 100644 --- a/webht/third_party/vendorPlanSync/libraries/trippest.php +++ b/webht/third_party/vendorPlanSync/libraries/trippest.php @@ -56,6 +56,32 @@ class Trippest return $ret; } + public function ch_code_transfer($code) + { + $trippest_code = $code; + switch ($code) { + case 'SHALC-6': + case 'SHALC-7': + case 'SHALC-8': + case 'SHALC-9': + $trippest_code = "SHSIC-45"; + break; + case 'SHSIC-31': + $trippest_code = "SHSIC-41"; + break; + case 'SHSIC-32': + $trippest_code = "SHSIC-42"; + break; + case 'SHSIC-33': + $trippest_code = "SHSIC-43"; + break; + + default: + break; + } + return $trippest_code; + } + /*! * @Author: LYT * @Date: 2019-05-28 15:17:11 @@ -71,6 +97,8 @@ class Trippest return 1; } else if (stripos($pag->PAG_Title,"PVT") !== false) { return 1; + } else if (stripos($pag->PAG_Title,"private") !== false) { + return 1; } else { return null; } @@ -80,6 +108,7 @@ class Trippest } + } /* End of file trippest.php */ diff --git a/webht/third_party/vendorPlanSync/models/BIZ_orders_model.php b/webht/third_party/vendorPlanSync/models/BIZ_orders_model.php index ab95d028..c4c2b044 100644 --- a/webht/third_party/vendorPlanSync/models/BIZ_orders_model.php +++ b/webht/third_party/vendorPlanSync/models/BIZ_orders_model.php @@ -85,14 +85,18 @@ class BIZ_Orders_model extends CI_Model { return $query->result(); } /** 根据线路代号 */ - public function get_packageDetails($pag_code_str) + public function get_packageDetails($pag_code_str='', $vei_sn_str='') { + $code_sql = $pag_code_str=='' ? " " : " and pag.PAG_Code IN ($pag_code_str) "; + $vei_sql = $vei_sn_str=='' ? " " : " and pag.PAG_DefaultVEI_SN IN ($vei_sn_str) "; $sql = "SELECT *, (select CII2_name from CItyInfo2 where CII2_CII_SN=PAG_CII_SN and CII2_LGC=2) as city_chinese, (select CII_PKCode from CItyInfo where CII_SN=PAG_CII_SN) as city_code FROM BIZ_PackageInfo2 pag2 INNER JOIN BIZ_PackageInfo pag ON pag.PAG_SN=pag2.PAG2_PAG_SN and pag2.PAG2_LGC=2 and pag.PAG_DEI_SN=30 - WHERE pag.PAG_Code IN ($pag_code_str) + WHERE 1=1 + $code_sql + $vei_sql order by pag.PAG_Code "; $query = $this->HT->query($sql); return $query->result(); diff --git a/webht/third_party/vendorPlanSync/models/Group_model.php b/webht/third_party/vendorPlanSync/models/Group_model.php index 94d91920..539430e2 100644 --- a/webht/third_party/vendorPlanSync/models/Group_model.php +++ b/webht/third_party/vendorPlanSync/models/Group_model.php @@ -20,17 +20,16 @@ class Group_model extends CI_Model { from VendorArrangeState vas inner join Eva_ObjectInfo eoi on EOI_GRI_SN=VAS_GRI_SN and EOI_Type=1 and EOI_ObjSN=VAS_VEI_SN inner join GRoupInfo gri on GRI_SN=VAS_GRI_SN - where 1=1 "; + where 1=1 AND VAS_VEI_SN in ($vendor_str) "; $sql .= $gri_sn!==0 ? $gri_sql : " AND VAS_IsCancel=0 AND VAS_Delete=0 AND vas.DeleteFlag=0 AND VAS_IsSendSucceed=1 AND VAS_IsReceive=0 AND EOI_GetDate between '$start_date' AND '$end_date' - AND VAS_VEI_SN in ($vendor_str) -- Trippest, not confirm, not change -- for Trippest deploy -- AND GRI_OrderType=227002 AND VAS_IsConfirm=0 AND VAS_SendVary=0 -- AND EXISTS ( - -- select 1 from OperatorInfo where OPI_SN=GRI_operator AND OPI_DEI_SN=30 + -- select 1 from OperatorInfo where OPI_SN=GRI_operator AND OPI_DEI_SN=30 -- ) "; $sql .= " order by EOI_GetDate asc,vas.VAS_SendTime asc, vas.VAS_IsConfirm asc"; @@ -83,15 +82,31 @@ log_message('error',$sql); sqlsrv_free_stmt($stmt); } sqlsrv_close($conn); + +log_message('error', "EXEC Tourmanager.dbo.SP_VendorPlan_GetPlanInfo $gri_sn, $vendor_id, 0 "); + $grd_info = $result_object; $all_day_no = array_map(function($ele){return $ele->GRD_DayNo;}, $grd_info); $day_no_str = implode(",", $all_day_no); - $all_aci = $this->get_arrange_info($gri_sn, 0, $day_no_str); + $all_aci = $this->get_arrange_info($gri_sn, $vendor_id, $day_no_str); foreach ($grd_info as $kgrd => &$vgrd) { + $vgrd->pag_code_arr = array(); + $vgrd->PAG_Title = $vgrd->GRD_Landscape; foreach ($all_aci as $kaci => $vaci) { if ($vgrd->GRD_DayNo == $vaci->ACI_DayNo) { - $vgrd->day_no_raw = strstr($vaci->ACI_OrderDate, " ", true); - break; + $vgrd->day_no_raw = strstr($vaci->ACI_OrderDate, " ", true); + $vgrd->tocity = $vaci->tocity; + $vgrd->citycode = $vaci->citycode; + $vgrd->ACI_PersonNum = intval($vaci->ACI_PersonNum); + $vgrd->ACI_ChildNum = intval($vaci->ACI_ChildNum); + $vgrd->ACI_BabyNum = intval($vaci->ACI_BabyNum); + $vgrd->PAG_DEI_SN = $vaci->PAG_DEI_SN; + if ( strval($vaci->ACI_ServiceType)==='D') { + $vgrd->PAG_Code = mb_strtoupper($vaci->PAG_Code); + $vgrd->PAG_ExtendType = mb_strtoupper($vaci->PAG_ExtendType); + $vgrd->pag_code_arr[] = mb_strtoupper($vaci->PAG_Code); + break; + } } } } @@ -123,8 +138,13 @@ log_message('error',$sql); where CII2_CII_SN=ACI_ToCity and CII2_LGC=2) as tocity, (select CII_PKCode from CItyInfo where CII_SN=ACI_ToCity ) as citycode, + PAG_Code,PAG_ExtendType,PAG_DEI_SN, * from ArrangeConfirmInfo aci + left join BIZ_PackageInfo on PAG_SN=ACI_ServiceSN + and ACI_ServiceType='D' and PAG_DefaultVEI_SN=ACI_VEI_SN + -- 增加是否目的地产品的判断 + and SUBSTRING(CONVERT(varchar(10), PAG_SourceType) ,1,3)='132' where 1=1 and aci.ACI_GRI_SN=? $vendor_sql @@ -237,8 +257,7 @@ log_message('error',$this->HT->compile_binds($sql, $param_arr)); public function set_plan_received($vas_sn=0) { $sql = "UPDATE VendorArrangeState set VAS_IsReceive=1,VAS_ReceiveTime=GETDATE() where VAS_SN=? "; -log_message('error',$sql); - return $sql; // testing +log_message('error',$sql . $vas_sn); return $this->HT->query($sql, array($vas_sn)); } @@ -268,7 +287,6 @@ log_message('error',$sql); { $ss = $this->HT->insert_string('VendorPlanSendout', $sync_arr); // testing log_message('error',$ss); - return $ss; $this->HT->insert('VendorPlanSendout', $sync_arr); return $this->HT->query("SELECT MAX(VPS_SN) VPS_SN from VendorPlanSendout") ->row()->VPS_SN; @@ -279,7 +297,6 @@ log_message('error',$ss); $where = " VPS_SN=" . $vps; $update_sql = $this->HT->update_string('VendorPlanSendout', $sync_arr, $where); log_message('error',$update_sql); - return $update_sql; // testing return $this->HT->query($update_sql); } diff --git a/webht/third_party/vendorPlanSync/models/TuLanDuo_addOrUpdateRouteOrderContentBuilder.php b/webht/third_party/vendorPlanSync/models/TuLanDuo_addOrUpdateRouteOrderContentBuilder.php index 93b9b595..eb7bb473 100644 --- a/webht/third_party/vendorPlanSync/models/TuLanDuo_addOrUpdateRouteOrderContentBuilder.php +++ b/webht/third_party/vendorPlanSync/models/TuLanDuo_addOrUpdateRouteOrderContentBuilder.php @@ -213,7 +213,10 @@ class TuLanDuo_addOrUpdateRouteOrderContentBuilder extends CI_Model return $this; } - /** 行程详细数组 */ + /** + * 行程详细数组 + * 已存在的日期则拼接内容 + */ public function setScheduleDetailsTitle($index, $title) { $this->orderData['scheduleDetails'][$index]['title'] = $title; @@ -221,32 +224,38 @@ class TuLanDuo_addOrUpdateRouteOrderContentBuilder extends CI_Model } public function setScheduleDetailsContent($index, $content) { - $this->orderData['scheduleDetails'][$index]['content'] = $content; + $this->orderData['scheduleDetails'][$index]['content'] = isset($this->orderData['scheduleDetails'][$index]['content']) ? + ($this->orderData['scheduleDetails'][$index]['content'] . "\r\n" . $content) : $content; return $this; } public function setScheduleDetailsTraffic($index, $traffic) { - $this->orderData['scheduleDetails'][$index]['traffic'] = $traffic; + $this->orderData['scheduleDetails'][$index]['traffic'] = isset($this->orderData['scheduleDetails'][$index]['traffic']) ? + ($this->orderData['scheduleDetails'][$index]['traffic'] . "\r\n" . $traffic) : $traffic; return $this; } public function setScheduleDetailsAccommodation($index, $accommodation) { - $this->orderData['scheduleDetails'][$index]['accommodation'] = $accommodation; + $this->orderData['scheduleDetails'][$index]['accommodation'] = isset($this->orderData['scheduleDetails'][$index]['accommodation']) ? + ($this->orderData['scheduleDetails'][$index]['accommodation'] . "\r\n" . $accommodation) : $accommodation; return $this; } public function setScheduleDetailsBreakFirst($index, $breakFirst) { - $this->orderData['scheduleDetails'][$index]['breakFirst'] = $breakFirst; + $this->orderData['scheduleDetails'][$index]['breakFirst'] = isset($this->orderData['scheduleDetails'][$index]['breakFirst']) ? + $breakFirst+$this->orderData['scheduleDetails'][$index]['breakFirst'] : $breakFirst; return $this; } public function setScheduleDetailsDinner($index, $dinner) { - $this->orderData['scheduleDetails'][$index]['dinner'] = $dinner; + $this->orderData['scheduleDetails'][$index]['dinner'] = isset($this->orderData['scheduleDetails'][$index]['dinner']) ? + $dinner+$this->orderData['scheduleDetails'][$index]['dinner'] : $dinner; return $this; } public function setScheduleDetailsLunch($index, $lunch) { - $this->orderData['scheduleDetails'][$index]['lunch'] = $lunch; + $this->orderData['scheduleDetails'][$index]['lunch'] = isset($this->orderData['scheduleDetails'][$index]['lunch']) ? + $lunch+$this->orderData['scheduleDetails'][$index]['lunch'] : $lunch; return $this; }