每日统计

This commit is contained in:
seesaw
2024-10-16 09:58:09 +08:00
parent fc2819a4c7
commit 185520f436
21 changed files with 310 additions and 10 deletions

View File

@ -72,5 +72,5 @@ public class BusinessRespVO {
*/ */
private BigDecimal withdrawal; private BigDecimal withdrawal;
private BigDecimal reduce;
} }

View File

@ -0,0 +1,17 @@
package cn.iocoder.yudao.module.member.controller.admin.business.vo;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@Data
public class StatisticsVo {
private Long orderId;
private BigDecimal totalMoney;
private BigDecimal reduceMoney;
private Long carteenId;
private LocalDateTime time;
private int order_sum;
}

View File

@ -9,9 +9,6 @@ import java.math.BigDecimal;
@Data @Data
public class OrderExcelVO { public class OrderExcelVO {
@ExcelProperty("日期")
private String dayTime;
@ExcelProperty("用户名") @ExcelProperty("用户名")
private String nickname; private String nickname;
@ -39,4 +36,7 @@ public class OrderExcelVO {
@NumberFormat("#0.00") @NumberFormat("#0.00")
private BigDecimal price; private BigDecimal price;
@ExcelProperty("日期")
private String dayTime;
} }

View File

@ -55,4 +55,9 @@ public class AppOrderDetailRespVO {
*/ */
private BigDecimal dishesNumber; private BigDecimal dishesNumber;
/**
* 菜品单价
*/
private BigDecimal unitPrice;
} }

View File

@ -88,4 +88,7 @@ public class BusinessDO extends BaseDO {
*/ */
private Long carteenId; private Long carteenId;
private BigDecimal reduce;
} }

View File

@ -6,6 +6,9 @@ import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.member.controller.admin.business.vo.BusinessPageReqVO; import cn.iocoder.yudao.module.member.controller.admin.business.vo.BusinessPageReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.business.BusinessDO; import cn.iocoder.yudao.module.member.dal.dataobject.business.BusinessDO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/** /**
* 营业统计 Mapper * 营业统计 Mapper
@ -32,4 +35,7 @@ public interface BusinessMapper extends BaseMapperX<BusinessDO> {
.orderByDesc(BusinessDO::getId)); .orderByDesc(BusinessDO::getId));
} }
@Select("select id from t_carteen where deleted = false")
List<Long> getAllStoreId();
} }

View File

@ -4,10 +4,12 @@ import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.iocoder.yudao.framework.quartz.core.handler.JobHandler; import cn.iocoder.yudao.framework.quartz.core.handler.JobHandler;
import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore; import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore;
import cn.iocoder.yudao.module.member.controller.admin.business.vo.StatisticsVo;
import cn.iocoder.yudao.module.member.dal.dataobject.card.CardDO; import cn.iocoder.yudao.module.member.dal.dataobject.card.CardDO;
import cn.iocoder.yudao.module.member.dal.dataobject.diningplates.DiningPlatesDO; import cn.iocoder.yudao.module.member.dal.dataobject.diningplates.DiningPlatesDO;
import cn.iocoder.yudao.module.member.dal.dataobject.order.DishOrderDO; import cn.iocoder.yudao.module.member.dal.dataobject.order.DishOrderDO;
import cn.iocoder.yudao.module.member.enums.TimePeriodEnum; import cn.iocoder.yudao.module.member.enums.TimePeriodEnum;
import cn.iocoder.yudao.module.member.service.business.BusinessService;
import cn.iocoder.yudao.module.member.service.card.CardService; import cn.iocoder.yudao.module.member.service.card.CardService;
import cn.iocoder.yudao.module.member.service.diningplates.DiningPlatesService; import cn.iocoder.yudao.module.member.service.diningplates.DiningPlatesService;
import cn.iocoder.yudao.module.member.service.order.OrderService; import cn.iocoder.yudao.module.member.service.order.OrderService;
@ -22,6 +24,7 @@ import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -43,7 +46,8 @@ public class BalanceDeductionJob implements JobHandler {
private StringRedisTemplate stringRedisTemplate; private StringRedisTemplate stringRedisTemplate;
@Resource @Resource
private MemberUserService userService; private MemberUserService userService;
@Resource
private BusinessService businessService;
/** /**
* 30分钟之后自动解绑并扣款 * 30分钟之后自动解绑并扣款
*/ */
@ -74,7 +78,7 @@ public class BalanceDeductionJob implements JobHandler {
//BigDecimal total = new BigDecimal(0.01); //BigDecimal total = new BigDecimal(0.01);
Long userId = dishOrderDO.getUserId(); Long userId = dishOrderDO.getUserId();
CardDO cardDO = new CardDO(); CardDO cardDO = new CardDO();
cardDO.setType(TimePeriodEnum.getTimePeriod(LocalDateTime.now())); cardDO.setType(TimePeriodEnum.getTimePeriod(dishOrderDO.getCreateTime()));
CardDO oldCardDO = cardService.getCardDoByUserId(userId); CardDO oldCardDO = cardService.getCardDoByUserId(userId);
@ -162,6 +166,19 @@ public class BalanceDeductionJob implements JobHandler {
dishOrderDO.setTotalMoney(total); dishOrderDO.setTotalMoney(total);
dishOrderDO.setUpdateTime(LocalDateTime.now()); dishOrderDO.setUpdateTime(LocalDateTime.now());
stringRedisTemplate.delete(dishOrderDO.getDiningPlatesNum() + "-" + dishOrderDO.getStoreId()); stringRedisTemplate.delete(dishOrderDO.getDiningPlatesNum() + "-" + dishOrderDO.getStoreId());
//更新营业数据
if(dishOrderDO.getOrderStatus().equals(DishOrderDO.COMPLETE)){
StatisticsVo statisticsVo = new StatisticsVo();
statisticsVo.setCarteenId(dishOrderDO.getStoreId());
statisticsVo.setTotalMoney(dishOrderDO.getTotalMoney());
statisticsVo.setOrder_sum(1);
statisticsVo.setReduceMoney(dishOrderDO.getReductionAmount());
statisticsVo.setTime(dishOrderDO.getCreateTime());
statisticsVo.setOrderId(dishOrderDO.getId());
businessService.updateStatistics(statisticsVo);
}
}); });
//取消批量,防止同一人订餐少扣款 //取消批量,防止同一人订餐少扣款
//cardService.insertBatch(list); //cardService.insertBatch(list);

