大屏接口

This commit is contained in:
qjq
2024-04-22 09:11:47 +08:00
parent 20c0b039f5
commit 59463d439c
34 changed files with 570 additions and 110 deletions

View File

@ -4,18 +4,21 @@ import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
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.app.orderdetail.vo.AppOrderDetailRespVO;
import cn.iocoder.yudao.module.member.service.order.OrderService; import cn.iocoder.yudao.module.member.service.order.OrderService;
import cn.iocoder.yudao.module.member.service.orderdetail.OrderDetailService;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.validation.Valid; import javax.validation.Valid;
import java.util.Map; import java.util.List;
@Tag(name = "管理后台 - 会员订单") @Tag(name = "管理后台 - 会员订单")
@RestController @RestController
@ -25,6 +28,8 @@ public class OrderController {
@Resource @Resource
private OrderService orderService; private OrderService orderService;
@Resource
private OrderDetailService detailService;
// //
//@PostMapping("/create") //@PostMapping("/create")
//@Operation(summary = "创建会员订单") //@Operation(summary = "创建会员订单")
@ -92,5 +97,18 @@ public class OrderController {
public CommonResult<PageResult<OrderDetailsRespVO>> getPageResult(@Valid OrderDetailsReqVO reqVO){ public CommonResult<PageResult<OrderDetailsRespVO>> getPageResult(@Valid OrderDetailsReqVO reqVO){
return CommonResult.success(orderService.getPageOrderDetails(reqVO)); return CommonResult.success(orderService.getPageOrderDetails(reqVO));
} }
/*================后台管理-订单管理-订单详情========================*/
@GetMapping("/get")
@Operation(summary = "获得会员订单明细")
@PreAuthorize("@ss.hasPermission('member:order:query')")
public CommonResult<List<AppOrderDetailRespVO>> getOrderDetails(@RequestParam("orderId")Long orderId){
return CommonResult.success(detailService.selectListByOrderId(orderId));
}
/*================后台管理-订单管理-订单明细与用户信息========================*/
@GetMapping("/get-details")
@Operation(summary = "获得会员订单明细与用户信息")
@PreAuthorize("@ss.hasPermission('member:order:query')")
public CommonResult<OrderDetailsRespVO> getOrderDetailsAndUser(@RequestParam("orderId")Long orderId){
return CommonResult.success(orderService.getOrderDetailsAndUser(orderId));
}
} }

View File

@ -5,6 +5,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.ToString; import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@ -21,8 +22,10 @@ public class OrderDetailsReqVO extends PageParam {
@Schema(description = "门店Id", example = "24217") @Schema(description = "门店Id", example = "24217")
private String storeId; private String storeId;
@Schema(description = "开始时间", example = "2024-4-12 9:00:00") @Schema(description = "开始时间", example = "2024-4-12 9:00:00")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime startDate; private LocalDateTime startDate;
@Schema(description = "结束时间", example = "2024-4-12 18:00:00") @Schema(description = "结束时间", example = "2024-4-12 18:00:00")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime endDate; private LocalDateTime endDate;
@Schema(description = "订单号", example = "20240401085810236196705") @Schema(description = "订单号", example = "20240401085810236196705")
private String orderId; private String orderId;

View File

@ -40,6 +40,8 @@ public class OrderDetailsRespVO {
@Schema(description = "工号", example = "15111956918") @Schema(description = "工号", example = "15111956918")
@ExcelProperty("工号") @ExcelProperty("工号")
private String userJob; private String userJob;
@Schema(description = "用户头像", example = "15111956918")
private String avatar;
@Schema(description = "订单交易时间", example = "2024-04-01 09:06:19") @Schema(description = "订单交易时间", example = "2024-04-01 09:06:19")
@ExcelProperty("订单交易时间") @ExcelProperty("订单交易时间")

View File

@ -1,18 +1,23 @@
package cn.iocoder.yudao.module.member.controller.admin.screen; package cn.iocoder.yudao.module.member.controller.admin.screen;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateTime;
import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.member.controller.admin.customertraffic.vo.CustomerTrafficRespVO; import cn.iocoder.yudao.module.member.controller.admin.customertraffic.vo.CustomerTrafficRespVO;
import cn.iocoder.yudao.module.member.controller.admin.screen.vo.DishVo; import cn.iocoder.yudao.module.member.controller.admin.screen.vo.DishVo;
import cn.iocoder.yudao.module.member.dal.dataobject.customertraffic.CustomerTrafficDO; import cn.iocoder.yudao.module.member.dal.dataobject.customertraffic.CustomerTrafficDO;
import cn.iocoder.yudao.module.member.dal.dataobject.customertraffic.CustomerTrafficDetailDO;
import cn.iocoder.yudao.module.member.service.customertraffic.CustomerTrafficService; import cn.iocoder.yudao.module.member.service.customertraffic.CustomerTrafficService;
import cn.iocoder.yudao.module.member.service.order.OrderService; import cn.iocoder.yudao.module.member.service.order.OrderService;
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.storeevaluate.StoreEvaluateService; import cn.iocoder.yudao.module.member.service.storeevaluate.StoreEvaluateService;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource; import javax.annotation.Resource;
@ -56,6 +61,20 @@ public class ScreenController {
return success(BeanUtils.toBean(data, CustomerTrafficRespVO.class)); return success(BeanUtils.toBean(data, CustomerTrafficRespVO.class));
} }
@GetMapping("/half-hour")
@Operation(summary = "食堂今日半小时刻度顾客流量")
@PermitAll
public CommonResult<List<CustomerTrafficDetailDO>> getHalfHour(@RequestParam(value = "storeId",required = false) Long storeId,
@DateTimeFormat(pattern = DatePattern.NORM_DATETIME_PATTERN)
@RequestParam(value = "start")DateTime start,
@DateTimeFormat(pattern = DatePattern.NORM_DATETIME_PATTERN)
@RequestParam(value = "end") DateTime end){
return success(customerTrafficService.getHalfHour(storeId, start,end));
}
@GetMapping("/getUserCount") @GetMapping("/getUserCount")
@Operation(summary = "获取总顾客流量") @Operation(summary = "获取总顾客流量")
@PermitAll @PermitAll

View File

@ -18,6 +18,7 @@ import cn.iocoder.yudao.module.member.service.user.MemberUserService;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -115,6 +116,13 @@ public class MemberUserController {
convertSet(pageResult.getList(), MemberUserDO::getGroupId)); convertSet(pageResult.getList(), MemberUserDO::getGroupId));
return success(MemberUserConvert.INSTANCE.convertPage(pageResult, tags, levels, groups)); return success(MemberUserConvert.INSTANCE.convertPage(pageResult, tags, levels, groups));
} }
@GetMapping("/heat")
@Operation(summary = "获得会员热量分析")
public CommonResult<List<Map>> getUserHeat(@RequestParam(value = "userId",required = false) Long userId,
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @RequestParam(value = "startDate",required = false) LocalDateTime startDate,
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @RequestParam(value = "endDate",required = false) LocalDateTime endDate,
@RequestParam(value = "orderId",required = false)Long orderId){
return success(memberUserService.getUserHeat(userId,startDate,endDate,orderId));
}
} }

View File

