From 8c9ba6667b89cc0494d05b5da4355dde205b8d4a Mon Sep 17 00:00:00 2001
From: PC <PC@PC1RHZ4L>
Date: 星期日, 31 三月 2024 09:59:04 +0800
Subject: [PATCH] update by wangzq
---
smart-man-boot/src/main/java/com/qianwen/smartman/modules/perf/service/impl/EmployeeOnOffWorkServiceImpl.java | 789 +++++++++++++++++++++----------------------------------
1 files changed, 306 insertions(+), 483 deletions(-)
diff --git a/smart-man-boot/src/main/java/com/qianwen/smartman/modules/perf/service/impl/EmployeeOnOffWorkServiceImpl.java b/smart-man-boot/src/main/java/com/qianwen/smartman/modules/perf/service/impl/EmployeeOnOffWorkServiceImpl.java
index 16e4b67..66ced51 100644
--- a/smart-man-boot/src/main/java/com/qianwen/smartman/modules/perf/service/impl/EmployeeOnOffWorkServiceImpl.java
+++ b/smart-man-boot/src/main/java/com/qianwen/smartman/modules/perf/service/impl/EmployeeOnOffWorkServiceImpl.java
@@ -23,8 +23,10 @@
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;
@@ -55,487 +57,308 @@
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));
+ }
+ }
--
Gitblit v1.9.3