瀏覽代碼

feat: 商品进销存

Joburgess 4 年之前
父節點
當前提交
b584c624e8

+ 4 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SellOrderDao.java

@@ -15,6 +15,8 @@ public interface SellOrderDao extends BaseDAO<Integer, SellOrder> {
 
     int batchUpdate(@Param("sellOrders") List<SellOrder> sellOrders);
 
+    List<SellOrder> lockSellOrders(@Param("sellOrderIds") List<Integer> sellOrderIds);
+
     /**
      * 获取订单的销售列表
      *
@@ -157,11 +159,11 @@ public interface SellOrderDao extends BaseDAO<Integer, SellOrder> {
 
     /**
      * @return java.util.List<com.ym.mec.biz.dal.entity.SellOrder>
-     * @describe 获取无批次号商品销售记录
+     * @describe 获取无批次号商品销售记录编号列表
      * @author Joburgess
      * @date 2020.10.13
      */
-    List<SellOrder> getNoneBatchNoSellOrders();
+    List<Integer> getNoneBatchNoSellOrderIds();
 
 
     /**

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

@@ -401,13 +401,18 @@ public class GoodsServiceImpl extends BaseServiceImpl<Integer, Goods>  implement
 	}
 
 	@Override
+	@Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
 	public void sellOrderBatchNoAllot() {
-		List<SellOrder> noneBatchNoSellOrders = sellOrderDao.getNoneBatchNoSellOrders();
-		if(CollectionUtils.isEmpty(noneBatchNoSellOrders)){
+		List<Integer> noneBatchNoSellOrderIds = sellOrderDao.getNoneBatchNoSellOrderIds();
+		if(CollectionUtils.isEmpty(noneBatchNoSellOrderIds)){
 			return;
 		}
+		List<SellOrder> noneBatchNoSellOrders = sellOrderDao.lockSellOrders(noneBatchNoSellOrderIds);
 		List<SellOrder> updateSellOrders = new ArrayList<>();
 		for (SellOrder noneBatchNoSellOrder : noneBatchNoSellOrders) {
+			if(SellStatus.REFUND.equals(noneBatchNoSellOrder.getStatus())){
+				continue;
+			}
 			GoodsProcurement goodsProcurement = null;
 			if(StockType.INTERNAL.equals(noneBatchNoSellOrder.getStockType())||(StockType.ALL.equals(noneBatchNoSellOrder.getStockType())&&AccountType.INTERNAL.equals(noneBatchNoSellOrder.getAccountType()))){
 				goodsProcurement = goodsProcurementDao.getWithStockSurplusProcurement(noneBatchNoSellOrder.getGoodsId());
@@ -573,6 +578,8 @@ public class GoodsServiceImpl extends BaseServiceImpl<Integer, Goods>  implement
 			}
 		});
 
+		goodsDao.lockGoods(new ArrayList<>(goodsIdList));
+
 		for (SellOrder sellOrder : sellOrders) {
 			Goods goods = goodsDao.get(sellOrder.getGoodsId());
 			GoodsProcurement goodsProcurement = goodsProcurementDao.getWithGoodsAndBatchNo(sellOrder.getGoodsId(), sellOrder.getBatchNo());

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

@@ -539,12 +539,19 @@
         </if>
     </select>
 
-    <select id="getNoneBatchNoSellOrders" resultMap="SellOrder">
-        SELECT *
+    <select id="getNoneBatchNoSellOrders" resultType="int">
+        SELECT id_
         FROM sell_order
         WHERE status_ = 0
           AND stock_type_ IS NOT NULL
           AND batch_no_ IS NULL
         ORDER BY sell_time_
     </select>
+
+    <select id="lockSellOrders" resultType="com.ym.mec.biz.dal.entity.SellOrder">
+        SELECT * FROM selll_order WHERE id_ IN
+        <foreach collection="sellOrderIds" item="sellOrderId" open="(" close=")" separator=",">
+            #{sellOrderId}
+        </foreach>
+    </select>
 </mapper>