参与者重写 - 部分
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
package com.openhis.web.basedatamanage.appservice;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.core.common.core.domain.R;
|
||||
import com.openhis.web.doctorstation.dto.UserAndPractitionerDto;
|
||||
|
||||
@@ -10,9 +11,22 @@ public interface IPractitionerAppService {
|
||||
|
||||
/**
|
||||
* 新增用户及参与者
|
||||
*
|
||||
* @param userAndPractitionerDto 用户及参与者dto
|
||||
* @return 结果
|
||||
*/
|
||||
R<?> saveUserPractitioner(UserAndPractitionerDto userAndPractitionerDto);
|
||||
|
||||
/**
|
||||
* 查询用户及参与者
|
||||
*
|
||||
* @param userAndPractitionerDto 查询条件
|
||||
* @param searchKey 模糊查询关键字
|
||||
* @param pageNo 当前页
|
||||
* @param pageSize 每页多少条
|
||||
* @return 用户及参与者
|
||||
*/
|
||||
IPage<UserAndPractitionerDto> getUserPractitionerPage(UserAndPractitionerDto userAndPractitionerDto,
|
||||
String searchKey, Integer pageNo, Integer pageSize);
|
||||
|
||||
}
|
||||
|
||||
@@ -1,18 +1,36 @@
|
||||
package com.openhis.web.basedatamanage.appservice.impl;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.core.common.core.domain.R;
|
||||
import com.core.common.utils.ChineseConvertUtils;
|
||||
import com.core.common.utils.MessageUtils;
|
||||
import com.core.common.utils.SecurityUtils;
|
||||
import com.openhis.administration.domain.BizUser;
|
||||
import com.openhis.administration.domain.BizUserRole;
|
||||
import com.openhis.administration.domain.Practitioner;
|
||||
import com.openhis.administration.domain.PractitionerRole;
|
||||
import com.openhis.administration.service.IBizUserRoleService;
|
||||
import com.openhis.administration.service.IBizUserService;
|
||||
import com.openhis.administration.service.IPractitionerRoleService;
|
||||
import com.openhis.administration.service.IPractitionerService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import com.core.common.core.domain.R;
|
||||
import com.core.common.utils.MessageUtils;
|
||||
import com.openhis.common.constant.PromptMsgConstant;
|
||||
import com.openhis.common.enums.AccountStatus;
|
||||
import com.openhis.common.utils.HisQueryUtils;
|
||||
import com.openhis.web.basedatamanage.appservice.IPractitionerAppService;
|
||||
import com.openhis.web.basedatamanage.mapper.PractitionerAppAppMapper;
|
||||
import com.openhis.web.doctorstation.dto.UserAndPractitionerChildDto;
|
||||
import com.openhis.web.doctorstation.dto.UserAndPractitionerDto;
|
||||
|
||||
@Service
|
||||
@@ -33,26 +51,105 @@ public class PractitionerAppServiceImpl implements IPractitionerAppService {
|
||||
@Resource
|
||||
IPractitionerRoleService iPractitionerRoleService;
|
||||
|
||||
|
||||
/**
|
||||
* 新增用户及参与者
|
||||
*
|
||||
*
|
||||
* @param userAndPractitionerDto 用户及参与者dto
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public R<?> saveUserPractitioner(UserAndPractitionerDto userAndPractitionerDto) {
|
||||
// 数据有效性校验 : 账号唯一性
|
||||
|
||||
String userName = userAndPractitionerDto.getUserName();
|
||||
String nickName = userAndPractitionerDto.getNickName();
|
||||
String phonenumber = userAndPractitionerDto.getPhonenumber();
|
||||
String sex = userAndPractitionerDto.getSex();
|
||||
// 账号唯一性
|
||||
long count = iBizUserService.count(new LambdaQueryWrapper<BizUser>().eq(BizUser::getUserName, userName));
|
||||
if (count > 0L) {
|
||||
return R.fail(null, "账号已存在");
|
||||
}
|
||||
// 新增 sys_user
|
||||
|
||||
BizUser bizUser = new BizUser();
|
||||
bizUser.setUserName(userName); // 账号
|
||||
bizUser.setNickName(nickName); // 昵称
|
||||
bizUser.setEmail(userAndPractitionerDto.getEmail());// 邮箱
|
||||
bizUser.setPhonenumber(phonenumber); // 电话
|
||||
bizUser.setSex(sex); // 性别
|
||||
bizUser.setPassword(SecurityUtils.encryptPassword(userAndPractitionerDto.getPassword())); // 密码
|
||||
bizUser.setStatus(userAndPractitionerDto.getStatus()); // 状态
|
||||
bizUser.setRemark(userAndPractitionerDto.getRemark()); // 备注
|
||||
iBizUserService.save(bizUser);
|
||||
Long userId = bizUser.getUserId(); // 用户id
|
||||
// 新增 sys_user_role
|
||||
|
||||
List<Long> 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.setActiveFlag(AccountStatus.ACTIVE.getValue()); // 活动标记
|
||||
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.save(practitioner);
|
||||
Long practitionerId = practitioner.getId();// 参与者id
|
||||
// 新增 adm_practitioner_role
|
||||
List<UserAndPractitionerChildDto> 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[] {"人员信息"}));
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询用户及参与者
|
||||
*
|
||||
* @param userAndPractitionerDto 查询条件
|
||||
* @param searchKey 模糊查询关键字
|
||||
* @param pageNo 当前页
|
||||
* @param pageSize 每页多少条
|
||||
* @return 用户及参与者
|
||||
*/
|
||||
@Override
|
||||
public IPage<UserAndPractitionerDto> getUserPractitionerPage(UserAndPractitionerDto userAndPractitionerDto,
|
||||
String searchKey, Integer pageNo, Integer pageSize) {
|
||||
// 构建查询条件
|
||||
QueryWrapper<UserAndPractitionerDto> queryWrapper = HisQueryUtils.buildQueryWrapper(userAndPractitionerDto,
|
||||
searchKey, new HashSet<>(Arrays.asList("user_name", "nick_name", "py_str", "wb_str")), null);
|
||||
IPage<UserAndPractitionerDto> userPractitionerPage =
|
||||
practitionerAppAppMapper.getUserPractitionerPage(new Page<>(pageNo, pageSize), queryWrapper);
|
||||
List<UserAndPractitionerDto> records = userPractitionerPage.getRecords();
|
||||
// 参与者id集合
|
||||
List<Long> practitionerIdList =
|
||||
records.stream().map(UserAndPractitionerDto::getPractitionerId).collect(Collectors.toList());
|
||||
// 子集合
|
||||
List<UserAndPractitionerChildDto> childList = practitionerAppAppMapper.getChildList(practitionerIdList);
|
||||
for (UserAndPractitionerDto record : records) {
|
||||
// 匹配子集合
|
||||
List<UserAndPractitionerChildDto> childDtoList =
|
||||
childList.stream().filter(e -> e.getPractitionerId().equals(record.getPractitionerId())).collect(Collectors.toList());
|
||||
record.setChildList(childDtoList);
|
||||
}
|
||||
return userPractitionerPage;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -3,10 +3,7 @@
|
||||
*/
|
||||
package com.openhis.web.basedatamanage.controller;
|
||||
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import com.core.common.core.domain.R;
|
||||
import com.openhis.web.basedatamanage.appservice.IPractitionerAppService;
|
||||
@@ -32,9 +29,27 @@ public class PractitionerController {
|
||||
* @param userAndPractitionerDto 用户及参与者dto
|
||||
* @return 结果
|
||||
*/
|
||||
@PostMapping(value = "/save-user-practitioner")
|
||||
@PostMapping(value = "/user-practitioner")
|
||||
public R<?> saveUserPractitioner(@RequestBody UserAndPractitionerDto userAndPractitionerDto) {
|
||||
return practitionerAppService.saveUserPractitioner(userAndPractitionerDto);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询用户及参与者
|
||||
*
|
||||
* @param userAndPractitionerDto 查询条件
|
||||
* @param searchKey 模糊查询关键字
|
||||
* @param pageNo 当前页
|
||||
* @param pageSize 每页多少条
|
||||
* @return 用户及参与者
|
||||
*/
|
||||
@GetMapping(value = "/user-practitioner-page")
|
||||
public R<?> getUserPractitionerPage(UserAndPractitionerDto userAndPractitionerDto,
|
||||
@RequestParam(value = "searchKey", defaultValue = "") String searchKey,
|
||||
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
|
||||
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) {
|
||||
return R
|
||||
.ok(practitionerAppService.getUserPractitionerPage(userAndPractitionerDto, searchKey, pageNo, pageSize));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,11 +1,39 @@
|
||||
package com.openhis.web.basedatamanage.mapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Constants;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.openhis.web.doctorstation.dto.UserAndPractitionerChildDto;
|
||||
import com.openhis.web.doctorstation.dto.UserAndPractitionerDto;
|
||||
|
||||
/**
|
||||
* 参与者 应用Mapper
|
||||
*/
|
||||
@Repository
|
||||
public interface PractitionerAppAppMapper {
|
||||
|
||||
/**
|
||||
* 查询用户及参与者
|
||||
*
|
||||
* @param page 分页参数
|
||||
* @param queryWrapper 查询条件
|
||||
* @return 用户及参与者
|
||||
*/
|
||||
IPage<UserAndPractitionerDto> getUserPractitionerPage(@Param("page") Page<UserAndPractitionerDto> page,
|
||||
@Param(Constants.WRAPPER) QueryWrapper<UserAndPractitionerDto> queryWrapper);
|
||||
|
||||
/**
|
||||
* 查询子集合
|
||||
*
|
||||
* @param practitionerIdList 参与者id集合
|
||||
* @return 子集合
|
||||
*/
|
||||
List<UserAndPractitionerChildDto> getChildList(@Param("practitionerIdList") List<Long> practitionerIdList);
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
package com.openhis.web.doctorstation.dto;
|
||||
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||
import com.openhis.common.annotation.Dict;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* 用户 及 参与者 子dto
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class UserAndPractitionerChildDto {
|
||||
|
||||
/**
|
||||
* 机构id
|
||||
*/
|
||||
@Dict(dictTable = "adm_organization", dictCode = "id", dictText = "name")
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private Long orgId;
|
||||
private String orgId_dictText;
|
||||
|
||||
/**
|
||||
* 位置id
|
||||
*/
|
||||
@Dict(dictTable = "adm_location", dictCode = "id", dictText = "name")
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private Long locationId;
|
||||
private String locationId_dictText;
|
||||
|
||||
/**
|
||||
* 角色code
|
||||
*/
|
||||
private String roleCode;
|
||||
|
||||
/**
|
||||
* 角色id
|
||||
*/
|
||||
private Long roleId;
|
||||
|
||||
/**
|
||||
* 角色name
|
||||
*/
|
||||
private String roleName;
|
||||
|
||||
/**
|
||||
* 参与者id
|
||||
*/
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private Long practitionerId;
|
||||
|
||||
}
|
||||
@@ -5,6 +5,7 @@ import java.util.List;
|
||||
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||
import com.openhis.common.annotation.Dict;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
@@ -16,6 +17,18 @@ import lombok.experimental.Accessors;
|
||||
@Accessors(chain = true)
|
||||
public class UserAndPractitionerDto {
|
||||
|
||||
/**
|
||||
* 用户id
|
||||
*/
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private Long userId;
|
||||
|
||||
/**
|
||||
* 参与者id
|
||||
*/
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private Long practitionerId;
|
||||
|
||||
/**
|
||||
* 账号
|
||||
*/
|
||||
@@ -26,6 +39,12 @@ public class UserAndPractitionerDto {
|
||||
*/
|
||||
private String nickName;
|
||||
|
||||
/** 拼音码 */
|
||||
private String pyStr;
|
||||
|
||||
/** 五笔码 */
|
||||
private String wbStr;
|
||||
|
||||
/**
|
||||
* 邮箱
|
||||
*/
|
||||
@@ -39,7 +58,9 @@ public class UserAndPractitionerDto {
|
||||
/**
|
||||
* 性别
|
||||
*/
|
||||
@Dict(dictCode = "sys_user_sex")
|
||||
private String sex;
|
||||
private String sex_dictText;
|
||||
|
||||
/**
|
||||
* 密码
|
||||
@@ -49,7 +70,9 @@ public class UserAndPractitionerDto {
|
||||
/**
|
||||
* 状态(0正常 1停用)
|
||||
*/
|
||||
@Dict(dictCode = "sys_normal_disable")
|
||||
private String status;
|
||||
private String status_dictText;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
@@ -74,14 +97,10 @@ public class UserAndPractitionerDto {
|
||||
/**
|
||||
* 机构id
|
||||
*/
|
||||
@Dict(dictTable = "adm_organization", dictCode = "id", dictText = "name")
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private Long orgId;
|
||||
|
||||
/**
|
||||
* 位置id
|
||||
*/
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private Long locationId;
|
||||
private String orgId_dictText;
|
||||
|
||||
/**
|
||||
* 角色id集合
|
||||
@@ -89,8 +108,8 @@ public class UserAndPractitionerDto {
|
||||
private List<Long> roleIds;
|
||||
|
||||
/**
|
||||
* 角色code集合
|
||||
* 子集合
|
||||
*/
|
||||
private List<String> roleCodes;
|
||||
private List<UserAndPractitionerChildDto> childList;
|
||||
|
||||
}
|
||||
|
||||
@@ -4,5 +4,67 @@
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.openhis.web.basedatamanage.mapper.PractitionerAppAppMapper">
|
||||
|
||||
<select id="getUserPractitionerPage" resultType="com.openhis.web.doctorstation.dto.UserAndPractitionerDto">
|
||||
SELECT T3.tenant_id,
|
||||
T3.user_id,
|
||||
T3.practitioner_id,
|
||||
T3.py_str,
|
||||
T3.wb_str,
|
||||
T3.user_name,
|
||||
T3.nick_name,
|
||||
T3.email,
|
||||
T3.phonenumber,
|
||||
T3.sex,
|
||||
T3.status,
|
||||
T3.remark,
|
||||
T3.birth_date,
|
||||
T3.address,
|
||||
T3.yb_no,
|
||||
T3.org_id
|
||||
from (
|
||||
SELECT T1.tenant_id,
|
||||
T1.id AS practitioner_id,
|
||||
T1.user_id,
|
||||
T1.py_str,
|
||||
T1.wb_str,
|
||||
T2.user_name,
|
||||
T2.nick_name,
|
||||
T2.email,
|
||||
T2.phonenumber,
|
||||
T2.sex,
|
||||
T2.status,
|
||||
T2.remark,
|
||||
T1.birth_date,
|
||||
T1.address,
|
||||
T1.yb_no,
|
||||
T1.org_id
|
||||
FROM adm_practitioner AS T1
|
||||
LEFT JOIN sys_user AS T2 ON T2.user_id = T1.user_id
|
||||
AND T2.delete_flag = '0'
|
||||
WHERE T1.delete_flag = '0') AS T3
|
||||
${ew.customSqlSegment}
|
||||
</select>
|
||||
|
||||
<select id="getChildList" resultType="com.openhis.web.doctorstation.dto.UserAndPractitionerChildDto">
|
||||
SELECT
|
||||
t1.practitioner_id,
|
||||
t1.org_id,
|
||||
t1.location_id,
|
||||
t1.role_code,
|
||||
t2.role_id,
|
||||
t2.role_name
|
||||
FROM
|
||||
adm_practitioner_role AS T1
|
||||
LEFT JOIN sys_role AS T2 ON t2.role_key = t1.role_code
|
||||
AND t2.del_flag = '0'
|
||||
WHERE
|
||||
t1.delete_flag = '0'
|
||||
<if test="practitionerIdList != null and !practitionerIdList.isEmpty()">
|
||||
AND t1.practitioner_id IN
|
||||
<foreach collection="practitionerIdList" item="itemId" open="(" separator="," close=")">
|
||||
#{itemId}
|
||||
</foreach>
|
||||
</if>
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
@@ -2,8 +2,6 @@ package com.openhis.administration.domain;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.core.common.core.domain.HisBaseEntity;
|
||||
|
||||
@@ -24,7 +22,7 @@ import lombok.experimental.Accessors;
|
||||
public class BizUser extends HisBaseEntity {
|
||||
|
||||
/** 用户ID */
|
||||
@TableId(type = IdType.ASSIGN_ID)
|
||||
// @TableId(type = IdType.ASSIGN_ID)
|
||||
private Long userId;
|
||||
|
||||
/** 部门ID */
|
||||
|
||||
Reference in New Issue
Block a user