diff --git a/webht/third_party/trippestOrderSync/controllers/TulanduoApi.php b/webht/third_party/trippestOrderSync/controllers/TulanduoApi.php index 7f8b086a..4986a4ee 100644 --- a/webht/third_party/trippestOrderSync/controllers/TulanduoApi.php +++ b/webht/third_party/trippestOrderSync/controllers/TulanduoApi.php @@ -143,9 +143,14 @@ class TulanduoApi extends CI_Controller // set GCI_SN $this->Orders_model->get_SN_by_vendorOrderId($vo['orderId'], $tmpv); // 查询订单是否已经录入过 if ($this->Orders_model->BIZ_COLI_SN === null) { - $real_groupCode = analysis_groupCode($vo['agcOrderNo']); + $real_groupCode_info = analysis_groupCode($vo['agcOrderNo']); + $real_groupCode = $real_groupCode_info["cut"]; // set BIZ_COLI_SN, GRI_SN at Orders_model - $this->Orders_model->get_SN_by_groupCode($real_groupCode, $vo['orderId']); + $group_info = $this->Orders_model->get_SN_by_groupCode($real_groupCode, $vo['orderId']); + if (empty($group_info)) { + $real_groupCode = $real_groupCode_info["all"]; + $group_info = $this->Orders_model->get_SN_by_groupCode($real_groupCode, $vo['orderId']); + } } if ($this->Orders_model->GRI_SN === null) { /** GRoupInfo */ @@ -262,7 +267,8 @@ class TulanduoApi extends CI_Controller $getInfo_byGroupCode = null; $getInfo_byGroupCodeArr = array(); if (isset($detail_jsonResp->orderDetail->agcOrderNo) && $detail_jsonResp->orderDetail->agcOrderNo != "") { - $real_groupCode = analysis_groupCode($detail_jsonResp->orderDetail->agcOrderNo); + $real_groupCode_info = analysis_groupCode($detail_jsonResp->orderDetail->agcOrderNo); + $real_groupCode = $real_groupCode_info['cut']; $getInfo_byGroupCodeArr = $this->Orders_model->get_order_by_groupcode($real_groupCode); } $duplicate = false; @@ -674,9 +680,14 @@ class TulanduoApi extends CI_Controller $this->Orders_model->BIZ_COLI_SN = null; $this->Orders_model->GRI_SN = null; if ( isset($vo['agcOrderNo']) && $vo['agcOrderNo'] != "") { - $real_groupCode = analysis_groupCode($vo['agcOrderNo']); + $real_groupCode_info = analysis_groupCode($vo['agcOrderNo']); + $real_groupCode = $real_groupCode_info["cut"]; // check BIZ_COLI_SN,GRI_SN - $this->Orders_model->get_SN_by_groupCode($real_groupCode, $vo['orderId']); + $group_info = $this->Orders_model->get_SN_by_groupCode($real_groupCode, $vo['orderId']); + if (empty($group_info)) { + $real_groupCode = $real_groupCode_info["all"]; + $group_info = $this->Orders_model->get_SN_by_groupCode($real_groupCode, $vo['orderId']); + } } /** INSERT */ /** GRoupInfo */ diff --git a/webht/third_party/trippestOrderSync/controllers/api.php b/webht/third_party/trippestOrderSync/controllers/api.php index 60b8d0b7..78f7311f 100644 --- a/webht/third_party/trippestOrderSync/controllers/api.php +++ b/webht/third_party/trippestOrderSync/controllers/api.php @@ -34,7 +34,8 @@ class Api extends CI_Controller { } $ret['status'] = 1; $ret['msg'] = ""; - $ret['group_number'] = analysis_groupCode($order_project[0]->COLI_GroupCode); + $group_number_info = analysis_groupCode($order_project[0]->COLI_GroupCode); + $ret['group_number'] = $group_number_info["cut"]; $all_combine_no = array_unique(array_map(function($ele) { return $ele->GCI_combineNo; @@ -166,8 +167,8 @@ class Api extends CI_Controller { /** 外联信息 */ $raw_opi_id = 0; if (intval($order_project[0]->COLI_OPI_ID) === 435) { - $real_code = analysis_groupCode($ret['group_number']); - $raw_opi_id = $this->Orders_model->get_gri_opi_id($real_code); + $real_code_info = analysis_groupCode($ret['group_number']); + $raw_opi_id = $this->Orders_model->get_gri_opi_id($real_code_info['cut']); } else { $raw_opi_id = $order_project[0]->COLI_OPI_ID; } diff --git a/webht/third_party/trippestOrderSync/helpers/array_helper.php b/webht/third_party/trippestOrderSync/helpers/array_helper.php index f66c6d2b..1d4fce17 100644 --- a/webht/third_party/trippestOrderSync/helpers/array_helper.php +++ b/webht/third_party/trippestOrderSync/helpers/array_helper.php @@ -129,6 +129,7 @@ function analysis_groupCode($groupCode) $real_groupCode .= "-"; $real_groupCode .= mb_strstr($tmp_groupCode[1], "(", true)!==false ? mb_strstr($tmp_groupCode[1], "(", true) : $tmp_groupCode[1]; } + $ret["cut"] = trim_str(trim($real_groupCode)); for ($i=2; $i < count($tmp_groupCode); $i++) { if (strlen($tmp_groupCode[$i]) > 4) { $real_groupCode .= "-"; @@ -136,7 +137,8 @@ function analysis_groupCode($groupCode) } } $real_groupCode = trim_str(trim($real_groupCode)); - return $real_groupCode; + $ret["all"] = $real_groupCode; + return $ret; } function trim_str($groupCode) { diff --git a/webht/third_party/trippestOrderSync/models/orderFinance_model.php b/webht/third_party/trippestOrderSync/models/orderFinance_model.php index 7f398f3e..6f6c0ffc 100644 --- a/webht/third_party/trippestOrderSync/models/orderFinance_model.php +++ b/webht/third_party/trippestOrderSync/models/orderFinance_model.php @@ -209,8 +209,14 @@ class OrderFinance_model extends CI_Model { /** 判断各种项目的报表是否已存在 */ public function report_tour_exists($coli_id=null, $tourCode=null, $tourBz=null) { - $sql = "SELECT top 1 ordernumber from report_tour where ordernumber=? and tourCode=? and tourBz=? "; - $num_rows = $this->HT->query($sql, array($coli_id, $tourCode, $tourBz))->num_rows(); + $sql = "SELECT top 10 ordernumber from report_tour where ordernumber=? and tourCode=? "; + if ($tourBz) { + $tourBz = mb_ereg_replace('[^a-zA-Z0-9\-\[\]]', '', strstr($tourBz, ",", true)); + $tourBz = str_replace("[", "[[]", $tourBz); + $sql .= " and (tourBz like '%" . $this->HT->escape_like_str($tourBz) . "%' + OR tourBz='') "; + } + $num_rows = $this->HT->query($sql, array($coli_id, $tourCode))->num_rows(); return $num_rows>0; } public function report_train_exists($coli_id=null, $TrainNo=null) @@ -236,14 +242,20 @@ class OrderFinance_model extends CI_Model { public function insert_report_tour_tulanduo($report_tour_arr=array()) { foreach ($report_tour_arr as $krt => $vrt) { + $tourBz_tmp = ""; if ($this->report_tour_exists($vrt['ordernumber'], $vrt['tourCode'], $vrt['tourBZ']) === TRUE) { $where = " ordernumber='" . $vrt['ordernumber'] . "' AND tourCode='" . $vrt['tourCode'] . "' "; - $where .= " AND tourBZ='" . $vrt['tourBZ'] . "' "; - $update_sql = $this->HT->update_string('tourmanager.dbo.Report_Tour', $vrt, $where); - $this->HT->query($update_sql); - } else { - $this->HT->insert('tourmanager.dbo.Report_Tour', $vrt); + $tourBz_tmp = mb_ereg_replace('[^a-zA-Z0-9\-\[\]]', '', strstr($vrt['tourBZ'], ",", true)); + $tourBz_tmp = str_replace("[", "[[]", $tourBz_tmp); + $where .= " AND (tourBZ like '%" . $this->HT->escape_like_str($tourBz_tmp) . "%' + OR tourBZ='') "; + $delete_sql = "DELETE FROM tourmanager.dbo.Report_Tour where " . $where; + // $update_sql = $this->HT->update_string('tourmanager.dbo.Report_Tour', $vrt, $where); + $this->HT->query($delete_sql); } + // else { + $this->HT->insert('tourmanager.dbo.Report_Tour', $vrt); + // } } return TRUE; }