NutzCN Logo
问答 写了定时器为什么不执行,请大神指点一下
发布于 2495天前 作者 qq_623db47e 1364 次浏览 复制 上一个帖子 下一个帖子
标签:

package com.xsy.sshs.casepush.service.impl;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.apache.http.ParseException;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xsy.sshs.casepush.pojo.CasePushBean;
import com.xsy.sshs.wechat.utils.IPUtil;
import com.xsy.sshs.wechatuser.dao.IUserDao;
import com.xsy.sshs.wechatuser.pojo.WechatUser;

import net.sf.json.JSONException;

public class Newpush {

private static Logger logger = Logger.getLogger(Newpush.class);
@Autowired
private IUserDao iUserDao;
@Value("${courtPath}")
private String courtPath;
@Value("${APPID}")
private String APPID;
@Value("${APPSECRET}")
private String APPSECRET;

// @Scheduled(cron="0 30 7 * * ?")
@Scheduled( cron="0/5 * * * * ?")
public void foreshowPush() {
SimpleDateFormat sdfin = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
long start1 = System.currentTimeMillis();
logger.debug("推送方法:" + start1+ ",日期:" + sdfin.format(new Date()));
for (int pageNumber = 1;pageNumber<Integer.MAX_VALUE; pageNumber++) {
try {
String previewCase = replaceStr(IPUtil.getPreviewCase(courtPath + "/weixin/previewCase?pageNumber=" + pageNumber));
logger.debug("当前for调用次数:"+pageNumber+"----------------------------------------------");
List caseList = getCasePush(previewCase);
if (caseList.size() < 400) {
logger.debug("****************无推送开播消息**************************");
break;
}
logger.debug("**************************************************");
for (int i=0;i<caseList.size();i++) {
WechatUser weChatUser = new WechatUser();
weChatUser.setBelongCourt(caseList.get(i).getCourtCode());
List wehcrat = iUserDao.findUserList(weChatUser);
logger.debug("当前用户数量:"+wehcrat.size());
if (wehcrat.size() <= 0) {
logger.debug("当前CourtCode为:" + caseList.get(i).getCourtCode());
}
if (wehcrat.size() > 0) {
for (int j = 0; j < wehcrat.size(); j++) {
// 消息模板推送
try {
// Date date = new Date(new Long(casePush.getBeginTime()));

                   // if (isSameDate(new Date(), date)) {
                   // SendOrderPaySuccessMsg.send_casePush_message(null,
                  // APPID, APPSECRET,
                   // wehcrat.get(i).getWechatUuid(), casePush);
                   // }
                   SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                   long start = System.currentTimeMillis();
                   logger.debug("当前推送次数:"+j);
                   logger.debug("推送前的信息:" + "法院code:" + caseList.get(i).getCourtCode() + ",被推送用户:"
                        + wehcrat.get(j).getWechatName() + sdf.format(start));

// try {
// SendOrderPaySuccessMsg.send_casePush_message(null, APPID, APPSECRET,
// wehcrat.get(j).getWechatUuid(), caseList.get(i));
// } catch (java.text.ParseException e) {
// TODO Auto-generated catch block
// e.printStackTrace();
// }
} catch (ParseException e) {
e.printStackTrace();
}
}
}
}

       } catch (IOException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
       }
    }
}

public static List<CasePushBean> getCasePush(String jsonStr) throws ParseException, IOException {
    List<CasePushBean> list = new ArrayList<CasePushBean>();
    try {
       JSONObject jsonObj1 = JSON.parseObject(jsonStr);
       JSONObject jsonObj2 = jsonObj1.getJSONObject("data");
       JSONArray jsonArray = jsonObj2.getJSONArray("caseList");
       for (int i = 0; i < jsonArray.size(); i++) {
         JSONObject jsonObject = jsonArray.getJSONObject(i);
         CasePushBean casePush = new CasePushBean();
         casePush.setCaseId(jsonObject.getString("caseId"));
         casePush.setCourtCode(jsonObject.getString("courtCode"));
         casePush.setCaseNo(jsonObject.getString("caseNo"));
         casePush.setLiveId(jsonObject.getString("liveId"));
         casePush.setVideoId(jsonObject.getString("videoId"));
         casePush.setTitle(jsonObject.getString("title"));
         casePush.setBeginTime(jsonObject.getString("beginTime"));
         casePush.setLiveState(jsonObject.getString("liveState"));
         casePush.setDescription(jsonObject.getString("description"));
         casePush.setVideoThumbnail(jsonObject.getString("videoThumbnail"));
         casePush.setThumbnail(jsonObject.getString("thumbnail"));
         casePush.setDefaultImg(jsonObject.getString("defaultImg"));
         casePush.setRoomId(jsonObject.getString("roomId"));
         casePush.setRoomName(jsonObject.getString("roomName"));
         casePush.setCourtName(jsonObject.getString("courtName"));
         casePush.setJudge(jsonObject.getString("judge"));
         list.add(casePush);
       }
    } catch (JSONException e) {
    }
    logger.debug("取出结果开始+++++++++++++++++++++++++++++++++");

System.out.println("取出来的所有接口数据"+JSON.toJSONString(list));
logger.debug("取出结果结束---------------------------------");
return list;
}

private boolean isSameDate(Date date1, Date date2) {
    Calendar cal1 = Calendar.getInstance();
    cal1.setTime(date1);
    Calendar cal2 = Calendar.getInstance();
    cal2.setTime(date2);
    boolean isSameYear = cal1.get(Calendar.YEAR) == cal2.get(Calendar.YEAR);
    boolean isSameMonth = isSameYear && cal1.get(Calendar.MONTH) == cal2.get(Calendar.MONTH);
    boolean isSameDate = isSameMonth && cal1.get(Calendar.DAY_OF_MONTH) == cal2.get(Calendar.DAY_OF_MONTH);
    return isSameDate;
}

private String replaceStr(String str) {
    String dest = "";
    if (str != null) {
       Pattern p = Pattern.compile("\\s*|\t|\r|\n");
       Matcher m = p.matcher(str);
       dest = m.replaceAll("");
    }
    dest.replace("\\", "");
    return dest;
}

}

