| | |
| | | import com.google.gson.JsonParser; |
| | | |
| | | import com.sun.media.jfxmedia.track.Track; |
| | | import io.swagger.v3.oas.annotations.Operation; |
| | | import io.swagger.v3.oas.annotations.tags.Tag; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.data.redis.core.StringRedisTemplate; |
| | | import org.springframework.stereotype.Controller; |
| | | import org.springframework.web.bind.annotation.PostMapping; |
| | |
| | | import java.nio.charset.StandardCharsets; |
| | | import java.text.ParseException; |
| | | import java.text.SimpleDateFormat; |
| | | import java.time.Duration; |
| | | import java.time.LocalDateTime; |
| | | import java.time.ZoneOffset; |
| | | import java.util.Base64; |
| | |
| | | * Servlet implementation class PlateServlet |
| | | */ |
| | | @Controller |
| | | @RequestMapping("/car2") |
| | | @RequestMapping("/ffzf/car2") |
| | | @RequiredArgsConstructor |
| | | @Tag(description = "ffzf/car3" , name = "泊车流程接口" ) |
| | | public class PlateServlet2 extends HttpServlet { |
| | | private static final long serialVersionUID = 1L; |
| | | private final SystemConfigProperties systemConfigProperties; |
| | | @Value("${ffpark.logPath}") |
| | | private String logPath; |
| | | // @Autowired |
| | | // private final SystemConfigProperties systemConfigProperties; |
| | | private final StringRedisTemplate redisTemplate; |
| | | private final ParkService parkService; |
| | | private final OutParkService outParkService; |
| | |
| | | private final TicketService ticketService; |
| | | private final CostRuleService costRuleService; |
| | | private final WhiteListService whiteListService; |
| | | private final OutParkLogService outParkLogService; |
| | | private final String LEDURL = "http://192.168.31.212:9988/LedShow/IGetResultDataAllLine"; |
| | | |
| | | /** |
| | |
| | | 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\",\"ivs_ioctrl\":{\"delay\":800,\"io\":0,\"value\":2}}}"); |
| | | // 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.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(); |
| | | out.println("{\"Response_AlarmInfoPlate\":{\"info\":\"error\",\"content\":\"...\",\"is_pay\":\"false\"}}"); |
| | | out.flush(); |
| | | out.close(); |
| | | } |
| | | |
| | | @PostMapping("/status") |
| | | @Operation(summary = "相机心跳接口" , description = "相机心跳接口" ) |
| | | 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()); |
| | | Park park = parkService.getOneById(barrier.getParkId()); |
| | | //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(StringUtils.isBlank(redisnum)){ |
| | | redisnum = "0"; |
| | | } |
| | | if(barrier!=null){ |
| | | if(barrier.getType2()==1){ |
| | | //待开闸 |
| | |
| | | int i = Integer.parseInt(redisnum); |
| | | i--; |
| | | if(i<0){ |
| | | String s= "2."+barrier.getCarNo()+"闸机手动启动,场内停车数为"+i+"\n"; |
| | | 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"; |
| | | 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.setStatus(0); |
| | | barrier.setUpdateTime(LocalDateTime.now()); |
| | | barrierService.saveOrUpdate(barrier); |
| | | |
| | | String jsonValue = JSON.toJSONString(barrier); |
| | | redisTemplate.opsForValue().set("barrier-"+barrier.getCode(), jsonValue); |
| | | 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); |
| | | LocalDateTime now = LocalDateTime.now(); |
| | | LocalDateTime updateTime = barrier.getUpdateTime(); |
| | | Duration duration = Duration.between(updateTime,now); |
| | | long minutes = duration.toMinutes(); |
| | | if(minutes>=2){ |
| | | barrier.setStatus(0); |
| | | barrier.setUpdateTime(LocalDateTime.now()); |
| | | barrierService.saveOrUpdate(barrier); |
| | | } |
| | | |
| | | String jsonValue = JSON.toJSONString(barrier); |
| | | redisTemplate.opsForValue().set("barrier-"+barrier.getCode(), jsonValue); |
| | | if(barrier.getType() == 0){ |
| | | OutPark outPark = outParkService.count4(barrier.getId()); |
| | | if(outPark!=null){ |
| | | if(barrier.getType() == 0){ |
| | | int i = Integer.parseInt(redisnum); |
| | | i--; |
| | | if(i<0){ |
| | | String s= "2."+outPark.getCarNo()+"缴费完成,场内停车数为"+i+"\n"; |
| | | 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"; |
| | | 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); |
| | | OutParkLog byOutPark = outParkLogService.getByOutPark(outPark.getCarNo(), outPark.getId()); |
| | | byOutPark.setOpenTime(LocalDateTime.now()); |
| | | outParkLogService.saveOrUpdate(byOutPark); |
| | | enterParkService.deleteByCarNo(outPark.getCarNo(), barrier.getParkId()); |
| | | redisTemplate.delete("outPark-"+outPark.getBarrierId()); |
| | | } |
| | | outPark.setStatus2(1); |
| | | outParkService.saveOrUpdate(outPark); |
| | | easyOpen(request,response); |
| | | } |
| | | if(barrier.getType() == 1){ |
| | | boolean in = barrierService.getDateDifIn(barrier.getId()); |
| | | boolean in = barrierService.getDateDifIn(park.getId()); |
| | | if(in){ |
| | | inLedShowDefault(park.getId(),request,response); |
| | | } |
| | |
| | | } |
| | | } |
| | | |
| | | }else { |
| | | easyNoOpen(request,response); |
| | | } |
| | | } |
| | | /** |
| | | * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) |
| | | */ |
| | | @PostMapping("/PlateServlet") |
| | | @Operation(summary = "车辆识别接口" , description = "车辆识别接口" ) |
| | | protected void info(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { |
| | | String s= ""; |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd_HH:mm:ss"); |
| | |
| | | s+="查询道闸为空\n"; |
| | | }else{ |
| | | if(barrier.getType()==0){ |
| | | easyOpen(request,response); |
| | | //noOpen(request,response); |
| | | outPark(license, barrier.getId(), barrier.getParkId(),request,response); |
| | | s+=license+"-保存出场记录\n"; |
| | | // 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"; |
| | | } |
| | | easyOpen(request,response); |
| | | // 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); |
| | | // writeTxt(s); |
| | | }while(false); |
| | | } |
| | | catch (Exception e) { |
| | |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); |
| | | try |
| | | { |
| | | FileWriter f = new FileWriter(systemConfigProperties.getLogPath()+sdf.format(new Date())+".txt",true); |
| | | FileWriter f = new FileWriter(logPath+sdf.format(new Date())+".txt",true); |
| | | BufferedWriter bw=new BufferedWriter(f); |
| | | bw.write(txt); |
| | | bw.newLine(); |
| | |
| | | enterPark.setStatus(1);//发现有违章 |
| | | } |
| | | enterParkService.saveOrUpdate(enterPark); |
| | | String jsonValue = JSON.toJSONString(enterPark); |
| | | redisTemplate.opsForValue().set("enterPark_dif_"+ parkId, jsonValue); |
| | | |
| | | Barrier barrier = barrierService.getById(barrierId); |
| | | barrier.setType2(1); |
| | |
| | | byCarNoAndBarrierId.setStatus(1); |
| | | byCarNoAndBarrierId.setStatus2(1); |
| | | outParkService.saveOrUpdate(byCarNoAndBarrierId); |
| | | String jsonValue = JSON.toJSONString(byCarNoAndBarrierId); |
| | | redisTemplate.opsForValue().set("outPark_dif_"+ barrierId, jsonValue); |
| | | return 0.0; |
| | | }else{ |
| | | if(w.getParkIds()!=null){ |
| | |
| | | byCarNoAndBarrierId.setStatus(1); |
| | | byCarNoAndBarrierId.setStatus2(1); |
| | | outParkService.saveOrUpdate(byCarNoAndBarrierId); |
| | | String jsonValue = JSON.toJSONString(byCarNoAndBarrierId); |
| | | redisTemplate.opsForValue().set("outPark_dif_"+ barrierId, jsonValue); |
| | | return 0.0; |
| | | } |
| | | } |
| | |
| | | } |
| | | if(outPark.getPrice()==0&&outPark.getStatus3()==0){ |
| | | System.out.println(outPark.getCarNo()+"该车不需要缴费"); |
| | | 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); |
| | | }else { |
| | | //需要缴费或者有违章 |
| | | System.out.println(outPark.getCarNo()+"该车需要缴费"+outPark.getPrice()); |
| | | 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); |
| | | } |
| | | barrierService.saveOrUpdate(barrier); |
| | |
| | | .execute() |
| | | .body(); |
| | | ResultData resultData = JSON.parseObject(s1,ResultData.class); |
| | | System.out.println(resultData); |
| | | 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); |
| | | //byte[] bytes = StringUtil.HexString2Bytes(s2); |
| | | byte[] bytes1 = StringUtil.hex2Byte(resultData.getDatas()); |
| | | byte[] bytes = StringUtil.byte2hex(bytes1); |
| | | for (byte aByte : bytes) { |
| | | System.out.print(aByte+" "); |
| | | } |
| | | System.out.println(); |
| | | String data1 = new String("gb2312"); |
| | | data1 = Base64.getMimeEncoder().encodeToString(bytes); |
| | | System.out.println("bytes.length: "+bytes.length); |
| | | //String data1 = new String("gb2312"); |
| | | String data1 = Base64.getMimeEncoder().encodeToString(bytes); |
| | | // String data2 = data1.replace("\n", ""); |
| | | String data3 = data1.replaceAll("\r\n", ""); |
| | | String data3 = data1.replaceAll("\r\n", "") + "="; |
| | | System.out.println(); |
| | | System.out.println(data3); |
| | | open(request,response,data3);//入场开闸 |