diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/quality/BizQualityConferenceRecordController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/quality/BizQualityConferenceRecordController.java index a05f783..46f54fc 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/quality/BizQualityConferenceRecordController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/quality/BizQualityConferenceRecordController.java @@ -136,10 +136,15 @@ @ApiOperation("通知参会人员-待完善") @GetMapping(value = "/pushUsers") public ReturnDTO pushUsers(@ApiParam("会议ID") String id) { - + bizQualityConferenceRecordService.pushUsers(id); return ReturnUtil.success(); } - + @ApiOperation("参会人员确认") + @GetMapping(value = "/confirm") + public ReturnDTO confirm(@ApiParam("会议ID") String id) { + bizQualityConferenceRecordService.confirm(id); + return ReturnUtil.success(); + } /** * 修改质量活动模板管理 */ diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/quality/BizQualityConferenceRecordController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/quality/BizQualityConferenceRecordController.java index a05f783..46f54fc 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/quality/BizQualityConferenceRecordController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/quality/BizQualityConferenceRecordController.java @@ -136,10 +136,15 @@ @ApiOperation("通知参会人员-待完善") @GetMapping(value = "/pushUsers") public ReturnDTO pushUsers(@ApiParam("会议ID") String id) { - + bizQualityConferenceRecordService.pushUsers(id); return ReturnUtil.success(); } - + @ApiOperation("参会人员确认") + @GetMapping(value = "/confirm") + public ReturnDTO confirm(@ApiParam("会议ID") String id) { + bizQualityConferenceRecordService.confirm(id); + return ReturnUtil.success(); + } /** * 修改质量活动模板管理 */ diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java index 71a89f9..15ea8fa 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java @@ -19,7 +19,8 @@ WORKBENCH_REMIND_NOVELTY_SEARCH("15", "测试校准检定方法查新提醒"), WORKBENCH_REMIND_FILE_GRANT("16", "文件发放通知提醒"), WORKBENCH_CUSTOMER_QUESTIONNAIRE("17", "委托方满意度调查表"), - INTERNAL_AUDIT_PLAN("18", "内审计划工作提醒"); + INTERNAL_AUDIT_PLAN("18", "内审计划工作提醒"), + CONFERENCE_RECORD ("19", "会议确认提醒"); private String code; private String value; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/quality/BizQualityConferenceRecordController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/quality/BizQualityConferenceRecordController.java index a05f783..46f54fc 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/quality/BizQualityConferenceRecordController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/quality/BizQualityConferenceRecordController.java @@ -136,10 +136,15 @@ @ApiOperation("通知参会人员-待完善") @GetMapping(value = "/pushUsers") public ReturnDTO pushUsers(@ApiParam("会议ID") String id) { - + bizQualityConferenceRecordService.pushUsers(id); return ReturnUtil.success(); } - + @ApiOperation("参会人员确认") + @GetMapping(value = "/confirm") + public ReturnDTO confirm(@ApiParam("会议ID") String id) { + bizQualityConferenceRecordService.confirm(id); + return ReturnUtil.success(); + } /** * 修改质量活动模板管理 */ diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java index 71a89f9..15ea8fa 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java @@ -19,7 +19,8 @@ WORKBENCH_REMIND_NOVELTY_SEARCH("15", "测试校准检定方法查新提醒"), WORKBENCH_REMIND_FILE_GRANT("16", "文件发放通知提醒"), WORKBENCH_CUSTOMER_QUESTIONNAIRE("17", "委托方满意度调查表"), - INTERNAL_AUDIT_PLAN("18", "内审计划工作提醒"); + INTERNAL_AUDIT_PLAN("18", "内审计划工作提醒"), + CONFERENCE_RECORD ("19", "会议确认提醒"); private String code; private String value; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/RemindTaskTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/RemindTaskTypeEnum.java index 65990ad..39c73b9 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/RemindTaskTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/RemindTaskTypeEnum.java @@ -24,4 +24,6 @@ String WORKBENCH_MONTH_MAINTAIN = "8"; //内审计划工作提醒 String AUDIT_PLAN_MAINTAIN = "9"; + //会议确认提醒 + String CONFERENCE_RECORD = "10"; } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/quality/BizQualityConferenceRecordController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/quality/BizQualityConferenceRecordController.java index a05f783..46f54fc 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/quality/BizQualityConferenceRecordController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/quality/BizQualityConferenceRecordController.java @@ -136,10 +136,15 @@ @ApiOperation("通知参会人员-待完善") @GetMapping(value = "/pushUsers") public ReturnDTO pushUsers(@ApiParam("会议ID") String id) { - + bizQualityConferenceRecordService.pushUsers(id); return ReturnUtil.success(); } - + @ApiOperation("参会人员确认") + @GetMapping(value = "/confirm") + public ReturnDTO confirm(@ApiParam("会议ID") String id) { + bizQualityConferenceRecordService.confirm(id); + return ReturnUtil.success(); + } /** * 修改质量活动模板管理 */ diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java index 71a89f9..15ea8fa 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java @@ -19,7 +19,8 @@ WORKBENCH_REMIND_NOVELTY_SEARCH("15", "测试校准检定方法查新提醒"), WORKBENCH_REMIND_FILE_GRANT("16", "文件发放通知提醒"), WORKBENCH_CUSTOMER_QUESTIONNAIRE("17", "委托方满意度调查表"), - INTERNAL_AUDIT_PLAN("18", "内审计划工作提醒"); + INTERNAL_AUDIT_PLAN("18", "内审计划工作提醒"), + CONFERENCE_RECORD ("19", "会议确认提醒"); private String code; private String value; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/RemindTaskTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/RemindTaskTypeEnum.java index 65990ad..39c73b9 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/RemindTaskTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/RemindTaskTypeEnum.java @@ -24,4 +24,6 @@ String WORKBENCH_MONTH_MAINTAIN = "8"; //内审计划工作提醒 String AUDIT_PLAN_MAINTAIN = "9"; + //会议确认提醒 + String CONFERENCE_RECORD = "10"; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/TopicConstants.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/TopicConstants.java index 7d4fe26..68ef3f6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/TopicConstants.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/TopicConstants.java @@ -26,4 +26,5 @@ String INTERNAL_AUDIT_PLAN = "内审"; String WORKBENCH_REMIND = "工作提醒"; String WORKBENCH_REMIND_AUDIT = "内审计划工作提醒"; + String CONFERENCE_RECORD = "会议确认提醒"; } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/quality/BizQualityConferenceRecordController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/quality/BizQualityConferenceRecordController.java index a05f783..46f54fc 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/quality/BizQualityConferenceRecordController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/quality/BizQualityConferenceRecordController.java @@ -136,10 +136,15 @@ @ApiOperation("通知参会人员-待完善") @GetMapping(value = "/pushUsers") public ReturnDTO pushUsers(@ApiParam("会议ID") String id) { - + bizQualityConferenceRecordService.pushUsers(id); return ReturnUtil.success(); } - + @ApiOperation("参会人员确认") + @GetMapping(value = "/confirm") + public ReturnDTO confirm(@ApiParam("会议ID") String id) { + bizQualityConferenceRecordService.confirm(id); + return ReturnUtil.success(); + } /** * 修改质量活动模板管理 */ diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java index 71a89f9..15ea8fa 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java @@ -19,7 +19,8 @@ WORKBENCH_REMIND_NOVELTY_SEARCH("15", "测试校准检定方法查新提醒"), WORKBENCH_REMIND_FILE_GRANT("16", "文件发放通知提醒"), WORKBENCH_CUSTOMER_QUESTIONNAIRE("17", "委托方满意度调查表"), - INTERNAL_AUDIT_PLAN("18", "内审计划工作提醒"); + INTERNAL_AUDIT_PLAN("18", "内审计划工作提醒"), + CONFERENCE_RECORD ("19", "会议确认提醒"); private String code; private String value; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/RemindTaskTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/RemindTaskTypeEnum.java index 65990ad..39c73b9 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/RemindTaskTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/RemindTaskTypeEnum.java @@ -24,4 +24,6 @@ String WORKBENCH_MONTH_MAINTAIN = "8"; //内审计划工作提醒 String AUDIT_PLAN_MAINTAIN = "9"; + //会议确认提醒 + String CONFERENCE_RECORD = "10"; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/TopicConstants.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/TopicConstants.java index 7d4fe26..68ef3f6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/TopicConstants.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/TopicConstants.java @@ -26,4 +26,5 @@ String INTERNAL_AUDIT_PLAN = "内审"; String WORKBENCH_REMIND = "工作提醒"; String WORKBENCH_REMIND_AUDIT = "内审计划工作提醒"; + String CONFERENCE_RECORD = "会议确认提醒"; } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/quality/BizQualityConferenceRecordServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/quality/BizQualityConferenceRecordServiceImpl.java index 587bdd7..1d3c2f9 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/quality/BizQualityConferenceRecordServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/quality/BizQualityConferenceRecordServiceImpl.java @@ -1,27 +1,36 @@ package com.casic.missiles.service.Impl.quality; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.constants.TopicConstants; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.dto.quality.QualitySelectDTO; import com.casic.missiles.dto.quality.QualityUserDTO; import com.casic.missiles.dto.quality.QualityUserInfoDTO; +import com.casic.missiles.enums.workbench.MessageSourceModuleEnum; +import com.casic.missiles.enums.workbench.MessageTypeEnum; import com.casic.missiles.mapper.quality.BizQualityConferenceRecordMapper; -import com.casic.missiles.model.quality.BizQualityConferenceRecord; -import com.casic.missiles.model.quality.BizQualityConferenceRelUser; -import com.casic.missiles.model.quality.BizQualityInternalAuditManagement; -import com.casic.missiles.model.quality.BizQualityManagementReview; +import com.casic.missiles.mapper.workbench.WorkbenchRemindMessageMapper; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.quality.*; import com.casic.missiles.model.quality.base.*; -import com.casic.missiles.service.quality.IBizQualityConferenceRecordService; -import com.casic.missiles.service.quality.IBizQualityConferenceRelUserService; -import com.casic.missiles.service.quality.IBizQualityInternalAuditManagementService; -import com.casic.missiles.service.quality.IBizQualityManagementReviewService; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; +import com.casic.missiles.modular.application.service.ICasicAuthService; +import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.service.quality.*; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; import java.io.Serializable; +import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.stream.Collectors; @@ -39,11 +48,22 @@ private final IBizQualityConferenceRelUserService bizQualityConferenceRelUserService; private final IBizQualityInternalAuditManagementService auditManagementService; private final IBizQualityManagementReviewService reviewService; + private final ICasicAuthService authService; + private final AbstractPermissionContext permissionContext; + @Resource + private IBizLabRelDeptService labRelDeptService; + /** + * 工作提醒 + */ + @Resource + private WorkbenchRemindMessageMapper messageMapper; - public BizQualityConferenceRecordServiceImpl(IBizQualityConferenceRelUserService bizQualityConferenceRelUserService, IBizQualityInternalAuditManagementService auditManagementService, @Lazy IBizQualityManagementReviewService reviewService) { + public BizQualityConferenceRecordServiceImpl(IBizQualityConferenceRelUserService bizQualityConferenceRelUserService, IBizQualityInternalAuditManagementService auditManagementService, @Lazy IBizQualityManagementReviewService reviewService, ICasicAuthService authService, AbstractPermissionContext permissionContext) { this.bizQualityConferenceRelUserService = bizQualityConferenceRelUserService; this.auditManagementService = auditManagementService; this.reviewService = reviewService; + this.authService = authService; + this.permissionContext = permissionContext; } @Override @@ -52,6 +72,74 @@ } @Override + public void pushUsers(String id) { + BizQualityConferenceRecord record = baseMapper.selectById(id); + if (record == null) { + throw new ServiceException(500, "请先保存会议信息"); + } + //读取参会人员信息 + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.eq(BizQualityConferenceRelUser::getConferenceId, id); + List users = bizQualityConferenceRelUserService.list(query); + + List remindMessages = createRemindMessage(users, record); + //创建工作提醒 + if (CollectionUtil.isNotEmpty(remindMessages)) { + for (WorkbenchRemindMessage remindMessage : remindMessages) { + messageMapper.insert(remindMessage); + } + } + + } + + private List createRemindMessage(List users, BizQualityConferenceRecord record) { + List list = new ArrayList<>(); + + for (BizQualityConferenceRelUser relUser : users) { + + User user = permissionContext.getUserService().getById(relUser.getUserId()); + BizLabRelDept relDept = labRelDeptService.getByDeptId(user.getDeptId() + ""); + WorkbenchRemindMessage message = new WorkbenchRemindMessage(); + try { + message.setGroupCode(relDept.getGroupNo()); + message.setLabCode(relDept.getBizLabCode()); + + } catch (Exception e) { + throw new ServiceException(500, user.getName() + "关联组织LabCode不存在,请联系管理员"); + } + message.setMessageType(MessageTypeEnum.CONFERENCE_RECORD.getCode()); + message.setRemindId(relUser.getUserId()); + message.setMessageSourceModule(MessageSourceModuleEnum.QUALITY.getCode()); + message.setBusinessId(record.getId()); + message.setMessageTopic(TopicConstants.CONFERENCE_RECORD); + message.setMessageContent(record.getFileName() + TopicConstants.WORKBENCH_REMIND); + message.setCreateTime(DateUtil.now()); + message.setStatus(0); + list.add(message); + } + + + return list; + } + + @Override + public void confirm(String id) { + AuthUser authUser = authService.getLoginUser(); + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.eq(BizQualityConferenceRelUser::getConferenceId, id); + query.eq(BizQualityConferenceRelUser::getUserId, authUser.getId()); + if (bizQualityConferenceRelUserService.count(query) > 0) { + LambdaUpdateWrapper update = new LambdaUpdateWrapper<>(); + update.eq(BizQualityConferenceRelUser::getConferenceId, id); + update.eq(BizQualityConferenceRelUser::getUserId, authUser.getId()); + update.set(BizQualityConferenceRelUser::getIsConfirm, 1); + bizQualityConferenceRelUserService.update(update); + } else { + throw new ServiceException(500, "当前用户未参会,请联系管理员"); + } + } + + @Override public boolean save(BizQualityConferenceRecord entity) { String format = DateUtil.formatDate(new Date()) + "-"; Long maxNo = baseMapper.selectMaxNo("biz_quality_conference_record", "file_code", format); @@ -74,7 +162,7 @@ } else if (entity.getRelType() == 3) { //管理评审 BizQualityManagementReview managementReview = reviewService.getById(entity.getTargetId()); - DefaultManageReviewRelFile defaultManageReviewRelFile = createManageReviewRelFile(managementReview,entity); + DefaultManageReviewRelFile defaultManageReviewRelFile = createManageReviewRelFile(managementReview, entity); reviewService.addBizQualityManagementReview(defaultManageReviewRelFile); } return true; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/quality/BizQualityConferenceRecordController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/quality/BizQualityConferenceRecordController.java index a05f783..46f54fc 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/quality/BizQualityConferenceRecordController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/quality/BizQualityConferenceRecordController.java @@ -136,10 +136,15 @@ @ApiOperation("通知参会人员-待完善") @GetMapping(value = "/pushUsers") public ReturnDTO pushUsers(@ApiParam("会议ID") String id) { - + bizQualityConferenceRecordService.pushUsers(id); return ReturnUtil.success(); } - + @ApiOperation("参会人员确认") + @GetMapping(value = "/confirm") + public ReturnDTO confirm(@ApiParam("会议ID") String id) { + bizQualityConferenceRecordService.confirm(id); + return ReturnUtil.success(); + } /** * 修改质量活动模板管理 */ diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java index 71a89f9..15ea8fa 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java @@ -19,7 +19,8 @@ WORKBENCH_REMIND_NOVELTY_SEARCH("15", "测试校准检定方法查新提醒"), WORKBENCH_REMIND_FILE_GRANT("16", "文件发放通知提醒"), WORKBENCH_CUSTOMER_QUESTIONNAIRE("17", "委托方满意度调查表"), - INTERNAL_AUDIT_PLAN("18", "内审计划工作提醒"); + INTERNAL_AUDIT_PLAN("18", "内审计划工作提醒"), + CONFERENCE_RECORD ("19", "会议确认提醒"); private String code; private String value; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/RemindTaskTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/RemindTaskTypeEnum.java index 65990ad..39c73b9 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/RemindTaskTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/RemindTaskTypeEnum.java @@ -24,4 +24,6 @@ String WORKBENCH_MONTH_MAINTAIN = "8"; //内审计划工作提醒 String AUDIT_PLAN_MAINTAIN = "9"; + //会议确认提醒 + String CONFERENCE_RECORD = "10"; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/TopicConstants.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/TopicConstants.java index 7d4fe26..68ef3f6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/TopicConstants.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/TopicConstants.java @@ -26,4 +26,5 @@ String INTERNAL_AUDIT_PLAN = "内审"; String WORKBENCH_REMIND = "工作提醒"; String WORKBENCH_REMIND_AUDIT = "内审计划工作提醒"; + String CONFERENCE_RECORD = "会议确认提醒"; } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/quality/BizQualityConferenceRecordServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/quality/BizQualityConferenceRecordServiceImpl.java index 587bdd7..1d3c2f9 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/quality/BizQualityConferenceRecordServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/quality/BizQualityConferenceRecordServiceImpl.java @@ -1,27 +1,36 @@ package com.casic.missiles.service.Impl.quality; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.constants.TopicConstants; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.dto.quality.QualitySelectDTO; import com.casic.missiles.dto.quality.QualityUserDTO; import com.casic.missiles.dto.quality.QualityUserInfoDTO; +import com.casic.missiles.enums.workbench.MessageSourceModuleEnum; +import com.casic.missiles.enums.workbench.MessageTypeEnum; import com.casic.missiles.mapper.quality.BizQualityConferenceRecordMapper; -import com.casic.missiles.model.quality.BizQualityConferenceRecord; -import com.casic.missiles.model.quality.BizQualityConferenceRelUser; -import com.casic.missiles.model.quality.BizQualityInternalAuditManagement; -import com.casic.missiles.model.quality.BizQualityManagementReview; +import com.casic.missiles.mapper.workbench.WorkbenchRemindMessageMapper; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.quality.*; import com.casic.missiles.model.quality.base.*; -import com.casic.missiles.service.quality.IBizQualityConferenceRecordService; -import com.casic.missiles.service.quality.IBizQualityConferenceRelUserService; -import com.casic.missiles.service.quality.IBizQualityInternalAuditManagementService; -import com.casic.missiles.service.quality.IBizQualityManagementReviewService; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; +import com.casic.missiles.modular.application.service.ICasicAuthService; +import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.service.quality.*; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; import java.io.Serializable; +import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.stream.Collectors; @@ -39,11 +48,22 @@ private final IBizQualityConferenceRelUserService bizQualityConferenceRelUserService; private final IBizQualityInternalAuditManagementService auditManagementService; private final IBizQualityManagementReviewService reviewService; + private final ICasicAuthService authService; + private final AbstractPermissionContext permissionContext; + @Resource + private IBizLabRelDeptService labRelDeptService; + /** + * 工作提醒 + */ + @Resource + private WorkbenchRemindMessageMapper messageMapper; - public BizQualityConferenceRecordServiceImpl(IBizQualityConferenceRelUserService bizQualityConferenceRelUserService, IBizQualityInternalAuditManagementService auditManagementService, @Lazy IBizQualityManagementReviewService reviewService) { + public BizQualityConferenceRecordServiceImpl(IBizQualityConferenceRelUserService bizQualityConferenceRelUserService, IBizQualityInternalAuditManagementService auditManagementService, @Lazy IBizQualityManagementReviewService reviewService, ICasicAuthService authService, AbstractPermissionContext permissionContext) { this.bizQualityConferenceRelUserService = bizQualityConferenceRelUserService; this.auditManagementService = auditManagementService; this.reviewService = reviewService; + this.authService = authService; + this.permissionContext = permissionContext; } @Override @@ -52,6 +72,74 @@ } @Override + public void pushUsers(String id) { + BizQualityConferenceRecord record = baseMapper.selectById(id); + if (record == null) { + throw new ServiceException(500, "请先保存会议信息"); + } + //读取参会人员信息 + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.eq(BizQualityConferenceRelUser::getConferenceId, id); + List users = bizQualityConferenceRelUserService.list(query); + + List remindMessages = createRemindMessage(users, record); + //创建工作提醒 + if (CollectionUtil.isNotEmpty(remindMessages)) { + for (WorkbenchRemindMessage remindMessage : remindMessages) { + messageMapper.insert(remindMessage); + } + } + + } + + private List createRemindMessage(List users, BizQualityConferenceRecord record) { + List list = new ArrayList<>(); + + for (BizQualityConferenceRelUser relUser : users) { + + User user = permissionContext.getUserService().getById(relUser.getUserId()); + BizLabRelDept relDept = labRelDeptService.getByDeptId(user.getDeptId() + ""); + WorkbenchRemindMessage message = new WorkbenchRemindMessage(); + try { + message.setGroupCode(relDept.getGroupNo()); + message.setLabCode(relDept.getBizLabCode()); + + } catch (Exception e) { + throw new ServiceException(500, user.getName() + "关联组织LabCode不存在,请联系管理员"); + } + message.setMessageType(MessageTypeEnum.CONFERENCE_RECORD.getCode()); + message.setRemindId(relUser.getUserId()); + message.setMessageSourceModule(MessageSourceModuleEnum.QUALITY.getCode()); + message.setBusinessId(record.getId()); + message.setMessageTopic(TopicConstants.CONFERENCE_RECORD); + message.setMessageContent(record.getFileName() + TopicConstants.WORKBENCH_REMIND); + message.setCreateTime(DateUtil.now()); + message.setStatus(0); + list.add(message); + } + + + return list; + } + + @Override + public void confirm(String id) { + AuthUser authUser = authService.getLoginUser(); + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.eq(BizQualityConferenceRelUser::getConferenceId, id); + query.eq(BizQualityConferenceRelUser::getUserId, authUser.getId()); + if (bizQualityConferenceRelUserService.count(query) > 0) { + LambdaUpdateWrapper update = new LambdaUpdateWrapper<>(); + update.eq(BizQualityConferenceRelUser::getConferenceId, id); + update.eq(BizQualityConferenceRelUser::getUserId, authUser.getId()); + update.set(BizQualityConferenceRelUser::getIsConfirm, 1); + bizQualityConferenceRelUserService.update(update); + } else { + throw new ServiceException(500, "当前用户未参会,请联系管理员"); + } + } + + @Override public boolean save(BizQualityConferenceRecord entity) { String format = DateUtil.formatDate(new Date()) + "-"; Long maxNo = baseMapper.selectMaxNo("biz_quality_conference_record", "file_code", format); @@ -74,7 +162,7 @@ } else if (entity.getRelType() == 3) { //管理评审 BizQualityManagementReview managementReview = reviewService.getById(entity.getTargetId()); - DefaultManageReviewRelFile defaultManageReviewRelFile = createManageReviewRelFile(managementReview,entity); + DefaultManageReviewRelFile defaultManageReviewRelFile = createManageReviewRelFile(managementReview, entity); reviewService.addBizQualityManagementReview(defaultManageReviewRelFile); } return true; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/quality/BizQualityInternalAuditPlanServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/quality/BizQualityInternalAuditPlanServiceImpl.java index 86c63a3..e94c251 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/quality/BizQualityInternalAuditPlanServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/quality/BizQualityInternalAuditPlanServiceImpl.java @@ -251,7 +251,7 @@ } catch (Exception e) { throw new ServiceException(500, user.getName() + "关联组织LabCode不存在,请联系管理员"); } - message.setRemindId(bizQualityInternalPlanUser.getId()); + message.setRemindId(bizQualityInternalPlanUser.getUserId()); message.setMessageType(MessageTypeEnum.INTERNAL_AUDIT_PLAN.getCode()); message.setMessageSourceModule(MessageSourceModuleEnum.QUALITY.getCode()); diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/quality/BizQualityConferenceRecordController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/quality/BizQualityConferenceRecordController.java index a05f783..46f54fc 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/quality/BizQualityConferenceRecordController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/quality/BizQualityConferenceRecordController.java @@ -136,10 +136,15 @@ @ApiOperation("通知参会人员-待完善") @GetMapping(value = "/pushUsers") public ReturnDTO pushUsers(@ApiParam("会议ID") String id) { - + bizQualityConferenceRecordService.pushUsers(id); return ReturnUtil.success(); } - + @ApiOperation("参会人员确认") + @GetMapping(value = "/confirm") + public ReturnDTO confirm(@ApiParam("会议ID") String id) { + bizQualityConferenceRecordService.confirm(id); + return ReturnUtil.success(); + } /** * 修改质量活动模板管理 */ diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java index 71a89f9..15ea8fa 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java @@ -19,7 +19,8 @@ WORKBENCH_REMIND_NOVELTY_SEARCH("15", "测试校准检定方法查新提醒"), WORKBENCH_REMIND_FILE_GRANT("16", "文件发放通知提醒"), WORKBENCH_CUSTOMER_QUESTIONNAIRE("17", "委托方满意度调查表"), - INTERNAL_AUDIT_PLAN("18", "内审计划工作提醒"); + INTERNAL_AUDIT_PLAN("18", "内审计划工作提醒"), + CONFERENCE_RECORD ("19", "会议确认提醒"); private String code; private String value; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/RemindTaskTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/RemindTaskTypeEnum.java index 65990ad..39c73b9 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/RemindTaskTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/RemindTaskTypeEnum.java @@ -24,4 +24,6 @@ String WORKBENCH_MONTH_MAINTAIN = "8"; //内审计划工作提醒 String AUDIT_PLAN_MAINTAIN = "9"; + //会议确认提醒 + String CONFERENCE_RECORD = "10"; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/TopicConstants.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/TopicConstants.java index 7d4fe26..68ef3f6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/TopicConstants.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/TopicConstants.java @@ -26,4 +26,5 @@ String INTERNAL_AUDIT_PLAN = "内审"; String WORKBENCH_REMIND = "工作提醒"; String WORKBENCH_REMIND_AUDIT = "内审计划工作提醒"; + String CONFERENCE_RECORD = "会议确认提醒"; } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/quality/BizQualityConferenceRecordServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/quality/BizQualityConferenceRecordServiceImpl.java index 587bdd7..1d3c2f9 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/quality/BizQualityConferenceRecordServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/quality/BizQualityConferenceRecordServiceImpl.java @@ -1,27 +1,36 @@ package com.casic.missiles.service.Impl.quality; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.constants.TopicConstants; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.dto.quality.QualitySelectDTO; import com.casic.missiles.dto.quality.QualityUserDTO; import com.casic.missiles.dto.quality.QualityUserInfoDTO; +import com.casic.missiles.enums.workbench.MessageSourceModuleEnum; +import com.casic.missiles.enums.workbench.MessageTypeEnum; import com.casic.missiles.mapper.quality.BizQualityConferenceRecordMapper; -import com.casic.missiles.model.quality.BizQualityConferenceRecord; -import com.casic.missiles.model.quality.BizQualityConferenceRelUser; -import com.casic.missiles.model.quality.BizQualityInternalAuditManagement; -import com.casic.missiles.model.quality.BizQualityManagementReview; +import com.casic.missiles.mapper.workbench.WorkbenchRemindMessageMapper; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.quality.*; import com.casic.missiles.model.quality.base.*; -import com.casic.missiles.service.quality.IBizQualityConferenceRecordService; -import com.casic.missiles.service.quality.IBizQualityConferenceRelUserService; -import com.casic.missiles.service.quality.IBizQualityInternalAuditManagementService; -import com.casic.missiles.service.quality.IBizQualityManagementReviewService; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; +import com.casic.missiles.modular.application.service.ICasicAuthService; +import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.service.quality.*; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; import java.io.Serializable; +import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.stream.Collectors; @@ -39,11 +48,22 @@ private final IBizQualityConferenceRelUserService bizQualityConferenceRelUserService; private final IBizQualityInternalAuditManagementService auditManagementService; private final IBizQualityManagementReviewService reviewService; + private final ICasicAuthService authService; + private final AbstractPermissionContext permissionContext; + @Resource + private IBizLabRelDeptService labRelDeptService; + /** + * 工作提醒 + */ + @Resource + private WorkbenchRemindMessageMapper messageMapper; - public BizQualityConferenceRecordServiceImpl(IBizQualityConferenceRelUserService bizQualityConferenceRelUserService, IBizQualityInternalAuditManagementService auditManagementService, @Lazy IBizQualityManagementReviewService reviewService) { + public BizQualityConferenceRecordServiceImpl(IBizQualityConferenceRelUserService bizQualityConferenceRelUserService, IBizQualityInternalAuditManagementService auditManagementService, @Lazy IBizQualityManagementReviewService reviewService, ICasicAuthService authService, AbstractPermissionContext permissionContext) { this.bizQualityConferenceRelUserService = bizQualityConferenceRelUserService; this.auditManagementService = auditManagementService; this.reviewService = reviewService; + this.authService = authService; + this.permissionContext = permissionContext; } @Override @@ -52,6 +72,74 @@ } @Override + public void pushUsers(String id) { + BizQualityConferenceRecord record = baseMapper.selectById(id); + if (record == null) { + throw new ServiceException(500, "请先保存会议信息"); + } + //读取参会人员信息 + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.eq(BizQualityConferenceRelUser::getConferenceId, id); + List users = bizQualityConferenceRelUserService.list(query); + + List remindMessages = createRemindMessage(users, record); + //创建工作提醒 + if (CollectionUtil.isNotEmpty(remindMessages)) { + for (WorkbenchRemindMessage remindMessage : remindMessages) { + messageMapper.insert(remindMessage); + } + } + + } + + private List createRemindMessage(List users, BizQualityConferenceRecord record) { + List list = new ArrayList<>(); + + for (BizQualityConferenceRelUser relUser : users) { + + User user = permissionContext.getUserService().getById(relUser.getUserId()); + BizLabRelDept relDept = labRelDeptService.getByDeptId(user.getDeptId() + ""); + WorkbenchRemindMessage message = new WorkbenchRemindMessage(); + try { + message.setGroupCode(relDept.getGroupNo()); + message.setLabCode(relDept.getBizLabCode()); + + } catch (Exception e) { + throw new ServiceException(500, user.getName() + "关联组织LabCode不存在,请联系管理员"); + } + message.setMessageType(MessageTypeEnum.CONFERENCE_RECORD.getCode()); + message.setRemindId(relUser.getUserId()); + message.setMessageSourceModule(MessageSourceModuleEnum.QUALITY.getCode()); + message.setBusinessId(record.getId()); + message.setMessageTopic(TopicConstants.CONFERENCE_RECORD); + message.setMessageContent(record.getFileName() + TopicConstants.WORKBENCH_REMIND); + message.setCreateTime(DateUtil.now()); + message.setStatus(0); + list.add(message); + } + + + return list; + } + + @Override + public void confirm(String id) { + AuthUser authUser = authService.getLoginUser(); + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.eq(BizQualityConferenceRelUser::getConferenceId, id); + query.eq(BizQualityConferenceRelUser::getUserId, authUser.getId()); + if (bizQualityConferenceRelUserService.count(query) > 0) { + LambdaUpdateWrapper update = new LambdaUpdateWrapper<>(); + update.eq(BizQualityConferenceRelUser::getConferenceId, id); + update.eq(BizQualityConferenceRelUser::getUserId, authUser.getId()); + update.set(BizQualityConferenceRelUser::getIsConfirm, 1); + bizQualityConferenceRelUserService.update(update); + } else { + throw new ServiceException(500, "当前用户未参会,请联系管理员"); + } + } + + @Override public boolean save(BizQualityConferenceRecord entity) { String format = DateUtil.formatDate(new Date()) + "-"; Long maxNo = baseMapper.selectMaxNo("biz_quality_conference_record", "file_code", format); @@ -74,7 +162,7 @@ } else if (entity.getRelType() == 3) { //管理评审 BizQualityManagementReview managementReview = reviewService.getById(entity.getTargetId()); - DefaultManageReviewRelFile defaultManageReviewRelFile = createManageReviewRelFile(managementReview,entity); + DefaultManageReviewRelFile defaultManageReviewRelFile = createManageReviewRelFile(managementReview, entity); reviewService.addBizQualityManagementReview(defaultManageReviewRelFile); } return true; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/quality/BizQualityInternalAuditPlanServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/quality/BizQualityInternalAuditPlanServiceImpl.java index 86c63a3..e94c251 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/quality/BizQualityInternalAuditPlanServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/quality/BizQualityInternalAuditPlanServiceImpl.java @@ -251,7 +251,7 @@ } catch (Exception e) { throw new ServiceException(500, user.getName() + "关联组织LabCode不存在,请联系管理员"); } - message.setRemindId(bizQualityInternalPlanUser.getId()); + message.setRemindId(bizQualityInternalPlanUser.getUserId()); message.setMessageType(MessageTypeEnum.INTERNAL_AUDIT_PLAN.getCode()); message.setMessageSourceModule(MessageSourceModuleEnum.QUALITY.getCode()); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/workbench/BizWorkbenchServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/workbench/BizWorkbenchServiceImpl.java index 6bbf8a0..b330eb7 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/workbench/BizWorkbenchServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/workbench/BizWorkbenchServiceImpl.java @@ -407,7 +407,7 @@ handleRemindMessageByLabRel(labRelDept, messageList, RemindTaskTypeEnum.WORKBENCH_WEEK_MAINTAIN); handleRemindMessageByLabRel(labRelDept, messageList, RemindTaskTypeEnum.WORKBENCH_MONTH_MAINTAIN); handleRemindMessageByLabRel(labRelDept, messageList, RemindTaskTypeEnum.AUDIT_PLAN_MAINTAIN); - + handleRemindMessageByLabRel(labRelDept, messageList, RemindTaskTypeEnum.CONFERENCE_RECORD); this.selectCustomerAndInsertMessage(labRelDept, messageList); } return ReturnUtil.success(messageList); @@ -465,6 +465,15 @@ } } + private void selectConferenceRecordList(BizLabRelDept labRelDept, List messageList) { + QueryWrapper trainWrapper = getQueryWrapper(labRelDept, MessageTypeEnum.CONFERENCE_RECORD.getCode()); + List trainList = remindMessageMapper.selectList(trainWrapper); + if (!CollectionUtils.isEmpty(trainList)) { + WorkbenchRemindMessage build = trainList.get(0); + List buildList1 = trainList.stream().filter(s -> s.getBusinessId().equals(build.getBusinessId())).collect(Collectors.toList()); + messageList.addAll(buildList1); + } + } private void selectAuditPlanList(BizLabRelDept labRelDept, List messageList) { QueryWrapper trainWrapper = getQueryWrapper(labRelDept, MessageTypeEnum.INTERNAL_AUDIT_PLAN.getCode()); List trainList = remindMessageMapper.selectList(trainWrapper); @@ -514,14 +523,15 @@ SystemRemind systemRemind = systemRemindMapper.selectOne(remindQueryWrapper); if (Objects.isNull(systemRemind) && !RemindTaskTypeEnum.WORKBENCH_WEEK_MAINTAIN.equals(taskType) && !RemindTaskTypeEnum.WORKBENCH_MONTH_MAINTAIN.equals(taskType) - && !RemindTaskTypeEnum.EQUIPMENT_CHECK.equals(taskType)&& !RemindTaskTypeEnum.AUDIT_PLAN_MAINTAIN.equals(taskType)) { + && !RemindTaskTypeEnum.EQUIPMENT_CHECK.equals(taskType)&& !RemindTaskTypeEnum.AUDIT_PLAN_MAINTAIN.equals(taskType) + && !RemindTaskTypeEnum.CONFERENCE_RECORD.equals(taskType)) { return; } boolean flag = false; //标准设备核查提醒、周维护提醒、月保养提醒与到期提醒管理配置无关 if (RemindTaskTypeEnum.WORKBENCH_WEEK_MAINTAIN.equals(taskType) || RemindTaskTypeEnum.WORKBENCH_MONTH_MAINTAIN.equals(taskType) - || RemindTaskTypeEnum.EQUIPMENT_CHECK.equals(taskType)|| RemindTaskTypeEnum.AUDIT_PLAN_MAINTAIN.equals(taskType)) { + || RemindTaskTypeEnum.EQUIPMENT_CHECK.equals(taskType)|| RemindTaskTypeEnum.AUDIT_PLAN_MAINTAIN.equals(taskType)|| RemindTaskTypeEnum.CONFERENCE_RECORD.equals(taskType)) { flag = true; } else if (Objects.nonNull(systemRemind)) { String remindScope = systemRemind.getRemindScope(); @@ -562,6 +572,9 @@ case RemindTaskTypeEnum.AUDIT_PLAN_MAINTAIN: selectAuditPlanList(labRelDept, messageList); break; + case RemindTaskTypeEnum.CONFERENCE_RECORD: + selectConferenceRecordList(labRelDept, messageList); + break; default: break; } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/quality/BizQualityConferenceRecordController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/quality/BizQualityConferenceRecordController.java index a05f783..46f54fc 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/quality/BizQualityConferenceRecordController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/quality/BizQualityConferenceRecordController.java @@ -136,10 +136,15 @@ @ApiOperation("通知参会人员-待完善") @GetMapping(value = "/pushUsers") public ReturnDTO pushUsers(@ApiParam("会议ID") String id) { - + bizQualityConferenceRecordService.pushUsers(id); return ReturnUtil.success(); } - + @ApiOperation("参会人员确认") + @GetMapping(value = "/confirm") + public ReturnDTO confirm(@ApiParam("会议ID") String id) { + bizQualityConferenceRecordService.confirm(id); + return ReturnUtil.success(); + } /** * 修改质量活动模板管理 */ diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java index 71a89f9..15ea8fa 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/MessageTypeEnum.java @@ -19,7 +19,8 @@ WORKBENCH_REMIND_NOVELTY_SEARCH("15", "测试校准检定方法查新提醒"), WORKBENCH_REMIND_FILE_GRANT("16", "文件发放通知提醒"), WORKBENCH_CUSTOMER_QUESTIONNAIRE("17", "委托方满意度调查表"), - INTERNAL_AUDIT_PLAN("18", "内审计划工作提醒"); + INTERNAL_AUDIT_PLAN("18", "内审计划工作提醒"), + CONFERENCE_RECORD ("19", "会议确认提醒"); private String code; private String value; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/RemindTaskTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/RemindTaskTypeEnum.java index 65990ad..39c73b9 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/RemindTaskTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/workbench/RemindTaskTypeEnum.java @@ -24,4 +24,6 @@ String WORKBENCH_MONTH_MAINTAIN = "8"; //内审计划工作提醒 String AUDIT_PLAN_MAINTAIN = "9"; + //会议确认提醒 + String CONFERENCE_RECORD = "10"; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/TopicConstants.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/TopicConstants.java index 7d4fe26..68ef3f6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/TopicConstants.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/TopicConstants.java @@ -26,4 +26,5 @@ String INTERNAL_AUDIT_PLAN = "内审"; String WORKBENCH_REMIND = "工作提醒"; String WORKBENCH_REMIND_AUDIT = "内审计划工作提醒"; + String CONFERENCE_RECORD = "会议确认提醒"; } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/quality/BizQualityConferenceRecordServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/quality/BizQualityConferenceRecordServiceImpl.java index 587bdd7..1d3c2f9 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/quality/BizQualityConferenceRecordServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/quality/BizQualityConferenceRecordServiceImpl.java @@ -1,27 +1,36 @@ package com.casic.missiles.service.Impl.quality; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.constants.TopicConstants; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.dto.quality.QualitySelectDTO; import com.casic.missiles.dto.quality.QualityUserDTO; import com.casic.missiles.dto.quality.QualityUserInfoDTO; +import com.casic.missiles.enums.workbench.MessageSourceModuleEnum; +import com.casic.missiles.enums.workbench.MessageTypeEnum; import com.casic.missiles.mapper.quality.BizQualityConferenceRecordMapper; -import com.casic.missiles.model.quality.BizQualityConferenceRecord; -import com.casic.missiles.model.quality.BizQualityConferenceRelUser; -import com.casic.missiles.model.quality.BizQualityInternalAuditManagement; -import com.casic.missiles.model.quality.BizQualityManagementReview; +import com.casic.missiles.mapper.workbench.WorkbenchRemindMessageMapper; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.quality.*; import com.casic.missiles.model.quality.base.*; -import com.casic.missiles.service.quality.IBizQualityConferenceRecordService; -import com.casic.missiles.service.quality.IBizQualityConferenceRelUserService; -import com.casic.missiles.service.quality.IBizQualityInternalAuditManagementService; -import com.casic.missiles.service.quality.IBizQualityManagementReviewService; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; +import com.casic.missiles.modular.application.service.ICasicAuthService; +import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.service.quality.*; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; import java.io.Serializable; +import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.stream.Collectors; @@ -39,11 +48,22 @@ private final IBizQualityConferenceRelUserService bizQualityConferenceRelUserService; private final IBizQualityInternalAuditManagementService auditManagementService; private final IBizQualityManagementReviewService reviewService; + private final ICasicAuthService authService; + private final AbstractPermissionContext permissionContext; + @Resource + private IBizLabRelDeptService labRelDeptService; + /** + * 工作提醒 + */ + @Resource + private WorkbenchRemindMessageMapper messageMapper; - public BizQualityConferenceRecordServiceImpl(IBizQualityConferenceRelUserService bizQualityConferenceRelUserService, IBizQualityInternalAuditManagementService auditManagementService, @Lazy IBizQualityManagementReviewService reviewService) { + public BizQualityConferenceRecordServiceImpl(IBizQualityConferenceRelUserService bizQualityConferenceRelUserService, IBizQualityInternalAuditManagementService auditManagementService, @Lazy IBizQualityManagementReviewService reviewService, ICasicAuthService authService, AbstractPermissionContext permissionContext) { this.bizQualityConferenceRelUserService = bizQualityConferenceRelUserService; this.auditManagementService = auditManagementService; this.reviewService = reviewService; + this.authService = authService; + this.permissionContext = permissionContext; } @Override @@ -52,6 +72,74 @@ } @Override + public void pushUsers(String id) { + BizQualityConferenceRecord record = baseMapper.selectById(id); + if (record == null) { + throw new ServiceException(500, "请先保存会议信息"); + } + //读取参会人员信息 + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.eq(BizQualityConferenceRelUser::getConferenceId, id); + List users = bizQualityConferenceRelUserService.list(query); + + List remindMessages = createRemindMessage(users, record); + //创建工作提醒 + if (CollectionUtil.isNotEmpty(remindMessages)) { + for (WorkbenchRemindMessage remindMessage : remindMessages) { + messageMapper.insert(remindMessage); + } + } + + } + + private List createRemindMessage(List users, BizQualityConferenceRecord record) { + List list = new ArrayList<>(); + + for (BizQualityConferenceRelUser relUser : users) { + + User user = permissionContext.getUserService().getById(relUser.getUserId()); + BizLabRelDept relDept = labRelDeptService.getByDeptId(user.getDeptId() + ""); + WorkbenchRemindMessage message = new WorkbenchRemindMessage(); + try { + message.setGroupCode(relDept.getGroupNo()); + message.setLabCode(relDept.getBizLabCode()); + + } catch (Exception e) { + throw new ServiceException(500, user.getName() + "关联组织LabCode不存在,请联系管理员"); + } + message.setMessageType(MessageTypeEnum.CONFERENCE_RECORD.getCode()); + message.setRemindId(relUser.getUserId()); + message.setMessageSourceModule(MessageSourceModuleEnum.QUALITY.getCode()); + message.setBusinessId(record.getId()); + message.setMessageTopic(TopicConstants.CONFERENCE_RECORD); + message.setMessageContent(record.getFileName() + TopicConstants.WORKBENCH_REMIND); + message.setCreateTime(DateUtil.now()); + message.setStatus(0); + list.add(message); + } + + + return list; + } + + @Override + public void confirm(String id) { + AuthUser authUser = authService.getLoginUser(); + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.eq(BizQualityConferenceRelUser::getConferenceId, id); + query.eq(BizQualityConferenceRelUser::getUserId, authUser.getId()); + if (bizQualityConferenceRelUserService.count(query) > 0) { + LambdaUpdateWrapper update = new LambdaUpdateWrapper<>(); + update.eq(BizQualityConferenceRelUser::getConferenceId, id); + update.eq(BizQualityConferenceRelUser::getUserId, authUser.getId()); + update.set(BizQualityConferenceRelUser::getIsConfirm, 1); + bizQualityConferenceRelUserService.update(update); + } else { + throw new ServiceException(500, "当前用户未参会,请联系管理员"); + } + } + + @Override public boolean save(BizQualityConferenceRecord entity) { String format = DateUtil.formatDate(new Date()) + "-"; Long maxNo = baseMapper.selectMaxNo("biz_quality_conference_record", "file_code", format); @@ -74,7 +162,7 @@ } else if (entity.getRelType() == 3) { //管理评审 BizQualityManagementReview managementReview = reviewService.getById(entity.getTargetId()); - DefaultManageReviewRelFile defaultManageReviewRelFile = createManageReviewRelFile(managementReview,entity); + DefaultManageReviewRelFile defaultManageReviewRelFile = createManageReviewRelFile(managementReview, entity); reviewService.addBizQualityManagementReview(defaultManageReviewRelFile); } return true; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/quality/BizQualityInternalAuditPlanServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/quality/BizQualityInternalAuditPlanServiceImpl.java index 86c63a3..e94c251 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/quality/BizQualityInternalAuditPlanServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/quality/BizQualityInternalAuditPlanServiceImpl.java @@ -251,7 +251,7 @@ } catch (Exception e) { throw new ServiceException(500, user.getName() + "关联组织LabCode不存在,请联系管理员"); } - message.setRemindId(bizQualityInternalPlanUser.getId()); + message.setRemindId(bizQualityInternalPlanUser.getUserId()); message.setMessageType(MessageTypeEnum.INTERNAL_AUDIT_PLAN.getCode()); message.setMessageSourceModule(MessageSourceModuleEnum.QUALITY.getCode()); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/workbench/BizWorkbenchServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/workbench/BizWorkbenchServiceImpl.java index 6bbf8a0..b330eb7 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/workbench/BizWorkbenchServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/workbench/BizWorkbenchServiceImpl.java @@ -407,7 +407,7 @@ handleRemindMessageByLabRel(labRelDept, messageList, RemindTaskTypeEnum.WORKBENCH_WEEK_MAINTAIN); handleRemindMessageByLabRel(labRelDept, messageList, RemindTaskTypeEnum.WORKBENCH_MONTH_MAINTAIN); handleRemindMessageByLabRel(labRelDept, messageList, RemindTaskTypeEnum.AUDIT_PLAN_MAINTAIN); - + handleRemindMessageByLabRel(labRelDept, messageList, RemindTaskTypeEnum.CONFERENCE_RECORD); this.selectCustomerAndInsertMessage(labRelDept, messageList); } return ReturnUtil.success(messageList); @@ -465,6 +465,15 @@ } } + private void selectConferenceRecordList(BizLabRelDept labRelDept, List messageList) { + QueryWrapper trainWrapper = getQueryWrapper(labRelDept, MessageTypeEnum.CONFERENCE_RECORD.getCode()); + List trainList = remindMessageMapper.selectList(trainWrapper); + if (!CollectionUtils.isEmpty(trainList)) { + WorkbenchRemindMessage build = trainList.get(0); + List buildList1 = trainList.stream().filter(s -> s.getBusinessId().equals(build.getBusinessId())).collect(Collectors.toList()); + messageList.addAll(buildList1); + } + } private void selectAuditPlanList(BizLabRelDept labRelDept, List messageList) { QueryWrapper trainWrapper = getQueryWrapper(labRelDept, MessageTypeEnum.INTERNAL_AUDIT_PLAN.getCode()); List trainList = remindMessageMapper.selectList(trainWrapper); @@ -514,14 +523,15 @@ SystemRemind systemRemind = systemRemindMapper.selectOne(remindQueryWrapper); if (Objects.isNull(systemRemind) && !RemindTaskTypeEnum.WORKBENCH_WEEK_MAINTAIN.equals(taskType) && !RemindTaskTypeEnum.WORKBENCH_MONTH_MAINTAIN.equals(taskType) - && !RemindTaskTypeEnum.EQUIPMENT_CHECK.equals(taskType)&& !RemindTaskTypeEnum.AUDIT_PLAN_MAINTAIN.equals(taskType)) { + && !RemindTaskTypeEnum.EQUIPMENT_CHECK.equals(taskType)&& !RemindTaskTypeEnum.AUDIT_PLAN_MAINTAIN.equals(taskType) + && !RemindTaskTypeEnum.CONFERENCE_RECORD.equals(taskType)) { return; } boolean flag = false; //标准设备核查提醒、周维护提醒、月保养提醒与到期提醒管理配置无关 if (RemindTaskTypeEnum.WORKBENCH_WEEK_MAINTAIN.equals(taskType) || RemindTaskTypeEnum.WORKBENCH_MONTH_MAINTAIN.equals(taskType) - || RemindTaskTypeEnum.EQUIPMENT_CHECK.equals(taskType)|| RemindTaskTypeEnum.AUDIT_PLAN_MAINTAIN.equals(taskType)) { + || RemindTaskTypeEnum.EQUIPMENT_CHECK.equals(taskType)|| RemindTaskTypeEnum.AUDIT_PLAN_MAINTAIN.equals(taskType)|| RemindTaskTypeEnum.CONFERENCE_RECORD.equals(taskType)) { flag = true; } else if (Objects.nonNull(systemRemind)) { String remindScope = systemRemind.getRemindScope(); @@ -562,6 +572,9 @@ case RemindTaskTypeEnum.AUDIT_PLAN_MAINTAIN: selectAuditPlanList(labRelDept, messageList); break; + case RemindTaskTypeEnum.CONFERENCE_RECORD: + selectConferenceRecordList(labRelDept, messageList); + break; default: break; } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/quality/IBizQualityConferenceRecordService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/quality/IBizQualityConferenceRecordService.java index c70636c..1088701 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/quality/IBizQualityConferenceRecordService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/quality/IBizQualityConferenceRecordService.java @@ -24,4 +24,12 @@ * @return */ List relWork(String type); + + /** + * 通知参会人员 + * @param id + */ + void pushUsers(String id); + + void confirm(String id); }