添加长者、修改家属信息:通知管理形态新增/修改家属信息

This commit is contained in:
1378012178@qq.com 2025-09-22 17:07:39 +08:00
parent 2bef88d969
commit 05e12628b5
13 changed files with 358 additions and 11 deletions

View File

@ -0,0 +1,10 @@
package com.nu.modules.nubill.api;
import com.nu.entity.NuBillEntity;
import java.util.List;
public interface INuBillApi {
List<NuBillEntity> queryByOpenId(NuBillEntity params);
}

View File

@ -1,8 +1,8 @@
package com.nu.modules.employees.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.nu.dto.EmployeesStatusMQDto;
import com.nu.modules.employees.entity.NuEmployeesAdvisoryInfo;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* @Description: 员工咨询信息

View File

@ -2,6 +2,7 @@ package com.nu.modules.employees.service.impl;
import cn.hutool.json.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.nu.dto.EmployeesStatusMQDto;
import com.nu.modules.EmployessInfo.api.IEmployessAdvisioryInfoApi;
import com.nu.modules.EmployessInfo.entity.EmployeesAdvisoryInfoEntity;
@ -12,7 +13,6 @@ import com.nu.modules.weixin.utils.TemplateMessageSender;
import com.nu.modules.weixin.utils.WechatMiniProgramUtils;
import org.apache.commons.compress.utils.Lists;
import org.apache.commons.lang.StringUtils;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.system.api.ISysBaseAPI;
import org.jeecg.common.util.DateUtils;
@ -21,8 +21,6 @@ import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

View File

@ -0,0 +1,105 @@
package com.nu.modules.nubill.entity;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.*;
import org.jeecg.common.constant.ProvinceCityArea;
import org.jeecg.common.util.SpringContextUtils;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.jeecg.common.aspect.annotation.Dict;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* @Description: 护理单元费用明细
* @Author: jeecg-boot
* @Date: 2025-09-17
* @Version: V1.0
*/
@Data
@TableName("nu_nu_bill")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="nu_nu_bill对象", description="护理单元费用明细")
public class NuBill implements Serializable {
private static final long serialVersionUID = 1L;
/**id*/
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "ID")
private java.lang.String id;
/**护理单元编号*/
@Excel(name = "护理单元编号", width = 15)
@ApiModelProperty(value = "护理单元编号")
private java.lang.String nuId;
/**长者ID*/
@Excel(name = "长者ID", width = 15)
@ApiModelProperty(value = "长者ID")
private java.lang.Integer elderId;
/**家属open_id*/
@Excel(name = "家属open_id", width = 15)
@ApiModelProperty(value = "家属open_id")
private java.lang.String openId;
/**变动金额:正为充值/退款,负为消费*/
@Excel(name = "变动金额:正为充值/退款,负为消费", width = 15)
@ApiModelProperty(value = "变动金额:正为充值/退款,负为消费")
private java.math.BigDecimal amount;
/**本次操作后余额(防计算误差)*/
@Excel(name = "本次操作后余额(防计算误差)", width = 15)
@ApiModelProperty(value = "本次操作后余额(防计算误差)")
private java.math.BigDecimal balanceAfter;
/**费用类型bill_type电费水费充值退款等 */
@Excel(name = "费用类型bill_type电费水费充值退款等 ", width = 15)
@ApiModelProperty(value = "费用类型bill_type电费水费充值退款等 ")
private java.lang.String type;
/**备注*/
@Excel(name = "备注", width = 15)
@ApiModelProperty(value = "备注")
private java.lang.String remark;
/**createdTime*/
@Excel(name = "createdTime", width = 20, format = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "createdTime")
private java.util.Date createTime;
/**
* 护理单元名称
*/
@TableField(exist = false)
private String nuName;
/**
* 长者姓名
*/
@TableField(exist = false)
private String elderName;
/**
* 费用类型名称
*/
@TableField(exist = false)
private String typeName;
/**
* 机构名称
*/
@TableField(exist = false)
private String departName;
/**
* 护理单元余额
*/
@TableField(exist = false)
private BigDecimal balance;
}

View File

