feat(home): 添加医生专属患者统计和菜单跳转功能

- 在HomeStatisticsDto中新增我的患者数量和待写病历数量字段
- 实现医生患者查询功能,支持按租户隔离数据
- 更新首页统计服务,为医生用户提供专属患者统计数据
- 添加菜单名称点击跳转功能,支持路由导航和外部链接打开
- 修复首页统计数据显示,确保医生看到正确的患者数量
- 添加医保日结结算相关实体、服务和前端页面
- 配置前端路由控制器,支持Vue Router History模式
This commit is contained in:
2026-02-02 16:28:31 +08:00
parent 5534a71c7d
commit 9ed43c9413
16 changed files with 1100 additions and 27 deletions

View File

@@ -0,0 +1,118 @@
package com.openhis.yb.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.core.common.core.domain.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
import java.util.Date;
/**
* 日结医保结算实体类
*
* @author
* @date 2026-02-02
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@TableName("yb_day_end_settlement")
public class DayEndMedicalInsuranceSettlement extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 结算单号
*/
@TableField("settlement_no")
private String settlementNo;
/**
* 结算日期
*/
@TableField("settlement_date")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date settlementDate;
/**
* 结算类型 (daily, weekly, monthly)
*/
@TableField("settlement_type")
private String settlementType;
/**
* 医保类型 (城镇职工, 城乡居民等)
*/
@TableField("insurance_type")
private String insuranceType;
/**
* 总人次
*/
@TableField("total_visits")
private Integer totalVisits;
/**
* 总金额
*/
@TableField("total_amount")
private BigDecimal totalAmount;
/**
* 医保统筹支付金额
*/
@TableField("insurance_pay_amount")
private BigDecimal insurancePayAmount;
/**
* 个人账户支付金额
*/
@TableField("account_pay_amount")
private BigDecimal accountPayAmount;
/**
* 个人自付金额
*/
@TableField("personal_pay_amount")
private BigDecimal personalPayAmount;
/**
* 医保基金支付总额
*/
@TableField("fund_pay_sum_amount")
private BigDecimal fundPaySumAmount;
/**
* 状态 (0正常 1停用)
*/
@TableField("status")
private String status;
/**
* 操作员
*/
@TableField("operator")
private String operator;
/**
* 备注
*/
@TableField("remark")
private String remark;
}

View File

@@ -0,0 +1,18 @@
package com.openhis.yb.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.openhis.yb.domain.DayEndMedicalInsuranceSettlement;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
/**
* 日结医保结算Mapper接口
*
* @author
* @date 2026-02-02
*/
@Mapper
@Repository
public interface DayEndMedicalInsuranceSettlementMapper extends BaseMapper<DayEndMedicalInsuranceSettlement> {
}

View File

