库存校验 商品级库存
This commit is contained in:
@@ -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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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(),
|
||||||
|
|||||||
@@ -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());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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));
|
||||||
|
|||||||
Reference in New Issue
Block a user