View File

@ -0,0 +1,60 @@
package cn.iocoder.yudao.module.member.job;
import cn.hutool.core.date.LocalDateTimeUtil;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.quartz.core.handler.JobHandler;
import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore;
import cn.iocoder.yudao.module.member.dal.dataobject.business.BusinessDO;
import cn.iocoder.yudao.module.member.dal.dataobject.card.CardDO;
import cn.iocoder.yudao.module.member.dal.dataobject.order.DishOrderDO;
import cn.iocoder.yudao.module.member.dal.dataobject.orderdetail.OrderDetailDO;
import cn.iocoder.yudao.module.member.dal.mysql.business.BusinessMapper;
import cn.iocoder.yudao.module.member.dal.mysql.card.CardMapper;
import cn.iocoder.yudao.module.member.dal.mysql.order.DishOrderMapper;
import cn.iocoder.yudao.module.member.dal.mysql.orderdetail.OrderDetailMapper;
import cn.iocoder.yudao.module.member.enums.CostTypeEnum;
import cn.iocoder.yudao.module.member.enums.TimePeriodEnum;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @Author:qjq
* @Date:2024/4/3 14:50
*/
@Slf4j
@Component
public class BusinessNewJob implements JobHandler {
@Resource
private BusinessMapper businessMapper;
/**
* 执行任务
*
* @param param 参数
* @return 结果
* @throws Exception 异常
*/
@Override
@TenantIgnore
public String execute(String param){
List<Long> allStoreId = businessMapper.getAllStoreId();
for (Long storeId : allStoreId) {
BusinessDO businessDO = new BusinessDO();
businessDO.setCarteenId(storeId);
businessMapper.insert(businessDO);
}
log.info("[execute][生成当天统计营业数据 {}条]", allStoreId.size());
return String.format("生成当天统计营业数据 %s 条 ", allStoreId.size());
}
}

View File

