Browse Source

。。。

WANG 5 years ago
parent
commit
8286945fed

+ 107 - 89
examcloud-core-oe-face-starter/src/main/java/cn/com/qmth/examcloud/core/oe/student/face/starter/config/ProcessFaceCompareAlarmTask.java

@@ -1,5 +1,15 @@
 package cn.com.qmth.examcloud.core.oe.student.face.starter.config;
 
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.ApplicationArguments;
+import org.springframework.boot.ApplicationRunner;
+import org.springframework.core.annotation.Order;
+import org.springframework.stereotype.Component;
+
 import cn.com.qmth.examcloud.commons.exception.StatusException;
 import cn.com.qmth.examcloud.commons.logging.ExamCloudLog;
 import cn.com.qmth.examcloud.commons.logging.ExamCloudLogFactory;
@@ -9,18 +19,6 @@ import cn.com.qmth.examcloud.exchange.inner.api.SmsCloudService;
 import cn.com.qmth.examcloud.exchange.inner.api.request.SendSmsReq;
 import cn.com.qmth.examcloud.support.cache.CacheHelper;
 import cn.com.qmth.examcloud.support.cache.bean.SysPropertyCacheBean;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.ApplicationArguments;
-import org.springframework.boot.ApplicationRunner;
-import org.springframework.core.annotation.Order;
-import org.springframework.stereotype.Component;
-
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.concurrent.locks.LockSupport;
 
 /**
  * @Description 人脸比对预警任务
@@ -32,82 +30,102 @@ import java.util.concurrent.locks.LockSupport;
 @Order(202)
 public class ProcessFaceCompareAlarmTask implements ApplicationRunner {
 
-    //失败率预警阈值
-    private static final double RATE_WARN_THRESHOLD = 0.5;
-    //总数量预警阈值
-    private static final int COUNT_WARN_THRESHOLD = 10;
-    @Autowired
-    SmsCloudService smsCloudService;
-    private final ExamCloudLog captureLog = ExamCloudLogFactory.getLog("PROCESS_EXAM_CAPTURE_TASK_LOGGER");
-
-    @Override
-    public void run(ApplicationArguments args) throws Exception {
-        new Thread(() -> {
-            faceCompareAlarm();
-        }).start();
-    }
-
-    /**
-     * 人脸比对,如果有必要则发短信
-     */
-    private void faceCompareAlarm() {
-        while (true) {
-            try {
-                if (captureLog.isDebugEnabled()) {
-                    captureLog.debug("[FACE_COMPARE_ALARM] 进入人脸" + System.currentTimeMillis() + "....totalCount=" +
-                            ExamCaptureProcessStatisticController.getFaceCompareCount() + " ,failCount=" +
-                            ExamCaptureProcessStatisticController.getFaceCompareFailedCount());
-                }
-
-                //如果每分钟失败率超过50%则发短信报警,且总数不少于10次则短信报警
-                if (ExamCaptureProcessStatisticController.getFaceCompareCount() > COUNT_WARN_THRESHOLD &&
-                        ExamCaptureProcessStatisticController.getFaceCompareFailureRate() > RATE_WARN_THRESHOLD) {
-                    SysPropertyCacheBean faceCompareSmsAssemblyCodeProperty = CacheHelper.getSysProperty("capture.faceCompare.smsAssemblyCode");
-
-                    if (!faceCompareSmsAssemblyCodeProperty.getHasValue()) {
-                        if (captureLog.isErrorEnabled()) {
-                            captureLog.error("[FACE_COMPARE_ALARM.] 未配置人脸比对的短信模板代码,totalCount=" + ExamCaptureProcessStatisticController.getFaceCompareCount() + ",errorCount=" + ExamCaptureProcessStatisticController.getFaceCompareFailedCount());
-                        }
-                        throw new StatusException("300001", "未配置人脸比对的短信模板代码");
-                    }
-                    SysPropertyCacheBean smsPhoneProperty = CacheHelper.getSysProperty("capture.sms.phones");
-                    if (!smsPhoneProperty.getHasValue()) {
-                        if (captureLog.isErrorEnabled()) {
-                            captureLog.error("[FACE_COMPARE_ALARM.] 未配置图片处理失败的通知手机号,totalCount=" + ExamCaptureProcessStatisticController.getFaceCompareCount() + ",errorCount=" + ExamCaptureProcessStatisticController.getFaceCompareFailedCount());
-                        }
-                        throw new StatusException("300002", "未配置图片处理失败的通知手机号");
-                    }
-
-                    List<String> phoneList = Arrays.asList(smsPhoneProperty.getValue().toString().split(","));
-
-    //                List<String> phoneList = Arrays.asList("13717595977");
-                    SendSmsReq sendSmsReq = new SendSmsReq();
-                    sendSmsReq.setPhoneList(phoneList);
-                    sendSmsReq.setSmsAssemblyCode(faceCompareSmsAssemblyCodeProperty.getValue().toString());
-    //                sendSmsReq.setSmsAssemblyCode("FACECOMPARE");
-
-                    HashMap<String, String> params = new HashMap<>();
-                    params.put("totalCount", String.valueOf(ExamCaptureProcessStatisticController.getFaceCompareCount()));
-                    params.put("errorCount", String.valueOf(ExamCaptureProcessStatisticController.getFaceCompareFailedCount()));
-                    sendSmsReq.setParams(params);
-                    try {
-                        if (captureLog.isDebugEnabled()) {
-                            captureLog.debug("[FACE_COMPARE_ALARM.] 开始调用发送短信接口,totalCount=" + ExamCaptureProcessStatisticController.getFaceCompareCount() + ",errorCount=" + ExamCaptureProcessStatisticController.getFaceCompareFailedCount());
-                        }
-                        smsCloudService.sendSms(sendSmsReq);
-                    } catch (Exception e) {
-                        captureLog.error("[FACE_COMPARE_ALARM.] 发送短信出现异常", e);
-                    }
-                }
-                //每1分钟重置一次总数量与失败数量
-                ExamCaptureProcessStatisticController.resetAllFaceCompareCount();
-            } catch (StatusException e) {
-                    captureLog.error("[FACE_COMPARE_ALARM.] 人脸比对预警出现异常 ",e);
-            }
-            //每分钟轮循一次
-            Util.sleep(60);
-        }
-
-    }
+	// 失败率预警阈值
+	private static final double RATE_WARN_THRESHOLD = 0.5;
+
+	// 总数量预警阈值
+	private static final int COUNT_WARN_THRESHOLD = 10;
+
+	@Autowired
+	SmsCloudService smsCloudService;
+
+	private final ExamCloudLog captureLog = ExamCloudLogFactory
+			.getLog("PROCESS_EXAM_CAPTURE_TASK_LOGGER");
+
+	@Override
+	public void run(ApplicationArguments args) throws Exception {
+		new Thread(() -> {
+			while (true) {
+				try {
+					faceCompareAlarm();
+
+				} catch (StatusException e) {
+					captureLog.error("[FACE_COMPARE_ALARM.] 人脸比对预警出现异常 ", e);
+				}
+				// 每分钟轮循一次
+				Util.sleep(60);
+			}
+		}).start();
+	}
+
+	/**
+	 * 人脸比对,如果有必要则发短信
+	 */
+	private void faceCompareAlarm() {
+		if (captureLog.isDebugEnabled()) {
+			captureLog.debug("[FACE_COMPARE_ALARM] 进入人脸" + System.currentTimeMillis()
+					+ "....totalCount="
+					+ ExamCaptureProcessStatisticController.getFaceCompareCount() + " ,failCount="
+					+ ExamCaptureProcessStatisticController.getFaceCompareFailedCount());
+		}
+
+		// 如果每分钟失败率超过50%则发短信报警,且总数不少于10次则短信报警
+		if (ExamCaptureProcessStatisticController.getFaceCompareCount() > COUNT_WARN_THRESHOLD
+				&& ExamCaptureProcessStatisticController
+						.getFaceCompareFailureRate() > RATE_WARN_THRESHOLD) {
+			SysPropertyCacheBean faceCompareSmsAssemblyCodeProperty = CacheHelper
+					.getSysProperty("capture.faceCompare.smsAssemblyCode");
+
+			if (!faceCompareSmsAssemblyCodeProperty.getHasValue()) {
+				if (captureLog.isErrorEnabled()) {
+					captureLog.error("[FACE_COMPARE_ALARM.] 未配置人脸比对的短信模板代码,totalCount="
+							+ ExamCaptureProcessStatisticController.getFaceCompareCount()
+							+ ",errorCount="
+							+ ExamCaptureProcessStatisticController.getFaceCompareFailedCount());
+				}
+				throw new StatusException("300001", "未配置人脸比对的短信模板代码");
+			}
+			SysPropertyCacheBean smsPhoneProperty = CacheHelper
+					.getSysProperty("capture.sms.phones");
+			if (!smsPhoneProperty.getHasValue()) {
+				if (captureLog.isErrorEnabled()) {
+					captureLog.error("[FACE_COMPARE_ALARM.] 未配置图片处理失败的通知手机号,totalCount="
+							+ ExamCaptureProcessStatisticController.getFaceCompareCount()
+							+ ",errorCount="
+							+ ExamCaptureProcessStatisticController.getFaceCompareFailedCount());
+				}
+				throw new StatusException("300002", "未配置图片处理失败的通知手机号");
+			}
+
+			List<String> phoneList = Arrays
+					.asList(smsPhoneProperty.getValue().toString().split(","));
+
+			// List<String> phoneList = Arrays.asList("13717595977");
+			SendSmsReq sendSmsReq = new SendSmsReq();
+			sendSmsReq.setPhoneList(phoneList);
+			sendSmsReq.setSmsAssemblyCode(faceCompareSmsAssemblyCodeProperty.getValue().toString());
+			// sendSmsReq.setSmsAssemblyCode("FACECOMPARE");
+
+			HashMap<String, String> params = new HashMap<>();
+			params.put("totalCount",
+					String.valueOf(ExamCaptureProcessStatisticController.getFaceCompareCount()));
+			params.put("errorCount", String
+					.valueOf(ExamCaptureProcessStatisticController.getFaceCompareFailedCount()));
+			sendSmsReq.setParams(params);
+			try {
+				if (captureLog.isDebugEnabled()) {
+					captureLog.debug("[FACE_COMPARE_ALARM.] 开始调用发送短信接口,totalCount="
+							+ ExamCaptureProcessStatisticController.getFaceCompareCount()
+							+ ",errorCount="
+							+ ExamCaptureProcessStatisticController.getFaceCompareFailedCount());
+				}
+				smsCloudService.sendSms(sendSmsReq);
+			} catch (Exception e) {
+				captureLog.error("[FACE_COMPARE_ALARM.] 发送短信出现异常", e);
+			}
+		}
+		// 每1分钟重置一次总数量与失败数量
+		ExamCaptureProcessStatisticController.resetAllFaceCompareCount();
+	}
 
 }