zoukankan      html  css  js  c++  java
  • 分单

    public function fendan_dpt_auto_task() {
            // $orderList = $this->Baoming->find("all", ['conditions' => ['is_fp' => 0, 'zx_tuijian' => 1], 'fields' => ['id', 'ownercs', 'area']]);
    
    /*        $userRedisList = $this->Redis->get("auto_remind_userRedisList");
            print_r(json_decode($userRedisList));exit;*/
    
    /*        $this->Redis->del("auto_remind_userRedisList");
            $this->Redis->del("auto_remind_userAllotList");
            exit;*/
    
            $orderList = $this->Baoming->findAsPlus('all', array('conditions' => array(
                'BaomingPlus.track_is_fp' => 0,
                'Baoming.is_qy !=' => 1,
                'Baoming.is_fp' => 1,
                'Baoming.mes_bak' => 5,
                'Baoming.allow' => 0,
                'Baoming.status' => array(0,1),
                'Baoming.status_trace' => array(0,1),
                'Baoming.invalid' => array(0,2),
                'BaomingPlus.is_wh !=' => 1,
                'Baoming.lf_cs' => NULL,
                'BaomingPlus.is_old_fpd' => 0,
                'OR' => array(
                    'Baoming.can_not_go' => 1,
                    'Baoming.stage >=' => 1,
                    'Baoming.ck_nums >= Baoming.limits + BaomingPlus.cxfp_limiits',
                )),'fields'=>array('Baoming.id','Baoming.lf_time','Baoming.fdtime')));
            // print_r($orderList);exit;
    
            if (empty($orderList)) {
                exit("无可分配数据!");
            }
    
            // $userList = $this->Member->find("all", ['conditions' => ['status' => 0]]);
             //根据所有待分配的客服信息
            $userList = $this->Member->find('all', array('conditions' => array('js_type' => 37, 'fp_type' => 1, 'status' => 0), 'fields' => array('id','fp_nums', 'is_plus_minus','lf_time_interval'), 'order' => 'id ASC'));
    
            if (empty($userList)) {
                exit("无可分配客服!");
            }
    
            //print_r($userList);exit;
    
            $userRedisList = $this->Redis->get("auto_remind_userRedisList");
            $userRedisList = $this->object2array(json_decode($userRedisList));
    
            // 每位客服分配总次数
            $userAllAllotList = $this->Redis->get("auto_remind_userAllotList");
            $userAllAllotList = $this->object2array(json_decode($userAllAllotList));
    
            foreach ($userList as $uk => $uv) {
                if (empty($userRedisList[$uv['Member']['id']])) {
                    $userRedisList[$uv['Member']['id']] = ['limit' => $uv['Member']['fp_nums'], 'alloted' => 0]; 
                }
    
                if (empty($userAllAllotList[$uv['Member']['id']])) {
                    $userAllAllotList[$uv['Member']['id']] = 0; 
                }
            }
    
    
    /*        echo "<pre>";print_r($userRedisList);exit;*/
    /*            echo "<pre>";
                print_r($userAllAllotList);exit;*/
    
    
    
            foreach ($orderList as $key => $val) {
                // 计算量房间隔时间
                $lf_time_arr = strtotime($val['Baoming']['lf_time'] != '0000-00-00' ? $val['Baoming']['lf_time']:'');
                //分单时间
                $fd_time_arr = strtotime(substr($val['Baoming']['fdtime'],0,10));
                if( !empty($lf_time_arr) && !empty($fd_time_arr) && $lf_time_arr > $fd_time_arr ){
                    $lf_jg_time = floor( ($lf_time_arr - $fd_time_arr) / 86400);
                    //天数
                }else{
                    $lf_jg_time = 0;
                }
                // $userList = $this->Member->find('all', array('conditions' => array('js_type' => 37, 'fp_type' => 1, 'status' => 0), 'fields' => array('id','fp_nums', 'is_plus_minus','lf_time_interval'), 'order' => 'id ASC'));
                $conditions['js_type'] = 37;
                $conditions['fp_type'] = 1;
                $conditions['status'] = 0;
                
                $userListArr = $this->Member->find('all', array('conditions' => $conditions), 'fields' => array('id','fp_nums', 'is_plus_minus','lf_time_interval'), 'order' => 'id ASC'));
                // 面积符合的
                foreach ($userList as $k => $v) {
                    $updateSave = [];
    
                    if ( ( ($v['Member']['is_plus_minus'] == 1 && $lf_jg_time >= $v['Member']['lf_time_interval']) || ($v['Member']['is_plus_minus'] == 2 && $lf_jg_time <= $v['Member']['lf_time_interval'] ) ) && (array_search(max($userAllAllotList), $userAllAllotList) != $v['Member']['id'] || count($userAllAllotList) <= 1) && $userRedisList[$v['Member']['id']]['alloted'] < $userRedisList[$v['Member']['id']]['limit']) {
                        $userRedisList[$v['Member']['id']]['alloted'] ++;
                        if ($userRedisList[$v['Member']['id']]['alloted'] == $userRedisList[$v['Member']['id']]['limit']) {
                            $userRedisList[$v['Member']['id']]['alloted'] = 0;
                            $userAllAllotList[$v['Member']['id']] ++;
                        }
                        $updateSave = ['id' => $val['Baoming']['id'], 'ownercs' => $v['Member']['id']];
                    } else {
                        continue;
                    }
    
                    if (!empty($updateSave)) {
                        echo "<<<<<<<客户编号:" . $v['Member']['id'] . ">>>>>业主编号:" . $val['Baoming']['id']."<br/>";
                    }
                    break;
                }
    
                # 顺序分配
                if (empty($updateSave)) {
                    foreach ($userList as $k => $v) {
                        if (array_search(min($userAllAllotList), $userAllAllotList) == $v['Member']['id'] && $userRedisList[$v['Member']['id']]['alloted'] < $userRedisList[$v['Member']['id']]['limit']) {
                            $userRedisList[$v['Member']['id']]['alloted'] ++;
                        } else {
                            continue;
                        }
    
                        if ($userRedisList[$v['Member']['id']]['alloted'] == $userRedisList[$v['Member']['id']]['limit']) {
                            $userRedisList[$v['Member']['id']]['alloted'] = 0;
                            $userAllAllotList[$v['Member']['id']] ++;
                        }
                        $updateSave = ['id' => $val['Baoming']['id'], 'ownercs' => $v['Member']['id']];
                        echo "<<<<<<<客户编号:" . $v['Member']['id'] . ">>>>>业主编号:" . $val['Baoming']['id']."<br/>";
                        break;
                    }
                }
    /*             print_r($userRedisList);*/
                // $this->Baoming->save($updateSave);
    
            }
    
            $this->Redis->setex("auto_remind_userRedisList", (strtotime(date("Y-m-d") . "23:59:59") - time()), json_encode($userRedisList));
            $this->Redis->setex("auto_remind_userAllotList", (strtotime(date("Y-m-d") . "23:59:59") - time()), json_encode($userAllAllotList));
        }
  • 相关阅读:
    Software Update Services 2.0 概述
    Windows 2000组策略
    Windows 2000 默认安全策略设置
    C语言I博客作业06
    C语言I博客作业08
    C语言I博客作业09
    C语言I博客作业03
    C语言12019级秋季作业第一周作业
    C语言I博客作业02
    C语言I博客作业05
  • 原文地址:https://www.cnblogs.com/polax/p/13591138.html
Copyright © 2011-2022 走看看