Prechádzať zdrojové kódy

[update] 排序逻辑限制及代码优化

miajio 2 dní pred
rodič
commit
867c7a9010

+ 30 - 0
warehouse-admin-data/src/main/java/com/yr/warehouse/admin/common/menu/SortTypeEnum.java

@@ -0,0 +1,30 @@
+package com.yr.warehouse.admin.common.menu;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * 排序枚举
+ *
+ * @author dengbp
+ */
+@AllArgsConstructor
+@Getter
+public enum SortTypeEnum {
+
+    ASC("asc"),
+    DESC("desc");
+
+    private final String value;
+
+    public static SortTypeEnum getByValue(String value) {
+        String val = value.toLowerCase();
+        for (SortTypeEnum sortEnum : values()) {
+            if (sortEnum.value.equals(val)) {
+                return sortEnum;
+            }
+        }
+        return null;
+    }
+
+}

+ 2 - 1
warehouse-admin-data/src/main/java/com/yr/warehouse/admin/warehouse/bo/WarehouseProductDemandAnalysisHistoryPageBo.java

@@ -1,6 +1,7 @@
 package com.yr.warehouse.admin.warehouse.bo;
 
 import com.yr.bluecat.common.entity.bo.BasePageBo;
+import com.yr.warehouse.admin.warehouse.face.SortFace;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
@@ -12,7 +13,7 @@ import java.io.Serializable;
  */
 @EqualsAndHashCode(callSuper = true)
 @Data
-public class WarehouseProductDemandAnalysisHistoryPageBo extends BasePageBo implements Serializable {
+public class WarehouseProductDemandAnalysisHistoryPageBo extends BasePageBo implements SortFace, Serializable {
 
     @Serial
     private static final long serialVersionUID = 1L;

+ 2 - 1
warehouse-admin-data/src/main/java/com/yr/warehouse/admin/warehouse/bo/WarehouseProductDemandAnalysisPageBo.java

@@ -1,6 +1,7 @@
 package com.yr.warehouse.admin.warehouse.bo;
 
 import com.yr.bluecat.common.entity.bo.BasePageBo;
+import com.yr.warehouse.admin.warehouse.face.SortFace;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
@@ -13,7 +14,7 @@ import java.time.LocalDate;
  */
 @EqualsAndHashCode(callSuper = true)
 @Data
-public class WarehouseProductDemandAnalysisPageBo extends BasePageBo implements Serializable {
+public class WarehouseProductDemandAnalysisPageBo extends BasePageBo implements SortFace, Serializable {
 
     @Serial
     private static final long serialVersionUID = 1L;

+ 45 - 0
warehouse-admin-data/src/main/java/com/yr/warehouse/admin/warehouse/face/SortFace.java

@@ -0,0 +1,45 @@
+package com.yr.warehouse.admin.warehouse.face;
+
+import com.yr.warehouse.admin.common.menu.SortTypeEnum;
+
+/**
+ * 排序抽象
+ */
+public interface SortFace {
+
+    String getSort();
+
+    void setSort(String sort);
+
+    String getSortType();
+
+    void setSortType(String sortType);
+
+    /**
+     * 构建排序方式
+     */
+    default void buildSortType() {
+        SortTypeEnum sortTypeEnum = SortTypeEnum.getByValue(getSortType());
+        if (null == sortTypeEnum) {
+            setSortType(SortTypeEnum.DESC.getValue());
+        }
+    }
+
+    /**
+     * 构建排序字段
+     * @param columnNames 允许排序字段
+     */
+    default void buildSort(String ... columnNames) {
+        if (null == getSort()) {
+            return;
+        }
+        String sort = getSort();
+        for (String columnName : columnNames) {
+            if (columnName.equals(sort)) {
+                return;
+            }
+        }
+        setSort(null);
+    }
+
+}

+ 14 - 1
warehouse-admin-server/src/main/java/com/yr/warehouse/admin/service/warehouse/service/impl/WarehouseProductDemandAnalysisServiceImpl.java

@@ -6,6 +6,7 @@ import com.yr.bluecat.common.entity.exception.MessageException;
 import com.yr.warehouse.admin.service.warehouse.service.WarehouseProductDemandAnalysisService;
 import com.yr.warehouse.admin.warehouse.bo.*;
 import com.yr.warehouse.admin.warehouse.data.WarehouseInfo;
+import com.yr.warehouse.admin.warehouse.face.SortFace;
 import com.yr.warehouse.admin.warehouse.mapper.WarehouseInfoMapper;
 import com.yr.warehouse.admin.warehouse.mapper.WarehouseProductDemandAnalysisDetailMapper;
 import com.yr.warehouse.admin.warehouse.mapper.WarehouseProductDemandAnalysisInfoMapper;
@@ -39,6 +40,7 @@ public class WarehouseProductDemandAnalysisServiceImpl implements WarehouseProdu
 
     @Override
     public Page<WarehouseProductDemandAnalysisVo> page(WarehouseProductDemandAnalysisPageBo bo) {
+        handleSortParameters(bo);
         Page<WarehouseProductDemandAnalysisVo> page = new Page<>(bo.getPageNum(), bo.getPageSize());
         page = warehouseProductDemandAnalysisMapper.page(page, bo);
 
@@ -94,7 +96,7 @@ public class WarehouseProductDemandAnalysisServiceImpl implements WarehouseProdu
         pageBo.setPageSize(1000);
 
         List<WarehouseProductDemandAnalysisVo> all = new ArrayList<>();
-        while ( true) {
+        while (true) {
             Page<WarehouseProductDemandAnalysisVo> page = page(pageBo);
             List<WarehouseProductDemandAnalysisVo> records = page.getRecords();
             if (records.isEmpty()) {
@@ -115,7 +117,18 @@ public class WarehouseProductDemandAnalysisServiceImpl implements WarehouseProdu
 
     @Override
     public Page<WarehouseProductDemandAnalysisVo> historyPage(WarehouseProductDemandAnalysisHistoryPageBo bo) {
+        handleSortParameters(bo);
         Page<WarehouseProductDemandAnalysisVo> page = new Page<>(bo.getPageNum(), bo.getPageSize());
         return warehouseProductDemandAnalysisDetailMapper.historyPage(page, bo);
     }
+
+    /**
+     * 处理排序参数的通用方法
+     * @param bo 包含排序参数的BO对象
+     */
+    private void handleSortParameters(SortFace bo) {
+        bo.buildSortType();
+        bo.buildSort("moq", "weeklySalesVolume", "weeklySalesVolumeUnits", "upShelfNum");
+    }
+
 }