|
@@ -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);
|