diff --git a/pom.xml b/pom.xml
index 2c99985..0126bbd 100644
--- a/pom.xml
+++ b/pom.xml
@@ -9,10 +9,10 @@
com.example
- springbootDemo
+ docus_recovery
0.0.1-SNAPSHOT
- springbootDemo
- springbootDemo
+ docus_recovery
+ docus_recovery
1.8
true
diff --git a/src/main/java/com/example/duplicate/controller/RcvBasicController.java b/src/main/java/com/example/duplicate/controller/RcvBasicController.java
index 18e7eba..8032945 100644
--- a/src/main/java/com/example/duplicate/controller/RcvBasicController.java
+++ b/src/main/java/com/example/duplicate/controller/RcvBasicController.java
@@ -1,8 +1,10 @@
package com.example.duplicate.controller;
+import com.example.duplicate.controller.param.EmrRateRequest;
import com.example.duplicate.controller.param.PageRequest;
import com.example.duplicate.controller.param.RcvPageRequest;
+import com.example.duplicate.controller.vo.EmrRateVo;
import com.example.duplicate.controller.vo.ExportBasic;
import com.example.duplicate.controller.vo.PageBasic;
import com.example.duplicate.service.RcvBasicService;
@@ -18,7 +20,6 @@ import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
@@ -68,4 +69,12 @@ public class RcvBasicController {
}
}
+ @ApiOperation("归档率导出")
+ @PostMapping("/exportEmrRate")
+ public CommonResult> ExportEmrRate(@RequestBody EmrRateRequest emrRateRequest) {
+ List emrRateVos = rcvBasicService.ExportEmrRate(emrRateRequest);
+ return CommonResult.success(emrRateVos);
+ }
+
+
}
diff --git a/src/main/java/com/example/duplicate/controller/param/EmrRateRequest.java b/src/main/java/com/example/duplicate/controller/param/EmrRateRequest.java
new file mode 100644
index 0000000..7280a1e
--- /dev/null
+++ b/src/main/java/com/example/duplicate/controller/param/EmrRateRequest.java
@@ -0,0 +1,31 @@
+package com.example.duplicate.controller.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @ClassName EmrRateRequest
+ * @Description 归档率入参
+ * @Author linjj
+ * @Date 2025/8/5 11:02
+ * @Version 1.0
+ */
+@Data
+public class EmrRateRequest {
+
+
+ @ApiModelProperty("开始时间")
+ private String startTime;//开始时间
+ @ApiModelProperty("结束时间")
+ private String endTime;//结束时间
+ @ApiModelProperty("出院科室")
+ private String disDeptName;//出院科室
+
+
+
+
+}
+
+
+
+
diff --git a/src/main/java/com/example/duplicate/controller/param/SginBasicDto.java b/src/main/java/com/example/duplicate/controller/param/SginBasicDto.java
index 8033cca..83c51fb 100644
--- a/src/main/java/com/example/duplicate/controller/param/SginBasicDto.java
+++ b/src/main/java/com/example/duplicate/controller/param/SginBasicDto.java
@@ -49,6 +49,12 @@ public class SginBasicDto {
private String disDeptName;
@ApiModelProperty(value = "操作人")
private String revoveryName;
+ @ApiModelProperty(value = "年龄")
+ private String age;
+
+ @ApiModelProperty(value = "身份证信息")
+ private String idCard;
+
}
diff --git a/src/main/java/com/example/duplicate/controller/vo/DayRateDetailVo.java b/src/main/java/com/example/duplicate/controller/vo/DayRateDetailVo.java
new file mode 100644
index 0000000..04e57e6
--- /dev/null
+++ b/src/main/java/com/example/duplicate/controller/vo/DayRateDetailVo.java
@@ -0,0 +1,27 @@
+package com.example.duplicate.controller.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @ClassName RateDetailVo
+ * @Description 详情
+ * @Author linjj
+ * @Date 2025/8/5 17:04
+ * @Version 1.0
+ */
+@Data
+public class DayRateDetailVo {
+
+ @ApiModelProperty(value = "2天内病案签收情况")
+ private TimeSlot day2SignStatus;
+
+ @ApiModelProperty(value = "3天内病案签收情况")
+ private TimeSlot day3SignStatus;
+
+ @ApiModelProperty(value = "5天内病案签收情况")
+ private TimeSlot day5SignStatus;
+
+ @ApiModelProperty(value = "7天内病案签收情况")
+ private TimeSlot day7SignStatus;
+}
diff --git a/src/main/java/com/example/duplicate/controller/vo/EmrRateDetailVo.java b/src/main/java/com/example/duplicate/controller/vo/EmrRateDetailVo.java
new file mode 100644
index 0000000..a874785
--- /dev/null
+++ b/src/main/java/com/example/duplicate/controller/vo/EmrRateDetailVo.java
@@ -0,0 +1,33 @@
+package com.example.duplicate.controller.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @ClassName EmrRateDetailVo
+ * @Description 签收系统数据详情
+ * @Author linjj
+ * @Date 2025/8/5 16:42
+ * @Version 1.0
+ */
+@Data
+public class EmrRateDetailVo {
+
+ @ApiModelProperty(value = "科室名称")
+ private String disDeptName;
+ @ApiModelProperty(value = "签收总数")
+ private Integer signCountNum;
+
+ @ApiModelProperty(value = "2天出院数量")
+ private Integer day2;
+
+ @ApiModelProperty(value = "3天出院数量")
+ private Integer day3;
+
+ @ApiModelProperty(value = "5天出院数量")
+ private Integer day5;
+
+ @ApiModelProperty(value = "7天出院数量")
+ private Integer day7;
+
+}
diff --git a/src/main/java/com/example/duplicate/controller/vo/EmrRateVo.java b/src/main/java/com/example/duplicate/controller/vo/EmrRateVo.java
new file mode 100644
index 0000000..3cb887f
--- /dev/null
+++ b/src/main/java/com/example/duplicate/controller/vo/EmrRateVo.java
@@ -0,0 +1,24 @@
+package com.example.duplicate.controller.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @ClassName EmrRateVo
+ * @Description 归档率返回
+ * @Author linjj
+ * @Date 2025/8/5 11:49
+ * @Version 1.0
+ */
+@Data
+public class EmrRateVo {
+ @ApiModelProperty(value = "科室名称")
+ private String disDeptName;
+ @ApiModelProperty(value = "出院总数")
+ private Integer outNum;
+ @ApiModelProperty(value = "病案签收情况")
+ private SignStatus signStatus;
+
+ @ApiModelProperty(value = "天数详情")
+ private DayRateDetailVo dayRateDetailVo;
+}
diff --git a/src/main/java/com/example/duplicate/controller/vo/HisRateVo.java b/src/main/java/com/example/duplicate/controller/vo/HisRateVo.java
new file mode 100644
index 0000000..c15b7d6
--- /dev/null
+++ b/src/main/java/com/example/duplicate/controller/vo/HisRateVo.java
@@ -0,0 +1,21 @@
+package com.example.duplicate.controller.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @ClassName HisRateVo
+ * @Description his 出院总数
+ * @Author linjj
+ * @Date 2025/8/5 16:29
+ * @Version 1.0
+ */
+@Data
+public class HisRateVo {
+
+
+ @ApiModelProperty(value = "科室名称")
+ private String disDeptName;
+ @ApiModelProperty(value = "出院总数")
+ private Integer disCountNum;
+}
diff --git a/src/main/java/com/example/duplicate/controller/vo/SignStatus.java b/src/main/java/com/example/duplicate/controller/vo/SignStatus.java
new file mode 100644
index 0000000..f3cbdca
--- /dev/null
+++ b/src/main/java/com/example/duplicate/controller/vo/SignStatus.java
@@ -0,0 +1,25 @@
+package com.example.duplicate.controller.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @ClassName SignStatus
+ * @Description 病案签收情况
+ * @Author linjj
+ * @Date 2025/8/5 11:54
+ * @Version 1.0
+ */
+@Data
+public class SignStatus {
+ @ApiModelProperty(value = "签收份数")
+ private Integer signCount;
+ @ApiModelProperty(value = "签收率")
+ private String signRate;
+
+ public SignStatus(Integer signCount, String signRate) {
+ this.signCount = signCount;
+ this.signRate = signRate;
+ }
+
+}
diff --git a/src/main/java/com/example/duplicate/controller/vo/TimeSlot.java b/src/main/java/com/example/duplicate/controller/vo/TimeSlot.java
new file mode 100644
index 0000000..22e42ec
--- /dev/null
+++ b/src/main/java/com/example/duplicate/controller/vo/TimeSlot.java
@@ -0,0 +1,24 @@
+package com.example.duplicate.controller.vo;
+
+import lombok.Data;
+
+
+/**
+ * @ClassName TimeSlot
+ * @Description 签收份数,签收率
+ * @Author linjj
+ * @Date 2025/8/5 16:54
+ * @Version 1.0
+ */
+@Data
+public class TimeSlot {
+ //总数
+ private int count;
+ //签收率
+ private String rate;
+
+ public TimeSlot(int count, String rate) {
+ this.count = count;
+ this.rate = rate;
+ }
+}
diff --git a/src/main/java/com/example/duplicate/infrastructure/dao/BasicMapper.java b/src/main/java/com/example/duplicate/infrastructure/dao/BasicMapper.java
index c39f60b..8a32e05 100644
--- a/src/main/java/com/example/duplicate/infrastructure/dao/BasicMapper.java
+++ b/src/main/java/com/example/duplicate/infrastructure/dao/BasicMapper.java
@@ -1,10 +1,8 @@
package com.example.duplicate.infrastructure.dao;
-import com.example.duplicate.controller.param.CallRequest;
-import com.example.duplicate.controller.param.PageRequest;
-import com.example.duplicate.controller.param.RcvPageRequest;
-import com.example.duplicate.controller.param.SginBasicDto;
+import com.example.duplicate.controller.param.*;
import com.example.duplicate.controller.vo.DeptCodeAndName;
+import com.example.duplicate.controller.vo.EmrRateDetailVo;
import com.example.duplicate.controller.vo.ExportBasic;
import com.example.duplicate.controller.vo.PageBasic;
import org.apache.ibatis.annotations.Mapper;
@@ -36,4 +34,6 @@ public interface BasicMapper {
ListgetDeptCodeAndName();
+ List getEmrRateDetail(EmrRateRequest emrRateRequest);
+
}
diff --git a/src/main/java/com/example/duplicate/service/RcvBasicService.java b/src/main/java/com/example/duplicate/service/RcvBasicService.java
index bf5d7c8..079e785 100644
--- a/src/main/java/com/example/duplicate/service/RcvBasicService.java
+++ b/src/main/java/com/example/duplicate/service/RcvBasicService.java
@@ -1,7 +1,9 @@
package com.example.duplicate.service;
+import com.example.duplicate.controller.param.EmrRateRequest;
import com.example.duplicate.controller.param.PageRequest;
import com.example.duplicate.controller.param.RcvPageRequest;
+import com.example.duplicate.controller.vo.EmrRateVo;
import com.example.duplicate.controller.vo.ExportBasic;
import com.example.duplicate.controller.vo.PageBasic;
import com.example.utils.CommonResult;
@@ -27,4 +29,6 @@ public interface RcvBasicService {
CommonResult> UpdateSign(String patientId,String revoveryState);
ListpageExport(RcvPageRequest rcvPageRequest);
+
+ List ExportEmrRate(EmrRateRequest emrRateRequest);
}
diff --git a/src/main/java/com/example/duplicate/service/impl/RcvBasicServiceImpl.java b/src/main/java/com/example/duplicate/service/impl/RcvBasicServiceImpl.java
index acbca02..890b8ed 100644
--- a/src/main/java/com/example/duplicate/service/impl/RcvBasicServiceImpl.java
+++ b/src/main/java/com/example/duplicate/service/impl/RcvBasicServiceImpl.java
@@ -1,10 +1,10 @@
package com.example.duplicate.service.impl;
+import com.example.duplicate.controller.param.EmrRateRequest;
import com.example.duplicate.controller.param.PageRequest;
import com.example.duplicate.controller.param.RcvPageRequest;
import com.example.duplicate.controller.param.SginBasicDto;
-import com.example.duplicate.controller.vo.ExportBasic;
-import com.example.duplicate.controller.vo.PageBasic;
+import com.example.duplicate.controller.vo.*;
import com.example.duplicate.infrastructure.dao.BasicMapper;
import com.example.duplicate.service.RcvBasicService;
@@ -13,6 +13,7 @@ import com.example.utils.PageResult;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.github.pagehelper.PageHelper;
+import io.swagger.models.auth.In;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -26,15 +27,17 @@ import javax.servlet.http.HttpServletRequest;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
import java.net.HttpURLConnection;
import java.net.URL;
import java.sql.*;
+import java.sql.Date;
import java.time.LocalDate;
import java.time.Period;
import java.time.ZoneId;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
+import java.util.stream.Collectors;
/**
* @ClassName RcvBasicServiceImpl
@@ -58,8 +61,6 @@ public class RcvBasicServiceImpl implements RcvBasicService {
private String lzPassword;
-
-
@Value("${jsUrl}")
private String jsUrl;
@@ -75,26 +76,26 @@ public class RcvBasicServiceImpl implements RcvBasicService {
@Override
public CommonResult> Sign(String patientId) {
try {
- if (StringUtils.isBlank(patientId)){
- return CommonResult.failed("病案号不能为空!");
- }
- //查询是否已经存在数据,存在数据不在新增,直接返回已经签收
- List idByPatientId = basicMapper.getIDByPatientId(patientId);
- if (!CollectionUtils.isEmpty(idByPatientId)) {
- return CommonResult.failed("病案ID【" + patientId + "】已签收过,不能重复签收");
- }
- String userName = getUserName();
- if (StringUtils.isBlank(userName)){
- return CommonResult.failed("获取用户姓名失败!");
- }
- SginBasicDto sginBasicDto=new SginBasicDto();
- // SQL Server连接信息
- String url = lzUrl;
- String username = lzUserName;
- String password = lzPassword;
- // SQL语句根据patientId查询患者基础信息
- String selectQuery = "SELECT * FROM dbo.V_sz_cybrxx WHERE 病案号='" + patientId + "'";
- log.info("查询语句为:"+selectQuery);
+ if (StringUtils.isBlank(patientId)) {
+ return CommonResult.failed("病案号不能为空!");
+ }
+ //查询是否已经存在数据,存在数据不在新增,直接返回已经签收
+ List idByPatientId = basicMapper.getIDByPatientId(patientId);
+ if (!CollectionUtils.isEmpty(idByPatientId)) {
+ return CommonResult.failed("病案ID【" + patientId + "】已签收过,不能重复签收");
+ }
+ String userName = getUserName();
+ if (StringUtils.isBlank(userName)) {
+ return CommonResult.failed("获取用户姓名失败!");
+ }
+ SginBasicDto sginBasicDto = new SginBasicDto();
+ // SQL Server连接信息
+ String url = lzUrl;
+ String username = lzUserName;
+ String password = lzPassword;
+ // SQL语句根据patientId查询患者基础信息
+ String selectQuery = "SELECT * FROM dbo.V_sz_cybrxx WHERE 病案号='" + patientId + "'";
+ log.info("查询语句为:" + selectQuery);
// 1. 加载SQL Server JDBC驱动
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
@@ -114,13 +115,13 @@ public class RcvBasicServiceImpl implements RcvBasicService {
sginBasicDto.setDisDate(resultSet.getDate("出院日期"));
sginBasicDto.setName(resultSet.getString("姓名"));
String sex = resultSet.getString("性别");
- if (sex.equals("1")){
+ if (sex.equals("1")) {
sginBasicDto.setSex("男");
}
- if (sex.equals("2")){
+ if (sex.equals("2")) {
sginBasicDto.setSex("女");
}
- if (sex.equals("3")){
+ if (sex.equals("3")) {
sginBasicDto.setSex("不详");
}
sginBasicDto.setBedNumber(resultSet.getString("床位号"));
@@ -128,6 +129,8 @@ public class RcvBasicServiceImpl implements RcvBasicService {
sginBasicDto.setDisDeptName(resultSet.getString("出院科室"));
sginBasicDto.setRevoveryState("已签收");
sginBasicDto.setRevoveryName(userName);
+ sginBasicDto.setAge("年龄");
+ sginBasicDto.setIdCard("身份证号");
sginBasicDto.setRevoveryTime(new Timestamp(System.currentTimeMillis()));
}
// 6. 关闭资源
@@ -135,27 +138,28 @@ public class RcvBasicServiceImpl implements RcvBasicService {
statement.close();
connection.close();
//先插入数据到2.0中
- if (!getObjectCommonResult(sginBasicDto)){
+ if (!getObjectCommonResult(sginBasicDto)) {
log.error("传送到病案数码系统失败");
return CommonResult.failed("传送到病案数码系统失败,请联系管理员");
}
//插入数据
- if (!basicMapper.addBasic(sginBasicDto)){
+ if (!basicMapper.addBasic(sginBasicDto)) {
log.error("签收失败");
return CommonResult.failed("签收失败");
}
} catch (Exception e) {
- log.error("签收失败: " + e,e.getMessage());
+ log.error("签收失败: " + e, e.getMessage());
return CommonResult.failed("签收失败: " + e.getMessage());
}
return CommonResult.success("签收完成");
}
+
/**
* @description: 获取当前用户名
* @author linjj
* @date: 2025/6/27 11:12
*/
- private String getUserName() {
+ private String getUserName() {
// 获取当前HttpServletRequest
ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest request = requestAttributes.getRequest();
@@ -163,7 +167,7 @@ public class RcvBasicServiceImpl implements RcvBasicService {
String token = request.getHeader("token");
try {
// 接口URL
- String url = powerUer+"/front/sys/getUserInfoByToken";
+ String url = powerUer + "/front/sys/getUserInfoByToken";
// 创建URL对象
URL obj = new URL(url);
@@ -197,7 +201,7 @@ public class RcvBasicServiceImpl implements RcvBasicService {
String inputLine;
StringBuilder response = new StringBuilder();
while ((inputLine = in.readLine()) != null) {
- response.append(inputLine);
+ response.append(inputLine);
}
// 使用Jackson解析JSON响应内容
ObjectMapper mapper = new ObjectMapper();
@@ -208,7 +212,7 @@ public class RcvBasicServiceImpl implements RcvBasicService {
con.disconnect();
return name;
} catch (Exception e) {
- log.error("获取用户失败: " + e,e.getMessage());
+ log.error("获取用户失败: " + e, e.getMessage());
return null;
}
}
@@ -219,7 +223,7 @@ public class RcvBasicServiceImpl implements RcvBasicService {
String username = jsUserName;
String password = jsPassword;
// 插入语句
- String insertQuery = "INSERT INTO lee_basic (patient_id, inpatient_no,admiss_times,name,admiss_date,dis_date) VALUES (replace(newid(), '-', ''),?, ?, ?, ?, ?);";
+ String insertQuery = "INSERT INTO lee_basic (patient_id, inpatient_no,admiss_times,name,admiss_date,dis_date,id_card,age) VALUES (replace(newid(), '-', ''),?, ?, ?, ?, ?,?,?);";
log.info("执行的SQL语句为: " + insertQuery);
try {
// 1. 加载SQL Server JDBC驱动
@@ -237,6 +241,8 @@ public class RcvBasicServiceImpl implements RcvBasicService {
preparedStatement.setString(3, sginBasicDto.getName());
preparedStatement.setDate(4, new java.sql.Date(sginBasicDto.getAdmissDate().getTime()));
preparedStatement.setDate(5, new java.sql.Date(sginBasicDto.getDisDate().getTime()));
+ preparedStatement.setString(6, sginBasicDto.getIdCard());
+ preparedStatement.setString(7, sginBasicDto.getAge());
// 5. 执行插入操作
preparedStatement.executeUpdate();
@@ -244,7 +250,7 @@ public class RcvBasicServiceImpl implements RcvBasicService {
preparedStatement.close();
connection.close();
} catch (Exception e) {
- log.error("传送到病案数码系统失败: " + e,e.getMessage());
+ log.error("传送到病案数码系统失败: " + e, e.getMessage());
return false;
}
log.info("插入2.0中成功");
@@ -252,7 +258,7 @@ public class RcvBasicServiceImpl implements RcvBasicService {
}
@Override
- public CommonResult>pageAll(PageRequest pageRequest) {
+ public CommonResult> pageAll(PageRequest pageRequest) {
PageResult pageResult = null;
try {
// 设置分页参数
@@ -261,20 +267,20 @@ public class RcvBasicServiceImpl implements RcvBasicService {
pageResult = new PageResult<>(pageAll);
} catch (Exception e) {
log.error("系统异常: " + e.getMessage());
- return CommonResult.failed("系统异常");
+ return CommonResult.failed("系统异常");
}
return CommonResult.success(pageResult);
}
@Override
- public CommonResult> UpdateSign(String patientId,String revoveryState) {
+ public CommonResult> UpdateSign(String patientId, String revoveryState) {
String userName = getUserName();
- if (revoveryState.equals("已签收")){
- basicMapper.UpdateState(patientId,"未签收",userName);
+ if (revoveryState.equals("已签收")) {
+ basicMapper.UpdateState(patientId, "未签收", userName);
return CommonResult.success("取消签收成功");
}
- if (revoveryState.equals("未签收")){
- basicMapper.UpdateState(patientId,"已签收",userName);
+ if (revoveryState.equals("未签收")) {
+ basicMapper.UpdateState(patientId, "已签收", userName);
return CommonResult.success("签收成功");
}
return null;
@@ -285,4 +291,135 @@ public class RcvBasicServiceImpl implements RcvBasicService {
List pageBasics = basicMapper.pageExport(rcvPageRequest);
return pageBasics;
}
+
+ @Override
+ public List ExportEmrRate(EmrRateRequest emrRateRequest) {
+ List emrRateVos = null;
+ try {
+ //查询回收系统中归档率
+ List emrRateDetail = basicMapper.getEmrRateDetail(emrRateRequest);
+ //查询his视图中各个科室出院数量
+ List hisRateVo = getHisRateVo(emrRateRequest);
+ if (hisRateVo.isEmpty()||emrRateDetail.isEmpty()){
+ return emrRateVos;
+ }
+ // 1. 把 hisRateVo 转成 Map<科室名, 出院人数>
+ Map deptDischargeMap = hisRateVo.stream()
+ .collect(Collectors.toMap(HisRateVo::getDisDeptName, HisRateVo::getDisCountNum));
+
+ //组织最终数据
+ emrRateVos = new ArrayList<>();
+ for (EmrRateDetailVo detail : emrRateDetail){
+ if (deptDischargeMap.get(detail.getDisDeptName())==null) {
+ continue;
+ }
+ EmrRateVo emrRateVo = new EmrRateVo();
+ //出院名称
+ emrRateVo.setDisDeptName(detail.getDisDeptName());
+ //出院人数
+ Integer outNum = deptDischargeMap.get(detail.getDisDeptName());
+ emrRateVo.setOutNum(outNum);
+ //组织病案签收情况
+ //签收总数
+ Integer signCountNum = detail.getSignCountNum();
+ //总签收率
+ emrRateVo.setSignStatus(new SignStatus(signCountNum,getRate(outNum,signCountNum)));
+ //组织2,3,5,7天内归档情况
+ DayRateDetailVo dayRateDetailVo = new DayRateDetailVo();
+ dayRateDetailVo.setDay2SignStatus(new TimeSlot(detail.getDay2(), getRate(outNum,detail.getDay2())));
+ dayRateDetailVo.setDay3SignStatus(new TimeSlot(detail.getDay3(), getRate(outNum,detail.getDay3())));
+ dayRateDetailVo.setDay5SignStatus(new TimeSlot(detail.getDay5(), getRate(outNum,detail.getDay5())));
+ dayRateDetailVo.setDay7SignStatus(new TimeSlot(detail.getDay7(), getRate(outNum,detail.getDay7())));
+ emrRateVo.setDayRateDetailVo(dayRateDetailVo);
+ emrRateVos.add(emrRateVo);
+ }
+ } catch (Exception e) {
+ log.error("查询失败1: {}", e,e.getMessage());
+ return emrRateVos;
+ }
+ return emrRateVos;
+ }
+
+ private static String getRate(Integer outNum, Integer signCountNum) {
+ // 计算签收率(保留两位小数)
+ BigDecimal rate = new BigDecimal(signCountNum)
+ .divide(new BigDecimal(outNum), 4, RoundingMode.HALF_UP)
+ .multiply(BigDecimal.valueOf(100))
+ .setScale(2, RoundingMode.HALF_UP);
+
+ String signRate = rate.toPlainString() + "%";
+ return signRate;
+ }
+
+ /**
+ * @Author: linjj
+ * @Description: 查询his视图中各个科室出院数量
+ * @DateTime: 2025/8/5 17:17
+ * @Params: [emrRateRequest]
+ * @Return java.util.List
+ */
+ private List getHisRateVo(EmrRateRequest emrRateRequest) {
+ List hisRateVoList = null;
+ try {
+ hisRateVoList = new ArrayList<>();
+ // SQL Server连接信息
+ String url = lzUrl;
+ String username = lzUserName;
+ String password = lzPassword;
+ // 构建SQL查询语句
+ StringBuilder selectQuery = new StringBuilder();
+ selectQuery.append("SELECT 出院科室,COUNT(*) as 出院总数 ");
+ selectQuery.append("FROM dbo.V_sz_cybrxx ");
+ selectQuery.append("WHERE 1=1 ");
+ List