@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.member.service.business;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.member.controller.admin.business.vo.BusinessPageReqVO; import cn.iocoder.yudao.module.member.controller.admin.business.vo.BusinessPageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.business.vo.BusinessSaveReqVO; import cn.iocoder.yudao.module.member.controller.admin.business.vo.BusinessSaveReqVO;
import cn.iocoder.yudao.module.member.controller.admin.business.vo.StatisticsVo;
import cn.iocoder.yudao.module.member.dal.dataobject.business.BusinessDO; import cn.iocoder.yudao.module.member.dal.dataobject.business.BusinessDO;
import javax.validation.*; import javax.validation.*;
@ -52,4 +53,7 @@ public interface BusinessService {
*/ */
PageResult<BusinessDO> getBusinessPage(BusinessPageReqVO pageReqVO); PageResult<BusinessDO> getBusinessPage(BusinessPageReqVO pageReqVO);
void updateStatistics(StatisticsVo vo);
} }

View File

@ -1,20 +1,35 @@
package cn.iocoder.yudao.module.member.service.business; package cn.iocoder.yudao.module.member.service.business;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.member.controller.admin.business.vo.BusinessPageReqVO; import cn.iocoder.yudao.module.member.controller.admin.business.vo.BusinessPageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.business.vo.BusinessSaveReqVO; import cn.iocoder.yudao.module.member.controller.admin.business.vo.BusinessSaveReqVO;
import cn.iocoder.yudao.module.member.controller.admin.business.vo.StatisticsVo;
import cn.iocoder.yudao.module.member.dal.dataobject.business.BusinessDO; import cn.iocoder.yudao.module.member.dal.dataobject.business.BusinessDO;
import cn.iocoder.yudao.module.member.dal.dataobject.orderdetail.OrderDetailDO;
import cn.iocoder.yudao.module.member.dal.mysql.business.BusinessMapper; import cn.iocoder.yudao.module.member.dal.mysql.business.BusinessMapper;
import cn.iocoder.yudao.module.member.dal.mysql.card.CardMapper; import cn.iocoder.yudao.module.member.dal.mysql.card.CardMapper;
import cn.iocoder.yudao.module.member.dal.mysql.order.DishOrderMapper; import cn.iocoder.yudao.module.member.dal.mysql.order.DishOrderMapper;
import cn.iocoder.yudao.module.member.dal.mysql.orderdetail.OrderDetailMapper; import cn.iocoder.yudao.module.member.dal.mysql.orderdetail.OrderDetailMapper;
import cn.iocoder.yudao.module.member.enums.CostTypeEnum;
import cn.iocoder.yudao.module.member.enums.TimePeriodEnum;
import cn.iocoder.yudao.module.member.service.orderdetail.OrderDetailService;
import cn.iocoder.yudao.module.system.enums.ErrorCodeConstants; import cn.iocoder.yudao.module.system.enums.ErrorCodeConstants;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.List;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
@ -35,6 +50,7 @@ public class BusinessServiceImpl implements BusinessService {
private OrderDetailMapper orderDetailMapper; private OrderDetailMapper orderDetailMapper;
@Resource @Resource
private CardMapper cardMapper; private CardMapper cardMapper;
@Override @Override
public Long createBusiness(BusinessSaveReqVO createReqVO) { public Long createBusiness(BusinessSaveReqVO createReqVO) {
// 插入 // 插入
@ -77,5 +93,56 @@ public class BusinessServiceImpl implements BusinessService {
return businessMapper.selectPage(pageReqVO); return businessMapper.selectPage(pageReqVO);
} }
@Override
public synchronized void updateStatistics(StatisticsVo vo) {
// 获取今天的开始时间
LocalDateTime startOfDay = LocalDate.now().atStartOfDay();
// 获取今天的结束时间 (23:59:59.999)
LocalDateTime endOfDay = LocalDateTime.of(LocalDate.now(), LocalTime.MAX);
List<BusinessDO> businessDOS = businessMapper.selectList(Wrappers.<BusinessDO>lambdaQuery()
.between(BusinessDO::getCreateTime, startOfDay, endOfDay)
.eq(BusinessDO::getCarteenId, vo.getCarteenId()));
if (CollectionUtil.isNotEmpty(businessDOS)) {
BusinessDO businessDO = businessDOS.get(0);
//重量
if(ObjectUtil.isNotEmpty(vo.getOrderId())){
List<OrderDetailDO> orderDetailDOS = orderDetailMapper.selectList(Wrappers.<OrderDetailDO>lambdaQuery().eq(OrderDetailDO::getOrderId, vo.getOrderId()));
if (CollectionUtil.isNotEmpty(orderDetailDOS)) {
BigDecimal reduce = orderDetailDOS.stream().map(OrderDetailDO::getWeight).reduce(BigDecimal.ZERO, BigDecimal::add);
businessDO.setWeigh(businessDO.getWeigh().add(reduce));
}
}
//订单数
businessDO.setOrderSum(businessDO.getOrderSum() + vo.getOrder_sum());
//营业额
if(ObjectUtil.isNotEmpty(vo.getTotalMoney())){
businessDO.setTurnover(businessDO.getTurnover().add(vo.getTotalMoney()));
}
//减免金额
if(ObjectUtil.isNotEmpty(vo.getReduceMoney())){
businessDO.setReduce(businessDO.getReduce().add(vo.getReduceMoney()));
}
//早中晚金额
if(ObjectUtil.isNotEmpty(vo.getTime())){
String timePeriod = TimePeriodEnum.getTimePeriod(vo.getTime());
if(timePeriod.equals(CostTypeEnum.MORNING.getCode())){
businessDO.setBreakfast(businessDO.getBreakfast().add(vo.getTotalMoney()));
}else if (timePeriod.equals(CostTypeEnum.NOON.getCode())){
businessDO.setLunch(businessDO.getLunch().add(vo.getTotalMoney()));
}else if (timePeriod.equals(CostTypeEnum.NIGHT.getCode())){
businessDO.setDinner(businessDO.getDinner().add(vo.getTotalMoney()));
}
}
businessMapper.updateById(businessDO);
}
}
} }

