调整添加老人、修改监护人信息接口:通知业务平台新增/修改家属信息

增加家属信息代码
This commit is contained in:
1378012178@qq.com 2025-09-22 16:56:05 +08:00
parent 4570a7a1a0
commit 162014f940
12 changed files with 436 additions and 17 deletions

View File

@ -41,6 +41,7 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.security.MessageDigest;
import java.text.SimpleDateFormat;
import java.util.*;
@ -187,7 +188,7 @@ public class WeChatPayApi {
nuBillEntity.setAmount(orderData.getAmount());//本次变动金额
nuBillEntity.setBalanceAfter(sum);//操作后的余额
nuBillEntity.setType("bind_nu");
nuBillEntity.setRemark("绑定护理单元充值:" + orderData.getAmount().toString() + "");
nuBillEntity.setRemark("绑定护理单元充值:" + orderData.getAmount().setScale(2, RoundingMode.HALF_UP).toPlainString() + "");
nuBillEntity.setCreateTime(new Date());
nuBillApi.addData(nuBillEntity);
//给管理平台发通知新增/修改护理单元-家属关系
@ -366,4 +367,5 @@ public class WeChatPayApi {
}
return hexValue.toString();
}
}

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

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

View File

@ -0,0 +1,180 @@
package com.nu.modules.familymember.controller;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.query.QueryGenerator;
import org.jeecg.common.system.query.QueryRuleEnum;
import org.jeecg.common.util.oConvertUtils;
import com.nu.modules.familymember.entity.FamilyMember;
import com.nu.modules.familymember.service.IFamilyMemberService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j;
import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.def.NormalExcelConstants;
import org.jeecgframework.poi.excel.entity.ExportParams;
import org.jeecgframework.poi.excel.entity.ImportParams;
import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
import org.jeecg.common.system.base.controller.JeecgController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;
import com.alibaba.fastjson.JSON;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.jeecg.common.aspect.annotation.AutoLog;
import org.apache.shiro.authz.annotation.RequiresPermissions;
/**
* @Description: 家属信息
* @Author: jeecg-boot
* @Date: 2025-09-22
* @Version: V1.0
*/
@Api(tags="家属信息")
@RestController
@RequestMapping("/elder/familyMember")
@Slf4j
public class FamilyMemberController extends JeecgController<FamilyMember, IFamilyMemberService> {
@Autowired
private IFamilyMemberService familyMemberService;
/**
* 分页列表查询
*
* @param familyMember
* @param pageNo
* @param pageSize
* @param req
* @return
*/
//@AutoLog(value = "家属信息-分页列表查询")
@ApiOperation(value="家属信息-分页列表查询", notes="家属信息-分页列表查询")
@GetMapping(value = "/list")
public Result<IPage<FamilyMember>> queryPageList(FamilyMember familyMember,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
HttpServletRequest req) {
QueryWrapper<FamilyMember> queryWrapper = QueryGenerator.initQueryWrapper(familyMember, req.getParameterMap());
Page<FamilyMember> page = new Page<FamilyMember>(pageNo, pageSize);
IPage<FamilyMember> pageList = familyMemberService.page(page, queryWrapper);
return Result.OK(pageList);
}
// /**
// * 添加
// *
// * @param familyMember
// * @return
// */
// @AutoLog(value = "家属信息-添加")
// @ApiOperation(value="家属信息-添加", notes="家属信息-添加")
// @RequiresPermissions("familymember:nu_family_member:add")
// @PostMapping(value = "/add")
// public Result<String> add(@RequestBody FamilyMember familyMember) {
// familyMemberService.save(familyMember);
// return Result.OK("添加成功!");
// }
//
// /**
// * 编辑
// *
// * @param familyMember
// * @return
// */
// @AutoLog(value = "家属信息-编辑")
// @ApiOperation(value="家属信息-编辑", notes="家属信息-编辑")
// @RequiresPermissions("familymember:nu_family_member:edit")
// @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
// public Result<String> edit(@RequestBody FamilyMember familyMember) {
// familyMemberService.updateById(familyMember);
// return Result.OK("编辑成功!");
// }
//
// /**
// * 通过id删除
// *
// * @param id
// * @return
// */
// @AutoLog(value = "家属信息-通过id删除")
// @ApiOperation(value="家属信息-通过id删除", notes="家属信息-通过id删除")
// @RequiresPermissions("familymember:nu_family_member:delete")
// @DeleteMapping(value = "/delete")
// public Result<String> delete(@RequestParam(name="id",required=true) String id) {
// familyMemberService.removeById(id);
// return Result.OK("删除成功!");
// }
//
// /**
// * 批量删除
// *
// * @param ids
// * @return
// */
// @AutoLog(value = "家属信息-批量删除")
// @ApiOperation(value="家属信息-批量删除", notes="家属信息-批量删除")
// @RequiresPermissions("familymember:nu_family_member:deleteBatch")
// @DeleteMapping(value = "/deleteBatch")
// public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
// this.familyMemberService.removeByIds(Arrays.asList(ids.split(",")));
// return Result.OK("批量删除成功!");
// }
//
// /**
// * 通过id查询
// *
// * @param id
// * @return
// */
// //@AutoLog(value = "家属信息-通过id查询")
// @ApiOperation(value="家属信息-通过id查询", notes="家属信息-通过id查询")
// @GetMapping(value = "/queryById")
// public Result<FamilyMember> queryById(@RequestParam(name="id",required=true) String id) {
// FamilyMember familyMember = familyMemberService.getById(id);
// if(familyMember==null) {
// return Result.error("未找到对应数据");
// }
// return Result.OK(familyMember);
// }
/**
* 导出excel
*
* @param request
* @param familyMember
*/
@RequiresPermissions("familymember:nu_family_member:exportXls")
@RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, FamilyMember familyMember) {
return super.exportXls(request, familyMember, FamilyMember.class, "家属信息");
}
// /**
// * 通过excel导入数据
// *
// * @param request
// * @param response
// * @return
// */
// @RequiresPermissions("familymember:nu_family_member:importExcel")
// @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
// public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
// return super.importExcel(request, response, FamilyMember.class);
// }
}

