zhongrj
2024-05-15 4de8e288c0512991d847866267d91d08f73760a9
场所导入调整
7 files modified
1 files renamed
322 ■■■■■ changed files
src/main/java/org/springblade/modules/house/excel/ImportHouseholdExcel.java 2 ●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/house/service/impl/HouseServiceImpl.java 5 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/house/service/impl/HouseholdServiceImpl.java 13 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/place/controller/PlaceController.java 41 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/place/excel/ImportPlaceExcel.java 111 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/place/excel/PlaceImporter.java 4 ●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/place/service/IPlaceService.java 5 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/place/service/impl/PlaceServiceImpl.java 141 ●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/house/excel/ImportHouseholdExcel.java
@@ -29,7 +29,7 @@
     * 门牌地址编码
     */
    @ColumnWidth(25)
    @ExcelProperty( "门牌地址编码")
    @ExcelProperty( "门牌地址编码*")
    private String houseCode;
    /** 姓名 */
src/main/java/org/springblade/modules/house/service/impl/HouseServiceImpl.java
@@ -22,18 +22,15 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xxl.job.core.server.EmbedServer;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.util.Strings;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springblade.common.cache.SysCache;
import org.springblade.common.param.CommonParamSet;
import org.springblade.common.utils.IdUtils;
import org.springblade.common.utils.NodeTreeUtil;
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.BeanUtil;
import org.springblade.modules.doorplateAddress.entity.DoorplateAddressEntity;
@@ -57,8 +54,6 @@
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.excel.PlaceExcel;
import org.springblade.modules.place.vo.PlaceVO;
import org.springblade.modules.police.entity.PoliceAffairsGridEntity;
import org.springblade.modules.police.service.IPoliceAffairsGridService;
import org.springblade.modules.system.entity.Region;
src/main/java/org/springblade/modules/house/service/impl/HouseholdServiceImpl.java
@@ -338,7 +338,10 @@
        for (ImportHouseholdExcel houseHoldExcel : data) {
            HouseholdEntity householdEntity = Objects.requireNonNull(BeanUtil.copy(houseHoldExcel, HouseholdEntity.class));
            // 判断姓名,手机号
            if (Strings.isBlank(householdEntity.getName()) || Strings.isBlank(householdEntity.getPhoneNumber())){
            if (Strings.isBlank(householdEntity.getName())
                || Strings.isBlank(householdEntity.getPhoneNumber())
                || Strings.isBlank(householdEntity.getHouseCode())
            ){
                errorNum ++;
                continue;
            }
@@ -431,10 +434,12 @@
        }
        StringBuilder builder = new StringBuilder("导入完成!");
        builder.append("其中本次表格共有 ").append(totalNum).append(" 条数据,")
            .append("成功导入 ").append(importNum).append(" 条数据,")
            .append("其中有 ").append(updateNum).append(" 条数据已存在。");
            .append("成功导入 ").append(importNum).append(" 条数据。");
        if (updateNum>0) {
            builder.append("其中有 ").append(updateNum).append(" 条数据已存在。");
        }
        if (errorNum>0){
            builder.append("共有 ").append(errorNum).append(" 条数据由于无姓名或手机号信息未导入!");
            builder.append("共有 ").append(errorNum).append(" 条数据由于无姓名或手机号或门牌地址编码信息未导入!");
        }
        return builder.toString();
    }
