瀏覽代碼

添加小区导入

JX.Li 1 年之前
父節點
當前提交
56a9a10a1d

+ 25 - 14
ruoyi-admin/src/main/java/com/ruoyi/web/controller/zdsz/ZAreaController.java

@@ -189,21 +189,32 @@ public class ZAreaController extends BaseController {
         }
 
     }
-//    @Log(title = "导入小区列表", businessType = BusinessType.EXPORT)
-//    @ApiImplicitParams({
-//        @ApiImplicitParam(name = "file", value = "导入文件", dataType = "java.io.File", required = true),
-//    })
-//    @PostMapping("/importData")
-//    public synchronized AjaxResult<Void> importData(@RequestPart("file") MultipartFile file, boolean updateSupport) throws Exception {
-//        List<GImportVo> listVo = ExcelUtil.importExcel(file.getInputStream(), GImportVo.class);
-//        List<GImportVo> list = BeanUtil.copyToList(listVo, GImportVo.class);
-//        String operName = getUsername();
-//        if(Double.valueOf(bfb)<=0){
-//            forImportData(list,true,operName,0,0);
-//        }
-//        return AjaxResult.success(message);
-//    }
+    @Log(title = "导入小区列表", businessType = BusinessType.EXPORT)
+    @PostMapping("/importData")
+    public synchronized R<Void> importData(@RequestPart("file") MultipartFile file, boolean updateSupport) throws Exception {
+        List<GImportVo> listVo = ExcelUtil.importExcel(file.getInputStream(), GImportVo.class);
+        List<GImportVo> list = BeanUtil.copyToList(listVo, GImportVo.class);
+        String operName = getUsername();
+        if(Double.valueOf(bfb)<=0){
+            forImportData(list,true,operName,0,0);
+        }
+        return  R.ok(message);
+    }
 
+    private void forImportData(List<GImportVo> list, Boolean isUpdateSupport, String operName,int n,int successNum) throws Exception
+    {
+        try{
+            Map<String,Object> ret = iZAreaService.importUser(list, isUpdateSupport, operName,n,successNum);//list, updateSupport, operName,第几条
+            if(Boolean.valueOf(ret.get("is_success").toString())){
+                bfb = ret.get("bfb").toString();
+                forImportData(list,isUpdateSupport,operName,Integer.valueOf(ret.get("n").toString()),Integer.valueOf(ret.get("successNum").toString()));
+            }else{
+                message = ret.get("successMsg").toString();
+            }
+        } catch (Exception e) {
+            message = e.getMessage();
+        }
+    }
     /**
      * 进度条刷新,
      */

+ 11 - 9
ruoyi-admin/src/main/resources/application-dev.yml

@@ -53,13 +53,13 @@ spring:
           username: root
           password: sooka1a2b3c4d%...
         # 从库数据源
-        slave:
-          lazy: true
-          type: ${spring.datasource.type}
-          driverClassName: com.mysql.cj.jdbc.Driver
-          url: jdbc:mysql://192.168.10.15:63306/sj_zdsz?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true
-          username: root
-          password: sooka1a2b3c4d%...
+#        slave:
+#          lazy: true
+#          type: ${spring.datasource.type}
+#          driverClassName: com.mysql.cj.jdbc.Driver
+#          url: jdbc:mysql://192.168.10.15:63306/sj_zdsz?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true
+#          username: root
+#          password: sooka1a2b3c4d%...
 #        oracle:
 #          type: ${spring.datasource.type}
 #          driverClassName: oracle.jdbc.OracleDriver
@@ -100,11 +100,11 @@ spring:
     # 地址
     host: 127.0.0.1
     # 端口,默认为6379
-    port: 16379
+    port: 6379
     # 数据库索引
     database: 0
     # 密码(如没有密码请注释掉)
-    password: sooka123456
+#    password: sooka123456
     # 连接超时时间
     timeout: 10s
     # 是否开启ssl
@@ -194,3 +194,5 @@ tableNames:
   Month: z_engineering_review,z_engiineering_photo,z_engineering_info,z_engineering_material,z_engineering_node
   #动态表名年度
   Year: z_engineering_review
+# 临时文件路径
+filePath: D:/

+ 3 - 0
ruoyi-admin/src/main/resources/application-prod.yml

@@ -197,3 +197,6 @@ tableNames:
   Month: z_engineering_review,z_engiineering_photo,z_engineering_info,z_engineering_material,z_engineering_node
   #动态表名年度
   Year: z_engineering_review
