Browse Source

诺晶 bug 配件账单金额修改

纪新园 2 years ago
parent
commit
e6c3368371

+ 4 - 0
blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/service/IDeliveryItemsService.java

@@ -21,6 +21,7 @@ import org.springblade.deliver.goods.entity.DeliveryItems;
 import org.springblade.deliver.goods.vo.*;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.purchase.sales.entity.OrderItems;
 
 import java.util.List;
 
@@ -81,4 +82,7 @@ public interface IDeliveryItemsService extends IService<DeliveryItems> {
 	 */
 	boolean submitPay(Long id);
 
+    void receivingInventory(String tradeType, Long id, OrderItems e);
+
+	void saveStockInventory(String tradeType, Long corpId, Long storageId, OrderItems e, String orderType);
 }

+ 119 - 9
blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/service/impl/DeliveryItemsServiceImpl.java

@@ -25,7 +25,6 @@ import com.trade.purchase.order.enums.OrderTypeEnum;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springblade.client.entity.CorpsDesc;
-import org.springblade.client.entity.GoodsDesc;
 import org.springblade.client.feign.ICorpsDescClient;
 import org.springblade.client.feign.IGoodsDescClient;
 import org.springblade.client.feign.IRedisClient;
@@ -43,11 +42,15 @@ import org.springblade.deliver.goods.mapper.DeliveryItemsMapper;
 import org.springblade.deliver.goods.service.IDeliveryItemsService;
 import org.springblade.deliver.goods.vo.*;
 import org.springblade.finance.feign.IFinanceClient;
-import org.springblade.mocha.entity.*;
+import org.springblade.mocha.entity.BusinessOverpaymentItem;
+import org.springblade.mocha.entity.BusinessPointsItem;
+import org.springblade.mocha.entity.Overpayment;
+import org.springblade.mocha.entity.Points;
 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.OrderItems;
 import org.springblade.purchase.sales.feign.IOrderDescClient;
 import org.springblade.purchase.sales.feign.IOrderItemsClient;
 import org.springblade.stock.entity.StockGoods;
@@ -257,7 +260,7 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
 								&& s.getStorageId().equals(delivery.getStorageId())
 						).findFirst().orElse(null);
 						stock = this.getStock(delivery.getTradeType(), deliveryItems.getCorpId(), delivery.getStorageId(), deliveryItems);
-					}else{
+					} else {
 						stock = this.getStock(delivery.getTradeType(), deliveryItems.getCorpId(), delivery.getStorageId(), deliveryItems);
 					}
 				}
@@ -318,7 +321,7 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
 						} else {
 							deliveryItems.setInventoryNumber(BigDecimal.ZERO);
 						}
-					}else{
+					} else {
 						if (stockGoods != null) {
 							deliveryItems.setInventoryNumber(stockGoods.getSurplusRouteQuantity());
 						} else if (stock != null) {
@@ -513,7 +516,7 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
 			if (ObjectUtils.isNotNull(sysClient.getParamService("synchronous"))
 				&& "1".equals(sysClient.getParamService("synchronous"))) {
 				stockGoods.setOutAmount(stockGoods.getOutAmount().subtract(deliveryItems.getDeliveryAmount()));//出库金额减
-			}else{
+			} else {
 				stockGoods.setOutAmount(stockGoods.getOutAmount().subtract(deliveryItems.getContractAmount()));//出库金额减
 			}
 		}
@@ -629,6 +632,10 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
 			if (!"681169".equals(AuthUtil.getTenantId())) {
 				if (stockGoods.getLockingQuantity().compareTo(deliveryItems.getActualQuantity()) < 0) {
 					throw new RuntimeException(stockGoods.getCode() + "更新库存总账失败,锁定库存不足");
+				} else {
+					if (ObjectUtils.isNotNull(sysClient.getParamService("inventory")) && "1".equals(sysClient.getParamService("inventory"))) {
+						stockGoods.setLockingQuantity(stockGoods.getLockingQuantity().subtract(deliveryItems.getActualQuantity()));
+					}
 				}
 			}
 			stockGoods.setLockingQuantity(stockGoods.getLockingQuantity().subtract(deliveryItems.getActualQuantity()));
@@ -638,11 +645,11 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
 		stockGoods.setUpdateTime(new Date());
 		stockGoods.setUpdateUser(SecureUtil.getUserId());
 		if (!new BigDecimal("0.00").equals(stockGoods.getBalanceAmount()) &&
-			!new BigDecimal("0.00").equals(stockGoods.getBalanceQuantity())){
+			!new BigDecimal("0.00").equals(stockGoods.getBalanceQuantity())) {
 			//库存金额
 			stockGoods.setBalanceAmount(stockGoods.getBalanceAmount().subtract(deliveryItems.getDeliveryAmount()));
 			stockGoods.setStockPrice(stockGoods.getBalanceAmount().divide(stockGoods.getBalanceQuantity(), MathContext.DECIMAL32));
-		}else{
+		} else {
 			stockGoods.setStockPrice(new BigDecimal("0.00"));
 		}
 		boolean updateStock = stockGoodsClient.updateStock(stockGoods);
@@ -723,9 +730,9 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
 		//库存金额
 		stockGoods.setBalanceAmount(deliveryItems.getDeliveryAmount());
 		if (!new BigDecimal("0.00").equals(stockGoods.getBalanceAmount()) &&
-			!new BigDecimal("0.00").equals(stockGoods.getBalanceQuantity())){
+			!new BigDecimal("0.00").equals(stockGoods.getBalanceQuantity())) {
 			stockGoods.setStockPrice(stockGoods.getBalanceAmount().divide(stockGoods.getBalanceQuantity(), MathContext.DECIMAL32));
-		}else{
+		} else {
 			stockGoods.setStockPrice(new BigDecimal("0.00"));
 		}
 
@@ -1040,6 +1047,109 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
 		return false;
 	}
 
