linwe
2024-08-09 8b7258c9427882bb1798f1502eaa35184c6e374e
src/main/java/org/springblade/modules/house/service/impl/HouseRentalServiceImpl.java
@@ -25,6 +25,7 @@
import org.springblade.common.constant.CommonConstant;
import org.springblade.common.param.CommonParamSet;
import org.springblade.common.utils.SpringUtils;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.utils.DigestUtil;
import org.springblade.modules.grid.service.IGridService;
@@ -39,7 +40,9 @@
import org.springblade.modules.house.vo.HouseRentalVO;
import org.springblade.modules.house.vo.HouseholdVO;
import org.springblade.modules.system.entity.User;
import org.springblade.modules.system.entity.UserInfo;
import org.springblade.modules.system.service.IUserService;
import org.springblade.modules.system.vo.UserDetailVO;
import org.springblade.modules.system.vo.UserVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -142,10 +145,12 @@
         // 待审核
         houseRentalVO.setAuditStatus(0);
      }
      //保存自身
      //保存自身(租赁)
      flag = save(houseRentalVO);
      //保存到住户
      flag = saveHousehold(houseRentalVO, flag);
      if (flag){
         flag = saveHousehold(houseRentalVO, flag);
      }
      return flag;
   }
@@ -157,42 +162,72 @@
    * @return
    */
   public boolean saveHousehold(HouseRentalVO houseRentalVO, boolean flag) {
      if (flag && houseRentalVO.getHouseholdVOList().size() > 0) {
         List<String> phoneList = new ArrayList<>();
         List<HouseholdEntity> householdEntityList = new ArrayList<>();
      if (houseRentalVO.getHouseholdVOList().size() > 0) {
         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());
         });
         try {
            // 查询租户是否有居民角色,没有则添加居民角色
            IUserService bean = SpringUtils.getBean(IUserService.class);
            List<User> list = bean.list(Wrappers.<User>lambdaQuery()
               .in(User::getPhone, phoneList)
               .eq(User::getIsDeleted, 0));
            for (User user : list) {
               if (StringUtils.isNoneBlank(user.getRoleId())) {
                  boolean contains = user.getRoleId().contains("1717429059648606209");
                  if (contains) {
                     continue;
                  }
                  user.setRoleId(user.getRoleId() + ",1717429059648606209");
               } else {
                  user.setRoleId("1717429059648606209");
               }
            if (!Strings.isBlank(e.getIdCard())){
               e.setCardType(111);
            }
            bean.updateBatchById(list);
         } catch (Exception e) {
            log.error("保存用户角色为居民:", e);
         }
         flag = iHouseholdService.saveBatch(householdEntityList);
            e.setRoleType(2);
            // 添加住户
            iHouseholdService.save(e);
            // 绑定用户
            bindUserHandle(e);
         });
      }
      return flag;
   }
   /**
    * 租客和用户绑定
    *
    * @param
    */
   public User bindUserHandle(HouseholdEntity householdEntity) {
      IUserService userService = SpringUtils.getBean(IUserService.class);
      IHouseholdService householdService = SpringUtils.getBean(IHouseholdService.class);
      User newUser = new User();
      if (null != householdEntity.getPhoneNumber() && !householdEntity.getPhoneNumber().equals("")) {
         //根据手机号查询库里的数据
         List<User> list = userService.getUserListByPhoneOrAccount(householdEntity.getPhoneNumber());
         if (list.size()>0) {
            User user = list.get(0);
            //如果用户存在,则该用户id绑定场所
            householdEntity.setAssociatedUserId(user.getId());
            //更新住户信息
            householdService.updateById(householdEntity);
            newUser = user;
            // 判断用户是否包含了居民角色,不包含则需更新
            if (!user.getRoleId().contains("1717429059648606209")) {
               user.setRoleId(user.getRoleId() + ",1717429059648606209");
               //更新
               userService.updateById(user);
            }
         } else {
            //如果用户不存在,则新增一个用户
            newUser.setAccount(householdEntity.getPhoneNumber());
            newUser.setPhone(householdEntity.getPhoneNumber());
            newUser.setName(householdEntity.getName());
            newUser.setRealName(householdEntity.getName());
            // 社区群众部门
            newUser.setDeptId("1727979636479037441");
            // 目前暂定居民角色,
            newUser.setRoleId("1717429059648606209");
            //默认密码为 123456
            newUser.setPassword("123456");
            // 设置机构
            // 用户新增
            boolean submit = userService.submit(newUser);
            //绑定id
            householdEntity.setAssociatedUserId(newUser.getId());
            //更新住户信息
            householdService.updateById(householdEntity);
         }
      }
      return newUser;
   }
   /**
@@ -227,6 +262,13 @@
      boolean removeFlag = true;
      houseRental.setUpdateUser(AuthUtil.getUserId());
      houseRental.setUpdateTime(new Date());
      // 获取请求头中的角色别名
      String roleName = SpringUtils.getRequestParam("roleName");
      // 居民
      if (!Strings.isBlank(roleName) && roleName.equals("inhabitant")) {
         // 待审核
         houseRental.setAuditStatus(0);
      }
      //更新自身
      boolean update = updateById(houseRental);
      // 查询对应已存在的租户
@@ -246,16 +288,17 @@
         if (null == householdEntity.getId()) {
            User user = new User();
            // 新增或更新用户
            boolean save = isSave(userService, householdEntity, user);
            user = 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) {
            if (!Strings.isBlank(householdEntity.getIdCard())){
               householdEntity.setCardType(111);
            }
            if (user.getId() != null) {
               householdEntity.setAssociatedUserId(user.getId());
            }
            addList.add(householdEntity);
@@ -284,8 +327,8 @@
            phoneList.add(householdEntity.getPhoneNumber());
            User user = new User();
            // 修改用户,用户存在则更新用户,不存在则新增用户
            boolean save = isSave(userService, householdEntity, user);
            if (save) {
            user = isSave(userService, householdEntity, user);
            if (user.getId() != null) {
               householdEntity.setAssociatedUserId(user.getId());
            }
         }
@@ -297,7 +340,7 @@
         // 删除用户。判断用户是否有其他角色,
         for (HouseholdEntity householdEntity : removeList) {
            if (householdEntity.getAssociatedUserId() != null) {
               UserVO userVO = userService.getuserById(householdEntity.getAssociatedUserId());
               User userVO = userService.getById(householdEntity.getAssociatedUserId());
               if (userVO.getRoleId().contains("1717429059648606209")) {
                  List<String> stringList = Arrays.asList(userVO.getRoleId().split(","));
                  // 有其他角色
@@ -307,7 +350,9 @@
                     userService.updateById(userVO);
                  } else {
                     // 没有其他角色
                     userService.removeById(userVO.getId());
                     userVO.setRoleId("");
                     boolean b = userService.updateById(userVO);
                     System.out.println(b);
                  }
               }
            }
@@ -319,21 +364,23 @@
   /**
    * 保存或更新用户
    *
    * @param userService
    * @param householdEntity
    * @param user
    * @return
    */
   private boolean isSave(IUserService userService, HouseholdEntity householdEntity, User user) {
   private User 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::getAccount, householdEntity.getPhoneNumber())
         .eq(User::getIsDeleted, 0).last("limit 1"));
      if (user1 != null) {
         user = user1;
         user.setName(householdEntity.getName());
         user.setRealName(householdEntity.getName());
         if (StringUtils.isNoneBlank(user.getRoleId())) {
            boolean contains = user.getRoleId().contains("1717429059648606209");
            if (!contains) {
@@ -344,7 +391,7 @@
         }
         // 更新用户
         save = userService.updateById(user);
         return save;
         return user;
      }
      // 新增用户
      user.setAccount(householdEntity.getPhoneNumber());
@@ -355,7 +402,7 @@
      user.setPassword(DigestUtil.encrypt(CommonConstant.DEFAULT_PASSWORD));
      user.setRoleId("1717429059648606209");
      save = userService.save(user);
      return save;
      return user;
   }
   /**
@@ -404,7 +451,7 @@
   @Override
   public Integer getStatisticsCount(HouseRentalTenantVO houseRental) {
      CommonParamSet<Object> commonParamSet = new CommonParamSet<>().invoke(HouseRentalTenantVO.class, houseRental);
      return baseMapper.getStatisticsCount(houseRental, commonParamSet.getGridCodeList(),
         commonParamSet.getRegionChildCodesList(), commonParamSet.getIsAdministrator());
      return baseMapper.getStatisticsCount(houseRental, commonParamSet.getRegionChildCodesList(),
         commonParamSet.getGridCodeList(), commonParamSet.getIsAdministrator());
   }
}