package com.fjhx.rfid.r2000.tcp.callback; import com.alibaba.fastjson.JSONObject; import com.fjhx.config.RFIDConfig; import com.fjhx.rabbitmq.enums.MsgSourceEnum; import com.fjhx.rabbitmq.service.RabbitmqService; import com.fjhx.redis.RedisCache; import com.fjhx.utils.id.IdUtils; import com.fjhx.utils.spring.SpringUtils; import com.rfid.callBack.CallBack.R2000; import lombok.Data; import org.apache.commons.lang3.StringUtils; import java.io.File; import java.io.FileWriter; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.concurrent.ConcurrentHashMap; @Data public class TcpCallBackAllData implements R2000 { /** * redis实例 */ private RedisCache redisCache = SpringUtils.getBean(RedisCache.class); /** * rabbitmq实例 */ private RabbitmqService rabbitmqService = SpringUtils.getBean(RabbitmqService.class); /** * rdis缓存key */ private String redisKey; /** * 用户ID */ private String userId; /** * 读写器IP */ private String ip; /** * 数据集合 */ private List list; private String readTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); public TcpCallBackAllData(String redisKey, String userId, String ip, List list) { this.redisKey = redisKey; this.userId = userId; this.ip = ip; this.list = list; } public void readData(String data, String rssi, String antennaNo, String deviceNo, String direction, String communicationMode) { String content = "RFID:" + data + ", ANTNO: " + antennaNo + ", TIME: " + readTime + "\r\n"; // System.err.println("tcp--:" + content); FileWriter fwriter = null; try { if (StringUtils.isBlank(data)) { return; } // 封装实际数据 JSONObject object = new JSONObject(); object.put("RFID", data); object.put("ANTNO", antennaNo); // 不存在文件夹则创建 String filePath = RFIDConfig.getLog().getSavePath() + new SimpleDateFormat("yyyyMMdd").format(new Date()) + "\\"; File file = new File(filePath); if (!file.exists() && !file.isDirectory()) { file.mkdir(); } filePath += new SimpleDateFormat("yyyyMMdd HH").format(new Date()) + ".txt"; // true表示不覆盖原来的内容,而是加到文件的后面。若要覆盖原来的内容,直接省略这个参数就好 fwriter = new FileWriter(filePath, true); fwriter.write(content); // 收集数据 list.add(object); } catch (Exception ex) { ex.printStackTrace(); } finally { try { if (fwriter != null) { fwriter.flush(); fwriter.close(); } } catch (Exception ex) { ex.printStackTrace(); } } } public void onceReadTagEnd(Boolean result) { } public void serialPortException(String name, boolean result) { } public void heartBeat(String value, String deviceNo, String communicationMode) { System.out.println("value " + value + " deviceNo " + deviceNo + " communicationMode " + communicationMode); } public void infraredTrigger(boolean direction, String value, String deviceNo, String communicationMode) { System.out.println("方向 " + direction + " 红外值 " + value + " 设备号 " + deviceNo + " IP或串口号 " + communicationMode); } public void onceReadTagEnd(boolean arg0) { } }