提交 11619fea 编写于 作者: 别团等shy哥发育's avatar 别团等shy哥发育

根据医院编号和科室编号查询排版规则

上级 c79bb95c
......@@ -50,6 +50,11 @@
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
</dependency>
<!--日期时间工具-->
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
</dependency>
</dependencies>
......
package com.atguigu.yygu.hosp.controller;
import com.atguigu.yygu.common.result.Result;
import com.atguigu.yygu.hosp.service.ScheduleService;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
@RestController
@RequestMapping("/admin/hosp/Schedule")
@CrossOrigin
public class ScheduleController {
@Autowired
private ScheduleService scheduleService;
//根据医院编号和科室编号查询排版规则
@ApiOperation(value = "根据医院编号和科室编号查询排版规则")
@GetMapping("getScheduleRule/{page}/{limit}/{hoscode}/{depcode}")
public Result getScheduleRule(@PathVariable long page,
@PathVariable long limit,
@PathVariable String hoscode,
@PathVariable String depcode){
Map<String,Object> map = scheduleService.getRuleSchedule(page,limit,hoscode,depcode);
return Result.ok(map);
}
}
......@@ -21,4 +21,7 @@ public interface HospitalService {
//医院详情信息
Map<String,Object> getHospById(String id);
//根据医院编号获取医院名称
String getHospName(String hoscode);
}
......@@ -15,4 +15,7 @@ public interface ScheduleService {
//删除排班接口
void remove(String hoscode, String hosScheduleId);
//根据医院编号和科室编号查询排版规则
Map<String, Object> getRuleSchedule(long page, long limit, String hoscode, String depcode);
}
......@@ -106,6 +106,16 @@ public class HospitalServiceImpl implements HospitalService {
return result;
}
//根据医院编号获取医院名称
@Override
public String getHospName(String hoscode) {
Hospital hospital = hospitalRepository.getHospitalByHoscode(hoscode);
if(hospital!=null){
return hospital.getHosname();
}
return null;
}
//获取查询list集合,遍历进行医院等级封装
private Hospital setHospitalHosType(Hospital hospital) {
//根据dictCode和value获取医院等级名称
......
......@@ -2,15 +2,25 @@ package com.atguigu.yygu.hosp.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.atguigu.yygh.model.hosp.Schedule;
import com.atguigu.yygh.vo.hosp.BookingScheduleRuleVo;
import com.atguigu.yygh.vo.hosp.ScheduleQueryVo;
import com.atguigu.yygu.hosp.repository.ScheduleRepository;
import com.atguigu.yygu.hosp.service.HospitalService;
import com.atguigu.yygu.hosp.service.ScheduleService;
import org.joda.time.DateTime;
import org.joda.time.DateTimeConstants;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.*;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.aggregation.Aggregation;
import org.springframework.data.mongodb.core.aggregation.AggregationResults;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
......@@ -19,6 +29,12 @@ public class ScheduleServiceImpl implements ScheduleService {
@Autowired
private ScheduleRepository scheduleRepository;
@Autowired
private MongoTemplate mongoTemplate;
@Autowired
private HospitalService hospitalService;
//上传排班接口
@Override
public void save(Map<String, Object> paramMap) {
......@@ -77,4 +93,93 @@ public class ScheduleServiceImpl implements ScheduleService {
}
//根据医院编号和科室编号查询排版规则
@Override
public Map<String, Object> getRuleSchedule(long page, long limit, String hoscode, String depcode) {
//1、根据医院编号和科室编号查询
Criteria criteria=Criteria.where("hoscode").is(hoscode).and("depcode").is(depcode);
//2、根据工作日期workDate进行分组
Aggregation agg=Aggregation.newAggregation(
Aggregation.match(criteria), //匹配条件
Aggregation.group("workDate") //分组字段
.first("workDate").as("workDate")
//3、统计号源数量
.count().as("docCount")
.sum("reservedNumber").as("reservedNumber")
.sum("availableNumber").as("availableNumber"),
//排序
Aggregation.sort(Sort.Direction.DESC,"workDate"),
//4、实现分页
Aggregation.skip((page-1)*limit),
Aggregation.limit(limit)
);
//调用方法,最终执行
AggregationResults<BookingScheduleRuleVo> aggResults =
mongoTemplate.aggregate(agg, Schedule.class, BookingScheduleRuleVo.class);
List<BookingScheduleRuleVo> bookingScheduleRuleVoList = aggResults.getMappedResults();
//分组查询的总记录数
Aggregation totalAgg=Aggregation.newAggregation(
Aggregation.match(criteria),
Aggregation.group("workDate")
);
AggregationResults<BookingScheduleRuleVo> totalAggResults =
mongoTemplate.aggregate(totalAgg, Schedule.class, BookingScheduleRuleVo.class);
int total = totalAggResults.getMappedResults().size();
//把日期对应星期获取出来
bookingScheduleRuleVoList.forEach(bookingScheduleRuleVo -> {
Date workDate=bookingScheduleRuleVo.getWorkDate();
String dayOfWeek = this.getDayOfWeek(new DateTime(workDate));
bookingScheduleRuleVo.setDayOfWeek(dayOfWeek);
});
//设置最终数据,进行返回
Map<String,Object> result = new HashMap<>();
result.put("bookingScheduleRuleList",bookingScheduleRuleVoList);
result.put("total",total);
//获取医院名称
String hosName=hospitalService.getHospName(hoscode);
//其他基础数据
Map<String, String> baseMap = new HashMap<>();
baseMap.put("hosName",hosName);
result.put("baseMap",baseMap);
return result;
}
/**
* 根据日期获取周几数据
* @param dateTime
* @return
*/
private String getDayOfWeek(DateTime dateTime) {
String dayOfWeek = "";
switch (dateTime.getDayOfWeek()) {
case DateTimeConstants.SUNDAY:
dayOfWeek = "周日";
break;
case DateTimeConstants.MONDAY:
dayOfWeek = "周一";
break;
case DateTimeConstants.TUESDAY:
dayOfWeek = "周二";
break;
case DateTimeConstants.WEDNESDAY:
dayOfWeek = "周三";
break;
case DateTimeConstants.THURSDAY:
dayOfWeek = "周四";
break;
case DateTimeConstants.FRIDAY:
dayOfWeek = "周五";
break;
case DateTimeConstants.SATURDAY:
dayOfWeek = "周六";
default:
break;
}
return dayOfWeek;
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册