Browse Source

2024年4月15日17:44:48

纪新园 1 year ago
parent
commit
0a4dc609af

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

@@ -127,5 +127,11 @@ public class SaleDetailDto {
 	@ExcelProperty(value = "单据状态")
 	private String status;
 
+	/**
+	 * 商品名称Id
+	 */
+	@ExcelProperty(value = "商品名称Id")
+	private String goodsId;
+
 
 }

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

@@ -1906,7 +1906,7 @@ public class DeliveryServiceImpl extends ServiceImpl<DeliveryMapper, Delivery> i
 		//获得商品品牌
 		List<DeliveryItems> deliveryItemsList = deliveryItemsMapper.selectList(new LambdaQueryWrapper<DeliveryItems>()
 			.eq(DeliveryItems::getIsDeleted, 0).eq(DeliveryItems::getPid, select.getId()));
-		if (deliveryItemsList.size() > 0) {
+		if (!deliveryItemsList.isEmpty()) {
 			R<GoodsDescVO> goods = goodsDescClient.selectGoodsMessage(deliveryItemsList.get(0).getItemId());
 			if (goods.isSuccess() && goods.getData() != null) {
 				brand = goods.getData().getBrand();

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

@@ -192,9 +192,15 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, PjCorpsDe
 				corpsDesc.setBrandName(pjBrandDescList.stream().map(PjBrandDesc::getCname).collect(Collectors.joining(",")));
 			}
 		}
-
+		List<PjCorpsDesc> pjCorpsDesc = baseMapper.selectList(new LambdaQueryWrapper<PjCorpsDesc>()
+			.eq(PjCorpsDesc::getTenantId, AuthUtil.getTenantId())
+			.eq(PjCorpsDesc::getIsDeleted, 0)
+			.eq(PjCorpsDesc::getCname, corpsDesc.getCname()));
 		//保存客户信息
 		if (corpsDesc.getId() == null) {
+			if (!pjCorpsDesc.isEmpty()) {
+				throw new RuntimeException("客户" + corpsDesc.getCname() + "已存在,请勿重复添加!");
+			}
 			corpsDesc.setTenantId(SecureUtil.getTenantId());
 			corpsDesc.setCreateDept(Long.valueOf(SecureUtil.getDeptId()));
 			corpsDesc.setCreateTime(date);
@@ -204,6 +210,10 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, PjCorpsDe
 			corpsDesc.setEnableOrNot(1);
 			baseMapper.insert(corpsDesc);
 		} else {
+			List<Long> ids = pjCorpsDesc.stream().map(PjCorpsDesc::getId).distinct().collect(Collectors.toList());
+			if (pjCorpsDesc.size() > 1 && ids.contains(corpsDesc.getId())) {
+				throw new RuntimeException("客户" + corpsDesc.getCname() + "已存在,请勿重复添加!");
+			}
 			corpsDesc.setTenantId(SecureUtil.getTenantId());
 			corpsDesc.setUpdateTime(date);
 			corpsDesc.setCreateDept(Long.valueOf(SecureUtil.getDeptId()));
@@ -864,7 +874,14 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, PjCorpsDe
 				throw new RuntimeException("创建用户失败");
 			}
 		}
