JAVA全系列 教程
3762个小节阅读:7093.6k
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
序号 | 接口名称 | 接口地址 | 请求类型 |
---|---|---|---|
1 | 查询待排班医生信息 | /doctor/scheduling/queryUsersNeedScheduling | get |
2 | 查询当前登录人的排班信息 | /doctor/scheduling/queryMyScheduling | get |
3 | 保存排班信息 | /doctor/scheduling/saveScheduling | post |
返回JSON数据
名称 | 类型 | 其他信息 |
---|---|---|
msg | String | |
code | int | |
data | object [] | item 类型: object |
├─ userId | int | |
├─ deptId | int | |
├─ userName | String | |
├─ userType | String | |
├─ sex | String | |
├─ age | int | |
├─ picture | String | |
├─ background | String | |
├─ phone | String | |
String | ||
├─ strong | String | |
├─ honor | String | |
├─ introduction | String | |
├─ userRank | String | |
├─ lastLoginTime | String | |
├─ lastLoginIp | String | |
├─ status | String | |
├─ createTime | String | |
├─ updateTime | String | |
├─ createBy | String | |
├─ updateBy | String | |
├─ schedulingFlag | String |
SchedulingDto
xpackage com.bjsxt.dto;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Collection;
import java.util.Map;
/**
*
* 封装页面需要的数据
*/
value="com-bjsxt-dto-SchedulingDto") (
public class SchedulingDto implements Serializable {
private Long userId;
private Long deptId;
private String subsectionType;//上午1 下午2 晚上3
private Collection<String> schedulingType;//存放周一到周日的subsectionType时间段 是门诊还是急诊的数据
//存放星期值班的记录 key 指日期 周一到周日的日期字符串 value 有值就1 2 没有值就""
private Map<String,String> record;
/**
* 构造器
* @param userId
* @param deptId
* @param subsectionType
* @param record
*/
public SchedulingDto(Long userId, Long deptId, String subsectionType, Map<String, String> record) {
this.userId = userId;
this.deptId = deptId;
this.subsectionType = subsectionType;
this.record = record;
}
}
xxxxxxxxxx
package com.bjsxt.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.bjsxt.domain.Scheduling;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
*
*/
public interface SchedulingMapper extends BaseMapper<Scheduling> {
}
SchedulingMapper.xml
xxxxxxxxxx
<mapper namespace="com.bjsxt.mapper.SchedulingMapper">
<resultMap id="BaseResultMap" type="com.bjsxt.domain.Scheduling">
<!--@mbg.generated-->
<!--@Table his_scheduling-->
<result column="user_id" jdbcType="INTEGER" property="userId"/>
<result column="dept_id" jdbcType="INTEGER" property="deptId"/>
<result column="scheduling_day" jdbcType="VARCHAR" property="schedulingDay"/>
<result column="subsection_type" jdbcType="CHAR" property="subsectionType"/>
<result column="scheduling_type" jdbcType="CHAR" property="schedulingType"/>
<result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
<result column="create_by" jdbcType="VARCHAR" property="createBy"/>
</resultMap>
<sql id="Base_Column_List">
<!--@mbg.generated-->
user_id, dept_id, scheduling_day, subsection_type, scheduling_type, create_time,
create_by
</sql>
</mapper>
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
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 ...
/**
*
*/
"doctor/scheduling") (
public class SchedulingController {
private SchedulingService schedulingService;
private UserService userService;
/**
* 查询要排班的医生信息
* 如果部门ID为空,那么查询所有要排班的用户信息
*/
"queryUsersNeedScheduling") (
public AjaxResult queryUsersNeedScheduling(Long deptId) {
List<User> users = this.userService.queryUsersNeedScheduling(null, deptId);
return AjaxResult.success(users);
}
/**
* 查询要排班的医生的排班信息
*/
"queryScheduling") (
public AjaxResult queryScheduling(SchedulingQueryDto schedulingQueryDto) {
//根据部门ID用户ID查询用户信息 如果用户ID和部门ID都为空,那么就查询所有要排班的用户信息
List<User> users = userService.queryUsersNeedScheduling(schedulingQueryDto.getUserId(), schedulingQueryDto.getDeptId());
return getSchedulingAjaxResult(schedulingQueryDto, users);
}
/**
* 查询当前登陆用户的的排班信息
*/
"queryMyScheduling") (
public AjaxResult queryMyScheduling(SchedulingQueryDto schedulingQueryDto) {
//根据部门ID用户ID查询用户信息 如果用户ID和部门ID都为空,那么就查询所有要排班的用户信息
List<User> users = userService.queryUsersNeedScheduling(Long.valueOf(ShiroSecurityUtils.getCurrentSimpleUser().getUserId().toString()), schedulingQueryDto.getDeptId());
return getSchedulingAjaxResult(schedulingQueryDto, 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);
}
/**
* 保存排班数据
*/
"saveScheduling") (
public AjaxResult saveScheduling( SchedulingFormDto schedulingFormDto){
schedulingFormDto.setSimpleUser(ShiroSecurityUtils.getCurrentSimpleUser());
return AjaxResult.toAjax(this.schedulingService.saveScheduling(schedulingFormDto));
}
}
查询待排班医生信息/doctor/scheduling/queryUsersNeedScheduling