package com.zy.acs.manager.manager.controller; import com.zy.acs.common.utils.CoolsQueue; import com.zy.acs.common.utils.RedisSupport; import com.zy.acs.manager.manager.service.*; import com.zy.acs.framework.common.Cools; import com.zy.acs.framework.common.R; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.*; import java.util.stream.Collectors; /** * Created by vincent on 4/25/2024 */ @RequestMapping("/digital/charts") @RestController public class DigitalChartsController { private final RedisSupport redis = RedisSupport.defaultRedisSupport; public static final CoolsQueue agvChartsQueue = new CoolsQueue<>(Map.class,10); @Autowired private AgvService agvService; @Autowired private AgvDetailService agvDetailService; @Autowired private CodeService codeService; @Autowired private LocService locService; @Autowired private TaskService taskService; @Autowired private ActionService actionService; @Autowired private JdbcTemplate jdbcTemplate; @GetMapping("/actioncount") public R actioncount() { return R.ok().add(actionService.selectCountGroupByType()); } @GetMapping("/agvcharts") public R agvcharts() { return R.ok().add(agvChartsQueue.data()); } @GetMapping("/loccharts") public R loccharts() { return R.ok().add(locService.selectCountGroupByLocSts()); } @GetMapping("/stock/info") public R getStockInfo() { return R.ok(); } @GetMapping("/taskcharts") public R taskcharts() { List> list = taskService.selectStatByLastSevenDays(); LinkedHashSet week = list.stream() .map(record -> (String)record.get("weekday")) .collect(Collectors.toCollection(LinkedHashSet::new)); List> data = transformDataSimplified(list, week); List newWeek = new ArrayList<>(); for (String str : week) { switch (str) { case "Monday": newWeek.add("周一"); break; case "Tuesday": newWeek.add("周二"); break; case "Wednesday": newWeek.add("周三"); break; case "Thursday": newWeek.add("周四"); break; case "Friday": newWeek.add("周五"); break; case "Saturday": newWeek.add("周六"); break; case "Sunday": newWeek.add("周日"); break; default: break; } } return R.ok().add(Cools.add("week", newWeek).add("data", data)); } @GetMapping("/inout") public R inout() { return R.ok().add(actionService.selectRecentForInout()); } public List> transformDataSimplified(List> rawData, LinkedHashSet orderedWeekdaysSet) { Map> groupedByType = rawData.stream() .collect(Collectors.groupingBy(record -> (String) record.get("type"), Collectors.toMap( record -> (String) record.get("weekday"), record -> ((Long) record.get("count")).intValue(), (oldValue, newValue) -> oldValue, LinkedHashMap::new ))); return groupedByType.entrySet().stream().map(entry -> { Map taskTypeEntry = new LinkedHashMap<>(); taskTypeEntry.put("name", entry.getKey()); List counts = orderedWeekdaysSet.stream() .map(weekday -> entry.getValue().getOrDefault(weekday, 0)) .collect(Collectors.toList()); taskTypeEntry.put("data", counts); return taskTypeEntry; }).collect(Collectors.toList()); } }