菜品营养占比计算

This commit is contained in:
qjq
2024-04-22 16:23:41 +08:00
parent 9139ae4cb2
commit 7e398c0fe6
7 changed files with 61 additions and 25 deletions

View File

@ -125,10 +125,10 @@ public class CustomerTrafficServiceImpl implements CustomerTrafficService {
return list; return list;
}else{ }else{
List<CustomerTrafficDetailDO> all = customerTrafficMapper.getAllCustomerNum(storeId, startDate, endDate); List<CustomerTrafficDetailDO> all = customerTrafficMapper.getAllCustomerNum(storeId, startDate, endDate);
all.sort(Comparator.comparing(CustomerTrafficDetailDO::getCustomerNum)); all.sort(Comparator.comparing(CustomerTrafficDetailDO::getCreateTime));
List<CustomerTrafficDetailDO> list=new ArrayList<>(); List<CustomerTrafficDetailDO> list=new ArrayList<>();
//拆分 //拆分
List<List<CustomerTrafficDetailDO>> split = ListUtil.split(list, 3); List<List<CustomerTrafficDetailDO>> split = ListUtil.split(all, 3);
for (List<CustomerTrafficDetailDO> dos : split) { for (List<CustomerTrafficDetailDO> dos : split) {
CustomerTrafficDetailDO aDo = BeanUtil.toBean(dos.get(0), CustomerTrafficDetailDO.class); CustomerTrafficDetailDO aDo = BeanUtil.toBean(dos.get(0), CustomerTrafficDetailDO.class);
aDo.setCustomerNum(dos.stream().mapToInt(CustomerTrafficDetailDO::getCustomerNum).sum()); aDo.setCustomerNum(dos.stream().mapToInt(CustomerTrafficDetailDO::getCustomerNum).sum());

View File

@ -111,8 +111,8 @@ public class DevuceController {
return success(devuceService.getCarteenIdByIp()); return success(devuceService.getCarteenIdByIp());
} }
@GetMapping("/nutrition") @GetMapping("/nutrition")
@Operation(summary = "根据ip获取门店id") @Operation(summary = "获取菜品营养成分")
public CommonResult<List<Map>> getDishesNutrition(@RequestParam("dishesId") Long dishesId) { public CommonResult<List<Map>> getDishesNutrition(@RequestParam("dishesId") Long dishesId,@RequestParam(value = "cId",required = false) String cId) {
return success(devuceService.getDishesNutrition( dishesId)); return success(devuceService.getDishesNutrition( dishesId,cId));
} }
} }

View File

@ -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.controller.admin.dishes.vo.DishesPageReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.dishes.DishesDO; import cn.iocoder.yudao.module.system.dal.dataobject.dishes.DishesDO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
/** /**
* 菜品管理 Mapper * 菜品管理 Mapper
@ -31,5 +33,6 @@ public interface DishesMapper extends BaseMapperX<DishesDO> {
.betweenIfPresent(DishesDO::getCreateTime, reqVO.getCreateTime()) .betweenIfPresent(DishesDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(DishesDO::getId)); .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);
} }

View File

@ -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()+"%";
}
}
}

View File

@ -85,5 +85,5 @@ public interface DevuceService {
* @Date: 2024/4/19 下午2:44 * @Date: 2024/4/19 下午2:44
* @return * @return
*/ */
List<Map> getDishesNutrition(Long dishesId); List<Map> getDishesNutrition(Long dishesId,String cId);
} }

View File

@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.system.service.devuce;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjUtil; 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.common.pojo.PageResult;
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.app.devuce.vo.DevucePageReqVO; 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 * @Date: 2024/4/19 下午2:44
*/ */
@Override @Override
public List<Map> getDishesNutrition(Long dishesId) { public List<Map> getDishesNutrition(Long dishesId,String cId) {
List<DishesNutritionDO> rawDOS = dishesNutritionMapper.selectList(new LambdaQueryWrapperX<DishesNutritionDO>() List<DishesNutritionDO> rawDOS = dishesNutritionMapper.selectList(new LambdaQueryWrapperX<DishesNutritionDO>()
.eqIfPresent(DishesNutritionDO::getDishesId, dishesId)); .eqIfPresent(DishesNutritionDO::getDishesId, dishesId));
List<Map> maps = BeanUtil.copyToList(rawDOS, Map.class); List<Map> maps = BeanUtil.copyToList(rawDOS, Map.class);
maps.forEach(f ->{
DishesDO dishesDO = dishesMapper.selectById(dishesId); DishesDO dishesDO = dishesMapper.selectById(dishesId);
String s;
if(StrUtil.isNotBlank(cId)){
s = dishesMapper.selectByCidUserName(cId);
} else {
s = null;
}
maps.forEach(f ->{
f.put("dishesName",dishesDO.getDishesName()); f.put("dishesName",dishesDO.getDishesName());
f.put("dishesImageUrl",dishesDO.getDishesImageUrl()); f.put("dishesImageUrl",dishesDO.getDishesImageUrl());
f.put("userName",s);
}); });
return maps; return maps;
} }

View File

@ -1,6 +1,5 @@
package cn.iocoder.yudao.module.system.service.dishesnutrition; 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.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.mybatis.core.query.LambdaQueryWrapperX; 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.dataobject.dishesnutrition.DishesNutritionDO;
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 cn.iocoder.yudao.module.system.enums.Nutrition.NutritionEnum;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
@ -30,6 +30,7 @@ public class DishesNutritionServiceImpl implements DishesNutritionService {
@Resource @Resource
private DishesNutritionMapper dishesNutritionMapper; private DishesNutritionMapper dishesNutritionMapper;
@Override @Override
public Long createDishesNutrition(DishesNutritionSaveReqVO createReqVO) { public Long createDishesNutrition(DishesNutritionSaveReqVO createReqVO) {
// 插入 // 插入
@ -114,20 +115,6 @@ public class DishesNutritionServiceImpl implements DishesNutritionService {
* @return * @return
*/ */
public void percentage(List<DishesNutritionSaveReqVO> createReqVO){ public void percentage(List<DishesNutritionSaveReqVO> createReqVO){
BigDecimal leftover=new BigDecimal(0); createReqVO.forEach(f-> f.setNutritionPer((NutritionEnum.percentage(f.getNutritionName(),new BigDecimal(f.getNutritionNumber())))));
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+"%");
}
}
} }
} }