zhongrj
2023-11-01 efd3674f931b0a2217c67efe88cfc559da67f125
租房,租户新增, 修改,删除修改
9 files modified
196 ■■■■■ changed files
src/main/java/org/springblade/modules/house/controller/HouseRentalController.java 22 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/house/entity/HouseRentalEntity.java 19 ●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/house/mapper/HouseRentalMapper.xml 4 ●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/house/mapper/HouseTenantMapper.java 8 ●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/house/mapper/HouseTenantMapper.xml 4 ●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/house/service/IHouseRentalService.java 21 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/house/service/IHouseTenantService.java 7 ●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/house/service/impl/HouseRentalServiceImpl.java 101 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/house/service/impl/HouseTenantServiceImpl.java 10 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/house/controller/HouseRentalController.java
@@ -98,7 +98,7 @@
    @PostMapping("/add")
    @ApiOperationSupport(order = 4)
    @ApiOperation(value = "自定义新增", notes = "传入houseRentalVo")
    public R add(@Valid @RequestBody HouseRentalVO houseRentalVO) {
    public R add(@RequestBody HouseRentalVO houseRentalVO) {
        return R.status(houseRentalService.add(houseRentalVO));
    }
@@ -110,6 +110,16 @@
    @ApiOperation(value = "修改", notes = "传入houseRental")
    public R update(@Valid @RequestBody HouseRentalEntity houseRental) {
        return R.status(houseRentalService.updateById(houseRental));
    }
    /**
     * 出租屋 自定义修改
     * @param houseRental
     * @return
     */
    @PostMapping("/updateHouseRental")
    public R updateHouseRental(@RequestBody HouseRentalVO houseRental) {
        return R.status(houseRentalService.updateHouseRental(houseRental));
    }
    /**
@@ -132,5 +142,15 @@
        return R.status(houseRentalService.removeByIds(Func.toLongList(ids)));
    }
    /**
     * 出租屋 自定义删除
     * @param id
     * @return
     */
    @PostMapping("/removeHouseRental")
    public R removeHouseRental(@ApiParam(value = "主键集合", required = true) @RequestParam Long id) {
        return R.status(houseRentalService.removeHouseRental(id));
    }
}
src/main/java/org/springblade/modules/house/entity/HouseRentalEntity.java
@@ -59,35 +59,34 @@
    @ApiModelProperty(value = "门牌地址编码")
    private String houseCode;
    /**
     * 房屋名称
     */
    @ApiModelProperty(value = "房屋名称")
    private String houseName;
    /**
     * 租客关系(WGCCP_TENANT_RELATIONSHIP)
     */
    @ApiModelProperty(value = "租客关系(WGCCP_TENANT_RELATIONSHIP)")
    private String tenantRelationship;
    private Integer tenantRelationship;
    /**
     * 租房时间
     */
    @ApiModelProperty(value = "租房时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date rentalTime;
    /**
     * 到期时间
     */
    @ApiModelProperty(value = "到期时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date dueTime;
    /**
     * 房屋状态(WGCCP_HOUSE_STATUS)
     */
    @ApiModelProperty(value = "房屋状态(WGCCP_HOUSE_STATUS)")
    private String houseStatus;
    private Integer houseStatus;
    /**
     * 租房用途
     */
    @ApiModelProperty(value = "租房用途")
    private String rentalUse;
    private Integer rentalUse;
    /**
     * 合同附件URL
     */
@@ -103,7 +102,7 @@
     */
    @JsonSerialize(using = ToStringSerializer.class)
    @ApiModelProperty("创建人")
    private String createUser;
    private Long createUser;
    /**
     * 创建时间
@@ -118,7 +117,7 @@
     */
    @JsonSerialize(using = ToStringSerializer.class)
    @ApiModelProperty("更新人")
    private String updateUser;
    private Long updateUser;
    /**
     * 更新时间
src/main/java/org/springblade/modules/house/mapper/HouseRentalMapper.xml
@@ -43,7 +43,9 @@
            jht.id as tenantId,jht.*
        from jczz_house_rental jhr
        left join jczz_house_tenant jht on jhr.id = jht.housing_rental_id
        where 1 = 1 and house_code = #{code}
        where 1 = 1
        and jhr.is_deleted = 0 and jht.is_deleted = 0
        and house_code = #{code}
    </select>
src/main/java/org/springblade/modules/house/mapper/HouseTenantMapper.java
@@ -16,6 +16,7 @@
 */
package org.springblade.modules.house.mapper;
import org.apache.ibatis.annotations.Param;
import org.springblade.modules.house.entity.HouseTenantEntity;
import org.springblade.modules.house.vo.HouseTenantVO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -39,5 +40,10 @@
     */
    List<HouseTenantVO> selectHouseTenantPage(IPage page, HouseTenantVO houseTenant);
    /**
     * 根据租房id删除租户信息
     * @param housingRentalId
     * @return
     */
    int removeByHousingRentalId(@Param("housingRentalId") Long housingRentalId);
}
src/main/java/org/springblade/modules/house/mapper/HouseTenantMapper.xml
@@ -20,5 +20,9 @@
        select * from jczz_house_tenant where is_deleted = 0
    </select>
    <!--根据租房id删除租户信息-->
    <update id="removeByHousingRentalId">
        update jczz_house_tenant set is_deleted = 1 where housing_rental_id = #{housingRentalId}
    </update>
</mapper>
src/main/java/org/springblade/modules/house/service/IHouseRentalService.java
@@ -48,5 +48,24 @@
     */
    List<HouseRentalVO> getHouseRentalListByCode(String code);
    Boolean add(HouseRentalVO houseRentalVO);
    /**
     * 自定义房屋出租新增
     * @param houseRentalVO
     * @return
     */
    Boolean add(HouseRentalVO houseRentalVO);
    /**
     * 出租屋 自定义删除
     * @param id
     * @return
     */
    Boolean removeHouseRental(Long id);
    /**
     * 出租屋 自定义修改
     * @param houseRental
     * @return
     */
    Boolean updateHouseRental(HouseRentalVO houseRental);
}
src/main/java/org/springblade/modules/house/service/IHouseTenantService.java
@@ -39,5 +39,10 @@
     */
    IPage<HouseTenantVO> selectHouseTenantPage(IPage<HouseTenantVO> page, HouseTenantVO houseTenant);
    /**
     * 根据租房id删除租户信息
     * @param id
     * @return
     */
    int removeByHousingRentalId(Long id);
}
src/main/java/org/springblade/modules/house/service/impl/HouseRentalServiceImpl.java
@@ -16,7 +16,9 @@
 */
