kongdeqiang
2022-09-26 18087f533cd48ddb9f972c0848ffe920ec58ee8e
src/main/java/com/boying/controller/car/PlateServlet2.java
@@ -5,10 +5,7 @@
import com.boying.common.SystemConfigProperties;
import com.boying.common.util.DateUtil;
import com.boying.common.util.StringUtil;
import com.boying.entity.Barrier;
import com.boying.entity.EnterPark;
import com.boying.entity.OutPark;
import com.boying.entity.Ticket;
import com.boying.entity.*;
import com.boying.service.*;
import com.google.gson.JsonIOException;
import com.google.gson.JsonObject;
@@ -16,6 +13,7 @@
import com.google.gson.JsonSyntaxException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -33,6 +31,7 @@
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.TimeUnit;
import static com.boying.common.util.DateUtil.getMinute;
@@ -45,6 +44,10 @@
   private static final long serialVersionUID = 1L;
   @Autowired
   private SystemConfigProperties systemConfigProperties;
   @Autowired
   private StringRedisTemplate redisTemplate;
   @Autowired
   private ParkService parkService;
   /**
    * 回复开闸
@@ -81,9 +84,12 @@
   @PostMapping("/status")
   public void heart(String serialno,HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
      Barrier barrier = barrierService.findByCode(serialno);
      Park park = (Park)parkService.findById(barrier.getParkId());
      String redis = redisTemplate.opsForValue().get("park_up_" + park.getId());
      if(StringUtil.isNullOrEmpty(redis) || redis.equals("false")){
         return;
      }
      if(barrier!=null){
         if(barrier.getType2()==1){
            open(request,response);
@@ -112,6 +118,7 @@
   @PostMapping("/PlateServlet")
   protected void info(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      String s= "";
      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd_HH:mm:ss");
      BufferedReader reader = new BufferedReader(new InputStreamReader(request.getInputStream(),"UTF-8"));
      String str = "";
      String lineStr = "";
@@ -162,7 +169,8 @@
            }
            System.out.println("编号:"+serialno+"设备识别到了:"+license);
            s+="车牌号为:"+license+",serialno为:"+code+"\n";
            String format = sdf.format(new Date());
            s+= format+",车牌号为:"+license+",serialno为:"+code+"。  ";
            Barrier barrier = barrierService.findByCode(code);
            if(barrier==null){
@@ -170,11 +178,11 @@
            }else{
               if(barrier.getType()==0){
                  outPark(license, barrier.getId(), barrier.getParkId());
                  s+=license+"保存出场记录\n";
                  s+=license+"-保存出场记录\n";
               }else{
                  open(request, response);//抬杆
                  enterPark(license,barrier.getId(),barrier.getParkId());
                  s+=license+"保存入场记录\n";
                  s+=license+"-保存入场记录\n";
               }
            }
         writeTxt(s);
@@ -182,14 +190,20 @@
      }
      catch (JsonIOException e) {
         System.out.println("无入场记录");
         s+=" ,查询场内记录异常";
           e.printStackTrace();
         writeTxt(s);
       }
      catch (JsonSyntaxException e) {
         System.out.println("无入场记录");
         s+=" ,查询场内记录异常";
           e.printStackTrace();
         writeTxt(s);
       }
      catch (Exception e) {
         System.out.println("无入场记录");
         s+=" ,查询场内记录异常";
         writeTxt(s);
      }
   }
@@ -225,7 +239,22 @@
   private CostRuleService costRuleService;
   public void enterPark(String carNo,Long barrierId,Long parkId) {
      Park park = (Park)parkService.findById(parkId);
      int num = 0;
      String s = redisTemplate.opsForValue().get("car_park_" + parkId);
      if(park != null){
         num = park.getNum();
         if(s !=null){
            if(Integer.parseInt(s) >= num){
               redisTemplate.opsForValue().set("park_up_" + parkId,"false",30, TimeUnit.DAYS);
               return;
            }
         }else {
            s= "0";
            redisTemplate.opsForValue().set("car_park_" + parkId,s,30, TimeUnit.DAYS);
            redisTemplate.opsForValue().set("park_up_" + parkId,"true",30, TimeUnit.DAYS);
         }
      }
      enterParkService.deleteByCarNo(carNo,parkId);
      EnterPark enterPark = new EnterPark();
      enterPark.setCreateTime(new Date());
@@ -249,6 +278,9 @@
         enterPark.setStatus(1);//发现有违章
      }
      enterParkService.save(enterPark);
      int i = Integer.parseInt(s);
      i++;
      redisTemplate.opsForValue().set("car_park_" + parkId,Integer.toString(i),30, TimeUnit.DAYS);
      Barrier barrier = (Barrier) barrierService.findById(barrierId);
      barrier.setType2(1);
@@ -265,10 +297,11 @@
      EnterPark enterPark = enterParkService.findByCarNo(carNo).get(0);
      if(enterPark==null){
         String s1 = "未发现入场车辆:"+carNo;
         System.out.println(carNo+"未发现场内车辆");
      }else{
         outPark.setEnterTime(enterPark.getCreateTime());
      }
      String redis = redisTemplate.opsForValue().get("car_park_" + parkId);
      long l = outPark.getCreateTime().getTime() - enterPark.getCreateTime().getTime();
      outPark.setTime(l/(1000*60));
      double money = 0;
@@ -281,6 +314,15 @@
      outPark.setStatus3(findTicket(carNo));
      outParkService.save(outPark);
      int i = Integer.parseInt(redis);
      i--;
      if(i<0){
         redisTemplate.opsForValue().set("car_park_" + parkId,"0",30, TimeUnit.DAYS);
         redisTemplate.opsForValue().set("park_up_" + parkId,"true",30, TimeUnit.DAYS);
      }else {
         redisTemplate.opsForValue().set("car_park_" + parkId,Integer.toString(i),30, TimeUnit.DAYS);
         redisTemplate.opsForValue().set("park_up_" + parkId,"true",30, TimeUnit.DAYS);
      }
      Barrier barrier = (Barrier) barrierService.findById(barrierId);
      barrier.setCarNo(carNo);