Home Operation and Maintenance Linux Operation and Maintenance Detailed explanation of automatic data generation in Linux

Detailed explanation of automatic data generation in Linux

Mar 31, 2018 am 10:38 AM
linux Automatic generated Detailed explanation

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(&#39;Y-m-d H:i:s&#39;) . " ] 结束运行\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[&#39;op_orders_type&#39;];
           $warehouseId = $value[&#39;warehouse_id&#39;];

           /*
            * 配货员数据
            */
           $pickupUserId = $value[&#39;pickup_user_id&#39;];
           //配货员时间
           if ($value[&#39;op_end_time&#39;] != &#39;0000-00-00 00:00:00&#39; && $value[&#39;op_start_time&#39;] != &#39;0000-00-00 00:00:00&#39;) {
               $peihuo_time = round((strtotime($value[&#39;op_end_time&#39;]) - strtotime($value[&#39;op_start_time&#39;])) / 60, 0);
           } else {
               $peihuo_time = 0;
           }
           //根据配货员账号开通时间和订单类型分别计算超时票数
           $userInfo = User_Service_User::getByUserId($pickupUserId);
           $configId = Common_Service_Config::getByAttribute(Order_Service_OrderWorkload::$StandardConfigurationTime[&#39;0&#39;], $warehouseId);
           $configValueInfo = unserialize($configId[&#39;config_value&#39;]);
           //培训期
           $trainDate = date("Y-m-d H:i:s", strtotime("+10 day", strtotime($userInfo[&#39;create_date&#39;])));
           //试岗期
           $try_hillockDate = date("Y-m-d H:i:s", strtotime("+20 day", strtotime($userInfo[&#39;create_date&#39;])));
           //上岗期
           $postsDate = date("Y-m-d H:i:s", strtotime("+30 day", strtotime($userInfo[&#39;create_date&#39;])));
           $count_peihuo = 0;
           if ($value[&#39;op_start_time&#39;] <= $trainDate) {
               if ((($opOrdersType == 0 && $configValueInfo[&#39;trainA&#39;]) || ($opOrdersType == 1 && $configValueInfo[&#39;trainB&#39;]) || ($opOrdersType == 2 && $configValueInfo[&#39;trainC&#39;])) <= $peihuo_time) {
                   $count_peihuo = 1;
               }
           } else if ($value[&#39;op_start_time&#39;] > $trainDate && $value[&#39;op_start_time&#39;] <= $try_hillockDate) {
               if ((($opOrdersType == 0 && $configValueInfo[&#39;try_hillockA&#39;]) || ($opOrdersType == 1 && $configValueInfo[&#39;try_hillockB&#39;]) || ($opOrdersType == 2 && $configValueInfo[&#39;try_hillockC&#39;])) <= $peihuo_time) {
                   $count_peihuo = 1;
               }
           } else if ($value[&#39;op_start_time&#39;] > $try_hillockDate && $value[&#39;op_start_time&#39;] <= $postsDate) {
               if ((($opOrdersType == 0 && $configValueInfo[&#39;postsA&#39;]) || ($opOrdersType == 1 && $configValueInfo[&#39;postsB&#39;]) || ($opOrdersType == 2 && $configValueInfo[&#39;postsC&#39;])) <= $peihuo_time) {
                   $count_peihuo = 1;
               }
           } else if ($value[&#39;op_start_time&#39;] > $postsDate) {
               if ((($opOrdersType == 0 && $configValueInfo[&#39;matureA&#39;]) || ($opOrdersType == 1 && $configValueInfo[&#39;matureB&#39;]) || ($opOrdersType == 2 && $configValueInfo[&#39;matureC&#39;])) <= $peihuo_time) {
                   $count_peihuo = 1;
               }
           }
           //根据配货员和订单类型仓库作为键、组成四维数组,如果有相同的键,就把对应值相加
           if (!isset($row[$pickupUserId . &#39;-&#39; . 0][$opOrdersType][$warehouseId])) {
               $row[$pickupUserId . &#39;-&#39; . 0][$opOrdersType][$warehouseId][&#39;ow_overtime_qty&#39;] = $count_peihuo;
               $row[$pickupUserId . &#39;-&#39; . 0][$opOrdersType][$warehouseId][&#39;ow_more&#39;] = $value[&#39;op_more&#39;];
               $row[$pickupUserId . &#39;-&#39; . 0][$opOrdersType][$warehouseId][&#39;ow_wrong&#39;] = $value[&#39;op_wrong&#39;];
               $row[$pickupUserId . &#39;-&#39; . 0][$opOrdersType][$warehouseId][&#39;ow_leakage&#39;] = $value[&#39;op_leakage&#39;];
           } else {
               $row[$pickupUserId . &#39;-&#39; . 0][$opOrdersType][$warehouseId][&#39;ow_overtime_qty&#39;] += $count_peihuo;
               $row[$pickupUserId . &#39;-&#39; . 0][$opOrdersType][$warehouseId][&#39;ow_more&#39;] += $value[&#39;op_more&#39;];
               $row[$pickupUserId . &#39;-&#39; . 0][$opOrdersType][$warehouseId][&#39;ow_wrong&#39;] += $value[&#39;op_wrong&#39;];
               $row[$pickupUserId . &#39;-&#39; . 0][$opOrdersType][$warehouseId][&#39;ow_leakage&#39;] += $value[&#39;op_leakage&#39;];
           }
           $row[$pickupUserId . &#39;-&#39; . 0][$opOrdersType][$warehouseId][&#39;ow_total_pickup&#39;] += 1;
           $row[$pickupUserId . &#39;-&#39; . 0][$opOrdersType][$warehouseId][&#39;total_time&#39;][] = $peihuo_time;                   


           /*
            * 打包员数据
            */    
           $packageUserId = $value[&#39;package_user_id&#39;];
           //打包员时间
           if ($value[&#39;op_pack_end&#39;] != &#39;0000-00-00 00:00:00&#39; && $value[&#39;op_pack_start&#39;] != &#39;0000-00-00 00:00:00&#39;) {
               $packing_time = ceil((strtotime($value[&#39;op_pack_end&#39;]) - strtotime($value[&#39;op_pack_start&#39;])) / 60);
           } else {
               $packing_time = 0;
           }
           //根据打包员账号开通时间和订单类型分别计算超时票数
           $userInfo = User_Service_User::getByUserId($packageUserId);
           $configId = Common_Service_Config::getByAttribute(Order_Service_OrderWorkload::$StandardConfigurationTime[&#39;1&#39;], $warehouseId);
           $configValueInfo = unserialize($configId[&#39;config_value&#39;]);
           //培训期
           $trainDate = date("Y-m-d H:i:s", strtotime("+10 day", strtotime($userInfo[&#39;create_date&#39;])));
           //试岗期
           $try_hillockDate = date("Y-m-d H:i:s", strtotime("+20 day", strtotime($userInfo[&#39;create_date&#39;])));
           //上岗期
           $postsDate = date("Y-m-d H:i:s", strtotime("+30 day", strtotime($userInfo[&#39;create_date&#39;])));
           $count_packing = 0;
           if ($value[&#39;op_pack_start&#39;] <= $trainDate) {
               if ((($opOrdersType == 0 && $configValueInfo[&#39;trainA&#39;]) || ($opOrdersType == 1 && $configValueInfo[&#39;trainB&#39;]) || ($opOrdersType == 2 && $configValueInfo[&#39;trainC&#39;])) <= $packing_time) {
                   $count_packing = 1;
               }
           } else if ($value[&#39;op_pack_start&#39;] > $trainDate && $value[&#39;op_pack_start&#39;] <= $try_hillockDate) {
               if ((($opOrdersType == 0 && $configValueInfo[&#39;try_hillockA&#39;]) || ($opOrdersType == 1 && $configValueInfo[&#39;try_hillockB&#39;]) || ($opOrdersType == 2 && $configValueInfo[&#39;try_hillockC&#39;])) <= $packing_time) {
                   $count_packing = 1;
               }
           } else if ($value[&#39;op_pack_start&#39;] > $try_hillockDate && $value[&#39;op_pack_start&#39;] <= $postsDate) {
               if ((($opOrdersType == 0 && $configValueInfo[&#39;postsA&#39;]) || ($opOrdersType == 1 && $configValueInfo[&#39;postsB&#39;]) || ($opOrdersType == 2 && $configValueInfo[&#39;postsC&#39;])) <= $packing_time) {
                   $count_packing = 1;
               }
           } else if ($value[&#39;op_pack_start&#39;] > $postsDate) {
              if ((($opOrdersType == 0 && $configValueInfo[&#39;matureA&#39;]) || ($opOrdersType == 1 && $configValueInfo[&#39;matureB&#39;]) || ($opOrdersType == 2 && $configValueInfo[&#39;matureC&#39;])) <= $packing_time) {
                   $count_packing = 1;
               }
           }
           //根据打包员和订单类型仓库作为键、组成四维数组,如果有相同的键,就把对应值相加
           if (!isset($row[$packageUserId . &#39;-&#39; . 1][$opOrdersType][$warehouseId])) {
               $row[$packageUserId . &#39;-&#39; . 1][$opOrdersType][$warehouseId][&#39;ow_overtime_qty&#39;] = $count_packing;
               $row[$packageUserId . &#39;-&#39; . 1][$opOrdersType][$warehouseId][&#39;ow_more&#39;] = $value[&#39;op_more&#39;];
               $row[$packageUserId . &#39;-&#39; . 1][$opOrdersType][$warehouseId][&#39;ow_wrong&#39;] = $value[&#39;op_wrong&#39;];
               $row[$packageUserId . &#39;-&#39; . 1][$opOrdersType][$warehouseId][&#39;ow_leakage&#39;] = $value[&#39;op_leakage&#39;];
           } else {
               $row[$packageUserId . &#39;-&#39; . 1][$opOrdersType][$warehouseId][&#39;ow_overtime_qty&#39;] += $count_packing;
               $row[$packageUserId . &#39;-&#39; . 1][$opOrdersType][$warehouseId][&#39;ow_more&#39;] += $value[&#39;op_more&#39;];
               $row[$packageUserId . &#39;-&#39; . 1][$opOrdersType][$warehouseId][&#39;ow_wrong&#39;] += $value[&#39;op_wrong&#39;];
               $row[$packageUserId . &#39;-&#39; . 1][$opOrdersType][$warehouseId][&#39;ow_leakage&#39;] += $value[&#39;op_leakage&#39;];
           }
           $row[$packageUserId . &#39;-&#39; . 1][$opOrdersType][$warehouseId][&#39;ow_total_pickup&#39;] += 1;
           $row[$packageUserId . &#39;-&#39; . 1][$opOrdersType][$warehouseId][&#39;total_time&#39;][] = $packing_time;


           /*
            * 分拣员数据
            */
           $opSortingUser = $value[&#39;op_sorting_user&#39;];
           //分拣员时间
           if ($value[&#39;op_sorting_end&#39;] != &#39;0000-00-00 00:00:00&#39; && $value[&#39;op_sorting_start&#39;] != &#39;0000-00-00 00:00:00&#39;) {
               $sorter_time = ceil((strtotime($value[&#39;op_sorting_end&#39;]) - strtotime($value[&#39;op_sorting_start&#39;])) / 60);
           } else {
               $sorter_time = 0;
           }
           //根据分拣员账号开通时间和订单类型分别计算超时票数
           $userInfo = User_Service_User::getByUserId($opSortingUser);
           $configId = Common_Service_Config::getByAttribute(Order_Service_OrderWorkload::$StandardConfigurationTime[&#39;2&#39;], $warehouseId);
           $configValueInfo = unserialize($configId[&#39;config_value&#39;]);
           //培训期
           $trainDate = date("Y-m-d H:i:s", strtotime("+10 day", strtotime($userInfo[&#39;create_date&#39;])));
           //试岗期
           $try_hillockDate = date("Y-m-d H:i:s", strtotime("+20 day", strtotime($userInfo[&#39;create_date&#39;])));
           //上岗期
           $postsDate = date("Y-m-d H:i:s", strtotime("+30 day", strtotime($userInfo[&#39;create_date&#39;])));
           $count_sorter = 0;
           if ($value[&#39;op_sorting_start&#39;] <= $trainDate) {
               if ((($opOrdersType == 0 && $configValueInfo[&#39;trainA&#39;]) || ($opOrdersType == 1 && $configValueInfo[&#39;trainB&#39;]) || ($opOrdersType == 2 && $configValueInfo[&#39;trainC&#39;])) <= $sorter_time) {
                   $count_sorter = 1;
               }
           } else if ($value[&#39;op_sorting_start&#39;] > $trainDate && $value[&#39;op_sorting_start&#39;] <= $try_hillockDate) {
               if ((($opOrdersType == 0 && $configValueInfo[&#39;try_hillockA&#39;]) || ($opOrdersType == 1 && $configValueInfo[&#39;try_hillockB&#39;]) || ($opOrdersType == 2 && $configValueInfo[&#39;try_hillockC&#39;])) <= $sorter_time) {
                   $count_sorter = 1;
               }
           } else if ($value[&#39;op_sorting_start&#39;] > $try_hillockDate && $value[&#39;op_sorting_start&#39;] <= $postsDate) {
               if ((($opOrdersType == 0 && $configValueInfo[&#39;postsA&#39;]) || ($opOrdersType == 1 && $configValueInfo[&#39;postsB&#39;]) || ($opOrdersType == 2 && $configValueInfo[&#39;postsC&#39;])) <= $sorter_time) {
                   $count_sorter = 1;
               }
           } else if ($value[&#39;op_sorting_start&#39;] > $postsDate) {
               if ((($opOrdersType == 0 && $configValueInfo[&#39;matureA&#39;]) || ($opOrdersType == 1 && $configValueInfo[&#39;matureB&#39;]) || ($opOrdersType == 2 && $configValueInfo[&#39;matureC&#39;])) <= $sorter_time) {
                   $count_sorter = 1;
               }
           }
           //根据分拣员和订单类型仓库作为键、组成四维数组,如果有相同的键,就把对应值相加
           if (!isset($row[$opSortingUser . &#39;-&#39; . 2][$opOrdersType][$warehouseId])) {
               $row[$opSortingUser . &#39;-&#39; . 2][$opOrdersType][$warehouseId][&#39;ow_overtime_qty&#39;] = $count_sorter;
               $row[$opSortingUser . &#39;-&#39; . 2][$opOrdersType][$warehouseId][&#39;ow_more&#39;] = $value[&#39;op_more&#39;];
               $row[$opSortingUser . &#39;-&#39; . 2][$opOrdersType][$warehouseId][&#39;ow_wrong&#39;] = $value[&#39;op_wrong&#39;];
               $row[$opSortingUser . &#39;-&#39; . 2][$opOrdersType][$warehouseId][&#39;ow_leakage&#39;] = $value[&#39;op_leakage&#39;];
           } else {
               $row[$opSortingUser . &#39;-&#39; . 2][$opOrdersType][$warehouseId][&#39;ow_overtime_qty&#39;] += $count_sorter;
               $row[$opSortingUser . &#39;-&#39; . 2][$opOrdersType][$warehouseId][&#39;ow_more&#39;] += $value[&#39;op_more&#39;];
               $row[$opSortingUser . &#39;-&#39; . 2][$opOrdersType][$warehouseId][&#39;ow_wrong&#39;] += $value[&#39;op_wrong&#39;];
               $row[$opSortingUser . &#39;-&#39; . 2][$opOrdersType][$warehouseId][&#39;ow_leakage&#39;] += $value[&#39;op_leakage&#39;];
           }
           $row[$opSortingUser . &#39;-&#39; . 2][$opOrdersType][$warehouseId][&#39;ow_total_pickup&#39;] += 1;
           $row[$opSortingUser . &#39;-&#39; . 2][$opOrdersType][$warehouseId][&#39;total_time&#39;][] = $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[&#39;ow_total_pickup&#39;],
                           "ow_type" => $ke,
                           "ow_fast" => min($v[&#39;total_time&#39;]),
                           "ow_avg" => round(array_sum($v[&#39;total_time&#39;]) / $v[&#39;ow_total_pickup&#39;]),
                           "ow_slow" => max($v[&#39;total_time&#39;]),
                           "ow_orders" => $v[&#39;ow_total_pickup&#39;],
                           "ow_overtime_qty" => $v[&#39;ow_overtime_qty&#39;],
                           "ow_more" => $v[&#39;ow_more&#39;],
                           "ow_wrong" => $v[&#39;ow_wrong&#39;],
                           "ow_leakage" => $v[&#39;ow_leakage&#39;],
                           "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;

}
Copy after login
Copy after login

       

/*
 * 自动任务跑数据
 * 订单组日工作量报表数据写入
 * 
 * $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(&#39;Y-m-d H:i:s&#39;) . " ] 结束运行\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[&#39;op_orders_type&#39;];
           $warehouseId = $value[&#39;warehouse_id&#39;];

           /*
            * 配货员数据
            */
           $pickupUserId = $value[&#39;pickup_user_id&#39;];
           //配货员时间
           if ($value[&#39;op_end_time&#39;] != &#39;0000-00-00 00:00:00&#39; && $value[&#39;op_start_time&#39;] != &#39;0000-00-00 00:00:00&#39;) {
               $peihuo_time = round((strtotime($value[&#39;op_end_time&#39;]) - strtotime($value[&#39;op_start_time&#39;])) / 60, 0);
           } else {
               $peihuo_time = 0;
           }
           //根据配货员账号开通时间和订单类型分别计算超时票数
           $userInfo = User_Service_User::getByUserId($pickupUserId);
           $configId = Common_Service_Config::getByAttribute(Order_Service_OrderWorkload::$StandardConfigurationTime[&#39;0&#39;], $warehouseId);
           $configValueInfo = unserialize($configId[&#39;config_value&#39;]);
           //培训期
           $trainDate = date("Y-m-d H:i:s", strtotime("+10 day", strtotime($userInfo[&#39;create_date&#39;])));
           //试岗期
           $try_hillockDate = date("Y-m-d H:i:s", strtotime("+20 day", strtotime($userInfo[&#39;create_date&#39;])));
           //上岗期
           $postsDate = date("Y-m-d H:i:s", strtotime("+30 day", strtotime($userInfo[&#39;create_date&#39;])));
           $count_peihuo = 0;
           if ($value[&#39;op_start_time&#39;] <= $trainDate) {
               if ((($opOrdersType == 0 && $configValueInfo[&#39;trainA&#39;]) || ($opOrdersType == 1 && $configValueInfo[&#39;trainB&#39;]) || ($opOrdersType == 2 && $configValueInfo[&#39;trainC&#39;])) <= $peihuo_time) {
                   $count_peihuo = 1;
               }
           } else if ($value[&#39;op_start_time&#39;] > $trainDate && $value[&#39;op_start_time&#39;] <= $try_hillockDate) {
               if ((($opOrdersType == 0 && $configValueInfo[&#39;try_hillockA&#39;]) || ($opOrdersType == 1 && $configValueInfo[&#39;try_hillockB&#39;]) || ($opOrdersType == 2 && $configValueInfo[&#39;try_hillockC&#39;])) <= $peihuo_time) {
                   $count_peihuo = 1;
               }
           } else if ($value[&#39;op_start_time&#39;] > $try_hillockDate && $value[&#39;op_start_time&#39;] <= $postsDate) {
               if ((($opOrdersType == 0 && $configValueInfo[&#39;postsA&#39;]) || ($opOrdersType == 1 && $configValueInfo[&#39;postsB&#39;]) || ($opOrdersType == 2 && $configValueInfo[&#39;postsC&#39;])) <= $peihuo_time) {
                   $count_peihuo = 1;
               }
           } else if ($value[&#39;op_start_time&#39;] > $postsDate) {
               if ((($opOrdersType == 0 && $configValueInfo[&#39;matureA&#39;]) || ($opOrdersType == 1 && $configValueInfo[&#39;matureB&#39;]) || ($opOrdersType == 2 && $configValueInfo[&#39;matureC&#39;])) <= $peihuo_time) {
                   $count_peihuo = 1;
               }
           }
           //根据配货员和订单类型仓库作为键、组成四维数组,如果有相同的键,就把对应值相加
           if (!isset($row[$pickupUserId . &#39;-&#39; . 0][$opOrdersType][$warehouseId])) {
               $row[$pickupUserId . &#39;-&#39; . 0][$opOrdersType][$warehouseId][&#39;ow_overtime_qty&#39;] = $count_peihuo;
               $row[$pickupUserId . &#39;-&#39; . 0][$opOrdersType][$warehouseId][&#39;ow_more&#39;] = $value[&#39;op_more&#39;];
               $row[$pickupUserId . &#39;-&#39; . 0][$opOrdersType][$warehouseId][&#39;ow_wrong&#39;] = $value[&#39;op_wrong&#39;];
               $row[$pickupUserId . &#39;-&#39; . 0][$opOrdersType][$warehouseId][&#39;ow_leakage&#39;] = $value[&#39;op_leakage&#39;];
           } else {
               $row[$pickupUserId . &#39;-&#39; . 0][$opOrdersType][$warehouseId][&#39;ow_overtime_qty&#39;] += $count_peihuo;
               $row[$pickupUserId . &#39;-&#39; . 0][$opOrdersType][$warehouseId][&#39;ow_more&#39;] += $value[&#39;op_more&#39;];
               $row[$pickupUserId . &#39;-&#39; . 0][$opOrdersType][$warehouseId][&#39;ow_wrong&#39;] += $value[&#39;op_wrong&#39;];
               $row[$pickupUserId . &#39;-&#39; . 0][$opOrdersType][$warehouseId][&#39;ow_leakage&#39;] += $value[&#39;op_leakage&#39;];
           }
           $row[$pickupUserId . &#39;-&#39; . 0][$opOrdersType][$warehouseId][&#39;ow_total_pickup&#39;] += 1;
           $row[$pickupUserId . &#39;-&#39; . 0][$opOrdersType][$warehouseId][&#39;total_time&#39;][] = $peihuo_time;                   


           /*
            * 打包员数据
            */    
           $packageUserId = $value[&#39;package_user_id&#39;];
           //打包员时间
           if ($value[&#39;op_pack_end&#39;] != &#39;0000-00-00 00:00:00&#39; && $value[&#39;op_pack_start&#39;] != &#39;0000-00-00 00:00:00&#39;) {
               $packing_time = ceil((strtotime($value[&#39;op_pack_end&#39;]) - strtotime($value[&#39;op_pack_start&#39;])) / 60);
           } else {
               $packing_time = 0;
           }
           //根据打包员账号开通时间和订单类型分别计算超时票数
           $userInfo = User_Service_User::getByUserId($packageUserId);
           $configId = Common_Service_Config::getByAttribute(Order_Service_OrderWorkload::$StandardConfigurationTime[&#39;1&#39;], $warehouseId);
           $configValueInfo = unserialize($configId[&#39;config_value&#39;]);
           //培训期
           $trainDate = date("Y-m-d H:i:s", strtotime("+10 day", strtotime($userInfo[&#39;create_date&#39;])));
           //试岗期
           $try_hillockDate = date("Y-m-d H:i:s", strtotime("+20 day", strtotime($userInfo[&#39;create_date&#39;])));
           //上岗期
           $postsDate = date("Y-m-d H:i:s", strtotime("+30 day", strtotime($userInfo[&#39;create_date&#39;])));
           $count_packing = 0;
           if ($value[&#39;op_pack_start&#39;] <= $trainDate) {
               if ((($opOrdersType == 0 && $configValueInfo[&#39;trainA&#39;]) || ($opOrdersType == 1 && $configValueInfo[&#39;trainB&#39;]) || ($opOrdersType == 2 && $configValueInfo[&#39;trainC&#39;])) <= $packing_time) {
                   $count_packing = 1;
               }
           } else if ($value[&#39;op_pack_start&#39;] > $trainDate && $value[&#39;op_pack_start&#39;] <= $try_hillockDate) {
               if ((($opOrdersType == 0 && $configValueInfo[&#39;try_hillockA&#39;]) || ($opOrdersType == 1 && $configValueInfo[&#39;try_hillockB&#39;]) || ($opOrdersType == 2 && $configValueInfo[&#39;try_hillockC&#39;])) <= $packing_time) {
                   $count_packing = 1;
               }
           } else if ($value[&#39;op_pack_start&#39;] > $try_hillockDate && $value[&#39;op_pack_start&#39;] <= $postsDate) {
               if ((($opOrdersType == 0 && $configValueInfo[&#39;postsA&#39;]) || ($opOrdersType == 1 && $configValueInfo[&#39;postsB&#39;]) || ($opOrdersType == 2 && $configValueInfo[&#39;postsC&#39;])) <= $packing_time) {
                   $count_packing = 1;
               }
           } else if ($value[&#39;op_pack_start&#39;] > $postsDate) {
              if ((($opOrdersType == 0 && $configValueInfo[&#39;matureA&#39;]) || ($opOrdersType == 1 && $configValueInfo[&#39;matureB&#39;]) || ($opOrdersType == 2 && $configValueInfo[&#39;matureC&#39;])) <= $packing_time) {
                   $count_packing = 1;
               }
           }
           //根据打包员和订单类型仓库作为键、组成四维数组,如果有相同的键,就把对应值相加
           if (!isset($row[$packageUserId . &#39;-&#39; . 1][$opOrdersType][$warehouseId])) {
               $row[$packageUserId . &#39;-&#39; . 1][$opOrdersType][$warehouseId][&#39;ow_overtime_qty&#39;] = $count_packing;
               $row[$packageUserId . &#39;-&#39; . 1][$opOrdersType][$warehouseId][&#39;ow_more&#39;] = $value[&#39;op_more&#39;];
               $row[$packageUserId . &#39;-&#39; . 1][$opOrdersType][$warehouseId][&#39;ow_wrong&#39;] = $value[&#39;op_wrong&#39;];
               $row[$packageUserId . &#39;-&#39; . 1][$opOrdersType][$warehouseId][&#39;ow_leakage&#39;] = $value[&#39;op_leakage&#39;];
           } else {
               $row[$packageUserId . &#39;-&#39; . 1][$opOrdersType][$warehouseId][&#39;ow_overtime_qty&#39;] += $count_packing;
               $row[$packageUserId . &#39;-&#39; . 1][$opOrdersType][$warehouseId][&#39;ow_more&#39;] += $value[&#39;op_more&#39;];
               $row[$packageUserId . &#39;-&#39; . 1][$opOrdersType][$warehouseId][&#39;ow_wrong&#39;] += $value[&#39;op_wrong&#39;];
               $row[$packageUserId . &#39;-&#39; . 1][$opOrdersType][$warehouseId][&#39;ow_leakage&#39;] += $value[&#39;op_leakage&#39;];
           }
           $row[$packageUserId . &#39;-&#39; . 1][$opOrdersType][$warehouseId][&#39;ow_total_pickup&#39;] += 1;
           $row[$packageUserId . &#39;-&#39; . 1][$opOrdersType][$warehouseId][&#39;total_time&#39;][] = $packing_time;


           /*
            * 分拣员数据
            */
           $opSortingUser = $value[&#39;op_sorting_user&#39;];
           //分拣员时间
           if ($value[&#39;op_sorting_end&#39;] != &#39;0000-00-00 00:00:00&#39; && $value[&#39;op_sorting_start&#39;] != &#39;0000-00-00 00:00:00&#39;) {
               $sorter_time = ceil((strtotime($value[&#39;op_sorting_end&#39;]) - strtotime($value[&#39;op_sorting_start&#39;])) / 60);
           } else {
               $sorter_time = 0;
           }
           //根据分拣员账号开通时间和订单类型分别计算超时票数
           $userInfo = User_Service_User::getByUserId($opSortingUser);
           $configId = Common_Service_Config::getByAttribute(Order_Service_OrderWorkload::$StandardConfigurationTime[&#39;2&#39;], $warehouseId);
           $configValueInfo = unserialize($configId[&#39;config_value&#39;]);
           //培训期
           $trainDate = date("Y-m-d H:i:s", strtotime("+10 day", strtotime($userInfo[&#39;create_date&#39;])));
           //试岗期
           $try_hillockDate = date("Y-m-d H:i:s", strtotime("+20 day", strtotime($userInfo[&#39;create_date&#39;])));
           //上岗期
           $postsDate = date("Y-m-d H:i:s", strtotime("+30 day", strtotime($userInfo[&#39;create_date&#39;])));
           $count_sorter = 0;
           if ($value[&#39;op_sorting_start&#39;] <= $trainDate) {
               if ((($opOrdersType == 0 && $configValueInfo[&#39;trainA&#39;]) || ($opOrdersType == 1 && $configValueInfo[&#39;trainB&#39;]) || ($opOrdersType == 2 && $configValueInfo[&#39;trainC&#39;])) <= $sorter_time) {
                   $count_sorter = 1;
               }
           } else if ($value[&#39;op_sorting_start&#39;] > $trainDate && $value[&#39;op_sorting_start&#39;] <= $try_hillockDate) {
               if ((($opOrdersType == 0 && $configValueInfo[&#39;try_hillockA&#39;]) || ($opOrdersType == 1 && $configValueInfo[&#39;try_hillockB&#39;]) || ($opOrdersType == 2 && $configValueInfo[&#39;try_hillockC&#39;])) <= $sorter_time) {
                   $count_sorter = 1;
               }
           } else if ($value[&#39;op_sorting_start&#39;] > $try_hillockDate && $value[&#39;op_sorting_start&#39;] <= $postsDate) {
               if ((($opOrdersType == 0 && $configValueInfo[&#39;postsA&#39;]) || ($opOrdersType == 1 && $configValueInfo[&#39;postsB&#39;]) || ($opOrdersType == 2 && $configValueInfo[&#39;postsC&#39;])) <= $sorter_time) {
                   $count_sorter = 1;
               }
           } else if ($value[&#39;op_sorting_start&#39;] > $postsDate) {
               if ((($opOrdersType == 0 && $configValueInfo[&#39;matureA&#39;]) || ($opOrdersType == 1 && $configValueInfo[&#39;matureB&#39;]) || ($opOrdersType == 2 && $configValueInfo[&#39;matureC&#39;])) <= $sorter_time) {
                   $count_sorter = 1;
               }
           }
           //根据分拣员和订单类型仓库作为键、组成四维数组,如果有相同的键,就把对应值相加
           if (!isset($row[$opSortingUser . &#39;-&#39; . 2][$opOrdersType][$warehouseId])) {
               $row[$opSortingUser . &#39;-&#39; . 2][$opOrdersType][$warehouseId][&#39;ow_overtime_qty&#39;] = $count_sorter;
               $row[$opSortingUser . &#39;-&#39; . 2][$opOrdersType][$warehouseId][&#39;ow_more&#39;] = $value[&#39;op_more&#39;];
               $row[$opSortingUser . &#39;-&#39; . 2][$opOrdersType][$warehouseId][&#39;ow_wrong&#39;] = $value[&#39;op_wrong&#39;];
               $row[$opSortingUser . &#39;-&#39; . 2][$opOrdersType][$warehouseId][&#39;ow_leakage&#39;] = $value[&#39;op_leakage&#39;];
           } else {
               $row[$opSortingUser . &#39;-&#39; . 2][$opOrdersType][$warehouseId][&#39;ow_overtime_qty&#39;] += $count_sorter;
               $row[$opSortingUser . &#39;-&#39; . 2][$opOrdersType][$warehouseId][&#39;ow_more&#39;] += $value[&#39;op_more&#39;];
               $row[$opSortingUser . &#39;-&#39; . 2][$opOrdersType][$warehouseId][&#39;ow_wrong&#39;] += $value[&#39;op_wrong&#39;];
               $row[$opSortingUser . &#39;-&#39; . 2][$opOrdersType][$warehouseId][&#39;ow_leakage&#39;] += $value[&#39;op_leakage&#39;];
           }
           $row[$opSortingUser . &#39;-&#39; . 2][$opOrdersType][$warehouseId][&#39;ow_total_pickup&#39;] += 1;
           $row[$opSortingUser . &#39;-&#39; . 2][$opOrdersType][$warehouseId][&#39;total_time&#39;][] = $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[&#39;ow_total_pickup&#39;],
                           "ow_type" => $ke,
                           "ow_fast" => min($v[&#39;total_time&#39;]),
                           "ow_avg" => round(array_sum($v[&#39;total_time&#39;]) / $v[&#39;ow_total_pickup&#39;]),
                           "ow_slow" => max($v[&#39;total_time&#39;]),
                           "ow_orders" => $v[&#39;ow_total_pickup&#39;],
                           "ow_overtime_qty" => $v[&#39;ow_overtime_qty&#39;],
                           "ow_more" => $v[&#39;ow_more&#39;],
                           "ow_wrong" => $v[&#39;ow_wrong&#39;],
                           "ow_leakage" => $v[&#39;ow_leakage&#39;],
                           "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;

}
Copy after login
Copy after login

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!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

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

Hot Article

Roblox: Bubble Gum Simulator Infinity - How To Get And Use Royal Keys
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Fusion System, Explained
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers Of The Witch Tree - How To Unlock The Grappling Hook
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Hot Topics

Java Tutorial
1664
14
PHP Tutorial
1269
29
C# Tutorial
1249
24
Linux Architecture: Unveiling the 5 Basic Components Linux Architecture: Unveiling the 5 Basic Components Apr 20, 2025 am 12:04 AM

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.

How to check the warehouse address of git How to check the warehouse address of git Apr 17, 2025 pm 01:54 PM

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.

vscode Previous Next Shortcut Key vscode Previous Next Shortcut Key Apr 15, 2025 pm 10:51 PM

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 →

How to run java code in notepad How to run java code in notepad Apr 16, 2025 pm 07:39 PM

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.

How to run sublime after writing the code How to run sublime after writing the code Apr 16, 2025 am 08:51 AM

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.

laravel installation code laravel installation code Apr 18, 2025 pm 12:30 PM

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)

What is the main purpose of Linux? What is the main purpose of Linux? Apr 16, 2025 am 12:19 AM

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.

git software installation git software installation Apr 17, 2025 am 11:57 AM

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)

See all articles