zhongrj
2024-01-02 c464bb203d8d9874a97424f674f816e45bcd981b
住户导入修改(新增字段),新增省市县树查询
7 files modified
396 ■■■■■ changed files
src/main/java/org/springblade/modules/house/excel/HouseAndHoldExcel.java 114 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/house/service/impl/HouseServiceImpl.java 241 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/system/controller/RegionController.java 9 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/system/mapper/RegionMapper.java 7 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/system/mapper/RegionMapper.xml 10 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/system/service/IRegionService.java 6 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/system/service/impl/RegionServiceImpl.java 9 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/house/excel/HouseAndHoldExcel.java
@@ -6,10 +6,12 @@
import com.alibaba.excel.annotation.write.style.ContentRowHeight;
import com.alibaba.excel.annotation.write.style.HeadRowHeight;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springblade.common.excel.ExcelDictConverter;
import org.springblade.common.excel.ExcelDictItem;
import org.springblade.common.excel.ExcelDictItemLabel;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.math.BigDecimal;
@@ -79,8 +81,8 @@
    /** 服务到期 */
    @ExcelProperty( "服务到期")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date serviceDue;
//    @JsonFormat(pattern = "yyyy-MM-dd")
    private String serviceDue;
    /** 备注 */
    @ExcelProperty( "备注")
@@ -173,11 +175,62 @@
    @ExcelProperty( value = "学历",converter = ExcelDictConverter.class)
    @ExcelDictItemLabel(type = "educationType")
    private String education;
    /** 户籍登记地 */
    /**
     * 户籍类型 业务字典:residentType
     */
    @ColumnWidth(15)
    @ExcelProperty( "户籍登记地")
    @ExcelProperty( value = "户籍类型",converter = ExcelDictConverter.class)
    @ExcelDictItemLabel(type = "residentType")
    private String residentType;
    /**
     * 户籍省份
     */
    @ColumnWidth(15)
    @ExcelProperty( "户籍省份")
    private String residentProvinceAdcode;
    /**
     * 户籍城市
     */
    @ColumnWidth(15)
    @ExcelProperty( "户籍城市")
    private String residentCityAdcode;
    /**
     * 户籍地行政区划(需通过名称转换)
     */
    @ColumnWidth(15)
    @ExcelProperty( "户籍区县")
    private String residentAdcode;
    /**
     * 户籍登记地(户籍地址)
     */
    @ColumnWidth(15)
    @ExcelProperty( "户籍地址")
    private String hukouRegistration;
    /**
     * 籍贯地行政区划(需通过名称转换)
     */
    @ColumnWidth(15)
    @ExcelProperty( "籍贯地区县")
    private String nativePlaceAdcode;
    /**
     * 健康状况    业务字典 healthStatus
     */
    @ColumnWidth(15)
    @ExcelProperty( value = "健康状况",converter = ExcelDictConverter.class)
    @ExcelDictItemLabel(type = "healthStatus")
    private String healthStatus;
    /**
     * 疾病名称
     */
    @ColumnWidth(15)
    @ExcelProperty( "疾病名称")
    private String diseaseName;
    /**
     * 宗教信仰
     */
    @ColumnWidth(15)
    @ExcelProperty( "宗教信仰")
    private String religiousBelief;
    /** 工作状态 */
    @ColumnWidth(15)
@@ -189,6 +242,41 @@
    @ColumnWidth(15)
    @ExcelProperty( "工作单位")
    private String employer;
    /**
     * 职业类别
     */
    @ColumnWidth(15)
    @ExcelProperty( "职业类别")
    private String occupation;
    /**
     * 就职单位地址
     */
    @ExcelProperty( "就职单位地址")
    private String cmpyRegAddr;
    /**
     * 外出原因
     */
    @ColumnWidth(15)
    @ExcelProperty( "外出原因")
    private String goOutReason;
    /**
     * 外出时间
     */
    @ColumnWidth(15)
    @ExcelProperty( "外出时间")
//    @JsonFormat(pattern = "yyyy-MM-dd")
    private String goOutTime;
    /**
     * 外出去向
     */
    @ColumnWidth(15)
    @ExcelProperty( "外出去向")
    private String goOutWhere;
    /**
     * 外出详址
     */
    @ExcelProperty( "外出详址")
    private String goOutAddr;
    /** 婚姻状态 */
    @ColumnWidth(15)
