Bläddra i källkod

fix: 房间数量全部改用BigDecimal类型,因为会出现小数

luofeiyun 4 veckor sedan
förälder
incheckning
1fa5c2c8ed
17 ändrade filer med 169 tillägg och 138 borttagningar
  1. 2 1
      ship-module-product/ship-module-product-api/src/main/java/com/yc/ship/module/product/api/dto/ReduceStockReqDTO.java
  2. 21 20
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/api/VoyageApiImpl.java
  3. 9 9
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/admin/voyagestock/vo/VoyageStockBaseVO.java
  4. 5 4
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/admin/voyagestockdetail/VoyageStockDetailController.java
  5. 10 8
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/admin/voyagestockdetail/vo/VoyageStockDetailPageReqVO.java
  6. 12 10
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/admin/voyagestockdetail/vo/VoyageStockDetailSaveReqVO.java
  7. 12 10
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/admin/voyagestockdetail/vo/VoyageStockDetailTotalRespVO.java
  8. 3 1
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/admin/voyagestockdistribute/vo/VoyageStockDistributePageReqVO.java
  9. 3 1
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/admin/voyagestockdistribute/vo/VoyageStockDistributeRespVO.java
  10. 4 2
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/admin/voyagestockdistribute/vo/VoyageStockDistributeSaveReqVO.java
  11. 4 3
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/admin/voyagestockdistribute/vo/VoyageStockDistributeTotalRespVO.java
  12. 9 9
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/dal/dataobject/voyagestock/VoyageStockDO.java
  13. 10 10
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/dal/dataobject/voyagestockdetail/VoyageStockDetailDO.java
  14. 7 5
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/dal/dataobject/voyagestockdistribute/VoyageStockDistributeDO.java
  15. 8 2
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/dal/dataobject/voyagestockdistribute/VoyageStockDistributeLogDO.java
  16. 37 32
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/service/voyage/VoyageServiceImpl.java
  17. 13 11
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/service/voyagestockdistribute/VoyageStockDistributeServiceImpl.java

+ 2 - 1
ship-module-product/ship-module-product-api/src/main/java/com/yc/ship/module/product/api/dto/ReduceStockReqDTO.java

@@ -3,6 +3,7 @@ package com.yc.ship.module.product.api.dto;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 @Schema(description = "减库存请求参数")
@@ -40,7 +41,7 @@ public class ReduceStockReqDTO {
         private Integer floor;
 
         @Schema(description = "房间数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
-        private Integer num;
+        private BigDecimal num;
     }
 
 }

+ 21 - 20
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/api/VoyageApiImpl.java

@@ -12,6 +12,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -55,39 +56,39 @@ public class VoyageApiImpl implements VoyageApi{
             String key = distributorType + "_" + distributorId + "_" + storeId + "_" + item.getRoomModelId() + "_" + item.getFloor();
             return key;
         });
-        AtomicReference<Integer> totalNum = new AtomicReference<>(0);
+        AtomicReference<BigDecimal> totalNum = new AtomicReference<>(BigDecimal.ZERO);
         List<VoyageStockDistributeDO> updateList = new ArrayList<>();
         distributeDOList.stream().forEach(item -> {
             String key = item.getDistributorType() + "_" + item.getDistributorId() + "_" + item.getStoreId() + "_" + item.getRoomModelId() + "_" + item.getFloor();
             ReduceStockReqDTO.OrderDetailReqDTO orderDetailReqDTO = map.get(key);
             if (orderDetailReqDTO != null) {
-                item.setSurplusNum(item.getSurplusNum() - orderDetailReqDTO.getNum());
-                item.setBookNum(item.getBookNum() + orderDetailReqDTO.getNum());
+                item.setSurplusNum(item.getSurplusNum().subtract(orderDetailReqDTO.getNum()));
+                item.setBookNum(item.getBookNum().add(orderDetailReqDTO.getNum()));
                 updateList.add(item);
             }
-            totalNum.updateAndGet(v -> v + item.getNum());
+            totalNum.updateAndGet(v -> v.add(item.getNum()));
         });
-        Integer total = totalNum.get();
+        BigDecimal total = totalNum.get();
         voyageStockDistributeMapper.updateBatch(updateList);
 
         // 4.扣航次库存,优先扣虚拟库存
         VoyageStockDO stockDO = voyageStockMapper.selectById(voyageId);
         //判断可售房间数是否大于等于订单的房间数
