TcpCallBackAllData.java 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. package com.fjhx.rfid.r2000.tcp.callback;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.fjhx.config.RFIDConfig;
  4. import com.fjhx.rabbitmq.enums.MsgSourceEnum;
  5. import com.fjhx.rabbitmq.service.RabbitmqService;
  6. import com.fjhx.redis.RedisCache;
  7. import com.fjhx.utils.id.IdUtils;
  8. import com.fjhx.utils.spring.SpringUtils;
  9. import com.rfid.callBack.CallBack.R2000;
  10. import lombok.Data;
  11. import org.apache.commons.lang3.StringUtils;
  12. import java.io.File;
  13. import java.io.FileWriter;
  14. import java.text.SimpleDateFormat;
  15. import java.util.ArrayList;
  16. import java.util.Date;
  17. import java.util.List;
  18. import java.util.concurrent.ConcurrentHashMap;
  19. @Data
  20. public class TcpCallBackAllData implements R2000 {
  21. /**
  22. * redis实例
  23. */
  24. private RedisCache redisCache = SpringUtils.getBean(RedisCache.class);
  25. /**
  26. * rabbitmq实例
  27. */
  28. private RabbitmqService rabbitmqService = SpringUtils.getBean(RabbitmqService.class);
  29. /**
  30. * rdis缓存key
  31. */
  32. private String redisKey;
  33. /**
  34. * 用户ID
  35. */
  36. private String userId;
  37. /**
  38. * 读写器IP
  39. */
  40. private String ip;
  41. /**
  42. * 数据集合
  43. */
  44. private List<JSONObject> list;
  45. private String readTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
  46. public TcpCallBackAllData(String redisKey, String userId, String ip, List<JSONObject> list) {
  47. this.redisKey = redisKey;
  48. this.userId = userId;
  49. this.ip = ip;
  50. this.list = list;
  51. }
  52. public void readData(String data, String rssi, String antennaNo, String deviceNo, String direction, String communicationMode) {
  53. String content = "RFID:" + data + ", ANTNO: " + antennaNo + ", TIME: " + readTime + "\r\n";
  54. // System.err.println("tcp--:" + content);
  55. FileWriter fwriter = null;
  56. try {
  57. if (StringUtils.isBlank(data)) {
  58. return;
  59. }
  60. // 封装实际数据
  61. JSONObject object = new JSONObject();
  62. object.put("RFID", data);
  63. object.put("ANTNO", antennaNo);
  64. // 不存在文件夹则创建
  65. String filePath = RFIDConfig.getLog().getSavePath() + new SimpleDateFormat("yyyyMMdd").format(new Date()) + "\\";
  66. File file = new File(filePath);
  67. if (!file.exists() && !file.isDirectory()) {
  68. file.mkdir();
  69. }
  70. filePath += new SimpleDateFormat("yyyyMMdd HH").format(new Date()) + ".txt";
  71. // true表示不覆盖原来的内容,而是加到文件的后面。若要覆盖原来的内容,直接省略这个参数就好
  72. fwriter = new FileWriter(filePath, true);
  73. fwriter.write(content);
  74. // 收集数据
  75. list.add(object);
  76. } catch (Exception ex) {
  77. ex.printStackTrace();
  78. } finally {
  79. try {
  80. if (fwriter != null) {
  81. fwriter.flush();
  82. fwriter.close();
  83. }
  84. } catch (Exception ex) {
  85. ex.printStackTrace();
  86. }
  87. }
  88. }
  89. public void onceReadTagEnd(Boolean result) {
  90. }
  91. public void serialPortException(String name, boolean result) {
  92. }
  93. public void heartBeat(String value, String deviceNo, String communicationMode) {
  94. System.out.println("value " + value + " deviceNo " + deviceNo + " communicationMode " + communicationMode);
  95. }
  96. public void infraredTrigger(boolean direction, String value, String deviceNo, String communicationMode) {
  97. System.out.println("方向 " + direction + " 红外值 " + value + " 设备号 " + deviceNo + " IP或串口号 " + communicationMode);
  98. }
  99. public void onceReadTagEnd(boolean arg0) {
  100. }
  101. }