Beispiel #1
0
 public function act_orderWeighingFlat()
 {
     $orderid = isset($_POST['orderid']) ? $_POST['orderid'] : "";
     $mailway = isset($_POST['channelId']) ? $_POST['channelId'] : "";
     //$partionId   = isset($_POST['partionId'])?$_POST['partionId']:"";//不作处理
     $orderweight = isset($_POST['orderweight']) ? $_POST['orderweight'] : "";
     if (!is_numeric($orderid) || empty($orderid)) {
         self::$errCode = 501;
         self::$errMsg = "错误的发货单号!";
         return false;
     }
     $where = "where id={$orderid}";
     $lists = orderWeighingModel::selectRecord($where);
     $calcweight = $lists[0]['calcWeight'] * 1000;
     //估算重量
     $userName = $_SESSION['userCnName'];
     /**重量拦截的逻辑**/
     $vip_users = C('weight_vip');
     //获取具有VIP权限的
     $lists = orderWeighingModel::selectOrderDetail($orderid);
     if (!in_array($userName, $vip_users)) {
         //判断是否具有vip操作权限
         $minRate = 0.8;
         $maxRate = 1.2;
     } else {
         $minRate = 0.5;
         $maxRate = 2;
     }
     if ($calcweight < 50 && $orderweight < 50) {
         if (abs($orderweight - $calcweight) >= 20) {
             self::$errCode = 509;
             self::$errMsg = "该订单重量与实际不符合!系统重量为{$calcweight}称重重量为{$orderweight}";
             return false;
         }
     } else {
         if (($orderweight < $calcweight * $minRate || $orderweight > $calcweight * $maxRate) && $calcweight != 0) {
             self::$errCode = 510;
             self::$errMsg = "该订单重量与实际不符合!系统重量为{$calcweight}称重重量为{$orderweight}";
             return false;
         }
     }
     TransactionBaseModel::begin();
     //更新状态,插入记录
     $userId = $_SESSION['userId'];
     $msg = orderWeighingModel::insertRecord($orderid, $userId);
     if (!$msg) {
         self::$errCode = 511;
         self::$errMsg = "插入称重记录失败!";
         TransactionBaseModel::rollback();
         return false;
     }
     $msg = orderWeighingModel::updateRecord($orderid, $orderweight, $userId);
     if (!$msg) {
         self::$errCode = 512;
         self::$errMsg = "更新操作记录表失败!";
         TransactionBaseModel::rollback();
         return false;
     }
     //更新发货单实际重量和状态
     $orderData = array('orderWeight' => $orderweight, 'orderStatus' => PKS_WDISTRICT);
     $msg = WhShippingOrderModel::update($orderData, $orderid);
     //orderWeighingModel::updateStatus($orderid);
     if (!$msg) {
         self::$errCode = 513;
         self::$errMsg = "更新发货单重量和状态失败!";
         TransactionBaseModel::rollback();
         return false;
     }
     //插入运输方式跟踪号申请记录表
     $transportData = array('shipOrderId' => $orderid, 'createTime' => time());
     $msg = WhWaveOrderTransportModel::insert($transportData);
     if (!$msg) {
         self::$errCode = 514;
         self::$errMsg = "插入运输方式跟踪号记录表失败!";
         TransactionBaseModel::rollback();
         return false;
     }
     WhPushModel::pushOrderStatus($orderid, 'PKS_WDISTRICT', $userId, time());
     //状态推送
     TransactionBaseModel::commit();
     return true;
 }
        if ($transport['fee'] < $shipFee) {
            $shipFee = $transport['fee'];
            $lastTransport = $transport;
        }
    }
    //运费最优策略,暂时只有EUB
    $bestTransport = getBestTransport($compareTrasprot, $lastTransport);
    $shipFee = $bestTransport['fee'];
    $transportId = $bestTransport['carrierId'];
    $channelId = $bestTransport['channelId'];
    $insertData = array('transportId' => $transportId, 'status' => 1, 'transportTime' => time());
    //启用事物
    WhWaveOrderTransportModel::begin();
    //更新申请记录表
    if (!WhWaveOrderTransportModel::update($insertData, ' shipOrderId = ' . $shipOrderId . ' AND status=0')) {
        $log .= "发货单:{$shipOrderId} 更新运输方式-{$transportId}记录表失败\n";
        WhWaveOrderTransportModel::rollback();
        continue;
    }
    //更新发货单表
    $shipOrderData = array('transportId' => $transportId, 'actualShipping' => $shipFee, 'channelId' => $channelId);
    if (!WhShippingOrderModel::update($shipOrderData, $shipOrderId)) {
        $log .= "发货单:{$shipOrderId} 更新运输方式-{$transportId},运费-{$shipFee}发货单表失败\n";
        WhWaveOrderTransportModel::rollback();
        continue;
    }
    $log .= "发货单:{$shipOrderId} 更新运输方式 - {$transportId},运费 - {$shipFee}记录表成功\n";
    WhWaveOrderTransportModel::commit();
}
//写日志
write_log("transport_assign/" . date('Y-m') . "/" . date('H') . ".txt", $log);
Beispiel #3
0
 /**
  * WaveBuildAct::make_wave()
  * 生成配货单  (单料号和单发货单)
  * @param int $shipOrderId  发货单ID
  * @param int $wave_id  发货单ID
  * @param integer $wave_status wave_id 没有传递时 生成的配货单状态 0可以继续添加 1完结配货单不许再添加
  * @param array $order_detail  订单明细
  * @param int $wave_type 配货单类型  1=》单个发货单 2-单料号 3-多料号
  * @return bool
  */
 public function make_wave($shipOrderId, $wave_id = 0, $wave_status = 0, $order_detail = '', $wave_type = 1)
 {
     $shipOrderId = intval(trim($shipOrderId));
     $wave_id = intval(trim($wave_id));
     $wave_status = intval(trim($wave_status));
     //print_r($shipOrderId);exit;
     if (!$shipOrderId) {
         self::$errCode = 200;
         self::$errMsg = '无效发货单ID!';
         return FALSE;
     }
     if (empty($order_detail)) {
         $order_detail = WhShippingOrderdetailModel::getShipDetails($shipOrderId);
         //获取订单明细
         if (empty($order_detail)) {
             //没有订单明细则直接返回
             self::$errCode = 201;
             self::$errMsg = '该发货单没有料号明细!';
             return FALSE;
         }
     }
     $order_limit = self::get_order_limit_info($order_detail);
     //获取当前订单的重量、料号数量、体积信息
     $area_info = self::get_area_info($order_detail);
     //获取订单区域、楼层信息
     //print_r($area_info);exit;
     WhBaseModel::begin();
     if (!$wave_id) {
         //不存在配货单号
         $startArea = current($area_info['areas']);
         //print_r($startArea);exit;
         $startArea = WhWaveAreaInfoModel::get_area_info('areaName', $startArea);
         //判断配货单区域类型
         $waveZone = self::judge_wave_zone($area_info['storey'], $area_info['areas']);
         //判断配货单区域类型
         if ($waveZone === FALSE) {
             self::$errCode = 203;
             self::$errMsg = '获取配货单区域类型失败!';
             return FALSE;
         }
         $data = array('storey' => implode(',', $area_info['storey']), 'startArea' => $startArea[0]['areaName'], 'totalWeight' => $order_limit['limitWeight'], 'totalVolume' => $order_limit['limitVolume'], 'totalSkus' => $order_limit['limitSkuNums'], 'totalOrders' => 1, 'waveStatus' => $wave_status, 'waveZone' => $waveZone, 'waveType' => $wave_type, 'createTime' => time(), 'printStorey' => $area_info['storey'][0]);
         if ($wave_type == 2) {
             //单料号配货单
             $data['sku'] = $order_detail[0]['sku'];
         }
         //print_r($data);exit;
         $wave_id = WhWaveInfoModel::insert_wave_info($data);
         //echo '生成配货单'.$wave_id."<br />";
         if ($wave_id === FALSE) {
             self::$errCode = 100;
             self::$errMsg = '生成配货单失败!';
             WhBaseModel::rollback();
             return FALSE;
         }
         $wave_number = WhWaveInfoModel::number_encode($wave_id);
         //生成配货单编号
         //print_r($wave_number);exit;
         /** 更新配货单编号**/
         $info = WhWaveInfoModel::update_wave_info(array('number' => $wave_number), array('id' => $wave_id));
         if (!$info) {
             self::$errCode = 108;
             self::$errMsg = '更新配货单编号失败!';
             WhBaseModel::rollback();
             return FALSE;
         }
         //echo '更新配货单编号'.$wave_number."<br />";
         /** end**/
     } else {
         //已存在配货单号
         $where = array('id' => $wave_id);
         $wave_info = WhWaveInfoModel::get_wave_info('*', $where);
         //获取配货单信息
         if (empty($wave_info)) {
             self::$errCode = 101;
             self::$errMsg = '没有该配货单信息!';
             return FALSE;
         }
         $wave_info = $wave_info[0];
         if ($wave_info['waveStatus'] != 0) {
             self::$errCode = 102;
             self::$errMsg = '该配货单已不能添加订单!';
             return FALSE;
         }
         $wave_type = $wave_info['waveType'];
         //配货单类型 单料号 多料号
         $order_limit['limitSkuNums'] += $wave_info['totalSkus'];
         $order_limit['limitWeight'] += $wave_info['totalWeight'];
         $order_limit['limitVolume'] += $wave_info['totalVolume'];
         $order_limit['limitOrderNums'] = $wave_info['totalOrders'] + 1;
         $is_wave = self::judge_single_shiporder($order_limit, $wave_type);
         //判断加上新订单是否超过单个配货单限制
         //var_dump($is_wave);exit;
         if ($is_wave === TRUE) {
             //完结配货单
             $update = array('waveStatus' => 1);
             $where = array('id' => $wave_id);
             $info = WhWaveInfoModel::update_wave_info($update, $where);
             //超过限制则完结该配货单
             return self::make_wave($shipOrderId, 0, $wave_status, $order_detail, $wave_type);
             //重新分配配货单
         } else {
             /** 更新配货单信息**/
             $update = array('totalSkus' => $order_limit['limitSkuNums'], 'totalWeight' => $order_limit['limitWeight'], 'totalVolume' => $order_limit['limitVolume'], 'totalOrders' => $order_limit['limitOrderNums']);
             $combine_area = self::combine_area_info($wave_info['startArea'], $area_info['areas']);
             //合并新加入订单的区域信息
             //print_r($combine_area);exit;
             $startArea = WhWaveAreaInfoModel::get_area_info('areaName', current($combine_area));
             $combine_storey = self::combine_storey_info($wave_info['storey'], $area_info['storey']);
             //合并楼层
             $waveZone = self::judge_wave_zone($combine_storey, $combine_area);
             //判断配货单区域类型
             $update['storey'] = implode(',', $combine_storey);
             $update['startArea'] = $startArea[0]['areaName'];
             $update['waveZone'] = $waveZone;
             $update['printStorey'] = $combine_storey[0];
             $where = array('id' => $wave_id);
             $info = WhWaveInfoModel::update_wave_info($update, $where);
             if (!$info) {
                 self::$errCode = 103;
                 self::$errMsg = '更新配货单信息失败!';
                 WhBaseModel::rollback();
                 return FALSE;
             }
             //echo '更新配货单'.$wave_id."<br />";
             /** 更新配货单信息end**/
         }
     }
     /** 插入收货记录表数据**/
     if (empty($area_info['areas'])) {
         self::$errCode = 111;
         self::$errMsg = '发货单区域信息为空!';
         WhBaseModel::rollback();
         return false;
     }
     $area_names = self::get_area_names($area_info['areas']);
     $storey = self::get_storey_list();
     //获取楼层列表
     //print_r($area_names);exit;
     $info = WhWaveReceiveRecordModel::insert_receive_data($wave_id, $area_names, $storey);
     //插入收获记录表区域信息
     if ($info === FALSE) {
         self::$errCode = 104;
         self::$errMsg = '插入收货记录表失败!';
         WhBaseModel::rollback();
         return false;
     }
     //echo '插入收货记录'.json_encode($area_names)."<br />";
     /** end**/
     /** 插入配货记录表数据**/
     $order_detail = self::merge_order_detail($order_detail);
     //合并同一生成时间下相同料号,相同仓位的料号信息
     //print_r($order_detail);exit;
     $scan_details = self::process_scan_details($order_detail);
     //处理订单详情生成相对应配货记录
     $info = WhWaveScanRecordModel::inser_scan_data($wave_id, $scan_details);
     if ($info === FALSE) {
         self::$errCode = 105;
         self::$errMsg = '插入配货记录表失败!';
         WhBaseModel::rollback();
         return false;
     }
     //echo '插入配货记录'.json_encode($scan_details)."<br />";
     /** end**/
     /** 插入配货单、发货单关系表**/
     $info = WhWaveShippingRelationModel::insert_relation_data($wave_id, $shipOrderId);
     if ($info === FALSE) {
         self::$errCode = 106;
         self::$errMsg = '插入配货单关系表失败!';
         WhBaseModel::rollback();
         return false;
     }
     //echo '插入配货单关系'.$wave_id.'----'.$shipOrderId."<br />";
     /** end**/
     /** 更新发货单分配状态**/
     $info = WhShippingOrderModel::update(array('is_wave' => 1), array('id' => $shipOrderId));
     if ($info === FALSE) {
         self::$errCode = 107;
         self::$errMsg = '更新发货单分配状态失败!';
         WhBaseModel::rollback();
         return false;
     }
     //echo '更新发货单分配状态'.$shipOrderId."<br />";
     /** end**/
     /** 更新多料号临时存放表**/
     if ($wave_type == 3) {
         //多料号发货单
         $info = whWaveMultiShipAreaRecordModel::update(array('is_wave' => 1), array('shipOrderId' => $shipOrderId));
         if ($info === FALSE) {
             self::$errCode = 108;
             self::$errMsg = '更新多料号订单临时存放表状态失败!';
             WhBaseModel::rollback();
             return false;
         }
         //echo '更新多料号订单临时存放表'.$shipOrderId."<br />";
     }
     /** end**/
     WhBaseModel::commit();
     return TRUE;
 }
