|
@@ -0,0 +1,175 @@
|
|
|
+package com.yc.ship.module.product.service.voyagestockdistribute;
|
|
|
+
|
|
|
+import com.yc.ship.module.ota.api.OtaDistributorApi;
|
|
|
+import com.yc.ship.module.ota.api.dto.DistributorRespDTO;
|
|
|
+import com.yc.ship.module.ota.enums.DistributorTypeEnum;
|
|
|
+import com.yc.ship.module.otc.api.store.StoreApi;
|
|
|
+import com.yc.ship.module.otc.api.store.dto.StoreInfoRespDTO;
|
|
|
+import com.yc.ship.module.otc.api.store.dto.StoreRespDTO;
|
|
|
+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.service.distributorDiscount.DistributorDiscountService;
|
|
|
+import com.yc.ship.module.product.service.voyage.VoyageService;
|
|
|
+import com.yc.ship.module.product.service.voyagestockdetail.VoyageStockDetailService;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import javax.annotation.Resource;
|
|
|
+import org.springframework.validation.annotation.Validated;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
+
|
|
|
+import java.util.*;
|
|
|
+import com.yc.ship.module.product.controller.admin.voyagestockdistribute.vo.*;
|
|
|
+import com.yc.ship.module.product.dal.dataobject.voyagestockdistribute.VoyageStockDistributeDO;
|
|
|
+import com.yc.ship.framework.common.pojo.PageResult;
|
|
|
+import com.yc.ship.framework.common.pojo.PageParam;
|
|
|
+import com.yc.ship.framework.common.util.object.BeanUtils;
|
|
|
+
|
|
|
+import com.yc.ship.module.product.dal.mysql.voyagestockdistribute.VoyageStockDistributeMapper;
|
|
|
+
|
|
|
+import static com.yc.ship.framework.common.exception.util.ServiceExceptionUtil.exception;
|
|
|
+import static com.yc.ship.module.product.enums.ErrorCodeConstants.*;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 航次库存分配 Service 实现类
|
|
|
+ *
|
|
|
+ * @author 管理员
|
|
|
+ */
|
|
|
+@Service
|
|
|
+@Validated
|
|
|
+public class VoyageStockDistributeServiceImpl implements VoyageStockDistributeService {
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private VoyageStockDistributeMapper voyageStockDistributeMapper;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private VoyageStockDetailService voyageStockDetailService;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private VoyageService voyageService;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private OtaDistributorApi otaDistributorApi;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private StoreApi storeApi;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Long createVoyageStockDistribute(VoyageStockDistributeSaveReqVO createReqVO) {
|
|
|
+ // 插入
|
|
|
+ VoyageStockDistributeDO voyageStockDistribute = BeanUtils.toBean(createReqVO, VoyageStockDistributeDO.class);
|
|
|
+ voyageStockDistributeMapper.insert(voyageStockDistribute);
|
|
|
+ // 返回
|
|
|
+ return voyageStockDistribute.getId();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void updateVoyageStockDistribute(VoyageStockDistributeSaveReqVO updateReqVO) {
|
|
|
+ // 更新
|
|
|
+ VoyageStockDistributeDO updateObj = BeanUtils.toBean(updateReqVO, VoyageStockDistributeDO.class);
|
|
|
+ voyageStockDistributeMapper.updateById(updateObj);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void deleteVoyageStockDistribute(Long id) {
|
|
|
+ // 删除
|
|
|
+ voyageStockDistributeMapper.deleteById(id);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public VoyageStockDistributeDO getVoyageStockDistribute(Long id) {
|
|
|
+ return voyageStockDistributeMapper.selectById(id);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public PageResult<VoyageStockDistributeDO> getVoyageStockDistributePage(VoyageStockDistributePageReqVO pageReqVO) {
|
|
|
+ return voyageStockDistributeMapper.selectPage(pageReqVO);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<VoyageStockDistributeDO> getListByVoyageId(Long voyageId) {
|
|
|
+ List<VoyageStockDistributeDO> list = voyageStockDistributeMapper.selectListByVoyageId(voyageId);
|
|
|
+ VoyageDO voyage = voyageService.getVoyage(voyageId);
|
|
|
+ if(list.isEmpty()) {
|
|
|
+// list = new ArrayList<>();
|
|
|
+ List<VoyageStockDetailDO> stockDetailDOS = voyageStockDetailService.getListByVoyageId(voyageId);
|
|
|
+ // OTA分销商类型数据
|
|
|
+ stockDetailDOS.stream().forEach(item -> {
|
|
|
+ VoyageStockDistributeDO stockDistributeDO = new VoyageStockDistributeDO();
|
|
|
+ stockDistributeDO.setVoyageId(item.getVoyageId());
|
|
|
+ stockDistributeDO.setRoomModelId(item.getRoomModelId());
|
|
|
+ stockDistributeDO.setFloor(item.getFloor());
|
|
|
+ stockDistributeDO.setNum(0);
|
|
|
+ stockDistributeDO.setDistributorType(DistributorTypeEnum.OTA.getType());
|
|
|
+ stockDistributeDO.setDistributorId(null);
|
|
|
+ stockDistributeDO.setStoreId(null);
|
|
|
+ stockDistributeDO.setShipId(voyage.getShipId());
|
|
|
+ list.add(stockDistributeDO);
|
|
|
+ });
|
|
|
+ //旅行社分销商类型数据
|
|
|
+ stockDetailDOS.stream().forEach(item -> {
|
|
|
+ VoyageStockDistributeDO stockDistributeDO = new VoyageStockDistributeDO();
|
|
|
+ stockDistributeDO.setVoyageId(item.getVoyageId());
|
|
|
+ stockDistributeDO.setRoomModelId(item.getRoomModelId());
|
|
|
+ stockDistributeDO.setFloor(item.getFloor());
|
|
|
+ stockDistributeDO.setNum(0);
|
|
|
+ stockDistributeDO.setDistributorType(DistributorTypeEnum.OTC.getType());
|
|
|
+ stockDistributeDO.setDistributorId(null);
|
|
|
+ stockDistributeDO.setStoreId(null);
|
|
|
+ stockDistributeDO.setShipId(voyage.getShipId());
|
|
|
+ list.add(stockDistributeDO);
|
|
|
+ });
|
|
|
+
|
|
|
+ //OTA分销商类型的分销商数据
|
|
|
+ List<DistributorRespDTO> otaDistributorList = otaDistributorApi.getDistributorList(DistributorTypeEnum.OTA.getType());
|
|
|
+ otaDistributorList.stream().forEach(distributor -> {
|
|
|
+ stockDetailDOS.stream().forEach(item -> {
|
|
|
+ VoyageStockDistributeDO stockDistributeDO = new VoyageStockDistributeDO();
|
|
|
+ stockDistributeDO.setVoyageId(item.getVoyageId());
|
|
|
+ stockDistributeDO.setRoomModelId(item.getRoomModelId());
|
|
|
+ stockDistributeDO.setFloor(item.getFloor());
|
|
|
+ stockDistributeDO.setNum(0);
|
|
|
+ stockDistributeDO.setDistributorType(DistributorTypeEnum.OTA.getType());
|
|
|
+ stockDistributeDO.setDistributorId(distributor.getId());
|
|
|
+ stockDistributeDO.setStoreId(null);
|
|
|
+ stockDistributeDO.setShipId(voyage.getShipId());
|
|
|
+ list.add(stockDistributeDO);
|
|
|
+ });
|
|
|
+ });
|
|
|
+ //旅行社分销商类型的分销商数据
|
|
|
+ List<DistributorRespDTO> otcDistributorList = otaDistributorApi.getDistributorList(DistributorTypeEnum.OTC.getType());
|
|
|
+ otcDistributorList.stream().forEach(distributor -> {
|
|
|
+ stockDetailDOS.stream().forEach(item -> {
|
|
|
+ VoyageStockDistributeDO stockDistributeDO = new VoyageStockDistributeDO();
|
|
|
+ stockDistributeDO.setVoyageId(item.getVoyageId());
|
|
|
+ stockDistributeDO.setRoomModelId(item.getRoomModelId());
|
|
|
+ stockDistributeDO.setFloor(item.getFloor());
|
|
|
+ stockDistributeDO.setNum(0);
|
|
|
+ stockDistributeDO.setDistributorType(DistributorTypeEnum.OTC.getType());
|
|
|
+ stockDistributeDO.setDistributorId(distributor.getId());
|
|
|
+ stockDistributeDO.setStoreId(null);
|
|
|
+ stockDistributeDO.setShipId(voyage.getShipId());
|
|
|
+ list.add(stockDistributeDO);
|
|
|
+ });
|
|
|
+ });
|
|
|
+ //获取旅行社门店的库存数据
|
|
|
+ List<StoreInfoRespDTO> storeList = storeApi.getStoreList();
|
|
|
+ storeList.stream().forEach(store -> {
|
|
|
+ stockDetailDOS.stream().forEach(item -> {
|
|
|
+ VoyageStockDistributeDO stockDistributeDO = new VoyageStockDistributeDO();
|
|
|
+ stockDistributeDO.setVoyageId(item.getVoyageId());
|
|
|
+ stockDistributeDO.setRoomModelId(item.getRoomModelId());
|
|
|
+ stockDistributeDO.setFloor(item.getFloor());
|
|
|
+ stockDistributeDO.setNum(0);
|
|
|
+ stockDistributeDO.setDistributorType(DistributorTypeEnum.OTC.getType());
|
|
|
+ stockDistributeDO.setDistributorId(store.getAgencyId());
|
|
|
+ stockDistributeDO.setStoreId(store.getId());
|
|
|
+ stockDistributeDO.setShipId(voyage.getShipId());
|
|
|
+ list.add(stockDistributeDO);
|
|
|
+ });
|
|
|
+ });
|
|
|
+ }
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+
|
|
|
+}
|