提交 3fad069b authored 作者: 窦斌's avatar 窦斌

edit

上级 072aeb8a
......@@ -360,6 +360,9 @@ class CommonController extends BaseController
}else{
$pt[$k]['usermodeltype'] = 2;
}
if($request->get('session_token')['admin_groupnew'] == 7){
$pt[$k]['pt_name'] = $v['pt_name']."(".$v['company_id'].")";
}
}
return $this->success('操作成功', $pt);
}else{
......
......@@ -35,6 +35,22 @@ class DataStatisticsController extends BaseController
*/
public function index ( Request $request ){
$session = $request->get("session_token");
$data = DataStatisticsService::getSerStatistics($session);
$input = $request->all();
$checkKey = CommonService::checkKey(['method','time_start','search_type'],$input);
if($checkKey['code']!=1){
return $this->error('参数'.$checkKey['data'].'未填写,或值为空', ErrorInc::INVALID_PARAM, []);
}
if(!in_array($input['search_type'],['week','month'])){
return $this->error('查询类型错误',ErrorInc::INVALID_PARAM,$input);
}
$api=['getSerStatistics','getSerStatisticsDetail'];
if(!in_array($input['method'],$api)){
return $this->error('接口不参数异常',ErrorInc::INVALID_PARAM,$input);
}else {
$api = (string)$input['method'];
$data = DataStatisticsService::$api($session,$input);
return $this->success('操作成功
',$data);
}
}
}
......@@ -583,7 +583,7 @@ class AotuorderController extends BaseController
/***************半径推送******************************/
$get['company_id'] = $orderinfo['company_id'];//支付方式
if($ser_data['admin_groupnew']==3){
if($ser_data['admin_groupnew']==3 && !in_array($orderinfo['company_id'],[14])){
$get['ol_distype'] = 4;//系统派单类型
}else{
$get['ol_distype'] = 2;//系统派单类型
......
......@@ -12,26 +12,189 @@
namespace App\Services;
use App\Models\Company;
use App\Models\Admin;
use App\Models\OrderList;
use App\Models\OrderRejected;
use BlueCity\Core\Service\Service;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Log;
use Maatwebsite\Excel\Facades\Excel;
use phpDocumentor\Reflection\Types\Integer;
use BlueCity\Core\Inc\ErrorInc;
use DB;
class DataStatisticsService extends Service{
/**|---------------------------------------------------------------------------------
* @name 获取公司信息
* @name 获取公司数据统计信息
* @retrun /multitype:array
* @param string ID 公司id
* @author dou 2022-12-05 005 下午 6:50:11
* |---------------------------------------------------------------------------------
*/
public static function getSerStatistics ( $session ){
$db = new Company();
$company = CommonService::getMysqlData($db, ['com_id'=>$id],$select,[],$type);
return $company;
public static function getSerStatistics ( $session , $input ){
$page_size = $input['page_size']??10;
$admindata = Admin::whereRaw("((company_id='".$session['company_id']."' and admin_groupnew=2) or admin_groupnew=3) and enable=1")
->select('id','company_name')
->paginate($page_size)
->get();
$admindata = CommonService::dataToArray($admindata);
$return = [];
if($admindata){
$time_start = $input['time_start'];
if($input['search_type'] == 'week') {
$time_end = date("Y-m-d", strtotime($input['time_start'] . " +7 day"));
}if($input['search_type'] == 'month') {
$time_end = date("Y-m-d", strtotime($input['time_start'] . " +1 month"));
}
foreach($admindata as $k => $v){
$order_listnum = OrderList::whereRaw("ser_id='".$v['id']."' and create_time BETWEEN '".$time_start."' and '".$time_end."' and is_delete=1 and get_time != '' and company_id = '".$session['company_id']."'")->count();//接单数量
$order_rejectednum = OrderRejected::leftjoin('orders', 'or_order_num', '=', 'order_num')->whereRaw("or_ser_id='".$v['id']."' and or_creact_time BETWEEN '".$time_start."' and '".$time_end."' and or_show=1 and company_id = '".$session['company_id']."'")->count();//拒单数量
$order_listAllnum = OrderList::whereRaw("ser_id='".$v['id']."' and create_time BETWEEN '2024-08-19' and '".$time_end."' and is_delete=1 and get_time != '' and company_id = '".$session['company_id']."'")->count();//总接单数量
$order_rejectedAllnum = OrderRejected::leftjoin('orders', 'or_order_num', '=', 'order_num')->whereRaw("or_ser_id='".$v['id']."' and or_creact_time BETWEEN '2024-08-19' and '".$time_end."' and or_show=1 and company_id = '".$session['company_id']."'")->count();//总拒单数量
$sql = "SELECT CAST((SUM(UNIX_TIMESTAMP(feeds_time))-SUM(UNIX_TIMESTAMP(get_time)))/COUNT(id) as SIGNED) as timenum FROM gone_order_list WHERE ser_id='".$v['id']."' and get_time != '' and get_time!='0000-00-00 00:00:00' and feeds_time != '' and feeds_time!='0000-00-00 00:00:00' and create_time BETWEEN '".$time_start."' and '".$time_end."' and is_delete=1 and company_id = '".$session['company_id']."'";
$data = DB::select($sql);
$sql1 = "SELECT CAST((SUM(UNIX_TIMESTAMP(get_time))-SUM(UNIX_TIMESTAMP(create_time)))/COUNT(id) as SIGNED) as pdnum FROM gone_order_list WHERE ser_id='".$v['id']."' and get_time != '' and get_time!='0000-00-00 00:00:00' and create_time BETWEEN '".$time_start."' and '".$time_end."' and time(create_time)>='08:30:00' and time(create_time)<='18:00:00' and is_delete=1 and company_id = '".$session['company_id']."'";
$data1 = DB::select($sql1);
$sqls = "SELECT CAST((SUM(UNIX_TIMESTAMP(feeds_time))-SUM(UNIX_TIMESTAMP(get_time)))/COUNT(id) as SIGNED) as timenum FROM gone_order_list WHERE ser_id='".$v['id']."' and create_time BETWEEN '2024-08-19' and '".$time_end."' and get_time != '' and get_time!='0000-00-00 00:00:00' and feeds_time != '' and feeds_time!='0000-00-00 00:00:00' and is_delete=1 and company_id = '".$session['company_id']."'";// and is_delete=1
$datas = DB::select($sqls);
$sqls1 = "SELECT CAST((SUM(UNIX_TIMESTAMP(get_time))-SUM(UNIX_TIMESTAMP(create_time)))/COUNT(id) as SIGNED) as pdnum FROM gone_order_list WHERE ser_id='".$v['id']."' and create_time BETWEEN '2024-08-19' and '".$time_end."' and get_time != '' and get_time!='0000-00-00 00:00:00' and time(create_time)>='08:30:00' and time(create_time)<='18:00:00' and is_delete=1 and company_id = '".$session['company_id']."'";// and is_delete=1
$datas1 = DB::select($sqls1);
$return[$k]['id'] = $v['id'];//门店id
$return[$k]['company_name'] = $v['company_name'];//门店名称
$return[$k]['all_num'] = $order_listnum+$order_rejectednum;//总数量
$return[$k]['order_listnum'] = $order_listnum;//接单数量
$return[$k]['order_rejectednum'] = $order_rejectednum;//拒单数量
if(($order_listnum+$order_rejectednum) == 0){
$gl = "0.00%";
}else {
$gl = sprintf("%.2f", $order_rejectednum / ($order_listnum + $order_rejectednum) * 100);
}
$return[$k]['rejectRate'] = $gl;//拒单率
if($data){
$pdAgeing = self::Compute_Time($data1[0]['pdnum']);
$sgAgeing = self::Compute_Time($data[0]['timenum']);
}else{
$pdAgeing = "0时0分0秒";
$sgAgeing = "0时0分0秒";
}
$return[$k]['pdAgeing'] = $pdAgeing;//接单时效
$return[$k]['sgAgeing'] = $sgAgeing;//施工时效
$return[$k]['all_nums'] = $order_listAllnum+$order_rejectedAllnum;//总数量
$return[$k]['order_listnums'] = $order_listAllnum;//接单数量
$return[$k]['order_rejectednums'] = $order_rejectedAllnum;//拒单数量
if(($order_listAllnum+$order_rejectedAllnum) == 0){
$gls = "0.00%";
}else {
$gls = sprintf("%.2f", $order_rejectedAllnum / ($order_listAllnum + $order_rejectedAllnum) * 100);
}
$return[$k]['rejectRates'] = $gl;//拒单率
if($data){
$pdAgeings = self::Compute_Time($datas1[0]['pdnum']);
$sgAgeings = self::Compute_Time($datas[0]['timenum']);
}else{
$pdAgeings = "0时0分0秒";
$sgAgeings = "0时0分0秒";
}
$return[$k]['pdAgeings'] = $pdAgeings;//接单时效
$return[$k]['sgAgeings'] = $sgAgeings;//施工时效
}
}
return $return;
}
/**|---------------------------------------------------------------------------------
* @name 获取公司详细数据信息
* @retrun /multitype:array
* @author dou 2024/10/17 14:30
* |---------------------------------------------------------------------------------
*/
public static function getSerStatisticsDetail ( $session , $input ){
$admindata = Admin::whereRaw("((company_id='".$session['company_id']."' and admin_groupnew=2) or admin_groupnew=3) and enable=1")
->pluck('company_name','id');
$time_start = $input['time_start'];
if($input['search_type'] == 'week') {
$time_end = date("Y-m-d", strtotime($input['time_start'] . " +7 day"));
}if($input['search_type'] == 'month') {
$time_end = date("Y-m-d", strtotime($input['time_start'] . " +1 month"));
}
// $sql = "SELECT (UNIX_TIMESTAMP(feeds_time)-UNIX_TIMESTAMP(get_time)) AS sgtime,(UNIX_TIMESTAMP(get_time)-UNIX_TIMESTAMP(create_time)) AS jdtime,stauas,order_num,ser_id,create_time,get_time,feeds_time FROM gone_order_list WHERE create_time BETWEEN '".$time_start."' and '".$time_end."' and is_delete=1 and company_id = ".$session['company_id']." order by create_time";
// $datas = DB::select($sql);
$page_size = $input['page_size']??10;
$paginate = OrderList::where('is_delete',1)
->whereBetween('create_time',[$time_start,$time_end])
->where('company_id',$session['company_id'])
->selectRaw("(UNIX_TIMESTAMP(feeds_time)-UNIX_TIMESTAMP(get_time)) AS sgtime,(UNIX_TIMESTAMP(get_time)-UNIX_TIMESTAMP(create_time)) AS jdtime,stauas,order_num,ser_id,create_time,get_time,feeds_time")
->orderBy('create_time','ASC')
->paginate($page_size);
$datas = CommonService::dataToArray($paginate->items());
$statusName = ['10'=>'未接单','20'=>'未接单','30'=>'安装中','34'=>'待审核','40'=>'已完成','50'=>'已撤销','55'=>'已撤销(补邮费)'];
$return = [];
foreach($datas as $k => $v){
$return[$k]['ser_id'] = $admindata[$v['ser_id']];//公司名称
$return[$k]['order_num'] = $v['order_num'];//订单单号
$return[$k]['stauas'] = $statusName[$v['stauas']];//订单状态
$return[$k]['create_time'] = $v['create_time'];//派单时间
$return[$k]['get_time'] = $v['get_time'];//接单时间
$return[$k]['feeds_time'] = $v['feeds_time'];//反馈时间
if($v['get_time'] != '' && $v['get_time'] != '0000-00-00 00:00:00'){
$return[$k]['jdAgeing'] = self::Compute_Time($v['jdtime']);//接单时效
if($v['jdtime']<300){
$return[$k]['fiveStandard'] = '达标';//5分钟接单达标
}else{
$return[$k]['fiveStandard'] = '不达标';//5分钟接单达标
}
if($v['jdtime']<600){
$return[$k]['tenStandard'] = '达标';//10分钟接单达标
}else{
$return[$k]['tenStandard'] = '不达标';//10分钟接单达标
}
}else{
$return[$k]['jdAgeing'] = '';//接单时效
$return[$k]['fiveStandard'] = '不达标';//5分钟接单达标
$return[$k]['tenStandard'] = '不达标';//10分钟接单达标
}
if($v['feeds_time'] != '' && $v['feeds_time'] != '0000-00-00 00:00:00'){
$return[$k]['sgAgeing'] = self::Compute_Time($v['sgtime']);//施工时效
if($v['sgtime']<43200){
$return[$k]['Standard12Hours'] = '达标';//12小时履约达标
}else{
$return[$k]['Standard12Hours'] = '不达标';//12小时履约达标
}
if($v['sgtime']<86400){
$return[$k]['Standard24Hours'] = '达标';//24小时履约达标
}else{
$return[$k]['Standard24Hours'] = '不达标';//24小时履约达标
}
}else{
$return[$k]['sgAgeing'] = "";//施工时效
$return[$k]['Standard12Hours'] = '不达标';//12小时履约达标
$return[$k]['Standard24Hours'] = '不达标';//24小时履约达标
}
$time = explode(' ', $v['create_time'])[1];
if($time>='08:30:00' && $time<='18:00:00'){
$return[$k]['takeEffect'] = "是";//是否计入时效考核
}else{
$return[$k]['takeEffect'] = "否";//是否计入时效考核
}
}
return $return;
}
/**|---------------------------------------------------------------------------------
* @name 转化为时分秒
* @param string timediff 时间
* @retrun /multitype:string
* @author dou 2024/8/23 11:43
* |---------------------------------------------------------------------------------
*/
private static function Compute_Time( $timediff ){
$days = intval($timediff/86400);
//计算小时数
$remain = $timediff%86400;
$hours = intval($remain/3600);
//计算分钟数
$remain = $remain%3600;
$mins = intval($remain/60);
//计算秒数
$secs = $remain%60;
//$res = array("day" => $days,"hour" => $hours,"min" => $mins,"sec" => $secs);
$res = $days.'天'.$hours.'时'.$mins.'分'.$secs.'秒';
return $res;
}
}
......@@ -989,7 +989,10 @@ Route::group(
Route::post('uploadExcelImport','PtPhistoryController@uploadExcelImport');//回传平台账单数据
});
//2024-10-17
Route::group(['prefix'=>'DataStatistics','middleware'=>'requestpc'],function(){
Route::post('index','DataStatisticsController@index');//列表
});
});
Route::group(
['namespace' => 'Financial'],function(){
......@@ -1143,7 +1146,7 @@ Route::group(
});
#平台服务 >> 京东自营订单
Route::group(['prefix'=>'SynJdSelfDataNew'], function (){
Route::get('addOrderData', 'SynJdSelfDataNewController@addOrderData');//添加京东
Route::get('addOrderData', 'SynJdSelfDataNewController@addOrderData');//添加京东
Route::get('decOrder', 'SynJdSelfDataNewController@decOrder');//定时解密
Route::get('getSelfRefund', 'SynJdSelfDataNewController@getSelfRefund');//定时解密
});
......@@ -1157,7 +1160,7 @@ Route::group(
});
#系统任务 >> 电话通知
Route::group(['prefix'=>'getCallByTtsCost'], function (){
Route::get('getCallByTtsCost', 'SysCallByTtsCostController@getCallByTtsCost');//电通知扣费
Route::get('getCallByTtsCost', 'SysCallByTtsCostController@getCallByTtsCost');//电通知扣费
});
#天猫服务单
/* Route::group(['prefix'=>'tmOrder'], function (){
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论