From 01ccea0b20488a5923a757f7909895e53201e4e1 Mon Sep 17 00:00:00 2001
From: shicf <shi_chongfu@163.com>
Date: 星期四, 17 十月 2024 16:27:31 +0800
Subject: [PATCH] 预警模块,其它业务关联预警,调预警推送消息

---
 src/main/java/com/product/administration/service/EarlyWarningManagerService.java |   54 ++++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 46 insertions(+), 8 deletions(-)

diff --git a/src/main/java/com/product/administration/service/EarlyWarningManagerService.java b/src/main/java/com/product/administration/service/EarlyWarningManagerService.java
index b3c34e0..876d16a 100644
--- a/src/main/java/com/product/administration/service/EarlyWarningManagerService.java
+++ b/src/main/java/com/product/administration/service/EarlyWarningManagerService.java
@@ -27,6 +27,7 @@
 import com.product.org.admin.service.StaffManagerService;
 import com.product.quartz.service.impl.SysJobService;
 import com.product.util.BaseUtil;
+import com.product.util.SystemParamReplace;
 import org.apache.commons.codec.binary.Base64;
 import org.quartz.SchedulerException;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -299,21 +300,23 @@
      * @return
      */
     public boolean conditionCheck(String mainTableName, String warnCondition) {
-        Map<String, String> tableNameAndAlias = new HashMap<>();    //鐩稿叧琛ㄥ悕-->琛ㄥ埆鍚�,tableName-->tableName1
-        Map<String, String> fieldAndAlias = new HashMap<>();        //鐩稿叧瀛楁-->瀛楁鍒悕,tableName.fieldName-->tableName1fieldName
-        Map<String, String> fieldReference = new HashMap<>();    //缁勫悎鐩稿叧瀛楁鐨勫弬鐓�,tableName1fieldName-->referenceName
-        StringBuilder concatField = new StringBuilder();        //缁勫悎鐩稿叧瀛楁,tableName1.fieldName tableName1fieldName
+        Map<String, String> tableNameAndAlias = new HashMap<>();//鐩稿叧琛ㄥ悕-->琛ㄥ埆鍚�,tableName-->tableName1
+        Map<String, String> fieldAndAlias = new HashMap<>();	//鐩稿叧瀛楁-->瀛楁鍒悕,tableName.fieldName-->tableName1fieldName
+        Map<String, String> fieldReference = new HashMap<>();	//缁勫悎鐩稿叧瀛楁鐨勫弬鐓�,tableName1fieldName-->referenceName
+        StringBuilder concatField = new StringBuilder();		//缁勫悎鐩稿叧瀛楁,tableName1.fieldName tableName1fieldName
         earlyWarningServer.parseWarningContent(warnCondition, concatField, tableNameAndAlias, fieldAndAlias, fieldReference);
+        // 鏇挎崲绯荤粺鍙傛暟
+        warnCondition = SystemParamReplace.systemParamsReplace(warnCondition);
 
         //鐢熸垚涓诲瓙琛ㄥ叧鑱擲QL
         String relationSQL = earlyWarningServer.createTableRelation(tableNameAndAlias, mainTableName);
 
         StringBuilder serviceSQL = new StringBuilder();
-        serviceSQL.append(" SELECT ");
-        serviceSQL.append(concatField.subSequence(1, concatField.length()));
-        serviceSQL.append(" FROM ");
+        serviceSQL.append("\nSELECT \n");
+        serviceSQL.append(StringUtils.isEmpty(concatField) ? "*" : concatField.subSequence(1, concatField.length()));
+        serviceSQL.append("\nFROM \n");
         serviceSQL.append(relationSQL);
-        serviceSQL.append(" WHERE ");
+        serviceSQL.append("\nWHERE \n");
         serviceSQL.append(earlyWarningServer.parseWarnCondition(warnCondition, tableNameAndAlias));
         try {
             baseDao.listTable(serviceSQL.toString(), new Object[]{});
@@ -492,4 +495,39 @@
         }
         return dte;
     }
+
+    /**
+     * 杞彂
+     * @param fse
+     */
+    @Override
+    public void transmit(FieldSetEntity fse) {
+        String uuid = fse.getUUID();
+        String messageAccepter = fse.getString("user");
+        FieldSetEntity warnMsgFse = baseDao.getFieldSetEntity(CmnConst.PRODUCT_SYS_EARLY_WARNING_INFO, uuid, false);
+        String preReceiver = warnMsgFse.getString(CmnConst.RECEIVER);
+        Set<String> preReceiverSet = Sets.newHashSet(preReceiver.split(","));
+        if (StringUtils.isEmpty(messageAccepter)) {
+            throw new BaseException(SystemCode.WARN_TRANSMIT_USER_IS_NULL);
+        }
+        Set<String> transmitUserSet = Sets.newHashSet(messageAccepter.split(","));
+        transmitUserSet.forEach(transmitUser -> {
+            if (preReceiverSet.contains(transmitUser)) {
+                FieldSetEntity transmitUserFse = baseDao.getFieldSetByFilter(CmnConst.PRODUCT_SYS_USERS, "user_id=?", new Object[]{transmitUser}, false);
+                throw new BaseException(SystemCode.WARN_TRANSMIT_USER_REPEAT.getValue(), String.format("%s:%s", SystemCode.WARN_TRANSMIT_USER_REPEAT.getText(), transmitUserFse.getString(CmnConst.USER_NAME)));
+            }
+        });
+        // 鏇存柊棰勮淇℃伅琛�
+        warnMsgFse.setValue(CmnConst.RECEIVER, preReceiver + "," + messageAccepter);
+        baseDao.saveFieldSetEntity(warnMsgFse);
+
+        // 鍙戦�佹秷鎭粰杞彂浜�
+        SystemUser curUser = SpringMVCContextHolder.getCurrentUser();
+        FieldSetEntity msgFse = baseDao.getFieldSetByFilter(CmnConst.PRODUCT_SYS_MESSAGE, "source_table=? and source_uuid=?", new Object[]{CmnConst.PRODUCT_SYS_EARLY_WARNING_INFO, uuid}, false);
+        String title = String.format("%s鍚戞偍杞彂浜嗛璀︽秷鎭��%s銆�", curUser.getUser_name(), msgFse.getString(CmnConst.TITLE));
+        String content = msgFse.getString("content");
+        WebsocketMesssageServiceThread.getInstance().appendMessage(messageAccepter, content, title, curUser.getUser_id(),
+                "31", CmnConst.BUTTON_URL_WARN_MESSAGE_INFO + "?uuid=" + fse.getUUID(),
+                CmnConst.PRODUCT_SYS_EARLY_WARNING_INFO, fse.getUUID(), curUser.getUser_id(), 0, 0, null);
+    }
 }

--
Gitblit v1.9.2