@@ -0,0 +1,74 @@
package com.openhis.yb.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.openhis.yb.domain.DayEndMedicalInsuranceSettlement;
import com.core.common.core.domain.PageResult;
import java.util.List;
/**
* 日结医保结算Service接口
*
* @author
* @date 2026-02-02
*/
public interface IDayEndMedicalInsuranceSettlementService extends IService<DayEndMedicalInsuranceSettlement> {
/**
* 查询日结医保结算
*
* @param id 日结医保结算ID
* @return 日结医保结算
*/
DayEndMedicalInsuranceSettlement selectDayEndMedicalInsuranceSettlementById(Long id);
/**
* 查询日结医保结算列表
*
* @param dayEndMedicalInsuranceSettlement 日结医保结算
* @return 日结医保结算集合
*/
List<DayEndMedicalInsuranceSettlement> selectDayEndMedicalInsuranceSettlementList(DayEndMedicalInsuranceSettlement dayEndMedicalInsuranceSettlement);
/**
* 新增日结医保结算
*
* @param dayEndMedicalInsuranceSettlement 日结医保结算
* @return 结果
*/
int insertDayEndMedicalInsuranceSettlement(DayEndMedicalInsuranceSettlement dayEndMedicalInsuranceSettlement);
/**
* 修改日结医保结算
*
* @param dayEndMedicalInsuranceSettlement 日结医保结算
* @return 结果
*/
int updateDayEndMedicalInsuranceSettlement(DayEndMedicalInsuranceSettlement dayEndMedicalInsuranceSettlement);
/**
* 批量删除日结医保结算
*
* @param ids 需要删除的日结医保结算ID
* @return 结果
*/
int deleteDayEndMedicalInsuranceSettlementByIds(Long[] ids);
/**
* 删除日结医保结算信息
*
* @param id 日结医保结算ID
* @return 结果
*/
int deleteDayEndMedicalInsuranceSettlementById(Long id);
/**
* 分页查询日结医保结算列表
*
* @param dayEndMedicalInsuranceSettlement 日结医保结算
* @param pageNum 页码
* @param pageSize 页面大小
* @return 分页结果
*/
PageResult<DayEndMedicalInsuranceSettlement> selectDayEndMedicalInsuranceSettlementPage(DayEndMedicalInsuranceSettlement dayEndMedicalInsuranceSettlement, int pageNum, int pageSize);
}

View File

