|
@@ -2641,46 +2641,56 @@ class IndexController extends WebBaseController
|
|
|
}else{
|
|
|
$quota = json_decode($quota,true);
|
|
|
}
|
|
|
- $limit = $request->input('limit',2);
|
|
|
- $list = DB::table('recruit_appoint_select as a')->leftJoin('recruit_appoint_info as b','a.appoint_id','=','b.id')->leftJoin('recruit_ticket as c','a.appoint_id','=','c.appoint_id')->whereRaw('a.select_result is null and a.batch=3 and a.type=2 and a.status=1')->select(['b.realname','c.ex_number','a.result','a.select_result','a.id'])->orderBy('record','desc')->orderBy('record2','desc')->orderBy('record3','desc')->limit($limit)->get()->toArray();
|
|
|
- dd($list);
|
|
|
+ $list = DB::table('recruit_appoint_select as a')->leftJoin('recruit_appoint_info as b','a.appoint_id','=','b.id')->leftJoin('recruit_ticket as c','a.appoint_id','=','c.appoint_id')->whereRaw('a.select_result is null and a.batch=3 and a.type=1 and a.status=1')->select(['b.realname','c.ex_number','a.result','a.select_result','a.id','a.record','a.record2','a.record3'])->orderBy('record','desc')->orderBy('record2','desc')->orderBy('record3','desc')->limit(2)->get()->toArray();
|
|
|
$return_data = [
|
|
|
'list' => []
|
|
|
];
|
|
|
$array_column = array_column($quota,'name');
|
|
|
- foreach ($list as $k => $v){
|
|
|
-
|
|
|
- $person_select_result = json_decode($v->result,true);
|
|
|
- $flag = 0;//是否择岗成功
|
|
|
- foreach ($person_select_result as $val){
|
|
|
- //寻找下标
|
|
|
- $index = array_search($val,$array_column);
|
|
|
- if($quota[$index]['value'] > 0){
|
|
|
- if($v->record == $list[$k+1]->record && $v->record2 == $list[$k+1]->record2 && $v->record3 == $list[$k+1]->record3 && $quota[$index]['value'] == 1){//如果当前人员的分数与下一名人员三个维度完全一样的话,特殊处理
|
|
|
- //查找同样分数人同样志愿
|
|
|
-
|
|
|
- }
|
|
|
- $quota_data = [
|
|
|
- 'index' => $index,
|
|
|
- 'old_value' => $quota[$index]['value']
|
|
|
- ];
|
|
|
- //有名额允许择岗
|
|
|
- DB::table('recruit_appoint_select')->where('id',$v->id)->update(['select_result'=>$val,'status' => 1]);
|
|
|
- $v->select_result = $val;
|
|
|
- $quota[$index]['value']--;
|
|
|
- $quota_data['new_value'] = $quota[$index]['value'];
|
|
|
- $redis->set('recruit_quotaB',json_encode($quota));
|
|
|
- $flag = 1;
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- if(!$flag){
|
|
|
- $v->select_result = '未匹配到志愿,本轮择岗不成功!';
|
|
|
- DB::table('recruit_appoint_select')->where('id',$v->id)->update(['select_result'=>'未匹配到志愿,本轮择岗不成功!','status' => -2]);
|
|
|
+ if(count($list) > 1){
|
|
|
+ $current = $list[0];
|
|
|
+ $next = $list[1];
|
|
|
+ }else{
|
|
|
+ $current = $list[0];
|
|
|
+ $next = false;
|
|
|
+ }
|
|
|
+
|
|
|
+ $person_select_result = json_decode($current->result,true);
|
|
|
+ $flag = 0;//是否择岗成功
|
|
|
+ foreach ($person_select_result as $val){
|
|
|
+ //寻找下标
|
|
|
+ $index = array_search($val,$array_column);
|
|
|
+ if($quota[$index]['value']){
|
|
|
+ if($next && $current->record == $next->record && $current->record2 == $next->record2 && $current->record3 == $next->record3 && $quota[$index]['value'] == 1){
|
|
|
+ //如果当前处理人员不是最后一个,且分数与下一名人员三个维度完全一样的话并且该人员欲择的岗位仅剩一位,则特殊处理
|
|
|
+ //查找同样分数人同样志愿
|
|
|
+ $next_select_result = json_decode($next->result,true);
|
|
|
+ //寻找下标
|
|
|
+ $current_index = array_search($val,$person_select_result);
|
|
|
+ $next_index = array_search($val,$next_select_result);
|
|
|
+ if($current_index > $next_index){
|
|
|
+ //如果当前人员对当前镇街的意向排序大于下一人,调换两个指针,先排序下一个人
|
|
|
+ $current = $next;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $quota_data = [
|
|
|
+ 'index' => $index,
|
|
|
+ 'old_value' => $quota[$index]['value']
|
|
|
+ ];
|
|
|
+ //有名额允许择岗
|
|
|
+ DB::table('recruit_appoint_select')->where('id',$current->id)->update(['select_result'=>$val,'status' => 1]);
|
|
|
+ $current->select_result = $val;
|
|
|
+ $quota[$index]['value']--;
|
|
|
+ $quota_data['new_value'] = $quota[$index]['value'];
|
|
|
+ $redis->set('recruit_quotaB',json_encode($quota));
|
|
|
+ $flag = 1;
|
|
|
+ break;
|
|
|
}
|
|
|
-
|
|
|
- array_push($return_data['list'],$v);
|
|
|
}
|
|
|
+ if(!$flag){
|
|
|
+ $current->select_result = '未匹配到志愿,本轮择岗不成功!';
|
|
|
+ DB::table('recruit_appoint_select')->where('id',$current->id)->update(['select_result'=>'未匹配到志愿,本轮择岗不成功!','status' => -2]);
|
|
|
+ }
|
|
|
+
|
|
|
$return_data['quota'] = $quota_data;
|
|
|
return ['status' => 1, 'msg' => '择岗排序成功', 'data' => $return_data];
|
|
|
}
|