package com.gkhy.safePlatform.account.service.impl;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.gkhy.safePlatform.account.entity.schedule.BreakTimeGroupInfo;
|
import com.gkhy.safePlatform.account.entity.schedule.TimeStrategyInfo;
|
import com.gkhy.safePlatform.account.entity.schedule.WorkTimeGroupInfo;
|
import com.gkhy.safePlatform.account.enums.ScheduleStatusEnum;
|
import com.gkhy.safePlatform.account.model.dto.req.DeleteDTO;
|
import com.gkhy.safePlatform.account.model.dto.req.TimeStrategyReqDTO;
|
import com.gkhy.safePlatform.account.model.dto.resp.BreakTimeGroupRespDTO;
|
import com.gkhy.safePlatform.account.model.dto.resp.TimeStrategyRespDTO;
|
import com.gkhy.safePlatform.account.model.dto.resp.WorkTimeGroupRespDTO;
|
import com.gkhy.safePlatform.account.service.BreakTimeService;
|
import com.gkhy.safePlatform.account.service.TimeStrategyService;
|
import com.gkhy.safePlatform.account.service.WorkTimeService;
|
import com.gkhy.safePlatform.account.service.baseService.BreakTimeGroupInfoService;
|
import com.gkhy.safePlatform.account.service.baseService.GroupStrategyInfoService;
|
import com.gkhy.safePlatform.account.service.baseService.TimeStrategyInfoSerive;
|
import com.gkhy.safePlatform.account.service.baseService.WorkTimeGroupInfoService;
|
import com.gkhy.safePlatform.commons.co.ContextCacheUser;
|
import com.gkhy.safePlatform.commons.enums.E;
|
import com.gkhy.safePlatform.commons.enums.ResultCodes;
|
import com.gkhy.safePlatform.commons.exception.AusinessException;
|
import com.gkhy.safePlatform.commons.exception.BusinessException;
|
import com.gkhy.safePlatform.commons.query.PageQuery;
|
import com.gkhy.safePlatform.commons.vo.ResultVO;
|
import com.gkhy.safePlatform.commons.vo.SearchResultVO;
|
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
|
@Service
|
public class TimeStrategyServiceImpl implements TimeStrategyService {
|
@Autowired
|
private TimeStrategyInfoSerive timeStrategyInfoSerive;
|
@Autowired
|
private WorkTimeService workTimeService;
|
@Autowired
|
private BreakTimeService breakTimeService;
|
@Autowired
|
private WorkTimeGroupInfoService workTimeGroupInfoService;
|
@Autowired
|
private BreakTimeGroupInfoService breakTimeGroupInfoService;
|
@Autowired
|
private GroupStrategyInfoService groupStrategyInfoService;
|
/**
|
*
|
* 新增时间策略
|
* @param currentUser
|
* @param timeStrategyReqDTO
|
* @return
|
*/
|
public ResultVO<TimeStrategyInfo> addTimeStrategy(ContextCacheUser currentUser, TimeStrategyReqDTO timeStrategyReqDTO) {
|
ResultVO resultVO = new ResultVO<>();
|
resultVO.setCode("200");
|
resultVO.setMsg("添加成功!");
|
BreakTimeGroupInfo breakTimeGroupInfo = this.breakTimeGroupInfoService.getById(timeStrategyReqDTO.getBreakTimeGroupId());
|
if(null == breakTimeGroupInfo){
|
throw new AusinessException(E.DATA_PARAM_NULL, "休息时间组id不存在");
|
}
|
WorkTimeGroupInfo workTimeGroupInfo = this.workTimeGroupInfoService.getWorkTimeGroupById(timeStrategyReqDTO.getWorkTimeGroupId());
|
if(null == workTimeGroupInfo){
|
throw new AusinessException(E.DATA_PARAM_NULL, "工作时间组id不存在");
|
}
|
TimeStrategyInfo timeStrategyInfo = new TimeStrategyInfo();
|
//复制
|
BeanUtils.copyProperties(timeStrategyReqDTO,timeStrategyInfo);
|
timeStrategyInfo.setCreateUid(currentUser.getUid());
|
timeStrategyInfo.setGmtCreate(new Date());
|
timeStrategyInfo.setCreateBy(currentUser.getRealName());
|
|
int flag = timeStrategyInfoSerive.addTimeStrategy(timeStrategyInfo);
|
if (0 != flag){
|
return resultVO;
|
}
|
return new ResultVO<>(ResultCodes.SERVER_ADD_ERROR);
|
|
}
|
/**
|
* 修改时间策略
|
*/
|
@Override
|
public ResultVO<TimeStrategyInfo> updateTimeStrategy(ContextCacheUser currentUser, TimeStrategyReqDTO timeStrategyReqDTO) {
|
ResultVO resultVO = new ResultVO<>();
|
resultVO.setCode("200");
|
resultVO.setMsg("修改成功!");
|
BreakTimeGroupInfo breakTimeGroupInfo = this.breakTimeGroupInfoService.getById(timeStrategyReqDTO.getBreakTimeGroupId());
|
if(null == breakTimeGroupInfo){
|
throw new AusinessException(E.DATA_PARAM_NULL, "休息时间组id不存在");
|
}
|
WorkTimeGroupInfo workTimeGroupInfo = this.workTimeGroupInfoService.getWorkTimeGroupById(timeStrategyReqDTO.getWorkTimeGroupId());
|
if(null == workTimeGroupInfo){
|
throw new AusinessException(E.DATA_PARAM_NULL, "工作时间组id不存在");
|
}
|
TimeStrategyInfo timeStrategyInfo = new TimeStrategyInfo();
|
//复制
|
BeanUtils.copyProperties(timeStrategyReqDTO,timeStrategyInfo);
|
//判断关键字是否为空
|
if(null == timeStrategyInfo.getId()){
|
throw new BusinessException(ResultCodes.CLIENT_PARAM_NULL);
|
}
|
timeStrategyInfo.setEditUid(currentUser.getUid());
|
timeStrategyInfo.setGmtModified(new Date());
|
timeStrategyInfo.setEditBy(currentUser.getRealName());
|
int flag = timeStrategyInfoSerive.updateTimeStrategy(timeStrategyInfo);
|
if (0 != flag){
|
return resultVO;
|
}
|
return new ResultVO<>(ResultCodes.SERVER_UPDATE_ERROR);
|
|
}
|
/**
|
* 删除时间策略
|
*/
|
@Override
|
public ResultVO<TimeStrategyInfo> deleteTimeStrategy(Long id) {
|
ResultVO resultVO = new ResultVO<>();
|
resultVO.setCode("200");
|
resultVO.setMsg("删除成功!");
|
|
//判断关键字是否为空
|
if(null == id){
|
throw new BusinessException(ResultCodes.CLIENT_PARAM_NULL);
|
}
|
//判断是否被班组策略绑定
|
long count = groupStrategyInfoService.countGroupStrategyInfoByTimeStrategyId(id);
|
if (count > 0) {
|
throw new AusinessException(E.DATA_BING_RELATION, "已绑定班组策略不可删除!");
|
}
|
TimeStrategyInfo timeStrategyInfo = new TimeStrategyInfo();
|
timeStrategyInfo.setId(id);
|
timeStrategyInfo.setStatus(ScheduleStatusEnum.STATUS_NOT_ACTIVE.getStatus());
|
int flag = timeStrategyInfoSerive.updateTimeStrategy(timeStrategyInfo);
|
if (0 != flag){
|
return resultVO;
|
}
|
return new ResultVO<>(ResultCodes.SERVER_DEL_ERROR);
|
}
|
/**
|
* 根据id查询数据
|
*/
|
@Override
|
public ResultVO<TimeStrategyInfo> getTimeStrategyById(Long id) {
|
ResultVO resultVO = new ResultVO<>();
|
resultVO.setCode("200");
|
resultVO.setMsg("查询成功!");
|
|
//判断关键字是否为空
|
if(null == id){
|
throw new BusinessException(ResultCodes.CLIENT_PARAM_NULL);
|
}
|
|
TimeStrategyInfo timeStrategyVo = timeStrategyInfoSerive.getTimeStrategyById(id);
|
|
if(null == timeStrategyVo){
|
resultVO.setData(null);
|
return resultVO;
|
|
}
|
TimeStrategyRespDTO timeStrategyRespDTO = new TimeStrategyRespDTO();
|
BeanUtils.copyProperties(timeStrategyVo,timeStrategyRespDTO);
|
//获取工作时间组信息
|
ResultVO<WorkTimeGroupInfo> resultWorkTimeGroup = workTimeService.getWorkTimeGroupById(timeStrategyRespDTO.getWorkTimeGroupId());
|
//获取休息时间组信息
|
ResultVO<BreakTimeGroupInfo> resultBreakTimeGroup = breakTimeService.getBreakTimeGroupById(timeStrategyRespDTO.getBreakTimeGroupId());
|
timeStrategyRespDTO.setWorkTimeGroupRespDTO((WorkTimeGroupRespDTO)resultWorkTimeGroup.getData());
|
timeStrategyRespDTO.setBreakTimeGroupRespDTO((BreakTimeGroupRespDTO)resultBreakTimeGroup.getData());
|
resultVO.setData(timeStrategyRespDTO);
|
return resultVO;
|
|
}
|
|
/**
|
* 查询所有时间策略数据
|
*/
|
@Override
|
public ResultVO<TimeStrategyInfo> getAllTimeStrategyInfo(TimeStrategyReqDTO timeStrategyReqDTO) {
|
ResultVO resultVO = new ResultVO<>();
|
resultVO.setCode("200");
|
resultVO.setMsg("查询成功!");
|
TimeStrategyInfo timeStrategyInfo = new TimeStrategyInfo();
|
//复制
|
BeanUtils.copyProperties(timeStrategyReqDTO,timeStrategyInfo);
|
|
List<TimeStrategyInfo> list = timeStrategyInfoSerive.getAllTimeStrategyInfo(timeStrategyInfo);
|
List<TimeStrategyRespDTO> timeStrategyRespDTOS = new ArrayList<>();
|
list.stream().forEach(item ->{
|
TimeStrategyRespDTO timeStrategyRespDTO = new TimeStrategyRespDTO();
|
BeanUtils.copyProperties(item,timeStrategyRespDTO);
|
|
if(null != item.getBreakTimeGroupId()){
|
timeStrategyRespDTO.setBreakTimeGroupRespDTO((BreakTimeGroupRespDTO)breakTimeService.getBreakTimeGroupById(item.getBreakTimeGroupId()).getData());
|
}
|
if(null != item.getWorkTimeGroupId()){
|
timeStrategyRespDTO.setWorkTimeGroupRespDTO( (WorkTimeGroupRespDTO)workTimeService.getWorkTimeGroupById(item.getWorkTimeGroupId()).getData());
|
}
|
timeStrategyRespDTOS.add(timeStrategyRespDTO);
|
});
|
resultVO.setData(timeStrategyRespDTOS);
|
return resultVO;
|
|
}
|
|
/**
|
* 分页查询
|
* @param pageQuery
|
* @return
|
*/
|
@Override
|
public SearchResultVO<List<TimeStrategyRespDTO>> getAllTimeStrategyByPage(PageQuery<TimeStrategyReqDTO> pageQuery) {
|
|
if (null == pageQuery.getPageIndex() || null == pageQuery.getPageSize()) {
|
throw new AusinessException(E.DATA_STATUS_NOT_EXIST, "当前页或者页数不能为空");
|
}
|
Page<TimeStrategyInfo> page = new Page(pageQuery.getPageIndex(), pageQuery.getPageSize());
|
|
TimeStrategyInfo timeStrategyInfo = new TimeStrategyInfo();
|
if (null != pageQuery.getSearchParams()) {
|
//复制数据
|
BeanUtils.copyProperties(pageQuery.getSearchParams(), timeStrategyInfo);
|
}
|
List<TimeStrategyInfo> list = timeStrategyInfoSerive.getAllTimeStrategyByPage(page, timeStrategyInfo);
|
List<TimeStrategyRespDTO> timeStrategyRespDTOS = new ArrayList<>();
|
list.stream().forEach(item -> {
|
TimeStrategyRespDTO timeStrategyRespDTO = new TimeStrategyRespDTO();
|
BeanUtils.copyProperties(item, timeStrategyRespDTO);
|
|
if (null != item.getBreakTimeGroupId()) {
|
timeStrategyRespDTO.setBreakTimeGroupRespDTO((BreakTimeGroupRespDTO) breakTimeService.getBreakTimeGroupById(item.getBreakTimeGroupId()).getData());
|
}
|
if (null != item.getWorkTimeGroupId()) {
|
timeStrategyRespDTO.setWorkTimeGroupRespDTO((WorkTimeGroupRespDTO) workTimeService.getWorkTimeGroupById(item.getWorkTimeGroupId()).getData());
|
}
|
timeStrategyRespDTOS.add(timeStrategyRespDTO);
|
});
|
|
return new SearchResultVO<>(
|
true,
|
page.getCurrent(),
|
page.getSize(),
|
page.getPages(),
|
page.getTotal(),
|
timeStrategyRespDTOS,
|
ResultCodes.OK);
|
}
|
|
/**
|
* 批量删除
|
* @param deleteDTO
|
* @return
|
*/
|
@Override
|
public ResultVO deleteBatchTimeStrategy(DeleteDTO deleteDTO) {
|
|
if(null == deleteDTO.getIds()){
|
throw new BusinessException(ResultCodes.CLIENT_PARAM_NULL);
|
}
|
//获取班组策略
|
List<TimeStrategyInfo> list = new ArrayList<>();
|
deleteDTO.getIds().stream().forEach(id ->{
|
long count = groupStrategyInfoService.countGroupStrategyInfoByTimeStrategyId(id);
|
if (count > 0) {
|
throw new AusinessException(E.DATA_BING_RELATION, "已绑定班组策略不可删除!");
|
}
|
TimeStrategyInfo timeStrategyInfo = new TimeStrategyInfo();
|
timeStrategyInfo.setStatus(ScheduleStatusEnum.STATUS_NOT_ACTIVE.getStatus());
|
timeStrategyInfo.setId(id);
|
list.add(timeStrategyInfo);
|
});
|
timeStrategyInfoSerive.updateBatchById(list);
|
return new ResultVO("200","删除成功!");
|
}
|
|
|
}
|