@@ -0,0 +1,128 @@
package com.openhis.yb.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.core.common.core.domain.PageResult;
import com.openhis.yb.domain.DayEndMedicalInsuranceSettlement;
import com.openhis.yb.mapper.DayEndMedicalInsuranceSettlementMapper;
import com.openhis.yb.service.IDayEndMedicalInsuranceSettlementService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.List;
/**
* 日结医保结算Service业务层处理
*
* @author
* @date 2026-02-02
*/
@Service
public class DayEndMedicalInsuranceSettlementServiceImpl extends ServiceImpl<DayEndMedicalInsuranceSettlementMapper, DayEndMedicalInsuranceSettlement> implements IDayEndMedicalInsuranceSettlementService {
@Autowired
private DayEndMedicalInsuranceSettlementMapper dayEndMedicalInsuranceSettlementMapper;
/**
* 查询日结医保结算
*
* @param id 日结医保结算ID
* @return 日结医保结算
*/
@Override
public DayEndMedicalInsuranceSettlement selectDayEndMedicalInsuranceSettlementById(Long id) {
return dayEndMedicalInsuranceSettlementMapper.selectById(id);
}
/**
* 查询日结医保结算列表
*
* @param dayEndMedicalInsuranceSettlement 日结医保结算
* @return 日结医保结算
*/
@Override
public List<DayEndMedicalInsuranceSettlement> selectDayEndMedicalInsuranceSettlementList(DayEndMedicalInsuranceSettlement dayEndMedicalInsuranceSettlement) {
LambdaQueryWrapper<DayEndMedicalInsuranceSettlement> lqw = Wrappers.lambdaQuery();
lqw.like(dayEndMedicalInsuranceSettlement.getSettlementNo() != null, DayEndMedicalInsuranceSettlement::getSettlementNo, dayEndMedicalInsuranceSettlement.getSettlementNo());
lqw.eq(dayEndMedicalInsuranceSettlement.getSettlementDate() != null, DayEndMedicalInsuranceSettlement::getSettlementDate, dayEndMedicalInsuranceSettlement.getSettlementDate());
lqw.eq(dayEndMedicalInsuranceSettlement.getSettlementType() != null, DayEndMedicalInsuranceSettlement::getSettlementType, dayEndMedicalInsuranceSettlement.getSettlementType());
lqw.eq(dayEndMedicalInsuranceSettlement.getInsuranceType() != null, DayEndMedicalInsuranceSettlement::getInsuranceType, dayEndMedicalInsuranceSettlement.getInsuranceType());
lqw.eq(dayEndMedicalInsuranceSettlement.getStatus() != null, DayEndMedicalInsuranceSettlement::getStatus, dayEndMedicalInsuranceSettlement.getStatus());
lqw.orderByDesc(DayEndMedicalInsuranceSettlement::getCreateTime);
return dayEndMedicalInsuranceSettlementMapper.selectList(lqw);
}
/**
* 新增日结医保结算
*
* @param dayEndMedicalInsuranceSettlement 日结医保结算
* @return 结果
*/
@Override
public int insertDayEndMedicalInsuranceSettlement(DayEndMedicalInsuranceSettlement dayEndMedicalInsuranceSettlement) {
return dayEndMedicalInsuranceSettlementMapper.insert(dayEndMedicalInsuranceSettlement);
}
/**
* 修改日结医保结算
*
* @param dayEndMedicalInsuranceSettlement 日结医保结算
* @return 结果
*/
@Override
public int updateDayEndMedicalInsuranceSettlement(DayEndMedicalInsuranceSettlement dayEndMedicalInsuranceSettlement) {
return dayEndMedicalInsuranceSettlementMapper.updateById(dayEndMedicalInsuranceSettlement);
}
/**
* 批量删除日结医保结算
*
* @param ids 需要删除的日结医保结算ID
* @return 结果
*/
@Override
public int deleteDayEndMedicalInsuranceSettlementByIds(Long[] ids) {
return dayEndMedicalInsuranceSettlementMapper.deleteBatchIds(Arrays.asList(ids));
}
/**
* 删除日结医保结算信息
*
* @param id 日结医保结算ID
* @return 结果
*/
@Override
public int deleteDayEndMedicalInsuranceSettlementById(Long id) {
return dayEndMedicalInsuranceSettlementMapper.deleteById(id);
}
/**
* 分页查询日结医保结算列表
*
* @param dayEndMedicalInsuranceSettlement 日结医保结算
* @param pageNum 页码
* @param pageSize 页面大小
* @return 分页结果
*/
@Override
public PageResult<DayEndMedicalInsuranceSettlement> selectDayEndMedicalInsuranceSettlementPage(DayEndMedicalInsuranceSettlement dayEndMedicalInsuranceSettlement, int pageNum, int pageSize) {
LambdaQueryWrapper<DayEndMedicalInsuranceSettlement> lqw = Wrappers.lambdaQuery();
lqw.like(dayEndMedicalInsuranceSettlement.getSettlementNo() != null, DayEndMedicalInsuranceSettlement::getSettlementNo, dayEndMedicalInsuranceSettlement.getSettlementNo());
lqw.eq(dayEndMedicalInsuranceSettlement.getSettlementDate() != null, DayEndMedicalInsuranceSettlement::getSettlementDate, dayEndMedicalInsuranceSettlement.getSettlementDate());
lqw.eq(dayEndMedicalInsuranceSettlement.getSettlementType() != null, DayEndMedicalInsuranceSettlement::getSettlementType, dayEndMedicalInsuranceSettlement.getSettlementType());
lqw.eq(dayEndMedicalInsuranceSettlement.getInsuranceType() != null, DayEndMedicalInsuranceSettlement::getInsuranceType, dayEndMedicalInsuranceSettlement.getInsuranceType());
lqw.eq(dayEndMedicalInsuranceSettlement.getStatus() != null, DayEndMedicalInsuranceSettlement::getStatus, dayEndMedicalInsuranceSettlement.getStatus());
lqw.orderByDesc(DayEndMedicalInsuranceSettlement::getCreateTime);
Page<DayEndMedicalInsuranceSettlement> page = new Page<>(pageNum, pageSize);
Page<DayEndMedicalInsuranceSettlement> result = dayEndMedicalInsuranceSettlementMapper.selectPage(page, lqw);
return PageResult.<DayEndMedicalInsuranceSettlement>builder()
.rows(result.getRecords())
.total(result.getTotal())
.build();
}
}