Browse Source

导入导出

LAPTOP-FO2T5SIU\35838 7 months ago
parent
commit
67e7217754

+ 15 - 2
pro-base/src/main/java/com/idea/buildManage/controller/MnpBuildingController.java

@@ -6,6 +6,7 @@ import com.github.pagehelper.PageInfo;
 import com.idea.buildManage.dto.MnpBuildingDto;
 import com.idea.buildManage.excel.MnpBuildingExcel;
 import com.idea.buildManage.excel.MnpBuildingListener;
+import com.idea.buildManage.excel.ParkInfoExcel;
 import com.idea.buildManage.service.ParkFloorDiscService;
 import com.idea.buildManage.service.ParkInfoService;
 import com.idea.buildManage.service.ParkRoomService;
@@ -26,9 +27,12 @@ import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
+import javax.servlet.http.HttpServletResponse;
 import java.io.File;
+import java.io.IOException;
 import java.util.Date;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -153,8 +157,17 @@ public class MnpBuildingController extends BaseController {
         return result(result);
     }
 
-
-
+    /**
+     * 导出
+     * @param list
+     * @param response
+     * @throws IOException
+     */
+    @PostMapping(value = "errorListExport")
+    @ResponseBody
+    public void errorListExport(@RequestBody List<MnpBuildingExcel> list, HttpServletResponse response) throws IOException {
+        modelService.errorListExport(list,response);
+    }
 
 
 

+ 15 - 0
pro-base/src/main/java/com/idea/buildManage/controller/ParkInfoController.java

@@ -23,8 +23,11 @@ import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
+import javax.servlet.http.HttpServletResponse;
 import java.io.File;
+import java.io.IOException;
 import java.util.Date;
+import java.util.List;
 
 /**
  * Created by pengyq on 2020.
@@ -166,5 +169,17 @@ public class ParkInfoController extends BaseController {
         return result(result);
     }
 
+    /**
+     * 导出
+     * @param list
+     * @param response
+     * @throws IOException
+     */
+    @PostMapping(value = "errorListExport")
+    @ResponseBody
+    public void errorListExport(@RequestBody List<ParkInfoExcel> list, HttpServletResponse response) throws IOException {
+        modelService.errorListExport(list,response);
+    }
+
 
 }

+ 13 - 5
pro-base/src/main/java/com/idea/buildManage/controller/ParkRoomController.java

@@ -3,10 +3,7 @@ package com.idea.buildManage.controller;
 import com.alibaba.excel.EasyExcel;
 import com.alibaba.fastjson.JSONObject;
 import com.github.pagehelper.PageInfo;
-import com.idea.buildManage.excel.ParkInfoExcel;
-import com.idea.buildManage.excel.ParkInfoListener;
-import com.idea.buildManage.excel.ParkRoomExcel;
-import com.idea.buildManage.excel.ParkRoomListener;
+import com.idea.buildManage.excel.*;
 import com.idea.buildManage.model.ParkRoom;
 import com.idea.buildManage.response.ParkRoomResponse;
 import com.idea.buildManage.service.MnpBuildingService;
@@ -30,6 +27,7 @@ import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
 import java.io.File;
+import java.io.IOException;
 import java.util.Date;
 import java.util.List;
 
@@ -172,6 +170,16 @@ public class ParkRoomController extends BaseController {
         return result(result);
     }
 
-
+    /**
+     * 导出
+     * @param list
+     * @param response
+     * @throws IOException
+     */
+    @PostMapping(value = "errorListExport")
+    @ResponseBody
+    public void errorListExport(@RequestBody List<ParkRoomExcel> list, HttpServletResponse response) throws IOException {
+        modelService.errorListExport(list,response);
+    }
 
 }

+ 3 - 0
pro-base/src/main/java/com/idea/buildManage/excel/MnpBuildingExcel.java

