From 7c6e90dcb144f4c2dee4053ef6aa9531c23e5254 Mon Sep 17 00:00:00 2001
From: java110 <928255095@qq.com>
Date: 星期五, 03 九月 2021 03:43:29 +0800
Subject: [PATCH] 优化代码

---
 service-front/src/main/java/com/java110/front/smo/assetImport/impl/ImportFeeDetailSMOImpl.java |  149 +++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 131 insertions(+), 18 deletions(-)

diff --git a/service-front/src/main/java/com/java110/front/smo/assetImport/impl/ImportFeeDetailSMOImpl.java b/service-front/src/main/java/com/java110/front/smo/assetImport/impl/ImportFeeDetailSMOImpl.java
old mode 100644
new mode 100755
index a40cf6f..f90ac5d
--- a/service-front/src/main/java/com/java110/front/smo/assetImport/impl/ImportFeeDetailSMOImpl.java
+++ b/service-front/src/main/java/com/java110/front/smo/assetImport/impl/ImportFeeDetailSMOImpl.java
@@ -5,6 +5,10 @@
 import com.java110.core.component.BaseComponentSMO;
 import com.java110.core.context.IPageData;
 import com.java110.core.factory.GenerateCodeFactory;
+import com.java110.core.smo.ISaveTransactionLogSMO;
+import com.java110.dto.assetImportLog.AssetImportLogDto;
+import com.java110.dto.assetImportLogDetail.AssetImportLogDetailDto;
+import com.java110.dto.fee.FeeDto;
 import com.java110.entity.assetImport.ImportRoomFee;
 import com.java110.entity.component.ComponentValidateResult;
 import com.java110.front.smo.assetImport.IImportFeeDetailSMO;
@@ -48,25 +52,84 @@
     @Autowired
     private RestTemplate restTemplate;
 
