From 3f2c86dbcf14019ce74d02fc820050f1f241b880 Mon Sep 17 00:00:00 2001
From: java110 <928255095@qq.com>
Date: 星期三, 10 六月 2020 11:58:09 +0800
Subject: [PATCH] Merge branch 'master' of https://github.com/java110/MicroCommunity

---
 service-front/src/main/java/com/java110/front/smo/assetImport/impl/AssetImportSMOImpl.java |  209 +++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 191 insertions(+), 18 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
index 570350b..2ce6a7a 100644
--- 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
@@ -2,18 +2,20 @@
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
-import com.java110.utils.constant.FeeTypeConstant;
-import com.java110.utils.constant.ServiceConstant;
-import com.java110.utils.util.ImportExcelUtils;
-import com.java110.utils.util.StringUtil;
+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.entity.component.ComponentValidateResult;
-import com.java110.core.component.BaseComponentSMO;
 import com.java110.front.smo.assetImport.IAssetImportSMO;
+import com.java110.utils.constant.FeeTypeConstant;
+import com.java110.utils.constant.ServiceConstant;
+import com.java110.utils.util.CommonUtil;
+import com.java110.utils.util.ImportExcelUtils;
+import com.java110.utils.util.StringUtil;
 import org.apache.poi.ss.usermodel.Sheet;
 import org.apache.poi.ss.usermodel.Workbook;
 import org.slf4j.Logger;
@@ -56,6 +58,7 @@
         String[] headers = null;   //琛ㄥご淇℃伅
         List<ImportFloor> floors = new ArrayList<ImportFloor>();
         List<ImportOwner> owners = new ArrayList<ImportOwner>();
+        List<ImportFee> fees = new ArrayList<>();
         List<ImportRoom> rooms = new ArrayList<ImportRoom>();
         List<ImportParkingSpace> parkingSpaces = new ArrayList<ImportParkingSpace>();
         workbook = ImportExcelUtils.createWorkbook(uploadFile);
@@ -63,6 +66,9 @@
         getFloors(workbook, floors);
         //鑾峰彇涓氫富淇℃伅
         getOwners(workbook, owners);
+
+
+        getFee(workbook, fees);
 
         //鑾峰彇鎴垮眿淇℃伅
         getRooms(workbook, rooms, floors, owners);
@@ -74,7 +80,7 @@
         importExcelDataValidate(floors, owners, rooms, parkingSpaces);
 
         // 淇濆瓨鏁版嵁
-        return dealExcelData(pd, floors, owners, rooms, parkingSpaces, result);
+        return dealExcelData(pd, floors, owners, rooms, parkingSpaces, fees, result);
     }
 
     /**
@@ -85,7 +91,13 @@
      * @param rooms         鎴垮眿淇℃伅
      * @param parkingSpaces 杞︿綅淇℃伅
      */
-    private ResponseEntity<String> dealExcelData(IPageData pd, List<ImportFloor> floors, List<ImportOwner> owners, List<ImportRoom> rooms, List<ImportParkingSpace> parkingSpaces, ComponentValidateResult result) {
+    private ResponseEntity<String> dealExcelData(IPageData pd,
+                                                 List<ImportFloor> floors,
+                                                 List<ImportOwner> owners,
+                                                 List<ImportRoom> rooms,
+                                                 List<ImportParkingSpace> parkingSpaces,
+                                                 List<ImportFee> fees,
+                                                 ComponentValidateResult result) {
         ResponseEntity<String> responseEntity = null;
         //淇濆瓨鍗曞厓淇℃伅 鍜� 妤兼爧淇℃伅
         responseEntity = savedFloorAndUnitInfo(pd, floors, result);
@@ -100,8 +112,14 @@
             return responseEntity;
         }
 
+        // 淇濆瓨璐圭敤椤�
+        responseEntity = savedFeeInfo(pd, fees, result);
+        if (responseEntity == null || responseEntity.getStatusCode() != HttpStatus.OK) {
+            return responseEntity;
+        }
+
         //淇濆瓨鎴垮眿
-        responseEntity = savedRoomInfo(pd, rooms, result);
+        responseEntity = savedRoomInfo(pd, rooms, fees, result);
         if (responseEntity == null || responseEntity.getStatusCode() != HttpStatus.OK) {
             return responseEntity;
         }
@@ -111,6 +129,34 @@
 
         if (responseEntity == null || responseEntity.getStatusCode() != HttpStatus.OK) {
             return responseEntity;
+        }
+
+        return responseEntity;
+    }
+
+    private ResponseEntity<String> savedFeeInfo(IPageData pd, List<ImportFee> fees, ComponentValidateResult result) {
+        String apiUrl = "";
+        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;
+            }
+
+            //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;
+            }
         }
 
         return responseEntity;