Beispiel #4
0
 /**
  * OrderPrintAct::act_check_order()
  * 检查发货单信息
  * @return void
  */
 public function act_check_order()
 {
     $shipOrderId = intval($_REQUEST['order']);
     $is_preview = isset($_REQUEST['is_preview']) ? $_REQUEST['is_preview'] : 0;
     if (!$shipOrderId) {
         self::$errCode = '201';
         self::$errMsg = '请输入发货单';
         return FALSE;
     }
     $shipOrderInfo = WhShippingOrderModel::get_order_info(array('orderStatus', 'transportId', 'accountId'), $shipOrderId);
     if (empty($shipOrderInfo)) {
         self::$errCode = 202;
         self::$errMsg = '发货单' . $shipOrderInfo . ':没有该发货单信息!';
         return FALSE;
     }
     if (!$is_preview) {
         //打印模式
         if ($shipOrderInfo[0]['orderStatus'] != PKS_PRINT_SHIPPING_INVOICE) {
             self::$errCode = 203;
             self::$errMsg = '发货单' . $shipOrderInfo . ':不是待打印面单状态!';
             return FALSE;
         }
     }
     //得到非快递的运输方式ID
     $arr_transportId = C('flat_transport');
     $arr_transportId = array_keys($arr_transportId);
     $res = self::orderPrint($shipOrderId, $shipOrderInfo[0]['transportId'], $shipOrderInfo[0]['accountId']);
     if ($res) {
         $partion = WhOrderPartionRecordsModel::get_OrderPartionRecords($shipOrderId);
         //获取分区记录
         $partion = empty($partion) ? '' : $partion['partion'];
         self::$errCode = 200;
         self::$errMsg = $shipOrderId . '打印面单:' . $partion;
         $res = str_replace("'", '"', $res);
         if ($shipOrderInfo[0]['orderStatus'] == PKS_PRINT_SHIPPING_INVOICE && !$is_preview) {
             $status = in_array($shipOrderInfo[0]['transportId'], $arr_transportId) ? PKS_WAITING_SHIPPING_CHECKING : PKS_WAITING_LOADING;
             $info = WhShippingOrderModel::update(array('orderStatus' => $status), $shipOrderId);
             if (!$info) {
                 self::$errCode = 204;
                 self::$errMsg = '更新发货单状态失败!';
                 $res = $info;
             }
             $status = in_array($shipOrderInfo[0]['transportId'], $arr_transportId) ? 'PKS_WAITING_SHIPPING_CHECKING' : 'PKS_WAITING_LOADING';
             WhPushModel::pushOrderStatus($shipOrderId, $status, $_SESSION['userId'], time());
             //状态推送,需要改为发货组复核(订单系统提供状态常量)
         }
     } else {
         return $res;
     }
     return $res;
 }
