123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- package com.ruoyi.zhdd.service.impl;
- import cn.hutool.core.bean.BeanUtil;
- import cn.hutool.core.date.DateUtil;
- import cn.hutool.core.util.StrUtil;
- import cn.hutool.json.JSONUtil;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.baomidou.mybatisplus.core.toolkit.Wrappers;
- import com.ruoyi.common.core.domain.entity.SysUser;
- import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
- import com.ruoyi.common.core.page.PagePlus;
- import com.ruoyi.common.core.page.TableDataInfo;
- import com.ruoyi.common.exception.ServiceException;
- import com.ruoyi.common.utils.PageUtils;
- import com.ruoyi.common.utils.StringUtils;
- import com.ruoyi.zhdd.domain.DutyEmp;
- import com.ruoyi.zhdd.domain.bo.DutyEmpBo;
- import com.ruoyi.zhdd.domain.vo.DutyEmpVo;
- import com.ruoyi.zhdd.mapper.DutyEmpMapper;
- import com.ruoyi.zhdd.service.IDutyEmpService;
- import org.springframework.stereotype.Service;
- import java.util.Collection;
- import java.util.List;
- import java.util.Map;
- import java.util.stream.Collectors;
- /**
- * 值班排班信息Service业务层处理
- *
- * @author xintong
- * @date 2021-10-11
- */
- @Service
- public class DutyEmpServiceImpl extends ServicePlusImpl<DutyEmpMapper, DutyEmp, DutyEmpVo> implements IDutyEmpService {
- @Override
- public DutyEmpVo queryById(String id) {
- return getVoById(id);
- }
- @Override
- public TableDataInfo<DutyEmpVo> queryPageList(DutyEmpBo bo) {
- PagePlus<DutyEmp, DutyEmpVo> result = pageVo(PageUtils.buildPagePlus(), buildQueryWrapper(bo));
- return PageUtils.buildDataInfo(result);
- }
- @Override
- public List<DutyEmpVo> queryList(DutyEmpBo bo) {
- return listVo(buildQueryWrapper(bo));
- }
- private LambdaQueryWrapper<DutyEmp> buildQueryWrapper(DutyEmpBo bo) {
- Map<String, Object> params = bo.getParams();
- LambdaQueryWrapper<DutyEmp> lqw = Wrappers.lambdaQuery();
- lqw.eq(bo.getPeriod() != null, DutyEmp::getPeriod, bo.getPeriod());
- lqw.like(StringUtils.isNotBlank(bo.getEmpName()), DutyEmp::getEmpName, bo.getEmpName());
- return lqw;
- }
- @Override
- public Boolean insertByBo(DutyEmpBo bo) {
- DutyEmp add = BeanUtil.toBean(bo, DutyEmp.class);
- // 校验是否存在重叠时间段
- // 先获取当前星期下所有的数据
- List<DutyEmpVo> dutyEmpVos = this.listVo(Wrappers.<DutyEmp>lambdaQuery().eq(DutyEmp::getPeriod, add.getPeriod()));
- for (DutyEmpVo dutyEmpVo : dutyEmpVos) {
- int startTime = DateUtil.timeToSecond(dutyEmpVo.getPeriodTime().split("~")[0]);
- int endTime = DateUtil.timeToSecond(dutyEmpVo.getPeriodTime().split("~")[1]);
- int requestStartTime = DateUtil.timeToSecond(bo.getPeriodTime().split("~")[0]);
- int requestendTime = DateUtil.timeToSecond(bo.getPeriodTime().split("~")[1]);
- if ((requestStartTime > startTime && requestStartTime < endTime) ||
- (requestendTime > startTime && requestendTime < endTime) ||
- (requestStartTime <= startTime && requestendTime >= endTime)) {
- throw new ServiceException(bo.getPeriodTime() + "存在重叠时间段,请检查!");
- }
- }
- // 处理人名
- if (StrUtil.isNotBlank(bo.getEmpJson())) {
- List<SysUser> users = JSONUtil.toList(StrUtil.blankToDefault(bo.getEmpJson(), "[]"), SysUser.class);
- String userNames = users.stream().map(SysUser::getNickName).collect(Collectors.joining(","));
- add.setEmpName(userNames);
- }
- return save(add);
- }
- @Override
- public Boolean updateByBo(DutyEmpBo bo) {
- DutyEmp update = BeanUtil.toBean(bo, DutyEmp.class);
- List<DutyEmpVo> dutyEmpVos = this.listVo(Wrappers.<DutyEmp>lambdaQuery().eq(DutyEmp::getPeriod, update.getPeriod()));
- for (DutyEmpVo dutyEmpVo : dutyEmpVos) {
- if (dutyEmpVo.getId().equals(bo.getId())) {
- continue;
- }
- int startTime = DateUtil.timeToSecond(dutyEmpVo.getPeriodTime().split("~")[0]);
- int endTime = DateUtil.timeToSecond(dutyEmpVo.getPeriodTime().split("~")[1]);
- int requestStartTime = DateUtil.timeToSecond(bo.getPeriodTime().split("~")[0]);
- int requestendTime = DateUtil.timeToSecond(bo.getPeriodTime().split("~")[1]);
- if ((requestStartTime > startTime && requestStartTime < endTime) ||
- (requestendTime > startTime && requestendTime < endTime) ||
- (requestStartTime <= startTime && requestendTime >= endTime)) {
- throw new ServiceException(bo.getPeriodTime() + "存在重叠时间段,请检查!");
- }
- }
- if (StrUtil.isNotBlank(bo.getEmpJson())) {
- List<SysUser> users = JSONUtil.toList(StrUtil.blankToDefault(bo.getEmpJson(), "[]"), SysUser.class);
- String userNames = users.stream().map(SysUser::getNickName).collect(Collectors.joining(","));
- update.setEmpName(userNames);
- }
- return updateById(update);
- }
- @Override
- public Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid) {
- if (isValid) {
- //TODO 做一些业务上的校验,判断是否需要校验
- }
- return removeByIds(ids);
- }
- }
|