Bladeren bron

feat: 商品进销存

Joburgess 5 jaren geleden
bovenliggende
commit
a69b38d331

+ 3 - 9
mec-biz/src/main/java/com/ym/mec/biz/service/impl/GoodsServiceImpl.java

@@ -318,13 +318,11 @@ public class GoodsServiceImpl extends BaseServiceImpl<Integer, Goods>  implement
 			if(StockType.INTERNAL.equals(noneBatchNoSellOrder.getStockType())||(StockType.ALL.equals(noneBatchNoSellOrder.getStockType())&&AccountType.INTERNAL.equals(noneBatchNoSellOrder.getAccountType()))){
 				goodsProcurement = goodsProcurementDao.getWithStockSurplusProcurement(noneBatchNoSellOrder.getGoodsId());
 				if(Objects.nonNull(goodsProcurement)){
-					goodsProcurement.setStockCount(new AtomicInteger(goodsProcurement.getStockCount()).decrementAndGet());
 					goodsProcurement.setStockSoldNum(new AtomicInteger(goodsProcurement.getStockSoldNum()).incrementAndGet());
 				}
 			}else if(StockType.EXTERNAL.equals(noneBatchNoSellOrder.getStockType())||(StockType.ALL.equals(noneBatchNoSellOrder.getStockType())&&AccountType.EXTERNAL.equals(noneBatchNoSellOrder.getAccountType()))){
 				goodsProcurement = goodsProcurementDao.getWithTaxStockSurplusProcurement(noneBatchNoSellOrder.getGoodsId());
 				if(Objects.nonNull(goodsProcurement)){
-					goodsProcurement.setTaxStockCount(new AtomicInteger(goodsProcurement.getTaxStockCount()).decrementAndGet());
 					goodsProcurement.setTaxStockSoldNum(new AtomicInteger(goodsProcurement.getTaxStockSoldNum()).incrementAndGet());
 				}
 			}
@@ -369,14 +367,12 @@ public class GoodsServiceImpl extends BaseServiceImpl<Integer, Goods>  implement
 					goodsProcurement = goodsProcurementDao.getWithStockSurplusProcurement(goods.getId());
 					goods.setStockCount(new AtomicInteger(goods.getStockCount()).decrementAndGet());
 					if(Objects.nonNull(goodsProcurement)){
-						goodsProcurement.setStockCount(new AtomicInteger(goodsProcurement.getStockCount()).decrementAndGet());
 						goodsProcurement.setStockSoldNum(new AtomicInteger(goodsProcurement.getStockSoldNum()).incrementAndGet());
 					}
 				}else if(StockType.EXTERNAL.equals(goods.getStockType())||(StockType.ALL.equals(goods.getStockType())&&AccountType.EXTERNAL.equals(accountType))){
 					goodsProcurement = goodsProcurementDao.getWithTaxStockSurplusProcurement(goods.getId());
 					goods.setTaxStockCount(new AtomicInteger(goods.getTaxStockCount()).decrementAndGet());
 					if(Objects.nonNull(goodsProcurement)){
-						goodsProcurement.setTaxStockCount(new AtomicInteger(goodsProcurement.getTaxStockCount()).decrementAndGet());
 						goodsProcurement.setTaxStockSoldNum(new AtomicInteger(goodsProcurement.getTaxStockSoldNum()).incrementAndGet());
 					}
 				}
