package com.qianwen.smartman.modules.notify.service.impl; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.CopyOnWriteArrayList; import java.util.stream.Collectors; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.qianwen.core.context.task.TaskExecutionContext; import com.qianwen.core.context.task.TaskExecutorTypeEnum; import com.qianwen.core.notify.DefaultNotifyType; import com.qianwen.core.notify.executor.INotifyTaskService; import com.qianwen.core.notify.executor.NotifyDirectSendInfo; import com.qianwen.core.notify.executor.NotifyExecutionContext; import com.qianwen.core.notify.executor.RuleNotifierProperties; import com.qianwen.core.tool.utils.BeanUtil; import com.qianwen.core.tool.utils.Func; import com.qianwen.smartman.modules.cps.service.IEmployeeService; import com.qianwen.smartman.modules.notify.convert.BusinessNotifyConvert; import com.qianwen.smartman.modules.notify.dto.BusinessNotifyDTO; import com.qianwen.smartman.modules.notify.dto.NotifyUserDTO; import com.qianwen.smartman.modules.notify.entity.BusinessNotify; import com.qianwen.smartman.modules.notify.mapper.BusinessNotifyMapper; import com.qianwen.smartman.modules.notify.service.IBusinessNotifyService; import com.qianwen.smartman.modules.system.service.IUserOauthService; import com.qianwen.smartman.modules.system.service.IUserService; @Service /* loaded from: blade-api.jar:BOOT-INF/classes/org/springblade/modules/notify/service/impl/NotifyTaskServiceImpl.class */ public class NotifyTaskServiceImpl implements INotifyTaskService { private static final Logger log = LoggerFactory.getLogger(NotifyTaskServiceImpl.class); private final IBusinessNotifyService businessNotifyService; private final BusinessNotifyMapper businessNotifyMapper; private final IUserService userService; private final IUserOauthService userOauthService; private final IEmployeeService employeeService; public NotifyTaskServiceImpl(final IBusinessNotifyService businessNotifyService, final BusinessNotifyMapper businessNotifyMapper, final IUserService userService, final IUserOauthService userOauthService, final IEmployeeService employeeService) { this.businessNotifyService = businessNotifyService; this.businessNotifyMapper = businessNotifyMapper; this.userService = userService; this.userOauthService = userOauthService; this.employeeService = employeeService; } private List getNotifySubscriberList(List notifySubscriberList, TaskExecutorTypeEnum taskExecutorTypeEnum) { List result; //没问题了,根据使用的service判断 switch (taskExecutorTypeEnum) { case EMPLOYEE://gui: email result = this.employeeService.getNotifySubscriberList(notifySubscriberList); break; default: result = this.userService.getNotifySubscriberList(notifySubscriberList); } /* switch (AnonymousClass1.$SwitchMap$org$springblade$core$context$task$TaskExecutorTypeEnum[taskExecutorTypeEnum.ordinal()]) { case 1: result = this.employeeService.getNotifySubscriberList(notifySubscriberList); break; case 2: default: result = this.userService.getNotifySubscriberList(notifySubscriberList); break; }*/ return result; } public List getNotifiedPartyList(String tenantId, String businessKey, String defaultNotifyType, List notifySubscriberList, TaskExecutorTypeEnum taskExecutorTypeEnum) { List result = new ArrayList<>(); if (Func.isNotEmpty(notifySubscriberList)) { List notifyUserDTOS = getNotifySubscriberList(notifySubscriberList, taskExecutorTypeEnum); switch (DefaultNotifyType.of(defaultNotifyType)) { case email: result.addAll(notifyUserDTOS.stream().map(NotifyUserDTO::getEmail).filter(Func::isNotEmpty).collect(Collectors.toList())); break; case sms: result.addAll(notifyUserDTOS.stream().map(NotifyUserDTO::getPhone).filter(Func::isNotEmpty).collect(Collectors.toList())); break; case weiXinMini: result.addAll(notifyUserDTOS.stream().map(NotifyUserDTO::getWeiXinMiniUserId).filter(Func::isNotEmpty).collect(Collectors.toList())); case internalMessage: default: result.addAll(notifyUserDTOS.stream().map(NotifyUserDTO::getUserId).map(Func::toStr).collect(Collectors.toList())); break; } /* switch (AnonymousClass1.$SwitchMap$org$springblade$core$notify$DefaultNotifyType[DefaultNotifyType.of(defaultNotifyType).ordinal()]) { case 1: result.addAll((Collection) notifyUserDTOS.stream().map((v0) -> { return v0.getEmail(); }).filter((v0) -> { return Func.isNotEmpty(v0); }).collect(Collectors.toList())); break; case 2: result.addAll((Collection) notifyUserDTOS.stream().map((v0) -> { return v0.getPhone(); }).filter((v0) -> { return Func.isNotEmpty(v0); }).collect(Collectors.toList())); break; case 3: result.addAll((Collection) notifyUserDTOS.stream().map((v0) -> { return v0.getWeiXinMiniUserId(); }).filter((v0) -> { return Func.isNotEmpty(v0); }).collect(Collectors.toList())); case 4: result.addAll((Collection) notifyUserDTOS.stream().map((v0) -> { return v0.getUserId(); }).map((v0) -> { return Func.toStr(v0); }).collect(Collectors.toList())); break; }*/ } result.removeAll(Collections.singleton(null)); return result; } public List createNotifyExecutionContext(TaskExecutionContext taskExecutionContext) { List result = new CopyOnWriteArrayList<>(); List finallyBusiness = BusinessNotifyConvert.INSTANCE.convertToDTOList(this.businessNotifyService .list(Wrappers.query().lambda() .eq(BusinessNotify::getBusinessKey, taskExecutionContext.getBusiness()) .eq(BusinessNotify::getTenantId, taskExecutionContext.getTenantId()))); /* List finallyBusiness = BusinessNotifyConvert.INSTANCE.convertToDTOList(this.businessNotifyService.list((Wrapper) ((LambdaQueryWrapper) Wrappers.query().lambda().eq((v0) -> { return v0.getBusinessKey(); }, taskExecutionContext.getBusiness())).eq((v0) -> { return v0.getTenantId(); }, taskExecutionContext.getTenantId())));*/ if (Func.isNotEmpty(finallyBusiness)) { finallyBusiness.forEach(notify -> { List notifiedPartys = getNotifiedPartyList(taskExecutionContext.getTenantId(), taskExecutionContext.getBusiness(), notify.getNotifyType(), taskExecutionContext.getRelatedPersonals(), taskExecutionContext.getTaskExecutorTypeEnum()); Object sendInfo = taskExecutionContext.getExtendInfo().get("notify_direct_address"); if (Func.isNotEmpty(sendInfo)) { List sendInfoList = new ArrayList<>(); List> data = (List>)sendInfo; //List> data = sendInfo; data.forEach(x -> { NotifyDirectSendInfo notifyDirectSendInfo = (NotifyDirectSendInfo) BeanUtil.toBean(x, NotifyDirectSendInfo.class); notifyDirectSendInfo.setNotifyType(DefaultNotifyType.of(x.get("notifyType").toString())); sendInfoList.add(notifyDirectSendInfo); }); (sendInfoList.stream().filter(x2 -> { return notify.getNotifyType().equals(x2.getNotifyType().getId()); }).collect(Collectors.toList())).forEach(x3 -> { notifiedPartys.addAll(x3.getDirectSendAddress()); }); } if (Func.isNotEmpty(notifiedPartys)) { NotifyExecutionContext notifyExecutionContext = new NotifyExecutionContext(); notifyExecutionContext.setContextId(taskExecutionContext.getContextId()); notifyExecutionContext.setTenantId(taskExecutionContext.getTenantId()); notifyExecutionContext.setData(taskExecutionContext.getData() != null ? taskExecutionContext.getData() : new HashMap()); notifyExecutionContext.setNotifiedParty(notifiedPartys); RuleNotifierProperties ruleNotifierProperties = new RuleNotifierProperties().setNotifierId(notify.getNotifyId()).setNotifyType(DefaultNotifyType.of(notify.getNotifyType())).setTemplateId(notify.getNotifyTemplateId()); notifyExecutionContext.setConfiguration(ruleNotifierProperties); result.add(notifyExecutionContext); } }); } return result; } }