| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- <?php
- namespace App\Module\Farm\AdminControllers\Metrics;
- use App\Module\Farm\Models\FarmDailyStats;
- use UCore\DcatAdmin\Metrics\Examples\NumberS;
- use Illuminate\Http\Request;
- /**
- * 农场土地等级数量统计卡片
- * 使用多行数字卡片显示各个土地类型的数量统计
- */
- class FarmLandLevelStatsCard extends NumberS
- {
- /**
- * 卡片标题
- */
- protected $title = '土地等级数量统计(昨天)';
- /**
- * 初始化卡片内容
- */
- protected function init()
- {
- parent::init();
- // 土地统计不需要时间范围选择,移除下拉选项
- $this->dropdown([]);
- }
- /**
- * 处理请求
- *
- * @param Request $request
- * @return mixed|void
- */
- public function handle(Request $request)
- {
- $stats = $this->getLandLevelStats();
- // 转换为NumberS需要的数据格式(键值对数组)
- $dataList = [];
- foreach ($stats as $stat) {
- $dataList[$stat['name']] = $stat['count'];
- }
- $this->withContent($dataList);
- }
- /**
- * 获取土地等级统计数据
- *
- * @return array
- */
- private function getLandLevelStats(): array
- {
- $latestStats = FarmDailyStats::orderBy('stats_date', 'desc')->first();
- if (!$latestStats) {
- return [];
- }
- $landTypeNames = [
- 1 => '普通土地',
- 2 => '红土地',
- 3 => '黑土地',
- 4 => '金色特殊土地',
- 5 => '蓝色特殊土地',
- 6 => '紫色特殊土地',
- ];
- $stats = [];
- $totalLands = 0;
- // 获取各个土地类型的数量
- for ($type = 1; $type <= 6; $type++) {
- $field = "land_type_{$type}";
- $count = $latestStats->$field ?? 0;
- $totalLands += $count;
- // 只显示有数量的土地类型
- if ($count > 0) {
- $stats[] = [
- 'name' => $landTypeNames[$type],
- 'count' => $count
- ];
- }
- }
- // 添加总计
- if ($totalLands > 0) {
- $stats[] = [
- 'name' => '总计',
- 'count' => $totalLands
- ];
- }
- return $stats;
- }
- }
|