8 回复

用 插入代码 按钮啊!

怎么写啊,没用过啊

package com.xsy.sshs.casepush.service.impl;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.apache.http.ParseException;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xsy.sshs.casepush.pojo.CasePushBean;
import com.xsy.sshs.wechat.utils.IPUtil;
import com.xsy.sshs.wechatuser.dao.IUserDao;
import com.xsy.sshs.wechatuser.pojo.WechatUser;

import net.sf.json.JSONException;

public class Newpush {

	private static Logger logger = Logger.getLogger(Newpush.class);
	@Autowired
	private IUserDao iUserDao;
	@Value("${courtPath}")
	private String courtPath;
	@Value("${APPID}")
	private String APPID;
	@Value("${APPSECRET}")
	private String APPSECRET;

 //   @Scheduled(cron="0 30 7 * * ?")
      @Scheduled( cron="0/5 * * * * ?")
  	public void foreshowPush() {
    	SimpleDateFormat sdfin = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		long start1 = System.currentTimeMillis();
    	logger.debug("推送方法:" + start1+ ",日期:" + sdfin.format(new Date()));
		for (int pageNumber = 1;pageNumber<Integer.MAX_VALUE; pageNumber++) {
			try {
				String previewCase = replaceStr(IPUtil.getPreviewCase(courtPath + "/weixin/previewCase?pageNumber=" + pageNumber));
				logger.debug("当前for调用次数:"+pageNumber+"----------------------------------------------");
				List<CasePushBean> caseList = getCasePush(previewCase);
				if (caseList.size() < 400) {
					logger.debug("****************无推送开播消息**************************");
					break;
				}
				logger.debug("**************************************************");
				for (int i=0;i<caseList.size();i++) {
					WechatUser weChatUser = new WechatUser();
					weChatUser.setBelongCourt(caseList.get(i).getCourtCode());
					List<WechatUser> wehcrat = iUserDao.findUserList(weChatUser);
					logger.debug("当前用户数量:"+wehcrat.size());
					if (wehcrat.size() <= 0) {
						logger.debug("当前CourtCode为:" + caseList.get(i).getCourtCode());
					}
					if (wehcrat.size() > 0) {
						for (int j = 0; j < wehcrat.size(); j++) {
							// 消息模板推送
							try {
//								Date date = new Date(new Long(casePush.getBeginTime()));

								// if (isSameDate(new Date(), date)) {
								// SendOrderPaySuccessMsg.send_casePush_message(null,
		 						// APPID, APPSECRET,
								// wehcrat.get(i).getWechatUuid(), casePush);
								// }
								SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
								long start = System.currentTimeMillis();
								logger.debug("当前推送次数:"+j);
								logger.debug("推送前的信息:" + "法院code:" + caseList.get(i).getCourtCode() + ",被推送用户:"
										+ wehcrat.get(j).getWechatName() + sdf.format(start));
//								try {
//									SendOrderPaySuccessMsg.send_casePush_message(null, APPID, APPSECRET,
//											wehcrat.get(j).getWechatUuid(), caseList.get(i));
//								} catch (java.text.ParseException e) {
									// TODO Auto-generated catch block
//									e.printStackTrace();
//								}
							} catch (ParseException e) {
								e.printStackTrace();
							}
						}
					}
				}

			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}

	public static List<CasePushBean> getCasePush(String jsonStr) throws ParseException, IOException {
		List<CasePushBean> list = new ArrayList<CasePushBean>();
		try {
			JSONObject jsonObj1 = JSON.parseObject(jsonStr);
			JSONObject jsonObj2 = jsonObj1.getJSONObject("data");
			JSONArray jsonArray = jsonObj2.getJSONArray("caseList");
			for (int i = 0; i < jsonArray.size(); i++) {
				JSONObject jsonObject = jsonArray.getJSONObject(i);
				CasePushBean casePush = new CasePushBean();
				casePush.setCaseId(jsonObject.getString("caseId"));
				casePush.setCourtCode(jsonObject.getString("courtCode"));
				casePush.setCaseNo(jsonObject.getString("caseNo"));
				casePush.setLiveId(jsonObject.getString("liveId"));
				casePush.setVideoId(jsonObject.getString("videoId"));
				casePush.setTitle(jsonObject.getString("title"));
				casePush.setBeginTime(jsonObject.getString("beginTime"));
				casePush.setLiveState(jsonObject.getString("liveState"));
				casePush.setDescription(jsonObject.getString("description"));
				casePush.setVideoThumbnail(jsonObject.getString("videoThumbnail"));
				casePush.setThumbnail(jsonObject.getString("thumbnail"));
				casePush.setDefaultImg(jsonObject.getString("defaultImg"));
				casePush.setRoomId(jsonObject.getString("roomId"));
				casePush.setRoomName(jsonObject.getString("roomName"));
				casePush.setCourtName(jsonObject.getString("courtName"));
				casePush.setJudge(jsonObject.getString("judge"));
				list.add(casePush);
			}
		} catch (JSONException e) {
		}
		logger.debug("取出结果开始+++++++++++++++++++++++++++++++++");
 		System.out.println("取出来的所有接口数据"+JSON.toJSONString(list));
 		logger.debug("取出结果结束---------------------------------");
		return list;
	}

	private boolean isSameDate(Date date1, Date date2) {
		Calendar cal1 = Calendar.getInstance();
		cal1.setTime(date1);
		Calendar cal2 = Calendar.getInstance();
		cal2.setTime(date2);
		boolean isSameYear = cal1.get(Calendar.YEAR) == cal2.get(Calendar.YEAR);
		boolean isSameMonth = isSameYear && cal1.get(Calendar.MONTH) == cal2.get(Calendar.MONTH);
		boolean isSameDate = isSameMonth && cal1.get(Calendar.DAY_OF_MONTH) == cal2.get(Calendar.DAY_OF_MONTH);
		return isSameDate;
	}

	private String replaceStr(String str) {
		String dest = "";
		if (str != null) {
			Pattern p = Pattern.compile("\\s*|\t|\r|\n");
			Matcher m = p.matcher(str);
			dest = m.replaceAll("");
		}
		dest.replace("\\", "");
		return dest;
	}
	


}

远远望去,不见nutz之踪迹,陌生却又感觉似曾相识的spring注解映入眼帘....不需要在类上加点注解嘛?比如ioc方面的?

好了确实是少了注入
@Component
public class Newpush {

private static Logger logger = Logger.getLogger(Newpush.class);
@Autowired
private IUserDao iUserDao;
@Value("${courtPath}")
private String courtPath;
@Value("${APPID}")
private String APPID;
@Value("${APPSECRET}")
private String APPSECRET;

```

这个是别人留给我的二手项目所以没有nutz,我自己的都有

大神帮我看看什么这个定时器执行了三次

添加回复
请先登陆
回到顶部