每日统计
This commit is contained in:
		| @ -72,5 +72,5 @@ public class BusinessRespVO { | ||||
|      */ | ||||
|     private BigDecimal  withdrawal; | ||||
|  | ||||
|  | ||||
|     private BigDecimal  reduce; | ||||
| } | ||||
| @ -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; | ||||
|  | ||||
| } | ||||
| @ -9,9 +9,6 @@ import java.math.BigDecimal; | ||||
| @Data | ||||
| public class OrderExcelVO { | ||||
|  | ||||
|     @ExcelProperty("日期") | ||||
|     private String dayTime; | ||||
|  | ||||
|     @ExcelProperty("用户名") | ||||
|     private String nickname; | ||||
|  | ||||
| @ -39,4 +36,7 @@ public class OrderExcelVO { | ||||
|     @NumberFormat("#0.00") | ||||
|     private BigDecimal price; | ||||
|  | ||||
|     @ExcelProperty("日期") | ||||
|     private String dayTime; | ||||
|  | ||||
| } | ||||
|  | ||||
| @ -55,4 +55,9 @@ public class AppOrderDetailRespVO { | ||||
|      */ | ||||
|     private BigDecimal dishesNumber; | ||||
|  | ||||
|     /** | ||||
|      * 菜品单价 | ||||
|      */ | ||||
|     private BigDecimal unitPrice; | ||||
|  | ||||
| } | ||||
| @ -88,4 +88,7 @@ public class BusinessDO extends BaseDO { | ||||
|      */ | ||||
|     private  Long carteenId; | ||||
|  | ||||
|  | ||||
|     private BigDecimal reduce; | ||||
|  | ||||
| } | ||||
| @ -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.dal.dataobject.business.BusinessDO; | ||||
| import org.apache.ibatis.annotations.Mapper; | ||||
| import org.apache.ibatis.annotations.Select; | ||||
|  | ||||
| import java.util.List; | ||||
|  | ||||
| /** | ||||
|  * 营业统计 Mapper | ||||
| @ -32,4 +35,7 @@ public interface BusinessMapper extends BaseMapperX<BusinessDO> { | ||||
|                 .orderByDesc(BusinessDO::getId)); | ||||
|     } | ||||
|  | ||||
|     @Select("select id from t_carteen where deleted = false") | ||||
|     List<Long>  getAllStoreId(); | ||||
|  | ||||
| } | ||||
| @ -4,10 +4,12 @@ import cn.hutool.core.collection.CollectionUtil; | ||||
| import cn.hutool.core.util.StrUtil; | ||||
| import cn.iocoder.yudao.framework.quartz.core.handler.JobHandler; | ||||
| 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.diningplates.DiningPlatesDO; | ||||
| import cn.iocoder.yudao.module.member.dal.dataobject.order.DishOrderDO; | ||||
| 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.diningplates.DiningPlatesService; | ||||
| import cn.iocoder.yudao.module.member.service.order.OrderService; | ||||
| @ -22,6 +24,7 @@ import java.math.BigDecimal; | ||||
| import java.time.LocalDateTime; | ||||
| import java.util.ArrayList; | ||||
| import java.util.List; | ||||
| import java.util.Set; | ||||
| import java.util.stream.Collectors; | ||||
|  | ||||
| /** | ||||
| @ -43,7 +46,8 @@ public class BalanceDeductionJob implements JobHandler { | ||||
|     private StringRedisTemplate stringRedisTemplate; | ||||
|     @Resource | ||||
|     private MemberUserService userService; | ||||
|  | ||||
|     @Resource | ||||
|     private BusinessService businessService; | ||||
|     /** | ||||
|      * 30分钟之后自动解绑并扣款 | ||||
|      */ | ||||
| @ -74,7 +78,7 @@ public class BalanceDeductionJob implements JobHandler { | ||||
|                 //BigDecimal total = new BigDecimal(0.01); | ||||
|                 Long userId = dishOrderDO.getUserId(); | ||||
|                 CardDO cardDO = new CardDO(); | ||||
|                 cardDO.setType(TimePeriodEnum.getTimePeriod(LocalDateTime.now())); | ||||
|                 cardDO.setType(TimePeriodEnum.getTimePeriod(dishOrderDO.getCreateTime())); | ||||
|                 CardDO oldCardDO = cardService.getCardDoByUserId(userId); | ||||
|  | ||||
|  | ||||
| @ -162,6 +166,19 @@ public class BalanceDeductionJob implements JobHandler { | ||||
|                 dishOrderDO.setTotalMoney(total); | ||||
|                 dishOrderDO.setUpdateTime(LocalDateTime.now()); | ||||
|                 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); | ||||
|  | ||||
| @ -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()); | ||||
|     } | ||||
| } | ||||
| @ -3,6 +3,7 @@ package cn.iocoder.yudao.module.member.service.business; | ||||
| 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.BusinessSaveReqVO; | ||||
| import cn.iocoder.yudao.module.member.controller.admin.business.vo.StatisticsVo; | ||||
| import cn.iocoder.yudao.module.member.dal.dataobject.business.BusinessDO; | ||||
|  | ||||
| import javax.validation.*; | ||||
| @ -52,4 +53,7 @@ public interface BusinessService { | ||||
|      */ | ||||
|     PageResult<BusinessDO> getBusinessPage(BusinessPageReqVO pageReqVO); | ||||
|  | ||||
|  | ||||
|     void updateStatistics(StatisticsVo vo); | ||||
|  | ||||
| } | ||||
| @ -1,20 +1,35 @@ | ||||
| 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.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.StatisticsVo; | ||||
| 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.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 cn.iocoder.yudao.module.member.service.orderdetail.OrderDetailService; | ||||
| import cn.iocoder.yudao.module.system.enums.ErrorCodeConstants; | ||||
| import com.baomidou.mybatisplus.core.toolkit.Wrappers; | ||||
| import org.springframework.stereotype.Service; | ||||
|  | ||||
| import javax.annotation.Resource; | ||||
|  | ||||
| import org.springframework.validation.annotation.Validated; | ||||
| 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; | ||||
|  | ||||
| @ -35,6 +50,7 @@ public class BusinessServiceImpl implements BusinessService { | ||||
|     private OrderDetailMapper orderDetailMapper; | ||||
|     @Resource | ||||
|     private CardMapper cardMapper; | ||||
|  | ||||
|     @Override | ||||
|     public Long createBusiness(BusinessSaveReqVO createReqVO) { | ||||
|         // 插入 | ||||
| @ -77,5 +93,56 @@ public class BusinessServiceImpl implements BusinessService { | ||||
|         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); | ||||
|         } | ||||
|  | ||||
|  | ||||
|  | ||||
|     } | ||||
| } | ||||
| @ -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.mybatis.core.query.LambdaQueryWrapperX; | ||||
| 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.OrderDetailsRespVO; | ||||
| 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.enums.CostTypeEnum; | ||||
| 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.refund.RefundService; | ||||
| import cn.iocoder.yudao.module.member.util.MemberConstants; | ||||
| @ -81,6 +83,8 @@ public class OrderServiceImpl implements OrderService { | ||||
|     private MemberGroupMapper groupMapper; | ||||
|     @Resource | ||||
|     private RefundService refundService; | ||||
|     @Resource | ||||
|     private BusinessService businessService; | ||||
|  | ||||
|     @Override | ||||
|     public Long createOrder(AppOrderSaveReqVO createReqVO) { | ||||
| @ -184,7 +188,7 @@ public class OrderServiceImpl implements OrderService { | ||||
|                     DishesRespDto dishesRespDto = dishMap.get(respVo.getDishesId()); | ||||
|                     if (ObjectUtil.isNotEmpty(dishesRespDto)) { | ||||
|                         respVo.setDishesBasePrice(dishesRespDto.getDishesBasePrice()) | ||||
|                                 .setDishesSumPrice(dishesRespDto.getDishesSumPrice()) | ||||
|                                 .setDishesSumPrice(ObjectUtil.isNotEmpty(respVo.getUnitPrice())?respVo.getUnitPrice():dishesRespDto.getDishesSumPrice()) | ||||
|                                 .setDishesNumber(dishesRespDto.getDishesNumber()); | ||||
|                     } | ||||
|  | ||||
| @ -478,6 +482,17 @@ public class OrderServiceImpl implements OrderService { | ||||
|             cardDO.setGiftAmount(oldGiftAmount.add(giftAmount)); | ||||
|             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{ | ||||
|             dishOrderDO.setReductionAmount(dishOrderDO.getReductionAmount().add(money)); | ||||
|         } | ||||
|  | ||||
| @ -10,7 +10,6 @@ | ||||
|      --> | ||||
|     <select id="selectOrder" resultType="cn.iocoder.yudao.module.member.controller.admin.customizeExcel.vo.OrderExcelVO"> | ||||
|         select | ||||
|             DATE_FORMAT(md.create_time, '%Y-%m-%d') as dayTime, | ||||
|             mu.nickname , | ||||
|             mu.mobile , | ||||
|             CASE | ||||
| @ -23,7 +22,8 @@ | ||||
|             md.dishes_name , | ||||
|             md.unit_price , | ||||
|             md.weight , | ||||
|             md.price | ||||
|             md.price, | ||||
|             DATE_FORMAT(md.create_time, '%Y-%m-%d %H:%i:%s') as dayTime | ||||
|         from member_order_detail md | ||||
|          left join member_dish_order mo on md.order_id = mo.id | ||||
|          left join member_user mu on mu.id = mo.user_id | ||||
|  | ||||
| @ -36,4 +36,6 @@ public class DishImagePageReqVO extends PageParam { | ||||
|     @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||||
|     private LocalDateTime[] createTime; | ||||
|  | ||||
|     private Long carteenId; | ||||
|  | ||||
| } | ||||
| @ -41,4 +41,6 @@ public class DishImageRespVO { | ||||
|     @ExcelProperty("创建时间") | ||||
|     private LocalDateTime createTime; | ||||
|  | ||||
|     private Long carteenId; | ||||
|  | ||||
| } | ||||
| @ -27,4 +27,6 @@ public class DishImageSaveReqVO { | ||||
|     @Schema(description = "备注", example = "随便") | ||||
|     private String remark; | ||||
|  | ||||
|     private Long carteenId; | ||||
|  | ||||
| } | ||||
| @ -20,4 +20,16 @@ public class AppUpdateVO { | ||||
|  | ||||
|     @Schema(description = "总价格", example = "1") | ||||
|     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; | ||||
| } | ||||
|  | ||||
| @ -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)); | ||||
|     } | ||||
|  | ||||
|  | ||||
| } | ||||
| @ -48,4 +48,6 @@ public class DishImageDO extends BaseDO { | ||||
|      */ | ||||
|     private String remark; | ||||
|  | ||||
|     private Long carteenId; | ||||
|  | ||||
| } | ||||
| @ -21,6 +21,7 @@ public interface DishImageMapper extends BaseMapperX<DishImageDO> { | ||||
|  | ||||
|     default PageResult<DishImageDO> selectPage(DishImagePageReqVO reqVO) { | ||||
|         return selectPage(reqVO, new LambdaQueryWrapperX<DishImageDO>() | ||||
|                 .eqIfPresent(DishImageDO::getCarteenId,reqVO.getCarteenId()) | ||||
|                 .likeIfPresent(DishImageDO::getName, reqVO.getName()) | ||||
|                 .betweenIfPresent(DishImageDO::getStartDate, reqVO.getStartDate()) | ||||
|                 .betweenIfPresent(DishImageDO::getEndDate, reqVO.getEndDate()) | ||||
|  | ||||
| @ -54,4 +54,10 @@ public interface DishImageService { | ||||
|      */ | ||||
|     PageResult<DishImageDO> getDishImagePage(DishImagePageReqVO pageReqVO); | ||||
|  | ||||
| } | ||||
|     /** | ||||
|      * 获得本周菜单 | ||||
|      */ | ||||
|     DishImageDO getThisWeekDishImage(Long carteenId); | ||||
|  | ||||
|  | ||||
|  } | ||||
| @ -1,14 +1,19 @@ | ||||
| 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.DishImageSaveReqVO; | ||||
| import cn.iocoder.yudao.module.system.dal.dataobject.dishimage.DishImageDO; | ||||
| import cn.iocoder.yudao.module.system.dal.mysql.dishimage.DishImageMapper; | ||||
| import com.baomidou.mybatisplus.core.toolkit.Wrappers; | ||||
| import org.springframework.stereotype.Service; | ||||
| import javax.annotation.Resource; | ||||
| import org.springframework.validation.annotation.Validated; | ||||
| import org.springframework.transaction.annotation.Transactional; | ||||
|  | ||||
| import java.time.DayOfWeek; | ||||
| import java.time.LocalDate; | ||||
| import java.time.format.DateTimeFormatter; | ||||
| import java.util.*; | ||||
|  | ||||
| import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||||
| @ -75,4 +80,29 @@ public class DishImageServiceImpl implements DishImageService { | ||||
|         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(); | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 seesaw
					seesaw