<?php
|
$UnitNameID=empty($_REQUEST['UnitNameID'])!=false ? "" : addslashes($_REQUEST['UnitNameID']);
|
|
//分页信息
|
$page=empty($_REQUEST['page'])!=false ? 1 : $_REQUEST['page'];
|
$QuantityInt = 20; //每页显示数量
|
$acc1=$page; //当前页数
|
$acc2=0; //总页数
|
$acc3=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++;
|
}
|
}
|
|
//查看各分公司报表权限
|
if (isDepartment("070109")==1) {
|
$OrdClassListSql="";
|
//$UnitNameID="1";
|
If ($UnitNameID!="" and $UnitNameID!="0") {
|
$sql="select vOrder2 from dictionary where vtitle='UnitName' and vID=".$UnitNameID;
|
$data = sqlsrv_query($conn,$sql);
|
if($data == true){
|
if (sqlsrv_rows_affected($data)!=0) {
|
while($rs = sqlsrv_fetch_array($data) ) {
|
$UnitTypeID = $rs[0];
|
$sql="select vID,vtext,vOrder2 from dictionary where vID in (".$UnitTypeID.") and vtitle='OrderClass' order by vOrder";
|
$data1 = sqlsrv_query($conn,$sql);
|
if($data1 == true){
|
while($rs1 = sqlsrv_fetch_array($data1) ) {
|
$OrderClassID = $rs1['vOrder2'];
|
$OrdClassListSql .= ",".$OrderClassID;
|
}
|
}
|
$OrdClassListSql=substr($OrdClassListSql,1);
|
$OrdClassListSql=str_replace(",","','",$OrdClassListSql);
|
}
|
}
|
}
|
}else{
|
$sql="select vID,vtext,vOrder2 from dictionary where vType in (1,2) and vtitle='OrderClass' order by vOrder";
|
$data1 = sqlsrv_query($conn,$sql);
|
if($data1 == true){
|
while($rs1 = sqlsrv_fetch_array($data1) ) {
|
$OrderClassID = $rs1['vOrder2'];
|
$OrdClassListSql .= ",".$OrderClassID;
|
}
|
}
|
$OrdClassListSql=substr($OrdClassListSql,1);
|
$OrdClassListSql=str_replace(",","','",$OrdClassListSql);
|
}
|
}
|
//只显示广州
|
$OrdClassListSql="BF','AB','SA";
|
|
//查询条件
|
$searchSql="";
|
$searchTXT=empty($searchTXT)!=false ? "" : $searchTXT;
|
if ($searchTXT!=""){
|
$searchSql=" and (EntourageOA_Name like '%$searchTXT%') ";
|
}else{
|
$searchSql=" and ServiceOrdClass in ('".$OrdClassListSql."') ";
|
}
|
|
$orderby=empty($orderby)!=false ? "" : $orderby;
|
If (strrpos($orderby," desc")>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)) and date("Y-m-d H:i",strtotime($DispatchOrdReturnDate))>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 08:30",strtotime($DispatchOrdActualDate)) and date("Y-m-d H:i",strtotime($DispatchOrdReturnDate))<=date("Y-m-d 08:30",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($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 17:30",strtotime($DispatchOrdActualDate))){
|
$OTTime=$OTTime+23400*((strtotime(date("Y-m-d",strtotime($DispatchOrdReturnDate)))-strtotime(date("Y-m-d",strtotime($DispatchOrdActualDate))))/86400);
|
}
|
if (date("Y-m-d",strtotime($DispatchOrdReturnDate))>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))<date("Y-m-d 17:30",strtotime($DispatchOrdReturnDate))){
|
$OTTime=$OTTime+(strtotime($DispatchOrdReturnDate)-strtotime(date("Y-m-d 17:30:00",strtotime($DispatchOrdReturnDate))));
|
}elseif (date("Y-m-d H:i",strtotime($DispatchOrdReturnDate))<date("Y-m-d 08:30",strtotime($DispatchOrdReturnDate)) and date("Y-m-d",strtotime($DispatchOrdActualDate))<date("Y-m-d",strtotime($DispatchOrdReturnDate))){
|
$OTTime=$OTTime+(strtotime($DispatchOrdReturnDate)-strtotime(date("Y-m-d 00:00:00",strtotime($DispatchOrdReturnDate))));
|
}
|
}
|
}
|
if (!empty($EntourageMileageEdit)){
|
$EntourageDKP_Money = $EntourageMileageEdit+$Stretcher_Money;
|
}elseif ($ServiceOrdType==14 or $ServiceOrdType==15 or $ServiceOrdType==16 or $ServiceOrdType==17 or $ServiceOrdType==18 or $ServiceOrdType==19 or $ServiceOrdType==21 or $ServiceOrdType==23 or $ServiceOrdType==24 or $ServiceOrdType==25){
|
$EntourageDKP_Money = $DispatchOrdPerfomance;
|
}elseif ($EntourageDKPScale>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]="<a href=DispatchOrder.gds?DispatchOrdID=".$DispatchOrdID."&OrdDateType=4&OrdClassList=&h_menu1_1=1 target=_blank>".$DispatchOrdNo."</a>";
|
$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;
|
}
|
?>
|