From c51323e6fcc84f08bc8c01e3dd6c916427f83f4e Mon Sep 17 00:00:00 2001 From: Lius <Lius2225@163.com> Date: 星期四, 07 三月 2024 10:41:50 +0800 Subject: [PATCH] 设备状态长时间未变化算法更新 --- lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml | 5 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysAnnouncementSendMapper.xml | 4 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcMessageApprovalController.java | 153 ++++++++++++ lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningEquipmentStatusJob.java | 129 ++++++++-- lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java | 8 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcMessageApprovalMapper.xml | 5 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysUserMapper.java | 5 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcMessageApproval.java | 85 +++++++ lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcMessageApprovalMapper.java | 14 + lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcMessageApprovalService.java | 14 + lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcMessageApprovalServiceImpl.java | 18 + lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysAnnouncementSendMapper.java | 13 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserService.java | 2 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningMonitoringSpeedJob.java | 151 ++++++++++++ lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysAnnouncementServiceImpl.java | 8 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java | 19 + lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/ISysAnnouncementService.java | 4 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/constant/MdcConstant.java | 18 + lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentMapper.java | 9 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentService.java | 7 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserMapper.xml | 11 21 files changed, 647 insertions(+), 35 deletions(-) diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/constant/MdcConstant.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/constant/MdcConstant.java index d727367..afbeb3e 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/constant/MdcConstant.java +++ b/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"; + } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcMessageApprovalController.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcMessageApprovalController.java new file mode 100644 index 0000000..55f7553 --- /dev/null +++ b/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); + } + +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcMessageApproval.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcMessageApproval.java new file mode 100644 index 0000000..c76b286 --- /dev/null +++ b/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; + /** + * 澶勭悊浜篿ds + */ + @ApiModelProperty(value = "澶勭悊浜篿ds") + 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; + /** + * 娑堟伅纭浜篿ds + */ + @Excel(name = "娑堟伅纭浜篿ds", width = 15) + @ApiModelProperty(value = "娑堟伅纭浜篿ds") + private String approverIds; + /** + * 娑堟伅纭浜哄鍚� + */ + @Excel(name = "娑堟伅纭浜哄鍚�", width = 15) + @ApiModelProperty(value = "娑堟伅纭浜哄鍚�") + private String approverNames; + /** + * 涓婃姤鍐呭 + */ + @Excel(name = "涓婃姤鍐呭", width = 15) + @ApiModelProperty(value = "涓婃姤鍐呭") + private String reportContent; + +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningEquipmentStatusJob.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningEquipmentStatusJob.java index 8acc779..793eb81 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningEquipmentStatusJob.java +++ b/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() + "] 鐨勮澶囧埄鐢ㄧ巼浣庝簬姝e父鍊兼姤璀︼紒"); - sysBaseApi.sendSysAnnouncement(messageDTO); + // step.1 鏌ヨ娑堟伅涓璁惧鎶ヨ鏃堕棿 + SysAnnouncement sysAnnouncement = sysAnnouncementService.findLastMessage("璁惧缂栧彿涓� [" + mdcEquipment.getEquipmentId() + "] 鐨勮澶囧埄鐢ㄧ巼浣庝簬姝e父鍊兼姤璀︼紒"); + 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() + "] 鐨勮澶囧埄鐢ㄧ巼浣庝簬姝e父鍊兼姤璀︼紒"); + 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))); diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningMonitoringSpeedJob.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningMonitoringSpeedJob.java new file mode 100644 index 0000000..016b062 --- /dev/null +++ b/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浠g爜璁惧畾鍊间綆鎶ヨ"); + mdcOverrunAlarmService.save(mdcOverrunAlarm); + } else if (spindlespeed < actualspindlespeed) { + // 璁惧畾鍊煎皬浜庡疄闄呭�� 楂� + messageDTO.setContent("璁惧缂栧彿涓� [" + mdcEquipment.getEquipmentId() + "] 鐨勮澶囪繍琛岃浆閫熼珮鎶ヨ锛�"); + sysBaseApi.sendSysAnnouncement(messageDTO); + mdcOverrunAlarm.setAlarmContent("璁惧杩愯杞�熸瘮NC浠g爜璁惧畾鍊奸珮鎶ヨ"); + 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浠g爜璁惧畾鍊间綆鎶ヨ"); + mdcOverrunAlarmService.save(mdcOverrunAlarm); + } else if (spindlespeed < actualspindlespeed) { + // 璁惧畾鍊煎皬浜庡疄闄呭�� 楂� + messageDTO.setContent("璁惧缂栧彿涓� [" + mdcEquipment.getEquipmentId() + "] 鐨勮澶囪繍琛岃浆閫熼珮鎶ヨ锛�"); + sysBaseApi.sendSysAnnouncement(messageDTO); + mdcOverrunAlarm.setAlarmContent("璁惧杩愯杞�熸瘮NC浠g爜璁惧畾鍊奸珮鎶ヨ"); + 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); + } +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentMapper.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentMapper.java index 80a03f4..f9a3f07 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentMapper.java +++ b/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); } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcMessageApprovalMapper.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcMessageApprovalMapper.java new file mode 100644 index 0000000..00ba35e --- /dev/null +++ b/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> { + +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml index b879be2..4e0ace6 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml +++ b/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> \ No newline at end of file diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcMessageApprovalMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcMessageApprovalMapper.xml new file mode 100644 index 0000000..39169e2 --- /dev/null +++ b/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> \ No newline at end of file diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentService.java index 7230bce..94628cd 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentService.java +++ b/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); } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcMessageApprovalService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcMessageApprovalService.java new file mode 100644 index 0000000..71dbfb7 --- /dev/null +++ b/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> { + +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java index 85dd8df..83817f6 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java +++ b/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); + } + } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcMessageApprovalServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcMessageApprovalServiceImpl.java new file mode 100644 index 0000000..0beff04 --- /dev/null +++ b/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 { + +} diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysAnnouncementSendMapper.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysAnnouncementSendMapper.java index 4c2aad7..2ad2698 100644 --- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysAnnouncementSendMapper.java +++ b/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); } diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysUserMapper.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysUserMapper.java index cb3734c..7966336 100644 --- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysUserMapper.java +++ b/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); } diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysAnnouncementSendMapper.xml b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysAnnouncementSendMapper.xml index 532dd8f..df2baa5 100644 --- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysAnnouncementSendMapper.xml +++ b/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> diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserMapper.xml b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserMapper.xml index feef5b8..3e751a9 100644 --- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserMapper.xml +++ b/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> \ No newline at end of file diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/ISysAnnouncementService.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/ISysAnnouncementService.java index a9314bb..d08dfaf 100644 --- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/ISysAnnouncementService.java +++ b/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); } diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserService.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserService.java index 0a4567f..751395e 100644 --- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserService.java +++ b/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); } diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysAnnouncementServiceImpl.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysAnnouncementServiceImpl.java index 783aa0c..427d0b4 100644 --- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysAnnouncementServiceImpl.java +++ b/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); + } + } diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java index 4decd8a..106de85 100644 --- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java +++ b/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); + } } -- Gitblit v1.9.3