Exemplo n.º 1
0
 /**
  * WaveInfoManageView::view_makeMultiWave()
  * 生成多料号配货单
  * @param $time 操作时间
  * @author Gary
  * @return void
  */
 public function makeMultiWave($time)
 {
     $waveBuild = new WaveBuildAct();
     $info = $waveBuild->make_multi_wave($time);
     //返回多料号配货单生成情况
     $update = array('createUserId' => $_SESSION['userId'], 'createTime' => time(), 'waveStatus' => 1);
     $where = array('waveType' => 3, 'createUserId' => 0, 'is_delete' => 0);
     WhBaseModel::begin();
     $a = WhWaveInfoModel::update_wave_info($update, $where);
     if ($a) {
         $shipOrderIds = empty($info['success']) ? 0 : $info['success'];
         WhShippingOrderModel::update(array('orderStatus' => PKS_PROCESS_GET_GOODS), array('id in' => $shipOrderIds));
         $info['success'] = WhBaseModel::affected_rows();
     }
     WhBaseModel::commit();
     return $info;
 }
Exemplo n.º 2
0
 /**
  * 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);
 }
Exemplo n.º 3
0
                                    $detailId = OmAvailableModel::addTNameRow($detail_tname, $detail_set);
                                    if (!$detailId) {
                                        Log::write("INSERT INTO " . $detail_tname . $detail_set, Log::ERR);
                                        OmAvailableModel::rollback();
                                        $detail_flag = false;
                                        break;
                                    }
                                }
                                if ($detail_flag) {
                                    echo "发货单[{$shipOrderId}]入库成功.\n\n";
                                    $msg->delivery_info['channel']->basic_ack($msg->delivery_info['delivery_tag']);
                                    OmAvailableModel::commit();
                                }
                            }
                        }
                    }
                }
            }
            if ($sku_flag) {
                $waveBuild = new WaveBuildAct();
                $waveBuild->waveBuild($shipOrderId);
            }
        }
    }
};
$channel->basic_consume($queue_name, '', false, true, false, false, $callback);
while (count($channel->callbacks)) {
    $channel->wait();
}
$channel->close();
$connection->close();