Browse Source

2024年11月18日17:22:53

纪新园 1 year ago
parent
commit
c8b73787dc

+ 1 - 0
blade-service/blade-los/src/main/java/org/springblade/los/business/sea/controller/BillsController.java

@@ -101,6 +101,7 @@ public class BillsController extends BladeController {
 			Bills::getMeasurement, Bills::getQuantityV20, Bills::getQuantityV40, Bills::getQuantityV40hc, Bills::getQuantityV45,
 			Bills::getQuantityV48, Bills::getIsNeedLand, Bills::getIsNeedDeclare, Bills::getIsNeedIq, Bills::getAmountDr,
 			Bills::getAmountCr, Bills::getAmountProfit, Bills::getAmountDrUsd, Bills::getAmountCrUsd, Bills::getAmountProfitUsd,
+			Bills::getCheckCrStatus, Bills::getCheckDrStatus, Bills::getStlCrStatus, Bills::getStlDrStatus, Bills::getInvoiceCrStatus,Bills::getInvoiceDrStatus,
 			Bills::getAmountDrLoc, Bills::getAmountCrLoc, Bills::getAmountProfitLoc, Bills::getCheckCrStatusDescr, Bills::getCheckDrStatusDescr,
 			Bills::getStlCrStatusDescr, Bills::getStlDrStatusDescr, Bills::getInvoiceCrStatusDescr, Bills::getInvoiceDrStatusDescr, Bills::getCreateUserName,
 			Bills::getCreateTime, Bills::getUpdateUserName, Bills::getUpdateTime, Bills::getStatus, Bills::getBillStatus,

+ 3 - 0
blade-service/blade-los/src/main/java/org/springblade/los/finance/invoices/service/impl/FinInvoicesServiceImpl.java

@@ -179,6 +179,9 @@ public class FinInvoicesServiceImpl extends ServiceImpl<FinInvoicesMapper, FinIn
 				item.setCurrentAmountTax(amountTax);
 				item.setCurrentAmountNet(amountNet);
 				item.setPid(finInvoices.getId());
+				if (ObjectUtils.isNull(item.getBusinessType())){
+					item.setBusinessType(finInvoices.getBusinessTypes());
+				}
 				if (item.getId() == null) {
 					item.setCreateTime(new Date());
 					item.setCreateUser(AuthUtil.getUserId());

+ 3 - 0
blade-service/blade-los/src/main/java/org/springblade/los/finance/stl/service/impl/FinStlBillsServiceImpl.java

@@ -271,6 +271,9 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 				amountNet = amountNet.add(item.getCurrentStlAmount().subtract(amountTax));
 				item.setCurrentStlAmountTax(amountTax);
 				item.setCurrentStlAmountNet(amountNet);
+				if (ObjectUtils.isNull(item.getBusinessType())){
+					item.setBusinessType(finStlBills.getBusinessType());
+				}
 				if (item.getId() == null) {
 					item.setCreateTime(new Date());
 					item.setCreateUser(AuthUtil.getUserId());

+ 4 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/service/impl/CorpsDescServiceImpl.java

@@ -1527,6 +1527,10 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, PjCorpsDe
 	 */
 	public void saveOrUpdateAddr(PjCorpsDesc corpsDesc, Long userId, Long pId, String tenantId, Date date) {
 		if (CollectionUtils.isNotEmpty(corpsDesc.getCorpsAddrList())) {
+			long count = corpsDesc.getCorpsAddrList().stream().filter(e -> "1".equals(e.getDefaultAddres())).count();
+			if (count != 1) {
+				throw new RuntimeException("默认地址唯一");
+			}
 			corpsDesc.getCorpsAddrList().stream().forEach(addr -> {
 				addr.setPid(pId);
 				addr.setTenantId(tenantId);

+ 67 - 6
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/service/impl/OrderServiceImpl.java

@@ -3339,7 +3339,74 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 		} else {
 			pjShip.setStorageId(null);
 		}
+		LambdaQueryWrapper<PjOrderItems> itemsLambdaQueryWrapper = new LambdaQueryWrapper<>();
+		itemsLambdaQueryWrapper.eq(PjOrderItems::getTenantId, AuthUtil.getTenantId())
+			.eq(PjOrderItems::getIsDeleted, 0)
+			.eq(PjOrderItems::getPid, pjOrder.getId());
+		List<PjOrderItems> itemsList = orderItemsService.list(itemsLambdaQueryWrapper);
+		List<Long> goodsId = new ArrayList<>();
+		List<PjStockDesc> pjStockDescList;
+		if (!itemsList.isEmpty()) {
+			goodsId = itemsList.stream().map(PjOrderItems::getGoodsId).distinct().collect(Collectors.toList());
+			LambdaQueryWrapper<PjStockDesc> stockLambdaQueryWrapper = new LambdaQueryWrapper<>();
+			stockLambdaQueryWrapper.eq(ObjectUtils.isNotNull(pjOrder.getStorageId()), PjStockDesc::getStorageId, pjOrder.getStorageId())
+				.eq(PjStockDesc::getTenantId, AuthUtil.getTenantId())
+				.eq(PjStockDesc::getIsDeleted, 0)
+				.in(PjStockDesc::getGoodsId, goodsId);
+			pjStockDescList = stockDescService.list(stockLambdaQueryWrapper);
+			for (PjOrderItems item : itemsList) {
+				BigDecimal balanceQuantity = new BigDecimal("0.00");
+				BigDecimal inventoryAmount = new BigDecimal("0.00");
+				BigDecimal rebateInventoryAmount = new BigDecimal("0.00");
+				item.setSendNum(new BigDecimal("0.00"));
+				if (!pjStockDescList.isEmpty()) {
+					balanceQuantity = pjStockDescList.stream().filter(e -> e.getGoodsId().equals(item.getGoodsId())).map(PjStockDesc::getBalanceQuantity).filter(Objects::nonNull)
+						.reduce(BigDecimal.ZERO, BigDecimal::add);
+					inventoryAmount = pjStockDescList.stream().filter(e -> e.getGoodsId().equals(item.getGoodsId())).map(PjStockDesc::getInventoryAmount).filter(Objects::nonNull)
+						.reduce(BigDecimal.ZERO, BigDecimal::add);
+					rebateInventoryAmount = pjStockDescList.stream().filter(e -> e.getGoodsId().equals(item.getGoodsId())).map(PjStockDesc::getRebateInventoryAmount).filter(Objects::nonNull)
+						.reduce(BigDecimal.ZERO, BigDecimal::add);
+				}
+				BigDecimal inventoryCostPrice;
+				BigDecimal rebateInventoryCostPrice;
+				if (balanceQuantity.compareTo(new BigDecimal("0.00")) == 0 ||
+					inventoryAmount.compareTo(new BigDecimal("0.00")) == 0) {
+					inventoryCostPrice = new BigDecimal("0.00");
+				} else {
+					inventoryCostPrice = inventoryAmount.divide(balanceQuantity, 2, RoundingMode.HALF_UP);
+				}
+				if (balanceQuantity.compareTo(new BigDecimal("0.00")) == 0 ||
+					rebateInventoryAmount.compareTo(new BigDecimal("0.00")) == 0) {
+					rebateInventoryCostPrice = new BigDecimal("0.00");
+				} else {
+					rebateInventoryCostPrice = rebateInventoryAmount.divide(balanceQuantity, 2, RoundingMode.HALF_UP);
+					item.setRebatePrice(rebateInventoryCostPrice);
+				}
+				item.setUpdateTime(new Date());
+				item.setUpdateUser(AuthUtil.getUserId());
+				//计算小计
+				item.setSubTotalMoney(item.getGoodsNum().multiply(item.getPrice()));
+				if (ObjectUtils.isNull(pjOrder.getStatus()) || "录入".equals(pjOrder.getStatus())) {
+					item.setPrimaryGoodsTotalNum(item.getGoodsNum());
+				}
+				//计算成本
+				item.setCostprie(item.getGoodsNum().multiply(inventoryCostPrice));
+				item.setCostpriePrice(inventoryCostPrice);
+				item.setRebateCostprie(item.getGoodsNum().multiply(rebateInventoryCostPrice));
+				//计算毛利
+				item.setGrossProfit(item.getSubTotalMoney().subtract(item.getCostprie()));
+				item.setRebateProfit(item.getSubTotalMoney().subtract(item.getRebateCostprie()));
+				orderItemsService.saveOrUpdate(item);
+			}
+			//毛利
+			pjOrder.setGrossProfit(itemsList.stream().map(PjOrderItems::getGrossProfit).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+			//成本
+			pjOrder.setCost(itemsList.stream().map(PjOrderItems::getCostprie).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+			pjOrder.setRebateGrossProfit(itemsList.stream().map(PjOrderItems::getRebateProfit).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+			//成本
+			pjOrder.setRebateCost(itemsList.stream().map(PjOrderItems::getRebateCostprie).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 
+		}
 		pjShip.setBusinesDate(new Date());
 		pjShip.setBillno(billNo);
 		pjShip.setOrdNo(pjOrder.getOrdNo());
@@ -3381,13 +3448,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 		}*/
 		//内部销售修改上架管理的库存
 		if (pjOrder.getBusinessSource().equals(OrderTypeEnum.WEB.getType())) {
-			LambdaQueryWrapper<PjOrderItems> itemsLambdaQueryWrapper = new LambdaQueryWrapper<>();
-			itemsLambdaQueryWrapper.eq(PjOrderItems::getTenantId, AuthUtil.getTenantId())
-				.eq(PjOrderItems::getIsDeleted, 0)
-				.eq(PjOrderItems::getPid, pjOrder.getId());
-			List<PjOrderItems> itemsList = orderItemsService.list(itemsLambdaQueryWrapper);
 			if (ObjectUtil.isNotEmpty(itemsList)) {
-				List<Long> goodsId = itemsList.stream().map(PjOrderItems::getGoodsId).distinct().collect(Collectors.toList());
 				List<String> goodsNames = itemsList.stream().map(PjOrderItems::getGoodsName).distinct().collect(Collectors.toList());
 				for (PjOrderItems item : itemsList) {
 					item.setBillKey(item.getGoodsId() + item.getDot());