From b6184e2ddf3db37a94f7efb3b619bbc64642a292 Mon Sep 17 00:00:00 2001
From: chengf <cgf12138@163.com>
Date: 星期二, 27 一月 2026 18:12:48 +0800
Subject: [PATCH] Z四

---
 service-api/src/main/java/com/java110/api/importData/adapt/ImportPropertyWhiteListfFlowAdapt.java |  206 ++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 169 insertions(+), 37 deletions(-)

diff --git a/service-api/src/main/java/com/java110/api/importData/adapt/ImportPropertyWhiteListfFlowAdapt.java b/service-api/src/main/java/com/java110/api/importData/adapt/ImportPropertyWhiteListfFlowAdapt.java
index 83890cf..a3f299d 100644
--- a/service-api/src/main/java/com/java110/api/importData/adapt/ImportPropertyWhiteListfFlowAdapt.java
+++ b/service-api/src/main/java/com/java110/api/importData/adapt/ImportPropertyWhiteListfFlowAdapt.java
@@ -4,10 +4,13 @@
 import com.java110.api.importData.DefaultImportDataAdapt;
 import com.java110.api.importData.IImportDataCleaningAdapt;
 import com.java110.dto.PropertyWhiteListFlowDto;
+import com.java110.dto.community.CommunityDto;
 import com.java110.dto.importData.ImportRoomFee;
 import com.java110.dto.system.ComponentValidateResult;
+import com.java110.intf.community.ICommunityInnerServiceSMO;
 import com.java110.intf.fee.IPayFeeBatchV1InnerServiceSMO;
 import com.java110.intf.user.IUserInnerServiceSMO;
+import com.java110.po.meter.MeterWaterPo;
 import com.java110.utils.util.Assert;
 import com.java110.utils.util.DateUtil;
 import com.java110.utils.util.ImportExcelUtils;
@@ -17,10 +20,12 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.Calendar;
 import java.util.List;
 
-@Service("importPropertyWhiteListfFlowDataCleaning")
+@Service("importPropertyWhiteListFlowDataCleaning")
 public class ImportPropertyWhiteListfFlowAdapt extends DefaultImportDataAdapt implements IImportDataCleaningAdapt {
 
 
@@ -29,6 +34,9 @@
 
     @Autowired
     private IUserInnerServiceSMO userInnerServiceSMOImpl;
+
+    @Autowired
+    private ICommunityInnerServiceSMO communityInnerServiceSMOImpl;
 
 
     @Override
@@ -45,51 +53,83 @@
         return whiteLists;
     }
 
