diff --git a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/task/PushArticleTask.java b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/task/PushArticleTask.java index 5c65f71..a4a9f11 100644 --- a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/task/PushArticleTask.java +++ b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/task/PushArticleTask.java @@ -41,9 +41,9 @@ public class PushArticleTask { private LymsDictService lymsDictService; /** - * 每天上午9点执行文章推送 + * 每天18点执行文章推送 */ - @Scheduled(cron = "0 0 9 * * ?") + @Scheduled(cron = "0 0 18 * * ?") public void pushArtcle(){ String token= AccessTokenServlet.accessToken; Map param=new HashMap<>(); @@ -53,7 +53,7 @@ public class PushArticleTask { log.debug("开始给患者推送文章>>>>>>"); //从LymsPushMessages记录表查询今天0点筛选出要推送的文章 QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.apply("TO_DAYS(created_time) = TO_DAYS(NOW()) and state=0"); + queryWrapper.apply("TO_DAYS(created_time) = TO_DAYS(NOW()) and state=0");//防止重复 List lymsPushMessages=lymsPushMessagesService.list(queryWrapper); for (LymsPushMessages lymsPushMessage : lymsPushMessages) { try { @@ -63,96 +63,98 @@ public class PushArticleTask { pushedart.setAid(lymsPushMessage.getAid()); pushedart.setCreatedtime(new Date()); pushedart.setIsread((byte) 0); - //PushedartId(如果null表示需要推送文章,否则需要推送短消息) - if(null!=lymsPushMessage.getPushedartId()){ + //获取token失败 + if(StringUtil.isEmpty(token)){ + //更新到LymsPushMessages记录 + lymsPushMessage.setState(2);//推送状态:0待推送 1成功 2失败。(在备注写失败原因) + lymsPushMessage.setRemark("推送短消息"+(lymsPushMessage.getIsweixinOne()==1?"1":"2")+",获取token失败!"); + lymsPushMessage.setPushTime(new Date()); + lymsPushMessagesService.updateById(lymsPushMessage); + //更新到LymsPushedart记录 + if(null==lymsPushMessage.getPushedartId()){ + pushedart.setIsweixinone(2);//是否推送短消息1(0否,1是 2推送失败) + }else { + pushedart.setIsweixintwo(2);//是否推送短消息2(0否,1是 2推送失败) + } + //LymsPushedart的主键id赋值,表示修改。找到以前的推送记录,修改短文字的推送状态 + pushedart.setId(lymsPushMessage.getPushedartId()); + lymsPushedartService.saveOrUpdate(pushedart); + log.info("推送短消息"+(lymsPushMessage.getIsweixinOne()==1?"1":"2")+",获取token失败!"); + continue; + } + //公众号openId为空 + if(StringUtil.isEmpty(lymsPushMessage.getGzopenid())){ + //更新到LymsPushMessages记录 + lymsPushMessage.setState(2);//推送状态:0待推送 1成功 2失败。(在备注写失败原因) + lymsPushMessage.setRemark(lymsPushMessage.getPname()+":公众号openId为空!"); + lymsPushMessage.setPushTime(new Date()); + lymsPushMessagesService.updateById(lymsPushMessage); + //更新到LymsPushedart记录 + if(null==lymsPushMessage.getPushedartId()){ + pushedart.setIsweixinone(2);//是否推送短消息1(0否,1是 2推送失败) + }else { + pushedart.setIsweixintwo(2);//是否推送短消息2(0否,1是 2推送失败) + } //LymsPushedart的主键id赋值,表示修改。找到以前的推送记录,修改短文字的推送状态 pushedart.setId(lymsPushMessage.getPushedartId()); - //获取token失败 - if(StringUtil.isEmpty(token)){ + lymsPushedartService.saveOrUpdate(pushedart); + log.info(lymsPushMessage.getPname()+":公众号openId为空!"); + continue; + } + if(lymsPushMessage.getIsweixinOne()==1&&null==lymsPushMessage.getPushedartId()){ + //推送微信消息1 + Map map=new HashMap<>(); + map.put("first",new DataEntity(lymsPushMessage.getWeixTextOne(),"#173177")); + map.put("keyword1",new DataEntity(lymsPushMessage.getPname(),"#173177")); + map.put("keyword2",new DataEntity(lymsPushMessage.getHname(),"#173177")); + map.put("keyword3",new DataEntity(lymsPushMessage.getDname(),"#173177")); + map.put("remark",new DataEntity("预祝您早日康复","#173177")); + Integer code= WeiXinUtil.SendWeChatMsg(token,lymsPushMessage.getGzopenid(), Constant.GZ_TEMPLATE_ID,map); + if(null==code||code!=0){ //更新到LymsPushMessages记录 - lymsPushMessage.setState(2);//推送状态:0待推送(9点开始推送) 1成功 2失败。(在备注写失败原因) - lymsPushMessage.setRemark("推送短消息"+(lymsPushMessage.getIsweixinOne()==1?"1":"2")+",获取token失败!"); + lymsPushMessage.setState(2);//推送状态:0待推送 1成功 2失败。(在备注写失败原因) + lymsPushMessage.setRemark("推送短消息1失败。。。"+lymsPushMessage.getPname()+"; code:"+code); lymsPushMessage.setPushTime(new Date()); lymsPushMessagesService.updateById(lymsPushMessage); //更新到LymsPushedart记录 - if(lymsPushMessage.getIsweixinOne()==1){ - pushedart.setIsweixinone(2);//是否推送短消息1(0否,1是 2推送失败) - }else { - pushedart.setIsweixintwo(2);//是否推送短消息2(0否,1是 2推送失败) - } - lymsPushedartService.updateById(pushedart); - log.info("推送短消息"+(lymsPushMessage.getIsweixinOne()==1?"1":"2")+",获取token失败!"); - continue; + pushedart.setIsweixinone(2);//是否推送短消息1(0否,1是 2推送失败) + //LymsPushedart的主键id赋值,表示修改。找到以前的推送记录,修改短文字的推送状态 + pushedart.setId(lymsPushMessage.getPushedartId()); + lymsPushedartService.saveOrUpdate(pushedart); + log.info("推送短消息1失败!"+lymsPushMessage.getPname()+"; code:"+code); } - //公众号openId为空 - if(StringUtil.isEmpty(lymsPushMessage.getGzopenid())){ + //成功标记记录1 + pushedart.setIsweixinone(1);//是否推送短消息1(0否,1是 2推送失败) + }else if(lymsPushMessage.getIsweixinTwo()==1){ + //LymsPushedart的主键id赋值,表示修改。找到以前的推送记录,修改短文字的推送状态 + pushedart.setId(lymsPushMessage.getPushedartId()); + //推送微信消息2 + Map map=new HashMap<>(); + map.put("first",new DataEntity(lymsPushMessage.getWeixTextTwo(),"#173177")); + map.put("keyword1",new DataEntity(lymsPushMessage.getPname(),"#173177")); + map.put("keyword2",new DataEntity(lymsPushMessage.getHname(),"#173177")); + map.put("keyword3",new DataEntity(lymsPushMessage.getDname(),"#173177")); + map.put("remark",new DataEntity("预祝您早日康复","#173177")); + Integer code= WeiXinUtil.SendWeChatMsg(token,lymsPushMessage.getGzopenid(),Constant.GZ_TEMPLATE_ID,map); + if(null==code||code!=0){ //更新到LymsPushMessages记录 - lymsPushMessage.setState(2);//推送状态:0待推送(9点开始推送) 1成功 2失败。(在备注写失败原因) - lymsPushMessage.setRemark(lymsPushMessage.getPname()+":公众号openId为空!"); + lymsPushMessage.setState(2);//推送状态:0待推送 1成功 2失败。(在备注写失败原因) + lymsPushMessage.setRemark("推送短消息2失败!"+lymsPushMessage.getPname()+"; code:"+code); lymsPushMessage.setPushTime(new Date()); lymsPushMessagesService.updateById(lymsPushMessage); //更新到LymsPushedart记录 - if(lymsPushMessage.getIsweixinOne()==1){ - pushedart.setIsweixinone(2);//是否推送短消息1(0否,1是 2推送失败) - }else { - pushedart.setIsweixintwo(2);//是否推送短消息2(0否,1是 2推送失败) - } - lymsPushedartService.updateById(pushedart); - log.info(lymsPushMessage.getPname()+":公众号openId为空!"); + pushedart.setIsweixintwo(2);//是否推送短消息2(0否,1是 2推送失败) + lymsPushedartService.saveOrUpdate(pushedart); + log.info("推送短消息2失败!"+lymsPushMessage.getPname()+"; code:"+code); continue; } - if(lymsPushMessage.getIsweixinOne()==1){ - //推送微信消息1 - Map map=new HashMap<>(); - map.put("first",new DataEntity(lymsPushMessage.getWeixTextOne(),"#173177")); - map.put("keyword1",new DataEntity(lymsPushMessage.getPname(),"#173177")); - map.put("keyword2",new DataEntity(lymsPushMessage.getHname(),"#173177")); - map.put("keyword3",new DataEntity(lymsPushMessage.getDname(),"#173177")); - map.put("remark",new DataEntity("预祝您早日康复","#173177")); - Integer code= WeiXinUtil.SendWeChatMsg(token,lymsPushMessage.getGzopenid(), Constant.GZ_TEMPLATE_ID,map); - if(null==code||code!=0){ - //更新到LymsPushMessages记录 - lymsPushMessage.setState(2);//推送状态:0待推送(9点开始推送) 1成功 2失败。(在备注写失败原因) - lymsPushMessage.setRemark("推送短消息1失败。。。"+lymsPushMessage.getPname()+"; code:"+code); - lymsPushMessage.setPushTime(new Date()); - lymsPushMessagesService.updateById(lymsPushMessage); - //更新到LymsPushedart记录 - pushedart.setIsweixinone(2);//是否推送短消息1(0否,1是 2推送失败) - lymsPushedartService.updateById(pushedart); - log.info("推送短消息1失败!"+lymsPushMessage.getPname()+"; code:"+code); - continue; - } - //成功标记记录1 - pushedart.setIsweixinone(1);//是否推送短消息1(0否,1是 2推送失败) - }else if(lymsPushMessage.getIsweixinTwo()==1){ - //推送微信消息2 - Map map=new HashMap<>(); - map.put("first",new DataEntity(lymsPushMessage.getWeixTextTwo(),"#173177")); - map.put("keyword1",new DataEntity(lymsPushMessage.getPname(),"#173177")); - map.put("keyword2",new DataEntity(lymsPushMessage.getHname(),"#173177")); - map.put("keyword3",new DataEntity(lymsPushMessage.getDname(),"#173177")); - map.put("remark",new DataEntity("预祝您早日康复","#173177")); - Integer code= WeiXinUtil.SendWeChatMsg(token,lymsPushMessage.getGzopenid(),Constant.GZ_TEMPLATE_ID,map); - if(null==code||code!=0){ - //更新到LymsPushMessages记录 - lymsPushMessage.setState(2);//推送状态:0待推送(9点开始推送) 1成功 2失败。(在备注写失败原因) - lymsPushMessage.setRemark("推送短消息2失败!"+lymsPushMessage.getPname()+"; code:"+code); - lymsPushMessage.setPushTime(new Date()); - lymsPushMessagesService.updateById(lymsPushMessage); - //更新到LymsPushedart记录 - pushedart.setIsweixintwo(2);//是否推送短消息2(0否,1是 2推送失败) - lymsPushedartService.updateById(pushedart); - log.info("推送短消息2失败!"+lymsPushMessage.getPname()+"; code:"+code); - continue; - } - //成功标记记录2 - pushedart.setIsweixintwo(1);//是否推送短消息1(0否,1是 2推送失败) - } + //成功标记记录2 + pushedart.setIsweixintwo(1);//是否推送短消息1(0否,1是 2推送失败) } //插入or更新到LymsPushedart记录 lymsPushedartService.saveOrUpdate(pushedart); //更新到LymsPushMessages记录 - lymsPushMessage.setState(1);//推送状态:0待推送(9点开始推送) 1成功 2失败。(在备注写失败原因) + lymsPushMessage.setState(1);//推送状态:0待推送 1成功 2失败。(在备注写失败原因) lymsPushMessage.setPushTime(new Date()); lymsPushMessagesService.updateById(lymsPushMessage); } catch (Exception e) { diff --git a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/task/PushArticleTaskData.java b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/task/PushArticleTaskData.java index 89faffe..ef7d706 100644 --- a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/task/PushArticleTaskData.java +++ b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/task/PushArticleTaskData.java @@ -45,14 +45,22 @@ public class PushArticleTaskData { private LymsDictService lymsDictService; /** - * 每天0点执行-要推送的文章存到数据库 + * 每天下17点执行-要推送的文章存到数据库 */ - @Scheduled(cron = "0 0 0 * * ?") + @Scheduled(cron = "0 0 17 * * ?") public void pushArtcleData(){ Map param=new HashMap<>(); param.put("vtype",999); List dcLst=lymsDictService.listByMap(param); + //防止重复 if (dcLst.size()>0 && dcLst.get(0).getCode()==1){ + QueryWrapper queryWrapper2 = new QueryWrapper<>(); + queryWrapper2.apply("TO_DAYS(created_time) = TO_DAYS(NOW()) and state in (0,1,2)"); + List list = lymsPushMessagesService.list(queryWrapper2); + if(!CollectionUtils.isEmpty(list)){ + log.info("要推送的文章已存在不需要再次推送>>>>>>"); + return; + } log.info("开始筛选"+(DateUtil.getDateTime(new Date(), YYYY_MM_DD))+"要推送的文章存入mysql>>>>>>"); //筛选出需要推送的文章信息-(逻辑详见视图) List pushArticleList=pushArticleService.list(); @@ -61,32 +69,31 @@ public class PushArticleTaskData { //需要推送文章的对象 LymsPushMessages lymsPushMessages=new LymsPushMessages(); BeanUtils.copyProperties(article,lymsPushMessages); - //查询推已推送的文章(如果null表示需要推送文章,否则需要推送短消息) + //查询推已推送的文章(如果null表示需要推送文章和短消息1,否则需要推送短消息2) QueryWrapper queryWrapper=new QueryWrapper<>(); queryWrapper.eq("pid", lymsPushMessages.getPid()); queryWrapper.eq("aid", lymsPushMessages.getAid()); - LymsPushedart lymsPushedart = lymsPushedartService.getOne(queryWrapper); - if(null!=lymsPushedart){ - //每次只推送一条短消息,判断推送短消息1还是2 - if(lymsPushedart.getIsweixinone()==0){//0未推送1已推送 - //标记要推送的记录需要推送短消息1 - lymsPushMessages.setIsweixinOne(1); - //存入已推送文章列表id - lymsPushMessages.setPushedartId(lymsPushedart.getId()); - }else if (lymsPushedart.getIsweixintwo()==0){//0未推送1已推送 - //标记要推送的记录需要推送短消息2 - lymsPushMessages.setIsweixinTwo(1); - //存入已推送文章列表id - lymsPushMessages.setPushedartId(lymsPushedart.getId()); - } + List lymsPushedartList = lymsPushedartService.list(queryWrapper); + if(!CollectionUtils.isEmpty(lymsPushedartList)&&lymsPushedartList.size()>1){ + log.info("数据不同步,不需要推送>>>>>>"); + return; } - //保存到要推送的表lyms_push_messages - List list = lymsPushMessagesService.list(new QueryWrapper<>(lymsPushMessages)); - if(!CollectionUtils.isEmpty(list)){ - log.info("要推送的文章已存在不需要再次推送>>>>>>"); - continue; + if(!CollectionUtils.isEmpty(lymsPushedartList)){ + //标记要推送的记录需要推送短消息2 + lymsPushMessages.setIsweixinTwo(1); + //存入已推送文章列表id + lymsPushMessages.setPushedartId(lymsPushedartList.get(0).getId()); + }else { + //标记要推送的记录需要推送短消息1 + lymsPushMessages.setIsweixinOne(1); + //需要推送的短消息1 + lymsPushMessagesService.save(lymsPushMessages); } + //标记要推送的文章-短消息1标记0 + lymsPushMessages.setIsweixinOne(0); + //保存到要推送的表lyms_push_messages需要推送的文章 lymsPushMessagesService.save(lymsPushMessages); + } catch (BeansException e) { e.printStackTrace(); }