lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/constant/MdcConstant.java
@@ -57,4 +57,22 @@ public static final String MONTH = "æ"; /** * 设å¤ç®¡çå */ public static final String MDC_EQUIPMENT_MANAGER = "mdcEquipmentManager"; /** * 设å¤è¶ 级管çå */ public static final String MDC_EQUIPMENT_SUPER_MANAGER = "mdcEquipmentSuperManager"; /** * æ¶æ¯ç¶æï¼0å¾ å¤çï¼1å¾ ç¡®è®¤, 2已确认ï¼3å·²æç»ï¼ */ public static final String MSG_STATUS_0 = "0"; public static final String MSG_STATUS_1 = "1"; public static final String MSG_STATUS_2 = "2"; public static final String MSG_STATUS_3 = "3"; } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcMessageApprovalController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,153 @@ package org.jeecg.modules.mdc.controller; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.jeecg.common.api.vo.Result; import org.jeecg.common.aspect.annotation.AutoLog; import org.jeecg.common.system.base.controller.JeecgController; import org.jeecg.common.system.query.QueryGenerator; import org.jeecg.modules.mdc.entity.MdcMessageApproval; import org.jeecg.modules.mdc.service.IMdcMessageApprovalService; import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.ModelAndView; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.Arrays; /** * @Description: mdcæ¶æ¯ç¡®è®¤è¡¨ * @Author: Lius * @Date: 2024-03-06 * @Version: V1.0 */ @Slf4j @Api(tags = "mdcæ¶æ¯ç¡®è®¤è¡¨") @RestController @RequestMapping("/mdc/mdcMessageApproval") public class MdcMessageApprovalController extends JeecgController<MdcMessageApproval, IMdcMessageApprovalService> { @Resource private IMdcMessageApprovalService mdcMessageApprovalService; /** * å页å表æ¥è¯¢ * * @param mdcMessageApproval * @param pageNo * @param pageSize * @param req * @return */ @AutoLog(value = "mdcæ¶æ¯ç¡®è®¤è¡¨-å页å表æ¥è¯¢") @ApiOperation(value = "mdcæ¶æ¯ç¡®è®¤è¡¨-å页å表æ¥è¯¢", notes = "mdcæ¶æ¯ç¡®è®¤è¡¨-å页å表æ¥è¯¢") @GetMapping(value = "/list") public Result<?> queryPageList(MdcMessageApproval mdcMessageApproval, @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest req) { QueryWrapper<MdcMessageApproval> queryWrapper = QueryGenerator.initQueryWrapper(mdcMessageApproval, req.getParameterMap()); Page<MdcMessageApproval> page = new Page<MdcMessageApproval>(pageNo, pageSize); IPage<MdcMessageApproval> pageList = mdcMessageApprovalService.page(page, queryWrapper); return Result.OK(pageList); } /** * æ·»å * * @param mdcMessageApproval * @return */ @AutoLog(value = "mdcæ¶æ¯ç¡®è®¤è¡¨-æ·»å ") @ApiOperation(value = "mdcæ¶æ¯ç¡®è®¤è¡¨-æ·»å ", notes = "mdcæ¶æ¯ç¡®è®¤è¡¨-æ·»å ") @PostMapping(value = "/add") public Result<?> add(@RequestBody MdcMessageApproval mdcMessageApproval) { mdcMessageApprovalService.save(mdcMessageApproval); return Result.OK("æ·»å æåï¼"); } /** * ç¼è¾ * * @param mdcMessageApproval * @return */ @AutoLog(value = "mdcæ¶æ¯ç¡®è®¤è¡¨-ç¼è¾") @ApiOperation(value = "mdcæ¶æ¯ç¡®è®¤è¡¨-ç¼è¾", notes = "mdcæ¶æ¯ç¡®è®¤è¡¨-ç¼è¾") @RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST}) public Result<?> edit(@RequestBody MdcMessageApproval mdcMessageApproval) { mdcMessageApprovalService.updateById(mdcMessageApproval); return Result.OK("ç¼è¾æå!"); } /** * éè¿idå é¤ * * @param id * @return */ @AutoLog(value = "mdcæ¶æ¯ç¡®è®¤è¡¨-éè¿idå é¤") @ApiOperation(value = "mdcæ¶æ¯ç¡®è®¤è¡¨-éè¿idå é¤", notes = "mdcæ¶æ¯ç¡®è®¤è¡¨-éè¿idå é¤") @DeleteMapping(value = "/delete") public Result<?> delete(@RequestParam(name = "id", required = true) String id) { mdcMessageApprovalService.removeById(id); return Result.OK("å 餿å!"); } /** * æ¹éå é¤ * * @param ids * @return */ @AutoLog(value = "mdcæ¶æ¯ç¡®è®¤è¡¨-æ¹éå é¤") @ApiOperation(value = "mdcæ¶æ¯ç¡®è®¤è¡¨-æ¹éå é¤", notes = "mdcæ¶æ¯ç¡®è®¤è¡¨-æ¹éå é¤") @DeleteMapping(value = "/deleteBatch") public Result<?> deleteBatch(@RequestParam(name = "ids", required = true) String ids) { this.mdcMessageApprovalService.removeByIds(Arrays.asList(ids.split(","))); return Result.OK("æ¹éå 餿åï¼"); } /** * éè¿idæ¥è¯¢ * * @param id * @return */ @AutoLog(value = "mdcæ¶æ¯ç¡®è®¤è¡¨-éè¿idæ¥è¯¢") @ApiOperation(value = "mdcæ¶æ¯ç¡®è®¤è¡¨-éè¿idæ¥è¯¢", notes = "mdcæ¶æ¯ç¡®è®¤è¡¨-éè¿idæ¥è¯¢") @GetMapping(value = "/queryById") public Result<?> queryById(@RequestParam(name = "id", required = true) String id) { MdcMessageApproval mdcMessageApproval = mdcMessageApprovalService.getById(id); return Result.OK(mdcMessageApproval); } /** * 导åºexcel * * @param request * @param mdcMessageApproval */ @RequestMapping(value = "/exportXls") public ModelAndView exportXls(HttpServletRequest request, MdcMessageApproval mdcMessageApproval) { return super.exportXls(request, mdcMessageApproval, MdcMessageApproval.class, "mdcæ¶æ¯ç¡®è®¤è¡¨"); } /** * éè¿excelå¯¼å ¥æ°æ® * * @param request * @param response * @return */ @RequestMapping(value = "/importExcel", method = RequestMethod.POST) public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) { return super.importExcel(request, response, MdcMessageApproval.class); } } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcMessageApproval.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,85 @@ package org.jeecg.modules.mdc.entity; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; import org.jeecg.common.aspect.annotation.Dict; import org.jeecg.common.system.base.entity.JeecgEntity; import org.jeecgframework.poi.excel.annotation.Excel; import java.io.Serializable; /** * @Description: mdcæ¶æ¯ç¡®è®¤è¡¨ * @Author: Lius * @Date: 2024-03-06 * @Version: V1.0 */ @Data @TableName("mdc_message_approval") @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @ApiModel(value = "mdc_message_approval对象", description = "mdcæ¶æ¯ç¡®è®¤è¡¨") public class MdcMessageApproval extends JeecgEntity implements Serializable { private static final long serialVersionUID = 3826726426360323366L; /** * 设å¤ç¼ç */ @Excel(name = "设å¤ç¼ç ", width = 15) @ApiModelProperty(value = "设å¤ç¼ç ") private String equipmentId; /** * æ é¢ */ @Excel(name = "æ é¢", width = 15) @ApiModelProperty(value = "æ é¢") private String titile; /** * å 容 */ @Excel(name = "å 容", width = 15) @ApiModelProperty(value = "å 容") private String msgContent; /** * å¤ç人ids */ @ApiModelProperty(value = "å¤ç人ids") private String senderIds; /** * å¤ç人å§å */ @Excel(name = "å¤ç人å§å", width = 15) @ApiModelProperty(value = "å¤ç人å§å") private String senderNames; /** * æ¶æ¯ç¶æï¼0å¾ å¤çï¼1å¾ ç¡®è®¤, 2已确认ï¼3å·²æç»ï¼ */ @Excel(name = "æ¶æ¯ç¶æï¼0å¾ å¤çï¼1å¾ ç¡®è®¤, 2已确认ï¼3å·²æç»ï¼", width = 15) @ApiModelProperty(value = "æ¶æ¯ç¶æï¼0å¾ å¤çï¼1å¾ ç¡®è®¤, 2已确认ï¼3å·²æç»ï¼") @Dict(dicCode = "mdcMsgStatus") private String msgStatus; /** * æ¶æ¯ç¡®è®¤äººids */ @Excel(name = "æ¶æ¯ç¡®è®¤äººids", width = 15) @ApiModelProperty(value = "æ¶æ¯ç¡®è®¤äººids") private String approverIds; /** * æ¶æ¯ç¡®è®¤äººå§å */ @Excel(name = "æ¶æ¯ç¡®è®¤äººå§å", width = 15) @ApiModelProperty(value = "æ¶æ¯ç¡®è®¤äººå§å") private String approverNames; /** * 䏿¥å 容 */ @Excel(name = "䏿¥å 容", width = 15) @ApiModelProperty(value = "䏿¥å 容") private String reportContent; } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningEquipmentStatusJob.java
@@ -6,9 +6,12 @@ import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.system.api.ISysBaseAPI; import org.jeecg.common.system.vo.DictModel; import org.jeecg.modules.mdc.constant.MdcConstant; import org.jeecg.modules.mdc.entity.MdcEquipment; import org.jeecg.modules.mdc.entity.MdcMessageApproval; import org.jeecg.modules.mdc.service.IMdcEquipmentRunningSectionService; import org.jeecg.modules.mdc.service.IMdcEquipmentService; import org.jeecg.modules.mdc.service.IMdcMessageApprovalService; import org.jeecg.modules.mdc.service.MdcEfficiencyReportService; import org.jeecg.modules.mdc.util.DateUtils; import org.jeecg.modules.mdc.util.ThrowableUtil; @@ -16,8 +19,11 @@ 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.system.entity.SysAnnouncement; import org.jeecg.modules.system.entity.SysUser; import org.jeecg.modules.system.service.ISysAnnouncementService; import org.jeecg.modules.system.service.ISysDictService; import org.jeecg.modules.system.service.ISysUserService; import org.quartz.*; import javax.annotation.Resource; @@ -26,6 +32,7 @@ import java.time.LocalDate; import java.util.Date; import java.util.List; import java.util.stream.Collectors; /** * @author Lius @@ -61,6 +68,12 @@ @Resource private IMdcEquipmentRunningSectionService mdcEquipmentRunningSectionService; @Resource private IMdcMessageApprovalService mdcMessageApprovalService; @Resource private ISysUserService sysUserService; @Override public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { SysQuartzLog quartzLog = new SysQuartzLog(); @@ -73,7 +86,7 @@ long startTime = System.currentTimeMillis(); try { List<MdcEquipment> equipmentList = mdcEquipmentService.list(new LambdaQueryWrapper<>()); //List<MdcEquipment> equipmentList = mdcEquipmentService.list(new LambdaQueryWrapper<MdcEquipment>().eq(MdcEquipment::getEquipmentId, "2140198")); // List<MdcEquipment> equipmentList = mdcEquipmentService.list(new LambdaQueryWrapper<MdcEquipment>().eq(MdcEquipment::getEquipmentId, "3140045")); // è·åå©ç¨çå¤å®å¤©æ° List<DictModel> dictModelList1 = sysDictService.queryEnableDictItemsByCode(CommonConstant.DICT_EQUIPMENT_RATE_JUDGE); Integer equipmentRateJudge = 5; @@ -94,28 +107,53 @@ } for (MdcEquipment mdcEquipment : equipmentList) { // 夿å©ç¨ç String date = DateUtils.format(DateUtils.toDate(LocalDate.now().plusDays(-equipmentRateJudge).toString(), DateUtils.STR_DATE), DateUtils.STRDATE); List<BigDecimal> efficiencyRateList = mdcEfficiencyReportService.getEfficiencyRate(mdcEquipment.getEquipmentId(), date); if (efficiencyRateList != null && !efficiencyRateList.isEmpty()) { boolean flag = true; for (BigDecimal processLong : efficiencyRateList) { BigDecimal efficiencyRate = processLong.divide(new BigDecimal("86400"), 4, RoundingMode.HALF_UP); if (efficiencyRate.compareTo(new BigDecimal(equipmentRateNormal)) > -1) { flag = false; } } if (flag) { // 䏿¥ MessageDTO messageDTO = new MessageDTO(); messageDTO.setTitle("设å¤å©ç¨çæ¥è¦ï¼"); messageDTO.setCategory("é¢è¦æ¶æ¯"); messageDTO.setFromUser("admin"); messageDTO.setToUser("admin"); messageDTO.setContent("设å¤ç¼å·ä¸º [" + mdcEquipment.getEquipmentId() + "] ç设å¤å©ç¨çä½äºæ£å¸¸å¼æ¥è¦ï¼"); sysBaseApi.sendSysAnnouncement(messageDTO); // step.1 æ¥è¯¢æ¶æ¯ä¸æ¤è®¾å¤æ¥è¦æ¶é´ SysAnnouncement sysAnnouncement = sysAnnouncementService.findLastMessage("设å¤ç¼å·ä¸º [" + mdcEquipment.getEquipmentId() + "] ç设å¤å©ç¨çä½äºæ£å¸¸å¼æ¥è¦ï¼"); boolean flag1 = true; if (sysAnnouncement != null) { Date createTime = sysAnnouncement.getCreateTime(); Date msgDate = DateUtils.toDate(DateUtils.format(createTime, DateUtils.STR_DATE), DateUtils.STR_DATE); Date now = DateUtils.toDate(LocalDate.now().toString(), DateUtils.STR_DATE); Integer days = DateUtils.getDays(msgDate, now); if (days < equipmentRateJudge) { flag1 = false; } } // å¤æè®¾å¤ç¶æ if (flag1) { String date = DateUtils.format(DateUtils.toDate(LocalDate.now().plusDays(-equipmentRateJudge).toString(), DateUtils.STR_DATE), DateUtils.STRDATE); List<BigDecimal> efficiencyRateList = mdcEfficiencyReportService.getEfficiencyRate(mdcEquipment.getEquipmentId(), date); if (efficiencyRateList != null && !efficiencyRateList.isEmpty()) { boolean flag = true; for (BigDecimal processLong : efficiencyRateList) { BigDecimal efficiencyRate = processLong.divide(new BigDecimal("86400"), 4, RoundingMode.HALF_UP); if (efficiencyRate.compareTo(new BigDecimal(equipmentRateNormal)) > -1) { flag = false; } } if (flag) { // 䏿¥ MessageDTO messageDTO = new MessageDTO(); messageDTO.setTitle("设å¤å©ç¨çæ¥è¦ï¼"); messageDTO.setCategory("é¢è¦æ¶æ¯"); messageDTO.setFromUser("admin"); messageDTO.setToUser("admin"); messageDTO.setContent("设å¤ç¼å·ä¸º [" + mdcEquipment.getEquipmentId() + "] ç设å¤å©ç¨çä½äºæ£å¸¸å¼æ¥è¦ï¼"); sysBaseApi.sendSysAnnouncement(messageDTO); } } } // å¤æè®¾å¤ç¶æé¿æ¶é´æ åå审æ¹äºº SysAnnouncement sysAnnouncement1 = sysAnnouncementService.findLastMessage("设å¤ç¼å·ä¸º [" + mdcEquipment.getEquipmentId() + "] ç设å¤ç¶æé¿ææ å忥è¦ï¼"); if (sysAnnouncement1 != null) { Date createTime = sysAnnouncement1.getCreateTime(); Date msgDate = DateUtils.toDate(DateUtils.format(createTime, DateUtils.STR_DATE), DateUtils.STR_DATE); Date now = DateUtils.toDate(LocalDate.now().toString(), DateUtils.STR_DATE); Integer days = DateUtils.getDays(msgDate, now); if (days < equipmentStatusJudge) { continue; } } Date date1 = DateUtils.toDate(LocalDate.now().plusDays(-equipmentStatusJudge).toString(), DateUtils.STR_DATE); List<Integer> sectionList = mdcEquipmentRunningSectionService.getDataList(mdcEquipment.getEquipmentId(), date1); if (sectionList != null && !sectionList.isEmpty() && sectionList.size() > 1) { @@ -128,13 +166,46 @@ } if (flag) { // 䏿¥ MessageDTO messageDTO = new MessageDTO(); messageDTO.setTitle("设å¤ç¶æé¿ææ å忥è¦ï¼"); messageDTO.setCategory("é¢è¦æ¶æ¯"); messageDTO.setFromUser("admin"); messageDTO.setToUser("admin"); messageDTO.setContent("设å¤ç¼å·ä¸º [" + mdcEquipment.getEquipmentId() + "] ç设å¤ç¶æé¿ææ å忥è¦ï¼"); sysBaseApi.sendSysAnnouncement(messageDTO); // æ¥è¯¢è®¾å¤ç®¡çå List<SysUser> adminList = sysUserService.getEquipmentAdmin(MdcConstant.MDC_EQUIPMENT_MANAGER, mdcEquipment.getEquipmentId()); // æ¥è¯¢è®¾å¤è¶ 级管çå List<SysUser> superList = sysUserService.getEquipmentAdmin(MdcConstant.MDC_EQUIPMENT_SUPER_MANAGER, mdcEquipment.getEquipmentId()); if (adminList != null && !adminList.isEmpty()) { for (SysUser sysUser : adminList) { MessageDTO messageDTO = new MessageDTO(); messageDTO.setTitle("设å¤ç¶æé¿ææ å忥è¦ï¼"); messageDTO.setCategory("é¢è¦æ¶æ¯"); messageDTO.setFromUser("admin"); messageDTO.setToUser(sysUser.getUsername()); messageDTO.setContent("设å¤ç¼å·ä¸º [" + mdcEquipment.getEquipmentId() + "] ç设å¤ç¶æé¿ææ å忥è¦ï¼"); sysBaseApi.sendSysAnnouncement(messageDTO); } } else { MessageDTO messageDTO = new MessageDTO(); messageDTO.setTitle("设å¤ç¶æé¿ææ å忥è¦ï¼"); messageDTO.setCategory("é¢è¦æ¶æ¯"); messageDTO.setFromUser("admin"); messageDTO.setToUser("admin"); messageDTO.setContent("设å¤ç¼å·ä¸º [" + mdcEquipment.getEquipmentId() + "] ç设å¤ç¶æé¿ææ å忥è¦ï¼"); sysBaseApi.sendSysAnnouncement(messageDTO); } if (adminList != null && !adminList.isEmpty() && superList != null && !superList.isEmpty()) { MdcMessageApproval mdcMessageApproval = new MdcMessageApproval(); mdcMessageApproval.setEquipmentId(mdcEquipment.getEquipmentId()); mdcMessageApproval.setTitile("设å¤ç¶æé¿ææ å忥è¦ï¼"); mdcMessageApproval.setMsgContent("设å¤ç¼å·ä¸º [" + mdcEquipment.getEquipmentId() + "] ç设å¤ç¶æé¿ææ å忥è¦ï¼"); List<String> senderIdList = adminList.stream().map(SysUser::getId).collect(Collectors.toList()); mdcMessageApproval.setSenderIds(String.join(",", senderIdList)); List<String> senderNameList = adminList.stream().map(SysUser::getRealname).collect(Collectors.toList()); mdcMessageApproval.setSenderNames(String.join(",", senderNameList)); List<String> superIdList = superList.stream().map(SysUser::getId).collect(Collectors.toList()); mdcMessageApproval.setApproverIds(String.join(",", superIdList)); List<String> superNameList = superList.stream().map(SysUser::getRealname).collect(Collectors.toList()); mdcMessageApproval.setApproverNames(String.join(",", superNameList)); mdcMessageApproval.setMsgStatus(MdcConstant.MSG_STATUS_0); mdcMessageApprovalService.save(mdcMessageApproval); } } } } @@ -143,7 +214,7 @@ quartzLog.setIsSuccess(-1); quartzLog.setExceptionDetail(ThrowableUtil.getStackTrace(e)); // åéæ¶æ¯éç¥ sysAnnouncementService.jobSendMessage("设å¤ç¶æé¿ææ å忥è¦ä»»å¡å¤±è´¥ï¼", quartzLog.getExceptionDetail()); sysAnnouncementService.jobSendMessage("设å¤ç¶æé¿ææ å忥è¦ä»»å¡", quartzLog.getExceptionDetail()); } long endTime = System.currentTimeMillis(); quartzLog.setExecutionTime(Integer.parseInt(String.valueOf(endTime - startTime))); lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningMonitoringSpeedJob.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,151 @@ package org.jeecg.modules.mdc.job; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import lombok.extern.slf4j.Slf4j; import org.jeecg.common.api.dto.message.MessageDTO; import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.system.api.ISysBaseAPI; import org.jeecg.common.system.vo.DictModel; import org.jeecg.common.util.DateUtils; import org.jeecg.modules.mdc.dto.MdcEquipmentDto; import org.jeecg.modules.mdc.entity.MdcEquipment; import org.jeecg.modules.mdc.entity.MdcOverrunAlarm; import org.jeecg.modules.mdc.service.IMdcEquipmentService; import org.jeecg.modules.mdc.service.IMdcOverrunAlarmService; 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.system.service.ISysAnnouncementService; import org.jeecg.modules.system.service.ISysDictService; import org.quartz.*; import javax.annotation.Resource; import java.util.Date; import java.util.List; /** * @author Lius * @Description: çæ§è®¾å¤è¿è¡è½¬éä¸NCç¨åºè®¾å®è½¬éå¯¹æ¯ * @date 2024/3/4 16:14 */ @PersistJobDataAfterExecution @DisallowConcurrentExecution @Slf4j public class RunningMonitoringSpeedJob implements Job { @Resource private IQuartzJobService quartzJobService; @Resource private ISysQuartzLogService sysQuartzLogService; @Resource private ISysAnnouncementService sysAnnouncementService; @Resource private IMdcEquipmentService mdcEquipmentService; @Resource private ISysDictService sysDictService; @Resource private ISysBaseAPI sysBaseApi; @Resource private IMdcOverrunAlarmService mdcOverrunAlarmService; @Override public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { SysQuartzLog quartzLog = new SysQuartzLog(); quartzLog.setCreateTime(new Date()); List<QuartzJob> byJobClassName = this.quartzJobService.findByJobClassName(this.getClass().getName()); if (byJobClassName != null && !byJobClassName.isEmpty()) { quartzLog.setJobId(byJobClassName.get(0).getId()); } log.info("çæ§è®¾å¤è¿è¡è½¬éä¸NCç¨åºè®¾å®è½¬éå¯¹æ¯ RunningMonitoringSpeedJob start! æ¶é´:" + DateUtils.now()); long startTime = System.currentTimeMillis(); try { List<MdcEquipment> mdcEquipmentList = mdcEquipmentService.list(new LambdaQueryWrapper<MdcEquipment>().ne(MdcEquipment::getDriveType, "ZUOLAN")); // è·ååå ¸æ°æ® List<DictModel> dictModelList = sysDictService.queryEnableDictItemsByCode(CommonConstant.DICT_OPERATING_SPEED_RANGE); Integer range = 0; if (dictModelList != null && !dictModelList.isEmpty()) { range = Integer.valueOf(dictModelList.get(0).getValue()); } for (MdcEquipment mdcEquipment : mdcEquipmentList) { String saveTableName = mdcEquipment.getSaveTableName(); MdcEquipmentDto mdcEquipmentDto = new MdcEquipmentDto(); try { //æ¥è¯¢åè¡¨æ°æ® mdcEquipmentDto = mdcEquipmentService.getWorkLineLast(saveTableName); } catch (Exception e) { log.error("æ¥è¯¢åè¡¨æ°æ®å¤±è´¥!", e); } if (StringUtils.isNotBlank(mdcEquipmentDto.getSpindlespeed()) && StringUtils.isNotBlank(mdcEquipmentDto.getActualspindlespeed())) { MessageDTO messageDTO = new MessageDTO(); messageDTO.setTitle("设å¤è¿è¡è½¬éæ¥è¦ï¼"); messageDTO.setCategory("é¢è¦æ¶æ¯"); messageDTO.setFromUser("admin"); messageDTO.setToUser("admin"); //è®¾å® Integer spindlespeed = Integer.valueOf(mdcEquipmentDto.getSpindlespeed()); //å®é Integer actualspindlespeed = Integer.valueOf(mdcEquipmentDto.getActualspindlespeed()); MdcOverrunAlarm mdcOverrunAlarm = new MdcOverrunAlarm(); mdcOverrunAlarm.setEquipmentId(mdcEquipment.getEquipmentId()); mdcOverrunAlarm.setSetValue(spindlespeed.toString()); mdcOverrunAlarm.setRealValue(actualspindlespeed.toString()); if (range.equals(0)) { if (spindlespeed > actualspindlespeed) { // 设å®å¼å¤§äºå®é å¼ ä½ messageDTO.setContent("设å¤ç¼å·ä¸º [" + mdcEquipment.getEquipmentId() + "] ç设å¤è¿è¡è½¬é使¥è¦ï¼"); sysBaseApi.sendSysAnnouncement(messageDTO); mdcOverrunAlarm.setAlarmContent("设å¤è¿è¡è½¬éæ¯NC代ç 设å®å¼ä½æ¥è¦"); mdcOverrunAlarmService.save(mdcOverrunAlarm); } else if (spindlespeed < actualspindlespeed) { // 设å®å¼å°äºå®é å¼ é« messageDTO.setContent("设å¤ç¼å·ä¸º [" + mdcEquipment.getEquipmentId() + "] ç设å¤è¿è¡è½¬é髿¥è¦ï¼"); sysBaseApi.sendSysAnnouncement(messageDTO); mdcOverrunAlarm.setAlarmContent("设å¤è¿è¡è½¬éæ¯NC代ç 设å®å¼é«æ¥è¦"); mdcOverrunAlarmService.save(mdcOverrunAlarm); } } else { int max = spindlespeed + spindlespeed * (range / 100); int min = spindlespeed - spindlespeed * (range / 100); if (actualspindlespeed > max || actualspindlespeed < min) { if (spindlespeed > actualspindlespeed) { // 设å®å¼å¤§äºå®é å¼ ä½ messageDTO.setContent("设å¤ç¼å·ä¸º [" + mdcEquipment.getEquipmentId() + "] ç设å¤è¿è¡è½¬é使¥è¦ï¼"); sysBaseApi.sendSysAnnouncement(messageDTO); mdcOverrunAlarm.setAlarmContent("设å¤è¿è¡è½¬éæ¯NC代ç 设å®å¼ä½æ¥è¦"); mdcOverrunAlarmService.save(mdcOverrunAlarm); } else if (spindlespeed < actualspindlespeed) { // 设å®å¼å°äºå®é å¼ é« messageDTO.setContent("设å¤ç¼å·ä¸º [" + mdcEquipment.getEquipmentId() + "] ç设å¤è¿è¡è½¬é髿¥è¦ï¼"); sysBaseApi.sendSysAnnouncement(messageDTO); mdcOverrunAlarm.setAlarmContent("设å¤è¿è¡è½¬éæ¯NC代ç 设å®å¼é«æ¥è¦"); mdcOverrunAlarmService.save(mdcOverrunAlarm); } } } } } quartzLog.setIsSuccess(0); } catch (Exception e) { quartzLog.setIsSuccess(-1); quartzLog.setExceptionDetail(ThrowableUtil.getStackTrace(e)); // åéæ¶æ¯éç¥ sysAnnouncementService.jobSendMessage("çæ§è®¾å¤è¿è¡è½¬éä¸NCç¨åºè®¾å®è½¬é对æ¯ï¼", quartzLog.getExceptionDetail()); } long endTime = System.currentTimeMillis(); quartzLog.setExecutionTime(Integer.parseInt(String.valueOf(endTime - startTime))); sysQuartzLogService.save(quartzLog); } } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentMapper.java
@@ -8,6 +8,7 @@ import org.apache.ibatis.annotations.Select; import org.jeecg.modules.mdc.dto.MdcEquDepDto; import org.jeecg.modules.mdc.dto.MdcEquProDto; import org.jeecg.modules.mdc.dto.MdcEquipmentDto; import org.jeecg.modules.mdc.entity.MdcEquipment; import org.jeecg.modules.mdc.entity.MdcEquipmentMonitor; import org.jeecg.modules.mdc.vo.MdcEquipmentDepVo; @@ -107,4 +108,12 @@ * @return */ List<MdcEquipment> exportXlsList(@Param("mdcEquipment") MdcEquipmentVo mdcEquipment); /** * æ¥è¯¢åè¡¨æ°æ® * @param tableName * @return */ @InterceptorIgnore(tenantLine = "1") MdcEquipmentDto findWorkLineLast(@Param("tableName") String tableName); } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcMessageApprovalMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,14 @@ package org.jeecg.modules.mdc.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.jeecg.modules.mdc.entity.MdcMessageApproval; /** * @Description: mdcæ¶æ¯ç¡®è®¤è¡¨ * @Author: Lius * @Date: 2024-03-06 * @Version: V1.0 */ public interface MdcMessageApprovalMapper extends BaseMapper<MdcMessageApproval> { } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml
@@ -281,4 +281,9 @@ order by t1.sort_no </select> <!--æ¥è¯¢åè¡¨æ°æ®--> <select id="findWorkLineLast" resultType="org.jeecg.modules.mdc.dto.MdcEquipmentDto"> select top 1 spindlespeed, actualspindlespeed from [${tableName}] order by CollectTime desc </select> </mapper> lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcMessageApprovalMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="org.jeecg.modules.mdc.mapper.MdcMessageApprovalMapper"> </mapper> lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentService.java
@@ -195,4 +195,11 @@ * @return */ List<MdcEquipmentTree> loadTreeListByProductionIds(String ids); /** * æ¥è¯¢åè¡¨æ°æ® * @param tableName * @return */ MdcEquipmentDto getWorkLineLast(String tableName); } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcMessageApprovalService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,14 @@ package org.jeecg.modules.mdc.service; import com.baomidou.mybatisplus.extension.service.IService; import org.jeecg.modules.mdc.entity.MdcMessageApproval; /** * @Description: mdcæ¶æ¯ç¡®è®¤è¡¨ * @Author: Lius * @Date: 2024-03-06 * @Version: V1.0 */ public interface IMdcMessageApprovalService extends IService<MdcMessageApproval> { } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java
@@ -759,8 +759,13 @@ Map<String, Object> param = new HashMap<>(); param.put("columns", builder.toString()); param.put("tableName", saveTableName); Map<String, Object> map = this.baseMapper.getWorkLineLast(param); if (map != null) { Map<String, Object> map = new HashMap<>(); try { map = this.baseMapper.getWorkLineLast(param); } catch (Exception e) { log.error("æ¥è¯¢åè¡¨æ°æ®åºå·®ï¼", e); } if (!map.isEmpty()) { for (MdcEquipmentThreshold mdcEquipmentThreshold : mdcEquipmentThresholdList) { Integer actualValue = Integer.valueOf(map.get(mdcEquipmentThreshold.getEnglishName()).toString()); Integer max = mdcEquipmentThreshold.getMaxThreshold(); @@ -837,4 +842,14 @@ return treeList; } /** * æ¥è¯¢åè¡¨æ°æ® * @param tableName * @return */ @Override public MdcEquipmentDto getWorkLineLast(String tableName) { return this.baseMapper.findWorkLineLast(tableName); } } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcMessageApprovalServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,18 @@ package org.jeecg.modules.mdc.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.jeecg.modules.mdc.entity.MdcMessageApproval; import org.jeecg.modules.mdc.mapper.MdcMessageApprovalMapper; import org.jeecg.modules.mdc.service.IMdcMessageApprovalService; import org.springframework.stereotype.Service; /** * @Description: mdcæ¶æ¯ç¡®è®¤è¡¨ * @Author: Lius * @Date: 2024-03-06 * @Version: V1.0 */ @Service public class MdcMessageApprovalServiceImpl extends ServiceImpl<MdcMessageApprovalMapper, MdcMessageApproval> implements IMdcMessageApprovalService { } lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysAnnouncementSendMapper.java
@@ -1,13 +1,13 @@ package org.jeecg.modules.system.mapper; import java.util.List; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.apache.ibatis.annotations.Param; import org.jeecg.modules.system.entity.SysAnnouncement; import org.jeecg.modules.system.entity.SysAnnouncementSend; import org.jeecg.modules.system.model.AnnouncementSendModel; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import java.util.List; /** * @Description: ç¨æ·éåé 读æ 记表 @@ -48,4 +48,9 @@ * è·åé¦é¡µæ¶æ¯ */ List<SysAnnouncementSend> getPrimaryInfo(@Param("userId") String userId,@Param("msgCategoryList")List<String> msgCategoryList); /** * æ ¹æ®æ¶æ¯å 容æ¥è¯¢æ¶æ¯éç¥ */ SysAnnouncement findLastMessage(@Param("messageContent") String messageContent); } lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysUserMapper.java
@@ -178,4 +178,9 @@ * æ ¹æ®è§è²ç¼ç æ¥è¯¢ç¨æ·idéå */ List<String> getUserByRoleCode(@Param("roleCode") String roleCode); /** * æ ¹æ®è§è²ç¼ç å设å¤ç¼å·æ¥è¯¢ç¨æ· */ List<SysUser> getEquipmentAdmin(@Param("roleCode") String roleCode, @Param("equipmentId") String equipmentId); } lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysAnnouncementSendMapper.xml
@@ -125,4 +125,8 @@ </if> </select> <select id="findLastMessage" resultType="org.jeecg.modules.system.entity.SysAnnouncement"> SELECT TOP 1 * FROM sys_announcement WHERE msg_content = #{messageContent} ORDER BY create_time DESC; </select> </mapper> lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserMapper.xml
@@ -206,4 +206,15 @@ WHERE sr.role_code = #{ roleCode } </select> <!--æ ¹æ®è§è²ç¼ç å设å¤ç¼å·æ¥è¯¢ç¨æ·--> <select id="getEquipmentAdmin" resultType="org.jeecg.modules.system.entity.SysUser"> SELECT t1.* FROM sys_user t1 LEFT JOIN sys_user_role t2 ON t1.id = t2.user_id LEFT JOIN sys_role t3 ON t2.role_id = t3.id WHERE t3.role_code = #{roleCode} AND equipment_ids LIKE concat(concat('%',#{equipmentId}),'%') </select> </mapper> lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/ISysAnnouncementService.java
@@ -67,4 +67,8 @@ void jobSendMessage(String jobDescription, String exceptionDetail); /** * æ ¹æ®æ¶æ¯å 容æ¥è¯¢æ¶æ¯éç¥æ¶é´ */ SysAnnouncement findLastMessage(String messageContent); } lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserService.java
@@ -318,4 +318,6 @@ public List<SysUser> getAllUsersByRoleId(String roleId); List<String> getUserByRoleCode(String roleCode); List<SysUser> getEquipmentAdmin(String roleCode, String equipmentId); } lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysAnnouncementServiceImpl.java
@@ -251,4 +251,12 @@ } /** * æ ¹æ®æ¶æ¯å 容æ¥è¯¢æ¶æ¯éç¥ */ @Override public SysAnnouncement findLastMessage(String messageContent) { return sysAnnouncementSendMapper.findLastMessage(messageContent); } } lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java
@@ -705,4 +705,12 @@ public List<String> getUserByRoleCode(String roleCode) { return this.baseMapper.getUserByRoleCode(roleCode); } /** * æ ¹æ®è§è²ç¼ç å设å¤ç¼å·æ¥è¯¢ç¨æ· */ @Override public List<SysUser> getEquipmentAdmin(String roleCode, String equipmentId) { return this.baseMapper.getEquipmentAdmin(roleCode, equipmentId); } }