diff --git a/huaheng-wms-core/src/main/java/org/jeecg/utils/HuahengJwtUtil.java b/huaheng-wms-core/src/main/java/org/jeecg/utils/HuahengJwtUtil.java index c1be785..1735572 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/utils/HuahengJwtUtil.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/utils/HuahengJwtUtil.java @@ -1,6 +1,7 @@ package org.jeecg.utils; import java.lang.reflect.Field; +import java.math.BigDecimal; import java.util.Date; import java.util.List; import java.util.UUID; @@ -25,9 +26,11 @@ import com.auth0.jwt.exceptions.JWTDecodeException; import com.auth0.jwt.interfaces.DecodedJWT; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ReflectUtil; +import cn.hutool.core.util.StrUtil; @Component public class HuahengJwtUtil { @@ -43,7 +46,7 @@ public class HuahengJwtUtil { /** 全仓CODE */ public static final String ALL_WAREHOUSE_CODE = "ALL_WAREHOUSE"; - + /** 定时任务操作人 */ public static final String TASK_AUDIENCE_NAME = "SYSTEM_TASK"; @@ -260,5 +263,45 @@ public class HuahengJwtUtil { return null; } } -} + /** + * 根据数据库中attribute的数量的值计算数量。quantity = 正数,增加attribute的值,quantity = 负数,减少attribute的值 + * @author TanYibin + * @createDate 2023年5月30日 + * @param <T> + * @param lambdaUpdateWrapper + * @param attribute + * @param quantity + */ + public static <T> void calculateQuantity(LambdaUpdateWrapper<T> lambdaUpdateWrapper, String attribute, BigDecimal quantity) { + HuahengJwtUtil.calculateQuantity(lambdaUpdateWrapper, null, attribute, quantity, false); + } + + /** + * 根据数据库中attribute的数量的值计算数量。quantity = 正数,增加attribute的值,quantity = 负数,减少attribute的值,并将t中属性的值设置为null,以免影响属性赋值 + * @author TanYibin + * @createDate 2023年5月30日 + * @param <T> + * @param lambdaUpdateWrapper + * @param attribute + * @param quantity + */ + public static <T> void calculateQuantity(LambdaUpdateWrapper<T> lambdaUpdateWrapper, T t, String attribute, BigDecimal quantity) { + HuahengJwtUtil.calculateQuantity(lambdaUpdateWrapper, t, attribute, quantity, false); + } + + public static <T> void calculateQuantity(LambdaUpdateWrapper<T> lambdaUpdateWrapper, String attribute, BigDecimal quantity, Boolean geZero) { + HuahengJwtUtil.calculateQuantity(lambdaUpdateWrapper, null, attribute, quantity, geZero); + } + + public static <T> void calculateQuantity(LambdaUpdateWrapper<T> lambdaUpdateWrapper, T t, String attribute, BigDecimal quantity, Boolean geZero) { + String sqlAttribute = StrUtil.toUnderlineCase(attribute); + if (geZero) { + lambdaUpdateWrapper.apply(quantity != null, sqlAttribute + " + {0} >= 0", quantity); + } + lambdaUpdateWrapper.setSql(quantity != null, sqlAttribute + " = " + sqlAttribute + " + " + quantity); + if (t != null) { + ReflectUtil.setFieldValue(t, attribute, null); + } + } +}