Browse Source

Merge remote-tracking branch 'origin/dev' into dev

lazhaoqian 3 years ago
parent
commit
671084d373

+ 166 - 71
blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/service/impl/DeliveryServiceImpl.java

@@ -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);

+ 28 - 11
blade-service/blade-mocha-item/src/main/java/org/springblade/mocha/controller/PriceItemController.java

@@ -36,6 +36,7 @@ import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.core.excel.util.ExcelUtil;
+import org.springblade.mocha.entity.SalesPolicy;
 import org.springblade.mocha.excel.PriceImport;
 import org.springblade.mocha.excel.PriceItemExcel;
 import org.springblade.system.entity.AuthClient;
@@ -49,7 +50,9 @@ import org.springframework.web.multipart.MultipartFile;
 
 import java.math.BigDecimal;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -180,11 +183,8 @@ public class PriceItemController extends BladeController {
 						  @ApiParam(value = "是否运费", required = true) @RequestParam Integer isFreight,
 						  @ApiParam(value = "是否标签", required = true) @RequestParam Integer isLabel)
 	{
-		        BigDecimal saleMoney=BigDecimal.ZERO;
-				BigDecimal reduce=BigDecimal.ZERO;
-				BigDecimal freight=BigDecimal.ZERO;
-				BigDecimal label=BigDecimal.ZERO;
-		        LambdaQueryWrapper<PriceItem> priceItemLambdaQueryWrapper=new LambdaQueryWrapper<>();
+		List<Map<String,BigDecimal>> mapList=new ArrayList<>();
+		LambdaQueryWrapper<PriceItem> priceItemLambdaQueryWrapper=new LambdaQueryWrapper<>();
 		        priceItemLambdaQueryWrapper
 					.eq(PriceItem::getIsDeleted,0)
 					.eq(PriceItem::getTenantId, AuthUtil.getTenantId())
@@ -194,7 +194,7 @@ public class PriceItemController extends BladeController {
 		        if(CollectionUtils.isNotEmpty(priceItemList))
 		        {
 
-					reduce = priceItemList.stream().filter(e -> e.getSalesPrice() != null).map(PriceItem::getSalesPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
+					/*reduce = priceItemList.stream().filter(e -> e.getSalesPrice() != null).map(PriceItem::getSalesPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
 					if(isFreight!=null && isFreight==1)
 					{
 						freight=priceItemList.stream().filter(e -> e.getFreightFees() != null).map(PriceItem::getFreightFees).reduce(BigDecimal.ZERO, BigDecimal::add);
@@ -202,12 +202,29 @@ public class PriceItemController extends BladeController {
 					if(isLabel!=null && isLabel==1)
 					{
 						label=priceItemList.stream().filter(e -> e.getLabelFees() != null).map(PriceItem::getLabelFees).reduce(BigDecimal.ZERO, BigDecimal::add);
-					}
-
+					}*/
+
+					priceItemList.forEach(e->{
+						BigDecimal saleMoney=BigDecimal.ZERO;
+						BigDecimal reduce=e.getSalesPrice();
+						BigDecimal freight=BigDecimal.ZERO;
+						BigDecimal label=BigDecimal.ZERO;
+							if(isFreight!=null && isFreight==1)
+							{
+								freight=e.getFreightFees();
+							}
+							if(isLabel!=null && isLabel==1)
+							{
+								label=e.getLabelFees();
+							}
+						saleMoney=(reduce.add(freight)).add(label);
+
+						Map<String,BigDecimal> map=new HashMap<>();
+						map.put("salePrice",saleMoney);
+						mapList.add(map);
+					});
 				}
-		       saleMoney=(reduce.add(freight)).add(label);
-
-		return R.data(saleMoney);
+		return R.data(mapList);
 	}