大屏接口
This commit is contained in:
@ -1,33 +1,33 @@
|
||||
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.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.CarteenRespVO;
|
||||
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.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.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.servlet.http.*;
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.validation.Valid;
|
||||
import java.io.IOException;
|
||||
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 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.*;
|
||||
import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
|
||||
|
||||
|
||||
@Tag(name = "管理后台 - 门店管理")
|
||||
@ -92,5 +92,11 @@ public class CarteenController {
|
||||
ExcelUtils.write(response, "门店管理.xls", "数据", 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;
|
||||
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
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 java.time.LocalDateTime;
|
||||
|
||||
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 = "联系电话")
|
||||
private String phone;
|
||||
|
||||
@Schema(description = "类型,(all:全部)空为单个")
|
||||
private String type;
|
||||
|
||||
@Schema(description = "门店id")
|
||||
private Long carteenId;
|
||||
|
||||
@Schema(description = "创建时间")
|
||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||
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;
|
||||
|
||||
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.DishesRespVO;
|
||||
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.service.dishes.DishesService;
|
||||
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 cn.iocoder.yudao.module.system.service.dishesnutrition.DishesNutritionService;
|
||||
import cn.iocoder.yudao.module.system.service.dishesraw.DishesRawService;
|
||||
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.validation.*;
|
||||
import javax.servlet.http.*;
|
||||
import java.util.*;
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.validation.Valid;
|
||||
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 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.*;
|
||||
import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
|
||||
|
||||
|
||||
@Tag(name = "管理后台 - 菜品管理")
|
||||
@ -40,6 +38,10 @@ public class DishesController {
|
||||
|
||||
@Resource
|
||||
private DishesService dishesService;
|
||||
@Resource
|
||||
private DishesNutritionService dishesNutritionService;
|
||||
@Resource
|
||||
private DishesRawService dishesRawService;
|
||||
|
||||
@PostMapping("/create")
|
||||
@Operation(summary = "创建菜品管理")
|
||||
@ -70,8 +72,7 @@ public class DishesController {
|
||||
@Parameter(name = "id", description = "编号", required = true, example = "1024")
|
||||
@PreAuthorize("@ss.hasPermission('t:dishes:query')")
|
||||
public CommonResult<DishesRespVO> getDishes(@RequestParam("id") Long id) {
|
||||
DishesDO dishes = dishesService.getDishes(id);
|
||||
return success(BeanUtils.toBean(dishes, DishesRespVO.class));
|
||||
return success(dishesService.getDishes1(id));
|
||||
}
|
||||
|
||||
@GetMapping("/page")
|
||||
|
@ -1,13 +1,16 @@
|
||||
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 lombok.*;
|
||||
import java.util.*;
|
||||
import java.util.*;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
import java.time.LocalDateTime;
|
||||
import com.alibaba.excel.annotation.*;
|
||||
import java.util.List;
|
||||
|
||||
@Schema(description = "管理后台 - 菜品管理 Response VO")
|
||||
@Data
|
||||
@ -65,4 +68,9 @@ public class DishesRespVO {
|
||||
|
||||
@Schema(description = "菜品总重量")
|
||||
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;
|
||||
|
||||
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 lombok.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.*;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
@Schema(description = "管理后台 - 菜品管理新增/修改 Request VO")
|
||||
@Data
|
||||
@ -57,4 +58,9 @@ public class DishesSaveReqVO {
|
||||
private BigDecimal dishesSumPrice;
|
||||
@Schema(description = "菜品总重量", example = "1")
|
||||
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;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
import javax.validation.constraints.*;
|
||||
import lombok.Data;
|
||||
|
||||
@Schema(description = "管理后台 - 菜品营养新增/修改 Request VO")
|
||||
@Data
|
||||
@ -22,7 +20,7 @@ public class DishesNutritionSaveReqVO {
|
||||
private String dishesNumber;
|
||||
|
||||
@Schema(description = "菜品编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "5929")
|
||||
@NotNull(message = "菜品编号不能为空")
|
||||
// @NotNull(message = "菜品编号不能为空")
|
||||
private Long dishesId;
|
||||
|
||||
@Schema(description = "营养占比")
|
||||
|
@ -1,11 +1,8 @@
|
||||
package cn.iocoder.yudao.module.system.controller.admin.dishesraw.vo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.*;
|
||||
import javax.validation.constraints.*;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Schema(description = "管理后台 - 菜品原材料新增/修改 Request VO")
|
||||
@ -19,13 +16,13 @@ public class DishesRawSaveReqVO {
|
||||
private String rawName;
|
||||
|
||||
@Schema(description = "原材料图片", example = "https://www.iocoder.cn")
|
||||
private MultipartFile rawImgUrl;
|
||||
private String rawImgUrl;
|
||||
|
||||
@Schema(description = "原材料描述")
|
||||
private String rawDescribe;
|
||||
|
||||
@Schema(description = "菜品编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "23140")
|
||||
@NotNull(message = "菜品编号不能为空")
|
||||
// @NotNull(message = "菜品编号不能为空")
|
||||
private Long dishesId;
|
||||
|
||||
@Schema(description = "原材料产地")
|
||||
|
@ -17,6 +17,7 @@ import javax.annotation.Resource;
|
||||
import javax.annotation.security.PermitAll;
|
||||
import javax.validation.Valid;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
||||
|
||||
@ -109,4 +110,9 @@ public class DevuceController {
|
||||
public CommonResult<Long> getCarteenId() {
|
||||
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;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
import cn.hutool.core.date.DateTime;
|
||||
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.query.LambdaQueryWrapperX;
|
||||
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 org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.apache.ibatis.annotations.Select;
|
||||
|
||||
import java.util.LinkedList;
|
||||
|
||||
/**
|
||||
* 门店管理 Mapper
|
||||
@ -28,5 +32,31 @@ public interface CarteenMapper extends BaseMapperX<CarteenDO> {
|
||||
.betweenIfPresent(CarteenDO::getCreateTime, reqVO.getCreateTime())
|
||||
.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;
|
||||
|
||||
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.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.framework.common.pojo.PageResult;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 门店管理 Service 接口
|
||||
@ -52,4 +55,11 @@ public interface CarteenService {
|
||||
*/
|
||||
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;
|
||||
|
||||
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.util.object.BeanUtils;
|
||||
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.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.mysql.carteen.CarteenMapper;
|
||||
import cn.iocoder.yudao.module.system.enums.ErrorCodeConstants;
|
||||
@ -13,8 +19,10 @@ import org.springframework.stereotype.Service;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.Arrays;
|
||||
import java.util.Set;
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||
|
||||
@ -31,6 +39,12 @@ public class CarteenServiceImpl implements CarteenService {
|
||||
private CarteenMapper carteenMapper;
|
||||
@Resource
|
||||
private PermissionService permissionService;
|
||||
private static final String ALL="all";
|
||||
//这周字段
|
||||
private static final String THISWEEK="week";
|
||||
//上周
|
||||
private static final String LASTWEEK="LastWeek";
|
||||
|
||||
@Override
|
||||
public Long createCarteen(CarteenSaveReqVO createReqVO) {
|
||||
// 插入
|
||||
@ -78,4 +92,82 @@ public class CarteenServiceImpl implements CarteenService {
|
||||
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 java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 设备 Service 接口
|
||||
@ -78,4 +79,11 @@ public interface DevuceService {
|
||||
* @return
|
||||
*/
|
||||
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.devuce.DevuceDO;
|
||||
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.mysql.deviceInfo.DeviceInfoMapper;
|
||||
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.dishesnutrition.DishesNutritionMapper;
|
||||
import cn.iocoder.yudao.module.system.dal.mysql.dishestype.DishesTypeMapper;
|
||||
import cn.iocoder.yudao.module.system.enums.ErrorCodeConstants;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
@ -22,6 +24,7 @@ import org.springframework.validation.annotation.Validated;
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||
@ -45,6 +48,8 @@ public class DevuceServiceImpl implements DevuceService {
|
||||
private HttpServletRequest httpServletRequest;
|
||||
@Resource
|
||||
private DeviceInfoMapper deviceInfoMapper;
|
||||
@Resource
|
||||
private DishesNutritionMapper dishesNutritionMapper;
|
||||
@Override
|
||||
public Long createDevuce(DevuceSaveReqVO createReqVO) {
|
||||
// 插入
|
||||
@ -174,6 +179,27 @@ public class DevuceServiceImpl implements DevuceService {
|
||||
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
|
||||
* @Description: 根据ip获取门店id
|
||||
|
@ -1,11 +1,12 @@
|
||||
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.DishesRespVO;
|
||||
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.framework.common.pojo.PageResult;
|
||||
|
||||
import javax.validation.Valid;
|
||||
|
||||
/**
|
||||
* 菜品管理 Service 接口
|
||||
@ -43,6 +44,7 @@ public interface DishesService {
|
||||
* @return 菜品管理
|
||||
*/
|
||||
DishesDO getDishes(Long id);
|
||||
DishesRespVO getDishes1(Long id);
|
||||
|
||||
/**
|
||||
* 获得菜品管理分页
|
||||
|
@ -1,19 +1,31 @@
|
||||
package cn.iocoder.yudao.module.system.service.dishes;
|
||||
|
||||
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.util.object.BeanUtils;
|
||||
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.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.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.enums.ErrorCodeConstants;
|
||||
import cn.iocoder.yudao.module.system.service.dishesnutrition.DishesNutritionService;
|
||||
import cn.iocoder.yudao.module.system.service.dishesraw.DishesRawService;
|
||||
import lombok.SneakyThrows;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||
|
||||
@ -28,6 +40,10 @@ public class DishesServiceImpl implements DishesService {
|
||||
|
||||
@Resource
|
||||
private DishesMapper dishesMapper;
|
||||
@Resource
|
||||
private DishesNutritionService dishesNutritionService;
|
||||
@Resource
|
||||
private DishesRawService dishesRawService;
|
||||
@Override
|
||||
@SneakyThrows
|
||||
public Long createDishes(DishesSaveReqVO createReqVO) {
|
||||
@ -45,6 +61,16 @@ public class DishesServiceImpl implements DishesService {
|
||||
dishes.setDishesBasePrice(div);
|
||||
}
|
||||
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();
|
||||
}
|
||||
@ -53,13 +79,19 @@ public class DishesServiceImpl implements DishesService {
|
||||
public void updateDishes(DishesSaveReqVO updateReqVO) {
|
||||
// 校验存在
|
||||
validateDishesExists(updateReqVO.getId());
|
||||
// //把图片转换为base64
|
||||
// String img = Base64.getEncoder().encodeToString(updateReqVO.getFile().getBytes());
|
||||
// 更新
|
||||
DishesDO updateObj = BeanUtils.toBean(updateReqVO, DishesDO.class);
|
||||
// updateObj.setDishesImageUrl(img);
|
||||
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
|
||||
@ -76,11 +108,30 @@ public class DishesServiceImpl implements DishesService {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得菜品管理
|
||||
*
|
||||
* @param id 编号
|
||||
* @return 菜品管理
|
||||
*/
|
||||
@Override
|
||||
public DishesDO getDishes(Long 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
|
||||
public PageResult<DishesDO> getDishesPage(DishesPageReqVO pageReqVO) {
|
||||
return dishesMapper.selectPage(pageReqVO);
|
||||
|
@ -31,6 +31,8 @@ public interface DishesNutritionService {
|
||||
*/
|
||||
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.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.module.system.controller.admin.dishesnutrition.vo.DishesNutritionPageReqVO;
|
||||
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.enums.ErrorCodeConstants;
|
||||
import org.springframework.stereotype.Service;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
@ -43,12 +42,21 @@ public class DishesNutritionServiceImpl implements DishesNutritionService {
|
||||
@Override
|
||||
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);
|
||||
dishesNutritionMapper.updateById(updateObj);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateDishesNutritionList(List<DishesNutritionSaveReqVO> updateReqVO) {
|
||||
updateReqVO.forEach(this::updateDishesNutrition);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteDishesNutrition(Long id) {
|
||||
// 校验存在
|
||||
|
@ -30,6 +30,7 @@ public interface DishesRawService {
|
||||
* @param 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.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.DishesRawSaveReqVO;
|
||||
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 lombok.SneakyThrows;
|
||||
import org.springframework.stereotype.Service;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.Base64;
|
||||
import java.util.List;
|
||||
|
||||
@ -42,13 +41,22 @@ public class DishesRawServiceImpl implements DishesRawService {
|
||||
|
||||
@Override
|
||||
public void updateDishesRaw(DishesRawSaveReqVO updateReqVO) {
|
||||
// 校验存在
|
||||
validateDishesRawExists(updateReqVO.getId());
|
||||
try {
|
||||
// 校验存在
|
||||
validateDishesRawExists(updateReqVO.getId());
|
||||
} catch (Exception e) {
|
||||
this.createDishesRaw(updateReqVO);
|
||||
}
|
||||
// 更新
|
||||
DishesRawDO updateObj = BeanUtils.toBean(updateReqVO, DishesRawDO.class);
|
||||
dishesRawMapper.updateById(updateObj);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateDishesRawList(List<DishesRawSaveReqVO> updateReqVO) {
|
||||
updateReqVO.forEach(this::updateDishesRaw);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteDishesRaw(Long id) {
|
||||
// 校验存在
|
||||
|
Reference in New Issue
Block a user