-        if(stockDO.getCanSellNum() < total) {
+        if(stockDO.getCanSellNum().compareTo(total) == -1) {
             throw exception0(500,"可售房间数不足");
         }
         //减虚拟房间数
-        if(stockDO.getVirtualNum() >= total) {
-            stockDO.setVirtualNum(stockDO.getVirtualNum() - totalNum.get());
+        if(stockDO.getVirtualNum().compareTo(total) >=0 ) {
+            stockDO.setVirtualNum(stockDO.getVirtualNum().subtract(totalNum.get()));
         }else {
-            stockDO.setVirtualNum(0);
+            stockDO.setVirtualNum(BigDecimal.ZERO);
             // 加超卖房间数
-            stockDO.setOversoldNum(stockDO.getOversoldNum() + (total - stockDO.getVirtualNum()));
+            stockDO.setOversoldNum(stockDO.getOversoldNum().add(total.subtract(stockDO.getVirtualNum())));
         }
         //减可售房间数
-        stockDO.setCanSellNum(stockDO.getCanSellNum() - total);
+        stockDO.setCanSellNum(stockDO.getCanSellNum().subtract(total));
         //加预定房间数
-        stockDO.setBookNum(stockDO.getBookNum() + total);
+        stockDO.setBookNum(stockDO.getBookNum().add(total));
         voyageStockMapper.updateById(stockDO);
 
         // 5.扣库存详情
@@ -100,24 +101,24 @@ public class VoyageApiImpl implements VoyageApi{
         stockDetailList.stream().forEach(item -> {
             String key = item.getRoomModelId() + "_" + item.getFloor();
             ReduceStockReqDTO.OrderDetailReqDTO orderDetailReqDTO = detailMap.get(key);
-            Integer num = orderDetailReqDTO.getNum();
+            BigDecimal num = orderDetailReqDTO.getNum();
             if (orderDetailReqDTO != null) {
                 //判断可售房间数是否大于等于订单的房间数
-                if(item.getCanSellNum() < num) {
+                if(item.getCanSellNum().compareTo(num) < 0) {
                     throw exception0(500,"房型楼层可售房间数不足");
                 }
                 //减虚拟房间数
-                if(item.getVirtualNum() >= num) {
-                    item.setVirtualNum(item.getVirtualNum() - num);
+                if(item.getVirtualNum().compareTo(num) >= 0) {
+                    item.setVirtualNum(item.getVirtualNum().subtract(num));
                 }else {
-                    item.setVirtualNum(0);
+                    item.setVirtualNum(BigDecimal.ZERO);
                     // 加超卖房间数
-                    item.setOversoldNum(item.getOversoldNum() + (num - item.getVirtualNum()));
+                    item.setOversoldNum(item.getOversoldNum().add(num.subtract(item.getVirtualNum())));
                 }
                 //减可售房间数
-                item.setCanSellNum(item.getCanSellNum() - num);
+                item.setCanSellNum(item.getCanSellNum().subtract(num));
                 //加预定房间数
-                item.setBookNum(item.getBookNum() + num);
+                item.setBookNum(item.getBookNum().add(num));
                 updateDetailList.add(item);
             }
         });

+ 9 - 9
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/admin/voyagestock/vo/VoyageStockBaseVO.java

@@ -30,40 +30,40 @@ public class VoyageStockBaseVO {
 
     @Schema(description = "房间总数")
     @ExcelProperty("房间总数")
-    private Integer totalNum;
+    private BigDecimal totalNum;
 
     @Schema(description = "待上架房间数")
     @ExcelProperty("待上架房间数")
-    private Integer notShelfNum;
+    private BigDecimal notShelfNum;
 
     @Schema(description = "已上架房间数")
     @ExcelProperty("已上架房间数")
-    private Integer shelfedNum;
+    private BigDecimal shelfedNum;
 
     @Schema(description = "预定房间数")
     @ExcelProperty("预定房间数")
-    private Integer bookNum;
+    private BigDecimal bookNum;
 
     @Schema(description = "可售房间数")
     @ExcelProperty("可售房间数")
-    private Integer canSellNum;
+    private BigDecimal canSellNum;
 
     @Schema(description = "超卖房间数")
     @ExcelProperty("超卖房间数")
-    private Integer oversoldNum;
+    private BigDecimal oversoldNum;
 
     @Schema(description = "剩余房间数")
     @ExcelProperty("剩余房间数")
-    private Integer surplusNum;
+    private BigDecimal surplusNum;
 
     /**
      * 虚拟房间数
      */
     @Schema(description = "虚拟房间数")
     @ExcelProperty("虚拟房间数")
-    private Integer virtualNum;
+    private BigDecimal virtualNum;
 
     @Schema(description = "实房间数")
     @ExcelProperty("实房间数")
-    private Integer realTotalNum;
+    private BigDecimal realTotalNum;
 }

+ 5 - 4
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/admin/voyagestockdetail/VoyageStockDetailController.java

@@ -20,6 +20,7 @@ import javax.validation.*;
 import com.yc.ship.framework.common.pojo.CommonResult;
 import com.yc.ship.framework.common.util.object.BeanUtils;
 
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -152,10 +153,10 @@ public class VoyageStockDetailController {
         VoyageStockDetailDO voyageStockDetailDO = BeanUtils.toBean(voyageStock, VoyageStockDetailDO.class);
         voyageStockDetailDO.setRoomModelName("合计");
         voyageStockDetailDO.setFloor(0);
-        voyageStockDetailDO.setShelfNum(0);
+        voyageStockDetailDO.setShelfNum(BigDecimal.ZERO);
         list.add(voyageStockDetailDO);
         list.stream().forEach(detail -> {
-            detail.setShelfNum(0);
+            detail.setShelfNum(BigDecimal.ZERO);
         });
         return success(BeanUtils.toBean(list, VoyageStockDetailRespNewVO.class));
     }
@@ -163,9 +164,9 @@ public class VoyageStockDetailController {
     @GetMapping("/getByVoyageIdMap")
     @Operation(summary = "获得航次库存")
     @Parameter(name = "id", description = "编号", required = true, example = "1024")
-    public CommonResult<Map<String, Integer>> getVoyageStockByVoyageIdMap(@RequestParam("voyageId") Long voyageId) {
+    public CommonResult<Map<String, BigDecimal>> getVoyageStockByVoyageIdMap(@RequestParam("voyageId") Long voyageId) {
         List<VoyageStockDetailDO> list = voyageStockDetailService.getListByVoyageId(voyageId);
-        Map<String, Integer> map = new HashMap<>();
+        Map<String, BigDecimal> map = new HashMap<>();
         list.stream().forEach(detail -> {
             map.put(detail.getRoomModelId()+"_"+detail.getFloor(),detail.getShelfedNum());
         });

+ 10 - 8
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/admin/voyagestockdetail/vo/VoyageStockDetailPageReqVO.java

@@ -4,6 +4,8 @@ import lombok.*;
 import io.swagger.v3.oas.annotations.media.Schema;
 import com.yc.ship.framework.common.pojo.PageParam;
 import org.springframework.format.annotation.DateTimeFormat;
+
+import java.math.BigDecimal;
 import java.time.LocalDateTime;
 
 import static com.yc.ship.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@@ -27,28 +29,28 @@ public class VoyageStockDetailPageReqVO extends PageParam {
     private Integer floor;
 
     @Schema(description = "房间总数")
-    private Integer totalNum;
+    private BigDecimal totalNum;
 
     @Schema(description = "本次上架房间数")
-    private Integer shelfNum;
+    private BigDecimal shelfNum;
 
     @Schema(description = "待上架房间数")
-    private Integer notShelfNum;
+    private BigDecimal notShelfNum;
 
     @Schema(description = "已上架房间数")
-    private Integer shelfedNum;
+    private BigDecimal shelfedNum;
 
     @Schema(description = "预定房间数")
-    private Integer bookNum;
+    private BigDecimal bookNum;
 
     @Schema(description = "可售房间数")
-    private Integer canSellNum;
+    private BigDecimal canSellNum;
 
     @Schema(description = "超卖房间数")
-    private Integer oversoldNum;
+    private BigDecimal oversoldNum;
 
     @Schema(description = "剩余房间数")
-    private Integer surplusNum;
+    private BigDecimal surplusNum;
 
     @Schema(description = "创建时间")
     @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)

+ 12 - 10
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/admin/voyagestockdetail/vo/VoyageStockDetailSaveReqVO.java

@@ -4,6 +4,8 @@ import com.alibaba.excel.annotation.ExcelProperty;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
+import java.math.BigDecimal;
+
 @Schema(description = "管理后台 - 航次库存新增/修改 Request VO")
 @Data
 public class VoyageStockDetailSaveReqVO {
@@ -21,35 +23,35 @@ public class VoyageStockDetailSaveReqVO {
     private Integer floor;
 
     @Schema(description = "房间总数")
-    private Integer totalNum;
+    private BigDecimal totalNum;
 
     @Schema(description = "本次上架房间数")
-    private Integer shelfNum;
+    private BigDecimal shelfNum;
 
     @Schema(description = "待上架房间数")
-    private Integer notShelfNum;
+    private BigDecimal notShelfNum;
 
     @Schema(description = "已上架房间数")
-    private Integer shelfedNum;
+    private BigDecimal shelfedNum;
 
     @Schema(description = "预定房间数")
-    private Integer bookNum;
+    private BigDecimal bookNum;
 
     @Schema(description = "可售房间数")
-    private Integer canSellNum;
+    private BigDecimal canSellNum;
 
     @Schema(description = "超卖房间数")
-    private Integer oversoldNum;
+    private BigDecimal oversoldNum;
 
     @Schema(description = "剩余房间数")
-    private Integer surplusNum;
+    private BigDecimal surplusNum;
     @Schema(description = "虚拟房间数")
     @ExcelProperty("虚拟房间数")
-    private Integer virtualNum;
+    private BigDecimal virtualNum;
 
     @Schema(description = "实房间数")
     @ExcelProperty("实房间数")
-    private Integer realTotalNum;
+    private BigDecimal realTotalNum;
 
 
 }

+ 12 - 10
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/admin/voyagestockdetail/vo/VoyageStockDetailTotalRespVO.java

@@ -5,6 +5,8 @@ import com.alibaba.excel.annotation.ExcelProperty;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
+import java.math.BigDecimal;
+
 
 @Schema(description = "管理后台 - 航次库存 Response VO")
 @Data
@@ -33,41 +35,41 @@ public class VoyageStockDetailTotalRespVO {
 
     @Schema(description = "房间总数")
     @ExcelProperty("房间总数")
-    private Integer totalNum;
+    private BigDecimal totalNum;
 
     @Schema(description = "本次上架房间数")
     @ExcelProperty("本次上架房间数")
-    private Integer shelfNum;
+    private BigDecimal shelfNum;
 
     @Schema(description = "待上架房间数")
     @ExcelProperty("待上架房间数")
-    private Integer notShelfNum;
+    private BigDecimal notShelfNum;
 
     @Schema(description = "已上架房间数")
     @ExcelProperty("已上架房间数")
-    private Integer shelfedNum;
+    private BigDecimal shelfedNum;
 
     @Schema(description = "预定房间数")
     @ExcelProperty("预定房间数")
-    private Integer bookNum;
+    private BigDecimal bookNum;
 
     @Schema(description = "可售房间数")
     @ExcelProperty("可售房间数")
-    private Integer canSellNum;
+    private BigDecimal canSellNum;
 
     @Schema(description = "超卖房间数")
     @ExcelProperty("超卖房间数")
-    private Integer oversoldNum;
+    private BigDecimal oversoldNum;
 
     @Schema(description = "剩余房间数")
     @ExcelProperty("剩余房间数")
-    private Integer surplusNum;
+    private BigDecimal surplusNum;
 
     @Schema(description = "虚拟房间数")
     @ExcelProperty("虚拟房间数")
-    private Integer virtualNum;
+    private BigDecimal virtualNum;
 
     @Schema(description = "实房间数")
     @ExcelProperty("实房间数")
-    private Integer realTotalNum;
+    private BigDecimal realTotalNum;
 }

+ 3 - 1
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/admin/voyagestockdistribute/vo/VoyageStockDistributePageReqVO.java

@@ -1,6 +1,8 @@
 package com.yc.ship.module.product.controller.admin.voyagestockdistribute.vo;
 
 import lombok.*;
+
+import java.math.BigDecimal;
 import java.util.*;
 import io.swagger.v3.oas.annotations.media.Schema;
 import com.yc.ship.framework.common.pojo.PageParam;
@@ -34,7 +36,7 @@ public class VoyageStockDistributePageReqVO extends PageParam {
     private Integer floor;
 
     @Schema(description = "分配房间数")
-    private Integer num;
+    private BigDecimal num;
 
     @Schema(description = "创建时间")
     @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)

+ 3 - 1
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/admin/voyagestockdistribute/vo/VoyageStockDistributeRespVO.java

@@ -2,6 +2,8 @@ package com.yc.ship.module.product.controller.admin.voyagestockdistribute.vo;
 
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
+
+import java.math.BigDecimal;
 import java.util.*;
 import org.springframework.format.annotation.DateTimeFormat;
 import java.time.LocalDateTime;
@@ -60,7 +62,7 @@ public class VoyageStockDistributeRespVO {
 
     @Schema(description = "分配房间数")
     @ExcelProperty("分配房间数")
-    private Integer num;
+    private BigDecimal num;
 
     /**
      * 分配的房间号

+ 4 - 2
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/admin/voyagestockdistribute/vo/VoyageStockDistributeSaveReqVO.java

@@ -2,6 +2,8 @@ package com.yc.ship.module.product.controller.admin.voyagestockdistribute.vo;
 
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
+
+import java.math.BigDecimal;
 import java.util.*;
 import javax.validation.constraints.*;
 
@@ -31,10 +33,10 @@ public class VoyageStockDistributeSaveReqVO {
     private Integer floor;
 
     @Schema(description = "分配房间数")
-    private Integer num;
+    private BigDecimal num;
 
     @Schema(description = "房型分配房间数")
-    private Integer roomModelNum;
+    private BigDecimal roomModelNum;
 
     @Schema(description = "分配的房间号", example = "1,2,3")
     private List<Integer> roomNums;

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

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
+import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.util.List;
 
@@ -41,11 +42,11 @@ public class VoyageStockDistributeTotalRespVO {
 
       @ExcelProperty("已分配房间总数")
       @Schema(description = "已分配房间总数")
-      private Integer num;
+      private BigDecimal num;
 
       @ExcelProperty("已分配房型房间总数")
       @Schema(description = "已分配房型房间总数")
-      private Integer roomModelNum;
+      private BigDecimal roomModelNum;
 
       @ExcelProperty("已分配房间号")
       @Schema(description = "已分配房间号", example = "1,2,3")
@@ -65,7 +66,7 @@ public class VoyageStockDistributeTotalRespVO {
       private Integer floor;
 
       @ExcelProperty("已分配房间数")
-      private Integer num;
+      private BigDecimal num;
 
    }
 }

+ 9 - 9
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/dal/dataobject/voyagestock/VoyageStockDO.java

@@ -53,39 +53,39 @@ public class VoyageStockDO extends TenantBaseDO {
     /**
      * 房间总数
      */
-    private Integer totalNum;
+    private BigDecimal totalNum;
     /**
      * 待上架房间数
      */
-    private Integer notShelfNum;
+    private BigDecimal notShelfNum;
     /**
      * 已上架房间数
      */
-    private Integer shelfedNum;
+    private BigDecimal shelfedNum;
     /**
      * 预定房间数
      */
-    private Integer bookNum;
+    private BigDecimal bookNum;
     /**
      * 可售房间数
      */
-    private Integer canSellNum;
+    private BigDecimal canSellNum;
     /**
      * 超卖房间数
      */
-    private Integer oversoldNum;
+    private BigDecimal oversoldNum;
     /**
      * 剩余房间数
      */
-    private Integer surplusNum;
+    private BigDecimal surplusNum;
     /**
      * 虚拟房间数
      */
-    private Integer virtualNum;
+    private BigDecimal virtualNum;
 
     /**
      * 实际房间总数
      */
-    private Integer realTotalNum;
+    private BigDecimal realTotalNum;
 
 }

+ 10 - 10
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/dal/dataobject/voyagestockdetail/VoyageStockDetailDO.java

@@ -49,43 +49,43 @@ public class VoyageStockDetailDO extends TenantBaseDO {
     /**
      * 房间总数
      */
-    private Integer totalNum;
+    private BigDecimal totalNum;
     /**
      * 本次上架房间数
      */
-    private Integer shelfNum;
+    private BigDecimal shelfNum;
     /**
      * 待上架房间数
      */
-    private Integer notShelfNum;
+    private BigDecimal notShelfNum;
     /**
      * 已上架房间数
      */
-    private Integer shelfedNum;
+    private BigDecimal shelfedNum;
     /**
      * 预定房间数
      */
-    private Integer bookNum;
+    private BigDecimal bookNum;
     /**
      * 可售房间数
      */
-    private Integer canSellNum;
+    private BigDecimal canSellNum;
     /**
      * 超卖房间数
      */
-    private Integer oversoldNum;
+    private BigDecimal oversoldNum;
     /**
      * 剩余房间数
      */
-    private Integer surplusNum;
+    private BigDecimal surplusNum;
     /**
      * 虚拟房间数
      */
-    private Integer virtualNum;
+    private BigDecimal virtualNum;
 
     /**
      * 实际房间总数
      */
-    private Integer realTotalNum;
+    private BigDecimal realTotalNum;
 
 }

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

@@ -3,6 +3,8 @@ package com.yc.ship.module.product.dal.dataobject.voyagestockdistribute;
 import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
 import com.yc.ship.framework.tenant.core.db.TenantBaseDO;
 import lombok.*;
+
+import java.math.BigDecimal;
 import java.util.*;
 import com.baomidou.mybatisplus.annotation.*;
 
@@ -11,7 +13,7 @@ import com.baomidou.mybatisplus.annotation.*;
  *
  * @author 管理员
  */
-@TableName("product_voyage_stock_distribute")
+@TableName(value = "product_voyage_stock_distribute", autoResultMap = true)
 @KeySequence("product_voyage_stock_distribute_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
 @Data
 @EqualsAndHashCode(callSuper = true)
@@ -79,22 +81,22 @@ public class VoyageStockDistributeDO extends TenantBaseDO {
     /**
      * 分配房间数
      */
-    private Integer num;
+    private BigDecimal num;
 
     /**
      * 剩余房间数
      */
-    private Integer surplusNum;
+    private BigDecimal surplusNum;
 
     /**
      * 预订房间数
      */
-    private Integer bookNum;
+    private BigDecimal bookNum;
 
     /**
      * 房型房间数
      */
-    private Integer roomModelNum;
+    private BigDecimal roomModelNum;
 
     /**
      * 分配的房间号

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

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
 import com.yc.ship.framework.tenant.core.db.TenantBaseDO;
 import lombok.*;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -12,7 +13,7 @@ import java.util.List;
  *
  * @author 管理员
  */
-@TableName("product_voyage_stock_distribute_log")
+@TableName(value = "product_voyage_stock_distribute_log", autoResultMap = true)
 @KeySequence("product_voyage_stock_distribute_log_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
 @Data
 @EqualsAndHashCode(callSuper = true)
@@ -80,7 +81,12 @@ public class VoyageStockDistributeLogDO extends TenantBaseDO {
     /**
      * 分配房间数
      */
-    private Integer num;
+    private BigDecimal num;
+
+    /**
+     * 房型房间数
+     */
+    private BigDecimal roomModelNum;
 
     /**
      * 分配的房间号

+ 37 - 32
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/service/voyage/VoyageServiceImpl.java

@@ -27,6 +27,7 @@ import org.springframework.validation.annotation.Validated;
 
 import javax.annotation.Resource;
 
+import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -104,15 +105,16 @@ public class VoyageServiceImpl implements VoyageService {
         }else {
             //新增时添加统计数据
             List<RoomModelFloorNumDTO> list = shipApi.queryRoomModelFloorToNum(reqVO.getShipId());
-            int sum = list.stream().mapToInt(RoomModelFloorNumDTO::getNum).sum();
+            int intSum = list.stream().mapToInt(RoomModelFloorNumDTO::getNum).sum();
+            BigDecimal sum = BigDecimal.valueOf(intSum);
             voyageStockDO.setTotalNum(sum);
             voyageStockDO.setRealTotalNum(sum);
             voyageStockDO.setNotShelfNum(sum);
-            voyageStockDO.setShelfedNum(0);
-            voyageStockDO.setBookNum(0);
-            voyageStockDO.setCanSellNum(0);
-            voyageStockDO.setVirtualNum(0);
-            voyageStockDO.setOversoldNum(0);
+            voyageStockDO.setShelfedNum(BigDecimal.ZERO);
+            voyageStockDO.setBookNum(BigDecimal.ZERO);
+            voyageStockDO.setCanSellNum(BigDecimal.ZERO);
+            voyageStockDO.setVirtualNum(BigDecimal.ZERO);
+            voyageStockDO.setOversoldNum(BigDecimal.ZERO);
             voyageStockDO.setSurplusNum(sum);
             voyageStockDO.setVoyageId(voyageId);
             voyageStockMapper.insert(voyageStockDO);
@@ -124,16 +126,16 @@ public class VoyageServiceImpl implements VoyageService {
                 stockDetailDO.setRoomModelId(item.getRoomModelId());
                 stockDetailDO.setRoomModelName(item.getRoomModelName());
                 stockDetailDO.setFloor(item.getFloor());
-                stockDetailDO.setTotalNum(item.getNum());
-                stockDetailDO.setRealTotalNum(item.getNum());
-                stockDetailDO.setShelfNum(0);
-                stockDetailDO.setNotShelfNum(item.getNum());
-                stockDetailDO.setShelfedNum(0);
-                stockDetailDO.setBookNum(0);
-                stockDetailDO.setCanSellNum(0);
-                stockDetailDO.setOversoldNum(0);
-                stockDetailDO.setVirtualNum(0);
-                stockDetailDO.setSurplusNum(item.getNum());
+                stockDetailDO.setTotalNum(BigDecimal.valueOf(item.getNum()));
+                stockDetailDO.setRealTotalNum(BigDecimal.valueOf(item.getNum()));
+                stockDetailDO.setShelfNum(BigDecimal.ZERO);
+                stockDetailDO.setNotShelfNum(BigDecimal.valueOf(item.getNum()));
+                stockDetailDO.setShelfedNum(BigDecimal.ZERO);
+                stockDetailDO.setBookNum(BigDecimal.ZERO);
+                stockDetailDO.setCanSellNum(BigDecimal.ZERO);
+                stockDetailDO.setOversoldNum(BigDecimal.ZERO);
+                stockDetailDO.setVirtualNum(BigDecimal.ZERO);
+                stockDetailDO.setSurplusNum(BigDecimal.valueOf(item.getNum()));
                 stockDetailDOS.add(stockDetailDO);
             });
             voyageStockDetailMapper.insertBatch(stockDetailDOS);
@@ -147,7 +149,9 @@ public class VoyageServiceImpl implements VoyageService {
         List<VoyageStockDetailDO> stockDetailDOS = new ArrayList<>();
         //新增时添加统计数据
         List<RoomModelFloorNumDTO> list = shipApi.queryRoomModelFloorToNum(shipId);
-        int sum = list.stream().mapToInt(RoomModelFloorNumDTO::getNum).sum();
+        int intSum = list.stream().mapToInt(RoomModelFloorNumDTO::getNum).sum();
+        BigDecimal sum = BigDecimal.valueOf(intSum);
+        BigDecimal zero = BigDecimal.ZERO;
         voyageDOList.stream().forEach(item -> {
             VoyageStockDO voyageStockDO = new VoyageStockDO();
             voyageStockDO.setVoyageId(item.getId());
@@ -157,30 +161,31 @@ public class VoyageServiceImpl implements VoyageService {
             voyageStockDO.setTotalNum(sum);
             voyageStockDO.setRealTotalNum(sum);
             voyageStockDO.setNotShelfNum(sum);
-            voyageStockDO.setShelfedNum(0);
-            voyageStockDO.setBookNum(0);
-            voyageStockDO.setCanSellNum(0);
-            voyageStockDO.setVirtualNum(0);
-            voyageStockDO.setOversoldNum(0);
+            voyageStockDO.setShelfedNum(zero);
+            voyageStockDO.setBookNum(zero);
+            voyageStockDO.setCanSellNum(zero);
+            voyageStockDO.setVirtualNum(zero);
+            voyageStockDO.setOversoldNum(zero);
             voyageStockDO.setSurplusNum(sum);
             voyageStockDO.setVoyageId(item.getId());
             voyageStockDOList.add(voyageStockDO);
             list.stream().forEach(roomModelFloorNumDTO -> {
+                BigDecimal num = BigDecimal.valueOf(roomModelFloorNumDTO.getNum());
                 VoyageStockDetailDO stockDetailDO = new VoyageStockDetailDO();
                 stockDetailDO.setVoyageId(item.getId());
                 stockDetailDO.setRoomModelId(roomModelFloorNumDTO.getRoomModelId());
                 stockDetailDO.setRoomModelName(roomModelFloorNumDTO.getRoomModelName());
                 stockDetailDO.setFloor(roomModelFloorNumDTO.getFloor());
-                stockDetailDO.setTotalNum(roomModelFloorNumDTO.getNum());
-                stockDetailDO.setRealTotalNum(roomModelFloorNumDTO.getNum());
-                stockDetailDO.setShelfNum(0);
-                stockDetailDO.setNotShelfNum(roomModelFloorNumDTO.getNum());
-                stockDetailDO.setShelfedNum(0);
-                stockDetailDO.setBookNum(0);
-                stockDetailDO.setCanSellNum(0);
-                stockDetailDO.setOversoldNum(0);
-                stockDetailDO.setVirtualNum(0);
-                stockDetailDO.setSurplusNum(roomModelFloorNumDTO.getNum());
+                stockDetailDO.setTotalNum(num);
+                stockDetailDO.setRealTotalNum(num);
+                stockDetailDO.setShelfNum(zero);
+                stockDetailDO.setNotShelfNum(num);
+                stockDetailDO.setShelfedNum(zero);
+                stockDetailDO.setBookNum(zero);
+                stockDetailDO.setCanSellNum(zero);
+                stockDetailDO.setOversoldNum(zero);
+                stockDetailDO.setVirtualNum(zero);
+                stockDetailDO.setSurplusNum(num);
                 stockDetailDOS.add(stockDetailDO);
             });
         });

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

@@ -28,6 +28,7 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.annotation.Validated;
 
 import javax.annotation.Resource;
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -78,24 +79,25 @@ public class VoyageStockDistributeServiceImpl implements VoyageStockDistributeSe
         List<VoyageStockDistributeLogDO> logList = BeanUtils.toBean(createReqVO, VoyageStockDistributeLogDO.class);
         voyageStockDistributeLogMapper.insertBatch(logList);
 
+        BigDecimal zero = BigDecimal.ZERO;
         //修改或插入库存表
         List<VoyageStockDistributeDO> list = voyageStockDistributeMapper.selectListByVoyageId(voyageId);
         if(CollectionUtils.isAnyEmpty(list)) {//为空则新增
             list = BeanUtils.toBean(createReqVO, VoyageStockDistributeDO.class);
             list.stream().forEach(item -> {
-                item.setBookNum(0);
+                item.setBookNum(zero);
                 item.setSurplusNum(item.getNum());
                 item.setRoomModelNum(item.getRoomModelNum());
             });
             voyageStockDistributeMapper.insertBatch(list);
         }else { //不为空则修改库存
-            Map<String, Integer> roomNumMap = CollectionUtils.convertMap(createReqVO, item -> {
+            Map<String, BigDecimal> roomNumMap = CollectionUtils.convertMap(createReqVO, item -> {
                 //key为航次ID_分销商类型_分销商ID_门店ID_房型ID_楼层号作为唯一
                 return item.getVoyageId() + "_" + item.getDistributorType()
                         + "_" + item.getDistributorId() + "_" + item.getStoreId()
                         + "_" + item.getRoomModelId() + "_" + item.getFloor();
             }, item -> item.getNum());
-            Map<String, Integer> roomModelNumMap = CollectionUtils.convertMap(createReqVO, item -> {
+            Map<String, BigDecimal> roomModelNumMap = CollectionUtils.convertMap(createReqVO, item -> {
                 //key为航次ID_分销商类型_分销商ID_门店ID_房型ID_楼层号作为唯一
                 return item.getVoyageId() + "_" + item.getDistributorType()
                         + "_" + item.getDistributorId() + "_" + item.getStoreId()
@@ -114,8 +116,8 @@ public class VoyageStockDistributeServiceImpl implements VoyageStockDistributeSe
                 String key = item.getVoyageId() + "_" + item.getDistributorType()
                         + "_" + item.getDistributorId() + "_" + item.getStoreId()
                         + "_" + item.getRoomModelId() + "_" + item.getFloor();
-                item.setNum(item.getNum()+roomNumMap.get(key));
-                item.setSurplusNum(item.getSurplusNum()+roomNumMap.get(key));
+                item.setNum(item.getNum().add(roomNumMap.get(key)));
+                item.setSurplusNum(item.getSurplusNum().add(roomNumMap.get(key)));
                 item.setRoomModelNum(roomModelNumMap.get(key));
                 item.setRoomNums(roomNumsMap.get(key));
             });
@@ -136,7 +138,7 @@ public class VoyageStockDistributeServiceImpl implements VoyageStockDistributeSe
             if(!CollectionUtils.isAnyEmpty(newList)) {
                 List<VoyageStockDistributeDO> addList = BeanUtils.toBean(newList, VoyageStockDistributeDO.class);
                 addList.stream().forEach(item -> {
-                    item.setBookNum(0);
+                    item.setBookNum(zero);
                     item.setSurplusNum(item.getNum());
                     item.setRoomModelNum(item.getRoomModelNum());
                 });
@@ -183,7 +185,7 @@ public class VoyageStockDistributeServiceImpl implements VoyageStockDistributeSe
             stockDistributeDO.setRoomModelId(item.getRoomModelId());
             stockDistributeDO.setRoomModelName(item.getRoomModelName());
             stockDistributeDO.setFloor(item.getFloor());
-            stockDistributeDO.setNum(0);
+            stockDistributeDO.setNum(BigDecimal.ZERO);
             stockDistributeDO.setDistributorType(DistributorTypeEnum.OTA.getType());
             stockDistributeDO.setDistributorTypeName(DistributorTypeEnum.OTA.getName());
             stockDistributeDO.setDistributorId(null);
@@ -198,7 +200,7 @@ public class VoyageStockDistributeServiceImpl implements VoyageStockDistributeSe
             stockDistributeDO.setRoomModelId(item.getRoomModelId());
             stockDistributeDO.setRoomModelName(item.getRoomModelName());
             stockDistributeDO.setFloor(item.getFloor());
-            stockDistributeDO.setNum(0);
+            stockDistributeDO.setNum(BigDecimal.ZERO);
             stockDistributeDO.setDistributorType(DistributorTypeEnum.OTC.getType());
             stockDistributeDO.setDistributorTypeName(DistributorTypeEnum.OTC.getName());
             stockDistributeDO.setDistributorId(null);
@@ -216,7 +218,7 @@ public class VoyageStockDistributeServiceImpl implements VoyageStockDistributeSe
                 stockDistributeDO.setRoomModelId(item.getRoomModelId());
                 stockDistributeDO.setRoomModelName(item.getRoomModelName());
                 stockDistributeDO.setFloor(item.getFloor());
-                stockDistributeDO.setNum(0);
+                stockDistributeDO.setNum(BigDecimal.ZERO);
                 stockDistributeDO.setDistributorType(DistributorTypeEnum.OTA.getType());
                 stockDistributeDO.setDistributorTypeName(DistributorTypeEnum.OTA.getName());
                 stockDistributeDO.setDistributorId(distributor.getId());
@@ -236,7 +238,7 @@ public class VoyageStockDistributeServiceImpl implements VoyageStockDistributeSe
                 stockDistributeDO.setRoomModelId(item.getRoomModelId());
                 stockDistributeDO.setRoomModelName(item.getRoomModelName());
                 stockDistributeDO.setFloor(item.getFloor());
-                stockDistributeDO.setNum(0);
+                stockDistributeDO.setNum(BigDecimal.ZERO);
                 stockDistributeDO.setDistributorType(DistributorTypeEnum.OTC.getType());
                 stockDistributeDO.setDistributorTypeName(DistributorTypeEnum.OTC.getName());
                 stockDistributeDO.setDistributorId(distributor.getId());
@@ -255,7 +257,7 @@ public class VoyageStockDistributeServiceImpl implements VoyageStockDistributeSe
                 stockDistributeDO.setRoomModelId(item.getRoomModelId());
                 stockDistributeDO.setRoomModelName(item.getRoomModelName());
                 stockDistributeDO.setFloor(item.getFloor());
-                stockDistributeDO.setNum(0);
+                stockDistributeDO.setNum(BigDecimal.ZERO);
                 stockDistributeDO.setDistributorType(DistributorTypeEnum.OTC.getType());
                 stockDistributeDO.setDistributorTypeName(DistributorTypeEnum.OTC.getName());
                 stockDistributeDO.setDistributorId(store.getAgencyId());