|
|
@@ -16,6 +16,7 @@
|
|
|
*/
|
|
|
package org.springblade.deliver.goods.service.impl;
|
|
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
|
|
@@ -39,6 +40,7 @@ import org.springblade.deliver.goods.entity.DeliveryItems;
|
|
|
import org.springblade.deliver.goods.enums.DeliveryEnum;
|
|
|
import org.springblade.deliver.goods.enums.DeliveryStatusEnum;
|
|
|
import org.springblade.deliver.goods.mapper.DeliveryItemsMapper;
|
|
|
+import org.springblade.deliver.goods.service.IDeliveryFeesService;
|
|
|
import org.springblade.deliver.goods.service.IDeliveryItemsService;
|
|
|
import org.springblade.deliver.goods.vo.*;
|
|
|
import org.springblade.finance.feign.IFinanceClient;
|
|
|
@@ -50,6 +52,7 @@ import org.springblade.mocha.enums.OverpaymentEnum;
|
|
|
import org.springblade.mocha.feign.IBusinessOverpaymentClient;
|
|
|
import org.springblade.mocha.feign.IBusinessPointsClient;
|
|
|
import org.springblade.purchase.sales.entity.Order;
|
|
|
+import org.springblade.purchase.sales.entity.OrderFees;
|
|
|
import org.springblade.purchase.sales.entity.OrderItems;
|
|
|
import org.springblade.purchase.sales.feign.IOrderDescClient;
|
|
|
import org.springblade.purchase.sales.feign.IOrderItemsClient;
|
|
|
@@ -70,6 +73,7 @@ import java.math.RoundingMode;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
+import java.util.Objects;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
@@ -96,6 +100,7 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
|
|
|
private final RedisTemplate<String, Object> redisTemplate;
|
|
|
private final IRedisClient redisClient;//redis缓存处理
|
|
|
private final ISysClient sysClient;//消息
|
|
|
+ private final IDeliveryFeesService deliveryFeesService;
|
|
|
|
|
|
@Override
|
|
|
public IPage<DeliveryItemsVO> selectDeliveryItemsPage(IPage<DeliveryItemsVO> page, DeliveryItemsVO deliveryItems) {
|
|
|
@@ -220,7 +225,8 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
|
|
|
|
|
|
//从缓存中获得库存
|
|
|
// redisClient.basicData("all");
|
|
|
- List<StockGoods> stockGoodsList = stockGoodsClient.selectStockGoodsAll();;
|
|
|
+ List<StockGoods> stockGoodsList = stockGoodsClient.selectStockGoodsAll();
|
|
|
+ ;
|
|
|
|
|
|
if (CollectionUtils.isNotEmpty(collect)) {
|
|
|
List<DeliveryItems> deliveryItemsList1 = new ArrayList<>();
|
|
|
@@ -335,19 +341,19 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- if (ObjectUtils.isNotNull(stockGoods)){
|
|
|
+ if (ObjectUtils.isNotNull(stockGoods)) {
|
|
|
stockGoodsList1.add(stockGoods);
|
|
|
}
|
|
|
- if (ObjectUtils.isNotNull(goods)){
|
|
|
+ if (ObjectUtils.isNotNull(goods)) {
|
|
|
stockGoodsList1.add(goods);
|
|
|
}
|
|
|
- if (ObjectUtils.isNotNull(stock)){
|
|
|
+ if (ObjectUtils.isNotNull(stock)) {
|
|
|
stockGoodsList1.add(stock);
|
|
|
}
|
|
|
deliveryItemsList1.add(deliveryItems);
|
|
|
// baseMapper.updateById(deliveryItems);
|
|
|
}
|
|
|
- if (stockGoodsList1.size()>0){
|
|
|
+ if (stockGoodsList1.size() > 0) {
|
|
|
R res = stockGoodsClient.saveOrUpdateBatchList(stockGoodsList1);
|
|
|
if (!res.isSuccess()) {
|
|
|
throw new SecurityException(res.getMsg());
|
|
|
@@ -458,7 +464,7 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
|
|
|
* 发货减少库存账
|
|
|
*
|
|
|
* @param tradeType 单据类型 进口、出口、国内
|
|
|
- * @param stockGoods 库存账id
|
|
|
+ * @param stockGoods 库存账id
|
|
|
* @param deliveryItems 货物明细信息
|
|
|
*/
|
|
|
public StockGoods deliverGoods(String tradeType, StockGoods stockGoods, DeliveryItems deliveryItems, Integer deliveryType) {
|
|
|
@@ -522,7 +528,7 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
|
|
|
* 撤销发货
|
|
|
*
|
|
|
* @param tradeType 单据类型 进口、出口、国内
|
|
|
- * @param stockGoods 库存账id
|
|
|
+ * @param stockGoods 库存账id
|
|
|
* @param deliveryItems 货物明细信息
|
|
|
*/
|
|
|
public StockGoods revocationDeliverGoods(String tradeType, StockGoods stockGoods, DeliveryItems deliveryItems, Integer deliveryType) {
|
|
|
@@ -582,7 +588,7 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
|
|
|
* 撤销收货
|
|
|
*
|
|
|
* @param tradeType 单据类型 进口、出口、国内
|
|
|
- * @param stockGoods 库存账id
|
|
|
+ * @param stockGoods 库存账id
|
|
|
* @param deliveryItems 货物明细信息
|
|
|
*/
|
|
|
public StockGoods cancelStock(String tradeType, StockGoods stockGoods, DeliveryItems deliveryItems) {
|
|
|
@@ -591,9 +597,9 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
|
|
|
throw new RuntimeException("库存账不存在");
|
|
|
}
|
|
|
BigDecimal actualQuantity = new BigDecimal("0.00");
|
|
|
- if ("681169".equals(AuthUtil.getTenantId())){
|
|
|
+ if ("681169".equals(AuthUtil.getTenantId())) {
|
|
|
actualQuantity = deliveryItems.getActualQuantity() == null ? new BigDecimal("0") : deliveryItems.getArrivalQuantity();
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
actualQuantity = deliveryItems.getActualQuantity() == null ? new BigDecimal("0") : deliveryItems.getActualQuantity();
|
|
|
}
|
|
|
BigDecimal invoiceWeight = deliveryItems.getInvoiceWeight() == null ? new BigDecimal("0") : deliveryItems.getInvoiceWeight();
|
|
|
@@ -648,7 +654,7 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
|
|
|
* 收货单新增库存账
|
|
|
*
|
|
|
* @param tradeType 单据类型 进口、出口、国内
|
|
|
- * @param stockGoods 库存账
|
|
|
+ * @param stockGoods 库存账
|
|
|
* @param deliveryItems 货物明细信息
|
|
|
*/
|
|
|
public StockGoods receiving(String tradeType, StockGoods stockGoods, DeliveryItems deliveryItems) {
|
|
|
@@ -691,7 +697,7 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
|
|
|
stockGoods.setStockPrice(new BigDecimal("0.00"));
|
|
|
}
|
|
|
}
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
if ("681169".equals(AuthUtil.getTenantId())) {
|
|
|
stockGoods.setBalanceQuantity(stockGoods.getBalanceQuantity().subtract(deliveryItems.getArrivalQuantity()));//结余数量
|
|
|
stockGoods.setSurplusRouteQuantity(stockGoods.getBalanceQuantity().subtract(stockGoods.getLockingQuantity()));//可用数量
|
|
|
@@ -784,7 +790,7 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
|
|
|
} else {
|
|
|
stockGoods.setBalanceAmount(deliveryItems.getDeliveryAmount());
|
|
|
}
|
|
|
- if (stockGoods.getBalanceAmount().compareTo(new BigDecimal("0.00")) > 0 &&
|
|
|
+ if (stockGoods.getBalanceAmount().compareTo(new BigDecimal("0.00")) > 0 &&
|
|
|
stockGoods.getBalanceQuantity().compareTo(new BigDecimal("0.00")) > 0) {
|
|
|
stockGoods.setStockPrice(stockGoods.getBalanceAmount().divide(stockGoods.getBalanceQuantity(), MathContext.DECIMAL32));
|
|
|
} else {
|
|
|
@@ -943,11 +949,36 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
|
|
|
//对发货明细数据进行筛选 发货数量减去到货数量大于0 的
|
|
|
List<DeliveryItems> collect = list.stream().filter(e -> (e.getActualQuantity().subtract(e.getArrivalQuantity())).compareTo(BigDecimal.ZERO) > 0).collect(Collectors.toList());
|
|
|
if (CollectionUtils.isNotEmpty(collect)) {
|
|
|
+ List<BusinessOverpaymentItem> businessOverpaymentItemList = new ArrayList<>();
|
|
|
+ BigDecimal packageAmount = new BigDecimal("0.00");
|
|
|
+ List<OrderFees> orderFees = orderDescClient.getOrderFee(delivery.getSrcId());
|
|
|
+ if (ObjectUtils.isNotNull(orderFees) && orderFees.size() > 0) {
|
|
|
+ List<DeliveryFees> deliveryFees = deliveryFeesService.list(new LambdaQueryWrapper<DeliveryFees>()
|
|
|
+ .eq(DeliveryFees::getPid, delivery.getId())
|
|
|
+ .eq(DeliveryFees::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(DeliveryFees::getIsDeleted, 0));
|
|
|
+ if (ObjectUtils.isNotNull(deliveryFees) && deliveryFees.size() > 0) {
|
|
|
+ BigDecimal orderFeesAmount = orderFees.stream().map(OrderFees::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ BigDecimal deliveryFeesAmount = deliveryFees.stream().map(DeliveryFees::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ packageAmount = orderFeesAmount.subtract(deliveryFeesAmount);
|
|
|
+ }
|
|
|
+ if (new BigDecimal("0.00").compareTo(packageAmount) != 0){
|
|
|
+ BusinessOverpaymentItem overpaymentItem = new BusinessOverpaymentItem();
|
|
|
+ overpaymentItem.setBillNo(delivery.getSrcOrderNo());
|
|
|
+ overpaymentItem.setSrcOrderNo(delivery.getSysNo());
|
|
|
+ overpaymentItem.setOrderNo(delivery.getSysNo());
|
|
|
+ overpaymentItem.setSrcPid(delivery.getId());
|
|
|
+ overpaymentItem.setSrcId(delivery.getId());
|
|
|
+ overpaymentItem.setOverpayment(packageAmount);
|
|
|
+ businessOverpaymentItemList.add(overpaymentItem);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
//获取溢付款金额 溢付款金额等于发货数量-到货数量的值 乘以单价 等于溢付款
|
|
|
amount = collect.stream().filter(e -> e.getPrice() != null).reduce(BigDecimal.ZERO, (x, y) -> {
|
|
|
return x.add((y.getActualQuantity().subtract(y.getArrivalQuantity())).multiply(y.getPrice()));
|
|
|
}, BigDecimal::add);
|
|
|
- List<BusinessOverpaymentItem> businessOverpaymentItemList = new ArrayList<>();
|
|
|
+
|
|
|
collect.stream().forEach(item -> {
|
|
|
BusinessOverpaymentItem overpaymentItem = new BusinessOverpaymentItem();
|
|
|
overpaymentItem.setBillNo(delivery.getSrcOrderNo());
|
|
|
@@ -1003,7 +1034,7 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
|
|
|
throw new RuntimeException("更新库存总账失败");
|
|
|
}*/
|
|
|
R res = stockGoodsClient.updateStock(stock);
|
|
|
- if (!res.isSuccess()){
|
|
|
+ if (!res.isSuccess()) {
|
|
|
throw new RuntimeException(res.getMsg());
|
|
|
}
|
|
|
//新仓库添加库存
|
|
|
@@ -1023,7 +1054,7 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
|
|
|
throw new RuntimeException("更新库存总账失败");
|
|
|
}*/
|
|
|
R ress = stockGoodsClient.updateStock(serviceStock);
|
|
|
- if (!ress.isSuccess()){
|
|
|
+ if (!ress.isSuccess()) {
|
|
|
throw new RuntimeException(ress.getMsg());
|
|
|
}
|
|
|
}
|
|
|
@@ -1053,7 +1084,7 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
|
|
|
throw new RuntimeException("更新库存总账失败");
|
|
|
}*/
|
|
|
R res = stockGoodsClient.updateStock(serviceStock);
|
|
|
- if (!res.isSuccess()){
|
|
|
+ if (!res.isSuccess()) {
|
|
|
throw new RuntimeException(res.getMsg());
|
|
|
}
|
|
|
}
|
|
|
@@ -1069,7 +1100,7 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
|
|
|
throw new RuntimeException("更新库存总账失败");
|
|
|
}*/
|
|
|
R res = stockGoodsClient.updateStock(stock);
|
|
|
- if (!res.isSuccess()){
|
|
|
+ if (!res.isSuccess()) {
|
|
|
throw new RuntimeException(res.getMsg());
|
|
|
}
|
|
|
}
|