菜品营养占比计算
This commit is contained in:
@ -111,8 +111,8 @@ public class DevuceController {
|
||||
return success(devuceService.getCarteenIdByIp());
|
||||
}
|
||||
@GetMapping("/nutrition")
|
||||
@Operation(summary = "根据ip获取门店id")
|
||||
public CommonResult<List<Map>> getDishesNutrition(@RequestParam("dishesId") Long dishesId) {
|
||||
return success(devuceService.getDishesNutrition( dishesId));
|
||||
@Operation(summary = "获取菜品营养成分")
|
||||
public CommonResult<List<Map>> getDishesNutrition(@RequestParam("dishesId") Long dishesId,@RequestParam(value = "cId",required = false) String cId) {
|
||||
return success(devuceService.getDishesNutrition( dishesId,cId));
|
||||
}
|
||||
}
|
@ -7,6 +7,8 @@ import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.dishes.vo.DishesPageReqVO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.dishes.DishesDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.apache.ibatis.annotations.Select;
|
||||
|
||||
/**
|
||||
* 菜品管理 Mapper
|
||||
@ -31,5 +33,6 @@ public interface DishesMapper extends BaseMapperX<DishesDO> {
|
||||
.betweenIfPresent(DishesDO::getCreateTime, reqVO.getCreateTime())
|
||||
.orderByDesc(DishesDO::getId));
|
||||
}
|
||||
|
||||
@Select("select b.nickname from member_dining_plates as a INNER JOIN member_user as b on a.user_id=b.id where a.dining_plates_num=#{cId}")
|
||||
String selectByCidUserName(@Param("cId") String cId);
|
||||
}
|
@ -0,0 +1,38 @@
|
||||
package cn.iocoder.yudao.module.system.enums.Nutrition;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
|
||||
/**
|
||||
* @Author:qjq
|
||||
* @Date:2024/4/22 下午3:56
|
||||
*/
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public enum NutritionEnum {
|
||||
//能量每日推荐
|
||||
NL(BigDecimal.valueOf(8400),"能量"),
|
||||
//蛋白质每日推荐
|
||||
DBZ(BigDecimal.valueOf(60),"蛋白质"),
|
||||
//脂肪每日推荐
|
||||
ZF(BigDecimal.valueOf(60),"脂肪"),
|
||||
//碳水化合物每日推荐
|
||||
TSHHW(BigDecimal.valueOf(300),"碳水化合物");
|
||||
|
||||
private final BigDecimal num;
|
||||
private final String name;
|
||||
public static String percentage(String naem,BigDecimal big){
|
||||
if(NutritionEnum.NL.getName().equals(naem)){
|
||||
return big.divide(NutritionEnum.NL.getNum(),2, RoundingMode.UP).toString()+"%";
|
||||
}else if(NutritionEnum.DBZ.getName().equals(naem)){
|
||||
return big.divide(NutritionEnum.DBZ.getNum(),2, RoundingMode.UP).toString()+"%";
|
||||
}else if (NutritionEnum.ZF.getName().equals(naem)){
|
||||
return big.divide(NutritionEnum.ZF.getNum(),2, RoundingMode.UP).toString()+"%";
|
||||
}else{
|
||||
return big.divide(NutritionEnum.TSHHW.getNum(),2, RoundingMode.UP).toString()+"%";
|
||||
}
|
||||
}
|
||||
}
|
@ -85,5 +85,5 @@ public interface DevuceService {
|
||||
* @Date: 2024/4/19 下午2:44
|
||||
* @return
|
||||
*/
|
||||
List<Map> getDishesNutrition(Long dishesId);
|
||||
List<Map> getDishesNutrition(Long dishesId,String cId);
|
||||
}
|
@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.system.service.devuce;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.util.ObjUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import cn.iocoder.yudao.module.system.controller.app.devuce.vo.DevucePageReqVO;
|
||||
@ -187,15 +188,22 @@ public class DevuceServiceImpl implements DevuceService {
|
||||
* @Date: 2024/4/19 下午2:44
|
||||
*/
|
||||
@Override
|
||||
public List<Map> getDishesNutrition(Long dishesId) {
|
||||
public List<Map> getDishesNutrition(Long dishesId,String cId) {
|
||||
|
||||
List<DishesNutritionDO> rawDOS = dishesNutritionMapper.selectList(new LambdaQueryWrapperX<DishesNutritionDO>()
|
||||
.eqIfPresent(DishesNutritionDO::getDishesId, dishesId));
|
||||
List<Map> maps = BeanUtil.copyToList(rawDOS, Map.class);
|
||||
DishesDO dishesDO = dishesMapper.selectById(dishesId);
|
||||
String s;
|
||||
if(StrUtil.isNotBlank(cId)){
|
||||
s = dishesMapper.selectByCidUserName(cId);
|
||||
} else {
|
||||
s = null;
|
||||
}
|
||||
maps.forEach(f ->{
|
||||
DishesDO dishesDO = dishesMapper.selectById(dishesId);
|
||||
f.put("dishesName",dishesDO.getDishesName());
|
||||
f.put("dishesImageUrl",dishesDO.getDishesImageUrl());
|
||||
f.put("userName",s);
|
||||
});
|
||||
return maps;
|
||||
}
|
||||
|
@ -1,6 +1,5 @@
|
||||
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;
|
||||
@ -9,6 +8,7 @@ import cn.iocoder.yudao.module.system.controller.admin.dishesnutrition.vo.Dishes
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.dishesnutrition.DishesNutritionDO;
|
||||
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.Nutrition.NutritionEnum;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
@ -30,6 +30,7 @@ public class DishesNutritionServiceImpl implements DishesNutritionService {
|
||||
@Resource
|
||||
private DishesNutritionMapper dishesNutritionMapper;
|
||||
|
||||
|
||||
@Override
|
||||
public Long createDishesNutrition(DishesNutritionSaveReqVO createReqVO) {
|
||||
// 插入
|
||||
@ -114,20 +115,6 @@ public class DishesNutritionServiceImpl implements DishesNutritionService {
|
||||
* @return
|
||||
*/
|
||||
public void percentage(List<DishesNutritionSaveReqVO> createReqVO){
|
||||
BigDecimal leftover=new BigDecimal(0);
|
||||
BigDecimal sum = new BigDecimal(100);
|
||||
for (int i = 0; i < createReqVO.size(); i++) {
|
||||
if(i < (createReqVO.size()-1)){
|
||||
DishesNutritionSaveReqVO reqVO = createReqVO.get(i);
|
||||
BigDecimal bigDecimal = new BigDecimal(reqVO.getNutritionNumber());
|
||||
BigDecimal div = NumberUtil.div(bigDecimal, sum, 4);
|
||||
BigDecimal mul = NumberUtil.mul(div, 100);
|
||||
leftover=leftover.add(mul);
|
||||
reqVO.setNutritionPer(mul+"%");
|
||||
}else{
|
||||
BigDecimal sub = NumberUtil.sub(sum, leftover);
|
||||
createReqVO.get(i).setNutritionPer(sub+"%");
|
||||
}
|
||||
}
|
||||
createReqVO.forEach(f-> f.setNutritionPer((NutritionEnum.percentage(f.getNutritionName(),new BigDecimal(f.getNutritionNumber())))));
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user