0616bug修改

This commit is contained in:
jjLv 2025-06-17 13:50:18 +08:00
parent 0d72b09f48
commit 734301c714
8 changed files with 76 additions and 51 deletions

View File

@ -192,7 +192,7 @@ public class DeviceServiceImpl implements DeviceService {
intervalCompressVO.setStartTime(LocalTime.parse(mealTimeVO.getStartTime()));
intervalCompressVO.setEndTime(LocalTime.parse(mealTimeVO.getEndTime()));
for (CookMenuAndroidRecipeDetailVO menuAndroidRecipeDetailVO : menuRecipeDetailList){
if (mealTimeVO.getMealTimeType().equals(menuAndroidRecipeDetailVO.getMealTimeType())){
if (mealTimeVO.getMealTimeType().equals(menuAndroidRecipeDetailVO.getMealTimeType()) && date.equals(menuAndroidRecipeDetailVO.getApplyData())) {
List<CookRecipeDetailCompressVO> recipeDetailList = recipeDishList.stream().filter(x -> x.getDetailId().equals(menuAndroidRecipeDetailVO.getDetailId())).collect(Collectors.toList());
intervalCompressVO.setProductList(recipeDetailList);
break;

View File

@ -66,7 +66,7 @@ public class MenuDishesImportDTO implements Serializable {
private String typeId;
public BigDecimal getPrice() {
return ObjectUtil.isNull(this.price) ? BigDecimal.ZERO : this.price.multiply(BigDecimal.valueOf(100)).setScale(0, RoundingMode.DOWN);
return ObjectUtil.isNull(this.price) ? BigDecimal.ZERO : this.price;
}
public Integer getSalesMode() {
@ -74,7 +74,7 @@ public class MenuDishesImportDTO implements Serializable {
}
public BigDecimal getSpecificationOfWeighing() {
return ObjectUtil.isNull(this.price) ? BigDecimal.ZERO : this.price.multiply(BigDecimal.valueOf(100)).setScale(0, RoundingMode.DOWN);
return ObjectUtil.isNull(this.specificationOfWeighing) ? BigDecimal.ZERO : this.specificationOfWeighing;
}
public void setSpecificationOfWeighing(BigDecimal specificationOfWeighing) {
@ -95,7 +95,7 @@ public class MenuDishesImportDTO implements Serializable {
}
public BigDecimal getWeight() {
return ObjectUtil.isNull(this.weight) ? BigDecimal.ZERO : this.weight.setScale(0, RoundingMode.DOWN);
return ObjectUtil.isNull(this.weight) ? BigDecimal.ZERO : this.weight;
}
public String getAreaName() {

View File

@ -6,6 +6,7 @@ import com.bonus.canteen.core.cook.dto.AppletDishesDetailDTO;
import com.bonus.canteen.core.cook.dto.DishesImportCheckResult;
import com.bonus.canteen.core.cook.dto.MenuDishesImportDTO;
import com.bonus.canteen.core.cook.vo.AppletDishesDetailVO;
import com.bonus.common.core.web.domain.AjaxResult;
import org.springframework.web.multipart.MultipartFile;
/**
@ -77,7 +78,7 @@ public interface ICookDishesService {
* @param request 菜品导入请求
* @return 是否成功
*/
Boolean newImportDishes(List<MenuDishesImportDTO> request);
AjaxResult newImportDishes(List<MenuDishesImportDTO> request);
public AppletDishesDetailVO getDishesDetailByDishesId(AppletDishesDetailDTO dishesDetailDTO);
}

View File

@ -9,6 +9,7 @@ import java.util.stream.Stream;
import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.db.handler.StringHandler;
import com.bonus.canteen.core.common.utils.EasyExcelUtil;
import com.bonus.canteen.core.common.utils.LogUtil;
import com.bonus.canteen.core.cook.domain.*;
@ -28,8 +29,10 @@ import com.bonus.canteen.core.utils.NutritionEntityUtil;
import com.bonus.common.core.exception.ServiceException;
import com.bonus.common.core.utils.DateUtils;
import com.bonus.common.core.utils.StringUtils;
import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.common.houqin.constant.DelFlagEnum;
import com.bonus.common.security.utils.SecurityUtils;
import org.codehaus.groovy.tools.StringHelper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.commons.collections4.CollectionUtils;
@ -306,7 +309,7 @@ public class CookDishesServiceImpl implements ICookDishesService {
private boolean validateData(MenuDishesImportDTO data, List<String> sqlDishesNameList, List<String> dishesNameList,
ImportDishesContext context, List<Integer> salesModeKeys, List<String> materialTypeKeys) {
// 校验价格
if (data.getPrice().compareTo(BigDecimal.ZERO) < 0) {
if (data.getPrice().multiply(BigDecimal.valueOf(100)).compareTo(BigDecimal.ZERO) < 0) {
data.setFailReason("菜品价格为负数");
return false;
}
@ -348,12 +351,13 @@ public class CookDishesServiceImpl implements ICookDishesService {
}
// 校验规格称重
if (data.getSalesMode() == two && data.getSpecificationOfWeighing() != null &&
data.getSpecificationOfWeighing().compareTo(BigDecimal.valueOf(50)) != 0 &&
data.getSpecificationOfWeighing().compareTo(BigDecimal.valueOf(100)) != 0) {
data.setFailReason("称重菜品必须填写规格称重");
if (data.getSalesMode() == two && data.getSpecificationOfWeighing() != null) {
BigDecimal num = data.getSpecificationOfWeighing();
if(num.intValue() != 50 && num.intValue() != 100){
data.setFailReason("称重菜品规格必须是50克或者100克");
return false;
}
}
// 校验原料
if (!validateMaterials(data, context.getMaterialMap(), materialTypeKeys)) {
@ -491,21 +495,26 @@ public class CookDishesServiceImpl implements ICookDishesService {
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean newImportDishes(List<MenuDishesImportDTO> menuDishesImportDTO) {
public AjaxResult newImportDishes(List<MenuDishesImportDTO> menuDishesImportDTO) {
try {
String currentTraceId = LogUtil.getCurrentTraceId();
String username = SecurityUtils.getUsername();
this.asyncTaskExecutor.execute(() -> {
LogUtil.putLogTraceId(currentTraceId);
this.importDishesDTO(menuDishesImportDTO, username);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
});
} catch (Exception var7) {
throw new ServiceException("批量导入菜品发生错误");
}
return true;
return AjaxResult.success();
}
private void importDishesDTO(List<MenuDishesImportDTO> menuDishesImportList, String username) {
private AjaxResult importDishesDTO(List<MenuDishesImportDTO> menuDishesImportList, String username) {
// try {
// 重新组合数据
List<CookDishes> dishesList = new ArrayList<>();
@ -517,7 +526,7 @@ public class CookDishesServiceImpl implements ICookDishesService {
dishes.setStallId(menuDishesImportDTO.getStallId() == null ? null : Long.valueOf(menuDishesImportDTO.getStallId()));
dishes.setAreaId(menuDishesImportDTO.getAreaId() == null ? null : Long.valueOf(menuDishesImportDTO.getAreaId()));
dishes.setDishesName(menuDishesImportDTO.getDishesName());
dishes.setPrice(menuDishesImportDTO.getPrice() == null ? null : Long.valueOf(String.valueOf(menuDishesImportDTO.getPrice())));
dishes.setPrice(menuDishesImportDTO.getPrice() == null ? null : Long.valueOf(String.valueOf(menuDishesImportDTO.getPrice().multiply(BigDecimal.valueOf(100)))));
dishes.setWeight(menuDishesImportDTO.getWeight() == null ? null : menuDishesImportDTO.getWeight());
dishes.setWeightDeviation(BigDecimal.ZERO);
dishes.setTypeId(menuDishesImportDTO.getTypeId() == null ? null : Long.valueOf(menuDishesImportDTO.getTypeId()));
@ -525,6 +534,7 @@ public class CookDishesServiceImpl implements ICookDishesService {
dishes.setRecommend("0");
dishes.setSalesMode(menuDishesImportDTO.getSalesMode() == null ? null : Long.valueOf(menuDishesImportDTO.getSalesMode()));
dishes.setUnitPrice(menuDishesImportDTO.getSpecificationOfWeighing() == null ? null : Long.valueOf(String.valueOf(menuDishesImportDTO.getSpecificationOfWeighing())));
if (!StringUtils.isBlank(menuDishesImportDTO.getMaterialNames())){
String[] materialList = menuDishesImportDTO.getMaterialNames().replace("", ";").split(";");
List<CookDishesMaterial> dishesMaterialList = new ArrayList<>();
for (String material : materialList) {
@ -548,11 +558,31 @@ public class CookDishesServiceImpl implements ICookDishesService {
dishesMaterialList.add(dishesMaterial);
}
dishes.setDishesMaterialList(dishesMaterialList);
}
dishesList.add(dishes);
}
dishesList.forEach(this::insertCookDishes);
// dishesList.forEach(this::insertCookDishes);
for (int i = 0; i < dishesList.size(); i++) {
CookDishes cookDishes = dishesList.get(i);
cookDishesMapper.insertCookDishes(cookDishes);
//添加菜品-原料关联关系
if (cookDishes.getDishesMaterialList() != null && !cookDishes.getDishesMaterialList().isEmpty()) {
cookDishesMapper.insertDishesMaterial(cookDishes.getDishesMaterialList(), cookDishes.getDishesId());
calculateNutritionalInfo(cookDishes);
}
}
// dishesList.forEach(cookDishes -> {
// cookDishesMapper.insertCookDishes(cookDishes);
// //添加菜品-原料关联关系
// if (cookDishes.getDishesMaterialList() != null && !cookDishes.getDishesMaterialList().isEmpty()) {
// cookDishesMapper.insertDishesMaterial(cookDishes.getDishesMaterialList(), cookDishes.getDishesId());
// calculateNutritionalInfo(cookDishes);
// }
// });
return AjaxResult.success("批量导入菜品成功");
}
@Override
public AppletDishesDetailVO getDishesDetailByDishesId(AppletDishesDetailDTO dishesDetailDTO) {
//AppletDishesDetailDTO dishesDetailDTO = (AppletDishesDetailDTO)JSON.parseObject(content, AppletDishesDetailDTO.class);
dishesDetailDTO.setDelFlag(DelFlagEnum.DEL_FALSE.key());

View File

@ -65,8 +65,7 @@ public class NutritionEntity {
private Double totalWeight;
private Double baseWeight;
private Double vitaminD;
private String processingMethod;
private BigDecimal processingTime;
private Double processingTime;
public Double getVitaminD() {
return vitaminD;
@ -76,19 +75,11 @@ public class NutritionEntity {
this.vitaminD = vitaminD;
}
public String getProcessingMethod() {
return processingMethod;
}
public void setProcessingMethod(String processingMethod) {
this.processingMethod = processingMethod;
}
public BigDecimal getProcessingTime() {
public Double getProcessingTime() {
return processingTime;
}
public void setProcessingTime(BigDecimal processingTime) {
public void setProcessingTime(Double processingTime) {
this.processingTime = processingTime;
}

View File

@ -7,6 +7,7 @@ import org.slf4j.LoggerFactory;
import org.springframework.util.ReflectionUtils;
import java.lang.reflect.Field;
import java.math.BigDecimal;
import java.util.Iterator;
import java.util.List;
@ -35,6 +36,9 @@ public class NutritionEntityUtil {
try {
String fieldName = field.getName();
if ("processingMethod".equals(fieldName)) {
continue; // Skip weight and baseWeight fields
}
Object temp = field.get(tempNutrition);
double param = 0.0;
if (temp != null && (Double)temp != -1.0) {
@ -50,7 +54,6 @@ public class NutritionEntityUtil {
}
double newValue = Arith.add(Arith.mul(param, proportion), lastValue);
// System.err.println(fieldName+",newValue"+newValue+" ,lastValue="+lastValue);
declaredField.set(nutritionEntity, newValue);
} catch (NoSuchFieldException | IllegalAccessException var21) {
log.info("获取属性值异常 : {}", var21.getMessage());

View File

@ -590,7 +590,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="bean.niacin != null">niacin = #{bean.niacin},</if>
<if test="bean.edible != null">edible = #{bean.edible},</if>
<if test="bean.vitaminD != null">vitamin_d = #{bean.vitaminD},</if>
<if test="bean.processingMethod != null">processing_method = #{bean.processingMethod},</if>
<if test="bean.processingTime != null">processing_time = #{bean.processingTime},</if>
<if test="bean.carotene != null">carotene = #{bean.carotene},</if>
</trim>

View File

@ -37,6 +37,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<include refid="selectCookNutritionTypeVo"/>
where nutrition_type_name = #{nutritionTypeName}
<if test="nutritionTypeId != null and nutritionTypeId != '' "> and parent_id = #{nutritionTypeId}</if>
limit 1
</select>
<select id="checkIsExistChildren" resultType="java.lang.Integer">
select count(1) from cook_nutrition_type where parent_id in