大屏接口
This commit is contained in:
@ -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));
|
||||||
|
}
|
||||||
}
|
}
|
@ -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;
|
||||||
|
@ -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("订单交易时间")
|
||||||
|
@ -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
|
||||||
|
@ -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));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
}
|
@ -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);
|
||||||
}
|
}
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
}
|
}
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
@ -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);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取今日顾客总量
|
* 获取今日顾客总量
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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));
|
||||||
|
}
|
||||||
}
|
}
|
@ -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;
|
||||||
|
@ -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 需要什么字段再加
|
||||||
|
}
|
@ -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")
|
||||||
|
@ -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;
|
||||||
}
|
}
|
@ -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;
|
||||||
}
|
}
|
@ -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 = "营养占比")
|
||||||
|
@ -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 = "原材料产地")
|
||||||
|
@ -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));
|
||||||
|
}
|
||||||
}
|
}
|
@ -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);
|
||||||
}
|
}
|
@ -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);
|
||||||
}
|
}
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
@ -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);
|
||||||
}
|
}
|
@ -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
|
||||||
|
@ -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);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获得菜品管理分页
|
* 获得菜品管理分页
|
||||||
|
@ -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);
|
||||||
|
@ -31,6 +31,8 @@ public interface DishesNutritionService {
|
|||||||
*/
|
*/
|
||||||
void updateDishesNutrition(@Valid DishesNutritionSaveReqVO updateReqVO);
|
void updateDishesNutrition(@Valid DishesNutritionSaveReqVO updateReqVO);
|
||||||
|
|
||||||
|
void updateDishesNutritionList(@Valid List<DishesNutritionSaveReqVO> updateReqVO);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除菜品营养
|
* 删除菜品营养
|
||||||
*
|
*
|
||||||
|
@ -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) {
|
||||||
// 校验存在
|
// 校验存在
|
||||||
validateDishesNutritionExists(updateReqVO.getId());
|
try {
|
||||||
|
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) {
|
||||||
// 校验存在
|
// 校验存在
|
||||||
|
@ -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);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除菜品原材料
|
* 删除菜品原材料
|
||||||
|
@ -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) {
|
||||||
// 校验存在
|
// 校验存在
|
||||||
|
Reference in New Issue
Block a user