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 15d09ae..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); } @@ -133,7 +134,7 @@ return meterCertificateService.expirationReminder(idDto); } - @Scheduled(cron = "0 0 0 * * ?") + //@Scheduled(cron = "0 0 0 * * ?") private void regularExpirationReminder() { meterCertificateService.regularExpirationReminder(); } 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 15d09ae..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); } @@ -133,7 +134,7 @@ return meterCertificateService.expirationReminder(idDto); } - @Scheduled(cron = "0 0 0 * * ?") + //@Scheduled(cron = "0 0 0 * * ?") private void regularExpirationReminder() { meterCertificateService.regularExpirationReminder(); } 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 1749064..ad850a4 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 15d09ae..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); } @@ -133,7 +134,7 @@ return meterCertificateService.expirationReminder(idDto); } - @Scheduled(cron = "0 0 0 * * ?") + //@Scheduled(cron = "0 0 0 * * ?") private void regularExpirationReminder() { meterCertificateService.regularExpirationReminder(); } 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 1749064..ad850a4 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 15d09ae..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); } @@ -133,7 +134,7 @@ return meterCertificateService.expirationReminder(idDto); } - @Scheduled(cron = "0 0 0 * * ?") + //@Scheduled(cron = "0 0 0 * * ?") private void regularExpirationReminder() { meterCertificateService.regularExpirationReminder(); } 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 1749064..ad850a4 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/enums/MessageTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java new file mode 100644 index 0000000..8d3da10 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java @@ -0,0 +1,24 @@ +package com.casic.missiles.enums; + +public enum MessageTypeEnum { + + METER_CERTIFICATE("1", "计量人员证书到期提醒"), + MEASURING_EQUIPMENT("2", "测量设备到期提醒"), + STANDARD_EQUIPMENT("3", "标准装置到期提醒"); + + private String code; + private String value; + + MessageTypeEnum(String code, String value) { + this.code = code; + this.value = value; + } + + public String getCode() { + return code; + } + + public String getValue() { + return 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 15d09ae..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); } @@ -133,7 +134,7 @@ return meterCertificateService.expirationReminder(idDto); } - @Scheduled(cron = "0 0 0 * * ?") + //@Scheduled(cron = "0 0 0 * * ?") private void regularExpirationReminder() { meterCertificateService.regularExpirationReminder(); } 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 1749064..ad850a4 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/enums/MessageTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java new file mode 100644 index 0000000..8d3da10 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java @@ -0,0 +1,24 @@ +package com.casic.missiles.enums; + +public enum MessageTypeEnum { + + METER_CERTIFICATE("1", "计量人员证书到期提醒"), + MEASURING_EQUIPMENT("2", "测量设备到期提醒"), + STANDARD_EQUIPMENT("3", "标准装置到期提醒"); + + private String code; + private String value; + + MessageTypeEnum(String code, String value) { + this.code = code; + this.value = value; + } + + public String getCode() { + return code; + } + + public String getValue() { + return value; + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java index 9cd0c0d..c6b26c3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java @@ -2,6 +2,7 @@ public enum MeterRoleTypeEnum { + ADMIN("1", "管理员"), METER_DEPT_ADMIN("1586711737844137956", "计量部门负责人"); private String code; 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 15d09ae..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); } @@ -133,7 +134,7 @@ return meterCertificateService.expirationReminder(idDto); } - @Scheduled(cron = "0 0 0 * * ?") + //@Scheduled(cron = "0 0 0 * * ?") private void regularExpirationReminder() { meterCertificateService.regularExpirationReminder(); } 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 1749064..ad850a4 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/enums/MessageTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java new file mode 100644 index 0000000..8d3da10 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java @@ -0,0 +1,24 @@ +package com.casic.missiles.enums; + +public enum MessageTypeEnum { + + METER_CERTIFICATE("1", "计量人员证书到期提醒"), + MEASURING_EQUIPMENT("2", "测量设备到期提醒"), + STANDARD_EQUIPMENT("3", "标准装置到期提醒"); + + private String code; + private String value; + + MessageTypeEnum(String code, String value) { + this.code = code; + this.value = value; + } + + public String getCode() { + return code; + } + + public String getValue() { + return value; + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java index 9cd0c0d..c6b26c3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java @@ -2,6 +2,7 @@ public enum MeterRoleTypeEnum { + ADMIN("1", "管理员"), METER_DEPT_ADMIN("1586711737844137956", "计量部门负责人"); private String code; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java index e63ac86..fc2ae98 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java @@ -55,6 +55,7 @@ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("pro_def_id", processDefinition.getKey()); wrapper.eq("is_del", 0); + // 查出流程定义信息 SystemFlowForm systemFlowForm = flowFormMapper.selectOne(wrapper); String id = execution.getProcessInstanceBusinessKey(); switch (systemFlowForm.getFormId()) { @@ -103,7 +104,6 @@ private void updateEquipmentApplyState(String id, String state) { EquipmentApplyMapper equipmentApplyMapper = SpringContextUtil.getBean(EquipmentApplyMapper.class); - UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id", id).set("process_result", state); if (equipmentApplyMapper.update(null, updateWrapper) <= 0) { @@ -120,6 +120,7 @@ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("apply_id", id); List equipmentApplyEquipments = equipmentMapper.selectList(wrapper); + // 获取设备idList List equipmentIds = equipmentApplyEquipments.stream().map(EquipmentApplyEquipment::getEquipmentId).collect(Collectors.toList()); UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.in("id", equipmentIds).set("manager_state", state); @@ -130,7 +131,6 @@ if (stateChangeLogMapper.update(null, logUpdateWrapper) <= 0) { throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } - ; // 获取当前申请的信息 EquipmentApply equipmentApply = equipmentApplyMapper.selectById(id); // 新增状态变更记录 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 15d09ae..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); } @@ -133,7 +134,7 @@ return meterCertificateService.expirationReminder(idDto); } - @Scheduled(cron = "0 0 0 * * ?") + //@Scheduled(cron = "0 0 0 * * ?") private void regularExpirationReminder() { meterCertificateService.regularExpirationReminder(); } 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 1749064..ad850a4 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/enums/MessageTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java new file mode 100644 index 0000000..8d3da10 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java @@ -0,0 +1,24 @@ +package com.casic.missiles.enums; + +public enum MessageTypeEnum { + + METER_CERTIFICATE("1", "计量人员证书到期提醒"), + MEASURING_EQUIPMENT("2", "测量设备到期提醒"), + STANDARD_EQUIPMENT("3", "标准装置到期提醒"); + + private String code; + private String value; + + MessageTypeEnum(String code, String value) { + this.code = code; + this.value = value; + } + + public String getCode() { + return code; + } + + public String getValue() { + return value; + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java index 9cd0c0d..c6b26c3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java @@ -2,6 +2,7 @@ public enum MeterRoleTypeEnum { + ADMIN("1", "管理员"), METER_DEPT_ADMIN("1586711737844137956", "计量部门负责人"); private String code; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java index e63ac86..fc2ae98 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java @@ -55,6 +55,7 @@ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("pro_def_id", processDefinition.getKey()); wrapper.eq("is_del", 0); + // 查出流程定义信息 SystemFlowForm systemFlowForm = flowFormMapper.selectOne(wrapper); String id = execution.getProcessInstanceBusinessKey(); switch (systemFlowForm.getFormId()) { @@ -103,7 +104,6 @@ private void updateEquipmentApplyState(String id, String state) { EquipmentApplyMapper equipmentApplyMapper = SpringContextUtil.getBean(EquipmentApplyMapper.class); - UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id", id).set("process_result", state); if (equipmentApplyMapper.update(null, updateWrapper) <= 0) { @@ -120,6 +120,7 @@ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("apply_id", id); List equipmentApplyEquipments = equipmentMapper.selectList(wrapper); + // 获取设备idList List equipmentIds = equipmentApplyEquipments.stream().map(EquipmentApplyEquipment::getEquipmentId).collect(Collectors.toList()); UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.in("id", equipmentIds).set("manager_state", state); @@ -130,7 +131,6 @@ if (stateChangeLogMapper.update(null, logUpdateWrapper) <= 0) { throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } - ; // 获取当前申请的信息 EquipmentApply equipmentApply = equipmentApplyMapper.selectById(id); // 新增状态变更记录 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 15d09ae..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); } @@ -133,7 +134,7 @@ return meterCertificateService.expirationReminder(idDto); } - @Scheduled(cron = "0 0 0 * * ?") + //@Scheduled(cron = "0 0 0 * * ?") private void regularExpirationReminder() { meterCertificateService.regularExpirationReminder(); } 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 1749064..ad850a4 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/enums/MessageTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java new file mode 100644 index 0000000..8d3da10 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java @@ -0,0 +1,24 @@ +package com.casic.missiles.enums; + +public enum MessageTypeEnum { + + METER_CERTIFICATE("1", "计量人员证书到期提醒"), + MEASURING_EQUIPMENT("2", "测量设备到期提醒"), + STANDARD_EQUIPMENT("3", "标准装置到期提醒"); + + private String code; + private String value; + + MessageTypeEnum(String code, String value) { + this.code = code; + this.value = value; + } + + public String getCode() { + return code; + } + + public String getValue() { + return value; + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java index 9cd0c0d..c6b26c3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java @@ -2,6 +2,7 @@ public enum MeterRoleTypeEnum { + ADMIN("1", "管理员"), METER_DEPT_ADMIN("1586711737844137956", "计量部门负责人"); private String code; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java index e63ac86..fc2ae98 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java @@ -55,6 +55,7 @@ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("pro_def_id", processDefinition.getKey()); wrapper.eq("is_del", 0); + // 查出流程定义信息 SystemFlowForm systemFlowForm = flowFormMapper.selectOne(wrapper); String id = execution.getProcessInstanceBusinessKey(); switch (systemFlowForm.getFormId()) { @@ -103,7 +104,6 @@ private void updateEquipmentApplyState(String id, String state) { EquipmentApplyMapper equipmentApplyMapper = SpringContextUtil.getBean(EquipmentApplyMapper.class); - UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id", id).set("process_result", state); if (equipmentApplyMapper.update(null, updateWrapper) <= 0) { @@ -120,6 +120,7 @@ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("apply_id", id); List equipmentApplyEquipments = equipmentMapper.selectList(wrapper); + // 获取设备idList List equipmentIds = equipmentApplyEquipments.stream().map(EquipmentApplyEquipment::getEquipmentId).collect(Collectors.toList()); UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.in("id", equipmentIds).set("manager_state", state); @@ -130,7 +131,6 @@ if (stateChangeLogMapper.update(null, logUpdateWrapper) <= 0) { throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } - ; // 获取当前申请的信息 EquipmentApply equipmentApply = equipmentApplyMapper.selectById(id); // 新增状态变更记录 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 15d09ae..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); } @@ -133,7 +134,7 @@ return meterCertificateService.expirationReminder(idDto); } - @Scheduled(cron = "0 0 0 * * ?") + //@Scheduled(cron = "0 0 0 * * ?") private void regularExpirationReminder() { meterCertificateService.regularExpirationReminder(); } 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 1749064..ad850a4 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/enums/MessageTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java new file mode 100644 index 0000000..8d3da10 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java @@ -0,0 +1,24 @@ +package com.casic.missiles.enums; + +public enum MessageTypeEnum { + + METER_CERTIFICATE("1", "计量人员证书到期提醒"), + MEASURING_EQUIPMENT("2", "测量设备到期提醒"), + STANDARD_EQUIPMENT("3", "标准装置到期提醒"); + + private String code; + private String value; + + MessageTypeEnum(String code, String value) { + this.code = code; + this.value = value; + } + + public String getCode() { + return code; + } + + public String getValue() { + return value; + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java index 9cd0c0d..c6b26c3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java @@ -2,6 +2,7 @@ public enum MeterRoleTypeEnum { + ADMIN("1", "管理员"), METER_DEPT_ADMIN("1586711737844137956", "计量部门负责人"); private String code; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java index e63ac86..fc2ae98 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java @@ -55,6 +55,7 @@ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("pro_def_id", processDefinition.getKey()); wrapper.eq("is_del", 0); + // 查出流程定义信息 SystemFlowForm systemFlowForm = flowFormMapper.selectOne(wrapper); String id = execution.getProcessInstanceBusinessKey(); switch (systemFlowForm.getFormId()) { @@ -103,7 +104,6 @@ private void updateEquipmentApplyState(String id, String state) { EquipmentApplyMapper equipmentApplyMapper = SpringContextUtil.getBean(EquipmentApplyMapper.class); - UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id", id).set("process_result", state); if (equipmentApplyMapper.update(null, updateWrapper) <= 0) { @@ -120,6 +120,7 @@ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("apply_id", id); List equipmentApplyEquipments = equipmentMapper.selectList(wrapper); + // 获取设备idList List equipmentIds = equipmentApplyEquipments.stream().map(EquipmentApplyEquipment::getEquipmentId).collect(Collectors.toList()); UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.in("id", equipmentIds).set("manager_state", state); @@ -130,7 +131,6 @@ if (stateChangeLogMapper.update(null, logUpdateWrapper) <= 0) { throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } - ; // 获取当前申请的信息 EquipmentApply equipmentApply = equipmentApplyMapper.selectById(id); // 新增状态变更记录 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..69c225f 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml @@ -49,6 +49,9 @@ LEFT JOIN sys_dept t3 on t2.dept_id = t3.id and t1.is_del = 0 + + and t2.account = #{request.userId} + and t2.staff_no like CONCAT('%',#{request.staffNo},'%') @@ -75,17 +78,21 @@ - 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, + su.dept_id AS remind_dept_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 15d09ae..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); } @@ -133,7 +134,7 @@ return meterCertificateService.expirationReminder(idDto); } - @Scheduled(cron = "0 0 0 * * ?") + //@Scheduled(cron = "0 0 0 * * ?") private void regularExpirationReminder() { meterCertificateService.regularExpirationReminder(); } 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 1749064..ad850a4 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/enums/MessageTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java new file mode 100644 index 0000000..8d3da10 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java @@ -0,0 +1,24 @@ +package com.casic.missiles.enums; + +public enum MessageTypeEnum { + + METER_CERTIFICATE("1", "计量人员证书到期提醒"), + MEASURING_EQUIPMENT("2", "测量设备到期提醒"), + STANDARD_EQUIPMENT("3", "标准装置到期提醒"); + + private String code; + private String value; + + MessageTypeEnum(String code, String value) { + this.code = code; + this.value = value; + } + + public String getCode() { + return code; + } + + public String getValue() { + return value; + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java index 9cd0c0d..c6b26c3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java @@ -2,6 +2,7 @@ public enum MeterRoleTypeEnum { + ADMIN("1", "管理员"), METER_DEPT_ADMIN("1586711737844137956", "计量部门负责人"); private String code; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java index e63ac86..fc2ae98 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java @@ -55,6 +55,7 @@ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("pro_def_id", processDefinition.getKey()); wrapper.eq("is_del", 0); + // 查出流程定义信息 SystemFlowForm systemFlowForm = flowFormMapper.selectOne(wrapper); String id = execution.getProcessInstanceBusinessKey(); switch (systemFlowForm.getFormId()) { @@ -103,7 +104,6 @@ private void updateEquipmentApplyState(String id, String state) { EquipmentApplyMapper equipmentApplyMapper = SpringContextUtil.getBean(EquipmentApplyMapper.class); - UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id", id).set("process_result", state); if (equipmentApplyMapper.update(null, updateWrapper) <= 0) { @@ -120,6 +120,7 @@ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("apply_id", id); List equipmentApplyEquipments = equipmentMapper.selectList(wrapper); + // 获取设备idList List equipmentIds = equipmentApplyEquipments.stream().map(EquipmentApplyEquipment::getEquipmentId).collect(Collectors.toList()); UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.in("id", equipmentIds).set("manager_state", state); @@ -130,7 +131,6 @@ if (stateChangeLogMapper.update(null, logUpdateWrapper) <= 0) { throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } - ; // 获取当前申请的信息 EquipmentApply equipmentApply = equipmentApplyMapper.selectById(id); // 新增状态变更记录 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..69c225f 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml @@ -49,6 +49,9 @@ LEFT JOIN sys_dept t3 on t2.dept_id = t3.id and t1.is_del = 0 + + and t2.account = #{request.userId} + and t2.staff_no like CONCAT('%',#{request.staffNo},'%') @@ -75,17 +78,21 @@ - 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, + su.dept_id AS remind_dept_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-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java index ef67b01..232e467 100644 --- a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java +++ b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java @@ -12,6 +12,9 @@ import static com.xxl.job.core.biz.model.ReturnT.SUCCESS; +/** + * 证书到期提醒 + */ @Slf4j @Component @RequiredArgsConstructor 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 15d09ae..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); } @@ -133,7 +134,7 @@ return meterCertificateService.expirationReminder(idDto); } - @Scheduled(cron = "0 0 0 * * ?") + //@Scheduled(cron = "0 0 0 * * ?") private void regularExpirationReminder() { meterCertificateService.regularExpirationReminder(); } 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 1749064..ad850a4 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/enums/MessageTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java new file mode 100644 index 0000000..8d3da10 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java @@ -0,0 +1,24 @@ +package com.casic.missiles.enums; + +public enum MessageTypeEnum { + + METER_CERTIFICATE("1", "计量人员证书到期提醒"), + MEASURING_EQUIPMENT("2", "测量设备到期提醒"), + STANDARD_EQUIPMENT("3", "标准装置到期提醒"); + + private String code; + private String value; + + MessageTypeEnum(String code, String value) { + this.code = code; + this.value = value; + } + + public String getCode() { + return code; + } + + public String getValue() { + return value; + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java index 9cd0c0d..c6b26c3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java @@ -2,6 +2,7 @@ public enum MeterRoleTypeEnum { + ADMIN("1", "管理员"), METER_DEPT_ADMIN("1586711737844137956", "计量部门负责人"); private String code; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java index e63ac86..fc2ae98 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java @@ -55,6 +55,7 @@ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("pro_def_id", processDefinition.getKey()); wrapper.eq("is_del", 0); + // 查出流程定义信息 SystemFlowForm systemFlowForm = flowFormMapper.selectOne(wrapper); String id = execution.getProcessInstanceBusinessKey(); switch (systemFlowForm.getFormId()) { @@ -103,7 +104,6 @@ private void updateEquipmentApplyState(String id, String state) { EquipmentApplyMapper equipmentApplyMapper = SpringContextUtil.getBean(EquipmentApplyMapper.class); - UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id", id).set("process_result", state); if (equipmentApplyMapper.update(null, updateWrapper) <= 0) { @@ -120,6 +120,7 @@ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("apply_id", id); List equipmentApplyEquipments = equipmentMapper.selectList(wrapper); + // 获取设备idList List equipmentIds = equipmentApplyEquipments.stream().map(EquipmentApplyEquipment::getEquipmentId).collect(Collectors.toList()); UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.in("id", equipmentIds).set("manager_state", state); @@ -130,7 +131,6 @@ if (stateChangeLogMapper.update(null, logUpdateWrapper) <= 0) { throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } - ; // 获取当前申请的信息 EquipmentApply equipmentApply = equipmentApplyMapper.selectById(id); // 新增状态变更记录 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..69c225f 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml @@ -49,6 +49,9 @@ LEFT JOIN sys_dept t3 on t2.dept_id = t3.id and t1.is_del = 0 + + and t2.account = #{request.userId} + and t2.staff_no like CONCAT('%',#{request.staffNo},'%') @@ -75,17 +78,21 @@ - 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, + su.dept_id AS remind_dept_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-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java index ef67b01..232e467 100644 --- a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java +++ b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java @@ -12,6 +12,9 @@ import static com.xxl.job.core.biz.model.ReturnT.SUCCESS; +/** + * 证书到期提醒 + */ @Slf4j @Component @RequiredArgsConstructor 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 15d09ae..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); } @@ -133,7 +134,7 @@ return meterCertificateService.expirationReminder(idDto); } - @Scheduled(cron = "0 0 0 * * ?") + //@Scheduled(cron = "0 0 0 * * ?") private void regularExpirationReminder() { meterCertificateService.regularExpirationReminder(); } 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 1749064..ad850a4 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/enums/MessageTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java new file mode 100644 index 0000000..8d3da10 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java @@ -0,0 +1,24 @@ +package com.casic.missiles.enums; + +public enum MessageTypeEnum { + + METER_CERTIFICATE("1", "计量人员证书到期提醒"), + MEASURING_EQUIPMENT("2", "测量设备到期提醒"), + STANDARD_EQUIPMENT("3", "标准装置到期提醒"); + + private String code; + private String value; + + MessageTypeEnum(String code, String value) { + this.code = code; + this.value = value; + } + + public String getCode() { + return code; + } + + public String getValue() { + return value; + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java index 9cd0c0d..c6b26c3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java @@ -2,6 +2,7 @@ public enum MeterRoleTypeEnum { + ADMIN("1", "管理员"), METER_DEPT_ADMIN("1586711737844137956", "计量部门负责人"); private String code; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java index e63ac86..fc2ae98 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java @@ -55,6 +55,7 @@ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("pro_def_id", processDefinition.getKey()); wrapper.eq("is_del", 0); + // 查出流程定义信息 SystemFlowForm systemFlowForm = flowFormMapper.selectOne(wrapper); String id = execution.getProcessInstanceBusinessKey(); switch (systemFlowForm.getFormId()) { @@ -103,7 +104,6 @@ private void updateEquipmentApplyState(String id, String state) { EquipmentApplyMapper equipmentApplyMapper = SpringContextUtil.getBean(EquipmentApplyMapper.class); - UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id", id).set("process_result", state); if (equipmentApplyMapper.update(null, updateWrapper) <= 0) { @@ -120,6 +120,7 @@ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("apply_id", id); List equipmentApplyEquipments = equipmentMapper.selectList(wrapper); + // 获取设备idList List equipmentIds = equipmentApplyEquipments.stream().map(EquipmentApplyEquipment::getEquipmentId).collect(Collectors.toList()); UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.in("id", equipmentIds).set("manager_state", state); @@ -130,7 +131,6 @@ if (stateChangeLogMapper.update(null, logUpdateWrapper) <= 0) { throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } - ; // 获取当前申请的信息 EquipmentApply equipmentApply = equipmentApplyMapper.selectById(id); // 新增状态变更记录 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..69c225f 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml @@ -49,6 +49,9 @@ LEFT JOIN sys_dept t3 on t2.dept_id = t3.id and t1.is_del = 0 + + and t2.account = #{request.userId} + and t2.staff_no like CONCAT('%',#{request.staffNo},'%') @@ -75,17 +78,21 @@ - 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, + su.dept_id AS remind_dept_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-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java index ef67b01..232e467 100644 --- a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java +++ b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java @@ -12,6 +12,9 @@ import static com.xxl.job.core.biz.model.ReturnT.SUCCESS; +/** + * 证书到期提醒 + */ @Slf4j @Component @RequiredArgsConstructor 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 a4b8b88..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 @@ -53,26 +53,32 @@ /** * 考核总人次 */ - @ApiModelProperty(value = "考核总人次", dataType = "Long") - private Long trainCount; + @ApiModelProperty(value = "考核总人次", dataType = "Integer") + private Integer trainCount; /** * 合格总人次 */ - @ApiModelProperty(value = "合格总人次", dataType = "Long") - private Long qualifiedCount; + @ApiModelProperty(value = "合格总人次", dataType = "Integer") + private Integer qualifiedCount; /** * 合格 */ - @ApiModelProperty(value = "合格", dataType = "Long") - private Long qualified; + @ApiModelProperty(value = "合格", dataType = "Integer") + private Integer qualified; /** * 不合格 */ - @ApiModelProperty(value = "不合格", dataType = "Long") - private Long notQualified; + @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 15d09ae..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); } @@ -133,7 +134,7 @@ return meterCertificateService.expirationReminder(idDto); } - @Scheduled(cron = "0 0 0 * * ?") + //@Scheduled(cron = "0 0 0 * * ?") private void regularExpirationReminder() { meterCertificateService.regularExpirationReminder(); } 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 1749064..ad850a4 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/enums/MessageTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java new file mode 100644 index 0000000..8d3da10 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java @@ -0,0 +1,24 @@ +package com.casic.missiles.enums; + +public enum MessageTypeEnum { + + METER_CERTIFICATE("1", "计量人员证书到期提醒"), + MEASURING_EQUIPMENT("2", "测量设备到期提醒"), + STANDARD_EQUIPMENT("3", "标准装置到期提醒"); + + private String code; + private String value; + + MessageTypeEnum(String code, String value) { + this.code = code; + this.value = value; + } + + public String getCode() { + return code; + } + + public String getValue() { + return value; + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java index 9cd0c0d..c6b26c3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java @@ -2,6 +2,7 @@ public enum MeterRoleTypeEnum { + ADMIN("1", "管理员"), METER_DEPT_ADMIN("1586711737844137956", "计量部门负责人"); private String code; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java index e63ac86..fc2ae98 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java @@ -55,6 +55,7 @@ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("pro_def_id", processDefinition.getKey()); wrapper.eq("is_del", 0); + // 查出流程定义信息 SystemFlowForm systemFlowForm = flowFormMapper.selectOne(wrapper); String id = execution.getProcessInstanceBusinessKey(); switch (systemFlowForm.getFormId()) { @@ -103,7 +104,6 @@ private void updateEquipmentApplyState(String id, String state) { EquipmentApplyMapper equipmentApplyMapper = SpringContextUtil.getBean(EquipmentApplyMapper.class); - UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id", id).set("process_result", state); if (equipmentApplyMapper.update(null, updateWrapper) <= 0) { @@ -120,6 +120,7 @@ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("apply_id", id); List equipmentApplyEquipments = equipmentMapper.selectList(wrapper); + // 获取设备idList List equipmentIds = equipmentApplyEquipments.stream().map(EquipmentApplyEquipment::getEquipmentId).collect(Collectors.toList()); UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.in("id", equipmentIds).set("manager_state", state); @@ -130,7 +131,6 @@ if (stateChangeLogMapper.update(null, logUpdateWrapper) <= 0) { throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } - ; // 获取当前申请的信息 EquipmentApply equipmentApply = equipmentApplyMapper.selectById(id); // 新增状态变更记录 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..69c225f 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml @@ -49,6 +49,9 @@ LEFT JOIN sys_dept t3 on t2.dept_id = t3.id and t1.is_del = 0 + + and t2.account = #{request.userId} + and t2.staff_no like CONCAT('%',#{request.staffNo},'%') @@ -75,17 +78,21 @@ - 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, + su.dept_id AS remind_dept_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-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java index ef67b01..232e467 100644 --- a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java +++ b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java @@ -12,6 +12,9 @@ import static com.xxl.job.core.biz.model.ReturnT.SUCCESS; +/** + * 证书到期提醒 + */ @Slf4j @Component @RequiredArgsConstructor 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 a4b8b88..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 @@ -53,26 +53,32 @@ /** * 考核总人次 */ - @ApiModelProperty(value = "考核总人次", dataType = "Long") - private Long trainCount; + @ApiModelProperty(value = "考核总人次", dataType = "Integer") + private Integer trainCount; /** * 合格总人次 */ - @ApiModelProperty(value = "合格总人次", dataType = "Long") - private Long qualifiedCount; + @ApiModelProperty(value = "合格总人次", dataType = "Integer") + private Integer qualifiedCount; /** * 合格 */ - @ApiModelProperty(value = "合格", dataType = "Long") - private Long qualified; + @ApiModelProperty(value = "合格", dataType = "Integer") + private Integer qualified; /** * 不合格 */ - @ApiModelProperty(value = "不合格", dataType = "Long") - private Long notQualified; + @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/business/BusinessDealRecord.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessDealRecord.java index 17e0770..45701f0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessDealRecord.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessDealRecord.java @@ -25,6 +25,9 @@ private Long createUser; + @ApiModelProperty("操作类型") + private String dealType; + @ApiModelProperty("操作人名称") private String createUserName; 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 15d09ae..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); } @@ -133,7 +134,7 @@ return meterCertificateService.expirationReminder(idDto); } - @Scheduled(cron = "0 0 0 * * ?") + //@Scheduled(cron = "0 0 0 * * ?") private void regularExpirationReminder() { meterCertificateService.regularExpirationReminder(); } 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 1749064..ad850a4 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/enums/MessageTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java new file mode 100644 index 0000000..8d3da10 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java @@ -0,0 +1,24 @@ +package com.casic.missiles.enums; + +public enum MessageTypeEnum { + + METER_CERTIFICATE("1", "计量人员证书到期提醒"), + MEASURING_EQUIPMENT("2", "测量设备到期提醒"), + STANDARD_EQUIPMENT("3", "标准装置到期提醒"); + + private String code; + private String value; + + MessageTypeEnum(String code, String value) { + this.code = code; + this.value = value; + } + + public String getCode() { + return code; + } + + public String getValue() { + return value; + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java index 9cd0c0d..c6b26c3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java @@ -2,6 +2,7 @@ public enum MeterRoleTypeEnum { + ADMIN("1", "管理员"), METER_DEPT_ADMIN("1586711737844137956", "计量部门负责人"); private String code; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java index e63ac86..fc2ae98 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java @@ -55,6 +55,7 @@ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("pro_def_id", processDefinition.getKey()); wrapper.eq("is_del", 0); + // 查出流程定义信息 SystemFlowForm systemFlowForm = flowFormMapper.selectOne(wrapper); String id = execution.getProcessInstanceBusinessKey(); switch (systemFlowForm.getFormId()) { @@ -103,7 +104,6 @@ private void updateEquipmentApplyState(String id, String state) { EquipmentApplyMapper equipmentApplyMapper = SpringContextUtil.getBean(EquipmentApplyMapper.class); - UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id", id).set("process_result", state); if (equipmentApplyMapper.update(null, updateWrapper) <= 0) { @@ -120,6 +120,7 @@ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("apply_id", id); List equipmentApplyEquipments = equipmentMapper.selectList(wrapper); + // 获取设备idList List equipmentIds = equipmentApplyEquipments.stream().map(EquipmentApplyEquipment::getEquipmentId).collect(Collectors.toList()); UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.in("id", equipmentIds).set("manager_state", state); @@ -130,7 +131,6 @@ if (stateChangeLogMapper.update(null, logUpdateWrapper) <= 0) { throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } - ; // 获取当前申请的信息 EquipmentApply equipmentApply = equipmentApplyMapper.selectById(id); // 新增状态变更记录 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..69c225f 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml @@ -49,6 +49,9 @@ LEFT JOIN sys_dept t3 on t2.dept_id = t3.id and t1.is_del = 0 + + and t2.account = #{request.userId} + and t2.staff_no like CONCAT('%',#{request.staffNo},'%') @@ -75,17 +78,21 @@ - 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, + su.dept_id AS remind_dept_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-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java index ef67b01..232e467 100644 --- a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java +++ b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java @@ -12,6 +12,9 @@ import static com.xxl.job.core.biz.model.ReturnT.SUCCESS; +/** + * 证书到期提醒 + */ @Slf4j @Component @RequiredArgsConstructor 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 a4b8b88..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 @@ -53,26 +53,32 @@ /** * 考核总人次 */ - @ApiModelProperty(value = "考核总人次", dataType = "Long") - private Long trainCount; + @ApiModelProperty(value = "考核总人次", dataType = "Integer") + private Integer trainCount; /** * 合格总人次 */ - @ApiModelProperty(value = "合格总人次", dataType = "Long") - private Long qualifiedCount; + @ApiModelProperty(value = "合格总人次", dataType = "Integer") + private Integer qualifiedCount; /** * 合格 */ - @ApiModelProperty(value = "合格", dataType = "Long") - private Long qualified; + @ApiModelProperty(value = "合格", dataType = "Integer") + private Integer qualified; /** * 不合格 */ - @ApiModelProperty(value = "不合格", dataType = "Long") - private Long notQualified; + @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/business/BusinessDealRecord.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessDealRecord.java index 17e0770..45701f0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessDealRecord.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessDealRecord.java @@ -25,6 +25,9 @@ private Long createUser; + @ApiModelProperty("操作类型") + private String dealType; + @ApiModelProperty("操作人名称") private String createUserName; 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..11942ff 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,19 @@ @TableField("update_time") private String updateTime; + public WorkbenchRemindMessage(Long remindId, Long remindDeptId, Long businessId, String businessCode, String messageType, String messageTitle, String messageContent, Integer status, Long createUser, String createUserName) { + this.remindId = remindId; + this.remindDeptId = remindDeptId; + this.businessId = businessId; + this.businessCode = businessCode; + this.messageType = messageType; + this.messageTitle = messageTitle; + 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 15d09ae..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); } @@ -133,7 +134,7 @@ return meterCertificateService.expirationReminder(idDto); } - @Scheduled(cron = "0 0 0 * * ?") + //@Scheduled(cron = "0 0 0 * * ?") private void regularExpirationReminder() { meterCertificateService.regularExpirationReminder(); } 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 1749064..ad850a4 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/enums/MessageTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java new file mode 100644 index 0000000..8d3da10 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java @@ -0,0 +1,24 @@ +package com.casic.missiles.enums; + +public enum MessageTypeEnum { + + METER_CERTIFICATE("1", "计量人员证书到期提醒"), + MEASURING_EQUIPMENT("2", "测量设备到期提醒"), + STANDARD_EQUIPMENT("3", "标准装置到期提醒"); + + private String code; + private String value; + + MessageTypeEnum(String code, String value) { + this.code = code; + this.value = value; + } + + public String getCode() { + return code; + } + + public String getValue() { + return value; + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java index 9cd0c0d..c6b26c3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java @@ -2,6 +2,7 @@ public enum MeterRoleTypeEnum { + ADMIN("1", "管理员"), METER_DEPT_ADMIN("1586711737844137956", "计量部门负责人"); private String code; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java index e63ac86..fc2ae98 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java @@ -55,6 +55,7 @@ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("pro_def_id", processDefinition.getKey()); wrapper.eq("is_del", 0); + // 查出流程定义信息 SystemFlowForm systemFlowForm = flowFormMapper.selectOne(wrapper); String id = execution.getProcessInstanceBusinessKey(); switch (systemFlowForm.getFormId()) { @@ -103,7 +104,6 @@ private void updateEquipmentApplyState(String id, String state) { EquipmentApplyMapper equipmentApplyMapper = SpringContextUtil.getBean(EquipmentApplyMapper.class); - UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id", id).set("process_result", state); if (equipmentApplyMapper.update(null, updateWrapper) <= 0) { @@ -120,6 +120,7 @@ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("apply_id", id); List equipmentApplyEquipments = equipmentMapper.selectList(wrapper); + // 获取设备idList List equipmentIds = equipmentApplyEquipments.stream().map(EquipmentApplyEquipment::getEquipmentId).collect(Collectors.toList()); UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.in("id", equipmentIds).set("manager_state", state); @@ -130,7 +131,6 @@ if (stateChangeLogMapper.update(null, logUpdateWrapper) <= 0) { throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } - ; // 获取当前申请的信息 EquipmentApply equipmentApply = equipmentApplyMapper.selectById(id); // 新增状态变更记录 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..69c225f 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml @@ -49,6 +49,9 @@ LEFT JOIN sys_dept t3 on t2.dept_id = t3.id and t1.is_del = 0 + + and t2.account = #{request.userId} + and t2.staff_no like CONCAT('%',#{request.staffNo},'%') @@ -75,17 +78,21 @@ - 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, + su.dept_id AS remind_dept_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-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java index ef67b01..232e467 100644 --- a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java +++ b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java @@ -12,6 +12,9 @@ import static com.xxl.job.core.biz.model.ReturnT.SUCCESS; +/** + * 证书到期提醒 + */ @Slf4j @Component @RequiredArgsConstructor 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 a4b8b88..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 @@ -53,26 +53,32 @@ /** * 考核总人次 */ - @ApiModelProperty(value = "考核总人次", dataType = "Long") - private Long trainCount; + @ApiModelProperty(value = "考核总人次", dataType = "Integer") + private Integer trainCount; /** * 合格总人次 */ - @ApiModelProperty(value = "合格总人次", dataType = "Long") - private Long qualifiedCount; + @ApiModelProperty(value = "合格总人次", dataType = "Integer") + private Integer qualifiedCount; /** * 合格 */ - @ApiModelProperty(value = "合格", dataType = "Long") - private Long qualified; + @ApiModelProperty(value = "合格", dataType = "Integer") + private Integer qualified; /** * 不合格 */ - @ApiModelProperty(value = "不合格", dataType = "Long") - private Long notQualified; + @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/business/BusinessDealRecord.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessDealRecord.java index 17e0770..45701f0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessDealRecord.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessDealRecord.java @@ -25,6 +25,9 @@ private Long createUser; + @ApiModelProperty("操作类型") + private String dealType; + @ApiModelProperty("操作人名称") private String createUserName; 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..11942ff 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,19 @@ @TableField("update_time") private String updateTime; + public WorkbenchRemindMessage(Long remindId, Long remindDeptId, Long businessId, String businessCode, String messageType, String messageTitle, String messageContent, Integer status, Long createUser, String createUserName) { + this.remindId = remindId; + this.remindDeptId = remindDeptId; + this.businessId = businessId; + this.businessCode = businessCode; + this.messageType = messageType; + this.messageTitle = messageTitle; + 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/business/BusinessOrderServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOrderServiceImpl.java index 48742b4..4828151 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOrderServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOrderServiceImpl.java @@ -103,6 +103,9 @@ */ @Override public ReturnDTO updateOrder(BusinessOrder businessOrder) { + if (CollectionUtils.isEmpty(businessOrder.getCustomerSampleInfoList())) { + return ReturnUtil.failed("样品列表不能为空"); + } AuthUser authUser = ShiroKit.getUser(); businessOrder.setUpdateUser(authUser.getId()); int updateFlag = this.baseMapper.updateById(businessOrder); @@ -199,7 +202,8 @@ @Override public ReturnDTO updateStatusById(OrderCancelRequest orderCancelRequest, String status) { int updateFlag = doUpdateStatusById(orderCancelRequest.getId(), status); - int addDealRecordFlag = addDealRecord(orderCancelRequest); + String dealType = "委托书" + ((status.equals("2")) ? "接收" : "退回"); + int addDealRecordFlag = addDealRecord(orderCancelRequest, dealType); if (updateFlag > 0 && addDealRecordFlag > 0) { return ReturnUtil.success(); } @@ -213,7 +217,7 @@ @Transactional public ReturnDTO cancelOrder(OrderCancelRequest orderCancelRequest) { int updateFlag = this.doUpdateStatusById(orderCancelRequest.getId(), "3"); - int addDealRecordFlag = addDealRecord(orderCancelRequest); + int addDealRecordFlag = addDealRecord(orderCancelRequest, "委托书取消"); if (updateFlag > 0 && addDealRecordFlag > 0) { return ReturnUtil.success(); } @@ -226,14 +230,15 @@ @Override public List optionRecord(Long id) { QueryWrapper dealRecordQueryWrapper = new QueryWrapper() - .eq("order_id", id); + .eq("order_id", id) + .orderByDesc("create_time"); return dealRecordMapper.selectList(dealRecordQueryWrapper); } /** * 新增操作记录 */ - private int addDealRecord(OrderCancelRequest orderCancelRequest) { + private int addDealRecord(OrderCancelRequest orderCancelRequest, String dealType) { AuthUser authUser = ShiroKit.getUser(); BusinessDealRecord businessDealRecord = BusinessDealRecord.builder() .createUser(authUser.getId()) 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 15d09ae..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); } @@ -133,7 +134,7 @@ return meterCertificateService.expirationReminder(idDto); } - @Scheduled(cron = "0 0 0 * * ?") + //@Scheduled(cron = "0 0 0 * * ?") private void regularExpirationReminder() { meterCertificateService.regularExpirationReminder(); } 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 1749064..ad850a4 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/enums/MessageTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java new file mode 100644 index 0000000..8d3da10 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java @@ -0,0 +1,24 @@ +package com.casic.missiles.enums; + +public enum MessageTypeEnum { + + METER_CERTIFICATE("1", "计量人员证书到期提醒"), + MEASURING_EQUIPMENT("2", "测量设备到期提醒"), + STANDARD_EQUIPMENT("3", "标准装置到期提醒"); + + private String code; + private String value; + + MessageTypeEnum(String code, String value) { + this.code = code; + this.value = value; + } + + public String getCode() { + return code; + } + + public String getValue() { + return value; + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java index 9cd0c0d..c6b26c3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java @@ -2,6 +2,7 @@ public enum MeterRoleTypeEnum { + ADMIN("1", "管理员"), METER_DEPT_ADMIN("1586711737844137956", "计量部门负责人"); private String code; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java index e63ac86..fc2ae98 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java @@ -55,6 +55,7 @@ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("pro_def_id", processDefinition.getKey()); wrapper.eq("is_del", 0); + // 查出流程定义信息 SystemFlowForm systemFlowForm = flowFormMapper.selectOne(wrapper); String id = execution.getProcessInstanceBusinessKey(); switch (systemFlowForm.getFormId()) { @@ -103,7 +104,6 @@ private void updateEquipmentApplyState(String id, String state) { EquipmentApplyMapper equipmentApplyMapper = SpringContextUtil.getBean(EquipmentApplyMapper.class); - UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id", id).set("process_result", state); if (equipmentApplyMapper.update(null, updateWrapper) <= 0) { @@ -120,6 +120,7 @@ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("apply_id", id); List equipmentApplyEquipments = equipmentMapper.selectList(wrapper); + // 获取设备idList List equipmentIds = equipmentApplyEquipments.stream().map(EquipmentApplyEquipment::getEquipmentId).collect(Collectors.toList()); UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.in("id", equipmentIds).set("manager_state", state); @@ -130,7 +131,6 @@ if (stateChangeLogMapper.update(null, logUpdateWrapper) <= 0) { throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } - ; // 获取当前申请的信息 EquipmentApply equipmentApply = equipmentApplyMapper.selectById(id); // 新增状态变更记录 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..69c225f 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml @@ -49,6 +49,9 @@ LEFT JOIN sys_dept t3 on t2.dept_id = t3.id and t1.is_del = 0 + + and t2.account = #{request.userId} + and t2.staff_no like CONCAT('%',#{request.staffNo},'%') @@ -75,17 +78,21 @@ - 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, + su.dept_id AS remind_dept_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-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java index ef67b01..232e467 100644 --- a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java +++ b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java @@ -12,6 +12,9 @@ import static com.xxl.job.core.biz.model.ReturnT.SUCCESS; +/** + * 证书到期提醒 + */ @Slf4j @Component @RequiredArgsConstructor 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 a4b8b88..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 @@ -53,26 +53,32 @@ /** * 考核总人次 */ - @ApiModelProperty(value = "考核总人次", dataType = "Long") - private Long trainCount; + @ApiModelProperty(value = "考核总人次", dataType = "Integer") + private Integer trainCount; /** * 合格总人次 */ - @ApiModelProperty(value = "合格总人次", dataType = "Long") - private Long qualifiedCount; + @ApiModelProperty(value = "合格总人次", dataType = "Integer") + private Integer qualifiedCount; /** * 合格 */ - @ApiModelProperty(value = "合格", dataType = "Long") - private Long qualified; + @ApiModelProperty(value = "合格", dataType = "Integer") + private Integer qualified; /** * 不合格 */ - @ApiModelProperty(value = "不合格", dataType = "Long") - private Long notQualified; + @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/business/BusinessDealRecord.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessDealRecord.java index 17e0770..45701f0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessDealRecord.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessDealRecord.java @@ -25,6 +25,9 @@ private Long createUser; + @ApiModelProperty("操作类型") + private String dealType; + @ApiModelProperty("操作人名称") private String createUserName; 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..11942ff 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,19 @@ @TableField("update_time") private String updateTime; + public WorkbenchRemindMessage(Long remindId, Long remindDeptId, Long businessId, String businessCode, String messageType, String messageTitle, String messageContent, Integer status, Long createUser, String createUserName) { + this.remindId = remindId; + this.remindDeptId = remindDeptId; + this.businessId = businessId; + this.businessCode = businessCode; + this.messageType = messageType; + this.messageTitle = messageTitle; + 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/business/BusinessOrderServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOrderServiceImpl.java index 48742b4..4828151 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOrderServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOrderServiceImpl.java @@ -103,6 +103,9 @@ */ @Override public ReturnDTO updateOrder(BusinessOrder businessOrder) { + if (CollectionUtils.isEmpty(businessOrder.getCustomerSampleInfoList())) { + return ReturnUtil.failed("样品列表不能为空"); + } AuthUser authUser = ShiroKit.getUser(); businessOrder.setUpdateUser(authUser.getId()); int updateFlag = this.baseMapper.updateById(businessOrder); @@ -199,7 +202,8 @@ @Override public ReturnDTO updateStatusById(OrderCancelRequest orderCancelRequest, String status) { int updateFlag = doUpdateStatusById(orderCancelRequest.getId(), status); - int addDealRecordFlag = addDealRecord(orderCancelRequest); + String dealType = "委托书" + ((status.equals("2")) ? "接收" : "退回"); + int addDealRecordFlag = addDealRecord(orderCancelRequest, dealType); if (updateFlag > 0 && addDealRecordFlag > 0) { return ReturnUtil.success(); } @@ -213,7 +217,7 @@ @Transactional public ReturnDTO cancelOrder(OrderCancelRequest orderCancelRequest) { int updateFlag = this.doUpdateStatusById(orderCancelRequest.getId(), "3"); - int addDealRecordFlag = addDealRecord(orderCancelRequest); + int addDealRecordFlag = addDealRecord(orderCancelRequest, "委托书取消"); if (updateFlag > 0 && addDealRecordFlag > 0) { return ReturnUtil.success(); } @@ -226,14 +230,15 @@ @Override public List optionRecord(Long id) { QueryWrapper dealRecordQueryWrapper = new QueryWrapper() - .eq("order_id", id); + .eq("order_id", id) + .orderByDesc("create_time"); return dealRecordMapper.selectList(dealRecordQueryWrapper); } /** * 新增操作记录 */ - private int addDealRecord(OrderCancelRequest orderCancelRequest) { + private int addDealRecord(OrderCancelRequest orderCancelRequest, String dealType) { AuthUser authUser = ShiroKit.getUser(); BusinessDealRecord businessDealRecord = BusinessDealRecord.builder() .createUser(authUser.getId()) diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentApplyServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentApplyServiceImpl.java index 9edd521..fecbc9a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentApplyServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentApplyServiceImpl.java @@ -304,6 +304,7 @@ // 通过id修改处理结果 updateWrapper.eq("id",idDto.getId()).set("process_result", EquipmentApplyProcessEnum.ALREADY_BORROWED); if(equipmentApplyMapper.update(null, updateWrapper)>0){ + // 新增设备使用记录表 this.addEquipmentUseLog(idDto.getId(),EquipmentApplyProcessEnum.BORROWED); return ReturnUtil.success(); } @@ -316,6 +317,7 @@ UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id",idDto.getId()).set("process_result", EquipmentApplyProcessEnum.ALREADY_RETURN); if(equipmentApplyMapper.update(null, updateWrapper)>0){ + // 修改设备使用记录表 this.updateEquipmentUseLog(idDto.getId()); return ReturnUtil.success(); } @@ -329,8 +331,10 @@ updateWrapper.eq("id",request.getId()).set("process_result", request.getProcessResult()); if(equipmentApplyMapper.update(null, updateWrapper)>0){ if(request.getProcessResult().equals(EquipmentApplyProcessEnum.ALREADY_COLLECTING)){ + // 领用新增使用记录 this.addEquipmentUseLog(request.getId(),EquipmentApplyProcessEnum.COLLECT); }else{ + // 退领修改使用记录 this.updateEquipmentUseLog(request.getId()); } return ReturnUtil.success(); 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 15d09ae..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); } @@ -133,7 +134,7 @@ return meterCertificateService.expirationReminder(idDto); } - @Scheduled(cron = "0 0 0 * * ?") + //@Scheduled(cron = "0 0 0 * * ?") private void regularExpirationReminder() { meterCertificateService.regularExpirationReminder(); } 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 1749064..ad850a4 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/enums/MessageTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java new file mode 100644 index 0000000..8d3da10 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java @@ -0,0 +1,24 @@ +package com.casic.missiles.enums; + +public enum MessageTypeEnum { + + METER_CERTIFICATE("1", "计量人员证书到期提醒"), + MEASURING_EQUIPMENT("2", "测量设备到期提醒"), + STANDARD_EQUIPMENT("3", "标准装置到期提醒"); + + private String code; + private String value; + + MessageTypeEnum(String code, String value) { + this.code = code; + this.value = value; + } + + public String getCode() { + return code; + } + + public String getValue() { + return value; + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java index 9cd0c0d..c6b26c3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java @@ -2,6 +2,7 @@ public enum MeterRoleTypeEnum { + ADMIN("1", "管理员"), METER_DEPT_ADMIN("1586711737844137956", "计量部门负责人"); private String code; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java index e63ac86..fc2ae98 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java @@ -55,6 +55,7 @@ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("pro_def_id", processDefinition.getKey()); wrapper.eq("is_del", 0); + // 查出流程定义信息 SystemFlowForm systemFlowForm = flowFormMapper.selectOne(wrapper); String id = execution.getProcessInstanceBusinessKey(); switch (systemFlowForm.getFormId()) { @@ -103,7 +104,6 @@ private void updateEquipmentApplyState(String id, String state) { EquipmentApplyMapper equipmentApplyMapper = SpringContextUtil.getBean(EquipmentApplyMapper.class); - UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id", id).set("process_result", state); if (equipmentApplyMapper.update(null, updateWrapper) <= 0) { @@ -120,6 +120,7 @@ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("apply_id", id); List equipmentApplyEquipments = equipmentMapper.selectList(wrapper); + // 获取设备idList List equipmentIds = equipmentApplyEquipments.stream().map(EquipmentApplyEquipment::getEquipmentId).collect(Collectors.toList()); UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.in("id", equipmentIds).set("manager_state", state); @@ -130,7 +131,6 @@ if (stateChangeLogMapper.update(null, logUpdateWrapper) <= 0) { throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } - ; // 获取当前申请的信息 EquipmentApply equipmentApply = equipmentApplyMapper.selectById(id); // 新增状态变更记录 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..69c225f 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml @@ -49,6 +49,9 @@ LEFT JOIN sys_dept t3 on t2.dept_id = t3.id and t1.is_del = 0 + + and t2.account = #{request.userId} + and t2.staff_no like CONCAT('%',#{request.staffNo},'%') @@ -75,17 +78,21 @@ - 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, + su.dept_id AS remind_dept_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-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java index ef67b01..232e467 100644 --- a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java +++ b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java @@ -12,6 +12,9 @@ import static com.xxl.job.core.biz.model.ReturnT.SUCCESS; +/** + * 证书到期提醒 + */ @Slf4j @Component @RequiredArgsConstructor 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 a4b8b88..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 @@ -53,26 +53,32 @@ /** * 考核总人次 */ - @ApiModelProperty(value = "考核总人次", dataType = "Long") - private Long trainCount; + @ApiModelProperty(value = "考核总人次", dataType = "Integer") + private Integer trainCount; /** * 合格总人次 */ - @ApiModelProperty(value = "合格总人次", dataType = "Long") - private Long qualifiedCount; + @ApiModelProperty(value = "合格总人次", dataType = "Integer") + private Integer qualifiedCount; /** * 合格 */ - @ApiModelProperty(value = "合格", dataType = "Long") - private Long qualified; + @ApiModelProperty(value = "合格", dataType = "Integer") + private Integer qualified; /** * 不合格 */ - @ApiModelProperty(value = "不合格", dataType = "Long") - private Long notQualified; + @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/business/BusinessDealRecord.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessDealRecord.java index 17e0770..45701f0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessDealRecord.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessDealRecord.java @@ -25,6 +25,9 @@ private Long createUser; + @ApiModelProperty("操作类型") + private String dealType; + @ApiModelProperty("操作人名称") private String createUserName; 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..11942ff 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,19 @@ @TableField("update_time") private String updateTime; + public WorkbenchRemindMessage(Long remindId, Long remindDeptId, Long businessId, String businessCode, String messageType, String messageTitle, String messageContent, Integer status, Long createUser, String createUserName) { + this.remindId = remindId; + this.remindDeptId = remindDeptId; + this.businessId = businessId; + this.businessCode = businessCode; + this.messageType = messageType; + this.messageTitle = messageTitle; + 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/business/BusinessOrderServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOrderServiceImpl.java index 48742b4..4828151 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOrderServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOrderServiceImpl.java @@ -103,6 +103,9 @@ */ @Override public ReturnDTO updateOrder(BusinessOrder businessOrder) { + if (CollectionUtils.isEmpty(businessOrder.getCustomerSampleInfoList())) { + return ReturnUtil.failed("样品列表不能为空"); + } AuthUser authUser = ShiroKit.getUser(); businessOrder.setUpdateUser(authUser.getId()); int updateFlag = this.baseMapper.updateById(businessOrder); @@ -199,7 +202,8 @@ @Override public ReturnDTO updateStatusById(OrderCancelRequest orderCancelRequest, String status) { int updateFlag = doUpdateStatusById(orderCancelRequest.getId(), status); - int addDealRecordFlag = addDealRecord(orderCancelRequest); + String dealType = "委托书" + ((status.equals("2")) ? "接收" : "退回"); + int addDealRecordFlag = addDealRecord(orderCancelRequest, dealType); if (updateFlag > 0 && addDealRecordFlag > 0) { return ReturnUtil.success(); } @@ -213,7 +217,7 @@ @Transactional public ReturnDTO cancelOrder(OrderCancelRequest orderCancelRequest) { int updateFlag = this.doUpdateStatusById(orderCancelRequest.getId(), "3"); - int addDealRecordFlag = addDealRecord(orderCancelRequest); + int addDealRecordFlag = addDealRecord(orderCancelRequest, "委托书取消"); if (updateFlag > 0 && addDealRecordFlag > 0) { return ReturnUtil.success(); } @@ -226,14 +230,15 @@ @Override public List optionRecord(Long id) { QueryWrapper dealRecordQueryWrapper = new QueryWrapper() - .eq("order_id", id); + .eq("order_id", id) + .orderByDesc("create_time"); return dealRecordMapper.selectList(dealRecordQueryWrapper); } /** * 新增操作记录 */ - private int addDealRecord(OrderCancelRequest orderCancelRequest) { + private int addDealRecord(OrderCancelRequest orderCancelRequest, String dealType) { AuthUser authUser = ShiroKit.getUser(); BusinessDealRecord businessDealRecord = BusinessDealRecord.builder() .createUser(authUser.getId()) diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentApplyServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentApplyServiceImpl.java index 9edd521..fecbc9a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentApplyServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentApplyServiceImpl.java @@ -304,6 +304,7 @@ // 通过id修改处理结果 updateWrapper.eq("id",idDto.getId()).set("process_result", EquipmentApplyProcessEnum.ALREADY_BORROWED); if(equipmentApplyMapper.update(null, updateWrapper)>0){ + // 新增设备使用记录表 this.addEquipmentUseLog(idDto.getId(),EquipmentApplyProcessEnum.BORROWED); return ReturnUtil.success(); } @@ -316,6 +317,7 @@ UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id",idDto.getId()).set("process_result", EquipmentApplyProcessEnum.ALREADY_RETURN); if(equipmentApplyMapper.update(null, updateWrapper)>0){ + // 修改设备使用记录表 this.updateEquipmentUseLog(idDto.getId()); return ReturnUtil.success(); } @@ -329,8 +331,10 @@ updateWrapper.eq("id",request.getId()).set("process_result", request.getProcessResult()); if(equipmentApplyMapper.update(null, updateWrapper)>0){ if(request.getProcessResult().equals(EquipmentApplyProcessEnum.ALREADY_COLLECTING)){ + // 领用新增使用记录 this.addEquipmentUseLog(request.getId(),EquipmentApplyProcessEnum.COLLECT); }else{ + // 退领修改使用记录 this.updateEquipmentUseLog(request.getId()); } return ReturnUtil.success(); 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 df07d39..ce076b0 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,7 +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; @@ -9,26 +13,32 @@ 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; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.meter.MeterCertificateImport; import com.casic.missiles.dto.meter.MeterStaffRequest; -import com.casic.missiles.enums.BusinessExceptionEnum; -import com.casic.missiles.enums.ExportEnum; -import com.casic.missiles.enums.MeterDictEnum; +import com.casic.missiles.enums.*; import com.casic.missiles.exception.BusinessException; 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; @@ -36,10 +46,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; @@ -56,16 +63,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; @@ -73,6 +80,9 @@ @Resource private IBaseExportService iBaseExportService; + @Resource + private UserInfoMapper userInfoMapper; + @Override public ReturnDTO queryCertificateList(Page page , MeterStaffRequest meterStaffRequest) { Page meterCertificateDtoPage = meterCertificateMapper.queryCertificateList(page, meterStaffRequest); @@ -85,8 +95,7 @@ if(this.saveBatch(list)){ return ReturnUtil.success(); } - return ReturnUtil.failed("证书新增失败"); - + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override @@ -104,7 +113,7 @@ if(meterCertificateMapper.updateById(meterCertificate)>0){ return ReturnUtil.success(); } - return ReturnUtil.failed("编辑失败"); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override @@ -133,19 +142,23 @@ if(meterCertificateMapper.deleteById(idDto.getId())>0){ return ReturnUtil.success(); } - return ReturnUtil.failed("删除失败"); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @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,42 +170,59 @@ 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(),Long.parseLong(userInfo.getDeptId()),idDto.getId(),meterCertificate.getCertificateNo(), MessageTypeEnum.METER_CERTIFICATE.getCode(),MessageTypeEnum.METER_CERTIFICATE.getValue(),meterCertificate.getCertificateName(),0,user.getId(),user.getName()); + if(messageMapper.insert(remindMessage)>0){ + // 新增到消息列表后向用户推送消息 + webSocket.sendOneMessage(String.valueOf(userInfo.getId()),JSONObject.toJSONString(remindMessage)); return ReturnUtil.success(); } - return ReturnUtil.failed("提醒失败"); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @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()); - }); - collect.keySet().forEach(dtoList -> { - // 讲需要发送消息的证书整合 - messageList.addAll(collect.get(dtoList)); - }); - if(messageList.size()!=0){ - messageService.saveBatch(messageList); + Map> collect = list.parallelStream().collect(Collectors.groupingBy(WorkbenchRemindMessage::getBusinessId)); + // 移除已经发送过消息的证书信息 + messageIds.forEach(collect::remove); + // 讲需要发送消息的证书整合 + for (Long id : collect.keySet()) { + messageList.addAll(collect.get(id)); } + // 补充业务数据 + for (WorkbenchRemindMessage message : messageList) { + message.setMessageType(MessageTypeEnum.METER_CERTIFICATE.getCode()); + message.setMessageTitle(MessageTypeEnum.METER_CERTIFICATE.getValue()); + message.setStatus(0); + message.setCreateUser(Long.valueOf(MeterRoleTypeEnum.ADMIN.getCode())); + message.setCreateUserName(MeterRoleTypeEnum.ADMIN.getValue()); + } + log.info("定时任务新增消息表:"+messageList); + messageService.saveBatch(messageList); + webSocket.sendMessage(messageList); } } @Override @@ -246,7 +276,7 @@ meterCertificateDto.setTechnologyJob(dictService.getDictNameByCode(MeterDictEnum.TECHNOLOGY_JOB,meterCertificateDto.getTechnologyJob())); meterCertificateDto.setAdministrationJob(dictService.getDictNameByCode(MeterDictEnum.ADMINISTRATION_JOB,meterCertificateDto.getAdministrationJob())); meterCertificateDto.setEducation(dictService.getDictNameByCode(MeterDictEnum.EDUCATION,meterCertificateDto.getEducation())); - if(format.compareTo(meterCertificateDto.getValidDate()) > 0) { + if(null != meterCertificateDto.getValidDate() && format.compareTo(meterCertificateDto.getValidDate()) > 0) { meterCertificateDto.setCertificateStatus("1"); }else{ meterCertificateDto.setCertificateStatus("0"); 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 15d09ae..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); } @@ -133,7 +134,7 @@ return meterCertificateService.expirationReminder(idDto); } - @Scheduled(cron = "0 0 0 * * ?") + //@Scheduled(cron = "0 0 0 * * ?") private void regularExpirationReminder() { meterCertificateService.regularExpirationReminder(); } 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 1749064..ad850a4 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/enums/MessageTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java new file mode 100644 index 0000000..8d3da10 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java @@ -0,0 +1,24 @@ +package com.casic.missiles.enums; + +public enum MessageTypeEnum { + + METER_CERTIFICATE("1", "计量人员证书到期提醒"), + MEASURING_EQUIPMENT("2", "测量设备到期提醒"), + STANDARD_EQUIPMENT("3", "标准装置到期提醒"); + + private String code; + private String value; + + MessageTypeEnum(String code, String value) { + this.code = code; + this.value = value; + } + + public String getCode() { + return code; + } + + public String getValue() { + return value; + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java index 9cd0c0d..c6b26c3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java @@ -2,6 +2,7 @@ public enum MeterRoleTypeEnum { + ADMIN("1", "管理员"), METER_DEPT_ADMIN("1586711737844137956", "计量部门负责人"); private String code; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java index e63ac86..fc2ae98 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java @@ -55,6 +55,7 @@ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("pro_def_id", processDefinition.getKey()); wrapper.eq("is_del", 0); + // 查出流程定义信息 SystemFlowForm systemFlowForm = flowFormMapper.selectOne(wrapper); String id = execution.getProcessInstanceBusinessKey(); switch (systemFlowForm.getFormId()) { @@ -103,7 +104,6 @@ private void updateEquipmentApplyState(String id, String state) { EquipmentApplyMapper equipmentApplyMapper = SpringContextUtil.getBean(EquipmentApplyMapper.class); - UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id", id).set("process_result", state); if (equipmentApplyMapper.update(null, updateWrapper) <= 0) { @@ -120,6 +120,7 @@ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("apply_id", id); List equipmentApplyEquipments = equipmentMapper.selectList(wrapper); + // 获取设备idList List equipmentIds = equipmentApplyEquipments.stream().map(EquipmentApplyEquipment::getEquipmentId).collect(Collectors.toList()); UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.in("id", equipmentIds).set("manager_state", state); @@ -130,7 +131,6 @@ if (stateChangeLogMapper.update(null, logUpdateWrapper) <= 0) { throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } - ; // 获取当前申请的信息 EquipmentApply equipmentApply = equipmentApplyMapper.selectById(id); // 新增状态变更记录 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..69c225f 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml @@ -49,6 +49,9 @@ LEFT JOIN sys_dept t3 on t2.dept_id = t3.id and t1.is_del = 0 + + and t2.account = #{request.userId} + and t2.staff_no like CONCAT('%',#{request.staffNo},'%') @@ -75,17 +78,21 @@ - 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, + su.dept_id AS remind_dept_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-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java index ef67b01..232e467 100644 --- a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java +++ b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java @@ -12,6 +12,9 @@ import static com.xxl.job.core.biz.model.ReturnT.SUCCESS; +/** + * 证书到期提醒 + */ @Slf4j @Component @RequiredArgsConstructor 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 a4b8b88..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 @@ -53,26 +53,32 @@ /** * 考核总人次 */ - @ApiModelProperty(value = "考核总人次", dataType = "Long") - private Long trainCount; + @ApiModelProperty(value = "考核总人次", dataType = "Integer") + private Integer trainCount; /** * 合格总人次 */ - @ApiModelProperty(value = "合格总人次", dataType = "Long") - private Long qualifiedCount; + @ApiModelProperty(value = "合格总人次", dataType = "Integer") + private Integer qualifiedCount; /** * 合格 */ - @ApiModelProperty(value = "合格", dataType = "Long") - private Long qualified; + @ApiModelProperty(value = "合格", dataType = "Integer") + private Integer qualified; /** * 不合格 */ - @ApiModelProperty(value = "不合格", dataType = "Long") - private Long notQualified; + @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/business/BusinessDealRecord.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessDealRecord.java index 17e0770..45701f0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessDealRecord.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessDealRecord.java @@ -25,6 +25,9 @@ private Long createUser; + @ApiModelProperty("操作类型") + private String dealType; + @ApiModelProperty("操作人名称") private String createUserName; 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..11942ff 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,19 @@ @TableField("update_time") private String updateTime; + public WorkbenchRemindMessage(Long remindId, Long remindDeptId, Long businessId, String businessCode, String messageType, String messageTitle, String messageContent, Integer status, Long createUser, String createUserName) { + this.remindId = remindId; + this.remindDeptId = remindDeptId; + this.businessId = businessId; + this.businessCode = businessCode; + this.messageType = messageType; + this.messageTitle = messageTitle; + 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/business/BusinessOrderServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOrderServiceImpl.java index 48742b4..4828151 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOrderServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOrderServiceImpl.java @@ -103,6 +103,9 @@ */ @Override public ReturnDTO updateOrder(BusinessOrder businessOrder) { + if (CollectionUtils.isEmpty(businessOrder.getCustomerSampleInfoList())) { + return ReturnUtil.failed("样品列表不能为空"); + } AuthUser authUser = ShiroKit.getUser(); businessOrder.setUpdateUser(authUser.getId()); int updateFlag = this.baseMapper.updateById(businessOrder); @@ -199,7 +202,8 @@ @Override public ReturnDTO updateStatusById(OrderCancelRequest orderCancelRequest, String status) { int updateFlag = doUpdateStatusById(orderCancelRequest.getId(), status); - int addDealRecordFlag = addDealRecord(orderCancelRequest); + String dealType = "委托书" + ((status.equals("2")) ? "接收" : "退回"); + int addDealRecordFlag = addDealRecord(orderCancelRequest, dealType); if (updateFlag > 0 && addDealRecordFlag > 0) { return ReturnUtil.success(); } @@ -213,7 +217,7 @@ @Transactional public ReturnDTO cancelOrder(OrderCancelRequest orderCancelRequest) { int updateFlag = this.doUpdateStatusById(orderCancelRequest.getId(), "3"); - int addDealRecordFlag = addDealRecord(orderCancelRequest); + int addDealRecordFlag = addDealRecord(orderCancelRequest, "委托书取消"); if (updateFlag > 0 && addDealRecordFlag > 0) { return ReturnUtil.success(); } @@ -226,14 +230,15 @@ @Override public List optionRecord(Long id) { QueryWrapper dealRecordQueryWrapper = new QueryWrapper() - .eq("order_id", id); + .eq("order_id", id) + .orderByDesc("create_time"); return dealRecordMapper.selectList(dealRecordQueryWrapper); } /** * 新增操作记录 */ - private int addDealRecord(OrderCancelRequest orderCancelRequest) { + private int addDealRecord(OrderCancelRequest orderCancelRequest, String dealType) { AuthUser authUser = ShiroKit.getUser(); BusinessDealRecord businessDealRecord = BusinessDealRecord.builder() .createUser(authUser.getId()) diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentApplyServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentApplyServiceImpl.java index 9edd521..fecbc9a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentApplyServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentApplyServiceImpl.java @@ -304,6 +304,7 @@ // 通过id修改处理结果 updateWrapper.eq("id",idDto.getId()).set("process_result", EquipmentApplyProcessEnum.ALREADY_BORROWED); if(equipmentApplyMapper.update(null, updateWrapper)>0){ + // 新增设备使用记录表 this.addEquipmentUseLog(idDto.getId(),EquipmentApplyProcessEnum.BORROWED); return ReturnUtil.success(); } @@ -316,6 +317,7 @@ UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id",idDto.getId()).set("process_result", EquipmentApplyProcessEnum.ALREADY_RETURN); if(equipmentApplyMapper.update(null, updateWrapper)>0){ + // 修改设备使用记录表 this.updateEquipmentUseLog(idDto.getId()); return ReturnUtil.success(); } @@ -329,8 +331,10 @@ updateWrapper.eq("id",request.getId()).set("process_result", request.getProcessResult()); if(equipmentApplyMapper.update(null, updateWrapper)>0){ if(request.getProcessResult().equals(EquipmentApplyProcessEnum.ALREADY_COLLECTING)){ + // 领用新增使用记录 this.addEquipmentUseLog(request.getId(),EquipmentApplyProcessEnum.COLLECT); }else{ + // 退领修改使用记录 this.updateEquipmentUseLog(request.getId()); } return ReturnUtil.success(); 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 df07d39..ce076b0 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,7 +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; @@ -9,26 +13,32 @@ 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; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.meter.MeterCertificateImport; import com.casic.missiles.dto.meter.MeterStaffRequest; -import com.casic.missiles.enums.BusinessExceptionEnum; -import com.casic.missiles.enums.ExportEnum; -import com.casic.missiles.enums.MeterDictEnum; +import com.casic.missiles.enums.*; import com.casic.missiles.exception.BusinessException; 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; @@ -36,10 +46,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; @@ -56,16 +63,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; @@ -73,6 +80,9 @@ @Resource private IBaseExportService iBaseExportService; + @Resource + private UserInfoMapper userInfoMapper; + @Override public ReturnDTO queryCertificateList(Page page , MeterStaffRequest meterStaffRequest) { Page meterCertificateDtoPage = meterCertificateMapper.queryCertificateList(page, meterStaffRequest); @@ -85,8 +95,7 @@ if(this.saveBatch(list)){ return ReturnUtil.success(); } - return ReturnUtil.failed("证书新增失败"); - + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override @@ -104,7 +113,7 @@ if(meterCertificateMapper.updateById(meterCertificate)>0){ return ReturnUtil.success(); } - return ReturnUtil.failed("编辑失败"); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override @@ -133,19 +142,23 @@ if(meterCertificateMapper.deleteById(idDto.getId())>0){ return ReturnUtil.success(); } - return ReturnUtil.failed("删除失败"); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @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,42 +170,59 @@ 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(),Long.parseLong(userInfo.getDeptId()),idDto.getId(),meterCertificate.getCertificateNo(), MessageTypeEnum.METER_CERTIFICATE.getCode(),MessageTypeEnum.METER_CERTIFICATE.getValue(),meterCertificate.getCertificateName(),0,user.getId(),user.getName()); + if(messageMapper.insert(remindMessage)>0){ + // 新增到消息列表后向用户推送消息 + webSocket.sendOneMessage(String.valueOf(userInfo.getId()),JSONObject.toJSONString(remindMessage)); return ReturnUtil.success(); } - return ReturnUtil.failed("提醒失败"); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @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()); - }); - collect.keySet().forEach(dtoList -> { - // 讲需要发送消息的证书整合 - messageList.addAll(collect.get(dtoList)); - }); - if(messageList.size()!=0){ - messageService.saveBatch(messageList); + Map> collect = list.parallelStream().collect(Collectors.groupingBy(WorkbenchRemindMessage::getBusinessId)); + // 移除已经发送过消息的证书信息 + messageIds.forEach(collect::remove); + // 讲需要发送消息的证书整合 + for (Long id : collect.keySet()) { + messageList.addAll(collect.get(id)); } + // 补充业务数据 + for (WorkbenchRemindMessage message : messageList) { + message.setMessageType(MessageTypeEnum.METER_CERTIFICATE.getCode()); + message.setMessageTitle(MessageTypeEnum.METER_CERTIFICATE.getValue()); + message.setStatus(0); + message.setCreateUser(Long.valueOf(MeterRoleTypeEnum.ADMIN.getCode())); + message.setCreateUserName(MeterRoleTypeEnum.ADMIN.getValue()); + } + log.info("定时任务新增消息表:"+messageList); + messageService.saveBatch(messageList); + webSocket.sendMessage(messageList); } } @Override @@ -246,7 +276,7 @@ meterCertificateDto.setTechnologyJob(dictService.getDictNameByCode(MeterDictEnum.TECHNOLOGY_JOB,meterCertificateDto.getTechnologyJob())); meterCertificateDto.setAdministrationJob(dictService.getDictNameByCode(MeterDictEnum.ADMINISTRATION_JOB,meterCertificateDto.getAdministrationJob())); meterCertificateDto.setEducation(dictService.getDictNameByCode(MeterDictEnum.EDUCATION,meterCertificateDto.getEducation())); - if(format.compareTo(meterCertificateDto.getValidDate()) > 0) { + if(null != meterCertificateDto.getValidDate() && format.compareTo(meterCertificateDto.getValidDate()) > 0) { meterCertificateDto.setCertificateStatus("1"); }else{ meterCertificateDto.setCertificateStatus("0"); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterPriceServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterPriceServiceImpl.java index c1b40a2..a95919c 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterPriceServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterPriceServiceImpl.java @@ -27,6 +27,7 @@ import com.casic.missiles.utils.MinioUtil; import com.casic.missiles.utils.NumberGeneratorUtil; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import org.springframework.web.multipart.MultipartFile; @@ -71,10 +72,11 @@ if(meterPriceMapper.deleteById(idDto.getId())>0){ return ReturnUtil.success(); } - return ReturnUtil.failed("删除失败"); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override + @Transactional public ReturnDTO addMeterPrice(MeterPrice meterPrice) { MeterPriceCategory priceCategory = new MeterPriceCategory(null,meterPrice.getCheckType(),meterPrice.getCategoryName()); int categoryFlag = meterPriceCategoryMapper.insert(priceCategory); @@ -103,6 +105,7 @@ } @Override + @Transactional public ReturnDTO updatePriceInfo(MeterPrice meterPrice) { int updateFlag = meterPriceMapper.updateById(meterPrice); MeterPriceCategory priceCategory = new MeterPriceCategory(Long.parseLong(meterPrice.getPriceType()),meterPrice.getCheckType(),meterPrice.getCategoryName()); @@ -112,7 +115,7 @@ if(categoryFlag>0 && itemFlag>0 && updateFlag>0){ return ReturnUtil.success(); } - return ReturnUtil.failed("价格信息编辑失败"); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @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 15d09ae..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); } @@ -133,7 +134,7 @@ return meterCertificateService.expirationReminder(idDto); } - @Scheduled(cron = "0 0 0 * * ?") + //@Scheduled(cron = "0 0 0 * * ?") private void regularExpirationReminder() { meterCertificateService.regularExpirationReminder(); } 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 1749064..ad850a4 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/enums/MessageTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java new file mode 100644 index 0000000..8d3da10 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java @@ -0,0 +1,24 @@ +package com.casic.missiles.enums; + +public enum MessageTypeEnum { + + METER_CERTIFICATE("1", "计量人员证书到期提醒"), + MEASURING_EQUIPMENT("2", "测量设备到期提醒"), + STANDARD_EQUIPMENT("3", "标准装置到期提醒"); + + private String code; + private String value; + + MessageTypeEnum(String code, String value) { + this.code = code; + this.value = value; + } + + public String getCode() { + return code; + } + + public String getValue() { + return value; + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java index 9cd0c0d..c6b26c3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java @@ -2,6 +2,7 @@ public enum MeterRoleTypeEnum { + ADMIN("1", "管理员"), METER_DEPT_ADMIN("1586711737844137956", "计量部门负责人"); private String code; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java index e63ac86..fc2ae98 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java @@ -55,6 +55,7 @@ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("pro_def_id", processDefinition.getKey()); wrapper.eq("is_del", 0); + // 查出流程定义信息 SystemFlowForm systemFlowForm = flowFormMapper.selectOne(wrapper); String id = execution.getProcessInstanceBusinessKey(); switch (systemFlowForm.getFormId()) { @@ -103,7 +104,6 @@ private void updateEquipmentApplyState(String id, String state) { EquipmentApplyMapper equipmentApplyMapper = SpringContextUtil.getBean(EquipmentApplyMapper.class); - UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id", id).set("process_result", state); if (equipmentApplyMapper.update(null, updateWrapper) <= 0) { @@ -120,6 +120,7 @@ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("apply_id", id); List equipmentApplyEquipments = equipmentMapper.selectList(wrapper); + // 获取设备idList List equipmentIds = equipmentApplyEquipments.stream().map(EquipmentApplyEquipment::getEquipmentId).collect(Collectors.toList()); UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.in("id", equipmentIds).set("manager_state", state); @@ -130,7 +131,6 @@ if (stateChangeLogMapper.update(null, logUpdateWrapper) <= 0) { throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } - ; // 获取当前申请的信息 EquipmentApply equipmentApply = equipmentApplyMapper.selectById(id); // 新增状态变更记录 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..69c225f 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml @@ -49,6 +49,9 @@ LEFT JOIN sys_dept t3 on t2.dept_id = t3.id and t1.is_del = 0 + + and t2.account = #{request.userId} + and t2.staff_no like CONCAT('%',#{request.staffNo},'%') @@ -75,17 +78,21 @@ - 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, + su.dept_id AS remind_dept_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-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java index ef67b01..232e467 100644 --- a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java +++ b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java @@ -12,6 +12,9 @@ import static com.xxl.job.core.biz.model.ReturnT.SUCCESS; +/** + * 证书到期提醒 + */ @Slf4j @Component @RequiredArgsConstructor 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 a4b8b88..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 @@ -53,26 +53,32 @@ /** * 考核总人次 */ - @ApiModelProperty(value = "考核总人次", dataType = "Long") - private Long trainCount; + @ApiModelProperty(value = "考核总人次", dataType = "Integer") + private Integer trainCount; /** * 合格总人次 */ - @ApiModelProperty(value = "合格总人次", dataType = "Long") - private Long qualifiedCount; + @ApiModelProperty(value = "合格总人次", dataType = "Integer") + private Integer qualifiedCount; /** * 合格 */ - @ApiModelProperty(value = "合格", dataType = "Long") - private Long qualified; + @ApiModelProperty(value = "合格", dataType = "Integer") + private Integer qualified; /** * 不合格 */ - @ApiModelProperty(value = "不合格", dataType = "Long") - private Long notQualified; + @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/business/BusinessDealRecord.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessDealRecord.java index 17e0770..45701f0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessDealRecord.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessDealRecord.java @@ -25,6 +25,9 @@ private Long createUser; + @ApiModelProperty("操作类型") + private String dealType; + @ApiModelProperty("操作人名称") private String createUserName; 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..11942ff 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,19 @@ @TableField("update_time") private String updateTime; + public WorkbenchRemindMessage(Long remindId, Long remindDeptId, Long businessId, String businessCode, String messageType, String messageTitle, String messageContent, Integer status, Long createUser, String createUserName) { + this.remindId = remindId; + this.remindDeptId = remindDeptId; + this.businessId = businessId; + this.businessCode = businessCode; + this.messageType = messageType; + this.messageTitle = messageTitle; + 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/business/BusinessOrderServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOrderServiceImpl.java index 48742b4..4828151 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOrderServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOrderServiceImpl.java @@ -103,6 +103,9 @@ */ @Override public ReturnDTO updateOrder(BusinessOrder businessOrder) { + if (CollectionUtils.isEmpty(businessOrder.getCustomerSampleInfoList())) { + return ReturnUtil.failed("样品列表不能为空"); + } AuthUser authUser = ShiroKit.getUser(); businessOrder.setUpdateUser(authUser.getId()); int updateFlag = this.baseMapper.updateById(businessOrder); @@ -199,7 +202,8 @@ @Override public ReturnDTO updateStatusById(OrderCancelRequest orderCancelRequest, String status) { int updateFlag = doUpdateStatusById(orderCancelRequest.getId(), status); - int addDealRecordFlag = addDealRecord(orderCancelRequest); + String dealType = "委托书" + ((status.equals("2")) ? "接收" : "退回"); + int addDealRecordFlag = addDealRecord(orderCancelRequest, dealType); if (updateFlag > 0 && addDealRecordFlag > 0) { return ReturnUtil.success(); } @@ -213,7 +217,7 @@ @Transactional public ReturnDTO cancelOrder(OrderCancelRequest orderCancelRequest) { int updateFlag = this.doUpdateStatusById(orderCancelRequest.getId(), "3"); - int addDealRecordFlag = addDealRecord(orderCancelRequest); + int addDealRecordFlag = addDealRecord(orderCancelRequest, "委托书取消"); if (updateFlag > 0 && addDealRecordFlag > 0) { return ReturnUtil.success(); } @@ -226,14 +230,15 @@ @Override public List optionRecord(Long id) { QueryWrapper dealRecordQueryWrapper = new QueryWrapper() - .eq("order_id", id); + .eq("order_id", id) + .orderByDesc("create_time"); return dealRecordMapper.selectList(dealRecordQueryWrapper); } /** * 新增操作记录 */ - private int addDealRecord(OrderCancelRequest orderCancelRequest) { + private int addDealRecord(OrderCancelRequest orderCancelRequest, String dealType) { AuthUser authUser = ShiroKit.getUser(); BusinessDealRecord businessDealRecord = BusinessDealRecord.builder() .createUser(authUser.getId()) diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentApplyServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentApplyServiceImpl.java index 9edd521..fecbc9a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentApplyServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentApplyServiceImpl.java @@ -304,6 +304,7 @@ // 通过id修改处理结果 updateWrapper.eq("id",idDto.getId()).set("process_result", EquipmentApplyProcessEnum.ALREADY_BORROWED); if(equipmentApplyMapper.update(null, updateWrapper)>0){ + // 新增设备使用记录表 this.addEquipmentUseLog(idDto.getId(),EquipmentApplyProcessEnum.BORROWED); return ReturnUtil.success(); } @@ -316,6 +317,7 @@ UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id",idDto.getId()).set("process_result", EquipmentApplyProcessEnum.ALREADY_RETURN); if(equipmentApplyMapper.update(null, updateWrapper)>0){ + // 修改设备使用记录表 this.updateEquipmentUseLog(idDto.getId()); return ReturnUtil.success(); } @@ -329,8 +331,10 @@ updateWrapper.eq("id",request.getId()).set("process_result", request.getProcessResult()); if(equipmentApplyMapper.update(null, updateWrapper)>0){ if(request.getProcessResult().equals(EquipmentApplyProcessEnum.ALREADY_COLLECTING)){ + // 领用新增使用记录 this.addEquipmentUseLog(request.getId(),EquipmentApplyProcessEnum.COLLECT); }else{ + // 退领修改使用记录 this.updateEquipmentUseLog(request.getId()); } return ReturnUtil.success(); 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 df07d39..ce076b0 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,7 +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; @@ -9,26 +13,32 @@ 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; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.meter.MeterCertificateImport; import com.casic.missiles.dto.meter.MeterStaffRequest; -import com.casic.missiles.enums.BusinessExceptionEnum; -import com.casic.missiles.enums.ExportEnum; -import com.casic.missiles.enums.MeterDictEnum; +import com.casic.missiles.enums.*; import com.casic.missiles.exception.BusinessException; 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; @@ -36,10 +46,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; @@ -56,16 +63,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; @@ -73,6 +80,9 @@ @Resource private IBaseExportService iBaseExportService; + @Resource + private UserInfoMapper userInfoMapper; + @Override public ReturnDTO queryCertificateList(Page page , MeterStaffRequest meterStaffRequest) { Page meterCertificateDtoPage = meterCertificateMapper.queryCertificateList(page, meterStaffRequest); @@ -85,8 +95,7 @@ if(this.saveBatch(list)){ return ReturnUtil.success(); } - return ReturnUtil.failed("证书新增失败"); - + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override @@ -104,7 +113,7 @@ if(meterCertificateMapper.updateById(meterCertificate)>0){ return ReturnUtil.success(); } - return ReturnUtil.failed("编辑失败"); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override @@ -133,19 +142,23 @@ if(meterCertificateMapper.deleteById(idDto.getId())>0){ return ReturnUtil.success(); } - return ReturnUtil.failed("删除失败"); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @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,42 +170,59 @@ 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(),Long.parseLong(userInfo.getDeptId()),idDto.getId(),meterCertificate.getCertificateNo(), MessageTypeEnum.METER_CERTIFICATE.getCode(),MessageTypeEnum.METER_CERTIFICATE.getValue(),meterCertificate.getCertificateName(),0,user.getId(),user.getName()); + if(messageMapper.insert(remindMessage)>0){ + // 新增到消息列表后向用户推送消息 + webSocket.sendOneMessage(String.valueOf(userInfo.getId()),JSONObject.toJSONString(remindMessage)); return ReturnUtil.success(); } - return ReturnUtil.failed("提醒失败"); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @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()); - }); - collect.keySet().forEach(dtoList -> { - // 讲需要发送消息的证书整合 - messageList.addAll(collect.get(dtoList)); - }); - if(messageList.size()!=0){ - messageService.saveBatch(messageList); + Map> collect = list.parallelStream().collect(Collectors.groupingBy(WorkbenchRemindMessage::getBusinessId)); + // 移除已经发送过消息的证书信息 + messageIds.forEach(collect::remove); + // 讲需要发送消息的证书整合 + for (Long id : collect.keySet()) { + messageList.addAll(collect.get(id)); } + // 补充业务数据 + for (WorkbenchRemindMessage message : messageList) { + message.setMessageType(MessageTypeEnum.METER_CERTIFICATE.getCode()); + message.setMessageTitle(MessageTypeEnum.METER_CERTIFICATE.getValue()); + message.setStatus(0); + message.setCreateUser(Long.valueOf(MeterRoleTypeEnum.ADMIN.getCode())); + message.setCreateUserName(MeterRoleTypeEnum.ADMIN.getValue()); + } + log.info("定时任务新增消息表:"+messageList); + messageService.saveBatch(messageList); + webSocket.sendMessage(messageList); } } @Override @@ -246,7 +276,7 @@ meterCertificateDto.setTechnologyJob(dictService.getDictNameByCode(MeterDictEnum.TECHNOLOGY_JOB,meterCertificateDto.getTechnologyJob())); meterCertificateDto.setAdministrationJob(dictService.getDictNameByCode(MeterDictEnum.ADMINISTRATION_JOB,meterCertificateDto.getAdministrationJob())); meterCertificateDto.setEducation(dictService.getDictNameByCode(MeterDictEnum.EDUCATION,meterCertificateDto.getEducation())); - if(format.compareTo(meterCertificateDto.getValidDate()) > 0) { + if(null != meterCertificateDto.getValidDate() && format.compareTo(meterCertificateDto.getValidDate()) > 0) { meterCertificateDto.setCertificateStatus("1"); }else{ meterCertificateDto.setCertificateStatus("0"); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterPriceServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterPriceServiceImpl.java index c1b40a2..a95919c 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterPriceServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterPriceServiceImpl.java @@ -27,6 +27,7 @@ import com.casic.missiles.utils.MinioUtil; import com.casic.missiles.utils.NumberGeneratorUtil; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import org.springframework.web.multipart.MultipartFile; @@ -71,10 +72,11 @@ if(meterPriceMapper.deleteById(idDto.getId())>0){ return ReturnUtil.success(); } - return ReturnUtil.failed("删除失败"); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override + @Transactional public ReturnDTO addMeterPrice(MeterPrice meterPrice) { MeterPriceCategory priceCategory = new MeterPriceCategory(null,meterPrice.getCheckType(),meterPrice.getCategoryName()); int categoryFlag = meterPriceCategoryMapper.insert(priceCategory); @@ -103,6 +105,7 @@ } @Override + @Transactional public ReturnDTO updatePriceInfo(MeterPrice meterPrice) { int updateFlag = meterPriceMapper.updateById(meterPrice); MeterPriceCategory priceCategory = new MeterPriceCategory(Long.parseLong(meterPrice.getPriceType()),meterPrice.getCheckType(),meterPrice.getCategoryName()); @@ -112,7 +115,7 @@ if(categoryFlag>0 && itemFlag>0 && updateFlag>0){ return ReturnUtil.success(); } - return ReturnUtil.failed("价格信息编辑失败"); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterStaffServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterStaffServiceImpl.java index 60f4a31..49852e1 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterStaffServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterStaffServiceImpl.java @@ -34,6 +34,7 @@ import com.casic.missiles.utils.NumberGeneratorUtil; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import org.springframework.web.multipart.MultipartFile; @@ -106,7 +107,7 @@ if(meterStaffMapper.deleteById(idDto.getId())>0){ return ReturnUtil.success(); } - return ReturnUtil.failed("删除失败"); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override @@ -123,6 +124,7 @@ } @Override + @Transactional public ReturnDTO addStaffInfo(MeterStaff meterStaff) { QueryWrapper staffWrapper = new QueryWrapper<>(); staffWrapper.eq("account",meterStaff.getAccount()); @@ -142,7 +144,7 @@ meterCertificateService.saveBatch(meterStaff.getCertificateList()); return ReturnUtil.success(); } - return ReturnUtil.failed("人员信息新增失败"); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override @@ -167,25 +169,20 @@ } @Override + @Transactional public ReturnDTO updateStaffInfo(MeterStaff meterStaff) { int updateFlag = meterStaffMapper.updateById(meterStaff); if(updateFlag>0){ - List ids = new ArrayList<>(); - List equipmentList = new ArrayList<>(); - for (MeterCertificate certificate : meterStaff.getCertificateList()) { - if(null != certificate.getIsDel() && certificate.getIsDel() == 1){ - ids.add(certificate.getId()); - equipmentList.add(certificate); - } - } - meterCertificateMapper.deleteBatchIds(ids); - meterStaff.getCertificateList().removeAll(equipmentList); - boolean saveOrUpdateFlag = meterCertificateService.saveOrUpdateBatch(meterStaff.getCertificateList()); - if(saveOrUpdateFlag){ + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("staff_id",meterStaff.getId()); + meterStaff.getCertificateList().forEach(bean->{ + bean.setStaffId(String.valueOf(meterStaff.getId())); + }); + if(meterCertificateService.remove(wrapper) && meterCertificateService.saveBatch(meterStaff.getCertificateList())){ return ReturnUtil.success(); - }else{ - return ReturnUtil.failed("人员信息编辑失败"); - } } + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } 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 15d09ae..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); } @@ -133,7 +134,7 @@ return meterCertificateService.expirationReminder(idDto); } - @Scheduled(cron = "0 0 0 * * ?") + //@Scheduled(cron = "0 0 0 * * ?") private void regularExpirationReminder() { meterCertificateService.regularExpirationReminder(); } 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 1749064..ad850a4 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/enums/MessageTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java new file mode 100644 index 0000000..8d3da10 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java @@ -0,0 +1,24 @@ +package com.casic.missiles.enums; + +public enum MessageTypeEnum { + + METER_CERTIFICATE("1", "计量人员证书到期提醒"), + MEASURING_EQUIPMENT("2", "测量设备到期提醒"), + STANDARD_EQUIPMENT("3", "标准装置到期提醒"); + + private String code; + private String value; + + MessageTypeEnum(String code, String value) { + this.code = code; + this.value = value; + } + + public String getCode() { + return code; + } + + public String getValue() { + return value; + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java index 9cd0c0d..c6b26c3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java @@ -2,6 +2,7 @@ public enum MeterRoleTypeEnum { + ADMIN("1", "管理员"), METER_DEPT_ADMIN("1586711737844137956", "计量部门负责人"); private String code; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java index e63ac86..fc2ae98 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java @@ -55,6 +55,7 @@ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("pro_def_id", processDefinition.getKey()); wrapper.eq("is_del", 0); + // 查出流程定义信息 SystemFlowForm systemFlowForm = flowFormMapper.selectOne(wrapper); String id = execution.getProcessInstanceBusinessKey(); switch (systemFlowForm.getFormId()) { @@ -103,7 +104,6 @@ private void updateEquipmentApplyState(String id, String state) { EquipmentApplyMapper equipmentApplyMapper = SpringContextUtil.getBean(EquipmentApplyMapper.class); - UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id", id).set("process_result", state); if (equipmentApplyMapper.update(null, updateWrapper) <= 0) { @@ -120,6 +120,7 @@ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("apply_id", id); List equipmentApplyEquipments = equipmentMapper.selectList(wrapper); + // 获取设备idList List equipmentIds = equipmentApplyEquipments.stream().map(EquipmentApplyEquipment::getEquipmentId).collect(Collectors.toList()); UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.in("id", equipmentIds).set("manager_state", state); @@ -130,7 +131,6 @@ if (stateChangeLogMapper.update(null, logUpdateWrapper) <= 0) { throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } - ; // 获取当前申请的信息 EquipmentApply equipmentApply = equipmentApplyMapper.selectById(id); // 新增状态变更记录 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..69c225f 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml @@ -49,6 +49,9 @@ LEFT JOIN sys_dept t3 on t2.dept_id = t3.id and t1.is_del = 0 + + and t2.account = #{request.userId} + and t2.staff_no like CONCAT('%',#{request.staffNo},'%') @@ -75,17 +78,21 @@ - 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, + su.dept_id AS remind_dept_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-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java index ef67b01..232e467 100644 --- a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java +++ b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java @@ -12,6 +12,9 @@ import static com.xxl.job.core.biz.model.ReturnT.SUCCESS; +/** + * 证书到期提醒 + */ @Slf4j @Component @RequiredArgsConstructor 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 a4b8b88..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 @@ -53,26 +53,32 @@ /** * 考核总人次 */ - @ApiModelProperty(value = "考核总人次", dataType = "Long") - private Long trainCount; + @ApiModelProperty(value = "考核总人次", dataType = "Integer") + private Integer trainCount; /** * 合格总人次 */ - @ApiModelProperty(value = "合格总人次", dataType = "Long") - private Long qualifiedCount; + @ApiModelProperty(value = "合格总人次", dataType = "Integer") + private Integer qualifiedCount; /** * 合格 */ - @ApiModelProperty(value = "合格", dataType = "Long") - private Long qualified; + @ApiModelProperty(value = "合格", dataType = "Integer") + private Integer qualified; /** * 不合格 */ - @ApiModelProperty(value = "不合格", dataType = "Long") - private Long notQualified; + @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/business/BusinessDealRecord.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessDealRecord.java index 17e0770..45701f0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessDealRecord.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessDealRecord.java @@ -25,6 +25,9 @@ private Long createUser; + @ApiModelProperty("操作类型") + private String dealType; + @ApiModelProperty("操作人名称") private String createUserName; 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..11942ff 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,19 @@ @TableField("update_time") private String updateTime; + public WorkbenchRemindMessage(Long remindId, Long remindDeptId, Long businessId, String businessCode, String messageType, String messageTitle, String messageContent, Integer status, Long createUser, String createUserName) { + this.remindId = remindId; + this.remindDeptId = remindDeptId; + this.businessId = businessId; + this.businessCode = businessCode; + this.messageType = messageType; + this.messageTitle = messageTitle; + 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/business/BusinessOrderServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOrderServiceImpl.java index 48742b4..4828151 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOrderServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOrderServiceImpl.java @@ -103,6 +103,9 @@ */ @Override public ReturnDTO updateOrder(BusinessOrder businessOrder) { + if (CollectionUtils.isEmpty(businessOrder.getCustomerSampleInfoList())) { + return ReturnUtil.failed("样品列表不能为空"); + } AuthUser authUser = ShiroKit.getUser(); businessOrder.setUpdateUser(authUser.getId()); int updateFlag = this.baseMapper.updateById(businessOrder); @@ -199,7 +202,8 @@ @Override public ReturnDTO updateStatusById(OrderCancelRequest orderCancelRequest, String status) { int updateFlag = doUpdateStatusById(orderCancelRequest.getId(), status); - int addDealRecordFlag = addDealRecord(orderCancelRequest); + String dealType = "委托书" + ((status.equals("2")) ? "接收" : "退回"); + int addDealRecordFlag = addDealRecord(orderCancelRequest, dealType); if (updateFlag > 0 && addDealRecordFlag > 0) { return ReturnUtil.success(); } @@ -213,7 +217,7 @@ @Transactional public ReturnDTO cancelOrder(OrderCancelRequest orderCancelRequest) { int updateFlag = this.doUpdateStatusById(orderCancelRequest.getId(), "3"); - int addDealRecordFlag = addDealRecord(orderCancelRequest); + int addDealRecordFlag = addDealRecord(orderCancelRequest, "委托书取消"); if (updateFlag > 0 && addDealRecordFlag > 0) { return ReturnUtil.success(); } @@ -226,14 +230,15 @@ @Override public List optionRecord(Long id) { QueryWrapper dealRecordQueryWrapper = new QueryWrapper() - .eq("order_id", id); + .eq("order_id", id) + .orderByDesc("create_time"); return dealRecordMapper.selectList(dealRecordQueryWrapper); } /** * 新增操作记录 */ - private int addDealRecord(OrderCancelRequest orderCancelRequest) { + private int addDealRecord(OrderCancelRequest orderCancelRequest, String dealType) { AuthUser authUser = ShiroKit.getUser(); BusinessDealRecord businessDealRecord = BusinessDealRecord.builder() .createUser(authUser.getId()) diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentApplyServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentApplyServiceImpl.java index 9edd521..fecbc9a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentApplyServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentApplyServiceImpl.java @@ -304,6 +304,7 @@ // 通过id修改处理结果 updateWrapper.eq("id",idDto.getId()).set("process_result", EquipmentApplyProcessEnum.ALREADY_BORROWED); if(equipmentApplyMapper.update(null, updateWrapper)>0){ + // 新增设备使用记录表 this.addEquipmentUseLog(idDto.getId(),EquipmentApplyProcessEnum.BORROWED); return ReturnUtil.success(); } @@ -316,6 +317,7 @@ UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id",idDto.getId()).set("process_result", EquipmentApplyProcessEnum.ALREADY_RETURN); if(equipmentApplyMapper.update(null, updateWrapper)>0){ + // 修改设备使用记录表 this.updateEquipmentUseLog(idDto.getId()); return ReturnUtil.success(); } @@ -329,8 +331,10 @@ updateWrapper.eq("id",request.getId()).set("process_result", request.getProcessResult()); if(equipmentApplyMapper.update(null, updateWrapper)>0){ if(request.getProcessResult().equals(EquipmentApplyProcessEnum.ALREADY_COLLECTING)){ + // 领用新增使用记录 this.addEquipmentUseLog(request.getId(),EquipmentApplyProcessEnum.COLLECT); }else{ + // 退领修改使用记录 this.updateEquipmentUseLog(request.getId()); } return ReturnUtil.success(); 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 df07d39..ce076b0 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,7 +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; @@ -9,26 +13,32 @@ 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; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.meter.MeterCertificateImport; import com.casic.missiles.dto.meter.MeterStaffRequest; -import com.casic.missiles.enums.BusinessExceptionEnum; -import com.casic.missiles.enums.ExportEnum; -import com.casic.missiles.enums.MeterDictEnum; +import com.casic.missiles.enums.*; import com.casic.missiles.exception.BusinessException; 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; @@ -36,10 +46,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; @@ -56,16 +63,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; @@ -73,6 +80,9 @@ @Resource private IBaseExportService iBaseExportService; + @Resource + private UserInfoMapper userInfoMapper; + @Override public ReturnDTO queryCertificateList(Page page , MeterStaffRequest meterStaffRequest) { Page meterCertificateDtoPage = meterCertificateMapper.queryCertificateList(page, meterStaffRequest); @@ -85,8 +95,7 @@ if(this.saveBatch(list)){ return ReturnUtil.success(); } - return ReturnUtil.failed("证书新增失败"); - + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override @@ -104,7 +113,7 @@ if(meterCertificateMapper.updateById(meterCertificate)>0){ return ReturnUtil.success(); } - return ReturnUtil.failed("编辑失败"); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override @@ -133,19 +142,23 @@ if(meterCertificateMapper.deleteById(idDto.getId())>0){ return ReturnUtil.success(); } - return ReturnUtil.failed("删除失败"); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @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,42 +170,59 @@ 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(),Long.parseLong(userInfo.getDeptId()),idDto.getId(),meterCertificate.getCertificateNo(), MessageTypeEnum.METER_CERTIFICATE.getCode(),MessageTypeEnum.METER_CERTIFICATE.getValue(),meterCertificate.getCertificateName(),0,user.getId(),user.getName()); + if(messageMapper.insert(remindMessage)>0){ + // 新增到消息列表后向用户推送消息 + webSocket.sendOneMessage(String.valueOf(userInfo.getId()),JSONObject.toJSONString(remindMessage)); return ReturnUtil.success(); } - return ReturnUtil.failed("提醒失败"); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @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()); - }); - collect.keySet().forEach(dtoList -> { - // 讲需要发送消息的证书整合 - messageList.addAll(collect.get(dtoList)); - }); - if(messageList.size()!=0){ - messageService.saveBatch(messageList); + Map> collect = list.parallelStream().collect(Collectors.groupingBy(WorkbenchRemindMessage::getBusinessId)); + // 移除已经发送过消息的证书信息 + messageIds.forEach(collect::remove); + // 讲需要发送消息的证书整合 + for (Long id : collect.keySet()) { + messageList.addAll(collect.get(id)); } + // 补充业务数据 + for (WorkbenchRemindMessage message : messageList) { + message.setMessageType(MessageTypeEnum.METER_CERTIFICATE.getCode()); + message.setMessageTitle(MessageTypeEnum.METER_CERTIFICATE.getValue()); + message.setStatus(0); + message.setCreateUser(Long.valueOf(MeterRoleTypeEnum.ADMIN.getCode())); + message.setCreateUserName(MeterRoleTypeEnum.ADMIN.getValue()); + } + log.info("定时任务新增消息表:"+messageList); + messageService.saveBatch(messageList); + webSocket.sendMessage(messageList); } } @Override @@ -246,7 +276,7 @@ meterCertificateDto.setTechnologyJob(dictService.getDictNameByCode(MeterDictEnum.TECHNOLOGY_JOB,meterCertificateDto.getTechnologyJob())); meterCertificateDto.setAdministrationJob(dictService.getDictNameByCode(MeterDictEnum.ADMINISTRATION_JOB,meterCertificateDto.getAdministrationJob())); meterCertificateDto.setEducation(dictService.getDictNameByCode(MeterDictEnum.EDUCATION,meterCertificateDto.getEducation())); - if(format.compareTo(meterCertificateDto.getValidDate()) > 0) { + if(null != meterCertificateDto.getValidDate() && format.compareTo(meterCertificateDto.getValidDate()) > 0) { meterCertificateDto.setCertificateStatus("1"); }else{ meterCertificateDto.setCertificateStatus("0"); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterPriceServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterPriceServiceImpl.java index c1b40a2..a95919c 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterPriceServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterPriceServiceImpl.java @@ -27,6 +27,7 @@ import com.casic.missiles.utils.MinioUtil; import com.casic.missiles.utils.NumberGeneratorUtil; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import org.springframework.web.multipart.MultipartFile; @@ -71,10 +72,11 @@ if(meterPriceMapper.deleteById(idDto.getId())>0){ return ReturnUtil.success(); } - return ReturnUtil.failed("删除失败"); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override + @Transactional public ReturnDTO addMeterPrice(MeterPrice meterPrice) { MeterPriceCategory priceCategory = new MeterPriceCategory(null,meterPrice.getCheckType(),meterPrice.getCategoryName()); int categoryFlag = meterPriceCategoryMapper.insert(priceCategory); @@ -103,6 +105,7 @@ } @Override + @Transactional public ReturnDTO updatePriceInfo(MeterPrice meterPrice) { int updateFlag = meterPriceMapper.updateById(meterPrice); MeterPriceCategory priceCategory = new MeterPriceCategory(Long.parseLong(meterPrice.getPriceType()),meterPrice.getCheckType(),meterPrice.getCategoryName()); @@ -112,7 +115,7 @@ if(categoryFlag>0 && itemFlag>0 && updateFlag>0){ return ReturnUtil.success(); } - return ReturnUtil.failed("价格信息编辑失败"); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterStaffServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterStaffServiceImpl.java index 60f4a31..49852e1 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterStaffServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterStaffServiceImpl.java @@ -34,6 +34,7 @@ import com.casic.missiles.utils.NumberGeneratorUtil; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import org.springframework.web.multipart.MultipartFile; @@ -106,7 +107,7 @@ if(meterStaffMapper.deleteById(idDto.getId())>0){ return ReturnUtil.success(); } - return ReturnUtil.failed("删除失败"); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override @@ -123,6 +124,7 @@ } @Override + @Transactional public ReturnDTO addStaffInfo(MeterStaff meterStaff) { QueryWrapper staffWrapper = new QueryWrapper<>(); staffWrapper.eq("account",meterStaff.getAccount()); @@ -142,7 +144,7 @@ meterCertificateService.saveBatch(meterStaff.getCertificateList()); return ReturnUtil.success(); } - return ReturnUtil.failed("人员信息新增失败"); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override @@ -167,25 +169,20 @@ } @Override + @Transactional public ReturnDTO updateStaffInfo(MeterStaff meterStaff) { int updateFlag = meterStaffMapper.updateById(meterStaff); if(updateFlag>0){ - List ids = new ArrayList<>(); - List equipmentList = new ArrayList<>(); - for (MeterCertificate certificate : meterStaff.getCertificateList()) { - if(null != certificate.getIsDel() && certificate.getIsDel() == 1){ - ids.add(certificate.getId()); - equipmentList.add(certificate); - } - } - meterCertificateMapper.deleteBatchIds(ids); - meterStaff.getCertificateList().removeAll(equipmentList); - boolean saveOrUpdateFlag = meterCertificateService.saveOrUpdateBatch(meterStaff.getCertificateList()); - if(saveOrUpdateFlag){ + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("staff_id",meterStaff.getId()); + meterStaff.getCertificateList().forEach(bean->{ + bean.setStaffId(String.valueOf(meterStaff.getId())); + }); + if(meterCertificateService.remove(wrapper) && meterCertificateService.saveBatch(meterStaff.getCertificateList())){ return ReturnUtil.success(); - }else{ - return ReturnUtil.failed("人员信息编辑失败"); - } } + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } 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 d6316d0..663d024 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 @@ -68,6 +68,7 @@ certificateList.forEach(bean->{ MeterWorkbenchResponse certificateResponse = new MeterWorkbenchResponse(); BeanUtils.copyProperties(bean, certificateResponse); + certificateResponse.setMeterAdmin(true); resList.add(certificateResponse); }); }else{ @@ -86,6 +87,7 @@ certificateList.forEach(bean->{ MeterWorkbenchResponse certificateResponse = new MeterWorkbenchResponse(); BeanUtils.copyProperties(bean, certificateResponse); + certificateResponse.setMeterAdmin(false); // 判断证书过期时间于当前时间差多少天 int days = (int) ((DateUtil.parseDate(bean.getValidDate()).getTime() - DateUtil.parseDate(DateUtil.formatDate(new Date())).getTime()) / (1000*3600*24)); if(days>0){ @@ -151,14 +153,15 @@ QueryWrapper trainLogWrapper = new QueryWrapper<>(); // 查询考核总人次 Long trainCount = meterTrainStaffMapper.selectCount(trainLogWrapper); - result.setTrainCount(trainCount); - // 查询考核合格人次 - trainLogWrapper.eq("exam_result", ExamResultEnum.QUALIFIED.getValue()); - Long qualifiedCount = meterTrainStaffMapper.selectCount(trainLogWrapper); - result.setQualifiedCount(qualifiedCount); - result.setQualified(qualifiedCount); - // 考核不合格人次=考核总人次-合格人次 - result.setNotQualified(trainCount-qualifiedCount); + result.setTrainCount(Math.toIntExact(trainCount)); + // 查询考核不合格人次 + 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<>(); @@ -167,28 +170,31 @@ MeterStaff meterStaff = meterStaffMapper.selectOne(staffWrapper); if(null == meterStaff){ log.error("该用户不是计量相关人员"); + result.setTrainCount(0); + result.setQualifiedCount(0); + result.setQualified(0); + result.setNotQualified(0); return ReturnUtil.success(result); } QueryWrapper trainLogWrapper = new QueryWrapper<>(); + int trainCount = Math.toIntExact(meterTrainStaffMapper.selectCount(trainLogWrapper)); // 查询考核总人次 - result.setTrainCount(meterTrainStaffMapper.selectCount(trainLogWrapper)); - // 查询考核合格总人次 - trainLogWrapper.eq("exam_result", ExamResultEnum.QUALIFIED.getValue()); - result.setQualifiedCount(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); - mapList.forEach(bean->{ - // 将查询到的信息赋值给返回的对象中 - if(bean.get("result").equals(ExamResultEnum.QUALIFIED.getValue())){ - result.setQualified(Long.parseLong(bean.get("count").toString())); - }else{ - result.setNotQualified(Long.parseLong(bean.get("count").toString())); - } - }); + // 查询当前用户考核次数 + 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 15d09ae..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); } @@ -133,7 +134,7 @@ return meterCertificateService.expirationReminder(idDto); } - @Scheduled(cron = "0 0 0 * * ?") + //@Scheduled(cron = "0 0 0 * * ?") private void regularExpirationReminder() { meterCertificateService.regularExpirationReminder(); } 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 1749064..ad850a4 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/enums/MessageTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java new file mode 100644 index 0000000..8d3da10 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java @@ -0,0 +1,24 @@ +package com.casic.missiles.enums; + +public enum MessageTypeEnum { + + METER_CERTIFICATE("1", "计量人员证书到期提醒"), + MEASURING_EQUIPMENT("2", "测量设备到期提醒"), + STANDARD_EQUIPMENT("3", "标准装置到期提醒"); + + private String code; + private String value; + + MessageTypeEnum(String code, String value) { + this.code = code; + this.value = value; + } + + public String getCode() { + return code; + } + + public String getValue() { + return value; + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java index 9cd0c0d..c6b26c3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java @@ -2,6 +2,7 @@ public enum MeterRoleTypeEnum { + ADMIN("1", "管理员"), METER_DEPT_ADMIN("1586711737844137956", "计量部门负责人"); private String code; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java index e63ac86..fc2ae98 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java @@ -55,6 +55,7 @@ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("pro_def_id", processDefinition.getKey()); wrapper.eq("is_del", 0); + // 查出流程定义信息 SystemFlowForm systemFlowForm = flowFormMapper.selectOne(wrapper); String id = execution.getProcessInstanceBusinessKey(); switch (systemFlowForm.getFormId()) { @@ -103,7 +104,6 @@ private void updateEquipmentApplyState(String id, String state) { EquipmentApplyMapper equipmentApplyMapper = SpringContextUtil.getBean(EquipmentApplyMapper.class); - UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id", id).set("process_result", state); if (equipmentApplyMapper.update(null, updateWrapper) <= 0) { @@ -120,6 +120,7 @@ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("apply_id", id); List equipmentApplyEquipments = equipmentMapper.selectList(wrapper); + // 获取设备idList List equipmentIds = equipmentApplyEquipments.stream().map(EquipmentApplyEquipment::getEquipmentId).collect(Collectors.toList()); UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.in("id", equipmentIds).set("manager_state", state); @@ -130,7 +131,6 @@ if (stateChangeLogMapper.update(null, logUpdateWrapper) <= 0) { throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } - ; // 获取当前申请的信息 EquipmentApply equipmentApply = equipmentApplyMapper.selectById(id); // 新增状态变更记录 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..69c225f 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml @@ -49,6 +49,9 @@ LEFT JOIN sys_dept t3 on t2.dept_id = t3.id and t1.is_del = 0 + + and t2.account = #{request.userId} + and t2.staff_no like CONCAT('%',#{request.staffNo},'%') @@ -75,17 +78,21 @@ - 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, + su.dept_id AS remind_dept_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-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java index ef67b01..232e467 100644 --- a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java +++ b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java @@ -12,6 +12,9 @@ import static com.xxl.job.core.biz.model.ReturnT.SUCCESS; +/** + * 证书到期提醒 + */ @Slf4j @Component @RequiredArgsConstructor 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 a4b8b88..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 @@ -53,26 +53,32 @@ /** * 考核总人次 */ - @ApiModelProperty(value = "考核总人次", dataType = "Long") - private Long trainCount; + @ApiModelProperty(value = "考核总人次", dataType = "Integer") + private Integer trainCount; /** * 合格总人次 */ - @ApiModelProperty(value = "合格总人次", dataType = "Long") - private Long qualifiedCount; + @ApiModelProperty(value = "合格总人次", dataType = "Integer") + private Integer qualifiedCount; /** * 合格 */ - @ApiModelProperty(value = "合格", dataType = "Long") - private Long qualified; + @ApiModelProperty(value = "合格", dataType = "Integer") + private Integer qualified; /** * 不合格 */ - @ApiModelProperty(value = "不合格", dataType = "Long") - private Long notQualified; + @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/business/BusinessDealRecord.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessDealRecord.java index 17e0770..45701f0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessDealRecord.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessDealRecord.java @@ -25,6 +25,9 @@ private Long createUser; + @ApiModelProperty("操作类型") + private String dealType; + @ApiModelProperty("操作人名称") private String createUserName; 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..11942ff 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,19 @@ @TableField("update_time") private String updateTime; + public WorkbenchRemindMessage(Long remindId, Long remindDeptId, Long businessId, String businessCode, String messageType, String messageTitle, String messageContent, Integer status, Long createUser, String createUserName) { + this.remindId = remindId; + this.remindDeptId = remindDeptId; + this.businessId = businessId; + this.businessCode = businessCode; + this.messageType = messageType; + this.messageTitle = messageTitle; + 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/business/BusinessOrderServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOrderServiceImpl.java index 48742b4..4828151 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOrderServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOrderServiceImpl.java @@ -103,6 +103,9 @@ */ @Override public ReturnDTO updateOrder(BusinessOrder businessOrder) { + if (CollectionUtils.isEmpty(businessOrder.getCustomerSampleInfoList())) { + return ReturnUtil.failed("样品列表不能为空"); + } AuthUser authUser = ShiroKit.getUser(); businessOrder.setUpdateUser(authUser.getId()); int updateFlag = this.baseMapper.updateById(businessOrder); @@ -199,7 +202,8 @@ @Override public ReturnDTO updateStatusById(OrderCancelRequest orderCancelRequest, String status) { int updateFlag = doUpdateStatusById(orderCancelRequest.getId(), status); - int addDealRecordFlag = addDealRecord(orderCancelRequest); + String dealType = "委托书" + ((status.equals("2")) ? "接收" : "退回"); + int addDealRecordFlag = addDealRecord(orderCancelRequest, dealType); if (updateFlag > 0 && addDealRecordFlag > 0) { return ReturnUtil.success(); } @@ -213,7 +217,7 @@ @Transactional public ReturnDTO cancelOrder(OrderCancelRequest orderCancelRequest) { int updateFlag = this.doUpdateStatusById(orderCancelRequest.getId(), "3"); - int addDealRecordFlag = addDealRecord(orderCancelRequest); + int addDealRecordFlag = addDealRecord(orderCancelRequest, "委托书取消"); if (updateFlag > 0 && addDealRecordFlag > 0) { return ReturnUtil.success(); } @@ -226,14 +230,15 @@ @Override public List optionRecord(Long id) { QueryWrapper dealRecordQueryWrapper = new QueryWrapper() - .eq("order_id", id); + .eq("order_id", id) + .orderByDesc("create_time"); return dealRecordMapper.selectList(dealRecordQueryWrapper); } /** * 新增操作记录 */ - private int addDealRecord(OrderCancelRequest orderCancelRequest) { + private int addDealRecord(OrderCancelRequest orderCancelRequest, String dealType) { AuthUser authUser = ShiroKit.getUser(); BusinessDealRecord businessDealRecord = BusinessDealRecord.builder() .createUser(authUser.getId()) diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentApplyServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentApplyServiceImpl.java index 9edd521..fecbc9a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentApplyServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentApplyServiceImpl.java @@ -304,6 +304,7 @@ // 通过id修改处理结果 updateWrapper.eq("id",idDto.getId()).set("process_result", EquipmentApplyProcessEnum.ALREADY_BORROWED); if(equipmentApplyMapper.update(null, updateWrapper)>0){ + // 新增设备使用记录表 this.addEquipmentUseLog(idDto.getId(),EquipmentApplyProcessEnum.BORROWED); return ReturnUtil.success(); } @@ -316,6 +317,7 @@ UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id",idDto.getId()).set("process_result", EquipmentApplyProcessEnum.ALREADY_RETURN); if(equipmentApplyMapper.update(null, updateWrapper)>0){ + // 修改设备使用记录表 this.updateEquipmentUseLog(idDto.getId()); return ReturnUtil.success(); } @@ -329,8 +331,10 @@ updateWrapper.eq("id",request.getId()).set("process_result", request.getProcessResult()); if(equipmentApplyMapper.update(null, updateWrapper)>0){ if(request.getProcessResult().equals(EquipmentApplyProcessEnum.ALREADY_COLLECTING)){ + // 领用新增使用记录 this.addEquipmentUseLog(request.getId(),EquipmentApplyProcessEnum.COLLECT); }else{ + // 退领修改使用记录 this.updateEquipmentUseLog(request.getId()); } return ReturnUtil.success(); 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 df07d39..ce076b0 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,7 +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; @@ -9,26 +13,32 @@ 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; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.meter.MeterCertificateImport; import com.casic.missiles.dto.meter.MeterStaffRequest; -import com.casic.missiles.enums.BusinessExceptionEnum; -import com.casic.missiles.enums.ExportEnum; -import com.casic.missiles.enums.MeterDictEnum; +import com.casic.missiles.enums.*; import com.casic.missiles.exception.BusinessException; 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; @@ -36,10 +46,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; @@ -56,16 +63,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; @@ -73,6 +80,9 @@ @Resource private IBaseExportService iBaseExportService; + @Resource + private UserInfoMapper userInfoMapper; + @Override public ReturnDTO queryCertificateList(Page page , MeterStaffRequest meterStaffRequest) { Page meterCertificateDtoPage = meterCertificateMapper.queryCertificateList(page, meterStaffRequest); @@ -85,8 +95,7 @@ if(this.saveBatch(list)){ return ReturnUtil.success(); } - return ReturnUtil.failed("证书新增失败"); - + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override @@ -104,7 +113,7 @@ if(meterCertificateMapper.updateById(meterCertificate)>0){ return ReturnUtil.success(); } - return ReturnUtil.failed("编辑失败"); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override @@ -133,19 +142,23 @@ if(meterCertificateMapper.deleteById(idDto.getId())>0){ return ReturnUtil.success(); } - return ReturnUtil.failed("删除失败"); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @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,42 +170,59 @@ 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(),Long.parseLong(userInfo.getDeptId()),idDto.getId(),meterCertificate.getCertificateNo(), MessageTypeEnum.METER_CERTIFICATE.getCode(),MessageTypeEnum.METER_CERTIFICATE.getValue(),meterCertificate.getCertificateName(),0,user.getId(),user.getName()); + if(messageMapper.insert(remindMessage)>0){ + // 新增到消息列表后向用户推送消息 + webSocket.sendOneMessage(String.valueOf(userInfo.getId()),JSONObject.toJSONString(remindMessage)); return ReturnUtil.success(); } - return ReturnUtil.failed("提醒失败"); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @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()); - }); - collect.keySet().forEach(dtoList -> { - // 讲需要发送消息的证书整合 - messageList.addAll(collect.get(dtoList)); - }); - if(messageList.size()!=0){ - messageService.saveBatch(messageList); + Map> collect = list.parallelStream().collect(Collectors.groupingBy(WorkbenchRemindMessage::getBusinessId)); + // 移除已经发送过消息的证书信息 + messageIds.forEach(collect::remove); + // 讲需要发送消息的证书整合 + for (Long id : collect.keySet()) { + messageList.addAll(collect.get(id)); } + // 补充业务数据 + for (WorkbenchRemindMessage message : messageList) { + message.setMessageType(MessageTypeEnum.METER_CERTIFICATE.getCode()); + message.setMessageTitle(MessageTypeEnum.METER_CERTIFICATE.getValue()); + message.setStatus(0); + message.setCreateUser(Long.valueOf(MeterRoleTypeEnum.ADMIN.getCode())); + message.setCreateUserName(MeterRoleTypeEnum.ADMIN.getValue()); + } + log.info("定时任务新增消息表:"+messageList); + messageService.saveBatch(messageList); + webSocket.sendMessage(messageList); } } @Override @@ -246,7 +276,7 @@ meterCertificateDto.setTechnologyJob(dictService.getDictNameByCode(MeterDictEnum.TECHNOLOGY_JOB,meterCertificateDto.getTechnologyJob())); meterCertificateDto.setAdministrationJob(dictService.getDictNameByCode(MeterDictEnum.ADMINISTRATION_JOB,meterCertificateDto.getAdministrationJob())); meterCertificateDto.setEducation(dictService.getDictNameByCode(MeterDictEnum.EDUCATION,meterCertificateDto.getEducation())); - if(format.compareTo(meterCertificateDto.getValidDate()) > 0) { + if(null != meterCertificateDto.getValidDate() && format.compareTo(meterCertificateDto.getValidDate()) > 0) { meterCertificateDto.setCertificateStatus("1"); }else{ meterCertificateDto.setCertificateStatus("0"); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterPriceServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterPriceServiceImpl.java index c1b40a2..a95919c 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterPriceServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterPriceServiceImpl.java @@ -27,6 +27,7 @@ import com.casic.missiles.utils.MinioUtil; import com.casic.missiles.utils.NumberGeneratorUtil; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import org.springframework.web.multipart.MultipartFile; @@ -71,10 +72,11 @@ if(meterPriceMapper.deleteById(idDto.getId())>0){ return ReturnUtil.success(); } - return ReturnUtil.failed("删除失败"); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override + @Transactional public ReturnDTO addMeterPrice(MeterPrice meterPrice) { MeterPriceCategory priceCategory = new MeterPriceCategory(null,meterPrice.getCheckType(),meterPrice.getCategoryName()); int categoryFlag = meterPriceCategoryMapper.insert(priceCategory); @@ -103,6 +105,7 @@ } @Override + @Transactional public ReturnDTO updatePriceInfo(MeterPrice meterPrice) { int updateFlag = meterPriceMapper.updateById(meterPrice); MeterPriceCategory priceCategory = new MeterPriceCategory(Long.parseLong(meterPrice.getPriceType()),meterPrice.getCheckType(),meterPrice.getCategoryName()); @@ -112,7 +115,7 @@ if(categoryFlag>0 && itemFlag>0 && updateFlag>0){ return ReturnUtil.success(); } - return ReturnUtil.failed("价格信息编辑失败"); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterStaffServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterStaffServiceImpl.java index 60f4a31..49852e1 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterStaffServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterStaffServiceImpl.java @@ -34,6 +34,7 @@ import com.casic.missiles.utils.NumberGeneratorUtil; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import org.springframework.web.multipart.MultipartFile; @@ -106,7 +107,7 @@ if(meterStaffMapper.deleteById(idDto.getId())>0){ return ReturnUtil.success(); } - return ReturnUtil.failed("删除失败"); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override @@ -123,6 +124,7 @@ } @Override + @Transactional public ReturnDTO addStaffInfo(MeterStaff meterStaff) { QueryWrapper staffWrapper = new QueryWrapper<>(); staffWrapper.eq("account",meterStaff.getAccount()); @@ -142,7 +144,7 @@ meterCertificateService.saveBatch(meterStaff.getCertificateList()); return ReturnUtil.success(); } - return ReturnUtil.failed("人员信息新增失败"); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override @@ -167,25 +169,20 @@ } @Override + @Transactional public ReturnDTO updateStaffInfo(MeterStaff meterStaff) { int updateFlag = meterStaffMapper.updateById(meterStaff); if(updateFlag>0){ - List ids = new ArrayList<>(); - List equipmentList = new ArrayList<>(); - for (MeterCertificate certificate : meterStaff.getCertificateList()) { - if(null != certificate.getIsDel() && certificate.getIsDel() == 1){ - ids.add(certificate.getId()); - equipmentList.add(certificate); - } - } - meterCertificateMapper.deleteBatchIds(ids); - meterStaff.getCertificateList().removeAll(equipmentList); - boolean saveOrUpdateFlag = meterCertificateService.saveOrUpdateBatch(meterStaff.getCertificateList()); - if(saveOrUpdateFlag){ + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("staff_id",meterStaff.getId()); + meterStaff.getCertificateList().forEach(bean->{ + bean.setStaffId(String.valueOf(meterStaff.getId())); + }); + if(meterCertificateService.remove(wrapper) && meterCertificateService.saveBatch(meterStaff.getCertificateList())){ return ReturnUtil.success(); - }else{ - return ReturnUtil.failed("人员信息编辑失败"); - } } + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } 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 d6316d0..663d024 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 @@ -68,6 +68,7 @@ certificateList.forEach(bean->{ MeterWorkbenchResponse certificateResponse = new MeterWorkbenchResponse(); BeanUtils.copyProperties(bean, certificateResponse); + certificateResponse.setMeterAdmin(true); resList.add(certificateResponse); }); }else{ @@ -86,6 +87,7 @@ certificateList.forEach(bean->{ MeterWorkbenchResponse certificateResponse = new MeterWorkbenchResponse(); BeanUtils.copyProperties(bean, certificateResponse); + certificateResponse.setMeterAdmin(false); // 判断证书过期时间于当前时间差多少天 int days = (int) ((DateUtil.parseDate(bean.getValidDate()).getTime() - DateUtil.parseDate(DateUtil.formatDate(new Date())).getTime()) / (1000*3600*24)); if(days>0){ @@ -151,14 +153,15 @@ QueryWrapper trainLogWrapper = new QueryWrapper<>(); // 查询考核总人次 Long trainCount = meterTrainStaffMapper.selectCount(trainLogWrapper); - result.setTrainCount(trainCount); - // 查询考核合格人次 - trainLogWrapper.eq("exam_result", ExamResultEnum.QUALIFIED.getValue()); - Long qualifiedCount = meterTrainStaffMapper.selectCount(trainLogWrapper); - result.setQualifiedCount(qualifiedCount); - result.setQualified(qualifiedCount); - // 考核不合格人次=考核总人次-合格人次 - result.setNotQualified(trainCount-qualifiedCount); + result.setTrainCount(Math.toIntExact(trainCount)); + // 查询考核不合格人次 + 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<>(); @@ -167,28 +170,31 @@ MeterStaff meterStaff = meterStaffMapper.selectOne(staffWrapper); if(null == meterStaff){ log.error("该用户不是计量相关人员"); + result.setTrainCount(0); + result.setQualifiedCount(0); + result.setQualified(0); + result.setNotQualified(0); return ReturnUtil.success(result); } QueryWrapper trainLogWrapper = new QueryWrapper<>(); + int trainCount = Math.toIntExact(meterTrainStaffMapper.selectCount(trainLogWrapper)); // 查询考核总人次 - result.setTrainCount(meterTrainStaffMapper.selectCount(trainLogWrapper)); - // 查询考核合格总人次 - trainLogWrapper.eq("exam_result", ExamResultEnum.QUALIFIED.getValue()); - result.setQualifiedCount(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); - mapList.forEach(bean->{ - // 将查询到的信息赋值给返回的对象中 - if(bean.get("result").equals(ExamResultEnum.QUALIFIED.getValue())){ - result.setQualified(Long.parseLong(bean.get("count").toString())); - }else{ - result.setNotQualified(Long.parseLong(bean.get("count").toString())); - } - }); + // 查询当前用户考核次数 + 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);