package com.qianwen.smartman.modules.perf.service.impl; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import java.lang.invoke.SerializedLambda; import java.util.List; import java.util.Map; import java.util.Set; import java.util.stream.Collectors; import org.apache.commons.compress.utils.Lists; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.qianwen.smartman.common.cache.cps.EmployeeCache; import com.qianwen.smartman.common.constant.CommonGroupConstant; import com.qianwen.smartman.common.enums.CommonGroupTypeEnum; import com.qianwen.smartman.common.utils.DistinctKeyUtil; import com.qianwen.smartman.common.utils.ExtraLambdaQueryWrapper; import com.qianwen.smartman.common.utils.Lambda; import com.qianwen.smartman.common.utils.MessageUtils; import com.qianwen.smartman.common.utils.TimeUtils; import com.qianwen.smartman.common.utils.TreeUtils; import com.qianwen.core.log.exception.ServiceException; import com.qianwen.core.mp.service.impl.BladeServiceImpl; import com.qianwen.core.mp.support.Condition; import com.qianwen.core.secure.utils.AuthUtil; import com.qianwen.core.tool.utils.DateUtil; import com.qianwen.core.tool.utils.Func; import com.qianwen.core.tool.utils.SpringUtil; import com.qianwen.smartman.modules.cps.entity.Workstation; import com.qianwen.smartman.modules.cps.service.IEmployeeService; import com.qianwen.smartman.modules.cps.service.IWorkstationService; import com.qianwen.smartman.modules.cps.vo.CommonGroupTypeVO; import com.qianwen.smartman.modules.cps.vo.EmployeeVO; import com.qianwen.smartman.modules.cps.vo.GroupTreeVO; import com.qianwen.smartman.modules.perf.dto.WorkstationBO; import com.qianwen.smartman.modules.perf.entity.EmployeeOnOffWork; import com.qianwen.smartman.modules.perf.enums.DbTypeEnum; import com.qianwen.smartman.modules.perf.enums.OnOffWorkEnum; import com.qianwen.smartman.modules.perf.enums.WorkStatusEnum; import com.qianwen.smartman.modules.perf.mapper.EmployeeOnOffWorkMapper; import com.qianwen.smartman.modules.perf.service.IEmployeeOnOffWorkService; import com.qianwen.smartman.modules.perf.service.IEmployeeSendService; import com.qianwen.smartman.modules.perf.vo.BatchOnWorkVO; import com.qianwen.smartman.modules.perf.vo.CurrWorkDetailVO; import com.qianwen.smartman.modules.perf.vo.CurrWorkLogVO; import com.qianwen.smartman.modules.perf.vo.EmployeeOnOffWorkVO; import com.qianwen.smartman.modules.perf.vo.EmployeeWorkStatusVO; import com.qianwen.smartman.modules.perf.vo.OffEmployeeTreeVO; import com.qianwen.smartman.modules.perf.vo.QueryEmployeeLogVO; import com.qianwen.smartman.modules.perf.vo.QueryWorkStatusVO; import com.qianwen.smartman.modules.perf.vo.SearchEmployeeWorkVO; import com.qianwen.smartman.modules.perf.vo.SearchWorkEmployeeVO; import org.springframework.stereotype.Service; @Service /* loaded from: blade-api.jar:BOOT-INF/classes/org/springblade/modules/perf/service/impl/EmployeeOnOffWorkServiceImpl.class */ public class EmployeeOnOffWorkServiceImpl extends BladeServiceImpl implements IEmployeeOnOffWorkService { private static final Logger log = LoggerFactory.getLogger(EmployeeOnOffWorkServiceImpl.class); private final IEmployeeService employeeService; private final IWorkstationService workstationService; private final IEmployeeSendService employeeSendService; private static /* synthetic */ Object $deserializeLambda$(SerializedLambda lambda) { String implMethodName = lambda.getImplMethodName(); boolean z = true; switch (implMethodName.hashCode()) { case -698756170: if (implMethodName.equals("getOnlineTime")) { z = true; break; } break; case -698740701: if (implMethodName.equals("getOnlineType")) { z = true; break; } break; case -557259320: if (implMethodName.equals("getWorkstationId")) { z = false; break; } break; case 408973850: if (implMethodName.equals("getOfflineTime")) { z = true; break; } break; case 840166942: if (implMethodName.equals("getOnEmployeeId")) { z = true; break; } break; } switch (z) { case false: if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("org/springblade/modules/perf/entity/EmployeeOnOffWork") && lambda.getImplMethodSignature().equals("()Ljava/lang/Long;")) { return (v0) -> { return v0.getWorkstationId(); }; } if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("org/springblade/modules/perf/entity/EmployeeOnOffWork") && lambda.getImplMethodSignature().equals("()Ljava/lang/Long;")) { return (v0) -> { return v0.getWorkstationId(); }; } if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("org/springblade/modules/perf/entity/EmployeeOnOffWork") && lambda.getImplMethodSignature().equals("()Ljava/lang/Long;")) { return (v0) -> { return v0.getWorkstationId(); }; } if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("org/springblade/modules/perf/entity/EmployeeOnOffWork") && lambda.getImplMethodSignature().equals("()Ljava/lang/Long;")) { return (v0) -> { return v0.getWorkstationId(); }; } if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("org/springblade/modules/perf/entity/EmployeeOnOffWork") && lambda.getImplMethodSignature().equals("()Ljava/lang/Long;")) { return (v0) -> { return v0.getWorkstationId(); }; } if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("org/springblade/modules/perf/entity/EmployeeOnOffWork") && lambda.getImplMethodSignature().equals("()Ljava/lang/Long;")) { return (v0) -> { return v0.getWorkstationId(); }; } break; case true: if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("org/springblade/modules/perf/entity/EmployeeOnOffWork") && lambda.getImplMethodSignature().equals("()Ljava/lang/Integer;")) { return (v0) -> { return v0.getOnlineType(); }; } if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("org/springblade/modules/perf/entity/EmployeeOnOffWork") && lambda.getImplMethodSignature().equals("()Ljava/lang/Integer;")) { return (v0) -> { return v0.getOnlineType(); }; } if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("org/springblade/modules/perf/entity/EmployeeOnOffWork") && lambda.getImplMethodSignature().equals("()Ljava/lang/Integer;")) { return (v0) -> { return v0.getOnlineType(); }; } break; case true: if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("org/springblade/modules/perf/entity/EmployeeOnOffWork") && lambda.getImplMethodSignature().equals("()Ljava/util/Date;")) { return (v0) -> { return v0.getOfflineTime(); }; } break; case true: if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("org/springblade/modules/perf/entity/EmployeeOnOffWork") && lambda.getImplMethodSignature().equals("()Ljava/lang/Long;")) { return (v0) -> { return v0.getOnEmployeeId(); }; } if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("org/springblade/modules/perf/entity/EmployeeOnOffWork") && lambda.getImplMethodSignature().equals("()Ljava/lang/Long;")) { return (v0) -> { return v0.getOnEmployeeId(); }; } if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("org/springblade/modules/perf/entity/EmployeeOnOffWork") && lambda.getImplMethodSignature().equals("()Ljava/lang/Long;")) { return (v0) -> { return v0.getOnEmployeeId(); }; } if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("org/springblade/modules/perf/entity/EmployeeOnOffWork") && lambda.getImplMethodSignature().equals("()Ljava/lang/Long;")) { return (v0) -> { return v0.getOnEmployeeId(); }; } if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("org/springblade/modules/perf/entity/EmployeeOnOffWork") && lambda.getImplMethodSignature().equals("()Ljava/lang/Long;")) { return (v0) -> { return v0.getOnEmployeeId(); }; } if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("org/springblade/modules/perf/entity/EmployeeOnOffWork") && lambda.getImplMethodSignature().equals("()Ljava/lang/Long;")) { return (v0) -> { return v0.getOnEmployeeId(); }; } break; case true: if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("org/springblade/modules/perf/entity/EmployeeOnOffWork") && lambda.getImplMethodSignature().equals("()Ljava/util/Date;")) { return (v0) -> { return v0.getOnlineTime(); }; } if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("org/springblade/modules/perf/entity/EmployeeOnOffWork") && lambda.getImplMethodSignature().equals("()Ljava/util/Date;")) { return (v0) -> { return v0.getOnlineTime(); }; } if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("org/springblade/modules/perf/entity/EmployeeOnOffWork") && lambda.getImplMethodSignature().equals("()Ljava/util/Date;")) { return (v0) -> { return v0.getOnlineTime(); }; } break; } throw new IllegalArgumentException("Invalid lambda deserialization"); } public EmployeeOnOffWorkServiceImpl(final IEmployeeService employeeService, final IWorkstationService workstationService, final IEmployeeSendService employeeSendService) { this.employeeService = employeeService; this.workstationService = workstationService; this.employeeSendService = employeeSendService; } @Override // org.springblade.modules.perf.service.IEmployeeOnOffWorkService public List allWorkstationStatus(QueryWorkStatusVO vo) { List workstations = vo.getWorkstations(); if (Func.isEmpty(workstations)) { return Lists.newArrayList(); } WorkStatusEnum queryType = vo.getQueryType(); switch (queryType) { case ALL: return allWorkStatusList(workstations); case ON: return onWorkStatusList(workstations, OnOffWorkEnum.WILL_OFF.getCode()); case OFF: return offWorkStatusList(workstations, OnOffWorkEnum.WILL_OFF.getCode()); case MY: return currentEmployeeWork(workstations); default: return Lists.newArrayList(); } } @Override // org.springblade.modules.perf.service.IEmployeeOnOffWorkService public EmployeeVO currentEmployee() { return this.employeeService.currentEmployee(AuthUtil.getUserId()); } @Override // org.springblade.modules.perf.service.IEmployeeOnOffWorkService public Boolean batchOnOffWorkstation(BatchOnWorkVO vo) { vo.getType(); List workstationIds = (List) vo.getWorks().stream().map((v0) -> { return v0.getId(); }).collect(Collectors.toList()); EmployeeCache.clearPerfCache(workstationIds); switch (OnOffWorkEnum.of(type)) { case WILL_ON: batchOnWorkstation(vo); break; case WILL_OFF: batchOffWorkstation(vo); break; } this.employeeSendService.sendMessageRocket(workstationIds); return true; } @Override // org.springblade.modules.perf.service.IEmployeeOnOffWorkService public List willOnWork() { List children = this.baseMapper.willOnWork(OnOffWorkEnum.WILL_OFF.getCode()); CommonGroupTypeVO commonGroupType = new CommonGroupTypeVO().setGroupType(CommonGroupTypeEnum.WORKSTATION.getName()).setGroupCategory(CommonGroupConstant.DEFAULT_CATEGORY); return TreeUtils.allGroupTree(commonGroupType, children); } @Override // org.springblade.modules.perf.service.IEmployeeOnOffWorkService public List willOffWork() { List children = this.baseMapper.willOffWork(OnOffWorkEnum.WILL_OFF.getCode()); CommonGroupTypeVO commonGroupType = new CommonGroupTypeVO().setGroupType(CommonGroupTypeEnum.WORKSTATION.getName()).setGroupCategory(CommonGroupConstant.DEFAULT_CATEGORY); return TreeUtils.allGroupTreeOff(commonGroupType, children); } @Override // org.springblade.modules.perf.service.IEmployeeOnOffWorkService public IPage queryOnOffLog(QueryEmployeeLogVO vo) { IPage page; if (Func.isEmpty(vo.getWorkstationIds())) { return new Page(); } String dbType = SpringUtil.getContext().getEnvironment().getProperty("datasource.type"); String startTime = TimeUtils.getStartTime(vo.getStartTime()); String endTime = TimeUtils.getEndTime(vo.getEndTime()); if (DbTypeEnum.ORACLE.getCode().equals(dbType)) { page = page(Condition.getPage(vo.getQuery()), (Wrapper) ((ExtraLambdaQueryWrapper) Lambda.in(Func.isNotEmpty(vo.getEmployeeIds()), (v0) -> { return v0.getOnEmployeeId(); }, vo.getEmployeeIds()).in((v0) -> { return v0.getWorkstationId(); }, vo.getWorkstationIds())).nested(nt -> { ExtraLambdaQueryWrapper extraLambdaQueryWrapper = (ExtraLambdaQueryWrapper) nt.apply("(online_time between TO_DATE({0}, 'yyyy-mm-dd hh24:mi:ss') and TO_DATE({1}, 'yyyy-mm-dd hh24:mi:ss')) or (offline_time between TO_DATE({2}, 'yyyy-mm-dd hh24:mi:ss') and TO_DATE({3}, 'yyyy-mm-dd hh24:mi:ss'))", new Object[]{startTime, endTime, startTime, endTime}); })); } else { page = page(Condition.getPage(vo.getQuery()), (Wrapper) ((ExtraLambdaQueryWrapper) Lambda.in(Func.isNotEmpty(vo.getEmployeeIds()), (v0) -> { return v0.getOnEmployeeId(); }, vo.getEmployeeIds()).nested(n -> { ExtraLambdaQueryWrapper extraLambdaQueryWrapper = (ExtraLambdaQueryWrapper) ((ExtraLambdaQueryWrapper) ((ExtraLambdaQueryWrapper) n.between((v0) -> { return v0.getOnlineTime(); }, startTime, endTime)).or()).between((v0) -> { return v0.getOfflineTime(); }, startTime, endTime); })).in((v0) -> { return v0.getWorkstationId(); }, vo.getWorkstationIds())); } List records = page.getRecords(); if (Func.isEmpty(records)) { return new Page(); } Page page2 = new Page(page.getCurrent(), page.getSize(), page.getTotal()); page2.setRecords((List) records.stream().map(EmployeeOnOffWorkServiceImpl::convertWork).collect(Collectors.toList())); return page2; } @Override // org.springblade.modules.perf.service.IEmployeeOnOffWorkService public List employeeWork(SearchEmployeeWorkVO vo) { List works; String dbType = SpringUtil.getContext().getEnvironment().getProperty("datasource.type"); String startTime = DateUtil.formatDateTime(vo.getStartTime()); String endTime = DateUtil.formatDateTime(vo.getEndTime()); if (DbTypeEnum.ORACLE.getCode().equals(dbType)) { works = list((Wrapper) Lambda.eq((v0) -> { return v0.getOnEmployeeId(); }, vo.getEmployeeId()).nested(nt -> { ExtraLambdaQueryWrapper extraLambdaQueryWrapper = (ExtraLambdaQueryWrapper) nt.apply("(online_time between TO_DATE({0}, 'yyyy-mm-dd hh24:mi:ss') and TO_DATE({1}, 'yyyy-mm-dd hh24:mi:ss'))", new Object[]{startTime, endTime}); })); } else { works = list((Wrapper) Lambda.eq((v0) -> { return v0.getOnEmployeeId(); }, vo.getEmployeeId()).between((v0) -> { return v0.getOnlineTime(); }, startTime, endTime)); } if (Func.isEmpty(works)) { return Lists.newArrayList(); } return (List) works.stream().map(w -> { return WorkstationBO.builder().id(w.getWorkstationId()).workstationCode(w.getWorkstationCode()).workstationName(w.getWorkstationName()).build(); }).filter(DistinctKeyUtil.distinctByKey((v0) -> { return v0.getId(); })).collect(Collectors.toList()); } @Override // org.springblade.modules.perf.service.IEmployeeOnOffWorkService public List workEmployee(SearchWorkEmployeeVO vo) { List works; String dbType = SpringUtil.getContext().getEnvironment().getProperty("datasource.type"); String startTime = DateUtil.formatDateTime(vo.getStartTime()); String endTime = DateUtil.formatDateTime(vo.getEndTime()); if (DbTypeEnum.ORACLE.getCode().equals(dbType)) { works = list((Wrapper) Lambda.eq((v0) -> { return v0.getWorkstationId(); }, vo.getWorkstationId()).nested(nt -> { ExtraLambdaQueryWrapper extraLambdaQueryWrapper = (ExtraLambdaQueryWrapper) nt.apply("(online_time between TO_DATE({0}, 'yyyy-mm-dd hh24:mi:ss') and TO_DATE({1}, 'yyyy-mm-dd hh24:mi:ss'))", new Object[]{startTime, endTime}); })); } else { works = list((Wrapper) Lambda.eq((v0) -> { return v0.getWorkstationId(); }, vo.getWorkstationId()).between((v0) -> { return v0.getOnlineTime(); }, startTime, endTime)); } if (Func.isEmpty(works)) { return Lists.newArrayList(); } return (List) works.stream().map(w -> { EmployeeVO res = new EmployeeVO(); res.setId(w.getOnEmployeeId()); res.setCode(w.getOnEmployeeCode()); res.setName(w.getOnEmployeeName()); return res; }).filter(DistinctKeyUtil.distinctByKey((v0) -> { return v0.getId(); })).collect(Collectors.toList()); } @Override // org.springblade.modules.perf.service.IEmployeeOnOffWorkService public List currWorkLog(CurrWorkLogVO vo) { return this.baseMapper.currWorkLog(vo.getWorkstationId()); } @Override // org.springblade.modules.perf.service.IEmployeeOnOffWorkService public void currentEmployeeWork(String employeeId, String workstationId) { List currEmployeeId = list((Wrapper) ((LambdaQueryWrapper) Wrappers.lambdaQuery().eq((v0) -> { return v0.getOnEmployeeId(); }, employeeId)).eq((v0) -> { return v0.getOnlineType(); }, OnOffWorkEnum.WILL_OFF.getCode())); if (Func.isNotEmpty(currEmployeeId)) { throw new ServiceException(MessageUtils.message("perf.current.employee.login", new Object[0])); } List works = list((Wrapper) ((LambdaQueryWrapper) Wrappers.lambdaQuery().eq((v0) -> { return v0.getWorkstationId(); }, workstationId)).eq((v0) -> { return v0.getOnlineType(); }, OnOffWorkEnum.WILL_OFF.getCode())); if (Func.isNotEmpty(works)) { throw new ServiceException(MessageUtils.message("perf.current.work.login", new Object[0])); } } private List allWorkStatusList(List workstations) { Map workstationMap = workstationMap(); List wIds = (List) workstations.stream().map((v0) -> { return v0.getId(); }).collect(Collectors.toList()); List works = this.baseMapper.queryWork(wIds, null); Map onOffWorkMap = (Map) works.stream().collect(Collectors.toMap((v0) -> { return v0.getWorkstationId(); }, v -> { return v; })); return (List) workstations.stream().map(c -> { Long workstationId = c.getId(); Workstation workstation = (Workstation) workstationMap.get(workstationId); if (Func.isNull(workstation)) { return null; } EmployeeOnOffWork employeeOnOffWork = (EmployeeOnOffWork) onOffWorkMap.get(workstationId); EmployeeWorkStatusVO res = EmployeeWorkStatusVO.builder().onType(OnOffWorkEnum.WILL_ON.getCode()).workstationId(workstationId).workstationCode(workstation.getCode()).workstationName(workstation.getName()).avatar(workstation.getAvatar()).build(); if (Func.isNull(employeeOnOffWork) || employeeOnOffWork.getOnlineType().equals(OnOffWorkEnum.WILL_ON.getCode())) { return res; } res.setId(employeeOnOffWork.getId()); res.setOnType(employeeOnOffWork.getOnlineType()); res.setOnEmployeeId(employeeOnOffWork.getOnEmployeeId()); res.setOnEmployeeCode(employeeOnOffWork.getOnEmployeeCode()); res.setOnEmployeeName(employeeOnOffWork.getOnEmployeeName()); res.setOnEmployeeAvatar(employeeOnOffWork.getOnEmployeeAvatar()); res.setOnlineTime(employeeOnOffWork.getOnlineTime()); return res; }).filter((v0) -> { return Func.notNull(v0); }).collect(Collectors.toList()); } private List onWorkStatusList(List workstations, Integer onType) { List wIds = (List) workstations.stream().map((v0) -> { return v0.getId(); }).collect(Collectors.toList()); List works = this.baseMapper.queryWork(wIds, onType); if (Func.isEmpty(works)) { return Lists.newArrayList(); } return (List) works.stream().map(EmployeeOnOffWorkServiceImpl::convert).collect(Collectors.toList()); } private List offWorkStatusList(List workstations, Integer onType) { Map workstationMap = workstationMap(); List wIds = (List) workstations.stream().map((v0) -> { return v0.getId(); }).collect(Collectors.toList()); List works = this.baseMapper.queryWork(wIds, onType); Set workstationIds = (Set) works.stream().map((v0) -> { return v0.getWorkstationId(); }).collect(Collectors.toSet()); return (List) workstations.stream().filter(c -> { return !workstationIds.contains(c.getId()); }).map(c2 -> { Long workstationId = c2.getId(); Workstation workstation = (Workstation) workstationMap.get(workstationId); if (Func.isNull(workstation)) { return null; } return EmployeeWorkStatusVO.builder().onType(OnOffWorkEnum.WILL_ON.getCode()).workstationId(workstationId).workstationCode(workstation.getCode()).workstationName(workstation.getName()).avatar(workstation.getAvatar()).build(); }).filter((v0) -> { return Func.notNull(v0); }).collect(Collectors.toList()); } private List currentEmployeeWork(List workstations) { EmployeeVO employee = currentEmployee(); if (Func.isNull(employee)) { return Lists.newArrayList(); } List wIds = (List) workstations.stream().map((v0) -> { return v0.getId(); }).collect(Collectors.toList()); List works = list((Wrapper) ((ExtraLambdaQueryWrapper) ((ExtraLambdaQueryWrapper) Lambda.create().in((v0) -> { return v0.getWorkstationId(); }, wIds)).eq((v0) -> { return v0.getOnEmployeeId(); }, employee.getId())).eq((v0) -> { return v0.getOnlineType(); }, OnOffWorkEnum.WILL_OFF.getCode())); if (Func.isEmpty(works)) { return Lists.newArrayList(); } Map workMap = workstationMap(); return (List) works.stream().map(w -> { EmployeeWorkStatusVO vo = convert(w); Workstation workstation = (Workstation) workMap.get(w.getWorkstationId()); if (Func.isNull(workstation)) { return null; } vo.setAvatar(workstation.getAvatar()); return vo; }).filter((v0) -> { return Func.notNull(v0); }).collect(Collectors.toList()); } private static EmployeeWorkStatusVO convert(EmployeeOnOffWork work) { return EmployeeWorkStatusVO.builder().id(work.getId()).onType(work.getOnlineType()).onEmployeeId(work.getOnEmployeeId()).onEmployeeCode(work.getOnEmployeeCode()).onEmployeeName(work.getOnEmployeeName()).onEmployeeAvatar(work.getOnEmployeeAvatar()).workstationId(work.getWorkstationId()).workstationCode(work.getWorkstationCode()).workstationName(work.getWorkstationName()).onlineTime(work.getOnlineTime()).build(); } private static EmployeeOnOffWorkVO convertWork(EmployeeOnOffWork work) { return EmployeeOnOffWorkVO.builder().id(work.getId()).employeeId(work.getOnEmployeeId()).employeeName(work.getOnEmployeeName()).employeeCode(work.getOnEmployeeCode()).workstationId(work.getWorkstationId()).workstationCode(work.getWorkstationCode()).workstationName(work.getWorkstationName()).onlineTime(work.getOnlineTime()).offlineTime(work.getOfflineTime()).createTime(work.getCreateTime()).build(); } private void batchOnWorkstation(BatchOnWorkVO vo) { List works = vo.getWorks(); List onOffWorks = (List) works.stream().map(w -> { return convertWork(vo, w); }).collect(Collectors.toList()); saveBatch(onOffWorks); } private void batchOffWorkstation(BatchOnWorkVO vo) { List works = vo.getWorks(); List offWorks = (List) works.stream().map(w -> { EmployeeOnOffWork work = new EmployeeOnOffWork().setOffEmployeeId(vo.getEmployeeId()).setOffEmployeeCode(vo.getEmployeeCode()).setOffEmployeeName(vo.getEmployeeName()).setOffEmployeeAvatar(vo.getEmployeeAvatar()).setOnlineType(OnOffWorkEnum.WILL_ON.getCode()).setOfflineTime(vo.getTime()); work.setId(w.getLogId()); return work; }).collect(Collectors.toList()); updateBatchById(offWorks); } private EmployeeOnOffWork convertWork(BatchOnWorkVO vo, WorkstationBO work) { return new EmployeeOnOffWork().setOnlineTime(vo.getTime()).setOnEmployeeId(vo.getEmployeeId()).setOnEmployeeName(vo.getEmployeeName()).setOnEmployeeCode(vo.getEmployeeCode()).setOnEmployeeAvatar(vo.getEmployeeAvatar()).setWorkstationId(work.getId()).setWorkstationName(work.getWorkstationName()).setWorkstationCode(work.getWorkstationCode()).setWorkstationAvatar(work.getAvatar()).setOnlineType(OnOffWorkEnum.WILL_OFF.getCode()); } private Map workstationMap() { List workstations = this.workstationService.list(); return (Map) workstations.stream().collect(Collectors.toMap((v0) -> { return v0.getId(); }, v -> { return v; })); } }