Files
OMS/app/ome/controller/admin/vopczc.php
2025-12-28 23:13:25 +08:00

240 lines
9.0 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
/**
* Copyright © ShopeX http://www.shopex.cn. All rights reserved.
* See LICENSE file for license details.
*/
/**
* @author ykm 2018-10-29
* @describe 唯品会仓中仓
*/
class ome_ctl_admin_vopczc extends desktop_controller {
protected function _getBaseFilter() {
$filter = array (
'status' => array ( 'ready', 'progress' ),
'process' => 'FALSE',
'pause' => 'FALSE',
'parent_id' => 0,
'disabled' => 'false',
);
//获取操作员管辖仓库
$is_super = kernel::single('desktop_user')->is_super();
if (!$is_super) {
$oBranch = app::get('ome')->model('branch');
$branch_ids = $oBranch->getBranchByUser(true);
if ($branch_ids) {
$filter['ext_branch_id'] = $_POST['branch_id'] ? array_intersect(array($_POST['branch_id']), $branch_ids) : $branch_ids;
} else {
$filter['ext_branch_id'] = 'false';
}
} else {
$filter['ext_branch_id'] = $_POST['branch_id'] ? $_POST['branch_id'] : null;;
}
return $filter;
}
/**
* _views
* @return mixed 返回值
*/
public function _views(){
static $sub_menu;
if($sub_menu) {
return $sub_menu;
}
$sub_menu = array(
0 => array('label'=>app::get('base')->_('未打印'),'filter'=>array('expre_status'=>'false' ),'optional'=>false),
1 => array('label'=>app::get('base')->_('已打印'),'filter'=>array('expre_status'=>'true'),'optional'=>false),
);
foreach ($sub_menu as $k => $v) {
$sub_menu[$k]['filter'] = array_merge($this->_getBaseFilter(), $v['filter']);
$sub_menu[$k]['addon'] = 'showtab';
$sub_menu[$k]['href'] = 'index.php?app=' . $_GET['app'] . '&ctl=' . $_GET['ctl'] . '&act=' . $_GET['act'] . '&view=' . $k;
}
return $sub_menu;
}
/**
* index
* @return mixed 返回值
*/
public function index(){
$_GET['view'] = (int) $_GET['view'];
$params = array(
'title'=>'唯品会仓中仓列表',
'use_buildin_new_dialog' => false,
'use_buildin_set_tag'=>false,
'use_buildin_recycle'=>false,
'use_buildin_export'=>false,
'use_buildin_import'=>false,
'use_buildin_filter'=>true,
'use_view_tab' => true,
'base_filter' => $this->_getBaseFilter()
);
if(!isset($_GET['action'])) {
$panel = new desktop_panel($this);
$panel->setId('delivery_finder_top');
$panel->setTmpl('admin/finder/finder_panel_filter.html');
$panel->show('ome_mdl_delivery', $params);
}
$params['actions'] = array(
'expre' => array(
'label' => '打印三单',
'submit' => 'index.php?app=ome&ctl=admin_vopczc&act=printExpress',
'onclick'=>"_hmt.push(['_trackEvent', '订单发货操作', '打印快递单', 'b-打印快递单']);",
),
'waybill' => array(
'label' => '获取运单号',
'submit' => 'index.php?app=ome&ctl=admin_vopczc&act=getWaybill',
'target' => 'dialog::{title:\'获取运单号\',width:600,height:300}',
),
);
if($_GET['view'] == '1') {
unset($params['actions']['expre']);
} else {
unset($params['actions']['waybill']);
}
$this->finder('ome_mdl_delivery_vopczc',$params);
}
/**
* printExpress
* @return mixed 返回值
*/
public function printExpress() {
$msg = array();
$model = app::get('ome')->model('delivery_vopczc');
if($_POST['isSelectedAll'] == '_ALL_') {
if(!kernel::single('ome_view_helper')->isIndependentRds()) {
$this->splash('error', '', '为保障rds性能使用全选功能请先购买保障服务');
}
$baseFilter = $this->_getBaseFilter();
$param = array_merge($baseFilter, $_POST);
$model->defaultOrder = '';
$model->filter_use_like = true;
$selData = $model->getList('delivery_id', $param, 0, -1);
$arrRequestId = array();
foreach ($selData as $val) {
$arrRequestId[] = $val['delivery_id'];
}
unset($_POST['isSelectedAll']);
} else {
$arrRequestId = $_POST['delivery_id'];
}
//防止并发打印重复获取运单号
$_inner_key = sprintf("print_ids_%s", md5(implode(',',$arrRequestId)));
$aData = cachecore::fetch($_inner_key);
if ($aData === false) {
cachecore::store($_inner_key, 'printed', 5);
}else{
$this->splash('error', '',"选中的发货单已在打印三单中,请不要重复打印!!!如没有打印完成,请稍后重试!!!");
}
$PrintLib = kernel::single('ome_delivery_print');
$print_data = $PrintLib->getPrintDatas(array('filter' => array('delivery_id'=>$arrRequestId)),'vopczc','',true,$msg);
if(isset($msg['error_msg']) && $msg['error_msg']){
$this->splash('error', '',$msg['error_msg']);
}
if(isset($msg['warn_msg']) && $msg['warn_msg']){
$this->splash('error', '',$msg['warn_msg']);
}
$printDly = array();
$needExport = array();
$needGetWaybill = array();
foreach ($print_data['deliverys'] as $delivery) {
if($delivery['expre_status'] == 'false') {
$delivery['ident'] = $print_data['identInfo']['items'][$delivery['delivery_id']];//1-81030-0209_1
$printDly[$delivery['shop_id']][$delivery['delivery_id']] = $delivery;
}
if(empty($delivery['logi_no'])) {
$needGetWaybill[] = $delivery['delivery_id'];
}
foreach ($delivery['orders'] as $order) {
if(!($order['bool_extendstatus'] & ome_order_bool_extendstatus::__EXPORT_ORDER)) {
$needExport[] = $order;
}
}
}
if($needExport) {
kernel::single('ome_service_order')->exportOrder($needExport);
}
if($printDly) {
kernel::single('ome_event_trigger_shop_delivery')->printThirdBill($printDly);
}
if($print_data['errInfo']) {
$msg = '';
foreach ($print_data['errInfo'] as $dlyId => $errMsg) {
$msg .= $print_data['errBns'][$dlyId] . $errMsg . '<br/>';
}
$this->splash('error', '',$msg);
}
$this->splash('success', 'index.php?app=ome&ctl=admin_vopczc&act=index','操作完成');
}
/**
* message
* @param mixed $msg msg
* @return mixed 返回值
*/
public function message($msg) {
$this->pagedata['err'] = 'true';
$this->pagedata['base_dir'] = kernel::base_url();
$this->pagedata['time'] = date("Y-m-d H:i:s");
$this->pagedata['msg'] = $msg;
$this->display('admin/delivery/message.html');
}
/**
* 获取Waybill
* @return mixed 返回结果
*/
public function getWaybill() {
$model = app::get('ome')->model('delivery_vopczc');
$pageData = array(
'billName' => '唯品会仓中仓发货单获取运单号',
'request_url' => 'index.php?app=ome&ctl=admin_vopczc&act=dealGetWaybill',
'maxProcessNum' => 10,
'close' => true
);
$this->selectToPageRequest($model, $pageData, $this->_getBaseFilter());
}
/**
* dealGetWaybill
* @return mixed 返回值
*/
public function dealGetWaybill() {
$deliveryId = explode(';', $_POST['ajaxParams']);
$retArr = array(
'total' => count($deliveryId),
'succ' => 0,
'fail' => 0,
'fail_msg' => array()
);
$dlyRows = app::get('ome')->model('delivery')->getList('*', array('delivery_id'=>$deliveryId));
$branchDly = array();
foreach($dlyRows as $val) {
if($val['logi_no']) {
$retArr['succ'] ++;
continue;
}
$branchDly[$val['branch_id']][$val['delivery_id']] = $val;
}
$retArr['fail'] = count($deliveryId) - count($dlyRows);
foreach($branchDly as $branchId => $arrDly) {
$rs = kernel::single('ome_event_trigger_shop_delivery')->getDeliveryInfo($branchId, $arrDly);
foreach($arrDly as $dlyId => $val) {
if($rs[$dlyId]) {
$retArr['succ'] ++;
} else {
$retArr['fail'] ++;
$retArr['fail_msg'][] = array(
'obj_bn' => $arrDly[$dlyId]['delivery_bn'],
'msg' => '获取运单号失败'
);
}
}
}
echo json_encode($retArr);
}
}