1.增加库存记录mq处理

This commit is contained in:
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 ROUTING_STOCK_RECORD_SALE = "routing.stock.record.sale";
public static final String QUEUE_STOCK_RECORD = "queue.stock.record"; public static final String QUEUE_STOCK_RECORD = "queue.stock.record";
public static final String ROUTING_STOCK_RECORD= "routing.stock.record";
@Bean @Bean
Queue stockRecordSaleQueue() { Queue stockRecordSaleQueue() {
@@ -29,4 +31,14 @@ public class RabbitConfig {
Binding binding(Queue stockRecordSaleQueue, DirectExchange stockRecordExchange) { Binding binding(Queue stockRecordSaleQueue, DirectExchange stockRecordExchange) {
return BindingBuilder.bind(stockRecordSaleQueue).to(stockRecordExchange).with(ROUTING_STOCK_RECORD_SALE); 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 skuId;
private Integer productId; private Integer productId;
private String type; 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) { public void recordStockHandler(String message) {
log.info("接收到下单保存库存信息mq消息消息内容: {}", message); log.info("接收到下单保存库存信息mq消息消息内容: {}", message);
if (StrUtil.isBlank(message)) { if (StrUtil.isBlank(message)) {
log.warn("错误消息体"); log.warn("错误消息体");
return; return;
} }
StockRecordMsg stockRecordMsg = JSONObject.parseObject(message, StockRecordMsg.class); StockRecordMsg stockRecordMsg = JSONObject.parseObject(message, StockRecordMsg.class);
try { try {
productStockOperateService.addStockRecord(stockRecordMsg); productStockOperateService.addStockRecord(stockRecordMsg);
}catch (Exception e) { }catch (Exception e) {

View File

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