+		List<PjCorpsDesc> pjCorpsDesc = baseMapper.selectList(new LambdaQueryWrapper<PjCorpsDesc>()
+			.eq(PjCorpsDesc::getTenantId, AuthUtil.getTenantId())
+			.eq(PjCorpsDesc::getIsDeleted, 0)
+			.eq(PjCorpsDesc::getCname, corpsDesc.getCname()));
 		if (null == corpsDesc.getId()) {
+			if (!pjCorpsDesc.isEmpty()) {
+				throw new RuntimeException("客户" + corpsDesc.getCname() + "已存在,请勿重复添加!");
+			}
 			corpsDesc.setTenantId(SecureUtil.getTenantId());
 			corpsDesc.setCreateDept(Long.valueOf(SecureUtil.getDeptId()));
 			corpsDesc.setCreateTime(date);
@@ -916,6 +933,10 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, PjCorpsDe
 			//保存客户与类别对应关系
 			this.saveOrUpdateTypeDesc(corpsDesc, userId, pId, date, tenantId);
 		} else {
+			List<Long> ids = pjCorpsDesc.stream().map(PjCorpsDesc::getId).distinct().collect(Collectors.toList());
+			if (pjCorpsDesc.size() > 1 && ids.contains(corpsDesc.getId())) {
+				throw new RuntimeException("客户" + corpsDesc.getCname() + "已存在,请勿重复添加!");
+			}
 			corpsDesc.setUpdateTime(new Date());
 			corpsDesc.setUpdateUser(AuthUtil.getUserId());
 			baseMapper.updateById(corpsDesc);

+ 9 - 1
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/goods/controller/GoodsDescController.java

@@ -117,7 +117,7 @@ public class GoodsDescController extends BladeController {
 
 		lambdaQueryWrapper.select(PjGoodsDesc::getId,PjGoodsDesc::getCname,PjGoodsDesc::getCode,PjGoodsDesc::getSpecificationAndModel,PjGoodsDesc::getBrandItem,
 				PjGoodsDesc::getBrandName,PjGoodsDesc::getGoodsSize,PjGoodsDesc::getInventoryAlert,PjGoodsDesc::getGoodsDescription,
-				PjGoodsDesc::getStatus).eq(PjGoodsDesc::getTenantId, AuthUtil.getTenantId())
+				PjGoodsDesc::getStatus,PjGoodsDesc::getEnableOrNot).eq(PjGoodsDesc::getTenantId, AuthUtil.getTenantId())
 			.eq(PjGoodsDesc::getIsDeleted, 0)
 			.eq(PjGoodsDesc::getSalesCompanyId, AuthUtil.getDeptId())//公司
 			.like(StringUtils.isNotBlank(goods.getSpecificationAndModel()), PjGoodsDesc::getSpecificationAndModel, goods.getSpecificationAndModel())//规格型号
@@ -261,6 +261,14 @@ public class GoodsDescController extends BladeController {
 	}
 
 	/**
+	 * 同步基础资料
+	 */
+	@GetMapping("/synchronization")
+	public R importDesc() {
+		return goodsDescService.synchronization();
+	}
+
+	/**
 	 * 导出模板
 	 */
 	@GetMapping("/export-template")

+ 1 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/goods/service/IGoodsDescService.java

@@ -91,4 +91,5 @@ public interface IGoodsDescService extends IService<PjGoodsDesc> {
 	 */
 	PjGoodsDesc getGoodsDetail(PjGoodsDesc goodsDesc);
 
+	R synchronization();
 }

+ 74 - 1
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/goods/service/impl/GoodsDescServiceImpl.java

@@ -328,6 +328,11 @@ public class GoodsDescServiceImpl extends ServiceImpl<GoodsDescMapper, PjGoodsDe
 			deptList = res.getData();
 		}
 		List<Dept> finalDeptList = deptList;
+		String cnames = data.stream().map(GoodsExcel::getCname).distinct().filter(Objects::nonNull).collect(Collectors.joining(","));
+		List<PjStockDesc> stockDescList = stockDescService.list(new LambdaQueryWrapper<PjStockDesc>()
+			.eq(PjStockDesc::getIsDeleted, 0)
+			.eq(PjStockDesc::getTenantId, AuthUtil.getTenantId())
+			.apply("find_in_set(cname,'" + cnames + "')"));
 		int q = 0;
 		List<PjGoodsDesc> pjGoodsDescList = new ArrayList<>();
 		for (GoodsExcel e : data) {
@@ -461,6 +466,11 @@ public class GoodsDescServiceImpl extends ServiceImpl<GoodsDescMapper, PjGoodsDe
 				if (countName > 1) {
 					throw new ServiceException(goodsDesc.getCname() + "名称已存在");
 				}
+				BigDecimal balanceQuantity = stockDescList.stream().filter(item -> item.getCname().equals(e.getCname()))
+					.map(PjStockDesc::getBalanceQuantity).reduce(BigDecimal.ZERO, BigDecimal::add);
+				if (balanceQuantity.compareTo(new BigDecimal("0")) != 0) {
+					goodsDesc.setWhether(null);
+				}
 				goodsDesc.setUpdateTime(new Date());
 				goodsDesc.setUpdateUser(AuthUtil.getUserId());
 				goodsDesc.setId(one.getId());
@@ -481,7 +491,7 @@ public class GoodsDescServiceImpl extends ServiceImpl<GoodsDescMapper, PjGoodsDe
 				goodsTypeDescMapper.insert(goodsTypeDes);
 			}
 		}
