Browse Source

代码重构时发生错误,已修复

lixing 4 years ago
parent
commit
86a7405e2a

+ 44 - 0
src/main/java/com/persagy/controller/HelloWorld.java

@@ -17,6 +17,7 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.transaction.Transactional;
 import java.util.*;
 import java.util.concurrent.atomic.AtomicInteger;
 
@@ -99,6 +100,49 @@ public class HelloWorld {
 		return list;
 	}
 
+	@PostMapping("/test4")
+	public void test4() throws Exception {
+		String defineId = "2004-VOEi56c25a67412a417fbf225ca1722f3a27";
+		Thread thread1 = new Thread() {
+			@Override
+			public void run() {
+				try {
+					log.info("{}开始,参数为: {}, {}", Thread.currentThread().getName(), null, "1");
+					alarmRecordFindAndUpdate(defineId, null, "1");
+				} catch (Exception e) {
+					e.printStackTrace();
+				}
+			}
+		};
+		thread1.start();
+
+		Thread thread2 = new Thread() {
+			@Override
+			public void run() {
+				try {
+					log.info("{}开始,参数为: {}, {}", Thread.currentThread().getName(), "xxx", "2");
+					alarmRecordFindAndUpdate(defineId, "xxx", "2");
+				} catch (Exception e) {
+					e.printStackTrace();
+				}
+			}
+		};
+		thread2.start();
+	}
+
+	@Transactional
+	public void alarmRecordFindAndUpdate(String defineId, String alarmId, String state) throws Exception {
+		Optional<ZktAlarmRecordDO> zktAlarmRecordDO = alarmRecordRepository.findById(defineId);
+		log.info("{}完成查询", Thread.currentThread().getName());
+		Thread.sleep(3000);
+		if (zktAlarmRecordDO.isPresent()) {
+			ZktAlarmRecordDO alarmRecordDO = zktAlarmRecordDO.get();
+			alarmRecordDO.setAlarmId(alarmId);
+			alarmRecordDO.setState(state);
+			alarmRecordRepository.save(alarmRecordDO);
+		}
+		log.info("{}完成更新", Thread.currentThread().getName());
+	}
 
 
 }

+ 3 - 2
src/main/java/com/persagy/service/impl/AlarmHandleServiceImpl.java

@@ -373,7 +373,7 @@ public class AlarmHandleServiceImpl implements AlarmHandleService {
                 if (alarmLastTime >= condition.getTriggerUphold()) {
                     log.info("报警持续时间大于设定的持续时间,产生一条报警");
                     // 边缘端保存报警信息
-                    upsertZktAlarmRecordWhenAlarmStart(alarmDefine);
+                    upsertZktAlarmRecordWhenAlarmStart(alarmDefine, dataTime);
                     // 报警定义状态更新为未处理
                     alarmDefineState.setState(AlarmDefineState.State.NOT_DEAL.getType());
                     // 发送创建报警记录的消息
@@ -478,9 +478,10 @@ public class AlarmHandleServiceImpl implements AlarmHandleService {
      * @since: 2021/1/8 下午5:55
      * @version: V1.0
      */
-    private ZktAlarmRecordDO upsertZktAlarmRecordWhenAlarmStart(AlarmDefine alarmDefine) {
+    private ZktAlarmRecordDO upsertZktAlarmRecordWhenAlarmStart(AlarmDefine alarmDefine, String alarmTime) {
         ZktAlarmRecordDO zktAlarmRecordDO = initZktAlarmRecordDO(alarmDefine);
         zktAlarmRecordDO.setState("1");
+        zktAlarmRecordDO.setAlarmTime(alarmTime);
         alarmRecordRepository.save(zktAlarmRecordDO);
         return zktAlarmRecordDO;
     }