WeeklyMeetingTimedTask.java 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. package com.xcgl.weeklyMeeting.timetask;
  2. import cn.com.lzt.message.send.entity.MMessageEntity;
  3. import cn.com.lzt.message.send.entity.MessageWxTemplateConfig;
  4. import cn.com.lzt.message.send.service.MMessageSendServiceI;
  5. import cn.com.lzt.useractiviti.workflow.task.AbstractActivitiTimeTask;
  6. import com.xcgl.projecttask.entity.ProjecttaskEntity;
  7. import com.xcgl.projecttask.service.ProjecttaskServiceI;
  8. import com.xcgl.utils.XcglConstant;
  9. import com.xcgl.weeklyMeeting.dao.WeeklyMeetingMiniDao;
  10. import com.xcgl.weeklyMeeting.entity.WeeklyMeetingEntity;
  11. import org.jeecgframework.core.util.ResourceUtil;
  12. import org.jeecgframework.web.system.pojo.base.TSUser;
  13. import org.quartz.JobExecutionContext;
  14. import org.springframework.stereotype.Service;
  15. import org.apache.commons.lang3.StringUtils;
  16. import java.text.SimpleDateFormat;
  17. import cn.com.lzt.tools.ServerType;
  18. import org.jeecgframework.core.constant.Globals;
  19. import java.util.*;
  20. @Service
  21. public class WeeklyMeetingTimedTask extends AbstractActivitiTimeTask {
  22. @Override
  23. protected void doJob(JobExecutionContext jobExecutionContext) {
  24. WeeklyMeetingMiniDao weeklyMeetingMiniDao = getBean(WeeklyMeetingMiniDao.class);
  25. //查询任务执行中的所有数据
  26. List<ProjecttaskEntity> lists = weeklyMeetingMiniDao.selectExecute();
  27. //循环数据计算时间百分比
  28. for (ProjecttaskEntity list : lists) {
  29. WeeklyMeetingEntity weeklyMeetingEntity = weeklyMeetingMiniDao.projectTaskId(list.getId());
  30. Date nowDate = new Date(); //当前时间
  31. Date startDate = list.getPlanstarttime(); //开始时间
  32. Date endDate = list.getPlanendtime(); //结束时间
  33. if (nowDate.getTime() >= endDate.getTime()) {
  34. //当前时间大于结束时间修改为超期状态30
  35. weeklyMeetingMiniDao.reexecution("30", list.getId());
  36. // weeklyMeetingMiniDao.updateProjecttaskTaskstatus("30", list.getId());
  37. } else {
  38. //结束时间和开始时间中间的小时
  39. Double all = (double) ((endDate.getTime() - startDate.getTime()) / (1000 * 3600));
  40. //当前时间和开始时间中间的小时
  41. Double now = (double) ((nowDate.getTime() - startDate.getTime()) / (1000 * 3600));
  42. //计算百分比存入
  43. Long percentage = Math.round(now / all * 100);
  44. //剩余20%和40%通知对应人员(小时)
  45. if(percentage >= 60 && "0".equals(weeklyMeetingEntity.getRemindNum())){
  46. //发送提醒
  47. sendMsg(list);
  48. //修改提醒次数为1
  49. weeklyMeetingMiniDao.updateRemindNum("1", weeklyMeetingEntity.getId());
  50. }else if(percentage >= 80 && "1".equals(weeklyMeetingEntity.getRemindNum())){
  51. //发送提醒
  52. sendMsg(list);
  53. //修改提醒次数为2
  54. weeklyMeetingMiniDao.updateRemindNum("2", weeklyMeetingEntity.getId());
  55. }
  56. }
  57. }
  58. }
  59. public void sendMsg(ProjecttaskEntity task) {
  60. String owner = task.getOwner();
  61. ProjecttaskServiceI ProjecttaskServiceI = getBean(ProjecttaskServiceI.class);
  62. MMessageSendServiceI mMessageSendService = getBean(MMessageSendServiceI.class);
  63. TSUser ownerUser = ProjecttaskServiceI.getEntity(TSUser.class, owner);
  64. SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  65. ProjecttaskEntity.ExecuteWay executeWay = task.getExecuteWay();
  66. Map<String, Object> userMsgParms = new HashMap<String, Object>();
  67. String first = "你好" + ownerUser.getRealName() + ",你有一个周例会工作任务即将到期,请尽快处理";
  68. String k1 = task.getName();
  69. userMsgParms.put("first", first);
  70. userMsgParms.put("keyword1", format.format(task.getPlanendtime()));//超时时间
  71. userMsgParms.put("keyword2", "1".equals(task.getTaskstatus()) ? "进行中" : "30".equals(task.getTaskstatus()) ? "已超期" : "其他");//当前状态
  72. String url = null;
  73. String remark=task.getWxRemark();
  74. if(StringUtils.isBlank(remark)) {
  75. remark = "任务时间:截止到 " + format.format(task.getPlanendtime());
  76. }
  77. remark +="\r\n ";
  78. if (executeWay == ProjecttaskEntity.ExecuteWay.both) {
  79. url = "http://www.shenqin.work";
  80. if(ServerType.getServerType()==ServerType.test){
  81. String serverPath = ResourceUtil.getConfigByName(Globals.SERVER_WXMSG);
  82. url=serverPath;
  83. }
  84. url += "/h5/task.html?id=" + task.getId();
  85. remark += "点击【详情】查看工作内容";
  86. } else {
  87. remark += "请登录慧管理系统完成工作";
  88. }
  89. userMsgParms.put("remark", remark);
  90. MessageWxTemplateConfig config = new MessageWxTemplateConfig();
  91. config.setTemplateId(XcglConstant.TEMPLATE_MEETING_REMIND);
  92. config.setUserMsgParms(userMsgParms);
  93. config.setShowUrl(url!=null);
  94. mMessageSendService.sendMessage(Collections.singletonList(owner),url,null,null,config,new MMessageEntity.MessageSendWay[]{MMessageEntity.MessageSendWay.wx});
  95. }
  96. }