jiangping
2025-06-06 a2299a6d4a6f99e9c11132138f5d3e9ec68f03ea
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwProjectServiceImpl.java
@@ -6,11 +6,13 @@
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.DateUtil;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.YwBuildingMapper;
import com.doumee.dao.business.YwFloorMapper;
import com.doumee.dao.business.YwProjectMapper;
import com.doumee.dao.business.YwRoomMapper;
import com.doumee.dao.business.dto.DataDTO;
import com.doumee.dao.business.model.*;
import com.doumee.dao.business.vo.CompanyTree;
import com.doumee.dao.business.vo.ProjectDataVO;
@@ -21,6 +23,7 @@
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.commons.lang3.StringUtils;
import org.checkerframework.checker.units.qual.A;
import org.springframework.beans.BeanUtils;
@@ -28,6 +31,7 @@
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@@ -137,7 +141,21 @@
    @Override
    public YwProject findById(Integer id) {
        return ywProjectMapper.selectById(id);
        YwProject ywProject = ywProjectMapper.selectById(id);
        if(Objects.isNull(ywProject)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY);
        }
        if(Objects.nonNull(ywProject.getAreaId())){
            Areas a = areasService.findById(ywProject.getAreaId(),Constants.TWO);
            if(a != null){
                ywProject.setAreaName(a.getName());
                ywProject.setCityId(a.getCityId());
                ywProject.setCityName(a.getCityName());
                ywProject.setProvinceId(a.getProvinceId());
                ywProject.setProvinceName(a.getProvinceName());
            }
        }
        return ywProject;
    }
    @Override
@@ -230,11 +248,12 @@
    @Override
    public List<ProjectDataVO> projectTree(){
    public List<ProjectDataVO> projectTree(DataDTO dataDTO){
        List<ProjectDataVO> projectDataVOList = new ArrayList<>();
        List<YwProject>  ywProjectList = ywProjectMapper.selectList(new QueryWrapper<YwProject>().lambda()
                .eq(YwProject::getIsdeleted,Constants.ZERO)
                .eq(YwProject::getStatus,Constants.ZERO)
                .eq(Objects.nonNull(dataDTO.getProjectId()),YwProject::getId,dataDTO.getProjectId())
                .orderByAsc(YwProject::getSortnum)
        );
        for (YwProject ywProject:ywProjectList) {
@@ -247,6 +266,7 @@
        List<YwBuilding>  ywBuildingList = ywBuildingMapper.selectList(new QueryWrapper<YwBuilding>().lambda()
                .eq(YwBuilding::getIsdeleted,Constants.ZERO)
                .eq(YwBuilding::getStatus,Constants.ZERO)
                .eq(Objects.nonNull(dataDTO.getProjectId()),YwBuilding::getProjectId,dataDTO.getProjectId())
                .orderByAsc(YwBuilding::getSortnum)
        );
@@ -262,6 +282,7 @@
        List<YwFloor>  ywFloorList = ywFloorMapper.selectList(new QueryWrapper<YwFloor>().lambda()
                .eq(YwFloor::getIsdeleted,Constants.ZERO)
                .eq(YwFloor::getStatus,Constants.ZERO)
                .eq(Objects.nonNull(dataDTO.getProjectId()),YwFloor::getProjectId,dataDTO.getProjectId())
                .orderByAsc(YwFloor::getSortnum)
        );
@@ -273,28 +294,38 @@
            projectDataVOList.add(projectDataVO);
        }
        List<YwRoom>  ywRoomList = ywRoomMapper.selectList(new QueryWrapper<YwRoom>().lambda()
        List<YwRoom>  ywRoomList = ywRoomMapper.selectJoinList(YwRoom.class,new MPJLambdaWrapper<YwRoom>()
                .selectAll(YwRoom.class)
                .select(" ifnull( (  case when t.IS_INVESTMENT = 0 then 2 else t.LEASE_NOW_STATUS end  ) ,0) ",YwRoom::getLeaseStatus)
                .eq(YwRoom::getIsdeleted,Constants.ZERO)
                .eq(YwRoom::getStatus,Constants.ZERO)
                .orderByAsc(YwRoom::getSortnum)
                .eq(YwRoom::getIsInvestment,Constants.ONE)
                .eq(Objects.nonNull(dataDTO.getProjectId()),YwRoom::getProjectId,dataDTO.getProjectId())
                .apply(Objects.nonNull(dataDTO)&&Objects.nonNull(dataDTO.getStartDate())&&Objects.nonNull(dataDTO.getEndDate())," id not in  (" +
                        " SELECT y2.room_id FROM  yw_contract y1 left join yw_contract_room y2 on y1.id = y2.contract_id where 1 = 1 and y1.`STATUS` in( 0,1,2) " +
                        " and y1.START_DATE < '"+dataDTO.getEndDate()+" 00:00:00' and y1.END_DATE > '"+ dataDTO.getStartDate() +"  00:00:00' " +
                        "  ) ")
                .apply(Objects.nonNull(dataDTO)&&Objects.nonNull(dataDTO.getStartDate())&&Objects.nonNull(dataDTO.getEndDate())," id not in  (" +
                        " SELECT y2.room_id FROM  yw_contract y1 left join yw_contract_room y2 on y1.id = y2.contract_id where 1 = 1 and y1.`STATUS` = 3 " +
                        " and y1.START_DATE < '"+dataDTO.getEndDate()+" 00:00:00' and y1.BT_DATE >= '"+ dataDTO.getStartDate() +"  00:00:00' " +
                        "  ) ")
                .orderByAsc(YwRoom::getRoomNum)
        );
        for (YwRoom data:ywRoomList) {
            ProjectDataVO projectDataVO = new ProjectDataVO();
            BeanUtils.copyProperties(data,projectDataVO);
            projectDataVO.setName(data.getCode());
            projectDataVO.setName(data.getRoomNum());
            projectDataVO.setArea(data.getRentArea().setScale(2, BigDecimal.ROUND_HALF_UP));
            projectDataVO.setPId(data.getFloor());
            projectDataVO.setLv(Constants.THREE);
            projectDataVO.setLeaseStatus(data.getLeaseStatus());
            projectDataVOList.add(projectDataVO);
        }
        ProjectTree treeBuild = new ProjectTree(projectDataVOList);
        projectDataVOList = treeBuild.buildTree();
        return  projectDataVOList;
    }