View File

@ -9,6 +9,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
import cn.iocoder.yudao.module.member.controller.admin.business.vo.StatisticsVo;
import cn.iocoder.yudao.module.member.controller.admin.order.vo.OrderDetailsReqVO; import cn.iocoder.yudao.module.member.controller.admin.order.vo.OrderDetailsReqVO;
import cn.iocoder.yudao.module.member.controller.admin.order.vo.OrderDetailsRespVO; import cn.iocoder.yudao.module.member.controller.admin.order.vo.OrderDetailsRespVO;
import cn.iocoder.yudao.module.member.controller.admin.order.vo.OrderMoneyRespVO; import cn.iocoder.yudao.module.member.controller.admin.order.vo.OrderMoneyRespVO;
@ -27,6 +28,7 @@ import cn.iocoder.yudao.module.member.dal.mysql.order.DishOrderMapper;
import cn.iocoder.yudao.module.member.dal.mysql.user.MemberUserMapper; import cn.iocoder.yudao.module.member.dal.mysql.user.MemberUserMapper;
import cn.iocoder.yudao.module.member.enums.CostTypeEnum; import cn.iocoder.yudao.module.member.enums.CostTypeEnum;
import cn.iocoder.yudao.module.member.enums.TimePeriodEnum; import cn.iocoder.yudao.module.member.enums.TimePeriodEnum;
import cn.iocoder.yudao.module.member.service.business.BusinessService;
import cn.iocoder.yudao.module.member.service.orderdetail.OrderDetailService; import cn.iocoder.yudao.module.member.service.orderdetail.OrderDetailService;
import cn.iocoder.yudao.module.member.service.refund.RefundService; import cn.iocoder.yudao.module.member.service.refund.RefundService;
import cn.iocoder.yudao.module.member.util.MemberConstants; import cn.iocoder.yudao.module.member.util.MemberConstants;
@ -81,6 +83,8 @@ public class OrderServiceImpl implements OrderService {
private MemberGroupMapper groupMapper; private MemberGroupMapper groupMapper;
@Resource @Resource
private RefundService refundService; private RefundService refundService;
@Resource
private BusinessService businessService;
@Override @Override
public Long createOrder(AppOrderSaveReqVO createReqVO) { public Long createOrder(AppOrderSaveReqVO createReqVO) {
@ -184,7 +188,7 @@ public class OrderServiceImpl implements OrderService {
DishesRespDto dishesRespDto = dishMap.get(respVo.getDishesId()); DishesRespDto dishesRespDto = dishMap.get(respVo.getDishesId());
if (ObjectUtil.isNotEmpty(dishesRespDto)) { if (ObjectUtil.isNotEmpty(dishesRespDto)) {
respVo.setDishesBasePrice(dishesRespDto.getDishesBasePrice()) respVo.setDishesBasePrice(dishesRespDto.getDishesBasePrice())
.setDishesSumPrice(dishesRespDto.getDishesSumPrice()) .setDishesSumPrice(ObjectUtil.isNotEmpty(respVo.getUnitPrice())?respVo.getUnitPrice():dishesRespDto.getDishesSumPrice())
.setDishesNumber(dishesRespDto.getDishesNumber()); .setDishesNumber(dishesRespDto.getDishesNumber());
} }
@ -478,6 +482,17 @@ public class OrderServiceImpl implements OrderService {
cardDO.setGiftAmount(oldGiftAmount.add(giftAmount)); cardDO.setGiftAmount(oldGiftAmount.add(giftAmount));
cardMapper.insert(cardDO); cardMapper.insert(cardDO);
//更新营业数据
if(dishOrderDO.getOrderStatus().equals(DishOrderDO.COMPLETE)){
StatisticsVo statisticsVo = new StatisticsVo();
statisticsVo.setCarteenId(dishOrderDO.getStoreId());
statisticsVo.setTotalMoney(money.negate());
statisticsVo.setOrder_sum(0);
statisticsVo.setReduceMoney(money);
statisticsVo.setTime(dishOrderDO.getCreateTime());
businessService.updateStatistics(statisticsVo);
}
}else{ }else{
dishOrderDO.setReductionAmount(dishOrderDO.getReductionAmount().add(money)); dishOrderDO.setReductionAmount(dishOrderDO.getReductionAmount().add(money));
} }

View File

@ -10,7 +10,6 @@
--> -->
<select id="selectOrder" resultType="cn.iocoder.yudao.module.member.controller.admin.customizeExcel.vo.OrderExcelVO"> <select id="selectOrder" resultType="cn.iocoder.yudao.module.member.controller.admin.customizeExcel.vo.OrderExcelVO">
select select
DATE_FORMAT(md.create_time, '%Y-%m-%d') as dayTime,
mu.nickname , mu.nickname ,
mu.mobile , mu.mobile ,
CASE CASE
@ -23,7 +22,8 @@
md.dishes_name , md.dishes_name ,
md.unit_price , md.unit_price ,
md.weight , md.weight ,
md.price md.price,
DATE_FORMAT(md.create_time, '%Y-%m-%d %H:%i:%s') as dayTime
from member_order_detail md from member_order_detail md
left join member_dish_order mo on md.order_id = mo.id left join member_dish_order mo on md.order_id = mo.id
left join member_user mu on mu.id = mo.user_id left join member_user mu on mu.id = mo.user_id

View File

@ -36,4 +36,6 @@ public class DishImagePageReqVO extends PageParam {
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime; private LocalDateTime[] createTime;
private Long carteenId;
} }

View File

@ -41,4 +41,6 @@ public class DishImageRespVO {
@ExcelProperty("创建时间") @ExcelProperty("创建时间")
private LocalDateTime createTime; private LocalDateTime createTime;
private Long carteenId;
} }

View File

@ -27,4 +27,6 @@ public class DishImageSaveReqVO {
@Schema(description = "备注", example = "随便") @Schema(description = "备注", example = "随便")
private String remark; private String remark;
private Long carteenId;
} }

