//package com.zteits.park.configuration.schedule; // //import java.util.List; //import java.util.concurrent.TimeUnit; // //import org.apache.curator.framework.CuratorFramework; //import org.apache.curator.framework.recipes.locks.InterProcessMutex; //import org.slf4j.Logger; //import org.slf4j.LoggerFactory; //import org.springframework.beans.factory.annotation.Autowired; //import org.springframework.context.annotation.Conditional; //import org.springframework.scheduling.annotation.Scheduled; //import org.springframework.stereotype.Component; // //import org.apache.commons.collections4.CollectionUtils; //import org.apache.commons.lang3.StringUtils; //import com.clouds.common.cache.sys.SysCodeValueCacheUtil; //import com.clouds.common.constants.CodeValKindEnum; //import com.clouds.common.constants.ParkConstant; //import com.zteits.park.configuration.mail.MailService; //import com.zteits.park.configuration.zookeeper.ZkClientFactory; //import com.zteits.park.constant.ZKConstant; //import com.zteits.park.domain.TpPExceptionLogExample; //import com.zteits.park.domain.TpPExceptionLogWithBLOBs; //import com.zteits.park.mapper.TpPExceptionLogMapper; // ///** // * 显示异常信息
// * // * Copyright: Copyright (c) 2017 zteits // * // * @ClassName: ParkingLotHeatMapHourJob.java // * @Description: // * @version: v1.0.0 // * @author: wangfs // * @date: 2017年7月10日 下午5:24:36 // * Modification History: // * Date Author Version Description // *---------------------------------------------------------* // * 2017年7月10日 wangfs v1.0.0 创建 // */ //@Conditional(GetExceptionMsgCondition.class) //@Component("com.zteits.park.configuration.schedule.GetExceptionMsgSchedule") //public class GetExceptionMsgSchedule{ // private static final Logger logger = LoggerFactory.getLogger(GetExceptionMsgSchedule.class); // // @Autowired // private TpPExceptionLogMapper exceptionLogMapper; // @Autowired // private MailService mailService; // @Autowired // private ZkClientFactory zkClientFactory; // /** // * 30分钟一次 // * @throws Exception // * 2017年9月15日 zhaowg // */ // @Scheduled(cron="0 30 * * * ?") // public void execute() throws Exception { // logger.info("============================开始查询异常表=============================="); // CuratorFramework client = zkClientFactory.getZKClient(); // InterProcessMutex lock = new InterProcessMutex(client, ZKConstant.GETEXCEPTION_LOCK_PATH); // try { // if (lock.acquire(10 * 1000, TimeUnit.SECONDS)) { // logger.info("============================获取锁成功,开始查询异常表=============================="); // this.getExceptionMsg(); // }else{ // logger.info("============================获取锁失败,不查询异常表=============================="); // } // } catch (Exception e) { // e.printStackTrace(); // } finally { // try { // lock.release(); // } catch (Exception e) { // e.printStackTrace(); // } // } // logger.info("============================查询异常表结束=============================="); // } // // private void getExceptionMsg() { // //获取要发送的邮箱 // String mailAddrs = SysCodeValueCacheUtil.queryCodeValue(CodeValKindEnum.PARK_SEND_MAIL_ADDRS); // if(StringUtils.isBlank(mailAddrs)){ // logger.info("查询异常表,邮件地址为空,不发送邮件"); // return; // } // // TpPExceptionLogExample example = new TpPExceptionLogExample(); // //example.createCriteria() // //.andDealStatusEqualTo(ParkConstant.TpPException.NO_DEALED); // example.setOrderByClause("create_time desc"); // List list = exceptionLogMapper.selectByExampleWithBLOBs(example ); // if(CollectionUtils.isEmpty(list)){ // logger.info("异常表数据为空,直接返回成功"); // return; // } // StringBuilder content = new StringBuilder(); // content.append("发现异常信息条数为:"+list.size()+",请及时查看,具体详细信息请到PARK->Tp_p_Exception表中查看。"); // content.append("最新的两条堆栈信息为:"); // TpPExceptionLogWithBLOBs e; // //最多只发送最新的前2条异常信息,防止内容过多 // for (int i=0;i<(2>list.size()?list.size():2);i++) { // e = list.get(i); // content.append("业务描述:"+e.getBusiDesc()); // content.append("堆栈信息:"+e.getErrorMsg()); // //更新该异常信息状态为-未处理-已告警 // TpPExceptionLogWithBLOBs record = new TpPExceptionLogWithBLOBs(); // record.setId(e.getId()); // //record.setDealStatus(ParkConstant.TpPException.ALARM); // exceptionLogMapper.updateByPrimaryKeySelective(record); // } // // String[] address = mailAddrs.split(","); // for (String addr : address) { // //暂时没有开启线程,因为该任务30分钟执行一次,不存在高并发阻塞等待 // //TODO 后期修改为MQ // mailService.sendSimpleMail(addr, "扫描PARK域异常表获取的异常信息", content.toString()); // } // } //}