From cf4f4310b0b392f72d2e29ac7ddff801c760a289 Mon Sep 17 00:00:00 2001
From: cgf <2156125618@qq.com>
Date: 星期四, 25 九月 2025 20:45:07 +0800
Subject: [PATCH] 切割溢胶2025/09/25

---
 service-job/src/main/java/com/java110/job/importData/adapt/ImportHistoryFeeDetailQueueDataAdapt.java |   96 ++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 76 insertions(+), 20 deletions(-)

diff --git a/service-job/src/main/java/com/java110/job/importData/adapt/ImportHistoryFeeDetailQueueDataAdapt.java b/service-job/src/main/java/com/java110/job/importData/adapt/ImportHistoryFeeDetailQueueDataAdapt.java
index bb87efb..00ec98e 100644
--- a/service-job/src/main/java/com/java110/job/importData/adapt/ImportHistoryFeeDetailQueueDataAdapt.java
+++ b/service-job/src/main/java/com/java110/job/importData/adapt/ImportHistoryFeeDetailQueueDataAdapt.java
@@ -288,9 +288,10 @@
                 importRoomFee.setContractId(data.getString("licensePlate"));
                 importRoomFee.setInvoiceNo(data.containsKey("invoiceReceiptNo") && data.getString("invoiceReceiptNo") != null ? "Y" : "N");
                 importRoomFee.setObjType("7777");
-                LocalDateTime startDate = LocalDateTime.parse(importRoomFee.getStartTime(), formatter);
-                LocalDateTime endDate = LocalDateTime.parse(importRoomFee.getEndTime(), formatter);
-                importRoomFee.setCycle(String.valueOf(ChronoUnit.MONTHS.between(startDate, endDate)));
+                importRoomFee.setCycle((DateUtil.dayCompare(
+                        DateUtil.getDateFromStringA(importRoomFee.getStartTime()),
+                        DateUtil.getDateFromStringA(importRoomFee.getEndTime())
+                )) + "");
                 if (new BigDecimal(importRoomFee.getAmount()).doubleValue() < 0){
                     importRoomFee.setCycle("-"+importRoomFee.getCycle());
                 }
@@ -311,9 +312,10 @@
                 importRoomFee.setOpenInv(data.containsKey("invoiceReceiptNo") && data.getString("invoiceReceiptNo") != null ? "Y" : "N");
 //            if(importRoomFee.getPayerObjName())
                 importRoomFee.setObjType("6666");
-                LocalDateTime startDate = LocalDateTime.parse(importRoomFee.getStartTime(), formatter);
-                LocalDateTime endDate = LocalDateTime.parse(importRoomFee.getEndTime(), formatter);
-                importRoomFee.setCycle(String.valueOf(ChronoUnit.MONTHS.between(startDate, endDate)));
+                importRoomFee.setCycle((DateUtil.dayCompare(
+                        DateUtil.getDateFromStringA(importRoomFee.getStartTime()),
+                        DateUtil.getDateFromStringA(importRoomFee.getEndTime())
+                )) + "");
                 if (new BigDecimal(importRoomFee.getAmount()).doubleValue() < 0){
                     importRoomFee.setCycle("-"+importRoomFee.getCycle());
                 }
@@ -330,6 +332,13 @@
                 importRoomFee.setAmount(data.getString("chargeAmount"));
                 importRoomFee.setStaffName(data.getString("charger"));
                 importRoomFee.setOpenInv(data.containsKey("invoiceReceiptNo") && data.getString("invoiceReceiptNo") != null ? "Y" : "N");
+                importRoomFee.setCycle((DateUtil.dayCompare(
+                        DateUtil.getDateFromStringA(importRoomFee.getStartTime()),
+                        DateUtil.getDateFromStringA(importRoomFee.getEndTime())
+                )) + "");
+                if (new BigDecimal(importRoomFee.getAmount()).doubleValue() < 0){
+                    importRoomFee.setCycle("-"+importRoomFee.getCycle());
+                }
 //            if(importRoomFee.getPayerObjName())
                 importRoomFees.add(importRoomFee);
             }
@@ -369,19 +378,45 @@
                     importRoomFees.add(importRoomFee1);
                     importRoomFees.add(importRoomFee2);
                 }
