库存警戒线

This commit is contained in:
2024-10-08 11:29:06 +08:00
parent 35309e4975
commit abfea43aa8
5 changed files with 166 additions and 184 deletions

View File

@@ -140,6 +140,9 @@ public class TbProduct implements Serializable {
//是否可售 1 可售 0非可售
private Integer isSale = 1;
private Integer warnLine = 0;
public String getImages() {
return images;
@@ -683,4 +686,12 @@ public class TbProduct implements Serializable {
public void setIsSale(Integer isSale) {
this.isSale = isSale;
}
public Integer getWarnLine() {
return warnLine;
}
public void setWarnLine(Integer warnLine) {
this.warnLine = warnLine;
}
}

View File

@@ -32,7 +32,6 @@ public class TbProductSku implements Serializable {
private String coverImg;
private Integer warnLine;
private Double weight;
@@ -175,14 +174,6 @@ public class TbProductSku implements Serializable {
this.coverImg = coverImg == null ? null : coverImg.trim();
}
public Integer getWarnLine() {
return warnLine;
}
public void setWarnLine(Integer warnLine) {
this.warnLine = warnLine;
}
public Double getWeight() {
return weight;
}

View File

@@ -567,22 +567,9 @@ public class CartService {
* @param num 库存数
*/
private void updateProductStock(TbProduct product, TbProductSkuWithBLOBs productSku, Integer num) {
String key = RedisCst.PRODUCT + product.getShopId() + ":product" + product.getId();
double stock = num;
if (product.getIsDistribute() == 1) {
productMapper.updateStockById(product.getId().toString(), num);
stock = (double) (product.getStockNumber() - num);
} else {
key = RedisCst.PRODUCT + product.getShopId() + ":" + productSku.getId();
productSkuMapper.updateStockById(productSku.getId().toString(), num);
stock = productSku.getStockNumber() - num;
}
if (num > 0) {
redisUtil.getIncrNum(key, "1");
} else {
redisUtil.getIncrNum(key, "2");
}
productMapper.updateStockById(product.getId().toString(), num);
CompletableFuture.runAsync(() -> checkWarnLineAndSendMsg(productSku, product, num));
@@ -594,7 +581,7 @@ public class CartService {
* @param productSku sku
*/
private void checkWarnLineAndSendMsg(TbProductSku productSku, TbProduct product, Integer num) {
if (productSku.getWarnLine() == null) {
if (product.getWarnLine() == null) {
return;
}
@@ -608,23 +595,17 @@ public class CartService {
return;
}
if (productSku.getStockNumber() == null) {
productSku.setStockNumber((double) 0);
}
if (product.getStockNumber() == null) {
product.setStockNumber(0);
}
if (
(product.getIsDistribute() == 1 && product.getStockNumber() - num <= productSku.getWarnLine())
|| (product.getIsDistribute() != 1) && productSku.getStockNumber() - num <= productSku.getWarnLine()
) {
if (product.getStockNumber() - num <= product.getWarnLine()) {
List<TbShopOpenId> shopOpenIds = shopOpenIdMapper.selectStateByShopIdAndType(product.getShopId(), ShopWxMsgTypeEnum.STOCK_MSG.getType());
shopOpenIds.forEach(item -> {
String message = redisUtil.getMessage(RedisCst.SEND_STOCK_WARN_MSG + product.getId() + ":" + item.getOpenId());
if (message == null) {
wxAccountUtil.sendStockWarnMsg("商品库存不足", product.getName(),
product.getIsDistribute() == 1 ? product.getStockNumber() - num : (int) (productSku.getStockNumber() - num)
product.getStockNumber() - num
, item.getOpenId(), ShopWxMsgTypeEnum.STOCK_MSG, shopInfo.getId());
redisUtil.saveMessage(RedisCst.SEND_STOCK_WARN_MSG + product.getId() + ":" + item.getOpenId(), product.getId().toString(), 60 * 30L);
} else {

View File

@@ -64,6 +64,7 @@
<result column="spec_table_headers" jdbcType="VARCHAR" property="specTableHeaders" />
<result column="group_category_id" jdbcType="VARCHAR" property="groupCategoryId" />
<result column="stock_number" jdbcType="INTEGER" property="stockNumber" />
<result column="warn_line" jdbcType="INTEGER" property="warnLine" />
</resultMap>
<resultMap extends="BaseResultMap" id="ResultMapWithBLOBs" type="com.chaozhanggui.system.cashierservice.entity.TbProductWithBLOBs">
<result column="images" jdbcType="LONGVARCHAR" property="images" />
@@ -82,7 +83,7 @@
created_at, updated_at, base_sales_number, real_sales_number, sales_number, thumb_count,
store_count, furnish_meal, furnish_express, furnish_draw, furnish_vir, is_combo,
is_show_cash, is_show_mall, is_need_examine, show_on_mall_status, show_on_mall_time,
show_on_mall_error_msg, enable_label, tax_config_id, spec_table_headers,group_category_id,stock_number
show_on_mall_error_msg, enable_label, tax_config_id, spec_table_headers,group_category_id,stock_number,warn_line
</sql>
<sql id="Blob_Column_List">
images, video, notice, group_snap, spec_info, select_spec
@@ -121,7 +122,7 @@
show_on_mall_status, show_on_mall_time, show_on_mall_error_msg,
enable_label, tax_config_id, spec_table_headers,
images, video, notice,
group_snap, spec_info, select_spec,group_category_id,stock_number
group_snap, spec_info, select_spec,group_category_id,stock_number,warn_line
)
values (#{id,jdbcType=INTEGER}, #{categoryId,jdbcType=VARCHAR}, #{specId,jdbcType=INTEGER},
#{sourcePath,jdbcType=VARCHAR}, #{brandId,jdbcType=INTEGER}, #{merchantId,jdbcType=VARCHAR},
@@ -145,8 +146,7 @@
#{enableLabel,jdbcType=TINYINT}, #{taxConfigId,jdbcType=VARCHAR}, #{specTableHeaders,jdbcType=VARCHAR},
#{images,jdbcType=LONGVARCHAR}, #{video,jdbcType=LONGVARCHAR}, #{notice,jdbcType=LONGVARCHAR},
#{groupSnap,jdbcType=LONGVARCHAR}, #{specInfo,jdbcType=LONGVARCHAR}, #{selectSpec,jdbcType=LONGVARCHAR},
#{groupCategoryId,jdbcType=VARCHAR},#{stockNumber,jdbcType=INTEGER},
#{groupCategoryId,jdbcType=VARCHAR},#{stockNumber,jdbcType=INTEGER}
#{groupCategoryId,jdbcType=VARCHAR},#{stockNumber,jdbcType=INTEGER},#{warnLine,jdbcType=INTEGER}
)
</insert>
<insert id="insertSelective" parameterType="com.chaozhanggui.system.cashierservice.entity.TbProductWithBLOBs">
@@ -356,6 +356,9 @@
<if test="stockNumber != null">
stock_number,
</if>
<if test="warnLine != null">
warn_line,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">
@@ -562,6 +565,9 @@
<if test="stockNumber != null">
#{stockNumber,jdbcType=INTEGER},
</if>
<if test="warnLine != null">
#{warnLine,jdbcType=INTEGER},
</if>
</trim>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="com.chaozhanggui.system.cashierservice.entity.TbProductWithBLOBs">
@@ -768,6 +774,9 @@
<if test="stockNumber != null">
stock_number = #{stockNumber,jdbcType=INTEGER},
</if>
<if test="warnLine != null">
warn_line = #{warnLine,jdbcType=INTEGER},
</if>
</set>
where id = #{id,jdbcType=INTEGER}
</update>
@@ -839,7 +848,8 @@
spec_info = #{specInfo,jdbcType=LONGVARCHAR},
select_spec = #{selectSpec,jdbcType=LONGVARCHAR},
group_category_id = #{groupCategoryId,jdbcType=VARCHAR},
stock_number = #{stockNumber,jdbcType=INTEGER}
stock_number = #{stockNumber,jdbcType=INTEGER},
warn_line = #{warnLine,jdbcType=INTEGER}
where id = #{id,jdbcType=INTEGER}
</update>
<update id="updateByPrimaryKey" parameterType="com.chaozhanggui.system.cashierservice.entity.TbProduct">
@@ -904,7 +914,8 @@
tax_config_id = #{taxConfigId,jdbcType=VARCHAR},
spec_table_headers = #{specTableHeaders,jdbcType=VARCHAR},
group_category_id = #{groupCategoryId,jdbcType=VARCHAR},
stock_number = #{stockNumber,jdbcType=INTEGER}
stock_number = #{stockNumber,jdbcType=INTEGER},
warn_line = #{warnLine,jdbcType=INTEGER}
where id = #{id,jdbcType=INTEGER}
</update>
<update id="upGroupRealSalesNumber">

View File

@@ -16,7 +16,6 @@
<result column="strategy_price" jdbcType="DECIMAL" property="strategyPrice" />
<result column="stock_number" jdbcType="DOUBLE" property="stockNumber" />
<result column="cover_img" jdbcType="VARCHAR" property="coverImg" />
<result column="warn_line" jdbcType="INTEGER" property="warnLine" />
<result column="weight" jdbcType="DOUBLE" property="weight" />
<result column="volume" jdbcType="REAL" property="volume" />
<result column="real_sales_number" jdbcType="DOUBLE" property="realSalesNumber" />
@@ -70,7 +69,7 @@
#{productId,jdbcType=VARCHAR}, #{originPrice,jdbcType=DECIMAL}, #{costPrice,jdbcType=DECIMAL},
#{memberPrice,jdbcType=DECIMAL}, #{mealPrice,jdbcType=DECIMAL}, #{salePrice,jdbcType=DECIMAL},
#{guidePrice,jdbcType=DECIMAL}, #{strategyPrice,jdbcType=DECIMAL}, #{stockNumber,jdbcType=DOUBLE},
#{coverImg,jdbcType=VARCHAR}, #{warnLine,jdbcType=INTEGER}, #{weight,jdbcType=DOUBLE},
#{coverImg,jdbcType=VARCHAR}, #{weight,jdbcType=DOUBLE},
#{volume,jdbcType=REAL}, #{realSalesNumber,jdbcType=DOUBLE}, #{firstShared,jdbcType=DECIMAL},
#{secondShared,jdbcType=DECIMAL}, #{createdAt,jdbcType=BIGINT}, #{updatedAt,jdbcType=BIGINT},
#{specInfo,jdbcType=LONGVARCHAR}, #{specSnap,jdbcType=LONGVARCHAR}),
@@ -118,9 +117,6 @@
<if test="coverImg != null">
cover_img,
</if>
<if test="warnLine != null">
warn_line,
</if>
<if test="weight != null">
weight,
</if>
@@ -192,9 +188,6 @@
<if test="coverImg != null">
#{coverImg,jdbcType=VARCHAR},
</if>
<if test="warnLine != null">
#{warnLine,jdbcType=INTEGER},
</if>
<if test="weight != null">
#{weight,jdbcType=DOUBLE},
</if>
@@ -266,9 +259,6 @@
<if test="coverImg != null">
cover_img = #{coverImg,jdbcType=VARCHAR},
</if>
<if test="warnLine != null">
warn_line = #{warnLine,jdbcType=INTEGER},
</if>
<if test="weight != null">
weight = #{weight,jdbcType=DOUBLE},
</if>
@@ -316,7 +306,6 @@
strategy_price = #{strategyPrice,jdbcType=DECIMAL},
stock_number = #{stockNumber,jdbcType=DOUBLE},
cover_img = #{coverImg,jdbcType=VARCHAR},
warn_line = #{warnLine,jdbcType=INTEGER},
weight = #{weight,jdbcType=DOUBLE},
volume = #{volume,jdbcType=REAL},
real_sales_number = #{realSalesNumber,jdbcType=DOUBLE},
@@ -343,7 +332,6 @@
strategy_price = #{strategyPrice,jdbcType=DECIMAL},
stock_number = #{stockNumber,jdbcType=DOUBLE},
cover_img = #{coverImg,jdbcType=VARCHAR},
warn_line = #{warnLine,jdbcType=INTEGER},
weight = #{weight,jdbcType=DOUBLE},
volume = #{volume,jdbcType=REAL},
real_sales_number = #{realSalesNumber,jdbcType=DOUBLE},