Browse Source

2024年4月17日17:37:03

纪新园 1 year ago
parent
commit
b43ecce4a4

+ 3 - 0
blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjOrderItems.java

@@ -272,5 +272,8 @@ public class PjOrderItems implements Serializable {
 	@TableField(exist = false)
 	private List<PjGoodsFiles> goodsFilesList = new ArrayList<>();
 
+	@TableField(exist = false)
+	private String billKey;
+
 
 }

+ 22 - 0
blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjStockDesc.java

@@ -234,4 +234,26 @@ public class PjStockDesc implements Serializable {
 	@TableField(exist = false)
 	private String ifGrounding;
 
+
+	/**
+	 * 售价1
+	 */
+	@TableField(exist = false)
+	private BigDecimal priceOne;
+	/**
+	 * 售价2
+	 */
+	@TableField(exist = false)
+	private BigDecimal priceTwo;
+	/**
+	 * 售价3
+	 */
+	@TableField(exist = false)
+	private BigDecimal priceThree;
+	/**
+	 * 售价4
+	 */
+	@TableField(exist = false)
+	private BigDecimal priceFour;
+
 }

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

@@ -90,6 +90,9 @@ import java.time.LocalDateTime;
 import java.time.YearMonth;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.function.Function;
+import java.util.function.Predicate;
 import java.util.stream.Collectors;
 
 import static org.springblade.core.secure.utils.AuthUtil.getUser;
@@ -1150,6 +1153,13 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 					}
 				}
 				for (PjOrderItems item : order.getOrderItemsList()) {
+					item.setBillKey(item.getGoodsId() + item.getGoodsNo() + item.getDot());
+				}
+				List<PjOrderItems> reducelList = order.getOrderItemsList().stream().filter(distinctByKey(PjOrderItems::getBillKey)).collect(Collectors.toList());
+				if (reducelList.size() != order.getOrderItemsList().size()) {
+					throw new RuntimeException("明细数据存在重复商品,请先处理后再保存");
+				}
+				for (PjOrderItems item : order.getOrderItemsList()) {
 					BigDecimal balanceQuantity = new BigDecimal("0.00");
 					BigDecimal inventoryAmount = new BigDecimal("0.00");
 					item.setSendNum(new BigDecimal("0.00"));
@@ -2424,4 +2434,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 		historyMapper.insert(history);
 	}
 
+	private static <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor) {
+		Set<Object> seen = ConcurrentHashMap.newKeySet();
+		return t -> seen.add(keyExtractor.apply(t));
+	}
+
 }

+ 0 - 1
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/productLaunch/controller/ProductLaunchController.java

@@ -149,7 +149,6 @@ public class ProductLaunchController extends BladeController {
 					);
 				}
 			}
