库存校验 商品级库存

This commit is contained in:
2024-10-12 14:03:53 +08:00
parent 3b77cfb33d
commit 676daf9a8c
4 changed files with 31 additions and 90 deletions

View File

@@ -382,19 +382,7 @@ public class DutyService {
if (ObjectUtil.isNotEmpty(product)) { if (ObjectUtil.isNotEmpty(product)) {
if (product.getIsDistribute() == 1) { productMapper.updateStockById(skuId, num);
redisUtil.seckill(RedisCst.PRODUCT + shopId.toString() + ":product" + product.getId().toString(), num.toString());
productMapper.updateStockById(skuId, num);
} else {
redisUtil.seckill(RedisCst.PRODUCT + shopId.toString() + ":" + skuId.toString(), num.toString());
if (ObjectUtil.isNotEmpty(tbProductSku)) {
if (num > tbProductSku.getStockNumber()) {
// productSkuMapper.updateStockNum(skuId,num);
} else {
// productSkuMapper.updateByskuIdSub(skuId, num);
}
}
}
} }
} }

View File

@@ -261,14 +261,8 @@ public class OrderService {
// 校验库存 // 校验库存
if ("1".equals(product.getIsStock().toString())) { if ("1".equals(product.getIsStock().toString())) {
if ("1".equals(product.getIsDistribute().toString())) { if (product.getStockNumber() - number < 0) {
if (product.getStockNumber() - number < 0) { return Result.fail(CodeEnum.STOCKERROR);
return Result.fail(CodeEnum.STOCKERROR);
}
} else if (product.getId().intValue() == Integer.valueOf(skuWithBLOBs.getProductId()).intValue()) {
if (skuWithBLOBs.getStockNumber() - number < 0) {
return Result.fail(CodeEnum.STOCKERROR);
}
} }
} }
@@ -468,10 +462,7 @@ public class OrderService {
if (product.getStockNumber() == null) { if (product.getStockNumber() == null) {
product.setStockNumber(0); product.setStockNumber(0);
} }
if ( if ( product.getStockNumber() - num <= product.getWarnLine()) {
(product.getIsDistribute() == 1 && product.getStockNumber() - num <= product.getWarnLine())
|| (product.getIsDistribute() != 1) && productSku.getStockNumber() - num <= product.getWarnLine()
) {
List<TbShopOpenId> shopOpenIds = shopOpenIdMapper.selectStateByShopIdAndType(product.getShopId(), ShopWxMsgTypeEnum.STOCK_MSG.getType()); List<TbShopOpenId> shopOpenIds = shopOpenIdMapper.selectStateByShopIdAndType(product.getShopId(), ShopWxMsgTypeEnum.STOCK_MSG.getType());
shopOpenIds.forEach(item -> { shopOpenIds.forEach(item -> {
wxAccountUtil.sendStockWarnMsg("商品库存不足", product.getName(), wxAccountUtil.sendStockWarnMsg("商品库存不足", product.getName(),

View File

@@ -1435,22 +1435,10 @@ public class PayService {
tbProductStockDetail.setUnitName(shopUnit.getName()); tbProductStockDetail.setUnitName(shopUnit.getName());
tbProductStockDetail.setProductId(product.getId().toString()); tbProductStockDetail.setProductId(product.getId().toString());
if (product.getIsDistribute() == 1) { productMapper.updateStockById(product.getId(), detail.getReturnNum() * -1);
// redisUtil.seckill(RedisCst.PRODUCT + shopId.toString() + ":product" + product.getId().toString(), String.valueOf(detail.getReturnNum() + product.getStockNumber().intValue()));
productMapper.updateStockById(product.getId(), detail.getReturnNum() * -1);
tbProductStockDetail.setLeftNumber(product.getStockNumber()); tbProductStockDetail.setLeftNumber(product.getStockNumber());
tbProductStockDetail.setStockNumber(Double.valueOf(detail.getReturnNum())); tbProductStockDetail.setStockNumber(Double.valueOf(detail.getReturnNum()));
} else {
if (ObjectUtil.isNotEmpty(productSku)) {
// redisUtil.seckill(RedisCst.PRODUCT + shopId.toString() + ":" + productSku.getId().toString(), String.valueOf(detail.getReturnNum() + productSku.getStockNumber().intValue()));
productSkuMapper.updateByskuIdSub(productSku.getId(), detail.getReturnNum() * -1);
tbProductStockDetail.setSkuId(productSku.getId().toString());
tbProductStockDetail.setLeftNumber(productSku.getStockNumber().intValue());
tbProductStockDetail.setStockNumber(Double.valueOf(detail.getReturnNum()));
}
}
productSkuMapper.decrRealSalesNumber(productSku.getId(), detail.getReturnNum()); productSkuMapper.decrRealSalesNumber(productSku.getId(), detail.getReturnNum());
} }

View File

@@ -138,14 +138,6 @@ public class ProductService {
it.setProductSkuResult(skuResult); it.setProductSkuResult(skuResult);
// 查询sku信息 // 查询sku信息
List<TbProductSku> skuWithBLOBs = tbProductSkuMapper.selectByProductCheckGrounding(it.getId()); List<TbProductSku> skuWithBLOBs = tbProductSkuMapper.selectByProductCheckGrounding(it.getId());
List<TbProductSku> skus = tbProductSkuMapper.selectByProductId(it.getId());
if (it.getIsDistribute() == 0) {
int num = 0;
for (TbProductSku item : skus) {
num += item.getStockNumber();
}
it.setStockNumber(num);
}
it.setSkuList(skuWithBLOBs); it.setSkuList(skuWithBLOBs);
it.setGroundingSpecInfo(querySpec(Integer.valueOf(shopId), it.getId())); it.setGroundingSpecInfo(querySpec(Integer.valueOf(shopId), it.getId()));
@@ -156,33 +148,19 @@ public class ProductService {
} }
public void incrStock(String productId, String skuId, int addNum) { public void incrStock(String productId, String skuId, int addNum) {
TbProductWithBLOBs product = tbProductMapper.selectByPrimaryKey(Integer.valueOf(productId)); tbProductMapper.incrStock(productId, addNum);
if (true ||product.getIsDistribute() == 1) {
tbProductMapper.incrStock(productId, addNum);
}else {
tbProductSkuMapper.incrStock(skuId, addNum);
}
} }
public void decrStock(String productId, String skuId, int decrNum) { public void decrStock(String productId, String skuId, int decrNum) {
TbProductWithBLOBs product = tbProductMapper.selectByPrimaryKey(Integer.valueOf(productId)); TbProductWithBLOBs product = tbProductMapper.selectByPrimaryKey(Integer.valueOf(productId));
if (true || product.getIsDistribute() == 1) { if (product.getIsStock() == 1) {
if (product.getIsStock() == 1) { if (tbProductMapper.decrStock(productId, decrNum) < 1) {
if (tbProductMapper.decrStock(productId, decrNum) < 1) { throw new MsgException("库存不足,下单失败");
throw new MsgException("库存不足,下单失败");
}
}else {
tbProductMapper.decrStockUnCheck(productId, decrNum);
}
}else {
if (product.getIsStock() == 1) {
if (tbProductSkuMapper.decrStock(String.valueOf(skuId), decrNum) < 1) {
throw new MsgException("库存不足,下单失败");
}
}else {
tbProductSkuMapper.decrStockUnCheck(String.valueOf(skuId), decrNum);
} }
} else {
tbProductMapper.decrStockUnCheck(productId, decrNum);
} }
} }
public void updateState(ProductStatusDTO productStatusDTO) { public void updateState(ProductStatusDTO productStatusDTO) {
@@ -196,37 +174,33 @@ public class ProductService {
} }
} }
public void updateStock(ProductStockDTO productStockDTO,String loginName) { public void updateStock(ProductStockDTO productStockDTO, String loginName) {
TbProduct product = tbProductMapper.selectByShopIdAndId(productStockDTO.getProductId(), productStockDTO.getShopId()); TbProduct product = tbProductMapper.selectByShopIdAndId(productStockDTO.getProductId(), productStockDTO.getShopId());
if (product == null) { if (product == null) {
throw new MsgException("商品不存在"); throw new MsgException("商品不存在");
} }
if (product.getIsDistribute() != 1 && product.getTypeEnum().equals("sku")) {
throw new MsgException("多规格非共享商品暂不支持修改库存");
} else {
tbProductMapper.updateStock(productStockDTO.getShopId(), productStockDTO.getProductId(), productStockDTO.getStock());
tbProductSkuMapper.updateStock(productStockDTO.getShopId(), productStockDTO.getProductId(), productStockDTO.getStock());
List<TbProductSku> tbProductSkus = tbProductSkuMapper.selectByProductId(product.getId()); tbProductMapper.updateStock(productStockDTO.getShopId(), productStockDTO.getProductId(), productStockDTO.getStock());
JSONObject data = new JSONObject();
data.put("shopId", productStockDTO.getShopId()); JSONObject data = new JSONObject();
data.put("skuId", tbProductSkus.isEmpty() ? null : tbProductSkus.get(0).getId()); data.put("shopId", productStockDTO.getShopId());
data.put("productId", productStockDTO.getProductId()); data.put("skuId", null);
data.put("productId", productStockDTO.getProductId());
// data.put("type", "pc收银机修改库存"); // data.put("type", "pc收银机修改库存");
data.put("subType", product.getStockNumber() > productStockDTO.getStock() ? -1 : 1); data.put("subType", product.getStockNumber() > productStockDTO.getStock() ? -1 : 1);
data.put("number", productStockDTO.getStock() - product.getStockNumber()); data.put("number", productStockDTO.getStock() - product.getStockNumber());
data.put("operator", loginName); data.put("operator", loginName);
data.put("remark", "pc收银机修改库存"); data.put("remark", "pc收银机修改库存");
if (product.getStockNumber() > productStockDTO.getStock()) { if (product.getStockNumber() > productStockDTO.getStock()) {
data.put("type", "盘点出库"); data.put("type", "盘点出库");
}else { } else {
data.put("type", "盘点入库"); data.put("type", "盘点入库");
}
producer.sendStockRecordMsg(data);
} }
producer.sendStockRecordMsg(data);
} }
private static void generateCombinations(List<List<String>> valuesList, int index, List<String> current, List<String> result) { private static void generateCombinations(List<List<String>> valuesList, int index, List<String> current, List<String> result) {
if (index == valuesList.size()) { if (index == valuesList.size()) {
result.add(String.join(",", current)); result.add(String.join(",", current));