@@ -205,11 +293,17 @@
    @ColumnWidth(15)
    @ExcelProperty( "其他联系方式")
    private String otherContact;
//
//    /** 现居住地址 */
//    @ColumnWidth(15)
//    @ExcelProperty( "现居住地址")
//    private String currentAddress;
    /**
     * 居住地街道
     */
    @ApiModelProperty(value = "居住地街道")
    private String homeAdcode;
    /**
     * 现居住地址
     */
    @ExcelProperty( "居住地址")
    private String currentAddress;
    /** 残疾证 */
    @ColumnWidth(15)
src/main/java/org/springblade/modules/house/service/impl/HouseServiceImpl.java
@@ -46,14 +46,18 @@
import org.springblade.modules.label.entity.LabelEntity;
import org.springblade.modules.label.service.ILabelService;
import org.springblade.modules.system.entity.Dept;
import org.springblade.modules.system.entity.Region;
import org.springblade.modules.system.entity.User;
import org.springblade.modules.system.service.IDeptService;
import org.springblade.modules.system.service.IRegionService;
import org.springblade.modules.system.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
/**
@@ -80,6 +84,9 @@
    @Autowired
    private IUserService userService;
    @Autowired
    private IRegionService regionService;
    @Override
    public IPage<HouseVO> selectHousePage(IPage<HouseVO> page, HouseVO house) {
@@ -256,7 +263,14 @@
            houseEntity.setBuilding(houseAndHoldExcel.getBuilding());
            houseEntity.setArea(houseAndHoldExcel.getArea());
            houseEntity.setPropertyPrice(houseAndHoldExcel.getPropertyPrice());
            houseEntity.setServiceDue(houseAndHoldExcel.getServiceDue());
            if (!Strings.isBlank(houseAndHoldExcel.getServiceDue())) {
                try {
                    Date date = new SimpleDateFormat("yyyy-MM-dd").parse(houseAndHoldExcel.getServiceDue());
                    houseEntity.setServiceDue(date);
                } catch (ParseException e) {
                    e.printStackTrace();
                }
            }
            houseEntity.setRemark(houseAndHoldExcel.getRemark());
            houseEntity.setCreateTime(new Date());
            houseEntity.setCreateUser(AuthUtil.getUserId().toString());
@@ -302,6 +316,7 @@
                    saveOrUpdateUser(householdEntity);
                }
            }
            /// 是否主要联系人
            if (!Strings.isBlank(houseAndHoldExcel.getIsPrimaryContact())){
                householdEntity.setIsPrimaryContact(Integer.parseInt(houseAndHoldExcel.getIsPrimaryContact()));
            }
@@ -320,22 +335,72 @@
            }
            householdEntity.setHkmtPass(houseAndHoldExcel.getHkmtPass());
            householdEntity.setPassport(houseAndHoldExcel.getPassport());
            // 民族
            if (!Strings.isBlank(houseAndHoldExcel.getEthnicity())){
                householdEntity.setEthnicity(Integer.parseInt(houseAndHoldExcel.getEthnicity()));
            }
            // 学历
            if (!Strings.isBlank(houseAndHoldExcel.getEducation())){
                householdEntity.setEducation(Integer.parseInt(houseAndHoldExcel.getEducation()));
            }
            // 户籍类型
            if (!Strings.isBlank(houseAndHoldExcel.getResidentType())){
                householdEntity.setResidentType(Integer.parseInt(houseAndHoldExcel.getResidentType()));
            }
            // 户籍地区县
            if (!Strings.isBlank(houseAndHoldExcel.getResidentAdcode())){
                String adCode = shiftResidentResidentAdCode(houseAndHoldExcel.getResidentProvinceAdcode(),
                    houseAndHoldExcel.getResidentCityAdcode(),
                    houseAndHoldExcel.getResidentAdcode());
                // 转换行政区code
                houseAndHoldExcel.setResidentAdcode(adCode);
            }
            householdEntity.setHukouRegistration(houseAndHoldExcel.getHukouRegistration());
            // 籍贯地区县
            if (!Strings.isBlank(houseAndHoldExcel.getNativePlaceAdcode())){
                String adCode = shiftResidentResidentAdCode(null,
                    null,
                    houseAndHoldExcel.getNativePlaceAdcode());
                // 转换行政区code
                houseAndHoldExcel.setNativePlaceAdcode(adCode);
            }
            // 健康状况
            if (!Strings.isBlank(houseAndHoldExcel.getHealthStatus())){
                householdEntity.setHealthStatus(Integer.parseInt(houseAndHoldExcel.getHealthStatus()));
            }
            householdEntity.setDiseaseName(houseAndHoldExcel.getDiseaseName());
            householdEntity.setReligiousBelief(houseAndHoldExcel.getReligiousBelief());
            // 工作状态
            if (!Strings.isBlank(houseAndHoldExcel.getWorkStatus())){
                householdEntity.setWorkStatus(Integer.parseInt(houseAndHoldExcel.getWorkStatus()));
            }
            householdEntity.setEmployer(houseAndHoldExcel.getEmployer());
            householdEntity.setOccupation(houseAndHoldExcel.getOccupation());
            householdEntity.setCmpyRegAddr(houseAndHoldExcel.getCmpyRegAddr());
            householdEntity.setGoOutReason(houseAndHoldExcel.getGoOutReason());
            if (!Strings.isBlank(houseAndHoldExcel.getGoOutTime())) {
                try {
                    Date date = new SimpleDateFormat("yyyy-MM-dd").parse(houseAndHoldExcel.getGoOutTime());
                    householdEntity.setGoOutTime(date);
                } catch (ParseException e) {
                    e.printStackTrace();
                }
            }
            householdEntity.setGoOutWhere(houseAndHoldExcel.getGoOutWhere());
            householdEntity.setGoOutAddr(houseAndHoldExcel.getGoOutAddr());
            // 婚姻状态
            if (!Strings.isBlank(houseAndHoldExcel.getMaritalStatus())){
                householdEntity.setMaritalStatus(Integer.parseInt(houseAndHoldExcel.getMaritalStatus()));
            }
            householdEntity.setCardNumber(houseAndHoldExcel.getCardNumber());
            householdEntity.setOtherContact(houseAndHoldExcel.getOtherContact());
            if (Strings.isBlank(householdEntity.getHouseCode())){
                // 暂时不处理,导入数据目前都有house_code
                String adCode = shiftResidentHomeAdcode(houseAndHoldExcel.getHomeAdcode());
                // 转换行政区code
                houseAndHoldExcel.setHomeAdcode(adCode);
            }
            householdEntity.setCurrentAddress(houseAndHoldExcel.getCurrentAddress());
            householdEntity.setDisabilityCert(houseAndHoldExcel.getDisabilityCert());
            householdEntity.setRemark(houseAndHoldExcel.getRemarks());
            householdEntity.setCreateTime(new Date());
@@ -365,10 +430,184 @@
                    }
                }
            }
        }else {
            // 更新
            one.setHouseCode(houseAndHoldExcel.getHouseCode());
            one.setName(houseAndHoldExcel.getName());
            one.setPhoneNumber(houseAndHoldExcel.getPhoneNumber());
            if (!Strings.isBlank(houseAndHoldExcel.getRoleType())){
                one.setRoleType(Integer.parseInt(houseAndHoldExcel.getRoleType()));
            }
            // 与角色关系
            if (!Strings.isBlank(houseAndHoldExcel.getRelationship())){
                one.setRelationship(Integer.parseInt(houseAndHoldExcel.getRelationship()));
                // 如果是业主,则需要往用户表插入用户
                if (one.getRelationship()==1){
                    saveOrUpdateUser(one);
                }
            }
            /// 是否主要联系人
            if (!Strings.isBlank(houseAndHoldExcel.getIsPrimaryContact())){
                one.setIsPrimaryContact(Integer.parseInt(houseAndHoldExcel.getIsPrimaryContact()));
            }
            // 居住状态
            if (!Strings.isBlank(houseAndHoldExcel.getResidentialStatus())){
                one.setResidentialStatus(Integer.parseInt(houseAndHoldExcel.getResidentialStatus()));
            }
            // 性别
            if (!Strings.isBlank(houseAndHoldExcel.getGender())){
                one.setGender(Short.parseShort(houseAndHoldExcel.getGender()));
            }
            one.setIdCard(houseAndHoldExcel.getIdCard());
            // 党员
            if (!Strings.isBlank(houseAndHoldExcel.getPartyEmber())){
                one.setPartyEmber(Integer.parseInt(houseAndHoldExcel.getPartyEmber()));
            }
            one.setHkmtPass(houseAndHoldExcel.getHkmtPass());
            one.setPassport(houseAndHoldExcel.getPassport());
            // 民族
            if (!Strings.isBlank(houseAndHoldExcel.getEthnicity())){
                one.setEthnicity(Integer.parseInt(houseAndHoldExcel.getEthnicity()));
            }
            // 学历
            if (!Strings.isBlank(houseAndHoldExcel.getEducation())){
                one.setEducation(Integer.parseInt(houseAndHoldExcel.getEducation()));
            }
            // 户籍类型
            if (!Strings.isBlank(houseAndHoldExcel.getResidentType())){
                one.setResidentType(Integer.parseInt(houseAndHoldExcel.getResidentType()));
            }
            // 户籍地区县
            if (!Strings.isBlank(houseAndHoldExcel.getResidentAdcode())){
                String adCode = shiftResidentResidentAdCode(houseAndHoldExcel.getResidentProvinceAdcode(),
                    houseAndHoldExcel.getResidentCityAdcode(),
                    houseAndHoldExcel.getResidentAdcode());
                // 转换行政区code
                houseAndHoldExcel.setResidentAdcode(adCode);
            }
            one.setHukouRegistration(houseAndHoldExcel.getHukouRegistration());
            // 籍贯地区县
            if (!Strings.isBlank(houseAndHoldExcel.getNativePlaceAdcode())){
                String adCode = shiftResidentResidentAdCode(null,
                    null,
                    houseAndHoldExcel.getNativePlaceAdcode());
                // 转换行政区code
                houseAndHoldExcel.setNativePlaceAdcode(adCode);
            }
            // 健康状况
            if (!Strings.isBlank(houseAndHoldExcel.getHealthStatus())){
                one.setHealthStatus(Integer.parseInt(houseAndHoldExcel.getHealthStatus()));
            }
            one.setDiseaseName(houseAndHoldExcel.getDiseaseName());
            one.setReligiousBelief(houseAndHoldExcel.getReligiousBelief());
            // 工作状态
            if (!Strings.isBlank(houseAndHoldExcel.getWorkStatus())){
                one.setWorkStatus(Integer.parseInt(houseAndHoldExcel.getWorkStatus()));
            }
            one.setEmployer(houseAndHoldExcel.getEmployer());
            one.setOccupation(houseAndHoldExcel.getOccupation());
            one.setCmpyRegAddr(houseAndHoldExcel.getCmpyRegAddr());
            one.setGoOutReason(houseAndHoldExcel.getGoOutReason());
            if (!Strings.isBlank(houseAndHoldExcel.getGoOutTime())) {
                try {
                    Date date = new SimpleDateFormat("yyyy-MM-dd").parse(houseAndHoldExcel.getGoOutTime());
                    one.setGoOutTime(date);
                } catch (ParseException e) {
                    e.printStackTrace();
                }
            }
            one.setGoOutWhere(houseAndHoldExcel.getGoOutWhere());
            one.setGoOutAddr(houseAndHoldExcel.getGoOutAddr());
            // 婚姻状态
            if (!Strings.isBlank(houseAndHoldExcel.getMaritalStatus())){
                one.setMaritalStatus(Integer.parseInt(houseAndHoldExcel.getMaritalStatus()));
            }
            one.setCardNumber(houseAndHoldExcel.getCardNumber());
            one.setOtherContact(houseAndHoldExcel.getOtherContact());
            if (Strings.isBlank(one.getHouseCode())){
                // 暂时不处理,导入数据目前都有house_code
                String adCode = shiftResidentHomeAdcode(houseAndHoldExcel.getHomeAdcode());
                // 转换行政区code
                houseAndHoldExcel.setHomeAdcode(adCode);
            }
            one.setCurrentAddress(houseAndHoldExcel.getCurrentAddress());
            one.setDisabilityCert(houseAndHoldExcel.getDisabilityCert());
            one.setRemark(houseAndHoldExcel.getRemarks());
            one.setUpdateTime(new Date());
            one.setUpdateUser(AuthUtil.getUserId());
            // 新增
            boolean update = householdService.updateById(one);
            if (update) {
                String labelId = houseAndHoldExcel.getLabelId();
                if (StringUtils.isBlank(labelId)) {
                    return;
                }
                String[] split = labelId.split(",");
                IUserHouseLabelService bean = SpringUtils.getBean(IUserHouseLabelService.class);
                ILabelService bean1 = SpringUtils.getBean(ILabelService.class);
                for (String s : split) {
                    LabelEntity one1 = bean1.getOne(Wrappers.<LabelEntity>lambdaQuery().eq(LabelEntity::getLabelName, s));
                    if (one1 != null) {
                        UserHouseLabelEntity userHouseLabelEntity = new UserHouseLabelEntity();
                        userHouseLabelEntity.setLabelId(BigDecimal.valueOf(one1.getId()).longValue());
                        userHouseLabelEntity.setHouseholdId(one.getId());
                        userHouseLabelEntity.setLableType(1);
                        userHouseLabelEntity.setLabelName(s);
                        userHouseLabelEntity.setHouseCode(houseAndHoldExcel.getHouseCode());
                        bean.save(userHouseLabelEntity);
                    }
                }
            }
        }
    }
    /**
     * 现居住地街道转换
     * @param homeAdcode
     * @return
     */
    public String shiftResidentHomeAdcode(String homeAdcode) {
        // 只根据区县名称查询
        QueryWrapper<Region> wrapper = new QueryWrapper<>();
        wrapper.eq("town_name",homeAdcode);
        List<Region> list = regionService.list(wrapper);
        if (list.size()==1){
            return list.get(0).getTownCode();
        }
        return "";
    }
    /**
     * 根据名称转成code
     * @param residentProvinceAdcode 省名称
     * @param residentCityAdcode 市名称
     * @param residentAdcode 区县名称
     */
    public String shiftResidentResidentAdCode(String residentProvinceAdcode,String residentCityAdcode,String residentAdcode) {
        if (!Strings.isBlank(residentProvinceAdcode)
            && !Strings.isBlank(residentCityAdcode)){
            // 根据省市县三级查询对应的区县code
            QueryWrapper<Region> wrapper = new QueryWrapper<>();
            wrapper.eq("province_name",residentProvinceAdcode)
                .eq("city_name",residentCityAdcode)
                .eq("district_name",residentAdcode);
            List<Region> list = regionService.list(wrapper);
            if (list.size()>0){
                return list.get(0).getDistrictCode();
            }
        }else {
            // 只根据区县名称查询
            QueryWrapper<Region> wrapper = new QueryWrapper<>();
            wrapper.eq("district_name",residentAdcode);
            List<Region> list = regionService.list(wrapper);
            if (list.size()==1){
                return list.get(0).getDistrictCode();
            }
        }
        return "";
    }
    /**
     * 保存或更新用户(业主)
     * @param householdEntity
     */