+	@Override
+	public void receivingInventory(String tradeType, Long id, OrderItems e) {
+		//查询库存账
+		R<StockGoods> stockById = stockGoodsClient.getStockById(id);
+		if (!stockById.isSuccess()) {
+			throw new RuntimeException("查询库存账出错");
+		}
+		if (stockById.getData() == null) {
+			throw new RuntimeException("库存账不存在");
+		}
+		StockGoods stockGoods = stockById.getData();
+		if (!"681169".equals(AuthUtil.getTenantId())) {
+			if (stockGoods.getLockingQuantity().compareTo(e.getOrderQuantity()) < 0) {
+				throw new RuntimeException(stockGoods.getCode() + "更新库存总账失败,锁定库存不足");
+			} else {
+				if (ObjectUtils.isNotNull(sysClient.getParamService("inventory")) && "1".equals(sysClient.getParamService("inventory"))) {
+					stockGoods.setLockingQuantity(stockGoods.getLockingQuantity().subtract(e.getOrderQuantity()));
+				}
+			}
+		}
+		stockGoods.setLockingQuantity(stockGoods.getLockingQuantity().subtract(e.getOrderQuantity()));
+		stockGoods.setUpdateTime(new Date());
+		stockGoods.setUpdateUser(SecureUtil.getUserId());
+		boolean updateStock = stockGoodsClient.updateStock(stockGoods);
+		if (!updateStock) {
+			throw new RuntimeException(stockGoods.getCode() + "更新库存总账失败");
+		}
+	}
+
+	@Override
+	public void saveStockInventory(String tradeType, Long corpId, Long storageId, OrderItems deliveryItems, String orderType) {
+		StockGoods stockGoods = new StockGoods();
+		stockGoods.setGoodsId(deliveryItems.getItemId());//商品id
+		//入库数量
+		stockGoods.setInDate(new Date());//入库日期
+		stockGoods.setInQuantity(deliveryItems.getActualQuantity());//入库数量
+		stockGoods.setOutQuantity(BigDecimal.ZERO);//出库数量
+		stockGoods.setLockingQuantity(BigDecimal.ZERO);//锁定数量
+		stockGoods.setBalanceQuantity(deliveryItems.getActualQuantity());//结余数量
+		stockGoods.setEnRouteQuantity(BigDecimal.ZERO);//在途数量
+		stockGoods.setInAmount(deliveryItems.getAmount());//入库金额
+		stockGoods.setSurplusRouteQuantity(deliveryItems.getActualQuantity());//可用数量
+		//进口贸易 还需要追加码单重量 和 发票重量
+		if (tradeType.equals(OrderTypeEnum.IMPORT.getType())) {
+			stockGoods.setBillNo(deliveryItems.getBillNo());//提单号
+			stockGoods.setContractNumber(deliveryItems.getBillNo());//合同号
+			stockGoods.setStorageId(storageId);//仓库id
+			stockGoods.setCntrNo(deliveryItems.getCntrNo());//箱号
+
+
+			stockGoods.setInWeight(deliveryItems.getInvoiceWeight());//入库发票重量
+			stockGoods.setOutWeight(new BigDecimal(0.00));//出库发票重量
+			stockGoods.setLockingWeight(new BigDecimal(0.00));//锁定发票重量
+			stockGoods.setBalanceWeight(deliveryItems.getInvoiceWeight());//结余发票重量
+			stockGoods.setInVolumn(deliveryItems.getBillWeight());//入库码单重量
+			stockGoods.setOutVolumn(new BigDecimal(0.00));//出库码单重量
+			stockGoods.setLockingVolumn(new BigDecimal(0.00));//锁定码单重量
+			stockGoods.setBalanceVolumn(deliveryItems.getBillWeight());//结余码单重量
+
+			stockGoods.setTradeType("JK");
+			if (ObjectUtil.isNotEmpty(orderType)) {
+				stockGoods.setOrderType(orderType);
+			} else {
+				stockGoods.setOrderType(deliveryItems.getBillType());
+			}
+		}
+		//国内
+		else if (tradeType.equals(OrderTypeEnum.DOMESTIC.getType())) {
+			stockGoods.setCorpId(corpId);
+			stockGoods.setStorageId(storageId);
+			stockGoods.setItemType(deliveryItems.getSpecificationAndModel());//规格明细
+			stockGoods.setTradeType("GN");
+			//商品 规格 供应商 仓库
+		}
+		//出口
+		else if (tradeType.equals(OrderTypeEnum.EXPORT.getType())) {
+			stockGoods.setTradeType("CK");
+			stockGoods.setItemType(deliveryItems.getSpecificationAndModel());//规格明细
+		}
+		//经销商
+		else if (tradeType.equals(OrderTypeEnum.DEALER.getType())) {
+			stockGoods.setTradeType("JXS");
+			stockGoods.setStorageId(storageId);
+		}
+		stockGoods.setCntrNo(deliveryItems.getCntrNo());
+		stockGoods.setCreateUser(SecureUtil.getUserId());
+		stockGoods.setTenantId(SecureUtil.getTenantId());
+		stockGoods.setCreateTime(new Date());
+		//库存金额
+		stockGoods.setBalanceAmount(deliveryItems.getAmount());
+		if (!new BigDecimal("0.00").equals(stockGoods.getBalanceAmount()) &&
+			!new BigDecimal("0.00").equals(stockGoods.getBalanceQuantity())) {
+			stockGoods.setStockPrice(stockGoods.getBalanceAmount().divide(stockGoods.getBalanceQuantity(), MathContext.DECIMAL32));
+		} else {
+			stockGoods.setStockPrice(new BigDecimal("0.00"));
+		}
+
+		R saveStock = stockGoodsClient.saveStock(stockGoods);
+		if (!saveStock.isSuccess()) {
+			throw new SecurityException("插入库存失败");
+		}
+	}
+
 	/**
 	 * 将Object转换成List类型
 	 *

+ 45 - 3
blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/service/impl/DeliveryServiceImpl.java

@@ -56,6 +56,7 @@ 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.entity.OrderItems;
 import org.springblade.purchase.sales.feign.IOrderDescClient;
 import org.springblade.purchase.sales.feign.IOrderItemsClient;
 import org.springblade.stock.entity.StockGoods;
@@ -931,6 +932,47 @@ public class DeliveryServiceImpl extends ServiceImpl<DeliveryMapper, Delivery> i
 			});
 			//更新库存内容
 			iDeliveryItemsService.updateBatchById(deliveryItemsList);
+			if ((ObjectUtils.isNotNull(sysClient.getParamService("inventory")) && "1".equals(sysClient.getParamService("inventory")))
+				|| "681169".equals(AuthUtil.getTenantId())) {
+				R<List<OrderItems>> r = iOrderItemsClient.selectList(select.getSrcId());
+				if (r.isSuccess() && ObjectUtils.isNotNull(r.getData())) {
+					r.getData().forEach(e -> {
+						//实际库存有没有库存
+						StockGoods model = new StockGoods();
+						model.setGoodsId(e.getItemId());
+						//不同的出口对应不同的查询条件
+						if ("GN".equals(select.getTradeType())) {
+							model = finalStockGoodsList.stream().filter(s ->
+								s.getGoodsId().equals(e.getItemId())
+									&& s.getTradeType().equals("GN")
+									&& s.getCorpId().equals(select.getCorpId())
+									&& s.getStorageId().equals(select.getStorageId())
+									&& s.getItemType().equals(e.getSpecificationAndModel())
+							).findFirst().orElse(null);
+						} else {
+							throw new SecurityException("贸易类型未指定");
+						}
+						StockGoods stock = model;
+						//达沃特新需求-禅道860中体现-国内-采购确认-不增加库存
+						if (ObjectUtils.isNotNull(sysClient.getParamService("inventory")) && "1".equals(sysClient.getParamService("inventory"))) {
+							//新增库存单
+							if (stock == null) {
+								iDeliveryItemsService.saveStockInventory(select.getTradeType(), select.getCorpId(), select.getStorageId(), e, select.getOrderType());
+							}
+							//修改库存单
+							else {
+								iDeliveryItemsService.receivingInventory(select.getTradeType(), stock.getId(), e);
+							}
+						} else {
+							if (stock == null) {
+								throw new SecurityException("更新库存失败,未找到库存");
+							} else {
+								iDeliveryItemsService.receivingInventory(select.getTradeType(), stock.getId(), e);
+							}
+						}
+					});
+				}
+			}
 			if ("681169".equals(AuthUtil.getTenantId())) {
 				// ===================增加益付款逻辑=========================
 				if (CollectionUtils.isNotEmpty(list)) {
@@ -1509,7 +1551,7 @@ public class DeliveryServiceImpl extends ServiceImpl<DeliveryMapper, Delivery> i
 				.eq(DeliveryItems::getPid, delivery.getId())
 				.eq(DeliveryItems::getIsDeleted, 0);
 			List<DeliveryItems> deliveryItems = deliveryItemsMapper.selectList(deliveryItemsLambdaQueryWrapper);
-			BigDecimal pricetotal1 = deliveryItems.stream().map(DeliveryItems::getPurchaseTotalAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+			BigDecimal pricetotal1 = deliveryItems.stream().map(DeliveryItems::getDeliveryAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
 			//明细总采购价
 			purchaseTotalAmount = purchaseTotalAmount.add(CollectionUtils.isEmpty(deliveryItems) ? new BigDecimal("0.00") : pricetotal1);
 			purchaseTotalAmount = purchaseTotalAmount.subtract(delivery.getThisUsedProfit());
@@ -1733,8 +1775,8 @@ public class DeliveryServiceImpl extends ServiceImpl<DeliveryMapper, Delivery> i
 
 
 		BigDecimal amount = new BigDecimal(deliveryAmount);
-		BigDecimal costAmount = amount.divide(new BigDecimal("1.13"), MathContext.DECIMAL32).multiply(new BigDecimal("0.13"));
-		BigDecimal amount2 = amount.subtract(costAmount);
+		BigDecimal costAmount = amount.divide(new BigDecimal("1.13"), MathContext.DECIMAL32).multiply(new BigDecimal("0.13")).setScale(2,BigDecimal.ROUND_HALF_UP);
+		BigDecimal amount2 = amount.subtract(costAmount.setScale(2,BigDecimal.ROUND_HALF_UP));
 		List<JDYitems> jdYitems = new ArrayList<>();
 		//凭证1
 		JDYitems item1 = new JDYitems();

+ 6 - 3
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/BidingItemsServiceImpl.java

@@ -26,7 +26,10 @@ import org.springblade.system.user.entity.User;
 import org.springblade.system.user.feign.IUserClient;
 import org.springframework.stereotype.Service;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.Date;
+import java.util.List;
 import java.util.stream.Collectors;
 
 /**
@@ -107,10 +110,10 @@ public class BidingItemsServiceImpl extends ServiceImpl<BidingItemsMapper, Bidin
 					} else {
 						sortedList.get(i).setRanking(sort + 1);
 					}
-					sort++;
+					sort = sort + 1;
 				} else {
 					sortedList.get(i).setRanking(sort);
-					sort++;
+					sort = sort + 1;
 				}
 				//id为空 新增
 				if (sortedList.get(i).getId() == null) {