package com.xcgl.weeklyMeeting.timetask; import cn.com.lzt.message.send.entity.MMessageEntity; import cn.com.lzt.message.send.entity.MessageWxTemplateConfig; import cn.com.lzt.message.send.service.MMessageSendServiceI; import cn.com.lzt.useractiviti.workflow.task.AbstractActivitiTimeTask; import com.xcgl.projecttask.entity.ProjecttaskEntity; import com.xcgl.projecttask.service.ProjecttaskServiceI; import com.xcgl.utils.XcglConstant; import com.xcgl.weeklyMeeting.dao.WeeklyMeetingMiniDao; import com.xcgl.weeklyMeeting.entity.WeeklyMeetingEntity; import org.jeecgframework.core.util.ResourceUtil; import org.jeecgframework.web.system.pojo.base.TSUser; import org.quartz.JobExecutionContext; import org.springframework.stereotype.Service; import org.apache.commons.lang3.StringUtils; import java.text.SimpleDateFormat; import cn.com.lzt.tools.ServerType; import org.jeecgframework.core.constant.Globals; import java.util.*; @Service public class WeeklyMeetingTimedTask extends AbstractActivitiTimeTask { @Override protected void doJob(JobExecutionContext jobExecutionContext) { WeeklyMeetingMiniDao weeklyMeetingMiniDao = getBean(WeeklyMeetingMiniDao.class); //查询任务执行中的所有数据 List lists = weeklyMeetingMiniDao.selectExecute(); //循环数据计算时间百分比 for (ProjecttaskEntity list : lists) { WeeklyMeetingEntity weeklyMeetingEntity = weeklyMeetingMiniDao.projectTaskId(list.getId()); Date nowDate = new Date(); //当前时间 Date startDate = list.getPlanstarttime(); //开始时间 Date endDate = list.getPlanendtime(); //结束时间 if (nowDate.getTime() >= endDate.getTime()) { //当前时间大于结束时间修改为超期状态30 weeklyMeetingMiniDao.reexecution("30", list.getId()); // weeklyMeetingMiniDao.updateProjecttaskTaskstatus("30", list.getId()); } else { //结束时间和开始时间中间的小时 Double all = (double) ((endDate.getTime() - startDate.getTime()) / (1000 * 3600)); //当前时间和开始时间中间的小时 Double now = (double) ((nowDate.getTime() - startDate.getTime()) / (1000 * 3600)); //计算百分比存入 Long percentage = Math.round(now / all * 100); //剩余20%和40%通知对应人员(小时) if(percentage >= 60 && "0".equals(weeklyMeetingEntity.getRemindNum())){ //发送提醒 sendMsg(list); //修改提醒次数为1 weeklyMeetingMiniDao.updateRemindNum("1", weeklyMeetingEntity.getId()); }else if(percentage >= 80 && "1".equals(weeklyMeetingEntity.getRemindNum())){ //发送提醒 sendMsg(list); //修改提醒次数为2 weeklyMeetingMiniDao.updateRemindNum("2", weeklyMeetingEntity.getId()); } } } } public void sendMsg(ProjecttaskEntity task) { String owner = task.getOwner(); ProjecttaskServiceI ProjecttaskServiceI = getBean(ProjecttaskServiceI.class); MMessageSendServiceI mMessageSendService = getBean(MMessageSendServiceI.class); TSUser ownerUser = ProjecttaskServiceI.getEntity(TSUser.class, owner); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); ProjecttaskEntity.ExecuteWay executeWay = task.getExecuteWay(); Map userMsgParms = new HashMap(); String first = "你好" + ownerUser.getRealName() + ",你有一个周例会工作任务即将到期,请尽快处理"; String k1 = task.getName(); userMsgParms.put("first", first); userMsgParms.put("keyword1", format.format(task.getPlanendtime()));//超时时间 userMsgParms.put("keyword2", "1".equals(task.getTaskstatus()) ? "进行中" : "30".equals(task.getTaskstatus()) ? "已超期" : "其他");//当前状态 String url = null; String remark=task.getWxRemark(); if(StringUtils.isBlank(remark)) { remark = "任务时间:截止到 " + format.format(task.getPlanendtime()); } remark +="\r\n "; if (executeWay == ProjecttaskEntity.ExecuteWay.both) { url = "http://www.shenqin.work"; if(ServerType.getServerType()==ServerType.test){ String serverPath = ResourceUtil.getConfigByName(Globals.SERVER_WXMSG); url=serverPath; } url += "/h5/task.html?id=" + task.getId(); remark += "点击【详情】查看工作内容"; } else { remark += "请登录慧管理系统完成工作"; } userMsgParms.put("remark", remark); MessageWxTemplateConfig config = new MessageWxTemplateConfig(); config.setTemplateId(XcglConstant.TEMPLATE_MEETING_REMIND); config.setUserMsgParms(userMsgParms); config.setShowUrl(url!=null); mMessageSendService.sendMessage(Collections.singletonList(owner),url,null,null,config,new MMessageEntity.MessageSendWay[]{MMessageEntity.MessageSendWay.wx}); } }