+
+# 临时文件路径
+filePath: /temporary/

+ 2 - 0
ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictDataMapper.java

@@ -23,4 +23,6 @@ public interface SysDictDataMapper extends BaseMapperPlus<SysDictDataMapper, Sys
                 .eq(SysDictData::getDictType, dictType)
                 .orderByAsc(SysDictData::getDictSort));
     }
+
+    String queryValueTextByKey(@Param("code") String code, @Param("key") String key);
 }

+ 6 - 0
ruoyi-system/src/main/resources/mapper/system/SysDictDataMapper.xml

@@ -19,6 +19,12 @@
         <result property="updateBy" column="update_by"/>
         <result property="updateTime" column="update_time"/>
     </resultMap>
+
+    <select id="queryValueTextByKey" resultType="java.lang.String">
+        select s.dict_value from sys_dict_data s where s.dict_type = #{code} and s.dict_label = #{key}
+    </select>
+
+
     <select id="dictList" resultType="java.util.Map">
         select
         t.label,

+ 3 - 0
ruoyi-zdsz/src/main/java/com/ruoyi/zdsz/mapper/ZAreaMapper.java

@@ -19,4 +19,7 @@ public interface ZAreaMapper extends BaseMapperPlus<ZAreaMapper, ZArea, ZAreaVo>
 
     String getDictNameOfAffiliatedPackage(ZAreaBo bo);
     List<GExportsVo> getExport(ZAreaBo bo);
+
+    //导入 查询是否已存在
+    ZArea getByName(String name);
 }

+ 2 - 0
ruoyi-zdsz/src/main/java/com/ruoyi/zdsz/mapper/ZBuildingMapper.java

@@ -1,6 +1,7 @@
 package com.ruoyi.zdsz.mapper;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.zdsz.domain.ZArea;
 import com.ruoyi.zdsz.domain.ZBuilding;
 import com.ruoyi.zdsz.domain.bo.ZBuildingBo;
 import com.ruoyi.zdsz.domain.vo.ZAreaVo;
@@ -21,4 +22,5 @@ public interface ZBuildingMapper extends BaseMapperPlus<ZBuildingMapper, ZBuildi
 
     List<ZBuildingVo> getBuildingList(String areaId);
 
+    ZBuilding getByName(@Param("name")String name,@Param("areaId")String areaId);
 }

+ 1 - 1
ruoyi-zdsz/src/main/java/com/ruoyi/zdsz/mapper/ZHouseMapper.java

@@ -19,6 +19,6 @@ import java.util.List;
  */
 public interface ZHouseMapper extends BaseMapperPlus<ZHouseMapper, ZHouse, ZHouseVo> {
     Page<ZHouseVo> getPageList(@Param("p") ZHouseBo bo, Page<?> page);
-
+    ZHouse getByName(@Param("name")String name,@Param("unitId")String unitId);
     List<ZHouseVo> selectListByunitId(String unitId);
 }

+ 3 - 0
ruoyi-zdsz/src/main/java/com/ruoyi/zdsz/mapper/ZUnitMapper.java

@@ -21,4 +21,7 @@ public interface ZUnitMapper extends BaseMapperPlus<ZUnitMapper, ZUnit, ZUnitVo>
     Page<ZUnitVo> getPageList(@Param("p") ZUnitBo bo, Page<?> page);
 
     List<ZUnitVo> getUnitList(@Param("buildingId") String buildingId);
+
+    ZUnit getByName(@Param("name")String name,@Param("buildingId")String buildingId);
+
 }

+ 4 - 0
ruoyi-zdsz/src/main/java/com/ruoyi/zdsz/service/IZAreaService.java

@@ -2,6 +2,7 @@ package com.ruoyi.zdsz.service;
 
 import com.ruoyi.zdsz.domain.ZArea;
 import com.ruoyi.zdsz.domain.vo.GExportsVo;
+import com.ruoyi.zdsz.domain.vo.GImportVo;
 import com.ruoyi.zdsz.domain.vo.ZAreaVo;
 import com.ruoyi.zdsz.domain.bo.ZAreaBo;
 import com.ruoyi.common.core.page.TableDataInfo;
