ソースを参照

修改运营商库存列表

caotao 2 週間 前
コミット
52a28f2ed0

+ 5 - 0
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/admin/voyagestockdistributeNew/vo/VoyageStockDistributeNewPageRespVO.java

@@ -5,6 +5,8 @@ import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
 import java.math.BigDecimal;
+import java.util.List;
+import java.util.Map;
 
 @Schema(description = "管理后台 - 航次库存分配保存 Request VO")
 @Data
@@ -34,7 +36,10 @@ public class VoyageStockDistributeNewPageRespVO {
     @Schema(description = "是否启用共享库存", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
     private Integer enableShare;
 
+    @Schema(description = "是否有营销政策", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    private Integer isPolicy;
 
+    private List<Map<String,Object>> distributeNewRespVOList;
 
 
 

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

@@ -76,4 +76,17 @@ public interface VoyageStockDistributeNewMapper extends BaseMapperX<VoyageStockD
             "    p.floor")
     @TenantIgnore
     List<Map<String, Object>> selectAssignRoomNum(@Param("voyageId")Long voyageId);
+
+    @Select("SELECT count(1) " +
+            "FROM marketing_policy mp " +
+            "INNER JOIN marketing_policy_detail mpd ON mp.id = mpd.policy_id " +
+            "    AND mpd.deleted = 0 " +
+            "INNER JOIN product_voyage pv on mpd.voyage_id = pv.id AND pv.deleted=0 " +
+            "WHERE mp.deleted = 0 " +
+            "  AND mp.effective_time >= NOW() " +
+            "  AND DATE_SUB(DATE(pv.boarding_time), INTERVAL mp.early_days DAY) >= CURDATE() " +
+            "  AND mpd.surplus_num>0 " +
+            "  AND mpd.voyage_id = #{voyageId}")
+    @TenantIgnore
+    Long selectIsPolicy(@Param("voyageId")Long voyageId);
 }

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

@@ -32,6 +32,7 @@ import org.springframework.validation.annotation.Validated;
 import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.TimeUnit;
@@ -75,6 +76,7 @@ public class VoyageStockDistributeNewServiceImpl implements VoyageStockDistribut
     private VoyageStockRoomUsedMapper voyageStockRoomUsedMapper;
 
 
+
     @Override
     public void createVoyageStockDistributeNew(Long voyageId, Integer type, List<VoyageStockDistributeNewSaveReqVO> createReqVO) {
         BigDecimal zero = BigDecimal.ZERO;
@@ -221,20 +223,40 @@ public class VoyageStockDistributeNewServiceImpl implements VoyageStockDistribut
         Map<Long, BigDecimal> idNumMap = CollectionUtils.convertMap(distributeNewList, VoyageStockDistributeNewPageRespVO::getVoyageId, VoyageStockDistributeNewPageRespVO::getNum);
         Map<Long, BigDecimal> idRoomModelNumMap = CollectionUtils.convertMap(distributeNewList, VoyageStockDistributeNewPageRespVO::getVoyageId, VoyageStockDistributeNewPageRespVO::getRoomModelNum);
         List<VoyageStockDistributeNewPageRespVO> resultList = new ArrayList<>();
+
         list.forEach(item -> {
             BigDecimal num = idNumMap.get(item.getVoyageId());
             BigDecimal roomModelNum = idRoomModelNumMap.get(item.getVoyageId());
+            // 根据航次查询是否有营销政策(暂时包含当天)
+            Long policyNum = voyageStockDistributeNewMapper.selectIsPolicy(item.getVoyageId());
             VoyageStockDistributeNewPageRespVO respVO = new VoyageStockDistributeNewPageRespVO();
             respVO.setVoyageId(item.getVoyageId());
             respVO.setVoyageName(item.getVoyageName());
             respVO.setShipId(item.getShipId());
             respVO.setShipName(item.getShipName());
+            if(policyNum==0){
+                respVO.setIsPolicy(YesOrNoEnum.NO.getType());
+            }else{
+                respVO.setIsPolicy(YesOrNoEnum.YES.getType());
+            }
+            VoyageStockDistributeNewDetailReqVO detailReqVO = new VoyageStockDistributeNewDetailReqVO();
+            detailReqVO.setVoyageId(item.getVoyageId());
+            detailReqVO.setType(item.getType());
+            detailReqVO.setObjectId(reqVO.getObjectId());
+            detailReqVO.setShipId(item.getShipId());
+
             if(num != null) {
                 respVO.setNum(num);
                 respVO.setEnableShare(YesOrNoEnum.NO.getType());
+                detailReqVO.setEnableShare(YesOrNoEnum.NO.getType());
+                List<VoyageStockDistributeNewRespVO> distributorStockDetail = getDistributorStockDetail(detailReqVO);
+                respVO.setDistributeNewRespVOList(convertDistributeList(distributorStockDetail));
             }else {
                 respVO.setNum(item.getShareNum());
                 respVO.setEnableShare(YesOrNoEnum.YES.getType());
+                detailReqVO.setEnableShare(YesOrNoEnum.YES.getType());
+                List<VoyageStockDistributeNewRespVO> shareStockDetail = getShareStockDetail(detailReqVO);
+                respVO.setDistributeNewRespVOList(convertDistributeList(shareStockDetail));
             }
             if(roomModelNum != null) {
                 respVO.setRoomModelNum(roomModelNum);
@@ -246,6 +268,39 @@ public class VoyageStockDistributeNewServiceImpl implements VoyageStockDistribut
         return new PageResult<>(resultList, voyageStockPage.getTotal());
     }
 
+    private List<Map<String, Object>> convertDistributeList(List<VoyageStockDistributeNewRespVO> voList) {
+        List<Map<String, Object>> result = new ArrayList<>();
+
+        for (VoyageStockDistributeNewRespVO vo : voList) {
+            Map<String, Object> map = new HashMap<>();
+
+            // 1. 数值
+            map.put("num", vo.getNum());
+
+            // 2. 拼接 key
+            String roomModelId = String.valueOf(vo.getRoomModelId());
+            String floor = String.valueOf(vo.getFloor());
+            String key;
+
+            // ==================== 家庭套房特殊处理 ====================
+            if ("家庭套房".equals(vo.getRoomModelName())) {
+                key = "family_" + floor + "f";
+            }
+            // 家庭套房PRO
+            else if ("家庭套房PRO".equals(vo.getRoomModelName())) {
+                key = "family_pro_" + floor + "f";
+            }
+            // ==================== 普通房型规则 ====================
+            else {
+                key = "room_" + roomModelId + "_" + floor + "f";
+            }
+
+            map.put("key", key);
+            result.add(map);
+        }
+        return result;
+    }
+
     @Override
     public List<VoyageStockDistributeNewRespVO> getDetail(VoyageStockDistributeNewDetailReqVO reqVO) {
         Integer enableShare = reqVO.getEnableShare();

+ 2 - 2
ship-module-trade/ship-module-trade-biz/src/main/resources/mapper/report/OpsDailyMapper.xml

@@ -13,9 +13,9 @@
         r.name AS route,
         v.name AS voyageNo,
         s.capacity AS passengerCapacity,
-        COALESCE(tv.passengerCount, 0) AS passengerCount,
+        COALESCE(sum(tv.passengerCount), 0) AS passengerCount,
         COALESCE(rr.totalRooms, 0) AS totalRooms,
-        CAST(COALESCE(SUM(rm.usedRooms), 0) AS SIGNED) AS usedRooms,
+        COALESCE(SUM(rm.usedRooms), 0) AS usedRooms,
         COALESCE(inc.ticketIncome, 0) AS ticketIncome,
         0 AS secondIncome
         FROM product_voyage v