DutyEmpServiceImpl.java 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. package com.ruoyi.zhdd.service.impl;
  2. import cn.hutool.core.bean.BeanUtil;
  3. import cn.hutool.core.date.DateUtil;
  4. import cn.hutool.core.util.StrUtil;
  5. import cn.hutool.json.JSONUtil;
  6. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  7. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  8. import com.ruoyi.common.core.domain.entity.SysUser;
  9. import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
  10. import com.ruoyi.common.core.page.PagePlus;
  11. import com.ruoyi.common.core.page.TableDataInfo;
  12. import com.ruoyi.common.exception.ServiceException;
  13. import com.ruoyi.common.utils.PageUtils;
  14. import com.ruoyi.common.utils.StringUtils;
  15. import com.ruoyi.zhdd.domain.DutyEmp;
  16. import com.ruoyi.zhdd.domain.bo.DutyEmpBo;
  17. import com.ruoyi.zhdd.domain.vo.DutyEmpVo;
  18. import com.ruoyi.zhdd.mapper.DutyEmpMapper;
  19. import com.ruoyi.zhdd.service.IDutyEmpService;
  20. import org.springframework.stereotype.Service;
  21. import java.util.Collection;
  22. import java.util.List;
  23. import java.util.Map;
  24. import java.util.stream.Collectors;
  25. /**
  26. * 值班排班信息Service业务层处理
  27. *
  28. * @author xintong
  29. * @date 2021-10-11
  30. */
  31. @Service
  32. public class DutyEmpServiceImpl extends ServicePlusImpl<DutyEmpMapper, DutyEmp, DutyEmpVo> implements IDutyEmpService {
  33. @Override
  34. public DutyEmpVo queryById(String id) {
  35. return getVoById(id);
  36. }
  37. @Override
  38. public TableDataInfo<DutyEmpVo> queryPageList(DutyEmpBo bo) {
  39. PagePlus<DutyEmp, DutyEmpVo> result = pageVo(PageUtils.buildPagePlus(), buildQueryWrapper(bo));
  40. return PageUtils.buildDataInfo(result);
  41. }
  42. @Override
  43. public List<DutyEmpVo> queryList(DutyEmpBo bo) {
  44. return listVo(buildQueryWrapper(bo));
  45. }
  46. private LambdaQueryWrapper<DutyEmp> buildQueryWrapper(DutyEmpBo bo) {
  47. Map<String, Object> params = bo.getParams();
  48. LambdaQueryWrapper<DutyEmp> lqw = Wrappers.lambdaQuery();
  49. lqw.eq(bo.getPeriod() != null, DutyEmp::getPeriod, bo.getPeriod());
  50. lqw.like(StringUtils.isNotBlank(bo.getEmpName()), DutyEmp::getEmpName, bo.getEmpName());
  51. return lqw;
  52. }
  53. @Override
  54. public Boolean insertByBo(DutyEmpBo bo) {
  55. DutyEmp add = BeanUtil.toBean(bo, DutyEmp.class);
  56. // 校验是否存在重叠时间段
  57. // 先获取当前星期下所有的数据
  58. List<DutyEmpVo> dutyEmpVos = this.listVo(Wrappers.<DutyEmp>lambdaQuery().eq(DutyEmp::getPeriod, add.getPeriod()));
  59. for (DutyEmpVo dutyEmpVo : dutyEmpVos) {
  60. int startTime = DateUtil.timeToSecond(dutyEmpVo.getPeriodTime().split("~")[0]);
  61. int endTime = DateUtil.timeToSecond(dutyEmpVo.getPeriodTime().split("~")[1]);
  62. int requestStartTime = DateUtil.timeToSecond(bo.getPeriodTime().split("~")[0]);
  63. int requestendTime = DateUtil.timeToSecond(bo.getPeriodTime().split("~")[1]);
  64. if ((requestStartTime > startTime && requestStartTime < endTime) ||
  65. (requestendTime > startTime && requestendTime < endTime) ||
  66. (requestStartTime <= startTime && requestendTime >= endTime)) {
  67. throw new ServiceException(bo.getPeriodTime() + "存在重叠时间段,请检查!");
  68. }
  69. }
  70. // 处理人名
  71. if (StrUtil.isNotBlank(bo.getEmpJson())) {
  72. List<SysUser> users = JSONUtil.toList(StrUtil.blankToDefault(bo.getEmpJson(), "[]"), SysUser.class);
  73. String userNames = users.stream().map(SysUser::getNickName).collect(Collectors.joining(","));
  74. add.setEmpName(userNames);
  75. }
  76. return save(add);
  77. }
  78. @Override
  79. public Boolean updateByBo(DutyEmpBo bo) {
  80. DutyEmp update = BeanUtil.toBean(bo, DutyEmp.class);
  81. List<DutyEmpVo> dutyEmpVos = this.listVo(Wrappers.<DutyEmp>lambdaQuery().eq(DutyEmp::getPeriod, update.getPeriod()));
  82. for (DutyEmpVo dutyEmpVo : dutyEmpVos) {
  83. if (dutyEmpVo.getId().equals(bo.getId())) {
  84. continue;
  85. }
  86. int startTime = DateUtil.timeToSecond(dutyEmpVo.getPeriodTime().split("~")[0]);
  87. int endTime = DateUtil.timeToSecond(dutyEmpVo.getPeriodTime().split("~")[1]);
  88. int requestStartTime = DateUtil.timeToSecond(bo.getPeriodTime().split("~")[0]);
  89. int requestendTime = DateUtil.timeToSecond(bo.getPeriodTime().split("~")[1]);
  90. if ((requestStartTime > startTime && requestStartTime < endTime) ||
  91. (requestendTime > startTime && requestendTime < endTime) ||
  92. (requestStartTime <= startTime && requestendTime >= endTime)) {
  93. throw new ServiceException(bo.getPeriodTime() + "存在重叠时间段,请检查!");
  94. }
  95. }
  96. if (StrUtil.isNotBlank(bo.getEmpJson())) {
  97. List<SysUser> users = JSONUtil.toList(StrUtil.blankToDefault(bo.getEmpJson(), "[]"), SysUser.class);
  98. String userNames = users.stream().map(SysUser::getNickName).collect(Collectors.joining(","));
  99. update.setEmpName(userNames);
  100. }
  101. return updateById(update);
  102. }
  103. @Override
  104. public Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid) {
  105. if (isValid) {
  106. //TODO 做一些业务上的校验,判断是否需要校验
  107. }
  108. return removeByIds(ids);
  109. }
  110. }