Browse Source

2024年5月14日13:33:15

纪新园 1 year ago
parent
commit
ea8b62fffc

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

@@ -76,5 +76,11 @@ public class SaleDetail {
 	@ExcelIgnore
 	private String chargeback;
 
+	/**
+	 * 仓库
+	 */
+	@ExcelIgnore
+	private String storageId;
+
 
 }

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

@@ -152,9 +152,12 @@
         AND find_in_set(po.bs_type,#{saleDetailDto.bsType})
         AND poi.tenant_id = #{saleDetailDto.tenantId}
         AND po.tenant_id = #{saleDetailDto.tenantId}
-          <if test="saleDetailDto.salesCompanyId !=null and saleDetailDto.salesCompanyId != ''">
+        <if test="saleDetailDto.salesCompanyId !=null and saleDetailDto.salesCompanyId != ''">
             and find_in_set(po.sales_company_id,#{saleDetailDto.salesCompanyId})
         </if>
+        <if test="saleDetailDto.storageId !=null and saleDetailDto.storageId != ''">
+            and po.storage_id=#{saleDetailDto.storageId}
+        </if>
         <if test="saleDetailDto.customerName !=null and saleDetailDto.customerName != ''">
             and po.customer_name like concat('%', #{saleDetailDto.customerName}, '%')
         </if>
@@ -301,6 +304,9 @@
         <if test="salesCompanyId !=null and salesCompanyId != ''">
             and find_in_set(po.sales_company_id,#{salesCompanyId})
         </if>
+        <if test="storageId !=null and storageId != ''">
+            and po.storage_id=#{storageId}
+        </if>
         <if test="customerName !=null and customerName != ''">
             and po.customer_name like concat('%', #{customerName}, '%')
         </if>

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

@@ -506,28 +506,32 @@ public class StatisticsServiceImpl implements IStatisticsService {
 					number = number.abs();
 					amount = amount.abs();
 					for (SaleDetailDto items : saleDetailDtoList) {
-						if ("TKXS".equals(item.getBsType()) || "TKCG".equals(item.getBsType())){
-							items.setFreight(new BigDecimal("0.00").subtract(items.getFreight()));
-							if (saleDetailDtoList.size() == 1 && number.compareTo(new BigDecimal(1)) <= 0) {
-								items.setSubTotalMoney(items.getSubTotalMoney().add(new BigDecimal("-5.00")));
-							}
-							if (amount.compareTo(items.getSubTotalMoney().abs()) >= 0) {
-								items.setBalanceAmount(new BigDecimal("0.00"));
-								amount = amount.subtract(items.getSubTotalMoney().abs());
-							} else {
-								items.setBalanceAmount(new BigDecimal("0.00").subtract(items.getSubTotalMoney().abs().subtract(amount)));
-								amount = new BigDecimal("0.00");
-							}
+						if ("已取消".equals(items.getStatus())){
+							items.setBalanceAmount(new BigDecimal("0.00"));
 						}else{
-							if (saleDetailDtoList.size() == 1 && number.compareTo(new BigDecimal(1)) <= 0) {
-								items.setSubTotalMoney(items.getSubTotalMoney().add(new BigDecimal("5.00")));
-							}
-							if (amount.compareTo(items.getSubTotalMoney()) >= 0) {
-								items.setBalanceAmount(new BigDecimal("0.00"));
-								amount = amount.subtract(items.getSubTotalMoney());
-							} else {
-								items.setBalanceAmount(items.getSubTotalMoney().subtract(amount));
-								amount = new BigDecimal("0.00");
+							if ("TKXS".equals(item.getBsType()) || "TKCG".equals(item.getBsType())){
+								items.setFreight(new BigDecimal("0.00").subtract(items.getFreight()));
+								if (saleDetailDtoList.size() == 1 && number.compareTo(new BigDecimal(1)) <= 0) {
+									items.setSubTotalMoney(items.getSubTotalMoney().add(new BigDecimal("-5.00")));
+								}
+								if (amount.compareTo(items.getSubTotalMoney().abs()) >= 0) {
+									items.setBalanceAmount(new BigDecimal("0.00"));
+									amount = amount.subtract(items.getSubTotalMoney().abs());
+								} else {
+									items.setBalanceAmount(new BigDecimal("0.00").subtract(items.getSubTotalMoney().abs().subtract(amount)));
+									amount = new BigDecimal("0.00");
+								}
+							}else{
+								if (saleDetailDtoList.size() == 1 && number.compareTo(new BigDecimal(1)) <= 0) {
+									items.setSubTotalMoney(items.getSubTotalMoney().add(new BigDecimal("5.00")));
+								}
+								if (amount.compareTo(items.getSubTotalMoney()) >= 0) {
+									items.setBalanceAmount(new BigDecimal("0.00"));
+									amount = amount.subtract(items.getSubTotalMoney());
+								} else {
+									items.setBalanceAmount(items.getSubTotalMoney().subtract(amount));
+									amount = new BigDecimal("0.00");
+								}
 							}
 						}
 					}

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

@@ -210,25 +210,29 @@ public class StockGoodsServiceImpl extends ServiceImpl<StockGoodsMapper, StockGo
 		StringBuffer storage = new StringBuffer();//未找到仓库的商品
 		List<StockGoodsLog> stockGoodsLogList = new ArrayList<>();
 		Date date = new Date();
-		if (!data.isEmpty()){
+		if (!data.isEmpty()) {
 			List<GoodsDesc> goodsDescList = new ArrayList<>();
 			String code = data.stream().map(StockGoodsExcel::getCode).filter(Objects::nonNull).distinct().collect(Collectors.joining(","));
 			R<List<GoodsDesc>> goodsR = goodsDescClient.getGoodsListByCode(code);
-			if (goodsR.isSuccess()){
+			if (goodsR.isSuccess()) {
 				goodsDescList = goodsR.getData();
 			}
 			List<CorpsDesc> corpsDescList = new ArrayList<>();
 			String corpName = data.stream().map(StockGoodsExcel::getCorpName).filter(Objects::nonNull).distinct().collect(Collectors.joining(","));
 			R<List<CorpsDesc>> corpR = corpsDescClient.getCorpListByCorpName(corpName);
-			if (goodsR.isSuccess()){
+			if (goodsR.isSuccess()) {
 				corpsDescList = corpR.getData();
 			}
 			List<StorageDesc> storageDescList = new ArrayList<>();
 			String storageName = data.stream().map(StockGoodsExcel::getStorageName).filter(Objects::nonNull).distinct().collect(Collectors.joining(","));
 			R<List<StorageDesc>> storageR = storageClient.getStorageList(storageName);
-			if (goodsR.isSuccess()){
+			if (goodsR.isSuccess()) {
 				storageDescList = storageR.getData();
 			}
+			List<StockGoods> stockGoodsList = new ArrayList<>();
+			List<StockGoods> stockGoodList1 = baseMapper.selectList(new LambdaQueryWrapper<StockGoods>()
+				.eq(StockGoods::getTenantId, AuthUtil.getTenantId())
+				.eq(StockGoods::getIsDeleted, 0));
 			for (StockGoodsExcel datum : data) {
 
 				StockGoodsLog stockGoodsLog = new StockGoodsLog();
@@ -253,7 +257,7 @@ public class StockGoodsServiceImpl extends ServiceImpl<StockGoodsMapper, StockGo
 					stockGoods.setWarehouseId(1510440001509326849L);
 				}
 				//获取商品id
-				GoodsDesc goodsDesc = goodsDescList.stream().filter(e-> e.getCode().equals(datum.getCode())).findFirst().orElse(null);
+				GoodsDesc goodsDesc = goodsDescList.stream().filter(e -> e.getCode().equals(datum.getCode())).findFirst().orElse(null);
 				if (goodsDesc != null) {
 					stockGoods.setGoodsId(goodsDesc.getId());
 					if (StringUtils.isNotBlank(goodsDesc.getBrand())) {
@@ -283,8 +287,8 @@ public class StockGoodsServiceImpl extends ServiceImpl<StockGoodsMapper, StockGo
 				}
 				//获取客户id
 				if (StringUtils.isNotBlank(datum.getCorpName())) {
-					CorpsDesc corpsDesc = corpsDescList.stream().filter(e-> e.getCname().equals(datum.getCorpName())).findFirst().orElse(null);
-					if ( corpsDesc != null) {
+					CorpsDesc corpsDesc = corpsDescList.stream().filter(e -> e.getCname().equals(datum.getCorpName())).findFirst().orElse(null);
+					if (corpsDesc != null) {
 						stockGoods.setCorpId(corpsDesc.getId());
 						stockGoods.setCorpName(corpsDesc.getCname());
 					}
@@ -300,7 +304,7 @@ public class StockGoodsServiceImpl extends ServiceImpl<StockGoodsMapper, StockGo
 					continue;
 				}
 				//获取仓库id
-				StorageDesc storageDesc = storageDescList.stream().filter(e-> e.getCname().equals(datum.getStorageName())).findFirst().orElse(null);
+				StorageDesc storageDesc = storageDescList.stream().filter(e -> e.getCname().equals(datum.getStorageName())).findFirst().orElse(null);
 				if (storageDesc != null) {
 					stockGoods.setStorageId(storageDesc.getId());
 				} else {
@@ -308,15 +312,20 @@ public class StockGoodsServiceImpl extends ServiceImpl<StockGoodsMapper, StockGo
 					continue;
 				}
 				//查询库存账
-				StockGoods goods = baseMapper.selectOne(new QueryWrapper<StockGoods>().eq("goods_id", stockGoods.getGoodsId())
+				StockGoods goods = stockGoodList1.stream().filter(e -> e.getGoodsId().equals(stockGoods.getGoodsId())
+					&& e.getCorpId().equals(stockGoods.getCorpId()) && e.getItemType().equals(stockGoods.getItemType())
+					&& e.getStorageId().equals(stockGoods.getStorageId())).findFirst().orElse(null);
+				/*StockGoods goods = baseMapper.selectOne(new QueryWrapper<StockGoods>().eq("goods_id", stockGoods.getGoodsId())
 					.eq("corp_id", stockGoods.getCorpId()).eq("tenant_id", SecureUtil.getTenantId()).eq("is_deleted", 0)
-					.eq("item_type", stockGoods.getItemType()).eq("storage_id", stockGoods.getStorageId()));
+					.eq("item_type", stockGoods.getItemType()).eq("storage_id", stockGoods.getStorageId()));*/
 				if (goods == null) {
 					stockGoods.setCreateTime(new Date());
 					stockGoods.setCreateUser(SecureUtil.getUserId());
 					stockGoods.setLockingQuantity(BigDecimal.ZERO);//锁定数量
-					baseMapper.insert(stockGoods);
+					stockGoodsList.add(stockGoods);
+//					baseMapper.insert(stockGoods);
 				} else {
+					stockGoods.setVersion(goods.getVersion());
 					stockGoodsLog.setStockId(goods.getId());
 					stockGoodsLog.setBalanceQuantityOld(goods.getBalanceQuantity());
 					stockGoodsLog.setSurplusRouteQuantityOld(goods.getSurplusRouteQuantity());
@@ -328,14 +337,16 @@ public class StockGoodsServiceImpl extends ServiceImpl<StockGoodsMapper, StockGo
 					stockGoods.setUpdateTime(new Date());
 					stockGoods.setId(goods.getId());
 					stockGoods.setSurplusRouteQuantity(stockGoods.getSurplusRouteQuantity().subtract(goods.getLockingQuantity()));//可用数量 = 可用减去之前的锁定
-					baseMapper.updateById(stockGoods);
+//					baseMapper.updateById(stockGoods);
+					stockGoodsList.add(stockGoods);
 					stockGoodsLog.setBalanceQuantity(stockGoods.getBalanceQuantity());
 					stockGoodsLog.setSurplusRouteQuantity(stockGoods.getSurplusRouteQuantity());
 					stockGoodsLog.setLockingQuantity(goods.getLockingQuantity());
 					stockGoodsLogList.add(stockGoodsLog);
 				}
 			}
-			stockGoodsLogService.saveOrUpdateBatch(stockGoodsLogList);
+//			stockGoodsLogService.saveOrUpdateBatch(stockGoodsLogList);
+			this.saveOrUpdateBatch(stockGoodsList);
 		}
 		String message = new String("导入成功");
 		if (StringUtils.isNotBlank(good)) {
@@ -489,7 +500,7 @@ public class StockGoodsServiceImpl extends ServiceImpl<StockGoodsMapper, StockGo
 			.eq(StockGoods::getTenantId, AuthUtil.getTenantId())
 			.eq(StockGoods::getIsDeleted, 0));
 		for (StockGoods stockGoods : list) {
-			List<OrderVO> orderVOList = baseMapper.orderInventoryList(AuthUtil.getTenantId(),"GN","XS", stockGoods.getGoodsId(), stockGoods.getCorpId(), stockGoods.getStorageId());
+			List<OrderVO> orderVOList = baseMapper.orderInventoryList(AuthUtil.getTenantId(), "GN", "XS", stockGoods.getGoodsId(), stockGoods.getCorpId(), stockGoods.getStorageId());
 //				List<OrderVO> orderVOList = orderDescClient.orderInventoryList("XS", stockGoods.getGoodsId(), stockGoods.getCorpId(), stockGoods.getStorageId());
 			if (ObjectUtils.isNull(orderVOList) || orderVOList.size() == 0) {
 				stockGoods.setLockingQuantity(new BigDecimal("0"));