package com.ruoyi.web.controller.zhdd; import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.annotation.RepeatSubmit; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.validate.AddGroup; import com.ruoyi.common.core.validate.EditGroup; import com.ruoyi.common.core.validate.QueryGroup; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.zhdd.domain.DutyEmp; import com.ruoyi.zhdd.domain.bo.DutyEmpBo; import com.ruoyi.zhdd.domain.vo.DutyEmpVo; import com.ruoyi.zhdd.service.IDutyEmpService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletResponse; import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * 值班排班信息Controller * * @author xintong * @date 2021-10-11 */ @Validated @Api(value = "值班排班信息控制器", tags = {"值班排班信息管理"}) @RequiredArgsConstructor(onConstructor_ = @Autowired) @RestController @RequestMapping("/zhdd/dutyEmp") public class DutyEmpController extends BaseController { private final IDutyEmpService iDutyEmpService; /** * 查询值班排班信息列表 */ @ApiOperation("查询值班排班信息列表") @GetMapping("/list") public AjaxResult list(@Validated(QueryGroup.class) DutyEmpBo bo) { List dutyEmpVos = iDutyEmpService.listVo(Wrappers.lambdaQuery().orderByAsc(DutyEmp::getPeriod).orderByAsc(DutyEmp::getPeriodTime)); // 分组 Map> collect = dutyEmpVos.stream().collect(Collectors.groupingBy(DutyEmpVo::getPeriod)); // 排查1~7都有key for (int i = 1; i < 8; i++) { if (!collect.containsKey(i)) { collect.put(i, new ArrayList<>()); } } return AjaxResult.success(collect); } @ApiOperation("查询当前时间的排班人员") @GetMapping("/queryNowDutyEmp") public AjaxResult queryDutyEmpNow() { Map result = new HashMap<>(); // 当前星期 int week = DateUtil.thisDayOfWeek() - 1; if (week == 0) { week = 7; } // 当前时间 int nowTime = DateUtil.timeToSecond(DateUtil.formatTime(new Date()).substring(0, 5)); // 查询所有的排班数据 List dutyEmpVos = iDutyEmpService.listVo(Wrappers.lambdaQuery().orderByAsc(DutyEmp::getPeriod).orderByAsc(DutyEmp::getPeriodTime)); // 分组 Map> collect = dutyEmpVos.stream().collect(Collectors.groupingBy(DutyEmpVo::getPeriod)); for (int i = 1; i < 8; i++) { if (!collect.containsKey(i)) { collect.put(i, new ArrayList<>()); } } result.put("all", collect); result.put("current", null); List currentWeekList = collect.get(week); for (DutyEmpVo dutyEmpVo : currentWeekList) { int startTime = DateUtil.timeToSecond(dutyEmpVo.getPeriodTime().split("~")[0]); int endTime = DateUtil.timeToSecond(dutyEmpVo.getPeriodTime().split("~")[1]); if (nowTime >= startTime && nowTime <= endTime) { result.put("current", dutyEmpVo); break; } } return AjaxResult.success(result); } /** * 导出值班排班信息列表 */ @ApiOperation("导出值班排班信息列表") @Log(title = "值班排班信息", businessType = BusinessType.EXPORT) @GetMapping("/export") public void export(@Validated DutyEmpBo bo, HttpServletResponse response) { List list = iDutyEmpService.queryList(bo); ExcelUtil.exportExcel(list, "值班排班信息", DutyEmpVo.class, response); } /** * 获取值班排班信息详细信息 */ @ApiOperation("获取值班排班信息详细信息") @GetMapping("/{id}") public AjaxResult getInfo(@NotNull(message = "主键不能为空") @PathVariable("id") String id) { return AjaxResult.success(iDutyEmpService.queryById(id)); } /** * 新增值班排班信息 */ @ApiOperation("新增值班排班信息") @Log(title = "值班排班信息", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping() public AjaxResult add(@Validated(AddGroup.class) @RequestBody DutyEmpBo bo) { return toAjax(iDutyEmpService.insertByBo(bo) ? 1 : 0); } /** * 修改值班排班信息 */ @ApiOperation("修改值班排班信息") @Log(title = "值班排班信息", businessType = BusinessType.UPDATE) @RepeatSubmit() @PutMapping() public AjaxResult edit(@Validated(EditGroup.class) @RequestBody DutyEmpBo bo) { return toAjax(iDutyEmpService.updateByBo(bo) ? 1 : 0); } /** * 删除值班排班信息 */ @ApiOperation("删除值班排班信息") @Log(title = "值班排班信息", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public AjaxResult remove(@NotEmpty(message = "主键不能为空") @PathVariable String[] ids) { return toAjax(iDutyEmpService.deleteWithValidByIds(Arrays.asList(ids), true) ? 1 : 0); } }