+
+    public String getCommunityId(Object[] os) {
+        CommunityDto d = new CommunityDto();
+        d.setCommunityCode(defaultValue(os[1]));
+        d.setName(defaultValue(os[2]));
+        List<CommunityDto> communityDtos = communityInnerServiceSMOImpl.queryCommunitys(d);
+        if (communityDtos.isEmpty()) {
+            throw new IllegalArgumentException("鏈煡璇㈠埌灏忓尯锛�" + d.getCommunityCode() + d.getName());
+        }
+        else if (communityDtos.size() > 1) {
+            throw new IllegalArgumentException("鏌ヨ灏忓尯寮傚父:瀛樺湪澶氫釜绗﹀悎鏉′欢鐨勫皬鍖猴細" + d.getCommunityCode() + d.getName());
+        }
+        return communityDtos.get(0).getCommunityId();
+    }
+
+
+    public String defaultValue(Object o) {
+        return o == null ? "" : o.toString();
+    }
+
     private void getPropertyWhiteListFlowDtos(Workbook workbook, List<PropertyWhiteListFlowDto> whiteLists) {
         Sheet sheet = null;
-        sheet = ImportExcelUtils.getSheet(workbook, "鐧藉崟娴佹按锛堝綊妗f暟鎹級");
+        sheet = ImportExcelUtils.getSheet(workbook, "鐧藉崟娴佹按  瀵煎叆鏂版ā鏉�");
         List<Object[]> oList = ImportExcelUtils.listFromSheet(sheet);
         PropertyWhiteListFlowDto white = null;
         for (int osIndex = 0; osIndex < oList.size(); osIndex++) {
             Object[] os = oList.get(osIndex);
-            if (osIndex == 0) { // 绗竴琛屾槸 澶撮儴淇℃伅 鐩存帴璺宠繃
+            if (osIndex == 1) { // 绗竴琛屾槸 澶撮儴淇℃伅 鐩存帴璺宠繃
                 continue;
             }
-            if (StringUtil.isNullOrNone(os[0])) {
+            if (StringUtil.isNullOrNone(os[3])) {
                 continue;
             }
-            Assert.hasValue(os[0], (osIndex + 1) + "琛屾敹璐规棩鏈熶笉鑳戒负绌�");
+            Assert.hasValue(os[3], (osIndex + 1) + "琛屾敹璐规棩鏈熶笉鑳戒负绌�");
+
 
             white = new PropertyWhiteListFlowDto();
-            String chargeTime = excelDoubleToDate(os[0].toString());
-            String changeStart = os[21] == null ? null : excelDoubleToDate(os[21].toString());
-            String changeEnd = os[22] == null ? null : excelDoubleToDate(os[22].toString());
-            String bankDepositDate =  os[8] == null ? null : excelDoubleToDate(os[8].toString());
+            String chargeTime = excelDoubleToDate(os[3].toString());
+            String changeStart = defaultValueToDate(os[11]);
+            String changeEnd = defaultValueToDate(os[12]);
+            String bankDepositDate =  defaultValueToDate(os[16]);
             String inputTime = null;
-            if(os[16] != null){
-                inputTime = excelDoubleToDate(os[16].toString().split("\\.")[0]);
+            if(os[24] != null){
+                inputTime = defaultValueToDate(os[24]);
             }
-            white.setChargeTime(chargeTime);
-            white.setInvoiceReceiptNo(os[1] == null ? null : os[1].toString());
-            white.setRoomId(os[2] == null ? null : os[2].toString());
-            white.setPropertyAddress(os[3] == null ? null : os[3].toString());
-            white.setDoorRoomNum(os[4] == null ? null : os[4].toString());
-            white.setSecondaryFeeTypeCd(os[5] == null ? null : os[5].toString());
-            white.setChargeAmount(os[6] == null ? null : os[6].toString());
-            white.setCharger(os[7] == null ? null : os[7].toString());
-            white.setBankDepositDate(bankDepositDate);
-            white.setBankDepositor(os[9] == null ? null : os[9].toString());
-            white.setSplitBankDepositAmount(os[10] == null ? null : os[10].toString());
-            white.setBankDepositAmount(os[11] == null ? null : os[11].toString());
-            white.setCheckAmount(os[12] == null ? null : os[12].toString());
-            white.setWhiteListArchiveNo(os[13] == null ? null : os[13].toString());
-            white.setSheetCount(os[14] == null ? null : os[14].toString());
-            white.setFinancialReceiver(os[15] == null ? null : os[15].toString());
-            white.setInputTime(inputTime);
-            white.setInputPerson(os[17] == null ? null : os[17].toString());
-            white.setOrderNo(os[18] == null ? null : os[18].toString());
-            white.setLicensePlate(os[19] == null ? null : os[19].toString());
-            white.setCategory22(os[20] == null ? null : os[20].toString());
+            white.setChargeTime(chargeTime);//鏀惰垂鏃堕棿
+            white.setInvoiceReceiptNo(defaultValueToDate(os[4]));//鍙戠エ
+            white.setRoomId(os[5] == null ? null : os[5].toString());//鎴垮彿
+            white.setPropertyAddress(os[5] == null ? null : os[5].toString());//涓氫富鍦板潃
+            white.setDoorRoomNum((os[6] == null ? "" : os[6].toString() + "-") + (os[7] == null ? "" : os[7].toString() + "-") + (os[8] == null ? "" : os[8].toString()) );//闂ㄥ競鍙�
+            if (white.getDoorRoomNum().isEmpty()){
+                white.setDoorRoomNum(null);
+            }
+            white.setCommunityId(getCommunityId(os));
+            white.setSecondaryFeeTypeCd(os[13] == null ? null : os[13].toString());//鏀惰垂鍐呭
+            white.setChargeAmount(os[14] == null ? null : os[14].toString());//鏀惰垂閲戦
+            white.setCharger(os[15] == null ? null : os[15].toString());//鏀惰垂浜�
+            white.setBankDepositDate(bankDepositDate);//閾惰瑙f鏃ユ湡
+            white.setBankDepositor(os[17] == null ? null : os[17].toString());//閾惰瑙f浜�
+            white.setSplitBankDepositAmount(os[18] == null ? null : os[18].toString());//鎷嗗垎鍚庨摱琛岃В娆鹃噾棰�
+            white.setBankDepositAmount(os[19] == null ? null : os[19].toString());//閾惰瑙f閲戦
+            white.setCheckAmount(os[20] == null ? null : os[20].toString());//鏍稿閲戦
+            white.setWhiteListArchiveNo(os[21] == null ? null : os[21].toString());//鐧藉崟瀛樻。缂栧彿
+            white.setSheetCount(os[22] == null ? null : os[22].toString());//寮犳暟
+            white.setFinancialReceiver(os[23] == null ? null : os[23].toString());//璐㈠姟鏀惰处浜�
+            white.setInputTime(inputTime);//杈撳叆鏃堕棿
+            white.setInputPerson(os[25] == null ? null : os[25].toString());//杈撳叆浜哄憳
+            white.setOrderNo(os[28] == null ? null : os[28].toString());//鍗曞彿
+            white.setLicensePlate(os[29] == null ? null : os[29].toString());//杞︾墝鍙�
+            white.setCategory22(os[31] == null ? null : os[31].toString());//25椤规敹璐瑰垎绫�
+            white.setRoomNumber(os[9] == null ? null : os[9].toString());
+            white.setReceiptYear(os[27] == null ? null : os[27].toString());
+            white.setReceiptYearMonth(defaultValueToDate(os[26]));
+            white.setPendingProblem(os[30] == null ? null : os[30].toString());
+//            if (os.length > 23){
+//                white.setFrequency(os[23] == null ? null : os[23].toString());
+//            }
             white.setChargeStart(changeStart);
             white.setChargeEnd(changeEnd);
             white.setRow(osIndex + 1);
@@ -97,11 +137,103 @@
         }
     }
 
-    /**
-     * 鐢熸垚鎵规鍙�
-     *
-     * @param reqJson
-     */
+    public static Object[] removeElement(Object[] original, int index) {
+        // 鏍¢獙鍘熸暟缁勬槸鍚︿负绌烘垨绱㈠紩瓒婄晫
+        if (original == null || index < 0 || index >= original.length) {
+            return original; // 鎴栨姏鍑哄紓甯革紝鏍规嵁闇�姹傚鐞�
+        }
 
+        // 鍒涘缓鏂版暟缁勶紙闀垮害 = 鍘熸暟缁勯暱搴� - 1锛�
+        Object[] newArray = new Object[original.length - 1];
 
+        // 澶嶅埗绱㈠紩4涔嬪墠鐨勫厓绱狅紙0~3锛�
+        System.arraycopy(original, 0, newArray, 0, index);
+
+        // 澶嶅埗绱㈠紩4涔嬪悗鐨勫厓绱狅紙5~鏈熬锛夛紝浠庢柊鏁扮粍鐨刬ndex浣嶇疆寮�濮�
+        System.arraycopy(original, index + 1, newArray, index, original.length - index - 1);
+
+        return newArray;
+    }
+//
+//    private void getPropertyWhiteListFlowDtosV1(Workbook workbook, List<PropertyWhiteListFlowDto> whiteLists) {
+//        Sheet sheet = null;
+//        sheet = ImportExcelUtils.getSheet(workbook, "鐧藉崟娴佹按锛堝綊妗f暟鎹級");
+//        List<Object[]> oList = ImportExcelUtils.listFromSheet(sheet);
+//        PropertyWhiteListFlowDto white = 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.hasValue(os[0], (osIndex + 1) + "琛屾敹璐规棩鏈熶笉鑳戒负绌�");
+//
+//            white = new PropertyWhiteListFlowDto();
+//            String chargeTime = excelDoubleToDate(os[0].toString());
+//            String changeStart = os[21] == null ? null : excelDoubleToDate(os[21].toString());
+//            String changeEnd = os[22] == null ? null : excelDoubleToDate(os[22].toString());
+//            String bankDepositDate =  os[8] == null ? null : excelDoubleToDate(os[8].toString());
+//            String inputTime = null;
+//            if(os[16] != null){
+//                inputTime = excelDoubleToDate(os[16].toString().split("\\.")[0]);
+//            }
+//            white.setChargeTime(chargeTime);
+//            white.setInvoiceReceiptNo(os[1] == null ? null : os[1].toString());
+//            white.setRoomId(os[2] == null ? null : os[2].toString());
+//            white.setPropertyAddress(os[3] == null ? null : os[3].toString());
+//            white.setDoorRoomNum(defaultValueToDate(os[4]));
+//            white.setSecondaryFeeTypeCd(os[5] == null ? null : os[5].toString());
+//            white.setChargeAmount(os[6] == null ? null : os[6].toString());
+//            white.setCharger(os[7] == null ? null : os[7].toString());
+//            white.setBankDepositDate(bankDepositDate);
+//            white.setBankDepositor(os[9] == null ? null : os[9].toString());
+//            white.setSplitBankDepositAmount(os[10] == null ? null : os[10].toString());
+//            white.setBankDepositAmount(os[11] == null ? null : os[11].toString());
+//            white.setCheckAmount(os[12] == null ? null : os[12].toString());
+//            white.setWhiteListArchiveNo(os[13] == null ? null : os[13].toString());
+//            white.setSheetCount(os[14] == null ? null : os[14].toString());
+//            white.setFinancialReceiver(os[15] == null ? null : os[15].toString());
+//            white.setInputTime(inputTime);
+//            white.setInputPerson(os[17] == null ? null : os[17].toString());
+//            white.setOrderNo(os[18] == null ? null : os[18].toString());
+//            white.setLicensePlate(os[19] == null ? null : os[19].toString());
+//            white.setCategory22(os[20] == null ? null : os[20].toString());
+//            if (os.length > 23){
+//                white.setFrequency(os[23] == null ? null : os[23].toString());
+//            }
+//            white.setChargeStart(changeStart);
+//            white.setChargeEnd(changeEnd);
+//            white.setRow(osIndex + 1);
+//            whiteLists.add(white);
+//        }
+//    }
+
+    private String defaultValueToDate(Object o) {
+        // 绌哄�肩洿鎺ヨ繑鍥瀗ull锛堝師鏈夐�昏緫锛�
+        if (o == null) {
+            return null;
+        }
+
+        try {
+            // 灏濊瘯灏嗗璞¤浆鎹负鏁板瓧锛堝吋瀹笶xcel鏃ユ湡搴忓垪鍙凤紝濡�44747锛�
+            double excelDateNum = Double.parseDouble(o.toString());
+
+            // Excel 1900鏃ユ湡绯荤粺鍩哄噯锛堜慨姝i棸鏃ug锛屽疄闄呭熀鍑嗘槸1899-12-30锛�
+            Calendar calendar = Calendar.getInstance();
+            calendar.set(1899, 11, 30, 0, 0, 0); // 鏈堜唤浠�0寮�濮嬶紝11浠h〃12鏈�
+            calendar.set(Calendar.MILLISECOND, 0);
+
+            // 璁$畻瀵瑰簲鐨勫疄闄呮棩鏈�
+            calendar.add(Calendar.DAY_OF_MONTH, (int) excelDateNum);
+
+            // 鏍煎紡鍖栦负yyyy-MM-dd鐨勬棩鏈熷瓧绗︿覆
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+            return sdf.format(calendar.getTime());
+        } catch (NumberFormatException e) {
+            // 闈炴暟瀛楃被鍨嬶紝鎵ц鍘熸湁閫昏緫杩斿洖toString()
+            return o.toString();
+        }
+    }
 }

--
Gitblit v1.8.0