View File

@ -0,0 +1,70 @@
package com.nu.modules.familymember.entity;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableLogic;
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-22
* @Version: V1.0
*/
@Data
@TableName("nu_family_member")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="nu_family_member对象", description="家属信息")
public class FamilyMember implements Serializable {
private static final long serialVersionUID = 1L;
/**id*/
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "id")
private java.lang.String id;
/**微信id*/
@Excel(name = "微信id", width = 15)
@ApiModelProperty(value = "微信id")
private java.lang.String openId;
/**咨询人姓名*/
@Excel(name = "咨询人姓名", width = 15)
@ApiModelProperty(value = "咨询人姓名")
private java.lang.String name;
/**联系电话*/
@Excel(name = "联系电话", width = 15)
@ApiModelProperty(value = "联系电话")
private java.lang.String tel;
/**创建日期*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "创建日期")
private java.util.Date createTime;
/**身份证号(长者端字段)*/
@Excel(name = "身份证号(长者端字段)", width = 15)
@ApiModelProperty(value = "身份证号(长者端字段)")
private java.lang.String idCard;
/**家庭住址(长者端字段)*/
@Excel(name = "家庭住址(长者端字段)", width = 15)
@ApiModelProperty(value = "家庭住址(长者端字段)")
private java.lang.String homeAddress;
/**工作单位(长者端字段)*/
@Excel(name = "工作单位(长者端字段)", width = 15)
@ApiModelProperty(value = "工作单位(长者端字段)")
private java.lang.String workUnit;
}

View File

@ -0,0 +1,17 @@
package com.nu.modules.familymember.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import com.nu.modules.familymember.entity.FamilyMember;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @Description: 家属信息
* @Author: jeecg-boot
* @Date: 2025-09-22
* @Version: V1.0
*/
public interface FamilyMemberMapper extends BaseMapper<FamilyMember> {
}

View File

@ -0,0 +1,5 @@
<?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.familymember.mapper.FamilyMemberMapper">
</mapper>

View File

@ -0,0 +1,14 @@
package com.nu.modules.familymember.service;
import com.nu.modules.familymember.entity.FamilyMember;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* @Description: 家属信息
* @Author: jeecg-boot
* @Date: 2025-09-22
* @Version: V1.0
*/
public interface IFamilyMemberService extends IService<FamilyMember> {
}

View File

