|
@@ -6,12 +6,19 @@ 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.framework.mybatis.core.util.MyBatisUtils;
|
|
|
+import com.yc.ship.module.product.controller.admin.voyagestock.vo.VoyageStockPageReqVO;
|
|
|
+import com.yc.ship.module.product.controller.admin.voyagestock.vo.VoyageStockRespVO;
|
|
|
import com.yc.ship.module.product.controller.admin.voyagestockdistributeNew.vo.*;
|
|
|
+import com.yc.ship.module.product.dal.dataobject.voyagestock.VoyageStockDO;
|
|
|
+import com.yc.ship.module.product.dal.dataobject.voyagestock.VoyageStockRoomUsedDO;
|
|
|
import com.yc.ship.module.product.dal.dataobject.voyagestockdistribute.VoyageStockDistributeNewDO;
|
|
|
import com.yc.ship.module.product.dal.dataobject.voyagestockdistribute.VoyageStockDistributeRoomDO;
|
|
|
+import com.yc.ship.module.product.dal.mysql.voyagestock.VoyageStockRoomUsedMapper;
|
|
|
import com.yc.ship.module.product.dal.mysql.voyagestockdistribute.VoyageStockDistributeNewMapper;
|
|
|
import com.yc.ship.module.product.enums.DistributorOrStoreEnum;
|
|
|
+import com.yc.ship.module.product.enums.YesOrNoEnum;
|
|
|
import com.yc.ship.module.product.framework.lock.ProductRedisKeyConstants;
|
|
|
+import com.yc.ship.module.product.service.voyagestock.VoyageStockService;
|
|
|
import com.yc.ship.module.product.service.voyagestockdetail.VoyageStockDetailService;
|
|
|
import com.yc.ship.module.resource.api.room.RoomApi;
|
|
|
import com.yc.ship.module.resource.api.room.dto.RoomRespDTO;
|
|
@@ -60,6 +67,13 @@ public class VoyageStockDistributeNewServiceImpl implements VoyageStockDistribut
|
|
|
@Resource
|
|
|
private RedissonClient redissonClient;
|
|
|
|
|
|
+ @Resource
|
|
|
+ private VoyageStockService voyageStockService;
|
|
|
+
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private VoyageStockRoomUsedMapper voyageStockRoomUsedMapper;
|
|
|
+
|
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
@Override
|
|
@@ -149,10 +163,17 @@ public class VoyageStockDistributeNewServiceImpl implements VoyageStockDistribut
|
|
|
// 获取已被分配的房间
|
|
|
List<VoyageStockDistributeRoomDO> distributeRoomList = voyageStockDistributeRoomService.getListByVoyageId(voyageId, DistributorOrStoreEnum.DISTRIBUTOR.getValue());
|
|
|
List<Long> selectedRoomIds = CollectionUtils.convertList(distributeRoomList, VoyageStockDistributeRoomDO::getRoomId);
|
|
|
+ //获取已被使用的房间
|
|
|
+ List<VoyageStockRoomUsedDO> roomUsedList = voyageStockRoomUsedMapper.selectListByVoyageId(voyageId);
|
|
|
+ List<Long> usedRoomIds = CollectionUtils.convertList(roomUsedList, VoyageStockRoomUsedDO::getRoomId);
|
|
|
roomList.stream().forEach(item -> {
|
|
|
item.setIsSelected(selectedRoomIds.contains(item.getId()));
|
|
|
- //TODO 待完善,已被销售的房间不可操作
|
|
|
item.setDisabled(false);//当前全部都可操作
|
|
|
+ if(usedRoomIds.contains(item.getId())) {
|
|
|
+ item.setDisabled(true);
|
|
|
+ }else {
|
|
|
+ item.setDisabled(false);
|
|
|
+ }
|
|
|
});
|
|
|
return roomList;
|
|
|
}
|
|
@@ -170,16 +191,58 @@ public class VoyageStockDistributeNewServiceImpl implements VoyageStockDistribut
|
|
|
roomList = new ArrayList<>();
|
|
|
}
|
|
|
List<Long> roomIds = CollectionUtils.convertList(roomList, VoyageStockDistributeRoomDO::getRoomId);
|
|
|
- List<RoomRespDTO> roomRespList = roomApi.getRoomListByIds(roomIds);
|
|
|
- //TODO: 待完善,此处应该去掉已被选了的房间
|
|
|
+ //获取完全被使用的房间
|
|
|
+ List<VoyageStockRoomUsedDO> allUsedList = voyageStockRoomUsedMapper.selectAllUsedList(reqVO.getVoyageId());
|
|
|
+ List<Long> allUserRoomId = CollectionUtils.convertList(allUsedList, VoyageStockRoomUsedDO::getRoomId);
|
|
|
+ //过滤掉完全被使用的房间
|
|
|
+ List<Long> canSelectRoomIds = roomIds.stream().filter(item -> !allUserRoomId.contains(item)).collect(Collectors.toList());
|
|
|
+ List<RoomRespDTO> roomRespList = roomApi.getRoomListByIds(canSelectRoomIds);
|
|
|
+ // 获取使用一半的房间
|
|
|
+ List<VoyageStockRoomUsedDO> halfUsedList = voyageStockRoomUsedMapper.selectHalfUsedRoom(reqVO.getVoyageId());
|
|
|
+ List<Long> halfUsedRoomIds = CollectionUtils.convertList(halfUsedList, VoyageStockRoomUsedDO::getRoomId);
|
|
|
+ roomRespList.stream().forEach(item -> {
|
|
|
+ if(halfUsedRoomIds.contains(item.getId())) {
|
|
|
+ item.setNum(BigDecimal.valueOf(0.5));
|
|
|
+ }else {
|
|
|
+ item.setNum(BigDecimal.ONE);
|
|
|
+ }
|
|
|
+ });
|
|
|
return roomRespList;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public PageResult<VoyageStockDistributeNewPageRespVO> getPage(VoyageStockDistributeNewPageReqVO reqVO) {
|
|
|
- IPage<VoyageStockDistributeNewPageRespVO> page = MyBatisUtils.buildPage(reqVO);
|
|
|
- IPage iPage = voyageStockDistributeNewMapper.selectPage(page, reqVO);
|
|
|
- return new PageResult<>(iPage.getRecords(), iPage.getTotal());
|
|
|
+ VoyageStockPageReqVO pageParams = BeanUtils.toBean(reqVO, VoyageStockPageReqVO.class);
|
|
|
+ PageResult<VoyageStockRespVO> voyageStockPage = voyageStockService.getVoyageStockPage(pageParams);
|
|
|
+ List<VoyageStockRespVO> list = voyageStockPage.getList();
|
|
|
+ List<Long> voyageIds = CollectionUtils.convertList(list, VoyageStockRespVO::getVoyageId);
|
|
|
+ List<VoyageStockDistributeNewPageRespVO> distributeNewDOS = voyageStockDistributeNewMapper.selectList(voyageIds, reqVO);
|
|
|
+ Map<Long, BigDecimal> idNumMap = CollectionUtils.convertMap(distributeNewDOS, VoyageStockDistributeNewPageRespVO::getVoyageId, VoyageStockDistributeNewPageRespVO::getNum);
|
|
|
+ Map<Long, BigDecimal> idRoomModelNumMap = CollectionUtils.convertMap(distributeNewDOS, VoyageStockDistributeNewPageRespVO::getVoyageId, VoyageStockDistributeNewPageRespVO::getRoomModelNum);
|
|
|
+ List<VoyageStockDistributeNewPageRespVO> resultList = new ArrayList<>();
|
|
|
+ list.stream().forEach(item -> {
|
|
|
+ BigDecimal num = idNumMap.get(item.getVoyageId());
|
|
|
+ BigDecimal roomModelNum = idRoomModelNumMap.get(item.getVoyageId());
|
|
|
+ VoyageStockDistributeNewPageRespVO respVO = new VoyageStockDistributeNewPageRespVO();
|
|
|
+ respVO.setVoyageId(item.getVoyageId());
|
|
|
+ respVO.setVoyageName(item.getVoyageName());
|
|
|
+ respVO.setShipId(item.getShipId());
|
|
|
+ respVO.setShipName(item.getShipName());
|
|
|
+ if(num != null) {
|
|
|
+ respVO.setNum(num);
|
|
|
+ respVO.setEnableShare(YesOrNoEnum.NO.getType());
|
|
|
+ }else {
|
|
|
+ respVO.setNum(item.getShareNum());
|
|
|
+ respVO.setEnableShare(YesOrNoEnum.YES.getType());
|
|
|
+ }
|
|
|
+ if(roomModelNum != null) {
|
|
|
+ respVO.setRoomModelNum(roomModelNum);
|
|
|
+ }else {
|
|
|
+ respVO.setRoomModelNum(BigDecimal.ZERO);
|
|
|
+ }
|
|
|
+ resultList.add(respVO);
|
|
|
+ });
|
|
|
+ return new PageResult<>(resultList, voyageStockPage.getTotal());
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -231,11 +294,16 @@ public class VoyageStockDistributeNewServiceImpl implements VoyageStockDistribut
|
|
|
//获取已被门店选择的房间
|
|
|
List<VoyageStockDistributeRoomDO> storeRoomList = voyageStockDistributeRoomService.getListByVoyageId(voyageId, DistributorOrStoreEnum.STORE.getValue());
|
|
|
List<Long> selectedStoreRoomIds = CollectionUtils.convertList(storeRoomList, VoyageStockDistributeRoomDO::getRoomId);
|
|
|
-
|
|
|
+ //获取已被使用的房间
|
|
|
+ List<VoyageStockRoomUsedDO> roomUsedList = voyageStockRoomUsedMapper.selectListByVoyageId(voyageId);
|
|
|
+ List<Long> usedRoomIds = CollectionUtils.convertList(roomUsedList, VoyageStockRoomUsedDO::getRoomId);
|
|
|
roomList.stream().forEach(item -> {
|
|
|
item.setIsSelected(selectedStoreRoomIds.contains(item.getId()));
|
|
|
- //TODO 待完善,已被销售的房间不可操作
|
|
|
- item.setDisabled(false);//当前全部都可操作
|
|
|
+ if(usedRoomIds.contains(item.getId())) {
|
|
|
+ item.setDisabled(true);
|
|
|
+ }else {
|
|
|
+ item.setDisabled(false);
|
|
|
+ }
|
|
|
});
|
|
|
return roomList;
|
|
|
}
|