src/main/java/org/springblade/modules/place/controller/PlaceController.java
@@ -44,6 +44,7 @@
import org.springblade.core.boot.ctrl.BladeController;
import org.springframework.web.multipart.MultipartFile;
import java.util.ArrayList;
import java.util.List;
/**
@@ -254,9 +255,43 @@
     */
    @PostMapping("/import-place")
    public R importPlace(MultipartFile file, Integer isCovered) {
        PlaceImporter placeImporter = new PlaceImporter(placeService, isCovered == 1);
        ExcelUtil.save(file, placeImporter, PlaceExcel.class);
        return R.success("操作成功");
        String data = placeService.importPlace(ExcelUtil.read(file, ImportPlaceExcel.class),isCovered==1);
        return R.data(200,data,"");
    }
    /**
     * 导出模板
     */
    @GetMapping("export-template")
    @ApiOperationSupport(order = 13)
    @ApiLog("导出九小统计")
    @ApiOperation(value = "导出九小统计", notes = "传入place")
    public void exportTemplate(HttpServletResponse response) {
        List<ImportPlaceExcel> list = new ArrayList<>();
        ImportPlaceExcel importPlaceExcel = new ImportPlaceExcel();
        importPlaceExcel.setHouseCode("AdiEQ41254122****SXFDK44");
        importPlaceExcel.setLocation("江西上饶**********");
        importPlaceExcel.setLng("128.754451241");
        importPlaceExcel.setLat("28.4521122441");
        importPlaceExcel.setStreetName("西市街道");
        importPlaceExcel.setCommunityName("万达社区");
        importPlaceExcel.setGridName("第一网格");
        importPlaceExcel.setPlaceName("***场所");
        importPlaceExcel.setPrincipal("张三");
        importPlaceExcel.setPrincipalPhone("13112341234");
        importPlaceExcel.setPrincipalIdCard("360***********0001");
        importPlaceExcel.setLegalPerson("张三");
        importPlaceExcel.setLegalTel("13112341234");
        importPlaceExcel.setLegalIdCard("360***********0001");
        importPlaceExcel.setNineType("1");
        importPlaceExcel.setFrontType("1");
        importPlaceExcel.setThreeFireProtection("是");
        importPlaceExcel.setNoExplosionCategory("2");
        importPlaceExcel.setLabelCode("131120");
        importPlaceExcel.setRemark("测试****");
        list.add(importPlaceExcel);
        ExcelUtil.export(response, "场所数据" + DateUtil.time(), "场所数据表", list, ImportPlaceExcel.class);
    }
    /**
src/main/java/org/springblade/modules/place/excel/ImportPlaceExcel.java
File was renamed from src/main/java/org/springblade/modules/place/excel/PlaceExcel.java
@@ -6,6 +6,7 @@
import com.alibaba.excel.annotation.write.style.HeadRowHeight;
import lombok.Data;
import org.springblade.common.excel.ExcelDictConverter;
import org.springblade.common.excel.ExcelDictItem;
import org.springblade.common.excel.ExcelDictItemLabel;
import java.io.Serializable;
@@ -19,55 +20,13 @@
@ColumnWidth(25)
@HeadRowHeight(20)
@ContentRowHeight(18)
public class PlaceExcel implements Serializable {
public class ImportPlaceExcel implements Serializable {
    private static final long serialVersionUID = 2L;
    /** 门牌地址编码 */
    @ExcelProperty( "门牌地址编码")
    @ExcelProperty( "门牌地址编码*")
    private String houseCode;
    /** 街道名称 */
    @ExcelProperty( "街道名称")
    private String streetName;
    /** 社区名称 */
    @ExcelProperty( "社区名称")
    private String communityName;
    /** 网格名称 */
    @ExcelProperty( "网格名称")
    private String gridName;
    /** 场所负责人 */
    @ColumnWidth(15)
    @ExcelProperty( "场所负责人")
    private String principal;
    /** 场所负责人联系电话 */
    @ColumnWidth(15)
    @ExcelProperty( "场所负责人联系电话")
    private String principalPhone;
    /** 企业法定代表 */
    @ColumnWidth(15)
    @ExcelProperty( "企业法定代表")
    private String legalPerson;
    /** 法定代表联系电话 */
    @ColumnWidth(15)
    @ExcelProperty( "法定代表联系电话")
    private String legalTel;
    /** 企业法定代表身份证号码 */
    @ColumnWidth(15)
    @ExcelProperty( "企业法定代表身份证号码")
    private String legalIdCard;
    /** 企业(店铺)名称 */
    @ColumnWidth(25)
    @ExcelProperty( "企业(店铺)名称")
    private String placeName;
    /** 地址 */
    @ColumnWidth(25)
