kongdeqiang
2023-04-26 8cf6f6c327dc4258c7dc265765552eced8296815
src/main/java/com/boying/controller/car/PlateServlet3.java
@@ -7,13 +7,14 @@
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.boying.common.SystemConfigProperties;
import com.boying.entity.*;
import com.boying.entity.led.LedBean;
import com.boying.entity.led.ResultData;
import com.boying.service.*;
import com.boying.util.DateUtilOther;
import com.boying.util.StringUtil;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import ledshow.CodeUtil;
import ledshow.LedBean;
import ledshow.ResultData;
import lombok.RequiredArgsConstructor;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Controller;
@@ -119,6 +120,14 @@
        out.close();
    }
    protected void easyNoOpen(HttpServletRequest request, HttpServletResponse response) throws IOException {
        response.setContentType("text/json");
        PrintWriter out = response.getWriter();
        out.println("{\"Response_AlarmInfoPlate\":{\"info\":\"error\",\"content\":\"...\",\"is_pay\":\"false\"}}");
        out.flush();
        out.close();
    }
    @PostMapping("/status")
    public void heart(String serialno,HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
        Barrier barrier = barrierService.findByCode(serialno);
@@ -136,9 +145,13 @@
                    int i = Integer.parseInt(redisnum);
                    i--;
                    if(i<0){
                        String s= "2."+barrier.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."+barrier.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);
                    }
@@ -161,9 +174,13 @@
                        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);
                        }