@ -16,7 +16,8 @@ public class AppOrderDetailRespVO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "20679") @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "20679")
@ExcelProperty("编号") @ExcelProperty("编号")
private Long id; private Long id;
@Schema(description = "门店id", example = "20679")
private Long storeId;
@Schema(description = "订单ID", example = "31077") @Schema(description = "订单ID", example = "31077")
@ExcelProperty("订单ID") @ExcelProperty("订单ID")
private Long orderId; private Long orderId;
@ -36,7 +37,9 @@ public class AppOrderDetailRespVO {
@Schema(description = "热量") @Schema(description = "热量")
@ExcelProperty("热量") @ExcelProperty("热量")
private Double heat; private Double heat;
@Schema(description = "价格")
@ExcelProperty("价格")
private BigDecimal price;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间") @ExcelProperty("创建时间")
private LocalDateTime createTime; private LocalDateTime createTime;

View File

@ -0,0 +1,13 @@
package cn.iocoder.yudao.module.member.dal.dataobject.customertraffic;
import lombok.Data;
/**
* @Author:qjq
* @Date:2024/4/19 下午3:30
*/
@Data
public class CustomerTrafficDetailDO extends CustomerTrafficDO{
private String storesName;
}

View File

@ -1,13 +1,17 @@
package cn.iocoder.yudao.module.member.dal.mysql.customertraffic; package cn.iocoder.yudao.module.member.dal.mysql.customertraffic;
import java.util.*; import cn.hutool.core.date.DateTime;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.member.controller.admin.customertraffic.vo.CustomerTrafficPageReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.customertraffic.CustomerTrafficDO; import cn.iocoder.yudao.module.member.dal.dataobject.customertraffic.CustomerTrafficDO;
import cn.iocoder.yudao.module.member.dal.dataobject.customertraffic.CustomerTrafficDetailDO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import cn.iocoder.yudao.module.member.controller.admin.customertraffic.vo.*; import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/** /**
* 顾客流量 Mapper * 顾客流量 Mapper
@ -25,5 +29,17 @@ public interface CustomerTrafficMapper extends BaseMapperX<CustomerTrafficDO> {
.betweenIfPresent(CustomerTrafficDO::getCreateTime, reqVO.getCreateTime()) .betweenIfPresent(CustomerTrafficDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(CustomerTrafficDO::getId)); .orderByDesc(CustomerTrafficDO::getId));
} }
@Select("<script>"+"SELECT\n" +
"\ta.customer_num,\n" +
"\ta.id,\n" +
"\ta.time_point,\n" +
"\ta.store_id,a.create_time,\n" +
"\tb.stores_name \n" +
"FROM\n" +
"\tmember_customer_traffic AS a\n" +
"\tINNER JOIN t_carteen AS b ON a.store_id = b.id \n" +
"\tAND a.create_time BETWEEN #{start} AND #{end} "+
"<if test=' storeId != null'> and a.store_id= #{storeId} </if>"
+"</script>")
List<CustomerTrafficDetailDO> getAllCustomerNum(@Param("storeId")Long storeId,@Param("start")DateTime start,@Param("end")DateTime end);
} }

View File

@ -204,17 +204,17 @@ public class CarteenMoneyServiceImpl implements CarteenMoneyService {
//根据设备分组 //根据设备分组
Map<String, List<OrderDetailDO>> collect = dos.stream().collect(Collectors.groupingBy(OrderDetailDO::getSn)); Map<String, List<OrderDetailDO>> collect = dos.stream().collect(Collectors.groupingBy(OrderDetailDO::getSn));
for (Map.Entry<String, List<OrderDetailDO>> map : collect.entrySet()) { for (Map.Entry<String, List<OrderDetailDO>> map : collect.entrySet()) {
//设备流水
DeviceRespVO deviceRespVO = new DeviceRespVO();
List<OrderDetailDO> value = map.getValue(); List<OrderDetailDO> value = map.getValue();
//设置设备ip
deviceRespVO.setDeviceIp(map.getKey());
deviceRespVO.setDeviceName(deviceInfoApi.getDeviceInfoName(map.getKey()));
//根据时间进行时间段赋值 //根据时间进行时间段赋值
value.forEach(v -> v.setCreator(TimePeriodEnum.getTimeName(v.getCreateTime()))); value.forEach(v -> v.setCreator(TimePeriodEnum.getTimeName(v.getCreateTime())));
//根据时间段分组 //根据时间段分组
value.stream().collect(Collectors.groupingBy(OrderDetailDO::getCreator)) value.stream().collect(Collectors.groupingBy(OrderDetailDO::getCreator))
.forEach((k, v) -> { .forEach((k, v) -> {
//设备流水
DeviceRespVO deviceRespVO = new DeviceRespVO();
//设置设备ip
deviceRespVO.setDeviceIp(map.getKey());
deviceRespVO.setDeviceName(deviceInfoApi.getDeviceInfoName(map.getKey()));
//根据时间段进行金额统计 //根据时间段进行金额统计
BigDecimal sum = v.stream() BigDecimal sum = v.stream()
.map(OrderDetailDO::getPrice) .map(OrderDetailDO::getPrice)
@ -222,8 +222,9 @@ public class CarteenMoneyServiceImpl implements CarteenMoneyService {
.reduce(BigDecimal.ZERO, BigDecimal::add); .reduce(BigDecimal.ZERO, BigDecimal::add);
deviceRespVO.setTime(k); deviceRespVO.setTime(k);
deviceRespVO.setMoney(sum); deviceRespVO.setMoney(sum);
});
bean.getDeviceRespVOList().add(deviceRespVO); bean.getDeviceRespVOList().add(deviceRespVO);
});
} }
return bean; return bean;
} }

View File

@ -1,9 +1,11 @@
package cn.iocoder.yudao.module.member.service.customertraffic; package cn.iocoder.yudao.module.member.service.customertraffic;
import cn.hutool.core.date.DateTime;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.member.controller.admin.customertraffic.vo.CustomerTrafficPageReqVO; import cn.iocoder.yudao.module.member.controller.admin.customertraffic.vo.CustomerTrafficPageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.customertraffic.vo.CustomerTrafficSaveReqVO; import cn.iocoder.yudao.module.member.controller.admin.customertraffic.vo.CustomerTrafficSaveReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.customertraffic.CustomerTrafficDO; import cn.iocoder.yudao.module.member.dal.dataobject.customertraffic.CustomerTrafficDO;
import cn.iocoder.yudao.module.member.dal.dataobject.customertraffic.CustomerTrafficDetailDO;
import javax.validation.Valid; import javax.validation.Valid;
import java.util.List; import java.util.List;
@ -60,5 +62,11 @@ public interface CustomerTrafficService {
* 获取最新7个时间节点的数据 * 获取最新7个时间节点的数据
*/ */
List<CustomerTrafficDO> getData(Long storeId); List<CustomerTrafficDO> getData(Long storeId);
/**
* @Description: 半小时刻度查询最新7个时间点的数据
* @Author: qjq
* @Date: 2024/4/19 下午2:39
* @return
*/
List<CustomerTrafficDetailDO> getHalfHour(Long storeId, DateTime start, DateTime end);
} }

View File

