增加归档率导出

master
linjj 4 months ago
parent d7371ef834
commit 8cf8be59f7

@ -9,10 +9,10 @@
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>springbootDemo</artifactId>
<artifactId>docus_recovery</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springbootDemo</name>
<description>springbootDemo</description>
<name>docus_recovery</name>
<description>docus_recovery</description>
<properties>
<java.version>1.8</java.version>
<skipTests>true</skipTests>

@ -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<EmrRateVo> emrRateVos = rcvBasicService.ExportEmrRate(emrRateRequest);
return CommonResult.success(emrRateVos);
}
}

@ -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;//出院科室
}

@ -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;
}

@ -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;
}

@ -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;
}

@ -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;
}

@ -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;
}

@ -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;
}
}

@ -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;
}
}

@ -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 {
List<DeptCodeAndName>getDeptCodeAndName();
List<EmrRateDetailVo> getEmrRateDetail(EmrRateRequest emrRateRequest);
}

@ -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);
List<ExportBasic>pageExport(RcvPageRequest rcvPageRequest);
List<EmrRateVo> ExportEmrRate(EmrRateRequest emrRateRequest);
}

@ -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,7 +76,7 @@ public class RcvBasicServiceImpl implements RcvBasicService {
@Override
public CommonResult<?> Sign(String patientId) {
try {
if (StringUtils.isBlank(patientId)){
if (StringUtils.isBlank(patientId)) {
return CommonResult.failed("病案号不能为空!");
}
//查询是否已经存在数据,存在数据不在新增,直接返回已经签收
@ -84,17 +85,17 @@ public class RcvBasicServiceImpl implements RcvBasicService {
return CommonResult.failed("病案ID【" + patientId + "】已签收过,不能重复签收");
}
String userName = getUserName();
if (StringUtils.isBlank(userName)){
if (StringUtils.isBlank(userName)) {
return CommonResult.failed("获取用户姓名失败!");
}
SginBasicDto sginBasicDto=new SginBasicDto();
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);
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,21 +138,22 @@ 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
@ -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);
@ -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<PageResult<PageBasic>>pageAll(PageRequest pageRequest) {
public CommonResult<PageResult<PageBasic>> pageAll(PageRequest pageRequest) {
PageResult<PageBasic> pageResult = null;
try {
// 设置分页参数
@ -267,14 +273,14 @@ public class RcvBasicServiceImpl implements RcvBasicService {
}
@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<ExportBasic> pageBasics = basicMapper.pageExport(rcvPageRequest);
return pageBasics;
}
@Override
public List<EmrRateVo> ExportEmrRate(EmrRateRequest emrRateRequest) {
List<EmrRateVo> emrRateVos = null;
try {
//查询回收系统中归档率
List<EmrRateDetailVo> emrRateDetail = basicMapper.getEmrRateDetail(emrRateRequest);
//查询his视图中各个科室出院数量
List<HisRateVo> hisRateVo = getHisRateVo(emrRateRequest);
if (hisRateVo.isEmpty()||emrRateDetail.isEmpty()){
return emrRateVos;
}
// 1. 把 hisRateVo 转成 Map<科室名, 出院人数>
Map<String, Integer> 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<com.example.duplicate.controller.vo.HisRateVo>
*/
private List<HisRateVo> getHisRateVo(EmrRateRequest emrRateRequest) {
List<HisRateVo> 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<Object> parameters = new ArrayList<>();
// 添加出院科室条件
if (emrRateRequest.getDisDeptName() != null && !emrRateRequest.getDisDeptName().isEmpty()) {
String[] deptNames = emrRateRequest.getDisDeptName().split(",");
String inClause = String.join(",", Collections.nCopies(deptNames.length, "?"));
selectQuery.append(" AND 出院科室 IN (" + inClause + ")");
parameters.addAll(Arrays.asList(deptNames));
}
// 添加时间范围条件
if (emrRateRequest.getStartTime() != null) {
selectQuery.append(" AND 出院日期 >= ?");
parameters.add(emrRateRequest.getStartTime());
}
if (emrRateRequest.getEndTime() != null) {
selectQuery.append(" AND 出院日期 <= ?");
parameters.add(emrRateRequest.getEndTime());
}
//增加科室分组
selectQuery.append(" GROUP BY 出院科室");
// 原始 SQL 模板(带 ? 占位符)
String finalSql = selectQuery.toString();
// 逐个替换参数(注意类型处理)
for (int i = 0; i < parameters.size(); i++) {
Object param = parameters.get(i);
String value = param instanceof String ? "'" + param + "'" : param.toString();
finalSql = finalSql.replaceFirst("\\?", value);
}
log.info("最终SQL: " + finalSql);
try (Connection connection = DriverManager.getConnection(url, username, password);
PreparedStatement preparedStatement = connection.prepareStatement(selectQuery.toString())) {
// 设置查询参数
for (int i = 0; i < parameters.size(); i++) {
preparedStatement.setObject(i + 1, parameters.get(i));
}
ResultSet resultSet = preparedStatement.executeQuery();
// 处理查询结果
while (resultSet.next()) {
HisRateVo hisRateVo = new HisRateVo();
hisRateVo.setDisDeptName(resultSet.getString("出院科室"));
hisRateVo.setDisCountNum(resultSet.getInt("出院总数"));
hisRateVoList.add(hisRateVo);
}
} catch (Exception e) {
log.error("his查询失败: {}", e,e.getMessage());
return hisRateVoList;
}
} catch (Exception e) {
log.error("his查询失败: {}", e,e.getMessage());
}
return hisRateVoList;
}
}

@ -41,38 +41,6 @@ public class RcvCallServiceImpl implements RcvCallService {
@Override
public List<DeptCodeAndName> deptName() {
// // SQL Server连接信息
// String url = lzUrl;
// String username = lzUserName;
// String password = lzPassword;
// try {
// List<String> deptNames=new ArrayList<>();
// // SQL语句根据patientId查询患者基础信息
// String selectQuery = "SELECT 出院科室 FROM dbo.V_sz_cybrxx where 出院科室 is not null AND 出院科室 !='' GROUP BY 出院科室";
// // 1. 加载SQL Server JDBC驱动
// Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
//
// // 2. 建立数据库连接
// Connection connection = DriverManager.getConnection(url, username, password);
//
// // 3. 创建Statement对象用于执行SQL语句
// Statement statement = connection.createStatement();
// // 4. 执行查询操作
// ResultSet resultSet = statement.executeQuery(selectQuery);
// // 5. 遍历查询结果并添加到deptNames列表中
// while (resultSet.next()) {
// String deptName = resultSet.getString("出院科室");
// deptNames.add(deptName);
// }
// // 6. 关闭数据库资源
// resultSet.close();
// statement.close();
// connection.close();
// return deptNames;
// } catch (Exception e) {
// log.error("查询科室失败: " + e, e.getMessage());
// return null;
// }
List<DeptCodeAndName> deptCodeAndName = basicMapper.getDeptCodeAndName();
return deptCodeAndName;
}

@ -81,6 +81,33 @@
<select id="getDeptCodeAndName" resultType="com.example.duplicate.controller.vo.DeptCodeAndName">
select * from deptcode
</select>
<select id="getEmrRateDetail" resultType="com.example.duplicate.controller.vo.EmrRateDetailVo">
SELECT
disDeptName,
COUNT( patientId ) AS signCountNum,
SUM( CASE WHEN DATEDIFF( revoveryTime, disDate ) &lt;= 2 THEN 1 ELSE 0 END ) AS day2,
SUM( CASE WHEN DATEDIFF( revoveryTime, disDate ) &lt;= 3 THEN 1 ELSE 0 END ) AS day3,
SUM( CASE WHEN DATEDIFF( revoveryTime, disDate ) &lt;= 5 THEN 1 ELSE 0 END ) AS day5,
SUM( CASE WHEN DATEDIFF( revoveryTime, disDate ) &lt;= 7 THEN 1 ELSE 0 END ) AS day7
FROM
basic
<where>
revoveryState='已签收' AND disDeptName IS NOT NULL
<if test="startTime != null and startTime != ''">
AND disDate >= #{startTime}
</if>
<if test="endTime != null and endTime != ''">
AND disDate &lt;= #{endTime}
</if>
<if test="disDeptName != null and disDeptName != ''">
AND disDeptName IN
<foreach item="dept" index="index" collection="disDeptName.split(',')" open="(" separator="," close=")">
#{dept}
</foreach>
</if>
</where>
GROUP BY disDeptName
</select>
</mapper>
Loading…
Cancel
Save