linwe
2024-05-17 dde162ffb34f2cc0ece4ca9cfcd09e2cb42ace6d
src/main/java/org/springblade/modules/house/service/impl/HouseholdServiceImpl.java
@@ -16,6 +16,7 @@
 */
package org.springblade.modules.house.service.impl;
import cn.hutool.core.util.IdcardUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -28,14 +29,16 @@
import org.springblade.common.param.CommonParamSet;
import org.springblade.common.utils.NodeTreeUtil;
import org.springblade.common.utils.SpringUtils;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.modules.house.entity.HouseholdEntity;
import org.springblade.modules.house.entity.UserHouseLabelEntity;
import org.springblade.modules.house.excel.HouseHoldExcel;
import org.springblade.modules.house.excel.ExportHouseholdExcel;
import org.springblade.modules.house.excel.ImportHouseholdExcel;
import org.springblade.modules.house.mapper.HouseholdMapper;
import org.springblade.modules.house.service.IHouseService;
import org.springblade.modules.house.service.IHouseholdService;
import org.springblade.modules.house.service.IUserHouseLabelService;
import org.springblade.modules.house.vo.HouseholdLabelVO;
@@ -43,7 +46,6 @@
import org.springblade.modules.house.vo.HouseholdVO;
import org.springblade.modules.label.entity.LabelEntity;
import org.springblade.modules.label.service.ILabelService;
import org.springblade.modules.label.vo.LabelVO;
import org.springblade.modules.place.entity.PlaceEntity;
import org.springblade.modules.place.service.IPlaceService;
import org.springblade.modules.system.entity.DictBiz;
@@ -55,6 +57,8 @@
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StopWatch;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
@@ -248,16 +252,9 @@
      User newUser = new User();
      if (null != householdEntity.getPhoneNumber() && !householdEntity.getPhoneNumber().equals("")) {
         //根据手机号查询库里的数据
         User userParams = new User();
         userParams.setPhone(householdEntity.getPhoneNumber());
         User user = userService.getOne(Condition.getQueryWrapper(userParams));
         if (null == user) {
            User userParams1 = new User();
            userParams1.setAccount(householdEntity.getPhoneNumber());
            userParams1.setIsDeleted(0);
            user = userService.getOne(Condition.getQueryWrapper(userParams1));
         }
         if (null != user) {
         List<User> list = userService.getUserListByPhoneOrAccount(householdEntity.getPhoneNumber());
         if (list.size()>0) {
            User user = list.get(0);
            //如果用户存在,则该用户id绑定场所
            householdEntity.setAssociatedUserId(user.getId());
            //更新住户信息
@@ -304,20 +301,169 @@
      return baseMapper.getHouseholdListById(household);
   }
   /**
    * 导出住户信息
    * @param household
    * @return
    */
   @Override
   public List<HouseHoldExcel> export(HouseholdVO household) {
      List<HouseHoldExcel> userHouseHoldExcels = baseMapper.export(household);
   public List<ExportHouseholdExcel> export(HouseholdVO household) {
      CommonParamSet commonParamSet = new CommonParamSet().invoke(HouseholdVO.class, household);
      // 重点人员与关注人员
      if (Objects.nonNull(household.getLabelType())) {
         extracted(household);
      }
      List<ExportHouseholdExcel> userHouseHoldExcels = baseMapper.export(household,
         commonParamSet.getIsAdministrator(),
         commonParamSet.getRegionChildCodesList(),
         commonParamSet.getGridCodeList()
      );
      return userHouseHoldExcels;
   }
   /**
    * 导入住户数据
    * @param data
    * @param isCovered
    */
   @Override
   @Transactional(rollbackFor = Exception.class)
   public void importUserHouseHold(List<HouseHoldExcel> data, Boolean isCovered) {
      data.forEach(houseHoldExcel -> {
         HouseholdEntity houseHoldEntity = Objects.requireNonNull(BeanUtil.copy(houseHoldExcel, HouseholdEntity.class));
         this.save(houseHoldEntity);
      });
   public String importUserHouseHold(List<ImportHouseholdExcel> data, Boolean isCovered) {
      IHouseService houseService = SpringUtils.getBean(IHouseService.class);
      int totalNum = data.size();
      int importNum = 0;
      int updateNum = 0;
      int errorNum = 0;
      for (ImportHouseholdExcel houseHoldExcel : data) {
         HouseholdEntity householdEntity = Objects.requireNonNull(BeanUtil.copy(houseHoldExcel, HouseholdEntity.class));
         // 判断姓名,手机号
         if (Strings.isBlank(householdEntity.getName())
            || Strings.isBlank(householdEntity.getPhoneNumber())
            || Strings.isBlank(householdEntity.getHouseCode())
         ){
            errorNum ++;
            continue;
         }
         // 查询库中是否已存在
         QueryWrapper<HouseholdEntity> wrapper = new QueryWrapper<>();
         wrapper.eq("house_code", householdEntity.getHouseCode())
            .eq("is_deleted", 0)
            .eq("phone_number", householdEntity.getPhoneNumber())
            .eq("name", householdEntity.getName());
         HouseholdEntity one = this.getOne(wrapper);
         // 与角色关系
         if (!Strings.isBlank(houseHoldExcel.getRelationship())) {
            householdEntity.setRelationship(Integer.parseInt(houseHoldExcel.getRelationship()));
            // 如果是业主,则需要往用户表插入用户
            if (householdEntity.getRelationship() == 1) {
               houseService.saveOrUpdateUser(householdEntity);
            }
         }
         /// 是否主要联系人
         if (!Strings.isBlank(houseHoldExcel.getIsPrimaryContact())) {
            householdEntity.setIsPrimaryContact(Integer.parseInt(houseHoldExcel.getIsPrimaryContact()));
         }
         // 居住状态
         if (!Strings.isBlank(houseHoldExcel.getResidentialStatus())) {
            householdEntity.setResidentialStatus(Integer.parseInt(houseHoldExcel.getResidentialStatus()));
         }
         // 性别
         if (!Strings.isBlank(houseHoldExcel.getGender())) {
            householdEntity.setGender(Short.parseShort(houseHoldExcel.getGender()));
         }
         // 居民身份证
         if (!Strings.isBlank(houseHoldExcel.getIdCard())) {
            if (IdcardUtil.isValidCard(houseHoldExcel.getIdCard())) {
               // 身份证类型为居民身份证
               householdEntity.setCardType(111);
            }
         }
         // 党员
         if (!Strings.isBlank(houseHoldExcel.getPartyEmber())) {
            householdEntity.setPartyEmber(Integer.parseInt(houseHoldExcel.getPartyEmber()));
         }
         // 民族
         if (!Strings.isBlank(houseHoldExcel.getEthnicity())) {
            householdEntity.setEthnicity(Integer.parseInt(houseHoldExcel.getEthnicity()));
         }
         // 学历
         if (!Strings.isBlank(houseHoldExcel.getEducation())) {
            householdEntity.setEducation(Integer.parseInt(houseHoldExcel.getEducation()));
         }
         // 健康状况
         if (!Strings.isBlank(houseHoldExcel.getHealthStatus())) {
            householdEntity.setHealthStatus(Integer.parseInt(houseHoldExcel.getHealthStatus()));
         }
         // 工作状态
         if (!Strings.isBlank(houseHoldExcel.getWorkStatus())) {
            householdEntity.setWorkStatus(Integer.parseInt(houseHoldExcel.getWorkStatus()));
         }
         // 外出时间
         if (!Strings.isBlank(houseHoldExcel.getGoOutTime())) {
            try {
               Date date = new SimpleDateFormat("yyyy-MM-dd").parse(houseHoldExcel.getGoOutTime());
               householdEntity.setGoOutTime(date);
            } catch (ParseException e) {
               e.printStackTrace();
            }
         }
         // 婚姻状态
         if (!Strings.isBlank(houseHoldExcel.getMaritalStatus())) {
            householdEntity.setMaritalStatus(Integer.parseInt(houseHoldExcel.getMaritalStatus()));
         }
         if (one==null){
            // 新增
            this.save(householdEntity);
            importNum++;
            // 处理标签
            handleLabel(householdEntity,houseHoldExcel);
         }else {
            updateNum++;
            if (isCovered){
               // 覆盖更新
               householdEntity.setId(one.getId());
               // 更新
               updateById(householdEntity);
               importNum++;
               // 处理标签
               handleLabel(householdEntity,houseHoldExcel);
            }
         }
      }
      StringBuilder builder = new StringBuilder("导入完成!");
      builder.append("其中本次表格共有 ").append(totalNum).append(" 条数据,")
         .append("成功导入 ").append(importNum).append(" 条数据。");
      if (updateNum>0) {
         builder.append("其中有 ").append(updateNum).append(" 条数据已存在。");
      }
      if (errorNum>0){
         builder.append("共有 ").append(errorNum).append(" 条数据由于无姓名或手机号或门牌地址编码信息未导入!");
      }
      return builder.toString();
   }
   /**
    * 标签处理
    * @param householdEntity
    * @param houseHoldExcel
    */
   public void handleLabel(HouseholdEntity householdEntity, ImportHouseholdExcel houseHoldExcel) {
      if (!Strings.isBlank(houseHoldExcel.getLabelName())){
         // 查询对应的label集合信息
         List<UserHouseLabelEntity> userHouseLabelList = userHouseLabelService.getLabelList(houseHoldExcel.getLabelName());
         if (userHouseLabelList.size()>0){
            for (UserHouseLabelEntity userHouseLabelEntity : userHouseLabelList) {
               userHouseLabelEntity.setHouseCode(householdEntity.getHouseCode());
               userHouseLabelEntity.setHouseholdId(householdEntity.getId());
               userHouseLabelEntity.setUserId(householdEntity.getAssociatedUserId());
               userHouseLabelEntity.setLableType(1);
               userHouseLabelEntity.setColor("green");
               userHouseLabelService.saveOrUpdateHouseholdLabel(userHouseLabelEntity);
            }
         }
      }
   }
   /**
@@ -330,7 +476,7 @@
   public Integer statistics(Long userId, String neiCode, Integer confirmFlag) {
      HouseholdVO householdVO = new HouseholdVO();
      householdVO.setConfirmFlag(confirmFlag);
      householdVO.setNeiCode(neiCode);
      householdVO.setCommunityCode(neiCode);
      CommonParamSet commonParamSet = new CommonParamSet().invoke(HouseholdVO.class, householdVO);
      return baseMapper.statistics(householdVO, commonParamSet.getIsAdministrator(),
@@ -581,4 +727,47 @@
         node.setChildren(null);
      }
   }
   /**
    * 通过小区id查询用户
    * @param householdVO
    * @param page
    * @return
    */
   @Override
   public IPage<HouseholdVO> getUserInfoByDistrictIds(HouseholdVO householdVO, IPage<HouseholdVO> page) {
      List<String> list = Func.toStrList(householdVO.getDistrictIds());
      List<HouseholdVO> userInfoByDistrictIds = baseMapper.getUserInfoByDistrictIds(list, householdVO, page);
      return page.setRecords(userInfoByDistrictIds);
   }
   /**
    * 查询住户对应的社区编号
    * @param id
    * @return
    */
   @Override
   public String getCommunityCode(Long id) {
      return baseMapper.getCommunityCode(id);
   }
   /**
    * 查询所有住户总数
    * @return
    */
   @Override
   public int getAllListTotal() {
      return baseMapper.getAllListTotal();
   }
   /**
    * 查询对应的住户集合
    * @param i
    * @param size
    * @return
    */
   @Override
   public List<HouseholdVO> getAllList(int i, int size) {
      return baseMapper.getAllList(i,size);
   }
}