@ -1,18 +1,26 @@
package cn.iocoder.yudao.module.member.service.customertraffic; package cn.iocoder.yudao.module.member.service.customertraffic;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjUtil;
import cn.iocoder.yudao.framework.common.pojo.PageResult; 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.module.member.controller.admin.customertraffic.vo.CustomerTrafficPageReqVO; import cn.iocoder.yudao.module.member.controller.admin.customertraffic.vo.CustomerTrafficPageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.customertraffic.vo.CustomerTrafficSaveReqVO; import cn.iocoder.yudao.module.member.controller.admin.customertraffic.vo.CustomerTrafficSaveReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.customertraffic.CustomerTrafficDO; import cn.iocoder.yudao.module.member.dal.dataobject.customertraffic.CustomerTrafficDO;
import cn.iocoder.yudao.module.member.dal.dataobject.customertraffic.CustomerTrafficDetailDO;
import cn.iocoder.yudao.module.member.dal.mysql.customertraffic.CustomerTrafficMapper; import cn.iocoder.yudao.module.member.dal.mysql.customertraffic.CustomerTrafficMapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List; import java.util.*;
import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.CUSTOMER_TRAFFIC_NOT_EXISTS; import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.CUSTOMER_TRAFFIC_NOT_EXISTS;
@ -28,7 +36,9 @@ public class CustomerTrafficServiceImpl implements CustomerTrafficService {
@Resource @Resource
private CustomerTrafficMapper customerTrafficMapper; private CustomerTrafficMapper customerTrafficMapper;
private static final String ZC="ZC"; //早餐
private static final String WC="WC"; //午餐
private static final String W="W"; //晚餐
@Override @Override
public Long createCustomerTraffic(CustomerTrafficSaveReqVO createReqVO) { public Long createCustomerTraffic(CustomerTrafficSaveReqVO createReqVO) {
// 插入 // 插入
@ -86,4 +96,45 @@ public class CustomerTrafficServiceImpl implements CustomerTrafficService {
.last("limit 7")); .last("limit 7"));
return customerTrafficDOS; return customerTrafficDOS;
} }
/**
* @param storeId
* @return
* @Description: 半小时刻度查询最新7个时间点的数据
* @Author: qjq
* @Date: 2024/4/19 下午2:39
*/
@Override
public List<CustomerTrafficDetailDO> getHalfHour(Long storeId, DateTime startDate,DateTime endDate) {
if(ObjUtil.isEmpty(storeId)){
DateTime end = DateUtil.endOfDay(DateUtil.date());
DateTime begin = DateUtil.beginOfDay(end);
List<CustomerTrafficDetailDO> list=new ArrayList<>();
customerTrafficMapper.getAllCustomerNum(null,begin, end)
.stream()
.collect(Collectors.groupingBy(CustomerTrafficDetailDO::getStoreId))
.forEach((k,v)->{
BigDecimal reduce = v.stream()
.map(f -> BigDecimal.valueOf(f.getCustomerNum()))
.filter(ObjUtil::isNotNull)
.reduce(BigDecimal.ZERO, BigDecimal::add);
CustomerTrafficDetailDO aDo = BeanUtil.toBean(v.get(0), CustomerTrafficDetailDO.class);
aDo.setCustomerNum(reduce.intValue());
list.add(aDo);
});
return list;
}else{
List<CustomerTrafficDetailDO> all = customerTrafficMapper.getAllCustomerNum(storeId, startDate, endDate);
all.sort(Comparator.comparing(CustomerTrafficDetailDO::getCustomerNum));
List<CustomerTrafficDetailDO> list=new ArrayList<>();
//拆分
List<List<CustomerTrafficDetailDO>> split = ListUtil.split(list, 3);
for (List<CustomerTrafficDetailDO> dos : split) {
CustomerTrafficDetailDO aDo = BeanUtil.toBean(dos.get(0), CustomerTrafficDetailDO.class);
aDo.setCustomerNum(dos.stream().mapToInt(CustomerTrafficDetailDO::getCustomerNum).sum());
list.add(aDo);
}
return list;
}
}
} }

View File

