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 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 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 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 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 resultWorkTimeGroup = workTimeService.getWorkTimeGroupById(timeStrategyRespDTO.getWorkTimeGroupId()); //获取休息时间组信息 ResultVO resultBreakTimeGroup = breakTimeService.getBreakTimeGroupById(timeStrategyRespDTO.getBreakTimeGroupId()); timeStrategyRespDTO.setWorkTimeGroupRespDTO((WorkTimeGroupRespDTO)resultWorkTimeGroup.getData()); timeStrategyRespDTO.setBreakTimeGroupRespDTO((BreakTimeGroupRespDTO)resultBreakTimeGroup.getData()); resultVO.setData(timeStrategyRespDTO); return resultVO; } /** * 查询所有时间策略数据 */ @Override public ResultVO getAllTimeStrategyInfo(TimeStrategyReqDTO timeStrategyReqDTO) { ResultVO resultVO = new ResultVO<>(); resultVO.setCode("200"); resultVO.setMsg("查询成功!"); TimeStrategyInfo timeStrategyInfo = new TimeStrategyInfo(); //复制 BeanUtils.copyProperties(timeStrategyReqDTO,timeStrategyInfo); List list = timeStrategyInfoSerive.getAllTimeStrategyInfo(timeStrategyInfo); List 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> getAllTimeStrategyByPage(PageQuery pageQuery) { if (null == pageQuery.getPageIndex() || null == pageQuery.getPageSize()) { throw new AusinessException(E.DATA_STATUS_NOT_EXIST, "当前页或者页数不能为空"); } Page page = new Page(pageQuery.getPageIndex(), pageQuery.getPageSize()); TimeStrategyInfo timeStrategyInfo = new TimeStrategyInfo(); if (null != pageQuery.getSearchParams()) { //复制数据 BeanUtils.copyProperties(pageQuery.getSearchParams(), timeStrategyInfo); } List list = timeStrategyInfoSerive.getAllTimeStrategyByPage(page, timeStrategyInfo); List 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 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","删除成功!"); } }