@@ -185,6 +202,8 @@
                }
            }
        }else {
            easyNoOpen(request,response);
        }
    }
    /**
@@ -250,9 +269,9 @@
                System.out.println("查询到道闸为:"+barrier);
                if(barrier==null){
                    s+="查询道闸为空\n";
                    easyNoOpen(request,response);
                }else{
                    if(barrier.getType()==0){
                        //noOpen(request,response);
                        outPark(license, barrier.getId(), barrier.getParkId(),request,response);
                        s+=license+"-保存出场记录\n";
                    }else{
@@ -281,6 +300,7 @@
            System.out.println("无入场记录");
            s+=" ,查询场内记录异常";
            writeTxt(s);
            easyNoOpen(request,response);
        }
    }
@@ -302,26 +322,43 @@
        }
    }
    private void writeTxt2( String txt)
    {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
        try
        {
            FileWriter f = new FileWriter(systemConfigProperties.getLogPath()+sdf.format(new Date())+"LED.txt",true);
            BufferedWriter bw=new BufferedWriter(f);
            bw.write(txt);
            bw.newLine();
            bw.close();
        }
        catch(Exception e)
        {
            System.out.println("打印错误");
        }
    }
    public void enterPark(String carNo,Integer barrierId,Integer parkId) {
        Park park = parkService.getById(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);
            }
        }
//        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.setCarNo(carNo);
@@ -338,9 +375,9 @@
        }
        enterParkService.saveOrUpdate(enterPark);
        Barrier barrier = barrierService.getById(barrierId);
        barrier.setType2(1);
        barrierService.saveOrUpdate(barrier);
//        Barrier barrier = barrierService.getById(barrierId);
//        barrier.setType2(1);
//        barrierService.saveOrUpdate(barrier);
    }
    public double outPark(String carNo,Integer barrierId,Integer parkId,HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
@@ -396,7 +433,7 @@
                    outParkService.saveOrUpdate(byCarNoAndBarrierId);
                    return 0.0;
                }else{
                    if(w.getParkIds()!=null){
                    if(StringUtils.isNotBlank(w.getParkIds())){
                        if(w.getEndTime()!=null){
                            String parkIds = w.getParkIds();
                            String[] split = parkIds.split(",");
@@ -418,10 +455,14 @@
        }
        if(outPark.getPrice()==0&&outPark.getStatus3()==0){
            System.out.println(outPark.getCarNo()+"该车不需要缴费");
            String s= "1."+barrier.getCarNo()+"该车不需要缴费\n";
            writeTxt2(s);
            outLedShow(barrier.getCode(),barrier.getCarNo(),outPark.getPrice(),toDayHrMinSec,barrier.getParkId(),request,response,0);
        }else {
            //需要缴费或者有违章
            System.out.println(outPark.getCarNo()+"该车需要缴费"+outPark.getPrice());
            String s= "1."+barrier.getCarNo()+"该车需要缴费\n";
            writeTxt2(s);
            outLedShow(barrier.getCode(),barrier.getCarNo(),outPark.getPrice(),toDayHrMinSec,barrier.getParkId(),request,response,1);
        }
        barrierService.saveOrUpdate(barrier);
@@ -466,10 +507,12 @@
                carType = "月租车";
            }else {
                //白名单固定停车场车辆
                if(byCarNo.getParkId().equals(barrier.getParkId())){
                if(StringUtils.isNotBlank(byCarNo.getParkIds()) && byCarNo.getParkIds().contains(barrier.getParkId()+"")){
                    carType = "月租车";
                    long l = (byCarNo.getEndTime().getTime() - byCarNo.getStartTime().getTime()) / (24 * 3600 * 1000);
                    carDay = "有效期还有"+l+"天";
                }else {
                    carType = "临时车";
                }
            }
        }
@@ -478,42 +521,26 @@
        }
        LedBean ledBean = new LedBean();
        ledBean.setColor1(0);
        ledBean.setColor2(0);
        ledBean.setColor3(0);
        ledBean.setColor4(0);
        ledBean.setContent1(carNo);
        ledBean.setContent2(carType);
        ledBean.setContent3(carDay);
        ledBean.setContent4("余位:"+i);
        ledBean.setDisMode1(1);
        ledBean.setDisMode2(1);
        ledBean.setDisMode3(1);
        ledBean.setDisMode4(1);
        ledBean.setVoiceContent(carType+","+carNo+","+carDay);
        String s = JSON.toJSONString(ledBean);
        String s1= HttpRequest.post(LEDURL)
                .timeout(5000)
                .body(s)
                .execute()
                .body();
        ResultData resultData = JSON.parseObject(s1,ResultData.class);
        String[] split = resultData.getDatas().split("-");
        String[] dataX = new String[resultData.getLenth()];
        System.arraycopy(split,0,dataX,0,resultData.getLenth());
        String s2 = StringUtil.toStr(dataX);
        byte[] bytes = StringUtil.HexString2Bytes(s2);
        for (byte aByte : bytes) {
            System.out.print(aByte+" ");
        }
        System.out.println();
        String data1 = new String("gb2312");
        data1 = Base64.getMimeEncoder().encodeToString(bytes);
       // String data2 = data1.replace("\n", "");
        String data3  = data1.replaceAll("\r\n", "");
        System.out.println();
        System.out.println(data3);
        open(request,response,data3);//入场开闸
        ledBean.setcolor1(0);
        ledBean.setcolor2(0);
        ledBean.setcolor3(0);
        ledBean.setcolor4(0);
        ledBean.setcontent1(carNo);
        ledBean.setcontent2(carType);
        ledBean.setcontent3(carDay);
        ledBean.setcontent4("余位:"+i);
        ledBean.setdisMode1(0);
        ledBean.setdisMode2(0);
        ledBean.setdisMode3(0);
        ledBean.setdisMode4(0);
        ledBean.setvoiceContent(carType+","+carNo+","+carDay);
        ResultData resultData = CodeUtil.GetResultDataAllLine(ledBean);
        byte[] dataX = new byte[resultData.getlenth()];
        System.arraycopy(resultData.getdatas(),0,dataX,0,resultData.getlenth());
        String data1 = Base64.getMimeEncoder().encodeToString(dataX) + "=";
        data1 = data1.replaceAll("\r\n", "");
        open(request,response,data1);//入场开闸
    }
    public void inLedFullShow(String ledId, String carNo, Integer parkId,HttpServletRequest request, HttpServletResponse response) throws IOException {
@@ -529,37 +556,31 @@
                carType = "月租车";
            }else {
                //白名单固定停车场车辆
                if(byCarNo.getParkId().equals(barrier.getParkId())){
                if(StringUtils.isNotBlank(byCarNo.getParkIds()) && byCarNo.getParkIds().contains(barrier.getParkId()+"")){
                    carType = "月租车";
                    long l = (byCarNo.getEndTime().getTime() - byCarNo.getStartTime().getTime()) / (24 * 3600 * 1000);
                    carDay = "有效期还有"+l+"天";
                }else {
                    carType = "临时车";
                }
            }
        }
        LedBean ledBean = new LedBean();
        ledBean.setColor1(0);
        ledBean.setColor2(0);
        ledBean.setColor3(0);
        ledBean.setColor4(0);
        ledBean.setContent1(carNo);
        ledBean.setContent2(carType);
        ledBean.setContent3("车位已满");
        ledBean.setContent4("请驶离");
        ledBean.setDisMode1(1);
        ledBean.setDisMode2(1);
        ledBean.setDisMode3(1);
        ledBean.setDisMode4(1);
        ledBean.setVoiceContent("车位已满,请驶离");
        String s = JSON.toJSONString(ledBean);
        String s1= HttpRequest.post(LEDURL)
                .timeout(5000)
                .body(s)
                .execute()
                .body();
        ResultData resultData = JSON.parseObject(s1,ResultData.class);
        byte[] dataX = new byte[resultData.getLenth()];
        System.arraycopy(resultData.getDatas(),0,dataX,0,resultData.getLenth());
        ledBean.setcolor1(0);
        ledBean.setcolor2(0);
        ledBean.setcolor3(0);
        ledBean.setcolor4(0);
        ledBean.setcontent1(carNo);
        ledBean.setcontent2(carType);
        ledBean.setcontent3("车位已满");
        ledBean.setcontent4("请驶离");
        ledBean.setdisMode1(0);
        ledBean.setdisMode2(0);
        ledBean.setdisMode3(0);
        ledBean.setdisMode4(0);
        ledBean.setvoiceContent("车位已满,请驶离");
        ResultData resultData = CodeUtil.GetResultDataAllLine(ledBean);
        byte[] dataX = new byte[resultData.getlenth()];
        System.arraycopy(resultData.getdatas(),0,dataX,0,resultData.getlenth());
        String data1 = Base64.getMimeEncoder().encodeToString(dataX) + "=";
        data1 = data1.replaceAll("\r\n", "");
@@ -568,40 +589,40 @@
    public void outLedShow(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();
        ledBean.setColor1(0);
        ledBean.setColor2(0);
        ledBean.setColor3(0);
        ledBean.setColor4(0);
        ledBean.setContent1(carNo);
        ledBean.setContent2("停车"+timeStamp);
        ledBean.setContent3("交费"+price+"元");
        ledBean.setContent4("禁止闯杆");
        ledBean.setDisMode1(1);
        ledBean.setDisMode2(1);
        ledBean.setDisMode3(1);
        ledBean.setDisMode4(1);
        ledBean.setVoiceContent(carNo+"停车"+timeStamp+"交费"+price+"元");
        String s = JSON.toJSONString(ledBean);
        String s1= HttpRequest.post(LEDURL)
                .timeout(5000)
                .body(s)
                .execute()
                .body();
        ResultData resultData = JSON.parseObject(s1,ResultData.class);
        byte[] dataX = new byte[resultData.getLenth()];
        System.arraycopy(resultData.getDatas(),0,dataX,0,resultData.getLenth());
        ledBean.setcolor1(0);
        ledBean.setcolor2(0);
        ledBean.setcolor3(0);
        ledBean.setcolor4(0);
        ledBean.setcontent1(carNo);
        ledBean.setcontent2("停车"+timeStamp);
        ledBean.setcontent3("交费"+price+"元");
        ledBean.setcontent4("禁止闯杆");
        ledBean.setdisMode1(0);
        ledBean.setdisMode2(1);
        ledBean.setdisMode3(1);
        ledBean.setdisMode4(0);
        ledBean.setvoiceContent(carNo+"停车"+timeStamp+"交费"+price+"元");
        ResultData resultData = CodeUtil.GetResultDataAllLine(ledBean);
        byte[] dataX = new byte[resultData.getlenth()];
        System.arraycopy(resultData.getdatas(),0,dataX,0,resultData.getlenth());
        String data1 = Base64.getMimeEncoder().encodeToString(dataX) + "=";
        data1 = data1.replaceAll("\r\n", "");
        if(type == 0){
            //开闸
            open(request,response,data1);
            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);
            }
@@ -614,39 +635,38 @@
    public void outLedShowYueZu(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);
        ledBean.setColor2(0);
        ledBean.setColor3(0);
        ledBean.setColor4(0);
        ledBean.setContent1(carNo);
        ledBean.setContent2(text);
        ledBean.setContent3("减速慢行");
        ledBean.setContent4("欢迎下次光临");
        ledBean.setDisMode1(1);
        ledBean.setDisMode2(1);
        ledBean.setDisMode3(1);
        ledBean.setDisMode4(1);
        ledBean.setVoiceContent(text+carNo+"欢迎下次光临");
        String s = JSON.toJSONString(ledBean);
        String s1= HttpRequest.post(LEDURL)
                .timeout(5000)
                .body(s)
                .execute()
                .body();
        ResultData resultData = JSON.parseObject(s1,ResultData.class);
        byte[] dataX = new byte[resultData.getLenth()];
        System.arraycopy(resultData.getDatas(),0,dataX,0,resultData.getLenth());
        ledBean.setcolor1(0);
        ledBean.setcolor2(0);
        ledBean.setcolor3(0);
        ledBean.setcolor4(0);
        ledBean.setcontent1(carNo);
        ledBean.setcontent2(text);
        ledBean.setcontent3("减速慢行");
        ledBean.setcontent4("欢迎下次光临");
        ledBean.setdisMode1(0);
        ledBean.setdisMode2(0);
        ledBean.setdisMode3(0);
        ledBean.setdisMode4(1);
        ledBean.setvoiceContent(text+carNo+"欢迎下次光临");
        ResultData resultData = CodeUtil.GetResultDataAllLine(ledBean);
        byte[] dataX = new byte[resultData.getlenth()];
        System.arraycopy(resultData.getdatas(),0,dataX,0,resultData.getlenth());
        String data1 = Base64.getMimeEncoder().encodeToString(dataX) + "=";
        data1 = data1.replaceAll("\r\n", "");
        if(type == 0){
            //开闸
            open(request,response,data1);
            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);
            }
@@ -657,28 +677,22 @@
    public void outLedShowDefault(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
        LedBean ledBean = new LedBean();
        ledBean.setColor1(0);
        ledBean.setColor2(0);
        ledBean.setColor3(0);
        ledBean.setColor4(0);
        ledBean.setContent1("一车一杆");
        ledBean.setContent2("减速慢行");
        ledBean.setContent3("无需取卡");
        ledBean.setContent4("扫码缴费");
        ledBean.setDisMode1(1);
        ledBean.setDisMode2(1);
        ledBean.setDisMode3(1);
        ledBean.setDisMode4(1);
        ledBean.setVoiceContent("");
        String s = JSON.toJSONString(ledBean);
        String s1= HttpRequest.post(LEDURL)
                .timeout(5000)
                .body(s)
                .execute()
                .body();
        ResultData resultData = JSON.parseObject(s1,ResultData.class);
        byte[] dataX = new byte[resultData.getLenth()];
        System.arraycopy(resultData.getDatas(),0,dataX,0,resultData.getLenth());
        ledBean.setcolor1(0);
        ledBean.setcolor2(0);
        ledBean.setcolor3(0);
        ledBean.setcolor4(0);
        ledBean.setcontent1("一车一杆");
        ledBean.setcontent2("减速慢行");
        ledBean.setcontent3("无需取卡");
        ledBean.setcontent4("扫码缴费");
        ledBean.setdisMode1(0);
        ledBean.setdisMode2(0);
        ledBean.setdisMode3(0);
        ledBean.setdisMode4(0);
        ledBean.setvoiceContent("");
        ResultData resultData = CodeUtil.GetResultDataAllLine(ledBean);
        byte[] dataX = new byte[resultData.getlenth()];
        System.arraycopy(resultData.getdatas(),0,dataX,0,resultData.getlenth());
        String data1 = Base64.getMimeEncoder().encodeToString(dataX) + "=";
        data1 = data1.replaceAll("\r\n", "");
        noOpen(request,response,data1);
@@ -686,40 +700,42 @@
    public void inLedShowDefault(Integer parkId,HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
        String num = redisTemplate.opsForValue().get("car_park_" +  parkId);
        String con3 = "";
        String con4 = "";
        if(num == null){
            num = "0";
        }
        Park byId = parkService.getById(parkId);
        int i = byId.getNum() - Integer.parseInt(num);
        if(i<0){
        if(i<=0){
            i = 0;
            con3 = "车位已满";
            con4 = "请驶离";
        }else {
            con3 = "排队等候";
            con4 = "余位:"+i;
        }
        LedBean ledBean = new LedBean();
        ledBean.setColor1(0);
        ledBean.setColor2(0);
        ledBean.setColor3(0);
        ledBean.setColor4(0);
        ledBean.setContent1("一车一杆");
        ledBean.setContent2("减速慢行");
        ledBean.setContent3("排队等候");
        ledBean.setContent4("余位:"+i);
        ledBean.setDisMode1(1);
        ledBean.setDisMode2(1);
        ledBean.setDisMode3(1);
        ledBean.setDisMode4(1);
        ledBean.setVoiceContent("");
        String s = JSON.toJSONString(ledBean);
        String s1= HttpRequest.post(LEDURL)
                .timeout(5000)
                .body(s)
                .execute()
                .body();
        ResultData resultData = JSON.parseObject(s1,ResultData.class);
        byte[] dataX = new byte[resultData.getLenth()];
        System.arraycopy(resultData.getDatas(),0,dataX,0,resultData.getLenth());
        ledBean.setcolor1(0);
        ledBean.setcolor2(0);
        ledBean.setcolor3(0);
        ledBean.setcolor4(0);
        ledBean.setcontent1("一车一杆");
        ledBean.setcontent2("减速慢行");
        ledBean.setcontent3(con3);
        ledBean.setcontent4(con4);
        ledBean.setdisMode1(0);
        ledBean.setdisMode2(0);
        ledBean.setdisMode3(0);
        ledBean.setdisMode4(0);
        ledBean.setvoiceContent("");
        ResultData resultData = CodeUtil.GetResultDataAllLine(ledBean);
        byte[] dataX = new byte[resultData.getlenth()];
        System.arraycopy(resultData.getdatas(),0,dataX,0,resultData.getlenth());
        String data1 = Base64.getMimeEncoder().encodeToString(dataX) + "=";
        data1 = data1.replaceAll("\r\n", "");
        noOpen(request,response,data1);
    }
}