JAVA全系列 教程
3762个小节阅读:7092.3k
目录
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
参数名称 | 是否必须 |
---|---|
queryDate | 否 |
返回JSON数据
名称 | 类型 | 其他信息 |
---|---|---|
msg | String | |
code | int | |
data | object | |
├─ labelNames | String [] | item 类型: String |
├─ schedulingData | object | |
├─ endTimeThisWeek | String | |
├─ startTimeThisWeek | String | |
├─ tableData | object [] | item 类型: object |
├─ userId | int | |
├─ deptId | int | |
├─ subsectionType | String | |
├─ schedulingType | String [] | item 类型: String |
创建Scheduling、SchedulingDto
创建SchedulingMapper、SchedulingMapper.xml
xxxxxxxxxx
package com.bjsxt.service;
import com.bjsxt.domain.Scheduling;
import com.bjsxt.dto.SchedulingFormDto;
import com.bjsxt.dto.SchedulingQueryDto;
import java.util.List;
/**
*
*/
public interface SchedulingService{
/**
* 查询排班数据
* @param schedulingQueryDto
* @return
*/
List<Scheduling> queryScheduling(SchedulingQueryDto schedulingQueryDto);
/**
* 保存排班数据
* @param schedulingFormDto
* @return
*/
int saveScheduling(SchedulingFormDto schedulingFormDto);
}
增加查询待排班医生方法
xxxxxxxxxx
@Override
public List<User> queryUsersNeedScheduling(Long userId,Long deptId) {
QueryWrapper<User> qw=new QueryWrapper<>();
qw.eq(deptId!=null,User.COL_DEPT_ID,deptId);
qw.eq(userId!=null,User.COL_USER_ID,userId);
qw.eq(User.COL_SCHEDULING_FLAG,Constants.SCHEDULING_FLAG_TRUE);//需要排班的
qw.eq(User.COL_STATUS,Constants.STATUS_TRUE);//可用的用户
return this.userMapper.selectList(qw);
}
xxxxxxxxxx
package com.bjsxt.controller.doctor;
import ...
/**
*
*/
@RestController
@RequestMapping("doctor/scheduling")
public class SchedulingController {
@Reference
private SchedulingService schedulingService;
@Autowired
private UserService userService;
/**
* 查询要排班的医生信息
* 如果部门ID为空,那么查询所有要排班的用户信息
*/
@GetMapping("queryUsersNeedScheduling")
public AjaxResult queryUsersNeedScheduling(Long deptId) {
List<User> users = this.userService.queryUsersNeedScheduling(null, deptId);
return AjaxResult.success(users);
}
/**
* 核心的构造页面数据的方法
*
* @param schedulingQueryDto
* @param users
* @return
*/
private AjaxResult getSchedulingAjaxResult(SchedulingQueryDto schedulingQueryDto, List<User> users) {
//得到当前时间
Date date = DateUtil.date();
if (StringUtils.isNotBlank(schedulingQueryDto.getQueryDate())) {
date = DateUtil.parse(schedulingQueryDto.getQueryDate(), "yyyy-MM-dd");
//根据传过来的日期判断是周几
int i = DateUtil.dayOfWeek(date);//1表示周日,2表示周一
if (i == 1) {
date = DateUtil.offsetDay(date, 1);//下一周的周一的日期
} else {
date = DateUtil.offsetDay(date, -1);//上一周的周天的日期
}
}
//计算一周的开始日期和结束日期
DateTime beginTime = DateUtil.beginOfWeek(date);
DateTime endTime = DateUtil.endOfWeek(date);
//设置开始日期和结束日期到schedulingQueryDto
schedulingQueryDto.setBeginDate(DateUtil.format(beginTime, "yyyy-MM-dd"));
schedulingQueryDto.setEndDate(DateUtil.format(endTime, "yyyy-MM-dd"));
//根据开始时间和结束时间去查询数据库里面存在的数据
List<Scheduling> list = this.schedulingService.queryScheduling(schedulingQueryDto);
//存放页面需要的数据的对象
List<SchedulingDto> schedulingDtos = new ArrayList<>();
//根据用户来循环
for (User user : users) {
SchedulingDto schedulingDto1 = new SchedulingDto(user.getUserId(), user.getDeptId(), "1", initMap(beginTime));
SchedulingDto schedulingDto2 = new SchedulingDto(user.getUserId(), user.getDeptId(), "2", initMap(beginTime));
SchedulingDto schedulingDto3 = new SchedulingDto(user.getUserId(), user.getDeptId(), "3", initMap(beginTime));
//一个用户的循环放三条数据
schedulingDtos.add(schedulingDto1);
schedulingDtos.add(schedulingDto2);
schedulingDtos.add(schedulingDto3);
for (Scheduling scheduling : list) {
Long userId = scheduling.getUserId();//获取数据库的用户ID
String subsectionType = scheduling.getSubsectionType();//得到早中晚的类型
String schedulingDay = scheduling.getSchedulingDay();//值班日期
if (user.getUserId().equals(userId)) {
switch (subsectionType) {
case "1":
Map<String, String> record1 = schedulingDto1.getRecord();
record1.put(schedulingDay, scheduling.getSchedulingType());
break;
case "2":
Map<String, String> record2 = schedulingDto2.getRecord();
record2.put(schedulingDay, scheduling.getSchedulingType());
break;
case "3":
Map<String, String> record3 = schedulingDto3.getRecord();
record3.put(schedulingDay, scheduling.getSchedulingType());
break;
}
}
}
//把map转成数组数据放到schedulingType
schedulingDto1.setSchedulingType(schedulingDto1.getRecord().values());
schedulingDto2.setSchedulingType(schedulingDto2.getRecord().values());
schedulingDto3.setSchedulingType(schedulingDto3.getRecord().values());
}
//组装返回的对象
Map<String, Object> resMap = new HashMap<>();
resMap.put("tableData", schedulingDtos);
Map<String, Object> schedulingData = new HashMap<>();
schedulingData.put("startTimeThisWeek", schedulingQueryDto.getBeginDate());
schedulingData.put("endTimeThisWeek", schedulingQueryDto.getEndDate());
resMap.put("schedulingData", schedulingData);
resMap.put("labelNames", initLabel(beginTime));
return AjaxResult.success(resMap);
}
}
查询当前登录人的排班信息/doctor/scheduling/queryMyScheduling