From 9ec0a61f90ac2464eebc643bfe2d93ac9ba6e569 Mon Sep 17 00:00:00 2001
From: cgf <2156125618@qq.com>
Date: 星期六, 23 八月 2025 10:59:18 +0800
Subject: [PATCH] 折扣已完成现有需求2025/08/09

---
 service-job/src/main/java/com/java110/job/importData/adapt/ImportCarHistoryFeeDetailQueueDataAdapt.java |  148 ++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 108 insertions(+), 40 deletions(-)

diff --git a/service-job/src/main/java/com/java110/job/importData/adapt/ImportCarHistoryFeeDetailQueueDataAdapt.java b/service-job/src/main/java/com/java110/job/importData/adapt/ImportCarHistoryFeeDetailQueueDataAdapt.java
index d15b35d..25b6484 100644
--- a/service-job/src/main/java/com/java110/job/importData/adapt/ImportCarHistoryFeeDetailQueueDataAdapt.java
+++ b/service-job/src/main/java/com/java110/job/importData/adapt/ImportCarHistoryFeeDetailQueueDataAdapt.java
@@ -1,13 +1,16 @@
 package com.java110.job.importData.adapt;
 
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.java110.core.factory.GenerateCodeFactory;
 import com.java110.dto.fee.FeeAttrDto;
 import com.java110.dto.fee.FeeConfigDto;
+import com.java110.dto.fee.FeeDetailDto;
 import com.java110.dto.fee.FeeDto;
 import com.java110.dto.importData.ImportRoomFee;
 import com.java110.dto.log.AssetImportLogDetailDto;
 import com.java110.dto.owner.OwnerRoomRelDto;
+import com.java110.fee.api.FeeDiscountApi;
 import com.java110.intf.community.IRoomInnerServiceSMO;
 import com.java110.intf.fee.*;
 import com.java110.intf.user.IOwnerCarInnerServiceSMO;
@@ -17,14 +20,17 @@
 import com.java110.po.fee.FeeAttrPo;
 import com.java110.po.fee.PayFeeDetailPo;
 import com.java110.po.fee.PayFeePo;
+import com.java110.po.payFee.PayFeeDetailDiscountPo;
 import com.java110.utils.constant.StatusConstant;
 import com.java110.utils.util.BeanConvertUtil;
 import com.java110.utils.util.DateUtil;
 import com.java110.utils.util.ListUtil;
 import com.java110.utils.util.StringUtil;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Service;
 
+import java.text.ParseException;
 import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.List;
@@ -37,6 +43,8 @@
 @Service("importCarHistoryFeeDetailQueueData")
 public class ImportCarHistoryFeeDetailQueueDataAdapt extends DefaultImportData implements IImportDataAdapt {
 
+    @Autowired
+    private IPayFeeDetailDiscountNewV1InnerServiceSMO payFeeDetailDiscountNewV1InnerServiceSMOImpl;
 
     @Autowired
     private IImportFeeDetailInnerServiceSMO importFeeDetailInnerServiceSMOImpl;
@@ -50,6 +58,8 @@
     @Autowired
     private IFeeInnerServiceSMO feeInnerServiceSMOImpl;
 
+    @Autowired
+    private FeeDiscountApi feeDiscountApi;
     @Autowired
     private IFeeDetailInnerServiceSMO feeDetailInnerServiceSMOImpl;
 
@@ -85,7 +95,7 @@
         importCarFeeDetails(importRoomFees.get(0).getStoreId(), importRoomFees.get(0).getUserId(), importRoomFees, importRoomFees.get(0).getBatchId());
     }
 
