package com.consum.base.core;
|
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.util.Assert;
|
|
|
/**
|
* 核心出入库接口
|
*/
|
@Service
|
@Slf4j
|
public class WarehouseCoreService {
|
|
/**
|
* 统一出入库
|
*/
|
@Transactional(rollbackFor = Exception.class)
|
public CheckWarehouseResult unifyCheck(CheckWarehouseParam param) {
|
// TODO: 10/10/2023 此处加了唯一锁,会影响性能,思考是否有更合适的办法
|
try {
|
Assert.notNull(param, "wareHouse param can not null !");
|
Assert.notNull(param.getWarehouseId(), "wareHouse id can not null");
|
CheckWarehouseResult result;
|
synchronized (param.getWarehouseId()) {
|
if (param.getIsCheckIn()) {
|
result = checkin(param);
|
} else {
|
result = checkout(param);
|
}
|
}
|
return result;
|
} catch (Exception e) {
|
log.error(e.getMessage());
|
throw new RuntimeException(e.getMessage());
|
}
|
|
}
|
|
/**
|
* 出库
|
*/
|
private CheckWarehouseResult checkout(CheckWarehouseParam param) {
|
return new CheckWarehouseResult();
|
}
|
|
/**
|
* 入库
|
*/
|
private CheckWarehouseResult checkin(CheckWarehouseParam param) {
|
return new CheckWarehouseResult();
|
}
|
|
|
}
|