@@ -11,6 +12,7 @@ import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.util.Collection;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 小区管理Service接口
@@ -20,6 +22,8 @@ import java.util.List;
  */
 public interface IZAreaService {
 
+    Map<String,Object> importUser(List<GImportVo> list, Boolean isUpdateSupport, String operName, int n, int successNum);
+
     /**
      * 查询小区管理
      */

+ 193 - 6
ruoyi-zdsz/src/main/java/com/ruoyi/zdsz/service/impl/ZAreaServiceImpl.java

@@ -1,6 +1,7 @@
 package com.ruoyi.zdsz.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
+import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.core.domain.PageQuery;
@@ -8,19 +9,28 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.ruoyi.framework.obs.FileUtil;
+import com.ruoyi.system.mapper.SysDictDataMapper;
+import com.ruoyi.zdsz.domain.ZBuilding;
+import com.ruoyi.zdsz.domain.ZHouse;
+import com.ruoyi.zdsz.domain.ZUnit;
 import com.ruoyi.zdsz.domain.vo.GExportsVo;
+import com.ruoyi.zdsz.domain.vo.GImportVo;
+import com.ruoyi.zdsz.mapper.ZBuildingMapper;
+import com.ruoyi.zdsz.mapper.ZHouseMapper;
+import com.ruoyi.zdsz.mapper.ZUnitMapper;
 import com.ruoyi.zdsz.service.IZBuildingService;
 import lombok.RequiredArgsConstructor;
-import lombok.Value;
 import org.mybatis.logging.Logger;
 import org.mybatis.logging.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import com.ruoyi.zdsz.domain.bo.ZAreaBo;
 import com.ruoyi.zdsz.domain.vo.ZAreaVo;
 import com.ruoyi.zdsz.domain.ZArea;
 import com.ruoyi.zdsz.mapper.ZAreaMapper;
 import com.ruoyi.zdsz.service.IZAreaService;
+import org.springframework.util.ObjectUtils;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
@@ -30,10 +40,7 @@ import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
 import java.io.UnsupportedEncodingException;
 import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-import java.util.Collection;
+import java.util.*;
 
 /**
  * 小区管理Service业务层处理
@@ -52,7 +59,187 @@ public class ZAreaServiceImpl implements IZAreaService {
 
     @Resource
     private ZAreaMapper baseMapper;
+    @Resource
+    private ZBuildingMapper zBuildingMapper;
+    @Resource
+    private ZUnitMapper zUnitMapper;
+    @Resource
+    private ZHouseMapper zHouseMapper;
+
+    @Resource
+    private SysDictDataMapper sysDictDataMapper;
 
+    @Override
+    public Map<String, Object> importUser(List<GImportVo> list, Boolean isUpdateSupport, String operName, int n, int successNum) {
+        if (ObjectUtils.isEmpty(list) || list.size() == 0) {
+            throw new ServiceException("导入数据不能为空!");
+        }
+        Map<String, Object> ret = new HashMap<>();
+        StringBuilder successMsg = new StringBuilder();
+        for (int i = n; i < list.size(); i++) {
+            GImportVo vo = list.get(i);
+
+            String districtValue = sysDictDataMapper.queryValueTextByKey("district", vo.getDistrict());
+            if (StringUtils.isBlank(districtValue)) {
+                throw new ServiceException("" + "第" + (n + 1) + "行行政区填写错误,导入失败!");
+            }
+            try {
+                n++;
+                // 验证是否存在这个小区
+                if (StringUtils.isNotEmpty(vo.getAreaName())) {
+                    ZArea area = baseMapper.getByName(vo.getAreaName());
+                    ZBuilding building = new ZBuilding();
+                    ZUnit unit = new ZUnit();
+                    ZHouse house = new ZHouse();
+                    if (ObjectUtils.isEmpty(area)) {
+                        area = new ZArea();
+                        //小区zDsZ1a2b3c4d%1234!
+                        area.setName(vo.getAreaName());
+                        area.setCreateBy(operName);
+                        area.setCreateTime(new Date());
+                        area.setDistrict(districtValue);
+                        baseMapper.insert(area);
+                        if (StringUtils.isNotEmpty(vo.getBuildName())) {
+                            //楼宇
+                            building.setName(vo.getBuildName());
+                            building.setAreaId(area.getId());
+                            building.setCreateBy(operName);
+                            building.setCreateTime(new Date());
+                            zBuildingMapper.insert(building);
+                            if (StringUtils.isNotEmpty(vo.getUnitName())) {
+                                //单元
+                                unit.setName(vo.getUnitName());
+                                unit.setBuildingId(building.getId());
+                                unit.setAreaId(area.getId());
+                                unit.setCreateBy(operName);
+                                unit.setCreateTime(new Date());
+                                zUnitMapper.insert(unit);
+                                if (StringUtils.isNotEmpty(vo.getHouseName())) {
+                                    //房屋
+                                    house.setName(vo.getHouseName());
+                                    house.setAreaId(area.getId());
+                                    house.setBuildingId(building.getId());
+                                    house.setUnitId(unit.getId());
+                                    house.setCreateBy(operName);
+                                    house.setCreateTime(new Date());
+                                    zHouseMapper.insert(house);
+                                    successNum++;
+                                } else {
+                                    throw new ServiceException("" + "第" + (n + 1) + "行格式错误,导入失败!");
+                                }
+                            } else {
+                                throw new ServiceException("" + "第" + (n + 1) + "行格式错误,导入失败!");
+                            }
+                        } else {
+                            throw new ServiceException("" + "第" + (n + 1) + "行格式错误,导入失败!");
+                        }
+                    } else if (isUpdateSupport) {
+                        if (StringUtils.isNotEmpty(vo.getBuildName())) {
+                            building = zBuildingMapper.getByName(vo.getBuildName(), area.getId());
+                            if (ObjectUtils.isEmpty(building)) {
+                                building = new ZBuilding();
+                                //楼宇
+                                building.setName(vo.getBuildName());
+                                building.setAreaId(area.getId());
+                                building.setCreateBy(operName);
+                                building.setCreateTime(new Date());
+                                zBuildingMapper.insert(building);
+                                if (StringUtils.isNotEmpty(vo.getUnitName())) {
+                                    //单元
+                                    unit.setName(vo.getUnitName());
+                                    unit.setAreaId(area.getId());
+                                    unit.setBuildingId(building.getId());
+                                    unit.setCreateBy(operName);
+                                    unit.setCreateTime(new Date());
+                                    zUnitMapper.insert(unit);
+                                    if (StringUtils.isNotEmpty(vo.getHouseName())) {
+                                        //房屋
+                                        house.setName(vo.getHouseName());
+                                        house.setAreaId(area.getId());
+                                        house.setBuildingId(building.getId());
+                                        house.setUnitId(unit.getId());
+                                        house.setCreateBy(operName);
+                                        house.setCreateTime(new Date());
+                                        zHouseMapper.insert(house);
+                                        successNum++;
+                                    } else {
+                                        throw new ServiceException("" + "第" + (n + 1) + "行格式错误,导入失败!");
+                                    }
+                                } else {
+                                    throw new ServiceException("" + "第" + (n + 1) + "行格式错误,导入失败!");
+                                }
+                            } else {
+                                if (StringUtils.isNotEmpty(vo.getUnitName())) {
+                                    unit = zUnitMapper.getByName(vo.getUnitName(), building.getId());
+                                    if (ObjectUtils.isEmpty(unit)) {
+                                        unit = new ZUnit();
+                                        //单元
+                                        unit.setName(vo.getUnitName());
+                                        unit.setAreaId(area.getId());
+                                        unit.setBuildingId(building.getId());
+                                        unit.setCreateBy(operName);
+                                        unit.setCreateTime(new Date());
+                                        zUnitMapper.insert(unit);
+                                        if (StringUtils.isNotEmpty(vo.getHouseName())) {
+                                            //房屋
+                                            house.setName(vo.getHouseName());
+                                            house.setAreaId(area.getId());
+                                            house.setBuildingId(building.getId());
+                                            house.setUnitId(unit.getId());
+                                            house.setCreateBy(operName);
+                                            house.setCreateTime(new Date());
+                                            zHouseMapper.insert(house);
+                                            successNum++;
+                                        } else {
+                                            throw new ServiceException("" + "第" + (n + 1) + "行格式错误,导入失败!");
+                                        }
+                                    } else {
+                                        if (StringUtils.isNotEmpty(vo.getHouseName())) {
+                                            house = zHouseMapper.getByName(vo.getHouseName(), unit.getId());
+                                            if (ObjectUtils.isEmpty(house)) {
+                                                house = new ZHouse();
+                                                //房屋
+                                                house.setName(vo.getHouseName());
+                                                house.setAreaId(area.getId());
+                                                house.setBuildingId(building.getId());
+                                                house.setUnitId(unit.getId());
+                                                house.setCreateBy(operName);
+                                                house.setCreateTime(new Date());
+                                                zHouseMapper.insert(house);
+                                                successNum++;
+                                            }
+                                        } else {
+                                            throw new ServiceException("" + "第" + (n + 1) + "行格式错误,导入失败!");
+                                        }
+                                    }
+                                } else {
+                                    throw new ServiceException("" + "第" + (n + 1) + "行格式错误,导入失败!");
+                                }
+                            }
+                        } else {
+                            throw new ServiceException("" + "第" + (n + 1) + "行格式错误,导入失败!");
+                        }
+                    }
+                } else {
+                    throw new ServiceException("" + "第" + (n + 1) + "行格式错误,导入失败!");
+                }
+            } catch (Exception e) {
+                throw new ServiceException("" + "第" + (n + 1) + "行格式错误,导入失败!");
+            }
+            ret.put("bfb", String.format("%.2f", (Double.valueOf((n + 1)) / Double.valueOf(list.size())) * 100));
+            ret.put("n", n);
+            ret.put("is_success", true);
+            ret.put("successMsg", "");
+            ret.put("successNum", successNum);
+            return ret;
+        }
+        successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条");
+        ret.put("bfb", String.format("%.2f", (Double.valueOf((n + 1)) / Double.valueOf(list.size())) * 100));
+        ret.put("n", n);
+        ret.put("is_success", false);
+        ret.put("successMsg", successMsg.toString());
+        return ret;
+    }
 
     /**
      * 小区下拉
@@ -189,7 +376,7 @@ public class ZAreaServiceImpl implements IZAreaService {
         try {
             FileUtil.downLoadFile(request, response, zipName, zipFilePath);
         } catch (UnsupportedEncodingException e) {
-            throw new RuntimeException("导出失败~"+e);
+            throw new RuntimeException("导出失败~" + e);
         }
     }
 }

+ 7 - 0
ruoyi-zdsz/src/main/resources/mapper/zdsz/ZAreaMapper.xml

@@ -20,6 +20,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="updateBy" column="update_by"/>
         <result property="updateTime" column="update_time"/>
     </resultMap>
+
+    <select id="getByName" resultType="com.ruoyi.zdsz.domain.ZArea">
+        select * from z_area
+        where name = #{name}
+          and del_flag = '0'
+    </select>
+
     <select id="getArea" resultType="com.ruoyi.zdsz.domain.vo.ZAreaVo">
         select id   as id,
                name as name

+ 8 - 0
ruoyi-zdsz/src/main/resources/mapper/zdsz/ZBuildingMapper.xml

@@ -16,6 +16,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="updateTime" column="update_time"/>
     </resultMap>
 
+
+    <select id="getByName" resultType="com.ruoyi.zdsz.domain.ZBuilding">
+        select * from z_building
+        where name = #{name} and area_id = #{areaId}
+          and del_flag = '0'
+        order by id
+            LIMIT 1
+    </select>
     <select id="getBuildingList" resultType="com.ruoyi.zdsz.domain.vo.ZBuildingVo">
         select id   as id,
                name as name

+ 9 - 0
ruoyi-zdsz/src/main/resources/mapper/zdsz/ZHouseMapper.xml

@@ -18,6 +18,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="updateTime" column="update_time"/>
     </resultMap>
 
+    <select id="getByName" resultType="com.ruoyi.zdsz.domain.ZHouse">
+        select *
+        from z_house
+        where name = #{name}
+          and unit_id = #{unitId}
+          and del_flag = '0'
+        order by id
+            LIMIT 1
+    </select>
     <select id="getPageList" resultType="com.ruoyi.zdsz.domain.vo.ZHouseVo">
         select a.id as id,
         a.name as name,

+ 7 - 0
ruoyi-zdsz/src/main/resources/mapper/zdsz/ZUnitMapper.xml

@@ -17,6 +17,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="updateTime" column="update_time"/>
     </resultMap>
 
+    <select id="getByName" resultType="com.ruoyi.zdsz.domain.ZUnit">
+        select * from z_unit
+        where name = #{name} and building_id = #{buildingId}
+          and del_flag = '0'
+        order by id
+            LIMIT 1
+    </select>
 
     <select id="getUnitList" resultType="com.ruoyi.zdsz.domain.vo.ZUnitVo">
         select id   as id,