src/main/java/org/springblade/modules/system/controller/RegionController.java
@@ -114,6 +114,15 @@
    }
    /**
     * 树列表(包含省市县三级)
     * @return
     */
    @GetMapping("/getBaseTree")
    public R getBaseTree() {
        return R.data(regionService.getBaseTree());
    }
    /**
     * 树列表
     * @param parentCode
     * @return
src/main/java/org/springblade/modules/system/mapper/RegionMapper.java
@@ -78,4 +78,11 @@
     */
    @MapKey(value = "id")
    Map<String, TreeStringNode> getTownTree(@Param("regionCode") String regionCode);
    /**
     * 树列表(包含省市县三级)
     * @return
     */
    @MapKey(value = "id")
    Map<String, TreeStringNode> getBaseTree();
}
src/main/java/org/springblade/modules/system/mapper/RegionMapper.xml
@@ -140,4 +140,14 @@
        </if>
    </select>
    <!--树列表(包含省市县三级)-->
    <select id="getBaseTree" resultType="org.springblade.common.node.TreeStringNode">
        SELECT
        code as id,
        parent_code as parentId,
        name
        FROM blade_region
        where region_level >0 and region_level &lt;4
    </select>
</mapper>
src/main/java/org/springblade/modules/system/service/IRegionService.java
@@ -98,4 +98,10 @@
     * @return
     */
    List<TreeStringNode> getTownTree(String code);
    /**
     * 树列表(包含省市县三级)
     * @return
     */
    List<TreeStringNode> getBaseTree();
}
src/main/java/org/springblade/modules/system/service/impl/RegionServiceImpl.java
@@ -157,4 +157,13 @@
        }
        return NodeTreeUtil.getStringNodeTree(baseMapper.getTownTree(regionCode));
    }
    /**
     * 树列表(包含省市县三级)
     * @return
     */
    @Override
    public List<TreeStringNode> getBaseTree() {
        return NodeTreeUtil.getStringNodeTree(baseMapper.getBaseTree());
    }
}