-//			lambdaQueryWrapper.and(ObjectUtils.isNotNull(productLaunch.getCname()), i -> i.like(PjProductLaunch::getCname, productLaunch.getCname()).or().like(PjProductLaunch::getCnameInt, productLaunch.getCname()));
 		}
 		lambdaQueryWrapper.eq(PjProductLaunch::getSalesCompanyId, AuthUtil.getDeptId());
 		if (ObjectUtils.isNotNull(productLaunch.getBillType()) && productLaunch.getBillType() == 1) {

+ 49 - 19
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/stock/controller/StockDescController.java

@@ -104,19 +104,41 @@ public class StockDescController extends BladeController {
 		if ("0".equals(stockDesc.getWhether())) {
 			lambdaQueryWrapper.ne(PjStockDesc::getBalanceQuantity, 0);
 		}
+		List<PjProductLaunch> pjProductLaunchList = new ArrayList<>();
 		if (ObjectUtil.isNotEmpty(stockDesc.getCname())) {
-			List<PjGoodsDesc> pjGoodsDescs = goodsDescService.list(new LambdaQueryWrapper<PjGoodsDesc>()
-				.eq(PjGoodsDesc::getTenantId, AuthUtil.getTenantId())
-				.eq(PjGoodsDesc::getIsDeleted, 0)
-				.and(i -> i.like(PjGoodsDesc::getCname, stockDesc.getCname()).or().like(PjGoodsDesc::getCnameInt, stockDesc.getCname())));
+			List<PjGoodsDesc> pjGoodsDescs = new ArrayList<>();
+			if (stockDesc.getCname().contains(",")) {
+				String brandName = stockDesc.getCname().substring(0, stockDesc.getCname().indexOf(","));
+				String cname = stockDesc.getCname().substring(stockDesc.getCname().indexOf(",") + 1);
+				pjGoodsDescs = goodsDescService.list(new LambdaQueryWrapper<PjGoodsDesc>()
+					.eq(PjGoodsDesc::getTenantId, AuthUtil.getTenantId())
+					.eq(PjGoodsDesc::getIsDeleted, 0)
+					.and(i -> i.like(PjGoodsDesc::getCname, cname).or().like(PjGoodsDesc::getCnameInt, cname)));
+				lambdaQueryWrapper.like(PjStockDesc::getBrandName, brandName);
+			} else {
+				String[] chineseWords = stockDesc.getCname().split("[^一-龥]");
+				if (chineseWords.length > 0) {
+					String cname = stockDesc.getCname().substring(chineseWords[0].length());
+					pjGoodsDescs = goodsDescService.list(new LambdaQueryWrapper<PjGoodsDesc>()
+						.eq(PjGoodsDesc::getTenantId, AuthUtil.getTenantId())
+						.eq(PjGoodsDesc::getIsDeleted, 0)
+						.and(i -> i.like(PjGoodsDesc::getCname, cname).or().like(PjGoodsDesc::getCnameInt, cname)));
+					lambdaQueryWrapper.like(PjStockDesc::getBrandName, chineseWords[0]);
+				} else {
+					pjGoodsDescs = goodsDescService.list(new LambdaQueryWrapper<PjGoodsDesc>()
+						.eq(PjGoodsDesc::getTenantId, AuthUtil.getTenantId())
+						.eq(PjGoodsDesc::getIsDeleted, 0)
+						.and(i -> i.like(PjGoodsDesc::getCname, stockDesc.getCname()).or().like(PjGoodsDesc::getCnameInt, stockDesc.getCname())));
+				}
+			}
 			if (!pjGoodsDescs.isEmpty()) {
 				List<Long> ids = pjGoodsDescs.stream().map(PjGoodsDesc::getId).collect(Collectors.toList());
+				pjProductLaunchList = productLaunchService.list(new LambdaQueryWrapper<PjProductLaunch>()
+					.eq(PjProductLaunch::getTenantId, AuthUtil.getTenantId())
+					.eq(PjProductLaunch::getIsDeleted, 0)
+					.in(PjProductLaunch::getGoodsId, ids)
+					.eq(PjProductLaunch::getSalesCompanyId, AuthUtil.getDeptId()));
 				if ("0".equals(stockDesc.getIfGrounding()) || "1".equals(stockDesc.getIfGrounding())) {
-					List<PjProductLaunch> pjProductLaunchList = productLaunchService.list(new LambdaQueryWrapper<PjProductLaunch>()
-						.eq(PjProductLaunch::getTenantId, AuthUtil.getTenantId())
-						.eq(PjProductLaunch::getIsDeleted, 0)
-						.in(PjProductLaunch::getGoodsId, ids)
-						.eq(PjProductLaunch::getSalesCompanyId, AuthUtil.getDeptId()));
 					if (!pjProductLaunchList.isEmpty()) {
 						List<Long> goodIds = pjProductLaunchList.stream().map(PjProductLaunch::getGoodsId).collect(Collectors.toList());
 						if ("0".equals(stockDesc.getIfGrounding())) {
@@ -126,19 +148,19 @@ public class StockDescController extends BladeController {
 						}
 						lambdaQueryWrapper.like(PjStockDesc::getCname, stockDesc.getCname());
 					}
-				}else{
+				} else {
 					lambdaQueryWrapper.and(i -> i.like(PjStockDesc::getCname, stockDesc.getCname())
 						.or().in(PjStockDesc::getGoodsId, ids));
 				}
 			} else {
 				lambdaQueryWrapper.like(PjStockDesc::getCname, stockDesc.getCname());
 			}
-		}else{
+		} else {
+			pjProductLaunchList = productLaunchService.list(new LambdaQueryWrapper<PjProductLaunch>()
+				.eq(PjProductLaunch::getTenantId, AuthUtil.getTenantId())
+				.eq(PjProductLaunch::getIsDeleted, 0)
+				.eq(PjProductLaunch::getSalesCompanyId, AuthUtil.getDeptId()));
 			if ("0".equals(stockDesc.getIfGrounding()) || "1".equals(stockDesc.getIfGrounding())) {
-				List<PjProductLaunch> pjProductLaunchList = productLaunchService.list(new LambdaQueryWrapper<PjProductLaunch>()
-					.eq(PjProductLaunch::getTenantId, AuthUtil.getTenantId())
-					.eq(PjProductLaunch::getIsDeleted, 0)
-					.eq(PjProductLaunch::getSalesCompanyId, AuthUtil.getDeptId()));
 				if (!pjProductLaunchList.isEmpty()) {
 					List<Long> ids = pjProductLaunchList.stream().map(PjProductLaunch::getGoodsId).collect(Collectors.toList());
 					if ("0".equals(stockDesc.getIfGrounding())) {
@@ -149,6 +171,7 @@ public class StockDescController extends BladeController {
 				}
 			}
 		}
+		lambdaQueryWrapper.orderByDesc(PjStockDesc::getBalanceQuantity);
 		IPage<PjStockDesc> pages = stockDescService.page(Condition.getPage(query), lambdaQueryWrapper);
 		if (!pages.getRecords().isEmpty()) {
 
@@ -171,6 +194,13 @@ public class StockDescController extends BladeController {
 					.in("pid", brandIds).eq("is_deleted", 0));
 			}
 			for (PjStockDesc item : pages.getRecords()) {
+				PjProductLaunch pjProductLaunch = pjProductLaunchList.stream().filter(e -> e.getGoodsId().equals(item.getGoodsId())).findFirst().orElse(null);
+				if (pjProductLaunch != null) {
+					item.setPriceOne(pjProductLaunch.getPriceOne());
+					item.setPriceTwo(pjProductLaunch.getPriceTwo());
+					item.setPriceThree(pjProductLaunch.getPriceThree());
+					item.setPriceFour(pjProductLaunch.getPriceFour());
+				}
 				if (!goodsFilesList.isEmpty()) {
 					item.setGoodsFilesList(goodsFilesList.stream()
 						.filter(e -> e.getPid().equals(item.getGoodsId()))
@@ -382,14 +412,14 @@ public class StockDescController extends BladeController {
 							lambdaQueryWrapper.in(PjStockDesc::getGoodsId, goodIds);
 						}
 					}
-				}else{
+				} else {
 					lambdaQueryWrapper.and(i -> i.like(PjStockDesc::getCname, stockDesc.getCname())
 						.or().in(PjStockDesc::getGoodsId, ids));
 				}
 			} else {
 				lambdaQueryWrapper.like(PjStockDesc::getCname, stockDesc.getCname());
 			}
-		}else{
+		} else {
 			if ("0".equals(stockDesc.getIfGrounding()) || "1".equals(stockDesc.getIfGrounding())) {
 				List<PjProductLaunch> pjProductLaunchList = productLaunchService.list(new LambdaQueryWrapper<PjProductLaunch>()
 					.eq(PjProductLaunch::getTenantId, AuthUtil.getTenantId())
@@ -452,14 +482,14 @@ public class StockDescController extends BladeController {
 						}
 						lambdaQueryWrapper.like(PjStockDesc::getCname, stockDesc.getCname());
 					}
-				}else{
+				} else {
 					lambdaQueryWrapper.and(i -> i.like(PjStockDesc::getCname, stockDesc.getCname())
 						.or().in(PjStockDesc::getGoodsId, ids));
 				}
 			} else {
 				lambdaQueryWrapper.like(PjStockDesc::getCname, stockDesc.getCname());
 			}
-		}else{
+		} else {
 			if ("0".equals(stockDesc.getIfGrounding()) || "1".equals(stockDesc.getIfGrounding())) {
 				List<PjProductLaunch> pjProductLaunchList = productLaunchService.list(new LambdaQueryWrapper<PjProductLaunch>()
 					.eq(PjProductLaunch::getTenantId, AuthUtil.getTenantId())