Beispiel #5
0
 /**
  * 快递复核标记为发货异常
  * @return boolean
  * @author czq
  */
 public function act_signUnusual()
 {
     $shipOrderId = isset($_POST['shipOrderId']) ? intval($_POST['shipOrderId']) : 0;
     if (empty($shipOrderId)) {
         self::$errCode = 0;
         self::$errMsg = '请输入发货单信息!';
         return;
     }
     $shipOrder = WhShippingOrderModel::find(' id=' . $shipOrderId . ' AND is_delete = 0', 'id');
     if (!$shipOrder) {
         self::$errCode = 0;
         self::$errMsg = '发货单' . $shipOrder . '不存在!';
         return;
     }
     WhShippingOrderModel::begin();
     //更新状态为 发货单异常
     if (!WhShippingOrderModel::update(array('orderStatus' => PKS_UNUSUAL_SHIPPING_INVOICE), $shipOrderId)) {
         self::$errCode = 0;
         self::$errMsg = '发货单' . $shipOrder . '不存在!';
         WhShippingOrderModel::rollback();
         return false;
     }
     self::$errCode = 1;
     self::$errMsg = '发货单标记异常成功';
     WhShippingOrderModel::commit();
     return true;
 }
 public function view_stoppicking()
 {
     $_POST['waveId'] = $_POST['waveId'] ? $_POST['waveId'] : $_GET['waveId'];
     $waveId = WhWaveInfoModel::number_decode($_POST['waveId']);
     if ($waveId) {
         $wave = WhWaveInfoModel::find($waveId);
     }
     if (!$waveId || !$wave) {
         $msg = array('status' => 'A00', 'waveStatus' => 'A00', 'msg' => '波次配货单不存在,参数错误');
         echo json_encode($msg);
     }
     //检查当前波次是否已分拣完结
     $list = WhWavePickRecordModel::getSkuPickRecord($waveId);
     if ($list) {
         //把未完结的发货记录手动完结,修改配货记录状态为手动完结
         $Pickmessage = '异常发货单:<br/>';
         foreach ($list as $val) {
             if (WhWavePickRecordModel::update(array('pickStatus' => 3), ' shipOrderId=' . $val['shipOrderId'] . ' AND pickStatus = 0 AND is_delete = 0')) {
                 //修改配货单的状态为待复核
                 if (WhShippingOrderModel::update(array('orderStatus' => PKS_UNUSUAL_SHIPPING_INVOICE), ' id=' . $val['shipOrderId'])) {
                     $Pickmessage .= "发货单:{$val['shipOrderId']}--桶号:{$val['pickLight']}<br/>";
                 }
             }
         }
         $msg = array('waveStatus' => 'A99', 'msg' => $Pickmessage);
     } else {
         $msg = array('status' => 'A00', 'waveStatus' => 'A99', 'msg' => '波次已完成分拣,不需要手动完结');
     }
     echo json_encode($msg);
 }