-//                ImportRoomFee importRoomFeeLast = importRoomFees.get(importRoomFees.size()-1);
-//                if (DateUtil.getDateFromStringB(data.getString("chargeEnd").split(" ")[0]).getTime() < DateUtil.getDateFromStringB(assetImportLogDetailDto.getOutTime().split(" ")[0]).getTime() && !assetImportLogDetailDto.getState().equals("1100") && !assetImportLogDetailDto.getState().equals("1300"))
+                if (DateUtil.getDateFromStringB(data.getString("chargeEnd").split(" ")[0]).getTime() > DateUtil.getDateFromStringB(assetImportLogDetailDto.getOutTime().split(" ")[0]).getTime()
+                        && !assetImportLogDetailDto.getState().equals("1100") && !assetImportLogDetailDto.getState().equals("1300")){
+                    ImportRoomFee importRoomFeeLast = importRoomFees.get(importRoomFees.size()-1);
+                    double cycle = Double.parseDouble(importRoomFeeLast.getCycle());
+                    double amount = Double.parseDouble(importRoomFeeLast.getAmount());
+
+                    ImportRoomFee importRoomFeeEnd = (ImportRoomFee) importRoomFeeLast.clone();
+
+                    importRoomFeeLast.setEndTime(assetImportLogDetailDto.getOutTime() + " 23:59:59");
+                    double cycle1 = (DateUtil.dayCompare(
+                            DateUtil.getDateFromStringA(importRoomFeeLast.getStartTime()),
+                            DateUtil.getDateFromStringA(importRoomFeeLast.getEndTime())
+                    ));
+                    double amount1 = amount/cycle * cycle1;
+
+                    importRoomFeeEnd.setStartTime(DateUtil.getAddDayStringB(DateUtil.getDateFromStringB(assetImportLogDetailDto.getOutTime()),1) + " 00:00:00");
+                    importRoomFeeEnd.setCycle(DateUtil.dayCompare(
+                            DateUtil.getDateFromStringA(importRoomFeeEnd.getStartTime()),
+                            DateUtil.getDateFromStringA(importRoomFeeEnd.getEndTime())
+                    ) + "");
+                    importRoomFeeEnd.setAmount(amount - amount1 + "");
+                    importRoomFeeEnd.setState("1900");
+                    importRoomFees.add(importRoomFeeEnd);
+                }
                 importFeeDetails(importRoomFees.get(0).getStoreId(), importRoomFees.get(0).getUserId(), importRoomFees, importRoomFees.get(0).getBatchId());
             }
             if(!(ListUtil.isNull(importCarFees))){
-                if (DateUtil.getDateFromStringB(data.getString("chargeStart").split(" ")[0]).getTime() <= DateUtil.getDateFromStringB(assetImportLogDetailDto.getTakeTime().split(" ")[0]).getTime()){
-                    importRoomFees = importCarFees;
-                    ImportRoomFee importRoomFee1 = importRoomFees.get(0);
-                    ImportRoomFee importRoomFee2 = importRoomFees.get(0);
+                importRoomFees = importCarFees;
+                if (DateUtil.getDateFromStringB(data.getString("chargeStart").split(" ")[0]).getTime() < DateUtil.getDateFromStringB(assetImportLogDetailDto.getTakeTime().split(" ")[0]).getTime() && !assetImportLogDetailDto.getState().equals("1100") && !assetImportLogDetailDto.getState().equals("1300")){
+                    ImportRoomFee original = importRoomFees.get(0);
+                    ImportRoomFee importRoomFee1 = (ImportRoomFee) original.clone(); // 鍏嬮殕鏂板璞�
+                    ImportRoomFee importRoomFee2 = (ImportRoomFee) original.clone(); // 鍏嬮殕鍙︿竴涓柊瀵硅薄
+                    double cycle = (DateUtil.dayCompare(
+                            DateUtil.getDateFromStringA(importRoomFee1.getStartTime()),
+                            DateUtil.getDateFromStringA(importRoomFee1.getEndTime())
+                    )) ;
+                    double amount = Double.parseDouble(importRoomFee1.getAmount());
                     importRoomFees = new ArrayList<>();
                     importRoomFee1.setEndTime(DateUtil.getAddDayStringB(DateUtil.getDateFromStringB(assetImportLogDetailDto.getTakeTime().split(" ")[0]),-1) + " 23:59:59");
-                    double cycle = Double.parseDouble(importRoomFee1.getCycle());
-                    double amount = Double.parseDouble(importRoomFee1.getAmount());
                     importRoomFee1.setCycle((DateUtil.dayCompare(
                             DateUtil.getDateFromStringA(importRoomFee1.getStartTime()),
                             DateUtil.getDateFromStringA(importRoomFee1.getEndTime())
@@ -398,11 +433,32 @@
 
                     importRoomFees.add(importRoomFee1);
                     importRoomFees.add(importRoomFee2);
-                    importCarFeeDetails2(importCarFees.get(0).getStoreId(), importCarFees.get(0).getUserId(), importRoomFees, importCarFees.get(0).getBatchId());
                 }
-                else{
-                    importCarFeeDetails2(importCarFees.get(0).getStoreId(), importCarFees.get(0).getUserId(), importCarFees, importCarFees.get(0).getBatchId());
+                if (DateUtil.getDateFromStringB(data.getString("chargeEnd").split(" ")[0]).getTime() > DateUtil.getDateFromStringB(assetImportLogDetailDto.getOutTime().split(" ")[0]).getTime()
+                        && !assetImportLogDetailDto.getState().equals("1100") && !assetImportLogDetailDto.getState().equals("1300")){
+                    ImportRoomFee importRoomFeeLast = importRoomFees.get(importRoomFees.size()-1);
+                    double cycle = Double.parseDouble(importRoomFeeLast.getCycle());
+                    double amount = Double.parseDouble(importRoomFeeLast.getAmount());
+
+                    ImportRoomFee importRoomFeeEnd = (ImportRoomFee) importRoomFeeLast.clone();
+
+                    importRoomFeeLast.setEndTime(assetImportLogDetailDto.getOutTime() + " 23:59:59");
+                    double cycle1 = (DateUtil.dayCompare(
+                            DateUtil.getDateFromStringA(importRoomFeeLast.getStartTime()),
+                            DateUtil.getDateFromStringA(importRoomFeeLast.getEndTime())
+                    ));
+                    double amount1 = amount/cycle * cycle1;
+
+                    importRoomFeeEnd.setStartTime(DateUtil.getAddDayStringB(DateUtil.getDateFromStringB(assetImportLogDetailDto.getOutTime()),1) + " 00:00:00");
+                    importRoomFeeEnd.setCycle(DateUtil.dayCompare(
+                            DateUtil.getDateFromStringA(importRoomFeeEnd.getStartTime()),
+                            DateUtil.getDateFromStringA(importRoomFeeEnd.getEndTime())
+                    ) + "");
+                    importRoomFeeEnd.setAmount(amount - amount1 + "");
+                    importRoomFeeEnd.setState("1900");
+                    importRoomFees.add(importRoomFeeEnd);
                 }
+                importCarFeeDetails2(importCarFees.get(0).getStoreId(), importCarFees.get(0).getUserId(), importRoomFees, importCarFees.get(0).getBatchId());
             }
         }catch (IllegalStateException e){
             throw new IllegalArgumentException(e.getMessage());
@@ -576,7 +632,7 @@
             }
         }
         feeDto2.setCommunityId(importRoomFee.getCommunityId());
-        if (importRoomFee.getState().equals("1100") || importRoomFee.getState().equals("1300") || importRoomFee.getState().equals("1600")) {
+        if (importRoomFee.getState().equals("1100") || importRoomFee.getState().equals("1300") || importRoomFee.getState().equals("1600") || importRoomFee.getState().equals("1900")) {
 
         }
         else {
@@ -588,7 +644,7 @@
         if (!(importRoomFee.getFrequency().equals("閫�璐�"))) {
             feeDtos.removeIf(feeDto -> "2009001".equals(feeDto.getState()));
         }
-        if(feeDtos.size() == 0 && (importRoomFee.getState() == null || !importRoomFee.getState().equals("1600"))){
+        if(feeDtos.size() == 0 && (importRoomFee.getState() == null || !importRoomFee.getState().equals("1600")|| importRoomFee.getState().equals("1900"))){
             updateImportLogDetailState(importRoomFee.getDetailId(),new IllegalArgumentException("璐圭敤椤�"+importRoomFee.getFeeName()+"涓嶅瓨鍦�"));
 
             throw new IllegalArgumentException("璐圭敤璁板綍"+importRoomFee.getFeeName()+"涓嶅瓨鍦�");
@@ -685,7 +741,7 @@
 //            feeInnerServiceSMOImpl.updateFee(payFeePo);
 //            return;
 //        } else
-            if (importRoomFee.getState() != null && importRoomFee.getState().equals("1600")){
+        if (importRoomFee.getState() != null && (importRoomFee.getState().equals("1600") || importRoomFee.getState().equals("1900"))){
             payFeeDetailPo.setDetailId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_detailId));
             payFeeDetailPo.setReceivableAmount(computeFeeByCycle(tmpFeeDto,importRoomFee)+"");
             payFeeDetailPo.setDiscountAmount("0");

--
Gitblit v1.8.0