From acf352921487e857810a943b008121e33404e9ae Mon Sep 17 00:00:00 2001
From: kongdeqiang <kongdeqiang960204@163.com>
Date: 星期二, 15 四月 2025 16:56:50 +0800
Subject: [PATCH] fix:白名单新增bug
---
src/main/java/com/boying/controller/car/PlateServlet3.java | 160 ++++++++++++++++++++++++++++++++++++++---------------
1 files changed, 114 insertions(+), 46 deletions(-)
diff --git a/src/main/java/com/boying/controller/car/PlateServlet3.java b/src/main/java/com/boying/controller/car/PlateServlet3.java
index b6490e0..dde6393 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;
/**
@@ -132,6 +134,14 @@
out.close();
}
+ protected void easyOpen2(HttpServletRequest request, HttpServletResponse response) throws IOException {
+ response.setContentType("text/json");
+ PrintWriter out = response.getWriter();
+ out.println("{\"Response_AlarmInfoPlate\":{\"ivs_ioctrl\":{\"delay\":1000,\"io\":0,\"value\":2}}}");
+ out.flush();
+ out.close();
+ }
+
protected void easyNoOpen(HttpServletRequest request, HttpServletResponse response) throws IOException {
response.setContentType("text/json");
PrintWriter out = response.getWriter();
@@ -143,6 +153,9 @@
@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());
@@ -224,19 +237,19 @@
redisTemplate.delete("outPark-"+outPark.getBarrierId());
}
}
- 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);
- }
+
+ }
+ 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);
}
@@ -331,8 +344,8 @@
inLedFullShow(code, license,barrier.getParkId(),request,response);
}else {
//led鏄剧ず
- inLedShow(code, license,barrier.getParkId(),request,response);
enterPark(license,barrier.getId(),barrier.getParkId(),fileInfo);
+ inLedShow(code, license,barrier.getParkId(),request,response);
s+=license+"-淇濆瓨鍏ュ満璁板綍\n";
}
}
@@ -356,6 +369,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());
@@ -377,22 +399,26 @@
if(one == null){
return R.failed("鏈煡璇㈠埌杞﹁締瀛樺湪");
}else {
- if(one.getCarNo().equals("鏃犵墝杞�")){
+ 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()
- .eq(Ticket::getCarNo,enterPark.getCarNo())
- .eq(Ticket::getPayStatus,1);
- List<Ticket> tickets = ticketService.list(wrapper);
- if(tickets.size()>0){
- enterPark.setStatus(1);//鍙戠幇鏈夎繚绔�
- }
+// QueryWrapper<Ticket> wrapper = new QueryWrapper<>();
+// wrapper.lambda()
+// .eq(Ticket::getCarNo,enterPark.getCarNo())
+// .eq(Ticket::getPayStatus,1);
+// List<Ticket> tickets = ticketService.list(wrapper);
+// if(tickets.size()>0){
+// enterPark.setStatus(1);//鍙戠幇鏈夎繚绔�
+// }
+ enterPark.setStatus(0);
enterPark.setIsPay(0);
enterPark.setPrice(0);
enterParkService.deleteByCarNo(enterPark.getCarNo(),enterPark.getParkId());
+ enterParkService.deleteByCarNo(one.getCarNo(),enterPark.getParkId());
enterParkService.save(enterPark);
barrier.setType2(1);
- barrierService.updateById(barrier);
+ String jsonValue = JSON.toJSONString(barrier);
+ redisTemplate.opsForValue().set("barrier-"+barrier.getCode(), jsonValue);
return R.ok();
}else {
return R.failed("闈炴硶鎿嶄綔");
@@ -411,12 +437,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;
@@ -464,7 +501,8 @@
String s= "1."+byCode2.getCarNo()+"璇ヨ溅涓嶉渶瑕佺即璐筡n";
writeTxt2(s);
byCode2.setType2(1);
- barrierService.updateById(byCode2);
+ String jsonValue = JSON.toJSONString(byCode2);
+ redisTemplate.opsForValue().set("barrier-"+byCode2.getCode(), jsonValue);
return R.ok(outPark);
}else {
//闇�瑕佺即璐规垨鑰呮湁杩濈珷
@@ -472,6 +510,8 @@
String s= "1."+byCode2.getCarNo()+"璇ヨ溅闇�瑕佺即璐筡n";
writeTxt2(s);
barrierService.updateById(byCode2);
+ String jsonValue = JSON.toJSONString(byCode2);
+ redisTemplate.opsForValue().set("barrier-"+byCode2.getCode(), jsonValue);
return R.ok(outPark);
}
@@ -653,7 +693,7 @@
writeTxt2(s);
String jsonValue = JSON.toJSONString(outPark);
redisTemplate.opsForValue().set("outPark_dif_"+ barrierId, jsonValue);
- outLedShow(barrier.getCode(),barrier.getCarNo(),outPark.getPrice(),toDayHrMinSec,barrier.getParkId(),request,response,0);
+ outLedShow(outPark,barrier.getCode(),barrier.getCarNo(),outPark.getPrice(),toDayHrMinSec,barrier.getParkId(),request,response,0);
}else {
//闇�瑕佺即璐规垨鑰呮湁杩濈珷
System.out.println(outPark.getCarNo()+"璇ヨ溅闇�瑕佺即璐�"+outPark.getPrice());
@@ -665,7 +705,7 @@
outParkLogService.saveOrUpdate(byOutPark);
String jsonValue = JSON.toJSONString(outPark);
redisTemplate.opsForValue().set("outPark_dif_"+ barrierId, jsonValue);
- outLedShow(barrier.getCode(),barrier.getCarNo(),outPark.getPrice(),toDayHrMinSec,barrier.getParkId(),request,response,1);
+ outLedShow(outPark,barrier.getCode(),barrier.getCarNo(),outPark.getPrice(),toDayHrMinSec,barrier.getParkId(),request,response,1);
}
return money;
}
@@ -740,9 +780,9 @@
}
}
}
- if(StringUtils.isBlank(carDay) && !carNo.equals("鏃犺溅鐗�")){
+ if(StringUtils.isBlank(carDay) && !carNo.equals("_鏃燺") && !carNo.equals("鏃犵墝杞�")){
carDay = "娆㈣繋鍏変复";
- }else if(StringUtils.isBlank(carDay) && carNo.equals("鏃犺溅鐗�")){
+ }else if(StringUtils.isBlank(carDay) || carNo.equals("_鏃燺") || carNo.equals("鏃犵墝杞�")){
carDay = "鎷掔粷椹跺叆";
}
@@ -766,7 +806,7 @@
String data1 = Base64.getMimeEncoder().encodeToString(dataX) + "=";
data1 = data1.replaceAll("\r\n", "");
- if(!carNo.equals("鏃犺溅鐗�")){
+ if(!carNo.equals("_鏃燺") && !carNo.equals("鏃犵墝杞�")){
open(request,response,data1);//鍏ュ満寮�闂�
}else {
noOpen(request,response,data1);
@@ -818,7 +858,7 @@
noOpen(request,response,data1);//鍏ュ満寮�闂�
}
- public void outLedShow(String ledId,String carNo,Double price,String timeStamp,Integer parkId,HttpServletRequest request, HttpServletResponse response,int type) throws ServletException, IOException {
+ public void outLedShow(OutPark outPark,String ledId,String carNo,Double price,String timeStamp,Integer parkId,HttpServletRequest request, HttpServletResponse response,int type) throws ServletException, IOException {
String redisnum = redisTemplate.opsForValue().get("car_park_" + parkId);
Park park = parkService.getById(parkId);
LedBean ledBean = new LedBean();
@@ -841,28 +881,55 @@
String data1 = Base64.getMimeEncoder().encodeToString(dataX) + "=";
data1 = data1.replaceAll("\r\n", "");
if(type == 0){
- if(carNo.equals("鏃犺溅鐗�")){
+ if(carNo.equals("_鏃燺") || carNo.equals("鏃犵墝杞�")){
noOpen(request,response,data1);
}else {
if(timeStamp.contains("璁板綍寮傚父")){
- noOpen(request,response,data1);
+ OutPark by5min = outParkService.findBy5min(carNo, parkId, LocalDateTime.now());
+ if(by5min != null){
+ //寮�闂�
+ 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);
- }
+// 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);
+// }
}
}
@@ -896,6 +963,7 @@
if(type == 0){
//寮�闂�
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--;
--
Gitblit v1.9.1