Beispiel #7
0
 /**
  * WaveInfoManageView::makeSingleWave()
  * 生成单料号及单发货单配货单
  * @author Gary 
  * @return void
  */
 public function makeSingleWave($time)
 {
     $update = array('createUserId' => $_SESSION['userId'], 'createTime' => time(), 'waveStatus' => 1);
     $where = array('waveType in' => array(1, 2), 'createTime <=' => $time, 'createUserId' => 0, 'is_delete' => 0);
     $waveinfo = WhWaveInfoModel::get_wave_info('id', $where);
     //获取所有符合条件的配货单号
     WhBaseModel::begin();
     //更新配货单状态
     $info = WhWaveInfoModel::update_wave_info($update, $where);
     if (!$info) {
         WhBaseModel::rollback();
         return $info;
     }
     $waveIds = get_filed_array('id', $waveinfo);
     $waveIds = empty($waveIds) ? array(0) : $waveIds;
     $shipOrderIds = WhWaveShippingRelationModel::select(array('waveId in' => $waveIds), 'shipOrderId');
     //print_r($waveIds);exit;
     $shipOrderIds = get_filed_array('shipOrderId', $shipOrderIds);
     $shipOrderIds = empty($shipOrderIds) ? array(0) : $shipOrderIds;
     $info = WhShippingOrderModel::update(array('orderStatus' => PKS_PROCESS_GET_GOODS), array('id in' => $shipOrderIds));
     if (!$info) {
         WhBaseModel::rollback();
         return $info;
     }
     $info = WhBaseModel::affected_rows();
     WhBaseModel::commit();
     return $info;
 }