View File

@ -20,4 +20,16 @@ public class AppUpdateVO {
@Schema(description = "总价格", example = "1") @Schema(description = "总价格", example = "1")
private BigDecimal dishesSumPrice; private BigDecimal dishesSumPrice;
@Schema(description = "菜品类型", example = "1")
private String dishecType;
@Schema(description = "菜品图片", example = "1")
private String dishesImageUrl;
@Schema(description = "周几", example = "星期一")
private String weekTime;
@Schema(description = "时段", example = "")
private String timeSlot;
} }

View File

@ -0,0 +1,49 @@
package cn.iocoder.yudao.module.system.controller.app.dishimage;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
import cn.iocoder.yudao.module.system.controller.admin.dishimage.vo.DishImagePageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.dishimage.vo.DishImageRespVO;
import cn.iocoder.yudao.module.system.controller.admin.dishimage.vo.DishImageSaveReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.dishimage.DishImageDO;
import cn.iocoder.yudao.module.system.service.dishimage.DishImageService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.IOException;
import java.util.List;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
@Tag(name = "管理后台 - 本周菜单")
@RestController
@RequestMapping("/t/dish-image")
@Validated
public class AppDishImageController {
@Resource
private DishImageService dishImageService;
@GetMapping("/get")
@Operation(summary = "获得本周菜单")
public CommonResult<DishImageRespVO> getThisWeekDishImage(Long carteenId) {
DishImageDO dishImage = dishImageService.getThisWeekDishImage(carteenId);
return success(BeanUtils.toBean(dishImage, DishImageRespVO.class));
}
}

