gunshi-project-ss/src/main/java/com/gunshi/project/hsz/service/RotaService.java

104 lines
3.7 KiB
Java

package com.gunshi.project.hsz.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.gunshi.core.dateformat.DateFormatString;
import com.gunshi.project.hsz.entity.dto.RotaDto;
import com.gunshi.project.hsz.entity.dto.RotaUserDto;
import com.gunshi.project.hsz.entity.vo.RotaVo;
import com.gunshi.project.hsz.mapper.RotaBMapper;
import com.gunshi.project.hsz.model.RotaB;
import com.gunshi.project.hsz.util.DateUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* Description:
* Created by wanyan on 2024/3/25
*
* @author wanyan
* @version 1.0
*/
@Service
@Transactional(rollbackFor = Exception.class)
public class RotaService extends ServiceImpl<RotaBMapper, RotaB> {
public Map<String,List<RotaB>> query(String yearMonth) {
List<RotaB> list = this.baseMapper.query(yearMonth);
return list.stream().collect(Collectors.groupingBy(rota -> new SimpleDateFormat(DateFormatString.YYYY_MM_DD).format(rota.getRotaDate())));
}
public String editInfo(RotaDto RotaDto) {
Date rotaDate = RotaDto.getRotaDate();
//先删除该日期的所有信息
LambdaQueryWrapper<RotaB> queryWrapper = Wrappers.lambdaQuery();
queryWrapper.eq(RotaB::getRotaDate,rotaDate);
this.remove(queryWrapper);
if(RotaDto.getIsHoliday() != null && RotaDto.getIsHoliday() == 1){
RotaB rotaB = new RotaB();
BeanUtils.copyProperties(RotaDto,rotaB,RotaB.class);
rotaB.setId(IdWorker.getId());
this.save(rotaB);
return "设为放假日成功";
}
List<RotaUserDto> userDtoList = RotaDto.getUserDtoList();
List<RotaB> list = userDtoList.stream().map(o -> {
RotaB rotaB = new RotaB();
rotaB.setId(IdWorker.getId());
rotaB.setRotaDate(rotaDate);
rotaB.setIsHoliday(0);
rotaB.setRotaType(o.getRotaType());
rotaB.setUserId(o.getUserId());
return rotaB;
}).collect(Collectors.toList());
this.saveBatch(list);
return "设置值班信息成功";
}
public List<RotaB> dateList(String rotaDate) {
return this.baseMapper.dateList(rotaDate);
}
public Long checkPhone(String value){
return this.baseMapper.queryUser(value);
}
public void saveImportData(ArrayList<RotaVo> successArrayList) {
List<RotaB> list = new ArrayList<>();
for(RotaVo vo : successArrayList){
Date stm = vo.getStm();
Date etm = vo.getEtm();
List<Date> dates = DateUtil.getDatesBetween(stm, etm);
dates.stream().forEach(str->{
RotaB rotaB = new RotaB();
rotaB.setId(IdWorker.getId());
rotaB.setRotaDate(str);
rotaB.setIsHoliday(0);
rotaB.setRotaType(1);
rotaB.setUserId(vo.getLeaderUserId());
list.add(rotaB);
RotaB rota = new RotaB();
rota.setId(IdWorker.getId());
rota.setRotaDate(str);
rota.setIsHoliday(0);
rota.setRotaType(2);
rota.setUserId(vo.getDutyUserId());
list.add(rota);
});
}
this.saveOrUpdateBatch(list);
}
}