大屏接口

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

View File

@ -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));
}
}

View File

@ -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;

View File

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

View File

@ -1,35 +1,33 @@
package cn.iocoder.yudao.module.system.controller.admin.dishes;
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")

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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 = "营养占比")

View File

@ -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 = "原材料产地")

View File

@ -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));
}
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}
}
}

View File

@ -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);
}

View File

@ -9,10 +9,12 @@ import cn.iocoder.yudao.module.system.controller.app.devuce.vo.DevuceSaveReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.deviceInfo.DeviceInfoDO;
import cn.iocoder.yudao.module.system.dal.dataobject.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

View File

@ -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);
/**
* 获得菜品管理分页

View File

@ -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);

View File

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

View File

@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.system.service.dishesnutrition;
import cn.hutool.core.util.NumberUtil;
import cn.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) {
// 校验存在

View File

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

View File

@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.system.service.dishesraw;
import cn.hutool.core.util.ObjUtil;
import cn.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) {
// 校验存在