1){ $orderbydesc=""; $descTXT="↓"; }else{ $orderbydesc=" desc"; $descTXT="↑"; } If ($orderby=="") { $orderby="EntourageOA_DepartmentName,EntourageOAid"; $descTXT="↓"; } if ($OrdDateType=="0" and $OrdDateStart=="" and $OrdDateEnd=="") {$OrdDateType=4;} //查询开始 $SqlOrdDateType=empty($SqlOrdDateType)!=false ? "" : $SqlOrdDateType; $OAOccupationSQL=empty($OAOccupation)!=false ? "" : " and EntourageID in (".$OAOccupation.") "; $sql="select EntourageID,EntourageOAid,EntourageOA_Name=case when EntourageOA_Name is not null then EntourageOA_Name else convert(nvarchar(10),EntourageOAid) end,EntourageP1,EntourageDKPScale,ServiceOrdTraTxnPrice=ServiceOrdTraTxnPrice+isnull((select sum(AddMoney) from PaidMoney_Add where ToDispatchOrdID=DispatchOrdID and AddMoneyType in (1)),0) ,AddMoney1=(case WHEN StretcherMoney>0 THEN isnull((select sum(AddMoney) from PaidMoney_Add where ToDispatchOrdID=DispatchOrdID and AddMoneyType in (1)),0) else 0 end) ,AddMoney2=(case WHEN StretcherMoney>0 THEN isnull((select sum(AddMoney) from PaidMoney_Add where ToDispatchOrdID=DispatchOrdID and AddMoneyType in (2)),0) else 0 end) ,AddMoney3=(case WHEN StretcherMoney>0 THEN isnull((select sum(AddMoney) from PaidMoney_Add where ToDispatchOrdID=DispatchOrdID and AddMoneyType in (3)),0) else 0 end) ,DispatchOrdID,ServiceOrdID,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) ,DispatchOrdActualDate=convert(char,DispatchOrdActualDate,120),DispatchOrdReturnDate=(case WHEN DispatchOrdReturnDate is not null THEN convert(char,DispatchOrdReturnDate,120) ELSE (select top 1 convert(char,DispatchOrdStartDate,120) from DispatchOrd_Running where DispatchOrdIDDt=DispatchOrdID and DispatchOrdState in (8,9) order by DispatchOrdStartDate desc) END),DispatchOrdTraStreetMileage,DispatchOrdTraEndMileage,DispatchOrdMileage ,OrdDistance=case when PATINDEX('%[^0-9|.|-|+]%',Replace(Replace(ServiceOrdTraDistance,'公里',''),'km',''))=0 then convert(money,Replace(Replace(ServiceOrdTraDistance,'公里',''),'km','')) else 0 end ,ServiceOrdAreaType,ServiceOrdType,DispatchOrd_NS_Time=convert(char,DispatchOrd_NS_Time,120),TimeLength_Program,TimeLength_ICU,TimeLength_Wait,EntourageOT_is,EntourageOT2_is,EntourageBetimesHH,EntourageState_Time,Entourage_Time=convert(char,Entourage_Time,120) ,EntourageOA_DepartmentName,EntourageOutHosp,EntourageInHosp,DispatchOrdPerfomance ,ConversionDistance,EntourageOT_Money,Stretcher_Money,EntourageMileageFactor,EntourageMileageEdit ,ServiceOrdPtOutHosp,ServiceOrdTraVia,ServiceOrdPtInHosp,ServiceOrdTraEnd from DispatchOrd_Entourage,DispatchOrd,ServiceOrder where ServiceOrdID=ServiceOrdIDDt and DispatchOrdID=DispatchOrdIDDt and DispatchOrdState in (8,9) and EntourageState<>4".$OAOccupationSQL." and DispatchOrd_NS_Time ".$SqlOrdDateType.$searchSql." order by EntourageOAid,DispatchOrd_NS_Time"; //echo $sql;exit; $data = sqlsrv_query($conn,$sql); if($data == true){ $FormArray=array(); //表头 $FormArray[0]=array("员工姓名","所属部门","日期","单号","总成交价","等待费","担架费","居家ICU费","区域","类型","转出医院","转出地址","转入医院","转入地址","班次","出车时间","收车时间","加班时长","出车里程","收车里程","实际公里","预估距离","活动保障","居家ICU","等待","居家ICU绩效","担架费计提","订单提成"); $FormArrayX=count($FormArray[0]); if (sqlsrv_rows_affected($data)==0) { $SystemMessageType=2; $SystemMessageTXT="数据库中相关无数据!"; $y=0; } else { $i=1; while($rs = sqlsrv_fetch_array( $data, SQLSRV_FETCH_ASSOC) ) { //读取数据 $EntourageOAid = $rs['EntourageOAid']; $EntourageID = $rs['EntourageID']; $EntourageOA_Name = $rs['EntourageOA_Name']; $DispatchOrdID = $rs['DispatchOrdID']; $ServiceOrdID = $rs['ServiceOrdID']; $DispatchOrdNo = $rs['DispatchOrdNo']; $ServiceOrdAreaType = $rs['ServiceOrdAreaType']; $ServiceOrdType = $rs['ServiceOrdType']; $DispatchOrdActualDate= $rs['DispatchOrdActualDate']; //出车时间 $DispatchOrdReturnDate= $rs['DispatchOrdReturnDate']; //收车时间 $DispatchOrdTraStreetMileage = $rs['DispatchOrdTraStreetMileage']; //出车 $DispatchOrdTraEndMileage = $rs['DispatchOrdTraEndMileage']; //收车 $DispatchOrdMileage = $rs['DispatchOrdMileage']; //实际公里 $OrdDistance = $rs['OrdDistance']; //预估距离 $TimeLength_Program = $rs['TimeLength_Program']; $TimeLength_ICU = $rs['TimeLength_ICU']; $TimeLength_Wait = $rs['TimeLength_Wait']; $DispatchOrd_NS_Time = $rs['DispatchOrd_NS_Time']; $DispatchOrdPerfomance = $rs['DispatchOrdPerfomance']; $EntourageOT_is = $rs['EntourageOT_is']; $EntourageOT2_is = $rs['EntourageOT2_is']; //$EntourageLong_is = $rs['EntourageLong_is']; $EntourageBetimesHH = $rs['EntourageBetimesHH']; //$ServiceOrdPtOutHosp = $rs['ServiceOrdPtOutHosp']; $ServiceOrdTraVia = str_replace(array("\n","\r"),"",$rs['ServiceOrdTraVia']); //$ServiceOrdPtInHosp = $rs['ServiceOrdPtInHosp']; $ServiceOrdTraEnd = str_replace(array("\n","\r"),"",$rs['ServiceOrdTraEnd']); //$Post_MoneyP = $rs['Post_MoneyP']; //岗位工资 P $DepartmentName = $rs['EntourageOA_DepartmentName'];//所属部门 $EntourageOutHosp = $rs['EntourageOutHosp']; //转出医院 $EntourageInHosp = $rs['EntourageInHosp']; //转出医院 $ServiceOrdTraTxnPrice = $rs['ServiceOrdTraTxnPrice']; $AddMoney1 = $rs['AddMoney1']; $AddMoney2 = $rs['AddMoney2']; $AddMoney3 = $rs['AddMoney3']; $EntourageDKPScale = $rs['EntourageDKPScale']; $Stretcher_Money = $rs['Stretcher_Money']; //担架费 $EntourageOT_Money = $rs['EntourageOT_Money']; //加班费/项目费 $EntourageMileageEdit = $rs['EntourageMileageEdit']; //修改提成金额 $Entourage_Time = $rs['Entourage_Time']; //加班出车绩效1.1倍,超12点出车1.2倍 $EntourageDKPOTScale = 1; If ($EntourageOT2_is==1 And date("H:i",strtotime($Entourage_Time))<"07:00") { $EntourageDKPOTScale=1.2; $EntourageDKPScale = $EntourageDKPScale*$EntourageDKPOTScale; } ElseIf ($EntourageOT2_is==1 And date("H:i",strtotime($Entourage_Time))<"08:30" and date("Y-m-d",strtotime($Entourage_Time))<"2024-03-01" ) { $EntourageDKPOTScale=1.2; $EntourageDKPScale = $EntourageDKPScale*$EntourageDKPOTScale; } ElseIf ($EntourageOT2_is==1) { $EntourageDKPOTScale=1.1; $EntourageDKPScale = $EntourageDKPScale*$EntourageDKPOTScale; } //加班时长 if (isDepartment("070122")==1) { $OTTime=0; if (!empty($DispatchOrdActualDate) and !empty($DispatchOrdReturnDate) and $DispatchOrdActualDate!=$DispatchOrdReturnDate){ //出发加班时长 if (date("Y-m-d H:i",strtotime($DispatchOrdActualDate))date("Y-m-d 08:30",strtotime($DispatchOrdActualDate))){ $OTTime=$OTTime+(strtotime(date("Y-m-d 08:30:00",strtotime($DispatchOrdActualDate))) - strtotime($DispatchOrdActualDate)); }elseif (date("Y-m-d H:i",strtotime($DispatchOrdActualDate))date("Y-m-d 17:30",strtotime($DispatchOrdActualDate)) and date("Y-m-d H:i",strtotime($DispatchOrdReturnDate))<=date("Y-m-d 23:59",strtotime($DispatchOrdActualDate))){ $OTTime=$OTTime+(strtotime($DispatchOrdReturnDate)-strtotime($DispatchOrdActualDate)); }elseif (date("Y-m-d H:i",strtotime($DispatchOrdActualDate))>date("Y-m-d 17:30",strtotime($DispatchOrdActualDate)) and date("Y-m-d H:i",strtotime($DispatchOrdReturnDate))>date("Y-m-d 23:59",strtotime($DispatchOrdActualDate))){ $OTTime=$OTTime+(strtotime(date("Y-m-d 23:59",strtotime($DispatchOrdActualDate)))-strtotime($DispatchOrdActualDate)); } //中间加班时长 if (date("Y-m-d",strtotime($DispatchOrdReturnDate))>date("Y-m-d",strtotime($DispatchOrdActualDate)) and date("Y-m-d H:i",strtotime($DispatchOrdActualDate))date("Y-m-d",strtotime($DispatchOrdActualDate)) and date("Y-m-d H:i",strtotime($DispatchOrdReturnDate))>date("Y-m-d 08:30",strtotime($DispatchOrdReturnDate))){ $OTTime=$OTTime+30600*((strtotime(date("Y-m-d",strtotime($DispatchOrdReturnDate)))-strtotime(date("Y-m-d",strtotime($DispatchOrdActualDate))))/86400); } //收车加班时长 if (date("Y-m-d H:i",strtotime($DispatchOrdReturnDate))>date("Y-m-d 17:30",strtotime($DispatchOrdReturnDate)) and date("Y-m-d H:i",strtotime($DispatchOrdActualDate))0) { $EntourageDKP_Money = $ServiceOrdTraTxnPrice*($EntourageDKPScale/100)+$Stretcher_Money+$EntourageOT_Money; }else{ $EntourageDKP_Money = $Stretcher_Money+$EntourageOT_Money; } //$EntourageDKP_Money = $EntourageMileageFactor+$EntourageOT_Money+$Stretcher_Money; //提成金额 If ($DispatchOrdMileage==0 And $DispatchOrdTraStreetMileage!=0 And $DispatchOrdTraEndMileage!=0) {$DispatchOrdMileage=$DispatchOrdTraEndMileage-$DispatchOrdTraStreetMileage;} //居家ICU绩效 $TimeLength_ICU_Money=0; if ($TimeLength_ICU>0) { If ($EntourageID==3 Or $EntourageID==5) { $TimeLength_ICU_Money=$TimeLength_ICU*50*$EntourageDKPOTScale; } ElseIf ($EntourageID==4 Or $EntourageID==6) { $TimeLength_ICU_Money=$TimeLength_ICU*40*$EntourageDKPOTScale; } ElseIf ($EntourageID==1 Or $EntourageID==2) { $TimeLength_ICU_Money=$TimeLength_ICU*30*$EntourageDKPOTScale; } } //读取数据--End //计算个人系数 //$DepartmentName=OAUser($EntourageOAid,"DepartmentName"); //if ($DepartmentName=="车管中心" and $EntourageMileageFactor==1.2 and $ConversionDistance>250) {$EntourageMileageFactor=1.5;} //$ConversionDistance = $ConversionDistance*$EntourageMileageFactor; //写入数组 $FormArray[$i][0]=$EntourageOA_Name; $FormArray[$i][1]=$DepartmentName; $FormArray[$i][2]=date("Y-m-d",strtotime($DispatchOrd_NS_Time)); $FormArray[$i][3]="".$DispatchOrdNo.""; $FormArray[$i][4]=floatval(number_format(($ServiceOrdTraTxnPrice+$AddMoney2+$AddMoney3),2,".","")); $FormArray[$i][5]=floatval(number_format($AddMoney1,2,".","")); $FormArray[$i][6]=floatval(number_format($AddMoney2,2,".","")); $FormArray[$i][7]=floatval(number_format($AddMoney3,2,".","")); $FormArray[$i][8]=$ArrayOrdAreaType[$ServiceOrdAreaType]; $FormArray[$i][9]=$ArrayOrdType[$ServiceOrdType]; $FormArray[$i][10]=$EntourageOutHosp; $FormArray[$i][11]=$ServiceOrdTraVia; $FormArray[$i][12]=$EntourageInHosp; $FormArray[$i][13]=$ServiceOrdTraEnd; $FormArray[$i][14]=date("H:i",strtotime($DispatchOrd_NS_Time))>"08:30" && date("H:i",strtotime($DispatchOrd_NS_Time))<"17:30" ? "白班" : "夜班"; $FormArray[$i][15]=$DispatchOrdActualDate; $FormArray[$i][16]=$DispatchOrdReturnDate; //$FormArray[$i][14]=floatval(number_format($OTTime/60/60,1,".","")); //加长时长-小时 if (isDepartment("070122")==1) { $FormArray[$i][17]=time2second($OTTime); //加长时长-X天X小时X分钟 }else{ $FormArray[$i][17]="--"; } $FormArray[$i][18]=floatval(number_format($DispatchOrdTraStreetMileage,2,".","")); $FormArray[$i][19]=floatval(number_format($DispatchOrdTraEndMileage,2,".","")); $FormArray[$i][20]=floatval(number_format($DispatchOrdMileage,2,".","")); $FormArray[$i][21]=floatval(number_format($OrdDistance,2,".","")); $FormArray[$i][22]=floatval(number_format($TimeLength_Program,2,".","")); $FormArray[$i][23]=floatval(number_format($TimeLength_ICU,2,".","")); $FormArray[$i][24]=floatval(number_format($TimeLength_Wait,2,".","")); $FormArray[$i][25]=floatval(number_format($TimeLength_ICU_Money,2,".","")); $FormArray[$i][26]=floatval(number_format($Stretcher_Money,2,".","")); $FormArray[$i][27]=floatval(number_format($EntourageDKP_Money,2,".","")); $i++; } } } if ($is_CSV==2) { echo json_encode($FormArray); } //echo print_r($FormArray); //exit; function time2second($seconds){ $seconds = (int)$seconds; if ($seconds<=59){ $format_time='0'; } elseif( $seconds<86400 ){//如果不到一天 $time = explode(' ',gmstrftime('%H %M', $seconds)); $format_time = ($time[0]).'小时'.$time[1].'分钟'; }else{ $time = explode(' ', gmstrftime('%j %H %M', $seconds));//Array ( [0] => 04 [1] => 14 [2] => 14 [3] => 35 ) $format_time = ($time[0]-1).'天'.$time[1].'小时'.$time[2].'分钟'; } return $format_time; } ?>