/** * WhWaveInfoModel::getWaveList() * 获取用户负责区域的配货单列表 * @param $uid * @author cmf * @return */ public static function getWaveList() { $uid = $_SESSION['userId']; $wavelist = array(); /*$sql = "select a.id as waveId from wh_wave_info a left join wh_wave_receive_record b ON(a.id=b.waveId) left join wh_wave_area_info c ON(c.areaName=b.area AND c.is_delete=0) left join wh_wave_route_relation d ON(c.id=d.name AND d.is_delete=0) left join wh_wave_area_user_relation e ON(e.userId='".$uid."' AND e.areaId=c.id) where b.scanStatus='0' AND b.is_delete=0 AND e.userId IS NOT NULL group by a.id order by a.printStorey DESC, d.route asc, a.id asc limit 20";*/ $sql = "select a.id as waveId,a.number from wh_wave_info a \n\t\t\t\tleft join wh_wave_receive_record b ON(a.id=b.waveId)\n\t\t\t\tleft join wh_wave_area_info c ON(c.areaName=b.area AND c.is_delete=0)\n\t\t\t\tleft join wh_wave_route_relation d ON(c.areaName=d.name AND d.is_delete=0)\n\t\t\t\tleft join wh_wave_area_user_relation e ON(e.userId='" . $uid . "' AND e.areaId=c.id)\t\t\t\t\n\t\t\t\twhere b.scanStatus='0' AND b.is_delete=0 AND e.userId IS NOT NULL group by a.id order by a.printStorey DESC, d.route asc, a.id asc limit 20"; $wavelist = WhWaveInfoModel::query($sql); //foreach($wavelist as $key => $val){ // $val['number'] = WhWaveInfoModel::number_encode($val['waveId']); // $wavelist[$key] = $val; // } return $wavelist; }
/** * 发货单投放 * @author czq */ public function act_shipOrderpick() { $waveId = isset($_POST['waveId']) ? intval($_POST['waveId']) : ''; $shipOrderId = isset($_POST['shipOrderId']) ? intval(trim($_POST['shipOrderId'])) : ''; $waveId = WhWaveInfoModel::number_decode($waveId); if (!$waveId || !$shipOrderId) { $msg = array('status' => 'A00', 'waveStatus' => 'A00', 'msg' => '波次配货单不存在,参数错误'); echo json_encode($msg); exit; } $pickRecord = WhWaveShippingPickRecordModel::getRecordInfoByShipOrderId($shipOrderId); if (!$pickRecord) { $msg = array('status' => 'A00', 'waveStatus' => 'A00', 'msg' => '此波次的发货单' . $shipOrderId . '不存在'); echo json_encode($msg); exit; } else { if ($pickRecord[0]['pickStatus'] == 1) { $msg = array('status' => 'A00', 'waveStatus' => 'A00', 'msg' => '此发货单已投放过,桶号为:' . $pickRecord[0]['pickLight']); echo json_encode($msg); exit; } } //更新发货单投放记录表 $data = array('pickStatus' => 1, 'pickUserId' => $_SESSION['userId'], 'pickTime' => time()); WhWaveShippingPickRecordModel::update($data, ' shipOrderId=' . $shipOrderId); //检查当前发货单是否已完结分拣 $ShipOrderpickrecord = WhWaveShippingPickRecordModel::select("waveId='" . $waveId . "' AND pickStatus=0 AND is_delete=0"); if (!$ShipOrderpickrecord) { //最后一个投放 $msg = array('status' => 'A' . ($pickRecord[0]['pickLight'] >= 10 ? $pickRecord[0]['pickLight'] : '0' . $pickRecord[0]['pickLight']), 'pickLight' => $pickRecord[0]['pickLight'] . '号桶', 'shipOrderId' => $pickRecord[0]['shipOrderId'], 'waveStatus' => 'A99', 'msg' => '发货单已投放完毕,请投放料号!'); } else { $msg = array('status' => 'A' . ($pickRecord[0]['pickLight'] >= 10 ? $pickRecord[0]['pickLight'] : '0' . $pickRecord[0]['pickLight']), 'pickLight' => $pickRecord[0]['pickLight'] . '号桶', 'shipOrderId' => $pickRecord[0]['shipOrderId'], 'waveStatus' => 'A00', 'msg' => ''); } echo json_encode($msg); exit; }
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
/** * WaveOrderPrintingView::view_prints() * 对配货单进行打印预览 * @author cxy * @return void */ public function view_prints() { $shipOrderId = trim($_GET['shipOrderId']); $waveId = trim($_GET['waveId']); $wave = WhWaveInfoModel::find($waveId); if ($wave['waveType'] == 2) { //单料号的配货单 //if($shipOrderId !='null'){ // echo $shipOrderId; // $orderlist = WhWaveScanRecordModel::getShipOrders($waveId, $shipOrderId); // }else{ $orderlist = WhWaveScanRecordModel::getShipOrders($waveId); // } $onesku = true; } else { // if($shipOrderId !='null'){ // $orderlist = WhWaveShippingRelationModel::getShipOrders($waveId, $shipOrderId); //}else{ $orderlist = WhWaveShippingRelationModel::getShipOrders($waveId); // } $onesku = false; } if (!$orderlist) { $return = array('status' => 1, 'msg' => '该配货单下无此发货单,不能打印'); echo $return; exit; } $carries = WhBaseModel::cache('trans.carrier.info.get'); if (!$carries) { //接口获取快递运输方式 require_once WEB_PATH . "html/api/include/opensys_functions.php"; $paramArr = array('method' => 'trans.carrier.info.get', 'format' => 'json', 'v' => '1.0', 'username' => 'purchase', 'type' => 1); $result = json_decode(callOpenSystem($paramArr), true); $templist = $result['data']; if ($templist) { foreach ($templist as $val) { $carries[$val['id']] = $val; $carries['express_ids'][] = $val['id']; } } WhBaseModel::cache('trans.carrier.info.get', $carries); } foreach ($orderlist as $key => $val) { if ($val['transportId'] && in_array($val['transportId'], $carries['express_ids'])) { $val['isexpress'] = 1; $express_ordids[] = $val['shipOrderId']; } else { $val['isexpress'] = 0; $ordids[] = $val['shipOrderId']; } $orderlist[$key] = $val; } // var_dump($onesku); // print_r($orderlist); $this->smarty->assign('onesku', $onesku); $this->smarty->assign('orderlist', $orderlist); $this->smarty->display('waveOrderPrinting_startprint.htm'); }
/** * 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); }
public function view_savescan() { $id = intval($_POST['id'] ? $_POST['id'] : $_GET['id']); $waveId = WhWaveInfoModel::number_decode($_POST['waveId'] ? $_POST['waveId'] : $_GET['waveId']); $neednum = $_POST['neednum'] ? $_POST['neednum'] : $_GET['neednum']; $readynum = $_POST['readynum'] ? $_POST['readynum'] : $_GET['readynum']; $sku = get_goodsSn($_POST['sku'] ? $_POST['sku'] : $_GET['sku']); $record = WhWaveScanRecordModel::find($id); if (!$readynum) { $return = array('status' => 0, 'msg' => '配货数量不能为0'); echo json_encode($return); exit; } if (!$record) { $return = array('status' => 0, 'msg' => '错误料号信息,料号不存在'); echo json_encode($return); exit; } if ($waveId != $record['waveId']) { $return = array('status' => 0, 'msg' => '配货单号与系统记录不符'); echo json_encode($return); exit; } if (strtoupper($sku) != strtoupper($record['sku'])) { $return = array('status' => 0, 'msg' => '料号与系统记录不符'); echo json_encode($return); exit; } if ($readynum > $record['skuAmount']) { $return = array('status' => 0, 'msg' => '配货数量不能大于总配货数'); echo json_encode($return); exit; } $amount = $record['amount'] + $readynum; if ($amount > $record['skuAmount']) { $return = array('status' => 0, 'msg' => '当前配货数量超过待配货数'); echo json_encode($return); exit; } $data = array('amount' => $amount, 'scanStatus' => $amount == $record['skuAmount'] ? 1 : 0); if ($data['scanStatus']) { $data['scanTime'] = time(); } $result = WhWaveScanRecordModel::update($data, $id); if ($result) { if ($data['scanStatus']) { //检查当前配货单在当前区域已否已配完 $waveId = $record['waveId']; $area = $record['area']; $wave_area = WhWaveScanRecordModel::find("waveId='{$waveId}' AND area='{$area}' AND scanStatus=0 AND is_delete=0"); if (!$wave_area) { //当前区域已配完 $update_data = array('scanStatus' => 1); WhWaveReceiveRecordModel::update($update_data, "waveId='{$waveId}' AND area='{$area}' AND is_delete=0"); $wave = WhWaveScanRecordModel::find("waveId='{$waveId}' AND scanStatus=0 AND is_delete=0"); if (!$wave) { /*//当前波次已配完 $update_data = array( 'waveStatus' => 3, ); WhWaveInfoModel::update($update_data, "id='$waveId' AND is_delete=0");*/ } } } $return = array('status' => 1, 'msg' => '配货成功'); echo json_encode($return); } else { $return = array('status' => 0, 'msg' => '配货失败,未知错误'); echo json_encode($return); } }
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); }
/** * 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; }
/** * 获取配货单的接下来的配货区域 * @return string * @author czq */ public static function act_orderPickRoute() { $invoiceNumber = isset($_POST['invoice']) ? trim($_POST['invoice']) : ""; if (empty($invoiceNumber)) { self::$errCode = 502; self::$errMsg = "配货单号不能为空!"; return false; } $waveId = WhWaveInfoModel::number_decode($invoiceNumber); //是否已完结 $waveInfo = WhWaveInfoModel::find(array('id' => $waveId, 'is_delete' => 0), 'waveStatus'); if ($waveInfo['waveStatus'] == WAVE_FINISH_GET_GOODS) { self::$errCode = 502; self::$errMsg = "此配货单已经完结!"; return false; } //只获取未配货的三个路由区域 $waveReceiveInfo = WhWaveReceiveRecordModel::getNextReceiveRoute($waveId); if (!$waveReceiveInfo) { self::$errCode = 502; self::$errMsg = "未找到收货区域!"; return false; } $str = '未收货路由(显示部分):'; $areas = array(); foreach ($waveReceiveInfo as $wave) { $areas[] = $wave['area']; } $str .= implode('=>', $areas); self::$errCode = 200; self::$errMsg = "获取收货区域成功!"; return $str; }