From 1dca0b72ef9731bda8b1c55fc2b577fbdf0bce9d Mon Sep 17 00:00:00 2001
From: wuxw <928255095@qq.com>
Date: 星期日, 02 三月 2025 00:23:14 +0800
Subject: [PATCH] 完成运营业主信息 和业主详情显示处理

---
 service-common/src/main/java/com/java110/common/cmd/machineTranslate/MachineUploadCarPaymentCmd.java |   71 +++++++++++++++++++++++++----------
 1 files changed, 50 insertions(+), 21 deletions(-)

diff --git a/service-common/src/main/java/com/java110/common/cmd/machineTranslate/MachineUploadCarPaymentCmd.java b/service-common/src/main/java/com/java110/common/cmd/machineTranslate/MachineUploadCarPaymentCmd.java
index df48c2b..b29511f 100644
--- a/service-common/src/main/java/com/java110/common/cmd/machineTranslate/MachineUploadCarPaymentCmd.java
+++ b/service-common/src/main/java/com/java110/common/cmd/machineTranslate/MachineUploadCarPaymentCmd.java
@@ -7,8 +7,8 @@
 import com.java110.core.event.cmd.Cmd;
 import com.java110.core.event.cmd.CmdEvent;
 import com.java110.core.factory.GenerateCodeFactory;
-import com.java110.dto.CommunityMemberDto;
-import com.java110.dto.carInoutPayment.CarInoutPaymentDto;
+import com.java110.dto.community.CommunityMemberDto;
+import com.java110.dto.payment.CarInoutPaymentDto;
 import com.java110.dto.fee.FeeAttrDto;
 import com.java110.dto.fee.FeeConfigDto;
 import com.java110.dto.fee.FeeDetailDto;
@@ -17,7 +17,7 @@
 import com.java110.dto.machine.MachineDto;
 import com.java110.dto.owner.OwnerCarDto;
 import com.java110.dto.owner.OwnerDto;
-import com.java110.dto.tempCarFeeConfig.TempCarFeeConfigDto;
+import com.java110.dto.fee.TempCarFeeConfigDto;
 import com.java110.intf.common.ICarInoutPaymentV1InnerServiceSMO;
 import com.java110.intf.common.ICarInoutV1InnerServiceSMO;
 import com.java110.intf.common.IMachineInnerServiceSMO;
@@ -30,12 +30,14 @@
 import com.java110.intf.user.IOwnerCarInnerServiceSMO;
 import com.java110.intf.user.IOwnerCarV1InnerServiceSMO;
 import com.java110.po.car.CarInoutPo;
-import com.java110.po.carInoutPayment.CarInoutPaymentPo;
+import com.java110.po.car.CarInoutPaymentPo;
 import com.java110.po.fee.FeeAttrPo;
 import com.java110.po.fee.PayFeeDetailPo;
 import com.java110.po.fee.PayFeePo;
 import com.java110.utils.exception.CmdException;
+import com.java110.utils.lock.DistributedLock;
 import com.java110.utils.util.Assert;
+import com.java110.utils.util.BeanConvertUtil;
 import com.java110.utils.util.DateUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 
@@ -131,6 +133,7 @@
         carInoutDto.setPaId(machineDto.getLocationObjId());
         carInoutDto.setStates(new String[]{
                 CarInoutDto.STATE_IN,
+                CarInoutDto.STATE_PAY,
                 CarInoutDto.STATE_REPAY
         });
         List<CarInoutDto> carInoutDtos = carInoutV1InnerServiceSMOImpl.queryCarInouts(carInoutDto);
@@ -154,18 +157,9 @@
             throw new CmdException("鏇存柊璐圭敤澶辫触");
         }
 
-        CarInoutPo carInoutPo = new CarInoutPo();
-        carInoutPo.setPaId(carInoutDtos.get(0).getPaId());
-        carInoutPo.setInoutId(carInoutDtos.get(0).getInoutId());
-        carInoutPo.setCommunityId(carInoutDtos.get(0).getCommunityId());
-        carInoutPo.setState(CarInoutDto.STATE_PAY);
-        flag = carInoutV1InnerServiceSMOImpl.updateCarInout(carInoutPo);
+        CarInoutPo carInoutPo = updateCarInoutState(reqJson,machineDto,carInoutDtos.get(0));
 