@@ -137,7 +183,7 @@
             if (savedParkingAreaInfo == null) {
                 apiUrl = ServiceConstant.SERVICE_API_URL + "/api/parkingArea.saveParkingArea";
                 paramIn.put("communityId", result.getCommunityId());
-                paramIn.put("typeCd",parkingSpace.getTypeCd());
+                paramIn.put("typeCd", parkingSpace.getTypeCd());
                 paramIn.put("num", parkingSpace.getPaNum());
                 responseEntity = this.callCenterService(restTemplate, pd, paramIn.toJSONString(), apiUrl, HttpMethod.POST);
                 savedParkingAreaInfo = getExistsParkingArea(pd, result, parkingSpace);
@@ -188,13 +234,13 @@
             paramIn.put("storeId", result.getStoreId());
             paramIn.put("sellOrHire", parkingSpace.getSellOrHire());
 
-            if("H".equals(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";
+            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) {
@@ -224,7 +270,7 @@
      * @param result
      * @return
      */
-    private ResponseEntity<String> savedRoomInfo(IPageData pd, List<ImportRoom> rooms, ComponentValidateResult result) {
+    private ResponseEntity<String> savedRoomInfo(IPageData pd, List<ImportRoom> rooms, List<ImportFee> fees, ComponentValidateResult result) {
         String apiUrl = "";
         JSONObject paramIn = null;
         ResponseEntity<String> responseEntity = new ResponseEntity<String>("鎴愬姛", HttpStatus.OK);
@@ -239,7 +285,6 @@
 
 
             //淇濆瓨 鎴垮眿
-
             apiUrl = ServiceConstant.SERVICE_API_URL + "/api/room.saveRoom";
 
             paramIn.put("communityId", result.getCommunityId());
@@ -251,6 +296,7 @@
             paramIn.put("state", "2002");
             paramIn.put("builtUpArea", room.getBuiltUpArea());
             paramIn.put("unitPrice", "1000.00");
+
 
             responseEntity = this.callCenterService(restTemplate, pd, paramIn.toJSONString(), apiUrl, HttpMethod.POST);
             if (responseEntity.getStatusCode() != HttpStatus.OK) {
@@ -272,7 +318,47 @@
             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;
+                    }
+                }
+
+                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]);
+                responseEntity = this.callCenterService(restTemplate, pd, paramIn.toJSONString(), apiUrl, HttpMethod.POST);
+            }
 
         }
 
@@ -310,6 +396,39 @@
         JSONObject savedParkingSpaceInfo = savedParkingSpaceInfoResults.getJSONArray("parkingSpaces").getJSONObject(0);
 
         return savedParkingSpaceInfo;
+    }
+
+    /**
+     * 鏌ヨ瀛樺湪鐨勬埧灞嬩俊鎭�
+     * room.queryRooms
+     *
+     * @param pd
+     * @param result
+     * @param fee
+     * @return
+     */
+    private JSONObject getExistsFee(IPageData pd, ComponentValidateResult result, ImportFee fee) {
+        String apiUrl = "";
+        ResponseEntity<String> responseEntity = null;
+        apiUrl = ServiceConstant.SERVICE_API_URL + "/api/feeConfig.listFeeConfigs?page=1&row=1&communityId=" + result.getCommunityId()
+                + "&feeName=" + fee.getFeeName();
+        responseEntity = this.callCenterService(restTemplate, pd, "", apiUrl, HttpMethod.GET);
+
+        if (responseEntity.getStatusCode() != HttpStatus.OK) { //璺宠繃 淇濆瓨鍗曞厓淇℃伅
+            return null;
+        }
+
+        JSONObject savedRoomInfoResults = JSONObject.parseObject(responseEntity.getBody());
+
+
+        if (!savedRoomInfoResults.containsKey("feeConfigs") || savedRoomInfoResults.getJSONArray("feeConfigs").size() != 1) {
+            return null;
+        }
+
+
+        JSONObject savedFeeConfigInfo = savedRoomInfoResults.getJSONArray("feeConfigs").getJSONObject(0);
+
+        return savedFeeConfigInfo;
     }
 
 