@ -0,0 +1,19 @@
package com.nu.modules.nubill.mapper;
import java.util.List;
import com.nu.entity.NuBillEntity;
import org.apache.ibatis.annotations.Param;
import com.nu.modules.nubill.entity.NuBill;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @Description: 护理单元费用明细
* @Author: jeecg-boot
* @Date: 2025-09-17
* @Version: V1.0
*/
public interface NuBillMapper extends BaseMapper<NuBill> {
List<NuBill> queryByOpenId(@Param("dto") NuBillEntity dto);
}

View File

@ -0,0 +1,40 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.nu.modules.nubill.mapper.NuBillMapper">
<select id="queryByOpenId" resultType="com.nu.modules.nubill.entity.NuBill">
select
billinfo.open_id,
billinfo.nu_id,
baseinfo.nu_name,
billinfo.elder_id,
elderinfo.name AS elderName,
billinfo.amount,
baseinfo.balance AS balance,
billinfo.balance_after,
billinfo.type,
dic.dit AS typeName,
billinfo.remark,
billinfo.create_time,
departinfo.depart_name AS departName
from nu_nu_bill billinfo
left join nu_base_info baseinfo on billinfo.nu_id = baseinfo.nu_id
left join nu_biz_elder_info elderinfo on billinfo.elder_id = elderinfo.id
left join (select di.item_value as diva, di.item_text as dit
from sys_dict d
left join sys_dict_item di on d.id = di.dict_id
where d.dict_code = 'bill_type') dic
on billinfo.type = dic.diva
left join sys_depart departinfo on baseinfo.sys_org_code = departinfo.org_code
<where>
billinfo.open_id = #{dto.openId}
<if test="dto.elderId != null and dto.elderId != ''">
and billinfo.elder_id = #{dto.elderId}
</if>
<if test="dto.nuId != null and dto.nuId != ''">
and billinfo.nu_id = #{nuId}
</if>
</where>
order by billinfo.create_time desc
</select>
</mapper>

View File

@ -0,0 +1,14 @@
package com.nu.modules.nubill.service;
import com.nu.modules.nubill.entity.NuBill;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* @Description: 护理单元费用明细
* @Author: jeecg-boot
* @Date: 2025-09-17
* @Version: V1.0
*/
public interface INuBillService extends IService<NuBill> {
}

View File

@ -0,0 +1,29 @@
package com.nu.modules.nubill.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.nu.entity.NuBillEntity;
import com.nu.modules.nubill.api.INuBillApi;
import com.nu.modules.nubill.entity.NuBill;
import com.nu.modules.nubill.mapper.NuBillMapper;
import com.nu.modules.nubill.service.INuBillService;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @Description: 护理单元费用明细
* @Author: jeecg-boot
* @Date: 2025-09-17
* @Version: V1.0
*/
@Service
public class NuBillServiceImpl extends ServiceImpl<NuBillMapper, NuBill> implements INuBillService, INuBillApi {
@Override
public List<NuBillEntity> queryByOpenId(NuBillEntity params) {
List<NuBill> list = baseMapper.queryByOpenId(params);
return BeanUtil.copyToList(list,NuBillEntity.class);
}
}

View File

