Ver Fonte

增加对重复数据的过滤处理。 定期删除接收数据的记录表,只保留一个月的。

seyason há 5 anos atrás
pai
commit
989479fb09

+ 1 - 0
cloud-socket/src/applicationContext.xml

@@ -52,6 +52,7 @@
     <bean id="myTask" class="com.js.kbt.task.MyTask"></bean>
     <task:scheduled-tasks>
         <task:scheduled ref="myTask" method="doTask" fixed-rate="1200000" />
+        <task:scheduled ref="myTask" method="reduceRecData" fixed-rate="86400000" />
     </task:scheduled-tasks>
   	<bean id="helloServer" class="com.js.kbt.socket.HelloServer" scope="singleton" init-method="startServer" destroy-method="shutdown"/>
   	<bean id="userHandler" class="com.js.kbt.socket.UserHandler" scope="prototype"/> 

+ 8 - 0
cloud-socket/src/com/js/kbt/socket/UserHandler.java

@@ -42,6 +42,7 @@ import com.js.kbt.model.MouldHistoryExample;
 import com.js.kbt.model.MouldHistoryTime;
 import com.js.kbt.model.MouldHistoryTimeExample;
 import com.js.kbt.model.RecDataLog;
+import com.js.kbt.model.RecDataLogExample;
 import com.js.kbt.model.TbMould;
 import com.js.kbt.model.TbMouldEquipment;
 import com.js.kbt.model.TbMouldEquipmentExample;
@@ -129,6 +130,13 @@ public class UserHandler extends SimpleChannelInboundHandler<String> {
 		String deviceNum = "";
 		// 创建一个字符串集合用于存储由于粘包需要拆分后的报文
 		ret = input;
+		//排重
+		RecDataLogExample logExp = new RecDataLogExample();
+		logExp.createCriteria().andRecDataEqualTo(input);
+		if (recDataLogMapper.countByExample(logExp) > 0) {
+			logger.info("重复消息,不作处理!");
+			return ret;
+		}
 		RecDataLog logItem = new RecDataLog();
 		logItem.setRecData(input);
 		recDataLogMapper.insertSelective(logItem);

+ 15 - 0
cloud-socket/src/com/js/kbt/task/MyTask.java

@@ -8,7 +8,9 @@ import javax.annotation.Resource;
 import org.apache.log4j.Logger;
 import org.springframework.stereotype.Service;
 
+import com.js.kbt.mapper.RecDataLogMapper;
 import com.js.kbt.mapper.TbMouldMapper;
+import com.js.kbt.model.RecDataLogExample;
 import com.js.kbt.model.TbMould;
 import com.js.kbt.model.TbMouldExample;
 
@@ -17,6 +19,8 @@ public class MyTask {
 	
 	@Resource(name = "tbMouldMapper")
 	private TbMouldMapper tbMouldMapper;
+	@Resource(name = "recDataLogMapper")
+	private RecDataLogMapper recDataLogMapper;
 
 	Logger log = Logger.getLogger(MyTask.class);
 
@@ -42,5 +46,16 @@ public class MyTask {
 		cnt = tbMouldMapper.updateByExampleSelective(mould, example);
 		log.info("更新了"+cnt+"条掉线");
 	}
+	
+	public void reduceRecData() throws Exception {
+		Date now = new Date();
+		log.info("定时任务reduceRecData:" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(now));
+		//删除一个月以前的数据
+		now.setMonth(now.getMonth() -1);
+		RecDataLogExample example = new RecDataLogExample();
+		example.createCriteria().andIndateLessThanOrEqualTo(now);
+		recDataLogMapper.deleteByExample(example);
+	}
+
 
 }