Переглянути джерело

Merge remote-tracking branch 'origin/main'

lishiqiang 1 місяць тому
батько
коміт
6ffd31d9eb

+ 7 - 0
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/admin/voyagestockdistribute/VoyageStockDistributeController.java

@@ -93,6 +93,13 @@ public class VoyageStockDistributeController {
         return success(respVOS);
     }
 
+    @GetMapping("/total-by-voyage-id")
+    @Operation(summary = "获取航次库存分配总数")
+    public CommonResult<VoyageStockDistributeTotalRespVO> getVoyageStockDistributeTotal(@RequestParam("voyageId") Long voyageId) {
+        VoyageStockDistributeTotalRespVO total = voyageStockDistributeService.getVoyageStockDistributeTotal(voyageId);
+        return success(total);
+    }
+
     @GetMapping("/export-excel")
     @Operation(summary = "导出航次库存分配 Excel")
     @PreAuthorize("@ss.hasPermission('product:voyage-stock-distribute:export')")

+ 64 - 0
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/admin/voyagestockdistribute/vo/VoyageStockDistributeTotalRespVO.java

@@ -0,0 +1,64 @@
+package com.yc.ship.module.product.controller.admin.voyagestockdistribute.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Schema(description = "管理后台 - 航次库存分配 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class VoyageStockDistributeTotalRespVO {
+
+   @Schema(description = "分销商类型-分销商-门店统计")
+   List<TotalGroupByDistributorVO> totalGroupByDistributorList;
+
+   @Schema(description = "房型楼层统计")
+   List<TotalGroupByRoomModelFloorVO> totalGroupByRoomModelFloorList;
+
+
+
+
+   @Data
+   public static class TotalGroupByDistributorVO {
+      @ExcelProperty("分销商类型")
+      @Schema(description = "分销商类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+      private Integer distributorType;
+
+      @ExcelProperty("分销商ID")
+      @Schema(description = "分销商ID", example = "王五")
+      private Long distributorId;
+
+
+      @ExcelProperty("门店ID")
+      @Schema(description = "门店ID", example = "5290")
+      private Long storeId;
+
+      @ExcelProperty("已分配房间总数")
+      @Schema(description = "已分配房间总数")
+      private Integer num;
+
+      @ExcelProperty("已分配房型房间总数")
+      @Schema(description = "已分配房型房间总数")
+      private Integer roomModelNum;
+
+   }
+
+   @Data
+   public static class TotalGroupByRoomModelFloorVO {
+      @ExcelProperty("房型ID")
+      @Schema(description = "房型ID", example = "30594")
+      private Long roomModelId;
+
+      @ExcelProperty("楼层号")
+      @Schema(description = "楼层号")
+      private Integer floor;
+
+      @ExcelProperty("已分配房间数")
+      private Integer num;
+
+   }
+}

+ 1 - 1
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/dal/dataobject/voyagestockdistribute/VoyageStockDistributeDO.java

@@ -26,7 +26,7 @@ public class VoyageStockDistributeDO extends TenantBaseDO {
     /**
      * ID
      */
-    @TableId
+    @TableId(type = IdType.ASSIGN_ID)
     private Long id;
     /**
      * 分销商类型

+ 2 - 5
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/dal/dataobject/voyagestockdistribute/VoyageStockDistributeLogDO.java

@@ -1,9 +1,6 @@
 package com.yc.ship.module.product.dal.dataobject.voyagestockdistribute;
 
-import com.baomidou.mybatisplus.annotation.KeySequence;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.*;
 import com.yc.ship.framework.tenant.core.db.TenantBaseDO;
 import lombok.*;
 
@@ -25,7 +22,7 @@ public class VoyageStockDistributeLogDO extends TenantBaseDO {
     /**
      * ID
      */
-    @TableId
+    @TableId(type = IdType.ASSIGN_ID)
     private Long id;
     /**
      * 分销商类型

+ 7 - 0
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/dal/mysql/voyagestockdistribute/VoyageStockDistributeMapper.java

@@ -6,6 +6,7 @@ import com.yc.ship.framework.mybatis.core.mapper.BaseMapperX;
 import com.yc.ship.module.product.dal.dataobject.voyagestockdistribute.VoyageStockDistributeDO;
 import org.apache.ibatis.annotations.Mapper;
 import com.yc.ship.module.product.controller.admin.voyagestockdistribute.vo.*;
+import org.apache.ibatis.annotations.Select;
 
 import java.util.List;
 
@@ -34,4 +35,10 @@ public interface VoyageStockDistributeMapper extends BaseMapperX<VoyageStockDist
         return selectList(new LambdaQueryWrapperX<VoyageStockDistributeDO>()
                 .eq(VoyageStockDistributeDO::getVoyageId, voyageId));
     }
+
+    @Select("select distributor_type,distributor_id,store_id,sum(num) num,sum(room_model_num) room_model_num from product_voyage_stock_distribute where voyage_id = #{voyageId} and deleted = 0 GROUP BY distributor_type,distributor_id,store_id")
+    List<VoyageStockDistributeTotalRespVO.TotalGroupByDistributorVO> selectListGroupByDistributor(Long voyageId);
+
+    @Select("select room_model_id,floor,sum(num) num from product_voyage_stock_distribute where voyage_id = #{voyageId} and deleted = 0 and distributor_id is null and store_id is null GROUP BY room_model_id,floor")
+    List<VoyageStockDistributeTotalRespVO.TotalGroupByRoomModelFloorVO> selectListGroupByRoomModelFloor(Long voyageId);
 }

+ 7 - 0
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/service/voyagestockdistribute/VoyageStockDistributeService.java

@@ -58,4 +58,11 @@ public interface VoyageStockDistributeService {
      * @return
      */
     List<VoyageStockDistributeDO> getListByVoyageId(Long voyageId);
+
+    /**
+     * 查询已分配库存信息
+     * @param voyageId
+     * @return
+     */
+    VoyageStockDistributeTotalRespVO getVoyageStockDistributeTotal(Long voyageId);
 }

+ 12 - 1
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/service/voyagestockdistribute/VoyageStockDistributeServiceImpl.java

@@ -10,6 +10,7 @@ import com.yc.ship.module.otc.api.store.StoreApi;
 import com.yc.ship.module.otc.api.store.dto.StoreInfoRespDTO;
 import com.yc.ship.module.product.controller.admin.voyagestockdistribute.vo.VoyageStockDistributePageReqVO;
 import com.yc.ship.module.product.controller.admin.voyagestockdistribute.vo.VoyageStockDistributeSaveReqVO;
+import com.yc.ship.module.product.controller.admin.voyagestockdistribute.vo.VoyageStockDistributeTotalRespVO;
 import com.yc.ship.module.product.dal.dataobject.voyage.VoyageDO;
 import com.yc.ship.module.product.dal.dataobject.voyagestockdetail.VoyageStockDetailDO;
 import com.yc.ship.module.product.dal.dataobject.voyagestockdistribute.VoyageStockDistributeDO;
@@ -105,7 +106,7 @@ public class VoyageStockDistributeServiceImpl implements VoyageStockDistributeSe
 
             //找出多了的分销商或者门店
             List<String> keys = CollectionUtils.convertList(list, item -> {
-                return item.getDistributorId() + "_" + item.getDistributorType()
+                return item.getVoyageId() + "_" + item.getDistributorType()
                         + "_" + item.getDistributorId() + "_" + item.getStoreId()
                         + "_" + item.getRoomModelId() + "_" + item.getFloor();
             });
@@ -251,4 +252,14 @@ public class VoyageStockDistributeServiceImpl implements VoyageStockDistributeSe
         return list;
     }
 
+    @Override
+    public VoyageStockDistributeTotalRespVO getVoyageStockDistributeTotal(Long voyageId) {
+        VoyageStockDistributeTotalRespVO resp = new VoyageStockDistributeTotalRespVO();
+        List<VoyageStockDistributeTotalRespVO.TotalGroupByDistributorVO> totalGroupByDistributorList = voyageStockDistributeMapper.selectListGroupByDistributor(voyageId);
+        resp.setTotalGroupByDistributorList(totalGroupByDistributorList);
+        List<VoyageStockDistributeTotalRespVO.TotalGroupByRoomModelFloorVO> totalGroupByRoomModelFloorList = voyageStockDistributeMapper.selectListGroupByRoomModelFloor(voyageId);
+        resp.setTotalGroupByRoomModelFloorList(totalGroupByRoomModelFloorList);
+        return resp;
+    }
+
 }