Commit 7812e91ec9f0673dcbd658ce1c9109f908bca8c5

Authored by shiyang
1 parent 82eb0e6690
Exists in master

update

Showing 2 changed files with 107 additions and 98 deletions

talkonlineweb/src/main/java/com/lyms/talkonlineweb/task/PushArticleTask.java View file @ 7812e91
... ... @@ -41,9 +41,9 @@
41 41 private LymsDictService lymsDictService;
42 42  
43 43 /**
44   - * 每天上午9点执行文章推送
  44 + * 每天18点执行文章推送
45 45 */
46   - @Scheduled(cron = "0 0 9 * * ?")
  46 + @Scheduled(cron = "0 0 18 * * ?")
47 47 public void pushArtcle(){
48 48 String token= AccessTokenServlet.accessToken;
49 49 Map<String,Object> param=new HashMap<>();
... ... @@ -53,7 +53,7 @@
53 53 log.debug("开始给患者推送文章>>>>>>");
54 54 //从LymsPushMessages记录表查询今天0点筛选出要推送的文章
55 55 QueryWrapper<LymsPushMessages> queryWrapper = new QueryWrapper<>();
56   - queryWrapper.apply("TO_DAYS(created_time) = TO_DAYS(NOW()) and state=0");
  56 + queryWrapper.apply("TO_DAYS(created_time) = TO_DAYS(NOW()) and state=0");//防止重复
57 57 List<LymsPushMessages> lymsPushMessages=lymsPushMessagesService.list(queryWrapper);
58 58 for (LymsPushMessages lymsPushMessage : lymsPushMessages) {
59 59 try {
60 60  
61 61  
62 62  
63 63  
64 64  
65 65  
66 66  
67 67  
... ... @@ -63,96 +63,98 @@
63 63 pushedart.setAid(lymsPushMessage.getAid());
64 64 pushedart.setCreatedtime(new Date());
65 65 pushedart.setIsread((byte) 0);
66   - //PushedartId(如果null表示需要推送文章,否则需要推送短消息)
67   - if(null!=lymsPushMessage.getPushedartId()){
  66 + //获取token失败
  67 + if(StringUtil.isEmpty(token)){
  68 + //更新到LymsPushMessages记录
  69 + lymsPushMessage.setState(2);//推送状态:0待推送 1成功 2失败。(在备注写失败原因)
  70 + lymsPushMessage.setRemark("推送短消息"+(lymsPushMessage.getIsweixinOne()==1?"1":"2")+",获取token失败!");
  71 + lymsPushMessage.setPushTime(new Date());
  72 + lymsPushMessagesService.updateById(lymsPushMessage);
  73 + //更新到LymsPushedart记录
  74 + if(null==lymsPushMessage.getPushedartId()){
  75 + pushedart.setIsweixinone(2);//是否推送短消息1(0否,1是 2推送失败)
  76 + }else {
  77 + pushedart.setIsweixintwo(2);//是否推送短消息2(0否,1是 2推送失败)
  78 + }
68 79 //LymsPushedart的主键id赋值,表示修改。找到以前的推送记录,修改短文字的推送状态
69 80 pushedart.setId(lymsPushMessage.getPushedartId());
70   - //获取token失败
71   - if(StringUtil.isEmpty(token)){
  81 + lymsPushedartService.saveOrUpdate(pushedart);
  82 + log.info("推送短消息"+(lymsPushMessage.getIsweixinOne()==1?"1":"2")+",获取token失败!");
  83 + continue;
  84 + }
  85 + //公众号openId为空
  86 + if(StringUtil.isEmpty(lymsPushMessage.getGzopenid())){
  87 + //更新到LymsPushMessages记录
  88 + lymsPushMessage.setState(2);//推送状态:0待推送 1成功 2失败。(在备注写失败原因)
  89 + lymsPushMessage.setRemark(lymsPushMessage.getPname()+":公众号openId为空!");
  90 + lymsPushMessage.setPushTime(new Date());
  91 + lymsPushMessagesService.updateById(lymsPushMessage);
  92 + //更新到LymsPushedart记录
  93 + if(null==lymsPushMessage.getPushedartId()){
  94 + pushedart.setIsweixinone(2);//是否推送短消息1(0否,1是 2推送失败)
  95 + }else {
  96 + pushedart.setIsweixintwo(2);//是否推送短消息2(0否,1是 2推送失败)
  97 + }
  98 + //LymsPushedart的主键id赋值,表示修改。找到以前的推送记录,修改短文字的推送状态
  99 + pushedart.setId(lymsPushMessage.getPushedartId());
  100 + lymsPushedartService.saveOrUpdate(pushedart);
  101 + log.info(lymsPushMessage.getPname()+":公众号openId为空!");
  102 + continue;
  103 + }
  104 + if(lymsPushMessage.getIsweixinOne()==1&&null==lymsPushMessage.getPushedartId()){
  105 + //推送微信消息1
  106 + Map<String,Object> map=new HashMap<>();
  107 + map.put("first",new DataEntity(lymsPushMessage.getWeixTextOne(),"#173177"));
  108 + map.put("keyword1",new DataEntity(lymsPushMessage.getPname(),"#173177"));
  109 + map.put("keyword2",new DataEntity(lymsPushMessage.getHname(),"#173177"));
  110 + map.put("keyword3",new DataEntity(lymsPushMessage.getDname(),"#173177"));
  111 + map.put("remark",new DataEntity("预祝您早日康复","#173177"));
  112 + Integer code= WeiXinUtil.SendWeChatMsg(token,lymsPushMessage.getGzopenid(), Constant.GZ_TEMPLATE_ID,map);
  113 + if(null==code||code!=0){
72 114 //更新到LymsPushMessages记录
73   - lymsPushMessage.setState(2);//推送状态:0待推送(9点开始推送) 1成功 2失败。(在备注写失败原因)
74   - lymsPushMessage.setRemark("推送短消息"+(lymsPushMessage.getIsweixinOne()==1?"1":"2")+",获取token失败!");
  115 + lymsPushMessage.setState(2);//推送状态:0待推送 1成功 2失败。(在备注写失败原因)
  116 + lymsPushMessage.setRemark("推送短消息1失败。。。"+lymsPushMessage.getPname()+"; code:"+code);
75 117 lymsPushMessage.setPushTime(new Date());
76 118 lymsPushMessagesService.updateById(lymsPushMessage);
77 119 //更新到LymsPushedart记录
78   - if(lymsPushMessage.getIsweixinOne()==1){
79   - pushedart.setIsweixinone(2);//是否推送短消息1(0否,1是 2推送失败)
80   - }else {
81   - pushedart.setIsweixintwo(2);//是否推送短消息2(0否,1是 2推送失败)
82   - }
83   - lymsPushedartService.updateById(pushedart);
84   - log.info("推送短消息"+(lymsPushMessage.getIsweixinOne()==1?"1":"2")+",获取token失败!");
85   - continue;
  120 + pushedart.setIsweixinone(2);//是否推送短消息1(0否,1是 2推送失败)
  121 + //LymsPushedart的主键id赋值,表示修改。找到以前的推送记录,修改短文字的推送状态
  122 + pushedart.setId(lymsPushMessage.getPushedartId());
  123 + lymsPushedartService.saveOrUpdate(pushedart);
  124 + log.info("推送短消息1失败!"+lymsPushMessage.getPname()+"; code:"+code);
86 125 }
87   - //公众号openId为空
88   - if(StringUtil.isEmpty(lymsPushMessage.getGzopenid())){
  126 + //成功标记记录1
  127 + pushedart.setIsweixinone(1);//是否推送短消息1(0否,1是 2推送失败)
  128 + }else if(lymsPushMessage.getIsweixinTwo()==1){
  129 + //LymsPushedart的主键id赋值,表示修改。找到以前的推送记录,修改短文字的推送状态
  130 + pushedart.setId(lymsPushMessage.getPushedartId());
  131 + //推送微信消息2
  132 + Map<String,Object> map=new HashMap<>();
  133 + map.put("first",new DataEntity(lymsPushMessage.getWeixTextTwo(),"#173177"));
  134 + map.put("keyword1",new DataEntity(lymsPushMessage.getPname(),"#173177"));
  135 + map.put("keyword2",new DataEntity(lymsPushMessage.getHname(),"#173177"));
  136 + map.put("keyword3",new DataEntity(lymsPushMessage.getDname(),"#173177"));
  137 + map.put("remark",new DataEntity("预祝您早日康复","#173177"));
  138 + Integer code= WeiXinUtil.SendWeChatMsg(token,lymsPushMessage.getGzopenid(),Constant.GZ_TEMPLATE_ID,map);
  139 + if(null==code||code!=0){
89 140 //更新到LymsPushMessages记录
90   - lymsPushMessage.setState(2);//推送状态:0待推送(9点开始推送) 1成功 2失败。(在备注写失败原因)
91   - lymsPushMessage.setRemark(lymsPushMessage.getPname()+":公众号openId为空!");
  141 + lymsPushMessage.setState(2);//推送状态:0待推送 1成功 2失败。(在备注写失败原因)
  142 + lymsPushMessage.setRemark("推送短消息2失败!"+lymsPushMessage.getPname()+"; code:"+code);
92 143 lymsPushMessage.setPushTime(new Date());
93 144 lymsPushMessagesService.updateById(lymsPushMessage);
94 145 //更新到LymsPushedart记录
95   - if(lymsPushMessage.getIsweixinOne()==1){
96   - pushedart.setIsweixinone(2);//是否推送短消息1(0否,1是 2推送失败)
97   - }else {
98   - pushedart.setIsweixintwo(2);//是否推送短消息2(0否,1是 2推送失败)
99   - }
100   - lymsPushedartService.updateById(pushedart);
101   - log.info(lymsPushMessage.getPname()+":公众号openId为空!");
  146 + pushedart.setIsweixintwo(2);//是否推送短消息2(0否,1是 2推送失败)
  147 + lymsPushedartService.saveOrUpdate(pushedart);
  148 + log.info("推送短消息2失败!"+lymsPushMessage.getPname()+"; code:"+code);
102 149 continue;
103 150 }
104   - if(lymsPushMessage.getIsweixinOne()==1){
105   - //推送微信消息1
106   - Map<String,Object> map=new HashMap<>();
107   - map.put("first",new DataEntity(lymsPushMessage.getWeixTextOne(),"#173177"));
108   - map.put("keyword1",new DataEntity(lymsPushMessage.getPname(),"#173177"));
109   - map.put("keyword2",new DataEntity(lymsPushMessage.getHname(),"#173177"));
110   - map.put("keyword3",new DataEntity(lymsPushMessage.getDname(),"#173177"));
111   - map.put("remark",new DataEntity("预祝您早日康复","#173177"));
112   - Integer code= WeiXinUtil.SendWeChatMsg(token,lymsPushMessage.getGzopenid(), Constant.GZ_TEMPLATE_ID,map);
113   - if(null==code||code!=0){
114   - //更新到LymsPushMessages记录
115   - lymsPushMessage.setState(2);//推送状态:0待推送(9点开始推送) 1成功 2失败。(在备注写失败原因)
116   - lymsPushMessage.setRemark("推送短消息1失败。。。"+lymsPushMessage.getPname()+"; code:"+code);
117   - lymsPushMessage.setPushTime(new Date());
118   - lymsPushMessagesService.updateById(lymsPushMessage);
119   - //更新到LymsPushedart记录
120   - pushedart.setIsweixinone(2);//是否推送短消息1(0否,1是 2推送失败)
121   - lymsPushedartService.updateById(pushedart);
122   - log.info("推送短消息1失败!"+lymsPushMessage.getPname()+"; code:"+code);
123   - continue;
124   - }
125   - //成功标记记录1
126   - pushedart.setIsweixinone(1);//是否推送短消息1(0否,1是 2推送失败)
127   - }else if(lymsPushMessage.getIsweixinTwo()==1){
128   - //推送微信消息2
129   - Map<String,Object> map=new HashMap<>();
130   - map.put("first",new DataEntity(lymsPushMessage.getWeixTextTwo(),"#173177"));
131   - map.put("keyword1",new DataEntity(lymsPushMessage.getPname(),"#173177"));
132   - map.put("keyword2",new DataEntity(lymsPushMessage.getHname(),"#173177"));
133   - map.put("keyword3",new DataEntity(lymsPushMessage.getDname(),"#173177"));
134   - map.put("remark",new DataEntity("预祝您早日康复","#173177"));
135   - Integer code= WeiXinUtil.SendWeChatMsg(token,lymsPushMessage.getGzopenid(),Constant.GZ_TEMPLATE_ID,map);
136   - if(null==code||code!=0){
137   - //更新到LymsPushMessages记录
138   - lymsPushMessage.setState(2);//推送状态:0待推送(9点开始推送) 1成功 2失败。(在备注写失败原因)
139   - lymsPushMessage.setRemark("推送短消息2失败!"+lymsPushMessage.getPname()+"; code:"+code);
140   - lymsPushMessage.setPushTime(new Date());
141   - lymsPushMessagesService.updateById(lymsPushMessage);
142   - //更新到LymsPushedart记录
143   - pushedart.setIsweixintwo(2);//是否推送短消息2(0否,1是 2推送失败)
144   - lymsPushedartService.updateById(pushedart);
145   - log.info("推送短消息2失败!"+lymsPushMessage.getPname()+"; code:"+code);
146   - continue;
147   - }
148   - //成功标记记录2
149   - pushedart.setIsweixintwo(1);//是否推送短消息1(0否,1是 2推送失败)
150   - }
  151 + //成功标记记录2
  152 + pushedart.setIsweixintwo(1);//是否推送短消息1(0否,1是 2推送失败)
151 153 }
152 154 //插入or更新到LymsPushedart记录
153 155 lymsPushedartService.saveOrUpdate(pushedart);
154 156 //更新到LymsPushMessages记录
155   - lymsPushMessage.setState(1);//推送状态:0待推送(9点开始推送) 1成功 2失败。(在备注写失败原因)
  157 + lymsPushMessage.setState(1);//推送状态:0待推送 1成功 2失败。(在备注写失败原因)
156 158 lymsPushMessage.setPushTime(new Date());
157 159 lymsPushMessagesService.updateById(lymsPushMessage);
158 160 } catch (Exception e) {
talkonlineweb/src/main/java/com/lyms/talkonlineweb/task/PushArticleTaskData.java View file @ 7812e91
... ... @@ -45,14 +45,22 @@
45 45 private LymsDictService lymsDictService;
46 46  
47 47 /**
48   - * 每天0点执行-要推送的文章存到数据库
  48 + * 每天下17点执行-要推送的文章存到数据库
49 49 */
50   - @Scheduled(cron = "0 0 0 * * ?")
  50 + @Scheduled(cron = "0 0 17 * * ?")
51 51 public void pushArtcleData(){
52 52 Map<String,Object> param=new HashMap<>();
53 53 param.put("vtype",999);
54 54 List<LymsDict> dcLst=lymsDictService.listByMap(param);
  55 + //防止重复
55 56 if (dcLst.size()>0 && dcLst.get(0).getCode()==1){
  57 + QueryWrapper<LymsPushMessages> queryWrapper2 = new QueryWrapper<>();
  58 + queryWrapper2.apply("TO_DAYS(created_time) = TO_DAYS(NOW()) and state in (0,1,2)");
  59 + List<LymsPushMessages> list = lymsPushMessagesService.list(queryWrapper2);
  60 + if(!CollectionUtils.isEmpty(list)){
  61 + log.info("要推送的文章已存在不需要再次推送>>>>>>");
  62 + return;
  63 + }
56 64 log.info("开始筛选"+(DateUtil.getDateTime(new Date(), YYYY_MM_DD))+"要推送的文章存入mysql>>>>>>");
57 65 //筛选出需要推送的文章信息-(逻辑详见视图)
58 66 List<PushArticle> pushArticleList=pushArticleService.list();
59 67  
60 68  
61 69  
62 70  
... ... @@ -61,32 +69,31 @@
61 69 //需要推送文章的对象
62 70 LymsPushMessages lymsPushMessages=new LymsPushMessages();
63 71 BeanUtils.copyProperties(article,lymsPushMessages);
64   - //查询推已推送的文章(如果null表示需要推送文章,否则需要推送短消息
  72 + //查询推已推送的文章(如果null表示需要推送文章和短消息1,否则需要推送短消息2
65 73 QueryWrapper<LymsPushedart> queryWrapper=new QueryWrapper<>();
66 74 queryWrapper.eq("pid", lymsPushMessages.getPid());
67 75 queryWrapper.eq("aid", lymsPushMessages.getAid());
68   - LymsPushedart lymsPushedart = lymsPushedartService.getOne(queryWrapper);
69   - if(null!=lymsPushedart){
70   - //每次只推送一条短消息,判断推送短消息1还是2
71   - if(lymsPushedart.getIsweixinone()==0){//0未推送1已推送
72   - //标记要推送的记录需要推送短消息1
73   - lymsPushMessages.setIsweixinOne(1);
74   - //存入已推送文章列表id
75   - lymsPushMessages.setPushedartId(lymsPushedart.getId());
76   - }else if (lymsPushedart.getIsweixintwo()==0){//0未推送1已推送
77   - //标记要推送的记录需要推送短消息2
78   - lymsPushMessages.setIsweixinTwo(1);
79   - //存入已推送文章列表id
80   - lymsPushMessages.setPushedartId(lymsPushedart.getId());
81   - }
  76 + List<LymsPushedart> lymsPushedartList = lymsPushedartService.list(queryWrapper);
  77 + if(!CollectionUtils.isEmpty(lymsPushedartList)&&lymsPushedartList.size()>1){
  78 + log.info("数据不同步,不需要推送>>>>>>");
  79 + return;
82 80 }
83   - //保存到要推送的表lyms_push_messages
84   - List<LymsPushMessages> list = lymsPushMessagesService.list(new QueryWrapper<>(lymsPushMessages));
85   - if(!CollectionUtils.isEmpty(list)){
86   - log.info("要推送的文章已存在不需要再次推送>>>>>>");
87   - continue;
  81 + if(!CollectionUtils.isEmpty(lymsPushedartList)){
  82 + //标记要推送的记录需要推送短消息2
  83 + lymsPushMessages.setIsweixinTwo(1);
  84 + //存入已推送文章列表id
  85 + lymsPushMessages.setPushedartId(lymsPushedartList.get(0).getId());
  86 + }else {
  87 + //标记要推送的记录需要推送短消息1
  88 + lymsPushMessages.setIsweixinOne(1);
  89 + //需要推送的短消息1
  90 + lymsPushMessagesService.save(lymsPushMessages);
88 91 }
  92 + //标记要推送的文章-短消息1标记0
  93 + lymsPushMessages.setIsweixinOne(0);
  94 + //保存到要推送的表lyms_push_messages需要推送的文章
89 95 lymsPushMessagesService.save(lymsPushMessages);
  96 +
90 97 } catch (BeansException e) {
91 98 e.printStackTrace();
92 99 }