From a4b0bbbf38196d77e264f30e71ac878818506390 Mon Sep 17 00:00:00 2001
From: kongdeqiang <123456>
Date: 星期三, 24 十二月 2025 10:46:08 +0800
Subject: [PATCH] fix : 修改出场车位数减2的bug

---
 src/main/java/com/boying/controller/car/PlateServlet3.java |  151 +++++++++++++++++++++-----------------------------
 1 files changed, 64 insertions(+), 87 deletions(-)

diff --git a/src/main/java/com/boying/controller/car/PlateServlet3.java b/src/main/java/com/boying/controller/car/PlateServlet3.java
index 8c5ea62..2c10166 100644
--- a/src/main/java/com/boying/controller/car/PlateServlet3.java
+++ b/src/main/java/com/boying/controller/car/PlateServlet3.java
@@ -41,6 +41,8 @@
 import java.util.Date;
 import java.util.List;
 import java.util.concurrent.TimeUnit;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 
 /**
@@ -151,9 +153,10 @@
     @PostMapping("/status")
     public void heart(String serialno,HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
         Barrier barrier = barrierService.findByCode(serialno);
+        if(barrier == null){
+            return;
+        }
         Park park = parkService.getOneById(barrier.getParkId());
-       // Park park = parkService.getById(barrier.getParkId());
-       // String redis = redisTemplate.opsForValue().get("park_up_" + park.getId());
         String redisnum = redisTemplate.opsForValue().get("car_park_" + park.getId());
         if(StringUtils.isBlank(redisnum)){
             redisnum = "0";
@@ -207,43 +210,43 @@
                 if(barrier.getType() == 0){
                     OutPark outPark = outParkService.count4(barrier.getId());
                     if(outPark!=null){
-                        if(barrier.getType() == 0){
-                            int i = Integer.parseInt(redisnum);
-                            i--;
-                            if(i<0){
-                                String s= "2."+outPark.getCarNo()+"缂磋垂瀹屾垚锛屽満鍐呭仠杞︽暟涓�"+i+"\n";
-                                writeTxt2(s);
-                                redisTemplate.opsForValue().set("car_park_" + park.getId(),"0",30, TimeUnit.DAYS);
-                                redisTemplate.opsForValue().set("park_up_" + park.getId(),"true",30, TimeUnit.DAYS);
-                            }else {
-                                String s= "2."+outPark.getCarNo()+"缂磋垂瀹屾垚锛屽満鍐呭仠杞︽暟涓�"+i+"\n";
-                                writeTxt2(s);
-                                redisTemplate.opsForValue().set("car_park_" + park.getId(),Integer.toString(i),30, TimeUnit.DAYS);
-                                redisTemplate.opsForValue().set("park_up_" + park.getId(),"true",30, TimeUnit.DAYS);
-                            }
+                        int i = Integer.parseInt(redisnum);
+                        i--;
+                        if(i<=0){
+                            String s= "2."+outPark.getCarNo()+"缂磋垂瀹屾垚锛屽満鍐呭仠杞︽暟涓�"+i+"\n";
+                            writeTxt2(s);
+                            redisTemplate.opsForValue().set("car_park_" + park.getId(),"0",30, TimeUnit.DAYS);
+                            redisTemplate.opsForValue().set("park_up_" + park.getId(),"true",30, TimeUnit.DAYS);
+                        }else {
+                            String s= "2."+outPark.getCarNo()+"缂磋垂瀹屾垚锛屽満鍐呭仠杞︽暟涓�"+i+"\n";
+                            writeTxt2(s);
+                            redisTemplate.opsForValue().set("car_park_" + park.getId(),Integer.toString(i),30, TimeUnit.DAYS);
+                            redisTemplate.opsForValue().set("park_up_" + park.getId(),"true",30, TimeUnit.DAYS);
                         }
                         outPark.setStatus2(1);
                         outParkService.saveOrUpdate(outPark);
-                        easyOpen(request,response);
+
                         OutParkLog byOutPark = outParkLogService.getByOutPark(outPark.getCarNo(), outPark.getId());
                         byOutPark.setOpenTime(LocalDateTime.now());
                         outParkLogService.saveOrUpdate(byOutPark);
                         enterParkService.deleteByCarNo(outPark.getCarNo(), barrier.getParkId());
                         redisTemplate.delete("outPark-"+outPark.getBarrierId());
+
+                        easyOpen(request,response);
+
+                    }else {
+                        boolean out = barrierService.getDateDifOut(barrier.getId());
+                        if(out){
+                            outLedShowDefault(request,response);
+                        }
+                    }
+                }else {
+                    boolean in = barrierService.getDateDifIn(park.getId());
+                    if(in){
+                        inLedShowDefault(park.getId(),request,response);
                     }
                 }
 
-            }
-            if(barrier.getType() == 1){
-                boolean in = barrierService.getDateDifIn(park.getId());
-                if(in){
-                    inLedShowDefault(park.getId(),request,response);
-                }
-            }else if(barrier.getType() == 0){
-                boolean out = barrierService.getDateDifOut(barrier.getId());
-                if(out){
-                    outLedShowDefault(request,response);
-                }
             }
         }else {
             easyNoOpen(request,response);
@@ -364,6 +367,15 @@
     @PostMapping("/inParkByPhone" )
     @ResponseBody
     public Object inParkByPhone( EnterPark enterPark){
+        if(redisTemplate.hasKey("PHONE_"+enterPark.getParkId() + "_" + enterPark.getCarNo())){
+            return R.failed(null,"璇锋眰棰戠箒");
+        }
+        Pattern pattern = Pattern.compile("^1[3-9]\\d{9}$");
+        Matcher matcher = pattern.matcher(enterPark.getCarNo());
+        System.out.println();
+        if(matcher.matches()==false){
+            return R.failed(null,"杈撳叆闈炴硶鏁版嵁");
+        }
         Barrier barrier = barrierService.getById(enterPark.getBarrierId());
         if(barrier!=null){
             String num = redisTemplate.opsForValue().get("car_park_" +  barrier.getParkId());
@@ -386,6 +398,7 @@
                     return R.failed("鏈煡璇㈠埌杞﹁締瀛樺湪");
                 }else {
                     if(one.getCarNo().equals("_鏃燺") || one.getCarNo().equals("鏃犵墝杞�")){
+                        redisTemplate.opsForValue().set("PHONE_"+enterPark.getParkId() + "_" + enterPark.getCarNo(),"true",2,TimeUnit.SECONDS);
                         enterPark.setCreateTime(LocalDateTime.now());
 //                        QueryWrapper<Ticket> wrapper = new QueryWrapper<>();
 //                        wrapper.lambda()
@@ -399,6 +412,7 @@
                         enterPark.setIsPay(0);
                         enterPark.setPrice(0);
                         enterParkService.deleteByCarNo(enterPark.getCarNo(),enterPark.getParkId());
+                        enterParkService.deleteByCarNo(one.getCarNo(),enterPark.getParkId());
                         enterParkService.save(enterPark);
                         barrier.setType2(1);
                         String jsonValue = JSON.toJSONString(barrier);
@@ -421,12 +435,23 @@
     @PostMapping("/outParkByPhone" )
     @ResponseBody
     public Object outParkByPhone(String code2,String carNo){
+        Pattern pattern = Pattern.compile("^1[3-9]\\d{9}$");
+        Matcher matcher = pattern.matcher(carNo);
+        System.out.println();
+        if(matcher.matches()==false){
+            return R.failed(null,"杈撳叆闈炴硶鏁版嵁");
+        }
         Barrier byCode2 = barrierService.findByCode2(code2);
         QueryWrapper<EnterPark> wrapper =new QueryWrapper<>();
         wrapper.lambda()
                 .eq(EnterPark::getParkId,byCode2.getParkId())
-                .eq(EnterPark::getCarNo,carNo);
-        EnterPark one = enterParkService.getOne(wrapper);
+                .eq(EnterPark::getCarNo,carNo)
+                .orderByDesc(EnterPark::getId);
+        List<EnterPark> list = enterParkService.list(wrapper);
+        EnterPark one = null;
+        if(list !=null && list.size()>0){
+            one = list.get(0);
+        }
         if(one != null){
             double money = 0.0;
             String toDayHrMinSec = null;
@@ -620,7 +645,6 @@
         if(all.size() >0){
             for(WhiteList w : all){
                 if(w.getType()==0){
-                    outLedShowYueZu(barrier.getCarNo(),"鏈堢杞�",parkId,request,response,0);
                     OutPark byCarNoAndBarrierId = outParkService.findByCarNoAndBarrierId(carNo, barrierId);
                     byCarNoAndBarrierId.setStatus(2);
                     byCarNoAndBarrierId.setStatus2(1);
@@ -628,8 +652,8 @@
                     barrierService.saveOrUpdate(barrier);
                     String jsonValue2 = JSON.toJSONString(barrier);
                     redisTemplate.opsForValue().set("barrier-"+barrier.getCode(), jsonValue2);
-                    String jsonValue = JSON.toJSONString(byCarNoAndBarrierId);
-                    redisTemplate.opsForValue().set("outPark_dif_"+ barrierId, jsonValue);
+
+                    outLedShowYueZu(outPark,barrier.getCarNo(),"鏈堢杞�",parkId,request,response,0);
                     return 0.0;
                 }else{
                     if(StringUtils.isNotBlank(w.getParkIds())){
@@ -639,7 +663,6 @@
                             for (String s : split) {
                                 int pid = Integer.parseInt(s);
                                 if(pid == outPark.getParkId() && System.currentTimeMillis()<w.getEndTime().getTime()){
-                                    outLedShowYueZu(barrier.getCarNo(),"鏈堢杞�",parkId,request,response,0);
                                     OutPark byCarNoAndBarrierId = outParkService.findByCarNoAndBarrierId(carNo, barrierId);
                                     byCarNoAndBarrierId.setStatus(2);
                                     byCarNoAndBarrierId.setStatus2(1);
@@ -647,8 +670,8 @@
                                     barrierService.saveOrUpdate(barrier);
                                     String jsonValue2 = JSON.toJSONString(barrier);
                                     redisTemplate.opsForValue().set("barrier-"+barrier.getCode(), jsonValue2);
-                                    String jsonValue = JSON.toJSONString(byCarNoAndBarrierId);
-                                    redisTemplate.opsForValue().set("outPark_dif_"+ barrierId, jsonValue);
+
+                                    outLedShowYueZu(outPark,barrier.getCarNo(),"鏈堢杞�",parkId,request,response,0);
                                     return 0.0;
                                 }
                             }
@@ -860,51 +883,18 @@
                 if(timeStamp.contains("璁板綍寮傚父")){
                     OutPark by5min = outParkService.findBy5min(carNo, parkId, LocalDateTime.now());
                     if(by5min != null){
+                        enterParkService.deleteByCarNo(carNo, parkId);
                         //寮�闂�
                         open(request,response,data1);
-                        enterParkService.deleteByCarNo(carNo, parkId);
-                        redisTemplate.opsForValue().set("park_change_in_"+parkId,"true",1, TimeUnit.DAYS);
-                        int i = Integer.parseInt(redisnum);
-                        i--;
-                        if(i<0){
-                            String s= "2."+carNo+"锛屽満鍐呭仠杞︽暟涓�0\n";
-                            writeTxt2(s);
-                            redisTemplate.opsForValue().set("car_park_" + parkId,"0",30, TimeUnit.DAYS);
-                            redisTemplate.opsForValue().set("park_up_" + parkId,"true",30, TimeUnit.DAYS);
-                        }else {
-                            String s= "2."+carNo+"锛屽満鍐呭仠杞︽暟涓�"+i+"\n";
-                            writeTxt2(s);
-                            redisTemplate.opsForValue().set("car_park_" + parkId,Integer.toString(i),30, TimeUnit.DAYS);
-                            redisTemplate.opsForValue().set("park_up_" + parkId,"true",30, TimeUnit.DAYS);
-                        }
                     }else {
                         noOpen(request,response,data1);
                     }
                 }else {
-                    //寮�闂�
-                    open(request,response,data1);
-
                     //缂撳瓨鍦╮edis閲�,蹇冭烦鎺ュ彛鍘绘姮鏉�
                     String jsonValue = JSON.toJSONString(outPark);
                     redisTemplate.opsForValue().set("outPark-"+outPark.getBarrierId(), jsonValue);
-
-                    //enterParkService.deleteByCarNo(carNo, parkId);
                     redisTemplate.opsForValue().set("park_change_in_"+parkId,"true",1, TimeUnit.DAYS);
-//                    int i = Integer.parseInt(redisnum);
-//                    i--;
-//                    if(i<0){
-//                        String s= "2."+carNo+"锛屽満鍐呭仠杞︽暟涓�0\n";
-//                        writeTxt2(s);
-//                        redisTemplate.opsForValue().set("car_park_" + parkId,"0",30, TimeUnit.DAYS);
-//                        redisTemplate.opsForValue().set("park_up_" + parkId,"true",30, TimeUnit.DAYS);
-//                    }else {
-//                        String s= "2."+carNo+"锛屽満鍐呭仠杞︽暟涓�"+i+"\n";
-//                        writeTxt2(s);
-//                        redisTemplate.opsForValue().set("car_park_" + parkId,Integer.toString(i),30, TimeUnit.DAYS);
-//                        redisTemplate.opsForValue().set("park_up_" + parkId,"true",30, TimeUnit.DAYS);
-//                    }
                 }
-
             }
         }else {
             noOpen(request,response,data1);
@@ -912,7 +902,7 @@
 
     }
 
-    public void outLedShowYueZu(String carNo,String text,Integer parkId,HttpServletRequest request, HttpServletResponse response,int type) throws ServletException, IOException{
+    public void outLedShowYueZu(OutPark outPark,String carNo,String text,Integer parkId,HttpServletRequest request, HttpServletResponse response,int type) throws ServletException, IOException{
         String redisnum = redisTemplate.opsForValue().get("car_park_" + parkId);
         LedBean ledBean = new LedBean();
         ledBean.setcolor1(0);
@@ -934,23 +924,10 @@
         String data1 = Base64.getMimeEncoder().encodeToString(dataX) + "=";
         data1 = data1.replaceAll("\r\n", "");
         if(type == 0){
-            //寮�闂�
-            open(request,response,data1);
-            enterParkService.deleteByCarNo(carNo,parkId);
+            //缂撳瓨鍦╮edis閲�,蹇冭烦鎺ュ彛鍘绘姮鏉�
+            String jsonValue = JSON.toJSONString(outPark);
+            redisTemplate.opsForValue().set("outPark-"+outPark.getBarrierId(), jsonValue);
             redisTemplate.opsForValue().set("park_change_in_"+parkId,"true",1, TimeUnit.DAYS);
-            int i = Integer.parseInt(redisnum);
-            i--;
-            if(i<0){
-                String s= "2."+carNo+"锛屽満鍐呭仠杞︽暟涓�0\n";
-                writeTxt2(s);
-                redisTemplate.opsForValue().set("car_park_" + parkId,"0",30, TimeUnit.DAYS);
-                redisTemplate.opsForValue().set("park_up_" + parkId,"true",30, TimeUnit.DAYS);
-            }else {
-                String s= "2."+carNo+"锛屽満鍐呭仠杞︽暟涓�"+i+"\n";
-                writeTxt2(s);
-                redisTemplate.opsForValue().set("car_park_" + parkId,Integer.toString(i),30, TimeUnit.DAYS);
-                redisTemplate.opsForValue().set("park_up_" + parkId,"true",30, TimeUnit.DAYS);
-            }
         }else {
             noOpen(request,response,data1);
         }

--
Gitblit v1.9.1