| | |
| | | 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.base.BaseEntity; |
| | | import com.qianwen.core.mp.service.impl.BladeServiceImpl; |
| | | import com.qianwen.core.mp.support.Condition; |
| | | import com.qianwen.core.notify.DefaultNotifyType; |
| | | import com.qianwen.core.secure.utils.AuthUtil; |
| | | import com.qianwen.core.tool.utils.DateUtil; |
| | | import com.qianwen.core.tool.utils.Func; |
| | |
| | | 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<EmployeeOnOffWorkMapper, EmployeeOnOffWork> 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<EmployeeWorkStatusVO> allWorkstationStatus(QueryWorkStatusVO vo) { |
| | | List<WorkstationBO> 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<Long> 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<GroupTreeVO> willOnWork() { |
| | | List<GroupTreeVO> 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<OffEmployeeTreeVO> willOffWork() { |
| | | List<OffEmployeeTreeVO> 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<EmployeeOnOffWorkVO> queryOnOffLog(QueryEmployeeLogVO vo) { |
| | | IPage<EmployeeOnOffWork> 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<EmployeeOnOffWork> 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<WorkstationBO> employeeWork(SearchEmployeeWorkVO vo) { |
| | | List<EmployeeOnOffWork> 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<EmployeeVO> workEmployee(SearchWorkEmployeeVO vo) { |
| | | List<EmployeeOnOffWork> 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<CurrWorkDetailVO> currWorkLog(CurrWorkLogVO vo) { |
| | | return this.baseMapper.currWorkLog(vo.getWorkstationId()); |
| | | } |
| | | |
| | | @Override // org.springblade.modules.perf.service.IEmployeeOnOffWorkService |
| | | public void currentEmployeeWork(String employeeId, String workstationId) { |
| | | List<EmployeeOnOffWork> 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<EmployeeOnOffWork> 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<EmployeeWorkStatusVO> allWorkStatusList(List<WorkstationBO> workstations) { |
| | | Map<Long, Workstation> workstationMap = workstationMap(); |
| | | List<Long> wIds = (List) workstations.stream().map((v0) -> { |
| | | return v0.getId(); |
| | | }).collect(Collectors.toList()); |
| | | List<EmployeeOnOffWork> works = this.baseMapper.queryWork(wIds, null); |
| | | Map<Long, EmployeeOnOffWork> 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<EmployeeWorkStatusVO> onWorkStatusList(List<WorkstationBO> workstations, Integer onType) { |
| | | List<Long> wIds = (List) workstations.stream().map((v0) -> { |
| | | return v0.getId(); |
| | | }).collect(Collectors.toList()); |
| | | List<EmployeeOnOffWork> 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<EmployeeWorkStatusVO> offWorkStatusList(List<WorkstationBO> workstations, Integer onType) { |
| | | Map<Long, Workstation> workstationMap = workstationMap(); |
| | | List<Long> wIds = (List) workstations.stream().map((v0) -> { |
| | | return v0.getId(); |
| | | }).collect(Collectors.toList()); |
| | | List<EmployeeOnOffWork> works = this.baseMapper.queryWork(wIds, onType); |
| | | Set<Long> 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<EmployeeWorkStatusVO> currentEmployeeWork(List<WorkstationBO> workstations) { |
| | | EmployeeVO employee = currentEmployee(); |
| | | if (Func.isNull(employee)) { |
| | | return Lists.newArrayList(); |
| | | } |
| | | List<Long> wIds = (List) workstations.stream().map((v0) -> { |
| | | return v0.getId(); |
| | | }).collect(Collectors.toList()); |
| | | List<EmployeeOnOffWork> 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<Long, Workstation> 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<WorkstationBO> works = vo.getWorks(); |
| | | List<EmployeeOnOffWork> onOffWorks = (List) works.stream().map(w -> { |
| | | return convertWork(vo, w); |
| | | }).collect(Collectors.toList()); |
| | | saveBatch(onOffWorks); |
| | | } |
| | | |
| | | private void batchOffWorkstation(BatchOnWorkVO vo) { |
| | | List<WorkstationBO> works = vo.getWorks(); |
| | | List<EmployeeOnOffWork> 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<Long, Workstation> workstationMap() { |
| | | List<Workstation> workstations = this.workstationService.list(); |
| | | return (Map) workstations.stream().collect(Collectors.toMap((v0) -> { |
| | | return v0.getId(); |
| | | }, v -> { |
| | | return v; |
| | | })); |
| | | } |
| | | } |
| | | private static final Logger log = LoggerFactory.getLogger(com.qianwen.smartman.modules.perf.service.impl.EmployeeOnOffWorkServiceImpl.class); |
| | | |
| | | static final /* synthetic */ int[] $SwitchMap$com$qianwen$smartman$modules$perf$enums$WorkStatusEnum; |
| | | |
| | | private final IEmployeeService employeeService; |
| | | |
| | | private final IWorkstationService workstationService; |
| | | |
| | | private final IEmployeeSendService employeeSendService; |
| | | |
| | | public EmployeeOnOffWorkServiceImpl(IEmployeeService employeeService, IWorkstationService workstationService, IEmployeeSendService employeeSendService) { |
| | | this.employeeService = employeeService; |
| | | this.workstationService = workstationService; |
| | | this.employeeSendService = employeeSendService; |
| | | } |
| | | |
| | | public List<EmployeeWorkStatusVO> allWorkstationStatus(QueryWorkStatusVO vo) { |
| | | List<WorkstationBO> workstations = vo.getWorkstations(); |
| | | if (Func.isEmpty(workstations)) |
| | | return Lists.newArrayList(); |
| | | WorkStatusEnum queryType = vo.getQueryType(); |
| | | switch ($SwitchMap$com$qianwen$smartman$modules$perf$enums$WorkStatusEnum[queryType.ordinal()]) { |
| | | //com.qianwen.smartman.modules.perf.enums.WorkStatusEnum |
| | | case 1: |
| | | return allWorkStatusList(workstations); |
| | | case 2: |
| | | return onWorkStatusList(workstations, OnOffWorkEnum.WILL_OFF.getCode()); |
| | | case 3: |
| | | return offWorkStatusList(workstations, OnOffWorkEnum.WILL_OFF.getCode()); |
| | | case 4: |
| | | return currentEmployeeWork(workstations); |
| | | } |
| | | return Lists.newArrayList(); |
| | | } |
| | | |
| | | public EmployeeVO currentEmployee() { |
| | | return this.employeeService.currentEmployee(AuthUtil.getUserId()); |
| | | } |
| | | |
| | | public Boolean batchOnOffWorkstation(BatchOnWorkVO vo) { |
| | | Integer type = vo.getType(); |
| | | List<Long> workstationIds = (List<Long>)vo.getWorks().stream().map(WorkstationBO::getId).collect(Collectors.toList()); |
| | | EmployeeCache.clearPerfCache(workstationIds); |
| | | switch ($SwitchMap$com$qianwen$smartman$modules$perf$enums$WorkStatusEnum[OnOffWorkEnum.of(type).ordinal()]) { |
| | | case 1: |
| | | batchOnWorkstation(vo); |
| | | break; |
| | | case 2: |
| | | batchOffWorkstation(vo); |
| | | break; |
| | | } |
| | | this.employeeSendService.sendMessageRocket(workstationIds); |
| | | return Boolean.valueOf(true); |
| | | } |
| | | |
| | | public List<GroupTreeVO> willOnWork() { |
| | | List<GroupTreeVO> children = ((EmployeeOnOffWorkMapper)this.baseMapper).willOnWork(OnOffWorkEnum.WILL_OFF.getCode()); |
| | | CommonGroupTypeVO commonGroupType = (new CommonGroupTypeVO()).setGroupType(CommonGroupTypeEnum.WORKSTATION.getName()).setGroupCategory(CommonGroupConstant.DEFAULT_CATEGORY); |
| | | return TreeUtils.allGroupTree(commonGroupType, children); |
| | | } |
| | | |
| | | public List<OffEmployeeTreeVO> willOffWork() { |
| | | List<OffEmployeeTreeVO> children = ((EmployeeOnOffWorkMapper)this.baseMapper).willOffWork(OnOffWorkEnum.WILL_OFF.getCode()); |
| | | CommonGroupTypeVO commonGroupType = (new CommonGroupTypeVO()).setGroupType(CommonGroupTypeEnum.WORKSTATION.getName()).setGroupCategory(CommonGroupConstant.DEFAULT_CATEGORY); |
| | | return TreeUtils.allGroupTreeOff(commonGroupType, children); |
| | | } |
| | | |
| | | public IPage<EmployeeOnOffWorkVO> queryOnOffLog(QueryEmployeeLogVO vo) { |
| | | IPage<EmployeeOnOffWork> page; |
| | | if (Func.isEmpty(vo.getWorkstationIds())) |
| | | return (IPage<EmployeeOnOffWorkVO>)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()), EmployeeOnOffWork::getOnEmployeeId, vo.getEmployeeIds()) |
| | | .in(EmployeeOnOffWork::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()), EmployeeOnOffWork::getOnEmployeeId, vo.getEmployeeIds()) |
| | | .nested(n -> (ExtraLambdaQueryWrapper)((ExtraLambdaQueryWrapper)((ExtraLambdaQueryWrapper)n.between(EmployeeOnOffWork::getOnlineTime, startTime, endTime)).or()).between(EmployeeOnOffWork::getOfflineTime, startTime, endTime))) |
| | | |
| | | .in(EmployeeOnOffWork::getWorkstationId, vo.getWorkstationIds())); |
| | | } |
| | | List<EmployeeOnOffWork> records = page.getRecords(); |
| | | if (Func.isEmpty(records)) |
| | | return (IPage<EmployeeOnOffWorkVO>)new Page(); |
| | | Page page1 = new Page(page.getCurrent(), page.getSize(), page.getTotal()); |
| | | page1.setRecords((List)records.stream() |
| | | .map(com.qianwen.smartman.modules.perf.service.impl.EmployeeOnOffWorkServiceImpl::convertWork) |
| | | .collect(Collectors.toList())); |
| | | return (IPage<EmployeeOnOffWorkVO>)page1; |
| | | } |
| | | |
| | | public List<WorkstationBO> employeeWork(SearchEmployeeWorkVO vo) { |
| | | List<EmployeeOnOffWork> 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(EmployeeOnOffWork::getOnEmployeeId, vo.getEmployeeId()) |
| | | .nested(nt -> (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(EmployeeOnOffWork::getOnEmployeeId, vo.getEmployeeId()) |
| | | .between(EmployeeOnOffWork::getOnlineTime, startTime, endTime)); |
| | | } |
| | | if (Func.isEmpty(works)) |
| | | return Lists.newArrayList(); |
| | | return (List<WorkstationBO>)works.stream() |
| | | .map(w -> WorkstationBO.builder().id(w.getWorkstationId()).workstationCode(w.getWorkstationCode()).workstationName(w.getWorkstationName()).build()) |
| | | |
| | | .filter(DistinctKeyUtil.distinctByKey(WorkstationBO::getId)) |
| | | .collect(Collectors.toList()); |
| | | } |
| | | |
| | | public List<EmployeeVO> workEmployee(SearchWorkEmployeeVO vo) { |
| | | List<EmployeeOnOffWork> 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(EmployeeOnOffWork::getWorkstationId, vo.getWorkstationId()) |
| | | .nested(nt -> (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(EmployeeOnOffWork::getWorkstationId, vo.getWorkstationId()) |
| | | .between(EmployeeOnOffWork::getOnlineTime, startTime, endTime)); |
| | | } |
| | | if (Func.isEmpty(works)) |
| | | return Lists.newArrayList(); |
| | | return (List<EmployeeVO>)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(EmployeeVO::getId)) |
| | | .collect(Collectors.toList()); |
| | | } |
| | | |
| | | public List<CurrWorkDetailVO> currWorkLog(CurrWorkLogVO vo) { |
| | | return ((EmployeeOnOffWorkMapper)this.baseMapper).currWorkLog(vo.getWorkstationId()); |
| | | } |
| | | |
| | | public void currentEmployeeWork(String employeeId, String workstationId) { |
| | | |
| | | List<EmployeeOnOffWork> currEmployeeId = list((Wrapper)((LambdaQueryWrapper)Wrappers.lambdaQuery() |
| | | .eq(EmployeeOnOffWork::getOnEmployeeId, employeeId)) |
| | | .eq(EmployeeOnOffWork::getOnlineType, OnOffWorkEnum.WILL_OFF.getCode())); |
| | | if (Func.isNotEmpty(currEmployeeId)) |
| | | throw new ServiceException(MessageUtils.message("perf.current.employee.login", new Object[0])); |
| | | List<EmployeeOnOffWork> works = list((Wrapper)((LambdaQueryWrapper)Wrappers.lambdaQuery() |
| | | .eq(EmployeeOnOffWork::getWorkstationId, workstationId)) |
| | | .eq(EmployeeOnOffWork::getOnlineType, OnOffWorkEnum.WILL_OFF.getCode())); |
| | | if (Func.isNotEmpty(works)) |
| | | throw new ServiceException(MessageUtils.message("perf.current.work.login", new Object[0])); |
| | | |
| | | } |
| | | |
| | | private List<EmployeeWorkStatusVO> allWorkStatusList(List<WorkstationBO> workstations) { |
| | | Map<Long, Workstation> workstationMap = workstationMap(); |
| | | List<Long> wIds = (List<Long>)workstations.stream().map(WorkstationBO::getId).collect(Collectors.toList()); |
| | | List<EmployeeOnOffWork> works = ((EmployeeOnOffWorkMapper)this.baseMapper).queryWork(wIds, null); |
| | | Map<Long, EmployeeOnOffWork> onOffWorkMap = (Map<Long, EmployeeOnOffWork>)works.stream().collect(Collectors.toMap(EmployeeOnOffWork::getWorkstationId, v -> v)); |
| | | return (List<EmployeeWorkStatusVO>)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(Func::notNull) |
| | | .collect(Collectors.toList()); |
| | | } |
| | | |
| | | private List<EmployeeWorkStatusVO> onWorkStatusList(List<WorkstationBO> workstations, Integer onType) { |
| | | List<Long> wIds = (List<Long>)workstations.stream().map(WorkstationBO::getId).collect(Collectors.toList()); |
| | | List<EmployeeOnOffWork> works = ((EmployeeOnOffWorkMapper)this.baseMapper).queryWork(wIds, onType); |
| | | if (Func.isEmpty(works)) |
| | | return Lists.newArrayList(); |
| | | return (List<EmployeeWorkStatusVO>)works.stream() |
| | | .map(com.qianwen.smartman.modules.perf.service.impl.EmployeeOnOffWorkServiceImpl::convert) |
| | | .collect(Collectors.toList()); |
| | | } |
| | | |
| | | private List<EmployeeWorkStatusVO> offWorkStatusList(List<WorkstationBO> workstations, Integer onType) { |
| | | Map<Long, Workstation> workstationMap = workstationMap(); |
| | | List<Long> wIds = (List<Long>)workstations.stream().map(WorkstationBO::getId).collect(Collectors.toList()); |
| | | List<EmployeeOnOffWork> works = ((EmployeeOnOffWorkMapper)this.baseMapper).queryWork(wIds, onType); |
| | | Set<Long> workstationIds = (Set<Long>)works.stream().map(EmployeeOnOffWork::getWorkstationId).collect(Collectors.toSet()); |
| | | return (List<EmployeeWorkStatusVO>)workstations.stream() |
| | | .filter(c -> !workstationIds.contains(c.getId())) |
| | | .map(c -> { |
| | | Long workstationId = c.getId(); |
| | | Workstation workstation = (Workstation)workstationMap.get(workstationId); |
| | | return Func.isNull(workstation) ? null : EmployeeWorkStatusVO.builder().onType(OnOffWorkEnum.WILL_ON.getCode()).workstationId(workstationId).workstationCode(workstation.getCode()).workstationName(workstation.getName()).avatar(workstation.getAvatar()).build(); |
| | | }).filter(Func::notNull) |
| | | .collect(Collectors.toList()); |
| | | } |
| | | |
| | | private List<EmployeeWorkStatusVO> currentEmployeeWork(List<WorkstationBO> workstations) { |
| | | EmployeeVO employee = currentEmployee(); |
| | | if (Func.isNull(employee)) |
| | | return Lists.newArrayList(); |
| | | List<Long> wIds = (List<Long>)workstations.stream().map(WorkstationBO::getId).collect(Collectors.toList()); |
| | | List<EmployeeOnOffWork> works = list((Wrapper)((ExtraLambdaQueryWrapper)((ExtraLambdaQueryWrapper)Lambda.create() |
| | | .in(EmployeeOnOffWork::getWorkstationId, wIds)) |
| | | .eq(EmployeeOnOffWork::getOnEmployeeId, employee.getId())) |
| | | .eq(EmployeeOnOffWork::getOnlineType, OnOffWorkEnum.WILL_OFF.getCode())); |
| | | if (Func.isEmpty(works)) |
| | | return Lists.newArrayList(); |
| | | Map<Long, Workstation> workMap = workstationMap(); |
| | | return (List<EmployeeWorkStatusVO>)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(Func::notNull) |
| | | .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<WorkstationBO> works = vo.getWorks(); |
| | | List<EmployeeOnOffWork> onOffWorks = (List<EmployeeOnOffWork>)works.stream().map(w -> convertWork(vo, w)).collect(Collectors.toList()); |
| | | saveBatch(onOffWorks); |
| | | } |
| | | |
| | | private void batchOffWorkstation(BatchOnWorkVO vo) { |
| | | List<WorkstationBO> works = vo.getWorks(); |
| | | List<EmployeeOnOffWork> offWorks = (List<EmployeeOnOffWork>)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<Long, Workstation> workstationMap() { |
| | | List<Workstation> workstations = this.workstationService.list(); |
| | | return (Map<Long, Workstation>)workstations.stream().collect(Collectors.toMap(BaseEntity::getId, v -> v)); |
| | | } |
| | | } |