


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!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics











The five basic components of the Linux system are: 1. Kernel, 2. System library, 3. System utilities, 4. Graphical user interface, 5. Applications. The kernel manages hardware resources, the system library provides precompiled functions, system utilities are used for system management, the GUI provides visual interaction, and applications use these components to implement functions.

To view the Git repository address, perform the following steps: 1. Open the command line and navigate to the repository directory; 2. Run the "git remote -v" command; 3. View the repository name in the output and its corresponding address.

VS Code One-step/Next step shortcut key usage: One-step (backward): Windows/Linux: Ctrl ←; macOS: Cmd ←Next step (forward): Windows/Linux: Ctrl →; macOS: Cmd →

Although Notepad cannot run Java code directly, it can be achieved by using other tools: using the command line compiler (javac) to generate a bytecode file (filename.class). Use the Java interpreter (java) to interpret bytecode, execute the code, and output the result.

There are six ways to run code in Sublime: through hotkeys, menus, build systems, command lines, set default build systems, and custom build commands, and run individual files/projects by right-clicking on projects/files. The build system availability depends on the installation of Sublime Text.

To install Laravel, follow these steps in sequence: Install Composer (for macOS/Linux and Windows) Install Laravel Installer Create a new project Start Service Access Application (URL: http://127.0.0.1:8000) Set up the database connection (if required)

The main uses of Linux include: 1. Server operating system, 2. Embedded system, 3. Desktop operating system, 4. Development and testing environment. Linux excels in these areas, providing stability, security and efficient development tools.

Installing Git software includes the following steps: Download the installation package and run the installation package to verify the installation configuration Git installation Git Bash (Windows only)
