kongdeqiang
2022-09-26 18087f533cd48ddb9f972c0848ffe920ec58ee8e
src/main/java/com/boying/controller/car/PlateServlet2.java
@@ -2,12 +2,10 @@
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
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;
@@ -15,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;
@@ -30,7 +29,9 @@
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.TimeUnit;
import static com.boying.common.util.DateUtil.getMinute;
@@ -41,6 +42,12 @@
@RequestMapping("/car")
public class PlateServlet2 extends HttpServlet {
   private static final long serialVersionUID = 1L;
   @Autowired
   private SystemConfigProperties systemConfigProperties;
   @Autowired
   private StringRedisTemplate redisTemplate;
   @Autowired
   private ParkService parkService;
   /**
    * 回复开闸
@@ -77,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);
@@ -107,7 +117,8 @@
    */
   @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 = "";
@@ -153,50 +164,68 @@
            }
            String serialno = jsonInfoPlate.get("serialno").getAsString();//摄像机序列号
            if( license == null || license == "" ) {
            if( serialno == null || serialno == "" ) {
               break;
            }
            System.out.println("编号:"+serialno+"设备识别到了:"+license);
            String format = sdf.format(new Date());
            s+= format+",车牌号为:"+license+",serialno为:"+code+"。  ";
            Barrier barrier = barrierService.findByCode(code);
            if(barrier==null){
               s+="查询道闸为空\n";
            }else{
               if(barrier.getType()==0){
                  outPark(license, barrier.getId(), barrier.getParkId());
                  s+=license+"-保存出场记录\n";
               }else{
                  open(request, response);//抬杆
                  enterPark(license,barrier.getId(),barrier.getParkId());
                  s+=license+"-保存入场记录\n";
               }
            }
         writeTxt(s);
         }while(false);
      }
      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);
      }
   }
   protected void WriteTxt( String path, String txt)
   private void writeTxt( String txt)
   {
      SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
      try
      {
         FileWriter  f = new FileWriter(path);
           BufferedWriter bw=new BufferedWriter(f);
           bw.write(txt);
           bw.close();
         FileWriter f = new FileWriter(systemConfigProperties.getLogPath()+sdf.format(new Date())+".txt",true);
         BufferedWriter bw=new BufferedWriter(f);
         bw.write(txt);
         bw.newLine();
         bw.close();
      }
        catch(Exception e)
        {
        }
      catch(Exception e)
      {
         System.out.println("打印错误");
      }
   }
   @Autowired
   private OutParkService outParkService;
@@ -210,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());
@@ -234,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);
@@ -247,13 +294,14 @@
      outPark.setBarrierId(barrierId);
      outPark.setCreateTime(new Date());
      outPark.setCode(System.currentTimeMillis()+"");
      EnterPark enterPark = enterParkService.findByCarNo(carNo);
      EnterPark enterPark = enterParkService.findByCarNo(carNo).get(0);
      if(enterPark==null){
         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;
@@ -266,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);