linwe
2023-12-06 2901ab60fac3b706fd7858374201087793dfde6c
租客表迁移到住户表
9 files modified
198 ■■■■■ changed files
src/main/java/org/springblade/modules/house/controller/HouseRentalController.java 1 ●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/house/entity/HouseRentalEntity.java 6 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/house/entity/HouseholdEntity.java 10 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/house/entity/UserHouseLabelEntity.java 2 ●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/house/mapper/HouseRentalMapper.xml 23 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/house/mapper/HouseholdMapper.xml 4 ●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/house/service/impl/HouseRentalServiceImpl.java 145 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/house/vo/HouseRentalTenantVO.java 5 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/house/vo/HouseRentalVO.java 2 ●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/house/controller/HouseRentalController.java
@@ -118,7 +118,6 @@
    @ApiOperationSupport(order = 5)
    @ApiOperation(value = "修改", notes = "传入houseRental")
    public R update(@RequestBody HouseRentalEntity houseRental) {
        houseRental.setUpdateTime(new Date());
        houseRental.setUpdateUser(AuthUtil.getUserId());
        return R.status(houseRentalService.updateById(houseRental));
    }
src/main/java/org/springblade/modules/house/entity/HouseRentalEntity.java
@@ -16,10 +16,7 @@
 */
package org.springblade.modules.house.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
@@ -135,6 +132,7 @@
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty("更新时间")
    @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;
    /**
src/main/java/org/springblade/modules/house/entity/HouseholdEntity.java
@@ -16,10 +16,7 @@
 */
package org.springblade.modules.house.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
@@ -197,6 +194,7 @@
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty("创建时间")
    @TableField(value = "create_time",fill = FieldFill.INSERT)
    private Date createTime;
    /**
@@ -212,6 +210,7 @@
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty("更新时间")
    @TableField(value = "update_time",fill = FieldFill.UPDATE)
    private Date updateTime;
    /**
@@ -233,4 +232,7 @@
    @ApiModelProperty("是否审核 0:否:1 是")
    private Integer confirmFlag;
    @ApiModelProperty("出租屋id")
    private  Long housingRentalId;
}
src/main/java/org/springblade/modules/house/entity/UserHouseLabelEntity.java
@@ -83,6 +83,6 @@
    /** 住户id */
    @ApiModelProperty(value = "住户id", example = "")
    @TableField("household_id")
    private Integer householdId;
    private Long householdId;
}
src/main/java/org/springblade/modules/house/mapper/HouseRentalMapper.xml
@@ -25,8 +25,8 @@
    <resultMap id="houseRentalTenant" type="org.springblade.modules.house.vo.HouseRentalVO"
               autoMapping="true">
        <id property="id" column="id"/>
        <collection property="houseTenantVOList" javaType="java.util.List"
                    ofType="org.springblade.modules.house.vo.HouseTenantVO" autoMapping="true">
        <collection property="householdVOList" javaType="java.util.List"
                    ofType="org.springblade.modules.house.vo.HouseholdVO" autoMapping="true">
            <id property="id" column="tenantId"/>
        </collection>
    </resultMap>