-		return R.success("ok");
+		return R.success("导入成功,请及时同步商品信息");
 	}
 
 	/**
@@ -498,6 +508,69 @@ public class GoodsDescServiceImpl extends ServiceImpl<GoodsDescMapper, PjGoodsDe
 		return desc;
 	}
 
+	@Override
+	public R synchronization() {
+		List<PjGoodsDesc> goodsDescList = baseMapper.selectList(new LambdaQueryWrapper<PjGoodsDesc>()
+			.eq(PjGoodsDesc::getTenantId, AuthUtil.getTenantId())
+			.eq(PjGoodsDesc::getIsDeleted, 0)
+			.eq(PjGoodsDesc::getSalesCompanyId, AuthUtil.getDeptId()));
+		List<PjProductLaunch> pjProductLaunchList = new ArrayList<>();
+		List<PjProductLaunch> pjProductLaunchUpdateList = new ArrayList<>();
+		List<PjStockDesc> pjStockDescList = new ArrayList<>();
+		List<PjStockDesc> pjStockDescUpdateList = new ArrayList<>();
+		if (!goodsDescList.isEmpty()) {
+			List<Long> goodsId = goodsDescList.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, goodsId));
+			pjStockDescList = stockDescService.list(new LambdaQueryWrapper<PjStockDesc>()
+				.eq(PjStockDesc::getTenantId, AuthUtil.getTenantId())
+				.eq(PjStockDesc::getIsDeleted, 0)
+				.in(PjStockDesc::getGoodsId, goodsId));
+			for (PjGoodsDesc item : goodsDescList) {
+				if (!pjProductLaunchList.isEmpty()) {
+					PjProductLaunch productLaunch = pjProductLaunchList.stream().filter(e -> e.getGoodsId().equals(item.getId())).findFirst().orElse(null);
+					if (productLaunch != null) {
+						productLaunch.setCname(item.getCname());
+						productLaunch.setSpecificationAndModel(item.getSpecificationAndModel());
+						productLaunch.setBrandId(item.getBrandId());
+						productLaunch.setBrandName(item.getBrandName());
+						productLaunch.setBrandItem(item.getBrandItem());
+						productLaunch.setPlaceProduction(item.getPlaceProduction());
+						productLaunch.setCnameInt(item.getCnameInt());
+						productLaunch.setExplosionProof(item.getExplosionProof());
+						productLaunch.setOriginalFactory(item.getOriginalFactory());
+						productLaunch.setSelfRecovery(item.getSelfRecovery());
+						pjProductLaunchUpdateList.add(productLaunch);
+					}
+				}
+				if (!pjStockDescList.isEmpty()) {
+					PjStockDesc stock = pjStockDescList.stream().filter(e -> e.getGoodsId().equals(item.getId())).findFirst().orElse(null);
+					if (stock != null) {
+						stock.setCname(item.getCname());
+						stock.setCode(item.getCode());
+						stock.setTypeno(item.getSpecificationAndModel());
+						stock.setBrandId(item.getBrandId());
+						stock.setBrandName(item.getBrandName());
+						stock.setBrandItem(item.getBrandItem());
+						stock.setProductDescription(item.getGoodsDescription());
+						stock.setGoodsTypeId(item.getGoodsTypeId());
+						stock.setGoodsTypeName(item.getGoodsTypeName());
+						pjStockDescUpdateList.add(stock);
+					}
+				}
+			}
+			if (!pjProductLaunchUpdateList.isEmpty()) {
+				productLaunchService.updateBatchById(pjProductLaunchUpdateList);
+			}
+			if (!pjStockDescUpdateList.isEmpty()) {
+				stockDescService.updateBatchById(pjStockDescUpdateList);
+			}
+		}
+		return R.data("操作成功");
+	}
+
 	/**
 	 * 校验商品唯一性
 	 *

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

@@ -141,6 +141,7 @@
         END AS actualPaymentStatus,
         poi.brand_name AS brandName,
         poi.goods_name AS goodsName,
+        poi.goods_id AS goodsId,
         poi.property_name AS propertyName,
         poi.pattern AS pattern,
         IF

+ 3 - 3
blade-service/blade-stock/src/main/java/org/springblade/stock/service/impl/StockGoodsServiceImpl.java

@@ -212,19 +212,19 @@ public class StockGoodsServiceImpl extends ServiceImpl<StockGoodsMapper, StockGo
 		Date date = new Date();
 		if (!data.isEmpty()){
 			List<GoodsDesc> goodsDescList = new ArrayList<>();
-			String code = data.stream().map(StockGoodsExcel::getCode).filter(Objects::nonNull).collect(Collectors.joining(","));
+			String code = data.stream().map(StockGoodsExcel::getCode).filter(Objects::nonNull).distinct().collect(Collectors.joining(","));
 			R<List<GoodsDesc>> goodsR = goodsDescClient.getGoodsListByCode(code);
 			if (goodsR.isSuccess()){
 				goodsDescList = goodsR.getData();
 			}
 			List<CorpsDesc> corpsDescList = new ArrayList<>();
-			String corpName = data.stream().map(StockGoodsExcel::getCorpName).filter(Objects::nonNull).collect(Collectors.joining(","));
+			String corpName = data.stream().map(StockGoodsExcel::getCorpName).filter(Objects::nonNull).distinct().collect(Collectors.joining(","));
 			R<List<CorpsDesc>> corpR = corpsDescClient.getCorpListByCorpName(corpName);
 			if (goodsR.isSuccess()){
 				corpsDescList = corpR.getData();
 			}
 			List<StorageDesc> storageDescList = new ArrayList<>();
-			String storageName = data.stream().map(StockGoodsExcel::getStorageName).filter(Objects::nonNull).collect(Collectors.joining(","));
+			String storageName = data.stream().map(StockGoodsExcel::getStorageName).filter(Objects::nonNull).distinct().collect(Collectors.joining(","));
 			R<List<StorageDesc>> storageR = storageClient.getStorageList(storageName);
 			if (goodsR.isSuccess()){
 				storageDescList = storageR.getData();