@ -84,6 +84,7 @@ public interface OrderService {
List<DishOrderDO> getDishOrderByTime(LocalDateTime startTime ,LocalDateTime endTime ); List<DishOrderDO> getDishOrderByTime(LocalDateTime startTime ,LocalDateTime endTime );
PageResult<OrderDetailsRespVO> getPageOrderDetails(OrderDetailsReqVO reqVO); PageResult<OrderDetailsRespVO> getPageOrderDetails(OrderDetailsReqVO reqVO);
OrderDetailsRespVO getOrderDetailsAndUser(Long orderId);
/** /**
* 获取今日顾客总量 * 获取今日顾客总量

View File

@ -31,7 +31,6 @@ import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
@ -168,15 +167,29 @@ public class OrderServiceImpl implements OrderService {
List<OrderDetailsRespVO> list=new ArrayList<>(); List<OrderDetailsRespVO> list=new ArrayList<>();
for (DishOrderDO dishOrderDO : pageResult.getList()) { for (DishOrderDO dishOrderDO : pageResult.getList()) {
OrderDetailsRespVO bean = BeanUtils.toBean(dishOrderDO, OrderDetailsRespVO.class); OrderDetailsRespVO bean = BeanUtils.toBean(dishOrderDO, OrderDetailsRespVO.class);
MemberUserDO userDO = memberUserMapper.selectById(bean.getUserId()); userDetails(bean);
bean.setUserName(userDO.getName());
bean.setUserJob(userDO.getMobile());
bean.setUserAccount(userDO.getMobile());
bean.setTimePeriod(TimePeriodEnum.MIDDAY.getTimePeriod(bean.getCreateTime()));
list.add(bean); list.add(bean);
} }
return new PageResult<>(list,pageResult.getTotal()); return new PageResult<>(list,pageResult.getTotal());
} }
@Override
public OrderDetailsRespVO getOrderDetailsAndUser(Long orderId) {
OrderDetailsRespVO bean = BeanUtils.toBean(dishOrderMapper.selectById(orderId), OrderDetailsRespVO.class);
userDetails(bean);
return bean;
}
private void userDetails(OrderDetailsRespVO bean) {
MemberUserDO userDO = memberUserMapper.selectById(bean.getUserId());
bean.setUserName(userDO.getNickname());
bean.setUserJob(userDO.getMobile());
bean.setAvatar(userDO.getAvatar());
bean.setPayMethods("钱包");
bean.setUserAccount(userDO.getMobile());
bean.setTimePeriod(TimePeriodEnum.getTimeName(bean.getCreateTime()));
}
/** /**
* @Description: 数据类型对标 {@link CostTypeEnum} * @Description: 数据类型对标 {@link CostTypeEnum}
* @Author: qjq * @Author: qjq

View File

@ -161,8 +161,11 @@ public class OrderDetailServiceImpl implements OrderDetailService {
@Override @Override
public List<AppOrderDetailRespVO> selectListByOrderId(Long orderId) { public List<AppOrderDetailRespVO> selectListByOrderId(Long orderId) {
Long storeId = dishOrderMapper.selectById(orderId).getStoreId();
List<OrderDetailDO> orderDetailDOS = orderDetailMapper.selectList(Wrappers.<OrderDetailDO>lambdaQuery().eq(OrderDetailDO::getOrderId, orderId)); List<OrderDetailDO> orderDetailDOS = orderDetailMapper.selectList(Wrappers.<OrderDetailDO>lambdaQuery().eq(OrderDetailDO::getOrderId, orderId));
return BeanUtils.toBean(orderDetailDOS, AppOrderDetailRespVO.class); List<AppOrderDetailRespVO> bean = BeanUtils.toBean(orderDetailDOS, AppOrderDetailRespVO.class);
bean.forEach(f->f.setStoreId(storeId));
return bean;
} }
@Override @Override

View File

@ -1,33 +1,33 @@
package cn.iocoder.yudao.module.system.controller.admin.carteen; package cn.iocoder.yudao.module.system.controller.admin.carteen;
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.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.carteen.vo.CarteenPageReqVO; import cn.iocoder.yudao.module.system.controller.admin.carteen.vo.CarteenPageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.carteen.vo.CarteenRespVO; import cn.iocoder.yudao.module.system.controller.admin.carteen.vo.CarteenRespVO;
import cn.iocoder.yudao.module.system.controller.admin.carteen.vo.CarteenSaveReqVO; import cn.iocoder.yudao.module.system.controller.admin.carteen.vo.CarteenSaveReqVO;
import cn.iocoder.yudao.module.system.controller.admin.carteen.vo.CarteenWeekSalesRespVo;
import cn.iocoder.yudao.module.system.dal.dataobject.carteen.CarteenDO; import cn.iocoder.yudao.module.system.dal.dataobject.carteen.CarteenDO;
import cn.iocoder.yudao.module.system.service.carteen.CarteenService; import cn.iocoder.yudao.module.system.service.carteen.CarteenService;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation; 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.validation.*; import javax.annotation.Resource;
import javax.servlet.http.*; import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.IOException; import java.io.IOException;
import java.util.List; import java.util.List;
import java.util.Map;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.*;
@Tag(name = "管理后台 - 门店管理") @Tag(name = "管理后台 - 门店管理")
@ -92,5 +92,11 @@ public class CarteenController {
ExcelUtils.write(response, "门店管理.xls", "数据", CarteenRespVO.class, ExcelUtils.write(response, "门店管理.xls", "数据", CarteenRespVO.class,
BeanUtils.toBean(list, CarteenRespVO.class)); BeanUtils.toBean(list, CarteenRespVO.class));
} }
@GetMapping("/week/sales")
@Operation(summary = "获得门店销量")
@PreAuthorize("@ss.hasPermission('t:carteen:query')")
// @PermitAll
public CommonResult<Map<String, List<CarteenWeekSalesRespVo>>> getCarteenSales(CarteenPageReqVO pageReqVO) {
return success(carteenService.getCarteenWeekSales(pageReqVO));
}
} }

View File

@ -1,10 +1,12 @@
package cn.iocoder.yudao.module.system.controller.admin.carteen.vo; package cn.iocoder.yudao.module.system.controller.admin.carteen.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import cn.iocoder.yudao.framework.common.pojo.PageParam; import cn.iocoder.yudao.framework.common.pojo.PageParam;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@ -33,6 +35,12 @@ public class CarteenPageReqVO extends PageParam {
@Schema(description = "联系电话") @Schema(description = "联系电话")
private String phone; private String phone;
@Schema(description = "类型,(all:全部)空为单个")
private String type;
@Schema(description = "门店id")
private Long carteenId;
@Schema(description = "创建时间") @Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime; private LocalDateTime[] createTime;

View File

@ -0,0 +1,33 @@
package cn.iocoder.yudao.module.system.controller.admin.carteen.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* @Author:qjq
* @Date:2024/4/19 上午10:00
*/
@Schema(description = "管理后台 - 门店周报 Response VO")
@Data
@ExcelIgnoreUnannotated
public class CarteenWeekSalesRespVo {
@Schema(description = "门店id")
private Long carteenId;
@Schema(description = "食堂名称")
private String carteenName;
@Schema(description = "时间类型")
private String timeType;
@Schema(description = "时间")
private LocalDateTime createTime;
@Schema(description = "菜品销量(kg)")
private BigDecimal sales;
//TODO 需要什么字段再加
}

View File

@ -1,35 +1,33 @@
package cn.iocoder.yudao.module.system.controller.admin.dishes; package cn.iocoder.yudao.module.system.controller.admin.dishes;
import cn.hutool.core.util.NumberUtil; 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.dishes.vo.DishesPageReqVO; import cn.iocoder.yudao.module.system.controller.admin.dishes.vo.DishesPageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.dishes.vo.DishesRespVO; import cn.iocoder.yudao.module.system.controller.admin.dishes.vo.DishesRespVO;
import cn.iocoder.yudao.module.system.controller.admin.dishes.vo.DishesSaveReqVO; import cn.iocoder.yudao.module.system.controller.admin.dishes.vo.DishesSaveReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.dishes.DishesDO; import cn.iocoder.yudao.module.system.dal.dataobject.dishes.DishesDO;
import cn.iocoder.yudao.module.system.service.dishes.DishesService; import cn.iocoder.yudao.module.system.service.dishes.DishesService;
import org.springframework.web.bind.annotation.*; import cn.iocoder.yudao.module.system.service.dishesnutrition.DishesNutritionService;
import javax.annotation.Resource; import cn.iocoder.yudao.module.system.service.dishesraw.DishesRawService;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation; 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.validation.constraints.*; import javax.annotation.Resource;
import javax.validation.*; import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.*; import javax.validation.Valid;
import java.util.*;
import java.io.IOException; import java.io.IOException;
import java.util.List;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.*;
@Tag(name = "管理后台 - 菜品管理") @Tag(name = "管理后台 - 菜品管理")
@ -40,6 +38,10 @@ public class DishesController {
@Resource @Resource
private DishesService dishesService; private DishesService dishesService;
@Resource
private DishesNutritionService dishesNutritionService;
@Resource
private DishesRawService dishesRawService;
@PostMapping("/create") @PostMapping("/create")
@Operation(summary = "创建菜品管理") @Operation(summary = "创建菜品管理")
@ -70,8 +72,7 @@ public class DishesController {
@Parameter(name = "id", description = "编号", required = true, example = "1024") @Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('t:dishes:query')") @PreAuthorize("@ss.hasPermission('t:dishes:query')")
public CommonResult<DishesRespVO> getDishes(@RequestParam("id") Long id) { public CommonResult<DishesRespVO> getDishes(@RequestParam("id") Long id) {
DishesDO dishes = dishesService.getDishes(id); return success(dishesService.getDishes1(id));
return success(BeanUtils.toBean(dishes, DishesRespVO.class));
} }
@GetMapping("/page") @GetMapping("/page")

View File

@ -1,13 +1,16 @@
package cn.iocoder.yudao.module.system.controller.admin.dishes.vo; package cn.iocoder.yudao.module.system.controller.admin.dishes.vo;
import cn.iocoder.yudao.module.system.controller.admin.dishesraw.vo.DishesRawSaveReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.dishesnutrition.DishesNutritionDO;
import cn.iocoder.yudao.module.system.dal.dataobject.dishesraw.DishesRawDO;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*; import lombok.Data;
import java.util.*;
import java.util.*;
import java.math.BigDecimal; import java.math.BigDecimal;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*; import java.util.List;
@Schema(description = "管理后台 - 菜品管理 Response VO") @Schema(description = "管理后台 - 菜品管理 Response VO")
@Data @Data
@ -65,4 +68,9 @@ public class DishesRespVO {
@Schema(description = "菜品总重量") @Schema(description = "菜品总重量")
private BigDecimal dishesNumber; private BigDecimal dishesNumber;
@Schema(description = "菜品营养", example = "1")
private List<DishesNutritionDO> dishesNutritionList;
@Schema(description = "菜品原材料", example = "1")
private List<DishesRawDO> dishesRawList;
} }

View File

@ -1,11 +1,12 @@
package cn.iocoder.yudao.module.system.controller.admin.dishes.vo; package cn.iocoder.yudao.module.system.controller.admin.dishes.vo;
import cn.iocoder.yudao.module.system.controller.admin.dishesnutrition.vo.DishesNutritionSaveReqVO;
import cn.iocoder.yudao.module.system.controller.admin.dishesraw.vo.DishesRawSaveReqVO;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*; import lombok.Data;
import org.springframework.web.multipart.MultipartFile;
import javax.validation.constraints.*;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List;
@Schema(description = "管理后台 - 菜品管理新增/修改 Request VO") @Schema(description = "管理后台 - 菜品管理新增/修改 Request VO")
@Data @Data
@ -57,4 +58,9 @@ public class DishesSaveReqVO {
private BigDecimal dishesSumPrice; private BigDecimal dishesSumPrice;
@Schema(description = "菜品总重量", example = "1") @Schema(description = "菜品总重量", example = "1")
private BigDecimal dishesNumber; private BigDecimal dishesNumber;
@Schema(description = "菜品营养", example = "1")
private List<DishesNutritionSaveReqVO> dishesNutritionList;
@Schema(description = "菜品原材料", example = "1")
private List<DishesRawSaveReqVO> dishesRawList;
} }

View File

@ -1,9 +1,7 @@
package cn.iocoder.yudao.module.system.controller.admin.dishesnutrition.vo; package cn.iocoder.yudao.module.system.controller.admin.dishesnutrition.vo;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*; import lombok.Data;
import java.util.*;
import javax.validation.constraints.*;
@Schema(description = "管理后台 - 菜品营养新增/修改 Request VO") @Schema(description = "管理后台 - 菜品营养新增/修改 Request VO")
@Data @Data
@ -22,7 +20,7 @@ public class DishesNutritionSaveReqVO {
private String dishesNumber; private String dishesNumber;
@Schema(description = "菜品编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "5929") @Schema(description = "菜品编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "5929")
@NotNull(message = "菜品编号不能为空") // @NotNull(message = "菜品编号不能为空")
private Long dishesId; private Long dishesId;
@Schema(description = "营养占比") @Schema(description = "营养占比")

View File

@ -1,11 +1,8 @@
package cn.iocoder.yudao.module.system.controller.admin.dishesraw.vo; package cn.iocoder.yudao.module.system.controller.admin.dishesraw.vo;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*; import lombok.Data;
import org.springframework.web.multipart.MultipartFile;
import java.util.*;
import javax.validation.constraints.*;
import java.math.BigDecimal; import java.math.BigDecimal;
@Schema(description = "管理后台 - 菜品原材料新增/修改 Request VO") @Schema(description = "管理后台 - 菜品原材料新增/修改 Request VO")
@ -19,13 +16,13 @@ public class DishesRawSaveReqVO {
private String rawName; private String rawName;
@Schema(description = "原材料图片", example = "https://www.iocoder.cn") @Schema(description = "原材料图片", example = "https://www.iocoder.cn")
private MultipartFile rawImgUrl; private String rawImgUrl;
@Schema(description = "原材料描述") @Schema(description = "原材料描述")
private String rawDescribe; private String rawDescribe;
@Schema(description = "菜品编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "23140") @Schema(description = "菜品编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "23140")
@NotNull(message = "菜品编号不能为空") // @NotNull(message = "菜品编号不能为空")
private Long dishesId; private Long dishesId;
@Schema(description = "原材料产地") @Schema(description = "原材料产地")

View File

@ -17,6 +17,7 @@ import javax.annotation.Resource;
import javax.annotation.security.PermitAll; import javax.annotation.security.PermitAll;
import javax.validation.Valid; import javax.validation.Valid;
import java.util.List; import java.util.List;
import java.util.Map;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
@ -109,4 +110,9 @@ public class DevuceController {
public CommonResult<Long> getCarteenId() { public CommonResult<Long> getCarteenId() {
return success(devuceService.getCarteenIdByIp()); return success(devuceService.getCarteenIdByIp());
} }
@GetMapping("/nutrition")
@Operation(summary = "根据ip获取门店id")
public CommonResult<List<Map>> getDishesNutrition(@RequestParam("dishesId") Long dishesId) {
return success(devuceService.getDishesNutrition( dishesId));
}
} }

View File

@ -1,13 +1,17 @@
package cn.iocoder.yudao.module.system.dal.mysql.carteen; package cn.iocoder.yudao.module.system.dal.mysql.carteen;
import java.util.*; import cn.hutool.core.date.DateTime;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.system.controller.admin.carteen.vo.CarteenPageReqVO; import cn.iocoder.yudao.module.system.controller.admin.carteen.vo.CarteenPageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.carteen.vo.CarteenWeekSalesRespVo;
import cn.iocoder.yudao.module.system.dal.dataobject.carteen.CarteenDO; import cn.iocoder.yudao.module.system.dal.dataobject.carteen.CarteenDO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.LinkedList;
/** /**
* 门店管理 Mapper * 门店管理 Mapper
@ -28,5 +32,31 @@ public interface CarteenMapper extends BaseMapperX<CarteenDO> {
.betweenIfPresent(CarteenDO::getCreateTime, reqVO.getCreateTime()) .betweenIfPresent(CarteenDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(CarteenDO::getId)); .orderByDesc(CarteenDO::getId));
} }
@Select("<script>"+"SELECT\n" +
"\tA.weigh as sales,\n" +
"\tA.carteen_id AS carteenId,\n" +
"\tA.create_time AS createTime,\n" +
"\tB.stores_name as carteenName\n" +
"FROM\n" +
"\tt_business AS A \n" +
"INNER JOIN t_carteen as B on B.id=A.carteen_id\n" +
"WHERE\n" +
"\tA.create_time BETWEEN #{beginDate} and #{endDate} ORDER BY A.create_time"+
"<if test='carteenId != null'> and A.carteen_id= #{carteenId} </if>"+
"</script>")
LinkedList<CarteenWeekSalesRespVo> selectWeekSales(@Param("carteenId") Long carteenId,@Param("beginDate") DateTime beginDate, @Param("endDate") DateTime endDate);
@Select("<script>"+"SELECT\n" +
"\tb.create_time AS createTime,\n" +
"\tb.store_name as carteenName,\n" +
"\tb.store_id as carteenId,\n" +
"\ta.weight as sales\n" +
"FROM\n" +
"\tmember_order_detail AS a\n" +
"\tINNER JOIN member_dish_order AS b ON a.order_id = b.id\n" +
"\n" +
"\twhere a.create_time BETWEEN #{beginDate} and #{endDate} "+
"<if test='carteenId != null'> and b.store_id= #{carteenId} </if>"+
"</script>")
LinkedList<CarteenWeekSalesRespVo> getCarteenSales(@Param("carteenId")Long carteenId,@Param("beginDate") DateTime beginDate, @Param("endDate") DateTime endDate);
} }

View File

@ -1,11 +1,14 @@
package cn.iocoder.yudao.module.system.service.carteen; package cn.iocoder.yudao.module.system.service.carteen;
import javax.validation.*; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.system.controller.admin.carteen.vo.CarteenPageReqVO; import cn.iocoder.yudao.module.system.controller.admin.carteen.vo.CarteenPageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.carteen.vo.CarteenSaveReqVO; import cn.iocoder.yudao.module.system.controller.admin.carteen.vo.CarteenSaveReqVO;
import cn.iocoder.yudao.module.system.controller.admin.carteen.vo.CarteenWeekSalesRespVo;
import cn.iocoder.yudao.module.system.dal.dataobject.carteen.CarteenDO; import cn.iocoder.yudao.module.system.dal.dataobject.carteen.CarteenDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import javax.validation.Valid;
import java.util.List;
import java.util.Map;
/** /**
* 门店管理 Service 接口 * 门店管理 Service 接口
@ -52,4 +55,11 @@ public interface CarteenService {
*/ */
PageResult<CarteenDO> getCarteenPage(CarteenPageReqVO pageReqVO); PageResult<CarteenDO> getCarteenPage(CarteenPageReqVO pageReqVO);
/**
* @Description: 获取门店一周卖出多少销量 千克
* @Author: qjq
* @Date: 2024/4/19 上午9:55
* @return
*/
Map<String, List<CarteenWeekSalesRespVo>> getCarteenWeekSales(CarteenPageReqVO pageReqVO);
} }