@@ -84,11 +43,75 @@
    @ExcelProperty( "纬度")
    private String lat;
    /** 街道名称 */
    @ExcelProperty( "街道名称")
    private String streetName;
    /** 社区名称 */
    @ExcelProperty( "社区名称")
    private String communityName;
    /** 网格名称 */
    @ExcelProperty( "网格名称")
    private String gridName;
    /** 场所名称 */
    @ColumnWidth(25)
    @ExcelProperty( "场所名称*")
    private String placeName;
    /** 场所负责人 */
    @ColumnWidth(15)
    @ExcelProperty( "场所负责人")
    private String principal;
    /** 场所负责人联系电话 */
    @ColumnWidth(15)
    @ExcelProperty( "场所负责人联系电话")
    private String principalPhone;
    /** 场所负责人身份证号 */
    @ColumnWidth(15)
    @ExcelProperty( "场所负责人身份证号")
    private String principalIdCard;
    /** 企业法定代表 */
    @ColumnWidth(15)
    @ExcelProperty( "企业法定代表")
    private String legalPerson;
    /** 法定代表联系电话 */
    @ColumnWidth(15)
    @ExcelProperty( "法定代表联系电话")
    private String legalTel;
    /** 企业法定代表身份证号码 */
    @ColumnWidth(15)
    @ExcelProperty( "企业法定代表身份证号码")
    private String legalIdCard;
    /** 九小场所类型 */
    @ExcelProperty( value = "九小场所类型",converter = ExcelDictConverter.class)
    @ExcelDictItem(type = "nineType")
    @ExcelDictItemLabel(type = "nineType")
    private String nineType;
    /** 阵地类型 */
    @ExcelProperty( value = "阵地类型",converter = ExcelDictConverter.class)
    @ExcelDictItem(type = "frontType")
    @ExcelDictItemLabel(type = "frontType")
    private String frontType;
    /** 1:是 2:否  三级消防单位 */
    @ExcelProperty("三级消防单位(是/否)")
    private String threeFireProtection;
    /** 无诈类别 */
    @ExcelProperty(value = "无诈类别", converter = ExcelDictConverter.class)
    @ExcelDictItem(type = "noExplosionCategory")
    @ExcelDictItemLabel(type = "noExplosionCategory")
    private String noExplosionCategory;
    /** 标签分类代码 */
    @ExcelProperty( "标签分类代码")
    private String labelCode;
src/main/java/org/springblade/modules/place/excel/PlaceImporter.java
@@ -12,13 +12,13 @@
 * @author Chill
 */
