yangys
2024-03-31 2969df3e404db3cd116f27db1495e523ce05bf86
pref修改
已修改1个文件
113 ■■■■■ 文件已修改
smart-man-boot/src/main/java/com/qianwen/smartman/modules/perf/service/impl/EmployeeOnOffWorkServiceImpl.java 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/perf/service/impl/EmployeeOnOffWorkServiceImpl.java
@@ -1,18 +1,25 @@
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.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
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.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.common.cache.cps.EmployeeCache;
import com.qianwen.smartman.common.constant.CommonGroupConstant;
import com.qianwen.smartman.common.enums.CommonGroupTypeEnum;
@@ -22,15 +29,6 @@
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.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.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;
@@ -55,12 +53,9 @@
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;
public class EmployeeOnOffWorkServiceImpl extends BladeServiceImpl<EmployeeOnOffWorkMapper, EmployeeOnOffWork> implements IEmployeeOnOffWorkService {
      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;
      
@@ -76,9 +71,25 @@
      
      public List<EmployeeWorkStatusVO> allWorkstationStatus(QueryWorkStatusVO vo) {
        List<WorkstationBO> workstations = vo.getWorkstations();
        if (Func.isEmpty(workstations))
        if (Func.isEmpty(workstations)) {
          return Lists.newArrayList(); 
        }
        WorkStatusEnum queryType = vo.getQueryType();
        switch(queryType) {
        case ALL://0
            return allWorkStatusList(workstations);
        case ON://1
            return onWorkStatusList(workstations, OnOffWorkEnum.WILL_OFF.getCode());
        case OFF://2
            return offWorkStatusList(workstations, OnOffWorkEnum.WILL_OFF.getCode());
        case MY:
            return currentEmployeeWork(workstations);
        }
        /*
        switch ($SwitchMap$com$qianwen$smartman$modules$perf$enums$WorkStatusEnum[queryType.ordinal()]) {
                                //com.qianwen.smartman.modules.perf.enums.WorkStatusEnum
          case 1:
@@ -89,7 +100,7 @@
            return offWorkStatusList(workstations, OnOffWorkEnum.WILL_OFF.getCode());
          case 4:
            return currentEmployeeWork(workstations);
        }
        }*/
        return Lists.newArrayList();
      }
      
@@ -101,6 +112,17 @@
        Integer type = vo.getType();
        List<Long> workstationIds = (List<Long>)vo.getWorks().stream().map(WorkstationBO::getId).collect(Collectors.toList());
        EmployeeCache.clearPerfCache(workstationIds);
        switch (OnOffWorkEnum.of(type)) {
          case WILL_ON:
            batchOnWorkstation(vo);
            break;
          case WILL_OFF:
            batchOffWorkstation(vo);
            break;
        }
        /*
        switch ($SwitchMap$com$qianwen$smartman$modules$perf$enums$WorkStatusEnum[OnOffWorkEnum.of(type).ordinal()]) {
          case 1:
            batchOnWorkstation(vo);
@@ -108,7 +130,7 @@
          case 2:
            batchOffWorkstation(vo);
            break;
        }
        } */
        this.employeeSendService.sendMessageRocket(workstationIds);
        return Boolean.valueOf(true);
      }
@@ -128,32 +150,33 @@
      public IPage<EmployeeOnOffWorkVO> queryOnOffLog(QueryEmployeeLogVO vo) {
        IPage<EmployeeOnOffWork> page;
        if (Func.isEmpty(vo.getWorkstationIds()))
          return (IPage<EmployeeOnOffWorkVO>)new Page();
          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()), EmployeeOnOffWork::getOnEmployeeId, vo.getEmployeeIds())
              .in(EmployeeOnOffWork::getWorkstationId, vo.getWorkstationIds()))
              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 });
                  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)))
              Lambda.in(Func.isNotEmpty(vo.getEmployeeIds()), EmployeeOnOffWork::getOnEmployeeId, vo.getEmployeeIds())
              .nested(n -> 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()
          return new Page<>();
        Page<EmployeeOnOffWorkVO>  page1 = new Page<>(page.getCurrent(), page.getSize(), page.getTotal());
        page1.setRecords(records.stream()
            .map(com.qianwen.smartman.modules.perf.service.impl.EmployeeOnOffWorkServiceImpl::convertWork)
            .collect(Collectors.toList()));
        return (IPage<EmployeeOnOffWorkVO>)page1;
        return page1;
      }
      
      public List<WorkstationBO> employeeWork(SearchEmployeeWorkVO vo) {
@@ -162,10 +185,10 @@
        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 })));
          works = list(Lambda.eq(EmployeeOnOffWork::getOnEmployeeId, vo.getEmployeeId())
              .nested(nt -> 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())
          works = list(Lambda.eq(EmployeeOnOffWork::getOnEmployeeId, vo.getEmployeeId())
              .between(EmployeeOnOffWork::getOnlineTime, startTime, endTime));
        } 
        if (Func.isEmpty(works))
@@ -183,10 +206,10 @@
        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 })));
          works = list(Lambda.eq(EmployeeOnOffWork::getWorkstationId, vo.getWorkstationId())
              .nested(nt -> 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())
          works = list(Lambda.eq(EmployeeOnOffWork::getWorkstationId, vo.getWorkstationId())
              .between(EmployeeOnOffWork::getOnlineTime, startTime, endTime));
        } 
        if (Func.isEmpty(works))
@@ -208,13 +231,13 @@
      
      public void currentEmployeeWork(String employeeId, String workstationId) {
        
        List<EmployeeOnOffWork> currEmployeeId = list((Wrapper)((LambdaQueryWrapper)Wrappers.lambdaQuery()
            .eq(EmployeeOnOffWork::getOnEmployeeId, employeeId))
        List<EmployeeOnOffWork> currEmployeeId = list(Wrappers.<EmployeeOnOffWork>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))
        List<EmployeeOnOffWork> works = list(Wrappers.<EmployeeOnOffWork>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])); 
@@ -277,10 +300,10 @@
        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()))
        List<Long> wIds = workstations.stream().map(WorkstationBO::getId).collect(Collectors.toList());
        List<EmployeeOnOffWork> works = list(Lambda.<EmployeeOnOffWork>create()
            .in(EmployeeOnOffWork::getWorkstationId, wIds)
            .eq(EmployeeOnOffWork::getOnEmployeeId, employee.getId())
            .eq(EmployeeOnOffWork::getOnlineType, OnOffWorkEnum.WILL_OFF.getCode()));
        if (Func.isEmpty(works))
          return Lists.newArrayList();