diff --git a/openhis-server/core-common/src/main/java/com/core/common/core/domain/model/LoginUser.java b/openhis-server/core-common/src/main/java/com/core/common/core/domain/model/LoginUser.java index 22206453..e0ed71df 100644 --- a/openhis-server/core-common/src/main/java/com/core/common/core/domain/model/LoginUser.java +++ b/openhis-server/core-common/src/main/java/com/core/common/core/domain/model/LoginUser.java @@ -3,13 +3,14 @@ package com.core.common.core.domain.model; import java.util.Collection; import java.util.Set; -import lombok.Data; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.userdetails.UserDetails; import com.alibaba.fastjson2.annotation.JSONField; import com.core.common.core.domain.entity.SysUser; +import lombok.Data; + /** * 登录用户身份权限 * @@ -72,6 +73,16 @@ public class LoginUser implements UserDetails { /** 租户ID */ private Integer tenantId; + /** + * 机构/科室id + */ + private Long orgId; + + /** + * 参与者id + */ + private Long practitionerId; + /** * 用户信息 */ diff --git a/openhis-server/core-common/src/main/java/com/core/common/core/domain/model/LoginUserExtend.java b/openhis-server/core-common/src/main/java/com/core/common/core/domain/model/LoginUserExtend.java new file mode 100644 index 00000000..e3bc85c2 --- /dev/null +++ b/openhis-server/core-common/src/main/java/com/core/common/core/domain/model/LoginUserExtend.java @@ -0,0 +1,21 @@ +package com.core.common.core.domain.model; + +import lombok.Data; + +/** + * 登录用户扩展 + */ +@Data +public class LoginUserExtend { + + /** + * 机构/科室id + */ + private Long orgId; + + /** + * 参与者id + */ + private Long practitionerId; + +} diff --git a/openhis-server/core-framework/src/main/java/com/core/framework/web/service/SysLoginService.java b/openhis-server/core-framework/src/main/java/com/core/framework/web/service/SysLoginService.java index 1dd9fb0d..e3506c6a 100644 --- a/openhis-server/core-framework/src/main/java/com/core/framework/web/service/SysLoginService.java +++ b/openhis-server/core-framework/src/main/java/com/core/framework/web/service/SysLoginService.java @@ -17,6 +17,7 @@ import com.core.common.constant.Constants; import com.core.common.constant.UserConstants; import com.core.common.core.domain.entity.SysUser; import com.core.common.core.domain.model.LoginUser; +import com.core.common.core.domain.model.LoginUserExtend; import com.core.common.core.redis.RedisCache; import com.core.common.exception.ServiceException; import com.core.common.exception.user.*; @@ -63,7 +64,7 @@ public class SysLoginService { */ public String login(String username, String password, String code, String uuid) { // 验证码校验 - // validateCaptcha(username, code, uuid); + validateCaptcha(username, code, uuid); // 登录前置校验 loginPreCheck(username, password); // 用户验证 @@ -91,7 +92,7 @@ public class SysLoginService { MessageUtils.message("user.login.success"))); LoginUser loginUser = (LoginUser)authentication.getPrincipal(); - // -----start-----登录时set租户id,正常应该从请求头获取,这行代码只是测试使用 + // -----start-----登录时set租户id Integer tenantId = 0; ServletRequestAttributes attributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes(); if (attributes != null) { @@ -103,8 +104,12 @@ public class SysLoginService { } } loginUser.setTenantId(tenantId); - // -----end-----登录时set租户id,正常应该从请求头获取,这行代码只是测试使用 + // -----end-----登录时set租户id recordLoginInfo(loginUser.getUserId()); + // 设置 机构id和参与者id + LoginUserExtend loginUserExtend = userService.getLoginUserExtend(loginUser.getUserId()); + loginUser.setOrgId(loginUserExtend.getOrgId()); + loginUser.setPractitionerId(loginUserExtend.getPractitionerId()); // 生成token return tokenService.createToken(loginUser); } diff --git a/openhis-server/core-system/src/main/java/com/core/system/mapper/SysUserMapper.java b/openhis-server/core-system/src/main/java/com/core/system/mapper/SysUserMapper.java index 5cab676f..d2f90d53 100644 --- a/openhis-server/core-system/src/main/java/com/core/system/mapper/SysUserMapper.java +++ b/openhis-server/core-system/src/main/java/com/core/system/mapper/SysUserMapper.java @@ -2,6 +2,7 @@ package com.core.system.mapper; import java.util.List; +import com.core.common.core.domain.model.LoginUserExtend; import org.apache.ibatis.annotations.Param; import com.core.common.core.domain.entity.SysUser; @@ -125,4 +126,12 @@ public interface SysUserMapper { * @return 结果 */ public SysUser checkEmailUnique(String email); + + /** + * 扩展属性 + * + * @param userId 系统用户id + * @return 扩展属性 + */ + LoginUserExtend getLoginUserExtend(@Param("userId") Long userId); } diff --git a/openhis-server/core-system/src/main/java/com/core/system/service/ISysUserService.java b/openhis-server/core-system/src/main/java/com/core/system/service/ISysUserService.java index 9718b9c4..769bf5df 100644 --- a/openhis-server/core-system/src/main/java/com/core/system/service/ISysUserService.java +++ b/openhis-server/core-system/src/main/java/com/core/system/service/ISysUserService.java @@ -3,6 +3,7 @@ package com.core.system.service; import java.util.List; import com.core.common.core.domain.entity.SysUser; +import com.core.common.core.domain.model.LoginUserExtend; /** * 用户 业务层 @@ -203,4 +204,12 @@ public interface ISysUserService { * @return 结果 */ public String importUser(List userList, Boolean isUpdateSupport, String operName); + + /** + * 扩展属性 + * + * @param userId 系统用户id + * @return 扩展属性 + */ + LoginUserExtend getLoginUserExtend(Long userId); } diff --git a/openhis-server/core-system/src/main/java/com/core/system/service/impl/SysUserServiceImpl.java b/openhis-server/core-system/src/main/java/com/core/system/service/impl/SysUserServiceImpl.java index 3a313f0a..2f2a742e 100644 --- a/openhis-server/core-system/src/main/java/com/core/system/service/impl/SysUserServiceImpl.java +++ b/openhis-server/core-system/src/main/java/com/core/system/service/impl/SysUserServiceImpl.java @@ -6,6 +6,7 @@ import java.util.stream.Collectors; import javax.validation.Validator; +import com.core.common.core.domain.model.LoginUserExtend; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -484,4 +485,16 @@ public class SysUserServiceImpl implements ISysUserService { } return successMsg.toString(); } + + /** + * 扩展属性 + * + * @param userId 系统用户id + * @return 扩展属性 + */ + @Override + public LoginUserExtend getLoginUserExtend(Long userId) { + return userMapper.getLoginUserExtend(userId); + } + } diff --git a/openhis-server/core-system/src/main/resources/mapper/system/SysUserMapper.xml b/openhis-server/core-system/src/main/resources/mapper/system/SysUserMapper.xml index 017811f8..c0062a6b 100644 --- a/openhis-server/core-system/src/main/resources/mapper/system/SysUserMapper.xml +++ b/openhis-server/core-system/src/main/resources/mapper/system/SysUserMapper.xml @@ -265,4 +265,12 @@ + + \ No newline at end of file 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 b88504f3..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 @@ -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,38 @@ public interface IPractitionerAppService { /** * 新增用户及参与者 + * * @param userAndPractitionerDto 用户及参与者dto * @return 结果 */ R saveUserPractitioner(UserAndPractitionerDto userAndPractitionerDto); + /** + * 查询用户及参与者 + * + * @param userAndPractitionerDto 查询条件 + * @param searchKey 模糊查询关键字 + * @param pageNo 当前页 + * @param pageSize 每页多少条 + * @return 用户及参与者 + */ + 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 5e25389d..38efeda4 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 @@ -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,192 @@ 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().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 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 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.M00001, new Object[] {"人员信息"})); + } + + /** + * 查询用户及参与者 + * + * @param userAndPractitionerDto 查询条件 + * @param searchKey 模糊查询关键字 + * @param pageNo 当前页 + * @param pageSize 每页多少条 + * @return 用户及参与者 + */ + @Override + public IPage getUserPractitionerPage(UserAndPractitionerDto userAndPractitionerDto, + String searchKey, Integer pageNo, Integer pageSize) { + // 构建查询条件 + QueryWrapper queryWrapper = HisQueryUtils.buildQueryWrapper(userAndPractitionerDto, + searchKey, new HashSet<>(Arrays.asList("user_name", "nick_name", "py_str", "wb_str")), null); + IPage userPractitionerPage = + practitionerAppAppMapper.getUserPractitionerPage(new Page<>(pageNo, pageSize), queryWrapper); + List records = userPractitionerPage.getRecords(); + // 参与者id集合 + List practitionerIdList = + records.stream().map(UserAndPractitionerDto::getPractitionerId).collect(Collectors.toList()); + // 子集合 + List childList = practitionerAppAppMapper.getChildList(practitionerIdList); + for (UserAndPractitionerDto record : records) { + // 匹配子集合 + 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) { + if (1L == userId) { + return R.fail(null, "admin不允许删除"); + } + 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 08673c57..0644b661 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 @@ -3,11 +3,9 @@ */ 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.baomidou.mybatisplus.core.metadata.IPage; import com.core.common.core.domain.R; import com.openhis.web.basedatamanage.appservice.IPractitionerAppService; import com.openhis.web.doctorstation.dto.UserAndPractitionerDto; @@ -32,9 +30,64 @@ 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)); + } + + /** + * 查询用户及参与者详情 + * + * @param userId 系统用户id + * @return 用户及参与者详情 + */ + @GetMapping(value = "/user-practitioner-detail") + public R getUserPractitionerPage(@RequestParam Long userId) { + UserAndPractitionerDto userAndPractitionerDto = new UserAndPractitionerDto(); + userAndPractitionerDto.setUserId(userId); + IPage userPractitionerPage = + practitionerAppService.getUserPractitionerPage(userAndPractitionerDto, "", 1, 1); + return R.ok(userPractitionerPage.getRecords().get(0)); + } + + /** + * 修改用户及参与者 + * + * @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 9e50ba06..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 @@ -1,11 +1,53 @@ 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 getUserPractitionerPage(@Param("page") Page page, + @Param(Constants.WRAPPER) QueryWrapper queryWrapper); + + /** + * 查询子集合 + * + * @param practitionerIdList 参与者id集合 + * @return 子集合 + */ + 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/java/com/openhis/web/chargemanage/dto/ChargeItemFormData.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/chargemanage/dto/ChargeItemFormData.java index 32f6a7c4..5ed61f87 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/chargemanage/dto/ChargeItemFormData.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/chargemanage/dto/ChargeItemFormData.java @@ -84,8 +84,8 @@ public class ChargeItemFormData { this.statusEnum = ChargeItemStatus.BILLED.getValue(); this.contextEnum = EncounterClass.AMB.getValue(); this.occurrenceTime = new Date(); - this.performerId = SecurityUtils.getLoginUser().getUserId(); - this.entererId = SecurityUtils.getLoginUser().getUserId(); + this.performerId = SecurityUtils.getLoginUser().getPractitionerId(); + this.entererId = SecurityUtils.getLoginUser().getPractitionerId(); this.enteredDate = new Date(); this.serviceTable = CommonConstants.TableName.ADM_HEALTHCARE_SERVICE; } diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/IItemDefinitionService.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/IItemDefinitionService.java index 41f69488..28ab2d00 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/IItemDefinitionService.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/IItemDefinitionService.java @@ -12,7 +12,7 @@ import com.openhis.web.datadictionary.dto.MedicationManageUpDto; public interface IItemDefinitionService { /** - * 添加项目定价 + * 添加药品的项目定价 * * @param medicationManageUpDto 药品目录信息 * @param medicationDetail 药品信息 diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/impl/DeviceManageAppServiceImpl.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/impl/DeviceManageAppServiceImpl.java index ebd2f777..015967ab 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/impl/DeviceManageAppServiceImpl.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/impl/DeviceManageAppServiceImpl.java @@ -10,6 +10,7 @@ import java.util.concurrent.CopyOnWriteArrayList; import java.util.stream.Collectors; import java.util.stream.Stream; +import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import org.springframework.beans.factory.annotation.Autowired; @@ -21,6 +22,7 @@ import org.springframework.web.bind.annotation.RequestParam; 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.MessageUtils; @@ -30,6 +32,7 @@ import com.openhis.administration.domain.Organization; import com.openhis.administration.mapper.DeviceDefinitionMapper; import com.openhis.administration.service.IDeviceDefinitionService; import com.openhis.administration.service.IOrganizationService; +import com.openhis.common.constant.CommonConstants; import com.openhis.common.constant.PromptMsgConstant; import com.openhis.common.enums.DeviceCategory; import com.openhis.common.enums.OrganizationType; @@ -43,6 +46,8 @@ import com.openhis.web.datadictionary.dto.DeviceManageDto; import com.openhis.web.datadictionary.dto.DeviceManageInitDto; import com.openhis.web.datadictionary.dto.DeviceManageSelParam; import com.openhis.web.datadictionary.dto.DeviceManageUpDto; +import com.openhis.web.datadictionary.mapper.DeviceManageMapper; +import com.openhis.web.doctorstation.dto.AdviceBaseDto; /** * 器材目录 impl @@ -62,6 +67,9 @@ public class DeviceManageAppServiceImpl implements IDeviceManageAppService { @Autowired private IOrganizationService organizationService; + @Resource + DeviceManageMapper deviceManageMapper; + /** * 器材目录初始化 * @@ -106,15 +114,23 @@ public class DeviceManageAppServiceImpl implements IDeviceManageAppService { @RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo, @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest request) { +// // 构建查询条件 +// QueryWrapper queryWrapper = HisQueryUtils.buildQueryWrapper(deviceManageSelParam, searchKey, +// new HashSet<>(Arrays.asList("bus_no", "name", "py_str", "wb_str")), request); +// // 设置排序 +// queryWrapper.orderByAsc("bus_no"); +// +// // 分页查询 +// Page deviceManagePage = +// HisPageUtils.selectPage(deviceDefinitionMapper, queryWrapper, pageNo, pageSize, DeviceManageDto.class); + // 构建查询条件 - QueryWrapper queryWrapper = HisQueryUtils.buildQueryWrapper(deviceManageSelParam, searchKey, + QueryWrapper queryWrapper = HisQueryUtils.buildQueryWrapper(deviceManageSelParam, searchKey, new HashSet<>(Arrays.asList("bus_no", "name", "py_str", "wb_str")), request); - // 设置排序 - queryWrapper.orderByAsc("bus_no"); // 分页查询 - Page deviceManagePage = - HisPageUtils.selectPage(deviceDefinitionMapper, queryWrapper, pageNo, pageSize, DeviceManageDto.class); + IPage deviceManagePage = + deviceManageMapper.getDevicePage(new Page<>(pageNo, pageSize), queryWrapper); deviceManagePage.getRecords().forEach(e -> { // 高值器材标志枚举类回显赋值 @@ -125,8 +141,10 @@ public class DeviceManageAppServiceImpl implements IDeviceManageAppService { e.setYbMatchFlag_enumText(EnumUtils.getInfoByValue(Whether.class, e.getYbMatchFlag())); // 过敏标记枚举类回显赋值 e.setAllergenFlag_enumText(EnumUtils.getInfoByValue(Whether.class, e.getAllergenFlag())); - //器材分类 + // 器材分类 e.setCategoryEnum_enumText(EnumUtils.getInfoByValue(DeviceCategory.class, e.getCategoryEnum())); + // 器材状态 + e.setStatusEnum_enumText(EnumUtils.getInfoByValue(PublicationStatus.class, e.getStatusEnum())); }); // 返回【器材目录列表DTO】分页 diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/impl/ItemDefinitionServiceImpl.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/impl/ItemDefinitionServiceImpl.java index fde1002d..aa53dd04 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/impl/ItemDefinitionServiceImpl.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/impl/ItemDefinitionServiceImpl.java @@ -3,6 +3,7 @@ package com.openhis.web.datadictionary.appservice.impl; import java.util.ArrayList; import java.util.List; +import com.core.common.utils.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -47,8 +48,9 @@ public class ItemDefinitionServiceImpl implements IItemDefinitionService { .setStatusEnum(PublicationStatus.ACTIVE.getValue()) .setInstanceTable(CommonConstants.TableName.MED_MEDICATION_DEFINITION) .setInstanceId(medicationDetail.getMedicationDefId()).setEffectiveStart(DateUtils.getNowDate()) - // todo 机构ID后续修改 - .setOrgId(1L) + //机构ID +// .setOrgId(SecurityUtils.getLoginUser().getOrgId()) + .setOrgId(1l)//todo 没数据先写死 // 财务类别 .setTypeCode(medicationManageUpDto.getMinimalFee()) // 医保类别 @@ -64,25 +66,25 @@ public class ItemDefinitionServiceImpl implements IItemDefinitionService { .setConditionCode( medicationManageUpDto.getDoseUnitCode_dictText() + "," + medicationManageUpDto.getLotNumber()) // 购入价 - .setAmount(medicationManageUpDto.getPurchasePrice()).setPriority(0); + .setAmount(medicationManageUpDto.getPurchasePrice()); ChargeItemDefDetail chargeItemDefDetail2 = new ChargeItemDefDetail(); - chargeItemDefDetail1.setDefinitionId(chargeItemDefinition.getId()) + chargeItemDefDetail2.setDefinitionId(chargeItemDefinition.getId()) // 单位+批次(unit,pici) 用,符号拼装 .setConditionCode( medicationManageUpDto.getDoseUnitCode_dictText() + "," + medicationManageUpDto.getLotNumber()) // 零售价 - .setAmount(medicationManageUpDto.getRetailPrice()).setPriority(1); + .setAmount(medicationManageUpDto.getRetailPrice()); shargeItemDefDetails.add(chargeItemDefDetail2); ChargeItemDefDetail chargeItemDefDetail3 = new ChargeItemDefDetail(); - chargeItemDefDetail1.setDefinitionId(chargeItemDefinition.getId()) + chargeItemDefDetail3.setDefinitionId(chargeItemDefinition.getId()) // 单位+批次(unit,pici) 用,符号拼装 .setConditionCode( medicationManageUpDto.getDoseUnitCode_dictText() + "," + medicationManageUpDto.getLotNumber()) // 最高零售价 - .setAmount(medicationManageUpDto.getMaximumRetailPrice()).setPriority(2); + .setAmount(medicationManageUpDto.getMaximumRetailPrice()); shargeItemDefDetails.add(chargeItemDefDetail3); diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/impl/MedicationManageAppServiceImpl.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/impl/MedicationManageAppServiceImpl.java index 50dede8c..cd6488c2 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/impl/MedicationManageAppServiceImpl.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/impl/MedicationManageAppServiceImpl.java @@ -164,10 +164,31 @@ public class MedicationManageAppServiceImpl implements IMedicationManageAppServi e.setStatusEnum_enumText(EnumUtils.getInfoByValue(PublicationStatus.class, e.getStatusEnum())); // 权限限制 e.setRestrictedEnum_enumText(EnumUtils.getInfoByValue(PermissionLimit.class, e.getRestrictedEnum())); - // 活动标记 - // e.setActiveFlag_enumText(EnumUtils.getInfoByValue(AccountStatus.class, e.getActiveFlag())); + // 是否为活性 + e.setActiveFlag_enumText(EnumUtils.getInfoByValue(Whether.class, e.getActiveFlag())); + // 医保是否对码 + e.setYbMatchFlag_enumText(EnumUtils.getInfoByValue(Whether.class, e.getYbMatchFlag())); + //是否皮试 + e.setSkinTestFlag_enumText(EnumUtils.getInfoByValue(Whether.class, e.getSkinTestFlag()));; + //是否为注射药物 + e.setInjectFlag_enumText(EnumUtils.getInfoByValue(Whether.class, e.getInjectFlag())); + //是否限制使用 + e.setRestrictedFlag_enumText(EnumUtils.getInfoByValue(Whether.class, e.getRestrictedFlag())); + //儿童用药标志 + e.setChildrenFlag_enumText(EnumUtils.getInfoByValue(Whether.class, e.getChildrenFlag())); // 适用范围 - // e.setDomainEnum_enumText(EnumUtils.getInfoByValue(ApplicableScope.class, e.getDomainEnum())); + e.setDomainEnum_enumText(EnumUtils.getInfoByValue(ApplicableScope.class, e.getDomainEnum())); + + // 是否自制 + e.setSelfFlag_enumText(EnumUtils.getInfoByValue(ApplicableScope.class, e.getSelfFlag())); + // 是否抗生素 + e.setAntibioticFlag_enumText(EnumUtils.getInfoByValue(ApplicableScope.class, e.getAntibioticFlag())); + // 基药标识 + e.setBasicFlag_enumText(EnumUtils.getInfoByValue(ApplicableScope.class, e.getBasicFlag())); + +// // 活动标记 +// e.setActiveFlag_enumText(EnumUtils.getInfoByValue(AccountStatus.class, e.getActiveFlag())); + }); // 返回【药品录列表DTO】分页 diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/controller/MedicationManageController.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/controller/MedicationManageController.java index d232cfac..1c3dac5c 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/controller/MedicationManageController.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/controller/MedicationManageController.java @@ -70,7 +70,7 @@ public class MedicationManageController { * @return */ @GetMapping("/information-one") - public R getMedicationOne(@PathVariable("id") Long id) { + public R getMedicationOne(@RequestParam Long id) { return medicationManageAppService.getMedicationOne(id); } diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DeviceManageDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DeviceManageDto.java index b9212b2d..f38590d8 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DeviceManageDto.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DeviceManageDto.java @@ -4,6 +4,7 @@ import java.math.BigDecimal; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.openhis.common.annotation.Dict; import com.openhis.common.enums.DeviceCategory; import com.openhis.common.enums.PublicationStatus; @@ -79,13 +80,20 @@ public class DeviceManageDto { private String ybMatchFlag_enumText; /** 状态 */ - private PublicationStatus statusEnum; + private Integer statusEnum; + private String statusEnum_enumText; /** 生产厂家 */ private Long manufacturerId; + /** 生产厂商文本 */ + private Long manufacturerText; + /** 供应商 */ + @JsonSerialize(using = ToStringSerializer.class) + @Dict(dictTable = "adm_supplier",dictCode = "id",dictText = "name") private Long supplyId; + private String supplyId_dictText; /** 说明 */ private String description; @@ -94,7 +102,10 @@ public class DeviceManageDto { private String jurisdiction; /** 执行科室 */ + @Dict(dictTable = "adm_organization", dictCode = "id", dictText = "name") + @JsonSerialize(using = ToStringSerializer.class) private Long ruleId; + private String ruleId_dictText; /** 器材版本 */ private String version; @@ -105,4 +116,8 @@ public class DeviceManageDto { /** 过敏标记 */ private Integer allergenFlag; private String allergenFlag_enumText; + + /** 售价 */ + private BigDecimal price; + } diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DeviceManageUpDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DeviceManageUpDto.java index f520ed5d..34f3194c 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DeviceManageUpDto.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DeviceManageUpDto.java @@ -43,7 +43,10 @@ public class DeviceManageUpDto { /** 器材分类 */ @NotNull(message = "器材分类不能为空") - private DeviceCategory categoryEnum; +// private DeviceCategory categoryEnum; + private Integer categoryEnum; + private String categoryEnum_enumText; + /** 器材种类 */ @NotBlank(message = "器材种类不能为空") @@ -133,4 +136,23 @@ public class DeviceManageUpDto { /** 过敏标记 */ // @NotNull(message = "过敏标记不能为空") private Integer allergenFlag; + + /** 购入价 */ + @NotNull(message = "购入价不能为空") + private BigDecimal purchasePrice; + + /** 零售价 */ + @NotNull(message = "零售价不能为空") + private BigDecimal retailPrice; + + /** 最高零售价 */ + @NotNull(message = "最高零售价不能为空") + private BigDecimal maximumRetailPrice; + + /** 最小费用 */ + private String minimalFee; + + /** 医保类别 */ + private String ybType; + } diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DiagnosisTreatmentDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DiagnosisTreatmentDto.java index 154f3ad6..34d09f69 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DiagnosisTreatmentDto.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DiagnosisTreatmentDto.java @@ -9,6 +9,7 @@ import lombok.Data; import lombok.experimental.Accessors; import javax.validation.constraints.NotNull; +import java.math.BigDecimal; /** * 诊疗目录分页检索 @@ -80,4 +81,8 @@ public class DiagnosisTreatmentDto { /** 所在位置 */ @JsonSerialize(using = ToStringSerializer.class) private Long locationId; + + /** 售价 */ + private BigDecimal price; + } diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/MedicationManageDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/MedicationManageDto.java index 4e9011be..f236f982 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/MedicationManageDto.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/MedicationManageDto.java @@ -6,7 +6,6 @@ import java.util.Date; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import com.openhis.common.annotation.Dict; -import com.openhis.common.enums.PublicationStatus; import lombok.Data; import lombok.experimental.Accessors; @@ -34,13 +33,13 @@ public class MedicationManageDto { private String statusEnum_enumText; /** 所属科室 */ - @Dict(dictTable = "adm_organization",dictCode = "id",dictText = "name") + @Dict(dictTable = "adm_organization", dictCode = "id", dictText = "name") @JsonSerialize(using = ToStringSerializer.class) private Long orgId; private String orgId_dictText; /** 所在位置 */ - @Dict(dictTable = "adm_location",dictCode = "id",dictText = "name") + @Dict(dictTable = "adm_location", dictCode = "id", dictText = "name") @JsonSerialize(using = ToStringSerializer.class) private Long locationId; private String locationId_dictText; @@ -83,7 +82,9 @@ public class MedicationManageDto { private BigDecimal dose; /** 剂量单位 */ + @Dict(dictCode = "unit_code") private String doseUnitCode; + private String doseUnitCode_dictText; /** 单次最大剂量 */ private BigDecimal maxUnit; @@ -95,7 +96,9 @@ public class MedicationManageDto { private BigDecimal usageLimit; /** DDD值 */ + @Dict(dictCode = "ddd_code") private String dddCode; + private String dddCode_dictText; /** DDD单位 */ @Dict(dictCode = "unit_code") @@ -149,22 +152,19 @@ public class MedicationManageDto { /** 所含耗材 */ private String comprisedText; - /** 成分 */ - private String ingredient; - /** 拆零比 */ private BigDecimal partPercent; /** 剂量形式 */ private Integer doseFrom; + private String doseFrom_enumText; /** 批准文号 */ private String approvalNumber; /** 医保是否对码 */ - @Dict(dictCode = "sys_yes_no") private Integer ybMatchFlag; - private String ybMatchFlag_dictText; + private String ybMatchFlag_enumText;; /** 医保编码 */ private String ybNo; @@ -173,14 +173,12 @@ public class MedicationManageDto { private String pharmacologyCategoryCode; /** 是否皮试 */ - @Dict(dictCode = "sys_yes_no") private Integer skinTestFlag; - private String skinTestFlag_dictText; + private String skinTestFlag_enumText; /** 是否为注射药物 */ - @Dict(dictCode = "sys_yes_no") private Integer injectFlag; - private String injectFlag_dictText; + private String injectFlag_enumText; /** 生产厂家 */ @JsonSerialize(using = ToStringSerializer.class) @@ -188,71 +186,75 @@ public class MedicationManageDto { /** 供应商 */ @JsonSerialize(using = ToStringSerializer.class) - @Dict(dictTable = "adm_supplier",dictCode = "id",dictText = "name") + @Dict(dictTable = "adm_supplier", dictCode = "id", dictText = "name") private Long supplyId; private String supplyId_dictText; /** 是否限制使用 */ - @Dict(dictCode = "sys_yes_no") private Integer restrictedFlag; - private String restrictedFlag_dictText; + private String restrictedFlag_enumText; /** 限制使用范围 */ private String restrictedScope; /** 儿童用药标志 */ - @Dict(dictCode = "sys_yes_no") private Integer childrenFlag; - private String childrenFlag_dictText; + private String childrenFlag_enumText; /** 产品特性 */ private Integer characteristic; + private String characteristic_enumText; /** 贯标国家编码 */ private String nationalDrugCode; /** 拆分属性 */ - private String partAttribute; + private Integer partAttributeEnum; + private String partAttributeEnum_enumText; /** 抗生素分类 */ - @Dict(dictCode = "antibiotic_type_code") private String antibioticCode; private String antibioticCode_dictText; - /** 权限限制 */ private Integer restrictedEnum; private String restrictedEnum_enumText; /** 是否自制 */ - @Dict(dictCode = "sys_yes_no") private Integer selfFlag; - private String selfFlag_dictText; + private String selfFlag_enumText; /** 是否抗生素 */ - @Dict(dictCode = "sys_yes_no") private Integer antibioticFlag; - private String antibioticFlag_dictText; + private String antibioticFlag_enumText; /** 基药标识 */ - @Dict(dictCode = "sys_yes_no") private Integer basicFlag; - private String basicFlag_dictText; + private String basicFlag_enumText; /** 生产厂家名称 */ private String manufacturerName; /** 常规单位 */ + @Dict(dictCode = "unit_code") private String baseUnitCode; + private String baseUnitCode_dictText; /** 当前库存数量(常规单位) */ - @Dict(dictCode = "unit_code") private String baseQuantity; - private String baseQuantity_dictText; /** 当前库存数量(最小单位数量) */ private String minQuantity; + /** 售价 */ + private BigDecimal price; + + /** 单次最小用药频次 */ + private String minRateCode; + + /** 单次最大用药频次 */ + private String maxRateCode; + } diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/MedicationManageUpDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/MedicationManageUpDto.java index 83b017df..8105f4a0 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/MedicationManageUpDto.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/MedicationManageUpDto.java @@ -4,6 +4,7 @@ import java.math.BigDecimal; import java.util.Date; import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.databind.annotation.JsonSerialize; @@ -177,12 +178,15 @@ public class MedicationManageUpDto { private Integer characteristic; /** 购入价 */ + @NotNull(message = "购入价不能为空") private BigDecimal purchasePrice; /** 零售价 */ + @NotNull(message = "零售价不能为空") private BigDecimal retailPrice; /** 最高零售价 */ + @NotNull(message = "最高零售价不能为空") private BigDecimal maximumRetailPrice; /** 医保类别 */ @@ -191,4 +195,35 @@ public class MedicationManageUpDto { /** 最小费用 */ private String minimalFee; + /** 单次最小用药频次 */ + private String minRateCode; + + /** 单次最大用药频次 */ + private String maxRateCode; + + /** 药品状态 */ + private Integer statusEnum; + + /** 拆分属性 */ + private Integer partAttributeEnum; + + /** 贯标国家编码 */ + private String nationalDrugCode; + + /** 是否抗生素 */ + private Integer antibioticFlag; + + /** 是否自制 */ + private Integer selfFlag; + + /** DDD值 */ + private String dddCode; + + /** DDD单位 */ + private String dddUnitCode; + + /** 用量限定 */ + private BigDecimal usageLimit; + + /** 系统类别???? */ } diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/mapper/DeviceManageMapper.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/mapper/DeviceManageMapper.java new file mode 100644 index 00000000..39a3d652 --- /dev/null +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/mapper/DeviceManageMapper.java @@ -0,0 +1,30 @@ +package com.openhis.web.datadictionary.mapper; + +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.datadictionary.dto.DeviceManageDto; +import com.openhis.web.outpatientmanage.dto.OutpatientInfusionPatientDto; +import org.apache.ibatis.annotations.Param; + +/** + * 器材目录 + * + * @author Wuser + * @date 2025/3/26 + */ +public interface DeviceManageMapper { + + /** + * 器材目录分页查询 + * + * @param page 分页参数 + * @param queryWrapper 查询条件 + * @return 器材记录 + */ + IPage getDevicePage( + @Param("page") Page page, + @Param(Constants.WRAPPER) QueryWrapper queryWrapper); + +} diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/AdviceSaveDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/AdviceSaveDto.java index 5d6781dd..54f84bc6 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/AdviceSaveDto.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/AdviceSaveDto.java @@ -2,6 +2,7 @@ package com.openhis.web.doctorstation.dto; import java.math.BigDecimal; +import com.core.common.utils.SecurityUtils; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import com.openhis.common.enums.EncounterClass; @@ -126,8 +127,7 @@ public class AdviceSaveDto { this.statusEnum = RequestStatus.DRAFT.getValue(); this.categoryEnum = EncounterClass.AMB.getValue(); this.therapyEnum = TherapyTimeType.TEMPORARY.getValue(); - // TODO: 应该从当前登录账号获取参与者id,现在没有 - // this.practitionerId + this.practitionerId = SecurityUtils.getLoginUser().getPractitionerId(); } } diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/UserAndPractitionerChildDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/UserAndPractitionerChildDto.java new file mode 100644 index 00000000..f3586e8f --- /dev/null +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/UserAndPractitionerChildDto.java @@ -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; + +} diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/UserAndPractitionerDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/UserAndPractitionerDto.java index 4ae24281..4a6e4718 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/UserAndPractitionerDto.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/UserAndPractitionerDto.java @@ -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 roleIds; /** - * 角色code集合 + * 子集合 */ - private List roleCodes; + private List childList; } diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/inventorymanage/appservice/IInventoryDetailsAppService.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/inventorymanage/appservice/IInventoryDetailsAppService.java new file mode 100644 index 00000000..47e8b500 --- /dev/null +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/inventorymanage/appservice/IInventoryDetailsAppService.java @@ -0,0 +1,71 @@ +/* + * Copyright ©2023 CJB-CNIT Team. All rights reserved + */ +package com.openhis.web.inventorymanage.appservice; + +import javax.servlet.http.HttpServletRequest; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.openhis.web.inventorymanage.dto.*; + +/** + * 采购入库明细查询 service + * + * @author + * @date 2025-03-10 + */ +public interface IInventoryDetailsAppService { + + /** + * 采购入库查询 + * + * @param purchaseInSearchParam 查询条件 + * @param pageNo 当前页码 + * @param pageSize 查询条数 + * @param searchKey 模糊查询关键字 + * @param request 请求数据 + * @return 采购入库查询分页列表 + */ + IPage purchaseInGetPage(PurchaseInSearchParam purchaseInSearchParam, String searchKey, + Integer pageNo, Integer pageSize, HttpServletRequest request); + + /** + * 领用出库查询 + * + * @param requisitionOutSearchParam 查询条件 + * @param pageNo 当前页码 + * @param pageSize 查询条数 + * @param searchKey 模糊查询关键字 + * @param request 请求数据 + * @return 领用出库查询分页列表 + */ + IPage requisitionOutGetPage(RequisitionOutSearchParam requisitionOutSearchParam, + String searchKey, Integer pageNo, Integer pageSize, HttpServletRequest request); + + /** + * 商品调拨查询 + * + * @param requisitionOutSearchParam 查询条件 + * @param pageNo 当前页码 + * @param pageSize 查询条数 + * @param searchKey 模糊查询关键字 + * @param request 请求数据 + * @return 商品调拨查询分页列表 + */ + IPage inventoryTransferGetPage(RequisitionOutSearchParam requisitionOutSearchParam, + String searchKey, Integer pageNo, Integer pageSize, HttpServletRequest request); + + /** + * 商品盘点查询 + * + * @param requisitionOutSearchParam 查询条件 + * @param pageNo 当前页码 + * @param pageSize 查询条数 + * @param searchKey 模糊查询关键字 + * @param request 请求数据 + * @return 商品盘点查询分页列表 + */ + IPage inventoryStockTakeGetPage(RequisitionOutSearchParam requisitionOutSearchParam, + String searchKey, Integer pageNo, Integer pageSize, HttpServletRequest request); + +} diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/inventorymanage/appservice/impl/InventoryDetailsAppServiceImpl.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/inventorymanage/appservice/impl/InventoryDetailsAppServiceImpl.java new file mode 100644 index 00000000..b4ac60f3 --- /dev/null +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/inventorymanage/appservice/impl/InventoryDetailsAppServiceImpl.java @@ -0,0 +1,133 @@ +/* + * Copyright ©2023 CJB-CNIT Team. All rights reserved + */ +package com.openhis.web.inventorymanage.appservice.impl; + +import java.util.Arrays; +import java.util.HashSet; + +import javax.servlet.http.HttpServletRequest; + +import com.openhis.web.inventorymanage.dto.*; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +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.openhis.common.utils.HisQueryUtils; +import com.openhis.web.inventorymanage.appservice.IInventoryDetailsAppService; +import com.openhis.web.inventorymanage.mapper.InventoryDetailsMapper; + +/** + * 采购入库明细查询 impl + * + * @author + * @date 2025-03-10 + */ +@Service +public class InventoryDetailsAppServiceImpl implements IInventoryDetailsAppService { + + @Autowired + private InventoryDetailsMapper inventoryDetailsMapper; + + /** + * 采购入库明细查询 + * + * @param purchaseInSearchParam 查询条件 + * @param searchKey 模糊查询关键字 + * @param pageNo 当前页码 + * @param pageSize 查询条数 + * @param request 请求数据 + * @return 采购入库明细分页列表 + */ + @Override + public IPage purchaseInGetPage(PurchaseInSearchParam purchaseInSearchParam, String searchKey, + Integer pageNo, Integer pageSize, HttpServletRequest request) { + + // 构建查询条件 + // QueryWrapper queryWrapper = + // HisQueryUtils.buildQueryWrapper(inventorySearchParam, searchKey, searchFields, request); + // 查询入库单据分页列表 + // Page inventoryReceiptPage = purchaseInventoryMapper.selectInventoryReceiptPage( + // new Page<>(pageNo, pageSize), queryWrapper, SupplyType.PURCHASE_INVENTORY.getValue()); + // return R.ok(inventoryReceiptPage); + + QueryWrapper queryWrapper = HisQueryUtils.buildQueryWrapper(purchaseInSearchParam, + searchKey, new HashSet<>(Arrays.asList("bus_no","item_name","item_no")), request); + Page purchaseInInfo = + inventoryDetailsMapper.selectPurchaseInDetailsPage(new Page<>(pageNo, pageSize), queryWrapper); + + return purchaseInInfo; + } + + /** + * 领用出库明细查询 + * + * @param requisitionOutSearchParam 查询条件 + * @param searchKey 模糊查询关键字 + * @param pageNo 当前页码 + * @param pageSize 查询条数 + * @param request 请求数据 + * @return 领用出库明细分页列表 + */ + @Override + public IPage requisitionOutGetPage(RequisitionOutSearchParam requisitionOutSearchParam, String searchKey, + Integer pageNo, Integer pageSize, HttpServletRequest request) { + + QueryWrapper queryWrapper = HisQueryUtils.buildQueryWrapper(requisitionOutSearchParam, + searchKey, new HashSet<>(Arrays.asList("bus_no","item_name","item_no")), request); + + Page requisitionOutInfo = + inventoryDetailsMapper.selectRequisitionOutDetailsPage(new Page<>(pageNo, pageSize), queryWrapper); + + return requisitionOutInfo; + } + + /** + * 商品调拨明细查询 + * + * @param requisitionOutSearchParam 查询条件 + * @param searchKey 模糊查询关键字 + * @param pageNo 当前页码 + * @param pageSize 查询条数 + * @param request 请求数据 + * @return 商品调拨明细分页列表 + */ + @Override + public IPage inventoryTransferGetPage(RequisitionOutSearchParam requisitionOutSearchParam, String searchKey, + Integer pageNo, Integer pageSize, HttpServletRequest request) { + + QueryWrapper queryWrapper = HisQueryUtils.buildQueryWrapper(requisitionOutSearchParam, + searchKey, new HashSet<>(Arrays.asList("bus_no","item_name","item_no")), request); + + Page inventoryTransferInfo = + inventoryDetailsMapper.selectInventoryTransferDetailsPage(new Page<>(pageNo, pageSize), queryWrapper); + + return inventoryTransferInfo; + } + + /** + * 商品调拨明细查询 + * + * @param requisitionOutSearchParam 查询条件 + * @param searchKey 模糊查询关键字 + * @param pageNo 当前页码 + * @param pageSize 查询条数 + * @param request 请求数据 + * @return 商品调拨明细分页列表 + */ + @Override + public IPage inventoryStockTakeGetPage(RequisitionOutSearchParam requisitionOutSearchParam, String searchKey, + Integer pageNo, Integer pageSize, HttpServletRequest request) { + + QueryWrapper queryWrapper = HisQueryUtils.buildQueryWrapper(requisitionOutSearchParam, + searchKey, new HashSet<>(Arrays.asList("bus_no","item_name","item_no")), request); + + Page inventoryStockTakeInfo = + inventoryDetailsMapper.selectInventoryStockTakeDetailsPage(new Page<>(pageNo, pageSize), queryWrapper); + + return inventoryStockTakeInfo; + } + +} diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/inventorymanage/controller/InventoryDetailsController.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/inventorymanage/controller/InventoryDetailsController.java new file mode 100644 index 00000000..8a494e89 --- /dev/null +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/inventorymanage/controller/InventoryDetailsController.java @@ -0,0 +1,111 @@ +/* + * Copyright ©2023 CJB-CNIT Team. All rights reserved + */ +package com.openhis.web.inventorymanage.controller; + +import javax.servlet.http.HttpServletRequest; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.core.common.core.domain.R; +import com.openhis.web.inventorymanage.appservice.IInventoryDetailsAppService; +import com.openhis.web.inventorymanage.dto.PurchaseInSearchParam; +import com.openhis.web.inventorymanage.dto.RequisitionOutSearchParam; + +import lombok.extern.slf4j.Slf4j; + +/** + * 库存相关明细查询 controller + * + * @author + * @date 2025-03-10 + */ +@RestController +@RequestMapping("/inventory-manage-details") +@Slf4j +public class InventoryDetailsController { + + @Autowired + private IInventoryDetailsAppService inventoryDetailsAppService; + + /** + * 采购入库明细查询 + * + * @param purchaseInSearchParam 查询条件 + * @param pageNo 当前页码 + * @param pageSize 查询条数 + * @param searchKey 模糊查询关键字 + * @param request 请求数据 + * @return 采购入库分页列表 + */ + @GetMapping(value = "/purchase-in") + public R purchaseInQueryGetPage(PurchaseInSearchParam purchaseInSearchParam, + @RequestParam(name = "searchKey", defaultValue = "") String searchKey, + @RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest request) { + return R.ok( + inventoryDetailsAppService.purchaseInGetPage(purchaseInSearchParam, searchKey, pageNo, pageSize, request)); + } + + /** + * 领用出库明细查询 + * + * @param requisitionOutSearchParam 查询条件 + * @param pageNo 当前页码 + * @param pageSize 查询条数 + * @param searchKey 模糊查询关键字 + * @param request 请求数据 + * @return 采购入库分页列表 + */ + @GetMapping(value = "/requisition-out") + public R RequisitionOutQueryGetPage(RequisitionOutSearchParam requisitionOutSearchParam, + @RequestParam(name = "searchKey", defaultValue = "") String searchKey, + @RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest request) { + return R.ok(inventoryDetailsAppService.requisitionOutGetPage(requisitionOutSearchParam, searchKey, pageNo, + pageSize, request)); + } + + /** + * 商品调拨明细查询 + * + * @param requisitionOutSearchParam 查询条件 + * @param pageNo 当前页码 + * @param pageSize 查询条数 + * @param searchKey 模糊查询关键字 + * @param request 请求数据 + * @return 商品调拨分页列表 + */ + @GetMapping(value = "/inventory-transfer") + public R InventoryTransferQueryGetPage(RequisitionOutSearchParam requisitionOutSearchParam, + @RequestParam(name = "searchKey", defaultValue = "") String searchKey, + @RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest request) { + return R.ok(inventoryDetailsAppService.inventoryTransferGetPage(requisitionOutSearchParam, searchKey, pageNo, + pageSize, request)); + } + + /** + * 商品盘点明细查询 + * + * @param requisitionOutSearchParam 查询条件 + * @param pageNo 当前页码 + * @param pageSize 查询条数 + * @param searchKey 模糊查询关键字 + * @param request 请求数据 + * @return 商品盘点分页列表 + */ + @GetMapping(value = "/inventory-stock-take") + public R InventoryStockTakeQueryGetPage(RequisitionOutSearchParam requisitionOutSearchParam, + @RequestParam(name = "searchKey", defaultValue = "") String searchKey, + @RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest request) { + return R.ok(inventoryDetailsAppService.inventoryStockTakeGetPage(requisitionOutSearchParam, searchKey, pageNo, + pageSize, request)); + } + +} diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/inventorymanage/dto/InventoryStockTakeDetailDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/inventorymanage/dto/InventoryStockTakeDetailDto.java new file mode 100644 index 00000000..f50e3dbc --- /dev/null +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/inventorymanage/dto/InventoryStockTakeDetailDto.java @@ -0,0 +1,93 @@ +/* + * Copyright ©2023 CJB-CNIT Team. All rights reserved + */ +package com.openhis.web.inventorymanage.dto; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; + +import com.sun.jna.platform.unix.solaris.LibKstat; +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * 商品盘点 + * + * @author + * @date 2025-03-15 + */ +@Data +@Accessors(chain = true) +public class InventoryStockTakeDetailDto implements Serializable { + + private static final long serialVersionUID = 1L; + + /** ID */ + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** 单据号 */ + private String busNo; + + /** 状态 */ + private String statusEnum; + + /** 项目类型 */ + private String itemTable; + + /** 物品编码 */ + private Long itemNo; + + /** 项目名称 */ + private String itemName; + + /** 项目规格 */ + private String itemVolume; + + /** 产品批号 */ + private String lotNumber; + + /** 厂家产地 */ + private String manufacturerId; + + /** 物品计量单位 */ + private String unitCode; + + /** 盘前数量 */ + private BigDecimal itemQuantity; + + /** 盘后数量 */ + private BigDecimal itemQuantity1; + + /** 盈亏数量 */ + + /** 盈亏原因 */ + + + + /** 目的仓库类型 */ + private Integer purposeTypeEnum; + + /** 目的仓库 */ + private String purposeName; + + /** 目的仓位 */ + private String purposeStoreName; + + /** 审批时间 */ + private Date approvalTime; + + /** 申请人 */ + private String applicantName; + + /** 审批人 */ + private String approveName; + + /** 租户ID */ + private Integer tenantId; + +} diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/inventorymanage/dto/InventoryTransferDetailDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/inventorymanage/dto/InventoryTransferDetailDto.java new file mode 100644 index 00000000..a591b685 --- /dev/null +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/inventorymanage/dto/InventoryTransferDetailDto.java @@ -0,0 +1,102 @@ +/* + * Copyright ©2023 CJB-CNIT Team. All rights reserved + */ +package com.openhis.web.inventorymanage.dto; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; + +import com.sun.jna.platform.unix.solaris.LibKstat; +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * 商品调拨 + * + * @author + * @date 2025-03-15 + */ +@Data +@Accessors(chain = true) +public class InventoryTransferDetailDto implements Serializable { + + private static final long serialVersionUID = 1L; + + /** ID */ + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** 单据号 */ + private String busNo; + + /** 状态 */ + private String statusEnum; + + /** 项目类型 */ + private String itemTable; + + /** 物品编码 */ + private Long itemNo; + + /** 项目名称 */ + private String itemName; + + /** 项目规格 */ + private String itemVolume; + + /** 产品批号 */ + private String lotNumber; + + /** 厂家产地 */ + private String manufacturerId; + + /** 调拨数量 */ + private BigDecimal itemQuantity; + + /** 物品计量单位 */ + private String unitCode; + + /** 采购单价 */ + private BigDecimal price; + + /** 合计金额 总价 */ + private BigDecimal totalPrice; + + /** 源仓库类型 */ + private Integer sourceTypeEnum; + + /** 源仓库 */ + private String sourceName; + + /** 源仓位 */ + private String sourceStoreName; + + /** 目的仓库类型 */ + private Integer purposeTypeEnum; + + /** 目的仓库 */ + private String purposeName; + + /** 目的仓位 */ + private String purposeStoreName; + + /** 审批时间 */ + private Date approvalTime; + + /** 有效期至 */ + private Date occurrenceTime; + + /** 申请人 */ + private String applicantName; + + /** 审批人 */ + private String approveName; + + /** 租户ID */ + private Integer tenantId; + +} diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/inventorymanage/dto/PurchaseInDetailDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/inventorymanage/dto/PurchaseInDetailDto.java new file mode 100644 index 00000000..8f047678 --- /dev/null +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/inventorymanage/dto/PurchaseInDetailDto.java @@ -0,0 +1,89 @@ +/* + * Copyright ©2023 CJB-CNIT Team. All rights reserved + */ +package com.openhis.web.inventorymanage.dto; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; + +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * 采购入库 + * + * @author + * @date 2025-03-10 + */ +@Data +@Accessors(chain = true) +public class PurchaseInDetailDto implements Serializable { + + private static final long serialVersionUID = 1L; + + /** ID */ + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** 单据号 */ + private String busNo; + + /** 状态 */ + private String statusEnum; + + /** 项目类型 */ + private String itemTable; + + /** 物品编码 */ + private Long itemNo; + + /** 项目名称 */ + private String itemName; + + /** 项目规格 */ + private String itemVolume; + + /** 产品批号 */ + private String lotNumber; + + /** 供应商 */ + private String supName; + + /** 数量 */ + private BigDecimal itemQuantity; + + /** 单价 */ + private BigDecimal price; + + /** 总价 */ + private BigDecimal totalPrice; + + /** 物品计量单位 */ + private String unitCode; + + /** 目的仓库 */ + private String locName; + + /** 目的仓位 */ + private String locstoreName; + + /** 审批时间 */ + private Date approvalTime; + + /** 期望时间 */ + private Date occurrenceTime; + + /** 申请人 */ + private String applicantName; + + /** 审批人 */ + private String approverName; + + /** 租户ID */ + private Integer tenantId; + +} diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/inventorymanage/dto/PurchaseInSearchParam.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/inventorymanage/dto/PurchaseInSearchParam.java new file mode 100644 index 00000000..3590ef08 --- /dev/null +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/inventorymanage/dto/PurchaseInSearchParam.java @@ -0,0 +1,35 @@ +/* + * Copyright ©2023 CJB-CNIT Team. All rights reserved + */ +package com.openhis.web.inventorymanage.dto; + +import java.io.Serializable; + +import org.hibernate.validator.constraints.Length; + +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * 采购入库分页查询条件 + * + * @author + * @date 2025-03-10 + */ +@Data +@Accessors(chain = true) +public class PurchaseInSearchParam implements Serializable { + + /** 单据号 */ + @Length(max = 255) + private String busNo; + + /** 项目编码 */ + @Length(max = 255) + private String id; + + /** 项目类型 */ + // @Length(max = 255) + // private String busNo; + +} diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/inventorymanage/dto/RequisitionOutDetailDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/inventorymanage/dto/RequisitionOutDetailDto.java new file mode 100644 index 00000000..96722923 --- /dev/null +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/inventorymanage/dto/RequisitionOutDetailDto.java @@ -0,0 +1,89 @@ +/* + * Copyright ©2023 CJB-CNIT Team. All rights reserved + */ +package com.openhis.web.inventorymanage.dto; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; + +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * 领用出库 + * + * @author + * @date 2025-03-15 + */ +@Data +@Accessors(chain = true) +public class RequisitionOutDetailDto implements Serializable { + + private static final long serialVersionUID = 1L; + + /** ID */ + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** 单据号 */ + private String busNo; + + /** 状态 */ + private String statusEnum; + + /** 项目类型 */ + private String itemTable; + + /** 物品编码 */ + private Long itemNo; + + /** 项目名称 */ + private String itemName; + + /** 项目规格 */ + private String itemVolume; + + /** 项目规格 */ + private String itemId; + + /** 数量 */ + private BigDecimal itemQuantity; + + /** 物品计量单位 */ + private String unitCode; + + /** 产品批号 */ + private String lotNumber; + + /** 采购批次流水号 */ + private String xxxNo; + + /** 目的仓库 */ + private String locName; + + /** 目的仓位 */ + private String locstoreName; + + /** 制单时间 */ + private Date applyTime; + + /** 审批时间 */ + private Date approvalTime; + + /** 领用部门 */ + private String xxxxxOrg; + + /** 申请人 */ + private String applicantName; + + /** 审批人 */ + private String approverName; + + /** 租户ID */ + private Integer tenantId; + +} diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/inventorymanage/dto/RequisitionOutSearchParam.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/inventorymanage/dto/RequisitionOutSearchParam.java new file mode 100644 index 00000000..62d42d6d --- /dev/null +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/inventorymanage/dto/RequisitionOutSearchParam.java @@ -0,0 +1,36 @@ +/* + * Copyright ©2023 CJB-CNIT Team. All rights reserved + */ +package com.openhis.web.inventorymanage.dto; + +import java.io.Serializable; +import java.util.Date; + +import org.hibernate.validator.constraints.Length; + +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * 领用出库分页查询条件 + * + * @author + * @date 2025-03-15 + */ +@Data +@Accessors(chain = true) +public class RequisitionOutSearchParam implements Serializable { + + /** 单据号 */ + @Length(max = 255) + private String busNo; + + /** 项目编码 */ + @Length(max = 255) + private String id; + + /** 项目类型 */ +// @Length(max = 255) +// private String busNo; + +} diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/inventorymanage/mapper/InventoryDetailsMapper.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/inventorymanage/mapper/InventoryDetailsMapper.java new file mode 100644 index 00000000..9994c471 --- /dev/null +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/inventorymanage/mapper/InventoryDetailsMapper.java @@ -0,0 +1,62 @@ +/* + * Copyright ©2023 CJB-CNIT Team. All rights reserved + */ +package com.openhis.web.inventorymanage.mapper; + +import com.openhis.web.inventorymanage.dto.*; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + +/** + * 采购入库查询用 mapper + * + * @author + * @date 2025-03-10 + */ +@Repository +public interface InventoryDetailsMapper { + + /** + * 查询采购入库分页列表 + * + * @param page 分页 + * @param queryWrapper 查询条件 + * @return 采购入库分页列表 + */ + Page selectPurchaseInDetailsPage(@Param("page") Page page, + @Param(Constants.WRAPPER) QueryWrapper queryWrapper); + + /** + * 查询领用出库分页列表 + * + * @param page 分页 + * @param queryWrapper 查询条件 + * @return 领用出库分页列表 + */ + Page selectRequisitionOutDetailsPage(@Param("page") Page page, + @Param(Constants.WRAPPER) QueryWrapper queryWrapper); + + /** + * 查询商品调拨分页列表 + * + * @param page 分页 + * @param queryWrapper 查询条件 + * @return 商品调拨分页列表 + */ + Page selectInventoryTransferDetailsPage(@Param("page") Page page, + @Param(Constants.WRAPPER) QueryWrapper queryWrapper); + + /** + * 查询商品盘点分页列表 + * + * @param page 分页 + * @param queryWrapper 查询条件 + * @return 商品盘点分页列表 + */ + Page selectInventoryStockTakeDetailsPage(@Param("page") Page page, + @Param(Constants.WRAPPER) QueryWrapper queryWrapper); +} diff --git a/openhis-server/openhis-application/src/main/resources/mapper/Inventorymanage/InventoryDetailsMapper.xml b/openhis-server/openhis-application/src/main/resources/mapper/Inventorymanage/InventoryDetailsMapper.xml new file mode 100644 index 00000000..7f5faa50 --- /dev/null +++ b/openhis-server/openhis-application/src/main/resources/mapper/Inventorymanage/InventoryDetailsMapper.xml @@ -0,0 +1,212 @@ + + + + + + + + + + + + \ No newline at end of file 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 f5b8f393..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 @@ -4,5 +4,79 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> + + + + + + delete + from sys_user_role + where user_id = #{userId} + + + + delete + from adm_practitioner_role + where practitioner_id = #{practitionerId} + \ No newline at end of file diff --git a/openhis-server/openhis-application/src/main/resources/mapper/datadictionary/DeviceManageMapper.xml b/openhis-server/openhis-application/src/main/resources/mapper/datadictionary/DeviceManageMapper.xml new file mode 100644 index 00000000..f74ad716 --- /dev/null +++ b/openhis-server/openhis-application/src/main/resources/mapper/datadictionary/DeviceManageMapper.xml @@ -0,0 +1,84 @@ + + + + + \ No newline at end of file diff --git a/openhis-server/openhis-application/src/main/resources/mapper/datadictionary/MedicationManageSearchMapper.xml b/openhis-server/openhis-application/src/main/resources/mapper/datadictionary/MedicationManageSearchMapper.xml index 0546ef98..760e0fa3 100644 --- a/openhis-server/openhis-application/src/main/resources/mapper/datadictionary/MedicationManageSearchMapper.xml +++ b/openhis-server/openhis-application/src/main/resources/mapper/datadictionary/MedicationManageSearchMapper.xml @@ -7,6 +7,7 @@ T2.medication_def_id, T2.status_enum, T2.org_id, + T2.location_id, T2.dose_form_code, T2.total_volume, T2.ingredient_item, @@ -52,7 +53,7 @@ T1.children_flag, T1.characteristic, T1.national_drug_code, - T1.part_attribute, + T1.part_attribute_enum, T1.antibiotic_code, T1.restricted_enum, T1.self_flag, @@ -63,13 +64,16 @@ T4.base_unit_code, T4.base_quantity, T4.min_unit_code, - T4.min_quantity + T4.min_quantity, + T5.price FROM med_medication_definition T1 LEFT JOIN med_medication T2 ON T1.id = T2.medication_def_id LEFT JOIN adm_supplier T3 ON T1.manufacturer_id = T3.id LEFT JOIN wor_inventory_item T4 ON T1.id = T4.item_id + LEFT JOIN adm_charge_item_definition T5 ON T2.medication_def_id = T5.instance_id T1.delete_flag = '0' + AND T5.instance_table = 'med_medication_definition' AND ( T1.name LIKE CONCAT(CONCAT('%', #{searchKey}),'%') OR T1.name_en LIKE CONCAT(CONCAT('%', #{searchKey}),'%') OR diff --git a/openhis-server/openhis-domain/src/main/java/com/openhis/administration/domain/BizUser.java b/openhis-server/openhis-domain/src/main/java/com/openhis/administration/domain/BizUser.java index 3c830920..9980d0fa 100644 --- a/openhis-server/openhis-domain/src/main/java/com/openhis/administration/domain/BizUser.java +++ b/openhis-server/openhis-domain/src/main/java/com/openhis/administration/domain/BizUser.java @@ -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 */ diff --git a/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/impl/ChargeItemDefDetailServiceImpl.java b/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/impl/ChargeItemDefDetailServiceImpl.java index 67aa037a..6da90303 100644 --- a/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/impl/ChargeItemDefDetailServiceImpl.java +++ b/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/impl/ChargeItemDefDetailServiceImpl.java @@ -31,6 +31,7 @@ public class ChargeItemDefDetailServiceImpl extends ServiceImpl 0; } } else { diff --git a/openhis-server/openhis-domain/src/main/java/com/openhis/medication/domain/Medication.java b/openhis-server/openhis-domain/src/main/java/com/openhis/medication/domain/Medication.java index df26fa0d..7d2bd5af 100644 --- a/openhis-server/openhis-domain/src/main/java/com/openhis/medication/domain/Medication.java +++ b/openhis-server/openhis-domain/src/main/java/com/openhis/medication/domain/Medication.java @@ -92,4 +92,10 @@ public class Medication extends HisBaseEntity { /** DDD单位 */ private String dddUnitCode; + /** 单次最小用药频次 */ + private String minRateCode; + + /** 单次最大用药频次 */ + private String maxRateCode; + } \ No newline at end of file diff --git a/openhis-server/openhis-domain/src/main/java/com/openhis/medication/domain/MedicationDefinition.java b/openhis-server/openhis-domain/src/main/java/com/openhis/medication/domain/MedicationDefinition.java index 1ce3be40..ddc85a7e 100644 --- a/openhis-server/openhis-domain/src/main/java/com/openhis/medication/domain/MedicationDefinition.java +++ b/openhis-server/openhis-domain/src/main/java/com/openhis/medication/domain/MedicationDefinition.java @@ -139,7 +139,7 @@ public class MedicationDefinition extends HisBaseEntity { private String nationalDrugCode; /** 拆分属性 */ - private String partAttribute; + private Integer partAttributeEnum; /** 抗生素分类 */ private String antibioticCode; diff --git a/openhis-server/openhis-domain/src/main/java/com/openhis/medication/domain/MedicationDetail.java b/openhis-server/openhis-domain/src/main/java/com/openhis/medication/domain/MedicationDetail.java index e9071fd9..088543d2 100644 --- a/openhis-server/openhis-domain/src/main/java/com/openhis/medication/domain/MedicationDetail.java +++ b/openhis-server/openhis-domain/src/main/java/com/openhis/medication/domain/MedicationDetail.java @@ -164,4 +164,39 @@ public class MedicationDetail extends HisBaseEntity { /** 产品特性 */ private Integer characteristic; + /** 所在位置 */ + private Long locationId; + + /** 贯标国家编码 */ + private String nationalDrugCode; + + /** 拆分属性 */ + private Integer partAttributeEnum; + + /** DDD值 */ + private String dddCode; + + /** DDD单位 */ + private String dddUnitCode; + + /** 单次最小用药频次 */ + private String minRateCode; + + /** 单次最大用药频次 */ + private String maxRateCode; + /** 抗生素分类 */ + private String antibioticCode; + /** 权限限制 */ + private Integer restrictedEnum; + /** 是否自制 */ + private Integer selfFlag; + /** 是否抗生素 */ + private Integer antibioticFlag; + /** 基药标识 */ + private Integer basicFlag; + /** 生产厂商文本 */ + private String manufacturerText; + /** 用量限定 */ + private BigDecimal usageLimit; + } diff --git a/openhis-ui-vue3/src/views/catalog/medicine/components/medicine.js b/openhis-ui-vue3/src/views/catalog/medicine/components/medicine.js index 0ba4330f..c5e1a74c 100644 --- a/openhis-ui-vue3/src/views/catalog/medicine/components/medicine.js +++ b/openhis-ui-vue3/src/views/catalog/medicine/components/medicine.js @@ -13,8 +13,9 @@ export function getMedicationList(query) { // 查询药品目录详细 export function getMedicationOne(id) { return request({ - url: '/data-dictionary/medication/information-one/' + parseStrEmpty(id), - method: 'get' + url: '/data-dictionary/medication/information-one', + method: 'get', + params: { id } // 确保参数正确传递 }) } @@ -53,7 +54,7 @@ export function getMedicationCategory() { } -// 停用病种目录 +// 停用药品目录 export function stopMedication(ids) { console.log(ids) return request({ @@ -63,7 +64,7 @@ export function stopMedication(ids) { }) } -// 启用病种目录 +// 启用药品目录 export function startMedication(ids) { console.log(ids) return request({ @@ -71,4 +72,22 @@ export function startMedication(ids) { method: 'put', data: ids }) -} \ No newline at end of file +} + +// 查询部门树形数据 +export function deptTreeSelect(queryParams) { + return request({ + url: '/base-data-manage/organization/organization', + method: 'get', + param: queryParams + }) +} + +// 查询地点树形数据 +export function locationTreeSelect(queryParams) { + return request({ + url: '/base-data-manage/cabinet-location/cabinet-location', + method: 'get', + param: queryParams + }) +} diff --git a/openhis-ui-vue3/src/views/catalog/medicine/components/medicineDialog.vue b/openhis-ui-vue3/src/views/catalog/medicine/components/medicineDialog.vue index 339140cb..a650482f 100644 --- a/openhis-ui-vue3/src/views/catalog/medicine/components/medicineDialog.vue +++ b/openhis-ui-vue3/src/views/catalog/medicine/components/medicineDialog.vue @@ -77,12 +77,39 @@ - + + + + + + - + - + @@ -153,15 +180,6 @@ - - - - - - + @@ -189,15 +207,15 @@ - - + - + @@ -265,27 +283,22 @@ - - + + - - + + - - + + - - - - - @@ -301,6 +314,11 @@ + + + + + @@ -412,16 +430,6 @@ - - - - - - - + @@ -452,13 +460,25 @@ - - + + - + + + @@ -469,13 +489,13 @@ - - + + - - + + @@ -485,7 +505,7 @@ - + - - + + + + + + + - + + - - + + - - - - + @@ -566,9 +580,9 @@ - + @@ -576,9 +590,9 @@ - - + @@ -587,9 +601,9 @@ - + @@ -597,9 +611,9 @@ - - + @@ -627,18 +641,6 @@ - - - - - - - (单位g) - @@ -653,22 +655,16 @@