package org.springblade.modules.house.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.modules.house.entity.HouseRentalEntity;
import org.springblade.modules.house.entity.HouseTenantEntity;
import org.springblade.modules.house.service.IHouseTenantService;
@@ -31,7 +33,10 @@
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.stream.Collectors;
/**
 * 出租屋 服务实现类
@@ -68,14 +73,21 @@
        return houseRentalVOS;
    }
    /**
     * 自定义房屋出租新增
     * @param houseRentalVO
     * @return
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public Boolean add(HouseRentalVO houseRentalVO) {
        houseRentalVO.setCreateUser(AuthUtil.getUserId());
        houseRentalVO.setCreateTime(new Date());
        houseRentalVO.setUpdateUser(AuthUtil.getUserId());
        houseRentalVO.setUpdateTime(new Date());
        //保存自身
        boolean save = save(houseRentalVO);
        List<HouseTenantEntity> houseTenantEntities = new ArrayList<>();
        houseRentalVO.getHouseTenantVOList().forEach(e->{
            HouseTenantEntity houseTenant= new HouseTenantEntity();
@@ -85,7 +97,6 @@
            houseTenant.setIdCard(e.getIdCard());
            houseTenant.setDomicile(e.getDomicile());
            houseTenant.setWorkUnit(e.getWorkUnit());
            houseTenantEntities.add(houseTenant);
        });
@@ -93,4 +104,88 @@
        return save&&saveBatch;
    }
    /**
     * 出租屋 自定义删除
     * @param id
     * @return
     */
    @Override
    public Boolean removeHouseRental(Long id) {
        // 先删除出租屋信息
        boolean b = removeById(id);
        // 再删除租户信息
        int i = houseTenantService.removeByHousingRentalId(id);
        if (i>0){
            return true && b;
        }
        return false;
    }
    /**
     * 出租屋 自定义修改
     * @param houseRental
     * @return
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public Boolean updateHouseRental(HouseRentalVO houseRental) {
        boolean addFlag = true;
        boolean updateFlag = true;
        boolean removeFlag = true;
        houseRental.setUpdateUser(AuthUtil.getUserId());
        houseRental.setUpdateTime(new Date());
        //更新自身
        boolean update = updateById(houseRental);
        // 查询对应已存在的租户
        QueryWrapper<HouseTenantEntity> wrapper = new QueryWrapper<>();
        wrapper.eq("housing_rental_id",houseRental.getId());
        List<HouseTenantEntity> oldList = houseTenantService.list(wrapper);
        List<HouseTenantVO> list = houseRental.getHouseTenantVOList();
        // 申明新增,修改,删除集合
        List<HouseTenantEntity> newList = new ArrayList<>();
        List<HouseTenantEntity> addList = new ArrayList<>();
        List<HouseTenantEntity> updateList = new ArrayList<>();
        List<HouseTenantEntity> removeList = new ArrayList<>();
        // 找出需要新增的,否则组成新集合进行比对
        for (HouseTenantVO houseTenantVO : list) {
            houseTenantVO.setHousingRentalId(houseRental.getId());
            if (null==houseTenantVO.getId()){
                // 新增
                HouseTenantEntity houseTenant= new HouseTenantEntity();
                houseTenant.setHousingRentalId(houseRental.getId());
                houseTenant.setName(houseTenantVO.getName());
                houseTenant.setPhone(houseTenantVO.getPhone());
                houseTenant.setIdCard(houseTenantVO.getIdCard());
                houseTenant.setDomicile(houseTenantVO.getDomicile());
                houseTenant.setWorkUnit(houseTenantVO.getWorkUnit());
                addList.add(houseTenant);
            }else {
                newList.add(houseTenantVO);
            }
        }
        // 遍历去差集,判断是新增还是删除还是更新
        // 取旧数据和新提交数据差集--删除
        removeList = oldList.stream().filter(vo -> !newList.stream().map(e ->
            e.getId()).collect(Collectors.toList()).contains(vo.getId())).collect(Collectors.toList());
        // 取旧数据和新提交数据交集--更新
        updateList = newList.stream().filter(vo -> oldList.stream().map(e ->
            e.getId()).collect(Collectors.toList()).contains(vo.getId())).collect(Collectors.toList());
        // 批量新增
        if (addList.size()>0) {
            addFlag = houseTenantService.saveBatch(addList);
        }
        // 批量修改
        if (updateList.size()>0) {
            updateFlag = houseTenantService.updateBatchById(updateList);
        }
        // 批量删除
        if (removeList.size()>0) {
            removeFlag = houseTenantService.removeBatchByIds(removeList);
        }
        // 返回
        return update && addFlag && updateFlag && removeFlag;
    }
}
src/main/java/org/springblade/modules/house/service/impl/HouseTenantServiceImpl.java
@@ -39,5 +39,13 @@
        return page.setRecords(baseMapper.selectHouseTenantPage(page, houseTenant));
    }
    /**
     * 根据租房id删除租户信息
     * @param id
     * @return
     */
    @Override
    public int removeByHousingRentalId(Long id) {
        return baseMapper.removeByHousingRentalId(id);
    }
}