Beispiel #8
0
 /**
  * 配货收货
  * @return boolean
  * @author czq
  */
 public function act_orderPicking()
 {
     $zone = isset($_POST['zone']) ? strtoupper(trim($_POST['zone'])) : "";
     $invoiceNumber = isset($_POST['invoice']) ? trim($_POST['invoice']) : "";
     if (empty($zone)) {
         self::$errCode = 502;
         self::$errMsg = "区域不能为空";
         return false;
     }
     if (empty($invoiceNumber)) {
         self::$errCode = 502;
         self::$errMsg = "配货单号不能为空!";
         return false;
     }
     /*$start = time();*/
     $waveId = WhWaveInfoModel::number_decode($invoiceNumber);
     /*$firstF				= strpos($zone,'F');
     		$floor				= substr($zone,0,$firstF);
     		$area				= substr($zone,$firstF+1);*/
     /*$end = time();
     		echo $end - $start; echo "<br>";
     		$start = $end;*/
     $waveReceiveInfo = WhWaveReceiveRecordModel::find(array('waveId' => $waveId, 'area' => $zone));
     /*$end = time();
     		echo $end - $start; echo "<br>";
     		$start = $end;*/
     if (!$waveReceiveInfo) {
         //检查是否已经配货完成
         self::$errCode = 502;
         self::$errMsg = "此区域无需处理该配货单!";
         return false;
     }
     if ($waveReceiveInfo['scanStatus'] == 0) {
         //检查是否已经配货完成
         self::$errCode = 502;
         self::$errMsg = "此区域未配货完成!";
         return false;
     } else {
         if ($waveReceiveInfo['scanStatus'] == 2) {
             //检查是否已收货,防止重复收货
             self::$errCode = 502;
             self::$errMsg = "请不要重复收货!";
             return false;
         }
     }
     //插入记录配货表
     $receiveData = array('userId' => $_SESSION['userId'], 'time' => time(), 'scanStatus' => 2);
     WhWaveReceiveRecordModel::begin();
     if (!WhWaveReceiveRecordModel::update($receiveData, array('waveId' => $waveId, 'area' => $zone, 'is_delete' => 0))) {
         self::$errCode = 502;
         self::$errMsg = "更新收货失败!";
         WhWaveReceiveRecordModel::rollback();
         return false;
     }
     //查找是否已经全部收货
     $waveReceiveNum = WhWaveReceiveRecordModel::count(" waveId='{$waveId}' AND scanStatus !=2 AND is_delete=0 ");
     $statusMessage = '';
     if ($waveReceiveNum == 0) {
         //已经完结,更新波次为完结状态
         $waveInfoData = array('waveStatus' => WAVE_FINISH_GET_GOODS);
         if (!WhWaveInfoModel::update($waveInfoData, $waveId)) {
             self::$errCode = 502;
             self::$errMsg = "更新配货单完结状态失败!";
             WhWaveReceiveRecordModel::rollback();
             return false;
         }
         $statusMessage = '此配货单已经完结';
         //如果此波次全部已收货,那么需要把发货单的状态改为待分拣
         $shippingOrders = WhWaveShippingRelationModel::getShippingOrderIdsByWaveId($waveId);
         //更新发货单状态为待分拣
         foreach ($shippingOrders as $shipOrder) {
             if (!WhShippingOrderModel::update(array('orderStatus' => PKS_WAITING_SORTING), $shipOrder['shipOrderId'])) {
                 self::$errCode = 502;
                 self::$errMsg = '更新发货单状态失败!';
                 WhWaveReceiveRecordModel::rollback();
                 return false;
             }
         }
     }
     WhWaveReceiveRecordModel::commit();
     self::$errCode = 200;
     self::$errMsg = "收货成功!请扫描下一个配货单 " . $statusMessage;
     return true;
 }
