| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- package com.coffee.bus.controller;
- import cn.dev33.satoken.annotation.SaCheckPermission;
- import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
- import com.baomidou.mybatisplus.core.metadata.IPage;
- import com.coffee.bus.controller.vo.ClinicStatsVo;
- import com.coffee.bus.entity.*;
- import com.coffee.bus.registry.device.DeviceRegistry;
- import com.coffee.bus.service.*;
- import com.coffee.bus.service.dto.*;
- import com.coffee.common.exception.CustomException;
- import com.coffee.common.result.R;
- import io.swagger.annotations.Api;
- import io.swagger.annotations.ApiOperation;
- import lombok.AllArgsConstructor;
- import org.springframework.validation.annotation.Validated;
- import org.springframework.web.bind.annotation.*;
- import java.util.List;
- import java.util.Map;
- import java.util.concurrent.CompletableFuture;
- import java.util.stream.Collectors;
- /**
- * @author lifang
- * @version 1.0.0
- * @ClassName BusHospitalController.java
- * @Description TODO
- * @createTime 2022年03月19日 09:28:00
- */
- @RestController
- @AllArgsConstructor
- @RequestMapping("/bus/clinic")
- @Api(tags = "病人临床手术管理",description = "统一权限前缀(bus:clinic),例如新增bus:clinic:add")
- public class BusClinicController {
- private final LocalBusClinicService clinicService;
- private final LocalBusEvaluationService evaluationService;
- private final LocalBusInfusionHistoryService infusionHistoryService;
- private final LocalBusInfusionModifyService infusionModifyService;
- private final LocalBusDeviceHistoryService deviceHistoryService;
- private final DeviceRegistry deviceRegistry;
- @PostMapping("/stats")
- @ApiOperation(value = "临床过程中的数据记录",notes = "权限【无】")
- public R<ClinicStatsReturnResult> stats(@RequestBody ClinicStatsVo statsVo) {
- return R.success(clinicService.stats(statsVo));
- }
- @PostMapping("/page")
- @SaCheckPermission("bus:clinic:query")
- @ApiOperation(value = "临床管理分页查询",notes = "权限【bus:clinic:query】")
- public R<IPage<ClinicResult>> page(@RequestBody@Validated ClinicQuery query) {
- return R.success(clinicService.pageQuery(query));
- }
- @PostMapping("/anal/record/{clinicId}")
- @SaCheckPermission("bus:clinic:query")
- @ApiOperation(value = "查询临床信息的镇痛访视记录单",notes = "权限【bus:clinic:query】")
- public R<ClinicAnalRecordResult> analRecord(@PathVariable("clinicId") String clinicId){
- ClinicAnalRecordResult result = new ClinicAnalRecordResult();
- BusClinicEntity clinic = clinicService.getById(clinicId);
- if(clinic==null){
- throw new CustomException("该临床信息不存在");
- }
- //填充临床信息
- result.setClinic(ClinicAnalClinicRecord.parse(clinic));
- CompletableFuture
- .runAsync(()->{
- //填充评价记录
- result.setEvaluations(evaluationService.list(new QueryWrapper<BusEvaluationEntity>().lambda().eq(BusEvaluationEntity::getClinicId,clinicId).orderByAsc(BusEvaluationEntity::getEvaluateTime)));
- })
- .thenAcceptAsync(ignore->{
- //填充输注记录
- List<BusInfusionHistoryEntity> infusionHistories = infusionHistoryService.list(new QueryWrapper<BusInfusionHistoryEntity>().lambda()
- .eq(BusInfusionHistoryEntity::getClinicId, clinicId)
- .orderByAsc(BusInfusionHistoryEntity::getStartTime));
- //添加设备别名
- Map<String, List<BusInfusionHistoryEntity>> infusionByDeviceId = infusionHistories.stream().collect(Collectors.groupingBy(BusInfusionHistoryEntity::getDeviceId));
- infusionByDeviceId.forEach((deviceId,infusions)->{
- String alias = deviceRegistry.getOperator(deviceId).getAlias();
- infusions.forEach(infusion->infusion.setAlias(alias));
- });
- result.fillUndoInfo(infusionHistories);
- List<String> infusionIds = infusionHistories.stream().map(BusInfusionHistoryEntity::getId).collect(Collectors.toList());
- List<BusInfusionModifyEntity> infusionModifies = infusionModifyService.list(new QueryWrapper<BusInfusionModifyEntity>().lambda()
- .in(BusInfusionModifyEntity::getInfusionId, infusionIds));
- result.fillInfusionRecords(infusionHistories,infusionModifies);
- })
- .thenAccept(ignore->{
- List<String> infusionIds = result.getInfusionRecords().stream().map(ClinicAnalInfusionRecord::getId).collect(Collectors.toList());
- List<BusDeviceHistoryEntity> deviceHistories = deviceHistoryService.list(new QueryWrapper<BusDeviceHistoryEntity>()
- .lambda()
- .select(BusDeviceHistoryEntity::getInfusionId,BusDeviceHistoryEntity::getPcaValidCount,BusDeviceHistoryEntity::getInfusionModifyId,
- BusDeviceHistoryEntity::getPcaInvalidCount,BusDeviceHistoryEntity::getInputDose,BusDeviceHistoryEntity::getUploadTime)
- .in(BusDeviceHistoryEntity::getInfusionId, infusionIds)
- .eq(BusDeviceHistoryEntity::getMaster, true));
- //标记输注
- result.markInfusion(deviceHistories);
- List<ClinicStatsQueryResult> statsQueryResults = deviceHistories.stream().map(history -> {
- ClinicStatsQueryResult statsQueryResult = new ClinicStatsQueryResult();
- statsQueryResult.setInputDose(history.getInputDose());
- statsQueryResult.setInValidCount(history.getPcaInvalidCount());
- statsQueryResult.setValidCount(history.getPcaValidCount());
- statsQueryResult.setUploadTime(history.getUploadTime());
- return statsQueryResult;
- }).collect(Collectors.toList());
- //填充统计信息
- result.setStats(ClinicStatsReturnResult.of(statsQueryResults));
- })
- .join();
- return R.success(result);
- }
- }
|