diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/appservice/IPractitionerAppService.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/appservice/IPractitionerAppService.java index fe255a7e..b3d27871 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/appservice/IPractitionerAppService.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/appservice/IPractitionerAppService.java @@ -29,4 +29,20 @@ public interface IPractitionerAppService { IPage getUserPractitionerPage(UserAndPractitionerDto userAndPractitionerDto, String searchKey, Integer pageNo, Integer pageSize); + /** + * 修改用户及参与者 + * + * @param userAndPractitionerDto 用户及参与者dto + * @return 结果 + */ + R editUserPractitioner(UserAndPractitionerDto userAndPractitionerDto); + + /** + * 删除用户及参与者 ; admin不允许删除 + * + * @param userId 系统用户id + * @return 结果 + */ + R delUserPractitioner(Long userId); + } diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/appservice/impl/PractitionerAppServiceImpl.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/appservice/impl/PractitionerAppServiceImpl.java index 06104195..e3fcd178 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/appservice/impl/PractitionerAppServiceImpl.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/appservice/impl/PractitionerAppServiceImpl.java @@ -117,7 +117,7 @@ public class PractitionerAppServiceImpl implements IPractitionerAppService { iPractitionerRoleService.save(practitionerRole); } - return R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00002, new Object[] {"人员信息"})); + return R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00001, new Object[] {"人员信息"})); } /** @@ -145,11 +145,95 @@ public class PractitionerAppServiceImpl implements IPractitionerAppService { List childList = practitionerAppAppMapper.getChildList(practitionerIdList); for (UserAndPractitionerDto record : records) { // 匹配子集合 - List childDtoList = - childList.stream().filter(e -> e.getPractitionerId().equals(record.getPractitionerId())).collect(Collectors.toList()); + List childDtoList = childList.stream() + .filter(e -> e.getPractitionerId().equals(record.getPractitionerId())).collect(Collectors.toList()); record.setChildList(childDtoList); } return userPractitionerPage; } + /** + * 修改用户及参与者 : 登录账号和密码不允许编辑 + * + * @param userAndPractitionerDto 用户及参与者dto + * @return 结果 + */ + @Override + public R editUserPractitioner(UserAndPractitionerDto userAndPractitionerDto) { + Long userId = userAndPractitionerDto.getUserId(); // 系统用户id + Long practitionerId = userAndPractitionerDto.getPractitionerId(); // 参与者id + + String nickName = userAndPractitionerDto.getNickName(); + String phonenumber = userAndPractitionerDto.getPhonenumber(); + String sex = userAndPractitionerDto.getSex(); + // 编辑 sys_user + BizUser bizUser = new BizUser(); + bizUser.setNickName(nickName); // 昵称 + bizUser.setEmail(userAndPractitionerDto.getEmail());// 邮箱 + bizUser.setPhonenumber(phonenumber); // 电话 + bizUser.setSex(sex); // 性别 + bizUser.setStatus(userAndPractitionerDto.getStatus()); // 状态 + bizUser.setRemark(userAndPractitionerDto.getRemark()); // 备注 + iBizUserService.update(bizUser, new LambdaQueryWrapper().eq(BizUser::getUserId, userId)); + // 先删除,再新增 sys_user_role + practitionerAppAppMapper.delUserRole(userId); + List roleIds = userAndPractitionerDto.getRoleIds(); + BizUserRole bizUserRole; + for (Long roleId : roleIds) { + bizUserRole = new BizUserRole(); + bizUserRole.setUserId(userId); + bizUserRole.setRoleId(roleId); + iBizUserRoleService.save(bizUserRole); + } + // 编辑 adm_practitioner + Practitioner practitioner = new Practitioner(); + practitioner.setId(practitionerId); + practitioner.setName(nickName); // 姓名 + practitioner.setGenderEnum(Integer.parseInt(sex)); // 性别 + practitioner.setBirthDate(userAndPractitionerDto.getBirthDate()); // 出生日期 + practitioner.setPhone(phonenumber); // 电话 + practitioner.setAddress(userAndPractitionerDto.getAddress()); // 地址 + practitioner.setYbNo(userAndPractitionerDto.getYbNo()); // 医保码 + practitioner.setUserId(userId); // 系统用户id + practitioner.setOrgId(userAndPractitionerDto.getOrgId()); // 机构id + practitioner.setPyStr(ChineseConvertUtils.toPinyinFirstLetter(nickName)); // 拼音码 + practitioner.setWbStr(ChineseConvertUtils.toWBFirstLetter(nickName)); // 五笔码 + iPractitionerService.updateById(practitioner); + // 先删除,再新增 adm_practitioner_role + practitionerAppAppMapper.delPractitionerRole(practitionerId); + List childList = userAndPractitionerDto.getChildList(); + PractitionerRole practitionerRole; + for (UserAndPractitionerChildDto userAndPractitionerChildDto : childList) { + practitionerRole = new PractitionerRole(); + practitionerRole.setName(nickName); // 姓名 + practitionerRole.setPractitionerId(practitionerId); // 参与者id + practitionerRole.setRoleCode(userAndPractitionerChildDto.getRoleCode()); // 角色code + practitionerRole.setOrgId(userAndPractitionerChildDto.getOrgId()); // 机构id + practitionerRole.setLocationId(userAndPractitionerChildDto.getLocationId()); // 位置id + iPractitionerRoleService.save(practitionerRole); + } + + return R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00002, new Object[] {"人员信息"})); + } + + /** + * 删除用户及参与者 ; admin不允许删除 + * + * @param userId 系统用户id + * @return 结果 + */ + @Override + public R delUserPractitioner(Long userId) { + iBizUserService.remove(new LambdaQueryWrapper().eq(BizUser::getUserId, userId)); + practitionerAppAppMapper.delUserRole(userId); + Practitioner one = + iPractitionerService.getOne(new LambdaQueryWrapper().eq(Practitioner::getUserId, userId)); + Long practitionerId = one.getId();// 参与者id + iPractitionerService.removeById(practitionerId); + iPractitionerRoleService + .remove(new LambdaQueryWrapper().eq(PractitionerRole::getPractitionerId, practitionerId)); + + return R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00005, new Object[] {"人员信息"})); + } + } diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/controller/PractitionerController.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/controller/PractitionerController.java index ac4f0668..872ad941 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/controller/PractitionerController.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/controller/PractitionerController.java @@ -52,4 +52,26 @@ public class PractitionerController { .ok(practitionerAppService.getUserPractitionerPage(userAndPractitionerDto, searchKey, pageNo, pageSize)); } + /** + * 修改用户及参与者 + * + * @param userAndPractitionerDto 用户及参与者dto + * @return 结果 + */ + @PutMapping(value = "/user-practitioner") + public R editUserPractitioner(@RequestBody UserAndPractitionerDto userAndPractitionerDto) { + return practitionerAppService.editUserPractitioner(userAndPractitionerDto); + } + + /** + * 删除用户及参与者 ; admin不允许删除 + * + * @param userId 系统用户id + * @return 结果 + */ + @DeleteMapping(value = "/user-practitioner") + public R delUserPractitioner(@RequestParam Long userId) { + return practitionerAppService.delUserPractitioner(userId); + } + } diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/mapper/PractitionerAppAppMapper.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/mapper/PractitionerAppAppMapper.java index 7a07c05e..9696fae2 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/mapper/PractitionerAppAppMapper.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/mapper/PractitionerAppAppMapper.java @@ -36,4 +36,18 @@ public interface PractitionerAppAppMapper { */ List getChildList(@Param("practitionerIdList") List practitionerIdList); + /** + * 物理删除系统用户与角色的关系 + * + * @param userId 系统用户id + */ + void delUserRole(@Param("userId") Long userId); + + /** + * 物理删除参与者与业务角色的关系 + * + * @param practitionerId 参与者id + */ + void delPractitionerRole(@Param("practitionerId") Long practitionerId); + } diff --git a/openhis-server/openhis-application/src/main/resources/mapper/basedatamanage/PractitionerAppMapper.xml b/openhis-server/openhis-application/src/main/resources/mapper/basedatamanage/PractitionerAppMapper.xml index 338d2807..be4c8a1f 100644 --- a/openhis-server/openhis-application/src/main/resources/mapper/basedatamanage/PractitionerAppMapper.xml +++ b/openhis-server/openhis-application/src/main/resources/mapper/basedatamanage/PractitionerAppMapper.xml @@ -67,4 +67,16 @@ + + delete + from sys_user_role + where user_id = #{userId} + + + + delete + from adm_practitioner_role + where practitioner_id = #{practitionerId} + + \ No newline at end of file