package org.jeecg.modules.eam.job; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import lombok.extern.slf4j.Slf4j; import org.apache.shiro.SecurityUtils; import org.jeecg.common.api.dto.message.MessageDTO; import org.jeecg.common.system.api.ISysBaseAPI; import org.jeecg.common.system.vo.LoginUser; import org.jeecg.common.util.DateUtils; import org.jeecg.modules.eam.entity.*; import org.jeecg.modules.eam.service.*; import org.jeecg.modules.system.entity.*; import org.jeecg.modules.system.service.*; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.format.annotation.DateTimeFormat; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.text.SimpleDateFormat; import java.time.DayOfWeek; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.ZoneId; import java.util.Calendar; import java.util.Date; import java.util.List; /** * 三级保养工单 到期未执行 技术状态修改为 禁用(状态鉴定未按期完成) */ @Slf4j public class ThirdMaintenanceOrderOverdueJob implements Job { @Autowired private IDailyMaintenanceOrderService dailyMaintenanceOrderService; @Autowired private IEamEquipmentService equipmentService; @Autowired private IMaintenanceCycleService maintenanceCycleService; @Autowired private ISysBaseAPI sysBaseApi; @Resource private ISysRoleService sysRoleService; @Resource private ISysDictService sysDictService; @Resource private ISysDictItemService sysDictItemService; @Resource private ISysUserRoleService sysUserRoleService; @Resource private ISysUserService sysUserService; @Override @Transactional(rollbackFor = { Exception.class }) public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { LocalDateTime currentDateTime = LocalDateTime.now(); Date result = Date.from(currentDateTime.atZone(ZoneId.systemDefault()).toInstant()); List maintenanceOrders = dailyMaintenanceOrderService.list(new QueryWrapper().lt("plan_start_time", result).eq("status",1).eq("del_flag",0)); for (DailyMaintenanceOrder dailyMaintenanceOrder : maintenanceOrders) { String maintenanceCycleId = dailyMaintenanceOrder.getMaintenanceCycleId(); MaintenanceCycle maintenanceCycle = maintenanceCycleService.getById(maintenanceCycleId); String maintenanceType = maintenanceCycle.getMaintenanceType(); if("3".equals(maintenanceType)){ String equipmentId = dailyMaintenanceOrder.getEquipmentId(); Equipment equipment = equipmentService.getById(equipmentId); equipment.setTechnologyStatus("disableNoExe"); equipmentService.updateById(equipment); this.equipmentTechnologyStatuAlart(equipment.getNum(),equipment.getTechnologyStatus()); } } } void equipmentTechnologyStatuAlart(String equipmentNum,String technologyStatus){ SysDict sysDictT = sysDictService.getOne(new QueryWrapper().eq("dict_code","technology_status"),false); SysDictItem sysDictItemt = sysDictItemService.getOne(new QueryWrapper().eq("item_value",technologyStatus) .eq("dict_id",sysDictT.getId()),false); SysDict sysDict = sysDictService.getOne(new QueryWrapper().eq("dict_code","info_type"),false); SysDictItem sysDictItem = sysDictItemService.getOne(new QueryWrapper().eq("item_text","运保设备管理员") .eq("dict_id",sysDict.getId()),false); String roleCode = sysDictItem.getItemValue(); SysRole sysRole = sysRoleService.getOne(new QueryWrapper().eq("role_code",roleCode),false); List sysUserRoles = sysUserRoleService.list(new QueryWrapper().eq("role_id",sysRole.getId())); for(SysUserRole sysUserRole:sysUserRoles){ SysUser user = sysUserService.getById(sysUserRole.getUserId()); String msg = "统一编号为【"+equipmentNum+"】的三级保养工单未执行,系统自动将该设备技术状态改为【"+sysDictItemt.getItemText()+"】,请知晓!!!"; MessageDTO messageDTO = new MessageDTO(); messageDTO.setTitle("设备台账技术状态修改"); messageDTO.setContent(msg); messageDTO.setCategory("运保设备管理员"); messageDTO.setFromUser("设备台账技术状态修改提醒小助手"); messageDTO.setToUser(user.getUsername()); sysBaseApi.sendSysAnnouncement(messageDTO); } } }