|
|
@@ -1,12 +1,14 @@
|
|
|
package com.trade.purchase.office.service.impl;
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.trade.purchase.office.entity.Stock;
|
|
|
import com.trade.purchase.office.mapper.StockMapper;
|
|
|
import com.trade.purchase.office.service.IOfficeOrderService;
|
|
|
+import com.trade.purchase.office.vo.StockVO;
|
|
|
import com.trade.purchase.order.entity.Order;
|
|
|
import com.trade.purchase.order.entity.OrderItems;
|
|
|
import com.trade.purchase.order.mapper.OrderItemsMapper;
|
|
|
@@ -28,6 +30,7 @@ import org.springblade.core.secure.utils.AuthUtil;
|
|
|
import org.springblade.core.tool.api.R;
|
|
|
import org.springblade.core.tool.utils.BeanUtil;
|
|
|
import org.springblade.core.tool.utils.ObjectUtil;
|
|
|
+import org.springblade.core.tool.utils.StringUtil;
|
|
|
import org.springblade.system.entity.Dept;
|
|
|
import org.springblade.system.feign.ISysClient;
|
|
|
import org.springblade.system.user.entity.User;
|
|
|
@@ -37,7 +40,6 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.transaction.interceptor.TransactionAspectSupport;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
-import java.math.RoundingMode;
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
|
|
|
@@ -96,8 +98,20 @@ public class OfficeOrderServiceImpl extends ServiceImpl<OrderMapper, Order> impl
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public IPage<OrderVO> getList(Order order, Query query) {
|
|
|
- IPage<Order> orderPages = baseMapper.selectPage(Condition.getPage(query), Condition.getQueryWrapper(order));
|
|
|
+ public IPage<OrderVO> getList(OrderVO orderVO, Query query) {
|
|
|
+ LambdaQueryWrapper<Order> orderQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ orderQueryWrapper.eq(StringUtil.isNotBlank(orderVO.getTradeType()), Order::getTradeType, orderVO.getTradeType())
|
|
|
+ .eq(ObjectUtil.isNotEmpty(orderVO.getApplyUser()), Order::getApplyUser, orderVO.getApplyUser())
|
|
|
+ .eq(ObjectUtil.isNotEmpty(orderVO.getStockUser()), Order::getStockUser, orderVO.getStockUser())
|
|
|
+ .between(StringUtil.isNotBlank(orderVO.getBeginApplyTime()) && StringUtil.isNotBlank(orderVO.getEndApplyTime()),
|
|
|
+ Order::getApplyTime, orderVO.getBeginApplyTime(), orderVO.getEndApplyTime())
|
|
|
+ .between(StringUtil.isNotBlank(orderVO.getBeginStockTime()) && StringUtil.isNotBlank(orderVO.getEndStockTime()),
|
|
|
+ Order::getStockTime, orderVO.getBeginStockTime(), orderVO.getEndStockTime())
|
|
|
+ .like(StringUtil.isNotBlank(orderVO.getSysNo()), Order::getSysNo, orderVO.getSysNo())
|
|
|
+ .eq(Order::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(Order::getIsDeleted, 0);
|
|
|
+
|
|
|
+ IPage<Order> orderPages = baseMapper.selectPage(Condition.getPage(query), orderQueryWrapper);
|
|
|
IPage<OrderVO> pages = Condition.getPage(query);
|
|
|
List<OrderVO> records = BeanUtil.copy(orderPages.getRecords(), OrderVO.class);
|
|
|
records.forEach(record -> {
|
|
|
@@ -179,31 +193,18 @@ public class OfficeOrderServiceImpl extends ServiceImpl<OrderMapper, Order> impl
|
|
|
item.setUpdateTime(new Date());
|
|
|
orderItemsMapper.updateById(item);
|
|
|
|
|
|
- Stock stock = stockMapper.selectOne(new LambdaQueryWrapper<Stock>()
|
|
|
- .eq(Stock::getGoodsId, item.getItemId())
|
|
|
- .eq(Stock::getTenantId, AuthUtil.getTenantId())
|
|
|
- .eq(Stock::getIsDeleted, 0)
|
|
|
- );
|
|
|
- if (ObjectUtil.isEmpty(stock)) {
|
|
|
- Stock stockTemp = new Stock();
|
|
|
- stockTemp.setStorageId(item.getStorageId());
|
|
|
- stockTemp.setGoodsId(item.getItemId());
|
|
|
- stockTemp.setInQuantity(item.getOrderQuantity());
|
|
|
- stockTemp.setBalanceQuantity(item.getOrderQuantity());
|
|
|
- stockTemp.setUnitPrice(item.getPrice());
|
|
|
- stockTemp.setAmount(item.getAmount());
|
|
|
- stockTemp.setTradeType("BGYP");
|
|
|
- stockTemp.setTenantId(AuthUtil.getTenantId());
|
|
|
- stockTemp.setInDate(new Date());
|
|
|
- stockTemp.setCreateUser(AuthUtil.getUserId());
|
|
|
- stockTemp.setCreateTime(new Date());
|
|
|
- stockMapper.insert(stockTemp);
|
|
|
- } else {
|
|
|
- stock.setInQuantity(stock.getInQuantity().add(item.getOrderQuantity()));
|
|
|
- stock.setAmount(stock.getAmount().add(item.getAmount()));
|
|
|
- stock.setUnitPrice(stock.getAmount().divide(stock.getInQuantity(), RoundingMode.HALF_UP));
|
|
|
- stockMapper.updateById(stock);
|
|
|
- }
|
|
|
+ Stock stock = new Stock();
|
|
|
+ stock.setSrcId(orderItem.getId());
|
|
|
+ stock.setStorageId(item.getStorageId());
|
|
|
+ stock.setGoodsId(item.getItemId());
|
|
|
+ stock.setInQuantity(item.getOrderQuantity());
|
|
|
+ stock.setInAmount(item.getAmount());
|
|
|
+ stock.setTradeType("BGYP");
|
|
|
+ stock.setTenantId(AuthUtil.getTenantId());
|
|
|
+ stock.setInDate(new Date());
|
|
|
+ stock.setCreateUser(AuthUtil.getUserId());
|
|
|
+ stock.setCreateTime(new Date());
|
|
|
+ stockMapper.insert(stock);
|
|
|
});
|
|
|
return true;
|
|
|
}
|
|
|
@@ -224,28 +225,24 @@ public class OfficeOrderServiceImpl extends ServiceImpl<OrderMapper, Order> impl
|
|
|
item.setUpdateTime(new Date());
|
|
|
orderItemsMapper.updateById(item);
|
|
|
|
|
|
- Stock stock = stockMapper.selectOne(new LambdaQueryWrapper<Stock>()
|
|
|
- .eq(Stock::getGoodsId, item.getItemId())
|
|
|
- .eq(Stock::getTenantId, AuthUtil.getTenantId())
|
|
|
- .eq(Stock::getIsDeleted, 0)
|
|
|
- );
|
|
|
+ StockVO tempVO = new StockVO();
|
|
|
+ tempVO.setStorageId(item.getStorageId());
|
|
|
+ tempVO.setGoodsId(item.getItemId());
|
|
|
+ tempVO.setTenantId(AuthUtil.getTenantId());
|
|
|
+ StockVO stockVO = stockMapper.selectStock(tempVO);
|
|
|
|
|
|
- BigDecimal balanceQuantity = stock.getBalanceQuantity();
|
|
|
+ BigDecimal balanceQuantity = stockVO.getBalanceQuantity();
|
|
|
if (balanceQuantity.compareTo(item.getOrderQuantity()) < 0) {
|
|
|
throw new SecurityException("库存结余数量不足,禁止撤销");
|
|
|
}
|
|
|
|
|
|
- BigDecimal inQuantity = stock.getInQuantity().subtract(item.getOrderQuantity());
|
|
|
-
|
|
|
- if (inQuantity.compareTo(BigDecimal.ZERO) > 0) {
|
|
|
- stock.setInQuantity(inQuantity);
|
|
|
- stock.setBalanceQuantity(balanceQuantity.subtract(item.getOrderQuantity()));
|
|
|
- stock.setAmount(stock.getAmount().add(item.getAmount()));
|
|
|
- stock.setUnitPrice(stock.getAmount().divide(stock.getInQuantity(), RoundingMode.HALF_UP));
|
|
|
- stockMapper.updateById(stock);
|
|
|
- } else {
|
|
|
- stockMapper.deleteById(stock.getId());
|
|
|
- }
|
|
|
+ Stock stock = new Stock();
|
|
|
+ stock.setUpdateUser(AuthUtil.getUserId());
|
|
|
+ stock.setUpdateTime(new Date());
|
|
|
+ stock.setIsDeleted(1);
|
|
|
+ stockMapper.update(stock, new LambdaUpdateWrapper<Stock>()
|
|
|
+ .eq(Stock::getSrcId, item.getId())
|
|
|
+ );
|
|
|
});
|
|
|
return true;
|
|
|
}
|
|
|
@@ -346,15 +343,18 @@ public class OfficeOrderServiceImpl extends ServiceImpl<OrderMapper, Order> impl
|
|
|
}
|
|
|
if ("OLY".equals(order.getTradeType())) {
|
|
|
itemList.forEach(item -> {
|
|
|
- Stock stock = stockMapper.selectOne(new LambdaQueryWrapper<Stock>()
|
|
|
- .eq(Stock::getGoodsId, item.getItemId())
|
|
|
- .eq(Stock::getTenantId, AuthUtil.getTenantId())
|
|
|
- .eq(Stock::getIsDeleted, 0)
|
|
|
- );
|
|
|
-
|
|
|
- stock.setOutQuantity(stock.getOutQuantity().add(item.getOrderQuantity()));
|
|
|
- stock.setBalanceQuantity(stock.getInQuantity().subtract(stock.getOutQuantity()));
|
|
|
- stockMapper.updateById(stock);
|
|
|
+ Stock stock = new Stock();
|
|
|
+ stock.setSrcId(item.getId());
|
|
|
+ stock.setStorageId(item.getStorageId());
|
|
|
+ stock.setGoodsId(item.getItemId());
|
|
|
+ stock.setOutQuantity(item.getOrderQuantity());
|
|
|
+ stock.setOutAmount(item.getAmount());
|
|
|
+ stock.setTradeType("BGYP");
|
|
|
+ stock.setTenantId(AuthUtil.getTenantId());
|
|
|
+ stock.setInDate(new Date());
|
|
|
+ stock.setCreateUser(AuthUtil.getUserId());
|
|
|
+ stock.setCreateTime(new Date());
|
|
|
+ stockMapper.insert(stock);
|
|
|
});
|
|
|
}
|
|
|
}
|