@@ -60,21 +60,23 @@
        concat(jh.district_name," ",jh.building," ",unit," ",room) as address,
        case when TIMESTAMPDIFF( MONTH, jhr.rental_time, jhr.due_time )>= 8 then 1
             when TIMESTAMPDIFF( MONTH, jhr.rental_time, jhr.due_time )&lt;4 then 3
             else 2 end as dldType
             else 2 end as dldType,
        if(jhr.termination_time is null,if(date_format(jhr.due_time,'%Y-%m-%d') >= date_format(now(),'%Y-%m-%d'),0,1),2) as status
        FROM jczz_house_rental jhr
        JOIN jczz_doorplate_address jda ON jda.address_code = jhr.house_code
        JOIN jczz_house jh ON jh.house_code = jhr.house_code
        LEFT JOIN (
            SELECT jht.housing_rental_id,jht.name as tenantName,jht.phone
            FROM jczz_house_tenant jht RIGHT JOIN (
            SELECT jht.housing_rental_id,jht.name as tenantName,jht.phone_number as phone
            FROM jczz_household jht RIGHT JOIN (
                SELECT MAX(ID) as id,housing_rental_id
                FROM jczz_house_tenant
                FROM jczz_household
                WHERE is_deleted = 0
                <if test="vo.tenantName != null and vo.tenantName != ''">
                    AND name LIKE CONCAT('%',#{vo.tenantName},'%')
                </if>
                and housing_rental_id is not null
                GROUP BY  housing_rental_id
            ) a ON a.id = jht.id
            ) a ON a.id = jht.id and a.housing_rental_id is not null
        ) b ON b.housing_rental_id = jhr.id
        WHERE jhr.is_deleted = 0
        <if test="vo.auditStatus != null and vo.auditStatus != ''">
@@ -126,12 +128,13 @@
        select
            jhr.*,
            if(termination_time is null,if(date_format(jhr.due_time,'%Y-%m-%d') >= date_format(now(),'%Y-%m-%d'),0,1),2) as status,
            jht.id as tenantId,jht.*
            jht.id as tenantId,
            jht.*
        from jczz_house_rental jhr
        left join jczz_house_tenant jht on jhr.id = jht.housing_rental_id and jht.is_deleted = 0
        left join jczz_household jht on jhr.id = jht.housing_rental_id and jht.is_deleted = 0
        where 1 = 1
        and jhr.is_deleted = 0
        and house_code = #{code}
        and jhr.house_code = #{code}
    </select>
    <sql id="filterHouseGrid">
src/main/java/org/springblade/modules/house/mapper/HouseholdMapper.xml
@@ -38,6 +38,7 @@
        <result column="remark" property="remark"/>
        <result column="is_deleted" property="isDeleted"/>
        <result column="confirm_flag" property="confirmFlag"/>
        <result column="housing_rental_id" property="housingRentalId"/>
    </resultMap>
    <sql id="selectHousehold">
@@ -74,7 +75,8 @@
            update_time,
            remark,
            is_deleted,
            confirm_flag
            confirm_flag,
            housing_rental_id
        from jczz_household
    </sql>
src/main/java/org/springblade/modules/house/service/impl/HouseRentalServiceImpl.java
@@ -17,22 +17,26 @@
package org.springblade.modules.house.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springblade.common.utils.SpringUtils;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.modules.grid.service.IGridService;
import org.springblade.modules.house.entity.HouseRentalEntity;
import org.springblade.modules.house.entity.HouseTenantEntity;
import org.springblade.modules.house.service.IHouseTenantService;
import org.springblade.modules.house.entity.HouseholdEntity;
import org.springblade.modules.house.excel.HouseRentalExcel;
import org.springblade.modules.house.mapper.HouseRentalMapper;
import org.springblade.modules.house.service.IHouseRentalService;
import org.springblade.modules.house.service.IHouseholdService;
import org.springblade.modules.house.vo.HouseRentalStatistics;
import org.springblade.modules.house.vo.HouseRentalTenantVO;
import org.springblade.modules.house.vo.HouseRentalVO;
import org.springblade.modules.house.mapper.HouseRentalMapper;
import org.springblade.modules.house.service.IHouseRentalService;
import org.springblade.modules.house.vo.HouseTenantVO;
import org.springblade.modules.house.excel.HouseRentalExcel;
import org.springblade.modules.house.vo.HouseholdVO;
import org.springblade.modules.system.entity.User;
import org.springblade.modules.system.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
@@ -50,7 +54,8 @@
public class HouseRentalServiceImpl extends ServiceImpl<HouseRentalMapper, HouseRentalEntity> implements IHouseRentalService {
    @Autowired
    private IHouseTenantService houseTenantService;
    private IHouseholdService iHouseholdService;
    @Autowired
    private IGridService gridService;
@@ -104,22 +109,38 @@
        houseRentalVO.setUpdateTime(new Date());
        //保存自身
        boolean save = save(houseRentalVO);
        List<HouseTenantEntity> houseTenantEntities = new ArrayList<>();
        houseRentalVO.getHouseTenantVOList().forEach(e->{
            HouseTenantEntity houseTenant= new HouseTenantEntity();
            houseTenant.setHousingRentalId(houseRentalVO.getId());
            houseTenant.setName(e.getName());
            houseTenant.setPhone(e.getPhone());
            houseTenant.setIdCard(e.getIdCard());
            houseTenant.setDomicile(e.getDomicile());
            houseTenant.setWorkUnit(e.getWorkUnit());
            houseTenantEntities.add(houseTenant);
        List<String> phoneList = new ArrayList<>();
        List<HouseholdEntity> householdEntityList = new ArrayList<>();
        houseRentalVO.getHouseholdVOList().forEach(e -> {
            e.setHouseCode(houseRentalVO.getHouseCode());
            e.setHousingRentalId(houseRentalVO.getId());
            e.setRelationship(18);
            e.setResidentialStatus(1);
            e.setRoleType(2);
            householdEntityList.add(e);
            phoneList.add(e.getPhoneNumber());
        });
        boolean saveBatch = houseTenantService.saveBatch(houseTenantEntities);
        try {
            // 查询租户是否网格员身份的,给网格员设置居民角色
            IUserService bean = SpringUtils.getBean(IUserService.class);
            String str = "1717429261910528001";
            List<User> list = bean.list(Wrappers.<User>lambdaQuery()
                .in(User::getPhone, phoneList)
                .like(User::getRoleId, str));
            for (User user : list) {
                boolean contains = user.getRoleId().contains("1717429059648606209");
                if (contains) {
                    continue;
                }
                user.setRoleId(user.getRoleId() + ",1717429059648606209");
            }
            bean.updateBatchById(list);
        } catch (Exception e) {
            log.error("保存用户角色为居民:", e);
        }
        boolean saveBatch = iHouseholdService.saveBatch(householdEntityList);
        return save&&saveBatch;
        return save && saveBatch;
    }
    /**
@@ -132,8 +153,10 @@
        // 先删除出租屋信息
        boolean b = removeById(id);
        // 再删除租户信息
        int i = houseTenantService.removeByHousingRentalId(id);
        if (i>0){
        boolean update = iHouseholdService.update(Wrappers.<HouseholdEntity>lambdaUpdate()
            .set(HouseholdEntity::getIsDeleted, 1)
            .eq(HouseholdEntity::getHousingRentalId, id));
        if (update) {
            return true && b;
        }
        return false;
@@ -155,31 +178,30 @@
        //更新自身
        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();
        QueryWrapper<HouseholdEntity> wrapper = new QueryWrapper<>();
        wrapper.eq("housing_rental_id", houseRental.getId());
        List<HouseholdEntity> oldList = iHouseholdService.list(wrapper);
        List<HouseholdVO> list = houseRental.getHouseholdVOList();
        // 申明新增,修改,删除集合
        List<HouseTenantEntity> newList = new ArrayList<>();
        List<HouseTenantEntity> addList = new ArrayList<>();
        List<HouseTenantEntity> updateList = new ArrayList<>();
        List<HouseTenantEntity> removeList = new ArrayList<>();
        List<HouseholdEntity> newList = new ArrayList<>();
        List<HouseholdEntity> addList = new ArrayList<>();
        List<HouseholdEntity> updateList = new ArrayList<>();
        List<HouseholdEntity> removeList = new ArrayList<>();
        // 找出需要新增的,否则组成新集合进行比对
        for (HouseTenantVO houseTenantVO : list) {
            houseTenantVO.setHousingRentalId(houseRental.getId());
            if (null==houseTenantVO.getId()){
                // 新增
                HouseTenantEntity houseTenant= new HouseTenantEntity();
        List<String> phoneList = new ArrayList<>();
                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);
        for (HouseholdEntity householdEntity : list) {
            if (null == householdEntity.getId()) {
                // 新增
                householdEntity.setHouseCode(houseRental.getHouseCode());
                householdEntity.setHousingRentalId(houseRental.getId());
                householdEntity.setRelationship(18);
                householdEntity.setResidentialStatus(1);
                householdEntity.setRoleType(2);
                addList.add(householdEntity);
                phoneList.add(householdEntity.getPhoneNumber());
            } else {
                newList.add(householdEntity);
            }
        }
        // 遍历去差集,判断是新增还是删除还是更新
@@ -192,15 +214,36 @@
        // 批量新增
        if (addList.size()>0) {
            addFlag = houseTenantService.saveBatch(addList);
            addFlag = iHouseholdService.saveBatch(addList);
        }
        // 批量修改
        if (updateList.size()>0) {
            updateFlag = houseTenantService.updateBatchById(updateList);
        if (updateList.size() > 0) {
            updateFlag = iHouseholdService.updateBatchById(updateList);
            for (HouseholdEntity householdEntity : updateList) {
                phoneList.add(householdEntity.getPhoneNumber());
            }
        }
        // 批量删除
        if (removeList.size()>0) {
            removeFlag = houseTenantService.removeBatchByIds(removeList);
        if (removeList.size() > 0) {
            removeFlag = iHouseholdService.removeBatchByIds(removeList);
        }
        try {
            // 查询租户是否网格员身份的,给网格员设置居民角色
            IUserService bean = SpringUtils.getBean(IUserService.class);
            String str = "1717429261910528001";
            List<User> list2 = bean.list(Wrappers.<User>lambdaQuery()
                .in(User::getPhone, phoneList)
                .like(User::getRoleId, str));
            for (User user : list2) {
                boolean contains = user.getRoleId().contains("1717429059648606209");
                if (contains) {
                    continue;
                }
                user.setRoleId(user.getRoleId() + ",1717429059648606209");
            }
            bean.updateBatchById(list2);
        } catch (Exception e) {
            log.error("保存用户角色为居民:", e);
        }
        // 返回
        return update && addFlag && updateFlag && removeFlag;
src/main/java/org/springblade/modules/house/vo/HouseRentalTenantVO.java
@@ -36,5 +36,10 @@
     */
    private String address;
    /**
     * 是否到期 0:未到期  1:已到期  2:已终止
     */
    private Integer status;
}
src/main/java/org/springblade/modules/house/vo/HouseRentalVO.java
@@ -48,6 +48,6 @@
    /**
     * 租户集合信息
     */
    private List<HouseTenantVO> houseTenantVOList = new ArrayList<>();
    private List<HouseholdVO> householdVOList = new ArrayList<>();
}