lin
2024-03-20 8ffcd66acb57d4e34ced2906a0049e40affe8b1b
重点人员管理接口调整
2 files modified
153 ■■■■■ changed files
src/main/java/org/springblade/modules/house/mapper/HouseholdMapper.xml 35 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/house/service/impl/HouseRentalServiceImpl.java 118 ●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/house/mapper/HouseholdMapper.xml
@@ -199,16 +199,22 @@
        LEFT JOIN jczz_doorplate_address jda ON jda.address_code = jh.house_code
        LEFT JOIN jczz_grid jg on jg.grid_code = jhs.grid_code and jg.is_deleted = 0
        LEFT JOIN jczz_police_affairs_grid jpag on jhs.jw_grid_code= jpag.jw_grid_code and jpag.is_deleted = 0
        LEFT JOIN jczz_user_house_label juhl ON juhl.household_id = jh.id
        LEFT JOIN jczz_label jl ON juhl.label_id = jl.id
        <where>
            <if test="household.labelIdList !=null and household.labelIdList.size() >0 ">
                EXISTS (
                SELECT
                *
                FROM
                jczz_user_house_label juhl
                LEFT JOIN jczz_label jl ON juhl.label_id = jl.id
                where  juhl.household_id = jh.id
                and juhl.lable_type = 1
                AND juhl.household_id IS NOT NULL
                AND jl.id in
                <foreach collection="household.labelIdList" item="code" open="(" close=")" separator=",">
                    #{code}
                </foreach>
                )
            </if>
            <if test="household.userId!=null">
                AND jg.grid_code IN ( SELECT DISTINCT jgm.grid_code FROM jczz_gridman jgm WHERE jgm.user_id =
@@ -216,6 +222,9 @@
                )
            </if>
            <if test="household.searchKey!=null and household.searchKey!=''">
                and CONCAT(jh.name,jh.phone_number) like CONCAT ('%', #{household.searchKey},'%')
            </if>
            <if test="household.name!=null and household.name !=''">
                and jh.name like concat('%',#{household.name},'%')
@@ -226,6 +235,15 @@
            <if test="household.houseCode!=null and household.houseCode !=''">
                and jh.house_code = #{household.houseCode}
            </if>
                <!-- 等于18 就是租户 -->
            <if test="household.relationship!=null and household.relationship == 18">
                and jh.relationship = #{household.relationship}
            </if>
            <!-- 不等于18 就是非租户 -->
            <if test="household.relationship!=null and household.relationship != 18">
                and jh.relationship != #{household.relationship}
            </if>
            <if test="household.phoneNumber!=null and household.phoneNumber !=''">
                and jh.phone_number like concat('%',#{household.phoneNumber},'%')
            </if>
@@ -304,19 +322,6 @@
                    </otherwise>
                </choose>
            </if>
<!--            <if test="isAdministrator==2">-->
<!--                <choose>-->
<!--                    <when test="regionChildCodesList !=null and regionChildCodesList.size()>0">-->
<!--                        and jg.community_code in-->
<!--                        <foreach collection="regionChildCodesList" item="code" open="(" close=")" separator=",">-->
<!--                            #{code}-->
<!--                        </foreach>-->
<!--                    </when>-->
<!--                    <otherwise>-->
<!--                        and jg.community_code in ('')-->
<!--                    </otherwise>-->
<!--                </choose>-->
<!--            </if>-->
            <if test="household.building!=null and household.building!=''">
                and jhs.building like concat(#{household.building},'%')
            </if>
src/main/java/org/springblade/modules/house/service/impl/HouseRentalServiceImpl.java
@@ -20,6 +20,7 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import liquibase.repackaged.org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.util.Strings;
import org.springblade.common.constant.CommonConstant;
import org.springblade.common.param.CommonParamSet;
@@ -39,11 +40,13 @@
import org.springblade.modules.house.vo.HouseholdVO;
import org.springblade.modules.system.entity.User;
import org.springblade.modules.system.service.IUserService;
import org.springblade.modules.system.vo.UserVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
@@ -167,18 +170,21 @@
                phoneList.add(e.getPhoneNumber());
            });
            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));
                    .eq(User::getIsDeleted, 0));
                for (User user : list) {
                    boolean contains = user.getRoleId().contains("1717429059648606209");
                    if (contains) {
                        continue;
                    if (StringUtils.isNoneBlank(user.getRoleId())) {
                        boolean contains = user.getRoleId().contains("1717429059648606209");
                        if (contains) {
                            continue;
                        }
                        user.setRoleId(user.getRoleId() + ",1717429059648606209");
                    } else {
                        user.setRoleId("1717429059648606209");
                    }
                    user.setRoleId(user.getRoleId() + ",1717429059648606209");
                }
                bean.updateBatchById(list);
            } catch (Exception e) {
@@ -233,33 +239,27 @@
        List<HouseholdEntity> addList = new ArrayList<>();
        List<HouseholdEntity> updateList = new ArrayList<>();
        List<HouseholdEntity> removeList = new ArrayList<>();
        List<User> addUserList = new ArrayList<>();
//        List<User> updateUserList = new ArrayList<>();
//        List<User> removeUserList = new ArrayList<>();
        // 找出需要新增的,否则组成新集合进行比对
        List<String> phoneList = new ArrayList<>();
        IUserService userService = SpringUtils.getBean(IUserService.class);
        for (HouseholdEntity householdEntity : list) {
            if (null == householdEntity.getId()) {
                // 新增用戶
                User user = new User();
                user.setAccount(householdEntity.getPhoneNumber());
                user.setUserType(1);
                user.setRealName(householdEntity.getName());
                user.setName(householdEntity.getName());
                user.setPassword(DigestUtil.encrypt(CommonConstant.DEFAULT_PASSWORD));
                user.setRoleId("1717429059648606209");
                boolean save = userService.save(user);
                // 新增或更新用户
                boolean save = isSave(userService, householdEntity, user);
                // 新增住户
                householdEntity.setHouseCode(houseRental.getHouseCode());
                householdEntity.setHousingRentalId(houseRental.getId());
                householdEntity.setRelationship(18);
                householdEntity.setResidentialStatus(1);
//                householdEntity.setIdCard(houseRental.getid);
                householdEntity.setRoleType(2);
//                householdEntity.setName();
                if (save) {
                    householdEntity.setAssociatedUserId(user.getId());
                }
                addList.add(householdEntity);
                // 添加手机号
                phoneList.add(householdEntity.getPhoneNumber());
            } else {
                newList.add(householdEntity);
@@ -269,6 +269,7 @@
        // 取旧数据和新提交数据差集--删除
        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());
@@ -279,38 +280,85 @@
        }
        // 批量修改
        if (updateList.size() > 0) {
            updateFlag = iHouseholdService.updateBatchById(updateList);
            for (HouseholdEntity householdEntity : updateList) {
                phoneList.add(householdEntity.getPhoneNumber());
                User user = new User();
                // 修改用户,用户存在则更新用户,不存在则新增用户
                boolean save = isSave(userService, householdEntity, user);
                if (save) {
                    householdEntity.setAssociatedUserId(user.getId());
                }
            }
            updateFlag = iHouseholdService.updateBatchById(updateList);
        }
        // 批量删除
        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;
            // 删除用户。判断用户是否有其他角色,
            for (HouseholdEntity householdEntity : removeList) {
                if (householdEntity.getAssociatedUserId() != null) {
                    UserVO userVO = userService.getuserById(householdEntity.getAssociatedUserId());
                    if (userVO.getRoleId().contains("1717429059648606209")) {
                        List<String> stringList = Arrays.asList(userVO.getRoleId().split(","));
                        // 有其他角色
                        if (stringList.size() >= 2) {
                            List<String> collect = stringList.stream().filter(item -> !item.equals("1717429059648606209")).collect(Collectors.toList());
                            userVO.setRoleId(StringUtils.join(collect, ","));
                            userService.updateById(userVO);
                        } else {
                            // 没有其他角色
                            userService.removeById(userVO.getId());
                        }
                    }
                }
                user.setRoleId(user.getRoleId() + ",1717429059648606209");
            }
            bean.updateBatchById(list2);
        } catch (Exception e) {
            log.error("保存用户角色为居民:", e);
        }
        // 返回
        return update && addFlag && updateFlag && removeFlag;
    }
    /**
     * 保存或更新用户
     * @param userService
     * @param householdEntity
     * @param user
     * @return
     */
    private boolean isSave(IUserService userService, HouseholdEntity householdEntity, User user) {
        boolean save;
        // 查询该住户是否有账号
        IUserService userService1 = SpringUtils.getBean(IUserService.class);
        User user1 = userService1.getOne(Wrappers.<User>lambdaQuery()
            .eq(User::getPhone, householdEntity.getPhoneNumber())
            .eq(User::getIsDeleted, 0).last("limit 1"));
        if (user1 != null) {
            user = user1;
            user.setName(householdEntity.getName());
            if (StringUtils.isNoneBlank(user.getRoleId())) {
                boolean contains = user.getRoleId().contains("1717429059648606209");
                if (!contains) {
                    user.setRoleId(user.getRoleId() + ",1717429059648606209");
                }
            } else {
                user.setRoleId("1717429059648606209");
            }
            // 更新用户
            save = userService.updateById(user);
            return save;
        }
        // 新增用户
        user.setAccount(householdEntity.getPhoneNumber());
        user.setUserType(1);
        user.setPhone(householdEntity.getPhoneNumber());
        user.setRealName(householdEntity.getName());
        user.setName(householdEntity.getName());
        user.setPassword(DigestUtil.encrypt(CommonConstant.DEFAULT_PASSWORD));
        user.setRoleId("1717429059648606209");
        save = userService.save(user);
        return save;
    }
    /**
     * 获取统计数据
     *
     * @return