本文主要和大家分享Linux中自動產生資料詳解,主要以程式碼的方式和大家分享,希望能幫助大家。
/* * 自动任务跑数据 * 订单组日工作量报表数据写入 * * $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; }
以上是Linux中自動產生資料詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Linux操作系統的5個核心組件是:1.內核,2.系統庫,3.系統工具,4.系統服務,5.文件系統。這些組件協同工作,確保系統的穩定和高效運行,共同構成了一個強大而靈活的操作系統。

Linux的五個核心元素是:1.內核,2.命令行界面,3.文件系統,4.包管理,5.社區與開源。這些元素共同定義了Linux的本質和功能。

Linux用戶管理和安全性可以通過以下步驟實現:1.創建用戶和組,使用命令如sudouseradd-m-gdevelopers-s/bin/bashjohn。 2.批量創建用戶和設置密碼策略,使用for循環和chpasswd命令。 3.檢查和修復常見錯誤,如家目錄和shell設置。 4.實施最佳實踐,如強密碼策略、定期審計和最小權限原則。 5.優化性能,使用sudo和調整PAM模塊配置。通過這些方法,可以有效管理用戶和提升系統安全性。

Linux文件系統和進程管理的核心操作包括文件系統的管理和進程的控制。 1)文件系統操作包括創建、刪除、複製和移動文件或目錄,使用命令如mkdir、rmdir、cp和mv。 2)進程管理涉及啟動、監控和終止進程,使用命令如./my_script.sh&、top和kill。

Shell腳本是Linux系統中用於自動化執行命令的強大工具。 1)Shell腳本通過解釋器逐行執行命令,處理變量替換和條件判斷。 2)基本用法包括備份操作,如使用tar命令備份目錄。 3)高級用法涉及使用函數和case語句管理服務。 4)調試技巧包括使用set-x開啟調試模式和set-e在命令失敗時退出。 5)性能優化建議避免子Shell,使用數組和優化循環。

Linux是一個基於Unix的多用戶、多任務操作系統,強調簡單性、模塊化和開放性。其核心功能包括:文件系統:以樹狀結構組織,支持多種文件系統如ext4、XFS、Btrfs,使用df-T查看文件系統類型。進程管理:通過ps命令查看進程,使用PID管理進程,涉及優先級設置和信號處理。網絡配置:靈活設置IP地址和管理網絡服務,使用sudoipaddradd配置IP。這些功能在實際操作中通過基本命令和高級腳本自動化得以應用,提升效率並減少錯誤。

進入Linux維護模式的方法包括:1.編輯GRUB配置文件,添加"single"或"1"參數並更新GRUB配置;2.在GRUB菜單中編輯啟動參數,添加"single"或"1"。退出維護模式只需重啟系統。通過這些步驟,你可以在需要時快速進入維護模式,並安全地退出,確保系統的穩定性和安全性。

Linux的核心組件包括內核、shell、文件系統、進程管理和內存管理。 1)內核管理系統資源,2)shell提供用戶交互界面,3)文件系統支持多種格式,4)進程管理通過fork等系統調用實現,5)內存管理使用虛擬內存技術。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

WebStorm Mac版
好用的JavaScript開發工具

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

記事本++7.3.1
好用且免費的程式碼編輯器