//Controller
//订单组日工作量列表
public function orderDayWorkloadAction() {
if ($this->_request->isPost()) {
$warehouseId = $this->_request->getParam("userWarehouse", "");
$dateFrom = $this->_request->getParam("dateFrom", "");
$post = $this->_request->getParam("post", "");
$return = array(
"ask" => 0,
"msg" => "",
"data" => "",
"count" => "",
);
$row = array();
//最快时间
$owFast = "";
//平均时间
$owAvg = "";
//权限
$session = new Zend_Session_Namespace("userAuth");
$permissions = Common_Service_Verfication::check($session->userID, "order", "order", "orderdayworkload", "");
if (!$dateFrom) {
$return['msg'] = "请选择时间";
die(Zend_Json::encode($return));
}
$combination = array(
"warehouse_id" => $warehouseId,
"ow_date" => $dateFrom,
"ow_post" => $post,
);
$opIdInfo = Order_Service_OrderWorkload::getCombination($combination, "*");
if (!$opIdInfo) {
$return['msg'] = "没有相关数据";
die(Zend_Json::encode($return));
}
foreach ($opIdInfo as $value) {
//时间、仓库、用户 ID 、岗位作为键
$owDate = $value['ow_date'];
$warehouse_id = $value['warehouse_id'];
$userId = $value['user_id'];
$owPost = $value['ow_post'];
$name = User_Service_User::getByUserId($value['user_id']);
$upName = User_Service_Position::getByUpIdS(array("up_id" => $name['up_id']));
$row[$owDate . '-' . $warehouse_id . '-' . $userId . '-' . $owPost]['warehouse_id'] = $value['warehouse_id'];
//时间
$row[$owDate . '-' . $warehouse_id . '-' . $userId . '-' . $owPost]['ow_date'] = $value['ow_date'];
//姓名
$row[$owDate . '-' . $warehouse_id . '-' . $userId . '-' . $owPost]['ow_user_name'] = $value['ow_user_name'];
//岗位
$row[$owDate . '-' . $warehouse_id . '-' . $userId . '-' . $owPost]['up_name'] = $upName[0]['up_name'];
//账号开通时间
$row[$owDate . '-' . $warehouse_id . '-' . $userId . '-' . $owPost]['create_date'] = $name['create_date'];
$row[$owDate . '-' . $warehouse_id . '-' . $userId . '-' . $owPost]['ow_post'] = $value['ow_post'];
//根据时间、仓库、用户 ID 岗位作为键、组成二维数组,如果有相同的键,就把对应值相加
if (!isset($row[$owDate . '-' . $warehouse_id . '-' . $userId . '-' . $owPost]['ow_total_pickup'])) {
$row[$owDate . '-' . $warehouse_id . '-' . $userId . '-' . $owPost]['ow_total_pickup'] = $value['ow_total_pickup'];
} else {
$row[$owDate . '-' . $warehouse_id . '-' . $userId . '-' . $owPost]['ow_total_pickup'] += $value['ow_total_pickup'];
}
//订单票数为一票的情况下显示规范
if ($value['ow_orders'] == 1 && ($value['ow_avg'] > $value['ow_slow'] || $value['ow_overtime_qty'] > 0)) {
$owFast = $value['ow_slow'];
$owAvg = $value['ow_slow'];
} else {
$owFast = $value['ow_fast'];
$owAvg = $value['ow_avg'];
}
if ($value['ow_type'] == 0) {
$row[$owDate . '-' . $warehouse_id . '-' . $userId . '-' . $owPost]['ow_fastA'] = $owFast;
$row[$owDate . '-' . $warehouse_id . '-' . $userId . '-' . $owPost]['ow_avgA'] = $owAvg;
$row[$owDate . '-' . $warehouse_id . '-' . $userId . '-' . $owPost]['ow_slowA'] = $value['ow_slow'];
$row[$owDate . '-' . $warehouse_id . '-' . $userId . '-' . $owPost]['ow_ordersA'] = $value['ow_orders'];
$row[$owDate . '-' . $warehouse_id . '-' . $userId . '-' . $owPost]['ow_overtime_qtyA'] = $value['ow_overtime_qty'];
$row[$owDate . '-' . $warehouse_id . '-' . $userId . '-' . $owPost]['ow_moreA'] = $value['ow_more'];
$row[$owDate . '-' . $warehouse_id . '-' . $userId . '-' . $owPost]['ow_wrongA'] = $value['ow_wrong'];
$row[$owDate . '-' . $warehouse_id . '-' . $userId . '-' . $owPost]['ow_leakageA'] = $value['ow_leakage'];
} else if ($value['ow_type'] == 1) {
$row[$owDate . '-' . $warehouse_id . '-' . $userId . '-' . $owPost]['ow_fastB'] = $owFast;
$row[$owDate . '-' . $warehouse_id . '-' . $userId . '-' . $owPost]['ow_avgB'] = $owAvg;
$row[$owDate . '-' . $warehouse_id . '-' . $userId . '-' . $owPost]['ow_slowB'] = $value['ow_slow'];
$row[$owDate . '-' . $warehouse_id . '-' . $userId . '-' . $owPost]['ow_ordersB'] = $value['ow_orders'];
$row[$owDate . '-' . $warehouse_id . '-' . $userId . '-' . $owPost]['ow_overtime_qtyB'] = $value['ow_overtime_qty'];
$row[$owDate . '-' . $warehouse_id . '-' . $userId . '-' . $owPost]['ow_moreB'] = $value['ow_more'];
$row[$owDate . '-' . $warehouse_id . '-' . $userId . '-' . $owPost]['ow_wrongB'] = $value['ow_wrong'];
$row[$owDate . '-' . $warehouse_id . '-' . $userId . '-' . $owPost]['ow_leakageB'] = $value['ow_leakage'];
} else {
$row[$owDate . '-' . $warehouse_id . '-' . $userId . '-' . $owPost]['ow_fastC'] = $owFast;
$row[$owDate . '-' . $warehouse_id . '-' . $userId . '-' . $owPost]['ow_avgC'] = $owAvg;
$row[$owDate . '-' . $warehouse_id . '-' . $userId . '-' . $owPost]['ow_slowC'] = $value['ow_slow'];
$row[$owDate . '-' . $warehouse_id . '-' . $userId . '-' . $owPost]['ow_ordersC'] = $value['ow_orders'];
$row[$owDate . '-' . $warehouse_id . '-' . $userId . '-' . $owPost]['ow_overtime_qtyC'] = $value['ow_overtime_qty'];
$row[$owDate . '-' . $warehouse_id . '-' . $userId . '-' . $owPost]['ow_moreC'] = $value['ow_more'];
$row[$owDate . '-' . $warehouse_id . '-' . $userId . '-' . $owPost]['ow_wrongC'] = $value['ow_wrong'];
$row[$owDate . '-' . $warehouse_id . '-' . $userId . '-' . $owPost]['ow_leakageC'] = $value['ow_leakage'];
}
if (!isset($row[$owDate . '-' . $warehouse_id . '-' . $userId . '-' . $owPost]['up_name'])) {
$row[$owDate . '-' . $warehouse_id . '-' . $userId . '-' . $owPost]['up_name'] = "";
}
if (!isset($row[$owDate . '-' . $warehouse_id . '-' . $userId . '-' . $owPost]['create_date'])) {
$row[$owDate . '-' . $warehouse_id . '-' . $userId . '-' . $owPost]['create_date'] = "";
}
if (!isset($row[$owDate . '-' . $warehouse_id . '-' . $userId . '-' . $owPost]['ow_fastA'])) {
$row[$owDate . '-' . $warehouse_id . '-' . $userId . '-' . $owPost]['ow_fastA'] = "";
$row[$owDate . '-' . $warehouse_id . '-' . $userId . '-' . $owPost]['ow_avgA'] = "";
$row[$owDate . '-' . $warehouse_id . '-' . $userId . '-' . $owPost]['ow_slowA'] = "";
$row[$owDate . '-' . $warehouse_id . '-' . $userId . '-' . $owPost]['ow_ordersA'] = "";
$row[$owDate . '-' . $warehouse_id . '-' . $userId . '-' . $owPost]['ow_overtime_qtyA'] = "";
$row[$owDate . '-' . $warehouse_id . '-' . $userId . '-' . $owPost]['ow_moreA'] = "";
$row[$owDate . '-' . $warehouse_id . '-' . $userId . '-' . $owPost]['ow_wrongA'] = "";
$row[$owDate . '-' . $warehouse_id . '-' . $userId . '-' . $owPost]['ow_leakageA'] = "";
}
if (!isset($row[$owDate . '-' . $warehouse_id . '-' . $userId . '-' . $owPost]['ow_fastB'])) {
$row[$owDate . '-' . $warehouse_id . '-' . $userId . '-' . $owPost]['ow_fastB'] = "";
$row[$owDate . '-' . $warehouse_id . '-' . $userId . '-' . $owPost]['ow_avgB'] = "";
$row[$owDate . '-' . $warehouse_id . '-' . $userId . '-' . $owPost]['ow_slowB'] = "";
$row[$owDate . '-' . $warehouse_id . '-' . $userId . '-' . $owPost]['ow_ordersB'] = "";
$row[$owDate . '-' . $warehouse_id . '-' . $userId . '-' . $owPost]['ow_overtime_qtyB'] = "";
$row[$owDate . '-' . $warehouse_id . '-' . $userId . '-' . $owPost]['ow_moreB'] = "";
$row[$owDate . '-' . $warehouse_id . '-' . $userId . '-' . $owPost]['ow_wrongB'] = "";
$row[$owDate . '-' . $warehouse_id . '-' . $userId . '-' . $owPost]['ow_leakageB'] = "";
}
if (!isset($row[$owDate . '-' . $warehouse_id . '-' . $userId . '-' . $owPost]['ow_fastC'])) {
$row[$owDate . '-' . $warehouse_id . '-' . $userId . '-' . $owPost]['ow_fastC'] = "";
$row[$owDate . '-' . $warehouse_id . '-' . $userId . '-' . $owPost]['ow_avgC'] = "";
$row[$owDate . '-' . $warehouse_id . '-' . $userId . '-' . $owPost]['ow_slowC'] = "";
$row[$owDate . '-' . $warehouse_id . '-' . $userId . '-' . $owPost]['ow_ordersC'] = "";
$row[$owDate . '-' . $warehouse_id . '-' . $userId . '-' . $owPost]['ow_overtime_qtyC'] = "";
$row[$owDate . '-' . $warehouse_id . '-' . $userId . '-' . $owPost]['ow_moreC'] = "";
$row[$owDate . '-' . $warehouse_id . '-' . $userId . '-' . $owPost]['ow_wrongC'] = "";
$row[$owDate . '-' . $warehouse_id . '-' . $userId . '-' . $owPost]['ow_leakageC'] = "";
}
}
$return = array(
"ask" => 1,
"data" => $row,
"count" => count($row),
"permissions" => $permissions,
);
die(Zend_Json::encode($return));
}
//岗位
$this->view->post = Order_Service_OrderWorkload::$post;
echo Cff::renderTpl($this->tplDirectory . "order-day-workload.tpl", "layout");
}
//Services
//岗位
public static $post = array(
"配货员",
"打包员",
"分拣员",
);
/*
* $combination array() 条件
* $type * || COUNT(*)
* $page Integer 页
* $pageSize Integer 条数
*/
public static function getCombination($combination, $type = "*", $page = 0, $pageSize = 0) {
$model = new Order_Model_OrderWorkload();
$return = $model->getCombination($combination, $type, $page, $pageSize);
if (is_numeric($return))
return $return;
foreach ($return as $key => $value) {
$return[$key]['owType'] = Zend_I18n::getInstance()->translate(self::$post[$value['ow_type']]);
$return[$key]['ow_user_name'] = Zend_I18n::getInstance()->translate('1100960');
if ($value['user_id'] > 0) {
$user = User_Service_User::getByUserId($value['user_id']);
$return[$key]['ow_user_name'] = $user['name'];
}
}
return $return;
}
//Models
/*
* $combination array() 条件
* $type * || COUNT(*)
* $page Integer 页
* $pageSize Integer 条数
*/
public function getCombination($combination, $type = "*", $page = 0, $pageSize = 0) {
$select = $this->_table->getAdapter()->select();
$table = $this->_table->info("name");
$select->from($table, $type);
$select->where("1 = ?", 1);
if (isset($combination['user_id'])) {
if (is_array($combination['user_id'])) {
if (!empty($combination['user_id'])) {
$select->where("user_id in (?)", $combination['user_id']);
}
} else {
if ($combination['user_id'] != "") {
$select->where("user_id = ?", $combination['user_id']);
}
}
}
if (isset($combination['warehouse_id']) && $combination['warehouse_id'] != "") {
$select->where(" warehouse_id = ?", $combination['warehouse_id']);
}
if (isset($combination['ow_date']) && $combination['ow_date'] != "") {
$select->where("ow_date = ?", $combination['ow_date']);
}
if (isset($combination['ow_total_pickup']) && $combination['ow_total_pickup'] != "") {
$select->where("ow_total_pickup = ?", $combination['ow_total_pickup']);
}
if (isset($combination['ow_post']) && $combination['ow_post'] != "") {
$select->where("ow_post = ?", $combination['ow_post']);
}
if (isset($combination['ow_type']) && $combination['ow_type'] == 0) {
$select->where("ow_type = 0");
} else if (isset($combination['ow_type']) && $combination['ow_type'] == 1) {
$select->where("ow_type = 1");
} else if (isset($combination['ow_type']) && $combination['ow_type'] == 2) {
$select->where("ow_type = 2");
}
if (isset($combination['ow_create_time_gt']) && $combination['ow_create_time_gt'] != "") {
$select->where("ow_create_time >= ?", $combination['ow_create_time_gt']);
}
if (isset($combination['ow_create_time_lt']) && $combination['ow_create_time_lt'] != "") {
$select->where("ow_create_time <= ?", $combination['ow_create_time_lt']);
}
if ("count(*)" == $type) {
return $this->_table->getAdapter()->fetchOne($select);
} else {
if (isset($combination['ow_create_time']) && $combination['ow_create_time'] != "") {
$select->order("ow_create_time asc");
} else {
$select->order("ow_create_time desc");
}
if ($pageSize > 0 and $page > 0) {
$start = ($page - 1) * $pageSize;
$select->limit($pageSize, $start);
}
$sql = $select->__toString();
return $this->_table->getAdapter()->fetchAll($sql);
}
}
//Html
<!DOCTYPE html>
<html>
<head>
<title>订单组日工作量报表</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="/css/order/transport.css" rel="stylesheet" type="text/css"/>
<script src="/js/order/order/order-day-workload.js"></script>
</head>
<body>
<div class="search_div">
<form id="sForm" name="sForm" onsubmit='return false;'>
<div>
<label>
<{include file=$userWarehouseTpl}>
</label>
<label>
日期:<input type="text" value="" onfocus="this.value = ''" name="dateFrom" style="width:68px;" id="dateFrom" class="myInput"/>
</label>
<span>岗位:</span>
<select name="post">
<{foreach from=$post item="item" key="key"}>
<option value="<{$key}>"><{$item}></option>
<{/foreach}>
</select>
<input class="button2" type="button" value="标准时间配置表" onclick="posts()">
<input class="button search" type="button" value="搜索">
<input class="button export" type="button" value="导出报表">
</div>
</form>
</div>
<form id="exportForm" action="" method="post">
<table width="100%" border="0" cellspacing="0" cellpadding="0" class="myTab">
<tbody>
<tr class="even-tr">
<th>时间</th>
<th>姓名</th>
<th>岗位</th>
<th>账号开通时间</th>
<th>完成总票数</th>
<th>订单类型</th>
<th>最快(分)</th>
<th>平均(分)</th>
<th>最慢(分)</th>
<th>订单票数</th>
<th>超时票数</th>
<th>多配</th>
<th>错配</th>
<th>漏配</th>
</tr>
</tbody>
<tbody id="loadData" style="text-align: center"></tbody>
</table>
</form>
<div id="timeAllocationDialog" title="标准时间配置表" style="display: none"></div>
<div id="postDialog" title="岗位选择" style="display: none"></div>
</body>
</html>
//Js
//记录总数
var paginationTotal = 20;
//初始化
$(function () {
//日期
var dayNamesMin = ["日", "一", "二", "三", "四", "五", "六"];
var monthNamesShort = ["01月", "02月", "03月", "04月", "05月", "06月", "07月", "08月", "09月", "10月", "11月", "12月"];
$("#dateFrom").datepicker({
dayNamesMin: dayNamesMin,
monthNamesShort: monthNamesShort,
changeMonth: true,
changeYear: true,
dateFormat: "yy-mm-dd"
});
//搜索
$(".search").click(function () {
initData(0);
});
});
//列表
function loadData(page, pageSize) {
loading();
$.ajax({
url: "/order/order/order-day-workload",
async: false,
dataType: "json",
type: "post",
data: $("#sForm").serializeArray(),
success: function (json) {
var Html = "";
if (!json.ask) {
alertTip(json.msg);
Html += "<tr><td colspan='100%'>没有相关数据</td></tr>";
} else {
paginationTotal = json.count;
$.each(json.data, function (key, value) {
if (value.ow_post == 0) {
Html += "<tr>";
Html += "<td rowspan='3'>" + value.ow_date + "</td>";
Html += "<td rowspan='3'>" + value.ow_user_name + "</td>";
Html += "<td rowspan='3'>" + value.up_name + "</td>";
Html += "<td rowspan='3'>" + value.create_date + "</td>";
Html += "<td rowspan='3'>" + value.ow_total_pickup + "</td>";
Html += "<td>A</td>";
Html += "<td>" + value.ow_fastA + "</td>";
Html += "<td>" + value.ow_avgA + "</td>";
Html += "<td>" + value.ow_slowA + "</td>";
Html += "<td>" + value.ow_ordersA + "</td>";
Html += "<td>" + value.ow_overtime_qtyA + "</td>";
Html += "<td>" + value.ow_moreA + "</td>";
Html += "<td>" + value.ow_wrongA + "</td>";
Html += "<td>" + value.ow_leakageA + "</td>";
Html += "</tr>";
Html += "<tr>";
Html += "<td>B</td>";
Html += "<td>" + value.ow_fastB + "</td>";
Html += "<td>" + value.ow_avgB + "</td>";
Html += "<td>" + value.ow_slowB + "</td>";
Html += "<td>" + value.ow_ordersB + "</td>";
Html += "<td>" + value.ow_overtime_qtyB + "</td>";
Html += "<td>" + value.ow_moreB + "</td>";
Html += "<td>" + value.ow_wrongB + "</td>";
Html += "<td>" + value.ow_leakageB + "</td>";
Html += "</tr>";
Html += "<tr>";
Html += "<td>C</td>";
Html += "<td>" + value.ow_fastC + "</td>";
Html += "<td>" + value.ow_avgC + "</td>";
Html += "<td>" + value.ow_slowC + "</td>";
Html += "<td>" + value.ow_ordersC + "</td>";
Html += "<td>" + value.ow_overtime_qtyC + "</td>";
Html += "<td>" + value.ow_moreC + "</td>";
Html += "<td>" + value.ow_wrongC + "</td>";
Html += "<td>" + value.ow_leakageC + "</td>";
Html += "</tr>";
} else {
Html += "<tr>";
Html += "<td rowspan='3'>" + value.ow_date + "</td>";
Html += "<td rowspan='3'>" + value.ow_user_name + "</td>";
Html += "<td rowspan='3'>" + value.up_name + "</td>";
Html += "<td rowspan='3'>" + value.create_date + "</td>";
Html += "<td rowspan='3'>" + value.ow_total_pickup + "</td>";
Html += "<td>A</td>";
Html += "<td>" + value.ow_fastA + "</td>";
Html += "<td>" + value.ow_avgA + "</td>";
Html += "<td>" + value.ow_slowA + "</td>";
Html += "<td>" + value.ow_ordersA + "</td>";
Html += "<td>" + value.ow_overtime_qtyA + "</td>";
Html += "<td></td>";
Html += "<td></td>";
Html += "<td></td>";
Html += "</tr>";
Html += "<tr>";
Html += "<td>B</td>";
Html += "<td>" + value.ow_fastB + "</td>";
Html += "<td>" + value.ow_avgB + "</td>";
Html += "<td>" + value.ow_slowB + "</td>";
Html += "<td>" + value.ow_ordersB + "</td>";
Html += "<td>" + value.ow_overtime_qtyB + "</td>";
Html += "<td></td>";
Html += "<td></td>";
Html += "<td></td>";
Html += "</tr>";
Html += "<tr>";
Html += "<td>C</td>";
Html += "<td>" + value.ow_fastC + "</td>";
Html += "<td>" + value.ow_avgC + "</td>";
Html += "<td>" + value.ow_slowC + "</td>";
Html += "<td>" + value.ow_ordersC + "</td>";
Html += "<td>" + value.ow_overtime_qtyC + "</td>";
Html += "<td></td>";
Html += "<td></td>";
Html += "<td></td>";
Html += "</tr>";
}
});
}
$("#loadData").html(Html);
}
});
closeLoading();
}
//提示
function alertTip(tip) {
$('<div title="提示"><p align="center">' + tip + '</p></div>').dialog({
modal: true,
buttons: {
'确定': function () {
$(this).dialog("close");
}
}
});
}
列表数据
最新推荐文章于 2024-05-19 19:18:10 发布