From 588e849cd239b0ccc588ef218e342be5f57d04fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=81=92?= <3226558941@qq.com> Date: Fri, 22 Sep 2023 17:53:07 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8A=A4=E7=90=86=E5=91=98app=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E7=A7=BB=E6=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../NursePersonAppLoginController.java | 222 ++++++++ .../nursepersonapplogin/OrderFallbackDTO.java | 43 ++ .../NursePersonAppLoginMapper.java | 134 +++++ .../INursePersonAppLoginService.java | 136 +++++ .../impl/NursePersonAppLoginServiceImpl.java | 489 ++++++++++++++++++ .../NurseAppLoginSysUserVO.java | 79 +++ .../NursePersonAppLoginsUserVO.java | 83 +++ .../NurseStationPersonUserVO.java | 73 +++ .../nursepersonapplogin/OrderAndItemVO.java | 126 +++++ .../OrderByNursePersonVO.java | 28 + .../OrderDetailsAndPatientVO.java | 157 ++++++ .../PersonNurseStationAppVO.java | 77 +++ .../NursePersonAppLoginMapper.xml | 418 +++++++++++++++ .../NurseStationPersonRevenue.java | 81 +++ .../NurseStationPersonRevenueMapper.java | 89 ++++ .../PatientDiseaseInfoMapper.java | 86 +++ .../NurseStationPersonRevenueVO.java | 67 +++ .../PersonRevenueCountVO.java | 62 +++ .../RevenueTimeDTO.java | 75 +++ .../NurseStationPersonRevenueMapper.xml | 237 +++++++++ .../PatientDiseaseInfoMapper.xml | 186 +++++++ 21 files changed, 2948 insertions(+) create mode 100644 xinelu-nurse-applet/src/main/java/com/xinelu/applet/controller/nursepersonapplogin/NursePersonAppLoginController.java create mode 100644 xinelu-nurse-applet/src/main/java/com/xinelu/applet/dto/nursepersonapplogin/OrderFallbackDTO.java create mode 100644 xinelu-nurse-applet/src/main/java/com/xinelu/applet/mapper/nursepersonapplogin/NursePersonAppLoginMapper.java create mode 100644 xinelu-nurse-applet/src/main/java/com/xinelu/applet/service/nursepersonapplogin/INursePersonAppLoginService.java create mode 100644 xinelu-nurse-applet/src/main/java/com/xinelu/applet/service/nursepersonapplogin/impl/NursePersonAppLoginServiceImpl.java create mode 100644 xinelu-nurse-applet/src/main/java/com/xinelu/applet/vo/nursepersonapplogin/NurseAppLoginSysUserVO.java create mode 100644 xinelu-nurse-applet/src/main/java/com/xinelu/applet/vo/nursepersonapplogin/NursePersonAppLoginsUserVO.java create mode 100644 xinelu-nurse-applet/src/main/java/com/xinelu/applet/vo/nursepersonapplogin/NurseStationPersonUserVO.java create mode 100644 xinelu-nurse-applet/src/main/java/com/xinelu/applet/vo/nursepersonapplogin/OrderAndItemVO.java create mode 100644 xinelu-nurse-applet/src/main/java/com/xinelu/applet/vo/nursepersonapplogin/OrderByNursePersonVO.java create mode 100644 xinelu-nurse-applet/src/main/java/com/xinelu/applet/vo/nursepersonapplogin/OrderDetailsAndPatientVO.java create mode 100644 xinelu-nurse-applet/src/main/java/com/xinelu/applet/vo/nursepersonapplogin/PersonNurseStationAppVO.java create mode 100644 xinelu-nurse-applet/src/main/resources/mapper/applet/nursepersonapplogin/NursePersonAppLoginMapper.xml create mode 100644 xinelu-nurse-manage/src/main/java/com/xinelu/manage/domain/nursestationpersonrevenue/NurseStationPersonRevenue.java create mode 100644 xinelu-nurse-manage/src/main/java/com/xinelu/manage/mapper/nursestationpersonrevenue/NurseStationPersonRevenueMapper.java create mode 100644 xinelu-nurse-manage/src/main/java/com/xinelu/manage/mapper/patientdiseaseinfo/PatientDiseaseInfoMapper.java create mode 100644 xinelu-nurse-manage/src/main/java/com/xinelu/manage/vo/nursestationpersonrevenue/NurseStationPersonRevenueVO.java create mode 100644 xinelu-nurse-manage/src/main/java/com/xinelu/manage/vo/nursestationpersonrevenue/PersonRevenueCountVO.java create mode 100644 xinelu-nurse-manage/src/main/java/com/xinelu/manage/vo/nursestationpersonrevenue/RevenueTimeDTO.java create mode 100644 xinelu-nurse-manage/src/main/resources/mapper/manage/nursestationpersonrevenue/NurseStationPersonRevenueMapper.xml create mode 100644 xinelu-nurse-manage/src/main/resources/mapper/manage/patientdiseaseinfo/PatientDiseaseInfoMapper.xml diff --git a/xinelu-nurse-applet/src/main/java/com/xinelu/applet/controller/nursepersonapplogin/NursePersonAppLoginController.java b/xinelu-nurse-applet/src/main/java/com/xinelu/applet/controller/nursepersonapplogin/NursePersonAppLoginController.java new file mode 100644 index 0000000..0a36450 --- /dev/null +++ b/xinelu-nurse-applet/src/main/java/com/xinelu/applet/controller/nursepersonapplogin/NursePersonAppLoginController.java @@ -0,0 +1,222 @@ +package com.xinelu.applet.controller.nursepersonapplogin; + + +import com.xinelu.applet.dto.nursepersonapplogin.OrderFallbackDTO; +import com.xinelu.applet.service.nursepersonapplogin.INursePersonAppLoginService; +import com.xinelu.applet.vo.nursepersonapplogin.NurseAppLoginSysUserVO; +import com.xinelu.applet.vo.nursepersonapplogin.OrderAndItemVO; +import com.xinelu.applet.vo.nursepersonapplogin.PersonNurseStationAppVO; +import com.xinelu.common.annotation.MobileRequestAuthorization; +import com.xinelu.common.annotation.RepeatSubmit; +import com.xinelu.common.constant.Constants; +import com.xinelu.common.core.controller.BaseController; +import com.xinelu.common.core.domain.AjaxResult; +import com.xinelu.common.core.page.TableDataInfo; +import com.xinelu.common.custominterface.Insert; +import com.xinelu.common.custominterface.TaskInsert; +import com.xinelu.common.utils.regex.RegexUtil; +import com.xinelu.manage.domain.appointmentorderdetails.AppointmentOrderDetails; +import org.apache.commons.lang3.BooleanUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Objects; + +/** + * @Description 护理人员APP登录注册控制器 + * @Author zh + * @Date 2022-10-28 + */ +@RestController +@RequestMapping("/nurseApp/personLogin") +public class NursePersonAppLoginController extends BaseController { + + @Resource + private INursePersonAppLoginService nursePersonAppLoginService; + @Resource + private RegexUtil regexUtil; + + /** + * 工单首页查询已完成以及未完成数量 + * + * @param nurseStationPersonId 护理员id + * @return 结果 + */ + @MobileRequestAuthorization + @GetMapping("/selectOrderByNursePersonCount") + public AjaxResult selectOrderByNursePersonCount(Long nurseStationPersonId) { + return nursePersonAppLoginService.selectOrderByNursePersonCount(nurseStationPersonId); + } + + /** + * 服务人员我的任务界面 查询服务订单 + * + * @param orderAndItem 预约订单信息 + * @return 结果 + */ + @MobileRequestAuthorization + @GetMapping("/selectMission") + public TableDataInfo selectMission(OrderAndItemVO orderAndItem) { + startPage(); + List appointmentOrder = nursePersonAppLoginService.selectAppointmentOrder(orderAndItem); + return getDataTable(appointmentOrder); + } + + /** + * 服务人员-服务订单详情 + * + * @param orderNo 订单编号 + * @return 结果 + */ + @MobileRequestAuthorization + @GetMapping("/taskDetails") + public AjaxResult selectOrderDetailsAndPatient(String orderNo) { + if (Objects.isNull(orderNo)) { + return AjaxResult.error("订单信息不能为空!"); + } + return nursePersonAppLoginService.selectOrderDetailsAndPatient(orderNo); + } + + /** + * 服务人员 - 任务回退 + * + * @param orderFallbackDTO 订单信息 + * @return 结果 + */ + @MobileRequestAuthorization + @PostMapping("/orderFallback") + public AjaxResult updateAppointmentOrder(@Validated(Insert.class) @RequestBody OrderFallbackDTO orderFallbackDTO) { + return nursePersonAppLoginService.updateAppointmentOrder(orderFallbackDTO); + } + + /** + * 任务确认完成 + * + * @param appointmentOrderDetails 图片路径 + * @return AjaxResult + */ + @MobileRequestAuthorization + @PostMapping("/orderConfirm") + public AjaxResult updateOrderDetails(@Validated(TaskInsert.class) @RequestBody AppointmentOrderDetails appointmentOrderDetails) { + return nursePersonAppLoginService.updateOrderDetails(appointmentOrderDetails); + } + + /** + * 护理人员 注册用户信息 + * + * @param nurseAppLogin 账号信息 + * @return 结果 + */ + @PostMapping("/nurseAppLoginSysUser") + public AjaxResult nurseAppLoginSysUser(@Validated(Insert.class) @RequestBody NurseAppLoginSysUserVO nurseAppLogin) { + //校验手机号 + boolean regexPhone = regexUtil.regexPhone(nurseAppLogin.getPhonenumber()); + if (BooleanUtils.isFalse(regexPhone)) { + return AjaxResult.error("您输入的手机号不正确,请重新输入!"); + } + return nursePersonAppLoginService.nurseAppLoginSysUser(nurseAppLogin); + } + + /** + * 护理人员 app登录 + * + * @param phonenumber 账号 + * @param stationPersonPassword 密码 + * @return 结果 + */ + @PostMapping("/appLogin") + public AjaxResult logins(String phonenumber, String stationPersonPassword) { + if (StringUtils.isBlank(phonenumber)) { + return AjaxResult.error("请输入账号!"); + } + if (StringUtils.isBlank(stationPersonPassword)) { + return AjaxResult.error("请输入密码!"); + } + return nursePersonAppLoginService.logins(phonenumber, stationPersonPassword); + } + + /** + * 忘记密码 + * + * @param phonenumber 手机号 + * @param stationPersonPassword 密码 + * @return 结果 + */ + @PostMapping("/updatePassword") + public AjaxResult updatePassword(String phonenumber, String stationPersonPassword, String verification) { + if (StringUtils.isBlank(phonenumber)) { + return AjaxResult.error("手机号不能为空!"); + } + if (StringUtils.isBlank(stationPersonPassword)) { + return AjaxResult.error("密码不能为空!"); + } + return nursePersonAppLoginService.updatePassword(phonenumber, stationPersonPassword, verification); + } + + /** + * 查询护理站人员的个人信息 + * + * @param nurseAppLoginSysUserVO 个人信息 + * @return com.xinyilu.nurseapplet.domain.vo.nursepersonapplogin.NursePersonAppLoginsUserVO + **/ + @MobileRequestAuthorization + @GetMapping("/nursePerson") + public AjaxResult nursePerson(NurseAppLoginSysUserVO nurseAppLoginSysUserVO) { + if (StringUtils.isBlank(nurseAppLoginSysUserVO.getPhonenumber())) { + return AjaxResult.error("账号异常,请联系管理员!"); + } + if (StringUtils.isBlank(nurseAppLoginSysUserVO.getStationPersonPassword())) { + return AjaxResult.error("账号密码异常,请联系管理员!"); + } + return AjaxResult.success(nursePersonAppLoginService.getNursePersonPersonalInformation(nurseAppLoginSysUserVO)); + } + + /** + * 修改用户护理人员的账户密码 + * + * @param nurseAppLoginSysUserVO 用户信息 + * @return int + **/ + @MobileRequestAuthorization + @RepeatSubmit + @PostMapping("/userPassWord") + public AjaxResult userPassWord(@RequestBody NurseAppLoginSysUserVO nurseAppLoginSysUserVO) { + return nursePersonAppLoginService.updateUserPassWord(nurseAppLoginSysUserVO); + } + + /** + * 修改被护理人人员上传文件头像 + * + * @param multipartFile 文件 + * @param userId userId护理人人员id + * @return com.xinyilu.common.core.domain.AjaxResult + * @throws Exception 异常信息 + **/ + @PostMapping("/updateHeadAvatarHead") + public AjaxResult updateHeadAvatarHead(@RequestParam("file") MultipartFile multipartFile, Long userId) throws Exception { + if (Objects.isNull(userId)) { + return AjaxResult.error("护理人人员id不能为空!"); + } + if (Objects.isNull(multipartFile) || StringUtils.isBlank(multipartFile.getOriginalFilename())) { + return AjaxResult.error("当前文件不存在,无法上传!"); + } + if (multipartFile.getOriginalFilename().contains(Constants.EMPTY)) { + return AjaxResult.error("当前文件名含有空格,请先去除空格在上传!"); + } + return nursePersonAppLoginService.updateHeadAvatarHead(multipartFile, userId); + } + + /** + * 查询护理站信息列表 + */ + @GetMapping("/personNurseStationLists") + public TableDataInfo personNurseStationLists(PersonNurseStationAppVO nurseStation) { + startPage(); + List personNurseStationLists = nursePersonAppLoginService.getPersonNurseStationLists(nurseStation); + return getDataTable(personNurseStationLists); + } +} diff --git a/xinelu-nurse-applet/src/main/java/com/xinelu/applet/dto/nursepersonapplogin/OrderFallbackDTO.java b/xinelu-nurse-applet/src/main/java/com/xinelu/applet/dto/nursepersonapplogin/OrderFallbackDTO.java new file mode 100644 index 0000000..d74a81b --- /dev/null +++ b/xinelu-nurse-applet/src/main/java/com/xinelu/applet/dto/nursepersonapplogin/OrderFallbackDTO.java @@ -0,0 +1,43 @@ +package com.xinelu.applet.dto.nursepersonapplogin; + +import com.xinelu.common.custominterface.Insert; +import lombok.Data; +import net.sf.jsqlparser.statement.update.Update; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * @Description 护理员任务退回传入DTO + * @Author 张恒 + * @Date 2023-03-30 + */ +@Data +public class OrderFallbackDTO implements Serializable { + private static final long serialVersionUID = -7304878110328260180L; + + /** + * 预约订单id + */ + @NotNull(message = "订单信息为空", groups = {Insert.class, Update.class}) + private Long appointmentOrderId; + + /** + * 护理员id + */ + @NotNull(message = "用户信息为空", groups = {Insert.class, Update.class}) + private Long stationPersonId; + + /** + * 订单编号 + */ + @NotBlank(message = "订单编号为空", groups = {Insert.class, Update.class}) + private String appointmentOrderNo; + + /** + * 退回原因 + */ + @NotBlank(message = "退回原因为空", groups = {Insert.class}) + private String taskReturnReason; +} diff --git a/xinelu-nurse-applet/src/main/java/com/xinelu/applet/mapper/nursepersonapplogin/NursePersonAppLoginMapper.java b/xinelu-nurse-applet/src/main/java/com/xinelu/applet/mapper/nursepersonapplogin/NursePersonAppLoginMapper.java new file mode 100644 index 0000000..805f242 --- /dev/null +++ b/xinelu-nurse-applet/src/main/java/com/xinelu/applet/mapper/nursepersonapplogin/NursePersonAppLoginMapper.java @@ -0,0 +1,134 @@ +package com.xinelu.applet.mapper.nursepersonapplogin; + +import com.xinelu.applet.vo.nursepersonapplogin.*; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description 护理人员APP登录注册Mapper + * @Author zh + * @Date 2022-10-28 + */ +public interface NursePersonAppLoginMapper { + + /** + * 工单首页查询已完成以及未完成数量 + * + * @param nurseStationPersonId 护理员id + * @param orderStatusList 状态 + * @return java.util.List + **/ + List selectOrderByNursePersonCount(@Param("nurseStationPersonId") Long nurseStationPersonId, @Param("orderStatusList") List orderStatusList); + + /** + * 服务人员我的任务界面 查询服务订单 + * + * @param orderAndItem 预约订单信息 + * @return 结果 + */ + List selectOrderByNursePersonId(OrderAndItemVO orderAndItem); + + /** + * 服务人员-服务订单详情 + * + * @param orderNo 订单编号 + * @return 结果 + */ + OrderDetailsAndPatientVO getOrderDetailsAndPatientByDetailsId(String orderNo); + + /** + * 任务退回 + * + * @param orderNo 订单编号 + * @param orderStatus 订单状态 + * @param taskReturnReason 退还原因 + * @return 结果 + */ + int updateAppointmentOrderByOrderNo(@Param("orderNo") String orderNo, @Param("orderStatus") String orderStatus, @Param("taskReturnReason") String taskReturnReason); + + /** + * 根据手机号或者密码 查询 护理人员的注册信息 + * + * @param phonenumber 手机号 + * @param stationPersonPassword 密码 + * @return int 数量 + */ + int getSysUserPasswordByPhone(@Param("phonenumber") String phonenumber, @Param("stationPersonPassword") String stationPersonPassword); + + /** + * 护理站人员注册信息新增 + * + * @param nurseAppLoginSysUserVO 注册信息 + * @return int 结果 + **/ + int insertNurseAppLoginSysUser(NurseAppLoginSysUserVO nurseAppLoginSysUserVO); + + + /** + * 根据用户护理人员的账户密码去查询 返回护理人员信息 + * + * @param phonenumber 手机号 账号 + * @param stationPersonPassword 密码 + * @return com.xinyilu.nurseapplet.domain.vo.nursepersonapplogin.NursePersonAppLoginsUserVO + **/ + NursePersonAppLoginsUserVO getUserAndPerson(@Param("phonenumber") String phonenumber, @Param("stationPersonPassword") String stationPersonPassword); + + /** + * 根据手机号查询用户id + * + * @param phonenumber 手机号码 + * @return 完善信息 + */ + Long getFromPhoneUserId(String phonenumber); + + /** + * 修改用户护理人员的账户密码 + * + * @param nurseAppLoginSysUserVO 用户信息 + * @return int + **/ + int updateUserPassWord(NurseAppLoginSysUserVO nurseAppLoginSysUserVO); + + + /** + * 查询护理站人员的个人信息 + * + * @param nurseAppLoginSysUserVO 个人信息 + * @return com.xinyilu.nurseapplet.domain.vo.nursepersonapplogin.NursePersonAppLoginsUserVO + **/ + NursePersonAppLoginsUserVO getNursePersonPersonalInformation(NurseAppLoginSysUserVO nurseAppLoginSysUserVO); + + /** + * 修改被护理人人员上传文件头像 + * + * @param avatar 头像地址 + * @param userId userId护理人人员id + * @return com.xinyilu.common.core.domain.AjaxResult + **/ + int updateHeadAvatarHeadUserId(@Param("userId") Long userId, @Param("avatar") String avatar); + + /** + * 查询护理站列表 + * + * @param nurseStation 护理站列表 + * @return com.xinyilu.base.domain.nursestation.NurseStation + **/ + List getPersonNurseStationLists(PersonNurseStationAppVO nurseStation); + + /** + * 根据userId查询信息 + * + * @param userId 护理人员id + * @return int + **/ + NursePersonAppLoginsUserVO getNursePersonUserId(Long userId); + + /** + * 根据护理员id查询个人信息 + * + * @param nursePersonId 护理员id + * @return com.xinyilu.nurseapplet.domain.vo.nursepersonapplogin.NurseStationPersonUserVO + **/ + NurseStationPersonUserVO getNurseStationPersonById(Long nursePersonId); +} diff --git a/xinelu-nurse-applet/src/main/java/com/xinelu/applet/service/nursepersonapplogin/INursePersonAppLoginService.java b/xinelu-nurse-applet/src/main/java/com/xinelu/applet/service/nursepersonapplogin/INursePersonAppLoginService.java new file mode 100644 index 0000000..a6a59fd --- /dev/null +++ b/xinelu-nurse-applet/src/main/java/com/xinelu/applet/service/nursepersonapplogin/INursePersonAppLoginService.java @@ -0,0 +1,136 @@ +package com.xinelu.applet.service.nursepersonapplogin; + + +import com.xinelu.applet.dto.nursepersonapplogin.OrderFallbackDTO; +import com.xinelu.applet.vo.nursepersonapplogin.NurseAppLoginSysUserVO; +import com.xinelu.applet.vo.nursepersonapplogin.NursePersonAppLoginsUserVO; +import com.xinelu.applet.vo.nursepersonapplogin.OrderAndItemVO; +import com.xinelu.applet.vo.nursepersonapplogin.PersonNurseStationAppVO; +import com.xinelu.common.core.domain.AjaxResult; +import com.xinelu.manage.domain.appointmentorderdetails.AppointmentOrderDetails; +import org.apache.ibatis.annotations.Param; +import org.springframework.web.multipart.MultipartFile; + +import java.util.List; + +/** + * @Description 护理人员APP登录注册业务层 + * @Author zh + * @Date 2022-10-28 + */ +public interface INursePersonAppLoginService { + + /** + * 工单首页查询已完成以及未完成数量 + * + * @param nurseStationPersonId 护理员id + * @return int + **/ + AjaxResult selectOrderByNursePersonCount(Long nurseStationPersonId); + + + /** + * 服务人员我的任务界面 查询服务订单 + * + * @param orderAndItem 预约订单信息 + * @return 结果 + */ + List selectAppointmentOrder(OrderAndItemVO orderAndItem); + + /** + * 服务人员-服务订单详情 + * + * @param orderNo 订单编号 + * @return 结果 + */ + AjaxResult selectOrderDetailsAndPatient(String orderNo); + + /** + * 服务人员 - 任务回退 + * + * @param orderFallbackDTO 订单信息 + * @return 结果 + */ + AjaxResult updateAppointmentOrder(OrderFallbackDTO orderFallbackDTO); + + /** + * 任务确认完成 + * + * @param appointmentOrderDetails 图片路径 + * @return 结果 + */ + AjaxResult updateOrderDetails(AppointmentOrderDetails appointmentOrderDetails); + + /** + * 护理人员 注册用户信息 + * + * @param nurseAppLogin 注册信息 + * @return com.xinyilu.common.core.domain.AjaxResult + **/ + AjaxResult nurseAppLoginSysUser(NurseAppLoginSysUserVO nurseAppLogin); + + + /** + * APP登录用户信息 + * + * @param phone 账号 + * @param stationPersonPassword 密码 + * @return 结果 + */ + AjaxResult logins(String phone, String stationPersonPassword); + + + /** + * 忘记密码 + * + * @param phonenumber 账号 + * @param stationPersonPassword 密码 + * @return 结果 + */ + AjaxResult updatePassword(String phonenumber, String stationPersonPassword, String verification); + + /** + * 查询护理站人员的个人信息 + * + * @param nurseAppLoginSysUserVO 个人信息 + * @return com.xinyilu.nurseapplet.domain.vo.nursepersonapplogin.NursePersonAppLoginsUserVO + **/ + NursePersonAppLoginsUserVO getNursePersonPersonalInformation(NurseAppLoginSysUserVO nurseAppLoginSysUserVO); + + + /** + * 修改用户护理人员的账户密码 + * + * @param nurseAppLoginSysUserVO 用户信息 + * @return int + **/ + AjaxResult updateUserPassWord(NurseAppLoginSysUserVO nurseAppLoginSysUserVO); + + /** + * 修改被护理人人员上传文件头像 + * + * @param avatar 头像地址 + * @param userId userId护理人人员id + * @return com.xinyilu.common.core.domain.AjaxResult + **/ + boolean updateHeadAvatarHeadUserId(@Param("userId") Long userId, @Param("avatar") String avatar, String userIdAvatar); + + /** + * 修改被护理人人员上传文件头像 + * + * @param multipartFile 文件 + * @param userId userId护理人人员id + * @return com.xinyilu.common.core.domain.AjaxResult + * @throws Exception 异常信息 + **/ + AjaxResult updateHeadAvatarHead(MultipartFile multipartFile, Long userId) throws Exception; + + + /** + * 查询护理站列表 + * + * @param nurseStation 护理站列表 + * @return com.xinyilu.base.domain.nursestation.NurseStation + **/ + List getPersonNurseStationLists(PersonNurseStationAppVO nurseStation); +} diff --git a/xinelu-nurse-applet/src/main/java/com/xinelu/applet/service/nursepersonapplogin/impl/NursePersonAppLoginServiceImpl.java b/xinelu-nurse-applet/src/main/java/com/xinelu/applet/service/nursepersonapplogin/impl/NursePersonAppLoginServiceImpl.java new file mode 100644 index 0000000..4d112f3 --- /dev/null +++ b/xinelu-nurse-applet/src/main/java/com/xinelu/applet/service/nursepersonapplogin/impl/NursePersonAppLoginServiceImpl.java @@ -0,0 +1,489 @@ +package com.xinelu.applet.service.nursepersonapplogin.impl; + + +import com.xinelu.applet.dto.nursepersonapplogin.OrderFallbackDTO; +import com.xinelu.applet.mapper.nursepersonapplogin.NursePersonAppLoginMapper; +import com.xinelu.applet.service.nursepersonapplogin.INursePersonAppLoginService; +import com.xinelu.applet.vo.nursepersonapplogin.*; +import com.xinelu.common.config.XinELuConfig; +import com.xinelu.common.core.domain.AjaxResult; +import com.xinelu.common.enums.OrderProcessOperateTypeEnum; +import com.xinelu.common.enums.OrderStatusEnum; +import com.xinelu.common.exception.ServiceException; +import com.xinelu.common.utils.AgeUtil; +import com.xinelu.common.utils.file.FileUploadUtils; +import com.xinelu.common.utils.file.MimeTypeUtils; +import com.xinelu.common.utils.regex.RegexUtil; +import com.xinelu.common.utils.sign.Md5Utils; +import com.xinelu.manage.domain.appointmentorderdetails.AppointmentOrderDetails; +import com.xinelu.manage.domain.appointmentorderprocessrecord.AppointmentOrderProcessRecord; +import com.xinelu.manage.domain.nursestationperson.NurseStationPerson; +import com.xinelu.manage.domain.nursestationpersonrevenue.NurseStationPersonRevenue; +import com.xinelu.manage.domain.patientdiseaseinfo.PatientDiseaseInfo; +import com.xinelu.manage.mapper.appointmentorderdetails.AppointmentOrderDetailsMapper; +import com.xinelu.manage.mapper.appointmentorderprocessrecord.AppointmentOrderProcessRecordMapper; +import com.xinelu.manage.mapper.nursestation.NurseStationMapper; +import com.xinelu.manage.mapper.nursestationperson.NurseStationPersonMapper; +import com.xinelu.manage.mapper.nursestationpersonrevenue.NurseStationPersonRevenueMapper; +import com.xinelu.manage.mapper.patientdiseaseinfo.PatientDiseaseInfoMapper; +import com.xinelu.manage.service.stationmessagepush.StationMessagePushService; +import com.xinelu.manage.vo.appointmentorder.AppointmentOrderRecordVO; +import com.xinelu.manage.vo.appointmentorder.AppointmentReceivingOrderVO; +import com.xinelu.manage.vo.nursestation.NurseStationSysUserVO; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.BooleanUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; +import java.io.File; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * @Description 护理人员APP登录注册业务层实现类 + * @Author ZH + * @Date 2022-10-28 + */ +@Service +@Slf4j +public class NursePersonAppLoginServiceImpl implements INursePersonAppLoginService { + @Resource + private NursePersonAppLoginMapper nursePersonAppLoginMapper; + @Resource + private AppointmentOrderDetailsMapper appointmentOrderDetailsMapper; + @Resource + private RegexUtil regexUtil; + @Resource + private NurseStationMapper nurseStationMapper; + @Resource + private NursePersonAppLoginServiceImpl nursePersonAppLoginService; + @Resource + private NurseStationPersonMapper nurseStationPersonMapper; + @Resource + private XinELuConfig xinYiLuConfig; + @Resource + private AppointmentOrderProcessRecordMapper appointmentOrderProcessRecordMapper; + @Resource + private NurseStationPersonRevenueMapper nurseStationPersonRevenueMapper; + @Resource + private PatientDiseaseInfoMapper patientDiseaseInfoMapper; + @Resource + private StationMessagePushService stationMessagePushService; + + /** + * 工单首页查询已完成以及未完成数量 + * + * @param nurseStationPersonId 护理员id + * @return int + **/ + @Override + public AjaxResult selectOrderByNursePersonCount(Long nurseStationPersonId) { + OrderByNursePersonVO orderByNursePersonVO = new OrderByNursePersonVO(); + if (Objects.isNull(nurseStationPersonId)) { + orderByNursePersonVO.setCompleteCount(0L); + orderByNursePersonVO.setNotFinishCount(0L); + return AjaxResult.success(orderByNursePersonVO); + } + List orderStatusList = Arrays.asList(OrderStatusEnum.NOT_FINISH.getInfo(), OrderStatusEnum.WAIT_RECEIVE.getInfo(), OrderStatusEnum.COMPLETE.getInfo(), OrderStatusEnum.EVALUATED.getInfo()); + List orderByNursePersonList = nursePersonAppLoginMapper.selectOrderByNursePersonCount(nurseStationPersonId, orderStatusList); + long completeCount = orderByNursePersonList.stream().filter(Objects::nonNull).filter(order -> (StringUtils.isNotBlank(order.getOrderStatus())) && order.getOrderStatus().equals(OrderStatusEnum.COMPLETE.getInfo()) || order.getOrderStatus().equals(OrderStatusEnum.EVALUATED.getInfo())).count(); + long notFinishCount = orderByNursePersonList.stream().filter(Objects::nonNull).filter(order -> (StringUtils.isNotBlank(order.getOrderStatus())) && order.getOrderStatus().equals(OrderStatusEnum.NOT_FINISH.getInfo()) || order.getOrderStatus().equals(OrderStatusEnum.WAIT_RECEIVE.getInfo())).count(); + orderByNursePersonVO.setCompleteCount(completeCount); + orderByNursePersonVO.setNotFinishCount(notFinishCount); + return AjaxResult.success(orderByNursePersonVO); + } + + /** + * 服务人员我的任务界面 查询服务订单 + * + * @param orderAndItem 预约订单信息 + * @return 结果 + */ + @Override + public List selectAppointmentOrder(OrderAndItemVO orderAndItem) { + List appointmentOrderDetails = new ArrayList<>(); + if (Objects.isNull(orderAndItem) || Objects.isNull(orderAndItem.getNursePersonId())) { + return appointmentOrderDetails; + } + List orderStatusList; + //处理全部订单状态筛选条件 + if (StringUtils.isBlank(orderAndItem.getOrderStatus())) { + orderStatusList = Arrays.asList(OrderStatusEnum.NOT_FINISH.getInfo(), OrderStatusEnum.WAIT_RECEIVE.getInfo(), OrderStatusEnum.COMPLETE.getInfo(), OrderStatusEnum.EVALUATED.getInfo()); + orderAndItem.setOrderStatusList(orderStatusList); + } + //处理当前订单状态筛选条件 + if (StringUtils.isNotBlank(orderAndItem.getOrderStatus()) && StringUtils.equals(OrderStatusEnum.NOT_FINISH.getInfo(), orderAndItem.getOrderStatus())) { + orderStatusList = Arrays.asList(OrderStatusEnum.NOT_FINISH.getInfo(), OrderStatusEnum.WAIT_RECEIVE.getInfo()); + orderAndItem.setOrderStatusList(orderStatusList); + } + //已完成的订单状态筛选条件 + if (StringUtils.isNotBlank(orderAndItem.getOrderStatus()) && StringUtils.equals(OrderStatusEnum.COMPLETE.getInfo(), orderAndItem.getOrderStatus())) { + orderStatusList = Arrays.asList(OrderStatusEnum.COMPLETE.getInfo(), OrderStatusEnum.EVALUATED.getInfo()); + orderAndItem.setOrderStatusList(orderStatusList); + } + return nursePersonAppLoginMapper.selectOrderByNursePersonId(orderAndItem); + } + + /** + * 服务人员-服务订单详情 + * + * @param orderNo 订单编号 + * @return 结果 + */ + @Override + public AjaxResult selectOrderDetailsAndPatient(String orderNo) { + OrderDetailsAndPatientVO patientByDetails = nursePersonAppLoginMapper.getOrderDetailsAndPatientByDetailsId(orderNo); + if (Objects.nonNull(patientByDetails) && Objects.nonNull(patientByDetails.getBirthDate())) { + patientByDetails.setAge(AgeUtil.getAgeMonth(String.valueOf(patientByDetails.getBirthDate()))); + } + //健康状况 + List patientDiseaseInfo = patientDiseaseInfoMapper.selectPatientDiseaseInfoByOrderNo(patientByDetails.getOrderNo()); + if (CollectionUtils.isNotEmpty(patientDiseaseInfo)) { + List diseaseNameList = patientDiseaseInfo.stream().filter(Objects::nonNull).map(PatientDiseaseInfo::getDiseaseName).filter(StringUtils::isNotBlank).collect(Collectors.toList()); + String diseaseName = String.join(",", diseaseNameList); + patientByDetails.setDiseaseName(diseaseName); + } + return AjaxResult.success(patientByDetails); + } + + /** + * 服务人员 - 任务回退 + * + * @param orderFallbackDTO 订单信息 + * @return 结果 + */ + @Transactional(rollbackFor = Exception.class) + @Override + public AjaxResult updateAppointmentOrder(OrderFallbackDTO orderFallbackDTO) { + AppointmentReceivingOrderVO appointmentReceivingOrder = appointmentOrderDetailsMapper.getAppointmentReceivingOrder(orderFallbackDTO.getAppointmentOrderNo()); + if (Objects.isNull(appointmentReceivingOrder)) { + return AjaxResult.error("当前订单不存在,无法退回!"); + } + appointmentReceivingOrder.setTaskReturnReason(orderFallbackDTO.getTaskReturnReason()); + int update = nursePersonAppLoginMapper.updateAppointmentOrderByOrderNo(orderFallbackDTO.getAppointmentOrderNo(), OrderStatusEnum.WAIT_DISPATCH.getInfo(), orderFallbackDTO.getTaskReturnReason()); + if (update <= 0) { + throw new ServiceException("任务退回失败,请联系管理员!"); + } + //流程记录 + AppointmentOrderProcessRecord appointmentOrderProcessRecord = new AppointmentOrderProcessRecord(); + appointmentOrderProcessRecord.setAppointmentOrderNo(orderFallbackDTO.getAppointmentOrderNo()); + appointmentOrderProcessRecord.setCreateTime(LocalDateTime.now()); + appointmentOrderProcessRecord.setOperatePersonId(orderFallbackDTO.getStationPersonId()); + appointmentOrderProcessRecord.setOperateTime(LocalDateTime.now()); + appointmentOrderProcessRecord.setOperateType(OrderProcessOperateTypeEnum.ACTIVE_BACK_ORDER.getInfo()); + appointmentOrderProcessRecord.setOperateDetails(orderFallbackDTO.getTaskReturnReason()); + appointmentOrderProcessRecord.setAppointmentOrderId(orderFallbackDTO.getAppointmentOrderId()); + int count = appointmentOrderProcessRecordMapper.insertAppointmentOrderProcessRecord(appointmentOrderProcessRecord); + if (count <= 0) { + throw new ServiceException("预约订单流程记录失败,请联系管理员!"); + } + //异步发送信息 + stationMessagePushService.refusalOrdersOperationsPush(appointmentReceivingOrder); + return AjaxResult.success(); + } + + /** + * 任务确认完成 + * + * @param appointmentOrderDetails 图片路径 + * @return 结果 + */ + @Transactional(rollbackFor = Exception.class) + @Override + public AjaxResult updateOrderDetails(AppointmentOrderDetails appointmentOrderDetails) { + AppointmentOrderRecordVO orderDetails = appointmentOrderDetailsMapper.selectAppointmentOrderById(appointmentOrderDetails.getOrderNo()); + if (Objects.isNull(orderDetails) || StringUtils.isBlank(orderDetails.getOrderStatus())) { + return AjaxResult.error("当前订单状态不存在,请重新选择!"); + } + if (!orderDetails.getOrderStatus().equals(OrderStatusEnum.NOT_FINISH.getInfo())) { + return AjaxResult.error("订单状态异常,请选择未完成订单!"); + } + if (StringUtils.isBlank(appointmentOrderDetails.getServeLocationLatitude()) || StringUtils.isBlank(appointmentOrderDetails.getServeLocationLatitude())) { + log.info("当前用户不同意获取位置信息,无法保存当前位置经纬度信息!"); + } + appointmentOrderDetails.setUpdateTime(LocalDateTime.now()); + appointmentOrderDetails.setOrderStatus(OrderStatusEnum.COMPLETE.getInfo()); + int update = appointmentOrderDetailsMapper.updateOrderDetailsById(appointmentOrderDetails); + if (update <= 0) { + throw new ServiceException("信息上传失败,请联系管理员!"); + } + //新增护理员订单佣金收益信息表 + NurseStationPersonRevenue nurseStationPersonRevenue = new NurseStationPersonRevenue(); + nurseStationPersonRevenue.setNurseStationPersonId(Objects.isNull(orderDetails.getNurseStationPersonId()) ? null : orderDetails.getNurseStationPersonId()); + nurseStationPersonRevenue.setAppointmentOrderId(Objects.isNull(orderDetails.getId()) ? null : orderDetails.getId()); + nurseStationPersonRevenue.setRevenueAmount(Objects.isNull(orderDetails.getOrderCommissionAmount()) ? null : orderDetails.getOrderCommissionAmount()); + nurseStationPersonRevenue.setFinishOrderTime(LocalDateTime.now()); + nurseStationPersonRevenue.setCreateTime(LocalDateTime.now()); + int stationPersonRevenue = nurseStationPersonRevenueMapper.insertNurseStationPersonRevenue(nurseStationPersonRevenue); + if (stationPersonRevenue <= 0) { + throw new ServiceException("新增护理员订单佣金收益记录失败,请联系管理员!"); + } + //新增预约订单流程记录信息表 + AppointmentOrderProcessRecord appointment = new AppointmentOrderProcessRecord(); + appointment.setOperatePersonId(Objects.isNull(orderDetails.getNurseStationPersonId()) ? null : orderDetails.getNurseStationPersonId()); + appointment.setAppointmentOrderId(Objects.isNull(orderDetails.getId()) ? null : orderDetails.getId()); + appointment.setAppointmentOrderNo(StringUtils.isBlank(orderDetails.getOrderNo()) ? "" : orderDetails.getOrderNo()); + appointment.setOperateTime(LocalDateTime.now()); + appointment.setOperateType(OrderProcessOperateTypeEnum.FINISH_ORDER.getInfo()); + appointment.setOperateDetails("预约订单任务完成操作"); + appointment.setCreateTime(LocalDateTime.now()); + int count = appointmentOrderProcessRecordMapper.insertAppointmentOrderProcessRecord(appointment); + if (count <= 0) { + throw new ServiceException("预约订单流程记录失败,请联系管理员!"); + } + //更新护理员账户总金额 + Long nurseStationPersonId = Objects.isNull(orderDetails.getNurseStationPersonId()) ? 0 : orderDetails.getNurseStationPersonId(); + BigDecimal orderCommissionAmount = Objects.isNull(orderDetails.getOrderCommissionAmount()) ? BigDecimal.ZERO : orderDetails.getOrderCommissionAmount(); + nurseStationPersonMapper.updateTotalRevenueAmountById(nurseStationPersonId, orderCommissionAmount); + //异步发送信息 + stationMessagePushService.orderCompletionOperationsPush(orderDetails); + return AjaxResult.success(); + } + + /** + * 护理人员 注册用户信息 + * + * @param nurseAppLogin 注册信息 + * @return com.xinyilu.common.core.domain.AjaxResult + **/ + @Transactional(rollbackFor = Exception.class) + @Override + public AjaxResult nurseAppLoginSysUser(NurseAppLoginSysUserVO nurseAppLogin) { + //校验手机号是否存在 sys_user 用户表与nurse_station_person 护理站人员信息表关联 + NurseStationPerson nurseStationPersonPhoneUser = nurseStationPersonMapper.getNurseStationPersonPhoneUser(nurseAppLogin.getPhonenumber()); + NurseAppLoginSysUserVO patient = new NurseAppLoginSysUserVO(); + if (Objects.nonNull(nurseStationPersonPhoneUser)) { + patient.setNurseStationPersonId(Objects.isNull(nurseStationPersonPhoneUser.getId()) ? null : nurseStationPersonPhoneUser.getId()); + } else { + log.warn("当前护理员信息在nurse_station_person表中不存在,请先前往Pc端护理站人员信息维护该护理人员信息!"); + return AjaxResult.error("当前护理员信息不存在,请前往护理站管理平台新增个人信息!"); + } + //校验手机号是否存在 sys_user 用户表与nurse_station_person 护理站人员信息表关联 + int phoneCount = nursePersonAppLoginMapper.getSysUserPasswordByPhone(nurseAppLogin.getPhonenumber(), null); + if (phoneCount > 0) { + return AjaxResult.error("该手机号已注册,请重新输入!"); + } + //调用md5加密方法 + String changePassword = md5(nurseAppLogin.getStationPersonPassword()); + patient.setPhonenumber(nurseAppLogin.getPhonenumber()); + patient.setUserName(nurseAppLogin.getPhonenumber()); + patient.setNickName(nurseAppLogin.getNickName()); + patient.setStationPersonPassword(changePassword); + patient.setCreateTime(LocalDateTime.now()); + patient.setNurseStationIds(nurseAppLogin.getNurseStationIds()); + int row = nursePersonAppLoginMapper.insertNurseAppLoginSysUser(patient); + if (row <= 0) { + throw new ServiceException("注册失败,请联系管理员!"); + } + return AjaxResult.success(); + } + + + /** + * app登录 + * + * @param phonenumber 账号 + * @param stationPersonPassword 密码 + * @return AjaxResult + */ + @Override + public AjaxResult logins(String phonenumber, String stationPersonPassword) { + if (BooleanUtils.isFalse(regexUtil.regexPhone(phonenumber))) { + return AjaxResult.error("您输入的账号不正确,请重新输入!"); + } + //校验手机号是否存在 sys_user 用户表与nurse_station_person 护理站人员信息表关联 + NurseStationPerson nurseStationPersonPhoneUser = nurseStationPersonMapper.getNurseStationPersonPhoneUser(phonenumber); + if (Objects.isNull(nurseStationPersonPhoneUser)) { + return AjaxResult.error("当前护理员信息不存在,请前往护理站管理平台新增个人信息!"); + } + //判断账号是否存在,不存在进行注册 + int existsCount = nursePersonAppLoginMapper.getSysUserPasswordByPhone(phonenumber, null); + if (existsCount <= 0) { + return AjaxResult.error("当前账号不存在,请先注册!"); + } + //账号存在,判断输入密码是否正确 + int count = nursePersonAppLoginMapper.getSysUserPasswordByPhone(phonenumber, md5(stationPersonPassword)); + if (count <= 0) { + return AjaxResult.error("您输入的密码不正确,请重新输入!"); + } + NursePersonAppLoginsUserVO patient = nursePersonAppLoginMapper.getUserAndPerson(phonenumber, md5(stationPersonPassword)); + return AjaxResult.success(patient); + } + + /** + * 忘记密码 + * + * @param phonenumber 账号 + * @param stationPersonPassword 密码 + * @return 结果 + */ + @Override + public AjaxResult updatePassword(String phonenumber, String stationPersonPassword, String verification) { + //校验手机号是否存在 sys_user 用户表与nurse_station_person 护理站人员信息表关联 + NurseStationPerson nurseStationPersonPhoneUser = nurseStationPersonMapper.getNurseStationPersonPhoneUser(phonenumber); + if (Objects.isNull(nurseStationPersonPhoneUser)) { + return AjaxResult.error("当前护理员信息不存在,请前往护理站管理平台新增个人信息!"); + } + Long patientId = nursePersonAppLoginMapper.getFromPhoneUserId(phonenumber); + if (Objects.isNull(patientId) || patientId == 0L) { + return AjaxResult.error("当前账号信息不存在,请重新输入!"); + } + NurseAppLoginSysUserVO patientInfo = new NurseAppLoginSysUserVO(); + patientInfo.setPhone(phonenumber); + patientInfo.setUserId(patientId); + patientInfo.setStationPersonPassword(md5(stationPersonPassword)); + //判断是否修改成功` + int updatePassword = nursePersonAppLoginMapper.updateUserPassWord(patientInfo); + if (updatePassword <= 0) { + throw new ServiceException("修改密码失败,请联系管理员!"); + } + return AjaxResult.success(); + } + + /** + * 查询护理站人员的个人信息 + * + * @param nurseAppLoginSysUserVO 个人信息 + * @return com.xinyilu.nurseapplet.domain.vo.nursepersonapplogin.NursePersonAppLoginsUserVO + **/ + @Override + public NursePersonAppLoginsUserVO getNursePersonPersonalInformation(NurseAppLoginSysUserVO nurseAppLoginSysUserVO) { + nurseAppLoginSysUserVO.setStationPersonPassword(md5(nurseAppLoginSysUserVO.getStationPersonPassword())); + NursePersonAppLoginsUserVO personAppLoginsUserVO = nursePersonAppLoginMapper.getNursePersonPersonalInformation(nurseAppLoginSysUserVO); + //查询所属的护理站信息 + if (StringUtils.isBlank(personAppLoginsUserVO.getNurseStationIds())) { + return personAppLoginsUserVO; + } + List nurseTypeCodeList = Arrays.asList(StringUtils.split(personAppLoginsUserVO.getNurseStationIds(), ",")); + List stationIdList = nurseTypeCodeList.stream().map(s -> Long.parseLong(s.trim())).distinct().collect(Collectors.toList()); + List stationIds = nurseStationMapper.getNurseStationIds(stationIdList); + personAppLoginsUserVO.setNurseStationSysUserVOList(stationIds); + return personAppLoginsUserVO; + } + + /** + * 修改用户护理人员的账户密码 + * + * @param nurseAppLoginSysUserVO 用户信息 + * @return int + **/ + @Transactional(rollbackFor = Exception.class) + @Override + public AjaxResult updateUserPassWord(NurseAppLoginSysUserVO nurseAppLoginSysUserVO) { + NurseStationPerson personInfo = nurseStationPersonMapper.getNurseStationPersonPhoneUser(nurseAppLoginSysUserVO.getPhonenumber()); + if (Objects.isNull(personInfo)) { + return AjaxResult.error("当前护理人员信息不存在,无法修改个人信息!"); + } + //有手机号才 进行校验 + if (StringUtils.isNotBlank(nurseAppLoginSysUserVO.getPhonenumber())) { + if (BooleanUtils.isFalse(regexUtil.regexPhone(nurseAppLoginSysUserVO.getPhonenumber()))) { + return AjaxResult.error("您输入的电话号码" + nurseAppLoginSysUserVO.getPhonenumber() + "不正确,请重新输入!"); + } + if (StringUtils.isNotBlank(personInfo.getPhone()) && !StringUtils.equals(personInfo.getPhone(), nurseAppLoginSysUserVO.getPhonenumber())) { + int nurseStationPersonPhone = nurseStationPersonMapper.getNurseStationPersonPhone(nurseAppLoginSysUserVO.getPhonenumber()); + if (nurseStationPersonPhone > 0) { + return AjaxResult.error("您输入的联系电话" + nurseAppLoginSysUserVO.getPhonenumber() + "重复!"); + } + } + } + //更新sysUser表信息 + nursePersonAppLoginMapper.updateUserPassWord(nurseAppLoginSysUserVO); + //更新NurseStationPerson表信息 + NurseStationPerson nurseStationPerson = new NurseStationPerson(); + nurseStationPerson.setNursePersonName(nurseAppLoginSysUserVO.getNickName()); + nurseStationPerson.setId(nurseAppLoginSysUserVO.getNurseStationPersonId()); + nurseStationPersonMapper.updateNurseStationPerson(nurseStationPerson); + return AjaxResult.success(); + } + + /** + * 修改被护理人人员上传文件头像 + * + * @param avatar 头像地址 + * @param userId userId护理人人员id + * @return com.xinyilu.common.core.domain.AjaxResult + **/ + @Override + public boolean updateHeadAvatarHeadUserId(Long userId, String avatar, String userIdAvatar) { + //删除被护理人人员的头像 + if (StringUtils.isNotBlank(userIdAvatar)) { + String picture = XinELuConfig.getProfile() + userIdAvatar.replaceAll("/profile", ""); + File checkReportNameFile = new File(picture); + if (checkReportNameFile.exists()) { + boolean delete = checkReportNameFile.delete(); + if (BooleanUtils.isFalse(delete)) { + throw new ServiceException("图片地址删除失败!"); + } + } + } + return nursePersonAppLoginMapper.updateHeadAvatarHeadUserId(userId, avatar) > 0; + } + + + /** + * 修改被护理人人员上传文件头像 + * + * @param multipartFile 文件 + * @param userId userId护理人人员id + * @return com.xinyilu.common.core.domain.AjaxResult + * @throws Exception 异常信息 + **/ + @Override + public AjaxResult updateHeadAvatarHead(MultipartFile multipartFile, Long userId) throws Exception { + //根据userId查询SysUser表的信息 + if (Objects.isNull(userId)) { + return AjaxResult.error("当前用户信息不存在,无法上传!"); + } + //根据被护理人的id查询基本信息 + NursePersonAppLoginsUserVO nursePersonUserId = nursePersonAppLoginMapper.getNursePersonUserId(userId); + if (Objects.isNull(nursePersonUserId)) { + return AjaxResult.error("当前用户信息不存在,无法上传!"); + } + //原有用户头像地址 + String userIdAvatar = StringUtils.isBlank(nursePersonUserId.getAvatar()) ? "" : nursePersonUserId.getAvatar(); + //定义文件上传路径 + String fileName = FileUploadUtils.uploadPictureUrlPath(XinELuConfig.getProfile() + xinYiLuConfig.getNurseStationAppPersonUrl(), multipartFile, MimeTypeUtils.IMAGE_EXTENSION); + if (StringUtils.isBlank(fileName)) { + throw new Exception("头像上传失败,请联系管理员!"); + } + if (nursePersonAppLoginService.updateHeadAvatarHeadUserId(userId, fileName, userIdAvatar)) { + AjaxResult ajax = AjaxResult.success(); + ajax.put("imgUrl", fileName); + return ajax; + } + return AjaxResult.success("上传成功!"); + } + + + /** + * 查询护理站列表 + * + * @param nurseStation 护理站列表 + * @return com.xinyilu.base.domain.nursestation.NurseStation + **/ + @Override + public List getPersonNurseStationLists(PersonNurseStationAppVO nurseStation) { + return nursePersonAppLoginMapper.getPersonNurseStationLists(nurseStation); + } + + + /** + * 生成BCryptPasswordEncoder密码 + * + * @param getStationPersonPassword 密码 + * @return 加密字符串 + */ + private String md5(String getStationPersonPassword) { + getStationPersonPassword = Md5Utils.hash((getStationPersonPassword)); + return getStationPersonPassword; + } +} diff --git a/xinelu-nurse-applet/src/main/java/com/xinelu/applet/vo/nursepersonapplogin/NurseAppLoginSysUserVO.java b/xinelu-nurse-applet/src/main/java/com/xinelu/applet/vo/nursepersonapplogin/NurseAppLoginSysUserVO.java new file mode 100644 index 0000000..90ab683 --- /dev/null +++ b/xinelu-nurse-applet/src/main/java/com/xinelu/applet/vo/nursepersonapplogin/NurseAppLoginSysUserVO.java @@ -0,0 +1,79 @@ +package com.xinelu.applet.vo.nursepersonapplogin; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.xinelu.common.custominterface.Insert; +import lombok.Data; +import net.sf.jsqlparser.statement.update.Update; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * 护理站人员注册信息类 + * + * @author ljh + * @version 1.0 + * Create by 2022/10/28 11:26 + */ +@Data +public class NurseAppLoginSysUserVO implements Serializable { + private static final long serialVersionUID = 3253830606920513883L; + + /** + * 用户账号 + */ + private Long userId; + /** + * 用户账号 用户昵称 + */ + private String userName; + + /** + * 用户姓名 + */ + @NotBlank(message = "用户姓名不能为空!", groups = {Insert.class, Update.class}) + private String nickName; + + /** + * 手机号码 + */ + @Length(max = 11, message = "手机号码不能超过11位", groups = {Insert.class, Update.class}) + private String phone; + + /** + * 手机号码 + */ + @Length(max = 11, message = "手机号码不能超过11位", groups = {Insert.class, Update.class}) + @NotBlank(message = "手机号码不能为空!", groups = {Insert.class, Update.class}) + private String phonenumber; + /** + * 登录密码 + */ + @Length(min = 6, max = 10, message = "密码不能低于6位并不能超过10位", groups = {Insert.class}) + @NotBlank(message = "密码不能为空!", groups = {Insert.class, Update.class}) + private String stationPersonPassword; + + /** + * 创建时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime createTime; + + /** + * 选择护理站 + */ + @NotBlank(message = "选择护理站不能为空!", groups = {Insert.class, Update.class}) + private String nurseStationIds; + + /** + * 头像地址 + */ + private String avatar; + + /** + * 护理站人员表id + */ + private Long nurseStationPersonId; +} diff --git a/xinelu-nurse-applet/src/main/java/com/xinelu/applet/vo/nursepersonapplogin/NursePersonAppLoginsUserVO.java b/xinelu-nurse-applet/src/main/java/com/xinelu/applet/vo/nursepersonapplogin/NursePersonAppLoginsUserVO.java new file mode 100644 index 0000000..368fdad --- /dev/null +++ b/xinelu-nurse-applet/src/main/java/com/xinelu/applet/vo/nursepersonapplogin/NursePersonAppLoginsUserVO.java @@ -0,0 +1,83 @@ +package com.xinelu.applet.vo.nursepersonapplogin; + + +import com.xinelu.manage.vo.nursestation.NurseStationSysUserVO; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * @author ljh + * @version 1.0 + * Create by 2022/10/28 14:15 + */ +@Data +public class NursePersonAppLoginsUserVO implements Serializable { + private static final long serialVersionUID = 8144014821044310693L; + /** + * 用户账号 + */ + private Long userId; + + /** + * 护理站id + */ + private Long nurseStationId; + + /** + * 手机号码 + */ + private String phonenumber; + + /** + * 用户账号 + */ + private String userName; + + /** + * 用户昵称 用户姓名 + */ + private String nickName; + + /** + * 手机号码 + */ + private String phone; + + + /** + * 用户账号 + */ + private String nurseStationIds; + + /** + * 用户昵称 用户姓名 + */ + private String nursePersonName; + + /** + * 头像地址 + */ + private String avatar; + + /** + * 密码 + */ + private String stationPersonPassword; + + /** + * 护理人员id + */ + private Long nursePersonId; + + /** + * 护理站信息集合 + */ + List nurseStationSysUserVOList; + + /** + * 角色标识 + */ + private String personRoleLoginFlag; +} diff --git a/xinelu-nurse-applet/src/main/java/com/xinelu/applet/vo/nursepersonapplogin/NurseStationPersonUserVO.java b/xinelu-nurse-applet/src/main/java/com/xinelu/applet/vo/nursepersonapplogin/NurseStationPersonUserVO.java new file mode 100644 index 0000000..1b9ed64 --- /dev/null +++ b/xinelu-nurse-applet/src/main/java/com/xinelu/applet/vo/nursepersonapplogin/NurseStationPersonUserVO.java @@ -0,0 +1,73 @@ +package com.xinelu.applet.vo.nursepersonapplogin; + + +import com.xinelu.manage.domain.nursestationperson.NurseStationPerson; +import com.xinelu.manage.domain.nursestationpersoncertificate.NurseStationPersonCertificate; +import com.xinelu.manage.vo.nursestation.NurseStationSysUserVO; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import javax.validation.Valid; +import java.io.Serializable; +import java.util.List; + +/** + * @author ljh + * @version 1.0 + * Create by 2023/3/30 17:38 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class NurseStationPersonUserVO extends NurseStationPerson implements Serializable { + private static final long serialVersionUID = -7948807351529053663L; + + /** + * 用户账号 + */ + private Long userId; + + /** + * 手机号码 + */ + private String phonenumber; + /** + * 用户名称 + */ + private String userName; + + /** + * 用户昵称 用户姓名 + */ + private String nickName; + + /** + * 用户账号 + */ + private String nurseStationIds; + + /** + * 头像地址 + */ + private String avatar; + + /** + * 护理人员id + */ + private Long nursePersonId; + /** + * 护理站信息集合 + */ + @Valid + List nurseStationSysUserVOList; + + /** + * 护理员证书资质信息表集合 + **/ + @Valid + private List nurseStationPersonCertificateList; + + /** + * 年龄 + */ + private Long age; +} diff --git a/xinelu-nurse-applet/src/main/java/com/xinelu/applet/vo/nursepersonapplogin/OrderAndItemVO.java b/xinelu-nurse-applet/src/main/java/com/xinelu/applet/vo/nursepersonapplogin/OrderAndItemVO.java new file mode 100644 index 0000000..13fa955 --- /dev/null +++ b/xinelu-nurse-applet/src/main/java/com/xinelu/applet/vo/nursepersonapplogin/OrderAndItemVO.java @@ -0,0 +1,126 @@ +package com.xinelu.applet.vo.nursepersonapplogin; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.util.List; + +/** + * 任务详情输出VO + * + * @author zhangheng + * @date 2022-11-1 + */ +@Data +public class OrderAndItemVO implements Serializable { + private static final long serialVersionUID = 5316795619405528012L; + + /** + * 预约订单明细表主键id + */ + private Long id; + + /** + * 护理站id + */ + private Long stationId; + + /** + * 护理项目id + */ + private Long stationItemId; + + /** + * 护理项目订单id + */ + private Long stationItemPriceId; + + /** + * 预约订单编号 + */ + private String orderNo; + + /** + * 订单数量 + */ + private Long orderCount; + + /** + * 服务日期,格式:yyyy-MM-dd + */ + @JsonFormat(pattern = "yyyy-MM-dd") + private LocalDate serviceDate; + + /** + * 服务开始时间,格式:HH:mm + */ + @JsonFormat(pattern = "HH:mm:ss") + private LocalTime serviceStartTime; + + /** + * 服务结束时间,格式:HH:mm + */ + @JsonFormat(pattern = "HH:mm:ss") + private LocalTime serviceEndTime; + + /** + * 预约订单状态,代付款:WAIT_PAY,待派单:WAIT_DISPATCH,未完成:NOT_FINISH,服务完成:COMPLETE + */ + private String orderStatus; + + /** + * 预约总价格,单位:元 + */ + private BigDecimal totalPrice; + + /** + * 护理项目名称 + */ + private String nurseItemName; + + /** + * 护理项目服务时长和单位 + */ + private String itemServeDurationUnit; + + /** + * 创建时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime createTime; + + /** + * 护理项目图片地址 + */ + private String itemPictureUrl; + + /** + * 护理员id + */ + private Long nursePersonId; + + /** + * 已完成和已评价订单状态值集合 + */ + private List orderStatusList; + + /** + * 服务地址 + */ + private String serviceAddress; + + /** + * 订单佣金金额 + */ + private BigDecimal orderCommissionAmount; + + /** + * 订单类型,院内陪护:COMPANION_IN_HOSPITAL,其它:OTHER', + */ + private String orderType; +} diff --git a/xinelu-nurse-applet/src/main/java/com/xinelu/applet/vo/nursepersonapplogin/OrderByNursePersonVO.java b/xinelu-nurse-applet/src/main/java/com/xinelu/applet/vo/nursepersonapplogin/OrderByNursePersonVO.java new file mode 100644 index 0000000..6613d69 --- /dev/null +++ b/xinelu-nurse-applet/src/main/java/com/xinelu/applet/vo/nursepersonapplogin/OrderByNursePersonVO.java @@ -0,0 +1,28 @@ +package com.xinelu.applet.vo.nursepersonapplogin; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author ljh + * @version 1.0 + * Create by 2023/3/30 9:43 + */ +@Data +public class OrderByNursePersonVO implements Serializable { + private static final long serialVersionUID = -3973147428969028472L; + + /** + * 未完成数量 + **/ + private Long notFinishCount; + + /** + * 已完成数量 + **/ + private Long completeCount; + + + private String orderStatus; +} diff --git a/xinelu-nurse-applet/src/main/java/com/xinelu/applet/vo/nursepersonapplogin/OrderDetailsAndPatientVO.java b/xinelu-nurse-applet/src/main/java/com/xinelu/applet/vo/nursepersonapplogin/OrderDetailsAndPatientVO.java new file mode 100644 index 0000000..7c6bd38 --- /dev/null +++ b/xinelu-nurse-applet/src/main/java/com/xinelu/applet/vo/nursepersonapplogin/OrderDetailsAndPatientVO.java @@ -0,0 +1,157 @@ +package com.xinelu.applet.vo.nursepersonapplogin; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.LocalTime; + +/** + * 任务详情输出VO + * + * @author zhangheng + * @date 2022-10-28 + */ +@Data +public class OrderDetailsAndPatientVO implements Serializable { + private static final long serialVersionUID = 5800983517650859147L; + /** + * 订单主表主键id + */ + private Long appointmentOrderId; + /** + * 订单明细主键id + */ + private Long orderDetailsId; + + /** + * 预约订单编号 + */ + private String orderNo; + + /** + * 订单数量 + */ + private Long orderCount; + + /** + * 服务地址 + */ + private String serviceAddress; + + /** + * 服务日期,格式:yyyy-MM-dd + */ + @JsonFormat(pattern = "yyyy-MM-dd") + private LocalDate serviceDate; + + /** + * 服务开始时间,格式:HH:mm + */ + @JsonFormat(pattern = "HH:mm:ss") + private LocalTime serviceStartTime; + + /** + * 预约总价格,单位:元 + */ + private BigDecimal totalPrice; + + /** + * 护理项目名称 + */ + private String nurseItemName; + + /** + * 护理项目服务时长和单位 + */ + private String itemServeDurationUnit; + + /** + * 用户姓名 + */ + private String patientName; + + /** + * 手机号码 + */ + private String phone; + + /** + * 人员地址 + */ + private String address; + + /** + * 出生日期 + */ + @JsonFormat(pattern = "yyyy-MM-dd") + private LocalDate birthDate; + + /** + * 年龄 + */ + private Long age; + + /** + * 住址经度 + */ + private String homeLongitude; + + /** + * 住址纬度 + */ + private String homeLatitude; + + + /** + * 护理项目图片地址 + */ + private String itemPictureUrl; + + /** + * 预约订单状态,待派单:WAIT_DISPATCH,未完成:NOT_FINISH,服务完成:COMPLETE + */ + private String orderStatus; + + /** + * 服务到岗图片路径 + */ + private String onDutyPictureUrl; + + /** + * 服务进行中上传视频存放路径 + */ + private String serviceProgressVideoUrl; + + /** + * 服务结束照片存放路径 + */ + private String serviceEndPictureUrl; + + /** + * 用户签名确认图片存放路径 + */ + private String userSignaturePictureUrl; + + /** + * 失能情况,NOT_DISABLED:未失能,DISABLED:已失能 + */ + private String disablingCondition; + + /** + * 失能原因 + */ + private String disablingReason; + + /** + * 订单佣金金额 + */ + private BigDecimal orderCommissionAmount; + + /** + * 健康状态 + */ + private String diseaseName; +} diff --git a/xinelu-nurse-applet/src/main/java/com/xinelu/applet/vo/nursepersonapplogin/PersonNurseStationAppVO.java b/xinelu-nurse-applet/src/main/java/com/xinelu/applet/vo/nursepersonapplogin/PersonNurseStationAppVO.java new file mode 100644 index 0000000..46dc852 --- /dev/null +++ b/xinelu-nurse-applet/src/main/java/com/xinelu/applet/vo/nursepersonapplogin/PersonNurseStationAppVO.java @@ -0,0 +1,77 @@ +package com.xinelu.applet.vo.nursepersonapplogin; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author ljh + * @version 1.0 + * Create by 2022/11/2 11:42 + */ +@Data +public class PersonNurseStationAppVO implements Serializable { + private static final long serialVersionUID = -231488908366920143L; + + /** + * 主键id + */ + private Long id; + + /** + * 所属区域编码 + */ + private String areaCode; + + /** + * 创建人id + */ + private Long userId; + + /** + * 护理站编号 + */ + private String nurseStationCode; + + /** + * 护理站名称 + */ + private String nurseStationName; + + /** + * 护理类型,多个用逗号隔开 + */ + private String nurseStationType; + + + /** + * 护理站经纬(横坐标) + */ + private String longitude; + + /** + * 护理站纬度(纵坐标) + */ + private String latitude; + + /** + * 联系电话 + */ + private String phone; + + /** + * 护理站地址 + */ + private String address; + + /** + * 负责人 + */ + private String dutyPerson; + + /** + * 负责人联系电话 + */ + private String dutyPhone; + +} diff --git a/xinelu-nurse-applet/src/main/resources/mapper/applet/nursepersonapplogin/NursePersonAppLoginMapper.xml b/xinelu-nurse-applet/src/main/resources/mapper/applet/nursepersonapplogin/NursePersonAppLoginMapper.xml new file mode 100644 index 0000000..484e705 --- /dev/null +++ b/xinelu-nurse-applet/src/main/resources/mapper/applet/nursepersonapplogin/NursePersonAppLoginMapper.xml @@ -0,0 +1,418 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + UPDATE appointment_order a, + appointment_order_details b + SET a.order_status = #{orderStatus}, + a.task_return_reason = #{taskReturnReason}, + a.nurse_station_person_id = null, + b.order_status = #{orderStatus}, + a.update_time = now(), + b.update_time = now() + WHERE + a.order_no = b.order_no + AND a.del_flag = 0 + AND a.order_status <> #{orderStatus} + AND b.order_status <> #{orderStatus} + AND a.order_no = #{orderNo} + + + + + + insert into sys_user + + user_name, + + nick_name, + + phonenumber, + + station_person_password, + + nurse_station_ids, + + nurse_station_person_id, + + create_time, + + + + #{userName}, + + #{nickName}, + + #{phonenumber}, + + #{stationPersonPassword}, + + #{nurseStationPersonId}, + + #{nurseStationIds}, + + #{createTime}, + + + + + + + update sys_user + + user_name = #{userName}, + + nick_name = #{nickName}, + + phonenumber = #{phonenumber}, + + station_person_password = #{stationPersonPassword}, + + avatar = #{avatar}, + + + where user_id = #{userId} + + + + + + + + + + + update sys_user + set avatar = #{avatar} + where user_id = #{userId} + + + + + + + + + diff --git a/xinelu-nurse-manage/src/main/java/com/xinelu/manage/domain/nursestationpersonrevenue/NurseStationPersonRevenue.java b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/domain/nursestationpersonrevenue/NurseStationPersonRevenue.java new file mode 100644 index 0000000..1443d94 --- /dev/null +++ b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/domain/nursestationpersonrevenue/NurseStationPersonRevenue.java @@ -0,0 +1,81 @@ +package com.xinelu.manage.domain.nursestationpersonrevenue; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.xinelu.common.annotation.Excel; +import com.xinelu.common.core.domain.BaseDomain; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +/** + * 护理员订单佣金收益信息对象 nurse_station_person_revenue + * + * @author xinyilu + * @date 2023-03-29 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@EqualsAndHashCode(callSuper = true) +@ApiModel(value = "护理员订单佣金收益信息对象", description = "nurse_station_person_revenue") +public class NurseStationPersonRevenue extends BaseDomain implements Serializable { + private static final long serialVersionUID = -5400211001451444886L; + /** + * 主键id + */ + private Long id; + + /** + * 护理站人员表id + */ + @ApiModelProperty(value = "护理站人员表id") + @Excel(name = "护理站人员表id") + private Long nurseStationPersonId; + + /** + * 预约订单表id + */ + @ApiModelProperty(value = "预约订单表id") + @Excel(name = "预约订单表id") + private Long appointmentOrderId; + + /** + * 收益金额 + */ + @ApiModelProperty(value = "收益金额") + @Excel(name = "收益金额") + private BigDecimal revenueAmount; + + /** + * 预约订单完成时间 + */ + @ApiModelProperty(value = "预约订单完成时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "预约订单完成时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime finishOrderTime; + + + @Override + public String toString() { + return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) + .append("id", getId()) + .append("nurseStationPersonId", getNurseStationPersonId()) + .append("appointmentOrderId", getAppointmentOrderId()) + .append("revenueAmount", getRevenueAmount()) + .append("finishOrderTime", getFinishOrderTime()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .toString(); + } +} \ No newline at end of file diff --git a/xinelu-nurse-manage/src/main/java/com/xinelu/manage/mapper/nursestationpersonrevenue/NurseStationPersonRevenueMapper.java b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/mapper/nursestationpersonrevenue/NurseStationPersonRevenueMapper.java new file mode 100644 index 0000000..d3efbda --- /dev/null +++ b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/mapper/nursestationpersonrevenue/NurseStationPersonRevenueMapper.java @@ -0,0 +1,89 @@ +package com.xinelu.manage.mapper.nursestationpersonrevenue; + +import com.xinelu.manage.domain.nursestationpersonrevenue.NurseStationPersonRevenue; +import com.xinelu.manage.vo.nursestationpersonrevenue.NurseStationPersonRevenueVO; +import com.xinelu.manage.vo.nursestationpersonrevenue.PersonRevenueCountVO; +import com.xinelu.manage.vo.nursestationpersonrevenue.RevenueTimeDTO; + +import java.util.List; + + +/** + * 护理员订单佣金收益信息Mapper接口 + * + * @author xinyilu + * @date 2023-03-29 + */ +public interface NurseStationPersonRevenueMapper { + /** + * 查询护理员订单佣金收益信息 + * + * @param id 护理员订单佣金收益信息主键 + * @return 护理员订单佣金收益信息 + */ + NurseStationPersonRevenue selectNurseStationPersonRevenueById(Long id); + + /** + * 查询护理员订单佣金收益信息列表 + * + * @param nurseStationPersonRevenue 护理员订单佣金收益信息 + * @return 护理员订单佣金收益信息集合 + */ + List selectNurseStationPersonRevenueList(NurseStationPersonRevenue nurseStationPersonRevenue); + + /** + * 新增护理员订单佣金收益信息 + * + * @param nurseStationPersonRevenue 护理员订单佣金收益信息 + * @return 结果 + */ + int insertNurseStationPersonRevenue(NurseStationPersonRevenue nurseStationPersonRevenue); + + /** + * 修改护理员订单佣金收益信息 + * + * @param nurseStationPersonRevenue 护理员订单佣金收益信息 + * @return 结果 + */ + int updateNurseStationPersonRevenue(NurseStationPersonRevenue nurseStationPersonRevenue); + + /** + * 删除护理员订单佣金收益信息 + * + * @param id 护理员订单佣金收益信息主键 + * @return 结果 + */ + int deleteNurseStationPersonRevenueById(Long id); + + /** + * 批量删除护理员订单佣金收益信息 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + int deleteNurseStationPersonRevenueByIds(Long[] ids); + + /** + * 护理员收益统计 + * + * @param revenueTime 时间 + * @return NurseStationPersonRevenueVO + */ + List selectCount(RevenueTimeDTO revenueTime); + + /** + * 护理员收益统计 + * + * @param revenueTime 用户信息及时间 + * @return NurseStationPersonRevenueVO + */ + PersonRevenueCountVO selectRevenueAmountById(RevenueTimeDTO revenueTime); + + /** + * 查询收益明细 + * + * @param revenueTime 护理员信息 + * @return NurseStationPersonRevenueVO + */ + List selectRevenueDetails(RevenueTimeDTO revenueTime); +} \ No newline at end of file diff --git a/xinelu-nurse-manage/src/main/java/com/xinelu/manage/mapper/patientdiseaseinfo/PatientDiseaseInfoMapper.java b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/mapper/patientdiseaseinfo/PatientDiseaseInfoMapper.java new file mode 100644 index 0000000..151c3cd --- /dev/null +++ b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/mapper/patientdiseaseinfo/PatientDiseaseInfoMapper.java @@ -0,0 +1,86 @@ +package com.xinelu.manage.mapper.patientdiseaseinfo; + +import com.xinelu.manage.domain.patientdiseaseinfo.PatientDiseaseInfo; + +import java.util.List; + + +/** + * 患者疾病关系Mapper接口 + * + * @author 纪寒 + * @date 2022-09-02 + */ +public interface PatientDiseaseInfoMapper { + /** + * 查询患者疾病关系 + * + * @param id 患者疾病关系主键 + * @return 患者疾病关系 + */ + PatientDiseaseInfo selectPatientDiseaseInfoById(Long id); + + /** + * 查询患者疾病关系列表 + * + * @param patientDiseaseInfo 患者疾病关系 + * @return 患者疾病关系集合 + */ + List selectPatientDiseaseInfoList(PatientDiseaseInfo patientDiseaseInfo); + + /** + * 查询患者疾病关系列表 + * + * @param patientId 患者疾病关系 + * @return 患者疾病关系集合 + */ + List selectPatientDiseasePatientId(Long patientId); + + /** + * 新增患者疾病关系 + * + * @param patientDiseaseInfo 患者疾病关系 + * @return 结果 + */ + int insertPatientDiseaseInfo(PatientDiseaseInfo patientDiseaseInfo); + + /** + * 修改患者疾病关系 + * + * @param patientDiseaseInfo 患者疾病关系 + * @return 结果 + */ + int updatePatientDiseaseInfo(PatientDiseaseInfo patientDiseaseInfo); + + /** + * 删除患者疾病关系 + * + * @param id 患者疾病关系主键 + * @return 结果 + */ + int deletePatientDiseaseInfoById(Long id); + + /** + * 批量删除患者疾病关系 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + int deletePatientDiseaseInfoByIds(Long[] ids); + + /** + * 批量新增护理人疾病信息 + * + * @param patientDiseaseInfoList 信息集合 + * @return 新增数量 + */ + int insertBatchPatientDiseaseInfo(List patientDiseaseInfoList); + + /** + * 根据订单编号查询会员健康状况 + * + * @param orderNo 订单编号 + * @return PatientDiseaseInfo + */ + List selectPatientDiseaseInfoByOrderNo(String orderNo); +} diff --git a/xinelu-nurse-manage/src/main/java/com/xinelu/manage/vo/nursestationpersonrevenue/NurseStationPersonRevenueVO.java b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/vo/nursestationpersonrevenue/NurseStationPersonRevenueVO.java new file mode 100644 index 0000000..ed77359 --- /dev/null +++ b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/vo/nursestationpersonrevenue/NurseStationPersonRevenueVO.java @@ -0,0 +1,67 @@ +package com.xinelu.manage.vo.nursestationpersonrevenue; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.xinelu.manage.domain.nursestationpersonrevenue.NurseStationPersonRevenue; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; + +/** + * 收益明细 + * + * @author zhangheng + * @date 2023-03—30 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class NurseStationPersonRevenueVO extends NurseStationPersonRevenue implements Serializable { + private static final long serialVersionUID = -2454392424237460279L; + + /** + * 护理站人员id + */ + private Long nurseStationPersonRevenueId; + + /** + * 护理项目名称 + */ + private String nurseItemName; + + /** + * 服务日期,格式:yyyy-MM-dd + */ + @JsonFormat(pattern = "yyyy-MM-dd") + private LocalDate serviceDate; + + /** + * 服务开始时间,格式:HH:mm + */ + @JsonFormat(pattern = "HH:mm:ss") + private LocalTime serviceStartTime; + + /** + * 服务结束时间,格式:HH:mm + */ + @JsonFormat(pattern = "HH:mm:ss") + private LocalTime serviceEndTime; + + /** + * 预约订单完成时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime finishOrderTime; + + /** + * 预约订单主表id + */ + private Long appointmentOrderId; + + /** + * 预约订单编号 + */ + private String orderNo; +} diff --git a/xinelu-nurse-manage/src/main/java/com/xinelu/manage/vo/nursestationpersonrevenue/PersonRevenueCountVO.java b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/vo/nursestationpersonrevenue/PersonRevenueCountVO.java new file mode 100644 index 0000000..bf40859 --- /dev/null +++ b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/vo/nursestationpersonrevenue/PersonRevenueCountVO.java @@ -0,0 +1,62 @@ +package com.xinelu.manage.vo.nursestationpersonrevenue; + +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 收益统计 + * + * @author zhangheng + * @date 2023-03—30 + */ +@Data +public class PersonRevenueCountVO implements Serializable { + private static final long serialVersionUID = -2454392424237460279L; + + /** + * 护理员id + */ + private Long nurseStationPersonId; + + /** + * 护理员名称 + */ + private String nursePersonName; + + /** + * 所属护理站名称 + */ + private String nurseStationName; + + /** + * 订单总数 + */ + private Long orderCount; + + /** + * 订单总收益 + */ + private BigDecimal orderTotalPrice; + + /** + * 本月订单总数 + */ + private Long monthOrderCount; + + /** + * 本月订单总收益 + */ + private BigDecimal monthOrderTotalPrice; + + /** + * 今日订单总数 + */ + private Long todayOrderCount; + + /** + * 今日订单收益 + */ + private BigDecimal todayOrderPrice; +} \ No newline at end of file diff --git a/xinelu-nurse-manage/src/main/java/com/xinelu/manage/vo/nursestationpersonrevenue/RevenueTimeDTO.java b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/vo/nursestationpersonrevenue/RevenueTimeDTO.java new file mode 100644 index 0000000..4a081de --- /dev/null +++ b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/vo/nursestationpersonrevenue/RevenueTimeDTO.java @@ -0,0 +1,75 @@ +package com.xinelu.manage.vo.nursestationpersonrevenue; + +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.time.LocalDate; +import java.time.LocalDateTime; + +/** + * 收益统计传入vo + * + * @author zhangheng + * @date 2023-03—31 + */ +@Data +public class RevenueTimeDTO { + + /** + * 护理站id + */ + private Long nurseStationId; + + /** + * 护理员id + */ + private Long nurseStationPersonId; + + /** + * 开始时间 + */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime startTime; + + /** + * 结束时间 + */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime endTime; + + /** + * 现在时间 + */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime nowTime; + + /** + * 月开始时间 + */ + @DateTimeFormat(pattern = "yyyy-MM-dd") + private LocalDate monthStartTime; + + /** + * 月结束时间 + */ + @DateTimeFormat(pattern = "yyyy-MM-dd") + private LocalDate monthEndTime; + + /** + * 月份时间 + */ + @DateTimeFormat(pattern = "yyyy-MM-dd") + private LocalDate monthTime; + + /** + * 月开始时间 + */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime monthStartDateTime; + + /** + * 月结束时间 + */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime monthEndDateTime; +} \ No newline at end of file diff --git a/xinelu-nurse-manage/src/main/resources/mapper/manage/nursestationpersonrevenue/NurseStationPersonRevenueMapper.xml b/xinelu-nurse-manage/src/main/resources/mapper/manage/nursestationpersonrevenue/NurseStationPersonRevenueMapper.xml new file mode 100644 index 0000000..4a1b995 --- /dev/null +++ b/xinelu-nurse-manage/src/main/resources/mapper/manage/nursestationpersonrevenue/NurseStationPersonRevenueMapper.xml @@ -0,0 +1,237 @@ + + + + + + + + + + + + + + + + + + select id, + nurse_station_person_id, + appointment_order_id, + revenue_amount, + finish_order_time, + create_by, + create_time, + update_by, + update_time + from nurse_station_person_revenue + + + + + + + + insert into nurse_station_person_revenue + + nurse_station_person_id, + + appointment_order_id, + + revenue_amount, + + finish_order_time, + + create_by, + + create_time, + + update_by, + + update_time, + + + + #{nurseStationPersonId}, + + #{appointmentOrderId}, + + #{revenueAmount}, + + #{finishOrderTime}, + + #{createBy}, + + #{createTime}, + + #{updateBy}, + + #{updateTime}, + + + + + + update nurse_station_person_revenue + + nurse_station_person_id = + #{nurseStationPersonId}, + + appointment_order_id = + #{appointmentOrderId}, + + revenue_amount = + #{revenueAmount}, + + finish_order_time = + #{finishOrderTime}, + + create_by = + #{createBy}, + + create_time = + #{createTime}, + + update_by = + #{updateBy}, + + update_time = + #{updateTime}, + + + where id = #{id} + + + + delete + from nurse_station_person_revenue + where id = #{id} + + + + delete from nurse_station_person_revenue where id in + + #{id} + + + + + + + + + diff --git a/xinelu-nurse-manage/src/main/resources/mapper/manage/patientdiseaseinfo/PatientDiseaseInfoMapper.xml b/xinelu-nurse-manage/src/main/resources/mapper/manage/patientdiseaseinfo/PatientDiseaseInfoMapper.xml new file mode 100644 index 0000000..6e67a68 --- /dev/null +++ b/xinelu-nurse-manage/src/main/resources/mapper/manage/patientdiseaseinfo/PatientDiseaseInfoMapper.xml @@ -0,0 +1,186 @@ + + + + + + + + + + + + + + + + + + select id, + patient_id, + disease_id, + user_id, + disease_name, + create_by, + create_time, + update_by, + update_time + from patient_disease_info + + + + + + + + + + + insert into patient_disease_info + + patient_id, + + disease_id, + + user_id, + + disease_name, + + create_by, + + create_time, + + update_by, + + update_time, + + + + #{patientId}, + + #{diseaseId}, + + #{userId}, + + #{diseaseName}, + + #{createBy}, + + #{createTime}, + + #{updateBy}, + + #{updateTime}, + + + + + + update patient_disease_info + + patient_id = + #{patientId}, + + disease_id = + #{diseaseId}, + + user_id = + #{userId}, + + disease_name = + #{diseaseName}, + + create_by = + #{createBy}, + + create_time = + #{createTime}, + + update_by = + #{updateBy}, + + update_time = + #{updateTime}, + + + where id = #{id} + + + + delete + from patient_disease_info + where id = #{id} + + + + delete from patient_disease_info where id in + + #{id} + + + + + insert into patient_disease_info( + patient_id, + disease_id, + disease_name, + create_time + ) values + + ( + #{patientDisease.patientId}, + #{patientDisease.diseaseId}, + #{patientDisease.diseaseName}, + #{patientDisease.createTime} + ) + + + + +