/** * WaveBuildAct::make_multi_wave() * 批量生成多料号配货单 * @param $time 操作时间 * @author Gary * @return void */ public function make_multi_wave($time) { //$area_index = WhWaveAreaIndexModel::select('', '*'); // $indexs = array(); // foreach($area_index as $val){ // $indexs[$val['areaInfo']] = $val['id']; //区域索引集合 // } // unset($area_index); //获取多料号订单集合 $time = $time ? $time : time(); $multi_shipOrders = whWaveMultiShipAreaRecordModel::get_multi_ship_records('*', array('addTime <=' => $time, 'is_wave' => 0, 'is_delete' => 0)); //var_dump($multi_shipOrders);exit; $new_orders = array(); //经过排序后的多料号订单集合 if (empty($multi_shipOrders)) { self::$errCode = 100; self::$errMsg = '暂无可配货多料号订单'; return FALSE; } foreach ($multi_shipOrders as $val) { $area_count = substr_count($val['area'], ',') + 1; $area_id_count = self::get_area_ids_count($val['area']); //获取该订单所有区域ID索引值的总和 $new_orders[$area_count][$area_id_count][] = $val; } ksort($new_orders); //按照订单区域数从小到大排列 $success = array(); //生成成功发货单 $fail = array(); //生成失败发货单 foreach ($new_orders as $val) { ksort($val); //按照区域id综合从小到大排序 //print_r($val);exit; foreach ($val as $v) { //print_r($v);exit; foreach ($v as $order) { //print_r($order);exit; $wave_id = WhWaveInfoModel::get_wave_info('id', array('waveType' => 3, 'waveStatus' => 0, 'is_delete' => 0)); $wave_id = empty($wave_id) ? 0 : $wave_id[0]['id']; $info = self::make_wave($order['shipOrderId'], $wave_id, 0, '', 3); if ($info) { $success[] = $order['shipOrderId']; } else { $fail[] = array('shipOrderId' => $order['shipOrderId'], 'reason' => self::$errMsg); } } } } //var_dump($fail);exit; return array('success' => $success, 'fail' => $fail); }