View File

@ -48,4 +48,6 @@ public class DishImageDO extends BaseDO {
*/ */
private String remark; private String remark;
private Long carteenId;
} }

View File

@ -21,6 +21,7 @@ public interface DishImageMapper extends BaseMapperX<DishImageDO> {
default PageResult<DishImageDO> selectPage(DishImagePageReqVO reqVO) { default PageResult<DishImageDO> selectPage(DishImagePageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<DishImageDO>() return selectPage(reqVO, new LambdaQueryWrapperX<DishImageDO>()
.eqIfPresent(DishImageDO::getCarteenId,reqVO.getCarteenId())
.likeIfPresent(DishImageDO::getName, reqVO.getName()) .likeIfPresent(DishImageDO::getName, reqVO.getName())
.betweenIfPresent(DishImageDO::getStartDate, reqVO.getStartDate()) .betweenIfPresent(DishImageDO::getStartDate, reqVO.getStartDate())
.betweenIfPresent(DishImageDO::getEndDate, reqVO.getEndDate()) .betweenIfPresent(DishImageDO::getEndDate, reqVO.getEndDate())

View File

@ -54,4 +54,10 @@ public interface DishImageService {
*/ */
PageResult<DishImageDO> getDishImagePage(DishImagePageReqVO pageReqVO); PageResult<DishImageDO> getDishImagePage(DishImagePageReqVO pageReqVO);
} /**
* 获得本周菜单
*/
DishImageDO getThisWeekDishImage(Long carteenId);
}

View File

@ -1,14 +1,19 @@
package cn.iocoder.yudao.module.system.service.dishimage; package cn.iocoder.yudao.module.system.service.dishimage;
import cn.hutool.core.collection.CollectionUtil;
import cn.iocoder.yudao.module.system.controller.admin.dishimage.vo.DishImagePageReqVO; import cn.iocoder.yudao.module.system.controller.admin.dishimage.vo.DishImagePageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.dishimage.vo.DishImageSaveReqVO; import cn.iocoder.yudao.module.system.controller.admin.dishimage.vo.DishImageSaveReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.dishimage.DishImageDO; import cn.iocoder.yudao.module.system.dal.dataobject.dishimage.DishImageDO;
import cn.iocoder.yudao.module.system.dal.mysql.dishimage.DishImageMapper; import cn.iocoder.yudao.module.system.dal.mysql.dishimage.DishImageMapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
@ -75,4 +80,29 @@ public class DishImageServiceImpl implements DishImageService {
return dishImageMapper.selectPage(pageReqVO); return dishImageMapper.selectPage(pageReqVO);
} }
@Override
public DishImageDO getThisWeekDishImage(Long carteenId) {
// 获取今天的日期
LocalDate today = LocalDate.now();
// 获取本周的开始日期(周一)
LocalDate weekStart = today.with(DayOfWeek.MONDAY);
// 获取本周的结束日期(周日)
LocalDate weekEnd = today.with(DayOfWeek.SUNDAY);
// 格式化日期(年-月-日)
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
String startTime = weekStart.format(formatter);
String endTime = weekEnd.format(formatter);
List<DishImageDO> dishImageDOS = dishImageMapper.selectList(Wrappers.<DishImageDO>lambdaQuery()
.eq(DishImageDO::getStartDate, startTime)
.eq(DishImageDO::getEndDate, endTime)
.eq(DishImageDO::getCarteenId, carteenId));
if(CollectionUtil.isNotEmpty(dishImageDOS)){
return dishImageDOS.get(0);
}
return new DishImageDO();
}
} }