You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
information-system/webht/third_party/vendorPlanSync/models/Group_model.php

306 lines
12 KiB
PHP

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Group_model extends CI_Model {
function __construct() {
parent::__construct();
$this->HT = $this->load->database('HT', TRUE);
}
public function get_plan_not_received($top=1, $gri_sn=0, $vendor_str=null, $start_date=null, $end_date=null)
{
$top_sql = $top>0 ? " TOP $top " : "";
$gri_sql = $gri_sn===0 ? "" : " and GRI_SN=$gri_sn ";
$sql = "SELECT $top_sql VAS_IsConfirm, VAS_SendVary,
GRI_OrderType, GRI_SN, GRI_No, GRI_operator,GRI_Name,
(select OPI_DEI_SN from OperatorInfo where OPI_SN=GRI_operator) as department,
(select OPI2_Name from OperatorInfo2 where OPI2_OPI_SN=GRI_operator and OPI2_LGC=2) as operator,
vas.*
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 ";
$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
)
";
$sql .= " order by EOI_GetDate asc,vas.VAS_SendTime asc, vas.VAS_IsConfirm asc";
return $this->HT->query($sql)->result();
}
public function get_plan_eva($vas)
{
$sql = "SELECT
isnull(eoi_v.EOI_SendEvaluation,0) as need_tourguide,
isnull(eoi_g.EOI_SN,0) as has_tourguide,
vas.*,eoi_v.*
from VendorArrangeState vas
inner join Eva_ObjectInfo eoi_v on EOI_GRI_SN=VAS_GRI_SN
and EOI_Type=1 and EOI_ObjSN=VAS_VEI_SN
left join Eva_ObjectInfo eoi_g on eoi_g.EOI_GRI_SN=VAS_GRI_SN
and eoi_g.EOI_Type=3 and eoi_g.EOI_VEI_SN=eoi_v.EOI_ObjSN
where VAS_SN=?
order by has_tourguide desc ";
return $this->HT->query($sql, array($vas))->result();
}
public function get_vendor_plan_info($gri_sn, $vendor_id)
{
// SET NOCOUNT ON 才能这样调用, 否则需要遍历结果集
// $sql = " Tourmanager.dbo.SP_VendorPlan_GetPlanInfo ?, ?, 0 ";
// $grd_info = $this->HT->query($sql, array($gri_sn, $vendor_id))->result();
include('c:/database_conn.php');
$connection = array(
'UID' => $db['HT']['username'],
'PWD' => $db['HT']['password'],
'Database' => 'tourmanager',
'ConnectionPooling' => 1,
'CharacterSet' => 'utf-8',
'ReturnDatesAsStrings' => 1
);
$conn = sqlsrv_connect($db['HT']['hostname'], $connection);
$stmt = sqlsrv_query($conn, "EXEC Tourmanager.dbo.SP_VendorPlan_GetPlanInfo $gri_sn, $vendor_id, 0 ");
$result_object = array();
if (false !== $stmt) { // 无权限返回false,会导致下列sqlsrv_has_rows,sqlsrv_next_result死循环
//存储过程中每一个select都会产生一个结果集取某个结果集就需要从第一个移动到需要的那个结果集
//如果结果集为空就移到下一个
while (sqlsrv_has_rows($stmt) !== TRUE) {
sqlsrv_next_result($stmt);
}
while ($row = sqlsrv_fetch_object($stmt)) {
$result_object[] = $row;
}
sqlsrv_free_stmt($stmt);
}
sqlsrv_close($conn);
$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);
foreach ($grd_info as $kgrd => &$vgrd) {
foreach ($all_aci as $kaci => $vaci) {
if ($vgrd->GRD_DayNo == $vaci->ACI_DayNo) {
$vgrd->day_no_raw = strstr($vaci->ACI_OrderDate, " ", true);
break;
}
}
}
return $grd_info;
}
public function get_plan_request($gri_sn)
{
$sql = "SELECT * from GroupChangeInfo
where GCI_GRI_SN=?
order by LastEditTime desc
,case when GCI_Order IS null then 999 else GCI_Order end desc";
return $this->HT->query($sql, array($gri_sn))->row();
}
public function get_arrange_info($gri_sn, $vendor_id=0, $day_no="")
{
$param_arr = array($gri_sn);
$vendor_sql = "";
if ($vendor_id !== 0) {
$vendor_sql = " AND aci.ACI_VEI_SN=? ";
$param_arr[] = $vendor_id;
}
$day_no_sql = ($day_no !== "") ? " AND aci.ACI_DayNo IN ($day_no) " : "";
$sql = "SELECT
(select CII2_Name from CItyInfo2
where CII2_CII_SN=ACI_FromCity and CII2_LGC=2) as fromcity,
(select CII2_Name from CItyInfo2
where CII2_CII_SN=ACI_ToCity and CII2_LGC=2) as tocity,
(select CII_PKCode from CItyInfo
where CII_SN=ACI_ToCity ) as citycode,
*
from ArrangeConfirmInfo aci
where 1=1
and aci.ACI_GRI_SN=?
$vendor_sql
$day_no_sql
order by ACI_DayNo,ACI_SNInOneDay ";
return $this->HT->query($sql, $param_arr)->result();
}
public function get_sync_info($vas, $tour_code="")
{
$sql = "SELECT *
from VendorPlanSendout
where VPS_VAS_SN=? ";
$param_arr = array($vas);
if ($tour_code !== "") {
$sql .= " AND VPS_tourCode=? ";
$param_arr[] = $tour_code;
}
return $this->HT->query($sql, $param_arr)->row();
}
public function get_sync_info_by_vendororder($vendor_order_id)
{
$sql = "SELECT
opi.OPI_DEI_SN as department,
*
from VendorPlanSendout vps
inner join VendorArrangeState vas on vas.VAS_SN=vps.VPS_VAS_SN
inner join GRoupInfo gri on GRI_SN=vas.VAS_GRI_SN
left join OperatorInfo opi on opi.OPI_SN=GRI_operator
where VPS_externalId=? ";
$param_arr = array($vendor_order_id);
return $this->HT->query($sql, $param_arr)->row();
}
/*!
* 获取地接社接受计划的人员信息
* @param $vendor_id 地接社ID
*/
public function get_vendorContact($vendor_id)
{
$sql = "SELECT
lmi.LMI2_Name,lmi.LMI_SN,lmi.LMI_AutoFax
,lmi.LMI_Telephone,lmi.LMI_Mobile,lmi.LMI_ListMail
,vei2.VEI2_CompanyBN
from V_Link_Man_Info lmi
left join VEndorInfo2 vei2 on VEI2_VEI_SN=lmi.LMI_VEI_SN
and VEI2_LGC=2
where lmi.LMI_VEI_SN=?
and lmi.LMI_DefaultContactor='Yes'
and lmi.LGC_LGC=2";
$query = $this->HT->query($sql, array($vendor_id));
return $query->row();
}
public function search_tourguide($vendor, $cn_name, $en_name=null, $mobile=null)
{
$param_arr = array();
$en_sql = " ";
if (strval($en_name)!=="") {
$en_sql = " and tgi_en.TGI2_Name =? ";
$param_arr[] = $en_name;
}
$mobile_sql = " ";
if (strval($mobile)!=="") {
$mobile_sql = " or TGI_Mobile=? ";
$param_arr[] = $mobile;
}
$sql = "SELECT TGI_VEI_SN,TGI_Mobile,
tgi_cn.TGI2_Name cn_name,
tgi_en.TGI2_Name en_name,
TGI_SN
from TouristGuideInfo2 tgi_en
join TouristGuideInfo on TGI_SN=tgi_en.TGI2_TGI_SN and tgi_en.TGI2_LGC=1
join TouristGuideInfo2 tgi_cn on TGI_SN=tgi_cn.TGI2_TGI_SN and tgi_cn.TGI2_LGC=2
where (
( 1=1
and tgi_cn.TGI2_Name like '%" . $this->HT->escape_like_str($cn_name) . "%'
$en_sql
)
$mobile_sql
)
and TGI_VEI_SN in ($vendor)";
return $this->HT->query($sql, $param_arr)->row();
}
public function set_plan_tourguide($eva_g_sn=0, $column=array())
{
if ($eva_g_sn===0) {
// 第一次设置导游
$this->HT->insert("Eva_ObjectInfo", $column);
$eva_g_sn = $this->HT->query("SELECT MAX(EOI_SN) EOI_SN from Eva_ObjectInfo
where EOI_GRI_SN=?
and EOI_VEI_SN=?
and EOI_Type=3
", array($column['EOI_GRI_SN'], $column['EOI_VEI_SN']))
->row()->EOI_SN;
} else {
// 变更导游设置
$update_where = " EOI_SN=".$eva_g_sn;
$update_sql = $this->HT->update_string("Eva_ObjectInfo", $column, $update_where);
$this->HT->query($update_sql);
}
return $eva_g_sn;
}
public function set_plan_received($vas_sn=0)
{
$sql = "UPDATE VendorArrangeState set VAS_IsReceive=1,VAS_ReceiveTime=GETDATE() where VAS_SN=? ";
return $this->HT->query($sql, array($vas_sn));
}
/*!
* 地接计划状态变更
* @param [type] $vas_sn [description]
* @param string $confirminfo [description]
*/
public function set_plan_confirm($vas_sn, $lmi_sn, $confirminfo="")
{
$sql = "UPDATE VendorArrangeState
SET VAS_IsConfirm=1
,VAS_ConfirmInfo=?
,VAS_ConfirmTime=GETDATE()
,VAS_ConfirmSN=?
WHERE VAS_SN=?";
$query = $this->HT->query($sql, array($confirminfo, $lmi_sn, $vas_sn));
// affected_rows() doesn't work with the 'sqlsrv' driver in CI2
// The solution: Upgrade to the latest CodeIgniter 3.0.x version
$ssql = "SELECT 1 as 'exist' from VendorArrangeState where VAS_IsConfirm=1 and VAS_SN=? ";
$squery = $this->HT->query($ssql, array($vas_sn));
$ret = $squery->result();
return !empty($ret);
}
public function insert_VendorPlanSync($sync_arr=array())
{
$ss = $this->HT->insert_string('VendorPlanSendout', $sync_arr); // testing
$this->HT->insert('VendorPlanSendout', $sync_arr);
return $this->HT->query("SELECT MAX(VPS_SN) VPS_SN from VendorPlanSendout")
->row()->VPS_SN;
}
public function update_VendorPlanSync($vps, $sync_arr=array())
{
$where = " VPS_SN=" . $vps;
$update_sql = $this->HT->update_string('VendorPlanSendout', $sync_arr, $where);
return $this->HT->query($update_sql);
}
/*
* 发送邮件
*/
public function save_automail($M_SenderName, $M_SenderEmail, $fromName, $fromEmail, $toName, $toEmail, $subject, $body, $frominfo = 'vendorConfirm msg', $M_RelatedInfo = '', $M_State = 0, $M_AddTime = '', $M_Web = 'vendorConfirm msg') {
$sql = "INSERT INTO
Email_AutomaticSend (
M_SenderName,
M_SenderEmail,
M_ReplyToName,
M_ReplyToEmail,
M_ToName,
M_ToEmail,
M_Title,
M_Body,
M_Web,
M_FromName,
M_ServiceSN,
M_State,
M_AddTime
) VALUES (N?, N?, N?, N?, N?, N?, N?, N?, ?, N?, ?,?,getdate()) ";
$query = $this->HT->query($sql, array($M_SenderName, $M_SenderEmail, $fromName, $fromEmail, $toName, $toEmail, $subject, $body, $M_Web, $frominfo, $M_RelatedInfo, $M_State));
return $query;
}
}
/* End of file Group_model.php */
/* Location: ./third_party/vendorPlanSync/models/Group_model.php */