@@ -459,13 +455,11 @@ public class GoodsServiceImpl extends BaseServiceImpl<Integer, Goods>  implement
 			if(StockType.INTERNAL.equals(goods.getStockType())||(StockType.ALL.equals(goods.getStockType())&&AccountType.INTERNAL.equals(accountType))){
 				goods.setStockCount(new AtomicInteger(goods.getStockCount()).addAndGet(sellOrder.getNum()));
 				if(Objects.nonNull(goodsProcurement)){
-					goodsProcurement.setStockCount(new AtomicInteger(goodsProcurement.getStockCount()).addAndGet(sellOrder.getNum()));
 					goodsProcurement.setStockSoldNum(new AtomicInteger(goodsProcurement.getStockSoldNum()).addAndGet(-sellOrder.getNum()));
 				}
 			}else if(StockType.EXTERNAL.equals(goods.getStockType())||(StockType.ALL.equals(goods.getStockType())&&AccountType.EXTERNAL.equals(accountType))){
 				goods.setTaxStockCount(new AtomicInteger(goods.getTaxStockCount()).addAndGet(sellOrder.getNum()));
 				if(Objects.nonNull(goodsProcurement)){
-					goodsProcurement.setTaxStockCount(new AtomicInteger(goodsProcurement.getTaxStockCount()).addAndGet(sellOrder.getNum()));
 					goodsProcurement.setTaxStockSoldNum(new AtomicInteger(goodsProcurement.getTaxStockSoldNum()).addAndGet(-sellOrder.getNum()));
 				}
 			}
@@ -477,11 +471,11 @@ public class GoodsServiceImpl extends BaseServiceImpl<Integer, Goods>  implement
 		}
 
 		//处理组合商品
-		Map<Integer, Long> goodsNumMap = sellOrders.stream().filter(so -> Objects.nonNull(so.getParentGoodsId())).collect(Collectors.groupingBy(SellOrder::getId, Collectors.counting()));
+		Map<Integer, Long> goodsNumMap = sellOrders.stream().filter(so -> Objects.nonNull(so.getParentGoodsId())).collect(Collectors.groupingBy(SellOrder::getParentGoodsId, Collectors.counting()));
 		for (Map.Entry<Integer, Long> goodsIdNumMapEntry : goodsNumMap.entrySet()) {
 			Goods goods = idGoodsMap.get(goodsIdNumMapEntry.getKey());
-			int complementGoodsSize = goods.getComplementGoodsIdList().split(",").length;
-			int sellNum = (int) (goodsIdNumMapEntry.getValue()/complementGoodsSize);
+			int goodSize = (int) sellOrders.stream().filter(so -> goodsIdNumMapEntry.getKey().equals(so.getParentGoodsId())).count();
+			int sellNum = (int) (goodSize/goodsIdNumMapEntry.getValue());
 			goods.setSellCount(new AtomicInteger(goods.getSellCount()).addAndGet(-sellNum));
 			goodsDao.update(goods);
 		}

+ 2 - 2
mec-biz/src/main/resources/config/mybatis/GoodsProcurementMapper.xml

@@ -134,11 +134,11 @@
 	</select>
 
 	<select id="getWithStockSurplusProcurement" resultMap="GoodsProcurement">
-		SELECT * FROM goods_procurement WHERE goods_id_ = #{goodsId} AND stock_count_>stock_sold_num_ ORDER BY create_time_ DESC LIMIT 1
+		SELECT * FROM goods_procurement WHERE goods_id_ = #{goodsId} AND stock_count_>stock_sold_num_ ORDER BY create_time_ LIMIT 1
 	</select>
 
 	<select id="getWithTaxStockSurplusProcurement" resultMap="GoodsProcurement">
-		SELECT * FROM goods_procurement WHERE goods_id_ = #{goodsId} AND tax_stock_count_>tax_stock_sold_num_ ORDER BY create_time_ DESC LIMIT 1
+		SELECT * FROM goods_procurement WHERE goods_id_ = #{goodsId} AND tax_stock_count_>tax_stock_sold_num_ ORDER BY create_time_ LIMIT 1
 	</select>
 
 	<select id="getWithGoodsAndBatchNo" resultMap="GoodsProcurement">

+ 1 - 1
mec-biz/src/main/resources/config/mybatis/SellOrderMapper.xml

@@ -497,6 +497,6 @@
     </select>
 
     <select id="getNoneBatchNoSellOrders" resultMap="SellOrder">
-        SELECT * FROM sell_order WHERE stock_type_ IS NOT NULL AND batch_no_ IS NULL
+        SELECT * FROM sell_order WHERE status_ = 0 AND stock_type_ IS NOT NULL AND batch_no_ IS NULL
     </select>
 </mapper>