@@ -377,7 +496,7 @@
             paramIn.put("link", owner.getTel());
             paramIn.put("sex", owner.getSex());
             paramIn.put("ownerTypeCd", "1001");
-            paramIn.put("idCard",owner.getIdCard());
+            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);
@@ -417,7 +536,6 @@
             if (responseEntity != null && responseEntity.getStatusCode() != HttpStatus.OK) { //璺宠繃 淇濆瓨鍗曞厓淇℃伅
                 continue;
             }
-
 
 
             if (savedFloorInfo == null) {
@@ -631,12 +749,63 @@
             importRoom.setLayer(Integer.parseInt(os[3].toString()));
             importRoom.setSection(os[4].toString());
             importRoom.setBuiltUpArea(Double.parseDouble(os[5].toString()));
+
+            if (!StringUtil.isEmpty(os[7].toString())) {
+                importRoom.setRoomFeeId(os[7].toString());
+                importRoom.setFeeEndDate(os[8].toString());
+            }
             if (StringUtil.isNullOrNone(os[6])) {
                 rooms.add(importRoom);
                 continue;
             }
             importRoom.setImportOwner(getImportOwner(owners, os[6].toString()));
             rooms.add(importRoom);
+        }
+    }
+
+    /**
+     * 鑾峰彇 鎴垮眿淇℃伅
+     *
+     * @param workbook
+     * @param importFees
+     */
+    private void getFee(Workbook workbook, List<ImportFee> importFees) {
+        Sheet sheet = null;
+        sheet = ImportExcelUtils.getSheet(workbook, "鎴垮眿淇℃伅");
+        List<Object[]> oList = ImportExcelUtils.listFromSheet(sheet);
+        ImportFee importFee = null;
+        for (int osIndex = 0; osIndex < oList.size(); osIndex++) {
+            Object[] os = oList.get(osIndex);
+            if (osIndex == 0) { // 绗竴琛屾槸 澶撮儴淇℃伅 鐩存帴璺宠繃
+                continue;
+            }
+            if (StringUtil.isNullOrNone(os[0])) {
+                continue;
+            }
+            importFee = new ImportFee();
+            importFee.setId(os[0].toString());
+            importFee.setFeeTypeCd("鐗╀笟璐�".equals(os[1]) ? "888800010001" : "888800010002");
+            importFee.setFeeName(os[2].toString());
+            importFee.setFeeFlag("鍛ㄦ湡鎬ц垂鐢�".equals(os[3]) ? "1003006" : "2006012");
+            importFee.setPaymentCd("棰勪粯璐�".equals(os[4]) ? "1200" : "2100");
+            String billType = "";
+            if ("姣忓勾1鏈�1鏃�".equals(os[5])) {
+                billType = "001";
+            } else if ("姣忔湀1鏃�".equals(os[5])) {
+                billType = "002";
+            } else if ("姣忔棩".equals(os[5])) {
+                billType = "003";
+            } else {
+                billType = "004";
+            }
+            importFee.setBillType(billType);
+            importFee.setPaymentCycle(os[6].toString());
+            importFee.setStartTime(os[7].toString());
+            importFee.setEndTime(os[8].toString());
+            importFee.setComputingFormula(os[9].toString());
+            importFee.setSquarePrice(os[10].toString());
+            importFee.setAdditionalAmount(os[11].toString());
+            importFees.add(importFee);
         }
     }
 
@@ -693,13 +862,16 @@
             if (StringUtil.isNullOrNone(os[0])) {
                 continue;
             }
+            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[2]) ? CommonUtil.getAgeByCertId(idCard) : os[2].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(os[3].toString()));
-            importOwner.setTel(os[4].toString());
-            importOwner.setIdCard(os[5].toString());
+            importOwner.setAge(Integer.parseInt(age));
+            importOwner.setTel(tel);
+            importOwner.setIdCard(idCard);
             owners.add(importOwner);
         }
     }
@@ -733,6 +905,7 @@
         }
     }
 
+
     public RestTemplate getRestTemplate() {
         return restTemplate;
     }

--
Gitblit v1.8.0