+    @Autowired
+    private ISaveTransactionLogSMO saveTransactionLogSMOImpl;
+
     @Override
     public ResponseEntity<String> importExcelData(IPageData pd, MultipartFile uploadFile) throws Exception {
 
         try {
             ComponentValidateResult result = this.validateStoreStaffCommunityRelationship(pd, restTemplate);
 
+            JSONObject paramIn = JSONObject.parseObject(pd.getReqData());
+            Assert.hasKeyAndValue(paramIn, "communityId", "璇锋眰涓湭鍖呭惈灏忓尯");
+            Assert.hasKeyAndValue(paramIn, "objType", "璇锋眰涓湭鍖呭惈璐圭敤瀵硅薄");
             //InputStream is = uploadFile.getInputStream();
 
             Workbook workbook = ImportExcelUtils.createWorkbook(uploadFile);  //宸ヤ綔绨�
 
             List<ImportRoomFee> rooms = new ArrayList<ImportRoomFee>();
-
-            //鑾峰彇妤间俊鎭�
-            getRooms(workbook, rooms);
+            if (FeeDto.PAYER_OBJ_TYPE_ROOM.equals(paramIn.getString("objType"))) {
+                //鑾峰彇妤间俊鎭�
+                getRooms(workbook, rooms);
+            } else {
+                //鑾峰彇妤间俊鎭�
+                getCars(workbook, rooms);
+            }
             // 淇濆瓨鏁版嵁
             return dealExcelData(pd, rooms, result);
         } catch (Exception e) {
             logger.error("瀵煎叆澶辫触 ", e);
             return new ResponseEntity<String>("闈炲父鎶辨瓑锛屾偍濉啓鐨勬ā鏉挎暟鎹湁璇細" + e.getMessage(), HttpStatus.BAD_REQUEST);
+        }
+    }
+
+    private void getCars(Workbook workbook, List<ImportRoomFee> rooms) {
+        Sheet sheet = null;
+        sheet = ImportExcelUtils.getSheet(workbook, "杞﹁締缂磋垂鍘嗗彶");
+        List<Object[]> oList = ImportExcelUtils.listFromSheet(sheet);
+        ImportRoomFee importRoomFee = null;
+        for (int osIndex = 0; osIndex < oList.size(); osIndex++) {
+            Object[] os = oList.get(osIndex);
+            if (osIndex == 0) { // 绗竴琛屾槸 澶撮儴淇℃伅 鐩存帴璺宠繃
+                continue;
+            }
+            if (StringUtil.isNullOrNone(os[0])) {
+                continue;
+            }
+
+            //璐圭敤鍚嶇О娌℃湁濉啓锛岄粯璁よ烦杩�
+            if (StringUtil.isNullOrNone(os[4])) {
+                continue;
+            }
+            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.hasValue(os[6], (osIndex + 1) + "琛岀即璐归噾棰濅笉鑳戒负绌�");
+
+//
+
+            String startTime = excelDoubleToDate(os[3].toString());
+            String endTime = excelDoubleToDate(os[4].toString());
+            String createTime = excelDoubleToDate(os[5].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 鏂囨湰鏍煎紡");
+            Assert.isDate(createTime, DateUtil.DATE_FORMATE_STRING_B, (osIndex + 1) + "琛岀粨鏉熸椂闂存牸寮忛敊璇� 璇峰~鍐橸YYY-MM-DD 鏂囨湰鏍煎紡");
+
+
+            importRoomFee = new ImportRoomFee();
+            importRoomFee.setCarNum(os[0].toString());
+            importRoomFee.setFeeName(os[1].toString());
+            importRoomFee.setCycle(os[2].toString());
+            importRoomFee.setStartTime(startTime);
+            importRoomFee.setEndTime(endTime);
+            importRoomFee.setCreateTime(createTime);
+            importRoomFee.setAmount(os[6].toString());
+            importRoomFee.setRemark(!StringUtil.isNullOrNone(os[7]) ? os[7].toString() : "");
+            rooms.add(importRoomFee);
         }
     }
 
@@ -101,24 +164,45 @@
         data.put("storeId", result.getStoreId());
         data.put("userId", result.getUserId());
         data.put("communityId", result.getCommunityId());
+        AssetImportLogDto assetImportLogDto = new AssetImportLogDto();
+        assetImportLogDto.setSuccessCount(0L);
+        assetImportLogDto.setErrorCount(0L);
+        assetImportLogDto.setCommunityId(result.getCommunityId());
+        assetImportLogDto.setLogType(AssetImportLogDto.LOG_TYPE_HISTORY_FEE_IMPORT);
+        List<AssetImportLogDetailDto> assetImportLogDetailDtos = new ArrayList<>();
+        assetImportLogDto.setAssetImportLogDetailDtos(assetImportLogDetailDtos);
+        try {
+            List<ImportRoomFee> tmpImportRoomFees = new ArrayList<>();
+            for (int roomIndex = 0; roomIndex < roomFees.size(); roomIndex++) {
 
-        List<ImportRoomFee> tmpImportRoomFees = new ArrayList<>();
-        for (int roomIndex = 0; roomIndex < roomFees.size(); roomIndex++) {
+                tmpImportRoomFees.add(roomFees.get(roomIndex));
 
-            tmpImportRoomFees.add(roomFees.get(roomIndex));
+                if (roomIndex % DEFAULT_ADD_FEE_COUNT == 0 && roomIndex != 0) {
 
-            if (roomIndex % DEFAULT_ADD_FEE_COUNT == 0 && roomIndex != 0) {
+                    createRoomFee(pd, tmpImportRoomFees, data, assetImportLogDto);
 
-                createRoomFee(pd, tmpImportRoomFees, data);
-
-                tmpImportRoomFees = new ArrayList<>();
+                    tmpImportRoomFees = new ArrayList<>();
+                }
             }
-        }
-        if (tmpImportRoomFees != null && tmpImportRoomFees.size() > 0) {
 
-            createRoomFee(pd, tmpImportRoomFees, data);
+            if (tmpImportRoomFees != null && tmpImportRoomFees.size() > 0) {
+
+                createRoomFee(pd, tmpImportRoomFees, data, assetImportLogDto);
+            }
+        } finally {
+            //瀛樺叆瀵煎叆鏃ュ織
+            saveImportLog(assetImportLogDto);
         }
         return ResultVo.success();
+    }
+
+    /**
+     * 淇濆瓨鏃ュ織
+     *
+     * @param assetImportLogDto
+     */
+    private void saveImportLog(AssetImportLogDto assetImportLogDto) {
+        saveTransactionLogSMOImpl.saveAssetImportLog(assetImportLogDto);
     }
 
     /**
@@ -127,14 +211,39 @@
      * @param pd
      * @param tmpImportRoomFee
      */
-    private void createRoomFee(IPageData pd, List<ImportRoomFee> tmpImportRoomFee, JSONObject data) {
+    private void createRoomFee(IPageData pd, List<ImportRoomFee> tmpImportRoomFee, JSONObject data, AssetImportLogDto assetImportLogDto) {
+        Long successCount = assetImportLogDto.getSuccessCount();
+        Long failCount = assetImportLogDto.getErrorCount();
 
+        List<AssetImportLogDetailDto> assetImportLogDetailDtos = assetImportLogDto.getAssetImportLogDetailDtos();
+        AssetImportLogDetailDto assetImportLogDetailDto = null;
         JSONArray importRoomFees = JSONArray.parseArray(JSONObject.toJSONString(tmpImportRoomFee));
         data.put("importRoomFees", importRoomFees);
 
         String apiUrl = ServiceConstant.SERVICE_API_URL + "/api/payFeeDetail/importPayFeeDetail";
 
-        this.callCenterService(restTemplate, pd, data.toJSONString(), apiUrl, HttpMethod.POST);
+        ResponseEntity<String> responseEntity = this.callCenterService(restTemplate, pd, data.toJSONString(), apiUrl, HttpMethod.POST);
+
+        if (responseEntity.getStatusCode() != HttpStatus.OK) {
+            failCount += importRoomFees.size();
+            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("鏃�");
+            assetImportLogDetailDtos.add(assetImportLogDetailDto);
+        } else {
+            successCount += importRoomFees.size();
+        }
+
+        assetImportLogDto.setSuccessCount(successCount);
+        assetImportLogDto.setErrorCount(failCount);
     }
 
 
@@ -169,14 +278,17 @@
             Assert.hasValue(os[4], (osIndex + 1) + "琛岀即璐瑰懆鏈熶笉鑳戒负绌�");
             Assert.hasValue(os[5], (osIndex + 1) + "琛屽紑濮嬫椂闂翠笉鑳戒负绌�");
             Assert.hasValue(os[6], (osIndex + 1) + "琛岀粨鏉熸椂闂翠笉鑳戒负绌�");
-            Assert.hasValue(os[7], (osIndex + 1) + "琛岀即璐归噾棰濅笉鑳戒负绌�");
+            Assert.hasValue(os[7], (osIndex + 1) + "琛岀即璐规椂闂翠笉鑳戒负绌�");
+            Assert.hasValue(os[8], (osIndex + 1) + "琛岀即璐归噾棰濅笉鑳戒负绌�");
 
 //
 
             String startTime = excelDoubleToDate(os[5].toString());
             String endTime = excelDoubleToDate(os[6].toString());
+            String createTime = excelDoubleToDate(os[7].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 鏂囨湰鏍煎紡");
+            Assert.isDate(createTime, DateUtil.DATE_FORMATE_STRING_B, (osIndex + 1) + "琛岀粨鏉熸椂闂存牸寮忛敊璇� 璇峰~鍐橸YYY-MM-DD 鏂囨湰鏍煎紡");
 
 
             importRoomFee = new ImportRoomFee();
@@ -187,8 +299,9 @@
             importRoomFee.setCycle(os[4].toString());
             importRoomFee.setStartTime(startTime);
             importRoomFee.setEndTime(endTime);
-            importRoomFee.setAmount(os[7].toString());
-            importRoomFee.setRemark(StringUtil.isNullOrNone(os[8]) ? os[8].toString() : "");
+            importRoomFee.setCreateTime(createTime);
+            importRoomFee.setAmount(os[8].toString());
+            importRoomFee.setRemark(!StringUtil.isNullOrNone(os[9]) ? os[9].toString() : "");
             rooms.add(importRoomFee);
         }
     }

--
Gitblit v1.8.0