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 6f5d6a2..4774913 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 @@ -347,61 +347,21 @@ @Override @Transactional public ReturnDTO list(WorkbenchCommonRequest request) { -// AuthUser user = ShiroKit.getUser(); -// Assert.isFalse(Objects.isNull(user), () -> { -// throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); -// }); -// Long userId = user.getId(); -// Map resultMap = SysDeptAndUserUtil.getDirectDeptByUserId(userId); -// if (!CollectionUtils.isEmpty(resultMap) && Objects.nonNull(resultMap.get("deptId"))) { -// Long deptId = (Long) resultMap.get("deptId"); -// if (deptId != null) { -// BizLabRelDept labRelDept = labRelDeptService.getByDeptId(String.valueOf(deptId)); -// if (labRelDept != null) { -// String labCode = labRelDept.getBizLabCode(); -// String groupNo = labRelDept.getGroupNo(); -// if (StringUtils.isNotBlank(labCode) && StringUtils.isNotBlank(groupNo)) { -// request.setLabCode(labCode); -// } -// } -// } -// } -// QueryWrapper remindQueryWrapper = new QueryWrapper<>(); -// remindQueryWrapper.eq("lab_code",request.getLabCode()); -// remindQueryWrapper.eq("task_type","0"); -// SystemRemind systemRemind = systemRemindMapper.selectOne(remindQueryWrapper); -// String remindScope = systemRemind.getRemindScope(); -// String[] split = remindScope.split("[,]"); -// List scopes = Arrays.asList(split); -// if (scopes.contains("综合管理组")){ -// -// } - QueryWrapper queryWrapper = getQueryWrapper(request, MessageTypeEnum.WORKBENCH_REMIND_ORDER.getCode()); - List orderList = remindMessageMapper.selectList(queryWrapper); - QueryWrapper equipmentWrapper = getQueryWrapper(request, MessageTypeEnum.WORKBENCH_REMIND_EQUIPMENT.getCode()); - List equipmentList = remindMessageMapper.selectList(equipmentWrapper); - QueryWrapper standardWrapper = getQueryWrapper(request, MessageTypeEnum.WORKBENCH_REMIND_STANDARD.getCode()); - List standardList = remindMessageMapper.selectList(standardWrapper); - QueryWrapper staffWrapper = getQueryWrapper(request, MessageTypeEnum.WORKBENCH_REMIND_STAFF.getCode()); - List staffList = remindMessageMapper.selectList(staffWrapper); List messageList = new ArrayList<>(); - if (!CollectionUtils.isEmpty(orderList)) { - WorkbenchRemindMessage order = orderList.get(0); - List orderList1 = orderList.stream().filter(o -> o.getBusinessId().equals(order.getBusinessId()) - && o.getRelationBusinessId().equals(order.getRelationBusinessId())) - .collect(Collectors.toList()); - messageList.addAll(orderList1); + BizLabRelDept labRelDept = handleWorkUserTypeRequest(); + if (labRelDept != null) { + handleRemindMessageByLabRel(labRelDept, messageList, "0"); + handleRemindMessageByLabRel(labRelDept, messageList, "1"); + handleRemindMessageByLabRel(labRelDept, messageList, "2"); + handleRemindMessageByLabRel(labRelDept, messageList, "3"); + this.selectCustomerAndInsertMessage(labRelDept, messageList); } - if (!CollectionUtils.isEmpty(equipmentList)) { - WorkbenchRemindMessage equipment = equipmentList.get(0); - List equipmentList1 = equipmentList.stream().filter(e -> e.getBusinessId().equals(equipment.getBusinessId())).collect(Collectors.toList()); - messageList.addAll(equipmentList1); - } - if (!CollectionUtils.isEmpty(standardList)) { - WorkbenchRemindMessage standard = standardList.get(0); - List standardList1 = standardList.stream().filter(s -> s.getBusinessId().equals(standard.getBusinessId())).collect(Collectors.toList()); - messageList.addAll(standardList1); - } + return ReturnUtil.success(messageList); + } + + private void selectStaffList(BizLabRelDept labRelDept, List messageList) { + QueryWrapper staffWrapper = getQueryWrapper(labRelDept, MessageTypeEnum.WORKBENCH_REMIND_STAFF.getCode()); + List staffList = remindMessageMapper.selectList(staffWrapper); if (!CollectionUtils.isEmpty(staffList)) { WorkbenchRemindMessage staff = staffList.get(0); List staffList1 = staffList.stream().filter(s -> s.getBusinessId().equals(staff.getBusinessId()) @@ -409,47 +369,141 @@ .collect(Collectors.toList()); messageList.addAll(staffList1); } - this.selectCustomerAndInsertMessage(request, messageList); - return ReturnUtil.success(messageList); } - private void selectCustomerAndInsertMessage(WorkbenchCommonRequest request, List messageList) { - QueryWrapper messageQueryWrapper = new QueryWrapper<>(); - messageQueryWrapper.eq("message_type", MessageTypeEnum.WORKBENCH_REMIND_CONSUMER.getCode()); - messageQueryWrapper.eq("message_source_module", MessageSourceModuleEnum.RESOURCE); - List remindMessageList = remindMessageMapper.selectList(messageQueryWrapper); - List notRead = remindMessageList.stream().filter(remindMessage -> 0 == remindMessage.getStatus()).collect(Collectors.toList()); - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.eq(BizResourceCustomerSuggestForm::getHandleStatus, "0"); - List formList = customerSuggestFormMapper.selectList(lambdaQueryWrapper); - List ids = notRead.stream().map(WorkbenchRemindMessage::getBusinessId).collect(Collectors.toList()); - List suggestForms = formList.stream().filter(form -> !ids.contains(form.getId())).collect(Collectors.toList()); - for (BizResourceCustomerSuggestForm suggestForm : suggestForms) { - WorkbenchRemindMessage message = new WorkbenchRemindMessage(); - message.setLabCode(suggestForm.getLabCode()); - message.setMessageType(MessageTypeEnum.WORKBENCH_REMIND_CONSUMER.getCode()); - message.setMessageSourceModule(MessageSourceModuleEnum.RESOURCE.getCode()); - message.setBusinessId(suggestForm.getId()); - message.setMessageTopic(TopicConstants.CONSUMER_SUGGEST_REMIND); - message.setMessageContent(suggestForm.getCustomerName() + "有反馈"); - message.setCreateTime(DateUtil.now()); - message.setStatus(0); - remindMessageMapper.insert(message); + private void selectStandardList(BizLabRelDept labRelDept, List messageList) { + QueryWrapper standardWrapper = getQueryWrapper(labRelDept, MessageTypeEnum.WORKBENCH_REMIND_STANDARD.getCode()); + List standardList = remindMessageMapper.selectList(standardWrapper); + if (!CollectionUtils.isEmpty(standardList)) { + WorkbenchRemindMessage standard = standardList.get(0); + List standardList1 = standardList.stream().filter(s -> s.getBusinessId().equals(standard.getBusinessId())).collect(Collectors.toList()); + messageList.addAll(standardList1); } - QueryWrapper queryWrapper = getQueryWrapper(request, MessageTypeEnum.WORKBENCH_REMIND_CONSUMER.getCode()); - List customerList = remindMessageMapper.selectList(queryWrapper); - if (!CollectionUtils.isEmpty(customerList)) { - WorkbenchRemindMessage customer = customerList.get(0); - List staffList1 = customerList.stream().filter(s -> s.getMessageTopic().equals(customer.getMessageTopic())) + } + + private void selectEquipmentList(BizLabRelDept labRelDept, List messageList) { + QueryWrapper equipmentWrapper = getQueryWrapper(labRelDept, MessageTypeEnum.WORKBENCH_REMIND_EQUIPMENT.getCode()); + List equipmentList = remindMessageMapper.selectList(equipmentWrapper); + if (!CollectionUtils.isEmpty(equipmentList)) { + WorkbenchRemindMessage equipment = equipmentList.get(0); + List equipmentList1 = equipmentList.stream().filter(e -> e.getBusinessId().equals(equipment.getBusinessId())).collect(Collectors.toList()); + messageList.addAll(equipmentList1); + } + } + + private void handleRemindMessageByLabRel(BizLabRelDept labRelDept, List messageList, String taskType) { + //根据用户 + if (labRelDept != null) { + QueryWrapper remindQueryWrapper = new QueryWrapper<>(); + remindQueryWrapper.eq("lab_code", labRelDept.getBizLabCode()); + remindQueryWrapper.eq("task_type", taskType); + SystemRemind systemRemind = systemRemindMapper.selectOne(remindQueryWrapper); + String remindScope = systemRemind.getRemindScope(); + String[] split = remindScope.split(","); + List scopes = Arrays.asList(split); + + if (this.isGroupCodeInScope(scopes, labRelDept)) { + switch (taskType) { + case "0": + selectOrderList(labRelDept, messageList); + break; + case "1": + selectEquipmentList(labRelDept, messageList); + break; + case "2": + selectStandardList(labRelDept, messageList); + break; + case "3": + selectStaffList(labRelDept, messageList); + break; + default: + break; + } + } + } + } + + private boolean isGroupCodeInScope(List scopes, BizLabRelDept labRelDept) { + for (String scope : scopes) { + if ("综合管理组".equals(scope) && "GL".equals(labRelDept.getGroupNo())) { + return true; + } + if ("所在部门全部人员".equals(scope) && !"GL".equals(labRelDept.getGroupNo())) { + return true; + } + } + return false; + } + + private BizLabRelDept handleWorkUserTypeRequest() { + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + Long userId = user.getId(); + Map resultMap = SysDeptAndUserUtil.getDirectDeptByUserId(userId); + if (!CollectionUtils.isEmpty(resultMap) && Objects.nonNull(resultMap.get("deptId"))) { + Long deptId = (Long) resultMap.get("deptId"); + if (deptId != null) { + return labRelDeptService.getByDeptId(String.valueOf(deptId)); + } + } + return null; + } + + private void selectOrderList(BizLabRelDept labRelDept, List messageList) { + QueryWrapper queryWrapper = getQueryWrapper(labRelDept, MessageTypeEnum.WORKBENCH_REMIND_ORDER.getCode()); + List orderList = remindMessageMapper.selectList(queryWrapper); + if (!CollectionUtils.isEmpty(orderList)) { + WorkbenchRemindMessage order = orderList.get(0); + List orderList1 = orderList.stream().filter(o -> o.getBusinessId().equals(order.getBusinessId()) + && o.getRelationBusinessId().equals(order.getRelationBusinessId())) .collect(Collectors.toList()); - messageList.addAll(staffList1); + messageList.addAll(orderList1); } } - private QueryWrapper getQueryWrapper(WorkbenchCommonRequest request, String code) { + private void selectCustomerAndInsertMessage(BizLabRelDept labRelDept, List messageList) { + if (StringUtils.isNotBlank(labRelDept.getGroupNo()) && "GL".equals(labRelDept.getGroupNo())) { + QueryWrapper messageQueryWrapper = new QueryWrapper<>(); + messageQueryWrapper.eq("message_type", MessageTypeEnum.WORKBENCH_REMIND_CONSUMER.getCode()); + messageQueryWrapper.eq("message_source_module", MessageSourceModuleEnum.RESOURCE); + List remindMessageList = remindMessageMapper.selectList(messageQueryWrapper); + List notRead = remindMessageList.stream().filter(remindMessage -> 0 == remindMessage.getStatus()).collect(Collectors.toList()); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(BizResourceCustomerSuggestForm::getHandleStatus, "0"); + List formList = customerSuggestFormMapper.selectList(lambdaQueryWrapper); + List ids = notRead.stream().map(WorkbenchRemindMessage::getBusinessId).collect(Collectors.toList()); + List suggestForms = formList.stream().filter(form -> !ids.contains(form.getId())).collect(Collectors.toList()); + for (BizResourceCustomerSuggestForm suggestForm : suggestForms) { + WorkbenchRemindMessage message = new WorkbenchRemindMessage(); + message.setLabCode(suggestForm.getLabCode()); + message.setMessageType(MessageTypeEnum.WORKBENCH_REMIND_CONSUMER.getCode()); + message.setMessageSourceModule(MessageSourceModuleEnum.RESOURCE.getCode()); + message.setBusinessId(suggestForm.getId()); + message.setMessageTopic(TopicConstants.CONSUMER_SUGGEST_REMIND); + message.setMessageContent(suggestForm.getCustomerName() + "有反馈"); + message.setCreateTime(DateUtil.now()); + message.setStatus(0); + remindMessageMapper.insert(message); + } + QueryWrapper queryWrapper = getQueryWrapper(labRelDept, MessageTypeEnum.WORKBENCH_REMIND_CONSUMER.getCode()); + List customerList = remindMessageMapper.selectList(queryWrapper); + if (!CollectionUtils.isEmpty(customerList)) { + WorkbenchRemindMessage customer = customerList.get(0); + List staffList1 = customerList.stream().filter(s -> s.getMessageTopic().equals(customer.getMessageTopic())) + .collect(Collectors.toList()); + messageList.addAll(staffList1); + } + } + } + + private QueryWrapper getQueryWrapper(BizLabRelDept labRelDept, String code) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq(StringUtils.isNotBlank(request.getLabCode()), "lab_code", request.getLabCode()); - queryWrapper.eq(StringUtils.isNotBlank(request.getGroupCode()), "group_code", request.getGroupCode()); + queryWrapper.eq(StringUtils.isNotBlank(labRelDept.getBizLabCode()), "lab_code", labRelDept.getBizLabCode()); + if (StringUtils.isNotBlank(labRelDept.getGroupNo()) && !"GL".equals(labRelDept.getGroupNo())) { + queryWrapper.eq("group_code", labRelDept.getGroupNo()); + } queryWrapper.eq("status", "0"); queryWrapper.eq("message_type", code); queryWrapper.orderByDesc("create_time");