@ -0,0 +1,19 @@
package com.nu.modules.familymember.service.impl;
import com.nu.modules.familymember.entity.FamilyMember;
import com.nu.modules.familymember.mapper.FamilyMemberMapper;
import com.nu.modules.familymember.service.IFamilyMemberService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
/**
* @Description: 家属信息
* @Author: jeecg-boot
* @Date: 2025-09-22
* @Version: V1.0
*/
@Service
public class FamilyMemberServiceImpl extends ServiceImpl<FamilyMemberMapper, FamilyMember> implements IFamilyMemberService {
}

View File

@ -1,10 +1,13 @@
package com.nu.modules.mq.elderinfo.listener;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.nu.dto.ElderInfoMQDto;
import com.nu.modules.elderinfo.entity.ElderInfo;
import com.nu.modules.elderinfo.service.IElderInfoService;
import com.nu.modules.familymember.entity.FamilyMember;
import com.nu.modules.familymember.service.IFamilyMemberService;
import com.nu.modules.mediaasyncerrorlog.entity.MediaAsyncErrorLog;
import com.nu.modules.mediaasyncerrorlog.service.IMediaAsyncErrorLogService;
import com.nu.modules.sysconfig.ISysConfigApi;
@ -39,6 +42,8 @@ public class ElderInfoMQListener {
private ISysConfigApi sysConfigApi;
@Autowired
private IMediaAsyncErrorLogService mediaAsyncErrorLogService;
@Autowired
private IFamilyMemberService familyMemberService;
/**
* 新增长者信息
@ -52,6 +57,24 @@ public class ElderInfoMQListener {
BeanUtils.copyProperties(dto, elderInfo);
elderInfoService.save(elderInfo);
//如果机构没有存储过家属信息 则新增家属信息 如果已存在对应id 根据情况更新家属信息
FamilyMember fData = familyMemberService.getById(dto.getGuardianId());
FamilyMember familyMember = new FamilyMember();
familyMember.setId(dto.getGuardianId());//使用相同id
familyMember.setOpenId(dto.getGuardianOpenId());//openid
familyMember.setName(dto.getGuardianName());//姓名
familyMember.setTel(dto.getGuardianPhone());//电话
familyMember.setIdCard(dto.getGuardianIdCard());//身份证号
familyMember.setHomeAddress(dto.getGuardianHomeAddress());//家庭住址
familyMember.setWorkUnit(dto.getGuardianWorkUnit());//工作单位
if (fData == null) {
familyMemberService.save(familyMember);
} else {
if (fData.getOpenId() == null || !fData.getOpenId().equals(dto.getGuardianOpenId())) {
familyMemberService.updateById(familyMember);
}
}
new Thread(() -> {
//去管理平台拉取资源
{
@ -201,7 +224,7 @@ public class ElderInfoMQListener {
@Transactional(rollbackFor = {Exception.class})
public void handleUpdateGuardianInfo(ElderInfoMQDto dto) {
UpdateWrapper<ElderInfo> uw = new UpdateWrapper<>();
uw.eq("guardian_open_id",dto.getGuardianOpenId());
uw.eq("guardian_open_id", dto.getGuardianOpenId());
ElderInfo elderInfo = new ElderInfo();
elderInfo.setGuardianName(dto.getGuardianName());//联系人姓名
@ -209,6 +232,17 @@ public class ElderInfoMQListener {
elderInfo.setGuardianIdCard(dto.getGuardianIdCard());//联系人身份证号
elderInfo.setGuardianHomeAddress(dto.getGuardianHomeAddress());//联系人家庭住址
elderInfo.setGuardianWorkUnit(dto.getGuardianWorkUnit());//联系人工作单位
elderInfoService.update(elderInfo,uw);
elderInfoService.update(elderInfo, uw);
//更新家属信息
FamilyMember familyMember = new FamilyMember();
familyMember.setId(dto.getGuardianId());
familyMember.setOpenId(dto.getGuardianOpenId());//openid
familyMember.setName(dto.getGuardianName());//姓名
familyMember.setTel(dto.getGuardianPhone());//电话
familyMember.setIdCard(dto.getGuardianIdCard());//身份证号
familyMember.setHomeAddress(dto.getGuardianHomeAddress());//家庭住址
familyMember.setWorkUnit(dto.getGuardianWorkUnit());//工作单位
familyMemberService.updateById(familyMember);//更新信息
}
}

View File

@ -4,10 +4,8 @@ import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.*;
import org.jeecg.common.constant.ProvinceCityArea;
import org.jeecg.common.util.SpringContextUtils;
import lombok.Data;
@ -72,4 +70,34 @@ public class NuBill implements Serializable {
@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;
}