Browse Source

2024年10月8日16:59:14

纪新园 1 year ago
parent
commit
61dda23e61

+ 18 - 0
blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/dto/CorpBuySingular.java

@@ -37,6 +37,24 @@ public class CorpBuySingular {
 	@ExcelProperty(value = "最后一次购买日期")
 	private Date date;
 
+	/**
+	 * 仓库
+	 */
+	@ExcelProperty(value = "仓库")
+	private String deliveryWarehouseName;
+
+	/**
+	 * 业务员
+	 */
+	@ExcelProperty(value = "业务员")
+	private String salesmanName;
+
+	/**
+	 * 购买途径
+	 */
+	@ExcelProperty(value = "购买途径")
+	private String purchaseMethod;
+
 
 	/**
 	 * 业务日期起

+ 27 - 12
blade-service/blade-mocha-item/src/main/java/org/springblade/mocha/service/impl/SalesPolicyServiceImpl.java

@@ -162,16 +162,20 @@ public class SalesPolicyServiceImpl extends ServiceImpl<SalesPolicyMapper, Sales
 		}
 		//回显代理商中文名
 		if (StringUtils.isNotBlank(policy.getCorps())) {
-			List<String> list = Arrays.asList(policy.getCorps().split(","));
+//			List<String> list = Arrays.asList(policy.getCorps().split(","));
 			List<Map<String, Object>> corpList = new ArrayList<>();
-			if (CollectionUtils.isNotEmpty(list)) {
+			R<List<Map<String, Object>>> corpsMessage = corpsDescClient.getCorpsMessage(policy.getCorps());
+			if (corpsMessage.isSuccess() && corpsMessage.getData() != null) {
+				corpList = corpsMessage.getData();
+			}
+			/*if (CollectionUtils.isNotEmpty(list)) {
 				list.forEach(item -> {
 					R<List<Map<String, Object>>> corpsMessage = corpsDescClient.getCorpsMessage(item);
 					if (corpsMessage.isSuccess() && corpsMessage.getData() != null) {
 						corpList.addAll(corpsMessage.getData());
 					}
 				});
-			}
+			}*/
 			policy.setCorpNameList(corpList);
 		}
 		List<SalesPolicyItem> specialItemList = salesPolicyItemMapper.selectList(new QueryWrapper<SalesPolicyItem>().eq("pid", salesPolicy.getId())
@@ -184,15 +188,11 @@ public class SalesPolicyServiceImpl extends ServiceImpl<SalesPolicyMapper, Sales
 				if (updateUserIds.indexOf(items.getUpdateUser().toString()) == -1) {
 					updateUserIds = updateUserIds + items.getUpdateUser() + ",";
 				}
-
-
 			}
 			if (ObjectUtils.isNotNull(items.getCreateUser()) && !"null".equals(items.getCreateUser())) {
 				if(createUserIds.indexOf(items.getCreateUser().toString()) == -1){
 					createUserIds = createUserIds + items.getCreateUser() + ",";
 				}
-
-
 			}
 		}
 
