src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceServiceImpl.java
@@ -13,6 +13,12 @@ import com.ruoyi.device.mapper.DeviceMaintenanceMapper; import com.ruoyi.device.pojo.DeviceMaintenance; import com.ruoyi.device.service.IDeviceMaintenanceService; import com.ruoyi.project.system.service.ISysNoticeService; import com.ruoyi.project.system.service.impl.UnipushService; import com.ruoyi.project.system.domain.SysNotice; import java.util.Collections; import com.ruoyi.common.utils.SecurityUtils; import lombok.extern.slf4j.Slf4j; import com.ruoyi.device.vo.DeviceMaintenanceVo; import com.ruoyi.device.vo.DeviceRepairVo; import com.ruoyi.framework.web.domain.AjaxResult; @@ -37,6 +43,7 @@ @Service @RequiredArgsConstructor @Slf4j public class DeviceMaintenanceServiceImpl extends ServiceImpl<DeviceMaintenanceMapper, DeviceMaintenance> implements IDeviceMaintenanceService { private final DeviceMaintenanceMapper deviceMaintenanceMapper; @@ -44,6 +51,8 @@ private final SparePartsRequisitionRecordService sparePartsRequisitionRecordService; private final IDeviceRepairSparePartService deviceRepairSparePartService; private final FileUtil fileUtil; private final ISysNoticeService sysNoticeService; private final UnipushService unipushService; @Override public IPage<DeviceMaintenanceDto> queryPage(Page page, DeviceMaintenanceDto deviceMaintenanceDto) { @@ -58,6 +67,34 @@ if (save){ // 处理图片上传 fileUtil.saveStorageAttachmentByRecordTypeAndRecordId("file", RecordTypeEnum.DEVICE_MAINTENANCE, deviceMaintenance.getId(), deviceMaintenance.getStorageBlobDTOs()); // 推送系统消息给执行人 if (deviceMaintenance.getExecutorId() != null) { SysNotice notice = new SysNotice(); notice.setNoticeTitle("新保养计划提醒"); notice.setNoticeType("1"); // 1 通知 String dateStr = deviceMaintenance.getMaintenancePlanTime() != null ? deviceMaintenance.getMaintenancePlanTime().toLocalDate().toString() : java.time.LocalDate.now().toString(); notice.setNoticeContent("你有一个新的设备保养计划 ," + dateStr + " " + deviceMaintenance.getDeviceName()); notice.setStatus("0"); // 正常 notice.setConsigneeId(deviceMaintenance.getExecutorId()); try { Long currentUserId = SecurityUtils.getLoginUser().getUserId(); notice.setSenderId(currentUserId); } catch (Exception e) { notice.setSenderId(0L); // 兜底 } notice.setTenantId(deviceMaintenance.getTenantId()); sysNoticeService.insertNotice(notice); try { unipushService.sendClientMessage(Collections.singletonList(notice)); } catch (Exception e) { log.error("推送新保养计划系统消息失败", e); } } return AjaxResult.success(); } return AjaxResult.error(); src/main/java/com/ruoyi/device/service/impl/MaintenanceTaskJob.java
@@ -11,6 +11,8 @@ import com.ruoyi.project.system.service.ISysNoticeService; import com.ruoyi.project.system.domain.SysNotice; import com.ruoyi.project.system.service.impl.UnipushService; import java.util.Collections; import java.io.Serializable; import java.time.DayOfWeek; import java.time.LocalDateTime; @@ -33,6 +35,9 @@ @Autowired private ISysNoticeService sysNoticeService; @Autowired private UnipushService unipushService; @Override public void execute(JobExecutionContext context) throws JobExecutionException { @@ -61,14 +66,21 @@ // 给执行人发送系统通知 if (timingTask.getExecutorId() != null) { SysNotice notice = new SysNotice(); notice.setNoticeTitle("新保养任务提醒"); notice.setNoticeTitle("新保养计划提醒"); notice.setNoticeType("1"); // 1 通知 notice.setNoticeContent("您有一个新的设备保养任务需要执行,设备名称:" + timingTask.getTaskName()); String dateStr = java.time.LocalDate.now().toString(); notice.setNoticeContent("你有一个新的设备保养计划 ," + dateStr + " " + timingTask.getTaskName()); notice.setStatus("0"); // 正常 notice.setConsigneeId(timingTask.getExecutorId()); notice.setSenderId(0L); // 0代表系统发送 notice.setTenantId(timingTask.getTenantId()); sysNoticeService.insertNotice(notice); try { unipushService.sendClientMessage(Collections.singletonList(notice)); } catch (Exception e) { e.printStackTrace(); } } // 3. 更新定时任务的执行时间 @@ -120,10 +132,12 @@ inspectionTask.setStatus(0); inspectionTask.setDeviceModel(timingTask.getDeviceModel()); inspectionTask.setMachineryCategory(timingTask.getMachineryCategory()); if (timingTask.getRegistrantId() != null) { inspectionTask.setCreateUser(Integer.parseInt(timingTask.getRegistrantId().toString())); inspectionTask.setUpdateUser(Integer.parseInt(timingTask.getRegistrantId().toString())); } inspectionTask.setUpdateTime(LocalDateTime.now()); inspectionTask.setCreateTime(LocalDateTime.now()); inspectionTask.setUpdateUser(Integer.parseInt(timingTask.getRegistrantId().toString())); return inspectionTask; } src/main/resources/mapper/system/SysNoticeMapper.xml
@@ -95,7 +95,6 @@ <if test="consigneeId != null and consigneeId != ''">#{consigneeId},</if> <if test="jumpPath != null and jumpPath != ''">#{jumpPath},</if> <if test="appJumpPath != null and appJumpPath != ''">#{appJumpPath},</if> <if test="pathParms != null and pathParms != ''">#{queryParms},</if> <if test="createBy != null and createBy != ''">#{createBy},</if> <if test="tenantId != null and tenantId != ''">#{tenantId},</if> sysdate()