From ab6a423cf604b83f06b5768dbc162ece744a32d9 Mon Sep 17 00:00:00 2001
From: shane <88386378@qq.com>
Date: 星期五, 20 八月 2021 00:34:11 +0800
Subject: [PATCH] Merge branch 'master' of http://git.homecommunity.cn/supervip/MicroCommunity

---
 service-front/src/main/java/com/java110/front/smo/assetImport/impl/AssetImportSMOImpl.java | 1045 +++++++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 739 insertions(+), 306 deletions(-)

diff --git a/service-front/src/main/java/com/java110/front/smo/assetImport/impl/AssetImportSMOImpl.java b/service-front/src/main/java/com/java110/front/smo/assetImport/impl/AssetImportSMOImpl.java
old mode 100644
new mode 100755
index 117cf74..2a1c128
--- a/service-front/src/main/java/com/java110/front/smo/assetImport/impl/AssetImportSMOImpl.java
+++ b/service-front/src/main/java/com/java110/front/smo/assetImport/impl/AssetImportSMOImpl.java
@@ -4,20 +4,16 @@
 import com.alibaba.fastjson.JSONObject;
 import com.java110.core.component.BaseComponentSMO;
 import com.java110.core.context.IPageData;
-import com.java110.entity.assetImport.ImportFee;
-import com.java110.entity.assetImport.ImportFloor;
-import com.java110.entity.assetImport.ImportOwner;
-import com.java110.entity.assetImport.ImportParkingSpace;
-import com.java110.entity.assetImport.ImportRoom;
+import com.java110.core.smo.ISaveTransactionLogSMO;
+import com.java110.dto.RoomDto;
+import com.java110.dto.assetImportLog.AssetImportLogDto;
+import com.java110.dto.assetImportLogDetail.AssetImportLogDetailDto;
+import com.java110.entity.assetImport.*;
 import com.java110.entity.component.ComponentValidateResult;
 import com.java110.front.smo.assetImport.IAssetImportSMO;
-import com.java110.utils.constant.FeeTypeConstant;
 import com.java110.utils.constant.ServiceConstant;
-import com.java110.utils.util.Assert;
-import com.java110.utils.util.CommonUtil;
-import com.java110.utils.util.DateUtil;
-import com.java110.utils.util.ImportExcelUtils;
-import com.java110.utils.util.StringUtil;
+import com.java110.utils.util.*;
+import com.java110.vo.ResultVo;
 import org.apache.poi.ss.usermodel.Sheet;
 import org.apache.poi.ss.usermodel.Workbook;
 import org.slf4j.Logger;
@@ -30,7 +26,9 @@
 import org.springframework.web.client.RestTemplate;
 import org.springframework.web.multipart.MultipartFile;
 
+import java.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -47,6 +45,9 @@
 
     @Autowired
     private RestTemplate restTemplate;
