ソースを参照

库存查询 自定义排序

yzc 1 年間 前
コミット
4ec12efe60

+ 21 - 2
hx-wms/src/main/java/com/fjhx/wms/entity/stock/dto/StockSelectDto.java

@@ -9,7 +9,7 @@ import java.util.List;
 /**
  * 库存列表查询入参实体
  *
- * @author 
+ * @author
  * @since 2023-03-20
  */
 @Getter
@@ -21,7 +21,26 @@ public class StockSelectDto extends BaseSelectDto {
      */
     private List<Long> productIds;
 
-    /**产品定义*/
+    /**
+     * 产品定义
+     */
     private Integer definition;
 
+    /**
+     * 数量排序 1升序 0倒序
+     */
+    private Integer quantitySort;
+    /**
+     * 冻结数量排序 1升序 0倒序
+     */
+    private Integer frozenQuantitySort;
+    /**
+     * 次品数量排序 1升序 0倒序
+     */
+    private Integer defectiveQuantitySort;
+    /**
+     * 按更新时间排序 1升序 0倒序
+     */
+    private Integer updateTimeSort;
+
 }

+ 52 - 2
hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockServiceImpl.java

@@ -67,7 +67,6 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
     @Override
     public Page<StockVo> getPage(StockSelectDto dto) {
         IWrapper<Stock> wrapper = getWrapper();
-        wrapper.orderByDesc("s", Stock::getId);
         wrapper.eq(Stock::getWarehouseId, dto.getId());
 //        wrapper.like(Stock::getQuantity, dto.getKeyword());
         String keyword = dto.getKeyword();
@@ -80,6 +79,10 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
         wrapper.in(Stock::getProductId, dto.getProductIds());
         wrapper.eq("pi.definition", dto.getDefinition());
 
+        //库存查询排序 按 可用库存,冻结库存,次品库存,最后入库时间 排序
+        customSort(wrapper, dto);
+        wrapper.orderByDesc("s", Stock::getId);
+
         Page<StockVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
         List<StockVo> stockVos = page.getRecords();
         //赋值产品信息
@@ -185,7 +188,6 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
     @Override
     public Page<StockVo> pageByProduct(StockSelectDto dto) {
         IWrapper<Stock> wrapper = getWrapper();
-        wrapper.orderByDesc("s", Stock::getId);
         wrapper.eq(Stock::getWarehouseId, dto.getId());
 //        wrapper.like(Stock::getQuantity, dto.getKeyword());
         String keyword = dto.getKeyword();
@@ -197,6 +199,10 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
         }
         wrapper.eq("pi.definition", dto.getDefinition());
         wrapper.groupBy("s.product_id");
+        //库存查询排序 按 可用库存,冻结库存,次品库存,最后入库时间 排序
+        customSort(wrapper, dto);
+        wrapper.orderByDesc("s", Stock::getId);
+
         Page<StockVo> page = this.baseMapper.pageByProduct(dto.getPage(), wrapper);
         List<StockVo> stockVos = page.getRecords();
 
@@ -261,7 +267,17 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
         wrapper.eq("pi.definition", dto.getDefinition());
         wrapper.isNotNull("ps.id");
         wrapper.groupBy("ps.id");
+
+        //按库存数量排序
+        if (ObjectUtil.isNotEmpty(dto.getQuantitySort())) {
+            if (1 == dto.getQuantitySort()) {
+                wrapper.orderByAsc("sum(s.quantity)");
+            } else {
+                wrapper.orderByDesc("sum(s.quantity)");
+            }
+        }
         wrapper.orderByDesc("s", Stock::getId);
+
         Page<StockVo> page = this.baseMapper.pageByProductSpu(dto.getPage(), wrapper);
         //赋值关联产品数
         List<StockVo> records = page.getRecords();
@@ -624,4 +640,38 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
         stockJournalDetailsService.saveBatch(journalDetailsList);
     }
 
+    /**
+     * 库存查询排序 按 可用库存,冻结库存,次品库存,最后入库时间 排序
+     */
+    private void customSort(IWrapper wrapper, StockSelectDto dto) {
+        if (ObjectUtil.isNotEmpty(dto.getQuantitySort())) {
+            if (1 == dto.getQuantitySort()) {
+                wrapper.orderByAsc("s.quantity");
+            } else {
+                wrapper.orderByDesc("s.quantity");
+            }
+        }
+        if (ObjectUtil.isNotEmpty(dto.getFrozenQuantitySort())) {
+            if (1 == dto.getFrozenQuantitySort()) {
+                wrapper.orderByAsc("json_unquote( s.victoriatourist_json -> '$.frozenQuantity' )");
+            } else {
+                wrapper.orderByDesc("json_unquote( s.victoriatourist_json -> '$.frozenQuantity' )");
+            }
+        }
+        if (ObjectUtil.isNotEmpty(dto.getDefectiveQuantitySort())) {
+            if (1 == dto.getDefectiveQuantitySort()) {
+                wrapper.orderByAsc("json_unquote( s.victoriatourist_json -> '$.defectiveQuantity' )");
+            } else {
+                wrapper.orderByDesc("json_unquote( s.victoriatourist_json -> '$.defectiveQuantity' )");
+            }
+        }
+        if (ObjectUtil.isNotEmpty(dto.getUpdateTimeSort())) {
+            if (1 == dto.getUpdateTimeSort()) {
+                wrapper.orderByAsc("s.update_time");
+            } else {
+                wrapper.orderByDesc("s.update_time");
+            }
+        }
+    }
+
 }