@RequiredArgsConstructor
public class PlaceImporter implements ExcelImporter<PlaceExcel> {
public class PlaceImporter implements ExcelImporter<ImportPlaceExcel> {
    private final IPlaceService placeService;
    private final Boolean isCovered;
    @Override
    public void save(List<PlaceExcel> data) {
    public void save(List<ImportPlaceExcel> data) {
        placeService.importPlace(data, isCovered);
    }
}
src/main/java/org/springblade/modules/place/service/IPlaceService.java
@@ -17,12 +17,11 @@
package org.springblade.modules.place.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.apache.ibatis.annotations.Param;
import org.springblade.common.node.TreeStringNode;
import org.springblade.modules.place.entity.PlaceEntity;
import org.springblade.modules.place.excel.NinePlaceExcel;
import org.springblade.modules.place.excel.PlaceAndRelExcel;
import org.springblade.modules.place.excel.PlaceExcel;
import org.springblade.modules.place.excel.ImportPlaceExcel;
import org.springblade.modules.place.vo.PlaceVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -91,7 +90,7 @@
     * @param data
     * @param isCovered
     */
    void importPlace(List<PlaceExcel> data, Boolean isCovered);
    String importPlace(List<ImportPlaceExcel> data, Boolean isCovered);
    /**
     * 场所(商超)导入
src/main/java/org/springblade/modules/place/service/impl/PlaceServiceImpl.java
@@ -20,17 +20,12 @@
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import liquibase.pro.packaged.P;
import liquibase.pro.packaged.W;
import liquibase.repackaged.org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.util.Strings;
import org.springblade.common.cache.SysCache;
import org.springblade.common.node.TreeStringNode;
import org.springblade.common.param.CommonParamSet;
import org.springblade.common.utils.IdUtils;
import org.springblade.common.utils.SpringUtils;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.core.tool.utils.SpringUtil;
@@ -43,34 +38,24 @@
import org.springblade.modules.grid.mapper.GridMapper;
import org.springblade.modules.grid.service.IGridRangeService;
import org.springblade.modules.grid.service.IGridService;
import org.springblade.modules.grid.service.IGridmanService;
import org.springblade.modules.grid.vo.GridVO;
import org.springblade.modules.house.entity.HouseholdEntity;
import org.springblade.modules.house.entity.UserHouseLabelEntity;
import org.springblade.modules.house.service.IHouseholdService;
import org.springblade.modules.house.vo.HouseholdVO;
import org.springblade.modules.label.entity.LabelEntity;
import org.springblade.modules.partyOrganization.vo.PartyOrganizationVO;
import org.springblade.modules.place.entity.*;
import org.springblade.modules.place.excel.NinePlaceExcel;
import org.springblade.modules.place.excel.PlaceAndRelExcel;
import org.springblade.modules.place.excel.PlaceExcel;
import org.springblade.modules.place.excel.ImportPlaceExcel;
import org.springblade.modules.place.service.*;
import org.springblade.modules.place.vo.PlaceCheckVO;
import org.springblade.modules.place.vo.PlacePoiLabelVO;
import org.springblade.modules.place.vo.PlaceVO;
import org.springblade.modules.place.mapper.PlaceMapper;
import org.springblade.modules.police.entity.PoliceAffairsGridEntity;
import org.springblade.modules.police.service.IPoliceAffairsGridService;
import org.springblade.modules.system.entity.Dept;
import org.springblade.modules.system.entity.DictBiz;
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.IDictBizService;
import org.springblade.modules.system.service.IRegionService;
import org.springblade.modules.system.service.IUserService;
import org.springblade.modules.task.vo.TaskLabelReportingEventVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -1009,36 +994,58 @@
     * @param isCovered
     */
    @Override
    public void importPlace(List<PlaceExcel> data, Boolean isCovered) {
        for (PlaceExcel placeExcel : data) {
    public String importPlace(List<ImportPlaceExcel> data, Boolean isCovered) {
        int totalNum = data.size();
        int importNum = 0;
        int updateNum = 0;
        int errorNum = 0;
        for (ImportPlaceExcel placeExcel : data) {
            if (Strings.isBlank(placeExcel.getPlaceName()) || Strings.isBlank(placeExcel.getHouseCode())){
                errorNum++;
                continue;
            }
            PlaceEntity placeEntity = Objects.requireNonNull(BeanUtil.copy(placeExcel, PlaceEntity.class));
            Long userId = updateUser(placeExcel);
            // 九小场所类型处理
            if (!Strings.isBlank(placeExcel.getNineType())) {
                placeEntity.setIsNine(1);
                placeEntity.setNineType(Integer.parseInt(placeExcel.getNineType()));
            }
            // 阵地类型处理
            if (!Strings.isBlank(placeExcel.getFrontType())) {
                placeEntity.setIsFront(1);
                placeEntity.setFrontType(Integer.parseInt(placeExcel.getFrontType()));
            }
            // 无诈类别
            if (!Strings.isBlank(placeExcel.getNoExplosionCategory())){
                placeEntity.setNoExplosionCategory(Integer.parseInt(placeExcel.getNoExplosionCategory()));
            }
            // 三级单位
            if (!Strings.isBlank(placeExcel.getThreeFireProtection())){
                if (placeExcel.getThreeFireProtection().equals("是")){
                    placeEntity.setThreeFireProtection(1);
                }
                if (placeExcel.getThreeFireProtection().equals("否")){
                    placeEntity.setThreeFireProtection(2);
                }
            }
            String[] split = placeExcel.getHouseCode().split(",");
            placeEntity.setHouseCode(split[0]);
            placeEntity.setHouseCodeBinds(placeExcel.getHouseCode());
            placeEntity.setPrincipalUserId(userId);
            // houseCode 关联处理 来源 1:地址总表  2:国控采集 3:商超
            houseCodeHandle(placeExcel, placeEntity);
            // 网格绑定处理
            importGridHandle(placeExcel, placeEntity);
            // 判断是否存在,不存在则插入,否则不操作
            QueryWrapper<PlaceEntity> wrapper = new QueryWrapper<>();
            wrapper.eq("is_deleted", 0)
                .eq("house_code", placeExcel.getHouseCode());
            PlaceEntity one = getOne(wrapper);
            Long userId = updateUser(placeExcel);
            if (null == one) {
                // 插入场所
                String[] split = placeExcel.getHouseCode().split(",");
                placeEntity.setHouseCode(split[0]);
                placeEntity.setHouseCodeBinds(placeExcel.getHouseCode());
                placeEntity.setPrincipalUserId(userId);
                // 默认为未完善
                placeEntity.setStatus(1);
                // 是否现场采集  1:是  2:否
                placeEntity.setIsScene(1);
                // houseCode 关联处理 来源 1:地址总表  2:国控采集 3:商超
                houseCodeHandle(placeExcel, placeEntity);
                // 九小场所类型处理
                if (!Strings.isBlank(placeExcel.getNineType())) {
                    placeEntity.setIsNine(1);
                    placeEntity.setNineType(Integer.parseInt(placeExcel.getNineType()));
                }
                // 网格绑定处理
                importGridHandle(placeExcel, placeEntity);
                // 新增
                save(placeEntity);
                importNum++;
                // 保存详情
                savePlaceExt(placeEntity,placeExcel);
                // 场所标签信息处理
@@ -1052,35 +1059,35 @@
                // 房屋编号绑定处理
                houseCodeBindHandle(placeEntity);
            } else {
                // 更新场所
                one.setPrincipalUserId(userId);
                one.setPrincipal(placeExcel.getPrincipal());
                one.setPrincipalPhone(placeExcel.getPrincipalPhone());
                // 默认为未完善
                one.setStatus(1);
                // 是否现场采集  1:是  2:否
                one.setIsScene(1);
                // 来源 1:地址总表  2:国控采集 3:商超
                one.setSource(1);
                // 九小场所类型处理
                if (!Strings.isBlank(placeExcel.getNineType())) {
                    one.setIsNine(1);
                    one.setNineType(Integer.parseInt(placeExcel.getNineType()));
                }
                // 网格绑定处理
                importGridHandle(placeExcel, one);
                // 更新
                updateById(one);
                // 场所标签信息处理
                if (!Strings.isBlank(placeExcel.getLabelCode())) {
                    PlaceVO placeVO = new PlaceVO();
                    placeVO.setId(one.getId());
                    placeVO.setLabel(placeExcel.getLabelCode());
                    // 处理
                    placeLabelBind(placeVO);
                updateNum++;
                // 是否覆盖更新
                if (isCovered) {
                    // 更新场所
                    placeEntity.setId(one.getId());
                    // 更新
                    updateById(placeEntity);
                    importNum++;
                    // 场所标签信息处理
                    if (!Strings.isBlank(placeExcel.getLabelCode())) {
                        PlaceVO placeVO = new PlaceVO();
                        placeVO.setId(one.getId());
                        placeVO.setLabel(placeExcel.getLabelCode());
                        // 处理
                        placeLabelBind(placeVO);
                    }
                }
            }
        }
        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();
    }
    /**
@@ -1089,7 +1096,7 @@
     * @param placeExcel
     */
    @Transactional(rollbackFor = Exception.class)
    public void savePlaceExt(PlaceEntity placeEntity,PlaceExcel placeExcel) {
    public void savePlaceExt(PlaceEntity placeEntity, ImportPlaceExcel placeExcel) {
        PlaceVO placeVO = new PlaceVO();
        placeVO.setId(placeEntity.getId());
        PlaceExtEntity placeExtEntity = new PlaceExtEntity();
@@ -1107,7 +1114,7 @@
     * @param placeExcel
     * @param placeEntity
     */
    public void houseCodeHandle(PlaceExcel placeExcel, PlaceEntity placeEntity) {
    public void houseCodeHandle(ImportPlaceExcel placeExcel, PlaceEntity placeEntity) {
        if (!Strings.isBlank(placeExcel.getHouseCode())) {
            placeEntity.setSource(1);
            // 设置经纬度及地址
@@ -1133,7 +1140,7 @@
     * @param placeExcel
     * @param placeEntity
     */
    private void importGridHandle(PlaceExcel placeExcel, PlaceEntity placeEntity) {
    private void importGridHandle(ImportPlaceExcel placeExcel, PlaceEntity placeEntity) {
        if (!Strings.isBlank(placeExcel.getCommunityName()) &&
            !Strings.isBlank(placeExcel.getGridName())) {
            // 查询对应的网格信息
@@ -1160,7 +1167,7 @@
     * @param placeExcel
     * @return
     */
    public Long updateUser(PlaceExcel placeExcel) {
    public Long updateUser(ImportPlaceExcel placeExcel) {
        if (!Strings.isBlank(placeExcel.getPrincipal()) &&
            !Strings.isBlank(placeExcel.getPrincipalPhone())) {
            PlaceVO placeVO = new PlaceVO();