-    private void importCarFeeDetails(String storeId, String userId, List<ImportRoomFee> importCarFees, String batchId) {
+    public void importCarFeeDetails(String storeId, String userId, List<ImportRoomFee> importCarFees, String batchId) {
 
         importCarFees = ownerCarInnerServiceSMOImpl.freshCarIds(importCarFees);
         for (ImportRoomFee importCarFee : importCarFees) {
@@ -109,6 +119,19 @@
      */
     private void importCarFeeDetail(ImportRoomFee importRoomFee, String storeId, String userId, String batchId) {
 
+        PayFeeDetailPo payFeeDetailPo = new PayFeeDetailPo();
+        payFeeDetailPo.setPayOrderId(importRoomFee.getRoomId());
+        payFeeDetailPo.setCycles(importRoomFee.getCycle());
+        payFeeDetailPo.setCreateTime(importRoomFee.getCreateTime());
+        payFeeDetailPo.setCommunityId(importRoomFee.getCommunityId());
+        payFeeDetailPo.setPayOrderId(importRoomFee.getRoomId());
+        int count = feeDetailInnerServiceSMOImpl.queryFeeDetailsCountByVo(payFeeDetailPo);
+
+        if (count > 0) {
+            throw new IllegalStateException("閲嶅鐨勭即璐硅褰�");
+        }
+
+
         FeeConfigDto feeConfigDto = new FeeConfigDto();
         feeConfigDto.setFeeNameEq(importRoomFee.getFeeName().trim());
         feeConfigDto.setCommunityId(importRoomFee.getCommunityId());
@@ -126,46 +149,49 @@
         feeDto.setPayerObjId(importRoomFee.getCarId());
         feeDto.setPayerObjType(FeeDto.PAYER_OBJ_TYPE_CAR);
         List<FeeDto> feeDtos = feeInnerServiceSMOImpl.queryFees(feeDto);
-
         List<PayFeePo> payFeePos = null;
         if (ListUtil.isNull(feeDtos)) {
-            PayFeePo payFeePo = new PayFeePo();
-            payFeePo.setCommunityId(importRoomFee.getCommunityId());
-            payFeePo.setConfigId(feeDto.getConfigId());
-            payFeePo.setPayerObjType(FeeDto.PAYER_OBJ_TYPE_CAR);
-            payFeePo.setStartTime(importRoomFee.getStartTime());
-            payFeePo.setEndTime(importRoomFee.getEndTime());
-            payFeePo.setAmount(importRoomFee.getAmount());
-            payFeePo.setFeeFlag(tmpFeeConfigDto.getFeeFlag());
-            payFeePo.setFeeTypeCd(tmpFeeConfigDto.getFeeTypeCd());
-            payFeePo.setIncomeObjId(storeId);
-            payFeePo.setBatchId(batchId);
-            if (FeeDto.FEE_FLAG_ONCE.equals(tmpFeeConfigDto.getFeeFlag())) {
-                payFeePo.setState(FeeDto.STATE_FINISH);
-            } else {
-                payFeePo.setState(FeeDto.STATE_DOING);
-            }
-            payFeePo.setFeeId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_feeId));
-            payFeePo.setPayerObjId(importRoomFee.getCarId());
-            payFeePo.setUserId(userId);
-            payFeePo.setCreateTime(importRoomFee.getCreateTime());
-            payFeePos = new ArrayList<>();
-            payFeePos.add(payFeePo);
-            feeInnerServiceSMOImpl.saveFee(payFeePos);
-            List<FeeAttrPo> feeAttrsPos = new ArrayList<>();
-            //鏌ヨ涓氫富淇℃伅
-            if (!FeeDto.FEE_FLAG_CYCLE.equals(tmpFeeConfigDto.getFeeFlag())) {
-                feeAttrsPos.add(addFeeAttr(payFeePo, FeeAttrDto.SPEC_CD_ONCE_FEE_DEADLINE_TIME,
-                        importRoomFee.getEndTime()));
-            }
-            feeAttrsPos.add(addFeeAttr(payFeePo, FeeAttrDto.SPEC_CD_OWNER_ID, importRoomFee.getOwnerId()));
-            feeAttrsPos.add(addFeeAttr(payFeePo, FeeAttrDto.SPEC_CD_OWNER_LINK, importRoomFee.getOwnerLink()));
-            feeAttrsPos.add(addFeeAttr(payFeePo, FeeAttrDto.SPEC_CD_OWNER_NAME, importRoomFee.getOwnerName()));
-            feeAttrInnerServiceSMOImpl.saveFeeAttrs(feeAttrsPos);
-            feeDtos = feeInnerServiceSMOImpl.queryFees(feeDto);
+            throw new IllegalArgumentException("涓嶅瓨鍦ㄥ搴旂殑缂磋垂璁板綍");
+//            PayFeePo payFeePo = new PayFeePo();
+//            payFeePo.setCommunityId(importRoomFee.getCommunityId());
+//            payFeePo.setConfigId(feeDto.getConfigId());
+//            payFeePo.setPayerObjType(FeeDto.PAYER_OBJ_TYPE_CAR);
+//            payFeePo.setStartTime(importRoomFee.getStartTime());
+//            payFeePo.setEndTime(importRoomFee.getEndTime());
+//            payFeePo.setAmount(importRoomFee.getAmount());
+//            payFeePo.setFeeFlag(tmpFeeConfigDto.getFeeFlag());
+//            payFeePo.setFeeTypeCd(tmpFeeConfigDto.getFeeTypeCd());
+//            payFeePo.setIncomeObjId(storeId);
+//            payFeePo.setBatchId(batchId);
+//            if (FeeDto.FEE_FLAG_ONCE.equals(tmpFeeConfigDto.getFeeFlag())) {
+//                payFeePo.setState(FeeDto.STATE_FINISH);
+//            } else {
+//                payFeePo.setState(FeeDto.STATE_DOING);
+//            }
+//            payFeePo.setFeeId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_feeId));
+//            payFeePo.setPayerObjId(importRoomFee.getCarId());
+//            payFeePo.setUserId(userId);
+//            payFeePo.setCreateTime(importRoomFee.getCreateTime());
+//            payFeePos = new ArrayList<>();
+//            payFeePos.add(payFeePo);
+//            feeInnerServiceSMOImpl.saveFee(payFeePos);
+//            List<FeeAttrPo> feeAttrsPos = new ArrayList<>();
+//            //鏌ヨ涓氫富淇℃伅
+//            if (!FeeDto.FEE_FLAG_CYCLE.equals(tmpFeeConfigDto.getFeeFlag())) {
+//                feeAttrsPos.add(addFeeAttr(payFeePo, FeeAttrDto.SPEC_CD_ONCE_FEE_DEADLINE_TIME,
+//                        importRoomFee.getEndTime()));
+//            }
+//            feeAttrsPos.add(addFeeAttr(payFeePo, FeeAttrDto.SPEC_CD_OWNER_ID, importRoomFee.getOwnerId()));
+//            feeAttrsPos.add(addFeeAttr(payFeePo, FeeAttrDto.SPEC_CD_OWNER_LINK, importRoomFee.getOwnerLink()));
+//            feeAttrsPos.add(addFeeAttr(payFeePo, FeeAttrDto.SPEC_CD_OWNER_NAME, importRoomFee.getOwnerName()));
+//            feeAttrInnerServiceSMOImpl.saveFeeAttrs(feeAttrsPos);
+//            feeDtos = feeInnerServiceSMOImpl.queryFees(feeDto);
         }
 
         for (FeeDto tmpFeeDto : feeDtos) {
+//            if(tmpFeeDto.getEndTime() < importRoomFee.){
+//
+//            }
             doImportFeeDetail(tmpFeeDto, importRoomFee);
         }
 
@@ -191,6 +217,7 @@
         payFeeDetailPo.setPrimeRate("1.0");
         payFeeDetailPo.setFeeId(tmpFeeDto.getFeeId());
         payFeeDetailPo.setStartTime(importRoomFee.getStartTime());
+        importRoomFee.setPayObjId(payFeeDetailPo.getPayOrderId() != null ? importRoomFee.getPayObjId() : importRoomFee.getRoomId());
         String endTime = importRoomFee.getEndTime();
         //todo 鍛ㄦ湡鎬ц垂鐢ㄦ椂鏃堕棿鑷姩鍔犱竴澶╋紝鍥犱负鐗╀笟缁熻鐨凟xcel 涓�鑸皯涓�澶�
         if (!FeeDto.FEE_FLAG_ONCE.equals(tmpFeeDto.getFeeFlag())) {
@@ -207,7 +234,52 @@
         payFeeDetailPo.setState("1400");
         payFeeDetailPo.setCashierName(importRoomFee.getStaffName());
         payFeeDetailPo.setPayableAmount(importRoomFee.getAmount());
+        payFeeDetailPo.setPayOrderId(payFeeDetailPo.getPayOrderId() !=null ? payFeeDetailPo.getPayOrderId() : importRoomFee.getRoomId());
+        payFeeDetailPo.setbId(importRoomFee.getBatchId());
+
+        PayFeeDetailDiscountPo payFeeDetailDiscount = new PayFeeDetailDiscountPo();
+        ResponseEntity<String> resultVo = null;
+        try {
+            resultVo = feeDiscountApi.computeFeeDiscount(tmpFeeDto.getFeeId(), tmpFeeDto.getCommunityId(), 105, importRoomFee.getPayObjId(),
+                    tmpFeeDto.getPayerObjType(), importRoomFee.getEndTime(), importRoomFee.getEndTime(), importRoomFee.getStartTime(), 1, 20);
+        } catch (ParseException e) {
+            throw new RuntimeException(e);
+        }
+
+
+
+// 2. 浠� ResultVo 涓幏鍙� data 骞跺己杞负鐩爣绫诲瀷
+        if (resultVo != null) {
+            // 鍋囪 data 瀛楁瀛樺偍鐨勬槸 List<ComputeDiscountDto>
+            JSONArray data = (JSONArray) JSONObject.parseObject(resultVo.getBody()).get("data");
+
+            if(data.size() > 0) {
+                JSONObject o = (JSONObject) data.get(0);
+                String discountPrice = o.get("discountPrice").toString();
+                String discountId =  o.get("discountId").toString();
+                payFeeDetailPo.setDiscountAmount(discountPrice);
+                payFeeDetailPo.setReceivableAmount((Double.parseDouble(payFeeDetailPo.getReceivedAmount()) + Double.parseDouble(payFeeDetailPo.getDiscountAmount()))+"");
+                payFeeDetailDiscount.setDiscountId(discountId);
+                payFeeDetailDiscount.setDiscountPrice(discountPrice);
+            }
+        }
+
         int saved = feeDetailInnerServiceSMOImpl.saveFeeDetail(payFeeDetailPo);
+
+        FeeDetailDto feeDetailDto = new FeeDetailDto();
+        feeDetailDto.setDetailId(payFeeDetailPo.getDetailId());
+
+        List<FeeDetailDto> feeDtos = feeDetailInnerServiceSMOImpl.queryFeeDetails(feeDetailDto);
+
+        if (payFeeDetailDiscount.getDiscountId() != null) {
+            payFeeDetailDiscount.setDetailId(payFeeDetailPo.getDetailId());
+            payFeeDetailDiscount.setStatusCd("0");
+            payFeeDetailDiscount.setCommunityId(feeDtos.get(0).getCommunityId());
+            payFeeDetailDiscount.setFeeId(feeDtos.get(0).getFeeId());
+            payFeeDetailDiscount.setDetailDiscountId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_discountId));
+        }
+
+        payFeeDetailDiscountNewV1InnerServiceSMOImpl.savePayFeeDetailDiscountNew(payFeeDetailDiscount);
 
         if (saved < 1) {
             return;
@@ -216,7 +288,6 @@
         if (tmpFeeDto.getEndTime().getTime() >= DateUtil.getDateFromStringB(importRoomFee.getEndTime()).getTime()) {
             return;
         }
-
         //濡傛灉缁撴潫鏃堕棿灏忎簬 缂磋垂缁撴潫鏃堕棿鍒欏欢鏈�
         PayFeePo payFeePo = new PayFeePo();
         payFeePo.setCommunityId(importRoomFee.getCommunityId());
@@ -226,9 +297,6 @@
         if (FeeDto.FEE_FLAG_ONCE.equals(tmpFeeDto.getFeeFlag())) {
             payFeePo.setState(FeeDto.STATE_FINISH);
         }
-
         feeInnerServiceSMOImpl.updateFee(payFeePo);
     }
-
-
 }

--
Gitblit v1.8.0