获取菜品原料反算接口

This commit is contained in:
sxu 2025-07-16 13:39:47 +08:00
parent efe60fb315
commit 5ea7a5b03e
4 changed files with 68 additions and 12 deletions

View File

@ -28,7 +28,9 @@ import com.bonus.canteen.core.cook.vo.AppletDishesDetailVO;
import com.bonus.canteen.core.cook.vo.AppletDishesSizeV2VO;
import com.bonus.canteen.core.cook.vo.DishesConvertVO;
import com.bonus.canteen.core.ims.domain.ImsUnit;
import com.bonus.canteen.core.ims.mapper.ImsInventoryMapper;
import com.bonus.canteen.core.ims.mapper.ImsUnitMapper;
import com.bonus.canteen.core.ims.vo.MaterialInventoryVO;
import com.bonus.canteen.core.utils.Arith;
import com.bonus.canteen.core.utils.NutritionEntity;
import com.bonus.canteen.core.utils.NutritionEntityUtil;
@ -70,7 +72,7 @@ public class CookDishesServiceImpl implements ICookDishesService {
@Autowired
private CookCollectionDishesMapper cookCollectionDishesMapper;
@Autowired
private ImsUnitMapper imsUnitMapper;
private ImsInventoryMapper imsInventoryMapper;
@Lazy
@Resource(
name = "smartCanteenTaskExecutor"
@ -649,13 +651,13 @@ public class CookDishesServiceImpl implements ICookDishesService {
if (CollectionUtils.isEmpty(cookDishesMaterialModelList)) {
throw new ServiceException("原料列表不能为空");
}
Iterator var21 = cookDishesMaterialModelList.iterator();
Iterator ite10 = cookDishesMaterialModelList.iterator();
while(true) {
while (var21.hasNext()) {
CookDishesMaterialModel menuDishesMaterialModel = (CookDishesMaterialModel) var21.next();
Iterator var26 = content.iterator();
while (var26.hasNext()) {
DishesConvertDTO drpDishesConvertDTO = (DishesConvertDTO) var26.next();
while (ite10.hasNext()) {
CookDishesMaterialModel menuDishesMaterialModel = (CookDishesMaterialModel) ite10.next();
Iterator ite20 = content.iterator();
while (ite20.hasNext()) {
DishesConvertDTO drpDishesConvertDTO = (DishesConvertDTO) ite20.next();
Long dishesId = drpDishesConvertDTO.getDishesId();
if (ObjectUtil.equal(menuDishesMaterialModel.getDishesId(), dishesId)) {
menuDishesMaterialModel.setCalWeight(menuDishesMaterialModel.getWeight().multiply(new BigDecimal(drpDishesConvertDTO.getDishesNum())));
@ -669,14 +671,13 @@ public class CookDishesServiceImpl implements ICookDishesService {
drpUnit.setUnitName("公斤");
drpUnit.setRate(new BigDecimal(1000.000000));
drpUnit.setUnitId(2L);
Map<Long, CookDishesMaterialModel> collect = (Map) cookDishesMaterialModelList.stream().collect(Collectors.toMap(CookDishesMaterialModel::getMaterialId, Function.identity(), (k1, k2) -> {
return k1;
}));
List<DishesConvertVO> resultList = new ArrayList();
Iterator var29 = collect.values().iterator();
while (var29.hasNext()) {
CookDishesMaterialModel menuDishesMaterialModel = (CookDishesMaterialModel) var29.next();
Iterator ite30 = collect.values().iterator();
while (ite30.hasNext()) {
CookDishesMaterialModel menuDishesMaterialModel = (CookDishesMaterialModel) ite30.next();
DishesConvertVO drpDishesConvertVO = new DishesConvertVO();
BeanUtil.copyProperties(menuDishesMaterialModel, drpDishesConvertVO, new String[0]);
drpDishesConvertVO.setUnitId(drpUnit.getUnitId());
@ -684,7 +685,23 @@ public class CookDishesServiceImpl implements ICookDishesService {
drpDishesConvertVO.setTotalConvertWeight(((BigDecimal) materialTotalWeightMap.get(menuDishesMaterialModel.getMaterialId())).divide(drpUnit.getRate(), 3, RoundingMode.HALF_UP));
resultList.add(drpDishesConvertVO);
}
return resultList;
List<Long> materialIdList = resultList.stream().map(DishesConvertVO::getMaterialId).collect(Collectors.toList());
List<MaterialInventoryVO> materialInventoryVOList = this.imsInventoryMapper.selectInventoryByMaterialIdList(materialIdList, (Long)null);
Iterator ite40 = resultList.iterator();
while(true) {
while(ite40.hasNext()) {
DishesConvertVO drpDishesConvertVO = (DishesConvertVO)ite40.next();
Iterator ite50 = materialInventoryVOList.iterator();
while(ite50.hasNext()) {
MaterialInventoryVO materialInventoryVO = (MaterialInventoryVO)ite50.next();
if (ObjectUtil.equal(drpDishesConvertVO.getMaterialId(), materialInventoryVO.getMaterialId()) && ObjectUtil.equal(drpDishesConvertVO.getUnitId(), materialInventoryVO.getUnitId())) {
drpDishesConvertVO.setInventoryNum(materialInventoryVO.getInventoryNum());
break;
}
}
}
return resultList;
}
}
}
}

View File

@ -3,6 +3,8 @@ package com.bonus.canteen.core.ims.mapper;
import java.util.List;
import com.bonus.canteen.core.ims.domain.ImsInventory;
import com.bonus.canteen.core.ims.domain.vo.ImsInventoryVO;
import com.bonus.canteen.core.ims.vo.MaterialInventoryVO;
import org.apache.ibatis.annotations.Param;
/**
* 库存Mapper接口
@ -59,4 +61,6 @@ public interface ImsInventoryMapper
* @return 结果
*/
public int deleteImsInventoryByInventoryIds(Long[] inventoryIds);
List<MaterialInventoryVO> selectInventoryByMaterialIdList(@Param("materialIdList") List<Long> materialIdList, @Param("warehouseId") Long warehouseId);
}

View File

@ -0,0 +1,16 @@
package com.bonus.canteen.core.ims.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class MaterialInventoryVO {
@ApiModelProperty("货品id")
private Long materialId;
@ApiModelProperty("单位id")
private Long unitId;
@ApiModelProperty("库存数")
private BigDecimal inventoryNum;
}

View File

@ -177,4 +177,23 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{inventoryId}
</foreach>
</delete>
<select id="selectInventoryByMaterialIdList" resultType="com.bonus.canteen.core.ims.vo.MaterialInventoryVO">
SELECT
material_id,
unit_id,
sum(material_num) inventoryNum
FROM
ims_inventory
where
material_id in
<foreach collection="materialIdList" item="materialId" separator="," open="(" close=")">
#{materialId}
</foreach>
<if test="warehouseId != null">
and warehouse_id = #{warehouseId}
</if>
group by
material_id, unit_id
</select>
</mapper>