Home > Article > Operation and Maintenance > Detailed explanation of automatic data generation in Linux
This article mainly shares with you the detailed explanation of automatically generated data in Linux. It mainly shares it with you in the form of code. I hope it can help you.
/* * 自动任务跑数据 * 订单组日工作量报表数据写入 * * $start_date 0000-00-00 00:00:00 开始时间 * $email_start_date 0000-00-00 00:00:00 开始时间 * $end_dates 0000-00-00 00:00:00 结束时间 */ require_once( "config.php" ); $flagFile = dirname(__FILE__) . "/order-day-workload"; if (@file_exists($flagFile)) { Common_Service_Common::autoRunFlag($flagFile, __FILE__, 2); die("程序正在运行!"); } ini_set("memory_limit", "-1"); set_time_limit(0); define("RUNTIME", "[ " . date("Y-m-d H:i:s") . " ] "); echo RUNTIME . "Starting!\n"; $reRun = false; $start_date = date("Y-m-d 08:30:00", strtotime("-1 day")); $end_dates = date("Y-m-d 08:30:00"); $Object = new Order_Service_OrderWorkload(); for (; $start_date < $end_dates;) { $end_date = date("Y-m-d 08:30:00", strtotime("+1 day", strtotime($start_date))); $date = $start_date; echo $start_date . "\n"; $start_date = date("Y-m-d H:i:s", strtotime($start_date) + 24 * 3600); } $email_start_date = date("Y-m-d 08:30:00", strtotime("-1 day")); //休眠 5 秒后等待数据同步 sleep(5); $Object->orderDayWorkload($email_start_date, $end_dates); echo "[ " . date('Y-m-d H:i:s') . " ] 结束运行\r\n"; @unlink($flagFile); //Services //配置标准时间 public static $StandardConfigurationTime = array( //配货员 "STANDARD_CONFIGURATION_PEIHUO", //打包员 "STANDARD_CONFIGURATION_PACKING", //分拣员 "STANDARD_CONFIGURATION_SORTER", ); public static function getAdapter() { $model = new Order_Model_OrderWorkload(); return $model->getAdapter(); } /* * $row array() 条件 */ public static function add($row) { $object = new Order_Model_OrderWorkload(); return $object->add($row); } /* * 订单组日工作量数据写入 * * $email_start_date 0000-00-00 00:00:00 开始时间 * $end_dates 0000-00-00 00:00:00 结束时间 */ public static function orderDayWorkload($email_start_date, $end_dates) { $orderWorkload = new Order_Model_OrderWorkload(); $dbAdapter = $orderWorkload->getAdapter(); $dbAdapter->beginTransaction(); try { //配货时间 $peihuo_time = ""; //打包时间 $packing_time = ""; //分拣时间 $sorter_time = ""; //配货员超时票数 $count_peihuo = ""; //打包员超时票数 $count_packing = ""; //分拣员超时票数 $count_sorter = ""; $row = array(); //根据条件获取对应数据 $combination = array( "op_create_date_gt" => $email_start_date, "op_create_date_lt" => $end_dates, "op_status" => 1, ); $opIds = Product_Service_Pickup::getByCondition($combination, "*"); if (!$opIds) { echo "未获取到该时间段 [ " . $email_start_date . " ] ~ [ " . $end_dates . " ] 的信息"; } foreach ($opIds as $value) { $opOrdersType = $value['op_orders_type']; $warehouseId = $value['warehouse_id']; /* * 配货员数据 */ $pickupUserId = $value['pickup_user_id']; //配货员时间 if ($value['op_end_time'] != '0000-00-00 00:00:00' && $value['op_start_time'] != '0000-00-00 00:00:00') { $peihuo_time = round((strtotime($value['op_end_time']) - strtotime($value['op_start_time'])) / 60, 0); } else { $peihuo_time = 0; } //根据配货员账号开通时间和订单类型分别计算超时票数 $userInfo = User_Service_User::getByUserId($pickupUserId); $configId = Common_Service_Config::getByAttribute(Order_Service_OrderWorkload::$StandardConfigurationTime['0'], $warehouseId); $configValueInfo = unserialize($configId['config_value']); //培训期 $trainDate = date("Y-m-d H:i:s", strtotime("+10 day", strtotime($userInfo['create_date']))); //试岗期 $try_hillockDate = date("Y-m-d H:i:s", strtotime("+20 day", strtotime($userInfo['create_date']))); //上岗期 $postsDate = date("Y-m-d H:i:s", strtotime("+30 day", strtotime($userInfo['create_date']))); $count_peihuo = 0; if ($value['op_start_time'] <= $trainDate) { if ((($opOrdersType == 0 && $configValueInfo['trainA']) || ($opOrdersType == 1 && $configValueInfo['trainB']) || ($opOrdersType == 2 && $configValueInfo['trainC'])) <= $peihuo_time) { $count_peihuo = 1; } } else if ($value['op_start_time'] > $trainDate && $value['op_start_time'] <= $try_hillockDate) { if ((($opOrdersType == 0 && $configValueInfo['try_hillockA']) || ($opOrdersType == 1 && $configValueInfo['try_hillockB']) || ($opOrdersType == 2 && $configValueInfo['try_hillockC'])) <= $peihuo_time) { $count_peihuo = 1; } } else if ($value['op_start_time'] > $try_hillockDate && $value['op_start_time'] <= $postsDate) { if ((($opOrdersType == 0 && $configValueInfo['postsA']) || ($opOrdersType == 1 && $configValueInfo['postsB']) || ($opOrdersType == 2 && $configValueInfo['postsC'])) <= $peihuo_time) { $count_peihuo = 1; } } else if ($value['op_start_time'] > $postsDate) { if ((($opOrdersType == 0 && $configValueInfo['matureA']) || ($opOrdersType == 1 && $configValueInfo['matureB']) || ($opOrdersType == 2 && $configValueInfo['matureC'])) <= $peihuo_time) { $count_peihuo = 1; } } //根据配货员和订单类型仓库作为键、组成四维数组,如果有相同的键,就把对应值相加 if (!isset($row[$pickupUserId . '-' . 0][$opOrdersType][$warehouseId])) { $row[$pickupUserId . '-' . 0][$opOrdersType][$warehouseId]['ow_overtime_qty'] = $count_peihuo; $row[$pickupUserId . '-' . 0][$opOrdersType][$warehouseId]['ow_more'] = $value['op_more']; $row[$pickupUserId . '-' . 0][$opOrdersType][$warehouseId]['ow_wrong'] = $value['op_wrong']; $row[$pickupUserId . '-' . 0][$opOrdersType][$warehouseId]['ow_leakage'] = $value['op_leakage']; } else { $row[$pickupUserId . '-' . 0][$opOrdersType][$warehouseId]['ow_overtime_qty'] += $count_peihuo; $row[$pickupUserId . '-' . 0][$opOrdersType][$warehouseId]['ow_more'] += $value['op_more']; $row[$pickupUserId . '-' . 0][$opOrdersType][$warehouseId]['ow_wrong'] += $value['op_wrong']; $row[$pickupUserId . '-' . 0][$opOrdersType][$warehouseId]['ow_leakage'] += $value['op_leakage']; } $row[$pickupUserId . '-' . 0][$opOrdersType][$warehouseId]['ow_total_pickup'] += 1; $row[$pickupUserId . '-' . 0][$opOrdersType][$warehouseId]['total_time'][] = $peihuo_time; /* * 打包员数据 */ $packageUserId = $value['package_user_id']; //打包员时间 if ($value['op_pack_end'] != '0000-00-00 00:00:00' && $value['op_pack_start'] != '0000-00-00 00:00:00') { $packing_time = ceil((strtotime($value['op_pack_end']) - strtotime($value['op_pack_start'])) / 60); } else { $packing_time = 0; } //根据打包员账号开通时间和订单类型分别计算超时票数 $userInfo = User_Service_User::getByUserId($packageUserId); $configId = Common_Service_Config::getByAttribute(Order_Service_OrderWorkload::$StandardConfigurationTime['1'], $warehouseId); $configValueInfo = unserialize($configId['config_value']); //培训期 $trainDate = date("Y-m-d H:i:s", strtotime("+10 day", strtotime($userInfo['create_date']))); //试岗期 $try_hillockDate = date("Y-m-d H:i:s", strtotime("+20 day", strtotime($userInfo['create_date']))); //上岗期 $postsDate = date("Y-m-d H:i:s", strtotime("+30 day", strtotime($userInfo['create_date']))); $count_packing = 0; if ($value['op_pack_start'] <= $trainDate) { if ((($opOrdersType == 0 && $configValueInfo['trainA']) || ($opOrdersType == 1 && $configValueInfo['trainB']) || ($opOrdersType == 2 && $configValueInfo['trainC'])) <= $packing_time) { $count_packing = 1; } } else if ($value['op_pack_start'] > $trainDate && $value['op_pack_start'] <= $try_hillockDate) { if ((($opOrdersType == 0 && $configValueInfo['try_hillockA']) || ($opOrdersType == 1 && $configValueInfo['try_hillockB']) || ($opOrdersType == 2 && $configValueInfo['try_hillockC'])) <= $packing_time) { $count_packing = 1; } } else if ($value['op_pack_start'] > $try_hillockDate && $value['op_pack_start'] <= $postsDate) { if ((($opOrdersType == 0 && $configValueInfo['postsA']) || ($opOrdersType == 1 && $configValueInfo['postsB']) || ($opOrdersType == 2 && $configValueInfo['postsC'])) <= $packing_time) { $count_packing = 1; } } else if ($value['op_pack_start'] > $postsDate) { if ((($opOrdersType == 0 && $configValueInfo['matureA']) || ($opOrdersType == 1 && $configValueInfo['matureB']) || ($opOrdersType == 2 && $configValueInfo['matureC'])) <= $packing_time) { $count_packing = 1; } } //根据打包员和订单类型仓库作为键、组成四维数组,如果有相同的键,就把对应值相加 if (!isset($row[$packageUserId . '-' . 1][$opOrdersType][$warehouseId])) { $row[$packageUserId . '-' . 1][$opOrdersType][$warehouseId]['ow_overtime_qty'] = $count_packing; $row[$packageUserId . '-' . 1][$opOrdersType][$warehouseId]['ow_more'] = $value['op_more']; $row[$packageUserId . '-' . 1][$opOrdersType][$warehouseId]['ow_wrong'] = $value['op_wrong']; $row[$packageUserId . '-' . 1][$opOrdersType][$warehouseId]['ow_leakage'] = $value['op_leakage']; } else { $row[$packageUserId . '-' . 1][$opOrdersType][$warehouseId]['ow_overtime_qty'] += $count_packing; $row[$packageUserId . '-' . 1][$opOrdersType][$warehouseId]['ow_more'] += $value['op_more']; $row[$packageUserId . '-' . 1][$opOrdersType][$warehouseId]['ow_wrong'] += $value['op_wrong']; $row[$packageUserId . '-' . 1][$opOrdersType][$warehouseId]['ow_leakage'] += $value['op_leakage']; } $row[$packageUserId . '-' . 1][$opOrdersType][$warehouseId]['ow_total_pickup'] += 1; $row[$packageUserId . '-' . 1][$opOrdersType][$warehouseId]['total_time'][] = $packing_time; /* * 分拣员数据 */ $opSortingUser = $value['op_sorting_user']; //分拣员时间 if ($value['op_sorting_end'] != '0000-00-00 00:00:00' && $value['op_sorting_start'] != '0000-00-00 00:00:00') { $sorter_time = ceil((strtotime($value['op_sorting_end']) - strtotime($value['op_sorting_start'])) / 60); } else { $sorter_time = 0; } //根据分拣员账号开通时间和订单类型分别计算超时票数 $userInfo = User_Service_User::getByUserId($opSortingUser); $configId = Common_Service_Config::getByAttribute(Order_Service_OrderWorkload::$StandardConfigurationTime['2'], $warehouseId); $configValueInfo = unserialize($configId['config_value']); //培训期 $trainDate = date("Y-m-d H:i:s", strtotime("+10 day", strtotime($userInfo['create_date']))); //试岗期 $try_hillockDate = date("Y-m-d H:i:s", strtotime("+20 day", strtotime($userInfo['create_date']))); //上岗期 $postsDate = date("Y-m-d H:i:s", strtotime("+30 day", strtotime($userInfo['create_date']))); $count_sorter = 0; if ($value['op_sorting_start'] <= $trainDate) { if ((($opOrdersType == 0 && $configValueInfo['trainA']) || ($opOrdersType == 1 && $configValueInfo['trainB']) || ($opOrdersType == 2 && $configValueInfo['trainC'])) <= $sorter_time) { $count_sorter = 1; } } else if ($value['op_sorting_start'] > $trainDate && $value['op_sorting_start'] <= $try_hillockDate) { if ((($opOrdersType == 0 && $configValueInfo['try_hillockA']) || ($opOrdersType == 1 && $configValueInfo['try_hillockB']) || ($opOrdersType == 2 && $configValueInfo['try_hillockC'])) <= $sorter_time) { $count_sorter = 1; } } else if ($value['op_sorting_start'] > $try_hillockDate && $value['op_sorting_start'] <= $postsDate) { if ((($opOrdersType == 0 && $configValueInfo['postsA']) || ($opOrdersType == 1 && $configValueInfo['postsB']) || ($opOrdersType == 2 && $configValueInfo['postsC'])) <= $sorter_time) { $count_sorter = 1; } } else if ($value['op_sorting_start'] > $postsDate) { if ((($opOrdersType == 0 && $configValueInfo['matureA']) || ($opOrdersType == 1 && $configValueInfo['matureB']) || ($opOrdersType == 2 && $configValueInfo['matureC'])) <= $sorter_time) { $count_sorter = 1; } } //根据分拣员和订单类型仓库作为键、组成四维数组,如果有相同的键,就把对应值相加 if (!isset($row[$opSortingUser . '-' . 2][$opOrdersType][$warehouseId])) { $row[$opSortingUser . '-' . 2][$opOrdersType][$warehouseId]['ow_overtime_qty'] = $count_sorter; $row[$opSortingUser . '-' . 2][$opOrdersType][$warehouseId]['ow_more'] = $value['op_more']; $row[$opSortingUser . '-' . 2][$opOrdersType][$warehouseId]['ow_wrong'] = $value['op_wrong']; $row[$opSortingUser . '-' . 2][$opOrdersType][$warehouseId]['ow_leakage'] = $value['op_leakage']; } else { $row[$opSortingUser . '-' . 2][$opOrdersType][$warehouseId]['ow_overtime_qty'] += $count_sorter; $row[$opSortingUser . '-' . 2][$opOrdersType][$warehouseId]['ow_more'] += $value['op_more']; $row[$opSortingUser . '-' . 2][$opOrdersType][$warehouseId]['ow_wrong'] += $value['op_wrong']; $row[$opSortingUser . '-' . 2][$opOrdersType][$warehouseId]['ow_leakage'] += $value['op_leakage']; } $row[$opSortingUser . '-' . 2][$opOrdersType][$warehouseId]['ow_total_pickup'] += 1; $row[$opSortingUser . '-' . 2][$opOrdersType][$warehouseId]['total_time'][] = $sorter_time; } //分解数组写入数据库 foreach ($row as $key => $val) { $substr = substr($key, -1); if ($key != 0) { foreach ($val as $ke => $va) { foreach ($va as $k => $v) { $combition = array( "user_id" => $key, "warehouse_id" => $k, "ow_date" => $email_start_date, "ow_total_pickup" => $v['ow_total_pickup'], "ow_type" => $ke, "ow_fast" => min($v['total_time']), "ow_avg" => round(array_sum($v['total_time']) / $v['ow_total_pickup']), "ow_slow" => max($v['total_time']), "ow_orders" => $v['ow_total_pickup'], "ow_overtime_qty" => $v['ow_overtime_qty'], "ow_more" => $v['ow_more'], "ow_wrong" => $v['ow_wrong'], "ow_leakage" => $v['ow_leakage'], "ow_create_time" => date("Y-m-d H:i:s"), "ow_post" => $substr, ); if (!Order_Service_OrderWorkload::add($combition)) { echo "写入数据失败"; } } } } } $dbAdapter->commit(); } catch (Exception $e) { $dbAdapter->rollback(); echo "[ " . date("Y-m-d H:is") . " ] 出现异常,异常信息为:" . $e->getMessage(); } } //Models private $_table; public function __construct() { $this->_table = new Order_Model_DbTable_OrderWorkload(); } public function getAdapter() { return $this->_table->getAdapter(); } /* * $row array() 条件 */ public function add($row) { return $this->_table->insert($row); } //Models/DbTable class Order_Model_DbTable_OrderWorkload extends Zend_Db_Table_Abstract { //数据表名称 protected $_name = "order_workload"; //主键 protected $_primary = "ow_id"; protected $_sequence = true; }
/* * 自动任务跑数据 * 订单组日工作量报表数据写入 * * $start_date 0000-00-00 00:00:00 开始时间 * $email_start_date 0000-00-00 00:00:00 开始时间 * $end_dates 0000-00-00 00:00:00 结束时间 */ require_once( "config.php" ); $flagFile = dirname(__FILE__) . "/order-day-workload"; if (@file_exists($flagFile)) { Common_Service_Common::autoRunFlag($flagFile, __FILE__, 2); die("程序正在运行!"); } ini_set("memory_limit", "-1"); set_time_limit(0); define("RUNTIME", "[ " . date("Y-m-d H:i:s") . " ] "); echo RUNTIME . "Starting!\n"; $reRun = false; $start_date = date("Y-m-d 08:30:00", strtotime("-1 day")); $end_dates = date("Y-m-d 08:30:00"); $Object = new Order_Service_OrderWorkload(); for (; $start_date < $end_dates;) { $end_date = date("Y-m-d 08:30:00", strtotime("+1 day", strtotime($start_date))); $date = $start_date; echo $start_date . "\n"; $start_date = date("Y-m-d H:i:s", strtotime($start_date) + 24 * 3600); } $email_start_date = date("Y-m-d 08:30:00", strtotime("-1 day")); //休眠 5 秒后等待数据同步 sleep(5); $Object->orderDayWorkload($email_start_date, $end_dates); echo "[ " . date('Y-m-d H:i:s') . " ] 结束运行\r\n"; @unlink($flagFile); //Services //配置标准时间 public static $StandardConfigurationTime = array( //配货员 "STANDARD_CONFIGURATION_PEIHUO", //打包员 "STANDARD_CONFIGURATION_PACKING", //分拣员 "STANDARD_CONFIGURATION_SORTER", ); public static function getAdapter() { $model = new Order_Model_OrderWorkload(); return $model->getAdapter(); } /* * $row array() 条件 */ public static function add($row) { $object = new Order_Model_OrderWorkload(); return $object->add($row); } /* * 订单组日工作量数据写入 * * $email_start_date 0000-00-00 00:00:00 开始时间 * $end_dates 0000-00-00 00:00:00 结束时间 */ public static function orderDayWorkload($email_start_date, $end_dates) { $orderWorkload = new Order_Model_OrderWorkload(); $dbAdapter = $orderWorkload->getAdapter(); $dbAdapter->beginTransaction(); try { //配货时间 $peihuo_time = ""; //打包时间 $packing_time = ""; //分拣时间 $sorter_time = ""; //配货员超时票数 $count_peihuo = ""; //打包员超时票数 $count_packing = ""; //分拣员超时票数 $count_sorter = ""; $row = array(); //根据条件获取对应数据 $combination = array( "op_create_date_gt" => $email_start_date, "op_create_date_lt" => $end_dates, "op_status" => 1, ); $opIds = Product_Service_Pickup::getByCondition($combination, "*"); if (!$opIds) { echo "未获取到该时间段 [ " . $email_start_date . " ] ~ [ " . $end_dates . " ] 的信息"; } foreach ($opIds as $value) { $opOrdersType = $value['op_orders_type']; $warehouseId = $value['warehouse_id']; /* * 配货员数据 */ $pickupUserId = $value['pickup_user_id']; //配货员时间 if ($value['op_end_time'] != '0000-00-00 00:00:00' && $value['op_start_time'] != '0000-00-00 00:00:00') { $peihuo_time = round((strtotime($value['op_end_time']) - strtotime($value['op_start_time'])) / 60, 0); } else { $peihuo_time = 0; } //根据配货员账号开通时间和订单类型分别计算超时票数 $userInfo = User_Service_User::getByUserId($pickupUserId); $configId = Common_Service_Config::getByAttribute(Order_Service_OrderWorkload::$StandardConfigurationTime['0'], $warehouseId); $configValueInfo = unserialize($configId['config_value']); //培训期 $trainDate = date("Y-m-d H:i:s", strtotime("+10 day", strtotime($userInfo['create_date']))); //试岗期 $try_hillockDate = date("Y-m-d H:i:s", strtotime("+20 day", strtotime($userInfo['create_date']))); //上岗期 $postsDate = date("Y-m-d H:i:s", strtotime("+30 day", strtotime($userInfo['create_date']))); $count_peihuo = 0; if ($value['op_start_time'] <= $trainDate) { if ((($opOrdersType == 0 && $configValueInfo['trainA']) || ($opOrdersType == 1 && $configValueInfo['trainB']) || ($opOrdersType == 2 && $configValueInfo['trainC'])) <= $peihuo_time) { $count_peihuo = 1; } } else if ($value['op_start_time'] > $trainDate && $value['op_start_time'] <= $try_hillockDate) { if ((($opOrdersType == 0 && $configValueInfo['try_hillockA']) || ($opOrdersType == 1 && $configValueInfo['try_hillockB']) || ($opOrdersType == 2 && $configValueInfo['try_hillockC'])) <= $peihuo_time) { $count_peihuo = 1; } } else if ($value['op_start_time'] > $try_hillockDate && $value['op_start_time'] <= $postsDate) { if ((($opOrdersType == 0 && $configValueInfo['postsA']) || ($opOrdersType == 1 && $configValueInfo['postsB']) || ($opOrdersType == 2 && $configValueInfo['postsC'])) <= $peihuo_time) { $count_peihuo = 1; } } else if ($value['op_start_time'] > $postsDate) { if ((($opOrdersType == 0 && $configValueInfo['matureA']) || ($opOrdersType == 1 && $configValueInfo['matureB']) || ($opOrdersType == 2 && $configValueInfo['matureC'])) <= $peihuo_time) { $count_peihuo = 1; } } //根据配货员和订单类型仓库作为键、组成四维数组,如果有相同的键,就把对应值相加 if (!isset($row[$pickupUserId . '-' . 0][$opOrdersType][$warehouseId])) { $row[$pickupUserId . '-' . 0][$opOrdersType][$warehouseId]['ow_overtime_qty'] = $count_peihuo; $row[$pickupUserId . '-' . 0][$opOrdersType][$warehouseId]['ow_more'] = $value['op_more']; $row[$pickupUserId . '-' . 0][$opOrdersType][$warehouseId]['ow_wrong'] = $value['op_wrong']; $row[$pickupUserId . '-' . 0][$opOrdersType][$warehouseId]['ow_leakage'] = $value['op_leakage']; } else { $row[$pickupUserId . '-' . 0][$opOrdersType][$warehouseId]['ow_overtime_qty'] += $count_peihuo; $row[$pickupUserId . '-' . 0][$opOrdersType][$warehouseId]['ow_more'] += $value['op_more']; $row[$pickupUserId . '-' . 0][$opOrdersType][$warehouseId]['ow_wrong'] += $value['op_wrong']; $row[$pickupUserId . '-' . 0][$opOrdersType][$warehouseId]['ow_leakage'] += $value['op_leakage']; } $row[$pickupUserId . '-' . 0][$opOrdersType][$warehouseId]['ow_total_pickup'] += 1; $row[$pickupUserId . '-' . 0][$opOrdersType][$warehouseId]['total_time'][] = $peihuo_time; /* * 打包员数据 */ $packageUserId = $value['package_user_id']; //打包员时间 if ($value['op_pack_end'] != '0000-00-00 00:00:00' && $value['op_pack_start'] != '0000-00-00 00:00:00') { $packing_time = ceil((strtotime($value['op_pack_end']) - strtotime($value['op_pack_start'])) / 60); } else { $packing_time = 0; } //根据打包员账号开通时间和订单类型分别计算超时票数 $userInfo = User_Service_User::getByUserId($packageUserId); $configId = Common_Service_Config::getByAttribute(Order_Service_OrderWorkload::$StandardConfigurationTime['1'], $warehouseId); $configValueInfo = unserialize($configId['config_value']); //培训期 $trainDate = date("Y-m-d H:i:s", strtotime("+10 day", strtotime($userInfo['create_date']))); //试岗期 $try_hillockDate = date("Y-m-d H:i:s", strtotime("+20 day", strtotime($userInfo['create_date']))); //上岗期 $postsDate = date("Y-m-d H:i:s", strtotime("+30 day", strtotime($userInfo['create_date']))); $count_packing = 0; if ($value['op_pack_start'] <= $trainDate) { if ((($opOrdersType == 0 && $configValueInfo['trainA']) || ($opOrdersType == 1 && $configValueInfo['trainB']) || ($opOrdersType == 2 && $configValueInfo['trainC'])) <= $packing_time) { $count_packing = 1; } } else if ($value['op_pack_start'] > $trainDate && $value['op_pack_start'] <= $try_hillockDate) { if ((($opOrdersType == 0 && $configValueInfo['try_hillockA']) || ($opOrdersType == 1 && $configValueInfo['try_hillockB']) || ($opOrdersType == 2 && $configValueInfo['try_hillockC'])) <= $packing_time) { $count_packing = 1; } } else if ($value['op_pack_start'] > $try_hillockDate && $value['op_pack_start'] <= $postsDate) { if ((($opOrdersType == 0 && $configValueInfo['postsA']) || ($opOrdersType == 1 && $configValueInfo['postsB']) || ($opOrdersType == 2 && $configValueInfo['postsC'])) <= $packing_time) { $count_packing = 1; } } else if ($value['op_pack_start'] > $postsDate) { if ((($opOrdersType == 0 && $configValueInfo['matureA']) || ($opOrdersType == 1 && $configValueInfo['matureB']) || ($opOrdersType == 2 && $configValueInfo['matureC'])) <= $packing_time) { $count_packing = 1; } } //根据打包员和订单类型仓库作为键、组成四维数组,如果有相同的键,就把对应值相加 if (!isset($row[$packageUserId . '-' . 1][$opOrdersType][$warehouseId])) { $row[$packageUserId . '-' . 1][$opOrdersType][$warehouseId]['ow_overtime_qty'] = $count_packing; $row[$packageUserId . '-' . 1][$opOrdersType][$warehouseId]['ow_more'] = $value['op_more']; $row[$packageUserId . '-' . 1][$opOrdersType][$warehouseId]['ow_wrong'] = $value['op_wrong']; $row[$packageUserId . '-' . 1][$opOrdersType][$warehouseId]['ow_leakage'] = $value['op_leakage']; } else { $row[$packageUserId . '-' . 1][$opOrdersType][$warehouseId]['ow_overtime_qty'] += $count_packing; $row[$packageUserId . '-' . 1][$opOrdersType][$warehouseId]['ow_more'] += $value['op_more']; $row[$packageUserId . '-' . 1][$opOrdersType][$warehouseId]['ow_wrong'] += $value['op_wrong']; $row[$packageUserId . '-' . 1][$opOrdersType][$warehouseId]['ow_leakage'] += $value['op_leakage']; } $row[$packageUserId . '-' . 1][$opOrdersType][$warehouseId]['ow_total_pickup'] += 1; $row[$packageUserId . '-' . 1][$opOrdersType][$warehouseId]['total_time'][] = $packing_time; /* * 分拣员数据 */ $opSortingUser = $value['op_sorting_user']; //分拣员时间 if ($value['op_sorting_end'] != '0000-00-00 00:00:00' && $value['op_sorting_start'] != '0000-00-00 00:00:00') { $sorter_time = ceil((strtotime($value['op_sorting_end']) - strtotime($value['op_sorting_start'])) / 60); } else { $sorter_time = 0; } //根据分拣员账号开通时间和订单类型分别计算超时票数 $userInfo = User_Service_User::getByUserId($opSortingUser); $configId = Common_Service_Config::getByAttribute(Order_Service_OrderWorkload::$StandardConfigurationTime['2'], $warehouseId); $configValueInfo = unserialize($configId['config_value']); //培训期 $trainDate = date("Y-m-d H:i:s", strtotime("+10 day", strtotime($userInfo['create_date']))); //试岗期 $try_hillockDate = date("Y-m-d H:i:s", strtotime("+20 day", strtotime($userInfo['create_date']))); //上岗期 $postsDate = date("Y-m-d H:i:s", strtotime("+30 day", strtotime($userInfo['create_date']))); $count_sorter = 0; if ($value['op_sorting_start'] <= $trainDate) { if ((($opOrdersType == 0 && $configValueInfo['trainA']) || ($opOrdersType == 1 && $configValueInfo['trainB']) || ($opOrdersType == 2 && $configValueInfo['trainC'])) <= $sorter_time) { $count_sorter = 1; } } else if ($value['op_sorting_start'] > $trainDate && $value['op_sorting_start'] <= $try_hillockDate) { if ((($opOrdersType == 0 && $configValueInfo['try_hillockA']) || ($opOrdersType == 1 && $configValueInfo['try_hillockB']) || ($opOrdersType == 2 && $configValueInfo['try_hillockC'])) <= $sorter_time) { $count_sorter = 1; } } else if ($value['op_sorting_start'] > $try_hillockDate && $value['op_sorting_start'] <= $postsDate) { if ((($opOrdersType == 0 && $configValueInfo['postsA']) || ($opOrdersType == 1 && $configValueInfo['postsB']) || ($opOrdersType == 2 && $configValueInfo['postsC'])) <= $sorter_time) { $count_sorter = 1; } } else if ($value['op_sorting_start'] > $postsDate) { if ((($opOrdersType == 0 && $configValueInfo['matureA']) || ($opOrdersType == 1 && $configValueInfo['matureB']) || ($opOrdersType == 2 && $configValueInfo['matureC'])) <= $sorter_time) { $count_sorter = 1; } } //根据分拣员和订单类型仓库作为键、组成四维数组,如果有相同的键,就把对应值相加 if (!isset($row[$opSortingUser . '-' . 2][$opOrdersType][$warehouseId])) { $row[$opSortingUser . '-' . 2][$opOrdersType][$warehouseId]['ow_overtime_qty'] = $count_sorter; $row[$opSortingUser . '-' . 2][$opOrdersType][$warehouseId]['ow_more'] = $value['op_more']; $row[$opSortingUser . '-' . 2][$opOrdersType][$warehouseId]['ow_wrong'] = $value['op_wrong']; $row[$opSortingUser . '-' . 2][$opOrdersType][$warehouseId]['ow_leakage'] = $value['op_leakage']; } else { $row[$opSortingUser . '-' . 2][$opOrdersType][$warehouseId]['ow_overtime_qty'] += $count_sorter; $row[$opSortingUser . '-' . 2][$opOrdersType][$warehouseId]['ow_more'] += $value['op_more']; $row[$opSortingUser . '-' . 2][$opOrdersType][$warehouseId]['ow_wrong'] += $value['op_wrong']; $row[$opSortingUser . '-' . 2][$opOrdersType][$warehouseId]['ow_leakage'] += $value['op_leakage']; } $row[$opSortingUser . '-' . 2][$opOrdersType][$warehouseId]['ow_total_pickup'] += 1; $row[$opSortingUser . '-' . 2][$opOrdersType][$warehouseId]['total_time'][] = $sorter_time; } //分解数组写入数据库 foreach ($row as $key => $val) { $substr = substr($key, -1); if ($key != 0) { foreach ($val as $ke => $va) { foreach ($va as $k => $v) { $combition = array( "user_id" => $key, "warehouse_id" => $k, "ow_date" => $email_start_date, "ow_total_pickup" => $v['ow_total_pickup'], "ow_type" => $ke, "ow_fast" => min($v['total_time']), "ow_avg" => round(array_sum($v['total_time']) / $v['ow_total_pickup']), "ow_slow" => max($v['total_time']), "ow_orders" => $v['ow_total_pickup'], "ow_overtime_qty" => $v['ow_overtime_qty'], "ow_more" => $v['ow_more'], "ow_wrong" => $v['ow_wrong'], "ow_leakage" => $v['ow_leakage'], "ow_create_time" => date("Y-m-d H:i:s"), "ow_post" => $substr, ); if (!Order_Service_OrderWorkload::add($combition)) { echo "写入数据失败"; } } } } } $dbAdapter->commit(); } catch (Exception $e) { $dbAdapter->rollback(); echo "[ " . date("Y-m-d H:is") . " ] 出现异常,异常信息为:" . $e->getMessage(); } } //Models private $_table; public function __construct() { $this->_table = new Order_Model_DbTable_OrderWorkload(); } public function getAdapter() { return $this->_table->getAdapter(); } /* * $row array() 条件 */ public function add($row) { return $this->_table->insert($row); } //Models/DbTable class Order_Model_DbTable_OrderWorkload extends Zend_Db_Table_Abstract { //数据表名称 protected $_name = "order_workload"; //主键 protected $_primary = "ow_id"; protected $_sequence = true; }
The above is the detailed content of Detailed explanation of automatic data generation in Linux. For more information, please follow other related articles on the PHP Chinese website!