@ -132,6 +132,7 @@ public class ElderApi {
//切换数据源整理好数据放到返回结果中
DynamicDataSourceContextHolder.push(orgCode);
ElderInfoMQDto mqdto = new ElderInfoMQDto();
mqdto.setGuardianId(nuBizAdvisoryInfo.getId());//家属用户id
mqdto.setGuardianOpenId(nuBizAdvisoryInfo.getOpenId());//联系人openId
mqdto.setGuardianName(nuBizAdvisoryInfo.getName());//联系人姓名
mqdto.setGuardianPhone(nuBizAdvisoryInfo.getTel());//联系人电话

View File

@ -4,14 +4,12 @@ import com.alibaba.fastjson.JSONObject;
import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
import com.google.common.collect.Maps;
import com.nu.dto.NuBaseInfoMQDto;
import com.nu.entity.ElderInfoEntity;
import com.nu.entity.HumidDeviceEntity;
import com.nu.entity.NuBaseElderEntity;
import com.nu.entity.NuBaseInfoEntity;
import com.nu.entity.*;
import com.nu.modules.baseinfo.api.INuBaseInfoApi;
import com.nu.modules.elder.api.IElderInfoApi;
import com.nu.modules.humiddevice.api.IHumidDeviceApi;
import com.nu.modules.nubaseelder.api.INuBaseElderApi;
import com.nu.modules.nubill.api.INuBillApi;
import com.nu.utils.RabbitMQUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.compress.utils.Lists;
@ -22,9 +20,7 @@ import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
/**
@ -47,6 +43,8 @@ public class NuBaseInfoApi {
private ISysBaseAPI sysBaseAPI;
@Autowired
private RabbitMQUtil rabbitMQUtil;
@Autowired
private INuBillApi nuBillApi;
/**
* 绑定护理单元
@ -64,6 +62,51 @@ public class NuBaseInfoApi {
return Result.ok();
}
/**
* 查询家属缴费明细
*
* @param openId
* @return
*/
@GetMapping("/queryBillList")
public Result<List<NuBillEntity>> queryBillList(@RequestParam("openId") String openId) {
//护理单元信息
List<NuBaseElderEntity> nuElderList = nuBaseElderApi.queryByOpenId(openId);
if (nuElderList == null || nuElderList.size() == 0) {
return Result.ok(List.of());
}
//key:orgCode value:nuid逗号拼接的字符串
Map<String, String> orgCodeToNuIdMap = nuElderList.stream()
.filter(entity -> entity.getOrgCode() != null && entity.getNuId() != null)
.collect(Collectors.groupingBy(
NuBaseElderEntity::getOrgCode,
Collectors.mapping(NuBaseElderEntity::getNuId, Collectors.joining(","))
));
List<NuBillEntity> result = Lists.newArrayList();
for (Map.Entry<String, String> entry : orgCodeToNuIdMap.entrySet()) {
String orgCode = entry.getKey();
// String nuIds = entry.getValue();
//切换数据源整理好数据放到返回结果中
DynamicDataSourceContextHolder.push(orgCode);
NuBillEntity params = new NuBillEntity();
params.setOpenId(openId);
List<NuBillEntity> list = nuBillApi.queryByOpenId(params);
if (list == null || list.size() == 0) {
continue;
}
DynamicDataSourceContextHolder.clear();
result.addAll(list);
}
List<NuBillEntity> sortedResult = result.stream()
.sorted(Comparator.comparing(NuBillEntity::getCreateTime, Comparator.nullsLast(Date::compareTo)).reversed())
.collect(Collectors.toList());
return Result.ok(sortedResult);
}
/**
* 获取用户下对应的护理单元及老人信息
*

View File

@ -111,6 +111,10 @@ public class ElderInfoMQDto implements Serializable {
* 当前状态 0咨询 1入住 2留床 3退住
*/
private String currentState;
/**
* 监护人id
*/
private String guardianId;
/**
* 监护人openId
*/

View File

@ -111,6 +111,10 @@ public class ElderInfoEntity implements Serializable {
* 当前状态 0咨询 1入住 2留床 3退住
*/
private String currentState;
/**
* 监护人id
*/
private String guardianId;
/**
* 监护人openId
*/

View File

@ -0,0 +1,80 @@
package com.nu.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* @Description: 护理单元费用明细
* @Author: jeecg-boot
* @Date: 2025-09-17
* @Version: V1.0
*/
@Data
public class NuBillEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
* id
*/
private String id;
/**
* 护理单元编号
*/
private String nuId;
/**
* 长者ID
*/
private Integer elderId;
/**
* 家属open_id
*/
private String openId;
/**
* 变动金额正为充值/退款负为消费
*/
private BigDecimal amount;
/**
* 本次操作后余额防计算误差
*/
private BigDecimal balanceAfter;
/**
* 费用类型bill_type电费水费充值退款等
*/
private String type;
/**
* 备注
*/
private String remark;
/**
* createdTime
*/
private Date createTime;
/**
* 护理单元名称
*/
private String nuName;
/**
* 长者姓名
*/
private String elderName;
/**
* 费用类型名称
*/
private String typeName;
/**
* 机构名称
*/
private String departName;
/**
* 护理单元余额
*/
private BigDecimal balance;
}