提交 659537fd authored 作者: 窦斌's avatar 窦斌

edit

上级 5d3becc4
...@@ -49,7 +49,7 @@ class OrderListController extends Controller ...@@ -49,7 +49,7 @@ class OrderListController extends Controller
if ($error_message) { if ($error_message) {
return response()->json(['ErrorCode'=>ErrorInc::INVALID_PARAM, 'ErrorMessage'=>$error_message->first(), 'Data'=>[$error_message]]); return response()->json(['ErrorCode'=>ErrorInc::INVALID_PARAM, 'ErrorMessage'=>$error_message->first(), 'Data'=>[$error_message]]);
} }
$return_data = OrderListService::receiving($request->all()); $return_data = OrderListService::receiving($request->all(),$request->ip());
} }
return response()->json($return_data); return response()->json($return_data);
} }
...@@ -63,10 +63,21 @@ class OrderListController extends Controller ...@@ -63,10 +63,21 @@ class OrderListController extends Controller
return response()->json(['ErrorCode'=>ErrorInc::INVALID_PARAM, 'ErrorMessage'=>$error_message->first(), 'Data'=>[$error_message]]); return response()->json(['ErrorCode'=>ErrorInc::INVALID_PARAM, 'ErrorMessage'=>$error_message->first(), 'Data'=>[$error_message]]);
} }
$return_data = OrderListService::refuse($request->all()); $return_data = OrderListService::refuse($request->all(),$request->ip());
return response()->json($return_data); return response()->json($return_data);
} }
//预约安装
public function contact ( Request $request ){
// 验证数据
$error_message = $this->dataValidator->contactValidator($request->all());
if ($error_message) {
return response()->json(['ErrorCode'=>ErrorInc::INVALID_PARAM, 'ErrorMessage'=>$error_message->first(), 'Data'=>[$error_message]]);
}
$return_data = OrderListService::contact($request->all(),$request->ip());
return response()->json($return_data);
}
// 检验 // 检验
public function inspect(Request $request) public function inspect(Request $request)
{ {
......
...@@ -37,7 +37,7 @@ class WebLogin ...@@ -37,7 +37,7 @@ class WebLogin
// 拿到token获取登录表信息 // 拿到token获取登录表信息
$login_web = DB::table('login_web') $login_web = DB::table('login_web')
->where('api_token','=',$api_token) ->where('api_token','=',$api_token)
->select('lowe_last_login','api_token','company_id','install_id','admin_id','user_type') ->select('lowe_last_login','api_token','company_id','install_id','admin_id','user_type','install_name')
->first(); ->first();
if(empty($login_web)){ if(empty($login_web)){
return response()->json(["ErrorCode"=>300,'ErrorMessage'=>'api_token失效:检索码03,请重新登录!','data'=>'']); return response()->json(["ErrorCode"=>300,'ErrorMessage'=>'api_token失效:检索码03,请重新登录!','data'=>'']);
......
...@@ -111,19 +111,21 @@ class OrderListValidator extends FormRequest ...@@ -111,19 +111,21 @@ class OrderListValidator extends FormRequest
{ {
// 自定义错误消息 // 自定义错误消息
$messages = [ $messages = [
'install_id.required' => '参数错误',
'admin_id.required' => '参数错误',
'id.required' => '请输入服务工单id', 'id.required' => '请输入服务工单id',
'id.integer' => '参数错误', 'id.integer' => '参数错误',
'stauas.required' => '订单状态错误',
'stauas.integer' => '参数错误',
'refuseType.required' => '未选择拒单方式',
'refuseType.integer' => '参数错误',
'remarks.required' => '请输入拒单备注', 'remarks.required' => '请输入拒单备注',
'remarks.max' => '拒单备注长度超出限制', 'remarks.max' => '拒单备注长度超出限制',
]; ];
// 数据验证 // 数据验证
$validator = Validator::make($data, [ $validator = Validator::make($data, [
'install_id' => 'required|integer|min:1',
'admin_id' => 'required|integer|min:1',
'id' => 'required|integer|min:1', 'id' => 'required|integer|min:1',
'stauas' => 'required|integer|min:1',
'refuseType' => 'required|integer|min:1',
'remarks' => 'required|string|max:255', 'remarks' => 'required|string|max:255',
], $messages); ], $messages);
...@@ -132,6 +134,27 @@ class OrderListValidator extends FormRequest ...@@ -132,6 +134,27 @@ class OrderListValidator extends FormRequest
return $validator->errors(); return $validator->errors();
} }
} }
// 预约验证器
public function contactValidator($data)
{
// 自定义错误消息
$messages = [
'id.required' => '请输入服务工单id',
'id.integer' => '参数错误',
'day_time.required' => '请填写预约时间',
];
// 数据验证
$validator = Validator::make($data, [
'id' => 'required|integer|min:1',
'day_time' => 'required|string|max:255',
], $messages);
// 判断数据验证是否成功
if ($validator->fails()) {
return $validator->errors();
}
}
// 开始安装验证器 // 开始安装验证器
public function startInstallValidator($data) public function startInstallValidator($data)
......
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class OrderRejected extends Model
{
//指定表名
protected $table = 'order_rejected';//退单表 模型
protected $guarded = [];
public $timestamps = false;
}
...@@ -15,9 +15,11 @@ use App\Models\{Admin, ...@@ -15,9 +15,11 @@ use App\Models\{Admin,
Note, Note,
OrderList, OrderList,
OrderMsg, OrderMsg,
OrderRejected,
Orders, Orders,
InstallPerson, InstallPerson,
OrderTime, OrderTime,
SetmoneyType,
SettlementList, SettlementList,
SettlementMoney, SettlementMoney,
SubmitPlease, SubmitPlease,
...@@ -32,31 +34,30 @@ class OrderListService extends Model ...@@ -32,31 +34,30 @@ class OrderListService extends Model
$session = $request['session']; $session = $request['session'];
// 查询列表 // 查询列表
$list_data = DB::table('order_list as ol') $list_data = DB::table('order_list as ol')
->leftJoin('user as u', 'ol.customer_id', '=', 'u.id') ->leftJoin('user as u', 'ol.customer_id', '=', 'u.id');
->where('ser_id', $session['admin_id']) //服务商id $where['ser_id'] =$session['admin_id'];//服务商id
->where('is_delete', 1) //是否删除:1正常2删除 $where['is_delete'] =1;//是否删除:1正常2删除
->where(function ($query) use ($request) { if (!empty($session['install_id']) && $session['user_type'] == 1) {
// 安装人员 $where['intall_id'] =$session['install_id'];//技师id
if (!empty($session['install_id']) && $session['user_type'] == 1) { }
$query->where('intall_id', $session['install_id']); if (!empty($request['stauas'])) {
} if($request['stauas'] == 1){
// 状态 // 未接单
if (!empty($request['stauas'])) { $wheres['stauas_searchin'] = [10,20];
if($request['stauas']==1){ }elseif($request['stauas'] == 2){
// 未接单 // 已接单
$query->whereIn("stauas",[10,20]); $wheres['stauas_searchin'] = [30,34,40];
}elseif($request['stauas']==2){ }elseif($request['stauas']==3){
// 已接单 // 安装中
$query->where("stauas",'>',20)->where('stauas','!=',50)->where('stauas','!=',55); $wheres['stauas'] = 30;
}elseif($request['stauas']==3){ }elseif($request['stauas']==4){
// 安装中 // 已完成
$query->where("stauas",30); $wheres['stauas_searchin'] = [34,40];
}elseif($request['stauas']==4){ }
// 已完成 }
$query->whereIn("stauas",[34,40]); $wheres = array_merge($where, $wheres);
} $wheres = CommonService::jointWhere($wheres);
} $list_data = $list_data->whereRaw($wheres)
})
->select('ol.id', 'order_num', 'serial_number', 'p_id','stauas', 'locklist_type', 'ol.sys_num','manhourfee', 'intall_person', 'intall_phone', 'day_time', 'order_goods_id', 'shr_name', 'shr_phone', 'shr_sheng', 'shr_shi', 'shr_xian', 'shr_adress','company_id','ser_id','get_time'); ->select('ol.id', 'order_num', 'serial_number', 'p_id','stauas', 'locklist_type', 'ol.sys_num','manhourfee', 'intall_person', 'intall_phone', 'day_time', 'order_goods_id', 'shr_name', 'shr_phone', 'shr_sheng', 'shr_shi', 'shr_xian', 'shr_adress','company_id','ser_id','get_time');
if($request['stauas']!=1){ if($request['stauas']!=1){
$list_data = $list_data->orderby('get_time', 'desc'); $list_data = $list_data->orderby('get_time', 'desc');
...@@ -129,8 +130,10 @@ class OrderListService extends Model ...@@ -129,8 +130,10 @@ class OrderListService extends Model
if($request['stauas']==2){ if($request['stauas']==2){
$list_items[$key]['button'][] = ['action'=>'transferOfOrder','name'=>'改派']; $list_items[$key]['button'][] = ['action'=>'transferOfOrder','name'=>'改派'];
}if($request['stauas']==3){ }if($request['stauas']==3){
$list_items[$key]['line_state'] = 1;
$list_items[$key]['button'][] = ['action'=>'contact','name'=>'预约时间']; $list_items[$key]['button'][] = ['action'=>'contact','name'=>'预约时间'];
if(isset($installLine[$value['serial_number']]['line_state'])){ if(isset($installLine[$value['serial_number']]['line_state'])){
$list_items[$key]['line_state'] = $installLine[$value['serial_number']]['line_state'];
switch ( $installLine[$value['serial_number']]['line_state'] ){ switch ( $installLine[$value['serial_number']]['line_state'] ){
case 2: case 2:
$list_items[$key]['button'][] = ['action'=>'lineStart','name'=>'出发']; $list_items[$key]['button'][] = ['action'=>'lineStart','name'=>'出发'];
...@@ -166,21 +169,53 @@ class OrderListService extends Model ...@@ -166,21 +169,53 @@ class OrderListService extends Model
} }
// 查询接单的状态统计数据,改为用上面查询出来的组装就行,因为数据格式完全变了,从订单表查了,所以根据上面的状态就可以获取数量了 // 查询接单的状态统计数据,改为用上面查询出来的组装就行,因为数据格式完全变了,从订单表查了,所以根据上面的状态就可以获取数量了
$wjd_num=0; $where['stauas_searchin'] = [10,20,30,34,40];
$yjd_num=0; $where = CommonService::jointWhere($where);
$stauas_count=[]; $data_num = DB::table('order_list as ol')
if($wjd_num > 0){ ->leftJoin('user as u', 'ol.customer_id', '=', 'u.id')->whereRaw($where)->groupBy('stauas')->select('stauas',DB::raw('count(*) as total'))->get();
$stauas_count[]=['count'=>$wjd_num,'stauas'=>1]; $wjd_num = 0;
} $yjd_num = 0;
if($yjd_num > 0){ $azz_num = 0;
$stauas_count[]=['count'=>$yjd_num,'stauas'=>3]; $ywc_num = 0;
} if($data_num){
$data_num = CommonService::dataToArray($data_num);
foreach($data_num as $k => $v){
switch ( $v['stauas'] ){
case 10:
$wjd_num = $wjd_num + $v['total'];
break;
case 20:
$wjd_num = $wjd_num + $v['total'];
break;
case 30:
$azz_num = $azz_num + $v['total'];
$yjd_num = $yjd_num + $v['total'];
break;
case 34:
$ywc_num = $ywc_num + $v['total'];
$yjd_num = $yjd_num + $v['total'];
break;
case 40:
$ywc_num = $ywc_num + $v['total'];
$yjd_num = $yjd_num + $v['total'];
break;
default:
;
break;
}
}
}
$stauas_count=[];
$stauas_count[] = ['count'=>$wjd_num,'stauas'=>1];
$stauas_count[] = ['count'=>$yjd_num,'stauas'=>2];
$stauas_count[] = ['count'=>$azz_num,'stauas'=>3];
$stauas_count[] = ['count'=>$ywc_num,'stauas'=>4];
$data['stauas_count'] = $stauas_count; $data['stauas_count'] = $stauas_count;
if ($data['list']) { if ($data['list']) {
return ['ErrorCode' => 1, 'ErrorMessage' => '成功', 'Data' => $data]; return ['ErrorCode' => 1, 'ErrorMessage' => '成功', 'Data' => $data];
} else { } else {
return ['ErrorCode' => ErrorInc::DATA_EMPTY, 'ErrorMessage' => '暂无数据', 'Data' => $data]; return ['ErrorCode' => 1, 'ErrorMessage' => '暂无数据', 'Data' => $data];
} }
} }
...@@ -259,9 +294,9 @@ class OrderListService extends Model ...@@ -259,9 +294,9 @@ class OrderListService extends Model
} }
} }
array_multisort($num, SORT_NUMERIC ,SORT_ASC, $list); array_multisort($num, SORT_NUMERIC ,SORT_ASC, $list);
return ['ErrorCode' => ErrorInc::DATA_EMPTY, 'ErrorMessage' => '暂无数据', 'Data' => $list]; return ['ErrorCode' => 1, 'ErrorMessage' => '暂无数据', 'Data' => $list];
}else{ }else{
return ['ErrorCode' => ErrorInc::DATA_EMPTY, 'ErrorMessage' => '无可派单技师', 'Data' => $list]; return ['ErrorCode' => 1, 'ErrorMessage' => '无可派单技师', 'Data' => $list];
} }
}else{ }else{
return ['ErrorCode' => ErrorInc::DATA_EMPTY, 'ErrorMessage' => '未获取订单信息', 'Data' => '']; return ['ErrorCode' => ErrorInc::DATA_EMPTY, 'ErrorMessage' => '未获取订单信息', 'Data' => ''];
...@@ -269,7 +304,7 @@ class OrderListService extends Model ...@@ -269,7 +304,7 @@ class OrderListService extends Model
} }
// 接单 // 接单
public static function receiving($request) public static function receiving($request,$ip)
{ {
$session = $request['session']; $session = $request['session'];
// 查询服务单表信息 // 查询服务单表信息
...@@ -282,7 +317,7 @@ class OrderListService extends Model ...@@ -282,7 +317,7 @@ class OrderListService extends Model
$orderListArr = CommonService::dataToArray($orderListArr); $orderListArr = CommonService::dataToArray($orderListArr);
// 判断是否派单是否锁定 // 判断是否派单是否锁定
if(in_array($orderListArr['stauas'], [10,20])){ if(!in_array($orderListArr['stauas'], [10,20])){
return ['ErrorCode' => ErrorInc::BUSINESS_FORBID, 'ErrorMessage' => '当前服务单不是待接单状态!', 'Data' => []]; return ['ErrorCode' => ErrorInc::BUSINESS_FORBID, 'ErrorMessage' => '当前服务单不是待接单状态!', 'Data' => []];
} }
if ($orderListArr['locklist_type'] != 1) { if ($orderListArr['locklist_type'] != 1) {
...@@ -318,14 +353,14 @@ class OrderListService extends Model ...@@ -318,14 +353,14 @@ class OrderListService extends Model
//end Dong //end Dong
$arr['sys_num']=$orderListArr['sys_num']; //系统单号 $arr['sys_num']=$orderListArr['sys_num']; //系统单号
$arr['order_num']=$orderListArr['order_num']; //平台单号 $arr['order_num']=$orderListArr['order_num']; //平台单号
$arr['serial_number']=$_POST['order_id']; //关联的order_list_id $arr['serial_number']=$request['id']; //关联的order_list_id
$arr['msg_id']=$orderListArr['order_goods_id']; //关联msg_id $arr['msg_id']=$orderListArr['order_goods_id']; //关联msg_id
$arr['p_id']=$orderListArr['p_id']; //平台id $arr['p_id']=$orderListArr['p_id']; //平台id
$arr['list_id']=$orderListArr['serial_number']; //派工单编号 $arr['list_id']=$orderListArr['serial_number']; //派工单编号
$arr['ser_id']=$orderListArr['ser_id']; //服务中心id $arr['ser_id']=$orderListArr['ser_id']; //服务中心id
$arr['type']=2; //出售方式 $arr['type']=2; //出售方式
// 上门安装 // 上门安装
$arr['installperson']=$_POST['id']; // 安装人id $arr['installperson']=$request['receive_install_id']; // 安装人id
$arr['intall_person']=$instArr['install_name'];// 安装人名称 $arr['intall_person']=$instArr['install_name'];// 安装人名称
$arr['intall_phone']=$instArr['install_phone'];// 安装人电话 $arr['intall_phone']=$instArr['install_phone'];// 安装人电话
$is_bool="到店安装"; $is_bool="到店安装";
...@@ -376,6 +411,7 @@ class OrderListService extends Model ...@@ -376,6 +411,7 @@ class OrderListService extends Model
$returncount = OrderList::where('sys_num',$orderListArr['sys_num']) $returncount = OrderList::where('sys_num',$orderListArr['sys_num'])
->where('stauas',20) ->where('stauas',20)
->count(); ->count();
DB::beginTransaction(); //开启事务
if($returncount==1){ if($returncount==1){
$restOrderList = OrderList::where('id',$request['id'])->update($post); $restOrderList = OrderList::where('id',$request['id'])->update($post);
$restOrder = Orders::where('sys_num',$orderListArr['sys_num'])->update($get); $restOrder = Orders::where('sys_num',$orderListArr['sys_num'])->update($get);
...@@ -392,10 +428,12 @@ class OrderListService extends Model ...@@ -392,10 +428,12 @@ class OrderListService extends Model
$restult=0; $restult=0;
} }
} }
if($restult==1){ $arr['company_id']=$orderListArr['company_id'];
$arr['agency_id']=$orderListArr['agency_id'];
$dou=SettlementList::insertGetId($arr);
if($restult==1 && $dou){
DB::commit();
Management::where('trace_code',$orderListArr['serial_number'])->update($info); Management::where('trace_code',$orderListArr['serial_number'])->update($info);
$arr['company_id']=$orderListArr['company_id'];
$dou=SettlementList::insertGetId($arr);
if($dou){ if($dou){
self::calculates($dou,$orderListArr,$supply_price,$supply_price,$session);//计算奖惩金额以及评分 self::calculates($dou,$orderListArr,$supply_price,$supply_price,$session);//计算奖惩金额以及评分
} }
...@@ -406,13 +444,12 @@ class OrderListService extends Model ...@@ -406,13 +444,12 @@ class OrderListService extends Model
$weixin['install_type'] = 2; $weixin['install_type'] = 2;
CommonService::requestPost('http://zptzchat.bluearp.com/m/index.php/BindingAccount/push_order', $weixin); CommonService::requestPost('http://zptzchat.bluearp.com/m/index.php/BindingAccount/push_order', $weixin);
//begin Dong //begin Dong
$company_name=M('admin')->where("`id`='".$orderListArr['ser_id']."'")->field("`admin_acc`,`company_name`,`reward`")->find();//服务中心名称
$company_name = Admin::where('id',$orderListArr['ser_id'])->select("admin_acc","company_name","reward")->first();//服务中心名称 $company_name = Admin::where('id',$orderListArr['ser_id'])->select("admin_acc","company_name","reward")->first();//服务中心名称
$douId = SettlementList::where('list_id',$orderListArr['serial_number'])->value('id'); $douId = SettlementList::where('list_id',$orderListArr['serial_number'])->value('id');
$res = SettlementMoney::where('sem_slid',$douId)->where('sem_type',17)->first(); $res = SettlementMoney::where('sem_slid',$douId)->where('sem_type',17)->first();
if(!$res){ if(!$res){
$payout_time=M('order_time')->where("serial_number='".$orderListArr['serial_number']."' and is_type='接单时间'")->order('id DESC')->getField('create_time');//获取奖罚起始时间 $payout_time = OrderTime::where("serial_number",$orderListArr['serial_number'])->where("is_type",'接单时间')->orderBy("id",'DESC')->value('create_time');//获取奖罚起始时间
$money_type=M('setmoney_type')->where("sety_id=17")->getField("sety_id,sety_price");//->select(); $money_type = SetmoneyType::where("sety_id",'17')->pluck('sety_price','sety_id');
$zero1=time();//strtotime (date("Y-m-d H:i:s")); //当前时间 ,注意H 是24小时 h是12小时 $zero1=time();//strtotime (date("Y-m-d H:i:s")); //当前时间 ,注意H 是24小时 h是12小时
$zero2=strtotime ($payout_time); //过年时间,不能写2014-1-21 24:00:00 这样不对 $zero2=strtotime ($payout_time); //过年时间,不能写2014-1-21 24:00:00 这样不对
$guonian=($zero1-$zero2)/60; //60s*60min*24h $guonian=($zero1-$zero2)/60; //60s*60min*24h
...@@ -422,182 +459,102 @@ class OrderListService extends Model ...@@ -422,182 +459,102 @@ class OrderListService extends Model
$money['sem_creacter']=$company_name['admin_acc']; $money['sem_creacter']=$company_name['admin_acc'];
$money['sem_price']=$money_type[17]; $money['sem_price']=$money_type[17];
$money['sem_type']=17; $money['sem_type']=17;
$settlement_money->add($money); SettlementMoney::insert($money);
$all_price['all_price']=$settlement_money->where("sem_slid='".$douId."'")->SUM('sem_price'); $all_price['all_price'] = SettlementMoney::where('sem_slid',$douId)->sum('sem_price');
$settlement_list->where("id='".$douId."'")->save($all_price); SettlementList::where("id",$douId)->update($all_price);
} }
} }
//end Dong //end Dong
$content = "订单".$is_bool."(".$orderListArr['serial_number'].")"; $content = "订单".$is_bool."(".$orderListArr['serial_number'].")";
$this->operating_time($orderListArr['serial_number'],'接单时间',date("Y-m-d H-i-s"),$orderListArr['sys_num']);//订单操作时间 self::operating_time($orderListArr['serial_number'],'接单时间',date("Y-m-d H-i-s"),$orderListArr['order_num'],$session);//订单操作时间
$this->add_thistory($orderListArr['serial_number'],'tih_acceptime',date("Y-m-d H:i:s"),$orderListArr['ser_id'],2);//添加历史时间 self::add_thistory($orderListArr['serial_number'],'tih_acceptime',date("Y-m-d H:i:s"),$orderListArr['ser_id'],2,$session);//添加历史时间
$this->inserting_log('接单1,',$orderListArr['sys_num'],$content,'派工单');//日志 CommonService::inserting_log('接单1,',$orderListArr['sys_num'],$content,'派工单',$session,$ip);//日志
//同步天猫 return ['ErrorCode' => 1, 'ErrorMessage' => '操作成功', 'Data' => []];
$pt_type = M('pt')->where("`id`='".$orderListArr['p_id']."'")->getField('pt_type');
if($pt_type==3) {
$arr_up['inspectionStation'] = M('admin')->where("`id`='" . $orderListArr['ser_id'] . "'")->getField('company_name');
$arr_up['workOrderId'] = $orderListArr['order_num'];
$arr_up['carNumber'] = $instArr['plate_num'] ? $instArr['plate_num'] : '暂无';
$arr_up['workerName'] = $instArr['install_name'];
$arr_up['workerMobile'] = $instArr['install_phone'];
$arr_up['channel'] = M('tm_proprietary')->where("`order_id`='" . $orderListArr['order_num'] . "'")->getField('channel');//
$arr_up['timestamp'] = time() . '000';
$arr_up['appKey'] = '2024032216801';
$arr_up['app_key'] = '2024032216801';
$arr_up['sign'] = $this->getSign($arr_up, 'b1e5c75530052abf221bfc9f3d2a591bdfa4ed7f');
// $url = 'https://opengw.ncarzone.com/api/workorder/uploadworker?';
$url = 'https://opengw.ncarzone.com/api/workorder/uploadworker';
ksort($arr_up);
foreach ($arr_up as $k => $v) {
if (strpos($v, ' ')) {
$urldata[] = $k . "=" . urlencode($v);
} else {
$urldata[] = $k . "=" . $v;
}
}
$urldata = implode("&", $urldata);
$ret_up = $this->requestPost($url, $urldata);
$file_path = "./filedata/tm_uploadworker".date("Ym").".txt";
$myfile = fopen($file_path, "a");
$txt = date("Y-m-d H:i:s").$ret_up.'---'.$url.'---'.$urldata."\r\n";
fwrite($myfile, $txt);
fclose($myfile);
}
echo 1;exit;
}else{ }else{
echo 2;exit; DB::rollback();//回滚
return ['ErrorCode' => ErrorInc::MYSQL_FAILED, 'ErrorMessage' => '操作失败', 'Data' => []];
} }
} }
// 拒单 // 拒单
public static function refuse($request) public static function refuse($request,$ip)
{ {
// 查询工单表信息 $session = $request['session'];
$find_design_order = DB::table('orders')->where('id', $request['id']) $orderListArr = OrderList::where('id',$request['id'])->select("order_num","sys_num","stauas","ser_id","p_id","ol_dispamount","serial_number")->first();
->where('is_delete', 1) $returncount = OrderList::where('sys_num',$orderListArr['sys_num'])->select("serial_number")->get();
->select('id', 'sys_num', 'order_num', 'order_status','distrib_time','orders_sertatus', 'lock_type', 'ser_id', 'p_id') $returncount = CommonService::dataToArray($returncount);
->first(); $serial_number = array_unique(array_column($returncount, 'serial_number')); //派工单号
// 判断是否已派单 if($orderListArr['stauas']<>10 && $orderListArr['stauas']<>20 && $orderListArr['stauas']<>30){
if (empty($find_design_order)) { // 拒单失败!该单状态不正确!
return ['ErrorCode' => ErrorInc::DATA_EMPTY, 'ErrorMessage' => '未查询到订单', 'Data' => []]; return ['ErrorCode' => ErrorInc::MYSQL_STEP_FAILED, 'ErrorMessage' => '订单状态错误请刷新后操作:检索码01', 'Data' => []];
} }else{
$find_design_order = objectToArray($find_design_order); if($orderListArr['stauas']!=$_POST['stauas']){
if ($find_design_order['orders_sertatus'] == 0) { return ['ErrorCode' => ErrorInc::MYSQL_STEP_FAILED, 'ErrorMessage' => '订单状态错误请刷新后操作:检索码02', 'Data' => []];
return ['ErrorCode' => ErrorInc::BUSINESS_FORBID, 'ErrorMessage' => '当前工单未派单!', 'Data' => []];
}
if ($find_design_order['orders_sertatus'] > 1) {
return ['ErrorCode' => ErrorInc::BUSINESS_FORBID, 'ErrorMessage' => '当前工单已接单,无法拒单!', 'Data' => []];
}
if ($find_design_order['lock_type'] != 1) {
return ['ErrorCode' => ErrorInc::BUSINESS_FORBID, 'ErrorMessage' => '当前工单已锁定,无法拒单!', 'Data' => []];
}
// 根据订单id,查询工单是否有完成的
$find_orli_data = DB::table('order_list')
->where('sys_num', $find_design_order['sys_num'])
->where('order_num', $find_design_order['order_num'])
->where('is_delete', 1)
->select('id', 'serial_number', 'stauas')
->get()->toArray();
$find_orli_data = objectToArray($find_orli_data);
foreach ($find_orli_data as $key => $value) {
if ($value['stauas'] == 4) {
return ['ErrorCode' => 500, 'ErrorMessage' => '有一个工单施工已完成,无法拒单', 'Data' => []];
} }
} }
if(count($returncount) > 1 && $request['refuseType'] == 1){
$user_info = CommonService::webgetUserInfo($request['api_token']); // 该订单有多款商品,该工单不可拒单
return ['ErrorCode' => 201, 'ErrorMessage' => '订单包含多个商品是否全部拒单', 'Data' => []];
DB::beginTransaction();
// 更改订单表信息
$order_data=[];
$order_data['order_status'] = 4; //订单状态:4设计完成(服务未派单)5施工未接单(服务已派单)6施工已接单
$order_data['ser_id'] = 0;
$order_data['seco_id'] = 0;
$order_data['orders_sertatus'] = 0;
$order_data['intall_person'] = '';
$order_data['intall_phone'] = '';
$order_data['update_time'] = date('Y-m-d H:i:s');
// $order_data['distrib_time'] = '';
$ord_edit_res = Orders::where('id', $find_design_order['id'])
->update($order_data);
// 更改工单信息
$service_data=[];
$service_data['stauas'] = 8; //工单状态:1未接单2已接单【废弃】3安装中4完成待审核5延期审图6延期结算7已完成8已拒单9已撤销
$service_data['is_delete'] = 2; //是否删除:1正常2删除
$service_data['service_state'] = 3; //技师服务状态:0未派单1未接单2已接单3已拒单
$deor_res = DB::table('order_list')
->where('sys_num', $find_design_order['sys_num'])
->update($service_data);
$orre_res=true;
$settlement_res=true;
foreach ($find_orli_data as $key => $value) {
// 新增拒单记录
$orre_data=[];
$orre_data['ors_order_num'] = $find_design_order['order_num'];
$orre_data['ors_sys_num'] = $find_design_order['sys_num'];
$orre_data['ors_serial_number'] = $value['serial_number'];
$orre_data['ors_ser_id'] = $find_design_order['ser_id'];
$orre_data['ors_pid'] = $find_design_order['p_id'];
$orre_data['ors_year'] = date('Y');
$orre_data['ors_month'] = date('m');
$orre_data['ors_day'] = date('d');
$orre_data['ors_type'] = 2; //拒单类型1设计公司拒单2服务公司拒单
if ($find_design_order['orders_sertatus'] == 1) {
$orre_data['ors_status'] = 1; //接单状态1接单前拒单2接单后拒单
} else {
$orre_data['ors_status'] = 2;
}
$orre_data['ors_remarks'] = $request['remarks'];
$orre_data['ors_adm_id'] = $request['admin_id'];
$or_res = DB::table('order_refused')->insert($orre_data);
if(!$or_res){
$orre_res=$or_res;
}
// 接单后才有结算数据,更改工单结算单数据
$settlement_data=[];
$settlement_data['is_delete'] = 2;
$settlement_data['update_time'] = date('Y-m-d H:i:s');
$settl_res = DB::table('settlement_list')
->where('serial_number', $value['serial_number'])
->update($settlement_data);
if(!$settl_res){
$settlement_res=$settl_res;
}
} }
DB::beginTransaction(); //开启事务
// 备注 $rest = CommonService::accMe($orderListArr['sys_num'], '派工单列表web', "拒单,".$_POST['note_content'], implode(',', $serial_number), 2, 2, $session['install_name'], $session['install_id']);
$remarks = ''; $resultOrderList = OrderList::where("sys_num",$orderListArr['sys_num'])->delete();
if (Request::filled('remarks')) { if($orderListArr['stauas']==30){
$remarks = $request['remarks']; $settListArr = SettlementList::where("sys_num",$orderListArr['sys_num'])->where("sett_status",'>',1)->first();
$rest = CommonService::accMe($find_design_order['sys_num'], '服务工单列表拒单', "拒单:" . $remarks,'', '1', $user_info->admin_groupnew, $user_info->install_name, $user_info->admin_id); //添加备注 if(!empty($settListArr)){
// 该单已审核
if (!$rest) { return ['ErrorCode' => ErrorInc::MYSQL_STEP_FAILED, 'ErrorMessage' => '存在结算工单不可拒单', 'Data' => []];
DB::rollback();
return ['ErrorCode' => 500, 'ErrorMessage' => '备注添加失败', 'Data' => []];
} }
$resultsettList = SettlementList::where("sys_num",$orderListArr['sys_num'])->delete();
}else{
$resultsettList = true;
} }
$data['ser_id']=0;
if ($ord_edit_res && $deor_res && $orre_res) { $data['order_status']=10;
$resultOrder = Orders::where("sys_num",$orderListArr['sys_num'])->update($data);
if($resultOrderList && $rest && $resultsettList && $resultOrder){
DB::commit(); DB::commit();
czrzLog("拒单,", $find_design_order['sys_num'], "移动端技师拒单", "订单系统", request::ip(), $user_info->install_name); OrderTime::whereIn('serial_number',$serial_number)->delete();//删除工单操作时间
return ['ErrorCode' => 1, 'ErrorMessage' => '成功', 'Data' => []]; SettlementMoney::where('sem_synum',$orderListArr['sys_num'])->delete();//金额信息接单后生成
} else { // M("settlement_count")->where("`cou_synum`='".$_POST['sys_num']."'")->delete();//评分信息接单后生成
DB::rollback(); DB::table('order_score')->whereIn("orsc_sernum",$serial_number)->delete();//评分信息接单后生成
return ['ErrorCode' => 500, 'ErrorMessage' => '失败', 'Data' => []]; Management::whereIn('trace_code',$serial_number)->delete();
CommonService::inserting_log('拒单,',$orderListArr['sys_num'],'订单('.$orderListArr['order_num'].')','派工单web',$session,$ip);//日志
self::operating_time($orderListArr['serial_number'],'拒单时间',date("Y-m-d H:i:s"),$orderListArr['order_num'],$session);//订单操作时间
OrderRejected::insert(['or_order_num'=>$orderListArr['order_num'],'or_ser_id'=>$orderListArr['ser_id'],'or_creact_time'=>date("Y-m-d H:i:s"),'or_centent'=>'门店自主拒单']);
return ['ErrorCode' => 1, 'ErrorMessage' => '操作成功', 'Data' => []];
}else{
DB::rollback();//回滚
return ['ErrorCode' => ErrorInc::MYSQL_FAILED, 'ErrorMessage' => '操作失败', 'Data' => []];
} }
} }
/**|---------------------------------------------------------------------------------
* @name 预约安装
* @param int id 订单单号
* @param string day_time 预约是啊金
* @retrun \Illuminate\Http\JsonResponse /multitype:array
* @author dou 2024/9/11 0:36
* |---------------------------------------------------------------------------------
*/
public static function contact ( $request , $ip){
$session = $request['session'];
$orderListArr = OrderTime::where("id",$request['id'])->select("order_num","sys_num","stauas","ser_id","p_id","customer_id","serial_number","ol_dispamount")->first();
if($orderListArr['stauas'] <> 30){
// 拒单失败!该单状态不正确!
return ['ErrorCode' => ErrorInc::MYSQL_STEP_FAILED, 'ErrorMessage' => '订单状态错误请刷新后操作:检索码01', 'Data' => []];
}
$data['day_time']=$request['delay_time'];
$res = Orders::where("sys_num",$orderListArr['sys_num'])->update($data);
$ress = OrderList::where("id",$request['id'])->update($data);
if($res && $ress){
self::operating_time($orderListArr['serial_number'],'安装预约时间',date("Y-m-d H-i-s"),$orderListArr['order_num'],$session);//订单操作时间
self::updateLineSrate($request['coordinate'], 2, $orderListArr['serial_number'], $orderListArr['sys_num'], $orderListArr['order_num']);
return ['ErrorCode' => 1, 'ErrorMessage' => '操作成功', 'Data' => []];
}else{
return ['ErrorCode' => ErrorInc::MYSQL_FAILED, 'ErrorMessage' => '操作失败', 'Data' => []];
}
}
// 检验 // 检验
public static function inspect($request) public static function inspect($request)
{ {
...@@ -1181,8 +1138,91 @@ class OrderListService extends Model ...@@ -1181,8 +1138,91 @@ class OrderListService extends Model
} }
return $stauasName; return $stauasName;
} }
// 订单操作时间
public static function operating_time($num,$type,$time,$order_num,$session){
$data['serial_number']=$num;
$data['create_name']=$session['install_name'];
$data['is_type']=$type;
$data['create_time']=$time;
$data['order_num']=$order_num;
$result = OrderTime::insert($data);
if($result){
return 1;
}else{
return 2;
}
}
//添加时间戳
public static function add_thistory ($number,$timetype,$time,$ser_id,$type,$session){
if($type==1){
$poss[$timetype]=strtotime($time);
$poss['tih_serid']=$ser_id;
$poss['tih_number']=$number;
$poss['company_type']=$session['install_name'];
DB::table('time_history')->insert($poss);
}else{
$poss[$timetype]=strtotime($time);
DB::table('time_history')->where("tih_number",$number)->update($poss);
}
}
/**|---------------------------------------------------------------------------------
* @name 同步施工节点
* @param string $coordinate 坐标
* @param string $line_state 节点状态
* @param string $line_serm 工单号
* @param string $line_sysnum 系统单号
* @param string $line_number 单号
* @retrun \Illuminate\Http\JsonResponse /multitype:array
* @author dou 2024/9/11 0:45
* |---------------------------------------------------------------------------------
*/
public static function updateLineSrate ( $coordinate , $line_state , $line_serm , $line_sysnum , $line_number ){
$install_line = InstallLine::where("line_serm",$line_serm)->first();
switch ( $line_state ){
case 2:
$line['line_contact'] = $coordinate;
$line['line_contact_time'] = date("Y-m-d H:i:s");
break;
case 3:
$line['line_start'] = $coordinate;
$line['line_start_time'] = date("Y-m-d H:i:s");
break;
case 4:
$line['line_arrive'] = $coordinate;
$line['line_arrive_time'] = date("Y-m-d H:i:s");
break;
case 5:
$line['line_task'] = $coordinate;
$line['line_task_time'] = date("Y-m-d H:i:s");
break;
case 6:
$line['line_end'] = $coordinate;
$line['line_end_time'] = date("Y-m-d H:i:s");
break;
default:
return false;
break;
}
$line['line_lasttime'] = date("Y-m-d H:i:s");
$line['line_state'] = $line_state;
if(empty($install_line)){
$line['line_serm'] = $line_serm;
$line['line_sysnum'] = $line_sysnum;
$line['line_number'] = $line_number;
$line['line_serm'] = $line_serm;
$res = InstallLine::insert($line);
}else{
$line_states = $line_state-1;
if($line_states < $install_line['line_state']){
return false;
}else{
$res = InstallLine::where("line_serm",$line_serm)->update($line);
}
}
return $res;
}
#计算奖惩金额以及评分 #计算奖惩金额以及评分
function calculates($dou,$orderListArr,$supply_price,$manhourfee,$session){ public static function calculates($dou,$orderListArr,$supply_price,$manhourfee,$session){
#商品供货金额 #商品供货金额
$money['sem_slid'] = $dou; $money['sem_slid'] = $dou;
$money['sem_synum'] = $orderListArr['sys_num']; $money['sem_synum'] = $orderListArr['sys_num'];
......
...@@ -1543,4 +1543,21 @@ class CommonService extends Service{ ...@@ -1543,4 +1543,21 @@ class CommonService extends Service{
} }
} }
/*----------------------------------------------------同步库存erp系统-----------------------------------------------*/ /*----------------------------------------------------同步库存erp系统-----------------------------------------------*/
//移动端操作日志 /*$type:操作类型 $order_number:操作单号 $content:操作内容 $model:操作模块*/
public static function inserting_log($type,$order_number,$content,$model,$session,$ip){
$model_name=$model;
$data['czrz_name'] = $session['install_name'];//登录者
$data['czrz_ip'] = $ip;//操作ip
$data['czrz_czsj'] = date("Y-m-d H:i:s");//创建时间
$data['test_data'] = $model_name;//操作模块名称
$data['czrz_czlx'] = $type;//创建类型
$data['czrz_czxq'] = $content;//操作内容
$data['czrz_number']= $order_number;//操作单号
$res = Czrz::insert($data); //添加操作日志
if($res){
return 1;
}else{
return 2;
}
}
} }
...@@ -1419,9 +1419,12 @@ Route::namespace('Api')->group(function () { ...@@ -1419,9 +1419,12 @@ Route::namespace('Api')->group(function () {
Route::post('w1/OrderList/index', 'MobileWeb\OrderListController@index'); //服务工单列表 Route::post('w1/OrderList/index', 'MobileWeb\OrderListController@index'); //服务工单列表
Route::post('w1/OrderList/receiving', 'MobileWeb\OrderListController@receiving'); //接单 Route::post('w1/OrderList/receiving', 'MobileWeb\OrderListController@receiving'); //接单
Route::post('w1/OrderList/refuse', 'MobileWeb\OrderListController@refuse'); //拒单 Route::post('w1/OrderList/refuse', 'MobileWeb\OrderListController@refuse'); //拒单
Route::post('w1/OrderList/contact', 'MobileWeb\OrderListController@contact'); //预约
Route::post('w1/OrderList/lineStart', 'MobileWeb\OrderListController@lineStart'); //出发
Route::post('w1/OrderList/lineArrive', 'MobileWeb\OrderListController@lineArrive'); //抵达
Route::post('w1/OrderList/startInstall', 'MobileWeb\OrderListController@startInstall'); //开始安装 Route::post('w1/OrderList/startInstall', 'MobileWeb\OrderListController@startInstall'); //开始安装
Route::post('w1/OrderList/inspect', 'MobileWeb\OrderListController@inspect'); //检验
Route::post('w1/OrderList/installFeedback', 'MobileWeb\OrderListController@installFeedback'); //安装反馈 Route::post('w1/OrderList/installFeedback', 'MobileWeb\OrderListController@installFeedback'); //安装反馈
Route::post('w1/OrderList/inspect', 'MobileWeb\OrderListController@inspect'); //检验
Route::post('w1/OrderList/info', 'MobileWeb\OrderListController@info'); //详情 Route::post('w1/OrderList/info', 'MobileWeb\OrderListController@info'); //详情
Route::post('w1/OrderList/getInstallPerson', 'MobileWeb\OrderListController@getInstallPerson'); //获取技师 Route::post('w1/OrderList/getInstallPerson', 'MobileWeb\OrderListController@getInstallPerson'); //获取技师
Route::post('w1/OrderList/getLabel', 'MobileWeb\OrderListController@getLabel'); //获取标签 Route::post('w1/OrderList/getLabel', 'MobileWeb\OrderListController@getLabel'); //获取标签
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论