Beispiel #9
0
 public function view_savepacket()
 {
     $packageid = intval($_POST['packageid']);
     $packet = WhOrderPartionPrintModel::find($packageid, 'status,partion,partitionId');
     if (!$packet) {
         $result = array('status' => 0, 'msg' => '口袋编号不存在');
         echo json_encode($result);
         exit;
     }
     $status = $packet['status'];
     $partion = $packet['partion'];
     $partionId = $packet['partitionId'];
     unset($packet);
     if ($status != 0) {
         $result = array('status' => 0, 'msg' => '该包裹已使用,请更换包裹编号!');
         echo json_encode($result);
         exit;
     }
     if (!$_SESSION['userId']) {
         $result = array('status' => 0, 'msg' => '请先登录系统');
         echo json_encode($result);
         exit;
     }
     $record = WhOrderPartionRecordsModel::getPartionRecords($partionId, $_SESSION['userId']);
     $totalnum = $record['totalnum'];
     $totalweight = $record['totalweight'];
     if (!$totalnum && !$totalweight) {
         $result = array('status' => 0, 'msg' => '该包裹分区下没有订单');
         echo json_encode($result);
         exit;
     }
     //更新口袋分区
     $data = array('packageId' => $packageid, 'modifyTime' => time());
     WhOrderPartionRecordsModel::update($data, "partitionId='" . $partionId . "' AND packageId=0 AND scanUserId='" . $_SESSION['userId'] . "'");
     //更新口袋打包
     $packet_data = array('totalWeight' => $totalweight, 'totalNum' => $totalnum, 'status' => 1, 'modifyTime' => time());
     WhOrderPartionPrintModel::update($packet_data, $packageid);
     $result = array('status' => 1, 'totalWeight' => round($totalweight / 1000, 3), 'totalNum' => $totalnum, 'msg' => '口袋打包成功');
     //更新订单状态
     $orders = WhOrderPartionRecordsModel::select("partitionId='" . $partionId . "' AND packageId='" . $packageid . "' AND scanUserId='" . $_SESSION['userId'] . "'");
     foreach ($orders as $val) {
         $orderIds[] = $val['shipOrderId'];
         WhPushModel::pushOrderStatus($val['shipOrderId'], 'PKS_DISTRICT_CHECKING', $_SESSION['userId'], time());
         //状态推送,需要改为待分区复核(订单系统提供状态常量)
     }
     $data = array('orderStatus' => PKS_DISTRICT_CHECKING);
     WhShippingOrderModel::update($data, array('id in' => $orderIds));
     echo json_encode($result);
 }