| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- 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<ProjecttaskEntity> 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<String, Object> userMsgParms = new HashMap<String, Object>();
- 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});
- }
- }
|