降低双屏机菜谱获取数据复杂度

This commit is contained in:
jjLv 2025-06-06 13:52:51 +08:00
parent 19ec96e0dc
commit 411e376d79
3 changed files with 29 additions and 23 deletions

View File

@ -10,7 +10,6 @@ import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.common.houqin.constant.GlobalConstants; import com.bonus.common.houqin.constant.GlobalConstants;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
@ -162,6 +161,27 @@ public class DeviceServiceImpl implements DeviceService {
//查询所有的餐次 //查询所有的餐次
List<CookMealTimeVO> mealTimeList = mapper.getMealTimeList(menuRecipe.getStallId()); List<CookMealTimeVO> mealTimeList = mapper.getMealTimeList(menuRecipe.getStallId());
List<CookRecipeDateCompressVO> dateList = new ArrayList<>(); List<CookRecipeDateCompressVO> dateList = new ArrayList<>();
setMealDataByDate(applyDateList, mealTimeList, menuRecipeDetailList, recipeDishList, dateList);
logger.info("menuRecipe : {} ", menuRecipe);
if(menuRecipe.getRecipeType() !=null){
issueRecipe.setRecipeType(Integer.valueOf(menuRecipe.getRecipeType()+""));
}
issueRecipe.setRecipeId(menuRecipe.getRecipeId());
if(menuRecipe.getUpdateTime() !=null) {
issueRecipe.setUptime(menuRecipe.getUpdateTime().toInstant()
.atZone(ZoneId.systemDefault())
.toLocalDateTime());
} else {
issueRecipe.setUptime(LocalDateTime.now());
}
issueRecipe.setDateList(dateList);
issueRecipe.setMealList(menuList);
return issueRecipe;
}
private static void setMealDataByDate(List<LocalDate> applyDateList, List<CookMealTimeVO> mealTimeList, List<CookMenuAndroidRecipeDetailVO> menuRecipeDetailList, List<CookRecipeDetailCompressVO> recipeDishList, List<CookRecipeDateCompressVO> dateList) {
for (LocalDate date : applyDateList){ for (LocalDate date : applyDateList){
CookRecipeDateCompressVO dateCompressVO = new CookRecipeDateCompressVO(); CookRecipeDateCompressVO dateCompressVO = new CookRecipeDateCompressVO();
List<CookRecipeIntervalCompressVO> intervalList = new ArrayList<>(); List<CookRecipeIntervalCompressVO> intervalList = new ArrayList<>();
@ -184,23 +204,6 @@ public class DeviceServiceImpl implements DeviceService {
dateCompressVO.setIntervalList(intervalList); dateCompressVO.setIntervalList(intervalList);
dateList.add(dateCompressVO); dateList.add(dateCompressVO);
} }
logger.info("menuRecipe : {} ", menuRecipe);
if(menuRecipe.getRecipeType() !=null){
issueRecipe.setRecipeType(Integer.valueOf(menuRecipe.getRecipeType()+""));
}
issueRecipe.setRecipeId(menuRecipe.getRecipeId());
if(menuRecipe.getUpdateTime() !=null) {
issueRecipe.setUptime(menuRecipe.getUpdateTime().toInstant()
.atZone(ZoneId.systemDefault())
.toLocalDateTime());
} else {
issueRecipe.setUptime(LocalDateTime.now());
}
issueRecipe.setDateList(dateList);
issueRecipe.setMealList(menuList);
return issueRecipe;
} }

View File

@ -5,7 +5,6 @@ import com.bonus.common.core.exception.ServiceException;
import com.bonus.common.core.utils.DateUtils; import com.bonus.common.core.utils.DateUtils;
import com.bonus.common.core.utils.StringUtils; import com.bonus.common.core.utils.StringUtils;
import com.bonus.common.houqin.constant.GlobalConstants; import com.bonus.common.houqin.constant.GlobalConstants;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.bonus.canteen.core.device.mapper.DeviceInfoMapper; import com.bonus.canteen.core.device.mapper.DeviceInfoMapper;
import com.bonus.canteen.core.device.domain.DeviceInfo; import com.bonus.canteen.core.device.domain.DeviceInfo;

View File

@ -33,6 +33,8 @@ public class DataScreeningServiceImpl implements DataScreeningService {
private static final String DISH = "Dish"; private static final String DISH = "Dish";
private static final int MAX_LAST_DAY = -29; private static final int MAX_LAST_DAY = -29;
private static final String YYYY_MM_DD = "yyyy-MM-dd";
/** /**
* 获取数据总览 * 获取数据总览
* *
@ -175,7 +177,7 @@ public class DataScreeningServiceImpl implements DataScreeningService {
? mapper.getCanteenOrdersAndSalesTrends(date, DateUtils.getDate()) ? mapper.getCanteenOrdersAndSalesTrends(date, DateUtils.getDate())
: mapper.getSupermarketOrderAndSalesTrend(date, DateUtils.getDate()); : mapper.getSupermarketOrderAndSalesTrend(date, DateUtils.getDate());
List<String> dateList = getDatesBetween(date, DateUtils.getDate(), "yyyy-MM-dd"); List<String> dateList = getDatesBetween(date, DateUtils.getDate(), YYYY_MM_DD);
// 将list中的数据放入map中key为orderDatevalue为EchartsVO 提升查询效率 // 将list中的数据放入map中key为orderDatevalue为EchartsVO 提升查询效率
Map<String, EchartsVO> dataMap = list.stream() Map<String, EchartsVO> dataMap = list.stream()
.collect(Collectors.toMap(EchartsVO::getOrderDate, vo -> vo, (a, b) -> a)); .collect(Collectors.toMap(EchartsVO::getOrderDate, vo -> vo, (a, b) -> a));
@ -253,7 +255,7 @@ public class DataScreeningServiceImpl implements DataScreeningService {
Calendar calendar = Calendar.getInstance(); Calendar calendar = Calendar.getInstance();
// 日期减去一天 // 日期减去一天
calendar.add(Calendar.DATE, day); calendar.add(Calendar.DATE, day);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat sdf = new SimpleDateFormat(YYYY_MM_DD);
return sdf.format(calendar.getTime()); return sdf.format(calendar.getTime());
} }
@ -291,13 +293,15 @@ public class DataScreeningServiceImpl implements DataScreeningService {
*/ */
private String getWeekday(String dateStr) { private String getWeekday(String dateStr) {
try { try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat sdf = new SimpleDateFormat(YYYY_MM_DD);
Date date = sdf.parse(dateStr); Date date = sdf.parse(dateStr);
Calendar calendar = Calendar.getInstance(); Calendar calendar = Calendar.getInstance();
calendar.setTime(date); calendar.setTime(date);
String[] weekDays = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"}; String[] weekDays = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK) - 1; int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK) - 1;
if (dayOfWeek < 0) dayOfWeek = 0; if (dayOfWeek < 0){
dayOfWeek = 0;
}
return weekDays[dayOfWeek]; return weekDays[dayOfWeek];
} catch (Exception e) { } catch (Exception e) {
log.error("日期转换异常", e); log.error("日期转换异常", e);