|
|
@@ -69,6 +69,7 @@ import org.springblade.purchase.sales.service.IOrderPartsService;
|
|
|
import org.springblade.purchase.sales.service.IOrderService;
|
|
|
import org.springblade.purchase.sales.vo.*;
|
|
|
import org.springblade.stock.entity.StockGoods;
|
|
|
+import org.springblade.stock.entity.StockGoodsLog;
|
|
|
import org.springblade.stock.feign.IStockGoodsClient;
|
|
|
import org.springblade.stock.vo.StockGoodsVO;
|
|
|
import org.springblade.system.entity.DictBiz;
|
|
|
@@ -1205,8 +1206,18 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
// List<StockGoods> stockGoodsList = castToList(redisTemplate.opsForValue().get("stockGoods"), StockGoods.class);
|
|
|
List<StockGoods> stockGoodsList = stockGoodsClient.selectStockGoodsAll();
|
|
|
List<StockGoods> stockGoods = new ArrayList<>();
|
|
|
+ List<StockGoodsLog> stockGoodsLogList = new ArrayList<>();
|
|
|
+ Date date = new Date();
|
|
|
if (CollectionUtils.isNotEmpty(orderItems)) {
|
|
|
for (OrderItems item : orderItems) {
|
|
|
+ StockGoodsLog stockGoodsLog = new StockGoodsLog();
|
|
|
+ stockGoodsLog.setTime(date);
|
|
|
+ stockGoodsLog.setSrcOrderId(salesOrder.getId());
|
|
|
+ stockGoodsLog.setUserName(AuthUtil.getUserName());
|
|
|
+ stockGoodsLog.setType("销售请核锁定");
|
|
|
+ stockGoodsLog.setTenantId(AuthUtil.getTenantId());
|
|
|
+ stockGoodsLog.setCreateUser(AuthUtil.getUserId());
|
|
|
+ stockGoodsLog.setCreateTime(date);
|
|
|
// 开始锁定库存,减少可用
|
|
|
StockGoods oneStock = stockGoodsList.stream().filter(s ->
|
|
|
s.getGoodsId().equals(item.getItemId())
|
|
|
@@ -1224,6 +1235,12 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
// 锁定库存
|
|
|
BigDecimal lockingQuantity = oneStock.getLockingQuantity();
|
|
|
|
|
|
+ stockGoodsLog.setStockId(oneStock.getId());
|
|
|
+ stockGoodsLog.setBalanceQuantityOld(oneStock.getBalanceQuantity());
|
|
|
+ stockGoodsLog.setSurplusRouteQuantityOld(surplusRouteQuantity);
|
|
|
+ stockGoodsLog.setLockingQuantityOld(lockingQuantity);
|
|
|
+ stockGoodsLog.setOrderQuantity(orderQuantity);
|
|
|
+
|
|
|
// 判断比较大小
|
|
|
if (orderQuantity.compareTo(surplusRouteQuantity) > 0) {
|
|
|
throw new SecurityException("锁定库存失败:原单据的" + oneStock.getCode() + "订货数量大于可用库存,无法锁定");
|
|
|
@@ -1237,6 +1254,11 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
oneStock.setLockingQuantity(lockingQuantity == null ? new BigDecimal("0").add(orderQuantity) : lockingQuantity.add(orderQuantity));
|
|
|
oneStock.setVersion(oneStock.getVersion());
|
|
|
stockGoods.add(oneStock);
|
|
|
+
|
|
|
+ stockGoodsLog.setBalanceQuantity(oneStock.getBalanceQuantity());
|
|
|
+ stockGoodsLog.setSurplusRouteQuantity(oneStock.getSurplusRouteQuantity());
|
|
|
+ stockGoodsLog.setLockingQuantity(oneStock.getLockingQuantity());
|
|
|
+ stockGoodsLogList.add(stockGoodsLog);
|
|
|
}
|
|
|
// 更新库存
|
|
|
R goods = stockGoodsClient.updateStockList(stockGoods);
|
|
|
@@ -1244,6 +1266,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
// throw new SecurityException("锁定库存失败: " + salesOrder.getOrderNo() + "更新失败");
|
|
|
throw new SecurityException(goods.getMsg());
|
|
|
}
|
|
|
+ stockGoodsClient.saveOrUpdateBatchListLog(stockGoodsLogList);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -1675,7 +1698,17 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
List<StockGoods> stockGoodsList = castToList(redisTemplate.opsForValue().get("stockGoods"), StockGoods.class);
|
|
|
|
|
|
if (CollectionUtils.isNotEmpty(orderItems)) {
|
|
|
+ List<StockGoodsLog> stockGoodsLogList = new ArrayList<>();
|
|
|
+ Date date = new Date();
|
|
|
orderItems.forEach(e -> {
|
|
|
+ StockGoodsLog stockGoodsLog = new StockGoodsLog();
|
|
|
+ stockGoodsLog.setTime(date);
|
|
|
+ stockGoodsLog.setSrcOrderId(order.getId());
|
|
|
+ stockGoodsLog.setUserName(AuthUtil.getUserName());
|
|
|
+ stockGoodsLog.setType("销售审核驳回释放");
|
|
|
+ stockGoodsLog.setTenantId(AuthUtil.getTenantId());
|
|
|
+ stockGoodsLog.setCreateUser(AuthUtil.getUserId());
|
|
|
+ stockGoodsLog.setCreateTime(date);
|
|
|
// 开始锁定库存,减少可用
|
|
|
StockGoods oneStock = stockGoodsList.stream().filter(s ->
|
|
|
s.getGoodsId().equals(e.getItemId())
|
|
|
@@ -1692,6 +1725,13 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
// 锁定库存
|
|
|
BigDecimal lockingQuantity = oneStock.getLockingQuantity();
|
|
|
|
|
|
+
|
|
|
+ stockGoodsLog.setStockId(oneStock.getId());
|
|
|
+ stockGoodsLog.setBalanceQuantityOld(oneStock.getBalanceQuantity());
|
|
|
+ stockGoodsLog.setSurplusRouteQuantityOld(surplusRouteQuantity);
|
|
|
+ stockGoodsLog.setLockingQuantityOld(lockingQuantity);
|
|
|
+ stockGoodsLog.setOrderQuantity(orderQuantity);
|
|
|
+
|
|
|
// 判断比较大小
|
|
|
if (orderQuantity.compareTo(lockingQuantity) > 0) {
|
|
|
throw new SecurityException("驳回失败:原单据的订货数量大于锁定库存,无法释放库存");
|
|
|
@@ -1706,7 +1746,13 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
// throw new SecurityException("驳回失败: 更新库存失败");
|
|
|
throw new SecurityException(res.getMsg());
|
|
|
}
|
|
|
+ stockGoodsLog.setBalanceQuantity(oneStock.getBalanceQuantity());
|
|
|
+ stockGoodsLog.setSurplusRouteQuantity(oneStock.getSurplusRouteQuantity());
|
|
|
+ stockGoodsLog.setLockingQuantity(oneStock.getLockingQuantity());
|
|
|
+ stockGoodsLogList.add(stockGoodsLog);
|
|
|
});
|
|
|
+ stockGoodsClient.saveOrUpdateBatchListLog(stockGoodsLogList);
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
order.setStatus(0);
|
|
|
@@ -1962,8 +2008,18 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
if (CollectionUtils.isNotEmpty(orderItems)) {
|
|
|
List<StockGoods> stockGoods = new ArrayList<>();
|
|
|
StockGoods oneStock = null;
|
|
|
+ List<StockGoodsLog> stockGoodsLogList = new ArrayList<>();
|
|
|
+ Date date = new Date();
|
|
|
boolean status = ObjectUtils.isNotNull(sysClient.getParamService("inventory")) && "1".equals(sysClient.getParamService("inventory"));
|
|
|
for (OrderItems e : orderItems) {
|
|
|
+ StockGoodsLog stockGoodsLog = new StockGoodsLog();
|
|
|
+ stockGoodsLog.setTime(date);
|
|
|
+ stockGoodsLog.setSrcOrderId(order.getId());
|
|
|
+ stockGoodsLog.setUserName(AuthUtil.getUserName());
|
|
|
+ stockGoodsLog.setType("销售撤销请核释放");
|
|
|
+ stockGoodsLog.setTenantId(AuthUtil.getTenantId());
|
|
|
+ stockGoodsLog.setCreateUser(AuthUtil.getUserId());
|
|
|
+ stockGoodsLog.setCreateTime(date);
|
|
|
if (status) {
|
|
|
// 开始锁定库存,减少可用
|
|
|
oneStock = stockGoodsList.stream().filter(s ->
|
|
|
@@ -1991,6 +2047,12 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
// 锁定库存
|
|
|
BigDecimal lockingQuantity = oneStock.getLockingQuantity();
|
|
|
|
|
|
+ stockGoodsLog.setStockId(oneStock.getId());
|
|
|
+ stockGoodsLog.setBalanceQuantityOld(oneStock.getBalanceQuantity());
|
|
|
+ stockGoodsLog.setSurplusRouteQuantityOld(surplusRouteQuantity);
|
|
|
+ stockGoodsLog.setLockingQuantityOld(lockingQuantity);
|
|
|
+ stockGoodsLog.setOrderQuantity(orderQuantity);
|
|
|
+
|
|
|
// 判断比较大小
|
|
|
if (orderQuantity.compareTo(lockingQuantity) > 0) {
|
|
|
throw new SecurityException("撤销失败:原单据的" + oneStock.getCode() + "订货数量:" + orderQuantity + "大于锁定库存:" + lockingQuantity + ",无法释放 库存");
|
|
|
@@ -2001,6 +2063,11 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
oneStock.setLockingQuantity(lockingQuantity == null ? new BigDecimal("0") : lockingQuantity.subtract(orderQuantity));
|
|
|
oneStock.setVersion(oneStock.getVersion());
|
|
|
stockGoods.add(oneStock);
|
|
|
+
|
|
|
+ stockGoodsLog.setBalanceQuantity(oneStock.getBalanceQuantity());
|
|
|
+ stockGoodsLog.setSurplusRouteQuantity(oneStock.getSurplusRouteQuantity());
|
|
|
+ stockGoodsLog.setLockingQuantity(oneStock.getLockingQuantity());
|
|
|
+ stockGoodsLogList.add(stockGoodsLog);
|
|
|
}
|
|
|
// 更新库存
|
|
|
R r = stockGoodsClient.updateStockList(stockGoods);
|
|
|
@@ -2008,6 +2075,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
// throw new SecurityException("撤销失败:" + order.getOrderNo() + "更新库存失败");
|
|
|
throw new SecurityException(r.getMsg());
|
|
|
}
|
|
|
+
|
|
|
+ stockGoodsClient.saveOrUpdateBatchListLog(stockGoodsLogList);
|
|
|
}
|
|
|
}
|
|
|
order.setStatus(0);
|