From 29082c356872abc0c1208e8b4870d1ba1fa7afe7 Mon Sep 17 00:00:00 2001 From: kongdeqiang <123456> Date: 星期三, 01 三月 2023 18:46:44 +0800 Subject: [PATCH] 增加属性 --- src/main/java/com/boying/controller/car/PlateServlet2.java | 48 +- src/main/java/com/boying/controller/car/PlateServlet3.java | 725 +++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/boying/entity/led/LedBean.java | 20 src/main/java/com/boying/entity/led/ResultData.java | 4 src/main/java/com/boying/entity/LedShow.java | 10 src/main/java/com/boying/util/StringUtil.java | 98 ++++++ 6 files changed, 871 insertions(+), 34 deletions(-) diff --git a/src/main/java/com/boying/controller/car/PlateServlet2.java b/src/main/java/com/boying/controller/car/PlateServlet2.java index fb6ede3..69d9384 100644 --- a/src/main/java/com/boying/controller/car/PlateServlet2.java +++ b/src/main/java/com/boying/controller/car/PlateServlet2.java @@ -11,9 +11,11 @@ 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 com.sun.media.jfxmedia.track.Track; import lombok.RequiredArgsConstructor; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Controller; @@ -24,7 +26,9 @@ import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import javax.sound.sampled.AudioFormat; import java.io.*; +import java.nio.charset.StandardCharsets; import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.LocalDateTime; @@ -51,7 +55,7 @@ private final TicketService ticketService; private final CostRuleService costRuleService; private final WhiteListService whiteListService; - private final String LEDURL = "http://localhost:9988/LedShow/IGetResultDataAllLine"; + private final String LEDURL = "http://192.168.31.212:9988/LedShow/IGetResultDataAllLine"; /** * 鍥炲寮�闂� @@ -498,12 +502,22 @@ .execute() .body(); ResultData resultData = JSON.parseObject(s1,ResultData.class); - byte[] dataX = new byte[resultData.getLength()]; - System.arraycopy(resultData.getDatas(),0,dataX,0,resultData.getLength()); - String data1 = Base64.getMimeEncoder().encodeToString(dataX) + "="; - data1 = data1.replaceAll("\r\n", ""); - - open(request,response,data1);//鍏ュ満寮�闂� + 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);//鍏ュ満寮�闂� } public void inLedFullShow(String ledId, String carNo, Integer parkId,HttpServletRequest request, HttpServletResponse response) throws IOException { @@ -548,8 +562,8 @@ .execute() .body(); ResultData resultData = JSON.parseObject(s1,ResultData.class); - byte[] dataX = new byte[resultData.getLength()]; - System.arraycopy(resultData.getDatas(),0,dataX,0,resultData.getLength()); + 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", ""); @@ -579,8 +593,8 @@ .execute() .body(); ResultData resultData = JSON.parseObject(s1,ResultData.class); - byte[] dataX = new byte[resultData.getLength()]; - System.arraycopy(resultData.getDatas(),0,dataX,0,resultData.getLength()); + 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){ @@ -624,8 +638,8 @@ .execute() .body(); ResultData resultData = JSON.parseObject(s1,ResultData.class); - byte[] dataX = new byte[resultData.getLength()]; - System.arraycopy(resultData.getDatas(),0,dataX,0,resultData.getLength()); + 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){ @@ -667,8 +681,8 @@ .execute() .body(); ResultData resultData = JSON.parseObject(s1,ResultData.class); - byte[] dataX = new byte[resultData.getLength()]; - System.arraycopy(resultData.getDatas(),0,dataX,0,resultData.getLength()); + 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); @@ -705,8 +719,8 @@ .execute() .body(); ResultData resultData = JSON.parseObject(s1,ResultData.class); - byte[] dataX = new byte[resultData.getLength()]; - System.arraycopy(resultData.getDatas(),0,dataX,0,resultData.getLength()); + 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); diff --git a/src/main/java/com/boying/controller/car/PlateServlet3.java b/src/main/java/com/boying/controller/car/PlateServlet3.java new file mode 100644 index 0000000..caec9fa --- /dev/null +++ b/src/main/java/com/boying/controller/car/PlateServlet3.java @@ -0,0 +1,725 @@ +package com.boying.controller.car; + +import cn.hutool.http.HttpRequest; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +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 lombok.RequiredArgsConstructor; +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; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.time.ZoneOffset; +import java.util.Base64; +import java.util.Date; +import java.util.List; +import java.util.concurrent.TimeUnit; + +/** + * Servlet implementation class PlateServlet + */ +@Controller +@RequestMapping("/car") +@RequiredArgsConstructor +public class PlateServlet3 extends HttpServlet { + private static final long serialVersionUID = 1L; + private final SystemConfigProperties systemConfigProperties; + private final StringRedisTemplate redisTemplate; + private final ParkService parkService; + private final OutParkService outParkService; + private final EnterParkService enterParkService; + private final BarrierService barrierService; + private final TicketService ticketService; + private final CostRuleService costRuleService; + private final WhiteListService whiteListService; + private final String LEDURL = "http://192.168.31.212:9988/LedShow/IGetResultDataAllLine"; + + /** + * 鍥炲寮�闂� + */ + protected void open(HttpServletRequest request, HttpServletResponse response,String data) throws ServletException, IOException { + response.setContentType("text/json"); + PrintWriter out = response.getWriter(); + String aa = "{" + + "\"Response_AlarmInfoPlate\": {" + + "\"info\":\"ok\"," + + "\"is_pay\":\"true\"," + + "\"serialData\" :[" + + "{" + + "\"serialChannel\":0," + + "\"data\" : \"" + data + "\"," + + "\"dataLen\" :" + data.length() + + "}" + + "]" + + "}" + + "}"; + out.println(aa); + out.flush(); + out.close(); + } + + + //杞爜 + public static String deCode(String str) { + try { + byte[] b = str.getBytes("UTF-8");//锟斤拷锟斤拷 + String sa = new String(b);//锟斤拷锟斤拷:锟斤拷什么锟街凤拷锟斤拷锟斤拷锟斤拷锟斤拷锟绞裁达拷址锟斤拷锟斤拷锟斤拷锟� + //String sa = new String(str.getBytes()); + + return sa; + } catch (Exception e) { + e.printStackTrace(); + return ""; + } + } + + protected void noOpen(HttpServletRequest request, HttpServletResponse response,String data) throws IOException { + response.setContentType("text/json"); + PrintWriter out = response.getWriter(); + String aa = "{" + + "\"Response_AlarmInfoPlate\": {" + + "\"serialData\" :[" + + "{" + + "\"serialChannel\":0," + + "\"data\" : \"" + data + "\"," + + "\"dataLen\" :" + data.length() + + "}" + + "]" + + "}" + + "}"; + out.println(aa); + out.flush(); + out.close(); + } + + protected void easyOpen(HttpServletRequest request, HttpServletResponse response) throws IOException { + response.setContentType("text/json"); + PrintWriter out = response.getWriter(); + out.println("{\"Response_AlarmInfoPlate\":{\"info\":\"ok\",\"content\":\"...\",\"is_pay\":\"true\"}}"); + out.flush(); + out.close(); + } + + @PostMapping("/status") + public void heart(String serialno,HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException { + Barrier barrier = barrierService.findByCode(serialno); + 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(barrier!=null){ + if(barrier.getType2()==1){ + //寰呭紑闂� + if(barrier.getType() == 1){ + int i = Integer.parseInt(redisnum); + i++; + redisTemplate.opsForValue().set("car_park_" + park.getId(),Integer.toString(i),30, TimeUnit.DAYS); + }else if(barrier.getType() == 0){ + int i = Integer.parseInt(redisnum); + i--; + if(i<0){ + redisTemplate.opsForValue().set("car_park_" + park.getId(),"0",30, TimeUnit.DAYS); + redisTemplate.opsForValue().set("park_up_" + park.getId(),"true",30, TimeUnit.DAYS); + }else { + redisTemplate.opsForValue().set("car_park_" + park.getId(),Integer.toString(i),30, TimeUnit.DAYS); + redisTemplate.opsForValue().set("park_up_" + park.getId(),"true",30, TimeUnit.DAYS); + } + + } + barrier.setType2(0); + barrier.setUpdateTime(LocalDateTime.now()); + barrier.setStatus(0); + barrier.setUpdateTime(LocalDateTime.now()); + barrierService.saveOrUpdate(barrier); + easyOpen(request,response); + }else { + //涓嶉渶寮�闂� + barrier.setStatus(0); + barrier.setUpdateTime(LocalDateTime.now()); + barrierService.saveOrUpdate(barrier); + OutPark outPark = outParkService.count4(barrier.getId()); + if(outPark!=null){ + if(barrier.getType() == 0){ + int i = Integer.parseInt(redisnum); + i--; + if(i<0){ + redisTemplate.opsForValue().set("car_park_" + park.getId(),"0",30, TimeUnit.DAYS); + redisTemplate.opsForValue().set("park_up_" + park.getId(),"true",30, TimeUnit.DAYS); + }else { + 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); + } + if(barrier.getType() == 1){ + boolean in = barrierService.getDateDifIn(barrier.getId()); + if(in){ + inLedShowDefault(park.getId(),request,response); + } + }else if(barrier.getType() == 0){ + boolean out = barrierService.getDateDifOut(barrier.getId()); + if(out){ + outLedShowDefault(request,response); + } + } + } + + } + } + /** + * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) + */ + @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 = ""; + while((str = reader.readLine()) != null){ + lineStr += str; + } + System.out.println("鑾峰彇鍒扮殑閬撻椄鎺ㄩ�佹暟鎹负锛�"+lineStr); + + JSONObject jsonObject1 = JSON.parseObject(lineStr); + JSONObject alarmInfoPlate = jsonObject1.getJSONObject("AlarmInfoPlate"); + JSONObject result = alarmInfoPlate.getJSONObject("result"); + JSONObject plateResult = result.getJSONObject("PlateResult"); + String carNo = plateResult.get("license").toString(); + String code = alarmInfoPlate.get("serialno").toString(); + + try { + JsonParser parser=new JsonParser(); + do { + JsonObject jsonObject=(JsonObject) parser.parse(lineStr); + if( jsonObject == null || jsonObject.isJsonNull() ) { + break; + } + + JsonObject jsonInfoPlate = jsonObject.get("AlarmInfoPlate").getAsJsonObject(); + if( jsonInfoPlate == null || jsonInfoPlate.isJsonNull() ) { + break; + } + + JsonObject jsonResult = jsonInfoPlate.get("result").getAsJsonObject(); + if( jsonResult == null || jsonResult.isJsonNull() ) { + break; + } + + JsonObject jsonPlateResult = jsonResult.get("PlateResult").getAsJsonObject(); + if( jsonPlateResult == null || jsonPlateResult.isJsonNull() ) { + break; + } + + String license = jsonPlateResult.get("license").getAsString();//杞︾墝鍙� + if( license == null || license == "") { + break; + } + + String serialno = jsonInfoPlate.get("serialno").getAsString();//鎽勫儚鏈哄簭鍒楀彿 + 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); + System.out.println("鏌ヨ鍒伴亾闂镐负锛�"+barrier); + if(barrier==null){ + s+="鏌ヨ閬撻椄涓虹┖\n"; + }else{ + if(barrier.getType()==0){ + //noOpen(request,response); + outPark(license, barrier.getId(), barrier.getParkId(),request,response); + s+=license+"-淇濆瓨鍑哄満璁板綍\n"; + }else{ + String num = redisTemplate.opsForValue().get("car_park_" + barrier.getParkId()); + if(StringUtils.isBlank(num)){ + num = "0"; + redisTemplate.opsForValue().set("car_park_" + barrier.getParkId(),num,30, TimeUnit.DAYS); + redisTemplate.opsForValue().set("park_up_" + barrier.getParkId(),"true",30, TimeUnit.DAYS); + } + Park byId = parkService.getById(barrier.getParkId()); + if(Integer.parseInt(num) >= byId.getNum() ){ + //led鏄剧ず + inLedFullShow(code, license,barrier.getParkId(),request,response); + }else { + //led鏄剧ず + inLedShow(code, license,barrier.getParkId(),request,response); + enterPark(license,barrier.getId(),barrier.getParkId()); + s+=license+"-淇濆瓨鍏ュ満璁板綍\n"; + } + } + } + writeTxt(s); + }while(false); + } + catch (Exception e) { + System.out.println("鏃犲叆鍦鸿褰�"); + s+=" ,鏌ヨ鍦哄唴璁板綍寮傚父"; + writeTxt(s); + } + } + + + private void writeTxt( String txt) + { + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); + try + { + 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) + { + 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); + } + } + enterParkService.deleteByCarNo(carNo,parkId); + EnterPark enterPark = new EnterPark(); + enterPark.setCarNo(carNo); + enterPark.setBarrierId(barrierId); + enterPark.setParkId(parkId); + + 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);//鍙戠幇鏈夎繚绔� + } + enterParkService.saveOrUpdate(enterPark); + + 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 { + double money = 0.0; + EnterPark enterPark = null; + String toDayHrMinSec = null; + OutPark outPark = new OutPark(); + outPark.setCarNo(carNo); + outPark.setParkId(parkId); + outPark.setBarrierId(barrierId); + outPark.setCreateTime(LocalDateTime.now()); + outPark.setCode(System.currentTimeMillis()+""); + List<EnterPark> byCarNo = enterParkService.findByCarNo(carNo,parkId); + + if(byCarNo.size() == 0){ + System.out.println(carNo+"鏈彂鐜板満鍐呰溅杈�"); + }else{ + enterPark = byCarNo.get(0); + System.out.println("鍏ュ満璁板綍锛�"+enterPark); + outPark.setEnterTime(enterPark.getCreateTime()); + try { + long l = outPark.getCreateTime().toInstant(ZoneOffset.of("+8")).toEpochMilli() - enterPark.getCreateTime().toInstant(ZoneOffset.of("+8")).toEpochMilli(); + outPark.setTime(l/(1000*60)); + toDayHrMinSec = DateUtilOther.millisToDayHrMinSec(l/(1000*60)); + money = costRuleService.getMoney(parkId, outPark.getEnterTime(), outPark.getCreateTime(), 1); + } catch (ParseException e) { + e.printStackTrace(); + } + + } + //outPark.setPrice(Double.valueOf(String.format("%.1f", money))); + outPark.setPrice(money); + outPark.setStatus3(findTicket(carNo)); + outParkService.saveOrUpdate(outPark); + Barrier barrier =barrierService.getById(barrierId); + barrier.setCarNo(carNo); + //led灞曠ず + if(toDayHrMinSec == null){ + toDayHrMinSec = "涓嶈冻涓ゅ皬鏃�"; + } + //鍒ゆ柇鏄惁鍦ㄧ櫧鍚嶅崟 + QueryWrapper<WhiteList> wrapper = new QueryWrapper<>(); + wrapper.lambda() + .eq(WhiteList::getCarNo,carNo); + List<WhiteList> all = whiteListService.list(wrapper); + 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(1); + byCarNoAndBarrierId.setStatus2(1); + outParkService.saveOrUpdate(byCarNoAndBarrierId); + return 0.0; + }else{ + if(w.getParkIds()!=null){ + if(w.getEndTime()!=null){ + String parkIds = w.getParkIds(); + String[] split = parkIds.split(","); + 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(1); + byCarNoAndBarrierId.setStatus2(1); + outParkService.saveOrUpdate(byCarNoAndBarrierId); + return 0.0; + } + } + } + } + } + } + } + if(outPark.getPrice()==0&&outPark.getStatus3()==0){ + System.out.println(outPark.getCarNo()+"璇ヨ溅涓嶉渶瑕佺即璐�"); + outLedShow(barrier.getCode(),barrier.getCarNo(),outPark.getPrice(),toDayHrMinSec,barrier.getParkId(),request,response,0); + }else { + //闇�瑕佺即璐规垨鑰呮湁杩濈珷 + System.out.println(outPark.getCarNo()+"璇ヨ溅闇�瑕佺即璐�"+outPark.getPrice()); + outLedShow(barrier.getCode(),barrier.getCarNo(),outPark.getPrice(),toDayHrMinSec,barrier.getParkId(),request,response,1); + } + barrierService.saveOrUpdate(barrier); + return money; + } + + public int findTicket(String carNo){ + QueryWrapper<Ticket> wrapper = new QueryWrapper<>(); + wrapper.lambda() + .eq(Ticket::getCarNo,carNo) + .eq(Ticket::getPayStatus,1); + List<Ticket> tickets = ticketService.list(wrapper); + if(tickets.size()>0){ + return 1; + }else{ + return 0; + } + } + + + public void inLedShow(String ledId,String carNo,Integer parkId,HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + String num = redisTemplate.opsForValue().get("car_park_" + parkId); + if(num == null){ + num = "0"; + } + Park byId = parkService.getById(parkId); + int n = Integer.parseInt(num)+1; + redisTemplate.opsForValue().set("car_park_" + parkId,Integer.toString(n),30, TimeUnit.DAYS); + int i = byId.getNum() - Integer.parseInt(num); + if(i<0){ + i = 0; + } + String carType = ""; + String carDay = ""; + Barrier barrier = barrierService.findByCode(ledId); + WhiteList byCarNo = whiteListService.getByCarNo(carNo); + if(byCarNo == null){ + carType = "涓存椂杞�"; + }else { + if (byCarNo.getType() == 0){ + //鐧藉悕鍗曟案涔呰溅杈� + carType = "鏈堢杞�"; + }else { + //鐧藉悕鍗曞浐瀹氬仠杞﹀満杞﹁締 + if(byCarNo.getParkId().equals(barrier.getParkId())){ + carType = "鏈堢杞�"; + long l = (byCarNo.getEndTime().getTime() - byCarNo.getStartTime().getTime()) / (24 * 3600 * 1000); + carDay = "鏈夋晥鏈熻繕鏈�"+l+"澶�"; + } + } + } + if(StringUtils.isBlank(carDay)){ + carDay = "娆㈣繋鍏変复"; + } + + 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);//鍏ュ満寮�闂� + } + + public void inLedFullShow(String ledId, String carNo, Integer parkId,HttpServletRequest request, HttpServletResponse response) throws IOException { + String carType = ""; + String carDay = ""; + Barrier barrier = barrierService.findByCode(ledId); + WhiteList byCarNo = whiteListService.getByCarNo(carNo); + if(byCarNo == null){ + carType = "涓存椂杞�"; + }else { + if (byCarNo.getType() == 0){ + //鐧藉悕鍗曟案涔呰溅杈� + carType = "鏈堢杞�"; + }else { + //鐧藉悕鍗曞浐瀹氬仠杞﹀満杞﹁締 + if(byCarNo.getParkId().equals(barrier.getParkId())){ + carType = "鏈堢杞�"; + long l = (byCarNo.getEndTime().getTime() - byCarNo.getStartTime().getTime()) / (24 * 3600 * 1000); + carDay = "鏈夋晥鏈熻繕鏈�"+l+"澶�"; + } + } + } + + 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()); + String data1 = Base64.getMimeEncoder().encodeToString(dataX) + "="; + data1 = data1.replaceAll("\r\n", ""); + + 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 { + 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("鍋滆溅"+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()); + String data1 = Base64.getMimeEncoder().encodeToString(dataX) + "="; + data1 = data1.replaceAll("\r\n", ""); + if(type == 0){ + //寮�闂� + open(request,response,data1); + int i = Integer.parseInt(redisnum); + 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); + } + }else { + noOpen(request,response,data1); + } + + } + + 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()); + String data1 = Base64.getMimeEncoder().encodeToString(dataX) + "="; + data1 = data1.replaceAll("\r\n", ""); + if(type == 0){ + //寮�闂� + open(request,response,data1); + int i = Integer.parseInt(redisnum); + 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); + } + }else { + noOpen(request,response,data1); + } + } + + 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()); + String data1 = Base64.getMimeEncoder().encodeToString(dataX) + "="; + data1 = data1.replaceAll("\r\n", ""); + noOpen(request,response,data1); + } + + public void inLedShowDefault(Integer parkId,HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ + String num = redisTemplate.opsForValue().get("car_park_" + parkId); + if(num == null){ + num = "0"; + } + Park byId = parkService.getById(parkId); + int i = byId.getNum() - Integer.parseInt(num); + if(i<0){ + i = 0; + } + 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()); + String data1 = Base64.getMimeEncoder().encodeToString(dataX) + "="; + data1 = data1.replaceAll("\r\n", ""); + noOpen(request,response,data1); + } + +} diff --git a/src/main/java/com/boying/entity/LedShow.java b/src/main/java/com/boying/entity/LedShow.java index 91df7f1..18b8edd 100644 --- a/src/main/java/com/boying/entity/LedShow.java +++ b/src/main/java/com/boying/entity/LedShow.java @@ -26,11 +26,11 @@ @ApiModelProperty(value = "閬撻椄搴忓垪鍙�") @Column(columnDefinition = "varchar(100) comment '閬撻椄搴忓垪鍙�'") - private String ledId; + private String ledId ; @ApiModelProperty(value = "鍚嶇О") @Column(columnDefinition = "varchar(100) comment '鍚嶇О'") - private String name; + private String name ; @ApiModelProperty(value = "绫诲瀷") @Column(columnDefinition = "int comment '绫诲瀷 0/led 1/璇煶 2/鍚屾椂'") @@ -42,7 +42,7 @@ @ApiModelProperty(value = "瀵嗙爜") @Column(columnDefinition = "varchar(100) comment '瀵嗙爜'") - private String password; + private String password = "123"; @ApiModelProperty(value = "鐘舵��") @Column(columnDefinition = "int comment '鐘舵�� 0/涓嶅彉鍖� 1/鍙樺寲'") @@ -50,7 +50,7 @@ @ApiModelProperty(value = "涓嬪彂鎸囦护鏃堕棿") @Column(columnDefinition = "varchar(100) comment '涓嬪彂鎸囦护鏃堕棿'") - private String timeStamp; + private String timeStamp = "123"; @ApiModelProperty(value = "绗竴琛岄鑹�") @Column(columnDefinition = "int comment '绗竴琛岄鑹�'") @@ -122,7 +122,7 @@ @ApiModelProperty(value = "ip鍦板潃") @Column(columnDefinition = "varchar(200) comment 'ip鍦板潃'") - private String ipAddress; + private String ipAddress = "123"; @ApiModelProperty(value = "绔彛") @Column(columnDefinition = "int comment '绔彛'") diff --git a/src/main/java/com/boying/entity/led/LedBean.java b/src/main/java/com/boying/entity/led/LedBean.java index ed973de..984fff2 100644 --- a/src/main/java/com/boying/entity/led/LedBean.java +++ b/src/main/java/com/boying/entity/led/LedBean.java @@ -14,19 +14,19 @@ */ @Data public class LedBean { - private int id; - private String ledId; - private String name; - private String ipAddress; - private int port; - private int isDefault; - private int type; - private String password; + private int id = 1; + private String ledId = "led"; + private String name = "123"; + private String ipAddress = "led"; + private int port = 1; + private int isDefault =1; + private int type =1; + private String password = "led"; @ApiModelProperty(value = "鐘舵��") - private Integer status; + private Integer status = 1; @ApiModelProperty(value = "涓嬪彂鎸囦护鏃堕棿") - private String timeStamp; + private String timeStamp = "led"; @ApiModelProperty(value = "绗竴琛岄鑹�") private Integer color1; diff --git a/src/main/java/com/boying/entity/led/ResultData.java b/src/main/java/com/boying/entity/led/ResultData.java index f920db0..95d90f9 100644 --- a/src/main/java/com/boying/entity/led/ResultData.java +++ b/src/main/java/com/boying/entity/led/ResultData.java @@ -11,6 +11,6 @@ */ @Data public class ResultData { - private int length; - private byte[] datas; + private int lenth; + private String datas; } diff --git a/src/main/java/com/boying/util/StringUtil.java b/src/main/java/com/boying/util/StringUtil.java index ce93eb1..c99d6cc 100644 --- a/src/main/java/com/boying/util/StringUtil.java +++ b/src/main/java/com/boying/util/StringUtil.java @@ -1,5 +1,6 @@ package com.boying.util; +import java.util.Arrays; import java.util.UUID; public class StringUtil { @@ -11,8 +12,105 @@ } return false; } + public static byte[] convertNum(String s){ + String[] split = s.split("-"); + byte[] bytes = new byte[split.length]; + for (int i = 0; i < split.length; i++) { + String s1 = split[i]; + byte b = Byte.parseByte("0x"+s1); + bytes[i]=b; + } + return bytes; + } + + public static String toStr(String[] strs){ + String s = Arrays.toString(strs); + String substring = s.substring(1, s.length() - 1); + String s1 = substring.replaceAll(",", ""); + String s2 = s1.replaceAll(" ", ""); + return s2; + } public static String getUUID() { return UUID.randomUUID().toString().replaceAll("-", ""); } + + /** + * 灏嗘寚瀹歜yte鏁扮粍浠�16杩涘埗鐨勫舰寮忔墦鍗板埌鎺у埗鍙� + * + * @param hint String + * @param b byte[] + * @return void + */ + public static void printHexString(String hint, byte[] b) { + System.out.print(hint); + for (int i = 0; i < b.length; i++) { + String hex = Integer.toHexString(b[i] & 0xFF); + if (hex.length() == 1) { + hex = '0' + hex; + } + System.out.print(hex.toUpperCase() + " "); + } + System.out.println(""); + } + + /** + * @param b byte[] + * @return String + */ + public static String Bytes2HexString(byte[] b) { + String ret = ""; + for (int i = 0; i < b.length; i++) { + String hex = Integer.toHexString(b[i] & 0xFF); + if (hex.length() == 1) { + hex = '0' + hex; + } + ret += " 0x" + hex.toUpperCase(); + } + return ret; + } + + /** + * 灏嗘寚瀹氬瓧绗︿覆src锛屼互姣忎袱涓瓧绗﹀垎鍓茶浆鎹负16杩涘埗褰㈠紡 濡傦細"2B44EFD9" 鈥�> byte[]{0x2B, 0脳44, 0xEF, + * 0xD9} + * + * @param src String + * @return byte[] + */ + public static byte[] HexString2Bytes(String src) { + if (null == src || 0 == src.length()) { + return null; + } + String s1 = src.replaceAll("-", ""); + byte[] ret = new byte[s1.length() / 2]; + byte[] tmp = s1.getBytes(); + for (int i = 0; i < (tmp.length / 2); i++) { + ret[i] = uniteBytes(tmp[i * 2], tmp[i * 2 + 1]); + } + return ret; + } + + /** + * 灏嗕袱涓狝SCII瀛楃鍚堟垚涓�涓瓧鑺傦紱 濡傦細"EF"鈥�> 0xEF + * + * @param src0 byte + * @param src1 byte + * @return byte + */ + public static byte uniteBytes(byte src0, byte src1) { + byte _b0 = Byte.decode("0x" + new String(new byte[]{src0})).byteValue(); + _b0 = (byte) (_b0 << 4); + byte _b1 = Byte.decode("0x" + new String(new byte[]{src1})).byteValue(); + byte ret = (byte) (_b0 ^ _b1); + return ret; + } + + public static void main(String[] args) { + String s = "00-64-FF-FF-6E-78-00-04-00-01-01-02-00-FF-00-00-00-09-E4-BA-AC-41-38-38-38-38-38-0D-01-01-01-02-00-FF-00-00-00-09-E4-B8-B4-E6-97-B6-E8-BD-A6-0D-02-01-01-02-00-FF-00-00-00-0C-E6-AC-A2-E8-BF-8E-E5-85-89-E4-B8-B4-0D-03-01-01-02-00-FF-00-00-00-09-E4-BD-99-E4-BD-8D-3A-37-34-00-0A-20-E4-B8-B4-E6-97-B6-E8-BD-A6-2C-E4-BA-AC-41-38-38-38-38-38-2C-E6-AC-A2-E8-BF-8E-E5-85-89-E4-B8-B4-00-6B-E7"; + String s1 = s.replaceAll("-", ""); + byte[] bytes = HexString2Bytes(s1); + for (byte aByte : bytes) { + System.out.print(aByte + " "); + } + } } -- Gitblit v1.9.1