diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java index ca4193e..b24b193 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java @@ -12,6 +12,7 @@ import com.casic.missiles.listeners.CommonExcelListener; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import com.casic.missiles.service.meter.MeterCertificateService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -107,9 +108,9 @@ @ApiOperation("消息列表查询") @PostMapping("/queryMessageList") @ResponseBody - public ReturnDTO queryMessageList(@RequestBody MeterStaffRequest request) { - Page page = PageFactory.defaultPage(); - Page list = meterCertificateService.queryMessageList(page,request); + public ReturnDTO queryMessageList() { + Page page = PageFactory.defaultPage(); + Page list = meterCertificateService.queryMessageList(page); return ReturnUtil.success(list); } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java index ca4193e..b24b193 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java @@ -12,6 +12,7 @@ import com.casic.missiles.listeners.CommonExcelListener; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import com.casic.missiles.service.meter.MeterCertificateService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -107,9 +108,9 @@ @ApiOperation("消息列表查询") @PostMapping("/queryMessageList") @ResponseBody - public ReturnDTO queryMessageList(@RequestBody MeterStaffRequest request) { - Page page = PageFactory.defaultPage(); - Page list = meterCertificateService.queryMessageList(page,request); + public ReturnDTO queryMessageList() { + Page page = PageFactory.defaultPage(); + Page list = meterCertificateService.queryMessageList(page); return ReturnUtil.success(list); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 76c1ee7..af43c35 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -38,6 +38,7 @@ DUPLICATE_MANUFACTURE_NUMBER(2401, "出厂编号重复"), PARAM_INVALID(2500, "参数不合法"), LOGIN_USER_ACQUIRE_FAILED(2402, "无法获取登录者用户信息,请尝试重新登录再进行操作"), + NOT_FOUND_USER_INFO(2402, "未找到用户信息"), STANDARD_EQUIPMENT_ID_EXIST(2402, "标准装置不存在"), STANDARD_EQUIPMENT_USER_ID_EXIST(2402, "标准装置-计量人员不存在"), diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java index ca4193e..b24b193 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java @@ -12,6 +12,7 @@ import com.casic.missiles.listeners.CommonExcelListener; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import com.casic.missiles.service.meter.MeterCertificateService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -107,9 +108,9 @@ @ApiOperation("消息列表查询") @PostMapping("/queryMessageList") @ResponseBody - public ReturnDTO queryMessageList(@RequestBody MeterStaffRequest request) { - Page page = PageFactory.defaultPage(); - Page list = meterCertificateService.queryMessageList(page,request); + public ReturnDTO queryMessageList() { + Page page = PageFactory.defaultPage(); + Page list = meterCertificateService.queryMessageList(page); return ReturnUtil.success(list); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 76c1ee7..af43c35 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -38,6 +38,7 @@ DUPLICATE_MANUFACTURE_NUMBER(2401, "出厂编号重复"), PARAM_INVALID(2500, "参数不合法"), LOGIN_USER_ACQUIRE_FAILED(2402, "无法获取登录者用户信息,请尝试重新登录再进行操作"), + NOT_FOUND_USER_INFO(2402, "未找到用户信息"), STANDARD_EQUIPMENT_ID_EXIST(2402, "标准装置不存在"), STANDARD_EQUIPMENT_USER_ID_EXIST(2402, "标准装置-计量人员不存在"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java index 9152600..c6c36c7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java @@ -7,7 +7,7 @@ public enum ExamResultEnum { QUALIFIED("1", "合格"), - NOT_QUALIFIED("2", "不合格"); + NOT_QUALIFIED("2", "不及格"); private String code; private String value; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java index ca4193e..b24b193 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java @@ -12,6 +12,7 @@ import com.casic.missiles.listeners.CommonExcelListener; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import com.casic.missiles.service.meter.MeterCertificateService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -107,9 +108,9 @@ @ApiOperation("消息列表查询") @PostMapping("/queryMessageList") @ResponseBody - public ReturnDTO queryMessageList(@RequestBody MeterStaffRequest request) { - Page page = PageFactory.defaultPage(); - Page list = meterCertificateService.queryMessageList(page,request); + public ReturnDTO queryMessageList() { + Page page = PageFactory.defaultPage(); + Page list = meterCertificateService.queryMessageList(page); return ReturnUtil.success(list); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 76c1ee7..af43c35 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -38,6 +38,7 @@ DUPLICATE_MANUFACTURE_NUMBER(2401, "出厂编号重复"), PARAM_INVALID(2500, "参数不合法"), LOGIN_USER_ACQUIRE_FAILED(2402, "无法获取登录者用户信息,请尝试重新登录再进行操作"), + NOT_FOUND_USER_INFO(2402, "未找到用户信息"), STANDARD_EQUIPMENT_ID_EXIST(2402, "标准装置不存在"), STANDARD_EQUIPMENT_USER_ID_EXIST(2402, "标准装置-计量人员不存在"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java index 9152600..c6c36c7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java @@ -7,7 +7,7 @@ public enum ExamResultEnum { QUALIFIED("1", "合格"), - NOT_QUALIFIED("2", "不合格"); + NOT_QUALIFIED("2", "不及格"); private String code; private String value; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java index f61a7ff..02cd838 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java @@ -1,5 +1,7 @@ package com.casic.missiles.utils; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -96,4 +98,18 @@ } } + // 向不同用户发送不同消息 + public void sendMessage(List list) { + for (WorkbenchRemindMessage message : list) { + Session session = sessionPool.get(String.valueOf(message.getRemindId())); + if (session != null) { + try { + session.getAsyncRemote().sendText(JSONObject.toJSONString(message)); + } catch (Exception e) { + log.error("【websocket消息】列表消息发送异常"); + e.printStackTrace(); + } + } + } + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java index ca4193e..b24b193 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java @@ -12,6 +12,7 @@ import com.casic.missiles.listeners.CommonExcelListener; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import com.casic.missiles.service.meter.MeterCertificateService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -107,9 +108,9 @@ @ApiOperation("消息列表查询") @PostMapping("/queryMessageList") @ResponseBody - public ReturnDTO queryMessageList(@RequestBody MeterStaffRequest request) { - Page page = PageFactory.defaultPage(); - Page list = meterCertificateService.queryMessageList(page,request); + public ReturnDTO queryMessageList() { + Page page = PageFactory.defaultPage(); + Page list = meterCertificateService.queryMessageList(page); return ReturnUtil.success(list); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 76c1ee7..af43c35 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -38,6 +38,7 @@ DUPLICATE_MANUFACTURE_NUMBER(2401, "出厂编号重复"), PARAM_INVALID(2500, "参数不合法"), LOGIN_USER_ACQUIRE_FAILED(2402, "无法获取登录者用户信息,请尝试重新登录再进行操作"), + NOT_FOUND_USER_INFO(2402, "未找到用户信息"), STANDARD_EQUIPMENT_ID_EXIST(2402, "标准装置不存在"), STANDARD_EQUIPMENT_USER_ID_EXIST(2402, "标准装置-计量人员不存在"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java index 9152600..c6c36c7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java @@ -7,7 +7,7 @@ public enum ExamResultEnum { QUALIFIED("1", "合格"), - NOT_QUALIFIED("2", "不合格"); + NOT_QUALIFIED("2", "不及格"); private String code; private String value; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java index f61a7ff..02cd838 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java @@ -1,5 +1,7 @@ package com.casic.missiles.utils; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -96,4 +98,18 @@ } } + // 向不同用户发送不同消息 + public void sendMessage(List list) { + for (WorkbenchRemindMessage message : list) { + Session session = sessionPool.get(String.valueOf(message.getRemindId())); + if (session != null) { + try { + session.getAsyncRemote().sendText(JSONObject.toJSONString(message)); + } catch (Exception e) { + log.error("【websocket消息】列表消息发送异常"); + e.printStackTrace(); + } + } + } + } } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java index 4c32561..564ad43 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java @@ -8,6 +8,7 @@ import com.casic.missiles.dto.meter.MeterStaffRequest; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -18,7 +19,7 @@ List queryCertificateList(@Param("request")MeterStaffRequest meterStaffRequest); - List queryReminderList(); + List queryReminderList(); void addCertificateList(@Param("list")List list); diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java index ca4193e..b24b193 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java @@ -12,6 +12,7 @@ import com.casic.missiles.listeners.CommonExcelListener; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import com.casic.missiles.service.meter.MeterCertificateService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -107,9 +108,9 @@ @ApiOperation("消息列表查询") @PostMapping("/queryMessageList") @ResponseBody - public ReturnDTO queryMessageList(@RequestBody MeterStaffRequest request) { - Page page = PageFactory.defaultPage(); - Page list = meterCertificateService.queryMessageList(page,request); + public ReturnDTO queryMessageList() { + Page page = PageFactory.defaultPage(); + Page list = meterCertificateService.queryMessageList(page); return ReturnUtil.success(list); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 76c1ee7..af43c35 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -38,6 +38,7 @@ DUPLICATE_MANUFACTURE_NUMBER(2401, "出厂编号重复"), PARAM_INVALID(2500, "参数不合法"), LOGIN_USER_ACQUIRE_FAILED(2402, "无法获取登录者用户信息,请尝试重新登录再进行操作"), + NOT_FOUND_USER_INFO(2402, "未找到用户信息"), STANDARD_EQUIPMENT_ID_EXIST(2402, "标准装置不存在"), STANDARD_EQUIPMENT_USER_ID_EXIST(2402, "标准装置-计量人员不存在"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java index 9152600..c6c36c7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java @@ -7,7 +7,7 @@ public enum ExamResultEnum { QUALIFIED("1", "合格"), - NOT_QUALIFIED("2", "不合格"); + NOT_QUALIFIED("2", "不及格"); private String code; private String value; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java index f61a7ff..02cd838 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java @@ -1,5 +1,7 @@ package com.casic.missiles.utils; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -96,4 +98,18 @@ } } + // 向不同用户发送不同消息 + public void sendMessage(List list) { + for (WorkbenchRemindMessage message : list) { + Session session = sessionPool.get(String.valueOf(message.getRemindId())); + if (session != null) { + try { + session.getAsyncRemote().sendText(JSONObject.toJSONString(message)); + } catch (Exception e) { + log.error("【websocket消息】列表消息发送异常"); + e.printStackTrace(); + } + } + } + } } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java index 4c32561..564ad43 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java @@ -8,6 +8,7 @@ import com.casic.missiles.dto.meter.MeterStaffRequest; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -18,7 +19,7 @@ List queryCertificateList(@Param("request")MeterStaffRequest meterStaffRequest); - List queryReminderList(); + List queryReminderList(); void addCertificateList(@Param("list")List list); diff --git a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml index 135544e..7aaf965 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml @@ -75,17 +75,20 @@ - SELECT - t1.id as certificate_id, - t1.staff_id, - t1.certificate_no, - t1.certificate_name, - t1.valid_date, - t2.account as staff_no + su.ID AS remind_id, + mc.id AS business_id, + mc.certificate_no AS business_code, + mc.certificate_name AS message_content FROM - meter_certificate AS t1 - LEFT JOIN meter_staff t2 ON t1.staff_id = t2.id where DATE_FORMAT(t1.valid_date,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL -30 day) + meter_certificate AS mc + LEFT JOIN meter_staff ms ON mc.staff_id = ms.id + LEFT JOIN sys_user su ON ms.account = su.ACCOUNT + WHERE + DATE_FORMAT( mc.valid_date, '%Y-%m-%d' ) = DATE_SUB( + curdate(), + INTERVAL - 30 DAY) diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java index ca4193e..b24b193 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java @@ -12,6 +12,7 @@ import com.casic.missiles.listeners.CommonExcelListener; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import com.casic.missiles.service.meter.MeterCertificateService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -107,9 +108,9 @@ @ApiOperation("消息列表查询") @PostMapping("/queryMessageList") @ResponseBody - public ReturnDTO queryMessageList(@RequestBody MeterStaffRequest request) { - Page page = PageFactory.defaultPage(); - Page list = meterCertificateService.queryMessageList(page,request); + public ReturnDTO queryMessageList() { + Page page = PageFactory.defaultPage(); + Page list = meterCertificateService.queryMessageList(page); return ReturnUtil.success(list); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 76c1ee7..af43c35 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -38,6 +38,7 @@ DUPLICATE_MANUFACTURE_NUMBER(2401, "出厂编号重复"), PARAM_INVALID(2500, "参数不合法"), LOGIN_USER_ACQUIRE_FAILED(2402, "无法获取登录者用户信息,请尝试重新登录再进行操作"), + NOT_FOUND_USER_INFO(2402, "未找到用户信息"), STANDARD_EQUIPMENT_ID_EXIST(2402, "标准装置不存在"), STANDARD_EQUIPMENT_USER_ID_EXIST(2402, "标准装置-计量人员不存在"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java index 9152600..c6c36c7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java @@ -7,7 +7,7 @@ public enum ExamResultEnum { QUALIFIED("1", "合格"), - NOT_QUALIFIED("2", "不合格"); + NOT_QUALIFIED("2", "不及格"); private String code; private String value; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java index f61a7ff..02cd838 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java @@ -1,5 +1,7 @@ package com.casic.missiles.utils; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -96,4 +98,18 @@ } } + // 向不同用户发送不同消息 + public void sendMessage(List list) { + for (WorkbenchRemindMessage message : list) { + Session session = sessionPool.get(String.valueOf(message.getRemindId())); + if (session != null) { + try { + session.getAsyncRemote().sendText(JSONObject.toJSONString(message)); + } catch (Exception e) { + log.error("【websocket消息】列表消息发送异常"); + e.printStackTrace(); + } + } + } + } } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java index 4c32561..564ad43 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java @@ -8,6 +8,7 @@ import com.casic.missiles.dto.meter.MeterStaffRequest; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -18,7 +19,7 @@ List queryCertificateList(@Param("request")MeterStaffRequest meterStaffRequest); - List queryReminderList(); + List queryReminderList(); void addCertificateList(@Param("list")List list); diff --git a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml index 135544e..7aaf965 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml @@ -75,17 +75,20 @@ - SELECT - t1.id as certificate_id, - t1.staff_id, - t1.certificate_no, - t1.certificate_name, - t1.valid_date, - t2.account as staff_no + su.ID AS remind_id, + mc.id AS business_id, + mc.certificate_no AS business_code, + mc.certificate_name AS message_content FROM - meter_certificate AS t1 - LEFT JOIN meter_staff t2 ON t1.staff_id = t2.id where DATE_FORMAT(t1.valid_date,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL -30 day) + meter_certificate AS mc + LEFT JOIN meter_staff ms ON mc.staff_id = ms.id + LEFT JOIN sys_user su ON ms.account = su.ACCOUNT + WHERE + DATE_FORMAT( mc.valid_date, '%Y-%m-%d' ) = DATE_SUB( + curdate(), + INTERVAL - 30 DAY) diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java index 5c82398..cf1cde8 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java @@ -16,6 +16,12 @@ public class MeterStaffRequest { /** + * 用户id + */ + @ApiModelProperty(value = "用户id", dataType = "String") + private String userId; + + /** * 姓名 */ @ApiModelProperty(value = "人员编号", dataType = "String") diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java index ca4193e..b24b193 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java @@ -12,6 +12,7 @@ import com.casic.missiles.listeners.CommonExcelListener; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import com.casic.missiles.service.meter.MeterCertificateService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -107,9 +108,9 @@ @ApiOperation("消息列表查询") @PostMapping("/queryMessageList") @ResponseBody - public ReturnDTO queryMessageList(@RequestBody MeterStaffRequest request) { - Page page = PageFactory.defaultPage(); - Page list = meterCertificateService.queryMessageList(page,request); + public ReturnDTO queryMessageList() { + Page page = PageFactory.defaultPage(); + Page list = meterCertificateService.queryMessageList(page); return ReturnUtil.success(list); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 76c1ee7..af43c35 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -38,6 +38,7 @@ DUPLICATE_MANUFACTURE_NUMBER(2401, "出厂编号重复"), PARAM_INVALID(2500, "参数不合法"), LOGIN_USER_ACQUIRE_FAILED(2402, "无法获取登录者用户信息,请尝试重新登录再进行操作"), + NOT_FOUND_USER_INFO(2402, "未找到用户信息"), STANDARD_EQUIPMENT_ID_EXIST(2402, "标准装置不存在"), STANDARD_EQUIPMENT_USER_ID_EXIST(2402, "标准装置-计量人员不存在"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java index 9152600..c6c36c7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java @@ -7,7 +7,7 @@ public enum ExamResultEnum { QUALIFIED("1", "合格"), - NOT_QUALIFIED("2", "不合格"); + NOT_QUALIFIED("2", "不及格"); private String code; private String value; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java index f61a7ff..02cd838 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java @@ -1,5 +1,7 @@ package com.casic.missiles.utils; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -96,4 +98,18 @@ } } + // 向不同用户发送不同消息 + public void sendMessage(List list) { + for (WorkbenchRemindMessage message : list) { + Session session = sessionPool.get(String.valueOf(message.getRemindId())); + if (session != null) { + try { + session.getAsyncRemote().sendText(JSONObject.toJSONString(message)); + } catch (Exception e) { + log.error("【websocket消息】列表消息发送异常"); + e.printStackTrace(); + } + } + } + } } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java index 4c32561..564ad43 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java @@ -8,6 +8,7 @@ import com.casic.missiles.dto.meter.MeterStaffRequest; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -18,7 +19,7 @@ List queryCertificateList(@Param("request")MeterStaffRequest meterStaffRequest); - List queryReminderList(); + List queryReminderList(); void addCertificateList(@Param("list")List list); diff --git a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml index 135544e..7aaf965 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml @@ -75,17 +75,20 @@ - SELECT - t1.id as certificate_id, - t1.staff_id, - t1.certificate_no, - t1.certificate_name, - t1.valid_date, - t2.account as staff_no + su.ID AS remind_id, + mc.id AS business_id, + mc.certificate_no AS business_code, + mc.certificate_name AS message_content FROM - meter_certificate AS t1 - LEFT JOIN meter_staff t2 ON t1.staff_id = t2.id where DATE_FORMAT(t1.valid_date,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL -30 day) + meter_certificate AS mc + LEFT JOIN meter_staff ms ON mc.staff_id = ms.id + LEFT JOIN sys_user su ON ms.account = su.ACCOUNT + WHERE + DATE_FORMAT( mc.valid_date, '%Y-%m-%d' ) = DATE_SUB( + curdate(), + INTERVAL - 30 DAY) diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java index 5c82398..cf1cde8 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java @@ -16,6 +16,12 @@ public class MeterStaffRequest { /** + * 用户id + */ + @ApiModelProperty(value = "用户id", dataType = "String") + private String userId; + + /** * 姓名 */ @ApiModelProperty(value = "人员编号", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java index 4125b32..e54fdc5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java @@ -74,5 +74,11 @@ @ApiModelProperty(value = "不合格", dataType = "Integer") private Integer notQualified; + /** + * 是否是部门负责人 + */ + @ApiModelProperty(value = "是否是部门负责人", dataType = "boolean") + private boolean isMeterAdmin; + } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java index ca4193e..b24b193 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java @@ -12,6 +12,7 @@ import com.casic.missiles.listeners.CommonExcelListener; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import com.casic.missiles.service.meter.MeterCertificateService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -107,9 +108,9 @@ @ApiOperation("消息列表查询") @PostMapping("/queryMessageList") @ResponseBody - public ReturnDTO queryMessageList(@RequestBody MeterStaffRequest request) { - Page page = PageFactory.defaultPage(); - Page list = meterCertificateService.queryMessageList(page,request); + public ReturnDTO queryMessageList() { + Page page = PageFactory.defaultPage(); + Page list = meterCertificateService.queryMessageList(page); return ReturnUtil.success(list); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 76c1ee7..af43c35 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -38,6 +38,7 @@ DUPLICATE_MANUFACTURE_NUMBER(2401, "出厂编号重复"), PARAM_INVALID(2500, "参数不合法"), LOGIN_USER_ACQUIRE_FAILED(2402, "无法获取登录者用户信息,请尝试重新登录再进行操作"), + NOT_FOUND_USER_INFO(2402, "未找到用户信息"), STANDARD_EQUIPMENT_ID_EXIST(2402, "标准装置不存在"), STANDARD_EQUIPMENT_USER_ID_EXIST(2402, "标准装置-计量人员不存在"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java index 9152600..c6c36c7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java @@ -7,7 +7,7 @@ public enum ExamResultEnum { QUALIFIED("1", "合格"), - NOT_QUALIFIED("2", "不合格"); + NOT_QUALIFIED("2", "不及格"); private String code; private String value; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java index f61a7ff..02cd838 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java @@ -1,5 +1,7 @@ package com.casic.missiles.utils; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -96,4 +98,18 @@ } } + // 向不同用户发送不同消息 + public void sendMessage(List list) { + for (WorkbenchRemindMessage message : list) { + Session session = sessionPool.get(String.valueOf(message.getRemindId())); + if (session != null) { + try { + session.getAsyncRemote().sendText(JSONObject.toJSONString(message)); + } catch (Exception e) { + log.error("【websocket消息】列表消息发送异常"); + e.printStackTrace(); + } + } + } + } } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java index 4c32561..564ad43 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java @@ -8,6 +8,7 @@ import com.casic.missiles.dto.meter.MeterStaffRequest; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -18,7 +19,7 @@ List queryCertificateList(@Param("request")MeterStaffRequest meterStaffRequest); - List queryReminderList(); + List queryReminderList(); void addCertificateList(@Param("list")List list); diff --git a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml index 135544e..7aaf965 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml @@ -75,17 +75,20 @@ - SELECT - t1.id as certificate_id, - t1.staff_id, - t1.certificate_no, - t1.certificate_name, - t1.valid_date, - t2.account as staff_no + su.ID AS remind_id, + mc.id AS business_id, + mc.certificate_no AS business_code, + mc.certificate_name AS message_content FROM - meter_certificate AS t1 - LEFT JOIN meter_staff t2 ON t1.staff_id = t2.id where DATE_FORMAT(t1.valid_date,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL -30 day) + meter_certificate AS mc + LEFT JOIN meter_staff ms ON mc.staff_id = ms.id + LEFT JOIN sys_user su ON ms.account = su.ACCOUNT + WHERE + DATE_FORMAT( mc.valid_date, '%Y-%m-%d' ) = DATE_SUB( + curdate(), + INTERVAL - 30 DAY) diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java index 5c82398..cf1cde8 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java @@ -16,6 +16,12 @@ public class MeterStaffRequest { /** + * 用户id + */ + @ApiModelProperty(value = "用户id", dataType = "String") + private String userId; + + /** * 姓名 */ @ApiModelProperty(value = "人员编号", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java index 4125b32..e54fdc5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java @@ -74,5 +74,11 @@ @ApiModelProperty(value = "不合格", dataType = "Integer") private Integer notQualified; + /** + * 是否是部门负责人 + */ + @ApiModelProperty(value = "是否是部门负责人", dataType = "boolean") + private boolean isMeterAdmin; + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java b/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java index 8f24e19..5e30e4f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java @@ -96,5 +96,16 @@ @TableField("update_time") private String updateTime; + public WorkbenchRemindMessage(Long remindId, Long businessId, String businessCode, String messageContent, Integer status, Long createUser, String createUserName) { + this.remindId = remindId; + this.businessId = businessId; + this.businessCode = businessCode; + this.messageContent = messageContent; + this.status = status; + this.createUser = createUser; + this.createUserName = createUserName; + } + public WorkbenchRemindMessage() { + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java index ca4193e..b24b193 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java @@ -12,6 +12,7 @@ import com.casic.missiles.listeners.CommonExcelListener; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import com.casic.missiles.service.meter.MeterCertificateService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -107,9 +108,9 @@ @ApiOperation("消息列表查询") @PostMapping("/queryMessageList") @ResponseBody - public ReturnDTO queryMessageList(@RequestBody MeterStaffRequest request) { - Page page = PageFactory.defaultPage(); - Page list = meterCertificateService.queryMessageList(page,request); + public ReturnDTO queryMessageList() { + Page page = PageFactory.defaultPage(); + Page list = meterCertificateService.queryMessageList(page); return ReturnUtil.success(list); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 76c1ee7..af43c35 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -38,6 +38,7 @@ DUPLICATE_MANUFACTURE_NUMBER(2401, "出厂编号重复"), PARAM_INVALID(2500, "参数不合法"), LOGIN_USER_ACQUIRE_FAILED(2402, "无法获取登录者用户信息,请尝试重新登录再进行操作"), + NOT_FOUND_USER_INFO(2402, "未找到用户信息"), STANDARD_EQUIPMENT_ID_EXIST(2402, "标准装置不存在"), STANDARD_EQUIPMENT_USER_ID_EXIST(2402, "标准装置-计量人员不存在"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java index 9152600..c6c36c7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java @@ -7,7 +7,7 @@ public enum ExamResultEnum { QUALIFIED("1", "合格"), - NOT_QUALIFIED("2", "不合格"); + NOT_QUALIFIED("2", "不及格"); private String code; private String value; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java index f61a7ff..02cd838 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java @@ -1,5 +1,7 @@ package com.casic.missiles.utils; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -96,4 +98,18 @@ } } + // 向不同用户发送不同消息 + public void sendMessage(List list) { + for (WorkbenchRemindMessage message : list) { + Session session = sessionPool.get(String.valueOf(message.getRemindId())); + if (session != null) { + try { + session.getAsyncRemote().sendText(JSONObject.toJSONString(message)); + } catch (Exception e) { + log.error("【websocket消息】列表消息发送异常"); + e.printStackTrace(); + } + } + } + } } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java index 4c32561..564ad43 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java @@ -8,6 +8,7 @@ import com.casic.missiles.dto.meter.MeterStaffRequest; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -18,7 +19,7 @@ List queryCertificateList(@Param("request")MeterStaffRequest meterStaffRequest); - List queryReminderList(); + List queryReminderList(); void addCertificateList(@Param("list")List list); diff --git a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml index 135544e..7aaf965 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml @@ -75,17 +75,20 @@ - SELECT - t1.id as certificate_id, - t1.staff_id, - t1.certificate_no, - t1.certificate_name, - t1.valid_date, - t2.account as staff_no + su.ID AS remind_id, + mc.id AS business_id, + mc.certificate_no AS business_code, + mc.certificate_name AS message_content FROM - meter_certificate AS t1 - LEFT JOIN meter_staff t2 ON t1.staff_id = t2.id where DATE_FORMAT(t1.valid_date,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL -30 day) + meter_certificate AS mc + LEFT JOIN meter_staff ms ON mc.staff_id = ms.id + LEFT JOIN sys_user su ON ms.account = su.ACCOUNT + WHERE + DATE_FORMAT( mc.valid_date, '%Y-%m-%d' ) = DATE_SUB( + curdate(), + INTERVAL - 30 DAY) diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java index 5c82398..cf1cde8 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java @@ -16,6 +16,12 @@ public class MeterStaffRequest { /** + * 用户id + */ + @ApiModelProperty(value = "用户id", dataType = "String") + private String userId; + + /** * 姓名 */ @ApiModelProperty(value = "人员编号", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java index 4125b32..e54fdc5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java @@ -74,5 +74,11 @@ @ApiModelProperty(value = "不合格", dataType = "Integer") private Integer notQualified; + /** + * 是否是部门负责人 + */ + @ApiModelProperty(value = "是否是部门负责人", dataType = "boolean") + private boolean isMeterAdmin; + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java b/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java index 8f24e19..5e30e4f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java @@ -96,5 +96,16 @@ @TableField("update_time") private String updateTime; + public WorkbenchRemindMessage(Long remindId, Long businessId, String businessCode, String messageContent, Integer status, Long createUser, String createUserName) { + this.remindId = remindId; + this.businessId = businessId; + this.businessCode = businessCode; + this.messageContent = messageContent; + this.status = status; + this.createUser = createUser; + this.createUserName = createUserName; + } + public WorkbenchRemindMessage() { + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterCertificateServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterCertificateServiceImpl.java index 10e1b94..6c31948 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterCertificateServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterCertificateServiceImpl.java @@ -1,8 +1,11 @@ package com.casic.missiles.service.Impl.meter; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import com.alibaba.excel.util.DateUtils; import com.alibaba.excel.util.StringUtils; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.IdWorker; @@ -10,6 +13,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.service.IBaseExportService; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.meter.MeterCertificateDto; import com.casic.missiles.dto.ReturnDTO; @@ -23,13 +28,19 @@ import com.casic.missiles.mapper.meter.MeterCertificateExpireMessageMapper; import com.casic.missiles.mapper.meter.MeterCertificateMapper; import com.casic.missiles.mapper.meter.MeterStaffMapper; +import com.casic.missiles.mapper.sys.UserInfoMapper; +import com.casic.missiles.mapper.workbench.WorkbenchRemindMessageMapper; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; import com.casic.missiles.model.meter.MeterStaff; +import com.casic.missiles.model.system.UserInfo; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import com.casic.missiles.service.meter.MeterCertificateExpireMessageService; import com.casic.missiles.service.meter.MeterCertificateService; +import com.casic.missiles.service.workbench.IWorkbenchRemindMessageService; import com.casic.missiles.utils.ExportUtils; import com.casic.missiles.utils.MinioUtil; +import com.casic.missiles.utils.WebSocket; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; @@ -37,10 +48,7 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.concurrent.atomic.AtomicBoolean; import java.util.stream.Collectors; @@ -57,16 +65,16 @@ private MeterStaffMapper meterStaffMapper; @Resource - private MeterCertificateService meterCertificateService; + private WebSocket webSocket; @Resource - private MeterCertificateExpireMessageMapper messageMapper; + private WorkbenchRemindMessageMapper messageMapper; @Resource private AbstractDictService dictService; @Resource - private MeterCertificateExpireMessageService messageService; + private IWorkbenchRemindMessageService messageService; @Resource private MinioUtil minioUtil; @@ -74,6 +82,9 @@ @Resource private IBaseExportService iBaseExportService; + @Resource + private UserInfoMapper userInfoMapper; + @Override public ReturnDTO queryCertificateList(Page page , MeterStaffRequest meterStaffRequest) { Page meterCertificateDtoPage = meterCertificateMapper.queryCertificateList(page, meterStaffRequest); @@ -137,15 +148,19 @@ } @Override - public Page queryMessageList(Page page, MeterStaffRequest request) { - QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.eq("staff_no",request.getStaffNo()); + public Page queryMessageList(Page page) { + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("remind_id",user.getId()); return messageMapper.selectPage(page,wrapper); } @Override public ReturnDTO readMessage(IdDTO idDto) { - UpdateWrapper updateWrapper = new UpdateWrapper<>(); + UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id",idDto.getId()).set("status", 1); if(messageMapper.update(null, updateWrapper)>0){ return ReturnUtil.success(); @@ -157,9 +172,20 @@ public ReturnDTO expirationReminder(IdDTO idDto) { MeterCertificate meterCertificate = meterCertificateMapper.selectById(idDto.getId()); MeterStaff meterStaff = meterStaffMapper.selectById(meterCertificate.getStaffId()); - MeterCertificateExpireMessage message = new MeterCertificateExpireMessage(null,meterCertificate.getStaffId(),String.valueOf(meterCertificate.getId()),meterStaff.getAccount(),meterCertificate.getCertificateNo(),meterCertificate.getCertificateName(),meterCertificate.getValidDate(),0); - if(messageMapper.insert(message)>0){ - // todo 新增到消息列表后向用户推送消息 + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("account",meterStaff.getAccount()); + UserInfo userInfo = userInfoMapper.selectOne(wrapper); + if(ObjectUtil.isEmpty(userInfo)){ + throw new BusinessException(BusinessExceptionEnum.NOT_FOUND_USER_INFO); + } + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + WorkbenchRemindMessage remindMessage = new WorkbenchRemindMessage(userInfo.getId(),idDto.getId(),meterCertificate.getCertificateNo(),meterCertificate.getCertificateName(),0,user.getId(),user.getName()); + if(messageMapper.insert(remindMessage)>0){ + // 新增到消息列表后向用户推送消息 + webSocket.sendOneMessage(String.valueOf(userInfo.getId()),JSONObject.toJSONString(remindMessage)); return ReturnUtil.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); @@ -167,32 +193,30 @@ @Override public void regularExpirationReminder() { - List messageList = new ArrayList<>(); + List messageList = new ArrayList<>(); // 获取即将过期的证书列表(过期时间距离过期还差30天) - List list = meterCertificateMapper.queryReminderList(); + List list = meterCertificateMapper.queryReminderList(); if(null != list && list.size()!=0){ - List idList = new ArrayList<>(); - list.forEach(bean -> { - idList.add(bean.getCertificateId()); - }); - QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.select("certificate_id"); - wrapper.in("certificate_id", idList); + List idList = new ArrayList<>(); + for (WorkbenchRemindMessage remindMessage : list) { + idList.add(remindMessage.getBusinessId()); + } + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.select("business_id"); + wrapper.in("business_id", idList); // 通过证书id查询消息表中已经手动发送过得消息 List messageIds = messageMapper.selectObjs(wrapper); // 将证书列表通过证书id分组 - Map> collect = list.parallelStream().collect(Collectors.groupingBy(MeterCertificateExpireMessage::getCertificateId)); - messageIds.forEach(id -> { - // 移除已经发送过消息的证书信息 - collect.remove(id.toString()); - }); + Map> collect = list.parallelStream().collect(Collectors.groupingBy(WorkbenchRemindMessage::getBusinessId)); + // 移除已经发送过消息的证书信息 + messageIds.forEach(collect::remove); collect.keySet().forEach(dtoList -> { // 讲需要发送消息的证书整合 messageList.addAll(collect.get(dtoList)); }); - if(messageList.size()!=0){ - messageService.saveBatch(messageList); - } + log.info("定时任务新增消息表:"+messageList); + messageService.saveBatch(messageList); + webSocket.sendMessage(messageList); } } @Override diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java index ca4193e..b24b193 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java @@ -12,6 +12,7 @@ import com.casic.missiles.listeners.CommonExcelListener; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import com.casic.missiles.service.meter.MeterCertificateService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -107,9 +108,9 @@ @ApiOperation("消息列表查询") @PostMapping("/queryMessageList") @ResponseBody - public ReturnDTO queryMessageList(@RequestBody MeterStaffRequest request) { - Page page = PageFactory.defaultPage(); - Page list = meterCertificateService.queryMessageList(page,request); + public ReturnDTO queryMessageList() { + Page page = PageFactory.defaultPage(); + Page list = meterCertificateService.queryMessageList(page); return ReturnUtil.success(list); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 76c1ee7..af43c35 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -38,6 +38,7 @@ DUPLICATE_MANUFACTURE_NUMBER(2401, "出厂编号重复"), PARAM_INVALID(2500, "参数不合法"), LOGIN_USER_ACQUIRE_FAILED(2402, "无法获取登录者用户信息,请尝试重新登录再进行操作"), + NOT_FOUND_USER_INFO(2402, "未找到用户信息"), STANDARD_EQUIPMENT_ID_EXIST(2402, "标准装置不存在"), STANDARD_EQUIPMENT_USER_ID_EXIST(2402, "标准装置-计量人员不存在"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java index 9152600..c6c36c7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java @@ -7,7 +7,7 @@ public enum ExamResultEnum { QUALIFIED("1", "合格"), - NOT_QUALIFIED("2", "不合格"); + NOT_QUALIFIED("2", "不及格"); private String code; private String value; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java index f61a7ff..02cd838 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java @@ -1,5 +1,7 @@ package com.casic.missiles.utils; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -96,4 +98,18 @@ } } + // 向不同用户发送不同消息 + public void sendMessage(List list) { + for (WorkbenchRemindMessage message : list) { + Session session = sessionPool.get(String.valueOf(message.getRemindId())); + if (session != null) { + try { + session.getAsyncRemote().sendText(JSONObject.toJSONString(message)); + } catch (Exception e) { + log.error("【websocket消息】列表消息发送异常"); + e.printStackTrace(); + } + } + } + } } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java index 4c32561..564ad43 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java @@ -8,6 +8,7 @@ import com.casic.missiles.dto.meter.MeterStaffRequest; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -18,7 +19,7 @@ List queryCertificateList(@Param("request")MeterStaffRequest meterStaffRequest); - List queryReminderList(); + List queryReminderList(); void addCertificateList(@Param("list")List list); diff --git a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml index 135544e..7aaf965 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml @@ -75,17 +75,20 @@ - SELECT - t1.id as certificate_id, - t1.staff_id, - t1.certificate_no, - t1.certificate_name, - t1.valid_date, - t2.account as staff_no + su.ID AS remind_id, + mc.id AS business_id, + mc.certificate_no AS business_code, + mc.certificate_name AS message_content FROM - meter_certificate AS t1 - LEFT JOIN meter_staff t2 ON t1.staff_id = t2.id where DATE_FORMAT(t1.valid_date,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL -30 day) + meter_certificate AS mc + LEFT JOIN meter_staff ms ON mc.staff_id = ms.id + LEFT JOIN sys_user su ON ms.account = su.ACCOUNT + WHERE + DATE_FORMAT( mc.valid_date, '%Y-%m-%d' ) = DATE_SUB( + curdate(), + INTERVAL - 30 DAY) diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java index 5c82398..cf1cde8 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java @@ -16,6 +16,12 @@ public class MeterStaffRequest { /** + * 用户id + */ + @ApiModelProperty(value = "用户id", dataType = "String") + private String userId; + + /** * 姓名 */ @ApiModelProperty(value = "人员编号", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java index 4125b32..e54fdc5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java @@ -74,5 +74,11 @@ @ApiModelProperty(value = "不合格", dataType = "Integer") private Integer notQualified; + /** + * 是否是部门负责人 + */ + @ApiModelProperty(value = "是否是部门负责人", dataType = "boolean") + private boolean isMeterAdmin; + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java b/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java index 8f24e19..5e30e4f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java @@ -96,5 +96,16 @@ @TableField("update_time") private String updateTime; + public WorkbenchRemindMessage(Long remindId, Long businessId, String businessCode, String messageContent, Integer status, Long createUser, String createUserName) { + this.remindId = remindId; + this.businessId = businessId; + this.businessCode = businessCode; + this.messageContent = messageContent; + this.status = status; + this.createUser = createUser; + this.createUserName = createUserName; + } + public WorkbenchRemindMessage() { + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterCertificateServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterCertificateServiceImpl.java index 10e1b94..6c31948 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterCertificateServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterCertificateServiceImpl.java @@ -1,8 +1,11 @@ package com.casic.missiles.service.Impl.meter; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import com.alibaba.excel.util.DateUtils; import com.alibaba.excel.util.StringUtils; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.IdWorker; @@ -10,6 +13,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.service.IBaseExportService; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.meter.MeterCertificateDto; import com.casic.missiles.dto.ReturnDTO; @@ -23,13 +28,19 @@ import com.casic.missiles.mapper.meter.MeterCertificateExpireMessageMapper; import com.casic.missiles.mapper.meter.MeterCertificateMapper; import com.casic.missiles.mapper.meter.MeterStaffMapper; +import com.casic.missiles.mapper.sys.UserInfoMapper; +import com.casic.missiles.mapper.workbench.WorkbenchRemindMessageMapper; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; import com.casic.missiles.model.meter.MeterStaff; +import com.casic.missiles.model.system.UserInfo; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import com.casic.missiles.service.meter.MeterCertificateExpireMessageService; import com.casic.missiles.service.meter.MeterCertificateService; +import com.casic.missiles.service.workbench.IWorkbenchRemindMessageService; import com.casic.missiles.utils.ExportUtils; import com.casic.missiles.utils.MinioUtil; +import com.casic.missiles.utils.WebSocket; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; @@ -37,10 +48,7 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.concurrent.atomic.AtomicBoolean; import java.util.stream.Collectors; @@ -57,16 +65,16 @@ private MeterStaffMapper meterStaffMapper; @Resource - private MeterCertificateService meterCertificateService; + private WebSocket webSocket; @Resource - private MeterCertificateExpireMessageMapper messageMapper; + private WorkbenchRemindMessageMapper messageMapper; @Resource private AbstractDictService dictService; @Resource - private MeterCertificateExpireMessageService messageService; + private IWorkbenchRemindMessageService messageService; @Resource private MinioUtil minioUtil; @@ -74,6 +82,9 @@ @Resource private IBaseExportService iBaseExportService; + @Resource + private UserInfoMapper userInfoMapper; + @Override public ReturnDTO queryCertificateList(Page page , MeterStaffRequest meterStaffRequest) { Page meterCertificateDtoPage = meterCertificateMapper.queryCertificateList(page, meterStaffRequest); @@ -137,15 +148,19 @@ } @Override - public Page queryMessageList(Page page, MeterStaffRequest request) { - QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.eq("staff_no",request.getStaffNo()); + public Page queryMessageList(Page page) { + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("remind_id",user.getId()); return messageMapper.selectPage(page,wrapper); } @Override public ReturnDTO readMessage(IdDTO idDto) { - UpdateWrapper updateWrapper = new UpdateWrapper<>(); + UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id",idDto.getId()).set("status", 1); if(messageMapper.update(null, updateWrapper)>0){ return ReturnUtil.success(); @@ -157,9 +172,20 @@ public ReturnDTO expirationReminder(IdDTO idDto) { MeterCertificate meterCertificate = meterCertificateMapper.selectById(idDto.getId()); MeterStaff meterStaff = meterStaffMapper.selectById(meterCertificate.getStaffId()); - MeterCertificateExpireMessage message = new MeterCertificateExpireMessage(null,meterCertificate.getStaffId(),String.valueOf(meterCertificate.getId()),meterStaff.getAccount(),meterCertificate.getCertificateNo(),meterCertificate.getCertificateName(),meterCertificate.getValidDate(),0); - if(messageMapper.insert(message)>0){ - // todo 新增到消息列表后向用户推送消息 + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("account",meterStaff.getAccount()); + UserInfo userInfo = userInfoMapper.selectOne(wrapper); + if(ObjectUtil.isEmpty(userInfo)){ + throw new BusinessException(BusinessExceptionEnum.NOT_FOUND_USER_INFO); + } + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + WorkbenchRemindMessage remindMessage = new WorkbenchRemindMessage(userInfo.getId(),idDto.getId(),meterCertificate.getCertificateNo(),meterCertificate.getCertificateName(),0,user.getId(),user.getName()); + if(messageMapper.insert(remindMessage)>0){ + // 新增到消息列表后向用户推送消息 + webSocket.sendOneMessage(String.valueOf(userInfo.getId()),JSONObject.toJSONString(remindMessage)); return ReturnUtil.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); @@ -167,32 +193,30 @@ @Override public void regularExpirationReminder() { - List messageList = new ArrayList<>(); + List messageList = new ArrayList<>(); // 获取即将过期的证书列表(过期时间距离过期还差30天) - List list = meterCertificateMapper.queryReminderList(); + List list = meterCertificateMapper.queryReminderList(); if(null != list && list.size()!=0){ - List idList = new ArrayList<>(); - list.forEach(bean -> { - idList.add(bean.getCertificateId()); - }); - QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.select("certificate_id"); - wrapper.in("certificate_id", idList); + List idList = new ArrayList<>(); + for (WorkbenchRemindMessage remindMessage : list) { + idList.add(remindMessage.getBusinessId()); + } + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.select("business_id"); + wrapper.in("business_id", idList); // 通过证书id查询消息表中已经手动发送过得消息 List messageIds = messageMapper.selectObjs(wrapper); // 将证书列表通过证书id分组 - Map> collect = list.parallelStream().collect(Collectors.groupingBy(MeterCertificateExpireMessage::getCertificateId)); - messageIds.forEach(id -> { - // 移除已经发送过消息的证书信息 - collect.remove(id.toString()); - }); + Map> collect = list.parallelStream().collect(Collectors.groupingBy(WorkbenchRemindMessage::getBusinessId)); + // 移除已经发送过消息的证书信息 + messageIds.forEach(collect::remove); collect.keySet().forEach(dtoList -> { // 讲需要发送消息的证书整合 messageList.addAll(collect.get(dtoList)); }); - if(messageList.size()!=0){ - messageService.saveBatch(messageList); - } + log.info("定时任务新增消息表:"+messageList); + messageService.saveBatch(messageList); + webSocket.sendMessage(messageList); } } @Override diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterWorkbenchServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterWorkbenchServiceImpl.java index c3a4045..e0ed48e 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterWorkbenchServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterWorkbenchServiceImpl.java @@ -152,13 +152,14 @@ // 查询考核总人次 Long trainCount = meterTrainStaffMapper.selectCount(trainLogWrapper); result.setTrainCount(Math.toIntExact(trainCount)); - // 查询考核合格人次 - trainLogWrapper.eq("exam_result", ExamResultEnum.QUALIFIED.getValue()); - Long qualifiedCount = meterTrainStaffMapper.selectCount(trainLogWrapper); - result.setQualifiedCount(Math.toIntExact(qualifiedCount)); - result.setQualified(Math.toIntExact(qualifiedCount)); - // 考核不合格人次=考核总人次-合格人次 - result.setNotQualified(Math.toIntExact(trainCount - qualifiedCount)); + // 查询考核不合格人次 + trainLogWrapper.eq("exam_result", ExamResultEnum.NOT_QUALIFIED.getValue()); + Long notQualified = meterTrainStaffMapper.selectCount(trainLogWrapper); + result.setNotQualified(Math.toIntExact(notQualified)); + // 合格人次=考核总人次-不合格人次 + result.setQualifiedCount(Math.toIntExact(trainCount - notQualified)); + result.setQualified(Math.toIntExact(trainCount - notQualified)); + result.setMeterAdmin(true); }else{ // 当前用户是不是计量部门负责人查询该人员对应的的培训考核信息 QueryWrapper staffWrapper = new QueryWrapper<>(); @@ -174,30 +175,24 @@ return ReturnUtil.success(result); } QueryWrapper trainLogWrapper = new QueryWrapper<>(); + int trainCount = Math.toIntExact(meterTrainStaffMapper.selectCount(trainLogWrapper)); // 查询考核总人次 - result.setTrainCount(Math.toIntExact(meterTrainStaffMapper.selectCount(trainLogWrapper))); - // 查询考核合格总人次 - trainLogWrapper.eq("exam_result", ExamResultEnum.QUALIFIED.getValue()); - result.setQualifiedCount(Math.toIntExact(meterTrainStaffMapper.selectCount(trainLogWrapper))); - // 查询当前用户对应的考核结果信息 + result.setTrainCount(trainCount); + // 查询考核不合格总人次 + trainLogWrapper.eq("exam_result", ExamResultEnum.NOT_QUALIFIED.getValue()); + // 合格总人次=考核总人次-考核不合格总人次 + result.setQualifiedCount(trainCount - Math.toIntExact(meterTrainStaffMapper.selectCount(trainLogWrapper))); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("staff_id", meterStaff.getId()); - queryWrapper.select("exam_result as 'result',count(1) AS 'count'") - .groupBy("exam_result"); - List> mapList = meterTrainStaffMapper.selectMaps(queryWrapper); - if(ObjectUtil.isNotEmpty(mapList) && mapList.size() > 0){ - mapList.forEach(bean->{ - // 将查询到的信息赋值给返回的对象中 - if(ObjectUtil.isNotEmpty(bean.get("result")) && bean.get("result").equals(ExamResultEnum.QUALIFIED.getValue())){ - result.setQualified(Integer.parseInt(bean.get("count").toString())); - }else{ - result.setNotQualified(Integer.parseInt(bean.get("count").toString())); - } - }); - }else{ - result.setQualified(0); - result.setNotQualified(0); - } + // 查询当前用户考核次数 + int sum = Math.toIntExact(meterTrainStaffMapper.selectCount(queryWrapper)); + // 查询当前用户未合格次数 + queryWrapper.eq("exam_result", ExamResultEnum.NOT_QUALIFIED.getValue()); + int notQualified = Math.toIntExact(meterTrainStaffMapper.selectCount(queryWrapper)); + result.setNotQualified(notQualified); + // 当前用户合格=考核总次数-考核不合格次数 + result.setQualified(sum-notQualified); + result.setMeterAdmin(false); } return ReturnUtil.success(result); } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java index ca4193e..b24b193 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java @@ -12,6 +12,7 @@ import com.casic.missiles.listeners.CommonExcelListener; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import com.casic.missiles.service.meter.MeterCertificateService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -107,9 +108,9 @@ @ApiOperation("消息列表查询") @PostMapping("/queryMessageList") @ResponseBody - public ReturnDTO queryMessageList(@RequestBody MeterStaffRequest request) { - Page page = PageFactory.defaultPage(); - Page list = meterCertificateService.queryMessageList(page,request); + public ReturnDTO queryMessageList() { + Page page = PageFactory.defaultPage(); + Page list = meterCertificateService.queryMessageList(page); return ReturnUtil.success(list); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 76c1ee7..af43c35 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -38,6 +38,7 @@ DUPLICATE_MANUFACTURE_NUMBER(2401, "出厂编号重复"), PARAM_INVALID(2500, "参数不合法"), LOGIN_USER_ACQUIRE_FAILED(2402, "无法获取登录者用户信息,请尝试重新登录再进行操作"), + NOT_FOUND_USER_INFO(2402, "未找到用户信息"), STANDARD_EQUIPMENT_ID_EXIST(2402, "标准装置不存在"), STANDARD_EQUIPMENT_USER_ID_EXIST(2402, "标准装置-计量人员不存在"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java index 9152600..c6c36c7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java @@ -7,7 +7,7 @@ public enum ExamResultEnum { QUALIFIED("1", "合格"), - NOT_QUALIFIED("2", "不合格"); + NOT_QUALIFIED("2", "不及格"); private String code; private String value; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java index f61a7ff..02cd838 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java @@ -1,5 +1,7 @@ package com.casic.missiles.utils; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -96,4 +98,18 @@ } } + // 向不同用户发送不同消息 + public void sendMessage(List list) { + for (WorkbenchRemindMessage message : list) { + Session session = sessionPool.get(String.valueOf(message.getRemindId())); + if (session != null) { + try { + session.getAsyncRemote().sendText(JSONObject.toJSONString(message)); + } catch (Exception e) { + log.error("【websocket消息】列表消息发送异常"); + e.printStackTrace(); + } + } + } + } } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java index 4c32561..564ad43 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java @@ -8,6 +8,7 @@ import com.casic.missiles.dto.meter.MeterStaffRequest; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -18,7 +19,7 @@ List queryCertificateList(@Param("request")MeterStaffRequest meterStaffRequest); - List queryReminderList(); + List queryReminderList(); void addCertificateList(@Param("list")List list); diff --git a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml index 135544e..7aaf965 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml @@ -75,17 +75,20 @@ - SELECT - t1.id as certificate_id, - t1.staff_id, - t1.certificate_no, - t1.certificate_name, - t1.valid_date, - t2.account as staff_no + su.ID AS remind_id, + mc.id AS business_id, + mc.certificate_no AS business_code, + mc.certificate_name AS message_content FROM - meter_certificate AS t1 - LEFT JOIN meter_staff t2 ON t1.staff_id = t2.id where DATE_FORMAT(t1.valid_date,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL -30 day) + meter_certificate AS mc + LEFT JOIN meter_staff ms ON mc.staff_id = ms.id + LEFT JOIN sys_user su ON ms.account = su.ACCOUNT + WHERE + DATE_FORMAT( mc.valid_date, '%Y-%m-%d' ) = DATE_SUB( + curdate(), + INTERVAL - 30 DAY) diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java index 5c82398..cf1cde8 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java @@ -16,6 +16,12 @@ public class MeterStaffRequest { /** + * 用户id + */ + @ApiModelProperty(value = "用户id", dataType = "String") + private String userId; + + /** * 姓名 */ @ApiModelProperty(value = "人员编号", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java index 4125b32..e54fdc5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java @@ -74,5 +74,11 @@ @ApiModelProperty(value = "不合格", dataType = "Integer") private Integer notQualified; + /** + * 是否是部门负责人 + */ + @ApiModelProperty(value = "是否是部门负责人", dataType = "boolean") + private boolean isMeterAdmin; + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java b/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java index 8f24e19..5e30e4f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java @@ -96,5 +96,16 @@ @TableField("update_time") private String updateTime; + public WorkbenchRemindMessage(Long remindId, Long businessId, String businessCode, String messageContent, Integer status, Long createUser, String createUserName) { + this.remindId = remindId; + this.businessId = businessId; + this.businessCode = businessCode; + this.messageContent = messageContent; + this.status = status; + this.createUser = createUser; + this.createUserName = createUserName; + } + public WorkbenchRemindMessage() { + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterCertificateServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterCertificateServiceImpl.java index 10e1b94..6c31948 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterCertificateServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterCertificateServiceImpl.java @@ -1,8 +1,11 @@ package com.casic.missiles.service.Impl.meter; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import com.alibaba.excel.util.DateUtils; import com.alibaba.excel.util.StringUtils; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.IdWorker; @@ -10,6 +13,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.service.IBaseExportService; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.meter.MeterCertificateDto; import com.casic.missiles.dto.ReturnDTO; @@ -23,13 +28,19 @@ import com.casic.missiles.mapper.meter.MeterCertificateExpireMessageMapper; import com.casic.missiles.mapper.meter.MeterCertificateMapper; import com.casic.missiles.mapper.meter.MeterStaffMapper; +import com.casic.missiles.mapper.sys.UserInfoMapper; +import com.casic.missiles.mapper.workbench.WorkbenchRemindMessageMapper; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; import com.casic.missiles.model.meter.MeterStaff; +import com.casic.missiles.model.system.UserInfo; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import com.casic.missiles.service.meter.MeterCertificateExpireMessageService; import com.casic.missiles.service.meter.MeterCertificateService; +import com.casic.missiles.service.workbench.IWorkbenchRemindMessageService; import com.casic.missiles.utils.ExportUtils; import com.casic.missiles.utils.MinioUtil; +import com.casic.missiles.utils.WebSocket; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; @@ -37,10 +48,7 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.concurrent.atomic.AtomicBoolean; import java.util.stream.Collectors; @@ -57,16 +65,16 @@ private MeterStaffMapper meterStaffMapper; @Resource - private MeterCertificateService meterCertificateService; + private WebSocket webSocket; @Resource - private MeterCertificateExpireMessageMapper messageMapper; + private WorkbenchRemindMessageMapper messageMapper; @Resource private AbstractDictService dictService; @Resource - private MeterCertificateExpireMessageService messageService; + private IWorkbenchRemindMessageService messageService; @Resource private MinioUtil minioUtil; @@ -74,6 +82,9 @@ @Resource private IBaseExportService iBaseExportService; + @Resource + private UserInfoMapper userInfoMapper; + @Override public ReturnDTO queryCertificateList(Page page , MeterStaffRequest meterStaffRequest) { Page meterCertificateDtoPage = meterCertificateMapper.queryCertificateList(page, meterStaffRequest); @@ -137,15 +148,19 @@ } @Override - public Page queryMessageList(Page page, MeterStaffRequest request) { - QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.eq("staff_no",request.getStaffNo()); + public Page queryMessageList(Page page) { + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("remind_id",user.getId()); return messageMapper.selectPage(page,wrapper); } @Override public ReturnDTO readMessage(IdDTO idDto) { - UpdateWrapper updateWrapper = new UpdateWrapper<>(); + UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id",idDto.getId()).set("status", 1); if(messageMapper.update(null, updateWrapper)>0){ return ReturnUtil.success(); @@ -157,9 +172,20 @@ public ReturnDTO expirationReminder(IdDTO idDto) { MeterCertificate meterCertificate = meterCertificateMapper.selectById(idDto.getId()); MeterStaff meterStaff = meterStaffMapper.selectById(meterCertificate.getStaffId()); - MeterCertificateExpireMessage message = new MeterCertificateExpireMessage(null,meterCertificate.getStaffId(),String.valueOf(meterCertificate.getId()),meterStaff.getAccount(),meterCertificate.getCertificateNo(),meterCertificate.getCertificateName(),meterCertificate.getValidDate(),0); - if(messageMapper.insert(message)>0){ - // todo 新增到消息列表后向用户推送消息 + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("account",meterStaff.getAccount()); + UserInfo userInfo = userInfoMapper.selectOne(wrapper); + if(ObjectUtil.isEmpty(userInfo)){ + throw new BusinessException(BusinessExceptionEnum.NOT_FOUND_USER_INFO); + } + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + WorkbenchRemindMessage remindMessage = new WorkbenchRemindMessage(userInfo.getId(),idDto.getId(),meterCertificate.getCertificateNo(),meterCertificate.getCertificateName(),0,user.getId(),user.getName()); + if(messageMapper.insert(remindMessage)>0){ + // 新增到消息列表后向用户推送消息 + webSocket.sendOneMessage(String.valueOf(userInfo.getId()),JSONObject.toJSONString(remindMessage)); return ReturnUtil.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); @@ -167,32 +193,30 @@ @Override public void regularExpirationReminder() { - List messageList = new ArrayList<>(); + List messageList = new ArrayList<>(); // 获取即将过期的证书列表(过期时间距离过期还差30天) - List list = meterCertificateMapper.queryReminderList(); + List list = meterCertificateMapper.queryReminderList(); if(null != list && list.size()!=0){ - List idList = new ArrayList<>(); - list.forEach(bean -> { - idList.add(bean.getCertificateId()); - }); - QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.select("certificate_id"); - wrapper.in("certificate_id", idList); + List idList = new ArrayList<>(); + for (WorkbenchRemindMessage remindMessage : list) { + idList.add(remindMessage.getBusinessId()); + } + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.select("business_id"); + wrapper.in("business_id", idList); // 通过证书id查询消息表中已经手动发送过得消息 List messageIds = messageMapper.selectObjs(wrapper); // 将证书列表通过证书id分组 - Map> collect = list.parallelStream().collect(Collectors.groupingBy(MeterCertificateExpireMessage::getCertificateId)); - messageIds.forEach(id -> { - // 移除已经发送过消息的证书信息 - collect.remove(id.toString()); - }); + Map> collect = list.parallelStream().collect(Collectors.groupingBy(WorkbenchRemindMessage::getBusinessId)); + // 移除已经发送过消息的证书信息 + messageIds.forEach(collect::remove); collect.keySet().forEach(dtoList -> { // 讲需要发送消息的证书整合 messageList.addAll(collect.get(dtoList)); }); - if(messageList.size()!=0){ - messageService.saveBatch(messageList); - } + log.info("定时任务新增消息表:"+messageList); + messageService.saveBatch(messageList); + webSocket.sendMessage(messageList); } } @Override diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterWorkbenchServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterWorkbenchServiceImpl.java index c3a4045..e0ed48e 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterWorkbenchServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterWorkbenchServiceImpl.java @@ -152,13 +152,14 @@ // 查询考核总人次 Long trainCount = meterTrainStaffMapper.selectCount(trainLogWrapper); result.setTrainCount(Math.toIntExact(trainCount)); - // 查询考核合格人次 - trainLogWrapper.eq("exam_result", ExamResultEnum.QUALIFIED.getValue()); - Long qualifiedCount = meterTrainStaffMapper.selectCount(trainLogWrapper); - result.setQualifiedCount(Math.toIntExact(qualifiedCount)); - result.setQualified(Math.toIntExact(qualifiedCount)); - // 考核不合格人次=考核总人次-合格人次 - result.setNotQualified(Math.toIntExact(trainCount - qualifiedCount)); + // 查询考核不合格人次 + trainLogWrapper.eq("exam_result", ExamResultEnum.NOT_QUALIFIED.getValue()); + Long notQualified = meterTrainStaffMapper.selectCount(trainLogWrapper); + result.setNotQualified(Math.toIntExact(notQualified)); + // 合格人次=考核总人次-不合格人次 + result.setQualifiedCount(Math.toIntExact(trainCount - notQualified)); + result.setQualified(Math.toIntExact(trainCount - notQualified)); + result.setMeterAdmin(true); }else{ // 当前用户是不是计量部门负责人查询该人员对应的的培训考核信息 QueryWrapper staffWrapper = new QueryWrapper<>(); @@ -174,30 +175,24 @@ return ReturnUtil.success(result); } QueryWrapper trainLogWrapper = new QueryWrapper<>(); + int trainCount = Math.toIntExact(meterTrainStaffMapper.selectCount(trainLogWrapper)); // 查询考核总人次 - result.setTrainCount(Math.toIntExact(meterTrainStaffMapper.selectCount(trainLogWrapper))); - // 查询考核合格总人次 - trainLogWrapper.eq("exam_result", ExamResultEnum.QUALIFIED.getValue()); - result.setQualifiedCount(Math.toIntExact(meterTrainStaffMapper.selectCount(trainLogWrapper))); - // 查询当前用户对应的考核结果信息 + result.setTrainCount(trainCount); + // 查询考核不合格总人次 + trainLogWrapper.eq("exam_result", ExamResultEnum.NOT_QUALIFIED.getValue()); + // 合格总人次=考核总人次-考核不合格总人次 + result.setQualifiedCount(trainCount - Math.toIntExact(meterTrainStaffMapper.selectCount(trainLogWrapper))); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("staff_id", meterStaff.getId()); - queryWrapper.select("exam_result as 'result',count(1) AS 'count'") - .groupBy("exam_result"); - List> mapList = meterTrainStaffMapper.selectMaps(queryWrapper); - if(ObjectUtil.isNotEmpty(mapList) && mapList.size() > 0){ - mapList.forEach(bean->{ - // 将查询到的信息赋值给返回的对象中 - if(ObjectUtil.isNotEmpty(bean.get("result")) && bean.get("result").equals(ExamResultEnum.QUALIFIED.getValue())){ - result.setQualified(Integer.parseInt(bean.get("count").toString())); - }else{ - result.setNotQualified(Integer.parseInt(bean.get("count").toString())); - } - }); - }else{ - result.setQualified(0); - result.setNotQualified(0); - } + // 查询当前用户考核次数 + int sum = Math.toIntExact(meterTrainStaffMapper.selectCount(queryWrapper)); + // 查询当前用户未合格次数 + queryWrapper.eq("exam_result", ExamResultEnum.NOT_QUALIFIED.getValue()); + int notQualified = Math.toIntExact(meterTrainStaffMapper.selectCount(queryWrapper)); + result.setNotQualified(notQualified); + // 当前用户合格=考核总次数-考核不合格次数 + result.setQualified(sum-notQualified); + result.setMeterAdmin(false); } return ReturnUtil.success(result); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/meter/MeterCertificateService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/meter/MeterCertificateService.java index 5fce202..a62a098 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/meter/MeterCertificateService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/meter/MeterCertificateService.java @@ -9,6 +9,7 @@ import com.casic.missiles.dto.meter.MeterStaffRequest; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import javax.servlet.http.HttpServletResponse; import java.util.List; @@ -31,7 +32,7 @@ void regularExpirationReminder(); - Page queryMessageList(Page page, MeterStaffRequest request); + Page queryMessageList(Page page); ReturnDTO readMessage(IdDTO idDto);