function act_checkWave() { $userId = $_SESSION['userId']; $wave = trim($_POST['wave']); $waveId = WhBaseModel::number_decode($wave); if (!$waveId) { self::$errCode = "001"; self::$errMsg = "请扫描配货单号!"; return FALSE; } $waveInfo = WhWaveInfoModel::get_wave_info('storey', $waveId); //获取配货单所有楼层 if (empty($waveInfo)) { self::$errCode = '002'; self::$errMsg = '配货单号' . $wave . '不存在!'; return FALSE; } $record = WhWaveFloorReceiveRecordModel::select('id', array('userId' => $userId, 'waveId' => $waveId, 'is_delete' => 0)); if (empty($record)) { $data['waveId'] = $waveId; $data['userId'] = $userId; $data['time'] = time(); $msg = WhWaveFloorReceiveRecordModel::insert($data); if (!$msg) { self::$errCode = '003'; self::$errMsg = '插入接收记录失败!'; return FALSE; } } $info = '该配货单需要配货楼层包括:<br />'; $storeys = explode(',', $waveInfo[0]['storey']); foreach ($storeys as $v) { $info .= $v . '楼<br />'; } return $info; }
public function act_manualSortingCheck() { $userId = $_SESSION['userId']; $waveId = isset($_POST['waveId']) ? $_POST['waveId'] : ""; $where = "number='{$waveId}'"; $waveInfo = WhWaveInfoModel::get_wave_info("*", $where); if (!$waveInfo) { self::$errCode = 502; self::$errMsg = "此配货单号不存在!"; return false; } if ($waveInfo[0]['waveStatus'] != WAVE_FINISH_GET_GOODS) { self::$errCode = 514; self::$errMsg = "此配货单不在【配货完成】状态,不能进行分拣操作!"; return false; } if ($waveInfo[0]['waveType'] == 3) { self::$errCode = 518; self::$errMsg = "此配货单属于多SKU生成的配货单,不能进行人工分拣!"; return false; } //一个发货单对应多个配货单的时候,发货单是唯一的, if ($waveInfo[0]['waveType'] == 1) { $waveId = $waveInfo[0]['id']; $result = WhWaveShippingRelationModel::select_not_scanning($waveId); $shipOrderId = $result[0]['shipOrderId']; if ($result[0]['pickUserId'] != 0) { self::$errCode = 520; self::$errMsg = "此配货单已经分拣过了!"; return false; } WhShippingOrderModel::begin(); $update = WhWaveShippingRelationModel::update(array('pickUserId' => $userId, 'pickTime' => time()), array('is_delete' => 0, 'waveId' => $waveId)); if (!$update) { self::$errCode = 519; self::$errMsg = "扫描该配货单失败,请联系负责人!"; WhShippingOrderModel::rollback(); return false; // $result = WhWaveShippingRelationModel::getShippingOrderIdsByWaveId($waveId); //$shipOrderId = $result[0]['shipOrderId']; //查询还没有扫描的配货单 } $select_not_scanning = WhWaveShippingRelationModel::select_not_scanning_by_id($shipOrderId); $not_scanning_waveId = ''; //还没有分拣的配货单 if ($select_not_scanning) { foreach ($select_not_scanning as $val) { $not_scanning_waveId .= $val['waveId'] . ','; } self::$errMsg = "扫描该配货单'{$waveId}'成功,对应发货单'{$shipOrderId}'的配货单'{$not_scanning_waveId}'还没有分拣!"; } else { self::$errMsg = "扫描该配货单'{$waveId}'成功,对应的发货单'{$shipOrderId}'已经分拣完成,请处理完成之后拿去复核!"; //获取一个发货单对应多个配货单的每个配货单号 $result = OmAvailableModel::getTNameList("wh_wave_shipping_relation", "waveId", "where shipOrderId='{$shipOrderId}' and is_delete=0 "); $wave_all = ''; foreach ($result as $values) { $wave_all .= $values['waveId'] . ','; } $wave_all = trim($wave_all, ','); //得到该发货单下所有配货单的信息 $scan_record = OmAvailableModel::getTNameList("wh_wave_scan_record", "waveId,sku,skuAmount,amount", "where waveId in ('{$wave_all}') and scanStatus = 1 and is_delete=0 "); $picklist_all = array(); foreach ($scan_record as $record) { $data = array('waveId' => $record['waveId'], 'shipOrderId' => $shipOrderId, 'sku' => $record['sku'], 'skuAmount' => $record['skuAmount'], 'amount' => $record['amount'], 'pickStatus' => 1, 'pickUserId' => intval($_SESSION['userId']), 'pickTime' => time(), 'deleteUserId' => '0', 'deleteTime' => '0', 'is_delete' => '0'); $picklist_all[] = $data; } if (!WhWavePickRecordModel::insert($picklist_all, true)) { WhShippingOrderModel::rollback(); self::$errCode = 517; self::$errMsg = "该配货单插入分拣记录失败!"; return false; } $where = "id = '{$shipOrderId}' AND orderStatus='" . PKS_WAITING_SORTING . "'"; if (!WhShippingOrderModel::update_shipping_order($where, "orderStatus='" . PKS_WIQC . "'")) { WhShippingOrderModel::rollback(); self::$errCode = 516; self::$errMsg = "此配货单所属发货单{$shipOrderId}更新状态失败!"; return false; } } WhPushModel::pushOrderStatus($shipOrderId, 'PKS_WIQC', $_SESSION['userId'], time()); //状态推送,需要改为待复核单(订单系统提供状态常量) WhShippingOrderModel::commit(); self::$errCode = 200; return true; } /* if(empty($waveInfo[0]['sku'])){ self::$errCode = 515; self::$errMsg = "此配货单不属于单SKU生成的配货单,不能进行人工分拣!"; return false; } */ $waveId = $waveInfo[0]['id']; //echo $waveId; $shippOrders = WhWaveShippingRelationModel::getShippingOrderIdsByWaveId($waveId); //var_dump($shippOrders); WhShippingOrderModel::begin(); foreach ($shippOrders as $shippOrder) { $shipOrderId = $shippOrder['shipOrderId']; $where = "id = '{$shipOrderId}' AND orderStatus='" . PKS_WAITING_SORTING . "'"; if (!WhShippingOrderModel::update_shipping_order($where, "orderStatus='" . PKS_WIQC . "'")) { WhShippingOrderModel::rollback(); self::$errCode = 516; self::$errMsg = "此配货单所属发货单{$shipOrderId}更新状态失败!"; return false; } } $pick = WhWavePickRecordModel::find("waveId='{$waveId}'"); if (!$pick) { $picklist = array(); $list = WhShippingOrderdetailModel::getShippingOrderSkuList($waveId); foreach ($list as $val) { $data = array('waveId' => $val['waveId'], 'shipOrderId' => $val['shipOrderId'], 'sku' => $val['sku'], 'skuAmount' => $val['amount'], 'amount' => 0, 'pickStatus' => 1, 'pickUserId' => intval($_SESSION['userId']), 'pickTime' => time(), 'deleteUserId' => '0', 'deleteTime' => '0', 'is_delete' => '0'); $picklist[] = $data; } if (!WhWavePickRecordModel::insert($picklist, true)) { WhShippingOrderModel::rollback(); self::$errCode = 517; self::$errMsg = "该配货单插入分拣记录失败!"; return false; } else { foreach ($picklist as $lists) { WhPushModel::pushOrderStatus($lists['shipOrderId'], 'PKS_WIQC', $_SESSION['userId'], time()); //状态推送,需要改为待复核单(订单系统提供状态常量) } } } WhShippingOrderModel::commit(); self::$errCode = 200; self::$errMsg = "该配货单分拣成功,请处理完成之后拿去复核!"; return true; }
Core::getInstance(); global $dbConn; $userName = $_SESSION['userName']; $ids = $_GET['ids']; $ids = explode(',', $ids); $create_time = date('Y-m-d'); $waveTypes = array(1 => '单发货单', 2 => '单料号', 3 => '多料号'); $waveZones = array(1 => '同区域', 2 => '同楼层跨区域', 3 => '跨楼层'); $color_config = self::get_color_config(); //颜色配置 $update = WhWaveInfoModel::update_wave_info(array('waveStatus' => 2), array('id in' => $ids, 'waveStatus' => 1)); if (!$update) { echo '更新配货单状态失败!请重新打印!'; exit; } $wave_info = WhWaveInfoModel::get_wave_info('id, number, waveType, waveZone,startArea, printStorey', array('id in' => $ids)); if (!empty($wave_info)) { $total_nums = count($wave_info); foreach ($wave_info as $key => $wave) { $receive_info = array(); //区域路由 /*$receive_area = WhWaveReceiveRecordModel::select(array('waveId'=>$wave['id'], 'order by'=> 'id asc'), 'area'); if(!empty($receive_area)){ foreach($receive_area as $v){ $receive_info .= " {$v['area']} =>"; } $receive_info = trim($receive_info, '=>'); }*/ $page_num = 35; $scan_record = WhWaveScanRecordModel::get_scan_record_union_area($wave['id']); //获取配货记录及区域负责人id
/** * 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); }
/** * 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; }