|
|
@@ -529,6 +529,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
}
|
|
|
order.setDebitAmount(order.getOrderAmount());
|
|
|
order.setBalanceAmount(order.getOrderAmount());
|
|
|
+ order.setPurchaseAmount(order.getOrderAmount());
|
|
|
baseMapper.updateById(order);
|
|
|
return R.data(order);
|
|
|
}
|
|
|
@@ -2256,6 +2257,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
settlement.setSettlementDate(new Date());
|
|
|
settlement.setAccount(order.getAccount());
|
|
|
settlement.setAmount(order.getCurrentAmount());
|
|
|
+ settlement.setOverPayment(order.getOverPayment());
|
|
|
settlementList.add(settlement);
|
|
|
order.setSettlementList(settlementList);
|
|
|
this.paymentApply(order, order.getBillType(), order.getTradeType());
|
|
|
@@ -2271,6 +2273,165 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
+ public IPage<Order> selectPageByCorp(IPage<Order> page, Order order) {
|
|
|
+ return page.setRecords(baseMapper.selectPageByCorp(page, order));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public R quickBilling(Order order) {
|
|
|
+ // 校验单号重复-新增
|
|
|
+ if (order.getId() == null && StringUtils.isNotBlank(order.getOrderNo())) {
|
|
|
+ LambdaQueryWrapper<Order> orderLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ orderLambdaQueryWrapper
|
|
|
+ .eq(Order::getOrderNo, order.getOrderNo())
|
|
|
+ .eq(Order::getTradeType, order.getTradeType())
|
|
|
+ .eq(Order::getBillType, order.getBillType())
|
|
|
+ .eq(Order::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(Order::getIsDeleted, 0);
|
|
|
+ Integer count = baseMapper.selectCount(orderLambdaQueryWrapper);
|
|
|
+ if (count != null && count > 0) {
|
|
|
+ throw new SecurityException("合同号:" + order.getOrderNo() + "已存在,禁止重复添加");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 校验单号重复-编辑
|
|
|
+ else {
|
|
|
+ LambdaQueryWrapper<Order> orderLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ orderLambdaQueryWrapper
|
|
|
+ .ne(Order::getId, order.getId())
|
|
|
+ .eq(Order::getOrderNo, order.getOrderNo())
|
|
|
+ .eq(Order::getTradeType, order.getTradeType())
|
|
|
+ .eq(Order::getBillType, order.getBillType())
|
|
|
+ .eq(Order::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(Order::getIsDeleted, 0);
|
|
|
+ Integer count = baseMapper.selectCount(orderLambdaQueryWrapper);
|
|
|
+ if (count != null && count > 0) {
|
|
|
+ throw new SecurityException("合同号:" + order.getOrderNo() + "已存在,禁止重复添加");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 订单时间
|
|
|
+ Date date = new Date();
|
|
|
+ // 保存订单主表信息
|
|
|
+ if (order.getId() == null) {
|
|
|
+ // 获取系统编号
|
|
|
+ R billNo = serialClient.getBillNo(order.getBillType(), order.getTradeType(), order.getBillType());
|
|
|
+ if (billNo.getCode() != 200) {
|
|
|
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
|
+ return R.fail(500, "生成系统编号失败");
|
|
|
+ }
|
|
|
+ order.setSysNo((String) billNo.getData());
|
|
|
+ R clientBillNo = serialClient.getBillNo(order.getBillType(), order.getTradeType(), order.getBillType());
|
|
|
+ if (!clientBillNo.isSuccess()) {
|
|
|
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
|
+ return R.fail(500, "生成订单编号失败");
|
|
|
+ }
|
|
|
+ order.setOrderNo((String) clientBillNo.getData());
|
|
|
+ // 进口的orgOrderNo 存的是采购订单号 出口国内存的是本身的订单号码
|
|
|
+ if (!order.getBillType().equals(OrderTypeEnum.IMPORT.getType())) {
|
|
|
+ order.setOrgOrderNo((String) clientBillNo.getData());
|
|
|
+ }
|
|
|
+
|
|
|
+ order.setTenantId(SecureUtil.getTenantId());
|
|
|
+ order.setCreateTime(date);
|
|
|
+ order.setCreateUser(SecureUtil.getUserId());
|
|
|
+ if (order.getBusinesDate() == null) {
|
|
|
+ order.setBusinesDate(date);
|
|
|
+ }
|
|
|
+ baseMapper.insert(order);
|
|
|
+ } else {
|
|
|
+ LambdaQueryWrapper<Order> orderLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ orderLambdaQueryWrapper
|
|
|
+ .eq(Order::getId, order.getId())
|
|
|
+ .eq(Order::getCorpId, order.getCorpId())
|
|
|
+ .eq(Order::getTradeType, order.getTradeType())
|
|
|
+ .eq(Order::getBillType, order.getBillType())
|
|
|
+ .eq(Order::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(Order::getIsDeleted, 0);
|
|
|
+ Integer count = baseMapper.selectCount(orderLambdaQueryWrapper);
|
|
|
+ if (count <= 0) {
|
|
|
+ R clientBillNo = serialClient.getBillNo(order.getBillType(), order.getTradeType(), order.getBillType());
|
|
|
+ if (!clientBillNo.isSuccess()) {
|
|
|
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
|
+ return R.fail(500, "生成订单编号失败");
|
|
|
+ }
|
|
|
+ order.setOrderNo((String) clientBillNo.getData());
|
|
|
+ // 进口的orgOrderNo 存的是采购订单号 出口国内存的是本身的订单号码
|
|
|
+ if (!order.getBillType().equals(OrderTypeEnum.IMPORT.getType())) {
|
|
|
+ order.setOrgOrderNo((String) clientBillNo.getData());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ order.setTenantId(SecureUtil.getTenantId());
|
|
|
+ order.setUpdateTime(date);
|
|
|
+ order.setUpdateUser(SecureUtil.getUserId());
|
|
|
+ baseMapper.updateById(order);
|
|
|
+ }
|
|
|
+ if (ObjectUtils.isNotNull(order.getCorpId())) {
|
|
|
+ CorpsDesc corpsDesc = corpsDescClient.getCorpId(order.getCorpId());
|
|
|
+ if (ObjectUtils.isNotNull(corpsDesc)) {
|
|
|
+ if (ObjectUtils.isNotNull(corpsDesc.getCorpsAddrList()) && corpsDesc.getCorpsAddrList().size() > 0) {
|
|
|
+ order.setArrivalAddress(corpsDesc.getCorpsAddrList().get(0).getDetailedAddress());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 保存订单明细
|
|
|
+ if (CollectionUtils.isNotEmpty(order.getOrderItemsList())) {
|
|
|
+ for (OrderItems orderItems : order.getOrderItemsList()) {
|
|
|
+ orderItems.setAmount(orderItems.getStorageInQuantity().multiply(orderItems.getPrice(), MathContext.DECIMAL32));
|
|
|
+ BigDecimal stockPrice = new BigDecimal("0.00");
|
|
|
+ BigDecimal surplusRouteQuantity = new BigDecimal("0.00");
|
|
|
+ BigDecimal balanceQuantity = new BigDecimal("0.00");
|
|
|
+ BigDecimal balanceAmount = new BigDecimal("0.00");
|
|
|
+ //获取本商品库存
|
|
|
+ R<StockGoodsVO> r = stockGoodsClient.selectStock(null, orderItems.getStorageId(), orderItems.getItemId(), null, null, null, null, null, null);
|
|
|
+ if (r.isSuccess() && ObjectUtils.isNotNull(r.getData())) {
|
|
|
+ if ("XS".equals(order.getBillType())) {
|
|
|
+ surplusRouteQuantity = surplusRouteQuantity.add(r.getData().getSurplusRouteQuantity().subtract(orderItems.getStorageInQuantity()));
|
|
|
+ balanceQuantity = balanceQuantity.add(surplusRouteQuantity);
|
|
|
+ balanceAmount = balanceAmount.add(balanceQuantity.multiply(orderItems.getPrice(), MathContext.DECIMAL32));
|
|
|
+ stockPrice = stockPrice.add(balanceAmount.divide(balanceQuantity), MathContext.DECIMAL32);
|
|
|
+ r.getData().setOutQuantity(r.getData().getOutQuantity().add(orderItems.getStorageInQuantity()));
|
|
|
+ r.getData().setOutAmount(r.getData().getOutAmount().add(orderItems.getAmount()));
|
|
|
+ } else {
|
|
|
+ surplusRouteQuantity = surplusRouteQuantity.add(r.getData().getSurplusRouteQuantity().add(orderItems.getStorageInQuantity()));
|
|
|
+ balanceQuantity = balanceQuantity.add(surplusRouteQuantity);
|
|
|
+ balanceAmount = balanceAmount.add(balanceQuantity.multiply(orderItems.getPrice(), MathContext.DECIMAL32));
|
|
|
+ stockPrice = stockPrice.add(balanceAmount.divide(balanceQuantity), MathContext.DECIMAL32);
|
|
|
+ r.getData().setInQuantity(r.getData().getInQuantity().add(orderItems.getStorageInQuantity()));
|
|
|
+ r.getData().setInAmount(r.getData().getInAmount().add(orderItems.getAmount()));
|
|
|
+ }
|
|
|
+ r.getData().setSurplusRouteQuantity(surplusRouteQuantity);
|
|
|
+ r.getData().setBalanceQuantity(balanceQuantity);
|
|
|
+ r.getData().setBalanceAmount(balanceAmount);
|
|
|
+ r.getData().setStockPrice(stockPrice);
|
|
|
+ stockGoodsClient.updateStock(r.getData());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ List<OrderItems> orderItemsList = orderItemsService.saveOrderItemsMessage(order.getOrderItemsList(), date, order.getId());
|
|
|
+ order.setOrderItemsList(orderItemsList);
|
|
|
+ //应收账款
|
|
|
+ order.setDebitAmount(order.getOrderAmount());
|
|
|
+ //入库出库金额
|
|
|
+ order.setStorageAmount(orderItemsList.stream().map(OrderItems::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ //入库出库数量
|
|
|
+ order.setStorageQuantity(orderItemsList.stream().map(OrderItems::getStorageInQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ }
|
|
|
+ if (ObjectUtils.isNull(order.getThisUsedProfit())){
|
|
|
+ order.setThisUsedProfit(new BigDecimal("0"));
|
|
|
+ }
|
|
|
+ if (ObjectUtils.isNull(order.getOrderAmount())){
|
|
|
+ order.setOrderAmount(order.getStorageAmount().subtract(order.getThisUsedProfit()));
|
|
|
+ }
|
|
|
+ order.setConfirmStatus(1);
|
|
|
+ this.paymentApply(order, order.getBillType(), order.getTradeType());
|
|
|
+ order.setDebitAmount(order.getOrderAmount());
|
|
|
+ order.setBalanceAmount(order.getOrderAmount());
|
|
|
+ order.setPurchaseAmount(order.getOrderAmount());
|
|
|
+
|
|
|
+ order.setSettlmentAmount(order.getOrderAmount().subtract(order.getOrderAmount()));
|
|
|
+ baseMapper.updateById(order);
|
|
|
+ return R.data(order);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
public MonthSales monthSales(OrderVO order) {
|
|
|
MonthSales monthSales = new MonthSales();
|
|
|
if (AuthUtil.getTenantId().equals("673511")) {
|