/** * MakeRouteIndexAct::act_makePositionIndex() * 生成仓位索引 * @return void */ public function act_makePositionIndex() { $positionInfo = WhPositionDistributionModel::get_position_info_union_area(); if (empty($positionInfo)) { self::$errCode = 204; self::$errMsg = '没有关联的仓位信息!'; return FALSE; } //print_r($positionInfo);exit; $y = range(0, 10); //纵坐标范围 $num = floor(count($y) / 2); //循环次数 $y = -2; $sort = array(); //存放横纵坐标索引值 while ($num > 0) { //生成排序Y坐标索引,键名是Y坐标,值是索引级别,值越大越优先 $y_max = $y < 0 ? 0 : $y + 2; $sort[$y] = $sort[$y_max] = $num; //$sort[$num] = array($y, $y_max); $y += 3; $num--; } $new_arr = array(); foreach ($positionInfo as $position) { $new_arr[$position['areaId']][$sort[$position['y_alixs']]][$position['x_alixs']][$position['z_alixs']][] = $position; } //print_r($new_arr);exit; unset($positionInfo); WhBaseModel::begin(); $where = 'routeType = 4'; $info = WhWaveRouteRelationModel::delete_relation($where); if (!$info) { WhBaseModel::rollback(); self::$errCode = 202; self::$errMsg = '删除旧仓位索引失败!'; return FALSE; } $string = ''; $i = 1; //仓位排序判断 蛇形配货 $route = 1; //仓位索引排序 $data_arr = array(); //插入数据 $routeType = 4; //索引类型为仓位。 foreach ($new_arr as $area) { foreach ($area as $y_sort) { //按照Y轴排序的结果 //print_r($y_sort);exit; foreach ($y_sort as $x_sort) { //按照X轴排序的结果 $i % 2 === 0 ? rsort($x_sort) : sort($x_sort); //print_r($x_sort);exit; foreach ($x_sort as $z_sort) { //按照Z轴排序的结果 sort($z_sort); //print_r($z_sort);exit(); foreach ($z_sort as $position) { $data_arr[] = array('name' => $position['pName'], 'routeId' => $position['id'], 'route' => $route, 'routeType' => $routeType); if ($route % 100 == 0) { //每3000条插入一次数据\ //var_dump($data_arr);exit; $info = WhWaveRouteRelationModel::insert_data($data_arr); if (!$info) { WhBaseModel::rollback(); self::$errCode = 203; self::$errMsg = '插入新仓位索引失败!'; return FALSE; } $data_arr = array(); } $route++; } } } } $i++; } //print_r($data_arr);exit; unset($new_arr); if (!empty($data_arr)) { $info = WhWaveRouteRelationModel::insert_data($data_arr); if (!$info) { WhBaseModel::rollback(); self::$errCode = 203; self::$errMsg = '插入新仓位索引失败!'; return FALSE; } } WhBaseModel::commit(); self::$errCode = 200; self::$errMsg = '更新仓位索引成功!'; return TRUE; }