|
|
@@ -36,6 +36,7 @@ import org.springblade.deliver.goods.vo.DeliveryItemsVO;
|
|
|
import org.springblade.deliver.goods.mapper.DeliveryItemsMapper;
|
|
|
import org.springblade.deliver.goods.service.IDeliveryItemsService;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import org.springblade.finance.feign.IFinanceClient;
|
|
|
import org.springblade.purchase.sales.entity.Order;
|
|
|
import org.springblade.purchase.sales.entity.OrderItems;
|
|
|
import org.springblade.purchase.sales.feign.IOrderDescClient;
|
|
|
@@ -67,6 +68,7 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
|
|
|
private IStockGoodsClient stockGoodsClient;//查询库存账对外访问接口
|
|
|
private IOrderItemsClient orderItemsClient;//订单对外访问接口
|
|
|
private IOrderDescClient orderDescClient;//订单
|
|
|
+ private final IFinanceClient financeClient;
|
|
|
@Override
|
|
|
public IPage<DeliveryItemsVO> selectDeliveryItemsPage(IPage<DeliveryItemsVO> page, DeliveryItemsVO deliveryItems) {
|
|
|
return page.setRecords(baseMapper.selectDeliveryItemsPage(page, deliveryItems));
|
|
|
@@ -131,7 +133,10 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
|
|
|
*/
|
|
|
public List<DeliveryItems> affirmDeliveryItemsList(Long pId,Delivery delivery,List<DeliveryItems> deliveryItemsList){
|
|
|
//判断要发货物的金额和已收金额的大小
|
|
|
-
|
|
|
+ /*R amount = this.deliveryAmount(deliveryItemsList, delivery.getTradeType());
|
|
|
+ if (!amount.isSuccess()){
|
|
|
+ throw new RuntimeException(amount.getMsg());
|
|
|
+ }*/
|
|
|
for (DeliveryItems deliveryItems : deliveryItemsList) {
|
|
|
if (deliveryItems.getItemId() == null){
|
|
|
throw new RuntimeException("发货明细中商品id不能为空");
|
|
|
@@ -473,22 +478,23 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
|
|
|
BigDecimal newDelivery = new BigDecimal(BigInteger.ZERO);//本次发货金额
|
|
|
BigDecimal oldDelivery = new BigDecimal(BigInteger.ZERO);//本次发货金额
|
|
|
BigDecimal gathering = new BigDecimal(BigInteger.ZERO);//本次发货金额
|
|
|
+ R financeAcc = financeClient.getFinanceAcc(contractNumber);
|
|
|
+ if (financeAcc.isSuccess() && financeAcc.getData() != null){
|
|
|
+ gathering = (BigDecimal) financeAcc.getData();
|
|
|
+ }else {
|
|
|
+ throw new RuntimeException("未找到收款记录");
|
|
|
+ }
|
|
|
+ //本次金额
|
|
|
+ List<DeliveryItems> itemsList = deliveryItemsList.stream().filter(e -> e.getContractNumber().equals(contractNumber)).collect(Collectors.toList());
|
|
|
+ //已收金额
|
|
|
LambdaQueryWrapper<DeliveryItems> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
lambdaQueryWrapper.eq(DeliveryItems::getContractNumber,contractNumber);
|
|
|
lambdaQueryWrapper.eq(DeliveryItems::getTenantId,SecureUtil.getTenantId());
|
|
|
lambdaQueryWrapper.eq(DeliveryItems::getIsDeleted,0);
|
|
|
lambdaQueryWrapper.eq(DeliveryItems::getDeliveryStatus, DeliveryStatusEnum.DELIVER.getType());
|
|
|
List<DeliveryItems> deliveryItems = baseMapper.selectList(lambdaQueryWrapper);
|
|
|
- if (tradeType.equals(OrderTypeEnum.DOMESTIC.getType())){
|
|
|
- newDelivery = deliveryItemsList.stream().filter(student -> Objects.equals(student.getContractNumber(),contractNumber)).map(DeliveryItems::getDeliveryAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- oldDelivery = deliveryItems.stream().map(DeliveryItems::getDeliveryAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- }else if (tradeType.equals(OrderTypeEnum.IMPORT.getType())){
|
|
|
- newDelivery = deliveryItemsList.stream().filter(student -> Objects.equals(student.getContractNumber(),contractNumber)).map(DeliveryItems::getContractAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- oldDelivery = deliveryItems.stream().map(DeliveryItems::getContractAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- }else {
|
|
|
- newDelivery = deliveryItemsList.stream().filter(student -> Objects.equals(student.getContractNumber(),contractNumber)).map(DeliveryItems::getContractAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- oldDelivery = deliveryItems.stream().map(DeliveryItems::getContractAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- }
|
|
|
+ newDelivery = itemsList.stream().reduce(BigDecimal.ZERO,(x,y) ->{ return x.add(y.getContractAmount().multiply(y.getExRate())); },BigDecimal::add);//本次发货金额
|
|
|
+ oldDelivery = deliveryItems.stream().reduce(BigDecimal.ZERO,(x,y) ->{ return x.add(y.getContractAmount().multiply(y.getExRate())); },BigDecimal::add);//历史发货金额
|
|
|
if (gathering.compareTo((newDelivery.add(oldDelivery))) < 0){
|
|
|
throw new RuntimeException("订单"+contractNumber+"可发货金额为:"+gathering.subtract(newDelivery.add(oldDelivery)));
|
|
|
}
|