diff --git a/nursing-unit-api/src/main/java/com/nu/modules/wechat/pay/api/WeChatPayApi.java b/nursing-unit-api/src/main/java/com/nu/modules/wechat/pay/api/WeChatPayApi.java index 799eb3b..7bb509e 100644 --- a/nursing-unit-api/src/main/java/com/nu/modules/wechat/pay/api/WeChatPayApi.java +++ b/nursing-unit-api/src/main/java/com/nu/modules/wechat/pay/api/WeChatPayApi.java @@ -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(); } + } diff --git a/nursing-unit-common/src/main/java/com/nu/dto/ElderInfoMQDto.java b/nursing-unit-common/src/main/java/com/nu/dto/ElderInfoMQDto.java index 13c81be..37767ea 100644 --- a/nursing-unit-common/src/main/java/com/nu/dto/ElderInfoMQDto.java +++ b/nursing-unit-common/src/main/java/com/nu/dto/ElderInfoMQDto.java @@ -111,6 +111,10 @@ public class ElderInfoMQDto implements Serializable { * 当前状态 0咨询 1入住 2留床 3退住 */ private String currentState; + /** + * 监护人id + */ + private String guardianId; /** * 监护人openId */ diff --git a/nursing-unit-common/src/main/java/com/nu/entity/ElderInfoEntity.java b/nursing-unit-common/src/main/java/com/nu/entity/ElderInfoEntity.java index d3cdddc..d7109fd 100644 --- a/nursing-unit-common/src/main/java/com/nu/entity/ElderInfoEntity.java +++ b/nursing-unit-common/src/main/java/com/nu/entity/ElderInfoEntity.java @@ -111,6 +111,10 @@ public class ElderInfoEntity implements Serializable { * 当前状态 0咨询 1入住 2留床 3退住 */ private String currentState; + /** + * 监护人id + */ + private String guardianId; /** * 监护人openId */ diff --git a/nursing-unit-common/src/main/java/com/nu/entity/NuBillEntity.java b/nursing-unit-common/src/main/java/com/nu/entity/NuBillEntity.java index 01769fe..bb0addd 100644 --- a/nursing-unit-common/src/main/java/com/nu/entity/NuBillEntity.java +++ b/nursing-unit-common/src/main/java/com/nu/entity/NuBillEntity.java @@ -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; } diff --git a/nursing-unit-elder/nu-elder-biz/src/main/java/com/nu/modules/familymember/controller/FamilyMemberController.java b/nursing-unit-elder/nu-elder-biz/src/main/java/com/nu/modules/familymember/controller/FamilyMemberController.java new file mode 100644 index 0000000..b927f7a --- /dev/null +++ b/nursing-unit-elder/nu-elder-biz/src/main/java/com/nu/modules/familymember/controller/FamilyMemberController.java @@ -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 { + @Autowired + private IFamilyMemberService familyMemberService; + + /** + * 分页列表查询 + * + * @param familyMember + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "家属信息-分页列表查询") + @ApiOperation(value="家属信息-分页列表查询", notes="家属信息-分页列表查询") + @GetMapping(value = "/list") + public Result> queryPageList(FamilyMember familyMember, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(familyMember, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage 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 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 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 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 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 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); +// } + +} diff --git a/nursing-unit-elder/nu-elder-biz/src/main/java/com/nu/modules/familymember/entity/FamilyMember.java b/nursing-unit-elder/nu-elder-biz/src/main/java/com/nu/modules/familymember/entity/FamilyMember.java new file mode 100644 index 0000000..90ffa2c --- /dev/null +++ b/nursing-unit-elder/nu-elder-biz/src/main/java/com/nu/modules/familymember/entity/FamilyMember.java @@ -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; +} diff --git a/nursing-unit-elder/nu-elder-biz/src/main/java/com/nu/modules/familymember/mapper/FamilyMemberMapper.java b/nursing-unit-elder/nu-elder-biz/src/main/java/com/nu/modules/familymember/mapper/FamilyMemberMapper.java new file mode 100644 index 0000000..790e3a7 --- /dev/null +++ b/nursing-unit-elder/nu-elder-biz/src/main/java/com/nu/modules/familymember/mapper/FamilyMemberMapper.java @@ -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 { + +} diff --git a/nursing-unit-elder/nu-elder-biz/src/main/java/com/nu/modules/familymember/mapper/xml/FamilyMemberMapper.xml b/nursing-unit-elder/nu-elder-biz/src/main/java/com/nu/modules/familymember/mapper/xml/FamilyMemberMapper.xml new file mode 100644 index 0000000..df1dfb3 --- /dev/null +++ b/nursing-unit-elder/nu-elder-biz/src/main/java/com/nu/modules/familymember/mapper/xml/FamilyMemberMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/nursing-unit-elder/nu-elder-biz/src/main/java/com/nu/modules/familymember/service/IFamilyMemberService.java b/nursing-unit-elder/nu-elder-biz/src/main/java/com/nu/modules/familymember/service/IFamilyMemberService.java new file mode 100644 index 0000000..be8b1e0 --- /dev/null +++ b/nursing-unit-elder/nu-elder-biz/src/main/java/com/nu/modules/familymember/service/IFamilyMemberService.java @@ -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 { + +} diff --git a/nursing-unit-elder/nu-elder-biz/src/main/java/com/nu/modules/familymember/service/impl/FamilyMemberServiceImpl.java b/nursing-unit-elder/nu-elder-biz/src/main/java/com/nu/modules/familymember/service/impl/FamilyMemberServiceImpl.java new file mode 100644 index 0000000..98738b0 --- /dev/null +++ b/nursing-unit-elder/nu-elder-biz/src/main/java/com/nu/modules/familymember/service/impl/FamilyMemberServiceImpl.java @@ -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 implements IFamilyMemberService { + +} diff --git a/nursing-unit-elder/nu-elder-biz/src/main/java/com/nu/modules/mq/elderinfo/listener/ElderInfoMQListener.java b/nursing-unit-elder/nu-elder-biz/src/main/java/com/nu/modules/mq/elderinfo/listener/ElderInfoMQListener.java index e25ea88..aa4a6ff 100644 --- a/nursing-unit-elder/nu-elder-biz/src/main/java/com/nu/modules/mq/elderinfo/listener/ElderInfoMQListener.java +++ b/nursing-unit-elder/nu-elder-biz/src/main/java/com/nu/modules/mq/elderinfo/listener/ElderInfoMQListener.java @@ -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 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);//更新信息 } } diff --git a/nursing-unit-nu/nu-nu-biz/src/main/java/com/nu/modules/nubill/entity/NuBill.java b/nursing-unit-nu/nu-nu-biz/src/main/java/com/nu/modules/nubill/entity/NuBill.java index 68e0367..963db2a 100644 --- a/nursing-unit-nu/nu-nu-biz/src/main/java/com/nu/modules/nubill/entity/NuBill.java +++ b/nursing-unit-nu/nu-nu-biz/src/main/java/com/nu/modules/nubill/entity/NuBill.java @@ -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; }