1.增加库存记录mq处理

This commit is contained in:
SongZhang 2024-08-01 14:22:33 +08:00
parent b8a60a1549
commit 7c122565fc
4 changed files with 23 additions and 16 deletions

View File

@ -14,6 +14,8 @@ public class RabbitConfig {
public static final String ROUTING_STOCK_RECORD_SALE = "routing.stock.record.sale";
public static final String QUEUE_STOCK_RECORD = "queue.stock.record";
public static final String ROUTING_STOCK_RECORD= "routing.stock.record";
@Bean
Queue stockRecordSaleQueue() {
@ -29,4 +31,14 @@ public class RabbitConfig {
Binding binding(Queue stockRecordSaleQueue, DirectExchange stockRecordExchange) {
return BindingBuilder.bind(stockRecordSaleQueue).to(stockRecordExchange).with(ROUTING_STOCK_RECORD_SALE);
}
@Bean
Queue stockRecordSaleQueue2() {
return new Queue(QUEUE_STOCK_RECORD);
}
@Bean
Binding binding2(Queue stockRecordSaleQueue2, DirectExchange stockRecordExchange) {
return BindingBuilder.bind(stockRecordSaleQueue2).to(stockRecordExchange).with(ROUTING_STOCK_RECORD);
}
}

View File

@ -8,5 +8,6 @@ public class StockRecordMsg {
private Integer skuId;
private Integer productId;
private String type;
private Integer currentNumber;
private Integer subType;
private Integer number;
}

View File

@ -40,17 +40,14 @@ public class StockListener {
}
}
// @RabbitListener(queues = RabbitConfig.QUEUE_STOCK_RECORD_SALE)
@RabbitListener(queues = RabbitConfig.QUEUE_STOCK_RECORD)
public void recordStockHandler(String message) {
log.info("接收到下单保存库存信息mq消息消息内容: {}", message);
if (StrUtil.isBlank(message)) {
log.warn("错误消息体");
return;
}
StockRecordMsg stockRecordMsg = JSONObject.parseObject(message, StockRecordMsg.class);
try {
productStockOperateService.addStockRecord(stockRecordMsg);
}catch (Exception e) {

View File

@ -466,17 +466,14 @@ public class TbProductStockOperateServiceImpl implements TbProductStockOperateSe
throw new BadRequestException("商品或sku不存在");
}
double difference = product.getIsDistribute().equals(1) ? stockRecordMsg.getCurrentNumber() - product.getStockNumber()
: stockRecordMsg.getCurrentNumber() - productSku.getStockNumber();
TbShopUnit tbShopUnit = shopUnitRepository.findById(product.getUnitId()).orElse(null);
//增加操作日志
long times = Instant.now().toEpochMilli();
HashMap<String, Object> snapItem = new HashMap<>();
snapItem.put("stockNumber", product.getIsDistribute().equals(1) ? product.getStockNumber() : productSku.getStockNumber());
snapItem.put("number", product.getIsDistribute().equals(1) ? stockRecordMsg.getCurrentNumber() - product.getStockNumber()
: stockRecordMsg.getCurrentNumber() - productSku.getStockNumber());
snapItem.put("stockNumber", product.getIsDistribute().equals(1) ? product.getStockNumber() - stockRecordMsg.getNumber() :
productSku.getStockNumber() - stockRecordMsg.getNumber());
snapItem.put("number", stockRecordMsg.getSubType() == -1 ? -stockRecordMsg.getNumber() : stockRecordMsg.getNumber());
snapItem.put("coverImg", product.getCoverImg());
snapItem.put("productId", product.getId());
snapItem.put("name", product.getName());
@ -511,13 +508,13 @@ public class TbProductStockOperateServiceImpl implements TbProductStockOperateSe
productStockDetail.setUnitName(tbShopUnit == null ? null : tbShopUnit.getName());
productStockDetail.setShopId(String.valueOf(stockRecordMsg.getShopId()));
productStockDetail.setSkuId(String.valueOf(stockRecordMsg.getSkuId()));
productStockDetail.setSubType(product.getIsDistribute().equals(1) ? stockRecordMsg.getCurrentNumber() - product.getStockNumber() > 0 ? 1 : -1
: stockRecordMsg.getCurrentNumber() - productSku.getStockNumber() > 0 ? 1 : -1);
productStockDetail.setSubType(stockRecordMsg.getSubType());
productStockDetail.setType(stockRecordMsg.getType());
productStockDetail.setSpecSnap(productSku.getSpecSnap());
productStockDetail.setStockNumber(difference);
productStockDetail.setCostAmount(productSku.getSalePrice().multiply(BigDecimal.valueOf(Math.abs(difference))));
productStockDetail.setLeftNumber(product.getIsDistribute().equals(1) ? product.getStockNumber() : productSku.getStockNumber().intValue());
productStockDetail.setStockNumber(Double.valueOf(stockRecordMsg.getNumber()));
productStockDetail.setCostAmount(productSku.getSalePrice().multiply(BigDecimal.valueOf(Math.abs(stockRecordMsg.getNumber()))));
productStockDetail.setLeftNumber(product.getIsDistribute().equals(1) ? product.getStockNumber() - stockRecordMsg.getNumber()
: productSku.getStockNumber().intValue() - stockRecordMsg.getNumber());
productStockDetail.setRecordId(stockOperate.getId().toString());
productStockDetail.setStockSnap(JSONObject.toJSONString(snapItem));
productStockDetail.setSourcePath("NORMAL");