|
|
@@ -43,6 +43,9 @@ import org.springblade.deliver.goods.vo.DeliveryVO;
|
|
|
import org.springblade.deliver.goods.mapper.DeliveryMapper;
|
|
|
import org.springblade.deliver.goods.service.IDeliveryService;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import org.springblade.mocha.entity.BusinessOverpaymentItem;
|
|
|
+import org.springblade.mocha.entity.Overpayment;
|
|
|
+import org.springblade.mocha.feign.IBusinessOverpaymentClient;
|
|
|
import org.springblade.purchase.sales.entity.Order;
|
|
|
import org.springblade.purchase.sales.feign.IOrderDescClient;
|
|
|
import org.springblade.purchase.sales.feign.IOrderItemsClient;
|
|
|
@@ -78,6 +81,7 @@ public class DeliveryServiceImpl extends ServiceImpl<DeliveryMapper, Delivery> i
|
|
|
private IStorageClient iStorageClient;//库区信息
|
|
|
private ICorpsProfitChangeClient corpsProfitChangeClient;
|
|
|
private IOrderDescClient orderDescClient;
|
|
|
+ private IBusinessOverpaymentClient iBusinessOverpaymentClient;
|
|
|
|
|
|
private final DeliveryItemsServiceImpl iDeliveryItemsService;
|
|
|
|
|
|
@@ -342,90 +346,135 @@ public class DeliveryServiceImpl extends ServiceImpl<DeliveryMapper, Delivery> i
|
|
|
}
|
|
|
|
|
|
|
|
|
+ Long corpId = select.getCorpId();
|
|
|
+
|
|
|
//保存收货单主表 和 收货单明细
|
|
|
this.submitDelivery(delivery);
|
|
|
//验证收货单库存与传入库存是否一致,如果一直则修改库存
|
|
|
List<DeliveryItems> deliveryItemsList = delivery.getDeliveryItemsList();
|
|
|
- deliveryItemsList.forEach(e->{
|
|
|
- //传入库存
|
|
|
- BigDecimal inventoryNumber = e.getActualQuantity();
|
|
|
- //传入发票重量
|
|
|
- BigDecimal invoiceWeight = e.getInvoiceWeight();
|
|
|
- //实际库存有没有库存
|
|
|
- StockGoods model=new StockGoods();
|
|
|
- model.setGoodsId(e.getItemId());
|
|
|
- //不同的出口对应不同的查询条件
|
|
|
- if(delivery.getTradeType().equals("JK"))
|
|
|
- {
|
|
|
- model.setCntrNo(e.getCntrNo());//箱号
|
|
|
- model.setBillNo(e.getBillNo());//提单号
|
|
|
- /* model.setCorpId(delivery.getCorpId());*/
|
|
|
- model.setStorageId(delivery.getStorageId());//仓库
|
|
|
- model.setContractNumber(e.getContractNumber());//采购订单号
|
|
|
- model.setTradeType("JK");
|
|
|
- }
|
|
|
- else if(delivery.getTradeType().equals("CK"))
|
|
|
- {
|
|
|
- model.setTradeType("CK");
|
|
|
- model.setItemType(e.getSpecificationAndModel());
|
|
|
- }
|
|
|
- else if(delivery.getTradeType().equals("GN"))
|
|
|
- {
|
|
|
- model.setTradeType("GN");
|
|
|
- model.setCorpId(delivery.getCorpId());
|
|
|
- model.setStorageId(delivery.getStorageId());//仓库
|
|
|
- model.setItemType(e.getSpecificationAndModel());
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- throw new SecurityException("贸易类型未指定");
|
|
|
- }
|
|
|
- StockGoods stock=stockGoodsClient.getOneStock(model);
|
|
|
+ if(CollectionUtils.isNotEmpty(deliveryItemsList))
|
|
|
+ {
|
|
|
+ List<BusinessOverpaymentItem> list=new ArrayList<>();
|
|
|
+ deliveryItemsList.forEach(e->{
|
|
|
+ if(AuthUtil.getTenantId().equals("681169"))
|
|
|
+ {
|
|
|
+ /**===================增加益付款逻辑========================= */
|
|
|
+ if (e.getPurchaseQuantity().compareTo(e.getActualQuantity()) == 1) {
|
|
|
+ BigDecimal number = e.getPurchaseQuantity().subtract(e.getActualQuantity());
|
|
|
+ BigDecimal price = e.getPrice();
|
|
|
+ //需要处理的益付款=(差额数量 * 单价)
|
|
|
+ BigDecimal total = number.multiply(price);
|
|
|
+ //益付款明细
|
|
|
+ BusinessOverpaymentItem overpaymentItem = new BusinessOverpaymentItem();
|
|
|
+ overpaymentItem.setBillNo(select.getSysNo());
|
|
|
+ overpaymentItem.setOrderNo(e.getContractNumber());
|
|
|
+ overpaymentItem.setSrcPid(select.getId());
|
|
|
+ overpaymentItem.setSrcId(e.getId());
|
|
|
+ overpaymentItem.setOverpayment(total);
|
|
|
+ list.add(overpaymentItem);
|
|
|
+ }
|
|
|
+ /**===================增加益付款逻辑========================= */
|
|
|
+ }
|
|
|
+
|
|
|
+ //传入库存
|
|
|
+ BigDecimal inventoryNumber = e.getActualQuantity();
|
|
|
+ //传入发票重量
|
|
|
+ BigDecimal invoiceWeight = e.getInvoiceWeight();
|
|
|
+ //实际库存有没有库存
|
|
|
+ StockGoods model=new StockGoods();
|
|
|
+ model.setGoodsId(e.getItemId());
|
|
|
+ //不同的出口对应不同的查询条件
|
|
|
+ if(delivery.getTradeType().equals("JK"))
|
|
|
+ {
|
|
|
+ model.setCntrNo(e.getCntrNo());//箱号
|
|
|
+ model.setBillNo(e.getBillNo());//提单号
|
|
|
+ /* model.setCorpId(delivery.getCorpId());*/
|
|
|
+ model.setStorageId(delivery.getStorageId());//仓库
|
|
|
+ model.setContractNumber(e.getContractNumber());//采购订单号
|
|
|
+ model.setTradeType("JK");
|
|
|
+ }
|
|
|
+ else if(delivery.getTradeType().equals("CK"))
|
|
|
+ {
|
|
|
+ model.setTradeType("CK");
|
|
|
+ model.setItemType(e.getSpecificationAndModel());
|
|
|
+ }
|
|
|
+ else if(delivery.getTradeType().equals("GN"))
|
|
|
+ {
|
|
|
+ model.setTradeType("GN");
|
|
|
+ model.setCorpId(delivery.getCorpId());
|
|
|
+ model.setStorageId(delivery.getStorageId());//仓库
|
|
|
+ model.setItemType(e.getSpecificationAndModel());
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ throw new SecurityException("贸易类型未指定");
|
|
|
+ }
|
|
|
+ StockGoods stock=stockGoodsClient.getOneStock(model);
|
|
|
|
|
|
- // 比较2个库存值是否相等
|
|
|
- //BigDecimal surplusRouteQuantity = stockGoodsVOR.getData().getSurplusRouteQuantity();
|
|
|
+ // 比较2个库存值是否相等
|
|
|
+ //BigDecimal surplusRouteQuantity = stockGoodsVOR.getData().getSurplusRouteQuantity();
|
|
|
|
|
|
- //达沃特新需求-禅道860中体现-国内-采购确认-不增加库存
|
|
|
- if(!delivery.getTradeType().equals("GN"))
|
|
|
- {
|
|
|
- //新增库存单
|
|
|
- if(stock==null)
|
|
|
+ //达沃特新需求-禅道860中体现-国内-采购确认-不增加库存
|
|
|
+ if(!delivery.getTradeType().equals("GN"))
|
|
|
+ {
|
|
|
+ //新增库存单
|
|
|
+ if(stock==null)
|
|
|
+ {
|
|
|
+ StockGoods stockGoods = iDeliveryItemsService.saveStock(delivery.getTradeType(), delivery.getCorpId(), delivery.getStorageId(), e);
|
|
|
+ //更新收货单明细库存
|
|
|
+ e.setInventoryNumber(stockGoods.getSurplusRouteQuantity());
|
|
|
+ e.setInWeight(stockGoods.getInWeight());
|
|
|
+ }
|
|
|
+ //修改库存单
|
|
|
+ else if(stock!=null)
|
|
|
+ {
|
|
|
+ StockGoods receiving = iDeliveryItemsService.receiving(delivery.getTradeType(), stock.getId(), e);
|
|
|
+ //更新收货单明细库存
|
|
|
+ e.setInventoryNumber(receiving.getSurplusRouteQuantity());
|
|
|
+ e.setInWeight(receiving.getInWeight());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //更新item已发数量
|
|
|
+ R r = iOrderItemsClient.updateActualQuantity(e.getSrcId(), inventoryNumber, 1);
|
|
|
+ if(!r.isSuccess())
|
|
|
{
|
|
|
- StockGoods stockGoods = iDeliveryItemsService.saveStock(delivery.getTradeType(), delivery.getCorpId(), delivery.getStorageId(), e);
|
|
|
- //更新收货单明细库存
|
|
|
- e.setInventoryNumber(stockGoods.getSurplusRouteQuantity());
|
|
|
- e.setInWeight(stockGoods.getInWeight());
|
|
|
+ throw new SecurityException("操作已发数量失败:"+r.getMsg());
|
|
|
}
|
|
|
- //修改库存单
|
|
|
- else if(stock!=null)
|
|
|
+ if(delivery.getTradeType().equals("JK"))
|
|
|
{
|
|
|
- StockGoods receiving = iDeliveryItemsService.receiving(delivery.getTradeType(), stock.getId(), e);
|
|
|
- //更新收货单明细库存
|
|
|
- e.setInventoryNumber(receiving.getSurplusRouteQuantity());
|
|
|
- e.setInWeight(receiving.getInWeight());
|
|
|
+ //更新item已收发票重量
|
|
|
+ R weightR = iOrderItemsClient.updateActualWeight(e.getSrcId(), invoiceWeight, 1);
|
|
|
+ if(!weightR.isSuccess())
|
|
|
+ {
|
|
|
+ throw new SecurityException("操作发票重量失败:"+weightR.getMsg());
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
- //更新item已发数量
|
|
|
- R r = iOrderItemsClient.updateActualQuantity(e.getSrcId(), inventoryNumber, 1);
|
|
|
- if(!r.isSuccess())
|
|
|
- {
|
|
|
- throw new SecurityException("操作已发数量失败:"+r.getMsg());
|
|
|
- }
|
|
|
- if(delivery.getTradeType().equals("JK"))
|
|
|
- {
|
|
|
- //更新item已收发票重量
|
|
|
- R weightR = iOrderItemsClient.updateActualWeight(e.getSrcId(), invoiceWeight, 1);
|
|
|
- if(!weightR.isSuccess())
|
|
|
- {
|
|
|
- throw new SecurityException("操作发票重量失败:"+weightR.getMsg());
|
|
|
+ //更新库存内容
|
|
|
+ iDeliveryItemsService.updateById(e);
|
|
|
+
|
|
|
+ });
|
|
|
+ if(AuthUtil.getTenantId().equals("681169")) {
|
|
|
+ /**===================增加益付款逻辑========================= */
|
|
|
+ if (CollectionUtils.isNotEmpty(list)) {
|
|
|
+ BigDecimal itemTotal = list.stream().filter(e -> e.getOverpayment() != null).map(BusinessOverpaymentItem::getOverpayment).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ //益付款
|
|
|
+ Overpayment overpayment = new Overpayment();
|
|
|
+ overpayment.setCorpId(corpId);
|
|
|
+ overpayment.setType("add");
|
|
|
+ overpayment.setSrcPid(deliveryId);
|
|
|
+ overpayment.setAmount(itemTotal);
|
|
|
+ overpayment.setList(list);
|
|
|
+ R updateOverpayment = iBusinessOverpaymentClient.updateOverpayment(overpayment);
|
|
|
+ if (!updateOverpayment.isSuccess()) {
|
|
|
+ throw new SecurityException("收货失败:增加客户益付款报错");
|
|
|
+ }
|
|
|
}
|
|
|
+ /**===================增加益付款逻辑========================= */
|
|
|
}
|
|
|
+ }
|
|
|
|
|
|
- //更新库存内容
|
|
|
- iDeliveryItemsService.updateById(e);
|
|
|
-
|
|
|
- });
|
|
|
//更改收货主表状态
|
|
|
delivery.setDeliveryStatus("已收货");
|
|
|
baseMapper.updateById(delivery);
|
|
|
@@ -450,7 +499,33 @@ public class DeliveryServiceImpl extends ServiceImpl<DeliveryMapper, Delivery> i
|
|
|
}
|
|
|
|
|
|
List<DeliveryItems> deliveryItemsList = delivery.getDeliveryItemsList();
|
|
|
- deliveryItemsList.forEach(e->{
|
|
|
+ if(CollectionUtils.isNotEmpty(deliveryItemsList))
|
|
|
+ {
|
|
|
+ List<BusinessOverpaymentItem> list=new ArrayList<>();
|
|
|
+ deliveryItemsList.forEach(e->{
|
|
|
+ if(AuthUtil.getTenantId().equals("681169"))
|
|
|
+ {
|
|
|
+ /**===================撤回益付款逻辑========================= */
|
|
|
+ if(e.getPurchaseQuantity().compareTo(e.getActualQuantity())==1)
|
|
|
+ {
|
|
|
+ BigDecimal number=e.getPurchaseQuantity().subtract(e.getActualQuantity());
|
|
|
+ BigDecimal price = e.getPrice();
|
|
|
+ //需要处理的益付款=(差额数量 * 单价)
|
|
|
+ BigDecimal total=number.multiply(price);
|
|
|
+ //益付款明细
|
|
|
+ BusinessOverpaymentItem overpaymentItem = new BusinessOverpaymentItem();
|
|
|
+ overpaymentItem.setBillNo(select.getSysNo());
|
|
|
+ overpaymentItem.setOrderNo(e.getContractNumber());
|
|
|
+ overpaymentItem.setSrcPid(select.getId());
|
|
|
+ overpaymentItem.setSrcId(e.getId());
|
|
|
+ overpaymentItem.setOverpayment(total);
|
|
|
+ list.add(overpaymentItem);
|
|
|
+ }
|
|
|
+ /**===================撤回益付款逻辑========================= */
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
//更新item已发数量
|
|
|
BigDecimal inventoryNumber = e.getActualQuantity();
|
|
|
BigDecimal invoiceWeight = e.getInvoiceWeight();
|
|
|
@@ -502,6 +577,26 @@ public class DeliveryServiceImpl extends ServiceImpl<DeliveryMapper, Delivery> i
|
|
|
//更新库存内容
|
|
|
iDeliveryItemsService.updateById(e);
|
|
|
});
|
|
|
+ if(AuthUtil.getTenantId().equals("681169")) {
|
|
|
+ Long corpId = select.getCorpId();
|
|
|
+ /**===================撤回添加益付款逻辑========================= */
|
|
|
+ if (CollectionUtils.isNotEmpty(list)) {
|
|
|
+ BigDecimal itemTotal = list.stream().filter(e -> e.getOverpayment() != null).map(BusinessOverpaymentItem::getOverpayment).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ //益付款
|
|
|
+ Overpayment overpayment = new Overpayment();
|
|
|
+ overpayment.setCorpId(corpId);
|
|
|
+ overpayment.setType("repealAdd");
|
|
|
+ overpayment.setSrcPid(deliveryId);
|
|
|
+ overpayment.setAmount(itemTotal);
|
|
|
+ overpayment.setList(list);
|
|
|
+ R updateOverpayment = iBusinessOverpaymentClient.updateOverpayment(overpayment);
|
|
|
+ if (!updateOverpayment.isSuccess()) {
|
|
|
+ throw new SecurityException("收货失败:增加客户益付款报错");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ /**===================撤回添加益付款逻辑========================= */
|
|
|
+ }
|
|
|
+ }
|
|
|
//更新收货单状态为:录入
|
|
|
delivery.setDeliveryStatus("录入");
|
|
|
baseMapper.updateById(delivery);
|