package cn.com.lzt.workflow.task; import cn.com.lzt.message.send.service.MMessageSendServiceI; import cn.com.lzt.useractiviti.workflow.task.AbstractActivitiTimeTask; import cn.com.lzt.userattendancetotal.service.UserAttendanceTotalServiceI; import org.activiti.engine.*; import org.activiti.engine.history.HistoricTaskInstance; import org.activiti.engine.runtime.ProcessInstance; import org.activiti.engine.task.Task; import org.activiti.engine.task.TaskQuery; import org.apache.commons.lang.xwork.StringUtils; import org.jeecgframework.core.util.ApplicationContextUtil; import org.jeecgframework.core.util.ResourceUtil; import org.jeecgframework.web.system.pojo.base.TSUser; import org.jeecgframework.web.system.service.UserService; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; @Service("alertNoAssignee") public class AlertNoAssignee extends AbstractActivitiTimeTask{ protected MMessageSendServiceI mMessageSendService; protected UserService userService; @Override protected void doJob(JobExecutionContext jobExecutionContext) { Calendar c = Calendar.getInstance(); c.add(Calendar.MINUTE,-30); Date startTime = c.getTime(); userService = ApplicationContextUtil.getContext().getBean(UserService.class); mMessageSendService = ApplicationContextUtil.getContext().getBean(MMessageSendServiceI.class); ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); TaskService taskService = processEngine.getTaskService(); List list = taskService.createTaskQuery().taskCreatedAfter(startTime).taskUnassigned().list(); if(list!=null && !list.isEmpty()) { String userName = ResourceUtil.getConfigByName("no_assignee_alert_user"); TSUser user= userService.getUserByUserName(userName); List instanceIdList = new ArrayList<>(list.size()); for (Task task : list) { String instanceId = task.getProcessInstanceId(); instanceIdList.add(instanceId); } String ids = StringUtils.join(instanceIdList, ","); String title = "审批流数据异常,请及时查看"; String remark = "有审批任务无处理人,请注意。流程实例ID:"+ids; mMessageSendService.msg(user,title,remark); } } }