@@ -204,11 +204,19 @@ public class SalesPolicyServiceImpl extends ServiceImpl<SalesPolicyMapper, Sales
 		if (CollectionUtils.isNotEmpty(specialItemList)) {
 			specialItemList.forEach(item -> {
 				if (ObjectUtil.isNotEmpty(updateUserList)) {
-					item.setUpdateUserName(updateUserList.stream().filter(e -> e.getId().equals(item.getUpdateUser())).findFirst().get().getName());
+					User user = updateUserList.stream().filter(e -> e.getId().equals(item.getUpdateUser())).findFirst().orElse(null);
+					if (user != null){
+						item.setUpdateUserName(user.getName());
+					}
+//					item.setUpdateUserName(updateUserList.stream().filter(e -> e.getId().equals(item.getUpdateUser())).findFirst().get().getName());
 				}
 
 				if (ObjectUtil.isNotEmpty(createUserList)) {
-					item.setCreateUserName(createUserList.stream().filter(e -> e.getId().equals(item.getCreateUser())).findFirst().get().getName());
+					User user = updateUserList.stream().filter(e -> e.getId().equals(item.getCreateUser())).findFirst().orElse(null);
+					if (user != null){
+						item.setCreateUserName(user.getName());
+					}
+//					item.setCreateUserName(createUserList.stream().filter(e -> e.getId().equals(item.getCreateUser())).findFirst().get().getName());
 
 				}
 				item.setIsSpecial("特价".equals(policy.getType()) ? 1 : 0);
@@ -230,12 +238,19 @@ public class SalesPolicyServiceImpl extends ServiceImpl<SalesPolicyMapper, Sales
 		if (CollectionUtils.isNotEmpty(presentItemList)) {
 			presentItemList.forEach(item -> {
 				if (ObjectUtil.isNotEmpty(updateUserList2)) {
-					item.setUpdateUserName(updateUserList2.stream().filter(e -> e.getId().equals(item.getUpdateUser())).findFirst().get().getName());
+					User user = updateUserList2.stream().filter(e -> e.getId().equals(item.getUpdateUser())).findFirst().orElse(null);
+					if (user != null){
+						item.setUpdateUserName(user.getName());
+					}
+//					item.setUpdateUserName(updateUserList2.stream().filter(e -> e.getId().equals(item.getUpdateUser())).findFirst().get().getName());
 				}
 
 				if (ObjectUtil.isNotEmpty(createUserList2)) {
-					item.setCreateUserName(createUserList2.stream().filter(e -> e.getId().equals(item.getCreateUser())).findFirst().get().getName());
-
+					User user = updateUserList2.stream().filter(e -> e.getId().equals(item.getCreateUser())).findFirst().orElse(null);
+					if (user != null){
+						item.setCreateUserName(user.getName());
+					}
+//					item.setCreateUserName(createUserList2.stream().filter(e -> e.getId().equals(item.getCreateUser())).findFirst().get().getName());
 				}
 				item.setIsSpecial("特价".equals(policy.getType()) ? 1 : 0);
 			});

+ 4 - 2
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/mapper/OrderItemsMapper.xml

@@ -175,6 +175,7 @@
         po.`status` AS status
         FROM
         `pjpf_order_items` poi
+        LEFT JOIN pjpf_goods_desc pgd ON poi.goods_id = pgd.id
         LEFT JOIN pjpf_order po ON poi.pid = po.id
         LEFT JOIN blade_user bu ON po.saler_id = bu.id
         LEFT JOIN pjpf_storage_desc psd on  po.storage_id = psd.id
@@ -206,7 +207,7 @@
             and po.ord_no like concat('%', #{saleDetailDto.ordNo}, '%')
         </if>
         <if test="saleDetailDto.goodsName !=null and saleDetailDto.goodsName != ''">
-            and poi.goods_name like concat('%', #{saleDetailDto.goodsName}, '%')
+            and (poi.goods_name like concat('%', #{saleDetailDto.goodsName}, '%') or pgd.cname_int like concat('%', #{saleDetailDto.goodsName}, '%'))
         </if>
         <if test="saleDetailDto.actualPaymentStatus !=null and saleDetailDto.actualPaymentStatus != ''">
             and po.actual_payment_status =#{saleDetailDto.actualPaymentStatus}
@@ -375,6 +376,7 @@
         po.`status` AS status
         FROM
         `pjpf_order_items` poi
+        LEFT JOIN pjpf_goods_desc pgd ON poi.goods_id = pgd.id
         LEFT JOIN pjpf_order po ON poi.pid = po.id
         LEFT JOIN pjpf_storage_desc psd on  po.storage_id = psd.id
         LEFT JOIN blade_user bu ON po.saler_id = bu.id
@@ -406,7 +408,7 @@
             and po.ord_no like concat('%', #{ordNo}, '%')
         </if>
         <if test="goodsName !=null and goodsName != ''">
-            and poi.goods_name like concat('%', #{goodsName}, '%')
+            and (poi.goods_name like concat('%', #{goodsName}, '%') or pgd.cname_int like concat('%', #{goodsName}, '%'))
         </if>
         <if test="actualPaymentStatus !=null and actualPaymentStatus != ''">
             and po.actual_payment_status =#{actualPaymentStatus}

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

@@ -400,7 +400,6 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 								paymentAmountTl = paymentAmountTl.add(items.getPaymentAmountTl());
 								returnPaymentAmountTl = returnPaymentAmountTl.add(items.getReturnsAmount());
 								freight = freight.add(items.getFreight());
-							} else {
 								returnAmount = returnAmount.add(items.getReturnsAmount());
 							}
 						}
@@ -413,7 +412,6 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 										costprie = costprie.add(items.getCostprie());
 										if ((ObjectUtils.isNotNull(items.getReturnsNumber()) &&
 											new BigDecimal("0").compareTo(items.getReturnsNumber()) != 0)) {
-											returnAmount = returnAmount.add(items.getReturnsAmount());
 											if (ObjectUtils.isNotNull(items.getCostprie())) {
 												BigDecimal price = items.getCostprie().divide(items.getGoodsNum(), MathContext.DECIMAL32);
 												returnCostprie = returnCostprie.add(items.getCostprie().subtract(items.getReturnsNumber().multiply(price)));
@@ -442,6 +440,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 							}
 							costprie = costprie.subtract(returnCostprie);*/
 						}
+						if (new BigDecimal("0.00").compareTo(returnPaymentAmountTl) < 0) {
+							returnPaymentAmountTl = new BigDecimal("0.00");
+						}
 						profit = salesAmount.subtract(returnAmount).subtract(costprie);
 						item.setFreight(freight);
 						item.setTotalMoney(salesAmount.subtract(returnAmount));
@@ -488,6 +489,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 							}
 							costprie = costprie.subtract(returnCostprie);
 						}
+						if (new BigDecimal("0.00").compareTo(returnPaymentAmountTl) < 0) {
+							returnPaymentAmountTl = new BigDecimal("0.00");
+						}
 						profit = salesAmount.subtract(costprie).subtract(returnAmount);
 						item.setTotalMoney(salesAmount.subtract(returnAmount));
 						if (new BigDecimal("0.00").compareTo(paymentAmountTl) == 0) {
@@ -598,6 +602,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 							}
 							costprie = costprie.subtract(returnCostprie);*/
 						}
+						if (new BigDecimal("0.00").compareTo(returnPaymentAmountTl) < 0) {
+							returnPaymentAmountTl = new BigDecimal("0.00");
+						}
 						profit = salesAmount.subtract(returnAmount).subtract(costprie);
 						item.setFreight(freight);
 						item.setSalesAmount(salesAmount.subtract(returnAmount));
@@ -644,6 +651,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 							}
 							costprie = costprie.subtract(returnCostprie);
 						}
+						if (new BigDecimal("0.00").compareTo(returnPaymentAmountTl) < 0) {
+							returnPaymentAmountTl = new BigDecimal("0.00");
+						}
 						profit = salesAmount.subtract(costprie).subtract(returnAmount);
 						item.setSalesAmount(salesAmount.subtract(returnAmount));
 						if (new BigDecimal("0.00").compareTo(paymentAmountTl) == 0) {
@@ -2718,6 +2728,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 							}
 							costprie = costprie.subtract(returnCostprie);*/
 						}
+						if (new BigDecimal("0.00").compareTo(returnPaymentAmountTl) < 0) {
+							returnPaymentAmountTl = new BigDecimal("0.00");
+						}
 						profit = salesAmount.subtract(returnAmount).subtract(costprie);
 						item.setFreight(freight);
 						item.setSalesAmount(salesAmount.subtract(returnAmount));
@@ -2764,6 +2777,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 							}
 							costprie = costprie.subtract(returnCostprie);
 						}
+						if (new BigDecimal("0.00").compareTo(returnPaymentAmountTl) < 0) {
+							returnPaymentAmountTl = new BigDecimal("0.00");
+						}
 						profit = salesAmount.subtract(costprie).subtract(returnAmount);
 						item.setSalesAmount(salesAmount.subtract(returnAmount));
 						if (new BigDecimal("0.00").compareTo(paymentAmountTl) == 0) {

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

@@ -569,7 +569,8 @@ public class ProductLaunchController extends BladeController {
 				lambdaQueryWrapper.in(PjProductLaunch::getGoodsId, goodsId);
 			}
 		}
-		if ("0".equals(productLaunch.getWhether())) {
+		String status = iSysClient.getParamService("whether.zero.inventory");
+		if (ObjectUtils.isNull(status) || "0".equals(status)){
 			lambdaQueryWrapper.gt(PjProductLaunch::getInventory, 0);
 		}
 		lambdaQueryWrapper.orderByAsc(PjProductLaunch::getCnameInt);

+ 26 - 14
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/statistics/service/impl/StatisticsServiceImpl.java

@@ -1333,12 +1333,15 @@ public class StatisticsServiceImpl implements IStatisticsService {
 			for (PjCorpsDesc item : corpsDescIPage.getRecords()) {
 				CorpBuySingular corpBuySingular1 = new CorpBuySingular();
 				corpBuySingular1.setCorpName(item.getCname());
+				corpBuySingular1.setDeliveryWarehouseName(item.getDeliveryWarehouseName());
+				corpBuySingular1.setSalesmanName(item.getSalesmanName());
 				if (!orderList.isEmpty()) {
 					List<PjOrder> orders = orderList.stream().filter(e -> e.getCustomerId().equals(item.getId())).collect(Collectors.toList());
 					if (!orders.isEmpty()) {
 						corpBuySingular1.setNum(new BigDecimal(orders.size()));
 						corpBuySingular1.setNumber(orders.stream().map(PjOrder::getGoodsTotalNum).reduce(BigDecimal.ZERO, BigDecimal::add));
 						corpBuySingular1.setDate(orders.get(0).getBusinesDate());
+						corpBuySingular1.setPurchaseMethod(orders.get(0).getBusinessSource());
 					}
 				}
 				corpBuySingularList.add(corpBuySingular1);
@@ -1360,7 +1363,7 @@ public class StatisticsServiceImpl implements IStatisticsService {
 		LambdaQueryWrapper<PjCorpsDesc> lambdaQueryWrapper = new LambdaQueryWrapper<>();
 		lambdaQueryWrapper.eq(PjCorpsDesc::getTenantId, AuthUtil.getTenantId())
 			.eq(PjCorpsDesc::getIsDeleted, 0)
-			.like(ObjectUtils.isNotNull(corpBuySingular), PjCorpsDesc::getCname, corpBuySingular.getCorpName())
+			.like(ObjectUtils.isNotNull(corpBuySingular.getCorpName()), PjCorpsDesc::getCname, corpBuySingular.getCorpName())
 			.eq(PjCorpsDesc::getCorpType, "KH");
 		List<PjCorpsDesc> corpsDescIPage = corpsDescService.list(lambdaQueryWrapper);
 		if (!corpsDescIPage.isEmpty()) {
@@ -1379,20 +1382,23 @@ public class StatisticsServiceImpl implements IStatisticsService {
 			for (PjCorpsDesc item : corpsDescIPage) {
 				CorpBuySingular corpBuySingular1 = new CorpBuySingular();
 				corpBuySingular1.setCorpName(item.getCname());
+				corpBuySingular1.setDeliveryWarehouseName(item.getDeliveryWarehouseName());
+				corpBuySingular1.setSalesmanName(item.getSalesmanName());
 				if (!orderList.isEmpty()) {
 					List<PjOrder> orders = orderList.stream().filter(e -> e.getCustomerId().equals(item.getId())).collect(Collectors.toList());
 					if (!orders.isEmpty()) {
 						corpBuySingular1.setNum(new BigDecimal(orders.size()));
 						corpBuySingular1.setNumber(orders.stream().map(PjOrder::getGoodsTotalNum).reduce(BigDecimal.ZERO, BigDecimal::add));
 						corpBuySingular1.setDate(orders.get(0).getBusinesDate());
+						corpBuySingular1.setPurchaseMethod(orders.get(0).getBusinessSource());
 					}
 				}
 				corpBuySingularList.add(corpBuySingular1);
 			}
 		}
 		if (!corpBuySingularList.isEmpty()) {
-			map.put("num", corpBuySingularList.stream().map(CorpBuySingular::getNum).reduce(BigDecimal.ZERO, BigDecimal::add));
-			map.put("number", corpBuySingularList.stream().map(CorpBuySingular::getNumber).reduce(BigDecimal.ZERO, BigDecimal::add));
+			map.put("num", corpBuySingularList.stream().map(CorpBuySingular::getNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+			map.put("number", corpBuySingularList.stream().map(CorpBuySingular::getNumber).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 		} else {
 			map.put("num", new BigDecimal("0"));
 			map.put("number", new BigDecimal("0"));
@@ -1406,7 +1412,7 @@ public class StatisticsServiceImpl implements IStatisticsService {
 		LambdaQueryWrapper<PjCorpsDesc> lambdaQueryWrapper = new LambdaQueryWrapper<>();
 		lambdaQueryWrapper.eq(PjCorpsDesc::getTenantId, AuthUtil.getTenantId())
 			.eq(PjCorpsDesc::getIsDeleted, 0)
-			.like(ObjectUtils.isNotNull(corpBuySingular), PjCorpsDesc::getCname, corpBuySingular.getCorpName())
+			.like(ObjectUtils.isNotNull(corpBuySingular.getCorpName()), PjCorpsDesc::getCname, corpBuySingular.getCorpName())
 			.eq(PjCorpsDesc::getCorpType, "KH");
 		List<PjCorpsDesc> corpsDescIPage = corpsDescService.list(lambdaQueryWrapper);
 		if (!corpsDescIPage.isEmpty()) {
@@ -1425,12 +1431,15 @@ public class StatisticsServiceImpl implements IStatisticsService {
 			for (PjCorpsDesc item : corpsDescIPage) {
 				CorpBuySingular corpBuySingular1 = new CorpBuySingular();
 				corpBuySingular1.setCorpName(item.getCname());
+				corpBuySingular1.setDeliveryWarehouseName(item.getDeliveryWarehouseName());
+				corpBuySingular1.setSalesmanName(item.getSalesmanName());
 				if (!orderList.isEmpty()) {
 					List<PjOrder> orders = orderList.stream().filter(e -> e.getCustomerId().equals(item.getId())).collect(Collectors.toList());
 					if (!orders.isEmpty()) {
 						corpBuySingular1.setNum(new BigDecimal(orders.size()));
 						corpBuySingular1.setNumber(orders.stream().map(PjOrder::getGoodsTotalNum).reduce(BigDecimal.ZERO, BigDecimal::add));
 						corpBuySingular1.setDate(orders.get(0).getBusinesDate());
+						corpBuySingular1.setPurchaseMethod(orders.get(0).getBusinessSource());
 					}
 				}
 				corpBuySingularList.add(corpBuySingular1);
@@ -1446,7 +1455,7 @@ public class StatisticsServiceImpl implements IStatisticsService {
 		LambdaQueryWrapper<PjCorpsDesc> lambdaQueryWrapper = new LambdaQueryWrapper<>();
 		lambdaQueryWrapper.eq(PjCorpsDesc::getTenantId, AuthUtil.getTenantId())
 			.eq(PjCorpsDesc::getIsDeleted, 0)
-			.like(ObjectUtils.isNotNull(corpBuySingular), PjCorpsDesc::getCname, corpBuySingular.getCorpName())
+			.like(ObjectUtils.isNotNull(corpBuySingular.getCorpName()), PjCorpsDesc::getCname, corpBuySingular.getCorpName())
 			.eq(PjCorpsDesc::getCorpType, "KH");
 		List<PjCorpsDesc> corpsDescIPage = corpsDescService.list(lambdaQueryWrapper);
 		if (!corpsDescIPage.isEmpty()) {
@@ -1465,12 +1474,15 @@ public class StatisticsServiceImpl implements IStatisticsService {
 			for (PjCorpsDesc item : corpsDescIPage) {
 				CorpBuySingular corpBuySingular1 = new CorpBuySingular();
 				corpBuySingular1.setCorpName(item.getCname());
+				corpBuySingular1.setDeliveryWarehouseName(item.getDeliveryWarehouseName());
+				corpBuySingular1.setSalesmanName(item.getSalesmanName());
 				if (!orderList.isEmpty()) {
 					List<PjOrder> orders = orderList.stream().filter(e -> e.getCustomerId().equals(item.getId())).collect(Collectors.toList());
 					if (!orders.isEmpty()) {
 						corpBuySingular1.setNum(new BigDecimal(orders.size()));
 						corpBuySingular1.setNumber(orders.stream().map(PjOrder::getGoodsTotalNum).reduce(BigDecimal.ZERO, BigDecimal::add));
 						corpBuySingular1.setDate(orders.get(0).getBusinesDate());
+						corpBuySingular1.setPurchaseMethod(orders.get(0).getBusinessSource());
 					}
 				}
 				corpBuySingularList.add(corpBuySingular1);
@@ -1485,15 +1497,15 @@ public class StatisticsServiceImpl implements IStatisticsService {
 		list.add("10次以上");
 		List<Long> numberList = new ArrayList<>();
 		if (!corpBuySingularList.isEmpty()) {
-			numberList.add(corpBuySingularList.stream().filter(e -> e.getNum().compareTo(new BigDecimal("0")) == 0).count());
-			numberList.add(corpBuySingularList.stream().filter(e -> e.getNum().compareTo(new BigDecimal("1")) == 0).count());
-			numberList.add(corpBuySingularList.stream().filter(e -> e.getNum().compareTo(new BigDecimal("2")) == 0 ||
-				e.getNum().compareTo(new BigDecimal("3")) == 0).count());
-			numberList.add(corpBuySingularList.stream().filter(e -> e.getNum().compareTo(new BigDecimal("3")) == 0 ||
-				e.getNum().compareTo(new BigDecimal("4")) == 0).count());
-			numberList.add(corpBuySingularList.stream().filter(e -> e.getNum().compareTo(new BigDecimal("5")) >= 0 ||
-				e.getNum().compareTo(new BigDecimal("10")) <= 0).count());
-			numberList.add(corpBuySingularList.stream().filter(e -> e.getNum().compareTo(new BigDecimal("10")) >= 0).count());
+			numberList.add(corpBuySingularList.stream().filter(e -> ObjectUtils.isNotNull(e.getNum()) && e.getNum().compareTo(new BigDecimal("0")) == 0).count());
+			numberList.add(corpBuySingularList.stream().filter(e -> ObjectUtils.isNotNull(e.getNum()) && e.getNum().compareTo(new BigDecimal("1")) == 0).count());
+			numberList.add(corpBuySingularList.stream().filter(e -> ObjectUtils.isNotNull(e.getNum()) && (e.getNum().compareTo(new BigDecimal("2")) == 0 ||
+				e.getNum().compareTo(new BigDecimal("3")) == 0)).count());
+			numberList.add(corpBuySingularList.stream().filter(e -> ObjectUtils.isNotNull(e.getNum()) && (e.getNum().compareTo(new BigDecimal("3")) == 0 ||
+				e.getNum().compareTo(new BigDecimal("4")) == 0)).count());
+			numberList.add(corpBuySingularList.stream().filter(e -> ObjectUtils.isNotNull(e.getNum()) && (e.getNum().compareTo(new BigDecimal("5")) >= 0 ||
+				e.getNum().compareTo(new BigDecimal("10")) <= 0)).count());
+			numberList.add(corpBuySingularList.stream().filter(e -> ObjectUtils.isNotNull(e.getNum()) && e.getNum().compareTo(new BigDecimal("10")) >= 0).count());
 		} else {
 			numberList.add(0L);
 			numberList.add(0L);