Browse Source

编辑联锁是新增历史记录修改

丁治程 7 months ago
parent
commit
4f5981c4a3

+ 64 - 1
jeecg-module-interlock/src/main/java/org/jeecg/modules/binlog/PostgreSQLClient.java

@@ -125,6 +125,7 @@ public class PostgreSQLClient implements ApplicationRunner {
             // 触发器发送通知 通过 LISTEN 来监听(订阅)通知
             statement.execute("LISTEN notify_event");
             statement.execute("LISTEN notify_summary_event");
+            statement.execute("LISTEN notify_detail_event");
 
             // 采用轮询的方式查询是否有新的通知产生,
             // 暂时没有想到更好的方式替换掉 while 死循环。(可以采用postgresql数据库集成KafKa的方式,但是需要对数据库进行改动可能)
@@ -143,7 +144,7 @@ public class PostgreSQLClient implements ApplicationRunner {
                             String formattedDateTime = currentDateTime.format(formatter);
 
                             String id = (String) changeDataMap.get("id");  // 联锁ID
-                            String systemId = (String) changeDataMap.get("interlock_system_id");  // 联锁ID
+                            String systemId = (String) changeDataMap.get("interlock_system_id");  // 联锁系统ID
 
                             // 根据联锁系统ID查询出 每个正常状态 对应的值
                             InterlockBase base = baseService.getById(systemId);
@@ -202,6 +203,68 @@ public class PostgreSQLClient implements ApplicationRunner {
                                 detailHistoryService.save(interlockDetailHistory);
                             }
 
+                        }else if("notify_detail_event".equals(name)){
+                            LocalDateTime currentDateTime = LocalDateTime.now();
+                            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+                            String formattedDateTime = currentDateTime.format(formatter);
+
+                            String id = (String) changeDataMap.get("id");  // 联锁条件ID
+                            String summaryid = (String) changeDataMap.get("summaryid");  // 联锁ID
+                            String systemId = (String) changeDataMap.get("interlock_system_id");  // 联锁系统ID
+
+                            // 根据联锁系统ID查询出 每个正常状态 对应的值
+                            InterlockBase base = baseService.getById(systemId);
+                            InterlockSummary interlockSummary = summaryService.getById(summaryid);
+
+                            InterlockSummaryHistory interlockSummaryHistory = InterlockSummaryHistoryConvert.INSTANCE.toHistory(interlockSummary);
+                            interlockSummaryHistory.setSummaryOriginId(id);
+                            interlockSummaryHistory.setTagTime(formattedDateTime);
+                            interlockSummaryHistory.setInterlockStatusTy(base.getInterlockStatusTy());//联锁状态-正常状态-值
+                            interlockSummaryHistory.setInterlockStatusTyName(base.getInterlockStatusTyName());//联锁状态-正常状态-名称
+                            interlockSummaryHistory.setInterlockStatusWtyName(base.getInterlockStatusWtyName());//联锁状态-故障状态-名称
+                            //联锁状态
+                            if(interlockSummaryHistory.getInterlockStatus().equals(base.getInterlockStatusTy())){//正常
+                                interlockSummaryHistory.setInterlockStatusName(base.getInterlockStatusTyName());//当前联锁状态的名称
+                            }else{//故障
+                                interlockSummaryHistory.setInterlockStatusName(base.getInterlockStatusWtyName());//当前联锁状态的名称
+                            }
+                            summaryHistoryService.save(interlockSummaryHistory);
+
+                            InterlockDetail detail = detailService.getById(id);
+                            InterlockDetailHistory interlockDetailHistory = InterlockDetailHistoryConvert.INSTANCE.toHistory(detail);
+                            interlockDetailHistory.setSummaryid(interlockSummaryHistory.getId());
+                            interlockDetailHistory.setSummaryOriginId(id);
+                            interlockDetailHistory.setTagTime(formattedDateTime);
+                            //保存当前0/1的含义
+                            //旁路状态
+                            interlockDetailHistory.setBypassYes(base.getBypassYes());//旁路状态-正常状态-值
+                            interlockDetailHistory.setBypassYesName(base.getBypassYesName());//旁路状态-正常状态-名称
+                            interlockDetailHistory.setBypassNoName(base.getBypassNoName());//旁路状态-故障状态-名称
+                            if(interlockDetailHistory.getBypass().equals(base.getBypassYes())){//正常
+                                interlockDetailHistory.setBypassName(base.getBypassYesName());//当前旁路状态的名称
+                            }else{//故障
+                                interlockDetailHistory.setBypassName(base.getBypassNoName());//当前旁路状态的名称
+                            }
+                            //仪表状态
+                            interlockDetailHistory.setInstrumentStatusNormal(base.getInstrumentStatusNormal());//仪表状态-正常状态-值
+                            interlockDetailHistory.setInstrumentStatusNormalName(base.getInstrumentStatusNormalName());//仪表状态-正常状态-名称
+                            interlockDetailHistory.setInstrumentStatusAbnormalName(base.getInstrumentStatusAbnormalName());//仪表状态-故障状态-名称
+                            if(interlockDetailHistory.getInstrumentStatus().equals(base.getInstrumentStatusNormal())){//正常
+                                interlockDetailHistory.setInstrumentStatusName(base.getInstrumentStatusNormalName());//当前仪表状态的名称
+                            }else{//故障
+                                interlockDetailHistory.setInstrumentStatusName(base.getInstrumentStatusAbnormalName());//当前仪表状态的名称
+                            }
+                            //控制系统状态
+                            interlockDetailHistory.setControlSystemStatusNormal(base.getControlSystemStatusNormal());//控制系统状态-正常状态-值
+                            interlockDetailHistory.setControlSystemStatusNormalName(base.getControlSystemStatusNormalName());//控制系统状态-正常状态-名称
+                            interlockDetailHistory.setControlSystemStatusAbnormalName(base.getControlSystemStatusAbnormalName());//控制系统状态-故障状态-名称
+                            if(interlockDetailHistory.getControlSystemStatus().equals(base.getControlSystemStatusNormal())){//正常
+                                interlockDetailHistory.setControlSystemStatusName(base.getControlSystemStatusNormalName());//当前控制系统状态的名称
+                            }else{//故障
+                                interlockDetailHistory.setControlSystemStatusName(base.getControlSystemStatusAbnormalName());//当前控制系统状态的名称
+                            }
+                            detailHistoryService.save(interlockDetailHistory);
+
                         }else {
                             //Map<String, Object> changeDataMap = JSONObject.parseObject(parameter, new TypeReference<Map<String, Object>>() {
                             //});