| 
					
				 | 
			
			
				@@ -6,7 +6,14 @@ import cn.hutool.core.util.IdUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yc.ship.framework.common.pojo.PageResult; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yc.ship.framework.common.util.collection.CollectionUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yc.ship.framework.common.util.object.BeanUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.yc.ship.module.product.controller.admin.pricetemplate.vo.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.yc.ship.module.product.controller.admin.pricevoyage.vo.PriceVoyageSaveReqVO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yc.ship.module.product.controller.admin.voyage.vo.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.yc.ship.module.product.dal.dataobject.pricearea.PriceAreaDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.yc.ship.module.product.dal.dataobject.pricefloor.PriceFloorDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.yc.ship.module.product.dal.dataobject.priceroommodel.PriceRoomModelDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.yc.ship.module.product.dal.dataobject.pricesinglesetting.PriceSingleSettingDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.yc.ship.module.product.dal.dataobject.pricespu.PriceSpuDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yc.ship.module.product.dal.dataobject.voyage.VoyageDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yc.ship.module.product.dal.dataobject.voyagestock.VoyageStockDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yc.ship.module.product.dal.dataobject.voyagestockdetail.VoyageStockDetailDO; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -15,8 +22,11 @@ import com.yc.ship.module.product.dal.mysql.voyage.VoyageMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yc.ship.module.product.dal.mysql.voyagestock.VoyageStockMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yc.ship.module.product.dal.mysql.voyagestockdetail.VoyageStockDetailMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yc.ship.module.product.dal.mysql.voyagestockdistribute.VoyageStockDistributeNewMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.yc.ship.module.product.enums.UseStatusEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yc.ship.module.product.enums.YesOrNoEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yc.ship.module.product.framework.lock.ProductRedisKeyConstants; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.yc.ship.module.product.service.pricetemplate.PriceTemplateService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.yc.ship.module.product.service.pricevoyage.PriceVoyageService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yc.ship.module.product.utils.VoyageUUCodeUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yc.ship.module.resource.api.ship.ShipApi; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yc.ship.module.resource.api.ship.dto.RoomModelFloorNumDTO; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -72,6 +82,12 @@ public class VoyageServiceImpl implements VoyageService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Resource 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private RedissonClient redissonClient; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Resource 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private PriceTemplateService priceTemplateService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Resource 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private PriceVoyageService priceVoyageService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public Long createVoyage(VoyageSaveReqVO createReqVO) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -283,9 +299,14 @@ public class VoyageServiceImpl implements VoyageService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         String leaveTime = createReqVO.getLeaveTime(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         String boardingTime = createReqVO.getBoardingTime(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Long shipId = createReqVO.getShipId(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Long routeId = createReqVO.getRouteId(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Long templateId = createReqVO.getTemplateId(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        PriceTemplateRespVO priceTemplate = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(templateId != null) { //有价格模板就生成航次价格 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            priceTemplate = priceTemplateService.getPriceTemplate(templateId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 删除该日期内当前游轮当前航线的所有航次 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        voyageMapper.deleteByShipIdAndRouteId(startDate, endDate, shipId, createReqVO.getRouteId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        voyageMapper.deleteByShipIdAndRouteId(startDate, endDate, shipId, routeId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         ShipRespDTO shipRespDTO = shipApi.queryShip(shipId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         List<VoyageDO> voyageDOList = new ArrayList<>(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -298,7 +319,7 @@ public class VoyageServiceImpl implements VoyageService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             voyageDO.setName(shipRespDTO.getName()+startDateStr); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             voyageDO.setCode(VoyageUUCodeUtils.generateVoyageNo(shipRespDTO.getCode(), startDateStr, createReqVO.getBoardingAddress(), createReqVO.getLeaveAddress())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             voyageDO.setShipId(shipId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            voyageDO.setRouteId(createReqVO.getRouteId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            voyageDO.setRouteId(routeId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             voyageDO.setStartTime(LocalDateTimeUtil.parse(startDateStr+"T"+startTime)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             voyageDO.setLeaveTime(LocalDateTimeUtil.parse(leaveDate+"T"+leaveTime)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             voyageDO.setBoardingTime(LocalDateTimeUtil.parse(startDateStr+"T"+boardingTime)); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -315,6 +336,41 @@ public class VoyageServiceImpl implements VoyageService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             voyageDO.setIntroduce(createReqVO.getIntroduce()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             voyageDO.setNotice(createReqVO.getNotice()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             voyageDOList.add(voyageDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(priceTemplate != null) { //有价格模板就生成航次价格 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                PriceVoyageSaveReqVO priceVoyageSaveReqVO = new PriceVoyageSaveReqVO(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                Long priceVoyageId = IdUtil.getSnowflakeNextId(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                priceVoyageSaveReqVO.setId(priceVoyageId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                priceVoyageSaveReqVO.setShipId(shipId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                priceVoyageSaveReqVO.setRouteId(routeId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                priceVoyageSaveReqVO.setTemplateId(templateId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                priceVoyageSaveReqVO.setVoyageId(id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                priceVoyageSaveReqVO.setPriceMode(priceTemplate.getPriceMode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                priceVoyageSaveReqVO.setValidateTime(priceTemplate.getValidateTime()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                priceVoyageSaveReqVO.setStatus(UseStatusEnum.ENABLE.getStatus()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                priceVoyageSaveReqVO.setJctype(priceTemplate.getJctype()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                List<PriceRoomModelRespVO> roomModelList = priceTemplate.getRoomModelList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                List<PriceRoomModelDO> priceRoomModelDOS = BeanUtils.toBean(roomModelList, PriceRoomModelDO.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                priceRoomModelDOS.stream().forEach(priceRoomModelDO -> priceRoomModelDO.setObjectId(priceVoyageId)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                priceVoyageSaveReqVO.setRoomModelList(priceRoomModelDOS); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                List<PriceFloorRespVO> floorList = priceTemplate.getFloorList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                List<PriceFloorDO> priceFloorDOS = BeanUtils.toBean(floorList, PriceFloorDO.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                priceFloorDOS.stream().forEach(priceFloorDO -> priceFloorDO.setObjectId(priceVoyageId)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                priceVoyageSaveReqVO.setFloorList(priceFloorDOS); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                PriceSingleSettingRespVO singleSetting = priceTemplate.getSingleSetting(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                PriceSingleSettingDO singleSettingDO = BeanUtils.toBean(singleSetting, PriceSingleSettingDO.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                singleSettingDO.setObjectId(priceVoyageId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                priceVoyageSaveReqVO.setSingleSetting(singleSettingDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                List<PriceAreaRespVO> areaList = priceTemplate.getAreaList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                List<PriceAreaDO> priceAreaDOS = BeanUtils.toBean(areaList, PriceAreaDO.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                priceAreaDOS.stream().forEach(priceAreaDO -> priceAreaDO.setObjectId(priceVoyageId)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                priceVoyageSaveReqVO.setAreaList(priceAreaDOS); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                List<PriceSpuRespVO> spuList = priceTemplate.getSpuList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                List<PriceSpuDO> priceSpuDOS = BeanUtils.toBean(spuList, PriceSpuDO.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                priceSpuDOS.stream().forEach(priceSpuDO -> priceSpuDO.setObjectId(priceVoyageId)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                priceVoyageSaveReqVO.setSpuList(priceSpuDOS); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                priceVoyageService.createPriceVoyage(priceVoyageSaveReqVO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             startDate = leaveDate.plusDays(intervalDays); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         voyageMapper.insertBatch(voyageDOList); 
			 |