View File

@ -1,10 +1,16 @@
package cn.iocoder.yudao.module.system.service.carteen; package cn.iocoder.yudao.module.system.service.carteen;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.LocalDateTimeUtil;
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.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
import cn.iocoder.yudao.module.system.controller.admin.carteen.vo.CarteenPageReqVO; import cn.iocoder.yudao.module.system.controller.admin.carteen.vo.CarteenPageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.carteen.vo.CarteenSaveReqVO; import cn.iocoder.yudao.module.system.controller.admin.carteen.vo.CarteenSaveReqVO;
import cn.iocoder.yudao.module.system.controller.admin.carteen.vo.CarteenWeekSalesRespVo;
import cn.iocoder.yudao.module.system.dal.dataobject.carteen.CarteenDO; import cn.iocoder.yudao.module.system.dal.dataobject.carteen.CarteenDO;
import cn.iocoder.yudao.module.system.dal.mysql.carteen.CarteenMapper; import cn.iocoder.yudao.module.system.dal.mysql.carteen.CarteenMapper;
import cn.iocoder.yudao.module.system.enums.ErrorCodeConstants; import cn.iocoder.yudao.module.system.enums.ErrorCodeConstants;
@ -13,8 +19,10 @@ import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.Arrays; import java.math.BigDecimal;
import java.util.Set; import java.math.RoundingMode;
import java.util.*;
import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
@ -31,6 +39,12 @@ public class CarteenServiceImpl implements CarteenService {
private CarteenMapper carteenMapper; private CarteenMapper carteenMapper;
@Resource @Resource
private PermissionService permissionService; private PermissionService permissionService;
private static final String ALL="all";
//这周字段
private static final String THISWEEK="week";
//上周
private static final String LASTWEEK="LastWeek";
@Override @Override
public Long createCarteen(CarteenSaveReqVO createReqVO) { public Long createCarteen(CarteenSaveReqVO createReqVO) {
// 插入 // 插入
@ -78,4 +92,82 @@ public class CarteenServiceImpl implements CarteenService {
return carteenMapper.selectPage(pageReqVO); return carteenMapper.selectPage(pageReqVO);
} }
/**
* @param req
* @return
* @Description: 获取门店一周卖出多少销量 千克
* @Author: qjq
* @Date: 2024/4/19 上午9:55
*/
@Override
public Map<String, List<CarteenWeekSalesRespVo>> getCarteenWeekSales(CarteenPageReqVO req) {
//获取这周时间
DateTime endTime =DateUtil.endOfDay(DateUtil.date());
DateTime startTime1=DateUtil.beginOfDay(endTime);
//获取偏移时间单位
DateTime startTime=DateUtil.offsetDay(startTime1,-6);
//获取上周时间
DateTime endTime2=DateUtil.endOfDay(DateUtil.offsetDay(startTime,-1));
DateTime startTime2 =DateUtil.beginOfDay(DateUtil.offsetDay(endTime2,-6));
Map<String, List<CarteenWeekSalesRespVo>> listMap=new HashMap<>();
//这周时间
//获取所有门店的销售量
List<CarteenWeekSalesRespVo> list = this.getCarteenWeekSalesByType(req, startTime, endTime);
list.addAll(this.getCarteenSales(req, startTime1, endTime));
if(ALL.equals(req.getType())){
listMap.put(THISWEEK,this.getComputeCarteenWeekSales(list));
//上周时间
listMap.put(LASTWEEK,this.getCarteenWeekSalesByType(req, startTime2, endTime2));
}else{
listMap.put(THISWEEK,list);
listMap.put(LASTWEEK,this.getCarteenWeekSalesByType(req, startTime2, endTime2));
}
//进行时间处理
listMap.forEach((v,k)->{
k.sort(Comparator.comparing(CarteenWeekSalesRespVo::getCreateTime));
k.forEach(f-> f.setTimeType(LocalDateTimeUtil.dayOfWeek(f.getCreateTime().toLocalDate()).toChinese()));
});
return listMap;
}
public List<CarteenWeekSalesRespVo> getComputeCarteenWeekSales(List<CarteenWeekSalesRespVo> list) {
List<CarteenWeekSalesRespVo> list1= new ArrayList<>();
list.forEach(f-> f.setTimeType(LocalDateTimeUtil.dayOfWeek(f.getCreateTime().toLocalDate()).toChinese()));
list.stream()
.collect(Collectors.groupingBy(CarteenWeekSalesRespVo::getCarteenId))
.forEach((k,v)->{
CarteenWeekSalesRespVo bean = BeanUtil.toBean(v.get(0), CarteenWeekSalesRespVo.class);
BigDecimal sum = v.stream()
.map(CarteenWeekSalesRespVo::getSales)
.filter(ObjectUtil::isNotEmpty)
.reduce(BigDecimal.ZERO, BigDecimal::add).setScale(2, RoundingMode.HALF_UP);
bean.setSales(sum);
list1.add(bean);
});
return list1;
}
public List<CarteenWeekSalesRespVo> getCarteenWeekSalesByType(CarteenPageReqVO req,
DateTime startDate,
DateTime endDate){
if(ALL.equals(req.getType())){
return this.getComputeCarteenWeekSales(carteenMapper.selectWeekSales(null,startDate,endDate));
}else{
return carteenMapper.selectWeekSales(req.getCarteenId(),startDate,endDate);
}
}
/**
* @Description: 今日门店销售量
* @Author: qjq
* @Date: 2024/4/19 上午11:35
* @return
*/
public List<CarteenWeekSalesRespVo> getCarteenSales(CarteenPageReqVO req, DateTime startDate,
DateTime endDate){
if(ALL.equals(req.getType())){
return carteenMapper.getCarteenSales(null,startDate,endDate);
}
else{
return carteenMapper.getCarteenSales(req.getCarteenId(),startDate,endDate);
}
}
} }

