package org.jeecg.modules.eam.job; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.extern.slf4j.Slf4j; import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.util.DateUtils; import org.jeecg.modules.eam.constant.BusinessCodeConst; import org.jeecg.modules.eam.constant.WeekMaintenanceStatusEnum; import org.jeecg.modules.eam.entity.EamWeekMaintenanceOrder; import org.jeecg.modules.eam.service.IEamWeekMaintenanceOrderService; import org.jeecg.modules.mdc.util.ThrowableUtil; import org.jeecg.modules.quartz.entity.QuartzJob; import org.jeecg.modules.quartz.entity.SysQuartzLog; import org.jeecg.modules.quartz.service.IQuartzJobService; import org.jeecg.modules.quartz.service.ISysQuartzLogService; import org.jeecg.modules.qywx.message.vo.TemplateCard; import org.jeecg.modules.qywx.message.vo.TemplateCardEntity; import org.jeecg.modules.system.entity.SysUser; import org.jeecg.modules.system.service.ISysUserService; import org.jeecg.modules.system.service.impl.ThirdAppWechatEnterpriseServiceImpl; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import java.util.Date; import java.util.List; import java.util.stream.Collectors; /** * 待领取周保工单企业微信消息推送定时任务 */ @Slf4j @Component public class WeekMaintenanceOrderWxMessageSendJob implements Job { @Autowired private IEamWeekMaintenanceOrderService eamWeekMaintenanceOrderService; @Autowired private ISysUserService sysUserService; @Autowired private ThirdAppWechatEnterpriseServiceImpl wechatEnterpriseService; @Autowired private ISysQuartzLogService sysQuartzLogService; @Autowired private IQuartzJobService quartzJobService; @Value("${wechatEnterprise.cardActionUrl}") private String cardActionUrl; @Override public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { log.info("待周保工单企业微信消息推送任务开始执行,时间:{}", DateUtils.now()); //任务日志 SysQuartzLog quartzLog = new SysQuartzLog(); quartzLog.setCreateTime(new Date()); List byJobClassName = quartzJobService.findByJobClassName(this.getClass().getName()); if (byJobClassName != null && !byJobClassName.isEmpty()) { quartzLog.setJobId(byJobClassName.get(0).getId()); } long startTime = System.currentTimeMillis(); try { //查询所有待保养的周保工单 List waitOrderList = eamWeekMaintenanceOrderService.list(new LambdaQueryWrapper() .eq(EamWeekMaintenanceOrder::getMaintenanceStatus, WeekMaintenanceStatusEnum.WAIT_MAINTENANCE.name()) .eq(EamWeekMaintenanceOrder::getDelFlag, CommonConstant.DEL_FLAG_0)); if (!waitOrderList.isEmpty()) { //有待保养的工单,推送企业微信消息 //查询所有操作工 List userList = sysUserService.list(new LambdaQueryWrapper() .eq(SysUser::getPost, BusinessCodeConst.PCR0001) .eq(SysUser::getDelFlag, CommonConstant.DEL_FLAG_0) .eq(SysUser::getStatus, CommonConstant.USER_UNFREEZE)); if (userList.isEmpty()) { log.error("系统未设置操作工用户,无法推送工单领取提醒消息"); quartzLog.setIsSuccess(0); quartzLog.setParams("系统未设置操作工用户,无法推送工单领取提醒消息"); } else { TemplateCard templateCard = new TemplateCard(); String toUsers = userList.stream().map(SysUser::getUsername).collect(Collectors.joining(",")); String touser = wechatEnterpriseService.getTouser(toUsers, false); templateCard.setTouser(touser); TemplateCardEntity templateCardEntity = new TemplateCardEntity(); templateCard.setTemplate_card(templateCardEntity); templateCardEntity.setTask_id(waitOrderList.get(0).getId()); TemplateCardEntity.MainTitle mainTitle = new TemplateCardEntity.MainTitle(); mainTitle.setTitle("设备周保"); templateCardEntity.setMain_title(mainTitle); templateCardEntity.setSub_title_text("您有待领取周保工单,请进入系统领取"); TemplateCardEntity.CardAction cardAction = new TemplateCardEntity.CardAction(); cardAction.setType(1); cardAction.setUrl(cardActionUrl); templateCardEntity.setCard_action(cardAction); JSONObject jsonObject = wechatEnterpriseService.sendTemplateCardMsg(templateCard, true); Integer errcode = (Integer) jsonObject.get("errcode"); if (errcode == 0) { log.info("推送待领取周保工单企业微信消息成功,{}", jsonObject.toJSONString()); quartzLog.setIsSuccess(0); quartzLog.setParams(jsonObject.toJSONString()); } else { log.error("推送待领取周保工单企业微信消息失败,{}", jsonObject.toJSONString()); quartzLog.setIsSuccess(-1); quartzLog.setExceptionDetail(jsonObject.toJSONString()); } } } else { log.info("无待领取周保工单,无需推送工单领取提醒消息"); quartzLog.setIsSuccess(0); quartzLog.setParams("无待领取周保工单,无需推送工单领取提醒消息"); } } catch (Exception e) { log.error("待周保工单企业微信消息推送任务执行失败,{}", e.getMessage(), e); quartzLog.setIsSuccess(-1); quartzLog.setExceptionDetail(ThrowableUtil.getStackTrace(e)); } long endTime = System.currentTimeMillis(); quartzLog.setExecutionTime(Integer.parseInt(String.valueOf(endTime - startTime))); sysQuartzLogService.save(quartzLog); } }