+
+    @Autowired
+    private ISaveTransactionLogSMO saveTransactionLogSMOImpl;
 
     @Override
     public ResponseEntity<String> importExcelData(IPageData pd, MultipartFile uploadFile) throws Exception {
@@ -146,24 +147,69 @@
         JSONObject paramIn = null;
         ResponseEntity<String> responseEntity = new ResponseEntity<String>("鎴愬姛", HttpStatus.OK);
         ImportOwner owner = null;
-        for (ImportFee fee : fees) {
-            JSONObject savedFeeConfigInfo = getExistsFee(pd, result, fee);
-            if (savedFeeConfigInfo != null) {
-                continue;
+
+        AssetImportLogDto assetImportLogDto = new AssetImportLogDto();
+        assetImportLogDto.setSuccessCount(0L);
+        assetImportLogDto.setErrorCount(0L);
+        assetImportLogDto.setCommunityId(result.getCommunityId());
+        assetImportLogDto.setLogType(AssetImportLogDto.LOG_TYPE_FEE_IMPORT);
+        List<AssetImportLogDetailDto> assetImportLogDetailDtos = new ArrayList<>();
+        assetImportLogDto.setAssetImportLogDetailDtos(assetImportLogDetailDtos);
+        long successCount = 0L;
+        long failCount = 0L;
+        AssetImportLogDetailDto assetImportLogDetailDto = null;
+        try {
+            for (ImportFee fee : fees) {
+                JSONObject savedFeeConfigInfo = getExistsFee(pd, result, fee);
+                if (savedFeeConfigInfo != null) {
+                    successCount += 1;
+                    assetImportLogDto.setSuccessCount(successCount);
+                    assetImportLogDto.setErrorCount(failCount);
+                    continue;
+                }
+                //paramIn = new JSONObject();
+                //淇濆瓨 璐圭敤椤�
+
+                apiUrl = ServiceConstant.SERVICE_API_URL + "/api/feeConfig.saveFeeConfig";
+
+                paramIn = JSONObject.parseObject(JSONObject.toJSONString(fee));
+                paramIn.put("communityId", result.getCommunityId());
+
+                responseEntity = this.callCenterService(restTemplate, pd, paramIn.toJSONString(), apiUrl, HttpMethod.POST);
+                if (responseEntity.getStatusCode() != HttpStatus.OK) {
+                    /***************************************瀵煎叆鏃ュ織璁板綍****************************************************/
+                    failCount += 1;
+                    assetImportLogDetailDto = new AssetImportLogDetailDto();
+                    assetImportLogDetailDto.setCommunityId(assetImportLogDto.getCommunityId());
+                    if (Assert.isJsonObject(responseEntity.getBody())) {
+                        JSONObject paramOut = JSONObject.parseObject(responseEntity.getBody());
+                        assetImportLogDetailDto.setState(paramOut.getString("code"));
+                        assetImportLogDetailDto.setMessage(paramOut.getString("msg"));
+                    } else {
+                        assetImportLogDetailDto.setState("F");
+                        assetImportLogDetailDto.setMessage(responseEntity.getBody());
+                    }
+                    assetImportLogDetailDto.setObjName(fee.getFeeName());
+                    assetImportLogDetailDtos.add(assetImportLogDetailDto);
+                } else {
+                    JSONObject body = JSONObject.parseObject(responseEntity.getBody());
+                    if (body.containsKey("code") && body.getIntValue("code") != 0) {
+                        assetImportLogDetailDto = new AssetImportLogDetailDto();
+                        assetImportLogDetailDto.setCommunityId(assetImportLogDto.getCommunityId());
+                        assetImportLogDetailDto.setState(body.getString("code"));
+                        assetImportLogDetailDto.setMessage(body.getString("msg"));
+                        assetImportLogDetailDto.setObjName(fee.getFeeName());
+                        assetImportLogDetailDtos.add(assetImportLogDetailDto);
+                        failCount += 1;
+                    } else {
+                        successCount += 1;
+                    }
+                }
+                assetImportLogDto.setSuccessCount(successCount);
+                assetImportLogDto.setErrorCount(failCount);
             }
-
-            //paramIn = new JSONObject();
-            //淇濆瓨 璐圭敤椤�
-
-            apiUrl = ServiceConstant.SERVICE_API_URL + "/api/feeConfig.saveFeeConfig";
-
-            paramIn = JSONObject.parseObject(JSONObject.toJSONString(fee));
-            paramIn.put("communityId", result.getCommunityId());
-
-            responseEntity = this.callCenterService(restTemplate, pd, paramIn.toJSONString(), apiUrl, HttpMethod.POST);
-            if (responseEntity.getStatusCode() != HttpStatus.OK) {
-                continue;
-            }
+        } finally {
+            saveTransactionLogSMOImpl.saveAssetImportLog(assetImportLogDto);
         }
 
         return responseEntity;
@@ -182,87 +228,191 @@
         JSONObject paramIn = null;
         ResponseEntity<String> responseEntity = new ResponseEntity<String>("鎴愬姛", HttpStatus.OK);
         ImportOwner owner = null;
-        for (ImportParkingSpace parkingSpace : parkingSpaces) {
+        AssetImportLogDto assetImportLogDto = new AssetImportLogDto();
+        assetImportLogDto.setSuccessCount(0L);
+        assetImportLogDto.setErrorCount(0L);
+        assetImportLogDto.setCommunityId(result.getCommunityId());
+        assetImportLogDto.setLogType(AssetImportLogDto.LOG_TYPE_AREA_PARKING_IMPORT);
+        List<AssetImportLogDetailDto> assetImportLogDetailDtos = new ArrayList<>();
+        assetImportLogDto.setAssetImportLogDetailDtos(assetImportLogDetailDtos);
+        long successCount = 0L;
+        long failCount = 0L;
+        AssetImportLogDetailDto assetImportLogDetailDto = null;
+        try {
+            for (ImportParkingSpace parkingSpace : parkingSpaces) {
+                responseEntity = ResultVo.success();
+                JSONObject savedParkingAreaInfo = getExistsParkingArea(pd, result, parkingSpace);
+                paramIn = new JSONObject();
+                // 濡傛灉涓嶅瓨鍦紝鎵嶆彃鍏�
+                if (savedParkingAreaInfo == null) {
+                    apiUrl = ServiceConstant.SERVICE_API_URL + "/api/parkingArea.saveParkingArea";
+                    paramIn.put("communityId", result.getCommunityId());
+                    paramIn.put("typeCd", parkingSpace.getTypeCd());
+                    paramIn.put("num", parkingSpace.getPaNum());
 
-            JSONObject savedParkingAreaInfo = getExistsParkingArea(pd, result, parkingSpace);
-            paramIn = new JSONObject();
-            // 濡傛灉涓嶅瓨鍦紝鎵嶆彃鍏�
-            if (savedParkingAreaInfo == null) {
-                apiUrl = ServiceConstant.SERVICE_API_URL + "/api/parkingArea.saveParkingArea";
+                    responseEntity = this.callCenterService(restTemplate, pd, paramIn.toJSONString(), apiUrl, HttpMethod.POST);
+                    savedParkingAreaInfo = getExistsParkingArea(pd, result, parkingSpace);
+                }
+                if (responseEntity != null && responseEntity.getStatusCode() != HttpStatus.OK) { //璺宠繃 淇濆瓨鍗曞厓淇℃伅
+                    failCount += 1;
+                    assetImportLogDetailDto = new AssetImportLogDetailDto();
+                    assetImportLogDetailDto.setCommunityId(assetImportLogDto.getCommunityId());
+                    if (Assert.isJsonObject(responseEntity.getBody())) {
+                        JSONObject paramOut = JSONObject.parseObject(responseEntity.getBody());
+                        assetImportLogDetailDto.setState(paramOut.getString("code"));
+                        assetImportLogDetailDto.setMessage(paramOut.getString("msg"));
+                    } else {
+                        assetImportLogDetailDto.setState("F");
+                        assetImportLogDetailDto.setMessage(responseEntity.getBody());
+                    }
+                    assetImportLogDetailDto.setObjName(parkingSpace.getPaNum());
+                    assetImportLogDetailDtos.add(assetImportLogDetailDto);
+                    assetImportLogDto.setSuccessCount(successCount);
+                    assetImportLogDto.setErrorCount(failCount);
+                    continue;
+                } else {
+                    JSONObject body = JSONObject.parseObject(responseEntity.getBody());
+                    if (body.containsKey("code") && body.getIntValue("code") != 0) {
+                        assetImportLogDetailDto = new AssetImportLogDetailDto();
+                        assetImportLogDetailDto.setCommunityId(assetImportLogDto.getCommunityId());
+                        assetImportLogDetailDto.setState(body.getString("code"));
+                        assetImportLogDetailDto.setMessage(body.getString("msg"));
+                        assetImportLogDetailDto.setObjName(parkingSpace.getPaNum());
+                        assetImportLogDetailDtos.add(assetImportLogDetailDto);
+                        failCount += 1;
+                        assetImportLogDto.setSuccessCount(successCount);
+                        assetImportLogDto.setErrorCount(failCount);
+                        continue;
+                    } else {
+                        successCount += 1;
+                    }
+                    assetImportLogDto.setSuccessCount(successCount);
+                    assetImportLogDto.setErrorCount(failCount);
+                }
+
+                JSONObject savedParkingSpaceInfo = getExistsParkSpace(pd, result, parkingSpace);
+                if (savedParkingSpaceInfo != null) {
+                    continue;
+                }
+
+                apiUrl = ServiceConstant.SERVICE_API_URL + "/api/parkingSpace.saveParkingSpace";
+
+                paramIn.put("paId", savedParkingAreaInfo.getString("paId"));
                 paramIn.put("communityId", result.getCommunityId());
+                paramIn.put("userId", result.getUserId());
+                paramIn.put("num", parkingSpace.getPsNum());
+                paramIn.put("area", parkingSpace.getArea());
                 paramIn.put("typeCd", parkingSpace.getTypeCd());
-                paramIn.put("num", parkingSpace.getPaNum());
+                paramIn.put("parkingType", "1");
+
                 responseEntity = this.callCenterService(restTemplate, pd, paramIn.toJSONString(), apiUrl, HttpMethod.POST);
-                savedParkingAreaInfo = getExistsParkingArea(pd, result, parkingSpace);
+                if (responseEntity.getStatusCode() != HttpStatus.OK) {
+                    assetImportLogDetailDto = new AssetImportLogDetailDto();
+                    assetImportLogDetailDto.setCommunityId(assetImportLogDto.getCommunityId());
+                    if (Assert.isJsonObject(responseEntity.getBody())) {
+                        JSONObject paramOut = JSONObject.parseObject(responseEntity.getBody());
+                        assetImportLogDetailDto.setState(paramOut.getString("code"));
+                        assetImportLogDetailDto.setMessage(paramOut.getString("msg"));
+                    } else {
+                        assetImportLogDetailDto.setState("F");
+                        assetImportLogDetailDto.setMessage(responseEntity.getBody());
+                    }
+                    assetImportLogDetailDto.setObjName(parkingSpace.getPaNum());
+                    assetImportLogDetailDtos.add(assetImportLogDetailDto);
+                    failCount += 1;
+                    successCount = successCount > 0 ? successCount - 1 : successCount;
+                    assetImportLogDto.setSuccessCount(successCount);
+                    assetImportLogDto.setErrorCount(failCount);
+                    continue;
+                } else {
+                    JSONObject body = JSONObject.parseObject(responseEntity.getBody());
+                    if (body.containsKey("code") && body.getIntValue("code") != 0) {
+                        assetImportLogDetailDto = new AssetImportLogDetailDto();
+                        assetImportLogDetailDto.setCommunityId(assetImportLogDto.getCommunityId());
+                        assetImportLogDetailDto.setState(body.getString("code"));
+                        assetImportLogDetailDto.setMessage(body.getString("msg"));
+                        assetImportLogDetailDto.setObjName(parkingSpace.getPaNum());
+                        assetImportLogDetailDtos.add(assetImportLogDetailDto);
+                        assetImportLogDto.setSuccessCount(successCount);
+                        assetImportLogDto.setErrorCount(failCount);
+                        failCount += 1;
+                        successCount = successCount > 0 ? successCount - 1 : successCount;
+                        assetImportLogDto.setSuccessCount(successCount);
+                        assetImportLogDto.setErrorCount(failCount);
+                        continue;
+                    }
+                }
+
+                savedParkingSpaceInfo = getExistsParkSpace(pd, result, parkingSpace);
+                if (savedParkingSpaceInfo == null) {
+                    continue;
+                }
+
+                //鏄惁鏈変笟涓讳俊鎭�
+                if (parkingSpace.getImportOwner() == null) {
+                    continue;
+                }
+
+                paramIn.clear();
+
+                paramIn.put("communityId", result.getCommunityId());
+                paramIn.put("ownerId", parkingSpace.getImportOwner().getOwnerId());
+                paramIn.put("userId", result.getUserId());
+                paramIn.put("carNum", parkingSpace.getCarNum());
+                paramIn.put("carBrand", parkingSpace.getCarBrand());
+                paramIn.put("carType", parkingSpace.getCarType());
+                paramIn.put("carColor", parkingSpace.getCarColor());
+                paramIn.put("psId", savedParkingSpaceInfo.getString("psId"));
+                paramIn.put("storeId", result.getStoreId());
+                paramIn.put("sellOrHire", parkingSpace.getSellOrHire());
+                paramIn.put("startTime", parkingSpace.getStartTime());
+                paramIn.put("endTime", parkingSpace.getEndTime());
+
+                if ("H".equals(parkingSpace.getSellOrHire())) {
+                    paramIn.put("cycles", "0");
+                }
+
+                apiUrl = ServiceConstant.SERVICE_API_URL + "/api/parkingSpace.sellParkingSpace";
+                responseEntity = this.callCenterService(restTemplate, pd, paramIn.toJSONString(), apiUrl, HttpMethod.POST);
+
+                if (responseEntity.getStatusCode() != HttpStatus.OK) {
+                    /***************************************瀵煎叆鏃ュ織璁板綍****************************************************/
+                    assetImportLogDetailDto = new AssetImportLogDetailDto();
+                    assetImportLogDetailDto.setCommunityId(assetImportLogDto.getCommunityId());
+                    if (Assert.isJsonObject(responseEntity.getBody())) {
+                        JSONObject paramOut = JSONObject.parseObject(responseEntity.getBody());
+                        assetImportLogDetailDto.setState(paramOut.getString("code"));
+                        assetImportLogDetailDto.setMessage(paramOut.getString("msg"));
+                    } else {
+                        assetImportLogDetailDto.setState("F");
+                        assetImportLogDetailDto.setMessage(responseEntity.getBody());
+                    }
+                    assetImportLogDetailDto.setObjName(parkingSpace.getCarNum());
+                    assetImportLogDetailDtos.add(assetImportLogDetailDto);
+                    failCount += 1;
+                    successCount = successCount > 0 ? successCount - 1 : successCount;
+                    assetImportLogDto.setSuccessCount(successCount);
+                    assetImportLogDto.setErrorCount(failCount);
+                } else {
+                    JSONObject body = JSONObject.parseObject(responseEntity.getBody());
+                    if (body.containsKey("code") && body.getIntValue("code") != 0) {
+                        assetImportLogDetailDto = new AssetImportLogDetailDto();
+                        assetImportLogDetailDto.setCommunityId(assetImportLogDto.getCommunityId());
+                        assetImportLogDetailDto.setState(body.getString("code"));
+                        assetImportLogDetailDto.setMessage(body.getString("msg"));
+                        assetImportLogDetailDto.setObjName(parkingSpace.getCarNum());
+                        assetImportLogDetailDtos.add(assetImportLogDetailDto);
+                        failCount += 1;
+                        successCount = successCount > 0 ? successCount - 1 : successCount;
+                        assetImportLogDto.setSuccessCount(successCount);
+                        assetImportLogDto.setErrorCount(failCount);
+                    }
+                }
             }
-            if (responseEntity != null && responseEntity.getStatusCode() != HttpStatus.OK) { //璺宠繃 淇濆瓨鍗曞厓淇℃伅
-                continue;
-            }
-
-            JSONObject savedParkingSpaceInfo = getExistsParkSpace(pd, result, parkingSpace);
-            if (savedParkingSpaceInfo != null) {
-                continue;
-            }
-
-            apiUrl = ServiceConstant.SERVICE_API_URL + "/api/parkingSpace.saveParkingSpace";
-
-            paramIn.put("paId", savedParkingAreaInfo.getString("paId"));
-            paramIn.put("communityId", result.getCommunityId());
-            paramIn.put("userId", result.getUserId());
-            paramIn.put("num", parkingSpace.getPsNum());
-            paramIn.put("area", parkingSpace.getArea());
-            paramIn.put("typeCd", parkingSpace.getTypeCd());
-
-            responseEntity = this.callCenterService(restTemplate, pd, paramIn.toJSONString(), apiUrl, HttpMethod.POST);
-            if (responseEntity.getStatusCode() != HttpStatus.OK) {
-                continue;
-            }
-
-            savedParkingSpaceInfo = getExistsParkSpace(pd, result, parkingSpace);
-            if (savedParkingSpaceInfo == null) {
-                continue;
-            }
-
-            //鏄惁鏈変笟涓讳俊鎭�
-            if (parkingSpace.getImportOwner() == null) {
-                continue;
-            }
-
-            paramIn.clear();
-
-            paramIn.put("communityId", result.getCommunityId());
-            paramIn.put("ownerId", parkingSpace.getImportOwner().getOwnerId());
-            paramIn.put("userId", result.getUserId());
-            paramIn.put("carNum", parkingSpace.getCarNum());
-            paramIn.put("carBrand", parkingSpace.getCarBrand());
-            paramIn.put("carType", parkingSpace.getCarType());
-            paramIn.put("carColor", parkingSpace.getCarColor());
-            paramIn.put("psId", savedParkingSpaceInfo.getString("psId"));
-            paramIn.put("storeId", result.getStoreId());
-            paramIn.put("sellOrHire", parkingSpace.getSellOrHire());
-
-            if ("H".equals(parkingSpace.getSellOrHire())) {
-                paramIn.put("cycles", "0");
-            }
-
-            String feeTypeCd = "1001".equals(parkingSpace.getTypeCd())
-                    ? FeeTypeConstant.FEE_TYPE_SELL_UP_PARKING_SPACE : FeeTypeConstant.FEE_TYPE_SELL_DOWN_PARKING_SPACE;
-            apiUrl = ServiceConstant.SERVICE_API_URL + "/api/feeConfig.listFeeConfigs?page=1&row=1&communityId=" + result.getCommunityId() + "&feeTypeCd=" + feeTypeCd + "&isDefault=T";
-            responseEntity = this.callCenterService(restTemplate, pd, "", apiUrl, HttpMethod.GET);
-
-            if (responseEntity.getStatusCode() != HttpStatus.OK) {
-                continue;
-            }
-
-            JSONObject configInfo = JSONObject.parseObject(responseEntity.getBody()).getJSONArray("feeConfigs").getJSONObject(0);
-            if (!configInfo.containsKey("additionalAmount")) {
-                continue;
-            }
-
-            paramIn.put("receivedAmount", configInfo.getString("additionalAmount"));
-
-            apiUrl = ServiceConstant.SERVICE_API_URL + "/api/parkingSpace.sellParkingSpace";
-            responseEntity = this.callCenterService(restTemplate, pd, paramIn.toJSONString(), apiUrl, HttpMethod.POST);
+        } catch (Exception e) {
+            logger.error("瀵煎叆杞︿綅寮傚父", e);
+            saveTransactionLogSMOImpl.saveAssetImportLog(assetImportLogDto);
+            throw e;
         }
 
         return responseEntity;
@@ -282,91 +432,200 @@
         JSONObject paramIn = null;
         ResponseEntity<String> responseEntity = new ResponseEntity<String>("鎴愬姛", HttpStatus.OK);
         ImportOwner owner = null;
-        for (ImportRoom room : rooms) {
-            JSONObject savedRoomInfo = getExistsRoom(pd, result, room);
-            if (savedRoomInfo != null) {
-                continue;
-            }
+        AssetImportLogDto assetImportLogDto = new AssetImportLogDto();
+        assetImportLogDto.setSuccessCount(0L);
+        assetImportLogDto.setErrorCount(0L);
+        assetImportLogDto.setCommunityId(result.getCommunityId());
+        assetImportLogDto.setLogType(AssetImportLogDto.LOG_TYPE_ROOM_IMPORT);
+        List<AssetImportLogDetailDto> assetImportLogDetailDtos = new ArrayList<>();
+        assetImportLogDto.setAssetImportLogDetailDtos(assetImportLogDetailDtos);
+        long successCount = 0L;
+        long failCount = 0L;
+        AssetImportLogDetailDto assetImportLogDetailDto = null;
+        try {
+            for (ImportRoom room : rooms) {
+                JSONObject savedRoomInfo = getExistsRoom(pd, result, room);
+                if (savedRoomInfo != null) {
+                    continue;
+                }
 
-            paramIn = new JSONObject();
+                paramIn = new JSONObject();
 
 
-            //淇濆瓨 鎴垮眿
-            apiUrl = ServiceConstant.SERVICE_API_URL + "/api/room.saveRoom";
+                //淇濆瓨 鎴垮眿
+                apiUrl = ServiceConstant.SERVICE_API_URL + "/api/room.saveRoom";
 
-            paramIn.put("communityId", result.getCommunityId());
-            paramIn.put("unitId", room.getFloor().getUnitId());
-            paramIn.put("roomNum", room.getRoomNum());
-            paramIn.put("layer", room.getLayer());
-            paramIn.put("section", "1");
-            paramIn.put("apartment", room.getSection());
-            paramIn.put("state", "2002");
-            paramIn.put("builtUpArea", room.getBuiltUpArea());
-            paramIn.put("unitPrice", "1000.00");
+                paramIn.put("communityId", result.getCommunityId());
+                paramIn.put("unitId", room.getFloor().getUnitId());
+                paramIn.put("roomNum", room.getRoomNum());
+                paramIn.put("layer", room.getLayer());
+                paramIn.put("section", "1");
+                paramIn.put("apartment", room.getSection());
+                paramIn.put("state", "2002");
+                paramIn.put("builtUpArea", room.getBuiltUpArea());
+                paramIn.put("feeCoefficient", "1.00");
+                paramIn.put("roomSubType", room.getRoomSubType());
+                paramIn.put("roomArea", room.getRoomArea());
+                paramIn.put("roomRent", room.getRoomRent());
+                paramIn.put("roomType", "0".equals(room.getFloor().getUnitNum()) ? RoomDto.ROOM_TYPE_SHOPS : RoomDto.ROOM_TYPE_SHOPS);
 
 
-            responseEntity = this.callCenterService(restTemplate, pd, paramIn.toJSONString(), apiUrl, HttpMethod.POST);
-            if (responseEntity.getStatusCode() != HttpStatus.OK) {
-                continue;
-            }
-
-            savedRoomInfo = getExistsRoom(pd, result, room);
-            if (savedRoomInfo == null) {
-                continue;
-            }
-
-            if (room.getImportOwner() == null) {
-                continue;
-            }
-            paramIn.clear();
-            apiUrl = ServiceConstant.SERVICE_API_URL + "/api/room.sellRoom";
-            paramIn.put("communityId", result.getCommunityId());
-            paramIn.put("ownerId", room.getImportOwner().getOwnerId());
-            paramIn.put("roomId", savedRoomInfo.getString("roomId"));
-            paramIn.put("state", "2001");
-            paramIn.put("storeId", result.getStoreId());
-            if (!StringUtil.isEmpty(room.getRoomFeeId()) && "0".equals(room.getRoomFeeId())) {
-                paramIn.put("feeEndDate", room.getFeeEndDate());
-            }
-            responseEntity = this.callCenterService(restTemplate, pd, paramIn.toJSONString(), apiUrl, HttpMethod.POST);
-            if (responseEntity.getStatusCode() != HttpStatus.OK) {
-                continue;
-            }
-            //鍒涘缓璐圭敤
-            if (StringUtil.isEmpty(room.getRoomFeeId()) || "0".equals(room.getRoomFeeId())) {
-                continue;
-            }
-            String[] feeIds = room.getRoomFeeId().split("#");
-
-            for (int feeIndex = 0; feeIndex < feeIds.length; feeIndex++) {
-                String feeId = feeIds[feeIndex];
-                ImportFee tmpFee = null;
-                for (ImportFee fee : fees) {
-                    if (feeId.equals(fee.getId())) {
-                        tmpFee = fee;
+                responseEntity = this.callCenterService(restTemplate, pd, paramIn.toJSONString(), apiUrl, HttpMethod.POST);
+                if (responseEntity.getStatusCode() != HttpStatus.OK) {
+                    failCount += 1;
+                    assetImportLogDetailDto = new AssetImportLogDetailDto();
+                    assetImportLogDetailDto.setCommunityId(assetImportLogDto.getCommunityId());
+                    if (Assert.isJsonObject(responseEntity.getBody())) {
+                        JSONObject paramOut = JSONObject.parseObject(responseEntity.getBody());
+                        assetImportLogDetailDto.setState(paramOut.getString("code"));
+                        assetImportLogDetailDto.setMessage(paramOut.getString("msg"));
+                    } else {
+                        assetImportLogDetailDto.setState("F");
+                        assetImportLogDetailDto.setMessage(responseEntity.getBody());
+                    }
+                    assetImportLogDetailDto.setObjName(room.getRoomNum() + "瀹�");
+                    assetImportLogDetailDtos.add(assetImportLogDetailDto);
+                    assetImportLogDto.setSuccessCount(successCount);
+                    assetImportLogDto.setErrorCount(failCount);
+                    continue;
+                } else {
+                    JSONObject body = JSONObject.parseObject(responseEntity.getBody());
+                    if (body.containsKey("code") && body.getIntValue("code") != 0) {
+                        assetImportLogDetailDto = new AssetImportLogDetailDto();
+                        assetImportLogDetailDto.setCommunityId(assetImportLogDto.getCommunityId());
+                        assetImportLogDetailDto.setState(body.getString("code"));
+                        assetImportLogDetailDto.setMessage(body.getString("msg"));
+                        assetImportLogDetailDto.setObjName(room.getRoomNum() + "瀹�");
+                        assetImportLogDetailDtos.add(assetImportLogDetailDto);
+                        failCount += 1;
+                        assetImportLogDto.setSuccessCount(successCount);
+                        assetImportLogDto.setErrorCount(failCount);
+                        continue;
+                    } else {
+                        successCount += 1;
+                        assetImportLogDto.setSuccessCount(successCount);
+                        assetImportLogDto.setErrorCount(failCount);
                     }
                 }
 
-                if (tmpFee == null) {
-                    continue;//娌℃湁璐圭敤椤癸紝鍙兘鍐欓敊浜�
+                savedRoomInfo = getExistsRoom(pd, result, room);
+                if (savedRoomInfo == null) {
+                    continue;
                 }
-
-                JSONObject ttFee = getExistsFee(pd, result, tmpFee);
-
-                if (ttFee == null) {
-                    continue;//娌℃湁璐圭敤椤癸紝鍙兘鍐欓敊浜�
+                if (room.getImportOwner() == null) {
+                    continue;
                 }
-
-                apiUrl = ServiceConstant.SERVICE_API_URL + "/api/fee.saveRoomCreateFee";
+                paramIn.clear();
+                apiUrl = ServiceConstant.SERVICE_API_URL + "/api/room.sellRoom";
                 paramIn.put("communityId", result.getCommunityId());
-                paramIn.put("locationTypeCd", "3000");
-                paramIn.put("locationObjId", savedRoomInfo.getString("roomId"));
-                paramIn.put("configId", ttFee.getString("configId"));
+                paramIn.put("ownerId", room.getImportOwner().getOwnerId());
+                paramIn.put("roomId", savedRoomInfo.getString("roomId"));
+                paramIn.put("state", "2001");
                 paramIn.put("storeId", result.getStoreId());
-                paramIn.put("feeEndDate", room.getFeeEndDate().split("#")[feeIndex]);
+                if (!StringUtil.isEmpty(room.getRoomFeeId()) && "0".equals(room.getRoomFeeId())) {
+                    paramIn.put("feeEndDate", room.getFeeEndDate());
+                }
                 responseEntity = this.callCenterService(restTemplate, pd, paramIn.toJSONString(), apiUrl, HttpMethod.POST);
-            }
+                if (responseEntity.getStatusCode() != HttpStatus.OK) {
+                    assetImportLogDetailDto = new AssetImportLogDetailDto();
+                    assetImportLogDetailDto.setCommunityId(assetImportLogDto.getCommunityId());
+                    if (Assert.isJsonObject(responseEntity.getBody())) {
+                        JSONObject paramOut = JSONObject.parseObject(responseEntity.getBody());
+                        assetImportLogDetailDto.setState(paramOut.getString("code"));
+                        assetImportLogDetailDto.setMessage(paramOut.getString("msg"));
+                    } else {
+                        assetImportLogDetailDto.setState("F");
+                        assetImportLogDetailDto.setMessage(responseEntity.getBody());
+                    }
+                    assetImportLogDetailDto.setObjName(room.getRoomNum() + "瀹�");
+                    assetImportLogDetailDtos.add(assetImportLogDetailDto);
+                    continue;
+                } else {
+                    JSONObject body = JSONObject.parseObject(responseEntity.getBody());
+                    if (body.containsKey("code") && body.getIntValue("code") != 0) {
+                        assetImportLogDetailDto = new AssetImportLogDetailDto();
+                        assetImportLogDetailDto.setCommunityId(assetImportLogDto.getCommunityId());
+                        assetImportLogDetailDto.setState(body.getString("code"));
+                        assetImportLogDetailDto.setMessage(body.getString("msg"));
+                        assetImportLogDetailDto.setObjName(room.getRoomNum() + "瀹�");
+                        assetImportLogDetailDtos.add(assetImportLogDetailDto);
+                        continue;
+                    }
+                }
+                //鍒涘缓璐圭敤
+                if (StringUtil.isEmpty(room.getRoomFeeId()) || "0".equals(room.getRoomFeeId())) {
+                    continue;
+                }
+                String[] feeIds = room.getRoomFeeId().split("#");
 
+                for (int feeIndex = 0; feeIndex < feeIds.length; feeIndex++) {
+                    String feeId = feeIds[feeIndex];
+                    ImportFee tmpFee = null;
+                    for (ImportFee fee : fees) {
+                        if (feeId.equals(fee.getId())) {
+                            tmpFee = fee;
+                        }
+                    }
+
+                    if (tmpFee == null) {
+                        continue;//娌℃湁璐圭敤椤癸紝鍙兘鍐欓敊浜�
+                    }
+
+                    JSONObject ttFee = getExistsFee(pd, result, tmpFee);
+
+                    if (ttFee == null) {
+                        continue;//娌℃湁璐圭敤椤癸紝鍙兘鍐欓敊浜�
+                    }
+
+                    apiUrl = ServiceConstant.SERVICE_API_URL + "/api/fee.saveRoomCreateFee";
+                    paramIn.put("communityId", result.getCommunityId());
+                    paramIn.put("locationTypeCd", "3000");
+                    paramIn.put("locationObjId", savedRoomInfo.getString("roomId"));
+                    paramIn.put("configId", ttFee.getString("configId"));
+                    paramIn.put("storeId", result.getStoreId());
+                    paramIn.put("feeEndDate", room.getFeeEndDate().split("#")[feeIndex]);
+                    paramIn.put("startTime", paramIn.getString("feeEndDate"));
+
+                    responseEntity = this.callCenterService(restTemplate, pd, paramIn.toJSONString(), apiUrl, HttpMethod.POST);
+
+                    if (responseEntity.getStatusCode() != HttpStatus.OK) {
+                        /***************************************瀵煎叆鏃ュ織璁板綍****************************************************/
+                        assetImportLogDetailDto = new AssetImportLogDetailDto();
+                        assetImportLogDetailDto.setCommunityId(assetImportLogDto.getCommunityId());
+                        if (Assert.isJsonObject(responseEntity.getBody())) {
+                            JSONObject paramOut = JSONObject.parseObject(responseEntity.getBody());
+                            assetImportLogDetailDto.setState(paramOut.getString("code"));
+                            assetImportLogDetailDto.setMessage(paramOut.getString("msg"));
+                        } else {
+                            assetImportLogDetailDto.setState("F");
+                            assetImportLogDetailDto.setMessage(responseEntity.getBody());
+                        }
+                        assetImportLogDetailDto.setObjName(room.getRoomNum() + "瀹�");
+                        assetImportLogDetailDtos.add(assetImportLogDetailDto);
+                        failCount += 1;
+                        successCount = successCount > 0 ? successCount - 1 : successCount;
+                        assetImportLogDto.setSuccessCount(successCount);
+                        assetImportLogDto.setErrorCount(failCount);
+                    } else {
+                        JSONObject body = JSONObject.parseObject(responseEntity.getBody());
+                        if (body.containsKey("code") && body.getIntValue("code") != 0) {
+                            assetImportLogDetailDto = new AssetImportLogDetailDto();
+                            assetImportLogDetailDto.setCommunityId(assetImportLogDto.getCommunityId());
+                            assetImportLogDetailDto.setState(body.getString("code"));
+                            assetImportLogDetailDto.setMessage(body.getString("msg"));
+                            assetImportLogDetailDto.setObjName(room.getRoomNum() + "瀹�");
+                            assetImportLogDetailDtos.add(assetImportLogDetailDto);
+                            failCount += 1;
+                            successCount = successCount > 0 ? successCount - 1 : successCount;
+                            assetImportLogDto.setSuccessCount(successCount);
+                            assetImportLogDto.setErrorCount(failCount);
+                        }
+                    }
+                }
+
+            }
+        } finally {
+            saveTransactionLogSMOImpl.saveAssetImportLog(assetImportLogDto);
         }
 
         return responseEntity;
@@ -385,7 +644,7 @@
         String apiUrl = "";
         ResponseEntity<String> responseEntity = null;
         apiUrl = ServiceConstant.SERVICE_API_URL + "/api/parkingSpace.queryParkingSpaces?page=1&row=1&communityId=" + result.getCommunityId()
-                + "&num=" + parkingSpace.getPsNum();
+                + "&num=" + parkingSpace.getPsNum() + "&areaNum=" + parkingSpace.getPaNum();
         responseEntity = this.callCenterService(restTemplate, pd, "", apiUrl, HttpMethod.GET);
 
         if (responseEntity.getStatusCode() != HttpStatus.OK) { //璺宠繃 淇濆瓨鍗曞厓淇℃伅
@@ -484,31 +743,77 @@
         String apiUrl = "";
         JSONObject paramIn = null;
         ResponseEntity<String> responseEntity = new ResponseEntity<String>("鎴愬姛", HttpStatus.OK);
+        AssetImportLogDto assetImportLogDto = new AssetImportLogDto();
+        assetImportLogDto.setSuccessCount(0L);
+        assetImportLogDto.setErrorCount(0L);
+        assetImportLogDto.setCommunityId(result.getCommunityId());
+        assetImportLogDto.setLogType(AssetImportLogDto.LOG_TYPE_OWENR_IMPORT);
+        List<AssetImportLogDetailDto> assetImportLogDetailDtos = new ArrayList<>();
+        assetImportLogDto.setAssetImportLogDetailDtos(assetImportLogDetailDtos);
+        long successCount = 0L;
+        long failCount = 0L;
+        AssetImportLogDetailDto assetImportLogDetailDto = null;
+        try {
+            for (ImportOwner owner : owners) {
+                JSONObject savedOwnerInfo = getExistsOwner(pd, result, owner);
 
-        for (ImportOwner owner : owners) {
-            JSONObject savedOwnerInfo = getExistsOwner(pd, result, owner);
+                if (savedOwnerInfo != null) {
+                    owner.setOwnerId(savedOwnerInfo.getString("ownerId"));
+                    continue;
+                }
+                paramIn = new JSONObject();
 
-            if (savedOwnerInfo != null) {
-                owner.setOwnerId(savedOwnerInfo.getString("ownerId"));
-                continue;
+                apiUrl = ServiceConstant.SERVICE_API_URL + "/api/owner.saveOwner";
+
+                paramIn.put("communityId", result.getCommunityId());
+                paramIn.put("userId", result.getUserId());
+                paramIn.put("name", owner.getOwnerName());
+                paramIn.put("age", owner.getAge());
+                paramIn.put("link", owner.getTel());
+                paramIn.put("sex", owner.getSex());
+                paramIn.put("ownerTypeCd", "1001");
+                paramIn.put("idCard", owner.getIdCard());
+                paramIn.put("source", "BatchImport");
+                responseEntity = this.callCenterService(restTemplate, pd, paramIn.toJSONString(), apiUrl, HttpMethod.POST);
+
+                /***************************************瀵煎叆鏃ュ織璁板綍****************************************************/
+                if (responseEntity.getStatusCode() == HttpStatus.OK) {
+                    JSONObject body = JSONObject.parseObject(responseEntity.getBody());
+                    if (body.containsKey("code") && body.getIntValue("code") != 0) {
+                        assetImportLogDetailDto = new AssetImportLogDetailDto();
+                        assetImportLogDetailDto.setCommunityId(assetImportLogDto.getCommunityId());
+                        assetImportLogDetailDto.setState(body.getString("code"));
+                        assetImportLogDetailDto.setMessage(body.getString("msg"));
+                        assetImportLogDetailDto.setObjName(owner.getOwnerName());
+                        assetImportLogDetailDtos.add(assetImportLogDetailDto);
+                        failCount += 1;
+                        assetImportLogDto.setSuccessCount(successCount);
+                        assetImportLogDto.setErrorCount(failCount);
+                        throw new IllegalArgumentException(body.getString("msg"));
+                    }
+                    savedOwnerInfo = getExistsOwner(pd, result, owner);
+                    owner.setOwnerId(savedOwnerInfo.getString("ownerId"));
+                    successCount += 1;
+                } else {
+                    failCount += 1;
+                    assetImportLogDetailDto = new AssetImportLogDetailDto();
+                    assetImportLogDetailDto.setCommunityId(assetImportLogDto.getCommunityId());
+                    if (Assert.isJsonObject(responseEntity.getBody())) {
+                        JSONObject paramOut = JSONObject.parseObject(responseEntity.getBody());
+                        assetImportLogDetailDto.setState(paramOut.getString("code"));
+                        assetImportLogDetailDto.setMessage(paramOut.getString("msg"));
+                    } else {
+                        assetImportLogDetailDto.setState("F");
+                        assetImportLogDetailDto.setMessage(responseEntity.getBody());
+                    }
+                    assetImportLogDetailDto.setObjName(owner.getOwnerName());
+                    assetImportLogDetailDtos.add(assetImportLogDetailDto);
+                }
+                assetImportLogDto.setSuccessCount(successCount);
+                assetImportLogDto.setErrorCount(failCount);
             }
-            paramIn = new JSONObject();
-
-            apiUrl = ServiceConstant.SERVICE_API_URL + "/api/owner.saveOwner";
-
-            paramIn.put("communityId", result.getCommunityId());
-            paramIn.put("userId", result.getUserId());
-            paramIn.put("name", owner.getOwnerName());
-            paramIn.put("age", owner.getAge());
-            paramIn.put("link", owner.getTel());
-            paramIn.put("sex", owner.getSex());
-            paramIn.put("ownerTypeCd", "1001");
-            paramIn.put("idCard", owner.getIdCard());
-            responseEntity = this.callCenterService(restTemplate, pd, paramIn.toJSONString(), apiUrl, HttpMethod.POST);
-            if (responseEntity.getStatusCode() == HttpStatus.OK) {
-                savedOwnerInfo = getExistsOwner(pd, result, owner);
-                owner.setOwnerId(savedOwnerInfo.getString("ownerId"));
-            }
+        } finally {
+            saveTransactionLogSMOImpl.saveAssetImportLog(assetImportLogDto);
         }
 
         return responseEntity;
@@ -526,50 +831,121 @@
         String apiUrl = "";
         JSONObject paramIn = null;
         ResponseEntity<String> responseEntity = new ResponseEntity<String>("鎴愬姛", HttpStatus.OK);
-        for (ImportFloor importFloor : floors) {
-            paramIn = new JSONObject();
-            //鍏堜繚瀛� 妤兼爧淇℃伅
-            JSONObject savedFloorInfo = getExistsFloor(pd, result, importFloor);
-            // 濡傛灉涓嶅瓨鍦紝鎵嶆彃鍏�
-            if (savedFloorInfo == null) {
-                apiUrl = ServiceConstant.SERVICE_API_URL + "/api/floor.saveFloor";
+
+        AssetImportLogDto assetImportLogDto = new AssetImportLogDto();
+        assetImportLogDto.setSuccessCount(0L);
+        assetImportLogDto.setErrorCount(0L);
+        assetImportLogDto.setCommunityId(result.getCommunityId());
+        assetImportLogDto.setLogType(AssetImportLogDto.LOG_TYPE_FLOOR_UNIT_IMPORT);
+        List<AssetImportLogDetailDto> assetImportLogDetailDtos = new ArrayList<>();
+        assetImportLogDto.setAssetImportLogDetailDtos(assetImportLogDetailDtos);
+        long successCount = 0L;
+        long failCount = 0L;
+        AssetImportLogDetailDto assetImportLogDetailDto = null;
+        try {
+            for (ImportFloor importFloor : floors) {
+                paramIn = new JSONObject();
+                //鍏堜繚瀛� 妤兼爧淇℃伅
+                JSONObject savedFloorInfo = getExistsFloor(pd, result, importFloor);
+                // 濡傛灉涓嶅瓨鍦紝鎵嶆彃鍏�
+                if (savedFloorInfo == null) {
+                    apiUrl = ServiceConstant.SERVICE_API_URL + "/api/floor.saveFloor";
+                    paramIn.put("communityId", result.getCommunityId());
+                    paramIn.put("floorNum", importFloor.getFloorNum());
+                    paramIn.put("userId", result.getUserId());
+                    paramIn.put("name", importFloor.getFloorNum() + "鏍�");
+                    paramIn.put("floorArea", 1.00);
+
+                    responseEntity = this.callCenterService(restTemplate, pd, paramIn.toJSONString(), apiUrl, HttpMethod.POST);
+                    savedFloorInfo = getExistsFloor(pd, result, importFloor);
+                }
+
+                /***************************************瀵煎叆鏃ュ織璁板綍****************************************************/
+                if (responseEntity != null && responseEntity.getStatusCode() != HttpStatus.OK) { //璺宠繃 淇濆瓨鍗曞厓淇℃伅
+                    failCount += 1;
+                    assetImportLogDetailDto = new AssetImportLogDetailDto();
+                    assetImportLogDetailDto.setCommunityId(assetImportLogDto.getCommunityId());
+                    if (Assert.isJsonObject(responseEntity.getBody())) {
+                        JSONObject paramOut = JSONObject.parseObject(responseEntity.getBody());
+                        assetImportLogDetailDto.setState(paramOut.getString("code"));
+                        assetImportLogDetailDto.setMessage(paramOut.getString("msg"));
+                    } else {
+                        assetImportLogDetailDto.setState("F");
+                        assetImportLogDetailDto.setMessage(responseEntity.getBody());
+                    }
+                    assetImportLogDetailDto.setObjName(importFloor.getFloorNum() + "鏍�");
+                    assetImportLogDetailDtos.add(assetImportLogDetailDto);
+                    assetImportLogDto.setSuccessCount(successCount);
+                    assetImportLogDto.setErrorCount(failCount);
+                    continue;
+                } else {
+                    successCount += 1;
+                    assetImportLogDto.setSuccessCount(successCount);
+                    assetImportLogDto.setErrorCount(failCount);
+                }
+
+
+                if (savedFloorInfo == null) {
+                    continue;
+                }
+                importFloor.setFloorId(savedFloorInfo.getString("floorId"));
+                paramIn.clear();
+                //鍒ゆ柇鍗曞厓淇℃伅鏄惁宸茬粡瀛樺湪锛屽鏋滃瓨鍦ㄥ垯涓嶄繚瀛樻暟鎹畊nit.queryUnits
+                JSONObject savedUnitInfo = getExistsUnit(pd, result, importFloor);
+                if (savedUnitInfo != null) {
+                    importFloor.setUnitId(savedUnitInfo.getString("unitId"));
+                    continue;
+                }
+
+                apiUrl = ServiceConstant.SERVICE_API_URL + "/api/unit.saveUnit";
+
                 paramIn.put("communityId", result.getCommunityId());
-                paramIn.put("floorNum", importFloor.getFloorNum());
-                paramIn.put("userId", result.getUserId());
-                paramIn.put("name", importFloor.getFloorNum() + "鍙锋ゼ");
+                paramIn.put("floorId", savedFloorInfo.getString("floorId"));
+                paramIn.put("unitNum", importFloor.getUnitNum());
+                paramIn.put("layerCount", importFloor.getLayerCount());
+                paramIn.put("lift", importFloor.getLift());
+                paramIn.put("unitArea", 1.00);
                 responseEntity = this.callCenterService(restTemplate, pd, paramIn.toJSONString(), apiUrl, HttpMethod.POST);
-                savedFloorInfo = getExistsFloor(pd, result, importFloor);
-            }
-            if (responseEntity != null && responseEntity.getStatusCode() != HttpStatus.OK) { //璺宠繃 淇濆瓨鍗曞厓淇℃伅
-                continue;
-            }
-
-
-            if (savedFloorInfo == null) {
-                continue;
-            }
-            importFloor.setFloorId(savedFloorInfo.getString("floorId"));
-            paramIn.clear();
-            //鍒ゆ柇鍗曞厓淇℃伅鏄惁宸茬粡瀛樺湪锛屽鏋滃瓨鍦ㄥ垯涓嶄繚瀛樻暟鎹畊nit.queryUnits
-            JSONObject savedUnitInfo = getExistsUnit(pd, result, importFloor);
-            if (savedUnitInfo != null) {
+                /****************************** 寮�濮嬭褰曞け璐ユ棩蹇� *******************************/
+                if (responseEntity != null && responseEntity.getStatusCode() != HttpStatus.OK) { //璺宠繃 淇濆瓨鍗曞厓淇℃伅
+                    assetImportLogDetailDto = new AssetImportLogDetailDto();
+                    assetImportLogDetailDto.setCommunityId(assetImportLogDto.getCommunityId());
+                    if (Assert.isJsonObject(responseEntity.getBody())) {
+                        JSONObject paramOut = JSONObject.parseObject(responseEntity.getBody());
+                        assetImportLogDetailDto.setState(paramOut.getString("code"));
+                        assetImportLogDetailDto.setMessage(paramOut.getString("msg"));
+                    } else {
+                        assetImportLogDetailDto.setState("F");
+                        assetImportLogDetailDto.setMessage(responseEntity.getBody());
+                    }
+                    assetImportLogDetailDto.setObjName(importFloor.getFloorNum() + "鏍�" + importFloor.getUnitNum() + "鍗曞厓");
+                    assetImportLogDetailDtos.add(assetImportLogDetailDto);
+                    failCount += 1;
+                    successCount = successCount > 0 ? successCount - 1 : successCount;
+                    assetImportLogDto.setSuccessCount(successCount);
+                    assetImportLogDto.setErrorCount(failCount);
+                } else {
+                    JSONObject body = JSONObject.parseObject(responseEntity.getBody());
+                    if (body.containsKey("code") && body.getIntValue("code") != 0) {
+                        assetImportLogDetailDto = new AssetImportLogDetailDto();
+                        assetImportLogDetailDto.setCommunityId(assetImportLogDto.getCommunityId());
+                        assetImportLogDetailDto.setState(body.getString("code"));
+                        assetImportLogDetailDto.setMessage(body.getString("msg"));
+                        assetImportLogDetailDto.setObjName(importFloor.getFloorNum() + "鏍�" + importFloor.getUnitNum() + "鍗曞厓");
+                        assetImportLogDetailDtos.add(assetImportLogDetailDto);
+                        failCount += 1;
+                        successCount = successCount > 0 ? successCount - 1 : successCount;
+                        assetImportLogDto.setSuccessCount(successCount);
+                        assetImportLogDto.setErrorCount(failCount);
+                    }
+                }
+                //灏唘nitId 鍒峰叆ImportFloor瀵硅薄
+                savedUnitInfo = getExistsUnit(pd, result, importFloor);
                 importFloor.setUnitId(savedUnitInfo.getString("unitId"));
-                continue;
+
             }
-
-            apiUrl = ServiceConstant.SERVICE_API_URL + "/api/unit.saveUnit";
-
-            paramIn.put("communityId", result.getCommunityId());
-            paramIn.put("floorId", savedFloorInfo.getString("floorId"));
-            paramIn.put("unitNum", importFloor.getUnitNum());
-            paramIn.put("layerCount", importFloor.getLayerCount());
-            paramIn.put("lift", importFloor.getLift());
-            responseEntity = this.callCenterService(restTemplate, pd, paramIn.toJSONString(), apiUrl, HttpMethod.POST);
-
-            //灏唘nitId 鍒峰叆ImportFloor瀵硅薄
-            savedUnitInfo = getExistsUnit(pd, result, importFloor);
-            importFloor.setUnitId(savedUnitInfo.getString("unitId"));
-
+        } finally {
+            saveTransactionLogSMOImpl.saveAssetImportLog(assetImportLogDto);
         }
         return responseEntity;
     }
@@ -708,16 +1084,16 @@
             if (StringUtil.isNullOrNone(os[0])) {
                 continue;
             }
-            Assert.hasLength(os[0].toString(), "杞︿綅淇℃伅閫夐」涓�" + (osIndex + 1) + "琛屽仠杞﹀満缂栧彿涓虹┖");
-            Assert.hasLength(os[1].toString(), "杞︿綅淇℃伅閫夐」涓�" + (osIndex + 1) + "琛岃溅浣嶇紪鐮佷负绌�");
-            Assert.hasLength(os[2].toString(), "杞︿綅淇℃伅閫夐」涓�" + (osIndex + 1) + "琛屽仠杞﹀満绫诲瀷涓虹┖");
-            Assert.hasLength(os[3].toString(), "杞︿綅淇℃伅閫夐」涓�" + (osIndex + 1) + "琛岄潰绉负绌猴紝娌℃湁璇峰~鍐欒瀹氬�� 濡�10");
+            Assert.hasValue(os[0], "杞︿綅淇℃伅閫夐」涓�" + (osIndex + 1) + "琛屽仠杞﹀満缂栧彿涓虹┖");
+            Assert.hasValue(os[1], "杞︿綅淇℃伅閫夐」涓�" + (osIndex + 1) + "琛岃溅浣嶇紪鐮佷负绌�");
+            Assert.hasValue(os[2], "杞︿綅淇℃伅閫夐」涓�" + (osIndex + 1) + "琛屽仠杞﹀満绫诲瀷涓虹┖");
+            Assert.hasValue(os[3], "杞︿綅淇℃伅閫夐」涓�" + (osIndex + 1) + "琛岄潰绉负绌猴紝娌℃湁璇峰~鍐欒瀹氬�� 濡�10");
             importParkingSpace = new ImportParkingSpace();
             importParkingSpace.setPaNum(os[0].toString());
             importParkingSpace.setPsNum(os[1].toString());
             importParkingSpace.setTypeCd(os[2].toString());
             importParkingSpace.setArea(Double.parseDouble(os[3].toString()));
-            if (StringUtil.isNullOrNone(os[4])) {
+            if (os.length < 5 || StringUtil.isNullOrNone(os[4])) {
                 parkingSpaces.add(importParkingSpace);
                 continue;
             }
@@ -729,10 +1105,42 @@
                 importParkingSpace.setCarType(os[7].toString());
                 importParkingSpace.setCarColor(os[8].toString());
                 importParkingSpace.setSellOrHire(os[9].toString());
+
+                String startTime = excelDoubleToDate(os[10].toString());
+                String endTime = excelDoubleToDate(os[11].toString());
+                Assert.isDate(startTime, DateUtil.DATE_FORMATE_STRING_B, (osIndex + 1) + "琛屽紑濮嬫椂闂存牸寮忛敊璇� 璇峰~鍐橸YYY-MM-DD 鏂囨湰鏍煎紡");
+                Assert.isDate(endTime, DateUtil.DATE_FORMATE_STRING_B, (osIndex + 1) + "琛岀粨鏉熸椂闂存牸寮忛敊璇� 璇峰~鍐橸YYY-MM-DD 鏂囨湰鏍煎紡");
+                importParkingSpace.setStartTime(startTime);
+                importParkingSpace.setEndTime(endTime);
             }
 
             parkingSpaces.add(importParkingSpace);
         }
+    }
+
+    //瑙f瀽Excel鏃ユ湡鏍煎紡
+    public static String excelDoubleToDate(String strDate) {
+        if (strDate.length() == 5) {
+            try {
+                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+                Date tDate = DoubleToDate(Double.parseDouble(strDate));
+                return sdf.format(tDate);
+            } catch (Exception e) {
+                e.printStackTrace();
+                return strDate;
+            }
+        }
+        return strDate;
+    }
+
+
+    //瑙f瀽Excel鏃ユ湡鏍煎紡
+    public static Date DoubleToDate(Double dVal) {
+        Date tDate = new Date();
+        long localOffset = tDate.getTimezoneOffset() * 60000; //绯荤粺鏃跺尯鍋忕Щ 1900/1/1 鍒� 1970/1/1 鐨� 25569 澶�
+        tDate.setTime((long) ((dVal - 25569) * 24 * 3600 * 1000 + localOffset));
+
+        return tDate;
     }
 
     /**
@@ -748,39 +1156,51 @@
         List<Object[]> oList = ImportExcelUtils.listFromSheet(sheet);
         ImportRoom importRoom = null;
         for (int osIndex = 0; osIndex < oList.size(); osIndex++) {
-            Object[] os = oList.get(osIndex);
-            if (osIndex == 0) { // 绗竴琛屾槸 澶撮儴淇℃伅 鐩存帴璺宠繃
-                continue;
-            }
-            if (StringUtil.isNullOrNone(os[0])) {
-                continue;
-            }
-            Assert.hasLength(os[1].toString(), "鎴垮眿淇℃伅閫夐」涓�" + (osIndex + 1) + "琛屾ゼ鏍嬬紪鍙蜂负绌�");
-            Assert.hasLength(os[2].toString(), "鎴垮眿淇℃伅閫夐」涓�" + (osIndex + 1) + "琛屽崟鍏冪紪鍙蜂负绌�");
-            Assert.hasLength(os[3].toString(), "鎴垮眿淇℃伅閫夐」涓�" + (osIndex + 1) + "琛屾埧灞嬫ゼ灞備负绌�");
-            Assert.hasLength(os[4].toString(), "鎴垮眿淇℃伅閫夐」涓�" + (osIndex + 1) + "琛屾埧灞嬫埛鍨嬩负绌�");
-            Assert.hasLength(os[5].toString(), "鎴垮眿淇℃伅閫夐」涓�" + (osIndex + 1) + "琛屽缓绛戦潰绉负绌�");
-            if (!StringUtil.isNullOrNone(os[6])) {
-                Assert.hasLength(os[7].toString(), "鎴垮眿淇℃伅閫夐」涓�" + (osIndex + 1) + "琛屾埧灞嬭垂鐢ㄤ负绌�");
-                Assert.hasLength(os[8].toString(), "鎴垮眿淇℃伅閫夐」涓�" + (osIndex + 1) + "琛岃垂鐢ㄥ埌鏈熸椂闂翠负绌�");
-            }
-            importRoom = new ImportRoom();
-            importRoom.setRoomNum(os[0].toString());
-            importRoom.setFloor(getImportFloor(floors, os[1].toString(), os[2].toString()));
-            importRoom.setLayer(Integer.parseInt(os[3].toString()));
-            importRoom.setSection(os[4].toString());
-            importRoom.setBuiltUpArea(Double.parseDouble(os[5].toString()));
+            try {
+                Object[] os = oList.get(osIndex);
+                if (osIndex == 0) { // 绗竴琛屾槸 澶撮儴淇℃伅 鐩存帴璺宠繃
+                    continue;
+                }
+                if (StringUtil.isNullOrNone(os[0])) {
+                    continue;
+                }
+                Assert.hasValue(os[1], "鎴垮眿淇℃伅閫夐」涓�" + (osIndex + 1) + "琛屾ゼ鏍嬬紪鍙蜂负绌�");
+                Assert.hasValue(os[2], "鎴垮眿淇℃伅閫夐」涓�" + (osIndex + 1) + "琛屽崟鍏冪紪鍙蜂负绌�");
+                Assert.hasValue(os[3], "鎴垮眿淇℃伅閫夐」涓�" + (osIndex + 1) + "琛屾埧灞嬫ゼ灞備负绌�");
+                Assert.hasValue(os[4], "鎴垮眿淇℃伅閫夐」涓�" + (osIndex + 1) + "琛屾埧灞嬫埛鍨嬩负绌�");
+                Assert.hasValue(os[5], "鎴垮眿淇℃伅閫夐」涓�" + (osIndex + 1) + "琛屽缓绛戦潰绉负绌�");
+                if (os.length > 6 && !StringUtil.isNullOrNone(os[6])) {
+                    Assert.hasValue(os[7], "鎴垮眿淇℃伅閫夐」涓�" + (osIndex + 1) + "琛屾埧灞嬭垂鐢ㄤ负绌�");
+                    Assert.hasValue(os[8], "鎴垮眿淇℃伅閫夐」涓�" + (osIndex + 1) + "琛岃垂鐢ㄥ埌鏈熸椂闂翠负绌�");
+                }
+                Assert.hasValue(os[9], "鎴垮眿淇℃伅閫夐」涓�" + (osIndex + 1) + "琛屾埧灞嬬被鍨嬩负绌�");
+                Assert.hasValue(os[10], "鎴垮眿淇℃伅閫夐」涓�" + (osIndex + 1) + "琛屽鍐呴潰绉负绌�");
+                Assert.hasValue(os[11], "鎴垮眿淇℃伅閫夐」涓�" + (osIndex + 1) + "琛岀閲戜负绌�");
+                importRoom = new ImportRoom();
+                importRoom.setRoomNum(os[0].toString());
+                importRoom.setFloor(getImportFloor(floors, os[1].toString(), os[2].toString()));
+                importRoom.setLayer(Integer.parseInt(os[3].toString()));
+                importRoom.setSection(os[4].toString());
+                importRoom.setBuiltUpArea(Double.parseDouble(os[5].toString()));
+                importRoom.setRoomSubType(os[9].toString());
+                importRoom.setRoomArea(os[10].toString());
+                importRoom.setRoomRent(os[11].toString());
 
-            if (!StringUtil.isEmpty(os[6].toString())) {
-                importRoom.setRoomFeeId(os[7].toString());
-                importRoom.setFeeEndDate(os[8].toString());
-            }
-            if (StringUtil.isNullOrNone(os[6])) {
+
+                if (os.length > 6 && !StringUtil.isNullOrNone(os[6])) {
+                    importRoom.setRoomFeeId(os[7].toString());
+                    importRoom.setFeeEndDate(os[8].toString());
+                }
+                if (os.length < 7 || StringUtil.isNullOrNone(os[6])) {
+                    rooms.add(importRoom);
+                    continue;
+                }
+                importRoom.setImportOwner(getImportOwner(owners, os[6].toString()));
                 rooms.add(importRoom);
-                continue;
+            } catch (Exception e) {
+                logger.error("鎴垮眿鏁版嵁鏍¢獙澶辫触", e);
+                throw new IllegalArgumentException("鎴垮眿淇℃伅sheet涓" + (osIndex + 1) + "琛屾暟鎹敊璇紝璇锋鏌�" + e.getLocalizedMessage());
             }
-            importRoom.setImportOwner(getImportOwner(owners, os[6].toString()));
-            rooms.add(importRoom);
         }
     }
 
@@ -803,22 +1223,22 @@
             if (StringUtil.isNullOrNone(os[0])) {
                 continue;
             }
-            Assert.hasLength(os[0].toString(), "璐圭敤璁剧疆閫夐」涓�" + (osIndex + 1) + "琛岃垂鐢ㄧ紪鍙蜂负绌�");
-            Assert.hasLength(os[1].toString(), "璐圭敤璁剧疆閫夐」涓�" + (osIndex + 1) + "琛岃垂鐢ㄧ被鍨嬩负绌�");
-            Assert.hasLength(os[2].toString(), "璐圭敤璁剧疆閫夐」涓�" + (osIndex + 1) + "琛屾敹璐归」鐩负绌�");
-            Assert.hasLength(os[3].toString(), "璐圭敤璁剧疆閫夐」涓�" + (osIndex + 1) + "琛岃垂鐢ㄦ爣璇嗕负绌�");
-            Assert.hasLength(os[4].toString(), "璐圭敤璁剧疆閫夐」涓�" + (osIndex + 1) + "琛岃垂鐢ㄧ被鍨嬩负绌�");
-            Assert.hasLength(os[5].toString(), "璐圭敤璁剧疆閫夐」涓�" + (osIndex + 1) + "琛岀即璐瑰懆鏈熶负绌�");
+            Assert.hasValue(os[0], "璐圭敤璁剧疆閫夐」涓�" + (osIndex + 1) + "琛岃垂鐢ㄧ紪鍙蜂负绌�");
+            Assert.hasValue(os[1], "璐圭敤璁剧疆閫夐」涓�" + (osIndex + 1) + "琛岃垂鐢ㄧ被鍨嬩负绌�");
+            Assert.hasValue(os[2], "璐圭敤璁剧疆閫夐」涓�" + (osIndex + 1) + "琛屾敹璐归」鐩负绌�");
+            Assert.hasValue(os[3], "璐圭敤璁剧疆閫夐」涓�" + (osIndex + 1) + "琛岃垂鐢ㄦ爣璇嗕负绌�");
+            Assert.hasValue(os[4], "璐圭敤璁剧疆閫夐」涓�" + (osIndex + 1) + "琛岃垂鐢ㄧ被鍨嬩负绌�");
+            Assert.hasValue(os[5], "璐圭敤璁剧疆閫夐」涓�" + (osIndex + 1) + "琛岀即璐瑰懆鏈熶负绌�");
             Assert.isInteger(os[5].toString(), "璐圭敤璁剧疆閫夐」涓�" + (osIndex + 1) + "琛岀即璐瑰懆鏈熶笉鏄鏁存暟");
-            Assert.hasLength(os[6].toString(), "璐圭敤璁剧疆閫夐」涓�" + (osIndex + 1) + "琛屽嚭璐︾被鍨嬩负绌�");
+            Assert.hasValue(os[6], "璐圭敤璁剧疆閫夐」涓�" + (osIndex + 1) + "琛屽嚭璐︾被鍨嬩负绌�");
             Assert.isDate(os[7].toString(), DateUtil.DATE_FORMATE_STRING_B, "璐圭敤璁剧疆閫夐」涓�" + (osIndex + 1) + "琛岃璐硅捣濮嬫椂闂翠笉鏄湁鏁堟椂闂存牸寮� 璇疯緭鍏ョ被浼�2020-06-01");
             Assert.isDate(os[8].toString(), DateUtil.DATE_FORMATE_STRING_B, "璐圭敤璁剧疆閫夐」涓�" + (osIndex + 1) + "琛岃璐圭粓姝㈡椂闂翠笉鏄湁鏁堟椂闂存牸寮� 璇疯緭鍏ョ被浼�2037-01-01");
-            Assert.hasLength(os[9].toString(), "璐圭敤璁剧疆閫夐」涓�" + (osIndex + 1) + "琛岃绠楀叕寮忎负绌�");
+            Assert.hasValue(os[9], "璐圭敤璁剧疆閫夐」涓�" + (osIndex + 1) + "琛岃绠楀叕寮忎负绌�");
             if (!"1001".equals(os[9].toString()) && !"2002".equals(os[9].toString())) {
                 throw new IllegalArgumentException("璐圭敤璁剧疆閫夐」涓�" + (osIndex + 1) + "琛岃绠楀叕寮忛敊璇� 璇峰~鍐�1001 鎴栬��2002");
             }
-            Assert.hasLength(os[10].toString(), "璐圭敤璁剧疆閫夐」涓�" + (osIndex + 1) + "琛岃璐瑰崟浠蜂负绌�");
-            Assert.hasLength(os[11].toString(), "璐圭敤璁剧疆閫夐」涓�" + (osIndex + 1) + "琛屽浐瀹氳垂鐢ㄤ负绌�");
+            Assert.hasValue(os[10], "璐圭敤璁剧疆閫夐」涓�" + (osIndex + 1) + "琛岃璐瑰崟浠蜂负绌�");
+            Assert.hasValue(os[11], "璐圭敤璁剧疆閫夐」涓�" + (osIndex + 1) + "琛屽浐瀹氳垂鐢ㄤ负绌�");
             importFee = new ImportFee();
             importFee.setId(os[0].toString());
             importFee.setFeeTypeCd("鐗╀笟璐�".equals(os[1]) ? "888800010001" : "888800010002");
@@ -892,27 +1312,40 @@
         List<Object[]> oList = ImportExcelUtils.listFromSheet(sheet);
         ImportOwner importOwner = null;
         for (int osIndex = 0; osIndex < oList.size(); osIndex++) {
-            Object[] os = oList.get(osIndex);
-            if (osIndex == 0) { // 绗竴琛屾槸 澶撮儴淇℃伅 鐩存帴璺宠繃
-                continue;
+            try {
+                Object[] os = oList.get(osIndex);
+                if (osIndex == 0) { // 绗竴琛屾槸 澶撮儴淇℃伅 鐩存帴璺宠繃
+                    continue;
+                }
+                if (StringUtil.isNullOrNone(os[0])) {
+                    continue;
+                }
+                Assert.hasValue(os[0], "涓氫富淇℃伅閫夐」涓�" + (osIndex + 1) + "琛屼笟涓荤紪鍙蜂负绌�");
+                Assert.hasValue(os[1], "涓氫富淇℃伅閫夐」涓�" + (osIndex + 1) + "琛屼笟涓诲悕绉颁负绌�");
+                Assert.hasValue(os[2], "涓氫富淇℃伅閫夐」涓�" + (osIndex + 1) + "琛屼笟涓绘�у埆涓虹┖");
+                String tel = StringUtil.isNullOrNone(os[4]) ? "19999999999" : os[4].toString();
+                String idCard = StringUtil.isNullOrNone(os[5]) ? "10000000000000000001" : os[5].toString();
+
+                if (os[4].toString().length() > 11) {
+                    throw new IllegalArgumentException(os[1].toString() + " 鐨勬墜鏈哄彿瓒呰繃11浣�,璇锋牳瀹�");
+                }
+                if (os[5].toString().length() > 18) {
+                    throw new IllegalArgumentException(os[1].toString() + " 鐨勮韩浠借瘉瓒呰繃18浣�,璇锋牳瀹�");
+                }
+
+                String age = StringUtil.isNullOrNone(os[3]) ? CommonUtil.getAgeByCertId(idCard) : os[3].toString();
+                importOwner = new ImportOwner();
+                importOwner.setOwnerNum(os[0].toString());
+                importOwner.setOwnerName(os[1].toString());
+                importOwner.setSex("鐢�".equals(os[2].toString()) ? "0" : "1");
+                importOwner.setAge(Integer.parseInt(age));
+                importOwner.setTel(tel);
+                importOwner.setIdCard(idCard);
+                owners.add(importOwner);
+            } catch (Exception e) {
+                logger.error("绗�" + (osIndex + 1) + "琛屾暟鎹嚭鐜伴棶棰�", e);
+                throw new IllegalArgumentException("绗�" + (osIndex + 1) + "琛屾暟鎹嚭鐜伴棶棰�" + e.getLocalizedMessage(), e);
             }
-            if (StringUtil.isNullOrNone(os[0])) {
-                continue;
-            }
-            Assert.hasLength(os[0].toString(), "涓氫富淇℃伅閫夐」涓�" + (osIndex + 1) + "琛屼笟涓荤紪鍙蜂负绌�");
-            Assert.hasLength(os[1].toString(), "涓氫富淇℃伅閫夐」涓�" + (osIndex + 1) + "琛屼笟涓诲悕绉颁负绌�");
-            Assert.hasLength(os[2].toString(), "涓氫富淇℃伅閫夐」涓�" + (osIndex + 1) + "琛屼笟涓绘�у埆涓虹┖");
-            String tel = StringUtil.isNullOrNone(os[4]) ? "19999999999" : os[4].toString();
-            String idCard = StringUtil.isNullOrNone(os[5]) ? "10000000000000000001" : os[5].toString();
-            String age = StringUtil.isNullOrNone(os[3]) ? CommonUtil.getAgeByCertId(idCard) : os[3].toString();
-            importOwner = new ImportOwner();
-            importOwner.setOwnerNum(os[0].toString());
-            importOwner.setOwnerName(os[1].toString());
-            importOwner.setSex("鐢�".equals(os[2].toString()) ? "0" : "1");
-            importOwner.setAge(Integer.parseInt(age));
-            importOwner.setTel(tel);
-            importOwner.setIdCard(idCard);
-            owners.add(importOwner);
         }
     }
 
@@ -937,10 +1370,10 @@
                 continue;
             }
 
-            Assert.hasLength(os[0].toString(), "妤兼爧鍗曞厓閫夐」涓�" + (osIndex + 1) + "琛屾ゼ鏍嬪彿涓虹┖");
-            Assert.hasLength(os[1].toString(), "妤兼爧鍗曞厓閫夐」涓�" + (osIndex + 1) + "琛屽崟鍏冪紪鍙蜂负绌�");
-            Assert.hasLength(os[2].toString(), "妤兼爧鍗曞厓閫夐」涓�" + (osIndex + 1) + "琛屾�绘ゼ灞備负绌�");
-            Assert.hasLength(os[3].toString(), "妤兼爧鍗曞厓閫夐」涓�" + (osIndex + 1) + "琛屾槸鍚︽湁鐢垫涓虹┖");
+            Assert.hasValue(os[0], "妤兼爧鍗曞厓閫夐」涓�" + (osIndex + 1) + "琛屾ゼ鏍嬪彿涓虹┖");
+            Assert.hasValue(os[1], "妤兼爧鍗曞厓閫夐」涓�" + (osIndex + 1) + "琛屽崟鍏冪紪鍙蜂负绌�");
+            Assert.hasValue(os[2], "妤兼爧鍗曞厓閫夐」涓�" + (osIndex + 1) + "琛屾�绘ゼ灞備负绌�");
+            Assert.hasValue(os[3], "妤兼爧鍗曞厓閫夐」涓�" + (osIndex + 1) + "琛屾槸鍚︽湁鐢垫涓虹┖");
             importFloor = new ImportFloor();
             importFloor.setFloorNum(os[0].toString());
             importFloor.setUnitNum(os[1].toString());

--
Gitblit v1.8.0