@ -1,5 +1,6 @@
package com.air.housing.service.impl ;
import cn.hutool.core.collection.CollectionUtil ;
import com.air.common.Constant ;
import com.air.enums.BlocksOriginStatusEnum ;
import com.air.housing.dto.HousingDefine ;
@ -20,6 +21,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers ;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl ;
import com.cinderella.framework.common.core.exception.BusinessException ;
import com.cinderella.framework.common.core.util.R ;
import com.cinderella.framework.common.data.mybatis.QueryPage ;
import lombok.extern.slf4j.Slf4j ;
import org.springframework.beans.factory.annotation.Autowired ;
@ -64,6 +66,12 @@ public class HousingEstatesServiceImpl extends ServiceImpl<HousingEstatesMapper,
@Override
@Transactional ( rollbackFor = Exception . class )
public boolean createFromOrigin ( HousingDefine housingDefine ) {
if ( housingDefine . getHousingEstateId ( ) = = null & & CollectionUtil . isEmpty ( housingDefine . getLandListedId ( ) ) ) {
throw new BusinessException ( "楼盘id和地块id必填一项" ) ;
}
if ( housingDefine . getHousingEstateId ( ) ! = null & & CollectionUtil . isNotEmpty ( housingDefine . getLandListedId ( ) ) ) {
throw new BusinessException ( "楼盘id和地块id只能填写一项" ) ;
}
if ( null = = housingDefine . getBlockId ( ) ) {
throw new BusinessException ( "楼栋id不能为空!" ) ;
}
@ -74,13 +82,28 @@ public class HousingEstatesServiceImpl extends ServiceImpl<HousingEstatesMapper,
//判断楼盘id是否为空, 如果为空则用315楼盘名称新建一条楼盘数据
if ( null = = housingDefine . getHousingEstateId ( ) ) {
HousingEstates housingEstates = new HousingEstates ( ) ;
housingEstates . setName ( blocksOrigin . getNet Name( ) ) ;
housingEstates . setName ( housingDefine . getHousingEstate Name( ) ) ;
housingEstates . setStatusCd ( Constant . COMMON_STATUS_1000 ) ;
this . save ( housingEstates ) ;
housingDefine . setHousingEstateId ( housingEstates . getHousingEstateId ( ) ) ;
}
//查询楼盘业态是否存在,不存在时新建
Format format = formatService . getOne ( Wrappers . < Format > query ( ) . lambda ( )
. eq ( Format : : getHousingEstateId , housingDefine . getHousingEstateId ( ) )
. eq ( Format : : getPropertyType , housingDefine . getPropertyType ( ) )
. eq ( Format : : getLargeFormat , housingDefine . getLargeFormat ( ) )
. eq ( Format : : getFormat , housingDefine . getFormat ( ) ) ) ;
if ( format = = null ) {
format = new Format ( ) ;
format . setHousingEstateId ( housingDefine . getHousingEstateId ( ) ) ;
format . setPropertyType ( housingDefine . getPropertyType ( ) ) ;
format . setLargeFormat ( housingDefine . getLargeFormat ( ) ) ;
format . setFormat ( housingDefine . getFormat ( ) ) ;
format . setStatusCd ( Constant . COMMON_STATUS_1000 ) ;
formatService . save ( format ) ;
}
//保存楼栋和房屋数据
copyBlocksOriginToBlocks ( blocksOrigin , housingDefine ) ;
copyBlocksOriginToBlocks ( blocksOrigin , housingDefine , format . getFormatId ( ) ) ;
//保存楼盘和地块之间的关系
List < String > landListedIds = housingDefine . getLandListedId ( ) ;
List < AnnoBlocksRel > annoBlocksRelList = new ArrayList < > ( landListedIds . size ( ) ) ;
@ -98,18 +121,6 @@ public class HousingEstatesServiceImpl extends ServiceImpl<HousingEstatesMapper,
annoBlocksRelList . add ( annoBlocksRel ) ;
}
annoBlocksRelService . saveBatch ( annoBlocksRelList ) ;
//查询楼盘业态是否存在,不存在时新建
Format format = formatService . getOne ( Wrappers . < Format > query ( ) . lambda ( ) . eq ( Format : : getHousingEstateId , housingDefine . getHousingEstateId ( ) )
. eq ( Format : : getLargeFormat , housingDefine . getLargeFormat ( ) )
. eq ( Format : : getFormat , housingDefine . getFormat ( ) ) ) ;
if ( format = = null ) {
format = new Format ( ) ;
format . setHousingEstateId ( housingDefine . getHousingEstateId ( ) ) ;
format . setLargeFormat ( housingDefine . getLargeFormat ( ) ) ;
format . setFormat ( housingDefine . getFormat ( ) ) ;
format . setStatusCd ( Constant . COMMON_STATUS_1000 ) ;
formatService . save ( format ) ;
}
//origin更新为已处理
blocksOrigin . setStatusCd ( BlocksOriginStatusEnum . HANDLED . getCode ( ) ) ;
blocksOrigin . updateById ( ) ;
@ -131,8 +142,8 @@ public class HousingEstatesServiceImpl extends ServiceImpl<HousingEstatesMapper,
. eq ( LandListed : : getLandListedId , annoBlocksRel . getLandListedId ( ) ) ) ;
detail . setLandListed ( landListed ) ;
}
Format format = formatService . getOne ( Wrappers . < Format > lambdaQuery ( ) . eq ( Format : : getHousingEstateId , housingEstateId ) ) ;
detail . setFormat ( format ) ;
List < Format > format = formatService . list ( Wrappers . < Format > lambdaQuery ( ) . eq ( Format : : getHousingEstateId , housingEstateId ) ) ;
detail . setFormats ( format ) ;
return detail ;
}
@ -141,15 +152,13 @@ public class HousingEstatesServiceImpl extends ServiceImpl<HousingEstatesMapper,
return baseMapper . selectIPage ( page . toPage ( ) , query ) ;
}
private void copyBlocksOriginToBlocks ( BlocksOrigin blocksOrigin , HousingDefine housingDefine ) {
private void copyBlocksOriginToBlocks ( BlocksOrigin blocksOrigin , HousingDefine housingDefine , Long formatId ) {
Blocks blocks = new Blocks ( ) ;
blocks . setHousingEstateId ( housingDefine . getHousingEstateId ( ) ) ;
blocks . setFormatId ( formatId ) ;
blocks . setBlockName ( blocksOrigin . getBuildingNo ( ) ) ;
blocks . setPreSalePermitNo ( blocksOrigin . getPreSaleLicenseNo ( ) ) ;
blocks . setStatusCd ( Constant . COMMON_STATUS_1000 ) ;
blocks . setFormat ( housingDefine . getFormat ( ) ) ;
blocks . setLargeFormat ( housingDefine . getLargeFormat ( ) ) ;
blocks . setPropertyType ( housingDefine . getPropertyType ( ) ) ;
blocksService . save ( blocks ) ;
copyHousesOriginToHouses ( housingDefine . getBlockId ( ) , blocks . getBlockId ( ) ) ;
}