-        if (flag < 1) {
-            throw new CmdException("鏇存柊鍑哄満鏃堕棿澶辫触");
-        }
-
-                //濡傛灉鏈夎垂鐢� 鍒欑即璐�
+        //濡傛灉鏈夎垂鐢� 鍒欑即璐�
         boolean hasFee = hasFeeAndPayFee(carInoutPo, carInoutPaymentPo);
 
         double realCharge = Double.parseDouble(carInoutPaymentPo.getRealCharge());
@@ -202,10 +196,46 @@
         paramIn.put("communityId", carInoutDtos.get(0).getCommunityId());
         paramIn.put("inoutId", carInoutDtos.get(0).getInoutId());
         paramIn.put("ownerId", ownerDtos.get(0).getMemberId());
-        saveTempCarFee(paramIn, machineDto,carInoutDtos.get(0));
+        saveTempCarFee(paramIn, machineDto, carInoutDtos.get(0));
 
         //鍐嶅幓缂磋垂
         hasFeeAndPayFee(carInoutPo, carInoutPaymentPo);
+    }
+
+    private CarInoutPo updateCarInoutState(JSONObject reqJson,MachineDto machineDto,CarInoutDto carInoutDto) {
+        int flag;
+
+        String requestId = DistributedLock.getLockUUID();
+        String key = "updateInoutState_" + carInoutDto.getInoutId();
+        try {
+            DistributedLock.waitGetDistributedLock(key, requestId);
+
+            CarInoutDto newCarInoutDto = new CarInoutDto();
+            newCarInoutDto.setCommunityId(reqJson.getString("communityId"));
+            newCarInoutDto.setCarNum(reqJson.getString("carNum"));
+            newCarInoutDto.setPaId(machineDto.getLocationObjId());
+            newCarInoutDto.setStates(new String[]{
+                    CarInoutDto.STATE_IN,
+                    CarInoutDto.STATE_REPAY
+            });
+            List<CarInoutDto> carInoutDtos = carInoutV1InnerServiceSMOImpl.queryCarInouts(newCarInoutDto);
+            if(carInoutDtos == null || carInoutDtos.size()<1){
+                return BeanConvertUtil.covertBean(carInoutDto,CarInoutPo.class);
+            }
+            CarInoutPo carInoutPo = new CarInoutPo();
+            carInoutPo.setInoutId(carInoutDto.getInoutId());
+            carInoutPo.setPaId(carInoutDto.getPaId());
+            carInoutPo.setCommunityId(carInoutDto.getCommunityId());
+            carInoutPo.setState(CarInoutDto.STATE_PAY);
+            flag = carInoutV1InnerServiceSMOImpl.updateCarInout(carInoutPo);
+            if (flag < 1) {
+                throw new CmdException("鏇存柊鍑哄満鏃堕棿澶辫触");
+            }
+            return carInoutPo;
+        } finally {
+            DistributedLock.releaseDistributedLock(requestId, key);
+        }
+
     }
 
     private boolean hasFeeAndPayFee(CarInoutPo carInoutPo, CarInoutPaymentPo carInoutPaymentPo) {
@@ -232,11 +262,11 @@
 
         PayFeeDetailPo payFeeDetailPo = new PayFeeDetailPo();
         payFeeDetailPo.setDetailId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_detailId));
-        if(CarInoutPaymentDto.PAY_TYPE_CRASH.equals(carInoutPaymentPo.getPayType())) {
+        if (CarInoutPaymentDto.PAY_TYPE_CRASH.equals(carInoutPaymentPo.getPayType())) {
             payFeeDetailPo.setPrimeRate(FeeDetailDto.PRIME_REATE_CRASH);
-        }else if(CarInoutPaymentDto.PAY_TYPE_WECHAT.equals(carInoutPaymentPo.getPayType())){
+        } else if (CarInoutPaymentDto.PAY_TYPE_WECHAT.equals(carInoutPaymentPo.getPayType())) {
             payFeeDetailPo.setPrimeRate(FeeDetailDto.PRIME_REATE_WECHAT_QRCODE);
-        }else{
+        } else {
             payFeeDetailPo.setPrimeRate(FeeDetailDto.PRIME_REATE_ALI_QRCODE);
         }
         FeeDto feeDto = feeDtos.get(0);
@@ -255,8 +285,7 @@
         return true;
     }
 
-    private void saveTempCarFee(JSONObject reqJson, MachineDto machineDto,CarInoutDto carInoutDto) {
-
+    private void saveTempCarFee(JSONObject reqJson, MachineDto machineDto, CarInoutDto carInoutDto) {
 
 
         //鍒涘缓璐圭敤

--
Gitblit v1.8.0