View File

@ -9,6 +9,7 @@ import cn.iocoder.yudao.module.system.dal.dataobject.dishestype.DishesTypeDO;
import javax.validation.Valid; import javax.validation.Valid;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 设备 Service 接口 * 设备 Service 接口
@ -78,4 +79,11 @@ public interface DevuceService {
* @return * @return
*/ */
Long getCarteenIdByIp(); Long getCarteenIdByIp();
/**
* @Description: 获取菜品营养与菜品名称
* @Author: qjq
* @Date: 2024/4/19 下午2:44
* @return
*/
List<Map> getDishesNutrition(Long dishesId);
} }

View File

@ -9,10 +9,12 @@ import cn.iocoder.yudao.module.system.controller.app.devuce.vo.DevuceSaveReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.deviceInfo.DeviceInfoDO; import cn.iocoder.yudao.module.system.dal.dataobject.deviceInfo.DeviceInfoDO;
import cn.iocoder.yudao.module.system.dal.dataobject.devuce.DevuceDO; import cn.iocoder.yudao.module.system.dal.dataobject.devuce.DevuceDO;
import cn.iocoder.yudao.module.system.dal.dataobject.dishes.DishesDO; import cn.iocoder.yudao.module.system.dal.dataobject.dishes.DishesDO;
import cn.iocoder.yudao.module.system.dal.dataobject.dishesnutrition.DishesNutritionDO;
import cn.iocoder.yudao.module.system.dal.dataobject.dishestype.DishesTypeDO; import cn.iocoder.yudao.module.system.dal.dataobject.dishestype.DishesTypeDO;
import cn.iocoder.yudao.module.system.dal.mysql.deviceInfo.DeviceInfoMapper; import cn.iocoder.yudao.module.system.dal.mysql.deviceInfo.DeviceInfoMapper;
import cn.iocoder.yudao.module.system.dal.mysql.devuce.DevuceMapper; import cn.iocoder.yudao.module.system.dal.mysql.devuce.DevuceMapper;
import cn.iocoder.yudao.module.system.dal.mysql.dishes.DishesMapper; import cn.iocoder.yudao.module.system.dal.mysql.dishes.DishesMapper;
import cn.iocoder.yudao.module.system.dal.mysql.dishesnutrition.DishesNutritionMapper;
import cn.iocoder.yudao.module.system.dal.mysql.dishestype.DishesTypeMapper; import cn.iocoder.yudao.module.system.dal.mysql.dishestype.DishesTypeMapper;
import cn.iocoder.yudao.module.system.enums.ErrorCodeConstants; import cn.iocoder.yudao.module.system.enums.ErrorCodeConstants;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@ -22,6 +24,7 @@ import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
@ -45,6 +48,8 @@ public class DevuceServiceImpl implements DevuceService {
private HttpServletRequest httpServletRequest; private HttpServletRequest httpServletRequest;
@Resource @Resource
private DeviceInfoMapper deviceInfoMapper; private DeviceInfoMapper deviceInfoMapper;
@Resource
private DishesNutritionMapper dishesNutritionMapper;
@Override @Override
public Long createDevuce(DevuceSaveReqVO createReqVO) { public Long createDevuce(DevuceSaveReqVO createReqVO) {
// 插入 // 插入
@ -174,6 +179,27 @@ public class DevuceServiceImpl implements DevuceService {
return dishesTypeMapper.selectList(new LambdaQueryWrapperX<DishesTypeDO>().eq(DishesTypeDO::getCarteenId,carteenId)); return dishesTypeMapper.selectList(new LambdaQueryWrapperX<DishesTypeDO>().eq(DishesTypeDO::getCarteenId,carteenId));
} }
/**
* @param dishesId
* @return
* @Description: 获取菜品营养与菜品名称
* @Author: qjq
* @Date: 2024/4/19 下午2:44
*/
@Override
public List<Map> getDishesNutrition(Long dishesId) {
List<DishesNutritionDO> rawDOS = dishesNutritionMapper.selectList(new LambdaQueryWrapperX<DishesNutritionDO>()
.eqIfPresent(DishesNutritionDO::getDishesId, dishesId));
List<Map> maps = BeanUtil.copyToList(rawDOS, Map.class);
maps.forEach(f ->{
DishesDO dishesDO = dishesMapper.selectById(dishesId);
f.put("dishesName",dishesDO.getDishesName());
f.put("dishesImageUrl",dishesDO.getDishesImageUrl());
});
return maps;
}
/** /**
* @return * @return
* @Description: 根据ip获取门店id * @Description: 根据ip获取门店id

View File

@ -1,11 +1,12 @@
package cn.iocoder.yudao.module.system.service.dishes; package cn.iocoder.yudao.module.system.service.dishes;
import javax.validation.*; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.system.controller.admin.dishes.vo.DishesPageReqVO; import cn.iocoder.yudao.module.system.controller.admin.dishes.vo.DishesPageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.dishes.vo.DishesRespVO;
import cn.iocoder.yudao.module.system.controller.admin.dishes.vo.DishesSaveReqVO; import cn.iocoder.yudao.module.system.controller.admin.dishes.vo.DishesSaveReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.dishes.DishesDO; import cn.iocoder.yudao.module.system.dal.dataobject.dishes.DishesDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import javax.validation.Valid;
/** /**
* 菜品管理 Service 接口 * 菜品管理 Service 接口
@ -43,6 +44,7 @@ public interface DishesService {
* @return 菜品管理 * @return 菜品管理
*/ */
DishesDO getDishes(Long id); DishesDO getDishes(Long id);
DishesRespVO getDishes1(Long id);
/** /**
* 获得菜品管理分页 * 获得菜品管理分页

View File

@ -1,19 +1,31 @@
package cn.iocoder.yudao.module.system.service.dishes; package cn.iocoder.yudao.module.system.service.dishes;
import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjUtil;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult; 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.module.system.controller.admin.dishes.vo.DishesPageReqVO; import cn.iocoder.yudao.module.system.controller.admin.dishes.vo.DishesPageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.dishes.vo.DishesRespVO;
import cn.iocoder.yudao.module.system.controller.admin.dishes.vo.DishesSaveReqVO; import cn.iocoder.yudao.module.system.controller.admin.dishes.vo.DishesSaveReqVO;
import cn.iocoder.yudao.module.system.controller.admin.dishesnutrition.vo.DishesNutritionPageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.dishesnutrition.vo.DishesNutritionSaveReqVO;
import cn.iocoder.yudao.module.system.controller.admin.dishesraw.vo.DishesRawPageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.dishesraw.vo.DishesRawSaveReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.dishes.DishesDO; import cn.iocoder.yudao.module.system.dal.dataobject.dishes.DishesDO;
import cn.iocoder.yudao.module.system.dal.dataobject.dishesnutrition.DishesNutritionDO;
import cn.iocoder.yudao.module.system.dal.dataobject.dishesraw.DishesRawDO;
import cn.iocoder.yudao.module.system.dal.mysql.dishes.DishesMapper; import cn.iocoder.yudao.module.system.dal.mysql.dishes.DishesMapper;
import cn.iocoder.yudao.module.system.enums.ErrorCodeConstants; import cn.iocoder.yudao.module.system.enums.ErrorCodeConstants;
import cn.iocoder.yudao.module.system.service.dishesnutrition.DishesNutritionService;
import cn.iocoder.yudao.module.system.service.dishesraw.DishesRawService;
import lombok.SneakyThrows; import lombok.SneakyThrows;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.math.BigDecimal; import java.math.BigDecimal;
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;
@ -28,6 +40,10 @@ public class DishesServiceImpl implements DishesService {
@Resource @Resource
private DishesMapper dishesMapper; private DishesMapper dishesMapper;
@Resource
private DishesNutritionService dishesNutritionService;
@Resource
private DishesRawService dishesRawService;
@Override @Override
@SneakyThrows @SneakyThrows
public Long createDishes(DishesSaveReqVO createReqVO) { public Long createDishes(DishesSaveReqVO createReqVO) {
@ -45,6 +61,16 @@ public class DishesServiceImpl implements DishesService {
dishes.setDishesBasePrice(div); dishes.setDishesBasePrice(div);
} }
dishesMapper.insert(dishes); dishesMapper.insert(dishes);
List<DishesNutritionSaveReqVO> list = createReqVO.getDishesNutritionList();
List<DishesRawSaveReqVO> dishesRawList = createReqVO.getDishesRawList();
if(ObjUtil.isNotEmpty(list)){
list.forEach(f-> f.setDishesId(dishes.getId()));
dishesNutritionService.createDishesNutritionList(list);
}
if(ObjUtil.isNotEmpty(dishesRawList)){
dishesRawList.forEach(f-> f.setDishesId(dishes.getId()));
dishesRawService.createDishesRawList(dishesRawList);
}
// 返回 // 返回
return dishes.getId(); return dishes.getId();
} }
@ -53,13 +79,19 @@ public class DishesServiceImpl implements DishesService {
public void updateDishes(DishesSaveReqVO updateReqVO) { public void updateDishes(DishesSaveReqVO updateReqVO) {
// 校验存在 // 校验存在
validateDishesExists(updateReqVO.getId()); validateDishesExists(updateReqVO.getId());
// //把图片转换为base64
// String img = Base64.getEncoder().encodeToString(updateReqVO.getFile().getBytes());
// 更新 // 更新
DishesDO updateObj = BeanUtils.toBean(updateReqVO, DishesDO.class); DishesDO updateObj = BeanUtils.toBean(updateReqVO, DishesDO.class);
// updateObj.setDishesImageUrl(img);
dishesMapper.updateById(updateObj); dishesMapper.updateById(updateObj);
List<DishesNutritionSaveReqVO> list = updateReqVO.getDishesNutritionList();
List<DishesRawSaveReqVO> dishesRawList = updateReqVO.getDishesRawList();
if(ObjUtil.isNotEmpty(list)){
list.forEach(f-> f.setDishesId(updateReqVO.getId()));
dishesNutritionService.updateDishesNutritionList(list);
}
if(ObjUtil.isNotEmpty(dishesRawList)){
dishesRawList.forEach(f-> f.setDishesId(updateReqVO.getId()));
dishesRawService.updateDishesRawList(dishesRawList);
}
} }
@Override @Override
@ -76,11 +108,30 @@ public class DishesServiceImpl implements DishesService {
} }
} }
/**
* 获得菜品管理
*
* @param id 编号
* @return 菜品管理
*/
@Override @Override
public DishesDO getDishes(Long id) { public DishesDO getDishes(Long id) {
return dishesMapper.selectById(id); return dishesMapper.selectById(id);
} }
@Override
public DishesRespVO getDishes1(Long id) {
DishesRespVO bean = BeanUtils.toBean(dishesMapper.selectById(id), DishesRespVO.class);
List<DishesNutritionDO> dishesNutritionList = dishesNutritionService.getDishesNutritionList(new DishesNutritionPageReqVO().setDishesId(id));
DishesRawPageReqVO dishesRawPageReqVO = new DishesRawPageReqVO();
dishesRawPageReqVO.setDishesId(id);
dishesRawPageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<DishesRawDO> dishesRawList = dishesRawService.getDishesRawPage(dishesRawPageReqVO).getList();
bean.setDishesNutritionList(dishesNutritionList);
bean.setDishesRawList(dishesRawList);
return bean;
}
@Override @Override
public PageResult<DishesDO> getDishesPage(DishesPageReqVO pageReqVO) { public PageResult<DishesDO> getDishesPage(DishesPageReqVO pageReqVO) {
return dishesMapper.selectPage(pageReqVO); return dishesMapper.selectPage(pageReqVO);

View File

@ -31,6 +31,8 @@ public interface DishesNutritionService {
*/ */
void updateDishesNutrition(@Valid DishesNutritionSaveReqVO updateReqVO); void updateDishesNutrition(@Valid DishesNutritionSaveReqVO updateReqVO);
void updateDishesNutritionList(@Valid List<DishesNutritionSaveReqVO> updateReqVO);
/** /**
* 删除菜品营养 * 删除菜品营养
* *

View File

@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.system.service.dishesnutrition;
import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.NumberUtil;
import cn.iocoder.yudao.framework.common.pojo.PageResult; 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.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.system.controller.admin.dishesnutrition.vo.DishesNutritionPageReqVO; import cn.iocoder.yudao.module.system.controller.admin.dishesnutrition.vo.DishesNutritionPageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.dishesnutrition.vo.DishesNutritionSaveReqVO; import cn.iocoder.yudao.module.system.controller.admin.dishesnutrition.vo.DishesNutritionSaveReqVO;
@ -9,11 +10,9 @@ import cn.iocoder.yudao.module.system.dal.dataobject.dishesnutrition.DishesNutri
import cn.iocoder.yudao.module.system.dal.mysql.dishesnutrition.DishesNutritionMapper; import cn.iocoder.yudao.module.system.dal.mysql.dishesnutrition.DishesNutritionMapper;
import cn.iocoder.yudao.module.system.enums.ErrorCodeConstants; import cn.iocoder.yudao.module.system.enums.ErrorCodeConstants;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
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 javax.annotation.Resource;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List; import java.util.List;
@ -43,12 +42,21 @@ public class DishesNutritionServiceImpl implements DishesNutritionService {
@Override @Override
public void updateDishesNutrition(DishesNutritionSaveReqVO updateReqVO) { public void updateDishesNutrition(DishesNutritionSaveReqVO updateReqVO) {
// 校验存在 // 校验存在
try {
validateDishesNutritionExists(updateReqVO.getId()); validateDishesNutritionExists(updateReqVO.getId());
} catch (Exception e) {
this.createDishesNutrition(updateReqVO);
}
// 更新 // 更新
DishesNutritionDO updateObj = BeanUtils.toBean(updateReqVO, DishesNutritionDO.class); DishesNutritionDO updateObj = BeanUtils.toBean(updateReqVO, DishesNutritionDO.class);
dishesNutritionMapper.updateById(updateObj); dishesNutritionMapper.updateById(updateObj);
} }
@Override
public void updateDishesNutritionList(List<DishesNutritionSaveReqVO> updateReqVO) {
updateReqVO.forEach(this::updateDishesNutrition);
}
@Override @Override
public void deleteDishesNutrition(Long id) { public void deleteDishesNutrition(Long id) {
// 校验存在 // 校验存在

View File

@ -30,6 +30,7 @@ public interface DishesRawService {
* @param updateReqVO 更新信息 * @param updateReqVO 更新信息
*/ */
void updateDishesRaw(@Valid DishesRawSaveReqVO updateReqVO); void updateDishesRaw(@Valid DishesRawSaveReqVO updateReqVO);
void updateDishesRawList(@Valid List<DishesRawSaveReqVO> updateReqVO);
/** /**
* 删除菜品原材料 * 删除菜品原材料

View File

@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.system.service.dishesraw;
import cn.hutool.core.util.ObjUtil; import cn.hutool.core.util.ObjUtil;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.system.controller.admin.dishesraw.vo.DishesRawPageReqVO; import cn.iocoder.yudao.module.system.controller.admin.dishesraw.vo.DishesRawPageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.dishesraw.vo.DishesRawSaveReqVO; import cn.iocoder.yudao.module.system.controller.admin.dishesraw.vo.DishesRawSaveReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.dishesraw.DishesRawDO; import cn.iocoder.yudao.module.system.dal.dataobject.dishesraw.DishesRawDO;
@ -9,11 +10,9 @@ import cn.iocoder.yudao.module.system.dal.mysql.dishesraw.DishesRawMapper;
import cn.iocoder.yudao.module.system.enums.ErrorCodeConstants; import cn.iocoder.yudao.module.system.enums.ErrorCodeConstants;
import lombok.SneakyThrows; import lombok.SneakyThrows;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
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 javax.annotation.Resource;
import java.util.Base64; import java.util.Base64;
import java.util.List; import java.util.List;
@ -42,13 +41,22 @@ public class DishesRawServiceImpl implements DishesRawService {
@Override @Override
public void updateDishesRaw(DishesRawSaveReqVO updateReqVO) { public void updateDishesRaw(DishesRawSaveReqVO updateReqVO) {
try {
// 校验存在 // 校验存在
validateDishesRawExists(updateReqVO.getId()); validateDishesRawExists(updateReqVO.getId());
} catch (Exception e) {
this.createDishesRaw(updateReqVO);
}
// 更新 // 更新
DishesRawDO updateObj = BeanUtils.toBean(updateReqVO, DishesRawDO.class); DishesRawDO updateObj = BeanUtils.toBean(updateReqVO, DishesRawDO.class);
dishesRawMapper.updateById(updateObj); dishesRawMapper.updateById(updateObj);
} }
@Override
public void updateDishesRawList(List<DishesRawSaveReqVO> updateReqVO) {
updateReqVO.forEach(this::updateDishesRaw);
}
@Override @Override
public void deleteDishesRaw(Long id) { public void deleteDishesRaw(Long id) {
// 校验存在 // 校验存在