$OrdDateEnd) {
$OrdDateStart1=$OrdDateStart;
$OrdDateStart=$OrdDateEnd;
$OrdDateEnd=$OrdDateStart1;
}
If ($OrdDateStart==$OrdDateEnd) {
$OrdDateTypeName=$OrdDateStart;
$OrdDateTypeName1=$OrdDateTypeName;
}
Else {
$OrdDateTypeName=$OrdDateStart." 至 ".$OrdDateEnd;
$OrdDateTypeName1="时间段 ".$OrdDateTypeName;
}
$SqlOrdDateType=" between '".$OrdDateStart."' and '".$OrdDateEnd." 23:59:59'";
}
Else {
$sql = "select top 1 vID,vtext,vOrder2 from dictionary where vType>=1 and vtitle='OrdDateType' and vID=".$OrdDateType ;
$data = sqlsrv_query($conn,$sql);
if($data == true){
if (sqlsrv_rows_affected($data)!=0) {
while($rs = sqlsrv_fetch_array( $data, SQLSRV_FETCH_ASSOC) ) {
$OrdDateTypeName = $rs['vtext'];
$OrdDateTypeName1 = $OrdDateTypeName;
$SqlOrdDateType = $rs['vOrder2'];
}
} else {
$OrdDateType="4";
$OrdDateTypeName="本月";
$OrdDateTypeName1=$OrdDateTypeName;
$SqlOrdDateType="between DATEADD(mm,DATEDIFF(mm,0,getdate()),0) and dateadd(ms,-3,DATEADD(mm,DATEDIFF(m,0,getdate())+1,0))";
}
}
}
}
//分页信息
$page=empty($_REQUEST['page'])!=false ? 1 : $_REQUEST['page']; //当前页数
$page=empty($draw)!=false ? $page : $draw; //当前页数
$page_size = 20; //每页显示数量
$total_page=0; //总页数
$total_records=0; //总记录数
//区域列表
$ArrayOrdAreaType=array();
$sql = "select vID,vtext from dictionary where vtitle='ServiceOrdAreaType' order by vOrder" ;
$data = sqlsrv_query($conn,$sql);
if($data == true){
$i=0;
while($rs = sqlsrv_fetch_array( $data, SQLSRV_FETCH_ASSOC) ) {
$ArrayOrdAreaType[$rs['vID']]=$rs['vtext'];
$i++;
}
}
//类型列表
$ArrayOrdType=array();
$sql = "select vID,vtext from dictionary where vtitle='ServiceOrderType' order by vOrder" ;
$data = sqlsrv_query($conn,$sql);
if($data == true){
$i=0;
while($rs = sqlsrv_fetch_array( $data, SQLSRV_FETCH_ASSOC) ) {
$ArrayOrdType[$rs['vID']]=$rs['vtext'];
$i++;
}
}
//电话查询
function findThePhoneNumbers($oldStr = ""){
// 检测字符串是否为空
$oldStr=trim("q{$oldStr}q");
$numbers = array();
if(empty($oldStr)){
return $numbers;
}
$strArr = explode("-", $oldStr);
$newStr = $strArr[0];
for ($i=1; $i < count($strArr); $i++) {
if (preg_match("/\d{2}$/", $newStr) && preg_match("/^\d{11}/", $strArr[$i])){
$newStr .= $strArr[$i];
} elseif (preg_match("/\d{3,4}$/", $newStr) && preg_match("/^\d{7,8}/", $strArr[$i])) {
$newStr .= $strArr[$i];
} else {
$newStr .= "-".$strArr[$i];
}
}
// 手机号的获取
$reg='/\D(?:86)?(\d{11})\D/is';//匹配数字的正则表达式
preg_match_all($reg,$newStr,$result);
$nums = array();
$common = '/^1[3-9]\d{9}$/';
foreach ($result[1] as $key => $value) {
if(preg_match($common,$value)){
$nums[] = $value;
}
}
// 固话的获取
$reg='/\D(?:86)?(\d{11})\D/is';//匹配数字的正则表达式
preg_match_all($reg,$newStr,$result);
$common = '/^020\d{8}$/';
foreach ($result[1] as $key => $value) {
if(preg_match($common,$value)){
$nums[] = $value;
}
}
// 返回最终数组
return $nums;
}
//查询条件
$searchSql="";
$searchTXT=empty($searchTXT)!=false ? "" : $searchTXT;
if ($searchTXT!=""){
If (substr($searchTXT,0,4)=="out|") {
$searchSql=" and (ServiceOrdPtOutHosp in (select vid from dictionary where vType=1 and vtitle='HospName' and vtext='".substr($searchTXT,4)."')) ";
} elseif (substr($searchTXT,0,3)=="in|") {
$searchSql=" and (ServiceOrdPtInHosp in (select vid from dictionary where vType=1 and vtitle='HospName' and vtext='".substr($searchTXT,3)."')) ";
} elseif (substr($searchTXT,0,5)=="hosp|") {
$searchSql=" and (ServiceOrdPtOutHosp in (select vid from dictionary where vType=1 and vtitle='HospName' and vtext='".substr($searchTXT,5)."') or ServiceOrdPtInHosp in (select vid from dictionary where vType=1 and vtitle='HospName' and vtext='".substr($searchTXT,5)."'))";
} elseif (substr($searchTXT,0,6)=="staff|") {
$searchSql=" and (DispatchOrdID in (select DispatchOrdIDDt from DispatchOrd_Entourage where EntourageState=3 and EntourageOAid=".substr($searchTXT,6).")) ";
} elseif (substr($searchTXT,0,7)=="staff1|") {
$searchSql=" and (DispatchOrdID in (select DispatchOrdIDDt from DispatchOrd_Entourage where EntourageState=3 and EntourageOAid=".substr($searchTXT,7).")) and DispatchOrdState in (8,9) ";
} elseif (substr($searchTXT,0,8)=="OrdType|") {
$searchSql=" and (ServiceOrdIDDt in (select ServiceOrdID from ServiceOrder where ServiceOrdState=3 and ServiceOrdType=".substr($searchTXT,8).")) and DispatchOrdState not in (10) ";
} else {
$searchSql=" and (ServiceOrdCoName like '%".$searchTXT."%' or ServiceOrdCoPhone like '%".$searchTXT."%' or ServiceOrdPtName like '%".$searchTXT."%' or ServiceOrdTraStreet like '%".$searchTXT."%' or ServiceOrdTraEnd like '%".$searchTXT."%' or ServiceOrdPtOutHosp in (select vid from dictionary where vType=1 and vtitle='HospName' and vtext like '%".$searchTXT."%')) ";
}
}else{
$searchSql="";
}
if ($OrdClassType=="-1"){
$searchSql=$searchSql." and ServiceOrdType in (select vID from dictionary where vType=1 and vtitle='ServiceOrderType') ";
}elseif ($OrdClassType=="-2"){
$searchSql=$searchSql." and ServiceOrdType in (select vID from dictionary where vType=2 and vtitle='ServiceOrderType') ";
}elseif (!empty($OrdClassType)){
$searchSql=$searchSql." and ServiceOrdType in (".$OrdClassType.") ";
}
if (!empty($OrderLevel)){
$searchSql=$searchSql." and OrderLevel=".($OrderLevel-1)." ";
}
$orderby=empty($orderby)!=false ? "" : $orderby;
If (strrpos($orderby," desc")>1){
$orderbydesc="";
$descTXT="↓";
}else{
$orderbydesc=" desc";
$descTXT="↑";
}
If ($orderby=="") {
$orderby="OutHosp|InHosp desc,OutHospPrice|InHospPrice desc";
$descTXT="↓";
}
//echo $OrdClassListSql;
//查询开始
$SqlOrdDateType=empty($SqlOrdDateType)!=false ? "" : $SqlOrdDateType;
$OrdType=empty($OrdType)!=false ? "1" : $OrdType;
//按调度单统计
//SQL查询条件
$sqlWhere=" from DispatchOrd,ServiceOrder LEFT JOIN HospData as hospA on hospA.HospID=ServiceOrdPtOutHospID LEFT JOIN HospData as HospB on HospB.HospID=ServiceOrdPtInHospID where ServiceOrdIDDt=ServiceOrdID and DispatchOrdState not in (10) and DispatchOrd_NS_Time ".$SqlOrdDateType.$searchSql." and ServiceOrdType in (select vID from dictionary where vType=2 and vtitle='ServiceOrderType')";
//组成计算总页数SQL
$total_sql = "select DispatchOrdID $sqlWhere";
//组成显示结果SQL
$Result_sql = "select ServiceOrdID,DispatchOrdID,ServiceOrdType
,DispatchOrdNo=DispatchOrdClass+convert(nvarchar(10),year(DispatchOrd_NS_Time))+right('0'+convert(nvarchar(10),month(DispatchOrd_NS_Time)),2)+right('0'+convert(nvarchar(10),day(DispatchOrd_NS_Time)),2)+'-'+right('00'+convert(nvarchar(10),DispatchOrdNo),3)
,DispatchOrdState,DispatchOrd_NS_Date=CONVERT(nvarchar(20),DispatchOrd_NS_Time, 120),ServiceOrdCoName,ServiceOrdCoPhone
,OrdTraPrice=(case when isnull(ServiceOrdTraTxnPrice,0)=0 or DispatchOrdPerfomance=0 then ServiceOrdTraTxnPrice else round(ServiceOrdTraTxnPrice/((select SUM(DispatchOrdPerfomance) from DispatchOrd where ServiceOrdIDDt=ServiceOrdID and DispatchOrdState not in (10))/DispatchOrdPerfomance),2,1) END)+StretcherMoney
,ServiceOrdPtOutHospID,ServiceOrdPtInHospID,ServiceOrdPtServicesID,ServiceOrdPtInServicesID
,DispatchOrdCarID,DispatchOrd_NS_Time,ServiceOrdPtServices,ServiceOrdTraStreet,ServiceOrdTraVia,ServiceOrdTraEnd,DispatchOrd_OAName,HospName=hospA.HospName,HospNameIn=hospB.HospName,ServiceOrdTaskRemarks
,row_number() over (order by DispatchOrd_NS_Time desc) n $sqlWhere";
//附加结果SQL
$Additional_sql = ",DispatchOrdStateTXT=(select vtext from dictionary where vtitle='DispatchOrdState' and vID=DispatchOrdState),EntourageName=DispatchOrd_OAName";
//$sql=",isRespirator=(select count(id) from ServiceOrd_Condition where ConditionID=4 and ServiceOrdCoID=ServiceOrdID)"
//echo $total_sql;exit;
if ($is_CSV!=1){
//计算总页数
$data = sqlsrv_query( $conn, $total_sql, array(), array( "Scrollable" => 'keyset' ));
$total_records=sqlsrv_num_rows($data); //总行数
$total_page=ceil($total_records/$page_size); //总页数
//避免page小于0或大于总页数
$page=$page<=0?1:$page;
$page=$page>$total_page?$total_page:$page;
//计算开始和结束行数
$pageStart = ($page-1)*$page_size;
$pageEnd = $pageStart+$page_size;
$sqlPage = " where sqlData.n > $pageStart and sqlData.n <= $pageEnd " ;
}else{
$sqlPage="" ;
}
$sql = "select * $Additional_sql from ($Result_sql) sqlData ".$sqlPage." order by sqlData.n" ;
//echo $sql;exit;
$data = sqlsrv_query($conn,$sql);
if($data == true){
$FormArray=array();
//表头
$FormArray[0]=array("序号","调度单号","类型","状态","转运日期","车牌号","司机姓名","呼车单位","转出机构","转入机构","联系人","联系电话","转运人数","费用","备注");
$FormArrayX=count($FormArray[0]);
if (sqlsrv_rows_affected($data)==0) {
$SystemMessageType=2;
$SystemMessageTXT="数据库中相关无数据!";
$y=0;
} else {
$i=1;
while($rs = sqlsrv_fetch_array($data) ) {
//读取数据
//读取数据--End
//写入数组
$FormArray[$i][0]=$i+(($page-1)*$page_size);
$FormArray[$i][1]="".$rs['DispatchOrdNo']."";
$FormArray[$i][2]=$ArrayOrdType[$rs['ServiceOrdType']];
$FormArray[$i][3]=$rs['DispatchOrdStateTXT'];
$FormArray[$i][4]=date("Y/m/d",strtotime($rs['DispatchOrd_NS_Date']));
$FormArray[$i][5]=CarDataA($rs['DispatchOrdCarID'],'','CarLicense');
$FormArray[$i][6]=$rs['EntourageName'];
$TraStreet=$rs["ServiceOrdTraStreet"];
$HospName=$rs['ServiceOrdTraVia'];
if ($TraStreet != $HospName) {
$FormArray[$i][7]=$TraStreet;
}else{
$FormArray[$i][7]='';
}
$FormArray[$i][8]=$HospName;
$HospNameIn=$rs['ServiceOrdTraEnd'];
$FormArray[$i][9]=$HospNameIn;
$OrdCoName="--";
if (strpos($rs['ServiceOrdTaskRemarks'],"社区人员:")>0) {
$OrdCoName=mb_strcut($rs['ServiceOrdTaskRemarks'],strpos($rs['ServiceOrdTaskRemarks'],"社区人员:")+16,28,"utf-8");
preg_match_all("/[\x{4e00}-\x{9fff}]+/u","$OrdCoName",$arr);
$OrdCoName=join('',$arr[0]);
}elseif (strpos($rs['ServiceOrdTaskRemarks'],"对接人:")>0) {
$OrdCoName=mb_strcut($rs['ServiceOrdTaskRemarks'],strpos($rs['ServiceOrdTaskRemarks'],"对接人:")+14,12,"utf-8");
preg_match_all("/[\x{4e00}-\x{9fff}]+/u","$OrdCoName",$arr);
$OrdCoName=join('',$arr[0]);
}elseif (strpos($rs['ServiceOrdTaskRemarks'],"联系人:")>0) {
$OrdCoName=mb_strcut($rs['ServiceOrdTaskRemarks'],strpos($rs['ServiceOrdTaskRemarks'],"联系人:")+14,12,"utf-8");
preg_match_all("/[\x{4e00}-\x{9fff}]+/u","$OrdCoName",$arr);
$OrdCoName=join('',$arr[0]);
}elseif (strpos($rs['ServiceOrdTaskRemarks'],"联系人员:")>0) {
$OrdCoName=mb_strcut($rs['ServiceOrdTaskRemarks'],strpos($rs['ServiceOrdTaskRemarks'],"联系人员:")+16,12,"utf-8");
preg_match_all("/[\x{4e00}-\x{9fff}]+/u","$OrdCoName",$arr);
$OrdCoName=join('',$arr[0]);
}elseif (strpos($rs['ServiceOrdTaskRemarks'],"社区")>0) {
$OrdCoName=mb_strcut($rs['ServiceOrdTaskRemarks'],strpos($rs['ServiceOrdTaskRemarks'],"社区")+8,28,"utf-8");
preg_match_all("/[\x{4e00}-\x{9fff}]+/u","$OrdCoName",$arr);
$OrdCoName=join('',$arr[0]);
}
if ($OrdCoName!="--") {$OrdCoName=str_ireplace("电话","",$OrdCoName);}
$FormArray[$i][10]=$OrdCoName;
$OrdCoPhoneArray=findThePhoneNumbers($rs['ServiceOrdTaskRemarks']);
$OrdCoPhone="--";
if (count($OrdCoPhoneArray)>0) {$OrdCoPhone=$OrdCoPhoneArray[count($OrdCoPhoneArray)-1];}
$FormArray[$i][11]=$OrdCoPhone;
$PeopleNumber="--";
if (strpos($rs['ServiceOrdTaskRemarks'],"【高危密接】")>0) {
$PeopleNumber=mb_strcut($rs['ServiceOrdTaskRemarks'],strpos($rs['ServiceOrdTaskRemarks'],"【高危密接】"),25,"utf-8");
$PeopleNumber=preg_replace('/\D/s', '', $PeopleNumber);
}elseif (strpos($rs['ServiceOrdTaskRemarks'],"人数")>0) {
$PeopleNumber=mb_strcut($rs['ServiceOrdTaskRemarks'],strpos($rs['ServiceOrdTaskRemarks'],"人数"),10,"utf-8");
$PeopleNumber=preg_replace('/\D/s', '', $PeopleNumber);
}elseif (strpos($rs['ServiceOrdTaskRemarks'],"转运人员")>0) {
$PeopleNumber=mb_strcut($rs['ServiceOrdTaskRemarks'],strpos($rs['ServiceOrdTaskRemarks'],"转运人员"),20,"utf-8");
$PeopleNumber=preg_replace('/\D/s', '', $PeopleNumber);
}elseif (strpos($rs['ServiceOrdTaskRemarks'],"密接人员")>0) {
$PeopleNumber=mb_strcut($rs['ServiceOrdTaskRemarks'],strpos($rs['ServiceOrdTaskRemarks'],"密接人员"),20,"utf-8");
$PeopleNumber=preg_replace('/\D/s', '', $PeopleNumber);
}elseif (strpos($rs['ServiceOrdTaskRemarks'],"几人")>0) {
$PeopleNumber=mb_strcut($rs['ServiceOrdTaskRemarks'],strpos($rs['ServiceOrdTaskRemarks'],"几人"),10,"utf-8");
$PeopleNumber=preg_replace('/\D/s', '', $PeopleNumber);
}
$FormArray[$i][12]=$PeopleNumber;
$FormArray[$i][13]=round($rs['OrdTraPrice'],2);
$FormArray[$i][14]=$rs['ServiceOrdTaskRemarks'];
$i++;
//写入数组--End
}
}
}
//组成Json数据
if ($is_CSV==2) {
$JsonArray=array();
for($y=1;$y intval($page),
"recordsTotal" => intval($total_records),
"recordsFiltered" => intval($total_records),
"data" => $JsonArray
),JSON_UNESCAPED_UNICODE);
//echo "{\"data\":".json_encode($JsonArray)."}";
}
//echo print_r($FormArray);
//exit;
?>