@@ -16,6 +16,9 @@ public class MnpBuildingExcel {
     @ExcelProperty(value = "单元/楼栋号")
     private String buildNum;
 
+    @ExcelProperty(value = "施工号")
+    private String constructionNum;
+
     @ExcelProperty(value = "总面积(㎡)")
     private String area;
 

+ 147 - 36
pro-base/src/main/java/com/idea/buildManage/excel/MnpBuildingListener.java

@@ -1,5 +1,6 @@
 package com.idea.buildManage.excel;
 
+import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.IdUtil;
 import com.alibaba.excel.context.AnalysisContext;
 import com.alibaba.excel.event.AnalysisEventListener;
@@ -66,116 +67,208 @@ public class MnpBuildingListener extends AnalysisEventListener<MnpBuildingExcel>
             Map<String, String> discNameIdMap = floorDiscService.getNameIdMap();
             Map<String, String> parkNameIdMap = parkInfoService.getNameIdMap();
             for(int i = 0; i < excelList.size(); i++){
+
+                boolean groupNameFlag = true;
+                boolean discNameFlag = true;
+                boolean buildNumFlag = true;
+                boolean constructionNumFlag = true;
+                boolean areaFlag = true;
+                boolean residentialAreaFlag = true;
+                boolean unResidentialAreaFlag = true;
+                boolean coverAnAreaFlag = true;
+                boolean undergroundAreaFlag = true;
+                boolean roomNumFlag = true;
+                boolean numberInfoFlag = true;
+                boolean floorsFlag = true;
+                boolean overgroundFloorsFlag = true;
+                boolean undergroundFloorsFlag = true;
+                boolean structureFlag = true;
+                boolean regionalismCodeFlag = true;
+                boolean landCodeFlag = true;
+                StringBuilder builder = new StringBuilder();
+
                 try {
                     data = new MnpBuilding();
                     excel = excelList.get(i);
                     if (StringUtils.isEmpty(excel.getGroupName())) {
-                        throw new RuntimeException("楼盘/小区名称为空");
+                        groupNameFlag = false;
+                        builder.append("楼盘/小区名称为空").append(",");
+                        excel.setGroupName("{" + excel.getGroupName() + "}");
                     }
                     data.setGroupName(excel.getGroupName());
+
                     if (StringUtils.isEmpty(excel.getDiscName())) {
-                        throw new RuntimeException("分期名称为空");
+                        discNameFlag = false;
+                        builder.append("分期名称为空").append(",");
+                        excel.setDiscName("{" + excel.getDiscName() + "}");
                     }
                     data.setDiscName(excel.getDiscName());
-                    if (StringUtils.isEmpty(excel.getBuildNum())) {
-                        throw new RuntimeException("单元楼栋号为空");
-                    }
-                    data.setBuildNum(excel.getBuildNum());
+
                     // 判断小区是否存在
                     if(StringUtils.isEmpty(parkNameIdMap.get(excel.getGroupName()))){
-                        throw new RuntimeException("楼盘/小区不存在");
+                        groupNameFlag = false;
+                        builder.append("楼盘/小区不存在").append(",");
+                        excel.setGroupName("{" + excel.getGroupName() + "}");
                     }
                     data.setGroupId(parkNameIdMap.get(excel.getGroupName()));
+
                     // 判断分期是否存在
                     if(StringUtils.isEmpty(discNameIdMap.get(excel.getDiscName()))){
-                        throw new RuntimeException("分期不存在");
+                        discNameFlag = false;
+                        builder.append("分期不存在").append(",");
+                        excel.setDiscName("{" + excel.getDiscName() + "}");
                     }
                     data.setDiscId(discNameIdMap.get(excel.getDiscName()));
+
+                    // 楼栋号
+                    if (StringUtils.isEmpty(excel.getBuildNum())) {
+                        buildNumFlag = false;
+                        builder.append("单元楼栋号为空").append(",");
+                        excel.setBuildNum("{" + excel.getBuildNum() + "}");
+                    }
+                    data.setBuildNum(excel.getBuildNum());
+
+                    // 施工号
+                    if (StringUtils.isEmpty(excel.getConstructionNum())) {
+                        constructionNumFlag = false;
+                        builder.append("施工号为空").append(",");
+                        excel.setConstructionNum("{" + excel.getConstructionNum() + "}");
+                    }
+                    data.setConstructionNum(excel.getConstructionNum());
+
                     // 总面积
                     if (StringUtils.isEmpty(excel.getArea())) {
-                        throw new RuntimeException("总面积为空");
+                        areaFlag = false;
+                        builder.append("总面积为空").append(",");
+                        excel.setArea("{" + excel.getArea() + "}");
                     }
                     try {
                         data.setArea(Double.valueOf(excel.getArea()));
                     }catch (NumberFormatException e){
-                        throw new RuntimeException("总面积格式有误");
+                        areaFlag = false;
+                        builder.append("总面积格式有误").append(",");
+                        excel.setArea("{" + excel.getArea() + "}");
                     }
+
                     // 住宅面积
                     if (StringUtils.isEmpty(excel.getResidentialArea())) {
-                        throw new RuntimeException("住宅面积为空");
+                        residentialAreaFlag = false;
+                        builder.append("住宅面积为空").append(",");
+                        excel.setResidentialArea("{" + excel.getResidentialArea() + "}");
                     }
                     try {
                         data.setResidentialArea(Double.valueOf(excel.getResidentialArea()));
                     }catch (NumberFormatException e){
-                        throw new RuntimeException("住宅面积格式有误");
+                        residentialAreaFlag = false;
+                        builder.append("住宅面积格式有误").append(",");
+                        excel.setResidentialArea("{" + excel.getResidentialArea() + "}");
                     }
+
                     // 非住宅面积
                     if (StringUtils.isEmpty(excel.getUnResidentialArea())) {
-                        throw new RuntimeException("非住宅面积为空");
+                        unResidentialAreaFlag = false;
+                        builder.append("非住宅面积为空").append(",");
+                        excel.setUnResidentialArea("{" + excel.getUnResidentialArea() + "}");
                     }
                     try {
                         data.setUnResidentialArea(Double.valueOf(excel.getUnResidentialArea()));
                     }catch (NumberFormatException e){
-                        throw new RuntimeException("非住宅面积格式有误");
+                        unResidentialAreaFlag = false;
+                        builder.append("非住宅面积格式有误").append(",");
+                        excel.setUnResidentialArea("{" + excel.getUnResidentialArea() + "}");
                     }
+
                     // 占地面积
                     if (StringUtils.isEmpty(excel.getCoverAnArea())) {
-                        throw new RuntimeException("占地面积为空");
+                        coverAnAreaFlag = false;
+                        builder.append("占地面积为空").append(",");
+                        excel.setCoverAnArea("{" + excel.getCoverAnArea() + "}");
                     }
                     try {
                         data.setCoverAnArea(Double.valueOf(excel.getCoverAnArea()));
                     }catch (NumberFormatException e){
-                        throw new RuntimeException("占地面积格式有误");
+                        coverAnAreaFlag = false;
+                        builder.append("占地面积格式有误").append(",");
+                        excel.setCoverAnArea("{" + excel.getCoverAnArea() + "}");
                     }
+
                     // 地下面积
                     if (StringUtils.isEmpty(excel.getUndergroundArea())) {
-                        throw new RuntimeException("地下面积为空");
+                        undergroundAreaFlag = false;
+                        builder.append("地下面积为空").append(",");
+                        excel.setUndergroundArea("{" + excel.getUndergroundArea() + "}");
                     }
                     try {
                         data.setUndergroundArea(Double.valueOf(excel.getUndergroundArea()));
                     }catch (NumberFormatException e){
-                        throw new RuntimeException("地下面积格式有误");
+                        undergroundAreaFlag = false;
+                        builder.append("地下面积格式有误").append(",");
+                        excel.setUndergroundArea("{" + excel.getUndergroundArea() + "}");
                     }
+
                     // 房号
                     if (StringUtils.isEmpty(excel.getRoomNum())) {
-                        throw new RuntimeException("房号为空");
+                        roomNumFlag = false;
+                        builder.append("房号为空").append(",");
+                        excel.setRoomNum("{" + excel.getRoomNum() + "}");
                     }
                     data.setRoomNum(excel.getRoomNum());
+
                     // 套数
                     if (StringUtils.isEmpty(excel.getNumberInfo())) {
-                        throw new RuntimeException("套数为空");
+                        numberInfoFlag = false;
+                        builder.append("套数为空").append(",");
+                        excel.setNumberInfo("{" + excel.getNumberInfo() + "}");
                     }
                     data.setNumberInfo(excel.getNumberInfo());
+
                     // 总层数
                     if (StringUtils.isEmpty(excel.getFloors())) {
-                        throw new RuntimeException("总层数为空");
+                        floorsFlag = false;
+                        builder.append("总层数为空").append(",");
+                        excel.setFloors("{" + excel.getFloors() + "}");
                     }
                     try {
                         data.setFloors(Integer.valueOf(excel.getFloors()));
                     }catch (NumberFormatException e){
-                        throw new RuntimeException("总层数格式有误");
+                        floorsFlag = false;
+                        builder.append("总层数格式有误").append(",");
+                        excel.setFloors("{" + excel.getFloors() + "}");
                     }
+
                     // 地上层数
                     if (StringUtils.isEmpty(excel.getOvergroundFloors())) {
-                        throw new RuntimeException("地上层数为空");
+                        overgroundFloorsFlag = false;
+                        builder.append("地上层数为空").append(",");
+                        excel.setOvergroundFloors("{" + excel.getOvergroundFloors() + "}");
                     }
                     try {
                         data.setOvergroundFloors(Integer.valueOf(excel.getOvergroundFloors()));
                     }catch (NumberFormatException e){
-                        throw new RuntimeException("地上层数格式有误");
+                        overgroundFloorsFlag = false;
+                        builder.append("地上层数格式有误").append(",");
+                        excel.setOvergroundFloors("{" + excel.getOvergroundFloors() + "}");
                     }
+
                     // 地下层数
                     if (StringUtils.isEmpty(excel.getUndergroundFloors())) {
-                        throw new RuntimeException("地下层数为空");
+                        undergroundFloorsFlag = false;
+                        builder.append("地下层数为空").append(",");
+                        excel.setUndergroundFloors("{" + excel.getUndergroundFloors() + "}");
                     }
                     try {
                         data.setUndergroundFloors(Integer.valueOf(excel.getUndergroundFloors()));
                     }catch (NumberFormatException e){
-                        throw new RuntimeException("地下层数格式有误");
+                        undergroundFloorsFlag = false;
+                        builder.append("地下层数格式有误").append(",");
+                        excel.setUndergroundFloors("{" + excel.getUndergroundFloors() + "}");
                     }
+
                     // 结构
                     if (StringUtils.isEmpty(excel.getStructure())) {
-                        throw new RuntimeException("结构为空");
+                        structureFlag = false;
+                        builder.append("结构为空").append(",");
+                        excel.setStructure("{" + excel.getStructure() + "}");
                     }
                     for (Map<String, String> stringStringMap : buildStructure) {
                         if (stringStringMap.get("label").equals(excel.getStructure())) {
@@ -184,24 +277,42 @@ public class MnpBuildingListener extends AnalysisEventListener<MnpBuildingExcel>
                     }
                     // 没匹配上的情况
                     if(StringUtils.isEmpty(data.getStructure())){
-                        throw new RuntimeException("结构格式有误");
+                        structureFlag = false;
+                        builder.append("结构格式有误").append(",");
+                        excel.setStructure("{" + excel.getStructure() + "}");
                     }
+
                     // 行政区划
                     if (StringUtils.isEmpty(excel.getRegionalismCode())) {
-                        throw new RuntimeException("行政区划为空");
+                        regionalismCodeFlag = false;
+                        builder.append("行政区划为空").append(",");
+                        excel.setRegionalismCode("{" + excel.getRegionalismCode() + "}");
                     }
                     data.setRegionalismCode(excel.getRegionalismCode());
+
                     // 地号
                     if (StringUtils.isEmpty(excel.getLandCode())) {
-                        throw new RuntimeException("地号为空");
+                        landCodeFlag = false;
+                        builder.append("地号为空").append(",");
+                        excel.setLandCode("{" + excel.getLandCode() + "}");
                     }
                     data.setLandCode(excel.getLandCode());
-                    data.setRemark(excel.getRemark());
-                    data.setPriceRemark(excel.getPriceRemark());
-                    data.setId(IdUtil.simpleUUID());
-                    data.setCreatedId(ShiroUtils.getUserId());
-                    data.setCreatedAt(new Date());
-                    list.add(data);
+
+
+                    if (groupNameFlag && discNameFlag && buildNumFlag && constructionNumFlag && areaFlag && residentialAreaFlag
+                            && unResidentialAreaFlag && coverAnAreaFlag && undergroundAreaFlag && roomNumFlag && numberInfoFlag
+                            && floorsFlag && overgroundFloorsFlag && undergroundFloorsFlag && structureFlag && regionalismCodeFlag
+                            && landCodeFlag
+                    ) {
+                        data.setRemark(excel.getRemark());
+                        data.setPriceRemark(excel.getPriceRemark());
+                        data.setId(IdUtil.simpleUUID());
+                        data.setCreatedId(ShiroUtils.getUserId());
+                        data.setCreatedAt(new Date());
+                        list.add(data);
+                    }else {
+                        throw new RuntimeException(builder.toString());
+                    }
 
                 }catch (Exception e){
                     e.printStackTrace();

+ 8 - 8
pro-base/src/main/java/com/idea/buildManage/excel/ParkFloorDiscListener.java

@@ -68,14 +68,14 @@ public class ParkFloorDiscListener extends AnalysisEventListener<ParkFloorDiscEx
             for (int i = 0; i < excelList.size(); i++) {
                 try {
 
-                    Boolean groupNameFlag = true;
-                    Boolean discNameFlag = true;
-                    Boolean unitPriceFlag = true;
-                    Boolean propertyUnitPriceFlag = true;
-                    Boolean maintenanceFundsFlag = true;
-                    Boolean subscriptionFundsFlag = true;
-                    Boolean proportionFlag = true;
-                    Boolean paymentMethodsFlag = true;
+                    boolean groupNameFlag = true;
+                    boolean discNameFlag = true;
+                    boolean unitPriceFlag = true;
+                    boolean propertyUnitPriceFlag = true;
+                    boolean maintenanceFundsFlag = true;
+                    boolean subscriptionFundsFlag = true;
+                    boolean proportionFlag = true;
+                    boolean paymentMethodsFlag = true;
                     StringBuilder builder = new StringBuilder();
 
                     data = new ParkFloorDisc();

+ 4 - 1
pro-base/src/main/java/com/idea/buildManage/excel/ParkInfoExcel.java

@@ -14,10 +14,13 @@ public class ParkInfoExcel implements Serializable {
     @ExcelProperty(value = "楼盘/小区名称")
     private String groupName;
 
+    @ExcelIgnore
     private String createdId;
 
+    @ExcelIgnore
     private Date createdAt;
 
+    @ExcelIgnore
     private Date updatedAt;
 
     @ExcelProperty(value = "性质")
@@ -77,7 +80,7 @@ public class ParkInfoExcel implements Serializable {
     @ExcelProperty(value = "备注")
     private String introduction;
 
-    @ExcelIgnore
+    @ExcelProperty(value = "失败原因")
     private String reason;
 
     private static final long serialVersionUID = 1L;

+ 35 - 23
pro-base/src/main/java/com/idea/buildManage/excel/ParkInfoListener.java

@@ -68,19 +68,15 @@ public class ParkInfoListener extends AnalysisEventListener<ParkInfoExcel> {
 
             for(int i = 0; i < excelList.size(); i++){
 
-                Boolean groupNameFlag = true;
-                Boolean discNameFlag = true;
-                Boolean natureFlag = true;
-                Boolean preSalesLicenseNumberFlag = true;
-                Boolean companyNameFlag = true;
-                Boolean subscriptionFundsFlag = true;
-                Boolean proportionFlag = true;
-                Boolean paymentMethodsFlag = true;
+                boolean groupNameFlag = true;
+                boolean natureFlag = true;
+                boolean preSalesLicenseNumberFlag = true;
+                boolean companyNameFlag = true;
+                boolean areaStatusFlag = true;
+                boolean saleStatusFlag = true;
                 StringBuilder builder = new StringBuilder();
 
 
-
-
                 try {
                     data = new ParkInfo();
                     excel = excelList.get(i);
@@ -89,9 +85,9 @@ public class ParkInfoListener extends AnalysisEventListener<ParkInfoExcel> {
                         groupNameFlag = false;
                         builder.append("楼盘/小区名称为空").append(",");
                         excel.setGroupName("{" + excel.getGroupName() + "}");
-                        throw new RuntimeException("楼盘/小区名称为空");
                     }
                     data.setGroupName(excel.getGroupName());
+
                     if(StringUtils.isEmpty(excel.getNature())){
                         natureFlag = false;
                         builder.append("性质为空").append(",");
@@ -108,6 +104,7 @@ public class ParkInfoListener extends AnalysisEventListener<ParkInfoExcel> {
                         builder.append("性质格式有误").append(",");
                         excel.setNature("{" + excel.getNature() + "}");
                     }
+
                     // 预销售许可证编号
                     if(StringUtils.isEmpty(excel.getPreSalesLicenseNumber())){
                         preSalesLicenseNumberFlag = false;
@@ -115,6 +112,7 @@ public class ParkInfoListener extends AnalysisEventListener<ParkInfoExcel> {
                         excel.setPreSalesLicenseNumber("{" + excel.getPreSalesLicenseNumber() + "}");
                     }
                     data.setPreSalesLicenseNumber(excel.getPreSalesLicenseNumber());
+
                     // 开发公司
                     if(StringUtils.isNotEmpty(excel.getCompanyName())){
                         for (Map<String, String> stringStringMap : companyNames) {
@@ -123,10 +121,13 @@ public class ParkInfoListener extends AnalysisEventListener<ParkInfoExcel> {
                             }
                         }
                         // 没匹配上的情况
-                        if(data.getAreaStatus() == null){
-                            throw new RuntimeException("性质格式有误");
+                        if(data.getCompanyId() == null){
+                            companyNameFlag = false;
+                            builder.append("公司名称有误").append(",");
+                            excel.setCompanyName("{" + excel.getCompanyName() + "}");
                         }
                     }
+
                     // 楼盘面积测绘状态
                     if(StringUtils.isNotEmpty(excel.getAreaStatus())){
                         for (Map<String, String> stringStringMap : mappingStatus) {
@@ -136,7 +137,9 @@ public class ParkInfoListener extends AnalysisEventListener<ParkInfoExcel> {
                         }
                         // 没匹配上的情况
                         if(data.getAreaStatus() == null){
-                            throw new RuntimeException("性质格式有误");
+                            areaStatusFlag = false;
+                            builder.append("楼盘面积测绘状态格式有误").append(",");
+                            excel.setAreaStatus("{" + excel.getAreaStatus() + "}");
                         }
                     }
 
@@ -149,18 +152,27 @@ public class ParkInfoListener extends AnalysisEventListener<ParkInfoExcel> {
                         }
                         // 没匹配上的情况
                         if(data.getSaleStatus() == null){
-                            throw new RuntimeException("楼盘销售状态格式有误");
+                            saleStatusFlag = false;
+                            builder.append("楼盘销售状态格式有误").append(",");
+                            excel.setSaleStatus("{" + excel.getSaleStatus() + "}");
                         }
                     }
 
-                    String[] IGNORE_ISOLATOR_PROPERTIES = new String[]{"groupName", "nature", "preSalesLicenseNumber", "areaStatus", "saleStatus"};
-                    BeanUtil.copyProperties(excel,data,IGNORE_ISOLATOR_PROPERTIES);
-                    String id = IdUtil.simpleUUID();
-                    data.setId(id);
-                    data.setGroupId(id);
-                    data.setCreatedId(ShiroUtils.getUserId());
-                    data.setCreatedAt(new Date());
-                    list.add(data);
+                    if (groupNameFlag && natureFlag && preSalesLicenseNumberFlag && companyNameFlag && areaStatusFlag && saleStatusFlag
+                    ) {
+                        String[] IGNORE_ISOLATOR_PROPERTIES = new String[]{"groupName", "nature", "preSalesLicenseNumber", "areaStatus", "saleStatus"};
+                        BeanUtil.copyProperties(excel,data,IGNORE_ISOLATOR_PROPERTIES);
+                        String id = IdUtil.simpleUUID();
+                        data.setId(id);
+                        data.setGroupId(id);
+                        data.setCreatedId(ShiroUtils.getUserId());
+                        data.setCreatedAt(new Date());
+                        list.add(data);
+                    }else {
+                        throw new RuntimeException(builder.toString());
+                    }
+
+
 
                 }catch (Exception e){
                     e.printStackTrace();

+ 122 - 89
pro-base/src/main/java/com/idea/buildManage/excel/ParkRoomListener.java

@@ -39,7 +39,7 @@ public class ParkRoomListener extends AnalysisEventListener<ParkRoomExcel> {
 
 
     public ParkRoomListener(ParkRoomService roomService, MnpBuildingService buildingService, ParkFloorDiscService floorDiscService,
-                            ParkInfoService parkInfoService,SysDictService sysDictService, JSONObject jsonObject) {
+                            ParkInfoService parkInfoService, SysDictService sysDictService, JSONObject jsonObject) {
         this.roomService = roomService;
         this.buildingService = buildingService;
         this.floorDiscService = floorDiscService;
@@ -66,123 +66,135 @@ public class ParkRoomListener extends AnalysisEventListener<ParkRoomExcel> {
         List<Map<String, String>> saleStatus = sysDictService.selectDictList("SALE_STATUS");
 
 
-        if(CollectionUtils.isNotEmpty(excelList)){
+        if (CollectionUtils.isNotEmpty(excelList)) {
             ParkRoom data;
             ParkRoomExcel excel = null;
             Map<String, String> buildNameIdMap = buildingService.getNameIdMap();
             Map<String, String> discNameIdMap = floorDiscService.getNameIdMap();
             Map<String, String> parkNameIdMap = parkInfoService.getNameIdMap();
-            for(int i = 0; i < excelList.size(); i++){
+            for (int i = 0; i < excelList.size(); i++) {
+
+                boolean groupNameFlag = true;
+                boolean discNameFlag = true;
+                boolean buildNumFlag = true;
+                boolean roomNoFlag = true;
+                boolean floorFlag = true;
+                boolean actualInternalAreaFlag = true;
+                boolean actualShareAreaFlag = true;
+                boolean actualBuildAreaFlag = true;
+                boolean roomUseFlag = true;
+                boolean decorationSituationFlag = true;
+                boolean houseTypeFlag = true;
+                boolean saleStatusFlag = true;
+
+                StringBuilder builder = new StringBuilder();
+
+
                 try {
                     data = new ParkRoom();
                     excel = excelList.get(i);
                     if (StringUtils.isEmpty(excel.getGroupName())) {
-                        throw new RuntimeException("楼盘/小区名称为空");
+                        groupNameFlag = false;
+                        builder.append("楼盘/小区名称为空").append(",");
+                        excel.setGroupName("{" + excel.getGroupName() + "}");
                     }
+
                     if (StringUtils.isEmpty(excel.getDiscName())) {
-                        throw new RuntimeException("分期名称为空");
+                        discNameFlag = false;
+                        builder.append("分期名称为空").append(",");
+                        excel.setDiscName("{" + excel.getDiscName() + "}");
                     }
+
                     if (StringUtils.isEmpty(excel.getBuildNum())) {
-                        throw new RuntimeException("单元楼栋号为空");
+                        buildNumFlag = false;
+                        builder.append("单元楼栋号为空").append(",");
+                        excel.setBuildNum("{" + excel.getBuildNum() + "}");
                     }
+
                     // 判断小区是否存在
-                    if(StringUtils.isEmpty(parkNameIdMap.get(excel.getGroupName()))){
-                        throw new RuntimeException("楼盘/小区不存在");
+                    if (StringUtils.isEmpty(parkNameIdMap.get(excel.getGroupName()))) {
+                        groupNameFlag = false;
+                        builder.append("楼盘/小区不存在").append(",");
+                        excel.setGroupName("{" + excel.getGroupName() + "}");
                     }
                     data.setGroupId(parkNameIdMap.get(excel.getGroupName()));
+
                     // 判断分期是否存在
-                    if(StringUtils.isEmpty(discNameIdMap.get(excel.getDiscName()))){
-                        throw new RuntimeException("分期不存在");
+                    if (StringUtils.isEmpty(discNameIdMap.get(excel.getDiscName()))) {
+                        discNameFlag = false;
+                        builder.append("分期不存在").append(",");
+                        excel.setDiscName("{" + excel.getDiscName() + "}");
                     }
                     data.setDiscId(discNameIdMap.get(excel.getDiscName()));
+
                     // 判断楼栋是否存在
-                    if(StringUtils.isEmpty(buildNameIdMap.get(excel.getBuildNum()))){
-                        throw new RuntimeException("楼栋不存在");
+                    if (StringUtils.isEmpty(buildNameIdMap.get(excel.getBuildNum()))) {
+                        buildNumFlag = false;
+                        builder.append("楼栋不存在").append(",");
+                        excel.setBuildNum("{" + excel.getBuildNum() + "}");
                     }
                     data.setBuildId(buildNameIdMap.get(excel.getBuildNum()));
+
                     // 户室号
                     if (StringUtils.isEmpty(excel.getRoomNo())) {
-                        throw new RuntimeException("户室号为空");
+                        roomNoFlag = false;
+                        builder.append("户室号为空").append(",");
+                        excel.setRoomNo("{" + excel.getRoomNo() + "}");
                     }
                     data.setRoomNo(excel.getRoomNo());
+
                     // 所在层
                     if (StringUtils.isEmpty(excel.getFloor())) {
-                        throw new RuntimeException("所在层为空");
+                        floorFlag = false;
+                        builder.append("所在层为空").append(",");
+                        excel.setFloor("{" + excel.getFloor() + "}");
                     }
                     data.setFloor(excel.getFloor());
-                    // 预测套内面积
-                    if (StringUtils.isEmpty(excel.getPredictionInternalArea())) {
-                        throw new RuntimeException("预测套内面积为空");
-                    }
-                    try {
-                        data.setPredictionInternalArea(Double.valueOf(excel.getPredictionInternalArea()));
-                    }catch (NumberFormatException e){
-                        throw new RuntimeException("预测套内面积格式有误");
-                    }
-                    // 预测分摊面积
-                    if (StringUtils.isEmpty(excel.getPredictionShareArea())) {
-                        throw new RuntimeException("预测分摊面积为空");
-                    }
-                    try {
-                        data.setPredictionShareArea(Double.valueOf(excel.getPredictionShareArea()));
-                    }catch (NumberFormatException e){
-                        throw new RuntimeException("预测分摊面积格式有误");
-                    }
-                    // 预测建筑面积
-                    if (StringUtils.isEmpty(excel.getPredictionBuildArea())) {
-                        throw new RuntimeException("预测建筑面积为空");
-                    }
-                    try {
-                        data.setPredictionBuildArea(Double.valueOf(excel.getPredictionBuildArea()));
-                    }catch (NumberFormatException e){
-                        throw new RuntimeException("预测建筑面积格式有误");
-                    }
-                    // 预测土地面积
-                    if (StringUtils.isEmpty(excel.getPredictionLandArea())) {
-                        throw new RuntimeException("预测土地面积为空");
-                    }
-                    try {
-                        data.setPredictionLandArea(Double.valueOf(excel.getPredictionLandArea()));
-                    }catch (NumberFormatException e){
-                        throw new RuntimeException("预测土地面积");
-                    }
+
 
                     // 实测套内面积
                     if (StringUtils.isEmpty(excel.getActualInternalArea())) {
-                        throw new RuntimeException("实测套内面积为空");
+                        actualInternalAreaFlag = false;
+                        builder.append("实测套内面积为空").append(",");
+                        excel.setActualInternalArea("{" + excel.getActualInternalArea() + "}");
                     }
                     try {
                         data.setActualInternalArea(Double.valueOf(excel.getActualInternalArea()));
-                    }catch (NumberFormatException e){
-                        throw new RuntimeException("实测套内面积格式有误");
+                    } catch (NumberFormatException e) {
+                        actualInternalAreaFlag = false;
+                        builder.append("实测套内面积格式有误").append(",");
+                        excel.setActualInternalArea("{" + excel.getActualInternalArea() + "}");
                     }
+
                     // 实测分摊面积
                     if (StringUtils.isEmpty(excel.getActualShareArea())) {
-                        throw new RuntimeException("实测分摊面积为空");
+                        actualShareAreaFlag = false;
+                        builder.append("实测分摊面积为空").append(",");
+                        excel.setActualShareArea("{" + excel.getActualShareArea() + "}");
                     }
                     try {
                         data.setActualShareArea(Double.valueOf(excel.getActualShareArea()));
-                    }catch (NumberFormatException e){
-                        throw new RuntimeException("实测分摊面积格式有误");
+                    } catch (NumberFormatException e) {
+                        actualShareAreaFlag = false;
+                        builder.append("实测分摊面积格式有误").append(",");
+                        excel.setActualShareArea("{" + excel.getActualShareArea() + "}");
                     }
+
                     // 实测建筑面积
                     if (StringUtils.isEmpty(excel.getActualBuildArea())) {
-                        throw new RuntimeException("实测建筑面积");
+                        actualBuildAreaFlag = false;
+                        builder.append("实测建筑面积").append(",");
+                        excel.setActualBuildArea("{" + excel.getActualBuildArea() + "}");
                     }
                     try {
                         data.setActualBuildArea(Double.valueOf(excel.getActualBuildArea()));
-                    }catch (NumberFormatException e){
-                        throw new RuntimeException("预测建筑面积格式有误");
-                    }
-                    // 实测土地面积
-                    if (StringUtils.isEmpty(excel.getActualLandArea())) {
-                        throw new RuntimeException("实测土地面积");
-                    }
-                    try {
-                        data.setActualLandArea(Double.valueOf(excel.getActualLandArea()));
-                    }catch (NumberFormatException e){
-                        throw new RuntimeException("实测土地面积格式有误");
+                    } catch (NumberFormatException e) {
+                        actualBuildAreaFlag = false;
+                        builder.append("预测建筑面积格式有误").append(",");
+                        excel.setActualBuildArea("{" + excel.getActualBuildArea() + "}");
                     }
+
+
                     // 用途
                     if (StringUtils.isNotEmpty(excel.getRoomUse())) {
                         for (Map<String, String> stringStringMap : houseUsage) {
@@ -191,15 +203,13 @@ public class ParkRoomListener extends AnalysisEventListener<ParkRoomExcel> {
                             }
                         }
                         // 没匹配上的情况
-                        if(data.getRoomUse() == null){
-                            throw new RuntimeException("用途格式有误");
+                        if (data.getRoomUse() == null) {
+                            roomUseFlag = false;
+                            builder.append("用途格式有误").append(",");
+                            excel.setRoomUse("{" + excel.getRoomUse() + "}");
                         }
                     }
-                    // 户编号
-                    if (StringUtils.isEmpty(excel.getRoomNumber())) {
-                        throw new RuntimeException("户编号为空");
-                    }
-                    data.setRoomNumber(excel.getRoomNumber());
+
                     // 装修情况
                     if (StringUtils.isNotEmpty(excel.getDecorationSituation())) {
                         for (Map<String, String> stringStringMap : decorationSituation) {
@@ -208,10 +218,13 @@ public class ParkRoomListener extends AnalysisEventListener<ParkRoomExcel> {
                             }
                         }
                         // 没匹配上的情况
-                        if(data.getDecorationSituation() == null){
-                            throw new RuntimeException("装修情况格式有误");
+                        if (data.getDecorationSituation() == null) {
+                            decorationSituationFlag = false;
+                            builder.append("装修情况格式有误").append(",");
+                            excel.setDecorationSituation("{" + excel.getDecorationSituation() + "}");
                         }
                     }
+
                     // 可售状态
                     if (StringUtils.isNotEmpty(excel.getSaleStatus())) {
                         for (Map<String, String> stringStringMap : saleStatus) {
@@ -220,18 +233,38 @@ public class ParkRoomListener extends AnalysisEventListener<ParkRoomExcel> {
                             }
                         }
                         // 没匹配上的情况
-                        if(data.getSaleStatus() == null){
-                            throw new RuntimeException("可售状态格式有误");
+                        if (data.getSaleStatus() == null) {
+                            saleStatusFlag = false;
+                            builder.append("可售状态格式有误").append(",");
+                            excel.setSaleStatus("{" + excel.getSaleStatus() + "}");
                         }
                     }
-                    // TODO: 2024/9/11 户型处理 
-                    data.setId(IdUtil.simpleUUID());
-                    data.setRemark(excel.getRemark());
-                    data.setCreatedId(ShiroUtils.getUserId());
-                    data.setCreatedAt(new Date());
-                    list.add(data);
-
-                }catch (Exception e){
+
+                    if (groupNameFlag && discNameFlag && buildNumFlag && roomNoFlag && floorFlag && actualInternalAreaFlag
+                            && actualShareAreaFlag && actualBuildAreaFlag && roomUseFlag && decorationSituationFlag && houseTypeFlag
+                            && saleStatusFlag
+                    ) {
+                        // TODO: 2024/9/11 户型处理
+                        data.setId(IdUtil.simpleUUID());
+                        data.setCreatedId(ShiroUtils.getUserId());
+                        data.setCreatedAt(new Date());
+                        data.setRoomNumber(excel.getRoomNumber());
+                        data.setPredictionShareArea(Double.valueOf(excel.getPredictionShareArea()));
+                        data.setPredictionInternalArea(Double.valueOf(excel.getPredictionInternalArea()));
+                        data.setPredictionLandArea(Double.valueOf(excel.getPredictionLandArea()));
+                        data.setPredictionBuildArea(Double.valueOf(excel.getPredictionBuildArea()));
+                        data.setTwoPointTwo(excel.getTwoPointTwo());
+                        data.setRoomNumber(excel.getRoomNumber());
+                        data.setRemark(excel.getRemark());
+
+
+                        list.add(data);
+                    } else {
+                        throw new RuntimeException(builder.toString());
+                    }
+
+
+                } catch (Exception e) {
                     e.printStackTrace();
                     String message = e.getMessage();
                     excel.setReason(message);
@@ -248,13 +281,13 @@ public class ParkRoomListener extends AnalysisEventListener<ParkRoomExcel> {
                 excelList.clear();
                 list.clear();
             }
-        }else {
+        } else {
             throw new RuntimeException("excel无数据");
         }
 
     }
 
-    private void saveData(){
+    private void saveData() {
         if (CollectionUtils.isNotEmpty(list)) {
             roomService.insertBatch(list);
         }

+ 26 - 0
pro-base/src/main/java/com/idea/buildManage/service/MnpBuildingService.java

@@ -1,9 +1,13 @@
 package com.idea.buildManage.service;
 
 import cn.hutool.core.util.IdUtil;
+import com.alibaba.excel.EasyExcel;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.idea.buildManage.dto.MnpBuildingDto;
+import com.idea.buildManage.excel.MnpBuildingExcel;
+import com.idea.buildManage.excel.ParkInfoExcel;
+import com.idea.buildManage.excel.WriteHandlerStrategy;
 import com.idea.buildManage.mapper.MnpBuildingExtendMapper;
 import com.idea.buildManage.mapper.MnpBuildingMapper;
 import com.idea.buildManage.model.*;
@@ -16,7 +20,12 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 
+import javax.servlet.http.HttpServletResponse;
 import java.io.File;
+import java.io.IOException;
+import java.net.URLEncoder;
+import java.text.SimpleDateFormat;
+import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -194,4 +203,21 @@ public class MnpBuildingService implements BaseService<MnpBuilding, MnpBuildingE
     }
 
 
+    public void errorListExport(List<MnpBuildingExcel> list, HttpServletResponse response) throws IOException {
+
+
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String date = sdf.format(new Date());
+        response.setContentType("application/vnd.ms-excel");
+        response.setCharacterEncoding("utf-8");
+        String fileName = URLEncoder.encode("失败记录" + date, "UTF-8");
+        response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
+        EasyExcel.write(response.getOutputStream(), MnpBuildingExcel.class)
+                .inMemory(true)
+                .registerWriteHandler(new WriteHandlerStrategy())//自定义样式
+                .sheet().doWrite(list);
+
+    }
+
+
 }

+ 1 - 1
pro-base/src/main/java/com/idea/buildManage/service/ParkFloorDiscService.java

@@ -276,7 +276,7 @@ public class ParkFloorDiscService implements BaseService<ParkFloorDisc, ParkFloo
         String date = sdf.format(new Date());
         response.setContentType("application/vnd.ms-excel");
         response.setCharacterEncoding("utf-8");
-        String fileName = URLEncoder.encode("失败几率" + date, "UTF-8");
+        String fileName = URLEncoder.encode("失败记录" + date, "UTF-8");
         response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
         EasyExcel.write(response.getOutputStream(), ParkFloorDiscExcel.class)
                 .inMemory(true)

+ 22 - 0
pro-base/src/main/java/com/idea/buildManage/service/ParkInfoService.java

@@ -1,7 +1,11 @@
 package com.idea.buildManage.service;
 
+import com.alibaba.excel.EasyExcel;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
+import com.idea.buildManage.excel.ParkFloorDiscExcel;
+import com.idea.buildManage.excel.ParkInfoExcel;
+import com.idea.buildManage.excel.WriteHandlerStrategy;
 import com.idea.buildManage.mapper.ParkFloorDiscExtendMapper;
 import com.idea.buildManage.mapper.ParkFloorDiscMapper;
 import com.idea.buildManage.mapper.ParkInfoExtendMapper;
@@ -23,7 +27,11 @@ import org.apache.commons.collections.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import javax.servlet.http.HttpServletResponse;
 import java.beans.Transient;
+import java.io.IOException;
+import java.net.URLEncoder;
+import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -406,8 +414,22 @@ public class ParkInfoService implements BaseService<ParkInfo, ParkInfoExample> {
 
 
 
+    public void errorListExport(List<ParkInfoExcel> list, HttpServletResponse response) throws IOException {
 
 
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String date = sdf.format(new Date());
+        response.setContentType("application/vnd.ms-excel");
+        response.setCharacterEncoding("utf-8");
+        String fileName = URLEncoder.encode("失败记录" + date, "UTF-8");
+        response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
+        EasyExcel.write(response.getOutputStream(), ParkInfoExcel.class)
+                .inMemory(true)
+                .registerWriteHandler(new WriteHandlerStrategy())//自定义样式
+                .sheet().doWrite(list);
+
+    }
+
 
 
 }

+ 23 - 0
pro-base/src/main/java/com/idea/buildManage/service/ParkRoomService.java

@@ -4,8 +4,12 @@ import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.RandomUtil;
 import cn.hutool.poi.excel.ExcelUtil;
 import cn.hutool.poi.excel.ExcelWriter;
+import com.alibaba.excel.EasyExcel;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
+import com.idea.buildManage.excel.MnpBuildingExcel;
+import com.idea.buildManage.excel.ParkRoomExcel;
+import com.idea.buildManage.excel.WriteHandlerStrategy;
 import com.idea.buildManage.mapper.ParkRoomExtendMapper;
 import com.idea.buildManage.mapper.ParkRoomMapper;
 import com.idea.buildManage.model.MnpBuilding;
@@ -29,8 +33,11 @@ import org.apache.commons.collections.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import javax.servlet.http.HttpServletResponse;
 import java.beans.Transient;
+import java.io.IOException;
 import java.math.BigDecimal;
+import java.net.URLEncoder;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -237,4 +244,20 @@ public class ParkRoomService implements BaseService<ParkRoom, ParkRoomExample> {
         return number;
     }
 
+    public void errorListExport(List<ParkRoomExcel> list, HttpServletResponse response) throws IOException {
+
+
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String date = sdf.format(new Date());
+        response.setContentType("application/vnd.ms-excel");
+        response.setCharacterEncoding("utf-8");
+        String fileName = URLEncoder.encode("失败记录" + date, "UTF-8");
+        response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
+        EasyExcel.write(response.getOutputStream(), ParkRoomExcel.class)
+                .inMemory(true)
+                .registerWriteHandler(new WriteHandlerStrategy())//自定义样式
+                .sheet().doWrite(list);
+
+    }
+
 }