提交 4ad3bfa3 authored 作者: 李大见's avatar 李大见
......@@ -49,7 +49,7 @@ class OrderListController extends Controller
if ($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);
}
......@@ -63,10 +63,21 @@ class OrderListController extends Controller
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);
}
//预约安装
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)
{
......
......@@ -37,7 +37,7 @@ class WebLogin
// 拿到token获取登录表信息
$login_web = DB::table('login_web')
->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();
if(empty($login_web)){
return response()->json(["ErrorCode"=>300,'ErrorMessage'=>'api_token失效:检索码03,请重新登录!','data'=>'']);
......
......@@ -111,19 +111,21 @@ class OrderListValidator extends FormRequest
{
// 自定义错误消息
$messages = [
'install_id.required' => '参数错误',
'admin_id.required' => '参数错误',
'id.required' => '请输入服务工单id',
'id.integer' => '参数错误',
'stauas.required' => '订单状态错误',
'stauas.integer' => '参数错误',
'refuseType.required' => '未选择拒单方式',
'refuseType.integer' => '参数错误',
'remarks.required' => '请输入拒单备注',
'remarks.max' => '拒单备注长度超出限制',
];
// 数据验证
$validator = Validator::make($data, [
'install_id' => 'required|integer|min:1',
'admin_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',
], $messages);
......@@ -132,6 +134,27 @@ class OrderListValidator extends FormRequest
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)
......
<?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,
Note,
OrderList,
OrderMsg,
OrderRejected,
Orders,
InstallPerson,
OrderTime,
SetmoneyType,
SettlementList,
SettlementMoney,
SubmitPlease,
......@@ -32,31 +34,30 @@ class OrderListService extends Model
$session = $request['session'];
// 查询列表
$list_data = DB::table('order_list as ol')
->leftJoin('user as u', 'ol.customer_id', '=', 'u.id')
->where('ser_id', $session['admin_id']) //服务商id
->where('is_delete', 1) //是否删除:1正常2删除
->where(function ($query) use ($request) {
// 安装人员
if (!empty($session['install_id']) && $session['user_type'] == 1) {
$query->where('intall_id', $session['install_id']);
}
// 状态
if (!empty($request['stauas'])) {
if($request['stauas']==1){
// 未接单
$query->whereIn("stauas",[10,20]);
}elseif($request['stauas']==2){
// 已接单
$query->where("stauas",'>',20)->where('stauas','!=',50)->where('stauas','!=',55);
}elseif($request['stauas']==3){
// 安装中
$query->where("stauas",30);
}elseif($request['stauas']==4){
// 已完成
$query->whereIn("stauas",[34,40]);
}
}
})
->leftJoin('user as u', 'ol.customer_id', '=', 'u.id');
$where['ser_id'] =$session['admin_id'];//服务商id
$where['is_delete'] =1;//是否删除:1正常2删除
if (!empty($session['install_id']) && $session['user_type'] == 1) {
$where['intall_id'] =$session['install_id'];//技师id
}
if (!empty($request['stauas'])) {
if($request['stauas'] == 1){
// 未接单
$wheres['stauas_searchin'] = [10,20];
}elseif($request['stauas'] == 2){
// 已接单
$wheres['stauas_searchin'] = [30,34,40];
}elseif($request['stauas']==3){
// 安装中
$wheres['stauas'] = 30;
}elseif($request['stauas']==4){
// 已完成
$wheres['stauas_searchin'] = [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');
if($request['stauas']!=1){
$list_data = $list_data->orderby('get_time', 'desc');
......@@ -129,8 +130,10 @@ class OrderListService extends Model
if($request['stauas']==2){
$list_items[$key]['button'][] = ['action'=>'transferOfOrder','name'=>'改派'];
}if($request['stauas']==3){
$list_items[$key]['line_state'] = 1;
$list_items[$key]['button'][] = ['action'=>'contact','name'=>'预约时间'];
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'] ){
case 2:
$list_items[$key]['button'][] = ['action'=>'lineStart','name'=>'出发'];
......@@ -166,21 +169,53 @@ class OrderListService extends Model
}
// 查询接单的状态统计数据,改为用上面查询出来的组装就行,因为数据格式完全变了,从订单表查了,所以根据上面的状态就可以获取数量了
$wjd_num=0;
$yjd_num=0;
$stauas_count=[];
if($wjd_num > 0){
$stauas_count[]=['count'=>$wjd_num,'stauas'=>1];
}
if($yjd_num > 0){
$stauas_count[]=['count'=>$yjd_num,'stauas'=>3];
}
$where['stauas_searchin'] = [10,20,30,34,40];
$where = CommonService::jointWhere($where);
$data_num = DB::table('order_list as ol')
->leftJoin('user as u', 'ol.customer_id', '=', 'u.id')->whereRaw($where)->groupBy('stauas')->select('stauas',DB::raw('count(*) as total'))->get();
$wjd_num = 0;
$yjd_num = 0;
$azz_num = 0;
$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;
if ($data['list']) {
return ['ErrorCode' => 1, 'ErrorMessage' => '成功', 'Data' => $data];
} else {
return ['ErrorCode' => ErrorInc::DATA_EMPTY, 'ErrorMessage' => '暂无数据', 'Data' => $data];
return ['ErrorCode' => 1, 'ErrorMessage' => '暂无数据', 'Data' => $data];
}
}
......@@ -259,9 +294,9 @@ class OrderListService extends Model
}
}
array_multisort($num, SORT_NUMERIC ,SORT_ASC, $list);
return ['ErrorCode' => ErrorInc::DATA_EMPTY, 'ErrorMessage' => '暂无数据', 'Data' => $list];
return ['ErrorCode' => 1, 'ErrorMessage' => '暂无数据', 'Data' => $list];
}else{
return ['ErrorCode' => ErrorInc::DATA_EMPTY, 'ErrorMessage' => '无可派单技师', 'Data' => $list];
return ['ErrorCode' => 1, 'ErrorMessage' => '无可派单技师', 'Data' => $list];
}
}else{
return ['ErrorCode' => ErrorInc::DATA_EMPTY, 'ErrorMessage' => '未获取订单信息', 'Data' => ''];
......@@ -269,7 +304,7 @@ class OrderListService extends Model
}
// 接单
public static function receiving($request)
public static function receiving($request,$ip)
{
$session = $request['session'];
// 查询服务单表信息
......@@ -282,7 +317,7 @@ class OrderListService extends Model
$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' => []];
}
if ($orderListArr['locklist_type'] != 1) {
......@@ -318,14 +353,14 @@ class OrderListService extends Model
//end Dong
$arr['sys_num']=$orderListArr['sys_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['p_id']=$orderListArr['p_id']; //平台id
$arr['list_id']=$orderListArr['serial_number']; //派工单编号
$arr['ser_id']=$orderListArr['ser_id']; //服务中心id
$arr['type']=2; //出售方式
// 上门安装
$arr['installperson']=$_POST['id']; // 安装人id
$arr['installperson']=$request['receive_install_id']; // 安装人id
$arr['intall_person']=$instArr['install_name'];// 安装人名称
$arr['intall_phone']=$instArr['install_phone'];// 安装人电话
$is_bool="到店安装";
......@@ -376,6 +411,7 @@ class OrderListService extends Model
$returncount = OrderList::where('sys_num',$orderListArr['sys_num'])
->where('stauas',20)
->count();
DB::beginTransaction(); //开启事务
if($returncount==1){
$restOrderList = OrderList::where('id',$request['id'])->update($post);
$restOrder = Orders::where('sys_num',$orderListArr['sys_num'])->update($get);
......@@ -392,10 +428,12 @@ class OrderListService extends Model
$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);
$arr['company_id']=$orderListArr['company_id'];
$dou=SettlementList::insertGetId($arr);
if($dou){
self::calculates($dou,$orderListArr,$supply_price,$supply_price,$session);//计算奖惩金额以及评分
}
......@@ -406,13 +444,12 @@ class OrderListService extends Model
$weixin['install_type'] = 2;
CommonService::requestPost('http://zptzchat.bluearp.com/m/index.php/BindingAccount/push_order', $weixin);
//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();//服务中心名称
$douId = SettlementList::where('list_id',$orderListArr['serial_number'])->value('id');
$res = SettlementMoney::where('sem_slid',$douId)->where('sem_type',17)->first();
if(!$res){
$payout_time=M('order_time')->where("serial_number='".$orderListArr['serial_number']."' and is_type='接单时间'")->order('id DESC')->getField('create_time');//获取奖罚起始时间
$money_type=M('setmoney_type')->where("sety_id=17")->getField("sety_id,sety_price");//->select();
$payout_time = OrderTime::where("serial_number",$orderListArr['serial_number'])->where("is_type",'接单时间')->orderBy("id",'DESC')->value('create_time');//获取奖罚起始时间
$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小时
$zero2=strtotime ($payout_time); //过年时间,不能写2014-1-21 24:00:00 这样不对
$guonian=($zero1-$zero2)/60; //60s*60min*24h
......@@ -422,182 +459,102 @@ class OrderListService extends Model
$money['sem_creacter']=$company_name['admin_acc'];
$money['sem_price']=$money_type[17];
$money['sem_type']=17;
$settlement_money->add($money);
$all_price['all_price']=$settlement_money->where("sem_slid='".$douId."'")->SUM('sem_price');
$settlement_list->where("id='".$douId."'")->save($all_price);
SettlementMoney::insert($money);
$all_price['all_price'] = SettlementMoney::where('sem_slid',$douId)->sum('sem_price');
SettlementList::where("id",$douId)->update($all_price);
}
}
//end Dong
$content = "订单".$is_bool."(".$orderListArr['serial_number'].")";
$this->operating_time($orderListArr['serial_number'],'接单时间',date("Y-m-d H-i-s"),$orderListArr['sys_num']);//订单操作时间
$this->add_thistory($orderListArr['serial_number'],'tih_acceptime',date("Y-m-d H:i:s"),$orderListArr['ser_id'],2);//添加历史时间
$this->inserting_log('接单1,',$orderListArr['sys_num'],$content,'派工单');//日志
//同步天猫
$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;
self::operating_time($orderListArr['serial_number'],'接单时间',date("Y-m-d H-i-s"),$orderListArr['order_num'],$session);//订单操作时间
self::add_thistory($orderListArr['serial_number'],'tih_acceptime',date("Y-m-d H:i:s"),$orderListArr['ser_id'],2,$session);//添加历史时间
CommonService::inserting_log('接单1,',$orderListArr['sys_num'],$content,'派工单',$session,$ip);//日志
return ['ErrorCode' => 1, 'ErrorMessage' => '操作成功', 'Data' => []];
}else{
echo 2;exit;
DB::rollback();//回滚
return ['ErrorCode' => ErrorInc::MYSQL_FAILED, 'ErrorMessage' => '操作失败', 'Data' => []];
}
}
// 拒单
public static function refuse($request)
public static function refuse($request,$ip)
{
// 查询工单表信息
$find_design_order = DB::table('orders')->where('id', $request['id'])
->where('is_delete', 1)
->select('id', 'sys_num', 'order_num', 'order_status','distrib_time','orders_sertatus', 'lock_type', 'ser_id', 'p_id')
->first();
// 判断是否已派单
if (empty($find_design_order)) {
return ['ErrorCode' => ErrorInc::DATA_EMPTY, 'ErrorMessage' => '未查询到订单', 'Data' => []];
}
$find_design_order = objectToArray($find_design_order);
if ($find_design_order['orders_sertatus'] == 0) {
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' => []];
$session = $request['session'];
$orderListArr = OrderList::where('id',$request['id'])->select("order_num","sys_num","stauas","ser_id","p_id","ol_dispamount","serial_number")->first();
$returncount = OrderList::where('sys_num',$orderListArr['sys_num'])->select("serial_number")->get();
$returncount = CommonService::dataToArray($returncount);
$serial_number = array_unique(array_column($returncount, 'serial_number')); //派工单号
if($orderListArr['stauas']<>10 && $orderListArr['stauas']<>20 && $orderListArr['stauas']<>30){
// 拒单失败!该单状态不正确!
return ['ErrorCode' => ErrorInc::MYSQL_STEP_FAILED, 'ErrorMessage' => '订单状态错误请刷新后操作:检索码01', 'Data' => []];
}else{
if($orderListArr['stauas']!=$_POST['stauas']){
return ['ErrorCode' => ErrorInc::MYSQL_STEP_FAILED, 'ErrorMessage' => '订单状态错误请刷新后操作:检索码02', 'Data' => []];
}
}
$user_info = CommonService::webgetUserInfo($request['api_token']);
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;
}
if(count($returncount) > 1 && $request['refuseType'] == 1){
// 该订单有多款商品,该工单不可拒单
return ['ErrorCode' => 201, 'ErrorMessage' => '订单包含多个商品是否全部拒单', 'Data' => []];
}
// 备注
$remarks = '';
if (Request::filled('remarks')) {
$remarks = $request['remarks'];
$rest = CommonService::accMe($find_design_order['sys_num'], '服务工单列表拒单', "拒单:" . $remarks,'', '1', $user_info->admin_groupnew, $user_info->install_name, $user_info->admin_id); //添加备注
if (!$rest) {
DB::rollback();
return ['ErrorCode' => 500, 'ErrorMessage' => '备注添加失败', 'Data' => []];
DB::beginTransaction(); //开启事务
$rest = CommonService::accMe($orderListArr['sys_num'], '派工单列表web', "拒单,".$_POST['note_content'], implode(',', $serial_number), 2, 2, $session['install_name'], $session['install_id']);
$resultOrderList = OrderList::where("sys_num",$orderListArr['sys_num'])->delete();
if($orderListArr['stauas']==30){
$settListArr = SettlementList::where("sys_num",$orderListArr['sys_num'])->where("sett_status",'>',1)->first();
if(!empty($settListArr)){
// 该单已审核
return ['ErrorCode' => ErrorInc::MYSQL_STEP_FAILED, 'ErrorMessage' => '存在结算工单不可拒单', 'Data' => []];
}
$resultsettList = SettlementList::where("sys_num",$orderListArr['sys_num'])->delete();
}else{
$resultsettList = true;
}
if ($ord_edit_res && $deor_res && $orre_res) {
$data['ser_id']=0;
$data['order_status']=10;
$resultOrder = Orders::where("sys_num",$orderListArr['sys_num'])->update($data);
if($resultOrderList && $rest && $resultsettList && $resultOrder){
DB::commit();
czrzLog("拒单,", $find_design_order['sys_num'], "移动端技师拒单", "订单系统", request::ip(), $user_info->install_name);
return ['ErrorCode' => 1, 'ErrorMessage' => '成功', 'Data' => []];
} else {
DB::rollback();
return ['ErrorCode' => 500, 'ErrorMessage' => '失败', 'Data' => []];
OrderTime::whereIn('serial_number',$serial_number)->delete();//删除工单操作时间
SettlementMoney::where('sem_synum',$orderListArr['sys_num'])->delete();//金额信息接单后生成
// M("settlement_count")->where("`cou_synum`='".$_POST['sys_num']."'")->delete();//评分信息接单后生成
DB::table('order_score')->whereIn("orsc_sernum",$serial_number)->delete();//评分信息接单后生成
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)
{
......@@ -1181,8 +1138,91 @@ class OrderListService extends Model
}
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_synum'] = $orderListArr['sys_num'];
......
......@@ -1543,4 +1543,21 @@ class CommonService extends Service{
}
}
/*----------------------------------------------------同步库存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;
}
}
}
......@@ -1424,9 +1424,12 @@ Route::namespace('Api')->group(function () {
Route::post('w1/OrderList/index', 'MobileWeb\OrderListController@index'); //服务工单列表
Route::post('w1/OrderList/receiving', 'MobileWeb\OrderListController@receiving'); //接单
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/inspect', 'MobileWeb\OrderListController@inspect'); //检验
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/getInstallPerson', 'MobileWeb\OrderListController@getInstallPerson'); //获取技师
Route::post('w1/OrderList/getLabel', 'MobileWeb\OrderListController@getLabel'); //获取标签
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论