Compare commits
24 Commits
test
...
39aa710fd3
| Author | SHA1 | Date | |
|---|---|---|---|
| 39aa710fd3 | |||
| 49f95b40ea | |||
| eb2d7302b7 | |||
| eb26f9db34 | |||
| bd6f3ca587 | |||
| a58e02f2cb | |||
| 8c8ef13021 | |||
| d9a0a98f52 | |||
| 8c84b6eb46 | |||
| 3d797cc0e0 | |||
| df7281a2d4 | |||
| f83d7ae520 | |||
| d9c8525b94 | |||
| bcc5cbb2fb | |||
| 67a8351d70 | |||
| 391506e423 | |||
| b1117b4157 | |||
| b0eb9861b9 | |||
| b863c14f2b | |||
| 18f6a845e6 | |||
| e1385cb3e6 | |||
| c8ca56c3f5 | |||
| b149f7d687 | |||
| 19702c25e5 |
@@ -16,10 +16,10 @@
|
|||||||
|
|
||||||
## 📚【支持文档】
|
## 📚【支持文档】
|
||||||
|
|
||||||
技术支持资源:https://open.tntlinking.com/resource/technicalSupport?site=gitee
|
技术支持资源:https://open.tntlinking.com/resource/openProductDoc?site=gitee
|
||||||
(含演示环境、操作手册、部署手册、开发手册、常见问题等)
|
(含演示环境、操作手册、部署手册、开发手册、常见问题等)
|
||||||
|
|
||||||
产品介绍:https://open.tntlinking.com/resource/industryKnowledge?site=gitee
|
产品介绍:https://open.tntlinking.com/resource/productPresentation?site=gitee
|
||||||
|
|
||||||
操作教程:https://open.tntlinking.com/resource/operationTutorial?site=gitee
|
操作教程:https://open.tntlinking.com/resource/operationTutorial?site=gitee
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package com.core.web.util;
|
|||||||
import com.core.common.core.domain.model.LoginUser;
|
import com.core.common.core.domain.model.LoginUser;
|
||||||
import com.core.common.enums.TenantOptionDict;
|
import com.core.common.enums.TenantOptionDict;
|
||||||
import com.core.common.utils.SecurityUtils;
|
import com.core.common.utils.SecurityUtils;
|
||||||
|
import com.core.common.utils.StringUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 租户配置工具类
|
* 租户配置工具类
|
||||||
@@ -30,7 +31,12 @@ public class TenantOptionUtil {
|
|||||||
if (loginUser.getOptionMap() == null || loginUser.getOptionMap().isEmpty()) {
|
if (loginUser.getOptionMap() == null || loginUser.getOptionMap().isEmpty()) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return loginUser.getOptionMap().get(optionDict.getCode());
|
// return loginUser.getOptionMap().get(optionDict.getCode());
|
||||||
|
|
||||||
|
// TODO:2025/10/17 李永兴提出的sys_option切换TenantOption临时防止报错方案,最晚2025年11月底删除
|
||||||
|
String newValue = loginUser.getOptionMap().get(optionDict.getCode());
|
||||||
|
String oldValue = loginUser.getOptionJson().getString(optionDict.getCode());
|
||||||
|
return StringUtils.isEmpty(newValue) ? oldValue : newValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -142,6 +142,11 @@
|
|||||||
<artifactId>pinyin4j</artifactId>
|
<artifactId>pinyin4j</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.google.code.gson</groupId>
|
||||||
|
<artifactId>gson</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
package com.core.common.enums;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Desc: 调价类型枚举
|
||||||
|
* @Author raymond
|
||||||
|
* @Date 09:14 2025/10/16
|
||||||
|
* @return
|
||||||
|
**/
|
||||||
|
public enum AdjustPriceEnum {
|
||||||
|
|
||||||
|
MEDICINE(0, "药品"),
|
||||||
|
CONSUMABLES(1, "耗材"),
|
||||||
|
DIAGNOSIS(2, "诊疗"),
|
||||||
|
REGISTER(3, "挂号");
|
||||||
|
|
||||||
|
|
||||||
|
private final Integer code;
|
||||||
|
private final String info;
|
||||||
|
|
||||||
|
AdjustPriceEnum(Integer code, String info) {
|
||||||
|
this.code = code;
|
||||||
|
this.info = info;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getCode() {
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getInfo() {
|
||||||
|
return info;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -6,166 +6,93 @@ package com.core.common.enums;
|
|||||||
* @author system
|
* @author system
|
||||||
*/
|
*/
|
||||||
public enum TenantOptionDict {
|
public enum TenantOptionDict {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 医院名称
|
* 医院名称
|
||||||
*/
|
*/
|
||||||
HOSPITAL_NAME("hospitalName", "医院名称", 0),
|
YB_HOSPITAL_NAME("hospitalName", "医保-医院名称", 0),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 医疗机构等级
|
* 医保-医疗机构等级(3101接口)
|
||||||
*/
|
*/
|
||||||
MEDINS_LV("medinsLv", "医疗机构等级", 1),
|
YB_MEDINS_LV("medinsLv", "医保_医疗机构等级", 1),
|
||||||
/**
|
/**
|
||||||
* 定点医药机构编号
|
* 定点医药机构编号
|
||||||
*/
|
*/
|
||||||
FIXMEDINS_CODE("fixmedinsCode", "定点医药机构编号", 2),
|
YB_FIXMEDINS_CODE("fixmedinsCode", "医保_定点医药机构编号", 2),
|
||||||
/**
|
/**
|
||||||
* 电子发票appid
|
* 电子发票appid
|
||||||
*/
|
*/
|
||||||
APP_ID("app_id", "电子发票appid", 3),
|
EINVOICE_APP_ID("app_id", "电子发票-appid", 3),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 电子发票key
|
* 电子发票key
|
||||||
*/
|
*/
|
||||||
KEY("key", "电子发票key", 4),
|
EINVOICE_KEY("key", "电子发票-key", 4),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 电子发票url
|
* 电子发票url
|
||||||
*/
|
*/
|
||||||
URL("url", "电子发票url", 5),
|
EINVOICE_URL("url", "电子发票-url", 5),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 医保开关
|
* 医保开关
|
||||||
*/
|
*/
|
||||||
YB_SWITCH("yb_switch", "医保开关", 6),
|
YB_SWITCH("yb_switch", "医保开关", 6),
|
||||||
/**
|
|
||||||
* 客户端私钥
|
|
||||||
*/
|
|
||||||
CLI_PRV_KEY("cliPrvKey", "客户端私钥", 7),
|
|
||||||
/**
|
|
||||||
* 客户端公钥
|
|
||||||
*/
|
|
||||||
CLI_PUB_KEY("cliPubKey", "客户端公钥", 8),
|
|
||||||
/**
|
|
||||||
* 服务端公钥
|
|
||||||
*/
|
|
||||||
SERVER_PUB_KEY("serverPubKey", "服务端公钥", 9),
|
|
||||||
/**
|
|
||||||
* 定点医药机构名称
|
|
||||||
*/
|
|
||||||
FIXMEDINS_NAME("fixmedinsName", "定点医药机构名称", 10),
|
|
||||||
/**
|
|
||||||
* 行政区划
|
|
||||||
*/
|
|
||||||
ADMVS("admvs", "行政区划", 11),
|
|
||||||
/**
|
|
||||||
* 授权范围
|
|
||||||
*/
|
|
||||||
SCOPE("scope", "授权范围", 12),
|
|
||||||
/**
|
|
||||||
* 授权类型
|
|
||||||
*/
|
|
||||||
GRANT_TYPE("grantType", "授权类型", 13),
|
|
||||||
/**
|
|
||||||
* 密码
|
|
||||||
*/
|
|
||||||
PASSWORD("password", "密码", 14),
|
|
||||||
/**
|
|
||||||
* 用户名
|
|
||||||
*/
|
|
||||||
USERNAME("username", "用户名", 15),
|
|
||||||
/**
|
|
||||||
* 客户端安全码
|
|
||||||
*/
|
|
||||||
CLIENT_SECRET("clientSecret", "客户端安全码", 16),
|
|
||||||
/**
|
|
||||||
* 客户端ID
|
|
||||||
*/
|
|
||||||
CLIENT_ID("clientId", "客户端ID", 17),
|
|
||||||
/**
|
|
||||||
* 生产环境客户端公钥
|
|
||||||
*/
|
|
||||||
PROD_CLI_PUB_KEY("prod_cliPubKey", "生产环境客户端公钥", 18),
|
|
||||||
/**
|
|
||||||
* 生产环境客户端私钥
|
|
||||||
*/
|
|
||||||
PROD_CLI_PRV_KEY("prod_cliPrvKey", "生产环境客户端私钥", 19),
|
|
||||||
/**
|
|
||||||
* 生产环境客户端ID
|
|
||||||
*/
|
|
||||||
PROD_CLIENT_ID("prod_clientId", "生产环境客户端ID", 20),
|
|
||||||
/**
|
|
||||||
* 文件路径
|
|
||||||
*/
|
|
||||||
FILE_PATH("filePath", "文件路径", 21),
|
|
||||||
/**
|
/**
|
||||||
* 电子地址
|
* 电子地址
|
||||||
*/
|
*/
|
||||||
ELE_ADDRESS("eleAddress", "电子地址", 22),
|
ELE_ADDRESS("eleAddress", "电子处方-请求地址", 22),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 服务地址
|
* 服务地址
|
||||||
*/
|
*/
|
||||||
ADDRESS("address", "服务地址", 23),
|
ADDRESS("address", "服务地址", 23),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 超时时间
|
* 超时时间
|
||||||
*/
|
*/
|
||||||
TIME("time", "超时时间", 24),
|
TIME("time", "超时时间", 24),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否加密
|
* 是否加密
|
||||||
*/
|
*/
|
||||||
IS_ENCRYPT("isEncrypt", "是否加密", 25),
|
YB_IS_ENCRYPT("isEncrypt", "医保-是否加密", 25),
|
||||||
/**
|
/**
|
||||||
* 医保区划
|
* 医保区划
|
||||||
*/
|
*/
|
||||||
INSUPLC_ADMDVS("insuplc_admdvs", "医保区划", 26),
|
YB_INSUPLC_ADMDVS("insuplc_admdvs", "医保-区划", 26),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 电子处方appId
|
* 电子处方appId
|
||||||
*/
|
*/
|
||||||
PRE_APP_ID("pre_app_id", "电子处方appId", 27),
|
ELE_PRE_APP_ID("pre_app_id", "电子处方-appId", 27),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 电子处方appSecret
|
* 电子处方appSecret
|
||||||
*/
|
*/
|
||||||
PRE_APP_SECRET("pre_app_secret", "电子处方appSecret", 28),
|
ELE_PRE_APP_SECRET("pre_app_secret", "电子处方-appSecret", 28),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 电子处方私钥
|
* 电子处方私钥
|
||||||
*/
|
*/
|
||||||
APP_PRVKEY("APP_PRVKEY", "电子处方私钥", 29),
|
ELE_APP_PRVKEY("APP_PRVKEY", "电子处方-私钥", 29),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 电子处方公钥
|
* 电子处方公钥
|
||||||
*/
|
*/
|
||||||
PLAF_PUBKEY("PLAF_PUBKEY", "电子处方公钥", 30),
|
ELE_PLAF_PUBKEY("PLAF_PUBKEY", "电子处方-公钥", 30),
|
||||||
/**
|
|
||||||
* 医保客户端ID
|
|
||||||
*/
|
|
||||||
YB_CLIENT_ID("ybClientId", "医保客户端ID", 31),
|
|
||||||
/**
|
|
||||||
* 医保客户端安全码
|
|
||||||
*/
|
|
||||||
YB_CLIENT_SECRET("ybClientSecret", "医保客户端安全码", 32),
|
|
||||||
/**
|
|
||||||
* 医保用户名
|
|
||||||
*/
|
|
||||||
YB_USERNAME("ybUsername", "医保用户名", 33),
|
|
||||||
/**
|
|
||||||
* 医保密码
|
|
||||||
*/
|
|
||||||
YB_PASSWORD("ybPassword", "医保密码", 34),
|
|
||||||
/**
|
|
||||||
* 医保授权类型
|
|
||||||
*/
|
|
||||||
YB_GRANT_TYPE("ybGrantType", "医保授权类型", 35),
|
|
||||||
/**
|
|
||||||
* 医保授权范围
|
|
||||||
*/
|
|
||||||
YB_SCOPE("ybScope", "医保授权范围", 36),
|
|
||||||
/**
|
|
||||||
* 医保密钥
|
|
||||||
*/
|
|
||||||
YB_CLI_PRV_KEY("ybCliPrvKey", "医保密钥", 37),
|
|
||||||
/**
|
|
||||||
* 医保服务URL
|
|
||||||
*/
|
|
||||||
YB_URL("ybUrl", "医保服务URL", 38),
|
|
||||||
/**
|
/**
|
||||||
* 医院等级
|
* 医院等级
|
||||||
*/
|
*/
|
||||||
HOSPITAL_LV("hospital_lv", "医院等级", 39),
|
EINVOICE_HOSPITAL_LV("hospital_lv", "电子发票-医院等级", 39),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 无视LIS&PACS报错
|
||||||
|
*/
|
||||||
|
LIS_PACS_ERROR_IGNORE("lisPacsErrorIgnore", "无视LIS&PACS报错", 40),
|
||||||
/**
|
/**
|
||||||
* LIS接口地址
|
* LIS接口地址
|
||||||
*/
|
*/
|
||||||
@@ -193,11 +120,11 @@ public enum TenantOptionDict {
|
|||||||
/**
|
/**
|
||||||
* PACSAppSecret
|
* PACSAppSecret
|
||||||
*/
|
*/
|
||||||
INVOICE_URL("invoiceUrl", "电子发票中转服务的路径", 46),
|
INVOICE_FORWARD_URL("invoiceUrl", "电子发票-中转服务的路径", 46),
|
||||||
/**
|
/**
|
||||||
* PACSAppSecret
|
* PACSAppSecret
|
||||||
*/
|
*/
|
||||||
FORWARD_SWITCH("forwardSwitch", "电子发票中转服务开关", 47),
|
FORWARD_SWITCH("forwardSwitch", "电子发票-中转服务开关", 47),
|
||||||
/**
|
/**
|
||||||
* 食源性开关
|
* 食源性开关
|
||||||
*/
|
*/
|
||||||
@@ -229,7 +156,55 @@ public enum TenantOptionDict {
|
|||||||
/**
|
/**
|
||||||
* BPC请求URL
|
* BPC请求URL
|
||||||
*/
|
*/
|
||||||
BPC_REQUEST_URL("bpcRequestUrl", "BPC请求URL", 55);
|
BPC_REQUEST_URL("bpcRequestUrl", "BPC请求URL", 55),
|
||||||
|
/**
|
||||||
|
* 电子发票开关
|
||||||
|
*/
|
||||||
|
INVOICE_SWITCH("invoiceSwitch", "电子发票开关 (0:关闭 1:开启)", 56),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 医嘱定价来源
|
||||||
|
*/
|
||||||
|
ORDER_PRICING_SOURCE("orderPricingSource", "定价来源 batchSellingPrice/retailPrice", 57),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 三方支付(签到)
|
||||||
|
*/
|
||||||
|
THREE_PART_SIGN_URL("threePartSignUrl", "三方支付GET请求", 58),
|
||||||
|
/**
|
||||||
|
* 三方支付(消费)
|
||||||
|
*/
|
||||||
|
THREE_PART_PAY_URL("threePartPayUrl", "三方支付GET请求", 59),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 三方支付(退费)
|
||||||
|
*/
|
||||||
|
THREE_PART_RETURN_URL("threePartReturnUrl", "三方支付GET请求", 60),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 三方支付(隔天退费)
|
||||||
|
*/
|
||||||
|
THREE_PART_NEXT_DAY_RETURN_URL("threePartNextDayReturnUrl", "三方支付GET请求", 61),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 三方支付路径(支付结果查询)
|
||||||
|
*/
|
||||||
|
THREE_PART_PAY_QUERY_URL("threePartPayQueryUrl", "三方支付GET请求", 62),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 三方支付路径(退费结果查询)
|
||||||
|
*/
|
||||||
|
THREE_PART_RETURN_QUERY_URL("threePartReturnQueryUrl", "三方支付GET请求", 63),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 三方支付路径(隔天退费结果查询)
|
||||||
|
*/
|
||||||
|
THREE_PART_NEXT_DAY_RETURN_QUERY_URL("threePartNextDayReturnQueryUrl", "三方支付GET请求", 64),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 三方支付参数
|
||||||
|
*/
|
||||||
|
THREE_PART_PARAM("threePartParam", "三方支付GET请求", 65);
|
||||||
|
|
||||||
private final String code;
|
private final String code;
|
||||||
private final String name;
|
private final String name;
|
||||||
@@ -241,18 +216,6 @@ public enum TenantOptionDict {
|
|||||||
this.sort = sort;
|
this.sort = sort;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getCode() {
|
|
||||||
return code;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getName() {
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Integer getSort() {
|
|
||||||
return sort;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static TenantOptionDict getByCode(String code) {
|
public static TenantOptionDict getByCode(String code) {
|
||||||
if (code == null) {
|
if (code == null) {
|
||||||
return null;
|
return null;
|
||||||
@@ -264,4 +227,16 @@ public enum TenantOptionDict {
|
|||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getCode() {
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getSort() {
|
||||||
|
return sort;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -55,6 +55,17 @@ public class SecurityUtils {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取用户昵称
|
||||||
|
**/
|
||||||
|
public static String getNickName() {
|
||||||
|
try {
|
||||||
|
return getLoginUser().getUser().getNickName();
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new ServiceException("获取用户昵称异常", HttpStatus.UNAUTHORIZED);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取用户
|
* 获取用户
|
||||||
**/
|
**/
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import org.springframework.context.annotation.Bean;
|
|||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
import org.springframework.data.redis.connection.RedisConnectionFactory;
|
import org.springframework.data.redis.connection.RedisConnectionFactory;
|
||||||
import org.springframework.data.redis.core.RedisTemplate;
|
import org.springframework.data.redis.core.RedisTemplate;
|
||||||
|
import org.springframework.data.redis.core.ValueOperations;
|
||||||
import org.springframework.data.redis.core.script.DefaultRedisScript;
|
import org.springframework.data.redis.core.script.DefaultRedisScript;
|
||||||
import org.springframework.data.redis.serializer.StringRedisSerializer;
|
import org.springframework.data.redis.serializer.StringRedisSerializer;
|
||||||
|
|
||||||
@@ -45,6 +46,11 @@ public class RedisConfig extends CachingConfigurerSupport {
|
|||||||
return redisScript;
|
return redisScript;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public ValueOperations<Object, Object> valueOperations(RedisTemplate<Object, Object> redisTemplate) {
|
||||||
|
return redisTemplate.opsForValue();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 限流脚本
|
* 限流脚本
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -66,4 +66,6 @@ public class SysTenantOption implements Serializable {
|
|||||||
@TableField(fill = FieldFill.UPDATE)
|
@TableField(fill = FieldFill.UPDATE)
|
||||||
private Date updateTime;
|
private Date updateTime;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,6 +16,12 @@
|
|||||||
</description>
|
</description>
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-actuator</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<!-- Spring 配置 -->
|
<!-- Spring 配置 -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
@@ -55,6 +61,11 @@
|
|||||||
<groupId>org.apache.httpcomponents</groupId>
|
<groupId>org.apache.httpcomponents</groupId>
|
||||||
<artifactId>httpclient</artifactId>
|
<artifactId>httpclient</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<!-- rabbitMQ -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-amqp</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,204 @@
|
|||||||
|
package com.openhis.web.adjustprice.appservice;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
|
import com.core.common.core.domain.R;
|
||||||
|
import com.openhis.web.adjustprice.dto.AdjustPriceDataVo;
|
||||||
|
import com.openhis.web.adjustprice.dto.AdjustPriceManagerSearchParam;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Desc: 调价业务接口
|
||||||
|
*
|
||||||
|
* @Author raymond
|
||||||
|
* @Date 08:42 2025/10/16
|
||||||
|
* @return
|
||||||
|
**/
|
||||||
|
public interface IAdjustPriceService {
|
||||||
|
/**
|
||||||
|
* Desc: 保存调价数据
|
||||||
|
*
|
||||||
|
* @param dataVoList 前端数据集合
|
||||||
|
* @Author raymond
|
||||||
|
* @Date 08:57 2025/10/16
|
||||||
|
* @return com.core.common.core.domain.R<?>
|
||||||
|
**/
|
||||||
|
R<?> submitChangePriceData(List<AdjustPriceDataVo> dataVoList);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Desc: 保存并提交审核调价数据
|
||||||
|
*
|
||||||
|
* @param dataVoList
|
||||||
|
* @Author raymond
|
||||||
|
* @Date 16:22 2025/10/23
|
||||||
|
* @return com.core.common.core.domain.R<?>
|
||||||
|
**/
|
||||||
|
R<?> submitExamineChangePriceData(List<AdjustPriceDataVo> dataVoList);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Desc: 根据关键词查询 药品|耗材|诊疗 集合的最后价格
|
||||||
|
*
|
||||||
|
* @param searchKey
|
||||||
|
* @Author raymond
|
||||||
|
* @Date 09:32 2025/10/20
|
||||||
|
* @return java.util.List<?>
|
||||||
|
**/
|
||||||
|
R<?> searchKeyWordDataListByMed(String searchKey);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Desc: 根据关键词查询 药品|耗材|诊疗 集合的最后价格
|
||||||
|
*
|
||||||
|
* @param searchKey
|
||||||
|
* @Author raymond
|
||||||
|
* @Date 09:32 2025/10/20
|
||||||
|
* @return java.util.List<?>
|
||||||
|
**/
|
||||||
|
R<?> searchKeyWordDataListByDevice(String searchKey);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Desc: 根据关键词查询 药品|耗材|诊疗 集合的最后价格
|
||||||
|
*
|
||||||
|
* @param searchKey
|
||||||
|
* @Author raymond
|
||||||
|
* @Date 09:32 2025/10/20
|
||||||
|
* @return java.util.List<?>
|
||||||
|
**/
|
||||||
|
R<?> searchKeyWordDataListByActivity(String searchKey);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Desc: 查询提交的改价数据
|
||||||
|
*
|
||||||
|
* @param adjustPriceManagerSearchParam
|
||||||
|
* @param pageNo
|
||||||
|
* @param pageSize
|
||||||
|
* @param searchKey
|
||||||
|
* @param request
|
||||||
|
* @Author raymond
|
||||||
|
* @Date 23:39 2025/11/1
|
||||||
|
* @return com.core.common.core.domain.R<?>
|
||||||
|
**/
|
||||||
|
R<?> searchChangePriceSubmitDataToPage(AdjustPriceManagerSearchParam adjustPriceManagerSearchParam, Integer pageNo,
|
||||||
|
Integer pageSize, String searchKey, HttpServletRequest request);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Desc: 根据busNo 查询调价单详情 med
|
||||||
|
*
|
||||||
|
* @param busNo
|
||||||
|
* @Author raymond
|
||||||
|
* @Date 13:15 2025/10/21
|
||||||
|
* @return com.core.common.core.domain.R<?>
|
||||||
|
**/
|
||||||
|
R<?> searchChangePriceDataByMed(String busNo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Desc: 根据busNo 查询调价单详情 med
|
||||||
|
*
|
||||||
|
* @param busNo
|
||||||
|
* @Author raymond
|
||||||
|
* @Date 13:15 2025/10/21
|
||||||
|
* @return com.core.common.core.domain.R<?>
|
||||||
|
**/
|
||||||
|
R<?> searchChangePriceDataByDevice(String busNo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Desc: 根据busNo 查询调价单详情 Activity
|
||||||
|
*
|
||||||
|
* @param busNo
|
||||||
|
* @Author raymond
|
||||||
|
* @Date 13:15 2025/10/21
|
||||||
|
* @return com.core.common.core.domain.R<?>
|
||||||
|
**/
|
||||||
|
R<?> searchChangePriceDataByActivity(String busNo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Desc: 根据busNo 查询调价单详情 Health
|
||||||
|
*
|
||||||
|
* @param busNo
|
||||||
|
* @Author raymond
|
||||||
|
* @Date 13:15 2025/10/21
|
||||||
|
* @return com.core.common.core.domain.R<?>
|
||||||
|
**/
|
||||||
|
R<?> searchChangePriceDataByHealth(String busNo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Desc: 修改调价原因 和 价格
|
||||||
|
*
|
||||||
|
* @param busNo
|
||||||
|
* @Author raymond
|
||||||
|
* @Date 15:21 2025/10/21
|
||||||
|
* @return com.core.common.core.domain.R<?>
|
||||||
|
**/
|
||||||
|
R<?> cancelChangePriceData(String busNo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Desc: 查询有挂号信息的科室
|
||||||
|
*
|
||||||
|
* @param
|
||||||
|
* @Author raymond
|
||||||
|
* @Date 16:38 2025/10/22
|
||||||
|
* @return com.core.common.core.domain.R<?>
|
||||||
|
**/
|
||||||
|
R<?> searchAllOrgData();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Desc: 根据科室id 加载挂号数据
|
||||||
|
*
|
||||||
|
* @param orgId
|
||||||
|
* @Author raymond
|
||||||
|
* @Date 16:45 2025/10/22
|
||||||
|
* @return com.core.common.core.domain.R<?>
|
||||||
|
**/
|
||||||
|
R<?> searchHealthData(Long orgId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Desc: 根据业务单据号 进行单据提交操作
|
||||||
|
*
|
||||||
|
* @param busNo
|
||||||
|
* @Author raymond
|
||||||
|
* @Date 09:25 2025/10/23
|
||||||
|
* @return com.core.common.core.domain.R<?>
|
||||||
|
**/
|
||||||
|
R<?> updateExamineByApproval(String busNo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Desc: 根据药品ID 是否在审核中
|
||||||
|
*
|
||||||
|
* @param itemId
|
||||||
|
* @Author raymond
|
||||||
|
* @Date 17:48 2025/11/3
|
||||||
|
* @return com.core.common.core.domain.R<?>
|
||||||
|
**/
|
||||||
|
R<?> checkMedApprovalExist(Long itemId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Desc: 根据耗材ID 是否在审核中
|
||||||
|
*
|
||||||
|
* @param itemId
|
||||||
|
* @Author raymond
|
||||||
|
* @Date 17:48 2025/11/3
|
||||||
|
* @return com.core.common.core.domain.R<?>
|
||||||
|
**/
|
||||||
|
R<?> checkDeviceApprovalExist(Long itemId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Desc: 根据诊疗ID 是否在审核中
|
||||||
|
*
|
||||||
|
* @param itemId
|
||||||
|
* @Author raymond
|
||||||
|
* @Date 17:48 2025/11/3
|
||||||
|
* @return com.core.common.core.domain.R<?>
|
||||||
|
**/
|
||||||
|
R<?> checkActivityApprovalExist(Long itemId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Desc: 根据挂号ID 是否在审核中
|
||||||
|
*
|
||||||
|
* @param itemId
|
||||||
|
* @Author raymond
|
||||||
|
* @Date 17:48 2025/11/3
|
||||||
|
* @return com.core.common.core.domain.R<?>
|
||||||
|
**/
|
||||||
|
R<?> checkHealthApprovalExist(Long itemId);
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
package com.openhis.web.adjustprice.appservice;
|
|
||||||
|
|
||||||
import com.openhis.web.adjustprice.dto.SupplyListDto;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Desc:
|
|
||||||
* @Author raymond
|
|
||||||
* @Date 16:09 2025/10/15
|
|
||||||
* @return
|
|
||||||
**/
|
|
||||||
public interface ISupplyService {
|
|
||||||
/**
|
|
||||||
* Desc:
|
|
||||||
* @param
|
|
||||||
* @Author raymond
|
|
||||||
* @Date 17:10 2025/10/15
|
|
||||||
* @return java.util.List<com.openhis.web.paymentmanage.dto.SupplyListDto>
|
|
||||||
**/
|
|
||||||
List<SupplyListDto> searchAllSupplyList();
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,594 @@
|
|||||||
|
package com.openhis.web.adjustprice.appservice.impl;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.math.RoundingMode;
|
||||||
|
import java.util.*;
|
||||||
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
import com.core.common.core.domain.R;
|
||||||
|
import com.core.common.core.domain.entity.SysDictData;
|
||||||
|
import com.core.common.enums.AdjustPriceEnum;
|
||||||
|
import com.core.common.utils.AssignSeqUtil;
|
||||||
|
import com.core.common.utils.MessageUtils;
|
||||||
|
import com.core.common.utils.SecurityUtils;
|
||||||
|
import com.core.system.service.ISysDictDataService;
|
||||||
|
import com.openhis.administration.domain.ChangePriceRecord;
|
||||||
|
import com.openhis.administration.dto.ChangePriceDataDto;
|
||||||
|
import com.openhis.administration.dto.ChargeItemDefDetailPriceDto;
|
||||||
|
import com.openhis.administration.dto.HealthcareDto;
|
||||||
|
import com.openhis.administration.dto.OrgDataDto;
|
||||||
|
import com.openhis.administration.service.*;
|
||||||
|
import com.openhis.common.constant.CommonConstants;
|
||||||
|
import com.openhis.common.constant.PromptMsgConstant;
|
||||||
|
import com.openhis.common.enums.*;
|
||||||
|
import com.openhis.common.utils.EnumUtils;
|
||||||
|
import com.openhis.common.utils.HisQueryUtils;
|
||||||
|
import com.openhis.common.utils.RedisKeys;
|
||||||
|
import com.openhis.common.utils.RedisUtil;
|
||||||
|
import com.openhis.medication.service.IMedicationService;
|
||||||
|
import com.openhis.web.adjustprice.appservice.IAdjustPriceService;
|
||||||
|
import com.openhis.web.adjustprice.dto.AdjustPriceDataVo;
|
||||||
|
import com.openhis.web.adjustprice.dto.AdjustPriceManagerSearchParam;
|
||||||
|
import com.openhis.web.adjustprice.dto.ChangePricePageDto;
|
||||||
|
import com.openhis.web.adjustprice.mapper.AdjustPriceMapper;
|
||||||
|
import com.openhis.web.inventorymanage.dto.InventorySearchParam;
|
||||||
|
import com.openhis.workflow.dto.ActivityDto;
|
||||||
|
import com.openhis.workflow.dto.AdjustPriceDto;
|
||||||
|
import com.openhis.workflow.service.IActivityDefinitionService;
|
||||||
|
import com.openhis.workflow.service.IInventoryItemService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ClassName AdjustPriceServiceImpl
|
||||||
|
* @Description 调价业务实现
|
||||||
|
* @Author raymond
|
||||||
|
* @Date 2025/10/15 16:10
|
||||||
|
* @Version 1.0
|
||||||
|
**/
|
||||||
|
@Service
|
||||||
|
public class AdjustPriceServiceImpl implements IAdjustPriceService {
|
||||||
|
@Resource
|
||||||
|
private IInventoryItemService inventoryItemService;
|
||||||
|
@Resource
|
||||||
|
private IActivityDefinitionService activityDefinitionService;
|
||||||
|
@Resource
|
||||||
|
private IHealthcareServiceService healthcareServiceService;
|
||||||
|
@Resource
|
||||||
|
private IMedicationService medicationService;
|
||||||
|
@Resource
|
||||||
|
private AdjustPriceMapper adjustPriceMapper;
|
||||||
|
@Resource
|
||||||
|
private IDeviceDefinitionService deviceDefinitionService;
|
||||||
|
@Resource
|
||||||
|
private IOrganizationService organizationService;
|
||||||
|
@Resource
|
||||||
|
private IChargeItemDefinitionService chargeItemDefinitionService;
|
||||||
|
@Resource
|
||||||
|
private IChangePriceRecordService changePriceRecordService;
|
||||||
|
@Resource
|
||||||
|
private ISysDictDataService sysDictDataService;
|
||||||
|
@Resource
|
||||||
|
private AssignSeqUtil assignSeqUtil;
|
||||||
|
@Resource
|
||||||
|
private RedisUtil redisUtil;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public R<?> submitChangePriceData(List<AdjustPriceDataVo> dataVoList) {
|
||||||
|
if (dataVoList.isEmpty()) {
|
||||||
|
return R.fail(MessageUtils.createMessage(PromptMsgConstant.AdjustPrice.M00001, null));
|
||||||
|
}
|
||||||
|
if (dataVoList.stream()
|
||||||
|
.anyMatch(data -> this.redisUtil.hasKey(RedisKeys.getProductsKey(data.getItemId().toString())))) {
|
||||||
|
return R.fail(MessageUtils.createMessage(PromptMsgConstant.AdjustPrice.M00002, null));
|
||||||
|
}
|
||||||
|
//获取数据中的类型
|
||||||
|
Integer categoryType = dataVoList.get(0).getCategoryType();
|
||||||
|
// 单据号
|
||||||
|
String busNo = assignSeqUtil.getSeqByDay(AssignSeqEnum.CHANGE_PRICE_BUZ.getPrefix());
|
||||||
|
// 当前人
|
||||||
|
Long practitionerId = SecurityUtils.getLoginUser().getPractitionerId();
|
||||||
|
// 根据表单提交的tab 进入不同的 execute
|
||||||
|
if (AdjustPriceEnum.MEDICINE.getCode().equals(categoryType)
|
||||||
|
|| AdjustPriceEnum.CONSUMABLES.getCode().equals(categoryType)) {
|
||||||
|
//如果是 药品或者是耗材 因为药品和耗材的价格取的是 charge_detail表
|
||||||
|
this.executeChangePriceForMedication(dataVoList, busNo, practitionerId, categoryType);
|
||||||
|
} else if (AdjustPriceEnum.DIAGNOSIS.getCode().equals(categoryType)) {
|
||||||
|
//如果是 如果是 诊疗, 取价格主表
|
||||||
|
this.executeChangePriceForActivity(dataVoList, busNo, practitionerId);
|
||||||
|
} else {
|
||||||
|
//如果是 如果是 挂号, 取价格主表
|
||||||
|
this.executeChangePriceForHealth(dataVoList, busNo, practitionerId);
|
||||||
|
}
|
||||||
|
return R.ok();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public R<?> submitExamineChangePriceData(List<AdjustPriceDataVo> dataVoList) {
|
||||||
|
if (dataVoList.isEmpty()) {
|
||||||
|
return R.fail(MessageUtils.createMessage(PromptMsgConstant.AdjustPrice.M00001, null));
|
||||||
|
}
|
||||||
|
if (dataVoList.stream()
|
||||||
|
.anyMatch(data -> this.redisUtil.hasKey(RedisKeys.getProductsKey(data.getItemId().toString())))) {
|
||||||
|
return R.fail(MessageUtils.createMessage(PromptMsgConstant.AdjustPrice.M00002, null));
|
||||||
|
}
|
||||||
|
//获取数据中的类型
|
||||||
|
Integer categoryType = dataVoList.get(0).getCategoryType();
|
||||||
|
// 单据号
|
||||||
|
String busNo = assignSeqUtil.getSeqByDay(AssignSeqEnum.CHANGE_PRICE_BUZ.getPrefix());
|
||||||
|
// 当前人
|
||||||
|
Long practitionerId = SecurityUtils.getLoginUser().getPractitionerId();
|
||||||
|
// 根据表单提交的tab 进入不同的 execute
|
||||||
|
if (AdjustPriceEnum.MEDICINE.getCode().equals(categoryType)
|
||||||
|
|| AdjustPriceEnum.CONSUMABLES.getCode().equals(categoryType)) {
|
||||||
|
this.executeChangePriceForMedicationExamine(dataVoList, busNo, practitionerId, categoryType);
|
||||||
|
} else if (AdjustPriceEnum.DIAGNOSIS.getCode().equals(categoryType)) {
|
||||||
|
this.executeChangePriceForActivityExamine(dataVoList, busNo, practitionerId);
|
||||||
|
} else {
|
||||||
|
this.executeChangePriceForHealthExamine(dataVoList, busNo, practitionerId);
|
||||||
|
}
|
||||||
|
return R.ok();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public R<?> searchKeyWordDataListByMed(String searchKey) {
|
||||||
|
//如果 searchKey == null 默认返回10条,反则 查询所有
|
||||||
|
return R.ok(this.medicationService.searchMedListByKeyWord(searchKey));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public R<?> searchKeyWordDataListByDevice(String searchKey) {
|
||||||
|
//如果 searchKey == null 默认返回10条,反则 查询所有
|
||||||
|
return R.ok(this.deviceDefinitionService.searchDeviceListByKeyWord(searchKey));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public R<?> searchKeyWordDataListByActivity(String searchKey) {
|
||||||
|
//如果 searchKey == null 默认返回10条,反则 查询所有
|
||||||
|
return R.ok(this.activityDefinitionService.searchActivityListByKeyWord(searchKey));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public R<?> searchChangePriceSubmitDataToPage(AdjustPriceManagerSearchParam adjustPriceManagerSearchParam,
|
||||||
|
Integer pageNo, Integer pageSize, String searchKey, HttpServletRequest request) {
|
||||||
|
Long practitionerId = SecurityUtils.getLoginUser().getPractitionerId();
|
||||||
|
HashSet<String> searchFields = new HashSet<>();
|
||||||
|
searchFields.add(CommonConstants.FieldName.BusNo);
|
||||||
|
// 构建查询条件
|
||||||
|
QueryWrapper<InventorySearchParam> queryWrapper =
|
||||||
|
HisQueryUtils.buildQueryWrapper(adjustPriceManagerSearchParam, searchKey, searchFields, request);
|
||||||
|
// 查询入库单据分页列表
|
||||||
|
Page<ChangePricePageDto> changePricePageDtoPage = this.adjustPriceMapper.searchChangePriceDataToPage(
|
||||||
|
new Page<>(pageNo, pageSize), queryWrapper, SupplyType.REQUEST_MEDICATION_CHANGE_PRICE.getValue(),
|
||||||
|
SupplyType.REQUEST_DEVICE_CHANGE_PRICE.getValue(), SupplyType.REQUEST_ACTIVITY_CHANGE_PRICE.getValue(),
|
||||||
|
SupplyType.REQUEST_HEALTH_CHANGE_PRICE.getValue(), practitionerId);
|
||||||
|
changePricePageDtoPage.getRecords().forEach(e -> {
|
||||||
|
e.setStatusEnum_enumText(EnumUtils.getInfoByValue(SupplyStatus.class, e.getStatusEnum()));
|
||||||
|
e.setCategoryEnum_enumText(EnumUtils.getInfoByValue(SupplyType.class, e.getItemCategoryEnum()));
|
||||||
|
});
|
||||||
|
return R.ok(changePricePageDtoPage);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public R<?> searchChangePriceDataByMed(String busNo) {
|
||||||
|
// 根据 单据号 查询 药品详情
|
||||||
|
List<ChangePriceDataDto> dataList = this.changePriceRecordService.searchMedChangePriceByBusNo(busNo,
|
||||||
|
SupplyType.REQUEST_MEDICATION_CHANGE_PRICE.getValue(), null);
|
||||||
|
// 获取 药品的单位
|
||||||
|
for (ChangePriceDataDto changePriceDataDto : dataList) {
|
||||||
|
SysDictData sysDictData =
|
||||||
|
sysDictDataService.selectDictInfo(CommonConstants.FieldName.UnitCode, changePriceDataDto.getUnitCode());
|
||||||
|
changePriceDataDto.setLabel(sysDictData.getDictLabel());
|
||||||
|
}
|
||||||
|
return R.ok(dataList);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public R<?> searchChangePriceDataByDevice(String busNo) {
|
||||||
|
//根据 单据号 耗材调价单详情
|
||||||
|
return R.ok(this.changePriceRecordService.searchDeviceChangePriceByBusNo(busNo,
|
||||||
|
SupplyType.REQUEST_DEVICE_CHANGE_PRICE.getValue(), null));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public R<?> searchChangePriceDataByActivity(String busNo) {
|
||||||
|
//根据 单据号 查询 诊疗调价单详情
|
||||||
|
return R.ok(this.changePriceRecordService.searchActivityChangePriceByBusNo(busNo,
|
||||||
|
SupplyType.REQUEST_ACTIVITY_CHANGE_PRICE.getValue(), null));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public R<?> searchChangePriceDataByHealth(String busNo) {
|
||||||
|
//根据 单据号 挂号调价单详情
|
||||||
|
return R.ok(this.changePriceRecordService.searchHealthChangePriceByBusNo(busNo,
|
||||||
|
SupplyType.REQUEST_HEALTH_CHANGE_PRICE.getValue(), null));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public R<?> cancelChangePriceData(String busNo) {
|
||||||
|
//根据 单据号查询出 当前所有请求调价的数据集
|
||||||
|
List<ChangePriceRecord> changePriceRecordList =
|
||||||
|
this.changePriceRecordService.searchChangePriceDataForBusNo(busNo);
|
||||||
|
//循环数据集合,将状态修改为 无效状态
|
||||||
|
for (ChangePriceRecord data : changePriceRecordList) {
|
||||||
|
ChangePriceRecord changePriceRecord = this.changePriceRecordService.getById(data.getId());
|
||||||
|
changePriceRecord.setStatusEnum(SupplyStatus.EXPIRED_INVALIDATED.getValue());
|
||||||
|
this.changePriceRecordService.updateById(changePriceRecord);
|
||||||
|
}
|
||||||
|
return R.ok();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public R<?> searchAllOrgData() {
|
||||||
|
//查询所有科室
|
||||||
|
List<OrgDataDto> orgDataList = this.organizationService.searchOrgDataByHealth();
|
||||||
|
return R.ok(orgDataList);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public R<?> searchHealthData(Long orgId) {
|
||||||
|
//根据科室ID 查询所有号源
|
||||||
|
return R.ok(this.healthcareServiceService.searchAllHeathData(orgId,PublicationStatus.ACTIVE.getValue()));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public R<?> updateExamineByApproval(String busNo) {
|
||||||
|
//根据调价单编号 查询 分组后的 数据
|
||||||
|
List<ChangePriceRecord> changePriceRecordList =
|
||||||
|
this.changePriceRecordService.searchChangePriceDataGroupByBusNo(busNo);
|
||||||
|
if (!changePriceRecordList.isEmpty()) {
|
||||||
|
// 循环将数据进行填充
|
||||||
|
for (ChangePriceRecord data : changePriceRecordList) {
|
||||||
|
//提交 审批时,查看是否有正在审核中的 货品数据 。根据 货品ID 从redis中查询
|
||||||
|
if (this.redisUtil.hasKey(RedisKeys.getProductsKey(data.getItemId().toString()))) {
|
||||||
|
return R.fail(MessageUtils.createMessage(PromptMsgConstant.AdjustPrice.M00002, null));
|
||||||
|
}
|
||||||
|
//如果不存在,向redis中插入 药品信息 = 给当前 货品上锁 。审批通过或驳回后 释放
|
||||||
|
this.redisUtil.set(RedisKeys.getProductsKey(data.getItemId().toString()), data.getItemId());
|
||||||
|
}
|
||||||
|
//根据 busNo 修改调价单状态
|
||||||
|
this.changePriceRecordService.submitApproval(busNo);
|
||||||
|
}
|
||||||
|
return R.ok();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public R<?> checkMedApprovalExist(Long itemId) {
|
||||||
|
//添加 货品调价时,先查询 当前货品是否在 审核中,如果在,不允许改价。
|
||||||
|
return this.changePriceRecordService.searchMedChangePriceByItemId(itemId,
|
||||||
|
SupplyType.REQUEST_MEDICATION_CHANGE_PRICE.getValue(), SupplyStatus.APPROVAL.getValue()).isEmpty() ? R.ok()
|
||||||
|
: R.fail(MessageUtils.createMessage(PromptMsgConstant.AdjustPrice.M00002, null));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public R<?> checkDeviceApprovalExist(Long itemId) {
|
||||||
|
//添加 货品调价时,先查询 当前货品是否在 审核中,如果在,不允许改价。
|
||||||
|
return this.changePriceRecordService.searchDeviceChangePriceByItemId(itemId,
|
||||||
|
SupplyType.REQUEST_DEVICE_CHANGE_PRICE.getValue(), SupplyStatus.APPROVAL.getValue()).isEmpty() ? R.ok()
|
||||||
|
: R.fail(MessageUtils.createMessage(PromptMsgConstant.AdjustPrice.M00002, null));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public R<?> checkActivityApprovalExist(Long itemId) {
|
||||||
|
//添加 货品调价时,先查询 当前货品是否在 审核中,如果在,不允许改价。
|
||||||
|
return this.changePriceRecordService.searchActivityChangePriceByItemId(itemId,
|
||||||
|
SupplyType.REQUEST_ACTIVITY_CHANGE_PRICE.getValue(), SupplyStatus.APPROVAL.getValue()).isEmpty() ? R.ok()
|
||||||
|
: R.fail(MessageUtils.createMessage(PromptMsgConstant.AdjustPrice.M00002, null));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public R<?> checkHealthApprovalExist(Long itemId) {
|
||||||
|
//添加 货品调价时,先查询 当前货品是否在 审核中,如果在,不允许改价。
|
||||||
|
return this.changePriceRecordService.searchHealthChangePriceByItemId(itemId,
|
||||||
|
SupplyType.REQUEST_HEALTH_CHANGE_PRICE.getValue(), SupplyStatus.APPROVAL.getValue()).isEmpty() ? R.ok()
|
||||||
|
: R.fail(MessageUtils.createMessage(PromptMsgConstant.AdjustPrice.M00002, null));
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean executeChangePriceForMedication(List<AdjustPriceDataVo> dataVoList, String busNo,
|
||||||
|
Long practitionerId, Integer categoryType) {
|
||||||
|
// 有库存的药品或耗材集合
|
||||||
|
List<AdjustPriceDataVo> resultList = new LinkedList<>();
|
||||||
|
// 从map中将表单集合取出
|
||||||
|
Map<Long, AdjustPriceDataVo> dataVoMap = this.executeMap(dataVoList);
|
||||||
|
//根据表单中的id数组 加载库存集合
|
||||||
|
List<AdjustPriceDto> inventoryItemList =
|
||||||
|
this.inventoryItemService.searchResultDataList(this.executeItemIds(dataVoList));
|
||||||
|
for (AdjustPriceDto data : inventoryItemList) {
|
||||||
|
AdjustPriceDataVo dataVo = new AdjustPriceDataVo();
|
||||||
|
dataVo.setTotalQuantity(data.getTotalCount());
|
||||||
|
dataVo.setItemTable(data.getItemTable());
|
||||||
|
dataVo.setItemId(data.getItemId());
|
||||||
|
dataVo.setNewBuyingPrice(dataVoMap.get(data.getItemId()).getNewBuyingPrice());
|
||||||
|
dataVo.setNewRetailPrice(dataVoMap.get(data.getItemId()).getNewRetailPrice());
|
||||||
|
dataVo.setReason(dataVoMap.get(data.getItemId()).getReason());
|
||||||
|
dataVo.setUnitCode(dataVoMap.get(data.getItemId()).getUnitCode());
|
||||||
|
dataVo.setLotNumber(data.getLotNumber());
|
||||||
|
dataVo.setLocationId(data.getLocationId());
|
||||||
|
resultList.add(dataVo);
|
||||||
|
}
|
||||||
|
//填充 ChangePriceRecord 对象,返回list进行批量添加
|
||||||
|
List<ChangePriceRecord> changePriceRecords =
|
||||||
|
this.executeChangePriceData(busNo, practitionerId, resultList, SupplyStatus.PENDING_APPROVAL.getValue(),
|
||||||
|
AdjustPriceEnum.MEDICINE.getCode().equals(categoryType)
|
||||||
|
? SupplyType.REQUEST_MEDICATION_CHANGE_PRICE.getValue()
|
||||||
|
: SupplyType.REQUEST_DEVICE_CHANGE_PRICE.getValue());
|
||||||
|
return this.changePriceRecordService.saveOrUpdateBatch(changePriceRecords);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean executeChangePriceForMedicationExamine(List<AdjustPriceDataVo> dataVoList, String busNo,
|
||||||
|
Long practitionerId, Integer categoryType) {
|
||||||
|
// 有库存的药品或耗材集合
|
||||||
|
List<AdjustPriceDataVo> resultList = new LinkedList<>();
|
||||||
|
Map<Long, AdjustPriceDataVo> dataVoMap = this.executeMap(dataVoList);
|
||||||
|
List<AdjustPriceDto> inventoryItemList =
|
||||||
|
this.inventoryItemService.searchResultDataList(this.executeItemIds(dataVoList));
|
||||||
|
for (AdjustPriceDto data : inventoryItemList) {
|
||||||
|
AdjustPriceDataVo dataVo = new AdjustPriceDataVo();
|
||||||
|
dataVo.setTotalQuantity(data.getTotalCount());
|
||||||
|
dataVo.setItemTable(data.getItemTable());
|
||||||
|
dataVo.setItemId(data.getItemId());
|
||||||
|
dataVo.setNewBuyingPrice(dataVoMap.get(data.getItemId()).getNewBuyingPrice());
|
||||||
|
dataVo.setNewRetailPrice(dataVoMap.get(data.getItemId()).getNewRetailPrice());
|
||||||
|
dataVo.setReason(dataVoMap.get(data.getItemId()).getReason());
|
||||||
|
dataVo.setUnitCode(dataVoMap.get(data.getItemId()).getUnitCode());
|
||||||
|
dataVo.setLotNumber(data.getLotNumber());
|
||||||
|
dataVo.setLocationId(data.getLocationId());
|
||||||
|
resultList.add(dataVo);
|
||||||
|
this.redisUtil.set(RedisKeys.getProductsKey(data.getItemId().toString()), data.getItemId());
|
||||||
|
}
|
||||||
|
//填充 ChangePriceRecord 对象,返回list进行批量添加
|
||||||
|
List<ChangePriceRecord> changePriceRecords =
|
||||||
|
this.executeChangePriceData(busNo, practitionerId, resultList, SupplyStatus.APPROVAL.getValue(),
|
||||||
|
AdjustPriceEnum.MEDICINE.getCode().equals(categoryType)
|
||||||
|
? SupplyType.REQUEST_MEDICATION_CHANGE_PRICE.getValue()
|
||||||
|
: SupplyType.REQUEST_DEVICE_CHANGE_PRICE.getValue());
|
||||||
|
return this.changePriceRecordService.saveOrUpdateBatch(changePriceRecords);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean executeChangePriceForActivity(List<AdjustPriceDataVo> dataVoList, String busNo,
|
||||||
|
Long practitionerId) {
|
||||||
|
List<ActivityDto> dataDtoList =
|
||||||
|
this.activityDefinitionService.searchActivityDefinitionByIds(this.executeItemIds(dataVoList));
|
||||||
|
Map<Long, AdjustPriceDataVo> dataVoMap = this.executeMap(dataVoList);
|
||||||
|
List<AdjustPriceDataVo> resultList = new LinkedList<>();
|
||||||
|
for (ActivityDto data : dataDtoList) {
|
||||||
|
AdjustPriceDataVo dataVo = new AdjustPriceDataVo();
|
||||||
|
dataVo.setItemTable(CommonConstants.TableName.WOR_ACTIVITY_DEFINITION);
|
||||||
|
dataVo.setName(data.getName());
|
||||||
|
dataVo.setItemId(data.getItemId());
|
||||||
|
dataVo.setNewBuyingPrice(dataVoMap.get(data.getItemId()).getNewBuyingPrice());
|
||||||
|
dataVo.setNewRetailPrice(dataVoMap.get(data.getItemId()).getNewRetailPrice());
|
||||||
|
dataVo.setReason(dataVoMap.get(data.getItemId()).getReason());
|
||||||
|
dataVo.setLotNumber(dataVoMap.get(data.getItemId()).getLotNumber());
|
||||||
|
resultList.add(dataVo);
|
||||||
|
}
|
||||||
|
//填充 ChangePriceRecord 对象,返回list进行批量添加
|
||||||
|
List<ChangePriceRecord> changePriceRecords = this.executeChangePriceData(busNo, practitionerId, resultList,
|
||||||
|
SupplyStatus.PENDING_APPROVAL.getValue(), SupplyType.REQUEST_ACTIVITY_CHANGE_PRICE.getValue());
|
||||||
|
return this.changePriceRecordService.saveOrUpdateBatch(changePriceRecords);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Desc: 处理申请 诊疗改价业务申请
|
||||||
|
*
|
||||||
|
* @param dataVoList
|
||||||
|
* @Author raymond
|
||||||
|
* @Date 11:19 2025/10/18
|
||||||
|
* @return boolean
|
||||||
|
**/
|
||||||
|
public boolean executeChangePriceForActivityExamine(List<AdjustPriceDataVo> dataVoList, String busNo,
|
||||||
|
Long practitionerId) {
|
||||||
|
List<ActivityDto> dataDtoList =
|
||||||
|
this.activityDefinitionService.searchActivityDefinitionByIds(this.executeItemIds(dataVoList));
|
||||||
|
Map<Long, AdjustPriceDataVo> dataVoMap = this.executeMap(dataVoList);
|
||||||
|
List<AdjustPriceDataVo> resultList = new LinkedList<>();
|
||||||
|
for (ActivityDto data : dataDtoList) {
|
||||||
|
AdjustPriceDataVo dataVo = new AdjustPriceDataVo();
|
||||||
|
dataVo.setItemTable(CommonConstants.TableName.WOR_ACTIVITY_DEFINITION);
|
||||||
|
dataVo.setName(data.getName());
|
||||||
|
dataVo.setItemId(data.getItemId());
|
||||||
|
dataVo.setNewBuyingPrice(dataVoMap.get(data.getItemId()).getNewBuyingPrice());
|
||||||
|
dataVo.setNewRetailPrice(dataVoMap.get(data.getItemId()).getNewRetailPrice());
|
||||||
|
dataVo.setReason(dataVoMap.get(data.getItemId()).getReason());
|
||||||
|
dataVo.setLotNumber(dataVoMap.get(data.getItemId()).getLotNumber());
|
||||||
|
resultList.add(dataVo);
|
||||||
|
this.redisUtil.set(RedisKeys.getProductsKey(data.getItemId().toString()), data.getItemId());
|
||||||
|
}
|
||||||
|
//填充 ChangePriceRecord 对象,返回list进行批量添加
|
||||||
|
List<ChangePriceRecord> changePriceRecords = this.executeChangePriceData(busNo, practitionerId, resultList,
|
||||||
|
SupplyStatus.APPROVAL.getValue(), SupplyType.REQUEST_ACTIVITY_CHANGE_PRICE.getValue());
|
||||||
|
return this.changePriceRecordService.saveOrUpdateBatch(changePriceRecords);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Desc: 处理申请 挂号改价业务
|
||||||
|
*
|
||||||
|
* @param dataVoList
|
||||||
|
* @Author raymond
|
||||||
|
* @Date 11:20 2025/10/18
|
||||||
|
* @return boolean
|
||||||
|
**/
|
||||||
|
public boolean executeChangePriceForHealth(List<AdjustPriceDataVo> dataVoList, String busNo, Long practitionerId) {
|
||||||
|
List<HealthcareDto> dataDtoList =
|
||||||
|
this.healthcareServiceService.searchHealthByIds(this.executeItemIds(dataVoList));
|
||||||
|
List<AdjustPriceDataVo> resultList = new LinkedList<>();
|
||||||
|
Map<Long, AdjustPriceDataVo> dataVoMap = this.executeMap(dataVoList);
|
||||||
|
for (HealthcareDto data : dataDtoList) {
|
||||||
|
AdjustPriceDataVo dataVo = new AdjustPriceDataVo();
|
||||||
|
dataVo.setItemTable(CommonConstants.TableName.ADM_HEALTHCARE_SERVICE);
|
||||||
|
dataVo.setItemId(data.getItemId());
|
||||||
|
dataVo.setName(data.getName());
|
||||||
|
dataVo.setNewBuyingPrice(dataVoMap.get(data.getItemId()).getNewBuyingPrice());
|
||||||
|
dataVo.setNewRetailPrice(dataVoMap.get(data.getItemId()).getNewRetailPrice());
|
||||||
|
dataVo.setReason(dataVoMap.get(data.getItemId()).getReason());
|
||||||
|
dataVo.setLotNumber(dataVoMap.get(data.getItemId()).getLotNumber());
|
||||||
|
resultList.add(dataVo);
|
||||||
|
}
|
||||||
|
//填充 ChangePriceRecord 对象,返回list进行批量添加 supply_request表共享了 审核状态和 category 枚举
|
||||||
|
List<ChangePriceRecord> changePriceRecords = this.executeChangePriceData(busNo, practitionerId, resultList,
|
||||||
|
SupplyStatus.PENDING_APPROVAL.getValue(), SupplyType.REQUEST_HEALTH_CHANGE_PRICE.getValue());
|
||||||
|
return this.changePriceRecordService.saveOrUpdateBatch(changePriceRecords);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Desc: 处理申请 挂号改价业务
|
||||||
|
*
|
||||||
|
* @param dataVoList
|
||||||
|
* @Author raymond
|
||||||
|
* @Date 11:20 2025/10/18
|
||||||
|
* @return boolean
|
||||||
|
**/
|
||||||
|
public boolean executeChangePriceForHealthExamine(List<AdjustPriceDataVo> dataVoList, String busNo,
|
||||||
|
Long practitionerId) {
|
||||||
|
List<HealthcareDto> dataDtoList =
|
||||||
|
this.healthcareServiceService.searchHealthByIds(this.executeItemIds(dataVoList));
|
||||||
|
List<AdjustPriceDataVo> resultList = new LinkedList<>();
|
||||||
|
Map<Long, AdjustPriceDataVo> dataVoMap = this.executeMap(dataVoList);
|
||||||
|
for (HealthcareDto data : dataDtoList) {
|
||||||
|
AdjustPriceDataVo dataVo = new AdjustPriceDataVo();
|
||||||
|
dataVo.setItemTable(CommonConstants.TableName.ADM_HEALTHCARE_SERVICE);
|
||||||
|
dataVo.setItemId(data.getItemId());
|
||||||
|
dataVo.setName(data.getName());
|
||||||
|
dataVo.setNewBuyingPrice(dataVoMap.get(data.getItemId()).getNewBuyingPrice());
|
||||||
|
dataVo.setNewRetailPrice(dataVoMap.get(data.getItemId()).getNewRetailPrice());
|
||||||
|
dataVo.setReason(dataVoMap.get(data.getItemId()).getReason());
|
||||||
|
dataVo.setLotNumber(dataVoMap.get(data.getItemId()).getLotNumber());
|
||||||
|
resultList.add(dataVo);
|
||||||
|
this.redisUtil.set(RedisKeys.getProductsKey(data.getItemId().toString()), data.getItemId());
|
||||||
|
}
|
||||||
|
//填充 ChangePriceRecord 对象,返回list进行批量添加 supply_request表共享了 审核状态和 category 枚举
|
||||||
|
List<ChangePriceRecord> changePriceRecords = this.executeChangePriceData(busNo, practitionerId, resultList,
|
||||||
|
SupplyStatus.APPROVAL.getValue(), SupplyType.REQUEST_HEALTH_CHANGE_PRICE.getValue());
|
||||||
|
return this.changePriceRecordService.saveOrUpdateBatch(changePriceRecords);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Desc: 封装对象数据
|
||||||
|
*
|
||||||
|
* @param busNo
|
||||||
|
* @param curUserId
|
||||||
|
* @param itemList
|
||||||
|
* @Author raymond
|
||||||
|
* @Date 09:35 2025/10/18
|
||||||
|
* @return java.util.List<com.openhis.workflow.domain.ChangePriceRecord>
|
||||||
|
**/
|
||||||
|
public List<ChangePriceRecord> executeChangePriceData(String busNo, Long curUserId,
|
||||||
|
List<AdjustPriceDataVo> itemList, Integer statusEnum, Integer categoryEnum) {
|
||||||
|
List<ChangePriceRecord> srList = new LinkedList<>();
|
||||||
|
for (AdjustPriceDataVo dataVo : itemList) {
|
||||||
|
ChangePriceRecord cpr = new ChangePriceRecord();
|
||||||
|
//如果是 药品调价
|
||||||
|
if (SupplyType.REQUEST_MEDICATION_CHANGE_PRICE.getValue().equals(categoryEnum)) {
|
||||||
|
// 获取当前进货价
|
||||||
|
ChargeItemDefDetailPriceDto buyingPriceDto = this.chargeItemDefinitionService
|
||||||
|
.getMedPriceByParam(ConditionCode.LOT_NUMBER_COST.getCode(), dataVo.getItemId());
|
||||||
|
// 获取当前零售价
|
||||||
|
ChargeItemDefDetailPriceDto retailPriceDto = this.chargeItemDefinitionService
|
||||||
|
.getMedPriceByParam(ConditionCode.LOT_NUMBER_PRICE.getCode(), dataVo.getItemId());
|
||||||
|
if (buyingPriceDto != null || retailPriceDto != null) {
|
||||||
|
// 库存 以最小单位存储,以货品最小单位进行计算
|
||||||
|
BigDecimal partPercent =
|
||||||
|
dataVo.getTotalQuantity().divide(buyingPriceDto.getPartPercent(), 6, RoundingMode.HALF_UP);
|
||||||
|
//进货价盈负差
|
||||||
|
BigDecimal buyingDiffPrice =
|
||||||
|
dataVo.getNewBuyingPrice().subtract(buyingPriceDto.getPrice()).multiply(partPercent);
|
||||||
|
// 零售价盈负差
|
||||||
|
BigDecimal retailDiffPrice =
|
||||||
|
dataVo.getNewRetailPrice().subtract(retailPriceDto.getPrice()).multiply(partPercent);
|
||||||
|
//填充 change_price_record表数据
|
||||||
|
cpr.setNewBuyingPrice(dataVo.getNewBuyingPrice()).setNewRetailPrice(dataVo.getNewRetailPrice())
|
||||||
|
.setItemQuantity(dataVo.getTotalQuantity()).setItemId(dataVo.getItemId())
|
||||||
|
.setItemTable(dataVo.getItemTable()).setReason(dataVo.getReason()).setBusNo(busNo)
|
||||||
|
.setApplicantId(curUserId).setStatusEnum(statusEnum).setItemCategoryEnum(categoryEnum)
|
||||||
|
.setLotNumber(dataVo.getLotNumber()).setUnitCode(dataVo.getUnitCode())
|
||||||
|
.setOriginBuyingPrice(buyingPriceDto.getPrice()).setOriginRetailPrice(retailPriceDto.getPrice())
|
||||||
|
.setDifferenceBuyingPrice(buyingDiffPrice).setDifferenceRetailPrice(retailDiffPrice)
|
||||||
|
.setApplicantTime(SupplyStatus.APPROVAL.getValue().equals(statusEnum) ? new Date() : null);
|
||||||
|
srList.add(cpr);
|
||||||
|
} //如果是 耗材调价
|
||||||
|
} else if (SupplyType.REQUEST_DEVICE_CHANGE_PRICE.getValue().equals(categoryEnum)) {
|
||||||
|
// 获取当前进货价
|
||||||
|
ChargeItemDefDetailPriceDto buyingPriceDto = this.chargeItemDefinitionService
|
||||||
|
.getDevicePriceByParam(ConditionCode.LOT_NUMBER_COST.getCode(), dataVo.getItemId());
|
||||||
|
// 获取当前零售价
|
||||||
|
ChargeItemDefDetailPriceDto retailPriceDto = this.chargeItemDefinitionService
|
||||||
|
.getDevicePriceByParam(ConditionCode.LOT_NUMBER_PRICE.getCode(), dataVo.getItemId());
|
||||||
|
if (buyingPriceDto != null || retailPriceDto != null) {
|
||||||
|
// 库存 以最小单位存储,以货品最小单位进行计算
|
||||||
|
BigDecimal partPercent =
|
||||||
|
dataVo.getTotalQuantity().divide(buyingPriceDto.getPartPercent(), 6, RoundingMode.HALF_UP);
|
||||||
|
//进货价盈负差
|
||||||
|
BigDecimal buyingDiffPrice =
|
||||||
|
dataVo.getNewBuyingPrice().subtract(buyingPriceDto.getPrice()).multiply(partPercent);
|
||||||
|
// 零售价盈负差
|
||||||
|
BigDecimal retailDiffPrice =
|
||||||
|
dataVo.getNewRetailPrice().subtract(retailPriceDto.getPrice()).multiply(partPercent);
|
||||||
|
//填充 change_price_record表数据
|
||||||
|
cpr.setNewBuyingPrice(dataVo.getNewBuyingPrice()).setNewRetailPrice(dataVo.getNewRetailPrice())
|
||||||
|
.setItemQuantity(dataVo.getTotalQuantity()).setItemId(dataVo.getItemId()).setLocationId(dataVo.getLocationId())
|
||||||
|
.setItemTable(dataVo.getItemTable()).setReason(dataVo.getReason()).setBusNo(busNo)
|
||||||
|
.setApplicantId(curUserId).setStatusEnum(statusEnum).setItemCategoryEnum(categoryEnum)
|
||||||
|
.setLotNumber(dataVo.getLotNumber()).setUnitCode(dataVo.getUnitCode())
|
||||||
|
.setOriginBuyingPrice(buyingPriceDto.getPrice()).setOriginRetailPrice(retailPriceDto.getPrice())
|
||||||
|
.setDifferenceBuyingPrice(buyingDiffPrice).setDifferenceRetailPrice(retailDiffPrice)
|
||||||
|
.setApplicantTime(SupplyStatus.APPROVAL.getValue().equals(statusEnum) ? new Date() : null);
|
||||||
|
srList.add(cpr);
|
||||||
|
}
|
||||||
|
} else {//如果是 诊疗或者挂号调价,诊疗和耗材 没有库存
|
||||||
|
ChargeItemDefDetailPriceDto retailPriceDto = this.chargeItemDefinitionService
|
||||||
|
.getProductPrice(PublicationStatus.ACTIVE.getValue(), dataVo.getItemId());
|
||||||
|
if (retailPriceDto != null) {
|
||||||
|
//新价格 - 原价格
|
||||||
|
BigDecimal retailDiffPrice = dataVo.getNewRetailPrice().subtract(retailPriceDto.getPrice());
|
||||||
|
//填充 change_price_record表数据
|
||||||
|
cpr.setNewBuyingPrice(dataVo.getNewBuyingPrice()).setNewRetailPrice(dataVo.getNewRetailPrice())
|
||||||
|
.setItemQuantity(dataVo.getTotalQuantity()).setItemId(dataVo.getItemId())
|
||||||
|
.setItemTable(dataVo.getItemTable()).setReason(dataVo.getReason()).setBusNo(busNo)
|
||||||
|
.setApplicantId(curUserId).setStatusEnum(statusEnum).setItemCategoryEnum(categoryEnum)
|
||||||
|
.setLotNumber(dataVo.getLotNumber()).setUnitCode(dataVo.getUnitCode())
|
||||||
|
.setOriginRetailPrice(retailPriceDto.getPrice()).setDifferenceRetailPrice(retailDiffPrice)
|
||||||
|
.setApplicantTime(SupplyStatus.APPROVAL.getValue().equals(statusEnum) ? new Date() : null);
|
||||||
|
srList.add(cpr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return srList;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Desc: 封装获取药品和耗材的id数组
|
||||||
|
*
|
||||||
|
* @param dataVoList
|
||||||
|
* @Author raymond
|
||||||
|
* @Date 08:03 2025/10/18
|
||||||
|
* @return java.util.List<java.lang.Long>
|
||||||
|
**/
|
||||||
|
public List<Long> executeItemIds(List<AdjustPriceDataVo> dataVoList) {
|
||||||
|
List<Long> itemIds = new LinkedList<>();
|
||||||
|
for (AdjustPriceDataVo data : dataVoList) {
|
||||||
|
itemIds.add(data.getItemId());
|
||||||
|
}
|
||||||
|
return itemIds;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Desc: 存储表单数据
|
||||||
|
* @param dataVoList
|
||||||
|
* @Author raymond
|
||||||
|
* @Date 10:28 2025/11/5
|
||||||
|
* @return java.util.Map<java.lang.Long,com.openhis.web.adjustprice.dto.AdjustPriceDataVo>
|
||||||
|
**/
|
||||||
|
public Map<Long, AdjustPriceDataVo> executeMap(List<AdjustPriceDataVo> dataVoList) {
|
||||||
|
Map<Long, AdjustPriceDataVo> map = new ConcurrentHashMap<>();
|
||||||
|
for (AdjustPriceDataVo data : dataVoList) {
|
||||||
|
map.put(data.getItemId(), data);
|
||||||
|
}
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
package com.openhis.web.adjustprice.appservice.impl;
|
|
||||||
|
|
||||||
import com.openhis.web.adjustprice.appservice.ISupplyService;
|
|
||||||
import com.openhis.web.adjustprice.dto.SupplyListDto;
|
|
||||||
import com.openhis.web.adjustprice.mapper.SupplyMapper;
|
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @ClassName ChangePriceImpl
|
|
||||||
* @Description TODO
|
|
||||||
* @Author raymond
|
|
||||||
* @Date 2025/10/15 16:10
|
|
||||||
* @Version 1.0
|
|
||||||
**/
|
|
||||||
@Component
|
|
||||||
public class SupplyServiceImpl implements ISupplyService {
|
|
||||||
|
|
||||||
@Resource
|
|
||||||
private SupplyMapper supplyMapper;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<SupplyListDto> searchAllSupplyList() {
|
|
||||||
return this.supplyMapper.searchAllSupplyList();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,13 +1,15 @@
|
|||||||
package com.openhis.web.adjustprice.controller;
|
package com.openhis.web.adjustprice.controller;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import com.core.common.core.domain.R;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import com.core.common.enums.TenantOptionDict;
|
||||||
|
import com.core.web.util.TenantOptionUtil;
|
||||||
|
import com.openhis.common.enums.OrderPricingSource;
|
||||||
|
import com.openhis.web.adjustprice.appservice.IAdjustPriceService;
|
||||||
|
import com.openhis.web.adjustprice.dto.AdjustPriceDataVo;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import com.core.common.core.domain.R;
|
import javax.annotation.Resource;
|
||||||
import com.openhis.web.adjustprice.appservice.ISupplyService;
|
import java.util.List;
|
||||||
import com.openhis.web.datadictionary.dto.MedicationSearchParam;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @ClassName ChargePriceController
|
* @ClassName ChargePriceController
|
||||||
@@ -19,94 +21,163 @@ import com.openhis.web.datadictionary.dto.MedicationSearchParam;
|
|||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/change/price")
|
@RequestMapping("/change/price")
|
||||||
public class ChangePriceController {
|
public class ChangePriceController {
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private ISupplyService supplyService;
|
private IAdjustPriceService adjustPriceService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Desc: 查询所有供应商集合
|
* Desc: 根据关键词搜索数据
|
||||||
*
|
*
|
||||||
* @param
|
* @param
|
||||||
* @Author raymond
|
|
||||||
* @Date 16:55 2025/10/15
|
|
||||||
* @return com.core.common.core.domain.R<?>
|
* @return com.core.common.core.domain.R<?>
|
||||||
|
* @Author raymond
|
||||||
|
* @Date 09:26 2025/10/20
|
||||||
**/
|
**/
|
||||||
@GetMapping(value = "searchAllSupply")
|
@PostMapping(value = "searchKeyWordDataListByMed")
|
||||||
public R<?> searchAllSupply() {
|
public R<?> searchKeyWordDataListByMed(@RequestParam(name = "searchKey", required = false) String searchKey) {
|
||||||
return R.ok(this.supplyService.searchAllSupplyList());
|
return R.ok(this.adjustPriceService.searchKeyWordDataListByMed(searchKey));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Desc: 根据关键词搜索数据
|
||||||
|
*
|
||||||
|
* @param
|
||||||
|
* @return com.core.common.core.domain.R<?>
|
||||||
|
* @Author raymond
|
||||||
|
* @Date 09:26 2025/10/20
|
||||||
|
**/
|
||||||
|
@PostMapping(value = "searchKeyWordDataListByDevice")
|
||||||
|
public R<?> searchKeyWordDataListByDevice(@RequestParam(name = "searchKey", required = false) String searchKey) {
|
||||||
|
return R.ok(this.adjustPriceService.searchKeyWordDataListByDevice(searchKey));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Desc: 根据关键词搜索数据
|
||||||
|
*
|
||||||
|
* @param
|
||||||
|
* @return com.core.common.core.domain.R<?>
|
||||||
|
* @Author raymond
|
||||||
|
* @Date 09:26 2025/10/20
|
||||||
|
**/
|
||||||
|
@PostMapping(value = "searchKeyWordDataListByActivity")
|
||||||
|
public R<?> searchKeyWordDataListByActivity(@RequestParam(name = "searchKey", required = false) String searchKey) {
|
||||||
|
return R.ok(this.adjustPriceService.searchKeyWordDataListByActivity(searchKey));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Desc: 查询所有 有挂号信息的科室
|
||||||
|
*
|
||||||
|
* @param
|
||||||
|
* @return com.core.common.core.domain.R<?>
|
||||||
|
* @Author raymond
|
||||||
|
* @Date 08:38 2025/10/22
|
||||||
|
**/
|
||||||
|
@PostMapping(value = "searchAllOrgData")
|
||||||
|
public R<?> searchAllOrgData() {
|
||||||
|
return this.adjustPriceService.searchAllOrgData();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Desc: 根据科室id 加载 挂号信息
|
||||||
|
*
|
||||||
|
* @param orgId
|
||||||
|
* @return com.core.common.core.domain.R<?>
|
||||||
|
* @Author raymond
|
||||||
|
* @Date 16:46 2025/10/22
|
||||||
|
**/
|
||||||
|
@PostMapping(value = "searchHealthData")
|
||||||
|
public R<?> searchHealthData(@RequestParam Long orgId) {
|
||||||
|
return this.adjustPriceService.searchHealthData(orgId);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Desc: 保存 改价数据
|
||||||
|
*
|
||||||
|
* @return com.core.common.core.domain.R<?>
|
||||||
|
* @Author raymond
|
||||||
|
* @Date 08:47 2025/10/15
|
||||||
|
**/
|
||||||
|
@PostMapping(value = "commitChangePriceData")
|
||||||
|
public R<?> commitChangePriceData(@RequestBody List<AdjustPriceDataVo> dataVoList) {
|
||||||
|
return adjustPriceService.submitChangePriceData(dataVoList);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Desc: 根据供应商和药品名称加载要修改的药品数据
|
* Desc: 根据供应商和药品名称加载要修改的药品数据
|
||||||
*
|
*
|
||||||
|
* @return com.core.common.core.domain.R<?>
|
||||||
* @Author raymond
|
* @Author raymond
|
||||||
* @Date 08:47 2025/10/15
|
* @Date 08:47 2025/10/15
|
||||||
* @return com.core.common.core.domain.R<?>
|
|
||||||
**/
|
**/
|
||||||
@PostMapping(value = "searchMedicineListToPage")
|
@PostMapping(value = "submitExamineChangePriceData")
|
||||||
public R<?> searchMedicineListToPage() {
|
public R<?> submitExamineChangePriceData(@RequestBody List<AdjustPriceDataVo> dataVoList) {
|
||||||
return R.ok();
|
return adjustPriceService.submitExamineChangePriceData(dataVoList);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Desc:
|
* Desc: 根据货品ID 查询是否有审核中的药品数据
|
||||||
*
|
*
|
||||||
* @param medicationSearchParam
|
* @param itemId
|
||||||
* @param searchKey
|
|
||||||
* @param pageNo
|
|
||||||
* @param pageSize
|
|
||||||
* @param request
|
|
||||||
* @Author raymond
|
|
||||||
* @Date 13:41 2025/10/15
|
|
||||||
* @return com.core.common.core.domain.R<?>
|
* @return com.core.common.core.domain.R<?>
|
||||||
|
* @Author raymond
|
||||||
|
* @Date 17:32 2025/11/3
|
||||||
**/
|
**/
|
||||||
@PostMapping(value = "searchConsumablesListToPage")
|
@PostMapping(value = "checkMedApprovalExist")
|
||||||
public R<?> searchConsumablesListToPage(MedicationSearchParam medicationSearchParam,
|
public R<?> checkMedApprovalExist(@RequestParam Long itemId) {
|
||||||
@RequestParam(value = "searchKey", defaultValue = "") String searchKey,
|
return this.adjustPriceService.checkMedApprovalExist(itemId);
|
||||||
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
|
|
||||||
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest request) {
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Desc:
|
* Desc: 根据货品ID 查询是否有审核中的药品数据
|
||||||
*
|
*
|
||||||
* @param medicationSearchParam
|
* @param itemId
|
||||||
* @param searchKey
|
|
||||||
* @param pageNo
|
|
||||||
* @param pageSize
|
|
||||||
* @param request
|
|
||||||
* @Author raymond
|
|
||||||
* @Date 13:41 2025/10/15
|
|
||||||
* @return com.core.common.core.domain.R<?>
|
* @return com.core.common.core.domain.R<?>
|
||||||
|
* @Author raymond
|
||||||
|
* @Date 17:32 2025/11/3
|
||||||
**/
|
**/
|
||||||
@PostMapping(value = "searchDiagnosisListToPage")
|
@PostMapping(value = "checkDeviceApprovalExist")
|
||||||
public R<?> searchDiagnosisListToPage(MedicationSearchParam medicationSearchParam,
|
public R<?> checkDeviceApprovalExist(@RequestParam Long itemId) {
|
||||||
@RequestParam(value = "searchKey", defaultValue = "") String searchKey,
|
return this.adjustPriceService.checkDeviceApprovalExist(itemId);
|
||||||
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
|
|
||||||
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest request) {
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Desc:
|
* Desc: 根据货品ID 查询是否有审核中的药品数据
|
||||||
*
|
*
|
||||||
* @param medicationSearchParam
|
* @param itemId
|
||||||
* @param searchKey
|
|
||||||
* @param pageNo
|
|
||||||
* @param pageSize
|
|
||||||
* @param request
|
|
||||||
* @Author raymond
|
|
||||||
* @Date 13:41 2025/10/15
|
|
||||||
* @return com.core.common.core.domain.R<?>
|
* @return com.core.common.core.domain.R<?>
|
||||||
|
* @Author raymond
|
||||||
|
* @Date 17:32 2025/11/3
|
||||||
**/
|
**/
|
||||||
@PostMapping(value = "searchHealthCareListToPage")
|
@PostMapping(value = "checkActivityApprovalExist")
|
||||||
public R<?> searchRegisterListToPage(MedicationSearchParam medicationSearchParam,
|
public R<?> checkActivityApprovalExist(@RequestParam Long itemId) {
|
||||||
@RequestParam(value = "searchKey", defaultValue = "") String searchKey,
|
return this.adjustPriceService.checkActivityApprovalExist(itemId);
|
||||||
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
|
}
|
||||||
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest request) {
|
|
||||||
|
|
||||||
return null;
|
/**
|
||||||
|
* Desc: 根据货品ID 查询是否有审核中的药品数据
|
||||||
|
*
|
||||||
|
* @param itemId
|
||||||
|
* @return com.core.common.core.domain.R<?>
|
||||||
|
* @Author raymond
|
||||||
|
* @Date 17:32 2025/11/3
|
||||||
|
**/
|
||||||
|
@PostMapping(value = "checkHealthApprovalExist")
|
||||||
|
public R<?> checkHealthApprovalExist(@RequestParam Long itemId) {
|
||||||
|
return this.adjustPriceService.checkHealthApprovalExist(itemId);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Desc: 查询调价控制开关状态接口
|
||||||
|
*
|
||||||
|
* @return true:统一零售价 , false:按批次号售卖
|
||||||
|
**/
|
||||||
|
@GetMapping(value = "getAdjustPriceSwitchState")
|
||||||
|
public R<?> getAdjustPriceSwitchState() {
|
||||||
|
// 医嘱定价来源
|
||||||
|
String orderPricingSource = TenantOptionUtil.getOptionContent(TenantOptionDict.ORDER_PRICING_SOURCE);
|
||||||
|
if (OrderPricingSource.RETAIL_PRICE.getCode().equals(orderPricingSource)) {
|
||||||
|
return R.ok(true);
|
||||||
|
}
|
||||||
|
return R.ok(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,153 @@
|
|||||||
|
package com.openhis.web.adjustprice.controller;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import com.core.common.core.domain.R;
|
||||||
|
import com.core.common.utils.StringUtils;
|
||||||
|
import com.openhis.web.adjustprice.appservice.IAdjustPriceService;
|
||||||
|
import com.openhis.web.adjustprice.dto.AdjustPriceDataVo;
|
||||||
|
import com.openhis.web.adjustprice.dto.AdjustPriceManagerSearchParam;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ClassName ChangePriceListPageController
|
||||||
|
* @Description TODO
|
||||||
|
* @Author raymond
|
||||||
|
* @Date 2025/10/23 15:16
|
||||||
|
* @Version 1.0
|
||||||
|
**/
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/change/price/list")
|
||||||
|
public class ChangePriceDataListPageController {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private IAdjustPriceService adjustPriceService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Desc: 查询 调价管理列表页面 分页查询当前人 提交的调价单
|
||||||
|
*
|
||||||
|
* @param adjustPriceManagerSearchParam
|
||||||
|
* @param pageNo
|
||||||
|
* @param pageSize
|
||||||
|
* @param searchKey
|
||||||
|
* @param request
|
||||||
|
* @Author raymond
|
||||||
|
* @Date 15:47 2025/10/23
|
||||||
|
* @return com.core.common.core.domain.R<?>
|
||||||
|
**/
|
||||||
|
@GetMapping(value = "getPage")
|
||||||
|
public R<?> getPage(AdjustPriceManagerSearchParam adjustPriceManagerSearchParam,
|
||||||
|
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
|
||||||
|
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize,
|
||||||
|
@RequestParam(name = "searchKey", required = false) String searchKey, HttpServletRequest request) {
|
||||||
|
return this.adjustPriceService.searchChangePriceSubmitDataToPage(adjustPriceManagerSearchParam, pageNo,
|
||||||
|
pageSize, searchKey, request);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Desc: 根据单据号 进行提交审核操作
|
||||||
|
*
|
||||||
|
* @param busNo
|
||||||
|
* @Author raymond
|
||||||
|
* @Date 09:38 2025/10/23
|
||||||
|
* @return com.core.common.core.domain.R<?>
|
||||||
|
**/
|
||||||
|
@PostMapping(value = "updateStatusByApproval")
|
||||||
|
public R<?> updateStatusByApproval(@RequestParam String busNo) {
|
||||||
|
return this.adjustPriceService.updateExamineByApproval(busNo);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Desc: 作废 调价单数据
|
||||||
|
*
|
||||||
|
* @param busNo
|
||||||
|
* @Author raymond
|
||||||
|
* @Date 14:47 2025/10/21
|
||||||
|
* @return com.core.common.core.domain.R<?>
|
||||||
|
**/
|
||||||
|
@PostMapping(value = "cancelChangePriceData")
|
||||||
|
public R<?> cancelChangePriceData(@RequestParam String busNo) {
|
||||||
|
return this.adjustPriceService.cancelChangePriceData(busNo);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Desc: 根据供应商和药品名称加载要修改的药品数据
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @Author raymond
|
||||||
|
* @Date 08:47 2025/10/15
|
||||||
|
* @return com.core.common.core.domain.R<?>
|
||||||
|
**/
|
||||||
|
@PostMapping(value = "submitChangePriceData")
|
||||||
|
public R<?> submitChangePriceData(@RequestBody List<AdjustPriceDataVo> dataVoList) {
|
||||||
|
return adjustPriceService.submitChangePriceData(dataVoList);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Desc: 根据 单据号 药品调价单 查询详情
|
||||||
|
*
|
||||||
|
* @param busNo
|
||||||
|
* @Author raymond
|
||||||
|
* @Date 12:01 2025/10/21
|
||||||
|
* @return com.core.common.core.domain.R<?>
|
||||||
|
**/
|
||||||
|
@PostMapping(value = "searchChangePriceDataByMed")
|
||||||
|
public R<?> searchChangePriceDataByMed(@RequestParam String busNo) {
|
||||||
|
if (StringUtils.isEmpty(busNo)) {
|
||||||
|
return R.fail();
|
||||||
|
}
|
||||||
|
return this.adjustPriceService.searchChangePriceDataByMed(busNo);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Desc: 根据 单据号 耗材调价单 查询详情
|
||||||
|
*
|
||||||
|
* @param busNo
|
||||||
|
* @Author raymond
|
||||||
|
* @Date 12:01 2025/10/21
|
||||||
|
* @return com.core.common.core.domain.R<?>
|
||||||
|
**/
|
||||||
|
@PostMapping(value = "searchChangePriceDataByDevice")
|
||||||
|
public R<?> searchChangePriceDataByDevice(@RequestParam String busNo) {
|
||||||
|
if (StringUtils.isEmpty(busNo)) {
|
||||||
|
return R.fail();
|
||||||
|
}
|
||||||
|
return this.adjustPriceService.searchChangePriceDataByDevice(busNo);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Desc: 根据 单据号 诊疗调价单 查询详情
|
||||||
|
*
|
||||||
|
* @param busNo
|
||||||
|
* @Author raymond
|
||||||
|
* @Date 12:01 2025/10/21
|
||||||
|
* @return com.core.common.core.domain.R<?>
|
||||||
|
**/
|
||||||
|
@PostMapping(value = "searchChangePriceDataByActivity")
|
||||||
|
public R<?> searchChangePriceDataByActivity(@RequestParam String busNo) {
|
||||||
|
if (StringUtils.isEmpty(busNo)) {
|
||||||
|
return R.fail();
|
||||||
|
}
|
||||||
|
return this.adjustPriceService.searchChangePriceDataByActivity(busNo);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Desc: 根据 单据号 挂号调价单 查询详情
|
||||||
|
*
|
||||||
|
* @param busNo
|
||||||
|
* @Author raymond
|
||||||
|
* @Date 12:01 2025/10/21
|
||||||
|
* @return com.core.common.core.domain.R<?>
|
||||||
|
**/
|
||||||
|
@PostMapping(value = "searchChangePriceDataByHealth")
|
||||||
|
public R<?> searchChangePriceDataByHealth(@RequestParam String busNo) {
|
||||||
|
if (StringUtils.isEmpty(busNo)) {
|
||||||
|
return R.fail();
|
||||||
|
}
|
||||||
|
return this.adjustPriceService.searchChangePriceDataByHealth(busNo);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,72 @@
|
|||||||
|
package com.openhis.web.adjustprice.dto;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ClassName AdjustPriceDataVo
|
||||||
|
* @Description TODO
|
||||||
|
* @Author raymond
|
||||||
|
* @Date 2025/10/16 08:31
|
||||||
|
* @Version 1.0
|
||||||
|
**/
|
||||||
|
@Data
|
||||||
|
public class AdjustPriceDataVo {
|
||||||
|
/**
|
||||||
|
* 表ID
|
||||||
|
*/
|
||||||
|
private Long itemId;
|
||||||
|
/**
|
||||||
|
* 分类 0、药品;1、耗材;2、诊疗;3、挂号
|
||||||
|
*/
|
||||||
|
private Integer categoryType;
|
||||||
|
/**
|
||||||
|
* 改价原因
|
||||||
|
*/
|
||||||
|
private String reason;
|
||||||
|
/**
|
||||||
|
* 新进货价
|
||||||
|
*/
|
||||||
|
private BigDecimal newBuyingPrice;
|
||||||
|
/**
|
||||||
|
* 新售价
|
||||||
|
*/
|
||||||
|
private BigDecimal newRetailPrice;
|
||||||
|
/**
|
||||||
|
* 经手人
|
||||||
|
*/
|
||||||
|
private Long practitionerId;
|
||||||
|
/**
|
||||||
|
* 每个批次影响数量
|
||||||
|
*/
|
||||||
|
private BigDecimal quantity;
|
||||||
|
/**
|
||||||
|
* 总数量
|
||||||
|
*/
|
||||||
|
private BigDecimal totalQuantity;
|
||||||
|
/**
|
||||||
|
* 表名
|
||||||
|
*/
|
||||||
|
private String itemTable;
|
||||||
|
/**
|
||||||
|
* 单据号
|
||||||
|
*/
|
||||||
|
private String busNo;
|
||||||
|
|
||||||
|
private String name;
|
||||||
|
/**
|
||||||
|
* 批次号
|
||||||
|
*/
|
||||||
|
private String lotNumber;
|
||||||
|
/**
|
||||||
|
* 单位
|
||||||
|
*/
|
||||||
|
private String unitCode;
|
||||||
|
/**
|
||||||
|
* 位置
|
||||||
|
*/
|
||||||
|
private Long locationId;
|
||||||
|
|
||||||
|
private BigDecimal finalTotalQuantity;
|
||||||
|
}
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
package com.openhis.web.adjustprice.dto;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ClassName AdjustPriceManagerSearchParam
|
||||||
|
* @Description 改价管理 查询条件
|
||||||
|
* @Author raymond
|
||||||
|
* @Date 2025/10/24 16:23
|
||||||
|
* @Version 1.0
|
||||||
|
**/
|
||||||
|
@Data
|
||||||
|
@Accessors(chain = true)
|
||||||
|
public class AdjustPriceManagerSearchParam {
|
||||||
|
|
||||||
|
/** 审核状态 */
|
||||||
|
private Integer statusEnum;
|
||||||
|
|
||||||
|
/** 单据类型 */
|
||||||
|
private Integer itemCategoryEnum;
|
||||||
|
/**
|
||||||
|
* 单据时间
|
||||||
|
*/
|
||||||
|
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
|
||||||
|
@DateTimeFormat(pattern = "yyyy-MM-dd")
|
||||||
|
private Date applicantTime;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,96 @@
|
|||||||
|
package com.openhis.web.adjustprice.dto;
|
||||||
|
|
||||||
|
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;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ClassName ChangePricePageDto
|
||||||
|
* @Description TODO
|
||||||
|
* @Author raymond
|
||||||
|
* @Date 2025/10/31 17:35
|
||||||
|
* @Version 1.0
|
||||||
|
**/
|
||||||
|
@Data
|
||||||
|
public class ChangePriceDataDto {
|
||||||
|
|
||||||
|
/** 批次号 */
|
||||||
|
private String originLotNumber;
|
||||||
|
|
||||||
|
/** 改价申请人id */
|
||||||
|
private Long applicantId;
|
||||||
|
|
||||||
|
/** 目标枚举 药品、耗材、诊疗、挂号 */
|
||||||
|
private Integer itemCategoryEnum;
|
||||||
|
private String itemCategoryEnum_Text;
|
||||||
|
|
||||||
|
/** 药品ID、耗材ID、诊疗ID、挂号ID */
|
||||||
|
@JsonSerialize(using = ToStringSerializer.class)
|
||||||
|
private Long itemId;
|
||||||
|
/**
|
||||||
|
* 获取名称
|
||||||
|
*/
|
||||||
|
private String itemName;
|
||||||
|
/** 原进货价 */
|
||||||
|
private BigDecimal originBuyingPrice;
|
||||||
|
|
||||||
|
/** 原零售价价格 */
|
||||||
|
private BigDecimal originRetailPrice;
|
||||||
|
|
||||||
|
/** 当前品库存量 */
|
||||||
|
private BigDecimal itemQuantity;
|
||||||
|
|
||||||
|
/** 当前业务批次号 */
|
||||||
|
private String busNo;
|
||||||
|
|
||||||
|
/** 改价申请时间 */
|
||||||
|
private Date applicantTime;
|
||||||
|
|
||||||
|
/** 新进货价 */
|
||||||
|
private BigDecimal newBuyingPrice;
|
||||||
|
|
||||||
|
/** 新零售价 */
|
||||||
|
private BigDecimal newRetailPrice;
|
||||||
|
|
||||||
|
/** 物品计量单位 */
|
||||||
|
private String unitCode;
|
||||||
|
|
||||||
|
/** 审批状态 */
|
||||||
|
private Integer statusEnum;
|
||||||
|
private Integer statusEnum_Text;
|
||||||
|
|
||||||
|
/** 批次号 */
|
||||||
|
private String lotNumber;
|
||||||
|
|
||||||
|
/** 条件理由 */
|
||||||
|
private String reason;
|
||||||
|
|
||||||
|
/** 零售价盈负差*/
|
||||||
|
private BigDecimal differenceRetailPrice;
|
||||||
|
/**进货价盈负差*/
|
||||||
|
private BigDecimal differenceBuyingPrice;
|
||||||
|
/**
|
||||||
|
* 科室名称
|
||||||
|
*/
|
||||||
|
private String orgName;
|
||||||
|
/**
|
||||||
|
* 价格主表ID
|
||||||
|
*/
|
||||||
|
@JsonSerialize(using = ToStringSerializer.class)
|
||||||
|
private Long chargeId;
|
||||||
|
/**
|
||||||
|
* 调价表ID
|
||||||
|
*/
|
||||||
|
@JsonSerialize(using = ToStringSerializer.class)
|
||||||
|
private Long changePriceRecordId;
|
||||||
|
|
||||||
|
private String label;
|
||||||
|
/**
|
||||||
|
* 规格
|
||||||
|
*/
|
||||||
|
private String totalVolume;
|
||||||
|
}
|
||||||
@@ -0,0 +1,67 @@
|
|||||||
|
package com.openhis.web.adjustprice.dto;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
import com.openhis.common.annotation.Dict;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ClassName ChangePricePageDto
|
||||||
|
* @Description 改价业务分页dto
|
||||||
|
* @Author raymond
|
||||||
|
* @Date 2025/11/1 22:53
|
||||||
|
* @Version 1.0
|
||||||
|
**/
|
||||||
|
@Data
|
||||||
|
public class ChangePricePageDto {
|
||||||
|
|
||||||
|
/** 单据号 */
|
||||||
|
private String busNo;
|
||||||
|
|
||||||
|
/** 状态 */
|
||||||
|
private Integer statusEnum;
|
||||||
|
private String statusEnum_enumText;
|
||||||
|
|
||||||
|
/** 审批人 */
|
||||||
|
@Dict(dictCode = "id", dictText = "name", dictTable = "adm_practitioner")
|
||||||
|
private Long approverId;
|
||||||
|
private String approverId_dictText;
|
||||||
|
|
||||||
|
/** 审批时间 */
|
||||||
|
private Date approvalTime;
|
||||||
|
|
||||||
|
/** 申请人 */
|
||||||
|
@Dict(dictCode = "id", dictText = "name", dictTable = "adm_practitioner")
|
||||||
|
private Long applicantId;
|
||||||
|
private String applicantId_dictText;
|
||||||
|
|
||||||
|
/** 申请时间 */
|
||||||
|
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
private Date applicantTime;
|
||||||
|
|
||||||
|
/** 制单日期 */
|
||||||
|
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
private Date createTime;
|
||||||
|
|
||||||
|
/** 备注 */
|
||||||
|
private String reason;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 24、药品
|
||||||
|
*/
|
||||||
|
private Integer itemCategoryEnum;
|
||||||
|
private String categoryEnum_enumText;
|
||||||
|
|
||||||
|
private BigDecimal originRetailPrice;
|
||||||
|
private BigDecimal originBuyingPrice;
|
||||||
|
private BigDecimal newBuyingPrice;
|
||||||
|
private BigDecimal newRetailPrice;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
package com.openhis.web.adjustprice.dto;
|
|
||||||
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @ClassName SupplyListDto
|
|
||||||
* @Description TODO
|
|
||||||
* @Author raymond
|
|
||||||
* @Date 2025/10/15 16:56
|
|
||||||
* @Version 1.0
|
|
||||||
**/
|
|
||||||
@Data
|
|
||||||
public class SupplyListDto {
|
|
||||||
/**
|
|
||||||
* 供应商ID
|
|
||||||
*/
|
|
||||||
private Long supplyId;
|
|
||||||
/**
|
|
||||||
* 供应商名称
|
|
||||||
*/
|
|
||||||
private String supplyName;
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,155 @@
|
|||||||
|
package com.openhis.web.adjustprice.mapper;
|
||||||
|
|
||||||
|
import com.openhis.web.adjustprice.dto.ChangePriceDataDto;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.toolkit.Constants;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
import com.openhis.web.adjustprice.dto.ChangePricePageDto;
|
||||||
|
import com.openhis.web.inventorymanage.dto.InventorySearchParam;
|
||||||
|
import com.openhis.web.inventorymanage.dto.ReceiptPageDto;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Desc:
|
||||||
|
*
|
||||||
|
* @Author raymond
|
||||||
|
* @Date 14:37 2025/10/15
|
||||||
|
* @return
|
||||||
|
**/
|
||||||
|
@Component
|
||||||
|
public interface AdjustPriceMapper {
|
||||||
|
/**
|
||||||
|
* Desc: 查询单据审批分页列表
|
||||||
|
*
|
||||||
|
* @param page
|
||||||
|
* @param queryWrapper
|
||||||
|
* @param medTypeEnum
|
||||||
|
* @param deviceTypeEnum
|
||||||
|
* @param activityTypeEnum
|
||||||
|
* @param healthTypeEnum
|
||||||
|
* @Author raymond
|
||||||
|
* @Date 16:01 2025/10/24
|
||||||
|
* @return com.baomidou.mybatisplus.extension.plugins.pagination.Page<com.openhis.web.inventorymanage.dto.ReceiptPageDto>
|
||||||
|
**/
|
||||||
|
Page<ReceiptPageDto> selectInventoryReceiptPage(@Param("page") Page<ReceiptPageDto> page,
|
||||||
|
@Param(Constants.WRAPPER) QueryWrapper<InventorySearchParam> queryWrapper,
|
||||||
|
@Param("medTypeEnum") Integer medTypeEnum, @Param("deviceTypeEnum") Integer deviceTypeEnum,
|
||||||
|
@Param("activityTypeEnum") Integer activityTypeEnum, @Param("healthTypeEnum") Integer healthTypeEnum);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Desc: 根据当前人 ID 查询提交的调价申请记录
|
||||||
|
*
|
||||||
|
* @param page
|
||||||
|
* @param queryWrapper
|
||||||
|
* @param medCategory
|
||||||
|
* @param deviceCategory
|
||||||
|
* @param activityCategory
|
||||||
|
* @param healthCategory
|
||||||
|
* @param applicantId
|
||||||
|
* @Author raymond
|
||||||
|
* @Date 00:59 2025/11/2
|
||||||
|
* @return com.baomidou.mybatisplus.extension.plugins.pagination.Page<com.openhis.web.adjustprice.dto.ChangePricePageDto>
|
||||||
|
**/
|
||||||
|
Page<ChangePricePageDto> searchChangePriceDataToPage(@Param("page") Page<ReceiptPageDto> page,
|
||||||
|
@Param(Constants.WRAPPER) QueryWrapper<InventorySearchParam> queryWrapper,
|
||||||
|
@Param("medCategory") Integer medCategory, @Param("deviceCategory") Integer deviceCategory,
|
||||||
|
@Param("activityCategory") Integer activityCategory, @Param("healthCategory") Integer healthCategory,
|
||||||
|
@Param("applicantId") Long applicantId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Desc: 根据条件 查询 药品调价单
|
||||||
|
* @param busNo
|
||||||
|
* @param categoryEnum
|
||||||
|
* @param statusEnum
|
||||||
|
* @Author raymond
|
||||||
|
* @Date 09:46 2025/11/2
|
||||||
|
* @return java.util.List<com.openhis.administration.dto.ChangePriceDataDto>
|
||||||
|
**/
|
||||||
|
List<ChangePriceDataDto> searchMedChangePriceByBusNo(@Param("busNo") String busNo, @Param("categoryEnum") Integer categoryEnum, @Param("statusEnum") Integer statusEnum);
|
||||||
|
/**
|
||||||
|
* Desc: 根据条件 查询 药品调价单
|
||||||
|
* @param itemId
|
||||||
|
* @param categoryEnum
|
||||||
|
* @param statusEnum
|
||||||
|
* @Author raymond
|
||||||
|
* @Date 07:34 2025/11/4
|
||||||
|
* @return java.util.List<com.openhis.administration.dto.ChangePriceDataDto>
|
||||||
|
**/
|
||||||
|
List<ChangePriceDataDto> searchMedChangePriceByItemId(@Param("itemId") Long itemId,@Param("categoryEnum") Integer categoryEnum,@Param("statusEnum") Integer statusEnum);
|
||||||
|
/**
|
||||||
|
* Desc: 根据条件 查询 耗材调价单
|
||||||
|
* @param busNo
|
||||||
|
* @param categoryEnum
|
||||||
|
* @param statusEnum
|
||||||
|
* @Author raymond
|
||||||
|
* @Date 09:46 2025/11/2
|
||||||
|
* @return java.util.List<com.openhis.administration.dto.ChangePriceDataDto>
|
||||||
|
**/
|
||||||
|
List<ChangePriceDataDto> searchDeviceChangePriceByBusNo(@Param("busNo") String busNo,@Param("categoryEnum") Integer categoryEnum,@Param("statusEnum") Integer statusEnum);
|
||||||
|
/**
|
||||||
|
* Desc: 根据条件 查询 耗材调价单
|
||||||
|
* @param itemId
|
||||||
|
* @param categoryEnum
|
||||||
|
* @param statusEnum
|
||||||
|
* @Author raymond
|
||||||
|
* @Date 07:33 2025/11/4
|
||||||
|
* @return java.util.List<com.openhis.administration.dto.ChangePriceDataDto>
|
||||||
|
**/
|
||||||
|
List<ChangePriceDataDto> searchDeviceChangePriceByItemId(@Param("itemId") Long itemId,@Param("categoryEnum") Integer categoryEnum,@Param("statusEnum") Integer statusEnum);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Desc: 根据条件 查询 诊疗调价单
|
||||||
|
* @param busNo
|
||||||
|
* @param categoryEnum
|
||||||
|
* @param statusEnum
|
||||||
|
* @Author raymond
|
||||||
|
* @Date 09:46 2025/11/2
|
||||||
|
* @return java.util.List<com.openhis.administration.dto.ChangePriceDataDto>
|
||||||
|
**/
|
||||||
|
List<ChangePriceDataDto> searchActivityChangePriceByBusNo(@Param("busNo") String busNo,@Param("categoryEnum") Integer categoryEnum,@Param("statusEnum") Integer statusEnum);
|
||||||
|
/**
|
||||||
|
* Desc: 根据条件 查询 诊疗调价单
|
||||||
|
* @param itemId
|
||||||
|
* @param categoryEnum
|
||||||
|
* @param statusEnum
|
||||||
|
* @Author raymond
|
||||||
|
* @Date 07:32 2025/11/4
|
||||||
|
* @return java.util.List<com.openhis.administration.dto.ChangePriceDataDto>
|
||||||
|
**/
|
||||||
|
List<ChangePriceDataDto> searchActivityChangePriceByItemId(@Param("itemId") Long itemId,@Param("categoryEnum") Integer categoryEnum,@Param("statusEnum") Integer statusEnum);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Desc: 根据条件 查询 挂号调价单
|
||||||
|
* @param busNo
|
||||||
|
* @param categoryEnum
|
||||||
|
* @param statusEnum
|
||||||
|
* @Author raymond
|
||||||
|
* @Date 09:46 2025/11/2
|
||||||
|
* @return java.util.List<com.openhis.administration.dto.ChangePriceDataDto>
|
||||||
|
**/
|
||||||
|
List<ChangePriceDataDto> searchHealthChangePriceByBusNo(@Param("busNo") String busNo,@Param("categoryEnum") Integer categoryEnum,@Param("statusEnum") Integer statusEnum);
|
||||||
|
/**
|
||||||
|
* Desc: 根据条件 查询 挂号调价单
|
||||||
|
* @param itemId
|
||||||
|
* @param categoryEnum
|
||||||
|
* @param statusEnum
|
||||||
|
* @Author raymond
|
||||||
|
* @Date 07:31 2025/11/4
|
||||||
|
* @return java.util.List<com.openhis.administration.dto.ChangePriceDataDto>
|
||||||
|
**/
|
||||||
|
List<ChangePriceDataDto> searchHealthChangePriceByItemId(@Param("itemId") Long itemId,@Param("categoryEnum") Integer categoryEnum,@Param("statusEnum") Integer statusEnum);
|
||||||
|
/**
|
||||||
|
* Desc: 根据条件 查询 审批单 审核中的数据
|
||||||
|
* @param busNo
|
||||||
|
* @param statusEnum
|
||||||
|
* @Author raymond
|
||||||
|
* @Date 10:36 2025/11/2
|
||||||
|
* @return java.util.List<com.openhis.administration.dto.ChangePriceDataDto>
|
||||||
|
**/
|
||||||
|
List<ChangePriceDataDto> searchChangePriceRecordDataByBusNo(@Param("busNo") String busNo,@Param("statusEnum") Integer statusEnum);
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
package com.openhis.web.adjustprice.mapper;
|
|
||||||
|
|
||||||
import com.openhis.web.adjustprice.dto.SupplyListDto;
|
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Desc:
|
|
||||||
* @Author raymond
|
|
||||||
* @Date 14:37 2025/10/15
|
|
||||||
* @return
|
|
||||||
**/
|
|
||||||
@Component
|
|
||||||
public interface SupplyMapper {
|
|
||||||
/**
|
|
||||||
* Desc:
|
|
||||||
* @param
|
|
||||||
* @Author raymond
|
|
||||||
* @Date 17:10 2025/10/15
|
|
||||||
* @return java.util.List<com.openhis.web.paymentmanage.dto.SupplyListDto>
|
|
||||||
**/
|
|
||||||
List<SupplyListDto> searchAllSupplyList();
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
package com.openhis.web.appointmentmanage.appservice;
|
||||||
|
|
||||||
|
import com.core.common.core.domain.R;
|
||||||
|
import com.openhis.appointmentmanage.domain.ClinicRoom;
|
||||||
|
|
||||||
|
public interface IClinicRoomAppService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询诊室列表
|
||||||
|
* @param pageNum 页码
|
||||||
|
* @param pageSize 每页条数
|
||||||
|
* @param orgName 卫生机构名称
|
||||||
|
* @param roomName 诊室名称
|
||||||
|
* @return 分页查询结果
|
||||||
|
*/
|
||||||
|
R<?> selectClinicRoomPage(Integer pageNum, Integer pageSize, String orgName, String roomName);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询诊室详情
|
||||||
|
* @param id 诊室ID
|
||||||
|
* @return 诊室详情
|
||||||
|
*/
|
||||||
|
R<?> selectClinicRoomById(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增诊室
|
||||||
|
* @param clinicRoom 诊室信息
|
||||||
|
* @return 新增结果
|
||||||
|
*/
|
||||||
|
R<?> insertClinicRoom(ClinicRoom clinicRoom);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新诊室
|
||||||
|
* @param clinicRoom 诊室信息
|
||||||
|
* @return 更新结果
|
||||||
|
*/
|
||||||
|
R<?> updateClinicRoom(ClinicRoom clinicRoom);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除诊室
|
||||||
|
* @param id 诊室ID
|
||||||
|
* @return 删除结果
|
||||||
|
*/
|
||||||
|
R<?> deleteClinicRoomById(Long id);
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
package com.openhis.web.appointmentmanage.appservice;
|
||||||
|
|
||||||
|
import com.core.common.core.domain.R;
|
||||||
|
import com.openhis.administration.domain.DoctorSchedule;
|
||||||
|
|
||||||
|
public interface IDoctorScheduleAppService {
|
||||||
|
|
||||||
|
R<?> getDoctorScheduleList();
|
||||||
|
|
||||||
|
R<?> addDoctorSchedule(DoctorSchedule doctorSchedule);
|
||||||
|
|
||||||
|
R<?> removeDoctorSchedule(Integer doctorScheduleId);
|
||||||
|
}
|
||||||
@@ -0,0 +1,121 @@
|
|||||||
|
package com.openhis.web.appointmentmanage.appservice.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
import com.core.common.core.domain.R;
|
||||||
|
import com.openhis.appointmentmanage.domain.ClinicRoom;
|
||||||
|
import com.openhis.appointmentmanage.service.IClinicRoomService;
|
||||||
|
import com.openhis.web.appointmentmanage.appservice.IClinicRoomAppService;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class ClinicRoomAppServiceImpl implements IClinicRoomAppService {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private IClinicRoomService clinicRoomService;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public R<?> selectClinicRoomPage(Integer pageNum, Integer pageSize, String orgName, String roomName) {
|
||||||
|
// 构建查询条件
|
||||||
|
ClinicRoom clinicRoom = new ClinicRoom();
|
||||||
|
if (orgName != null && ObjectUtil.isNotEmpty(orgName)) {
|
||||||
|
clinicRoom.setOrgName(orgName);
|
||||||
|
}
|
||||||
|
if (roomName != null && ObjectUtil.isNotEmpty(roomName)) {
|
||||||
|
clinicRoom.setRoomName(roomName);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 分页查询
|
||||||
|
Page<ClinicRoom> page = new Page<>(pageNum, pageSize);
|
||||||
|
Page<ClinicRoom> result = clinicRoomService.selectClinicRoomPage(page, clinicRoom);
|
||||||
|
|
||||||
|
return R.ok(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public R<?> selectClinicRoomById(Long id) {
|
||||||
|
ClinicRoom clinicRoom = clinicRoomService.selectClinicRoomById(id);
|
||||||
|
if (clinicRoom == null) {
|
||||||
|
return R.fail(404, "诊室不存在");
|
||||||
|
}
|
||||||
|
return R.ok(clinicRoom);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public R<?> insertClinicRoom(ClinicRoom clinicRoom) {
|
||||||
|
// 数据校验
|
||||||
|
if (ObjectUtil.isEmpty(clinicRoom.getRoomName())) {
|
||||||
|
return R.fail(400, "诊室名称不能为空");
|
||||||
|
}
|
||||||
|
if (ObjectUtil.isEmpty(clinicRoom.getDepartment())) {
|
||||||
|
return R.fail(400, "科室名称不能为空");
|
||||||
|
}
|
||||||
|
if (clinicRoom.getRoomName().length() > 50) {
|
||||||
|
return R.fail(400, "诊室名称长度不能超过50个字符");
|
||||||
|
}
|
||||||
|
if (clinicRoom.getRemarks() != null && clinicRoom.getRemarks().length() > 500) {
|
||||||
|
return R.fail(400, "备注长度不能超过500个字符");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增诊室
|
||||||
|
int result = clinicRoomService.insertClinicRoom(clinicRoom);
|
||||||
|
if (result > 0) {
|
||||||
|
return R.ok(null, "新增成功");
|
||||||
|
} else {
|
||||||
|
return R.fail("新增失败");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public R<?> updateClinicRoom(ClinicRoom clinicRoom) {
|
||||||
|
// 数据校验
|
||||||
|
if (ObjectUtil.isEmpty(clinicRoom.getId())) {
|
||||||
|
return R.fail(400, "诊室ID不能为空");
|
||||||
|
}
|
||||||
|
if (ObjectUtil.isEmpty(clinicRoom.getRoomName())) {
|
||||||
|
return R.fail(400, "诊室名称不能为空");
|
||||||
|
}
|
||||||
|
if (ObjectUtil.isEmpty(clinicRoom.getDepartment())) {
|
||||||
|
return R.fail(400, "科室名称不能为空");
|
||||||
|
}
|
||||||
|
if (clinicRoom.getRoomName().length() > 50) {
|
||||||
|
return R.fail(400, "诊室名称长度不能超过50个字符");
|
||||||
|
}
|
||||||
|
if (clinicRoom.getRemarks() != null && clinicRoom.getRemarks().length() > 500) {
|
||||||
|
return R.fail(400, "备注长度不能超过500个字符");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 检查诊室是否存在
|
||||||
|
ClinicRoom existingClinicRoom = clinicRoomService.selectClinicRoomById(clinicRoom.getId());
|
||||||
|
if (existingClinicRoom == null) {
|
||||||
|
return R.fail(404, "诊室不存在");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 更新诊室
|
||||||
|
int result = clinicRoomService.updateClinicRoom(clinicRoom);
|
||||||
|
if (result > 0) {
|
||||||
|
return R.ok(null, "修改成功");
|
||||||
|
} else {
|
||||||
|
return R.fail("修改失败");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public R<?> deleteClinicRoomById(Long id) {
|
||||||
|
// 检查诊室是否存在
|
||||||
|
ClinicRoom existingClinicRoom = clinicRoomService.selectClinicRoomById(id);
|
||||||
|
if (existingClinicRoom == null) {
|
||||||
|
return R.fail(404, "诊室不存在");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除诊室
|
||||||
|
int result = clinicRoomService.deleteClinicRoomById(id);
|
||||||
|
if (result > 0) {
|
||||||
|
return R.ok(null, "删除成功");
|
||||||
|
} else {
|
||||||
|
return R.fail("删除失败");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
package com.openhis.web.appointmentmanage.appservice.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
|
import com.core.common.core.domain.R;
|
||||||
|
import com.openhis.administration.domain.DoctorSchedule;
|
||||||
|
import com.openhis.administration.service.IDoctorScheduleService;
|
||||||
|
import com.openhis.web.appointmentmanage.appservice.IDoctorScheduleAppService;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class DoctorScheduleAppServiceImpl implements IDoctorScheduleAppService {
|
||||||
|
@Resource
|
||||||
|
private IDoctorScheduleService doctorScheduleService;
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public R<?> getDoctorScheduleList() {
|
||||||
|
List<DoctorSchedule> list = doctorScheduleService.list();
|
||||||
|
return R.ok(list);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public R<?> addDoctorSchedule(DoctorSchedule doctorSchedule) {
|
||||||
|
if (ObjectUtil.isEmpty(doctorSchedule)) {
|
||||||
|
return R.fail("医生排班不能为空");
|
||||||
|
}
|
||||||
|
boolean save = doctorScheduleService.save(doctorSchedule);
|
||||||
|
return R.ok(save);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public R<?> removeDoctorSchedule(Integer doctorScheduleId) {
|
||||||
|
if (doctorScheduleId == null && ObjectUtil.isEmpty(doctorScheduleId)) {
|
||||||
|
return R.fail("排班id不能为空");
|
||||||
|
}
|
||||||
|
boolean remove = doctorScheduleService.removeById(doctorScheduleId);
|
||||||
|
return R.ok(remove);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,73 @@
|
|||||||
|
package com.openhis.web.appointmentmanage.controller;
|
||||||
|
|
||||||
|
import com.core.common.core.domain.R;
|
||||||
|
import com.openhis.appointmentmanage.domain.ClinicRoom;
|
||||||
|
import com.openhis.web.appointmentmanage.appservice.IClinicRoomAppService;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/appoinment/clinic-room")
|
||||||
|
public class ClinicRoomController {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private IClinicRoomAppService clinicRoomAppService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询诊室列表
|
||||||
|
* @param pageNum 页码
|
||||||
|
* @param pageSize 每页条数
|
||||||
|
* @param orgName 卫生机构名称
|
||||||
|
* @param roomName 诊室名称
|
||||||
|
* @return 分页查询结果
|
||||||
|
*/
|
||||||
|
@GetMapping("/page")
|
||||||
|
public R<?> selectClinicRoomPage(
|
||||||
|
@RequestParam(required = true) Integer pageNum,
|
||||||
|
@RequestParam(required = true) Integer pageSize,
|
||||||
|
@RequestParam(required = false) String orgName,
|
||||||
|
@RequestParam(required = false) String roomName) {
|
||||||
|
return clinicRoomAppService.selectClinicRoomPage(pageNum, pageSize, orgName, roomName);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询诊室详情
|
||||||
|
* @param id 诊室ID
|
||||||
|
* @return 诊室详情
|
||||||
|
*/
|
||||||
|
@GetMapping("/{id}")
|
||||||
|
public R<?> selectClinicRoomById(@PathVariable Long id) {
|
||||||
|
return clinicRoomAppService.selectClinicRoomById(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增诊室
|
||||||
|
* @param clinicRoom 诊室信息
|
||||||
|
* @return 新增结果
|
||||||
|
*/
|
||||||
|
@PostMapping
|
||||||
|
public R<?> insertClinicRoom(@RequestBody ClinicRoom clinicRoom) {
|
||||||
|
return clinicRoomAppService.insertClinicRoom(clinicRoom);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新诊室
|
||||||
|
* @param clinicRoom 诊室信息
|
||||||
|
* @return 更新结果
|
||||||
|
*/
|
||||||
|
@PutMapping
|
||||||
|
public R<?> updateClinicRoom(@RequestBody ClinicRoom clinicRoom) {
|
||||||
|
return clinicRoomAppService.updateClinicRoom(clinicRoom);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除诊室
|
||||||
|
* @param id 诊室ID
|
||||||
|
* @return 删除结果
|
||||||
|
*/
|
||||||
|
@DeleteMapping("/{id}")
|
||||||
|
public R<?> deleteClinicRoomById(@PathVariable Long id) {
|
||||||
|
return clinicRoomAppService.deleteClinicRoomById(id);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -31,8 +31,8 @@ public class DeptController {
|
|||||||
* */
|
* */
|
||||||
@GetMapping("/search")
|
@GetMapping("/search")
|
||||||
public R<?> searchDept(
|
public R<?> searchDept(
|
||||||
@RequestParam(required = false) Integer pageNo,
|
@RequestParam(required = false,defaultValue = "1") Integer pageNo,
|
||||||
@RequestParam(required = false) Integer pageSize,
|
@RequestParam(required = false,defaultValue = "10") Integer pageSize,
|
||||||
@RequestParam(required = false)String orgName,
|
@RequestParam(required = false)String orgName,
|
||||||
@RequestParam(required = false)String deptName
|
@RequestParam(required = false)String deptName
|
||||||
){
|
){
|
||||||
|
|||||||
@@ -0,0 +1,44 @@
|
|||||||
|
package com.openhis.web.appointmentmanage.controller;
|
||||||
|
|
||||||
|
import com.core.common.core.domain.R;
|
||||||
|
import com.openhis.administration.domain.DoctorSchedule;
|
||||||
|
import com.openhis.web.appointmentmanage.appservice.IDoctorScheduleAppService;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import javax.websocket.server.PathParam;
|
||||||
|
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/doctor-schedule")
|
||||||
|
public class DoctorScheduleController {
|
||||||
|
@Resource
|
||||||
|
private IDoctorScheduleAppService doctorScheduleAppService;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 获取医生排班List
|
||||||
|
*
|
||||||
|
* */
|
||||||
|
@GetMapping("/list")
|
||||||
|
public R<?> getDoctorScheduleList() {
|
||||||
|
return R.ok(doctorScheduleAppService.getDoctorScheduleList());
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 新增医生排班
|
||||||
|
*
|
||||||
|
* */
|
||||||
|
@PostMapping("/add")
|
||||||
|
public R<?> addDoctorSchedule(@RequestBody DoctorSchedule doctorSchedule) {
|
||||||
|
return R.ok(doctorScheduleAppService.addDoctorSchedule(doctorSchedule));
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 删除医生排班
|
||||||
|
*
|
||||||
|
* */
|
||||||
|
@DeleteMapping("/delete/{doctorScheduleId}")
|
||||||
|
public R<?> removeDoctorSchedule(@PathVariable Integer doctorScheduleId){
|
||||||
|
return R.ok(doctorScheduleAppService.removeDoctorSchedule(doctorScheduleId));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
package com.openhis.web.appointmentmanage.mapper;
|
||||||
|
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
@Repository
|
||||||
|
public interface DoctorScheduleAppMapper {
|
||||||
|
}
|
||||||
@@ -6,6 +6,9 @@ import java.util.stream.Collectors;
|
|||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
|
import com.openhis.common.constant.CommonConstants;
|
||||||
|
import com.openhis.common.utils.DateTimeUtils;
|
||||||
|
import com.openhis.workflow.mapper.ActivityDefinitionMapper;
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
@@ -46,6 +49,9 @@ public class OrganizationLocationAppServiceImpl implements IOrganizationLocation
|
|||||||
@Autowired
|
@Autowired
|
||||||
private IOrganizationLocationService organizationLocationService;
|
private IOrganizationLocationService organizationLocationService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ActivityDefinitionMapper activityDefinitionMapper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 机构位置关系初始化
|
* 机构位置关系初始化
|
||||||
*
|
*
|
||||||
@@ -126,6 +132,25 @@ public class OrganizationLocationAppServiceImpl implements IOrganizationLocation
|
|||||||
OrganizationLocation orgLoc = new OrganizationLocation();
|
OrganizationLocation orgLoc = new OrganizationLocation();
|
||||||
BeanUtils.copyProperties(orgLocQueryDto, orgLoc);
|
BeanUtils.copyProperties(orgLocQueryDto, orgLoc);
|
||||||
|
|
||||||
|
Long activityDefinitionId = orgLoc.getActivityDefinitionId();
|
||||||
|
String activityName = activityDefinitionId != null ? activityDefinitionMapper.selectById(activityDefinitionId).getName() : "";
|
||||||
|
|
||||||
|
List<OrganizationLocation> organizationLocationList =
|
||||||
|
organizationLocationService.getOrgLocListByOrgIdAndActivityDefinitionId(orgLoc.getActivityDefinitionId());
|
||||||
|
organizationLocationList = (orgLoc.getId() != null)
|
||||||
|
? organizationLocationList.stream().filter(item -> !orgLoc.getId().equals(item.getId())).toList()
|
||||||
|
: organizationLocationList;
|
||||||
|
|
||||||
|
if (!organizationLocationList.isEmpty())
|
||||||
|
for (OrganizationLocation organizationLocation : organizationLocationList)
|
||||||
|
if (DateTimeUtils.isOverlap(organizationLocation.getStartTime(), organizationLocation.getEndTime(),
|
||||||
|
orgLoc.getStartTime(), orgLoc.getEndTime())) {
|
||||||
|
String organizationName =
|
||||||
|
organizationService.getById(organizationLocation.getOrganizationId()).getName();
|
||||||
|
return R.fail("当前诊疗:" + activityName + CommonConstants.Common.DASH + orgLoc.getStartTime()
|
||||||
|
+ CommonConstants.Common.DASH + orgLoc.getEndTime() + "与" + organizationName + "时间冲突");
|
||||||
|
}
|
||||||
|
|
||||||
if (orgLocQueryDto.getId() != null) {
|
if (orgLocQueryDto.getId() != null) {
|
||||||
// 更新机构位置信息
|
// 更新机构位置信息
|
||||||
organizationLocationService.updateById(orgLoc);
|
organizationLocationService.updateById(orgLoc);
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ import java.util.stream.Collectors;
|
|||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
import com.openhis.common.enums.AdministrativeGender;
|
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
@@ -15,6 +14,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.core.common.core.domain.R;
|
import com.core.common.core.domain.R;
|
||||||
|
import com.core.common.utils.AssignSeqUtil;
|
||||||
import com.core.common.utils.ChineseConvertUtils;
|
import com.core.common.utils.ChineseConvertUtils;
|
||||||
import com.core.common.utils.MessageUtils;
|
import com.core.common.utils.MessageUtils;
|
||||||
import com.core.common.utils.SecurityUtils;
|
import com.core.common.utils.SecurityUtils;
|
||||||
@@ -29,6 +29,8 @@ import com.openhis.administration.service.IPractitionerRoleService;
|
|||||||
import com.openhis.administration.service.IPractitionerService;
|
import com.openhis.administration.service.IPractitionerService;
|
||||||
import com.openhis.common.constant.PromptMsgConstant;
|
import com.openhis.common.constant.PromptMsgConstant;
|
||||||
import com.openhis.common.enums.AccountStatus;
|
import com.openhis.common.enums.AccountStatus;
|
||||||
|
import com.openhis.common.enums.AdministrativeGender;
|
||||||
|
import com.openhis.common.enums.AssignSeqEnum;
|
||||||
import com.openhis.common.enums.PractitionerRoles;
|
import com.openhis.common.enums.PractitionerRoles;
|
||||||
import com.openhis.common.utils.HisQueryUtils;
|
import com.openhis.common.utils.HisQueryUtils;
|
||||||
import com.openhis.web.basedatamanage.appservice.IPractitionerAppService;
|
import com.openhis.web.basedatamanage.appservice.IPractitionerAppService;
|
||||||
@@ -59,6 +61,9 @@ public class PractitionerAppServiceImpl implements IPractitionerAppService {
|
|||||||
@Resource
|
@Resource
|
||||||
ISysTenantService sysTenantService;
|
ISysTenantService sysTenantService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private AssignSeqUtil assignSeqUtil;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 新增用户及参与者
|
* 新增用户及参与者
|
||||||
*
|
*
|
||||||
@@ -108,8 +113,9 @@ public class PractitionerAppServiceImpl implements IPractitionerAppService {
|
|||||||
// 新增 adm_practitioner
|
// 新增 adm_practitioner
|
||||||
Practitioner practitioner = new Practitioner();
|
Practitioner practitioner = new Practitioner();
|
||||||
practitioner.setActiveFlag(AccountStatus.ACTIVE.getValue()); // 活动标记
|
practitioner.setActiveFlag(AccountStatus.ACTIVE.getValue()); // 活动标记
|
||||||
|
practitioner.setBusNo(assignSeqUtil.getSeq(AssignSeqEnum.PRACTITIONER_NO.getPrefix(), 8)); // 编号
|
||||||
practitioner.setName(nickName); // 姓名
|
practitioner.setName(nickName); // 姓名
|
||||||
practitioner.setGenderEnum(sex==null? AdministrativeGender.UNKNOWN.getValue() : Integer.parseInt(sex)); // 性别
|
practitioner.setGenderEnum(sex == null ? AdministrativeGender.UNKNOWN.getValue() : Integer.parseInt(sex)); // 性别
|
||||||
practitioner.setBirthDate(userAndPractitionerDto.getBirthDate()); // 出生日期
|
practitioner.setBirthDate(userAndPractitionerDto.getBirthDate()); // 出生日期
|
||||||
practitioner.setPhone(phonenumber); // 电话
|
practitioner.setPhone(phonenumber); // 电话
|
||||||
practitioner.setAddress(userAndPractitionerDto.getAddress()); // 地址
|
practitioner.setAddress(userAndPractitionerDto.getAddress()); // 地址
|
||||||
@@ -306,7 +312,7 @@ public class PractitionerAppServiceImpl implements IPractitionerAppService {
|
|||||||
Practitioner practitioner = new Practitioner();
|
Practitioner practitioner = new Practitioner();
|
||||||
practitioner.setId(practitionerId);
|
practitioner.setId(practitionerId);
|
||||||
practitioner.setName(nickName); // 姓名
|
practitioner.setName(nickName); // 姓名
|
||||||
practitioner.setGenderEnum(sex==null? AdministrativeGender.UNKNOWN.getValue() : Integer.parseInt(sex)); // 性别
|
practitioner.setGenderEnum(sex == null ? AdministrativeGender.UNKNOWN.getValue() : Integer.parseInt(sex)); // 性别
|
||||||
practitioner.setBirthDate(userAndPractitionerDto.getBirthDate()); // 出生日期
|
practitioner.setBirthDate(userAndPractitionerDto.getBirthDate()); // 出生日期
|
||||||
practitioner.setPhone(phonenumber); // 电话
|
practitioner.setPhone(phonenumber); // 电话
|
||||||
practitioner.setAddress(userAndPractitionerDto.getAddress()); // 地址
|
practitioner.setAddress(userAndPractitionerDto.getAddress()); // 地址
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ import java.util.stream.Stream;
|
|||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
import com.openhis.yb.service.YbManager;
|
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
@@ -21,6 +20,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.core.common.core.domain.R;
|
import com.core.common.core.domain.R;
|
||||||
|
import com.core.common.utils.AssignSeqUtil;
|
||||||
import com.core.common.utils.MessageUtils;
|
import com.core.common.utils.MessageUtils;
|
||||||
import com.core.common.utils.SecurityUtils;
|
import com.core.common.utils.SecurityUtils;
|
||||||
import com.core.common.utils.StringUtils;
|
import com.core.common.utils.StringUtils;
|
||||||
@@ -32,12 +32,14 @@ import com.openhis.administration.service.IHealthcareServiceService;
|
|||||||
import com.openhis.common.constant.CommonConstants;
|
import com.openhis.common.constant.CommonConstants;
|
||||||
import com.openhis.common.constant.PromptMsgConstant;
|
import com.openhis.common.constant.PromptMsgConstant;
|
||||||
import com.openhis.common.enums.AccountStatus;
|
import com.openhis.common.enums.AccountStatus;
|
||||||
|
import com.openhis.common.enums.AssignSeqEnum;
|
||||||
import com.openhis.common.enums.PublicationStatus;
|
import com.openhis.common.enums.PublicationStatus;
|
||||||
import com.openhis.common.enums.Whether;
|
import com.openhis.common.enums.Whether;
|
||||||
import com.openhis.common.utils.EnumUtils;
|
import com.openhis.common.utils.EnumUtils;
|
||||||
import com.openhis.common.utils.HisQueryUtils;
|
import com.openhis.common.utils.HisQueryUtils;
|
||||||
import com.openhis.web.basicservice.dto.*;
|
import com.openhis.web.basicservice.dto.*;
|
||||||
import com.openhis.web.basicservice.mapper.HealthcareServiceBizMapper;
|
import com.openhis.web.basicservice.mapper.HealthcareServiceBizMapper;
|
||||||
|
import com.openhis.yb.service.YbManager;
|
||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@@ -58,6 +60,8 @@ public class HealthcareServiceController {
|
|||||||
|
|
||||||
private final YbManager ybService;
|
private final YbManager ybService;
|
||||||
|
|
||||||
|
private final AssignSeqUtil assignSeqUtil;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 服务管理基础数据初始化
|
* 服务管理基础数据初始化
|
||||||
*/
|
*/
|
||||||
@@ -92,6 +96,7 @@ public class HealthcareServiceController {
|
|||||||
// 服务管理-新增
|
// 服务管理-新增
|
||||||
HealthcareService healthcareService = new HealthcareService();
|
HealthcareService healthcareService = new HealthcareService();
|
||||||
BeanUtils.copyProperties(healthcareServiceFormData, healthcareService);
|
BeanUtils.copyProperties(healthcareServiceFormData, healthcareService);
|
||||||
|
// healthcareService.setBusNo(assignSeqUtil.getSeq(AssignSeqEnum.HEALTHCARE_SERVICE_NO.getPrefix(), 8));
|
||||||
HealthcareService healthcareServiceAfterAdd = iHealthcareServiceService.addHealthcareService(healthcareService);
|
HealthcareService healthcareServiceAfterAdd = iHealthcareServiceService.addHealthcareService(healthcareService);
|
||||||
// 同时保存费用定价
|
// 同时保存费用定价
|
||||||
ChargeItemDefinition chargeItemDefinition = new ChargeItemDefinition();
|
ChargeItemDefinition chargeItemDefinition = new ChargeItemDefinition();
|
||||||
|
|||||||
@@ -3,14 +3,14 @@
|
|||||||
*/
|
*/
|
||||||
package com.openhis.web.chargemanage.appservice;
|
package com.openhis.web.chargemanage.appservice;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
import com.core.common.core.domain.R;
|
import com.core.common.core.domain.R;
|
||||||
import com.openhis.web.chargemanage.dto.EncounterPatientPageParam;
|
import com.openhis.web.chargemanage.dto.EncounterPatientPageParam;
|
||||||
import com.openhis.web.chargemanage.dto.EncounterPatientPrescriptionDto;
|
import com.openhis.web.chargemanage.dto.EncounterPatientPrescriptionDto;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 门诊收费 service
|
* 门诊收费 service
|
||||||
*
|
*
|
||||||
@@ -62,4 +62,20 @@ public interface IOutpatientChargeAppService {
|
|||||||
* @return 初始化信息
|
* @return 初始化信息
|
||||||
*/
|
*/
|
||||||
R<?> outpatientChargeInit();
|
R<?> outpatientChargeInit();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 学生医保转自费
|
||||||
|
*
|
||||||
|
* @param encounterId 就诊id
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
R<?> changeToStudentSelfPay(Long encounterId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 学生自费转学生医保
|
||||||
|
*
|
||||||
|
* @param encounterId 就诊id
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
R<?> changeToStudentYbPay(Long encounterId);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -87,7 +87,7 @@ public class InpatientChargeAppServiceImpl implements IInpatientChargeAppService
|
|||||||
encounterPatientPageParam, searchKey,
|
encounterPatientPageParam, searchKey,
|
||||||
new HashSet<>(Arrays.asList(CommonConstants.FieldName.PatientWbStr, CommonConstants.FieldName.PatientPyStr,
|
new HashSet<>(Arrays.asList(CommonConstants.FieldName.PatientWbStr, CommonConstants.FieldName.PatientPyStr,
|
||||||
CommonConstants.FieldName.PatientName, CommonConstants.FieldName.PatientBusNo,
|
CommonConstants.FieldName.PatientName, CommonConstants.FieldName.PatientBusNo,
|
||||||
CommonConstants.FieldName.EncounterBusNo, CommonConstants.FieldName.idCard)),
|
CommonConstants.FieldName.EncounterBusNo, CommonConstants.FieldName.IdCard)),
|
||||||
request);
|
request);
|
||||||
// 就诊患者分页列表
|
// 就诊患者分页列表
|
||||||
Page<EncounterPatientPageDto> encounterPatientPage = inpatientChargeAppMapper
|
Page<EncounterPatientPageDto> encounterPatientPage = inpatientChargeAppMapper
|
||||||
|
|||||||
@@ -88,7 +88,7 @@ public class OutpatientChargeAppServiceImpl implements IOutpatientChargeAppServi
|
|||||||
encounterPatientPageParam, searchKey,
|
encounterPatientPageParam, searchKey,
|
||||||
new HashSet<>(Arrays.asList(CommonConstants.FieldName.PatientWbStr, CommonConstants.FieldName.PatientPyStr,
|
new HashSet<>(Arrays.asList(CommonConstants.FieldName.PatientWbStr, CommonConstants.FieldName.PatientPyStr,
|
||||||
CommonConstants.FieldName.PatientName, CommonConstants.FieldName.PatientBusNo,
|
CommonConstants.FieldName.PatientName, CommonConstants.FieldName.PatientBusNo,
|
||||||
CommonConstants.FieldName.EncounterBusNo, CommonConstants.FieldName.idCard)),
|
CommonConstants.FieldName.EncounterBusNo, CommonConstants.FieldName.IdCard)),
|
||||||
request);
|
request);
|
||||||
// 就诊患者分页列表
|
// 就诊患者分页列表
|
||||||
Page<EncounterPatientPageDto> encounterPatientPage = outpatientChargeAppMapper
|
Page<EncounterPatientPageDto> encounterPatientPage = outpatientChargeAppMapper
|
||||||
@@ -126,6 +126,7 @@ public class OutpatientChargeAppServiceImpl implements IOutpatientChargeAppServi
|
|||||||
});
|
});
|
||||||
return prescriptionDtoList;
|
return prescriptionDtoList;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 医保转自费
|
* 医保转自费
|
||||||
*
|
*
|
||||||
@@ -167,4 +168,46 @@ public class OutpatientChargeAppServiceImpl implements IOutpatientChargeAppServi
|
|||||||
}
|
}
|
||||||
return R.ok(MessageUtils.createMessage(PromptMsgConstant.Common.M00004, null));
|
return R.ok(MessageUtils.createMessage(PromptMsgConstant.Common.M00004, null));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 学生医保转学生自费
|
||||||
|
*
|
||||||
|
* @param encounterId 就诊id
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public R<?> changeToStudentSelfPay(Long encounterId) {
|
||||||
|
// 获取就诊患者的学生自费账户id
|
||||||
|
Long accountId = accountService.getStudentSelfAccount(encounterId);
|
||||||
|
if (accountId == null) {
|
||||||
|
return R.fail(MessageUtils.createMessage(PromptMsgConstant.Payment.M00008, new Object[] {"医保账户"}));
|
||||||
|
}
|
||||||
|
// 自费转医保
|
||||||
|
boolean result = chargeItemService.updateAccountType(encounterId, accountId);
|
||||||
|
if (!result) {
|
||||||
|
return R.fail(MessageUtils.createMessage(PromptMsgConstant.Payment.M00009, null));
|
||||||
|
}
|
||||||
|
return R.ok(MessageUtils.createMessage(PromptMsgConstant.Common.M00004, null));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 学生自费转学生医保
|
||||||
|
*
|
||||||
|
* @param encounterId 就诊id
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public R<?> changeToStudentYbPay(Long encounterId) {
|
||||||
|
// 获取就诊患者的学生医保账户id
|
||||||
|
Long accountId = accountService.getStudentYbAccount(encounterId);
|
||||||
|
if (accountId == null) {
|
||||||
|
return R.fail(MessageUtils.createMessage(PromptMsgConstant.Payment.M00008, new Object[] {"医保账户"}));
|
||||||
|
}
|
||||||
|
// 自费转医保
|
||||||
|
boolean result = chargeItemService.updateAccountType(encounterId, accountId);
|
||||||
|
if (!result) {
|
||||||
|
return R.fail(MessageUtils.createMessage(PromptMsgConstant.Payment.M00009, null));
|
||||||
|
}
|
||||||
|
return R.ok(MessageUtils.createMessage(PromptMsgConstant.Common.M00004, null));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,15 +4,12 @@
|
|||||||
package com.openhis.web.chargemanage.appservice.impl;
|
package com.openhis.web.chargemanage.appservice.impl;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
@@ -55,23 +52,23 @@ import com.openhis.workflow.service.IServiceRequestService;
|
|||||||
@Service
|
@Service
|
||||||
public class OutpatientRefundAppServiceImpl implements IOutpatientRefundAppService {
|
public class OutpatientRefundAppServiceImpl implements IOutpatientRefundAppService {
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private OutpatientRefundAppMapper outpatientRefundAppMapper;
|
private OutpatientRefundAppMapper outpatientRefundAppMapper;
|
||||||
@Autowired
|
@Resource
|
||||||
private IPaymentReconciliationService paymentReconciliationService;
|
private IPaymentReconciliationService paymentReconciliationService;
|
||||||
@Autowired
|
@Resource
|
||||||
private IChargeItemService chargeItemService;
|
private IChargeItemService chargeItemService;
|
||||||
@Autowired
|
@Resource
|
||||||
private IMedicationDispenseService medicationDispenseService;
|
private IMedicationDispenseService medicationDispenseService;
|
||||||
@Autowired
|
@Resource
|
||||||
private IDeviceDispenseService deviceDispenseService;
|
private IDeviceDispenseService deviceDispenseService;
|
||||||
@Autowired
|
@Resource
|
||||||
private IServiceRequestService serviceRequestService;
|
private IServiceRequestService serviceRequestService;
|
||||||
@Autowired
|
@Resource
|
||||||
private IMedicationRequestService medicationRequestService;
|
private IMedicationRequestService medicationRequestService;
|
||||||
@Autowired
|
@Resource
|
||||||
private IDeviceRequestService deviceRequestService;
|
private IDeviceRequestService deviceRequestService;
|
||||||
@Autowired
|
@Resource
|
||||||
private AssignSeqUtil assignSeqUtil;
|
private AssignSeqUtil assignSeqUtil;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -110,8 +107,8 @@ public class OutpatientRefundAppServiceImpl implements IOutpatientRefundAppServi
|
|||||||
PaymentStatus.REFUND_PART.getValue(), PaymentStatus.REFUND_ALL.getValue());
|
PaymentStatus.REFUND_PART.getValue(), PaymentStatus.REFUND_ALL.getValue());
|
||||||
|
|
||||||
// 获取付款id集合
|
// 获取付款id集合
|
||||||
List<Long> paymentIdList =
|
List<Long> paymentIdList = encounterPatientPaymentList.stream().map(EncounterPatientPaymentDto::getPaymentId)
|
||||||
encounterPatientPaymentList.stream().map(EncounterPatientPaymentDto::getId).collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
if (paymentIdList.isEmpty()) {
|
if (paymentIdList.isEmpty()) {
|
||||||
return R.ok(null);
|
return R.ok(null);
|
||||||
}
|
}
|
||||||
@@ -131,7 +128,7 @@ public class OutpatientRefundAppServiceImpl implements IOutpatientRefundAppServi
|
|||||||
e.setServiceStatus_enumText(EnumUtils.getInfoByValue(RequestStatus.class, e.getServiceStatus()));
|
e.setServiceStatus_enumText(EnumUtils.getInfoByValue(RequestStatus.class, e.getServiceStatus()));
|
||||||
|
|
||||||
});
|
});
|
||||||
|
refundItemList.sort(Comparator.comparing(RefundItemDto::getPaymentId));
|
||||||
return R.ok(refundItemList);
|
return R.ok(refundItemList);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -162,22 +159,22 @@ public class OutpatientRefundAppServiceImpl implements IOutpatientRefundAppServi
|
|||||||
CommonConstants.TableName.MED_MEDICATION_REQUEST, CommonConstants.TableName.WOR_SERVICE_REQUEST,
|
CommonConstants.TableName.MED_MEDICATION_REQUEST, CommonConstants.TableName.WOR_SERVICE_REQUEST,
|
||||||
CommonConstants.TableName.WOR_DEVICE_REQUEST, CommonConstants.Common.THREE);
|
CommonConstants.TableName.WOR_DEVICE_REQUEST, CommonConstants.Common.THREE);
|
||||||
|
|
||||||
for (RefundItemDto creatdDto : creatChargeItemList) {
|
for (RefundItemDto createDto : creatChargeItemList) {
|
||||||
|
|
||||||
// 未退费用项,生成新的请求,发放,费用项
|
// 未退费用项,生成新的请求,发放,费用项
|
||||||
if (CommonConstants.TableName.MED_MEDICATION_REQUEST.equals(creatdDto.getServiceTable())) {
|
if (CommonConstants.TableName.MED_MEDICATION_REQUEST.equals(createDto.getServiceTable())) {
|
||||||
// 药品请求查询
|
// 药品请求查询
|
||||||
MedicationRequest medicationRequest = medicationRequestService.getById(creatdDto.getRequestId());
|
MedicationRequest medicationRequest = medicationRequestService.getById(createDto.getRequestId());
|
||||||
// 生成新的药品请求
|
// 生成新的药品请求
|
||||||
medicationRequest.setId(null); // 药品请求id
|
medicationRequest.setId(null); // 药品请求id
|
||||||
medicationRequest
|
medicationRequest
|
||||||
.setBusNo(assignSeqUtil.getSeqByDay(AssignSeqEnum.MEDICATION_RES_NO.getPrefix(), 4)); // 药品请求编码
|
.setBusNo(assignSeqUtil.getSeqByDay(AssignSeqEnum.MEDICATION_RES_NO.getPrefix(), 4)); // 药品请求编码
|
||||||
medicationRequest.setPrescriptionNo(String.valueOf("C" + creatdDto.getPrescriptionNo())); // 处方号
|
medicationRequest.setPrescriptionNo(String.valueOf("C" + createDto.getPrescriptionNo())); // 处方号
|
||||||
medicationRequestService.save(medicationRequest);
|
medicationRequestService.save(medicationRequest);
|
||||||
|
|
||||||
// 药品发放查询
|
// 药品发放查询
|
||||||
MedicationDispense medicationDispense =
|
MedicationDispense medicationDispense =
|
||||||
medicationDispenseService.getById(creatdDto.getDispenseId());
|
medicationDispenseService.getById(createDto.getDispenseId());
|
||||||
// 生成新的药品发放
|
// 生成新的药品发放
|
||||||
medicationDispense.setId(null); // 药品发放id
|
medicationDispense.setId(null); // 药品发放id
|
||||||
medicationDispense
|
medicationDispense
|
||||||
@@ -186,26 +183,26 @@ public class OutpatientRefundAppServiceImpl implements IOutpatientRefundAppServi
|
|||||||
medicationDispenseService.save(medicationDispense);
|
medicationDispenseService.save(medicationDispense);
|
||||||
|
|
||||||
// 费用项查询
|
// 费用项查询
|
||||||
ChargeItem chargeItem = chargeItemService.getById(creatdDto.getChargeItemId());
|
ChargeItem chargeItem = chargeItemService.getById(createDto.getChargeItemId());
|
||||||
// 生成新的费用项
|
// 生成新的费用项
|
||||||
chargeItem.setRefundId(chargeItem.getId());// 退费id
|
chargeItem.setRefundId(chargeItem.getId());// 退费id
|
||||||
chargeItem.setId(null); // 费用项id
|
chargeItem.setId(null); // 费用项id
|
||||||
chargeItem.setBusNo(AssignSeqEnum.CHARGE_ITEM_NO.getPrefix().concat(medicationRequest.getBusNo())); // 编码
|
chargeItem.setBusNo(AssignSeqEnum.CHARGE_ITEM_NO.getPrefix().concat(medicationRequest.getBusNo())); // 编码
|
||||||
chargeItem.setPrescriptionNo(String.valueOf("C" + creatdDto.getPrescriptionNo())); // 处方号
|
chargeItem.setPrescriptionNo(String.valueOf("C" + createDto.getPrescriptionNo())); // 处方号
|
||||||
chargeItem.setServiceId(medicationRequest.getId()); // 医疗服务ID
|
chargeItem.setServiceId(medicationRequest.getId()); // 医疗服务ID
|
||||||
chargeItem.setStatusEnum(ChargeItemStatus.PLANNED.getValue());// 收费单状态:待收费
|
chargeItem.setStatusEnum(ChargeItemStatus.PLANNED.getValue());// 收费单状态:待收费
|
||||||
chargeItemService.save(chargeItem);
|
chargeItemService.save(chargeItem);
|
||||||
|
|
||||||
} else if (CommonConstants.TableName.WOR_SERVICE_REQUEST.equals(creatdDto.getServiceTable())) {
|
} else if (CommonConstants.TableName.WOR_SERVICE_REQUEST.equals(createDto.getServiceTable())) {
|
||||||
// 服务请求查询
|
// 服务请求查询
|
||||||
ServiceRequest serviceRequest = serviceRequestService.getById(creatdDto.getRequestId());
|
ServiceRequest serviceRequest = serviceRequestService.getById(createDto.getRequestId());
|
||||||
// 生成新的服务请求
|
// 生成新的服务请求
|
||||||
serviceRequest.setId(null); // 服务请求id
|
serviceRequest.setId(null); // 服务请求id
|
||||||
serviceRequest.setBusNo(assignSeqUtil.getSeqByDay(AssignSeqEnum.SERVICE_RES_NO.getPrefix(), 4)); // 服务请求编码
|
serviceRequest.setBusNo(assignSeqUtil.getSeqByDay(AssignSeqEnum.SERVICE_RES_NO.getPrefix(), 4)); // 服务请求编码
|
||||||
serviceRequestService.save(serviceRequest);
|
serviceRequestService.save(serviceRequest);
|
||||||
|
|
||||||
// 费用项查询
|
// 费用项查询
|
||||||
ChargeItem chargeItem = chargeItemService.getById(creatdDto.getChargeItemId());
|
ChargeItem chargeItem = chargeItemService.getById(createDto.getChargeItemId());
|
||||||
// 生成新的费用项
|
// 生成新的费用项
|
||||||
chargeItem.setRefundId(chargeItem.getId());// 退费id
|
chargeItem.setRefundId(chargeItem.getId());// 退费id
|
||||||
chargeItem.setId(null); // 费用项id
|
chargeItem.setId(null); // 费用项id
|
||||||
@@ -214,16 +211,16 @@ public class OutpatientRefundAppServiceImpl implements IOutpatientRefundAppServi
|
|||||||
chargeItem.setStatusEnum(ChargeItemStatus.PLANNED.getValue());// 收费单状态:待收费
|
chargeItem.setStatusEnum(ChargeItemStatus.PLANNED.getValue());// 收费单状态:待收费
|
||||||
chargeItemService.save(chargeItem);
|
chargeItemService.save(chargeItem);
|
||||||
|
|
||||||
} else if (CommonConstants.TableName.WOR_DEVICE_REQUEST.equals(creatdDto.getServiceTable())) {
|
} else if (CommonConstants.TableName.WOR_DEVICE_REQUEST.equals(createDto.getServiceTable())) {
|
||||||
// 耗材请求查询
|
// 耗材请求查询
|
||||||
DeviceRequest deviceRequest = deviceRequestService.getById(creatdDto.getRequestId());
|
DeviceRequest deviceRequest = deviceRequestService.getById(createDto.getRequestId());
|
||||||
// 生成新的耗材请求
|
// 生成新的耗材请求
|
||||||
deviceRequest.setId(null); // 耗材请求id
|
deviceRequest.setId(null); // 耗材请求id
|
||||||
deviceRequest.setBusNo(assignSeqUtil.getSeqByDay(AssignSeqEnum.DEVICE_RES_NO.getPrefix(), 4)); // 耗材请求编码
|
deviceRequest.setBusNo(assignSeqUtil.getSeqByDay(AssignSeqEnum.DEVICE_RES_NO.getPrefix(), 4)); // 耗材请求编码
|
||||||
deviceRequestService.save(deviceRequest);
|
deviceRequestService.save(deviceRequest);
|
||||||
|
|
||||||
// 耗材发放查询
|
// 耗材发放查询
|
||||||
DeviceDispense deviceDispense = deviceDispenseService.getById(creatdDto.getDispenseId());
|
DeviceDispense deviceDispense = deviceDispenseService.getById(createDto.getDispenseId());
|
||||||
// 生成新的耗材发放
|
// 生成新的耗材发放
|
||||||
deviceDispense.setId(null); // 耗材id
|
deviceDispense.setId(null); // 耗材id
|
||||||
deviceDispense.setBusNo(assignSeqUtil.getSeqByDay(AssignSeqEnum.DEVICE_DIS_NO.getPrefix(), 4)); // 器材发放id
|
deviceDispense.setBusNo(assignSeqUtil.getSeqByDay(AssignSeqEnum.DEVICE_DIS_NO.getPrefix(), 4)); // 器材发放id
|
||||||
@@ -231,7 +228,7 @@ public class OutpatientRefundAppServiceImpl implements IOutpatientRefundAppServi
|
|||||||
deviceDispenseService.save(deviceDispense);
|
deviceDispenseService.save(deviceDispense);
|
||||||
|
|
||||||
// 费用项查询
|
// 费用项查询
|
||||||
ChargeItem chargeItem = chargeItemService.getById(creatdDto.getChargeItemId());
|
ChargeItem chargeItem = chargeItemService.getById(createDto.getChargeItemId());
|
||||||
// 生成新的费用项
|
// 生成新的费用项
|
||||||
chargeItem.setRefundId(chargeItem.getId());// 退费id
|
chargeItem.setRefundId(chargeItem.getId());// 退费id
|
||||||
chargeItem.setId(null); // 费用项id
|
chargeItem.setId(null); // 费用项id
|
||||||
@@ -372,7 +369,7 @@ public class OutpatientRefundAppServiceImpl implements IOutpatientRefundAppServi
|
|||||||
encounterPatientPageParam, searchKey,
|
encounterPatientPageParam, searchKey,
|
||||||
new HashSet<>(Arrays.asList(CommonConstants.FieldName.PatientWbStr, CommonConstants.FieldName.PatientPyStr,
|
new HashSet<>(Arrays.asList(CommonConstants.FieldName.PatientWbStr, CommonConstants.FieldName.PatientPyStr,
|
||||||
CommonConstants.FieldName.PatientName, CommonConstants.FieldName.PatientBusNo,
|
CommonConstants.FieldName.PatientName, CommonConstants.FieldName.PatientBusNo,
|
||||||
CommonConstants.FieldName.EncounterBusNo, CommonConstants.FieldName.idCard)),
|
CommonConstants.FieldName.EncounterBusNo, CommonConstants.FieldName.IdCard)),
|
||||||
request);
|
request);
|
||||||
// 就诊患者分页列表
|
// 就诊患者分页列表
|
||||||
Page<EncounterPatientPageDto> encounterPatientPage = outpatientRefundAppMapper.selectBilledEncounterPatientPage(
|
Page<EncounterPatientPageDto> encounterPatientPage = outpatientRefundAppMapper.selectBilledEncounterPatientPage(
|
||||||
|
|||||||
@@ -296,8 +296,9 @@ public class OutpatientRegistrationAppServiceImpl implements IOutpatientRegistra
|
|||||||
}
|
}
|
||||||
|
|
||||||
IPage<CurrentDayEncounterDto> currentDayEncounter = outpatientRegistrationAppMapper.getCurrentDayEncounter(
|
IPage<CurrentDayEncounterDto> currentDayEncounter = outpatientRegistrationAppMapper.getCurrentDayEncounter(
|
||||||
new Page<>(pageNo, pageSize), EncounterClass.AMB.getValue(), ParticipantType.ADMITTER.getCode(),
|
new Page<>(pageNo, pageSize), EncounterClass.AMB.getValue(), EncounterStatus.IN_PROGRESS.getValue(),
|
||||||
queryWrapper, ChargeItemContext.REGISTER.getValue(), PaymentStatus.SUCCESS.getValue());
|
ParticipantType.ADMITTER.getCode(), ParticipantType.REGISTRATION_DOCTOR.getCode(), queryWrapper,
|
||||||
|
ChargeItemContext.REGISTER.getValue(), PaymentStatus.SUCCESS.getValue());
|
||||||
currentDayEncounter.getRecords().forEach(e -> {
|
currentDayEncounter.getRecords().forEach(e -> {
|
||||||
// 性别
|
// 性别
|
||||||
e.setGenderEnum_enumText(EnumUtils.getInfoByValue(AdministrativeGender.class, e.getGenderEnum()));
|
e.setGenderEnum_enumText(EnumUtils.getInfoByValue(AdministrativeGender.class, e.getGenderEnum()));
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
*/
|
*/
|
||||||
package com.openhis.web.chargemanage.controller;
|
package com.openhis.web.chargemanage.controller;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@@ -27,7 +28,7 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public class OutpatientChargeController {
|
public class OutpatientChargeController {
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private IOutpatientChargeAppService outpatientChargeAppService;
|
private IOutpatientChargeAppService outpatientChargeAppService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -91,4 +92,26 @@ public class OutpatientChargeController {
|
|||||||
public R<?> changeToMedicalInsurance(@RequestParam Long encounterId) {
|
public R<?> changeToMedicalInsurance(@RequestParam Long encounterId) {
|
||||||
return outpatientChargeAppService.changeToMedicalInsurance(encounterId);
|
return outpatientChargeAppService.changeToMedicalInsurance(encounterId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 医保转自费
|
||||||
|
*
|
||||||
|
* @param encounterId 就诊id
|
||||||
|
* @return 操作结果
|
||||||
|
*/
|
||||||
|
@PutMapping("/student-self-pay")
|
||||||
|
public R<?> changeToStudentSelfPay(@RequestParam Long encounterId) {
|
||||||
|
return outpatientChargeAppService.changeToStudentSelfPay(encounterId);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 自费转医保
|
||||||
|
*
|
||||||
|
* @param encounterId 就诊id
|
||||||
|
* @return 操作结果
|
||||||
|
*/
|
||||||
|
@PutMapping("/student-yb-pay")
|
||||||
|
public R<?> changeToStudentYbPay(@RequestParam Long encounterId) {
|
||||||
|
return outpatientChargeAppService.changeToStudentYbPay(encounterId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ package com.openhis.web.chargemanage.controller;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@@ -30,7 +31,7 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public class OutpatientRefundController {
|
public class OutpatientRefundController {
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private IOutpatientRefundAppService outpatientRefundAppService;
|
private IOutpatientRefundAppService outpatientRefundAppService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -130,6 +130,10 @@ public class CurrentDayEncounterDto {
|
|||||||
* 生日
|
* 生日
|
||||||
*/
|
*/
|
||||||
private Date birthDate;
|
private Date birthDate;
|
||||||
|
/**
|
||||||
|
* 电话
|
||||||
|
*/
|
||||||
|
private String phone;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 退号日期/时间
|
* 退号日期/时间
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ package com.openhis.web.chargemanage.dto;
|
|||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.IdType;
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
@@ -29,7 +28,7 @@ public class EncounterPatientPaymentDto {
|
|||||||
/** ID */
|
/** ID */
|
||||||
@TableId(type = IdType.ASSIGN_ID)
|
@TableId(type = IdType.ASSIGN_ID)
|
||||||
@JsonSerialize(using = ToStringSerializer.class)
|
@JsonSerialize(using = ToStringSerializer.class)
|
||||||
private Long id;
|
private Long paymentId;
|
||||||
|
|
||||||
/** 就诊ID */
|
/** 就诊ID */
|
||||||
private Long encounterId;
|
private Long encounterId;
|
||||||
|
|||||||
@@ -92,7 +92,17 @@ public class EncounterPatientPrescriptionDto {
|
|||||||
@Dict(dictCode = "med_type")
|
@Dict(dictCode = "med_type")
|
||||||
private String medTypeCode;
|
private String medTypeCode;
|
||||||
private String medTypeCode_dictText;
|
private String medTypeCode_dictText;
|
||||||
|
/** 用法 */
|
||||||
|
@Dict(dictCode = "method_code")
|
||||||
|
private String methodCode;
|
||||||
|
private String methodCode_dictText;
|
||||||
|
private String dose;
|
||||||
|
@Dict(dictCode = "unit_code")
|
||||||
|
private String doseUnitCode;
|
||||||
|
/** 单次剂量单位 */
|
||||||
|
private String doseUnitCode_dictText;
|
||||||
|
/** 频次 */
|
||||||
|
private String rateCode;
|
||||||
/** 合同编码 */
|
/** 合同编码 */
|
||||||
private String contractNo;
|
private String contractNo;
|
||||||
|
|
||||||
@@ -109,4 +119,8 @@ public class EncounterPatientPrescriptionDto {
|
|||||||
@JsonSerialize(using = ToStringSerializer.class)
|
@JsonSerialize(using = ToStringSerializer.class)
|
||||||
private Long serviceId;
|
private Long serviceId;
|
||||||
|
|
||||||
|
/** 付款id */
|
||||||
|
@JsonSerialize(using = ToStringSerializer.class)
|
||||||
|
private Long paymentId;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,14 +36,17 @@ public interface OutpatientRegistrationAppMapper {
|
|||||||
*
|
*
|
||||||
* @param page 分页参数
|
* @param page 分页参数
|
||||||
* @param classEnum 就诊类型
|
* @param classEnum 就诊类型
|
||||||
* @param participantType 参与者类型
|
* @param statusEnum 门诊就诊状态 | 在诊
|
||||||
|
* @param participantType1 参与者类型 | 接诊医生
|
||||||
|
* @param participantType2 参与者类型 | 挂号医生
|
||||||
* @param queryWrapper 查询条件
|
* @param queryWrapper 查询条件
|
||||||
* @param register 收费项目类型:挂号
|
* @param register 收费项目类型:挂号
|
||||||
* @param paymentStatus 支付状态:成功
|
* @param paymentStatus 支付状态:成功
|
||||||
* @return 当日就诊数据
|
* @return 当日就诊数据
|
||||||
*/
|
*/
|
||||||
IPage<CurrentDayEncounterDto> getCurrentDayEncounter(@Param("page") Page<CurrentDayEncounterDto> page,
|
IPage<CurrentDayEncounterDto> getCurrentDayEncounter(@Param("page") Page<CurrentDayEncounterDto> page,
|
||||||
@Param("classEnum") Integer classEnum, @Param("participantType") String participantType,
|
@Param("classEnum") Integer classEnum, @Param("statusEnum") Integer statusEnum,
|
||||||
|
@Param("participantType1") String participantType1, @Param("participantType2") String participantType2,
|
||||||
@Param(Constants.WRAPPER) QueryWrapper<CurrentDayEncounterDto> queryWrapper,
|
@Param(Constants.WRAPPER) QueryWrapper<CurrentDayEncounterDto> queryWrapper,
|
||||||
@Param("register") Integer register, @Param("paymentStatus") Integer paymentStatus);
|
@Param("register") Integer register, @Param("paymentStatus") Integer paymentStatus);
|
||||||
|
|
||||||
|
|||||||
@@ -166,4 +166,26 @@ public interface ICommonService {
|
|||||||
* @return 医嘱打印单
|
* @return 医嘱打印单
|
||||||
*/
|
*/
|
||||||
R<?> getAdvicePrintInfo(List<Long> requestIds, String isPrescription);
|
R<?> getAdvicePrintInfo(List<Long> requestIds, String isPrescription);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询参与者签名
|
||||||
|
*
|
||||||
|
* @param practitionerId 参与者id
|
||||||
|
* @return 参与者签名
|
||||||
|
*/
|
||||||
|
R<?> getPractitionerSignature(Long practitionerId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询所有供应商
|
||||||
|
*
|
||||||
|
* @return 供应商
|
||||||
|
*/
|
||||||
|
R<?> getSupplierList();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询所有诊疗项目
|
||||||
|
*
|
||||||
|
* @return 诊疗项目
|
||||||
|
*/
|
||||||
|
R<?> getActivityDefinition();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import java.util.stream.Collectors;
|
|||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
@@ -21,11 +22,13 @@ import com.core.common.utils.StringUtils;
|
|||||||
import com.core.common.utils.bean.BeanUtils;
|
import com.core.common.utils.bean.BeanUtils;
|
||||||
import com.openhis.administration.domain.Location;
|
import com.openhis.administration.domain.Location;
|
||||||
import com.openhis.administration.domain.Organization;
|
import com.openhis.administration.domain.Organization;
|
||||||
|
import com.openhis.administration.domain.Supplier;
|
||||||
import com.openhis.administration.domain.TraceNoManage;
|
import com.openhis.administration.domain.TraceNoManage;
|
||||||
import com.openhis.administration.mapper.TraceNoManageMapper;
|
import com.openhis.administration.mapper.TraceNoManageMapper;
|
||||||
import com.openhis.administration.service.ILocationService;
|
import com.openhis.administration.service.ILocationService;
|
||||||
import com.openhis.administration.service.IOrganizationService;
|
import com.openhis.administration.service.IOrganizationService;
|
||||||
import com.openhis.administration.service.IPractitionerRoleService;
|
import com.openhis.administration.service.IPractitionerRoleService;
|
||||||
|
import com.openhis.administration.service.ISupplierService;
|
||||||
import com.openhis.common.constant.CommonConstants;
|
import com.openhis.common.constant.CommonConstants;
|
||||||
import com.openhis.common.enums.*;
|
import com.openhis.common.enums.*;
|
||||||
import com.openhis.common.utils.EnumUtils;
|
import com.openhis.common.utils.EnumUtils;
|
||||||
@@ -64,11 +67,14 @@ public class CommonServiceImpl implements ICommonService {
|
|||||||
private IOrganizationService organizationService;
|
private IOrganizationService organizationService;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private IInventoryItemService iInventoryItemService;
|
private IInventoryItemService inventoryItemService;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private ContractMapper contractMapper;
|
private ContractMapper contractMapper;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ISupplierService supplierService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取药房列表
|
* 获取药房列表
|
||||||
*
|
*
|
||||||
@@ -78,6 +84,7 @@ public class CommonServiceImpl implements ICommonService {
|
|||||||
public List<LocationDto> getPharmacyList() {
|
public List<LocationDto> getPharmacyList() {
|
||||||
|
|
||||||
List<Location> pharmacyList = locationService.getPharmacyList();
|
List<Location> pharmacyList = locationService.getPharmacyList();
|
||||||
|
|
||||||
List<LocationDto> locationDtoList = new ArrayList<>();
|
List<LocationDto> locationDtoList = new ArrayList<>();
|
||||||
LocationDto locationDto;
|
LocationDto locationDto;
|
||||||
for (Location location : pharmacyList) {
|
for (Location location : pharmacyList) {
|
||||||
@@ -85,6 +92,8 @@ public class CommonServiceImpl implements ICommonService {
|
|||||||
BeanUtils.copyProperties(location, locationDto);
|
BeanUtils.copyProperties(location, locationDto);
|
||||||
locationDtoList.add(locationDto);
|
locationDtoList.add(locationDto);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return locationDtoList;
|
return locationDtoList;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -278,11 +287,10 @@ public class CommonServiceImpl implements ICommonService {
|
|||||||
|
|
||||||
// 医保编码和生产厂家校验
|
// 医保编码和生产厂家校验
|
||||||
for (LocationInventoryDto dto : locationInventoryDtoList) {
|
for (LocationInventoryDto dto : locationInventoryDtoList) {
|
||||||
if (StringUtils.isNotEmpty(dto.getYbNo()) && StringUtils.isEmpty(dto.getManufacturer())) {
|
if (StringUtils.isNotEmpty(dto.getYbNo()) && StringUtils.isEmpty(dto.getManufacturerText())) {
|
||||||
return R.fail("生产厂家不能为空,请到药品目录维护");
|
return R.fail("生产厂家不能为空,请到药品目录维护");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return R.ok(locationInventoryDtoList);
|
return R.ok(locationInventoryDtoList);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -318,7 +326,7 @@ public class CommonServiceImpl implements ICommonService {
|
|||||||
for (String traceNo : traceNoList) {
|
for (String traceNo : traceNoList) {
|
||||||
if (traceNo != null && !StringUtils.isEmpty(traceNo)) {
|
if (traceNo != null && !StringUtils.isEmpty(traceNo)) {
|
||||||
// 数据源更改
|
// 数据源更改
|
||||||
InventoryItem inventoryItem = iInventoryItemService.getOne(
|
InventoryItem inventoryItem = inventoryItemService.getOne(
|
||||||
new LambdaQueryWrapper<InventoryItem>().like(InventoryItem::getTraceNo, traceNo).last("LIMIT 1"));
|
new LambdaQueryWrapper<InventoryItem>().like(InventoryItem::getTraceNo, traceNo).last("LIMIT 1"));
|
||||||
if (inventoryItem != null) {
|
if (inventoryItem != null) {
|
||||||
String itemId = inventoryItem.getItemId().toString();
|
String itemId = inventoryItem.getItemId().toString();
|
||||||
@@ -491,4 +499,37 @@ public class CommonServiceImpl implements ICommonService {
|
|||||||
return R.ok(advicePrintInfoDto);
|
return R.ok(advicePrintInfoDto);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询参与者签名
|
||||||
|
*
|
||||||
|
* @param practitionerId 参与者id
|
||||||
|
* @return 参与者签名
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public R<?> getPractitionerSignature(Long practitionerId) {
|
||||||
|
return R.ok(commonAppMapper.getPractitionerSignature(practitionerId));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询所有供应商
|
||||||
|
*
|
||||||
|
* @return 供应商
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public R<?> getSupplierList() {
|
||||||
|
return R.ok(supplierService.list(new LambdaQueryWrapper<Supplier>().select(Supplier::getId, Supplier::getName)
|
||||||
|
.eq(Supplier::getTypeEnum, SupplierType.SUPPLIER.getValue())
|
||||||
|
.eq(Supplier::getDeleteFlag, DelFlag.NO.getCode()).eq(Supplier::getActiveFlag, Whether.YES.getValue())));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询所有诊疗项目
|
||||||
|
*
|
||||||
|
* @return 诊疗项目
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public R<?> getActivityDefinition() {
|
||||||
|
return R.ok(commonAppMapper.getActivityDefinition(PublicationStatus.ACTIVE.getValue()));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,8 +7,6 @@ import java.util.List;
|
|||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
import com.openhis.common.enums.Whether;
|
|
||||||
import com.openhis.web.common.dto.AdvicePrintInfoDto;
|
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
@@ -221,7 +219,38 @@ public class CommonAppController {
|
|||||||
*/
|
*/
|
||||||
@GetMapping("/advice-print")
|
@GetMapping("/advice-print")
|
||||||
public R<?> getAdvicePrintInfo(@RequestParam(value = "requestIds") List<Long> requestIds, String isPrescription) {
|
public R<?> getAdvicePrintInfo(@RequestParam(value = "requestIds") List<Long> requestIds, String isPrescription) {
|
||||||
return commonService.getAdvicePrintInfo(requestIds,isPrescription);
|
return commonService.getAdvicePrintInfo(requestIds, isPrescription);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询参与者签名
|
||||||
|
*
|
||||||
|
* @param practitionerId 参与者id
|
||||||
|
* @return 参与者签名
|
||||||
|
*/
|
||||||
|
@GetMapping(value = "/practitioner-signature")
|
||||||
|
public R<?> getPractitionerSignature(@RequestParam(value = "practitionerId") Long practitionerId) {
|
||||||
|
return commonService.getPractitionerSignature(practitionerId);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询所有供应商
|
||||||
|
*
|
||||||
|
* @return 供应商
|
||||||
|
*/
|
||||||
|
@GetMapping(value = "/supplier")
|
||||||
|
public R<?> getSupplierList() {
|
||||||
|
return commonService.getSupplierList();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询所有诊疗项目
|
||||||
|
*
|
||||||
|
* @return 诊疗项目
|
||||||
|
*/
|
||||||
|
@GetMapping(value = "/activity-definition")
|
||||||
|
public R<?> getActivityDefinition() {
|
||||||
|
return commonService.getActivityDefinition();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,29 @@
|
|||||||
|
/*
|
||||||
|
* Copyright ©2023 CJB-CNIT Team. All rights reserved
|
||||||
|
*/
|
||||||
|
package com.openhis.web.common.dto;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||||
|
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 诊疗项目dto
|
||||||
|
*
|
||||||
|
* @author zwh
|
||||||
|
* @date 2025-04-01
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@Accessors(chain = true)
|
||||||
|
public class ActivityDefinitionDto {
|
||||||
|
|
||||||
|
/** 项目定义ID */
|
||||||
|
@JsonSerialize(using = ToStringSerializer.class)
|
||||||
|
private Long activityDefinitionId;
|
||||||
|
|
||||||
|
/** 项目名称 */
|
||||||
|
private String activityDefinitionName;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -87,7 +87,7 @@ public class InventoryItemDto {
|
|||||||
/**
|
/**
|
||||||
* 生产厂家
|
* 生产厂家
|
||||||
*/
|
*/
|
||||||
private String manufacturer;
|
private String manufacturerText;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 项目对应表名
|
* 项目对应表名
|
||||||
|
|||||||
@@ -75,6 +75,6 @@ public class LocationInventoryDto {
|
|||||||
private String ybNo;
|
private String ybNo;
|
||||||
|
|
||||||
/** 生产厂家 */
|
/** 生产厂家 */
|
||||||
private String manufacturer;
|
private String manufacturerText;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,24 +26,13 @@ public class PerformInfoDto {
|
|||||||
@JsonSerialize(using = ToStringSerializer.class)
|
@JsonSerialize(using = ToStringSerializer.class)
|
||||||
private Long requestId;
|
private Long requestId;
|
||||||
|
|
||||||
/** 住院id */
|
|
||||||
@JsonSerialize(using = ToStringSerializer.class)
|
|
||||||
private Long encounterId;
|
|
||||||
|
|
||||||
/** 发放id */
|
/** 发放id */
|
||||||
@JsonSerialize(using = ToStringSerializer.class)
|
@JsonSerialize(using = ToStringSerializer.class)
|
||||||
private Long dispenseId;
|
private Long dispenseId;
|
||||||
|
|
||||||
/** 执行id */
|
|
||||||
@JsonSerialize(using = ToStringSerializer.class)
|
|
||||||
private Long procedureId;
|
|
||||||
|
|
||||||
/** 请求所在表 */
|
/** 请求所在表 */
|
||||||
private String requestTable;
|
private String requestTable;
|
||||||
|
|
||||||
/** 执行时间列表 */
|
|
||||||
private List<String> executeTimes;
|
|
||||||
|
|
||||||
/** 执行位置 */
|
/** 执行位置 */
|
||||||
@JsonSerialize(using = ToStringSerializer.class)
|
@JsonSerialize(using = ToStringSerializer.class)
|
||||||
private Long locationId;
|
private Long locationId;
|
||||||
@@ -51,10 +40,4 @@ public class PerformInfoDto {
|
|||||||
/** 分组id */
|
/** 分组id */
|
||||||
@JsonSerialize(using = ToStringSerializer.class)
|
@JsonSerialize(using = ToStringSerializer.class)
|
||||||
private Long groupId;
|
private Long groupId;
|
||||||
|
|
||||||
/** 执行开始时间 */
|
|
||||||
private Date exeStartTime;
|
|
||||||
|
|
||||||
/** 执行结束时间 */
|
|
||||||
private Date exeEndTime;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -88,4 +88,20 @@ public interface CommonAppMapper {
|
|||||||
* @return 处置打印信息
|
* @return 处置打印信息
|
||||||
*/
|
*/
|
||||||
AdvicePrintInfoDto selectTreatmentPrintInfo(@Param("requestIds") List<Long> requestIds);
|
AdvicePrintInfoDto selectTreatmentPrintInfo(@Param("requestIds") List<Long> requestIds);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询参与者签名
|
||||||
|
*
|
||||||
|
* @param practitionerId 参与者id
|
||||||
|
* @return 参与者签名
|
||||||
|
*/
|
||||||
|
String getPractitionerSignature(@Param("practitionerId") Long practitionerId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询所有诊疗项目
|
||||||
|
*
|
||||||
|
* @param statusEnum 启用状态
|
||||||
|
* @return 诊疗项目
|
||||||
|
*/
|
||||||
|
List<ActivityDefinitionDto> getActivityDefinition(@Param("statusEnum") Integer statusEnum);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,37 @@
|
|||||||
|
package com.openhis.web.datadictionary.appservice;
|
||||||
|
import com.core.common.core.domain.R;
|
||||||
|
import com.openhis.web.datadictionary.dto.ICDCodeAddDto;
|
||||||
|
import com.openhis.web.datadictionary.dto.ICDCodeUpdateDto;
|
||||||
|
|
||||||
|
public interface ICDCodeService {
|
||||||
|
/**
|
||||||
|
* 分页查询icd10编码
|
||||||
|
*
|
||||||
|
* @param searchKey
|
||||||
|
* @param pageNo
|
||||||
|
* @param pageSize
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
R<?> getICDCodePage(String searchKey, Integer pageNo, Integer pageSize);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增icd10编码
|
||||||
|
* @param icdCodeAddDto
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
R<?> addICDInformation(ICDCodeAddDto icdCodeAddDto);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除icd10编码
|
||||||
|
* @param glNo
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
R<?> deleteICDInformation(String glNo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改icd10编码
|
||||||
|
* @param icdCodeUpdateDto
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
R<?> saveOrUpdateICDInformation(ICDCodeUpdateDto icdCodeUpdateDto);
|
||||||
|
}
|
||||||
@@ -95,4 +95,12 @@ public interface IDeviceManageAppService {
|
|||||||
* @param response 响应
|
* @param response 响应
|
||||||
*/
|
*/
|
||||||
void importTemplate(HttpServletResponse response);
|
void importTemplate(HttpServletResponse response);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 校验耗材是否可以编辑
|
||||||
|
*
|
||||||
|
* @param deviceId 耗材ID
|
||||||
|
* @return 校验结果
|
||||||
|
*/
|
||||||
|
R<?> validateDeviceEdit(Long deviceId);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -92,4 +92,12 @@ public interface IDiagTreatMAppService {
|
|||||||
* @param response 响应
|
* @param response 响应
|
||||||
*/
|
*/
|
||||||
void importTemplate(HttpServletResponse response);
|
void importTemplate(HttpServletResponse response);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 校验诊疗项目是否可以编辑
|
||||||
|
*
|
||||||
|
* @param activityId 诊疗ID
|
||||||
|
* @return 校验结果
|
||||||
|
*/
|
||||||
|
R<?> validateActivityEdit(Long activityId);
|
||||||
}
|
}
|
||||||
@@ -97,4 +97,12 @@ public interface IMedicationManageAppService {
|
|||||||
* @param response 响应
|
* @param response 响应
|
||||||
*/
|
*/
|
||||||
void importTemplate(HttpServletResponse response);
|
void importTemplate(HttpServletResponse response);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 校验药品是否可以编辑
|
||||||
|
*
|
||||||
|
* @param medicationId 药品ID
|
||||||
|
* @return 校验结果
|
||||||
|
*/
|
||||||
|
R<?> validateMedicationEdit(Long medicationId);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ import javax.annotation.Resource;
|
|||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
@@ -50,6 +49,8 @@ import com.openhis.web.datadictionary.appservice.IDeviceManageAppService;
|
|||||||
import com.openhis.web.datadictionary.appservice.IItemDefinitionService;
|
import com.openhis.web.datadictionary.appservice.IItemDefinitionService;
|
||||||
import com.openhis.web.datadictionary.dto.*;
|
import com.openhis.web.datadictionary.dto.*;
|
||||||
import com.openhis.web.datadictionary.mapper.DeviceManageMapper;
|
import com.openhis.web.datadictionary.mapper.DeviceManageMapper;
|
||||||
|
import com.openhis.workflow.domain.DeviceRequest;
|
||||||
|
import com.openhis.workflow.service.IDeviceRequestService;
|
||||||
import com.openhis.workflow.service.ISupplyRequestService;
|
import com.openhis.workflow.service.ISupplyRequestService;
|
||||||
import com.openhis.yb.service.YbManager;
|
import com.openhis.yb.service.YbManager;
|
||||||
|
|
||||||
@@ -62,38 +63,41 @@ import com.openhis.yb.service.YbManager;
|
|||||||
@Service
|
@Service
|
||||||
public class DeviceManageAppServiceImpl implements IDeviceManageAppService {
|
public class DeviceManageAppServiceImpl implements IDeviceManageAppService {
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private ISupplyRequestService supplyRequestService;
|
private ISupplyRequestService supplyRequestService;
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private IDeviceDefinitionService deviceDefinitionService;
|
private IDeviceDefinitionService deviceDefinitionService;
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private IChargeItemDefinitionService chargeItemDefinitionService;
|
private IChargeItemDefinitionService chargeItemDefinitionService;
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private ILocationService locationService;
|
private ILocationService locationService;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private DeviceManageMapper deviceManageMapper;
|
private DeviceManageMapper deviceManageMapper;
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private ISysDictTypeService sysDictTypeService;
|
private ISysDictTypeService sysDictTypeService;
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private IItemDefinitionService itemDefinitionServic;
|
private IItemDefinitionService itemDefinitionServic;
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private ISupplierService supplierService;
|
private ISupplierService supplierService;
|
||||||
|
|
||||||
@Autowired(required = false)
|
@Resource
|
||||||
private AssignSeqUtil assignSeqUtil;
|
private AssignSeqUtil assignSeqUtil;
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private YbManager ybService;
|
private YbManager ybService;
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private IOperationRecordService iOperationRecordService;
|
private IOperationRecordService operationRecordService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private IDeviceRequestService deviceRequestService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 器材目录初始化
|
* 器材目录初始化
|
||||||
@@ -199,11 +203,6 @@ public class DeviceManageAppServiceImpl implements IDeviceManageAppService {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public R<?> editDevice(DeviceManageUpDto deviceManageDto) {
|
public R<?> editDevice(DeviceManageUpDto deviceManageDto) {
|
||||||
// 校验是否可以编辑
|
|
||||||
boolean result = supplyRequestService.verifyAbleEdit(deviceManageDto.getId());
|
|
||||||
if (result) {
|
|
||||||
return R.fail("该耗材已经发生过业务,不可编辑");
|
|
||||||
}
|
|
||||||
DeviceDefinition deviceDefinition = new DeviceDefinition();
|
DeviceDefinition deviceDefinition = new DeviceDefinition();
|
||||||
BeanUtils.copyProperties(deviceManageDto, deviceDefinition);
|
BeanUtils.copyProperties(deviceManageDto, deviceDefinition);
|
||||||
// 拼音码
|
// 拼音码
|
||||||
@@ -230,7 +229,7 @@ public class DeviceManageAppServiceImpl implements IDeviceManageAppService {
|
|||||||
.setInstanceId(deviceDefinition.getId()).setPrice(deviceManageDto.getRetailPrice())
|
.setInstanceId(deviceDefinition.getId()).setPrice(deviceManageDto.getRetailPrice())
|
||||||
.setChargeName(deviceManageDto.getName());;
|
.setChargeName(deviceManageDto.getName());;
|
||||||
// 插入操作记录
|
// 插入操作记录
|
||||||
iOperationRecordService.addEntityOperationRecord(DbOpType.UPDATE.getCode(),
|
operationRecordService.addEntityOperationRecord(DbOpType.UPDATE.getCode(),
|
||||||
CommonConstants.TableName.ADM_DEVICE_DEFINITION, deviceDefinition);
|
CommonConstants.TableName.ADM_DEVICE_DEFINITION, deviceDefinition);
|
||||||
// 更新价格表
|
// 更新价格表
|
||||||
boolean upItemDef = itemDefinitionServic.updateItem(chargeItemDefinition);
|
boolean upItemDef = itemDefinitionServic.updateItem(chargeItemDefinition);
|
||||||
@@ -261,12 +260,10 @@ public class DeviceManageAppServiceImpl implements IDeviceManageAppService {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public R<?> getDeviceOne(@RequestParam Long id) {
|
public R<?> getDeviceOne(@RequestParam Long id) {
|
||||||
|
|
||||||
// 获取租户ID
|
// 获取租户ID
|
||||||
Integer tenantId = SecurityUtils.getLoginUser().getTenantId();
|
Integer tenantId = SecurityUtils.getLoginUser().getTenantId();
|
||||||
// 根据ID查询【器材目录】
|
// 根据ID查询【器材目录】
|
||||||
DeviceManageDto deviceManageDto = deviceManageMapper.getOne(id, tenantId);
|
DeviceManageDto deviceManageDto = deviceManageMapper.getOne(id, tenantId);
|
||||||
|
|
||||||
return R.ok(deviceManageDto);
|
return R.ok(deviceManageDto);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -278,9 +275,7 @@ public class DeviceManageAppServiceImpl implements IDeviceManageAppService {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public R<?> editDeviceStop(List<Long> ids) {
|
public R<?> editDeviceStop(List<Long> ids) {
|
||||||
|
|
||||||
List<DeviceDefinition> DeviceDefinitionList = new CopyOnWriteArrayList<>();
|
List<DeviceDefinition> DeviceDefinitionList = new CopyOnWriteArrayList<>();
|
||||||
|
|
||||||
// 取得更新值
|
// 取得更新值
|
||||||
for (Long detail : ids) {
|
for (Long detail : ids) {
|
||||||
DeviceDefinition deviceDefinition = new DeviceDefinition();
|
DeviceDefinition deviceDefinition = new DeviceDefinition();
|
||||||
@@ -289,7 +284,7 @@ public class DeviceManageAppServiceImpl implements IDeviceManageAppService {
|
|||||||
DeviceDefinitionList.add(deviceDefinition);
|
DeviceDefinitionList.add(deviceDefinition);
|
||||||
}
|
}
|
||||||
// 插入操作记录
|
// 插入操作记录
|
||||||
iOperationRecordService.addIdsOperationRecord(DbOpType.STOP.getCode(),
|
operationRecordService.addIdsOperationRecord(DbOpType.STOP.getCode(),
|
||||||
CommonConstants.TableName.ADM_DEVICE_DEFINITION, ids);
|
CommonConstants.TableName.ADM_DEVICE_DEFINITION, ids);
|
||||||
|
|
||||||
// 更新器材信息
|
// 更新器材信息
|
||||||
@@ -306,9 +301,7 @@ public class DeviceManageAppServiceImpl implements IDeviceManageAppService {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public R<?> editDeviceStart(List<Long> ids) {
|
public R<?> editDeviceStart(List<Long> ids) {
|
||||||
|
|
||||||
List<DeviceDefinition> DeviceDefinitionList = new CopyOnWriteArrayList<>();
|
List<DeviceDefinition> DeviceDefinitionList = new CopyOnWriteArrayList<>();
|
||||||
|
|
||||||
// 取得更新值
|
// 取得更新值
|
||||||
for (Long detail : ids) {
|
for (Long detail : ids) {
|
||||||
DeviceDefinition DeviceDefinition = new DeviceDefinition();
|
DeviceDefinition DeviceDefinition = new DeviceDefinition();
|
||||||
@@ -317,7 +310,7 @@ public class DeviceManageAppServiceImpl implements IDeviceManageAppService {
|
|||||||
DeviceDefinitionList.add(DeviceDefinition);
|
DeviceDefinitionList.add(DeviceDefinition);
|
||||||
}
|
}
|
||||||
// 插入操作记录
|
// 插入操作记录
|
||||||
iOperationRecordService.addIdsOperationRecord(DbOpType.START.getCode(),
|
operationRecordService.addIdsOperationRecord(DbOpType.START.getCode(),
|
||||||
CommonConstants.TableName.ADM_DEVICE_DEFINITION, ids);
|
CommonConstants.TableName.ADM_DEVICE_DEFINITION, ids);
|
||||||
|
|
||||||
// 更新器材信息
|
// 更新器材信息
|
||||||
@@ -333,10 +326,8 @@ public class DeviceManageAppServiceImpl implements IDeviceManageAppService {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public R<?> addDevice(@Validated @RequestBody DeviceManageUpDto deviceManageUpDto) {
|
public R<?> addDevice(@Validated @RequestBody DeviceManageUpDto deviceManageUpDto) {
|
||||||
|
|
||||||
DeviceDefinition deviceDefinition = new DeviceDefinition();
|
DeviceDefinition deviceDefinition = new DeviceDefinition();
|
||||||
BeanUtils.copyProperties(deviceManageUpDto, deviceDefinition);
|
BeanUtils.copyProperties(deviceManageUpDto, deviceDefinition);
|
||||||
|
|
||||||
// 使用10位数基础采番
|
// 使用10位数基础采番
|
||||||
String code = assignSeqUtil.getSeq(AssignSeqEnum.DEVICE_NUM.getPrefix(), 10);
|
String code = assignSeqUtil.getSeq(AssignSeqEnum.DEVICE_NUM.getPrefix(), 10);
|
||||||
deviceDefinition.setBusNo(code);
|
deviceDefinition.setBusNo(code);
|
||||||
@@ -344,10 +335,8 @@ public class DeviceManageAppServiceImpl implements IDeviceManageAppService {
|
|||||||
deviceDefinition.setPyStr(ChineseConvertUtils.toPinyinFirstLetter(deviceDefinition.getName()));
|
deviceDefinition.setPyStr(ChineseConvertUtils.toPinyinFirstLetter(deviceDefinition.getName()));
|
||||||
// 五笔码
|
// 五笔码
|
||||||
deviceDefinition.setWbStr(ChineseConvertUtils.toWBFirstLetter(deviceDefinition.getName()));
|
deviceDefinition.setWbStr(ChineseConvertUtils.toWBFirstLetter(deviceDefinition.getName()));
|
||||||
|
|
||||||
// 新增外来器材目录
|
// 新增外来器材目录
|
||||||
deviceDefinition.setStatusEnum(PublicationStatus.ACTIVE.getValue());
|
deviceDefinition.setStatusEnum(PublicationStatus.ACTIVE.getValue());
|
||||||
|
|
||||||
if (deviceDefinitionService.addDevice(deviceDefinition)) {
|
if (deviceDefinitionService.addDevice(deviceDefinition)) {
|
||||||
// 调用医保目录对照接口
|
// 调用医保目录对照接口
|
||||||
String ybSwitch = SecurityUtils.getLoginUser().getOptionJson().getString(CommonConstants.Option.YB_SWITCH); // 医保开关
|
String ybSwitch = SecurityUtils.getLoginUser().getOptionJson().getString(CommonConstants.Option.YB_SWITCH); // 医保开关
|
||||||
@@ -359,7 +348,7 @@ public class DeviceManageAppServiceImpl implements IDeviceManageAppService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 插入操作记录
|
// 插入操作记录
|
||||||
iOperationRecordService.addEntityOperationRecord(DbOpType.INSERT.getCode(),
|
operationRecordService.addEntityOperationRecord(DbOpType.INSERT.getCode(),
|
||||||
CommonConstants.TableName.ADM_DEVICE_DEFINITION, deviceDefinition);
|
CommonConstants.TableName.ADM_DEVICE_DEFINITION, deviceDefinition);
|
||||||
|
|
||||||
ItemUpFromDirectoryDto itemUpFromDirectoryDto = new ItemUpFromDirectoryDto();
|
ItemUpFromDirectoryDto itemUpFromDirectoryDto = new ItemUpFromDirectoryDto();
|
||||||
@@ -374,7 +363,6 @@ public class DeviceManageAppServiceImpl implements IDeviceManageAppService {
|
|||||||
? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00002, new Object[] {"器材目录"}))
|
? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00002, new Object[] {"器材目录"}))
|
||||||
: R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00008, null));
|
: R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00008, null));
|
||||||
}
|
}
|
||||||
|
|
||||||
return R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00008, null));
|
return R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00008, null));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -430,6 +418,30 @@ public class DeviceManageAppServiceImpl implements IDeviceManageAppService {
|
|||||||
util.importTemplateExcel(response, "器材目录数据");
|
util.importTemplateExcel(response, "器材目录数据");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 校验耗材是否可以编辑
|
||||||
|
*
|
||||||
|
* @param deviceId 耗材ID
|
||||||
|
* @return 校验结果
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public R<?> validateDeviceEdit(Long deviceId) {
|
||||||
|
List<DeviceRequest> deviceRequestList = deviceRequestService.getDevRequestByDeviceId(deviceId);
|
||||||
|
if (!deviceRequestList.isEmpty()) {
|
||||||
|
if (deviceRequestList.stream()
|
||||||
|
.allMatch(x -> x.getStatusEnum().equals(RequestStatus.COMPLETED.getValue()))) {
|
||||||
|
return R.ok(1, "医生开过该耗材,不可编辑");
|
||||||
|
} else {
|
||||||
|
// 校验是否可以编辑
|
||||||
|
boolean result = supplyRequestService.verifyAbleEdit(deviceId);
|
||||||
|
if (result) {
|
||||||
|
return R.ok(2, "该耗材已经入库过,不可编辑");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return R.ok();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 导入信息校验
|
* 导入信息校验
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ import javax.annotation.Resource;
|
|||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
@@ -38,14 +37,14 @@ import com.openhis.common.utils.CommonUtil;
|
|||||||
import com.openhis.common.utils.EnumUtils;
|
import com.openhis.common.utils.EnumUtils;
|
||||||
import com.openhis.common.utils.HisQueryUtils;
|
import com.openhis.common.utils.HisQueryUtils;
|
||||||
import com.openhis.sys.service.IOperationRecordService;
|
import com.openhis.sys.service.IOperationRecordService;
|
||||||
import com.openhis.web.common.appservice.ICommonService;
|
|
||||||
import com.openhis.web.datadictionary.appservice.IDiagTreatMAppService;
|
import com.openhis.web.datadictionary.appservice.IDiagTreatMAppService;
|
||||||
import com.openhis.web.datadictionary.appservice.IItemDefinitionService;
|
import com.openhis.web.datadictionary.appservice.IItemDefinitionService;
|
||||||
import com.openhis.web.datadictionary.dto.*;
|
import com.openhis.web.datadictionary.dto.*;
|
||||||
import com.openhis.web.datadictionary.mapper.ActivityDefinitionManageMapper;
|
import com.openhis.web.datadictionary.mapper.ActivityDefinitionManageMapper;
|
||||||
import com.openhis.workflow.domain.ActivityDefinition;
|
import com.openhis.workflow.domain.ActivityDefinition;
|
||||||
import com.openhis.workflow.mapper.ActivityDefinitionMapper;
|
import com.openhis.workflow.domain.ServiceRequest;
|
||||||
import com.openhis.workflow.service.IActivityDefinitionService;
|
import com.openhis.workflow.service.IActivityDefinitionService;
|
||||||
|
import com.openhis.workflow.service.IServiceRequestService;
|
||||||
import com.openhis.yb.service.YbManager;
|
import com.openhis.yb.service.YbManager;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -57,34 +56,26 @@ import com.openhis.yb.service.YbManager;
|
|||||||
@Service
|
@Service
|
||||||
public class DiagTreatMAppServiceImpl implements IDiagTreatMAppService {
|
public class DiagTreatMAppServiceImpl implements IDiagTreatMAppService {
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private IActivityDefinitionService activityDefinitionService;
|
private IActivityDefinitionService activityDefinitionService;
|
||||||
@Autowired
|
@Resource
|
||||||
private IChargeItemDefinitionService chargeItemDefinitionService;
|
private IChargeItemDefinitionService chargeItemDefinitionService;
|
||||||
@Autowired
|
@Resource
|
||||||
private ActivityDefinitionMapper activityDefinitionMapper;
|
private IOrganizationService organizationService;
|
||||||
@Autowired
|
|
||||||
private IOrganizationService iOrganizationService;
|
|
||||||
@Autowired
|
|
||||||
private ISysDictTypeService iSysDictTypeService;
|
|
||||||
@Resource
|
@Resource
|
||||||
private ActivityDefinitionManageMapper activityDefinitionManageMapper;
|
private ActivityDefinitionManageMapper activityDefinitionManageMapper;
|
||||||
@Autowired
|
@Resource
|
||||||
private IItemDefinitionService itemDefinitionServic;
|
private IItemDefinitionService itemDefinitionService;
|
||||||
@Autowired
|
@Resource
|
||||||
private ISysDictTypeService sysDictTypeService;
|
private ISysDictTypeService sysDictTypeService;
|
||||||
|
@Resource
|
||||||
@Autowired
|
private AssignSeqUtil assignSeqUtil;
|
||||||
private ICommonService commonService;
|
@Resource
|
||||||
|
private YbManager ybService;
|
||||||
@Autowired(required = false)
|
@Resource
|
||||||
AssignSeqUtil assignSeqUtil;
|
private IOperationRecordService operationRecordService;
|
||||||
|
@Resource
|
||||||
@Autowired
|
private IServiceRequestService serviceRequestService;
|
||||||
YbManager ybService;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
IOperationRecordService iOperationRecordService;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 诊疗目录初期查询
|
* 诊疗目录初期查询
|
||||||
@@ -102,7 +93,7 @@ public class DiagTreatMAppServiceImpl implements IDiagTreatMAppService {
|
|||||||
// 获取执行科室
|
// 获取执行科室
|
||||||
LambdaQueryWrapper<Organization> queryWrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<Organization> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
queryWrapper.eq(Organization::getTypeEnum, OrganizationType.DEPARTMENT);
|
queryWrapper.eq(Organization::getTypeEnum, OrganizationType.DEPARTMENT);
|
||||||
List<Organization> organizations = iOrganizationService.list(queryWrapper);
|
List<Organization> organizations = organizationService.list(queryWrapper);
|
||||||
List<DiagnosisTreatmentInitDto.exeOrganization> exeOrganizations = organizations.stream()
|
List<DiagnosisTreatmentInitDto.exeOrganization> exeOrganizations = organizations.stream()
|
||||||
.map(exeOrg -> new DiagnosisTreatmentInitDto.exeOrganization(exeOrg.getId(), exeOrg.getName()))
|
.map(exeOrg -> new DiagnosisTreatmentInitDto.exeOrganization(exeOrg.getId(), exeOrg.getName()))
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
@@ -259,16 +250,16 @@ public class DiagTreatMAppServiceImpl implements IDiagTreatMAppService {
|
|||||||
.setInstanceId(diagnosisTreatmentUpDto.getId()).setPrice(diagnosisTreatmentUpDto.getRetailPrice())
|
.setInstanceId(diagnosisTreatmentUpDto.getId()).setPrice(diagnosisTreatmentUpDto.getRetailPrice())
|
||||||
.setChargeName(diagnosisTreatmentUpDto.getName());
|
.setChargeName(diagnosisTreatmentUpDto.getName());
|
||||||
// 插入操作记录
|
// 插入操作记录
|
||||||
iOperationRecordService.addEntityOperationRecord(DbOpType.UPDATE.getCode(),
|
operationRecordService.addEntityOperationRecord(DbOpType.UPDATE.getCode(),
|
||||||
CommonConstants.TableName.WOR_ACTIVITY_DEFINITION, activityDefinition);
|
CommonConstants.TableName.WOR_ACTIVITY_DEFINITION, activityDefinition);
|
||||||
|
|
||||||
// 更新价格表
|
// 更新价格表
|
||||||
boolean upItemDef = itemDefinitionServic.updateItem(chargeItemDefinition);
|
boolean upItemDef = itemDefinitionService.updateItem(chargeItemDefinition);
|
||||||
// 更新子表,修改零售价,条件:单位
|
// 更新子表,修改零售价,条件:单位
|
||||||
boolean upItemDetail1 = itemDefinitionServic.updateItemDetail(chargeItemDefinition,
|
boolean upItemDetail1 = itemDefinitionService.updateItemDetail(chargeItemDefinition,
|
||||||
diagnosisTreatmentUpDto.getRetailPrice(), ConditionCode.UNIT.getCode());
|
diagnosisTreatmentUpDto.getRetailPrice(), ConditionCode.UNIT.getCode());
|
||||||
// 更新子表,修改最高零售价,条件:限制
|
// 更新子表,修改最高零售价,条件:限制
|
||||||
boolean upItemDetail2 = itemDefinitionServic.updateItemDetail(chargeItemDefinition,
|
boolean upItemDetail2 = itemDefinitionService.updateItemDetail(chargeItemDefinition,
|
||||||
diagnosisTreatmentUpDto.getMaximumRetailPrice(), ConditionCode.LIMIT.getCode());
|
diagnosisTreatmentUpDto.getMaximumRetailPrice(), ConditionCode.LIMIT.getCode());
|
||||||
|
|
||||||
// 更新价格表
|
// 更新价格表
|
||||||
@@ -299,7 +290,7 @@ public class DiagTreatMAppServiceImpl implements IDiagTreatMAppService {
|
|||||||
ActivityDefinitionList.add(ActivityDefinition);
|
ActivityDefinitionList.add(ActivityDefinition);
|
||||||
}
|
}
|
||||||
// 插入操作记录
|
// 插入操作记录
|
||||||
iOperationRecordService.addIdsOperationRecord(DbOpType.STOP.getCode(),
|
operationRecordService.addIdsOperationRecord(DbOpType.STOP.getCode(),
|
||||||
CommonConstants.TableName.WOR_ACTIVITY_DEFINITION, ids);
|
CommonConstants.TableName.WOR_ACTIVITY_DEFINITION, ids);
|
||||||
// 更新诊疗信息
|
// 更新诊疗信息
|
||||||
return activityDefinitionService.updateBatchById(ActivityDefinitionList)
|
return activityDefinitionService.updateBatchById(ActivityDefinitionList)
|
||||||
@@ -327,7 +318,7 @@ public class DiagTreatMAppServiceImpl implements IDiagTreatMAppService {
|
|||||||
ActivityDefinitionList.add(ActivityDefinition);
|
ActivityDefinitionList.add(ActivityDefinition);
|
||||||
}
|
}
|
||||||
// 插入操作记录
|
// 插入操作记录
|
||||||
iOperationRecordService.addIdsOperationRecord(DbOpType.START.getCode(),
|
operationRecordService.addIdsOperationRecord(DbOpType.START.getCode(),
|
||||||
CommonConstants.TableName.WOR_ACTIVITY_DEFINITION, ids);
|
CommonConstants.TableName.WOR_ACTIVITY_DEFINITION, ids);
|
||||||
// 更新诊疗信息
|
// 更新诊疗信息
|
||||||
return activityDefinitionService.updateBatchById(ActivityDefinitionList)
|
return activityDefinitionService.updateBatchById(ActivityDefinitionList)
|
||||||
@@ -374,7 +365,7 @@ public class DiagTreatMAppServiceImpl implements IDiagTreatMAppService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 插入操作记录
|
// 插入操作记录
|
||||||
iOperationRecordService.addEntityOperationRecord(DbOpType.INSERT.getCode(),
|
operationRecordService.addEntityOperationRecord(DbOpType.INSERT.getCode(),
|
||||||
CommonConstants.TableName.WOR_ACTIVITY_DEFINITION, activityDefinition);
|
CommonConstants.TableName.WOR_ACTIVITY_DEFINITION, activityDefinition);
|
||||||
|
|
||||||
ItemUpFromDirectoryDto itemUpFromDirectoryDto = new ItemUpFromDirectoryDto();
|
ItemUpFromDirectoryDto itemUpFromDirectoryDto = new ItemUpFromDirectoryDto();
|
||||||
@@ -386,7 +377,7 @@ public class DiagTreatMAppServiceImpl implements IDiagTreatMAppService {
|
|||||||
.setConditionFlag(Whether.YES.getValue()).setChargeName(diagnosisTreatmentUpDto.getName())
|
.setConditionFlag(Whether.YES.getValue()).setChargeName(diagnosisTreatmentUpDto.getName())
|
||||||
.setInstanceId(activityDefinition.getId()).setPrice(diagnosisTreatmentUpDto.getRetailPrice());
|
.setInstanceId(activityDefinition.getId()).setPrice(diagnosisTreatmentUpDto.getRetailPrice());
|
||||||
|
|
||||||
return itemDefinitionServic.addItem(itemUpFromDirectoryDto)
|
return itemDefinitionService.addItem(itemUpFromDirectoryDto)
|
||||||
? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00002, new Object[] {"诊疗目录"}))
|
? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00002, new Object[] {"诊疗目录"}))
|
||||||
: R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00008, null));
|
: R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00008, null));
|
||||||
|
|
||||||
@@ -442,6 +433,25 @@ public class DiagTreatMAppServiceImpl implements IDiagTreatMAppService {
|
|||||||
util.importTemplateExcel(response, "诊疗目录数据");
|
util.importTemplateExcel(response, "诊疗目录数据");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 校验诊疗项目是否可以编辑
|
||||||
|
*
|
||||||
|
* @param activityId 诊疗ID
|
||||||
|
* @return 校验结果
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public R<?> validateActivityEdit(Long activityId) {
|
||||||
|
// 查询诊疗申请
|
||||||
|
List<ServiceRequest> serviceRequestList = serviceRequestService.getServiceRequestByActivityId(activityId);
|
||||||
|
if (!serviceRequestList.isEmpty()) {
|
||||||
|
if (serviceRequestList.stream().anyMatch(
|
||||||
|
serviceRequest -> RequestStatus.COMPLETED.getValue().equals(serviceRequest.getStatusEnum()))) {
|
||||||
|
return R.ok(1,"医生开过该诊疗项目,不可编辑");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return R.ok();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 导入信息校验
|
* 导入信息校验
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -0,0 +1,118 @@
|
|||||||
|
package com.openhis.web.datadictionary.appservice.impl;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import com.core.common.utils.ChineseConvertUtils;
|
||||||
|
import com.core.common.utils.MessageUtils;
|
||||||
|
import com.core.common.utils.StringUtils;
|
||||||
|
import com.openhis.administration.domain.Account;
|
||||||
|
import com.openhis.administration.domain.Location;
|
||||||
|
import com.openhis.administration.mapper.LocationMapper;
|
||||||
|
import com.openhis.administration.service.ILocationService;
|
||||||
|
import com.openhis.clinical.domain.ConditionNoDefinition;
|
||||||
|
import com.openhis.clinical.mapper.ConditionNoDefinitionMapper;
|
||||||
|
import com.openhis.clinical.service.IConditionNoDefinitionService;
|
||||||
|
import com.openhis.common.constant.CommonConstants;
|
||||||
|
import com.openhis.common.constant.PromptMsgConstant;
|
||||||
|
import com.openhis.common.enums.*;
|
||||||
|
import com.openhis.common.utils.HisPageUtils;
|
||||||
|
import com.openhis.common.utils.HisQueryUtils;
|
||||||
|
import com.openhis.web.basedatamanage.dto.LocationAddOrEditDto;
|
||||||
|
import com.openhis.web.basedatamanage.dto.LocationInfoDto;
|
||||||
|
import com.openhis.web.datadictionary.dto.DeviceManageDto;
|
||||||
|
import com.openhis.web.datadictionary.dto.ICDCodeAddDto;
|
||||||
|
import com.openhis.web.datadictionary.dto.ICDCodeDto;
|
||||||
|
import com.openhis.web.datadictionary.dto.ICDCodeUpdateDto;
|
||||||
|
import com.openhis.workflow.domain.SupplyRequest;
|
||||||
|
import org.springframework.beans.BeanUtils;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import com.core.common.core.domain.R;
|
||||||
|
import com.openhis.web.datadictionary.appservice.ICDCodeService;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class ICDCodeServiceImpl implements ICDCodeService {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ConditionNoDefinitionMapper conditionNoDefinitionMapper;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ICDCodeService icdCodeService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private IConditionNoDefinitionService conditionNoDefinitionService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param searchKey
|
||||||
|
* @param pageNo
|
||||||
|
* @param pageSize
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public R<?> getICDCodePage(String searchKey, Integer pageNo, Integer pageSize) {
|
||||||
|
// 构建查询条件
|
||||||
|
QueryWrapper<ConditionNoDefinition> queryWrapper = HisQueryUtils.buildQueryWrapper(null,searchKey,
|
||||||
|
new HashSet<>(Arrays.asList("gl_no", "gl_name", "icd10_no", "icd10_name")), null);
|
||||||
|
Page<ICDCodeDto> icdCodeDtoPage =
|
||||||
|
HisPageUtils.selectPage(conditionNoDefinitionMapper, queryWrapper, pageNo, pageSize, ICDCodeDto.class);
|
||||||
|
return R.ok(icdCodeDtoPage);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加
|
||||||
|
* @param icdCodeAddDto
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public R<?> addICDInformation(ICDCodeAddDto icdCodeAddDto) {
|
||||||
|
ConditionNoDefinition conditionNoDefinition = new ConditionNoDefinition();
|
||||||
|
conditionNoDefinition.setIcd10No(icdCodeAddDto.getIcd10No());
|
||||||
|
conditionNoDefinition.setIcd10Name(icdCodeAddDto.getIcd10Name());
|
||||||
|
conditionNoDefinition.setGlNo(icdCodeAddDto.getGlNo());
|
||||||
|
conditionNoDefinition.setGlName(icdCodeAddDto.getGlName());
|
||||||
|
boolean result = conditionNoDefinitionService.save(conditionNoDefinition);
|
||||||
|
if(result){
|
||||||
|
return R.ok("ok");
|
||||||
|
}
|
||||||
|
return R.fail("no");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除
|
||||||
|
* @param glNo
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public R<?> deleteICDInformation(String glNo) {
|
||||||
|
boolean result =
|
||||||
|
conditionNoDefinitionService.remove(new LambdaQueryWrapper<ConditionNoDefinition>().likeRight(ConditionNoDefinition::getGlNo, glNo));
|
||||||
|
return result ? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00005, new Object[] {"国临编码信息删除"}))
|
||||||
|
: R.fail(MessageUtils.createMessage(PromptMsgConstant.Common.M00006, new Object[] {"国临编码信息删除"}));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public R<?> saveOrUpdateICDInformation(ICDCodeUpdateDto icdCodeUpdateDto) {
|
||||||
|
ConditionNoDefinition conditionNoDefinition = new ConditionNoDefinition();
|
||||||
|
conditionNoDefinition.setId(icdCodeUpdateDto.getId());
|
||||||
|
conditionNoDefinition.setIcd10No(icdCodeUpdateDto.getIcd10No());
|
||||||
|
conditionNoDefinition.setIcd10Name(icdCodeUpdateDto.getIcd10Name());
|
||||||
|
conditionNoDefinition.setGlNo(icdCodeUpdateDto.getGlNo());
|
||||||
|
conditionNoDefinition.setGlName(icdCodeUpdateDto.getGlName());
|
||||||
|
boolean result=conditionNoDefinitionService.saveOrUpdate(conditionNoDefinition);
|
||||||
|
if(result){
|
||||||
|
return R.ok("ok");
|
||||||
|
}
|
||||||
|
return R.fail("no");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -4,7 +4,8 @@ import java.math.BigDecimal;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
@@ -12,7 +13,6 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|||||||
import com.core.common.utils.bean.BeanUtils;
|
import com.core.common.utils.bean.BeanUtils;
|
||||||
import com.openhis.administration.domain.ChargeItemDefDetail;
|
import com.openhis.administration.domain.ChargeItemDefDetail;
|
||||||
import com.openhis.administration.domain.ChargeItemDefinition;
|
import com.openhis.administration.domain.ChargeItemDefinition;
|
||||||
import com.openhis.administration.mapper.ChargeItemDefAppMapper;
|
|
||||||
import com.openhis.administration.mapper.ChargeItemDefinitionMapper;
|
import com.openhis.administration.mapper.ChargeItemDefinitionMapper;
|
||||||
import com.openhis.administration.service.IChargeItemDefDetailService;
|
import com.openhis.administration.service.IChargeItemDefDetailService;
|
||||||
import com.openhis.administration.service.IChargeItemDefinitionService;
|
import com.openhis.administration.service.IChargeItemDefinitionService;
|
||||||
@@ -30,15 +30,14 @@ import com.openhis.web.datadictionary.dto.ItemUpFromDirectoryDto;
|
|||||||
@Service
|
@Service
|
||||||
public class ItemDefinitionServiceImpl implements IItemDefinitionService {
|
public class ItemDefinitionServiceImpl implements IItemDefinitionService {
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
IChargeItemDefinitionService chargeItemDefinitionService;
|
private IChargeItemDefinitionService chargeItemDefinitionService;
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
IChargeItemDefDetailService chargeItemDefDetailService;
|
private IChargeItemDefDetailService chargeItemDefDetailService;
|
||||||
@Autowired
|
|
||||||
ChargeItemDefinitionMapper chargeItemDefinitionMapper;
|
@Resource
|
||||||
@Autowired
|
private ChargeItemDefinitionMapper chargeItemDefinitionMapper;
|
||||||
ChargeItemDefAppMapper chargeItemDefAppMapper;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 添加药品/器材/诊疗的项目定价
|
* 添加药品/器材/诊疗的项目定价
|
||||||
|
|||||||
@@ -8,10 +8,10 @@ import java.util.*;
|
|||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
@@ -44,8 +44,9 @@ import com.openhis.common.utils.HisQueryUtils;
|
|||||||
import com.openhis.medication.domain.Medication;
|
import com.openhis.medication.domain.Medication;
|
||||||
import com.openhis.medication.domain.MedicationDefinition;
|
import com.openhis.medication.domain.MedicationDefinition;
|
||||||
import com.openhis.medication.domain.MedicationDetail;
|
import com.openhis.medication.domain.MedicationDetail;
|
||||||
|
import com.openhis.medication.domain.MedicationRequest;
|
||||||
import com.openhis.medication.service.IMedicationDefinitionService;
|
import com.openhis.medication.service.IMedicationDefinitionService;
|
||||||
import com.openhis.medication.service.IMedicationDispenseService;
|
import com.openhis.medication.service.IMedicationRequestService;
|
||||||
import com.openhis.medication.service.IMedicationService;
|
import com.openhis.medication.service.IMedicationService;
|
||||||
import com.openhis.sys.service.IOperationRecordService;
|
import com.openhis.sys.service.IOperationRecordService;
|
||||||
import com.openhis.web.datadictionary.appservice.IItemDefinitionService;
|
import com.openhis.web.datadictionary.appservice.IItemDefinitionService;
|
||||||
@@ -64,43 +65,44 @@ import com.openhis.yb.service.YbManager;
|
|||||||
@Service
|
@Service
|
||||||
public class MedicationManageAppServiceImpl implements IMedicationManageAppService {
|
public class MedicationManageAppServiceImpl implements IMedicationManageAppService {
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private IMedicationService medicationService;
|
private IMedicationService medicationService;
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private IMedicationDefinitionService medicationDefinitionService;
|
private IMedicationDefinitionService medicationDefinitionService;
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private IChargeItemDefinitionService chargeItemDefinitionService;
|
private IChargeItemDefinitionService chargeItemDefinitionService;
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private ILocationService locationService;
|
private ILocationService locationService;
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private MedicationManageSearchMapper medicationManageSearchMapper;
|
private MedicationManageSearchMapper medicationManageSearchMapper;
|
||||||
@Autowired
|
|
||||||
|
@Resource
|
||||||
private ISupplierService supplierService;
|
private ISupplierService supplierService;
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private ISysDictTypeService sysDictTypeService;
|
private ISysDictTypeService sysDictTypeService;
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private IItemDefinitionService itemDefinitionServic;
|
private IItemDefinitionService itemDefinitionServic;
|
||||||
|
|
||||||
@Autowired(required = false)
|
@Resource
|
||||||
private AssignSeqUtil assignSeqUtil;
|
private AssignSeqUtil assignSeqUtil;
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private YbManager ybService;
|
private YbManager ybService;
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private IOperationRecordService iOperationRecordService;
|
private IOperationRecordService operationRecordService;
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private ISupplyRequestService supplyRequestService;
|
private ISupplyRequestService supplyRequestService;
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private IMedicationDispenseService medicationDispenseService;
|
private IMedicationRequestService medicationRequestService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 药品目录初始化
|
* 药品目录初始化
|
||||||
@@ -247,11 +249,6 @@ public class MedicationManageAppServiceImpl implements IMedicationManageAppServi
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public R<?> editMedication(@Validated @RequestBody MedicationManageUpDto medicationManageUpDto) {
|
public R<?> editMedication(@Validated @RequestBody MedicationManageUpDto medicationManageUpDto) {
|
||||||
// 校验是否可以编辑
|
|
||||||
boolean result = supplyRequestService.verifyAbleEdit(medicationManageUpDto.getMedicationDefId());
|
|
||||||
if (result) {
|
|
||||||
return R.fail("该药品已经发生过业务,不可编辑");
|
|
||||||
}
|
|
||||||
// Todo:用Medication和medicationDefinition的domainservice来创造新的实例,根据业务需求,使用构造函数;
|
// Todo:用Medication和medicationDefinition的domainservice来创造新的实例,根据业务需求,使用构造函数;
|
||||||
// 如果小于5哥变量,就用基本类型传递,如果大于5哥,在domain层定义构造方法的入参
|
// 如果小于5哥变量,就用基本类型传递,如果大于5哥,在domain层定义构造方法的入参
|
||||||
|
|
||||||
@@ -294,7 +291,7 @@ public class MedicationManageAppServiceImpl implements IMedicationManageAppServi
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 插入操作记录
|
// 插入操作记录
|
||||||
iOperationRecordService.addEntityOperationRecord(DbOpType.UPDATE.getCode(),
|
operationRecordService.addEntityOperationRecord(DbOpType.UPDATE.getCode(),
|
||||||
CommonConstants.TableName.MED_MEDICATION_DEFINITION, medication);
|
CommonConstants.TableName.MED_MEDICATION_DEFINITION, medication);
|
||||||
// Todo:封装一个价格初始话的方法给app层调用
|
// Todo:封装一个价格初始话的方法给app层调用
|
||||||
// 更新价格表
|
// 更新价格表
|
||||||
@@ -355,7 +352,7 @@ public class MedicationManageAppServiceImpl implements IMedicationManageAppServi
|
|||||||
|
|
||||||
// TODO:别用三元,日志在业务代码以后记录
|
// TODO:别用三元,日志在业务代码以后记录
|
||||||
// 插入操作记录
|
// 插入操作记录
|
||||||
iOperationRecordService.addIdsOperationRecord(DbOpType.STOP.getCode(),
|
operationRecordService.addIdsOperationRecord(DbOpType.STOP.getCode(),
|
||||||
CommonConstants.TableName.MED_MEDICATION_DEFINITION, ids);
|
CommonConstants.TableName.MED_MEDICATION_DEFINITION, ids);
|
||||||
// 更新药品信息
|
// 更新药品信息
|
||||||
return medicationService.updateBatchById(medicationList)
|
return medicationService.updateBatchById(medicationList)
|
||||||
@@ -381,7 +378,7 @@ public class MedicationManageAppServiceImpl implements IMedicationManageAppServi
|
|||||||
medicationList.add(medication);
|
medicationList.add(medication);
|
||||||
}
|
}
|
||||||
// 插入操作记录
|
// 插入操作记录
|
||||||
iOperationRecordService.addIdsOperationRecord(DbOpType.START.getCode(),
|
operationRecordService.addIdsOperationRecord(DbOpType.START.getCode(),
|
||||||
CommonConstants.TableName.MED_MEDICATION_DEFINITION, ids);
|
CommonConstants.TableName.MED_MEDICATION_DEFINITION, ids);
|
||||||
// 更新药品信息
|
// 更新药品信息
|
||||||
return medicationService.updateBatchById(medicationList)
|
return medicationService.updateBatchById(medicationList)
|
||||||
@@ -424,7 +421,7 @@ public class MedicationManageAppServiceImpl implements IMedicationManageAppServi
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 插入操作记录
|
// 插入操作记录
|
||||||
iOperationRecordService.addEntityOperationRecord(DbOpType.INSERT.getCode(),
|
operationRecordService.addEntityOperationRecord(DbOpType.INSERT.getCode(),
|
||||||
CommonConstants.TableName.MED_MEDICATION_DEFINITION, medicationDetail);
|
CommonConstants.TableName.MED_MEDICATION_DEFINITION, medicationDetail);
|
||||||
// 新增子表外来药品目录
|
// 新增子表外来药品目录
|
||||||
boolean insertMedicationSuccess = medicationService.addMedication(medicationDetail);
|
boolean insertMedicationSuccess = medicationService.addMedication(medicationDetail);
|
||||||
@@ -515,6 +512,31 @@ public class MedicationManageAppServiceImpl implements IMedicationManageAppServi
|
|||||||
util.importTemplateExcel(response, "药品目录数据");
|
util.importTemplateExcel(response, "药品目录数据");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 校验药品是否可以编辑
|
||||||
|
*
|
||||||
|
* @param medicationId 药品ID
|
||||||
|
* @return 校验结果
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public R<?> validateMedicationEdit(Long medicationId) {
|
||||||
|
List<MedicationRequest> medicationRequestList =
|
||||||
|
medicationRequestService.getMedRequestByMedicationId(medicationId);
|
||||||
|
if (!medicationRequestList.isEmpty()) {
|
||||||
|
if (medicationRequestList.stream()
|
||||||
|
.allMatch(x -> x.getStatusEnum().equals(RequestStatus.COMPLETED.getValue()))) {
|
||||||
|
return R.ok(1, "医生开过该药品,不可编辑");
|
||||||
|
} else {
|
||||||
|
// 校验是否可以编辑
|
||||||
|
boolean result = supplyRequestService.verifyAbleEdit(medicationId);
|
||||||
|
if (result) {
|
||||||
|
return R.ok(2, "该药品已经入库过,不可编辑");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return R.ok();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 导入信息校验
|
* 导入信息校验
|
||||||
*
|
*
|
||||||
@@ -542,6 +564,9 @@ public class MedicationManageAppServiceImpl implements IMedicationManageAppServi
|
|||||||
if (StringUtils.isEmpty(importDto.getMerchandiseName())) {
|
if (StringUtils.isEmpty(importDto.getMerchandiseName())) {
|
||||||
lineValidateMsgList.add("商品名称必填");
|
lineValidateMsgList.add("商品名称必填");
|
||||||
}
|
}
|
||||||
|
if (StringUtils.isEmpty(importDto.getPharmacologyCategoryCode())) {
|
||||||
|
lineValidateMsgList.add("药品性质必填");
|
||||||
|
}
|
||||||
if (StringUtils.isEmpty(importDto.getUnitCode())) {
|
if (StringUtils.isEmpty(importDto.getUnitCode())) {
|
||||||
lineValidateMsgList.add("药品单位必填");
|
lineValidateMsgList.add("药品单位必填");
|
||||||
}
|
}
|
||||||
@@ -707,7 +732,7 @@ public class MedicationManageAppServiceImpl implements IMedicationManageAppServi
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!fieldValidateMsgList.isEmpty()) {
|
if (!fieldValidateMsgList.isEmpty()) {
|
||||||
return R.fail("导入失败!药品信息填写有误:" + String.join(" ", fieldValidateMsgList));
|
return R.fail("导入失败!药品信息填写有误:" + String.join(" ", fieldValidateMsgList) + " ■ ※如遇到模板中不存在的字段,请重新下载模板");
|
||||||
}
|
}
|
||||||
// 重复校验(文件行重复)
|
// 重复校验(文件行重复)
|
||||||
List<String> lineRepeatedValidateMsgList = new ArrayList<>();
|
List<String> lineRepeatedValidateMsgList = new ArrayList<>();
|
||||||
@@ -771,7 +796,8 @@ public class MedicationManageAppServiceImpl implements IMedicationManageAppServi
|
|||||||
.setPartPercent(importDto.getPartPercent()).setDoseFrom(CommonUtil.tryParseInt(importDto.getDoseFrom()))
|
.setPartPercent(importDto.getPartPercent()).setDoseFrom(CommonUtil.tryParseInt(importDto.getDoseFrom()))
|
||||||
.setApprovalNumber(importDto.getApprovalNumber())
|
.setApprovalNumber(importDto.getApprovalNumber())
|
||||||
.setYbMatchFlag(CommonUtil.tryParseInt(importDto.getYbMatchFlag())).setYbNo(importDto.getYbNo())
|
.setYbMatchFlag(CommonUtil.tryParseInt(importDto.getYbMatchFlag())).setYbNo(importDto.getYbNo())
|
||||||
.setPharmacologyCategoryCode("1").setSkinTestFlag(CommonUtil.tryParseInt(importDto.getSkinTestFlag()))
|
.setPharmacologyCategoryCode(importDto.getPharmacologyCategoryCode())
|
||||||
|
.setSkinTestFlag(CommonUtil.tryParseInt(importDto.getSkinTestFlag()))
|
||||||
.setInjectFlag(CommonUtil.tryParseInt(importDto.getInjectFlag()))
|
.setInjectFlag(CommonUtil.tryParseInt(importDto.getInjectFlag()))
|
||||||
.setManufacturerText(importDto.getManufacturerText())
|
.setManufacturerText(importDto.getManufacturerText())
|
||||||
.setRestrictedFlag(CommonUtil.tryParseInt(importDto.getRestrictedFlag()))
|
.setRestrictedFlag(CommonUtil.tryParseInt(importDto.getRestrictedFlag()))
|
||||||
|
|||||||
@@ -2,17 +2,16 @@ package com.openhis.web.datadictionary.controller;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
import com.core.common.core.domain.R;
|
import com.core.common.core.domain.R;
|
||||||
import com.openhis.web.datadictionary.appservice.IDeviceManageAppService;
|
import com.openhis.web.datadictionary.appservice.IDeviceManageAppService;
|
||||||
import com.openhis.web.datadictionary.dto.DeviceManageDto;
|
|
||||||
import com.openhis.web.datadictionary.dto.DeviceManageSelParam;
|
import com.openhis.web.datadictionary.dto.DeviceManageSelParam;
|
||||||
import com.openhis.web.datadictionary.dto.DeviceManageUpDto;
|
import com.openhis.web.datadictionary.dto.DeviceManageUpDto;
|
||||||
|
|
||||||
@@ -31,7 +30,7 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public class DeviceManageController {
|
public class DeviceManageController {
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private IDeviceManageAppService deviceManageAppService;
|
private IDeviceManageAppService deviceManageAppService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -69,7 +68,6 @@ public class DeviceManageController {
|
|||||||
*/
|
*/
|
||||||
@GetMapping("/information-one")
|
@GetMapping("/information-one")
|
||||||
public R<?> getDeviceOne(@RequestParam Long id) {
|
public R<?> getDeviceOne(@RequestParam Long id) {
|
||||||
|
|
||||||
return deviceManageAppService.getDeviceOne(id);
|
return deviceManageAppService.getDeviceOne(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -81,7 +79,6 @@ public class DeviceManageController {
|
|||||||
*/
|
*/
|
||||||
@PutMapping("/information")
|
@PutMapping("/information")
|
||||||
public R<?> editDevice(@RequestBody DeviceManageUpDto deviceManageDto) {
|
public R<?> editDevice(@RequestBody DeviceManageUpDto deviceManageDto) {
|
||||||
|
|
||||||
return deviceManageAppService.editDevice(deviceManageDto);
|
return deviceManageAppService.editDevice(deviceManageDto);
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -119,28 +116,6 @@ public class DeviceManageController {
|
|||||||
return deviceManageAppService.addDevice(deviceManageUpDto);
|
return deviceManageAppService.addDevice(deviceManageUpDto);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 新增医保器材目录
|
|
||||||
*
|
|
||||||
* @param DeviceManageUpDto 器材目录
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
@PostMapping("/information-yb")
|
|
||||||
public R<?> addYbDevice(@RequestBody DeviceManageUpDto DeviceManageUpDto) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 器材目录导出
|
|
||||||
*
|
|
||||||
* @param DeviceManageDto 器材目录
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
@GetMapping("/information-export")
|
|
||||||
public R<?> exportDevice(@RequestBody DeviceManageDto DeviceManageDto) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 导入器材目录
|
* 导入器材目录
|
||||||
*
|
*
|
||||||
@@ -161,4 +136,15 @@ public class DeviceManageController {
|
|||||||
public void importTemplate(HttpServletResponse response) {
|
public void importTemplate(HttpServletResponse response) {
|
||||||
deviceManageAppService.importTemplate(response);
|
deviceManageAppService.importTemplate(response);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 校验耗材是否可以编辑
|
||||||
|
*
|
||||||
|
* @param deviceId 耗材ID
|
||||||
|
* @return 校验结果
|
||||||
|
*/
|
||||||
|
@GetMapping("/validate-edit")
|
||||||
|
public R<?> validateDeviceEdit(Long deviceId) {
|
||||||
|
return deviceManageAppService.validateDeviceEdit(deviceId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,17 +2,16 @@ package com.openhis.web.datadictionary.controller;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
import com.core.common.core.domain.R;
|
import com.core.common.core.domain.R;
|
||||||
import com.openhis.web.datadictionary.appservice.IDiagTreatMAppService;
|
import com.openhis.web.datadictionary.appservice.IDiagTreatMAppService;
|
||||||
import com.openhis.web.datadictionary.dto.DiagnosisTreatmentDto;
|
|
||||||
import com.openhis.web.datadictionary.dto.DiagnosisTreatmentSelParam;
|
import com.openhis.web.datadictionary.dto.DiagnosisTreatmentSelParam;
|
||||||
import com.openhis.web.datadictionary.dto.DiagnosisTreatmentUpDto;
|
import com.openhis.web.datadictionary.dto.DiagnosisTreatmentUpDto;
|
||||||
|
|
||||||
@@ -31,7 +30,7 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public class DiagnosisTreatmentController {
|
public class DiagnosisTreatmentController {
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private IDiagTreatMAppService diagTreatMAppService;
|
private IDiagTreatMAppService diagTreatMAppService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -107,7 +106,7 @@ public class DiagnosisTreatmentController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 新增外来诊疗目录
|
* 新增诊疗目录
|
||||||
*
|
*
|
||||||
* @param diagnosisTreatmentUpDto 诊疗目录
|
* @param diagnosisTreatmentUpDto 诊疗目录
|
||||||
* @return
|
* @return
|
||||||
@@ -117,28 +116,6 @@ public class DiagnosisTreatmentController {
|
|||||||
return diagTreatMAppService.addDiseaseTreatment(diagnosisTreatmentUpDto);
|
return diagTreatMAppService.addDiseaseTreatment(diagnosisTreatmentUpDto);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 新增医保诊疗目录
|
|
||||||
*
|
|
||||||
* @param diagnosisTreatmentUpDto 诊疗目录
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
@PostMapping("/information-yb")
|
|
||||||
public R<?> addYbDiseaseTreatment(@RequestBody DiagnosisTreatmentUpDto diagnosisTreatmentUpDto) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 诊疗目录导出
|
|
||||||
*
|
|
||||||
* @param diagnosisTreatmentDto 诊疗目录
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
@GetMapping("/information-export")
|
|
||||||
public R<?> exportDiseaseTreatment(@RequestBody DiagnosisTreatmentDto diagnosisTreatmentDto) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 导入诊疗目录
|
* 导入诊疗目录
|
||||||
*
|
*
|
||||||
@@ -159,4 +136,15 @@ public class DiagnosisTreatmentController {
|
|||||||
public void importTemplate(HttpServletResponse response) {
|
public void importTemplate(HttpServletResponse response) {
|
||||||
diagTreatMAppService.importTemplate(response);
|
diagTreatMAppService.importTemplate(response);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 校验诊疗项目是否可以编辑
|
||||||
|
*
|
||||||
|
* @param activityId 诊疗ID
|
||||||
|
* @return 校验结果
|
||||||
|
*/
|
||||||
|
@GetMapping("/validate-edit")
|
||||||
|
public R<?> validateActivityEdit(Long activityId) {
|
||||||
|
return diagTreatMAppService.validateActivityEdit(activityId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,72 @@
|
|||||||
|
package com.openhis.web.datadictionary.controller;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
|
import com.openhis.web.basedatamanage.dto.LocationAddOrEditDto;
|
||||||
|
import com.openhis.web.datadictionary.dto.ICDCodeAddDto;
|
||||||
|
import com.openhis.web.datadictionary.dto.ICDCodeDto;
|
||||||
|
import com.openhis.web.datadictionary.dto.ICDCodeUpdateDto;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import com.core.common.core.domain.R;
|
||||||
|
import com.openhis.web.datadictionary.appservice.ICDCodeService;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/base-data-manage/ICD10")
|
||||||
|
@Slf4j
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class ICDCodeController {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ICDCodeService iCDCodeService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询icd10
|
||||||
|
* @param searchKey
|
||||||
|
* @param pageNo
|
||||||
|
* @param pageSize
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@GetMapping("/information-page") // 前端传回来的查询条件
|
||||||
|
public R<?> getICDCodePage(@RequestParam(value = "searchKey", defaultValue = "") String searchKey,
|
||||||
|
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
|
||||||
|
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) {
|
||||||
|
return iCDCodeService.getICDCodePage(searchKey, pageNo, pageSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增icd10
|
||||||
|
* @param icdCodeAddDto
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@PostMapping("/add-icd-Information")
|
||||||
|
public R<?> ICDInformation(@Validated @RequestBody ICDCodeAddDto icdCodeAddDto) {
|
||||||
|
return iCDCodeService.addICDInformation(icdCodeAddDto);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除icd10
|
||||||
|
* @param glNo
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@DeleteMapping("/delete-icd-Information")
|
||||||
|
public R<?> deleteICDInformation(@RequestParam String glNo) {
|
||||||
|
return iCDCodeService.deleteICDInformation(glNo);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新
|
||||||
|
* @param icdCodeUpdateDto
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@PutMapping("/update-icd-Information")
|
||||||
|
public R<?> saveOrUpdateICDInformation(@RequestBody ICDCodeUpdateDto icdCodeUpdateDto){
|
||||||
|
return iCDCodeService.saveOrUpdateICDInformation(icdCodeUpdateDto);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -2,10 +2,10 @@ package com.openhis.web.datadictionary.controller;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
@@ -30,7 +30,7 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public class MedicationManageController {
|
public class MedicationManageController {
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private IMedicationManageAppService medicationManageAppService;
|
private IMedicationManageAppService medicationManageAppService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -117,17 +117,6 @@ public class MedicationManageController {
|
|||||||
return medicationManageAppService.addMedication(medicationManageUpDto);
|
return medicationManageAppService.addMedication(medicationManageUpDto);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 新增医保药品目录
|
|
||||||
*
|
|
||||||
* @param medicationManageUpDto 药品目录信息
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
@PostMapping("/information-yb")
|
|
||||||
public R<?> addYbMedication(@RequestBody MedicationManageUpDto medicationManageUpDto) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 药品目录导出
|
* 药品目录导出
|
||||||
*
|
*
|
||||||
@@ -166,4 +155,15 @@ public class MedicationManageController {
|
|||||||
public void importTemplate(HttpServletResponse response) {
|
public void importTemplate(HttpServletResponse response) {
|
||||||
medicationManageAppService.importTemplate(response);
|
medicationManageAppService.importTemplate(response);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 校验药品是否可以编辑
|
||||||
|
*
|
||||||
|
* @param medicationId 药品ID
|
||||||
|
* @return 校验结果
|
||||||
|
*/
|
||||||
|
@GetMapping("/validate-edit")
|
||||||
|
public R<?> validateMedicationEdit(Long medicationId) {
|
||||||
|
return medicationManageAppService.validateMedicationEdit(medicationId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import lombok.experimental.Accessors;
|
|||||||
/**
|
/**
|
||||||
* 器材目录导入Dto
|
* 器材目录导入Dto
|
||||||
*
|
*
|
||||||
* @author GuoRui
|
* @author Thanking
|
||||||
* @date 2025-09-24
|
* @date 2025-09-24
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import lombok.experimental.Accessors;
|
|||||||
/**
|
/**
|
||||||
* 诊疗目录导入Dto
|
* 诊疗目录导入Dto
|
||||||
*
|
*
|
||||||
* @author GuoRui
|
* @author Thanking
|
||||||
* @date 2025-09-29
|
* @date 2025-09-29
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
|
|||||||
@@ -19,4 +19,6 @@ public class DiseaseManageSelParam {
|
|||||||
private Integer sourceEnum;
|
private Integer sourceEnum;
|
||||||
/** 状态 */
|
/** 状态 */
|
||||||
private Integer statusEnum;
|
private Integer statusEnum;
|
||||||
|
/** 类型 */
|
||||||
|
private String typeCode;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,31 @@
|
|||||||
|
package com.openhis.web.datadictionary.dto;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
|
import javax.validation.constraints.NotNull;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Accessors(chain = true)
|
||||||
|
public class ICDCodeAddDto {
|
||||||
|
|
||||||
|
/** ID */
|
||||||
|
@TableId(type = IdType.ASSIGN_ID)
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/** 国临编码 */
|
||||||
|
@NotNull
|
||||||
|
private String glNo;
|
||||||
|
|
||||||
|
/** 国临name */
|
||||||
|
private String glName;
|
||||||
|
|
||||||
|
/** 医保编码 */
|
||||||
|
private String icd10No;
|
||||||
|
|
||||||
|
/** 医保name */
|
||||||
|
private String icd10Name;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
package com.openhis.web.datadictionary.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;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Accessors(chain = true)
|
||||||
|
public class ICDCodeDto {
|
||||||
|
|
||||||
|
/** ID */
|
||||||
|
@JsonSerialize(using = ToStringSerializer.class)
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/** 国临编码 */
|
||||||
|
private String glNo;
|
||||||
|
|
||||||
|
/** 国临name */
|
||||||
|
private String glName;
|
||||||
|
|
||||||
|
/** 医保编码 */
|
||||||
|
private String icd10No;
|
||||||
|
|
||||||
|
/** 医保name */
|
||||||
|
private String icd10Name;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
package com.openhis.web.datadictionary.dto;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
|
import javax.validation.constraints.NotNull;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Accessors(chain = true)
|
||||||
|
public class ICDCodeUpdateDto {
|
||||||
|
/** ID */
|
||||||
|
@TableId(type = IdType.ASSIGN_ID)
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/** 国临编码 */
|
||||||
|
@NotNull
|
||||||
|
private String glNo;
|
||||||
|
|
||||||
|
/** 国临name */
|
||||||
|
private String glName;
|
||||||
|
|
||||||
|
/** 医保编码 */
|
||||||
|
private String icd10No;
|
||||||
|
|
||||||
|
/** 医保name */
|
||||||
|
private String icd10Name;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -10,7 +10,7 @@ import lombok.experimental.Accessors;
|
|||||||
/**
|
/**
|
||||||
* 药品目录导入Dto
|
* 药品目录导入Dto
|
||||||
*
|
*
|
||||||
* @author GuoRui
|
* @author Thanking
|
||||||
* @date 2025-08-18
|
* @date 2025-08-18
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
@@ -42,6 +42,10 @@ public class MedicationImportDto {
|
|||||||
@Excel(name = "商品名称", prompt = "必填")
|
@Excel(name = "商品名称", prompt = "必填")
|
||||||
private String merchandiseName;
|
private String merchandiseName;
|
||||||
|
|
||||||
|
/** 药品性质 */
|
||||||
|
@Excel(name = "药品性质", prompt = "必填", dictType = "medicine_properties", comboReadDict = true)
|
||||||
|
private String pharmacologyCategoryCode;
|
||||||
|
|
||||||
/** 药品单位 */
|
/** 药品单位 */
|
||||||
@Excel(name = "药品单位", prompt = "必填", dictType = "unit_code", comboReadDict = true)
|
@Excel(name = "药品单位", prompt = "必填", dictType = "unit_code", comboReadDict = true)
|
||||||
private String unitCode;
|
private String unitCode;
|
||||||
|
|||||||
@@ -289,4 +289,9 @@ public class MedicationManageDto {
|
|||||||
/** 处方标志 */
|
/** 处方标志 */
|
||||||
private Integer rxFlag;
|
private Integer rxFlag;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用药说明
|
||||||
|
*/
|
||||||
|
private String dosageInstruction;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -258,4 +258,9 @@ public class MedicationManageUpDto {
|
|||||||
/** 处方标志 */
|
/** 处方标志 */
|
||||||
private Integer rxFlag;
|
private Integer rxFlag;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用药说明
|
||||||
|
*/
|
||||||
|
private String dosageInstruction;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
package com.openhis.web.datadictionary.mapper;
|
||||||
|
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
@Repository
|
||||||
|
public interface ICDCodeMapper {
|
||||||
|
}
|
||||||
@@ -2,25 +2,16 @@ package com.openhis.web.departmentmanage.appservice.impl;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
import com.openhis.web.departmentmanage.mapper.DepartmentIssuanceOrderMapper;
|
|
||||||
import com.openhis.web.pharmacyDispensarymanage.dto.PharmacyDispensaryDetailDto;
|
|
||||||
import com.openhis.web.pharmacyDispensarymanage.dto.PharmacyDispensaryInitDto;
|
|
||||||
import com.openhis.web.pharmacyDispensarymanage.mapper.PharmacyDispensaryDispensingOrderMapper;
|
|
||||||
import com.openhis.workflow.domain.SupplyDelivery;
|
|
||||||
import com.openhis.workflow.service.ISupplyDeliveryService;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.core.common.core.domain.R;
|
import com.core.common.core.domain.R;
|
||||||
import com.core.common.utils.AssignSeqUtil;
|
import com.core.common.utils.AssignSeqUtil;
|
||||||
import com.core.common.utils.MessageUtils;
|
|
||||||
import com.openhis.common.constant.CommonConstants;
|
import com.openhis.common.constant.CommonConstants;
|
||||||
import com.openhis.common.constant.PromptMsgConstant;
|
|
||||||
import com.openhis.common.enums.*;
|
import com.openhis.common.enums.*;
|
||||||
import com.openhis.common.utils.EnumUtils;
|
import com.openhis.common.utils.EnumUtils;
|
||||||
import com.openhis.web.departmentmanage.appservice.IDepartmentCommonService;
|
import com.openhis.web.departmentmanage.appservice.IDepartmentCommonService;
|
||||||
@@ -28,8 +19,10 @@ import com.openhis.web.departmentmanage.appservice.IDepartmentIssuanceOrderServi
|
|||||||
import com.openhis.web.departmentmanage.dto.DepartmentDetailDto;
|
import com.openhis.web.departmentmanage.dto.DepartmentDetailDto;
|
||||||
import com.openhis.web.departmentmanage.dto.DepartmentInitDto;
|
import com.openhis.web.departmentmanage.dto.DepartmentInitDto;
|
||||||
import com.openhis.web.departmentmanage.mapper.DepartmentCommonMapper;
|
import com.openhis.web.departmentmanage.mapper.DepartmentCommonMapper;
|
||||||
import com.openhis.web.inventorymanage.dto.ProductStocktakingInitDto;
|
import com.openhis.web.departmentmanage.mapper.DepartmentIssuanceOrderMapper;
|
||||||
|
import com.openhis.workflow.domain.SupplyDelivery;
|
||||||
import com.openhis.workflow.domain.SupplyRequest;
|
import com.openhis.workflow.domain.SupplyRequest;
|
||||||
|
import com.openhis.workflow.service.ISupplyDeliveryService;
|
||||||
import com.openhis.workflow.service.ISupplyRequestService;
|
import com.openhis.workflow.service.ISupplyRequestService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -55,6 +48,7 @@ public class DepartmentIssuanceOrderServiceImpl implements IDepartmentIssuanceOr
|
|||||||
private DepartmentCommonMapper departmentCommonMapper;
|
private DepartmentCommonMapper departmentCommonMapper;
|
||||||
@Autowired
|
@Autowired
|
||||||
private DepartmentIssuanceOrderMapper departmentIssuanceOrderMapper;
|
private DepartmentIssuanceOrderMapper departmentIssuanceOrderMapper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 初始化
|
* 初始化
|
||||||
*
|
*
|
||||||
@@ -67,15 +61,15 @@ public class DepartmentIssuanceOrderServiceImpl implements IDepartmentIssuanceOr
|
|||||||
|
|
||||||
// 单据分类
|
// 单据分类
|
||||||
List<DepartmentInitDto.IntegerOption> supplyCategoryOption = new ArrayList<>();
|
List<DepartmentInitDto.IntegerOption> supplyCategoryOption = new ArrayList<>();
|
||||||
supplyCategoryOption
|
// supplyCategoryOption
|
||||||
.add(new DepartmentInitDto.IntegerOption(SupplyCategory.OUTPATIENT_PATIENT_DISPENSING.getValue(),
|
// .add(new DepartmentInitDto.IntegerOption(SupplyCategory.OUTPATIENT_PATIENT_DISPENSING.getValue(),
|
||||||
SupplyCategory.OUTPATIENT_PATIENT_DISPENSING.getInfo()));
|
// SupplyCategory.OUTPATIENT_PATIENT_DISPENSING.getInfo()));
|
||||||
supplyCategoryOption
|
// supplyCategoryOption
|
||||||
.add(new DepartmentInitDto.IntegerOption(SupplyCategory.INPATIENT_PATIENT_DISPENSING.getValue(),
|
// .add(new DepartmentInitDto.IntegerOption(SupplyCategory.INPATIENT_PATIENT_DISPENSING.getValue(),
|
||||||
SupplyCategory.INPATIENT_PATIENT_DISPENSING.getInfo()));
|
// SupplyCategory.INPATIENT_PATIENT_DISPENSING.getInfo()));
|
||||||
supplyCategoryOption.add(
|
// supplyCategoryOption.add(
|
||||||
new DepartmentInitDto.IntegerOption(SupplyCategory.INPATIENT_PATIENT_SUMMARY_DISPENSING.getValue(),
|
// new DepartmentInitDto.IntegerOption(SupplyCategory.INPATIENT_PATIENT_SUMMARY_DISPENSING.getValue(),
|
||||||
SupplyCategory.INPATIENT_PATIENT_SUMMARY_DISPENSING.getInfo()));
|
// SupplyCategory.INPATIENT_PATIENT_SUMMARY_DISPENSING.getInfo()));
|
||||||
|
|
||||||
issuanceOrderInitDto.setSupplyCategoryOptions(supplyCategoryOption);
|
issuanceOrderInitDto.setSupplyCategoryOptions(supplyCategoryOption);
|
||||||
|
|
||||||
@@ -143,9 +137,8 @@ public class DepartmentIssuanceOrderServiceImpl implements IDepartmentIssuanceOr
|
|||||||
.setStatusEnum(SupplyStatus.AGREE.getValue()).setCategoryEnum(item.getCategoryEnum())
|
.setStatusEnum(SupplyStatus.AGREE.getValue()).setCategoryEnum(item.getCategoryEnum())
|
||||||
.setItemTable(CommonConstants.TableName.ADM_DEVICE_DEFINITION).setItemId(item.getItemId())
|
.setItemTable(CommonConstants.TableName.ADM_DEVICE_DEFINITION).setItemId(item.getItemId())
|
||||||
.setUnitCode(item.getUnitCode()).setItemQuantity(item.getItemQuantity())
|
.setUnitCode(item.getUnitCode()).setItemQuantity(item.getItemQuantity())
|
||||||
.setLotNumber(item.getLotNumber())
|
.setLotNumber(item.getLotNumber()).setSourceTypeEnum(LocationForm.CABINET.getValue())
|
||||||
.setSourceTypeEnum(LocationForm.CABINET.getValue()).setSourceLocationId(item.getSourceLocationId())
|
.setSourceLocationId(item.getSourceLocationId()).setPurposeTypeEnum(LocationForm.DEPARTMENT.getValue())
|
||||||
.setPurposeTypeEnum(LocationForm.DEPARTMENT.getValue())
|
|
||||||
.setPurposeLocationId(item.getPurposeLocationId()).setApplicantId(item.getApplicantId())
|
.setPurposeLocationId(item.getPurposeLocationId()).setApplicantId(item.getApplicantId())
|
||||||
.setApplyTime(item.getApplyTime()).setApproverId(item.getApproverId())
|
.setApplyTime(item.getApplyTime()).setApproverId(item.getApproverId())
|
||||||
.setApprovalTime(item.getApprovalTime());
|
.setApprovalTime(item.getApprovalTime());
|
||||||
@@ -156,9 +149,9 @@ public class DepartmentIssuanceOrderServiceImpl implements IDepartmentIssuanceOr
|
|||||||
.setItemTable(supplyRequest.getItemTable()).setItemId(supplyRequest.getItemId())
|
.setItemTable(supplyRequest.getItemTable()).setItemId(supplyRequest.getItemId())
|
||||||
.setBasedOnTable(CommonConstants.TableName.WOR_DEVICE_DISPENSE).setBasedOnIds(item.getDispenseIds())
|
.setBasedOnTable(CommonConstants.TableName.WOR_DEVICE_DISPENSE).setBasedOnIds(item.getDispenseIds())
|
||||||
.setUnitCode(supplyRequest.getUnitCode()).setQuantity(supplyRequest.getItemQuantity())
|
.setUnitCode(supplyRequest.getUnitCode()).setQuantity(supplyRequest.getItemQuantity())
|
||||||
.setLotNumber(supplyRequest.getLotNumber())
|
.setLotNumber(supplyRequest.getLotNumber()).setPractitionerId(supplyRequest.getApplicantId())
|
||||||
.setPractitionerId(supplyRequest.getApplicantId()).setOccurrenceTime(supplyRequest.getApprovalTime())
|
.setOccurrenceTime(supplyRequest.getApprovalTime()).setReceiverId(supplyRequest.getPurposeLocationId())
|
||||||
.setReceiverId(supplyRequest.getPurposeLocationId()).setReceiveTime(supplyRequest.getApprovalTime());
|
.setReceiveTime(supplyRequest.getApprovalTime());
|
||||||
|
|
||||||
supplyDeliveryList.add(supplyDelivery);
|
supplyDeliveryList.add(supplyDelivery);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -59,16 +59,16 @@ public class DepartmentProfitLossOrderServiceImpl implements IDepartmentProfitLo
|
|||||||
|
|
||||||
// 单据分类
|
// 单据分类
|
||||||
List<DepartmentInitDto.IntegerOption> supplyCategoryOption = new ArrayList<>();
|
List<DepartmentInitDto.IntegerOption> supplyCategoryOption = new ArrayList<>();
|
||||||
supplyCategoryOption.add(new DepartmentInitDto.IntegerOption(SupplyCategory.GENERAL_PROFIT_AND_LOSS.getValue(),
|
// supplyCategoryOption.add(new DepartmentInitDto.IntegerOption(SupplyCategory.GENERAL_PROFIT_AND_LOSS.getValue(),
|
||||||
SupplyCategory.GENERAL_PROFIT_AND_LOSS.getInfo()));
|
// SupplyCategory.GENERAL_PROFIT_AND_LOSS.getInfo()));
|
||||||
supplyCategoryOption.add(new DepartmentInitDto.IntegerOption(SupplyCategory.STOCKTAKING_PROFIT_AND_LOSS.getValue(),
|
// supplyCategoryOption.add(new DepartmentInitDto.IntegerOption(SupplyCategory.STOCKTAKING_PROFIT_AND_LOSS.getValue(),
|
||||||
SupplyCategory.STOCKTAKING_PROFIT_AND_LOSS.getInfo()));
|
// SupplyCategory.STOCKTAKING_PROFIT_AND_LOSS.getInfo()));
|
||||||
supplyCategoryOption.add(new DepartmentInitDto.IntegerOption(SupplyCategory.STANDBY_RESCUE_MEDICINES.getValue(),
|
// supplyCategoryOption.add(new DepartmentInitDto.IntegerOption(SupplyCategory.STANDBY_RESCUE_MEDICINES.getValue(),
|
||||||
SupplyCategory.STANDBY_RESCUE_MEDICINES.getInfo()));
|
// SupplyCategory.STANDBY_RESCUE_MEDICINES.getInfo()));
|
||||||
supplyCategoryOption.add(new DepartmentInitDto.IntegerOption(SupplyCategory.DAMAGED_EXPIRED_MEDICINES.getValue(),
|
// supplyCategoryOption.add(new DepartmentInitDto.IntegerOption(SupplyCategory.DAMAGED_EXPIRED_MEDICINES.getValue(),
|
||||||
SupplyCategory.DAMAGED_EXPIRED_MEDICINES.getInfo()));
|
// SupplyCategory.DAMAGED_EXPIRED_MEDICINES.getInfo()));
|
||||||
supplyCategoryOption.add(new DepartmentInitDto.IntegerOption(SupplyCategory.DONATED_MEDICINES.getValue(),
|
// supplyCategoryOption.add(new DepartmentInitDto.IntegerOption(SupplyCategory.DONATED_MEDICINES.getValue(),
|
||||||
SupplyCategory.DONATED_MEDICINES.getInfo()));
|
// SupplyCategory.DONATED_MEDICINES.getInfo()));
|
||||||
|
|
||||||
purchaseOrderInitDto.setSupplyCategoryOptions(supplyCategoryOption);
|
purchaseOrderInitDto.setSupplyCategoryOptions(supplyCategoryOption);
|
||||||
|
|
||||||
|
|||||||
@@ -58,10 +58,10 @@ public class DepartmentRequisitionOrderServiceImpl implements IDepartmentRequisi
|
|||||||
|
|
||||||
// 单据分类
|
// 单据分类
|
||||||
List<DepartmentInitDto.IntegerOption> supplyCategoryOption = new ArrayList<>();
|
List<DepartmentInitDto.IntegerOption> supplyCategoryOption = new ArrayList<>();
|
||||||
supplyCategoryOption.add(new DepartmentInitDto.IntegerOption(SupplyCategory.NORMAL.getValue(),
|
// supplyCategoryOption.add(new DepartmentInitDto.IntegerOption(SupplyCategory.NORMAL.getValue(),
|
||||||
SupplyCategory.NORMAL.getInfo()));
|
// SupplyCategory.NORMAL.getInfo()));
|
||||||
supplyCategoryOption.add(new DepartmentInitDto.IntegerOption(SupplyCategory.PURCHASE_APPLICATION.getValue(),
|
// supplyCategoryOption.add(new DepartmentInitDto.IntegerOption(SupplyCategory.PURCHASE_APPLICATION.getValue(),
|
||||||
SupplyCategory.PURCHASE_APPLICATION.getInfo()));
|
// SupplyCategory.PURCHASE_APPLICATION.getInfo()));
|
||||||
|
|
||||||
requisitionOrderInitDto.setSupplyCategoryOptions(supplyCategoryOption);
|
requisitionOrderInitDto.setSupplyCategoryOptions(supplyCategoryOption);
|
||||||
|
|
||||||
|
|||||||
@@ -24,7 +24,6 @@ import com.openhis.web.departmentmanage.appservice.IDepartmentReturnToWarehouseO
|
|||||||
import com.openhis.web.departmentmanage.dto.DepartmentDetailDto;
|
import com.openhis.web.departmentmanage.dto.DepartmentDetailDto;
|
||||||
import com.openhis.web.departmentmanage.dto.DepartmentInitDto;
|
import com.openhis.web.departmentmanage.dto.DepartmentInitDto;
|
||||||
import com.openhis.web.departmentmanage.mapper.DepartmentCommonMapper;
|
import com.openhis.web.departmentmanage.mapper.DepartmentCommonMapper;
|
||||||
import com.openhis.web.departmentmanage.mapper.DepartmentReturnToWarehouseOrderMapper;
|
|
||||||
import com.openhis.web.inventorymanage.dto.ProductStocktakingInitDto;
|
import com.openhis.web.inventorymanage.dto.ProductStocktakingInitDto;
|
||||||
import com.openhis.workflow.domain.SupplyRequest;
|
import com.openhis.workflow.domain.SupplyRequest;
|
||||||
import com.openhis.workflow.service.ISupplyRequestService;
|
import com.openhis.workflow.service.ISupplyRequestService;
|
||||||
@@ -47,6 +46,7 @@ public class DepartmentReturnToWarehouseOrderServiceImpl implements IDepartmentR
|
|||||||
private IDepartmentCommonService departmentCommonService;
|
private IDepartmentCommonService departmentCommonService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private DepartmentCommonMapper departmentCommonMapper;
|
private DepartmentCommonMapper departmentCommonMapper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 初始化
|
* 初始化
|
||||||
*
|
*
|
||||||
@@ -59,8 +59,8 @@ public class DepartmentReturnToWarehouseOrderServiceImpl implements IDepartmentR
|
|||||||
|
|
||||||
// 单据分类
|
// 单据分类
|
||||||
List<DepartmentInitDto.IntegerOption> supplyCategoryOption = new ArrayList<>();
|
List<DepartmentInitDto.IntegerOption> supplyCategoryOption = new ArrayList<>();
|
||||||
supplyCategoryOption.add(new DepartmentInitDto.IntegerOption(SupplyCategory.NORMAL.getValue(),
|
// supplyCategoryOption.add(new DepartmentInitDto.IntegerOption(SupplyCategory.NORMAL.getValue(),
|
||||||
SupplyCategory.NORMAL.getInfo()));
|
// SupplyCategory.NORMAL.getInfo()));
|
||||||
|
|
||||||
purchaseOrderInitDto.setSupplyCategoryOptions(supplyCategoryOption);
|
purchaseOrderInitDto.setSupplyCategoryOptions(supplyCategoryOption);
|
||||||
|
|
||||||
@@ -93,16 +93,14 @@ public class DepartmentReturnToWarehouseOrderServiceImpl implements IDepartmentR
|
|||||||
List<DepartmentDetailDto.Option> unitList;
|
List<DepartmentDetailDto.Option> unitList;
|
||||||
for (DepartmentDetailDto item : returnToDispensaryOrderDtoDetailPage.getRecords()) {
|
for (DepartmentDetailDto item : returnToDispensaryOrderDtoDetailPage.getRecords()) {
|
||||||
unitList = new ArrayList<>();
|
unitList = new ArrayList<>();
|
||||||
unitList.add(new DepartmentDetailDto.Option(item.getMaxUnitCode(),item.getMaxUnitCode_dictText()));
|
unitList.add(new DepartmentDetailDto.Option(item.getMaxUnitCode(), item.getMaxUnitCode_dictText()));
|
||||||
unitList.add(new DepartmentDetailDto.Option(item.getMinUnitCode(),item.getMinUnitCode_dictText()
|
unitList.add(new DepartmentDetailDto.Option(item.getMinUnitCode(), item.getMinUnitCode_dictText()));
|
||||||
));
|
|
||||||
|
|
||||||
item.setUnitList(unitList);
|
item.setUnitList(unitList);
|
||||||
}
|
}
|
||||||
return R.ok(returnToDispensaryOrderDtoDetailPage);
|
return R.ok(returnToDispensaryOrderDtoDetailPage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取单据号
|
* 获取单据号
|
||||||
*
|
*
|
||||||
@@ -128,7 +126,8 @@ public class DepartmentReturnToWarehouseOrderServiceImpl implements IDepartmentR
|
|||||||
@Override
|
@Override
|
||||||
public R<?> addOrEditReturnToWarehouseOrder(List<DepartmentDetailDto> returnToDispensaryOrderDtoList) {
|
public R<?> addOrEditReturnToWarehouseOrder(List<DepartmentDetailDto> returnToDispensaryOrderDtoList) {
|
||||||
// 请求数据取得
|
// 请求数据取得
|
||||||
List<SupplyRequest> requestList = supplyRequestService.getSupplyByBusNo(returnToDispensaryOrderDtoList.get(0).getBusNo());
|
List<SupplyRequest> requestList =
|
||||||
|
supplyRequestService.getSupplyByBusNo(returnToDispensaryOrderDtoList.get(0).getBusNo());
|
||||||
if (!requestList.isEmpty()) {
|
if (!requestList.isEmpty()) {
|
||||||
// 请求id取得
|
// 请求id取得
|
||||||
List<Long> requestIdList = requestList.stream().map(SupplyRequest::getId).collect(Collectors.toList());
|
List<Long> requestIdList = requestList.stream().map(SupplyRequest::getId).collect(Collectors.toList());
|
||||||
|
|||||||
@@ -24,7 +24,6 @@ import com.openhis.web.departmentmanage.appservice.IDepartmentStockInOrderServic
|
|||||||
import com.openhis.web.departmentmanage.dto.DepartmentDetailDto;
|
import com.openhis.web.departmentmanage.dto.DepartmentDetailDto;
|
||||||
import com.openhis.web.departmentmanage.dto.DepartmentInitDto;
|
import com.openhis.web.departmentmanage.dto.DepartmentInitDto;
|
||||||
import com.openhis.web.departmentmanage.mapper.DepartmentCommonMapper;
|
import com.openhis.web.departmentmanage.mapper.DepartmentCommonMapper;
|
||||||
import com.openhis.web.departmentmanage.mapper.DepartmentStockInOrderMapper;
|
|
||||||
import com.openhis.web.inventorymanage.dto.ProductStocktakingInitDto;
|
import com.openhis.web.inventorymanage.dto.ProductStocktakingInitDto;
|
||||||
import com.openhis.workflow.domain.SupplyRequest;
|
import com.openhis.workflow.domain.SupplyRequest;
|
||||||
import com.openhis.workflow.service.ISupplyRequestService;
|
import com.openhis.workflow.service.ISupplyRequestService;
|
||||||
@@ -60,8 +59,8 @@ public class DepartmentStockInOrderServiceImpl implements IDepartmentStockInOrde
|
|||||||
|
|
||||||
// 单据分类
|
// 单据分类
|
||||||
List<DepartmentInitDto.IntegerOption> supplyCategoryOption = new ArrayList<>();
|
List<DepartmentInitDto.IntegerOption> supplyCategoryOption = new ArrayList<>();
|
||||||
supplyCategoryOption.add(new DepartmentInitDto.IntegerOption(SupplyCategory.NORMAL.getValue(),
|
// supplyCategoryOption.add(new DepartmentInitDto.IntegerOption(SupplyCategory.NORMAL.getValue(),
|
||||||
SupplyCategory.NORMAL.getInfo()));
|
// SupplyCategory.NORMAL.getInfo()));
|
||||||
|
|
||||||
purchaseOrderInitDto.setSupplyCategoryOptions(supplyCategoryOption);
|
purchaseOrderInitDto.setSupplyCategoryOptions(supplyCategoryOption);
|
||||||
|
|
||||||
@@ -134,10 +133,11 @@ public class DepartmentStockInOrderServiceImpl implements IDepartmentStockInOrde
|
|||||||
// 单据信息删除
|
// 单据信息删除
|
||||||
supplyRequestService.removeByIds(requestIdList);
|
supplyRequestService.removeByIds(requestIdList);
|
||||||
}
|
}
|
||||||
//添加原始单据号
|
// 添加原始单据号
|
||||||
if(stockInOrderDtoList.get(0).getOriginalBusNo()!=null){
|
if (stockInOrderDtoList.get(0).getOriginalBusNo() != null) {
|
||||||
// 审批单据并返回单据详情
|
// 审批单据并返回单据详情
|
||||||
List<SupplyRequest> agreedList = supplyRequestService.addOriginalBusNo(stockInOrderDtoList.get(0).getOriginalBusNo(), stockInOrderDtoList.get(0).getBusNo());
|
List<SupplyRequest> agreedList = supplyRequestService
|
||||||
|
.addOriginalBusNo(stockInOrderDtoList.get(0).getOriginalBusNo(), stockInOrderDtoList.get(0).getBusNo());
|
||||||
if (agreedList.isEmpty()) {
|
if (agreedList.isEmpty()) {
|
||||||
return R.fail(MessageUtils.createMessage(PromptMsgConstant.Common.M00007, null));
|
return R.fail(MessageUtils.createMessage(PromptMsgConstant.Common.M00007, null));
|
||||||
}
|
}
|
||||||
@@ -156,8 +156,9 @@ public class DepartmentStockInOrderServiceImpl implements IDepartmentStockInOrde
|
|||||||
.setTraceNo(item.getTraceNo()).setTraceNoUnitCode(item.getTraceNoUnitCode())
|
.setTraceNo(item.getTraceNo()).setTraceNoUnitCode(item.getTraceNoUnitCode())
|
||||||
.setSupplierId(item.getSupplierId()).setReason(item.getReason())
|
.setSupplierId(item.getSupplierId()).setReason(item.getReason())
|
||||||
.setSourceTypeEnum(LocationForm.WAREHOUSE.getValue()).setSourceLocationId(item.getSourceLocationId())
|
.setSourceTypeEnum(LocationForm.WAREHOUSE.getValue()).setSourceLocationId(item.getSourceLocationId())
|
||||||
.setPurposeTypeEnum(LocationForm.DEPARTMENT.getValue()).setPurposeLocationId(item.getPurposeLocationId())
|
.setPurposeTypeEnum(LocationForm.DEPARTMENT.getValue())
|
||||||
.setApplicantId(item.getApplicantId()).setApplyTime(applyTime).setRemake(item.getRemake());
|
.setPurposeLocationId(item.getPurposeLocationId()).setApplicantId(item.getApplicantId())
|
||||||
|
.setApplyTime(applyTime).setRemake(item.getRemake());
|
||||||
supplyRequestList.add(supplyRequest);
|
supplyRequestList.add(supplyRequest);
|
||||||
}
|
}
|
||||||
// 更新请求表
|
// 更新请求表
|
||||||
|
|||||||
@@ -60,10 +60,10 @@ public class DepartmentStocktakingOrderServiceImpl implements IDepartmentStockta
|
|||||||
|
|
||||||
// 单据分类
|
// 单据分类
|
||||||
List<DepartmentInitDto.IntegerOption> supplyCategoryOption = new ArrayList<>();
|
List<DepartmentInitDto.IntegerOption> supplyCategoryOption = new ArrayList<>();
|
||||||
supplyCategoryOption.add(new DepartmentInitDto.IntegerOption(
|
// supplyCategoryOption.add(new DepartmentInitDto.IntegerOption(
|
||||||
SupplyCategory.GENERAL_STOCKTAKING.getValue(), SupplyCategory.GENERAL_STOCKTAKING.getInfo()));
|
// SupplyCategory.GENERAL_STOCKTAKING.getValue(), SupplyCategory.GENERAL_STOCKTAKING.getInfo()));
|
||||||
supplyCategoryOption.add(new DepartmentInitDto.IntegerOption(
|
// supplyCategoryOption.add(new DepartmentInitDto.IntegerOption(
|
||||||
SupplyCategory.MONTHLY_STOCKTAKING.getValue(), SupplyCategory.MONTHLY_STOCKTAKING.getInfo()));
|
// SupplyCategory.MONTHLY_STOCKTAKING.getValue(), SupplyCategory.MONTHLY_STOCKTAKING.getInfo()));
|
||||||
|
|
||||||
purchaseOrderInitDto.setSupplyCategoryOptions(supplyCategoryOption);
|
purchaseOrderInitDto.setSupplyCategoryOptions(supplyCategoryOption);
|
||||||
|
|
||||||
|
|||||||
@@ -24,7 +24,6 @@ import com.openhis.web.departmentmanage.appservice.IDepartmentTransferInOrderSer
|
|||||||
import com.openhis.web.departmentmanage.dto.DepartmentDetailDto;
|
import com.openhis.web.departmentmanage.dto.DepartmentDetailDto;
|
||||||
import com.openhis.web.departmentmanage.dto.DepartmentInitDto;
|
import com.openhis.web.departmentmanage.dto.DepartmentInitDto;
|
||||||
import com.openhis.web.departmentmanage.mapper.DepartmentCommonMapper;
|
import com.openhis.web.departmentmanage.mapper.DepartmentCommonMapper;
|
||||||
import com.openhis.web.departmentmanage.mapper.DepartmentTransferInOrderMapper;
|
|
||||||
import com.openhis.web.inventorymanage.dto.ProductStocktakingInitDto;
|
import com.openhis.web.inventorymanage.dto.ProductStocktakingInitDto;
|
||||||
import com.openhis.workflow.domain.SupplyRequest;
|
import com.openhis.workflow.domain.SupplyRequest;
|
||||||
import com.openhis.workflow.service.ISupplyRequestService;
|
import com.openhis.workflow.service.ISupplyRequestService;
|
||||||
@@ -59,8 +58,8 @@ public class DepartmentTransferInOrderServiceImpl implements IDepartmentTransfer
|
|||||||
|
|
||||||
// 单据分类
|
// 单据分类
|
||||||
List<DepartmentInitDto.IntegerOption> supplyCategoryOption = new ArrayList<>();
|
List<DepartmentInitDto.IntegerOption> supplyCategoryOption = new ArrayList<>();
|
||||||
supplyCategoryOption.add(new DepartmentInitDto.IntegerOption(SupplyCategory.NORMAL.getValue(),
|
// supplyCategoryOption.add(new DepartmentInitDto.IntegerOption(SupplyCategory.NORMAL.getValue(),
|
||||||
SupplyCategory.NORMAL.getInfo()));
|
// SupplyCategory.NORMAL.getInfo()));
|
||||||
|
|
||||||
purchaseOrderInitDto.setSupplyCategoryOptions(supplyCategoryOption);
|
purchaseOrderInitDto.setSupplyCategoryOptions(supplyCategoryOption);
|
||||||
|
|
||||||
@@ -127,7 +126,8 @@ public class DepartmentTransferInOrderServiceImpl implements IDepartmentTransfer
|
|||||||
@Override
|
@Override
|
||||||
public R<?> addOrEditTransferInOrder(List<DepartmentDetailDto> transferInOrderDtoList) {
|
public R<?> addOrEditTransferInOrder(List<DepartmentDetailDto> transferInOrderDtoList) {
|
||||||
// 请求数据取得
|
// 请求数据取得
|
||||||
List<SupplyRequest> requestList = supplyRequestService.getSupplyByBusNo(transferInOrderDtoList.get(0).getBusNo());
|
List<SupplyRequest> requestList =
|
||||||
|
supplyRequestService.getSupplyByBusNo(transferInOrderDtoList.get(0).getBusNo());
|
||||||
if (!requestList.isEmpty()) {
|
if (!requestList.isEmpty()) {
|
||||||
// 请求id取得
|
// 请求id取得
|
||||||
List<Long> requestIdList = requestList.stream().map(SupplyRequest::getId).collect(Collectors.toList());
|
List<Long> requestIdList = requestList.stream().map(SupplyRequest::getId).collect(Collectors.toList());
|
||||||
@@ -149,8 +149,8 @@ public class DepartmentTransferInOrderServiceImpl implements IDepartmentTransfer
|
|||||||
.setTraceNoUnitCode(item.getTraceNoUnitCode()).setSupplierId(item.getSupplierId())
|
.setTraceNoUnitCode(item.getTraceNoUnitCode()).setSupplierId(item.getSupplierId())
|
||||||
.setReason(item.getReason()).setSourceTypeEnum(LocationForm.DEPARTMENT.getValue())
|
.setReason(item.getReason()).setSourceTypeEnum(LocationForm.DEPARTMENT.getValue())
|
||||||
.setSourceLocationId(item.getSourceLocationId()).setPurposeTypeEnum(LocationForm.DEPARTMENT.getValue())
|
.setSourceLocationId(item.getSourceLocationId()).setPurposeTypeEnum(LocationForm.DEPARTMENT.getValue())
|
||||||
.setPurposeLocationId(item.getPurposeLocationId())
|
.setPurposeLocationId(item.getPurposeLocationId()).setApplicantId(item.getApplicantId())
|
||||||
.setApplicantId(item.getApplicantId()).setApplyTime(applyTime).setRemake(item.getRemake());
|
.setApplyTime(applyTime).setRemake(item.getRemake());
|
||||||
supplyRequestList.add(supplyRequest);
|
supplyRequestList.add(supplyRequest);
|
||||||
}
|
}
|
||||||
// 更新请求表
|
// 更新请求表
|
||||||
|
|||||||
@@ -59,8 +59,8 @@ public class DepartmentTransferOutOrderServiceImpl implements IDepartmentTransfe
|
|||||||
|
|
||||||
// 单据分类
|
// 单据分类
|
||||||
List<DepartmentInitDto.IntegerOption> supplyCategoryOption = new ArrayList<>();
|
List<DepartmentInitDto.IntegerOption> supplyCategoryOption = new ArrayList<>();
|
||||||
supplyCategoryOption.add(new DepartmentInitDto.IntegerOption(SupplyCategory.NORMAL.getValue(),
|
// supplyCategoryOption.add(new DepartmentInitDto.IntegerOption(SupplyCategory.NORMAL.getValue(),
|
||||||
SupplyCategory.NORMAL.getInfo()));
|
// SupplyCategory.NORMAL.getInfo()));
|
||||||
|
|
||||||
purchaseOrderInitDto.setSupplyCategoryOptions(supplyCategoryOption);
|
purchaseOrderInitDto.setSupplyCategoryOptions(supplyCategoryOption);
|
||||||
|
|
||||||
|
|||||||
@@ -4,10 +4,7 @@ import java.util.List;
|
|||||||
|
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.core.common.core.domain.R;
|
import com.core.common.core.domain.R;
|
||||||
import com.openhis.web.doctorstation.dto.ActivityBindDeviceDto;
|
import com.openhis.web.doctorstation.dto.*;
|
||||||
import com.openhis.web.doctorstation.dto.AdviceBaseDto;
|
|
||||||
import com.openhis.web.doctorstation.dto.AdviceSaveParam;
|
|
||||||
import com.openhis.web.doctorstation.dto.UpdateGroupIdParam;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 医生站-医嘱/处方 应用Service
|
* 医生站-医嘱/处方 应用Service
|
||||||
@@ -33,12 +30,13 @@ public interface IDoctorStationAdviceAppService {
|
|||||||
Integer pricingFlag, List<Integer> adviceTypes);
|
Integer pricingFlag, List<Integer> adviceTypes);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询诊疗绑定耗材信息
|
* 查询医嘱绑定信息
|
||||||
*
|
*
|
||||||
* @param activityId 诊疗id
|
* @param typeCode 1:用法绑东西 2:诊疗绑东西
|
||||||
* @return 诊疗绑定耗材信息
|
* @param itemNo 用法的code 或者 诊疗定义id
|
||||||
|
* @return 医嘱绑定信息
|
||||||
*/
|
*/
|
||||||
ActivityBindDeviceDto getActivityBindDevice(Long activityId);
|
List<OrderBindInfoDto> getOrderBindInfo(String typeCode, String itemNo);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 门诊保存医嘱
|
* 门诊保存医嘱
|
||||||
|
|||||||
@@ -1,13 +1,5 @@
|
|||||||
package com.openhis.web.doctorstation.appservice.impl;
|
package com.openhis.web.doctorstation.appservice.impl;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.util.*;
|
|
||||||
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.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||||
@@ -15,10 +7,13 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.core.common.core.domain.R;
|
import com.core.common.core.domain.R;
|
||||||
|
import com.core.common.enums.TenantOptionDict;
|
||||||
import com.core.common.exception.ServiceException;
|
import com.core.common.exception.ServiceException;
|
||||||
import com.core.common.utils.AssignSeqUtil;
|
import com.core.common.utils.AssignSeqUtil;
|
||||||
import com.core.common.utils.MessageUtils;
|
import com.core.common.utils.MessageUtils;
|
||||||
import com.core.common.utils.SecurityUtils;
|
import com.core.common.utils.SecurityUtils;
|
||||||
|
import com.core.common.utils.StringUtils;
|
||||||
|
import com.core.web.util.TenantOptionUtil;
|
||||||
import com.openhis.administration.domain.ChargeItem;
|
import com.openhis.administration.domain.ChargeItem;
|
||||||
import com.openhis.administration.service.IChargeItemService;
|
import com.openhis.administration.service.IChargeItemService;
|
||||||
import com.openhis.common.constant.CommonConstants;
|
import com.openhis.common.constant.CommonConstants;
|
||||||
@@ -42,8 +37,13 @@ import com.openhis.workflow.service.IActivityDefinitionService;
|
|||||||
import com.openhis.workflow.service.IDeviceDispenseService;
|
import com.openhis.workflow.service.IDeviceDispenseService;
|
||||||
import com.openhis.workflow.service.IDeviceRequestService;
|
import com.openhis.workflow.service.IDeviceRequestService;
|
||||||
import com.openhis.workflow.service.IServiceRequestService;
|
import com.openhis.workflow.service.IServiceRequestService;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.*;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 医生站-医嘱/处方 应用实现类
|
* 医生站-医嘱/处方 应用实现类
|
||||||
@@ -97,47 +97,52 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
|
|||||||
/**
|
/**
|
||||||
* 查询医嘱信息
|
* 查询医嘱信息
|
||||||
*
|
*
|
||||||
* @param adviceBaseDto 查询条件
|
* @param adviceBaseDto 查询条件
|
||||||
* @param searchKey 模糊查询关键字
|
* @param searchKey 模糊查询关键字
|
||||||
* @param locationId 药房id
|
* @param locationId 药房id
|
||||||
* @param adviceDefinitionIdParamList 医嘱定义id参数集合
|
* @param adviceDefinitionIdParamList 医嘱定义id参数集合
|
||||||
* @param organizationId 患者挂号对应的科室id
|
* @param organizationId 患者挂号对应的科室id
|
||||||
* @param pageNo 当前页
|
* @param pageNo 当前页
|
||||||
* @param pageSize 每页多少条
|
* @param pageSize 每页多少条
|
||||||
* @param pricingFlag 划价标记
|
* @param pricingFlag 划价标记
|
||||||
* @param adviceTypes 医嘱类型参数集合
|
* @param adviceTypes 医嘱类型参数集合
|
||||||
* @return 医嘱信息
|
* @return 医嘱信息
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public IPage<AdviceBaseDto> getAdviceBaseInfo(AdviceBaseDto adviceBaseDto, String searchKey, Long locationId,
|
public IPage<AdviceBaseDto> getAdviceBaseInfo(AdviceBaseDto adviceBaseDto, String searchKey, Long locationId,
|
||||||
List<Long> adviceDefinitionIdParamList, Long organizationId, Integer pageNo, Integer pageSize,
|
List<Long> adviceDefinitionIdParamList, Long organizationId, Integer pageNo, Integer pageSize,
|
||||||
Integer pricingFlag, List<Integer> adviceTypes) {
|
Integer pricingFlag, List<Integer> adviceTypes) {
|
||||||
|
// 医嘱定价来源
|
||||||
|
String orderPricingSource = TenantOptionUtil.getOptionContent(TenantOptionDict.ORDER_PRICING_SOURCE);
|
||||||
|
if (StringUtils.isEmpty(orderPricingSource)) {
|
||||||
|
throw new ServiceException("租户配置项【医嘱定价来源】未配置");
|
||||||
|
}
|
||||||
// 构建查询条件
|
// 构建查询条件
|
||||||
QueryWrapper<AdviceBaseDto> queryWrapper = HisQueryUtils.buildQueryWrapper(adviceBaseDto, searchKey,
|
QueryWrapper<AdviceBaseDto> queryWrapper = HisQueryUtils.buildQueryWrapper(adviceBaseDto, searchKey,
|
||||||
new HashSet<>(Arrays.asList("advice_name", "py_str", "wb_str")), null);
|
new HashSet<>(Arrays.asList("advice_name", "py_str", "wb_str")), null);
|
||||||
IPage<AdviceBaseDto> adviceBaseInfo = doctorStationAdviceAppMapper.getAdviceBaseInfo(
|
IPage<AdviceBaseDto> adviceBaseInfo = doctorStationAdviceAppMapper.getAdviceBaseInfo(
|
||||||
new Page<>(pageNo, pageSize), PublicationStatus.ACTIVE.getValue(), organizationId,
|
new Page<>(pageNo, pageSize), PublicationStatus.ACTIVE.getValue(), organizationId,
|
||||||
CommonConstants.TableName.MED_MEDICATION_DEFINITION, CommonConstants.TableName.ADM_DEVICE_DEFINITION,
|
CommonConstants.TableName.MED_MEDICATION_DEFINITION, CommonConstants.TableName.ADM_DEVICE_DEFINITION,
|
||||||
CommonConstants.TableName.WOR_ACTIVITY_DEFINITION, DeviceCategory.SINGLE_USE.getCode(), pricingFlag,
|
CommonConstants.TableName.WOR_ACTIVITY_DEFINITION, pricingFlag, adviceDefinitionIdParamList, adviceTypes,
|
||||||
adviceDefinitionIdParamList, adviceTypes, queryWrapper);
|
queryWrapper);
|
||||||
List<AdviceBaseDto> adviceBaseDtoList = adviceBaseInfo.getRecords();
|
List<AdviceBaseDto> adviceBaseDtoList = adviceBaseInfo.getRecords();
|
||||||
// 医嘱定义ID集合
|
// 医嘱定义ID集合
|
||||||
List<Long> adviceDefinitionIdList =
|
List<Long> adviceDefinitionIdList =
|
||||||
adviceBaseDtoList.stream().map(AdviceBaseDto::getAdviceDefinitionId).collect(Collectors.toList());
|
adviceBaseDtoList.stream().map(AdviceBaseDto::getAdviceDefinitionId).collect(Collectors.toList());
|
||||||
// 费用定价主表ID集合
|
// 费用定价主表ID集合
|
||||||
List<Long> chargeItemDefinitionIdList =
|
List<Long> chargeItemDefinitionIdList =
|
||||||
adviceBaseDtoList.stream().map(AdviceBaseDto::getChargeItemDefinitionId).collect(Collectors.toList());
|
adviceBaseDtoList.stream().map(AdviceBaseDto::getChargeItemDefinitionId).collect(Collectors.toList());
|
||||||
// 医嘱库存集合
|
// 医嘱库存集合
|
||||||
List<AdviceInventoryDto> adviceInventoryList =
|
List<AdviceInventoryDto> adviceInventoryList =
|
||||||
doctorStationAdviceAppMapper.getAdviceInventory(locationId, adviceDefinitionIdList,
|
doctorStationAdviceAppMapper.getAdviceInventory(locationId, adviceDefinitionIdList,
|
||||||
CommonConstants.SqlCondition.ABOUT_INVENTORY_TABLE_STR, PublicationStatus.ACTIVE.getValue());
|
CommonConstants.SqlCondition.ABOUT_INVENTORY_TABLE_STR, PublicationStatus.ACTIVE.getValue());
|
||||||
// 待发放个数信息
|
// 待发放个数信息
|
||||||
List<AdviceInventoryDto> adviceDraftInventoryList = doctorStationAdviceAppMapper.getAdviceDraftInventory(
|
List<AdviceInventoryDto> adviceDraftInventoryList = doctorStationAdviceAppMapper.getAdviceDraftInventory(
|
||||||
CommonConstants.TableName.MED_MEDICATION_DEFINITION, CommonConstants.TableName.ADM_DEVICE_DEFINITION,
|
CommonConstants.TableName.MED_MEDICATION_DEFINITION, CommonConstants.TableName.ADM_DEVICE_DEFINITION,
|
||||||
DispenseStatus.DRAFT.getValue(), DispenseStatus.PREPARATION.getValue());
|
DispenseStatus.DRAFT.getValue(), DispenseStatus.PREPARATION.getValue());
|
||||||
// 预减库存
|
// 预减库存
|
||||||
List<AdviceInventoryDto> adviceInventory =
|
List<AdviceInventoryDto> adviceInventory =
|
||||||
adviceUtils.subtractInventory(adviceInventoryList, adviceDraftInventoryList);
|
adviceUtils.subtractInventory(adviceInventoryList, adviceDraftInventoryList);
|
||||||
// 查询取药科室配置
|
// 查询取药科室配置
|
||||||
List<AdviceInventoryDto> medLocationConfig = doctorStationAdviceAppMapper.getMedLocationConfig(organizationId);
|
List<AdviceInventoryDto> medLocationConfig = doctorStationAdviceAppMapper.getMedLocationConfig(organizationId);
|
||||||
// 将配置转为 {categoryCode -> 允许的locationId集合}
|
// 将配置转为 {categoryCode -> 允许的locationId集合}
|
||||||
@@ -153,9 +158,10 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
|
|||||||
}
|
}
|
||||||
// 费用定价子表信息
|
// 费用定价子表信息
|
||||||
List<AdvicePriceDto> childCharge = doctorStationAdviceAppMapper
|
List<AdvicePriceDto> childCharge = doctorStationAdviceAppMapper
|
||||||
.getChildCharge(ConditionCode.LOT_NUMBER_COST.getCode(), chargeItemDefinitionIdList);
|
.getChildCharge(ConditionCode.LOT_NUMBER_PRICE.getCode(), chargeItemDefinitionIdList);
|
||||||
// 费用定价主表信息
|
// 费用定价主表信息
|
||||||
List<AdvicePriceDto> mainCharge = doctorStationAdviceAppMapper.getMainCharge(chargeItemDefinitionIdList);
|
List<AdvicePriceDto> mainCharge =
|
||||||
|
doctorStationAdviceAppMapper.getMainCharge(chargeItemDefinitionIdList, PublicationStatus.ACTIVE.getValue());
|
||||||
String unitCode = ""; // 包装单位
|
String unitCode = ""; // 包装单位
|
||||||
Long chargeItemDefinitionId; // 费用定价主表ID
|
Long chargeItemDefinitionId; // 费用定价主表ID
|
||||||
for (AdviceBaseDto baseDto : adviceBaseDtoList) {
|
for (AdviceBaseDto baseDto : adviceBaseDtoList) {
|
||||||
@@ -163,50 +169,40 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
|
|||||||
case CommonConstants.TableName.MED_MEDICATION_DEFINITION: // 药品
|
case CommonConstants.TableName.MED_MEDICATION_DEFINITION: // 药品
|
||||||
// 是否皮试
|
// 是否皮试
|
||||||
baseDto
|
baseDto
|
||||||
.setSkinTestFlag_enumText(EnumUtils.getInfoByValue(Whether.class, baseDto.getSkinTestFlag()));
|
.setSkinTestFlag_enumText(EnumUtils.getInfoByValue(Whether.class, baseDto.getSkinTestFlag()));
|
||||||
// 是否为注射药物
|
// 是否为注射药物
|
||||||
baseDto.setInjectFlag_enumText(EnumUtils.getInfoByValue(Whether.class, baseDto.getInjectFlag()));
|
baseDto.setInjectFlag_enumText(EnumUtils.getInfoByValue(Whether.class, baseDto.getInjectFlag()));
|
||||||
case CommonConstants.TableName.ADM_DEVICE_DEFINITION: // 耗材
|
case CommonConstants.TableName.ADM_DEVICE_DEFINITION: // 耗材
|
||||||
// 每一条医嘱的库存集合信息 , 包装单位库存前端计算
|
// 每一条医嘱的库存集合信息 , 包装单位库存前端计算
|
||||||
List<
|
List<
|
||||||
AdviceInventoryDto> inventoryList =
|
AdviceInventoryDto> inventoryList =
|
||||||
adviceInventory.stream()
|
adviceInventory.stream()
|
||||||
.filter(e -> baseDto.getAdviceDefinitionId().equals(e.getItemId())
|
.filter(e -> baseDto.getAdviceDefinitionId().equals(e.getItemId())
|
||||||
&& baseDto.getAdviceTableName().equals(e.getItemTable()))
|
&& baseDto.getAdviceTableName().equals(e.getItemTable()))
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
// 当存在按科室配置时:仅保留被允许的药房/药库的库存;
|
|
||||||
// 若该药品类别未在配置中出现,则视为不可开立(清空库存以便前端过滤掉)
|
|
||||||
if (!allowedLocByCategory.isEmpty()) {
|
|
||||||
Set<Long> allowedLoc =
|
|
||||||
allowedLocByCategory.get(String.valueOf(baseDto.getCategoryCode()));
|
|
||||||
if (allowedLoc == null || allowedLoc.isEmpty()) {
|
|
||||||
inventoryList = Collections.emptyList();
|
|
||||||
} else {
|
|
||||||
inventoryList = inventoryList.stream()
|
|
||||||
.filter(inv -> allowedLoc.contains(inv.getLocationId()))
|
|
||||||
.collect(Collectors.toList());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// 库存信息
|
// 库存信息
|
||||||
baseDto.setInventoryList(inventoryList);
|
baseDto.setInventoryList(inventoryList);
|
||||||
// 设置默认产品批号
|
// 设置默认产品批号
|
||||||
if (!inventoryList.isEmpty()) {
|
if (!inventoryList.isEmpty()) {
|
||||||
// 库存大于0
|
// 库存大于0
|
||||||
List<AdviceInventoryDto> hasInventoryList = inventoryList.stream()
|
List<AdviceInventoryDto> hasInventoryList = inventoryList.stream()
|
||||||
.filter(e -> e.getQuantity().compareTo(BigDecimal.ZERO) > 0).collect(Collectors.toList());
|
.filter(e -> e.getQuantity().compareTo(BigDecimal.ZERO) > 0).collect(Collectors.toList());
|
||||||
if (!hasInventoryList.isEmpty()) {
|
if (!hasInventoryList.isEmpty()) {
|
||||||
baseDto.setDefaultLotNumber(hasInventoryList.get(0).getLotNumber());
|
baseDto.setDefaultLotNumber(hasInventoryList.get(0).getLotNumber());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!inventoryList.isEmpty() && !allowedLocByCategory.isEmpty()) {
|
if (!inventoryList.isEmpty() && !medLocationConfig.isEmpty()) {
|
||||||
Set<Long> allowedLoc =
|
// 第一步:在medLocationConfig中匹配categoryCode
|
||||||
allowedLocByCategory.get(String.valueOf(baseDto.getCategoryCode()));
|
AdviceInventoryDto result1 = medLocationConfig.stream()
|
||||||
if (allowedLoc != null && !allowedLoc.isEmpty()) {
|
.filter(dto -> baseDto.getCategoryCode().equals(dto.getCategoryCode())).findFirst()
|
||||||
AdviceInventoryDto hit = inventoryList.stream()
|
.orElse(null);
|
||||||
.filter(inv -> allowedLoc.contains(inv.getLocationId()))
|
if (result1 != null) {
|
||||||
.findFirst().orElse(null);
|
// 第二步:在inventoryList中匹配locationId
|
||||||
if (hit != null && hit.getLotNumber() != null) {
|
AdviceInventoryDto result2 = inventoryList.stream()
|
||||||
baseDto.setDefaultLotNumber(hit.getLotNumber());
|
.filter(dto -> result1.getLocationId().equals(dto.getLocationId())).findFirst()
|
||||||
|
.orElse(null);
|
||||||
|
if (result2 != null && result2.getLotNumber() != null) {
|
||||||
|
baseDto.setDefaultLotNumber(result2.getLotNumber());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -217,26 +213,35 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
|
|||||||
for (AdviceInventoryDto adviceInventoryDto : inventoryList) {
|
for (AdviceInventoryDto adviceInventoryDto : inventoryList) {
|
||||||
Long finalChargeItemDefinitionId = chargeItemDefinitionId;
|
Long finalChargeItemDefinitionId = chargeItemDefinitionId;
|
||||||
String finalUnitCode = unitCode;
|
String finalUnitCode = unitCode;
|
||||||
// 匹配包装单位
|
// 从定价子表取价格(适用于批次售卖场景)
|
||||||
List<AdvicePriceDto> advicePrice = childCharge.stream()
|
List<AdvicePriceDto> childPrice = childCharge.stream()
|
||||||
.filter(e -> e.getDefinitionId().equals(finalChargeItemDefinitionId)
|
.filter(e -> e.getDefinitionId().equals(finalChargeItemDefinitionId)
|
||||||
&& e.getConditionValue().equals(adviceInventoryDto.getLotNumber()))
|
&& e.getConditionValue().equals(adviceInventoryDto.getLotNumber()))
|
||||||
.peek(e -> e.setUnitCode(finalUnitCode)) // 设置 unitCode
|
.peek(e -> e.setUnitCode(finalUnitCode)) // 设置 unitCode
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
priceDtoList.addAll(advicePrice);
|
// 从定价主表取价格(适用于统一零售价场景)
|
||||||
|
List<AdvicePriceDto> mainPrice = mainCharge.stream()
|
||||||
|
.filter(e -> baseDto.getChargeItemDefinitionId().equals(e.getDefinitionId()))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
// 按批次售价
|
||||||
|
if (OrderPricingSource.BATCH_SELLING_PRICE.getCode().equals(orderPricingSource)) {
|
||||||
|
priceDtoList.addAll(childPrice);
|
||||||
|
} else {
|
||||||
|
priceDtoList.addAll(mainPrice);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// 价格信息
|
// 价格信息
|
||||||
baseDto.setPriceList(priceDtoList);
|
baseDto.setPriceList(priceDtoList);
|
||||||
break;
|
break;
|
||||||
case CommonConstants.TableName.WOR_ACTIVITY_DEFINITION: // 诊疗
|
case CommonConstants.TableName.WOR_ACTIVITY_DEFINITION: // 诊疗
|
||||||
List<AdvicePriceDto> priceList =
|
List<AdvicePriceDto> priceList =
|
||||||
mainCharge.stream().filter(e -> baseDto.getChargeItemDefinitionId().equals(e.getDefinitionId()))
|
mainCharge.stream().filter(e -> baseDto.getChargeItemDefinitionId().equals(e.getDefinitionId()))
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
// 价格信息
|
// 价格信息
|
||||||
baseDto.setPriceList(priceList);
|
baseDto.setPriceList(priceList);
|
||||||
// 活动类型
|
// 活动类型
|
||||||
baseDto.setActivityType_enumText(
|
baseDto.setActivityType_enumText(
|
||||||
EnumUtils.getInfoByValue(ActivityType.class, baseDto.getActivityType()));
|
EnumUtils.getInfoByValue(ActivityType.class, baseDto.getActivityType()));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@@ -246,47 +251,22 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询诊疗绑定耗材信息
|
* 查询医嘱绑定信息
|
||||||
*
|
*
|
||||||
* @param activityId 诊疗id
|
* @param typeCode 1:用法绑东西 2:诊疗绑东西
|
||||||
* @return 诊疗绑定耗材信息
|
* @param itemNo 用法的code 或者 诊疗定义id
|
||||||
|
* @return 医嘱绑定信息
|
||||||
*/
|
*/
|
||||||
public ActivityBindDeviceDto getActivityBindDevice(Long activityId) {
|
@Override
|
||||||
ActivityBindDeviceDto activityBindDeviceDto = new ActivityBindDeviceDto();
|
public List<OrderBindInfoDto> getOrderBindInfo(String typeCode, String itemNo) {
|
||||||
List<ActivityBindDeviceDetailDto> activityBindDevice = doctorStationAdviceAppMapper.getActivityBindDevice(
|
return doctorStationAdviceAppMapper.getOrderBindInfo(typeCode, PublicationStatus.ACTIVE.getValue(), itemNo);
|
||||||
activityId + "", PublicationStatus.ACTIVE.getValue(), CommonConstants.TableName.ADM_DEVICE_DEFINITION);
|
|
||||||
// 详细信息赋值
|
|
||||||
if (!activityBindDevice.isEmpty()) {
|
|
||||||
// 耗材id集合
|
|
||||||
List<Long> deviceIds =
|
|
||||||
activityBindDevice.stream().map(ActivityBindDeviceDetailDto::getDeviceId).collect(Collectors.toList());
|
|
||||||
// 耗材医嘱信息
|
|
||||||
List<AdviceBaseDto> deviceRecords =
|
|
||||||
this.getAdviceBaseInfo(null, null, null, deviceIds, 0L, 1, 100, Whether.NO.getValue(), List.of(1, 2, 3))
|
|
||||||
.getRecords();
|
|
||||||
Map<Long, AdviceBaseDto> adviceMap = deviceRecords.stream().collect(Collectors
|
|
||||||
.toMap(AdviceBaseDto::getAdviceDefinitionId, advice -> advice, (existing, replacement) -> existing // 如果有重复key,保留第一个
|
|
||||||
));
|
|
||||||
activityBindDeviceDto.setActivityBindDeviceInfos(activityBindDevice);
|
|
||||||
for (ActivityBindDeviceDetailDto activityBindDeviceInfo : activityBindDeviceDto
|
|
||||||
.getActivityBindDeviceInfos()) {
|
|
||||||
Long deviceId = activityBindDeviceInfo.getDeviceId();
|
|
||||||
if (deviceId != null) {
|
|
||||||
AdviceBaseDto matchedAdvice = adviceMap.get(deviceId);
|
|
||||||
if (matchedAdvice != null) {
|
|
||||||
activityBindDeviceInfo.setOrderDetailInfos(matchedAdvice);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return activityBindDeviceDto;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 门诊保存/签发医嘱
|
* 门诊保存/签发医嘱
|
||||||
*
|
*
|
||||||
* @param adviceSaveParam 医嘱表单信息
|
* @param adviceSaveParam 医嘱表单信息
|
||||||
* @param adviceOpType 医嘱操作类型
|
* @param adviceOpType 医嘱操作类型
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
@@ -297,21 +277,21 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
|
|||||||
List<AdviceSaveDto> adviceSaveList = adviceSaveParam.getAdviceSaveList();
|
List<AdviceSaveDto> adviceSaveList = adviceSaveParam.getAdviceSaveList();
|
||||||
// 药品
|
// 药品
|
||||||
List<AdviceSaveDto> medicineList = adviceSaveList.stream()
|
List<AdviceSaveDto> medicineList = adviceSaveList.stream()
|
||||||
.filter(e -> ItemType.MEDICINE.getValue().equals(e.getAdviceType())).collect(Collectors.toList());
|
.filter(e -> ItemType.MEDICINE.getValue().equals(e.getAdviceType())).collect(Collectors.toList());
|
||||||
// 耗材
|
// 耗材
|
||||||
List<AdviceSaveDto> deviceList = adviceSaveList.stream()
|
List<AdviceSaveDto> deviceList = adviceSaveList.stream()
|
||||||
.filter(e -> ItemType.DEVICE.getValue().equals(e.getAdviceType())).collect(Collectors.toList());
|
.filter(e -> ItemType.DEVICE.getValue().equals(e.getAdviceType())).collect(Collectors.toList());
|
||||||
// 诊疗活动
|
// 诊疗活动
|
||||||
List<AdviceSaveDto> activityList = adviceSaveList.stream()
|
List<AdviceSaveDto> activityList = adviceSaveList.stream()
|
||||||
.filter(e -> ItemType.ACTIVITY.getValue().equals(e.getAdviceType())).collect(Collectors.toList());
|
.filter(e -> ItemType.ACTIVITY.getValue().equals(e.getAdviceType())).collect(Collectors.toList());
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 保存时,校验库存
|
* 保存时,校验库存
|
||||||
*/
|
*/
|
||||||
if (AdviceOpType.SAVE_ADVICE.getCode().equals(adviceOpType)) {
|
if (AdviceOpType.SAVE_ADVICE.getCode().equals(adviceOpType)) {
|
||||||
List<AdviceSaveDto> needCheckList =
|
List<AdviceSaveDto> needCheckList =
|
||||||
adviceSaveList.stream().filter(e -> !DbOpType.DELETE.getCode().equals(e.getDbOpType())
|
adviceSaveList.stream().filter(e -> !DbOpType.DELETE.getCode().equals(e.getDbOpType())
|
||||||
&& !ItemType.ACTIVITY.getValue().equals(e.getAdviceType())).collect(Collectors.toList());
|
&& !ItemType.ACTIVITY.getValue().equals(e.getAdviceType())).collect(Collectors.toList());
|
||||||
// 校验库存
|
// 校验库存
|
||||||
String tipRes = adviceUtils.checkInventory(needCheckList);
|
String tipRes = adviceUtils.checkInventory(needCheckList);
|
||||||
if (tipRes != null) {
|
if (tipRes != null) {
|
||||||
@@ -342,25 +322,25 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
|
|||||||
if (AdviceOpType.SIGN_ADVICE.getCode().equals(adviceOpType) && !adviceSaveList.isEmpty()) {
|
if (AdviceOpType.SIGN_ADVICE.getCode().equals(adviceOpType) && !adviceSaveList.isEmpty()) {
|
||||||
// 签发的医嘱id集合
|
// 签发的医嘱id集合
|
||||||
List<Long> requestIds = adviceSaveList.stream()
|
List<Long> requestIds = adviceSaveList.stream()
|
||||||
.filter(e -> !DbOpType.DELETE.getCode().equals(e.getDbOpType()) && e.getRequestId() != null)
|
.filter(e -> !DbOpType.DELETE.getCode().equals(e.getDbOpType()) && e.getRequestId() != null)
|
||||||
.collect(Collectors.toList()).stream().map(AdviceSaveDto::getRequestId).collect(Collectors.toList());
|
.collect(Collectors.toList()).stream().map(AdviceSaveDto::getRequestId).collect(Collectors.toList());
|
||||||
// 就诊id
|
// 就诊id
|
||||||
Long encounterId = adviceSaveList.get(0).getEncounterId();
|
Long encounterId = adviceSaveList.get(0).getEncounterId();
|
||||||
iChargeItemService.update(new LambdaUpdateWrapper<ChargeItem>()
|
iChargeItemService.update(new LambdaUpdateWrapper<ChargeItem>()
|
||||||
.set(ChargeItem::getStatusEnum, ChargeItemStatus.PLANNED.getValue())
|
.set(ChargeItem::getStatusEnum, ChargeItemStatus.PLANNED.getValue())
|
||||||
.eq(ChargeItem::getEncounterId, encounterId)
|
.eq(ChargeItem::getEncounterId, encounterId)
|
||||||
.eq(ChargeItem::getStatusEnum, ChargeItemStatus.DRAFT.getValue())
|
.eq(ChargeItem::getStatusEnum, ChargeItemStatus.DRAFT.getValue())
|
||||||
.in(ChargeItem::getServiceId, requestIds));
|
.in(ChargeItem::getServiceId, requestIds));
|
||||||
}
|
}
|
||||||
|
|
||||||
return R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00002, new Object[] {"门诊医嘱"}));
|
return R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00002, new Object[]{"门诊医嘱"}));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 处理药品
|
* 处理药品
|
||||||
*/
|
*/
|
||||||
private void handMedication(List<AdviceSaveDto> medicineList, Date curDate, String adviceOpType,
|
private void handMedication(List<AdviceSaveDto> medicineList, Date curDate, String adviceOpType,
|
||||||
Long organizationId, String signCode) {
|
Long organizationId, String signCode) {
|
||||||
// 当前登录账号的科室id
|
// 当前登录账号的科室id
|
||||||
Long orgId = SecurityUtils.getLoginUser().getOrgId();
|
Long orgId = SecurityUtils.getLoginUser().getOrgId();
|
||||||
// 保存操作
|
// 保存操作
|
||||||
@@ -373,11 +353,11 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
|
|||||||
ChargeItem chargeItem;
|
ChargeItem chargeItem;
|
||||||
// 新增 + 修改
|
// 新增 + 修改
|
||||||
List<AdviceSaveDto> insertOrUpdateList =
|
List<AdviceSaveDto> insertOrUpdateList =
|
||||||
medicineList.stream().filter(e -> (DbOpType.INSERT.getCode().equals(e.getDbOpType())
|
medicineList.stream().filter(e -> (DbOpType.INSERT.getCode().equals(e.getDbOpType())
|
||||||
|| DbOpType.UPDATE.getCode().equals(e.getDbOpType()))).collect(Collectors.toList());
|
|| DbOpType.UPDATE.getCode().equals(e.getDbOpType()))).collect(Collectors.toList());
|
||||||
// 删除
|
// 删除
|
||||||
List<AdviceSaveDto> deleteList = medicineList.stream()
|
List<AdviceSaveDto> deleteList = medicineList.stream()
|
||||||
.filter(e -> DbOpType.DELETE.getCode().equals(e.getDbOpType())).collect(Collectors.toList());
|
.filter(e -> DbOpType.DELETE.getCode().equals(e.getDbOpType())).collect(Collectors.toList());
|
||||||
// 校验删除的医嘱是否已经收费
|
// 校验删除的医嘱是否已经收费
|
||||||
List<Long> delRequestIdList = deleteList.stream().map(AdviceSaveDto::getRequestId).collect(Collectors.toList());
|
List<Long> delRequestIdList = deleteList.stream().map(AdviceSaveDto::getRequestId).collect(Collectors.toList());
|
||||||
if (!delRequestIdList.isEmpty()) {
|
if (!delRequestIdList.isEmpty()) {
|
||||||
@@ -396,30 +376,15 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
|
|||||||
iMedicationDispenseService.deleteMedicationDispense(adviceSaveDto.getRequestId());
|
iMedicationDispenseService.deleteMedicationDispense(adviceSaveDto.getRequestId());
|
||||||
// 删除费用项
|
// 删除费用项
|
||||||
iChargeItemService.deleteByServiceTableAndId(CommonConstants.TableName.MED_MEDICATION_REQUEST,
|
iChargeItemService.deleteByServiceTableAndId(CommonConstants.TableName.MED_MEDICATION_REQUEST,
|
||||||
adviceSaveDto.getRequestId());
|
adviceSaveDto.getRequestId());
|
||||||
// 删除基于这个药品生成的需要执行的诊疗请求
|
// 删除基于这个药品生成的需要执行的诊疗请求
|
||||||
iServiceRequestService.remove(
|
iServiceRequestService.remove(
|
||||||
new LambdaQueryWrapper<ServiceRequest>().eq(ServiceRequest::getBasedOnId, adviceSaveDto.getRequestId())
|
new LambdaQueryWrapper<ServiceRequest>().eq(ServiceRequest::getBasedOnId, adviceSaveDto.getRequestId())
|
||||||
.isNotNull(ServiceRequest::getBasedOnTable)
|
.isNotNull(ServiceRequest::getBasedOnTable)
|
||||||
.eq(ServiceRequest::getStatusEnum, RequestStatus.COMPLETED.getValue()));
|
.eq(ServiceRequest::getStatusEnum, RequestStatus.COMPLETED.getValue()));
|
||||||
}
|
}
|
||||||
// 当前时间毫秒值
|
|
||||||
Long currentTimeMillis = System.currentTimeMillis();
|
|
||||||
// 签发时
|
// 签发时
|
||||||
if (is_sign) {
|
if (is_sign) {
|
||||||
// 对组号进行二次处理
|
|
||||||
Long i = 1L;
|
|
||||||
for (AdviceSaveDto adviceSaveDto : insertOrUpdateList) {
|
|
||||||
// 输液标记
|
|
||||||
if (Whether.YES.getValue().equals(adviceSaveDto.getInjectFlag())) {
|
|
||||||
if (adviceSaveDto.getGroupId() == null) {
|
|
||||||
adviceSaveDto.setGroupId(currentTimeMillis + i);
|
|
||||||
} else {
|
|
||||||
adviceSaveDto.setGroupId(currentTimeMillis + adviceSaveDto.getGroupId());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
i = ++i;
|
|
||||||
}
|
|
||||||
// 生成处方号
|
// 生成处方号
|
||||||
prescriptionUtils.generatePrescriptionNumbers(insertOrUpdateList);
|
prescriptionUtils.generatePrescriptionNumbers(insertOrUpdateList);
|
||||||
}
|
}
|
||||||
@@ -433,9 +398,10 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
|
|||||||
if (is_sign) {
|
if (is_sign) {
|
||||||
medicationRequest.setSignCode(signCode);
|
medicationRequest.setSignCode(signCode);
|
||||||
}
|
}
|
||||||
// 只有保存时才处理的字段属性
|
// 保存时,处理数据(请求,发放,账单)
|
||||||
if (is_save) {
|
if (is_save) {
|
||||||
medicationRequest.setBusNo(assignSeqUtil.getSeqByDay(AssignSeqEnum.MEDICATION_RES_NO.getPrefix(), 4));
|
medicationRequest.setBusNo(assignSeqUtil.getSeqByDay(AssignSeqEnum.MEDICATION_RES_NO.getPrefix(), 4));
|
||||||
|
medicationRequest.setGenerateSourceEnum(GenerateSource.DOCTOR_PRESCRIPTION.getValue()); // 生成来源
|
||||||
medicationRequest.setQuantity(adviceSaveDto.getQuantity()); // 请求数量
|
medicationRequest.setQuantity(adviceSaveDto.getQuantity()); // 请求数量
|
||||||
medicationRequest.setExecuteNum(adviceSaveDto.getExecuteNum()); // 执行次数
|
medicationRequest.setExecuteNum(adviceSaveDto.getExecuteNum()); // 执行次数
|
||||||
medicationRequest.setUnitCode(adviceSaveDto.getUnitCode()); // 请求单位编码
|
medicationRequest.setUnitCode(adviceSaveDto.getUnitCode()); // 请求单位编码
|
||||||
@@ -465,24 +431,18 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
|
|||||||
medicationRequest.setSortNumber(adviceSaveDto.getSortNumber()); // 排序号
|
medicationRequest.setSortNumber(adviceSaveDto.getSortNumber()); // 排序号
|
||||||
}
|
}
|
||||||
iMedicationRequestService.saveOrUpdate(medicationRequest);
|
iMedicationRequestService.saveOrUpdate(medicationRequest);
|
||||||
// 第一次保存时,如果药品请求为皮试或输液,自动开立对应绑定的诊疗请求
|
|
||||||
if (adviceSaveDto.getRequestId() == null) {
|
|
||||||
if (is_save && (Whether.YES.getValue().equals(adviceSaveDto.getSkinTestFlag())
|
|
||||||
|| Whether.YES.getValue().equals(adviceSaveDto.getInjectFlag()))) {
|
|
||||||
// 查询已经存在的当前数据
|
|
||||||
medicationRequest = iMedicationRequestService.getById(medicationRequest.getId());
|
|
||||||
adviceUtils.generateActRequestByMedicationFlag(medicationRequest, organizationId, adviceSaveDto);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// 保存时 处理药品发放 和 保存药品费用项
|
|
||||||
if (is_save) {
|
if (is_save) {
|
||||||
// 处理药品发放
|
// 处理药品发放
|
||||||
iMedicationDispenseService.handleMedicationDispense(medicationRequest, adviceSaveDto.getDbOpType());
|
Long dispenseId =
|
||||||
|
iMedicationDispenseService.handleMedicationDispense(medicationRequest, adviceSaveDto.getDbOpType());
|
||||||
|
|
||||||
// 保存药品费用项
|
// 保存药品费用项
|
||||||
chargeItem = new ChargeItem();
|
chargeItem = new ChargeItem();
|
||||||
chargeItem.setId(adviceSaveDto.getChargeItemId()); // 费用项id
|
chargeItem.setId(adviceSaveDto.getChargeItemId()); // 费用项id
|
||||||
chargeItem.setStatusEnum(ChargeItemStatus.DRAFT.getValue()); // 收费状态
|
chargeItem.setStatusEnum(ChargeItemStatus.DRAFT.getValue()); // 收费状态
|
||||||
chargeItem.setBusNo(AssignSeqEnum.CHARGE_ITEM_NO.getPrefix().concat(medicationRequest.getBusNo()));
|
chargeItem.setBusNo(AssignSeqEnum.CHARGE_ITEM_NO.getPrefix().concat(medicationRequest.getBusNo()));
|
||||||
|
chargeItem.setGenerateSourceEnum(GenerateSource.DOCTOR_PRESCRIPTION.getValue()); // 生成来源
|
||||||
chargeItem.setPrescriptionNo(adviceSaveDto.getPrescriptionNo()); // 处方号
|
chargeItem.setPrescriptionNo(adviceSaveDto.getPrescriptionNo()); // 处方号
|
||||||
chargeItem.setPatientId(adviceSaveDto.getPatientId()); // 患者
|
chargeItem.setPatientId(adviceSaveDto.getPatientId()); // 患者
|
||||||
chargeItem.setContextEnum(adviceSaveDto.getAdviceType()); // 类型
|
chargeItem.setContextEnum(adviceSaveDto.getAdviceType()); // 类型
|
||||||
@@ -499,6 +459,7 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
|
|||||||
chargeItem.setAccountId(adviceSaveDto.getAccountId());// 关联账户ID
|
chargeItem.setAccountId(adviceSaveDto.getAccountId());// 关联账户ID
|
||||||
chargeItem.setConditionId(adviceSaveDto.getConditionId()); // 诊断id
|
chargeItem.setConditionId(adviceSaveDto.getConditionId()); // 诊断id
|
||||||
chargeItem.setEncounterDiagnosisId(adviceSaveDto.getEncounterDiagnosisId()); // 就诊诊断id
|
chargeItem.setEncounterDiagnosisId(adviceSaveDto.getEncounterDiagnosisId()); // 就诊诊断id
|
||||||
|
chargeItem.setDispenseId(dispenseId); // 发放ID
|
||||||
|
|
||||||
chargeItem.setQuantityValue(adviceSaveDto.getQuantity()); // 数量
|
chargeItem.setQuantityValue(adviceSaveDto.getQuantity()); // 数量
|
||||||
chargeItem.setQuantityUnit(adviceSaveDto.getUnitCode()); // 单位
|
chargeItem.setQuantityUnit(adviceSaveDto.getUnitCode()); // 单位
|
||||||
@@ -506,82 +467,9 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
|
|||||||
chargeItem.setTotalPrice(adviceSaveDto.getTotalPrice()); // 总价
|
chargeItem.setTotalPrice(adviceSaveDto.getTotalPrice()); // 总价
|
||||||
|
|
||||||
iChargeItemService.saveOrUpdate(chargeItem);
|
iChargeItemService.saveOrUpdate(chargeItem);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 签发时
|
|
||||||
/* if (is_sign) {
|
|
||||||
// --------------------如果是输液药品,生成仅用于执行的 "静脉输液" request(同一个组号生成一个)
|
|
||||||
List<AdviceSaveDto> injectList = insertOrUpdateList.stream()
|
|
||||||
.filter(dto -> Whether.YES.getValue().equals(dto.getInjectFlag()) && dto.getGroupId() != null) // 过滤条件:输液且groupId不为null
|
|
||||||
.collect(Collectors.groupingBy(AdviceSaveDto::getGroupId)) // 按groupId分组
|
|
||||||
.values().stream().map(group -> group.get(0)).collect(Collectors.toList()); // 取每组中的第一个元素
|
|
||||||
// 静脉输液的诊疗定义id
|
|
||||||
Long intravenousInfusionDefinitionId = iActivityDefinitionService
|
|
||||||
.getAppointActivityDefinitionId(CommonConstants.BusinessName.INTRAVENOUS_INFUSION);
|
|
||||||
// 对应的诊疗医嘱信息
|
|
||||||
AdviceBaseDto injectQueryAdviceBaseDto = new AdviceBaseDto();
|
|
||||||
injectQueryAdviceBaseDto.setAdviceDefinitionId(intravenousInfusionDefinitionId); // 医嘱定义id
|
|
||||||
AdviceBaseDto injectAdviceBaseDto = this.getAdviceBaseInfo(injectQueryAdviceBaseDto, null, null, null,
|
|
||||||
organizationId, 1, 1, Whether.NO.getValue(), List.of(1, 2, 3)).getRecords().get(0);
|
|
||||||
ServiceRequest serviceRequestInjectExe;
|
|
||||||
for (AdviceSaveDto adviceSaveDto : injectList) {
|
|
||||||
Long groupId = adviceSaveDto.getGroupId();// 组号
|
|
||||||
Integer quantity = adviceSaveDto.getExecuteNum();// 执行次数
|
|
||||||
// 生成诊疗请求
|
|
||||||
serviceRequestInjectExe = new ServiceRequest();
|
|
||||||
serviceRequestInjectExe.setStatusEnum(RequestStatus.COMPLETED.getValue());// 请求状态,已完成
|
|
||||||
serviceRequestInjectExe
|
|
||||||
.setBusNo(assignSeqUtil.getSeqByDay(AssignSeqEnum.SERVICE_RES_NO.getPrefix(), 4));
|
|
||||||
serviceRequestInjectExe.setQuantity(quantity); // 请求数量
|
|
||||||
serviceRequestInjectExe.setUnitCode(injectAdviceBaseDto.getUnitCode()); // 请求单位编码
|
|
||||||
serviceRequestInjectExe.setCategoryEnum(EncounterClass.AMB.getValue()); // 请求类型,默认-门诊
|
|
||||||
serviceRequestInjectExe.setActivityId(injectAdviceBaseDto.getAdviceDefinitionId());// 诊疗定义id
|
|
||||||
serviceRequestInjectExe.setPatientId(adviceSaveDto.getPatientId()); // 患者
|
|
||||||
serviceRequestInjectExe.setRequesterId(SecurityUtils.getLoginUser().getPractitionerId()); // 开方医生
|
|
||||||
serviceRequestInjectExe.setEncounterId(adviceSaveDto.getEncounterId()); // 就诊id
|
|
||||||
serviceRequestInjectExe.setAuthoredTime(curDate); // 请求签发时间
|
|
||||||
serviceRequestInjectExe.setOrgId(organizationId); // 执行科室
|
|
||||||
serviceRequestInjectExe.setBasedOnTable(CommonConstants.TableName.MED_MEDICATION_REQUEST);
|
|
||||||
serviceRequestInjectExe.setBasedOnId(adviceSaveDto.getRequestId());
|
|
||||||
serviceRequestInjectExe.setConditionId(adviceSaveDto.getConditionId()); // 诊断id
|
|
||||||
serviceRequestInjectExe.setEncounterDiagnosisId(adviceSaveDto.getEncounterDiagnosisId()); // 就诊诊断id
|
|
||||||
serviceRequestInjectExe.setGroupId(groupId);// 组号
|
|
||||||
iServiceRequestService.save(serviceRequestInjectExe);
|
|
||||||
}
|
|
||||||
// --------------------如果是皮试药品,生成仅用于执行的 "皮试检查" request(每个药品生成一个)
|
|
||||||
List<AdviceSaveDto> skinTestList = insertOrUpdateList.stream()
|
|
||||||
.filter(dto -> Whether.YES.getValue().equals(dto.getSkinTestFlag())).collect(Collectors.toList());
|
|
||||||
// 皮试检查的诊疗定义id
|
|
||||||
Long skinTestInspectionDefinitionId = iActivityDefinitionService
|
|
||||||
.getAppointActivityDefinitionId(CommonConstants.BusinessName.SKIN_TEST_INSPECTION);
|
|
||||||
AdviceBaseDto skinTestQueryAdviceBaseDto = new AdviceBaseDto();
|
|
||||||
skinTestQueryAdviceBaseDto.setAdviceDefinitionId(skinTestInspectionDefinitionId); // 医嘱定义id
|
|
||||||
// 对应的诊疗医嘱信息
|
|
||||||
AdviceBaseDto skinTestAdviceBaseDto = this.getAdviceBaseInfo(skinTestQueryAdviceBaseDto, null, null, null,
|
|
||||||
organizationId, 1, 1, Whether.NO.getValue(), List.of(1, 2, 3)).getRecords().get(0);
|
|
||||||
ServiceRequest serviceRequestSkinTestExe;
|
|
||||||
for (AdviceSaveDto adviceSaveDto : skinTestList) {
|
|
||||||
// 生成诊疗请求,用于执行
|
|
||||||
serviceRequestSkinTestExe = new ServiceRequest();
|
|
||||||
serviceRequestSkinTestExe.setStatusEnum(RequestStatus.COMPLETED.getValue());// 请求状态,已完成
|
|
||||||
serviceRequestSkinTestExe
|
|
||||||
.setBusNo(assignSeqUtil.getSeqByDay(AssignSeqEnum.SERVICE_RES_NO.getPrefix(), 4));
|
|
||||||
serviceRequestSkinTestExe.setQuantity(1); // 请求数量
|
|
||||||
serviceRequestSkinTestExe.setUnitCode(skinTestAdviceBaseDto.getUnitCode()); // 请求单位编码
|
|
||||||
serviceRequestSkinTestExe.setCategoryEnum(EncounterClass.AMB.getValue()); // 请求类型,默认-门诊
|
|
||||||
serviceRequestSkinTestExe.setActivityId(skinTestAdviceBaseDto.getAdviceDefinitionId());// 诊疗定义id
|
|
||||||
serviceRequestSkinTestExe.setPatientId(adviceSaveDto.getPatientId()); // 患者
|
|
||||||
serviceRequestSkinTestExe.setRequesterId(SecurityUtils.getLoginUser().getPractitionerId()); // 开方医生
|
|
||||||
serviceRequestSkinTestExe.setEncounterId(adviceSaveDto.getEncounterId()); // 就诊id
|
|
||||||
serviceRequestSkinTestExe.setAuthoredTime(curDate); // 请求签发时间
|
|
||||||
serviceRequestSkinTestExe.setOrgId(organizationId); // 执行科室
|
|
||||||
serviceRequestSkinTestExe.setBasedOnTable(CommonConstants.TableName.MED_MEDICATION_REQUEST);
|
|
||||||
serviceRequestSkinTestExe.setBasedOnId(adviceSaveDto.getRequestId());
|
|
||||||
serviceRequestSkinTestExe.setConditionId(adviceSaveDto.getConditionId()); // 诊断id
|
|
||||||
serviceRequestSkinTestExe.setEncounterDiagnosisId(adviceSaveDto.getEncounterDiagnosisId()); // 就诊诊断id
|
|
||||||
iServiceRequestService.save(serviceRequestSkinTestExe);
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -599,11 +487,11 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
|
|||||||
ChargeItem chargeItem;
|
ChargeItem chargeItem;
|
||||||
// 新增 + 修改
|
// 新增 + 修改
|
||||||
List<AdviceSaveDto> insertOrUpdateList =
|
List<AdviceSaveDto> insertOrUpdateList =
|
||||||
deviceList.stream().filter(e -> (DbOpType.INSERT.getCode().equals(e.getDbOpType())
|
deviceList.stream().filter(e -> (DbOpType.INSERT.getCode().equals(e.getDbOpType())
|
||||||
|| DbOpType.UPDATE.getCode().equals(e.getDbOpType()))).collect(Collectors.toList());
|
|| DbOpType.UPDATE.getCode().equals(e.getDbOpType()))).collect(Collectors.toList());
|
||||||
// 删除
|
// 删除
|
||||||
List<AdviceSaveDto> deleteList = deviceList.stream()
|
List<AdviceSaveDto> deleteList = deviceList.stream()
|
||||||
.filter(e -> DbOpType.DELETE.getCode().equals(e.getDbOpType())).collect(Collectors.toList());
|
.filter(e -> DbOpType.DELETE.getCode().equals(e.getDbOpType())).collect(Collectors.toList());
|
||||||
// 校验删除的医嘱是否已经收费
|
// 校验删除的医嘱是否已经收费
|
||||||
List<Long> delRequestIdList = deleteList.stream().map(AdviceSaveDto::getRequestId).collect(Collectors.toList());
|
List<Long> delRequestIdList = deleteList.stream().map(AdviceSaveDto::getRequestId).collect(Collectors.toList());
|
||||||
if (!delRequestIdList.isEmpty()) {
|
if (!delRequestIdList.isEmpty()) {
|
||||||
@@ -622,16 +510,18 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
|
|||||||
iDeviceDispenseService.deleteDeviceDispense(adviceSaveDto.getRequestId());
|
iDeviceDispenseService.deleteDeviceDispense(adviceSaveDto.getRequestId());
|
||||||
// 删除费用项
|
// 删除费用项
|
||||||
iChargeItemService.deleteByServiceTableAndId(CommonConstants.TableName.WOR_DEVICE_REQUEST,
|
iChargeItemService.deleteByServiceTableAndId(CommonConstants.TableName.WOR_DEVICE_REQUEST,
|
||||||
adviceSaveDto.getRequestId());
|
adviceSaveDto.getRequestId());
|
||||||
}
|
}
|
||||||
|
|
||||||
for (AdviceSaveDto adviceSaveDto : insertOrUpdateList) {
|
for (AdviceSaveDto adviceSaveDto : insertOrUpdateList) {
|
||||||
deviceRequest = new DeviceRequest();
|
deviceRequest = new DeviceRequest();
|
||||||
deviceRequest.setId(adviceSaveDto.getRequestId()); // 主键id
|
deviceRequest.setId(adviceSaveDto.getRequestId()); // 主键id
|
||||||
deviceRequest.setStatusEnum(is_save ? RequestStatus.DRAFT.getValue() : RequestStatus.ACTIVE.getValue()); // 请求状态
|
deviceRequest.setStatusEnum(is_save ? RequestStatus.DRAFT.getValue() : RequestStatus.ACTIVE.getValue()); // 请求状态
|
||||||
// 只有保存时才处理的字段属性
|
|
||||||
|
// 保存时,处理数据(请求,发放,账单)
|
||||||
if (is_save) {
|
if (is_save) {
|
||||||
deviceRequest.setBusNo(assignSeqUtil.getSeqByDay(AssignSeqEnum.DEVICE_RES_NO.getPrefix(), 4));
|
deviceRequest.setBusNo(assignSeqUtil.getSeqByDay(AssignSeqEnum.DEVICE_RES_NO.getPrefix(), 4));
|
||||||
|
deviceRequest.setGenerateSourceEnum(GenerateSource.DOCTOR_PRESCRIPTION.getValue()); // 生成来源
|
||||||
deviceRequest.setQuantity(adviceSaveDto.getQuantity()); // 请求数量
|
deviceRequest.setQuantity(adviceSaveDto.getQuantity()); // 请求数量
|
||||||
deviceRequest.setUnitCode(adviceSaveDto.getUnitCode()); // 请求单位编码
|
deviceRequest.setUnitCode(adviceSaveDto.getUnitCode()); // 请求单位编码
|
||||||
deviceRequest.setLotNumber(adviceSaveDto.getLotNumber());// 产品批号
|
deviceRequest.setLotNumber(adviceSaveDto.getLotNumber());// 产品批号
|
||||||
@@ -651,19 +541,20 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
|
|||||||
deviceRequest.setYbClassEnum(adviceSaveDto.getYbClassEnum());// 类别医保编码
|
deviceRequest.setYbClassEnum(adviceSaveDto.getYbClassEnum());// 类别医保编码
|
||||||
deviceRequest.setConditionId(adviceSaveDto.getConditionId()); // 诊断id
|
deviceRequest.setConditionId(adviceSaveDto.getConditionId()); // 诊断id
|
||||||
deviceRequest.setEncounterDiagnosisId(adviceSaveDto.getEncounterDiagnosisId()); // 就诊诊断id
|
deviceRequest.setEncounterDiagnosisId(adviceSaveDto.getEncounterDiagnosisId()); // 就诊诊断id
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
iDeviceRequestService.saveOrUpdate(deviceRequest);
|
iDeviceRequestService.saveOrUpdate(deviceRequest);
|
||||||
|
|
||||||
// 保存时 处理耗材发放 和 保存耗材费用项
|
|
||||||
if (is_save) {
|
if (is_save) {
|
||||||
// 处理耗材发放
|
// 处理耗材发放
|
||||||
iDeviceDispenseService.handleDeviceDispense(deviceRequest, adviceSaveDto.getDbOpType());
|
Long dispenseId =
|
||||||
|
iDeviceDispenseService.handleDeviceDispense(deviceRequest, adviceSaveDto.getDbOpType());
|
||||||
|
|
||||||
// 保存耗材费用项
|
// 保存耗材费用项
|
||||||
chargeItem = new ChargeItem();
|
chargeItem = new ChargeItem();
|
||||||
chargeItem.setId(adviceSaveDto.getChargeItemId()); // 费用项id
|
chargeItem.setId(adviceSaveDto.getChargeItemId()); // 费用项id
|
||||||
chargeItem.setStatusEnum(ChargeItemStatus.DRAFT.getValue()); // 收费状态
|
chargeItem.setStatusEnum(ChargeItemStatus.DRAFT.getValue()); // 收费状态
|
||||||
chargeItem.setBusNo(AssignSeqEnum.CHARGE_ITEM_NO.getPrefix().concat(deviceRequest.getBusNo()));
|
chargeItem.setBusNo(AssignSeqEnum.CHARGE_ITEM_NO.getPrefix().concat(deviceRequest.getBusNo()));
|
||||||
|
chargeItem.setGenerateSourceEnum(GenerateSource.DOCTOR_PRESCRIPTION.getValue()); // 生成来源
|
||||||
chargeItem.setPatientId(adviceSaveDto.getPatientId()); // 患者
|
chargeItem.setPatientId(adviceSaveDto.getPatientId()); // 患者
|
||||||
chargeItem.setContextEnum(adviceSaveDto.getAdviceType()); // 类型
|
chargeItem.setContextEnum(adviceSaveDto.getAdviceType()); // 类型
|
||||||
chargeItem.setEncounterId(adviceSaveDto.getEncounterId()); // 就诊id
|
chargeItem.setEncounterId(adviceSaveDto.getEncounterId()); // 就诊id
|
||||||
@@ -679,6 +570,7 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
|
|||||||
chargeItem.setAccountId(adviceSaveDto.getAccountId());// 关联账户ID
|
chargeItem.setAccountId(adviceSaveDto.getAccountId());// 关联账户ID
|
||||||
chargeItem.setConditionId(adviceSaveDto.getConditionId()); // 诊断id
|
chargeItem.setConditionId(adviceSaveDto.getConditionId()); // 诊断id
|
||||||
chargeItem.setEncounterDiagnosisId(adviceSaveDto.getEncounterDiagnosisId()); // 就诊诊断id
|
chargeItem.setEncounterDiagnosisId(adviceSaveDto.getEncounterDiagnosisId()); // 就诊诊断id
|
||||||
|
chargeItem.setDispenseId(dispenseId); // 发放ID
|
||||||
|
|
||||||
chargeItem.setQuantityValue(adviceSaveDto.getQuantity()); // 数量
|
chargeItem.setQuantityValue(adviceSaveDto.getQuantity()); // 数量
|
||||||
chargeItem.setQuantityUnit(adviceSaveDto.getUnitCode()); // 单位
|
chargeItem.setQuantityUnit(adviceSaveDto.getUnitCode()); // 单位
|
||||||
@@ -694,7 +586,7 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
|
|||||||
* 处理诊疗
|
* 处理诊疗
|
||||||
*/
|
*/
|
||||||
private void handService(List<AdviceSaveDto> activityList, Date curDate, String adviceOpType, Long organizationId,
|
private void handService(List<AdviceSaveDto> activityList, Date curDate, String adviceOpType, Long organizationId,
|
||||||
String signCode) {
|
String signCode) {
|
||||||
// 当前登录账号的科室id
|
// 当前登录账号的科室id
|
||||||
Long orgId = SecurityUtils.getLoginUser().getOrgId();
|
Long orgId = SecurityUtils.getLoginUser().getOrgId();
|
||||||
// 保存操作
|
// 保存操作
|
||||||
@@ -706,11 +598,11 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
|
|||||||
ChargeItem chargeItem;
|
ChargeItem chargeItem;
|
||||||
// 新增 + 修改
|
// 新增 + 修改
|
||||||
List<AdviceSaveDto> insertOrUpdateList =
|
List<AdviceSaveDto> insertOrUpdateList =
|
||||||
activityList.stream().filter(e -> (DbOpType.INSERT.getCode().equals(e.getDbOpType())
|
activityList.stream().filter(e -> (DbOpType.INSERT.getCode().equals(e.getDbOpType())
|
||||||
|| DbOpType.UPDATE.getCode().equals(e.getDbOpType()))).collect(Collectors.toList());
|
|| DbOpType.UPDATE.getCode().equals(e.getDbOpType()))).collect(Collectors.toList());
|
||||||
// 删除
|
// 删除
|
||||||
List<AdviceSaveDto> deleteList = activityList.stream()
|
List<AdviceSaveDto> deleteList = activityList.stream()
|
||||||
.filter(e -> DbOpType.DELETE.getCode().equals(e.getDbOpType())).collect(Collectors.toList());
|
.filter(e -> DbOpType.DELETE.getCode().equals(e.getDbOpType())).collect(Collectors.toList());
|
||||||
// 校验删除的医嘱是否已经收费
|
// 校验删除的医嘱是否已经收费
|
||||||
List<Long> delRequestIdList = deleteList.stream().map(AdviceSaveDto::getRequestId).collect(Collectors.toList());
|
List<Long> delRequestIdList = deleteList.stream().map(AdviceSaveDto::getRequestId).collect(Collectors.toList());
|
||||||
if (!delRequestIdList.isEmpty()) {
|
if (!delRequestIdList.isEmpty()) {
|
||||||
@@ -726,10 +618,10 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
|
|||||||
for (AdviceSaveDto adviceSaveDto : deleteList) {
|
for (AdviceSaveDto adviceSaveDto : deleteList) {
|
||||||
iServiceRequestService.removeById(adviceSaveDto.getRequestId());// 删除诊疗
|
iServiceRequestService.removeById(adviceSaveDto.getRequestId());// 删除诊疗
|
||||||
iServiceRequestService.remove(
|
iServiceRequestService.remove(
|
||||||
new LambdaQueryWrapper<ServiceRequest>().eq(ServiceRequest::getParentId, adviceSaveDto.getRequestId()));// 删除诊疗套餐对应的子项
|
new LambdaQueryWrapper<ServiceRequest>().eq(ServiceRequest::getParentId, adviceSaveDto.getRequestId()));// 删除诊疗套餐对应的子项
|
||||||
// 删除费用项
|
// 删除费用项
|
||||||
iChargeItemService.deleteByServiceTableAndId(CommonConstants.TableName.WOR_SERVICE_REQUEST,
|
iChargeItemService.deleteByServiceTableAndId(CommonConstants.TableName.WOR_SERVICE_REQUEST,
|
||||||
adviceSaveDto.getRequestId());
|
adviceSaveDto.getRequestId());
|
||||||
}
|
}
|
||||||
|
|
||||||
for (AdviceSaveDto adviceSaveDto : insertOrUpdateList) {
|
for (AdviceSaveDto adviceSaveDto : insertOrUpdateList) {
|
||||||
@@ -742,6 +634,7 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
|
|||||||
// 只有保存时才处理的字段属性
|
// 只有保存时才处理的字段属性
|
||||||
if (is_save) {
|
if (is_save) {
|
||||||
serviceRequest.setBusNo(assignSeqUtil.getSeqByDay(AssignSeqEnum.SERVICE_RES_NO.getPrefix(), 4));
|
serviceRequest.setBusNo(assignSeqUtil.getSeqByDay(AssignSeqEnum.SERVICE_RES_NO.getPrefix(), 4));
|
||||||
|
serviceRequest.setGenerateSourceEnum(GenerateSource.DOCTOR_PRESCRIPTION.getValue()); // 生成来源
|
||||||
serviceRequest.setQuantity(adviceSaveDto.getQuantity()); // 请求数量
|
serviceRequest.setQuantity(adviceSaveDto.getQuantity()); // 请求数量
|
||||||
serviceRequest.setUnitCode(adviceSaveDto.getUnitCode()); // 请求单位编码
|
serviceRequest.setUnitCode(adviceSaveDto.getUnitCode()); // 请求单位编码
|
||||||
|
|
||||||
@@ -767,6 +660,7 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
|
|||||||
chargeItem.setId(adviceSaveDto.getChargeItemId()); // 费用项id
|
chargeItem.setId(adviceSaveDto.getChargeItemId()); // 费用项id
|
||||||
chargeItem.setStatusEnum(ChargeItemStatus.DRAFT.getValue()); // 收费状态
|
chargeItem.setStatusEnum(ChargeItemStatus.DRAFT.getValue()); // 收费状态
|
||||||
chargeItem.setBusNo(AssignSeqEnum.CHARGE_ITEM_NO.getPrefix().concat(serviceRequest.getBusNo()));
|
chargeItem.setBusNo(AssignSeqEnum.CHARGE_ITEM_NO.getPrefix().concat(serviceRequest.getBusNo()));
|
||||||
|
chargeItem.setGenerateSourceEnum(GenerateSource.DOCTOR_PRESCRIPTION.getValue()); // 生成来源
|
||||||
chargeItem.setPatientId(adviceSaveDto.getPatientId()); // 患者
|
chargeItem.setPatientId(adviceSaveDto.getPatientId()); // 患者
|
||||||
chargeItem.setContextEnum(adviceSaveDto.getAdviceType()); // 类型
|
chargeItem.setContextEnum(adviceSaveDto.getAdviceType()); // 类型
|
||||||
chargeItem.setEncounterId(adviceSaveDto.getEncounterId()); // 就诊id
|
chargeItem.setEncounterId(adviceSaveDto.getEncounterId()); // 就诊id
|
||||||
@@ -792,7 +686,7 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
|
|||||||
// 第一次保存时,处理诊疗套餐的子项信息
|
// 第一次保存时,处理诊疗套餐的子项信息
|
||||||
if (adviceSaveDto.getRequestId() == null) {
|
if (adviceSaveDto.getRequestId() == null) {
|
||||||
ActivityDefinition activityDefinition =
|
ActivityDefinition activityDefinition =
|
||||||
iActivityDefinitionService.getById(adviceSaveDto.getAdviceDefinitionId());
|
iActivityDefinitionService.getById(adviceSaveDto.getAdviceDefinitionId());
|
||||||
String childrenJson = activityDefinition.getChildrenJson();
|
String childrenJson = activityDefinition.getChildrenJson();
|
||||||
if (childrenJson != null) {
|
if (childrenJson != null) {
|
||||||
// 诊疗子项参数类
|
// 诊疗子项参数类
|
||||||
@@ -813,8 +707,21 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
|
|||||||
// 发送跨系统申请
|
// 发送跨系统申请
|
||||||
adviceSaveDto.setRequestId(serviceRequest.getId());
|
adviceSaveDto.setRequestId(serviceRequest.getId());
|
||||||
try {
|
try {
|
||||||
doctorStationSendApplyUtil.sendCrossSystemApply(adviceSaveDto, organizationId, curDate);
|
// 查询诊疗定义
|
||||||
|
ActivityDefinition activityDefinition =
|
||||||
|
iActivityDefinitionService.getById(adviceSaveDto.getAdviceDefinitionId());
|
||||||
|
if (activityDefinition != null) {
|
||||||
|
// 检验 或 检查
|
||||||
|
if (ActivityType.PROOF.getValue().equals(activityDefinition.getTypeEnum())
|
||||||
|
|| ActivityType.TEST.getValue().equals(activityDefinition.getTypeEnum())) {
|
||||||
|
doctorStationSendApplyUtil.sendCrossSystemApply(adviceSaveDto, organizationId, curDate);
|
||||||
|
}
|
||||||
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
if (!Whether.YES.getCode()
|
||||||
|
.equals(TenantOptionUtil.getOptionContent(TenantOptionDict.LIS_PACS_ERROR_IGNORE))) {
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
log.error(e.getMessage(), e);
|
log.error(e.getMessage(), e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -833,21 +740,22 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
|
|||||||
Long practitionerId = SecurityUtils.getLoginUser().getPractitionerId();
|
Long practitionerId = SecurityUtils.getLoginUser().getPractitionerId();
|
||||||
// 医嘱请求数据
|
// 医嘱请求数据
|
||||||
List<RequestBaseDto> requestBaseInfo = doctorStationAdviceAppMapper.getRequestBaseInfo(encounterId, null,
|
List<RequestBaseDto> requestBaseInfo = doctorStationAdviceAppMapper.getRequestBaseInfo(encounterId, null,
|
||||||
CommonConstants.TableName.MED_MEDICATION_REQUEST, CommonConstants.TableName.WOR_DEVICE_REQUEST,
|
CommonConstants.TableName.MED_MEDICATION_REQUEST, CommonConstants.TableName.WOR_DEVICE_REQUEST,
|
||||||
CommonConstants.TableName.WOR_SERVICE_REQUEST, practitionerId, Whether.NO.getCode());
|
CommonConstants.TableName.WOR_SERVICE_REQUEST, practitionerId, Whether.NO.getCode(),
|
||||||
|
GenerateSource.DOCTOR_PRESCRIPTION.getValue());
|
||||||
for (RequestBaseDto requestBaseDto : requestBaseInfo) {
|
for (RequestBaseDto requestBaseDto : requestBaseInfo) {
|
||||||
// 请求状态
|
// 请求状态
|
||||||
requestBaseDto
|
requestBaseDto
|
||||||
.setStatusEnum_enumText(EnumUtils.getInfoByValue(RequestStatus.class, requestBaseDto.getStatusEnum()));
|
.setStatusEnum_enumText(EnumUtils.getInfoByValue(RequestStatus.class, requestBaseDto.getStatusEnum()));
|
||||||
// 是否皮试
|
// 是否皮试
|
||||||
requestBaseDto
|
requestBaseDto
|
||||||
.setSkinTestFlag_enumText(EnumUtils.getInfoByValue(Whether.class, requestBaseDto.getSkinTestFlag()));
|
.setSkinTestFlag_enumText(EnumUtils.getInfoByValue(Whether.class, requestBaseDto.getSkinTestFlag()));
|
||||||
// 是否为注射药物
|
// 是否为注射药物
|
||||||
requestBaseDto
|
requestBaseDto
|
||||||
.setInjectFlag_enumText(EnumUtils.getInfoByValue(Whether.class, requestBaseDto.getInjectFlag()));
|
.setInjectFlag_enumText(EnumUtils.getInfoByValue(Whether.class, requestBaseDto.getInjectFlag()));
|
||||||
// 收费状态
|
// 收费状态
|
||||||
requestBaseDto.setChargeStatus_enumText(
|
requestBaseDto.setChargeStatus_enumText(
|
||||||
EnumUtils.getInfoByValue(ChargeItemStatus.class, requestBaseDto.getChargeStatus()));
|
EnumUtils.getInfoByValue(ChargeItemStatus.class, requestBaseDto.getChargeStatus()));
|
||||||
}
|
}
|
||||||
return R.ok(requestBaseInfo);
|
return R.ok(requestBaseInfo);
|
||||||
}
|
}
|
||||||
@@ -905,7 +813,7 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
|
|||||||
/**
|
/**
|
||||||
* 查询历史医嘱请求数据
|
* 查询历史医嘱请求数据
|
||||||
*
|
*
|
||||||
* @param patientId 病人id
|
* @param patientId 病人id
|
||||||
* @param encounterId 就诊id
|
* @param encounterId 就诊id
|
||||||
* @return 历史医嘱请求数据
|
* @return 历史医嘱请求数据
|
||||||
*/
|
*/
|
||||||
@@ -915,21 +823,22 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
|
|||||||
Long practitionerId = SecurityUtils.getLoginUser().getPractitionerId();
|
Long practitionerId = SecurityUtils.getLoginUser().getPractitionerId();
|
||||||
// 医嘱请求数据
|
// 医嘱请求数据
|
||||||
List<RequestBaseDto> requestBaseInfo = doctorStationAdviceAppMapper.getRequestBaseInfo(encounterId, patientId,
|
List<RequestBaseDto> requestBaseInfo = doctorStationAdviceAppMapper.getRequestBaseInfo(encounterId, patientId,
|
||||||
CommonConstants.TableName.MED_MEDICATION_REQUEST, CommonConstants.TableName.WOR_DEVICE_REQUEST,
|
CommonConstants.TableName.MED_MEDICATION_REQUEST, CommonConstants.TableName.WOR_DEVICE_REQUEST,
|
||||||
CommonConstants.TableName.WOR_SERVICE_REQUEST, practitionerId, Whether.YES.getCode());
|
CommonConstants.TableName.WOR_SERVICE_REQUEST, practitionerId, Whether.YES.getCode(),
|
||||||
|
GenerateSource.DOCTOR_PRESCRIPTION.getValue());
|
||||||
for (RequestBaseDto requestBaseDto : requestBaseInfo) {
|
for (RequestBaseDto requestBaseDto : requestBaseInfo) {
|
||||||
// 请求状态
|
// 请求状态
|
||||||
requestBaseDto
|
requestBaseDto
|
||||||
.setStatusEnum_enumText(EnumUtils.getInfoByValue(RequestStatus.class, requestBaseDto.getStatusEnum()));
|
.setStatusEnum_enumText(EnumUtils.getInfoByValue(RequestStatus.class, requestBaseDto.getStatusEnum()));
|
||||||
// 是否皮试
|
// 是否皮试
|
||||||
requestBaseDto
|
requestBaseDto
|
||||||
.setSkinTestFlag_enumText(EnumUtils.getInfoByValue(Whether.class, requestBaseDto.getSkinTestFlag()));
|
.setSkinTestFlag_enumText(EnumUtils.getInfoByValue(Whether.class, requestBaseDto.getSkinTestFlag()));
|
||||||
// 是否为注射药物
|
// 是否为注射药物
|
||||||
requestBaseDto
|
requestBaseDto
|
||||||
.setInjectFlag_enumText(EnumUtils.getInfoByValue(Whether.class, requestBaseDto.getInjectFlag()));
|
.setInjectFlag_enumText(EnumUtils.getInfoByValue(Whether.class, requestBaseDto.getInjectFlag()));
|
||||||
// 收费状态
|
// 收费状态
|
||||||
requestBaseDto.setChargeStatus_enumText(
|
requestBaseDto.setChargeStatus_enumText(
|
||||||
EnumUtils.getInfoByValue(ChargeItemStatus.class, requestBaseDto.getChargeStatus()));
|
EnumUtils.getInfoByValue(ChargeItemStatus.class, requestBaseDto.getChargeStatus()));
|
||||||
}
|
}
|
||||||
return R.ok(requestBaseInfo);
|
return R.ok(requestBaseInfo);
|
||||||
}
|
}
|
||||||
@@ -944,7 +853,7 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
|
|||||||
public void updateGroupId(UpdateGroupIdParam updateGroupIdParam) {
|
public void updateGroupId(UpdateGroupIdParam updateGroupIdParam) {
|
||||||
List<UpdateGroupDto> groupList = updateGroupIdParam.getGroupList();
|
List<UpdateGroupDto> groupList = updateGroupIdParam.getGroupList();
|
||||||
List<Long> idsToSetNull = groupList.stream().filter(dto -> dto.getGroupId() == null)
|
List<Long> idsToSetNull = groupList.stream().filter(dto -> dto.getGroupId() == null)
|
||||||
.map(UpdateGroupDto::getRequestId).collect(Collectors.toList());
|
.map(UpdateGroupDto::getRequestId).collect(Collectors.toList());
|
||||||
|
|
||||||
if (!idsToSetNull.isEmpty()) {
|
if (!idsToSetNull.isEmpty()) {
|
||||||
// 创建更新条件
|
// 创建更新条件
|
||||||
@@ -957,8 +866,8 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
|
|||||||
|
|
||||||
// 处理非null的情况
|
// 处理非null的情况
|
||||||
List<MedicationRequest> medicationRequestList = groupList.stream().filter(dto -> dto.getGroupId() != null)
|
List<MedicationRequest> medicationRequestList = groupList.stream().filter(dto -> dto.getGroupId() != null)
|
||||||
.map(dto -> new MedicationRequest().setId(dto.getRequestId()).setGroupId(dto.getGroupId()))
|
.map(dto -> new MedicationRequest().setId(dto.getRequestId()).setGroupId(dto.getGroupId()))
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
if (!medicationRequestList.isEmpty()) {
|
if (!medicationRequestList.isEmpty()) {
|
||||||
iMedicationRequestService.saveOrUpdateBatch(medicationRequestList);
|
iMedicationRequestService.saveOrUpdateBatch(medicationRequestList);
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ import com.core.common.core.domain.R;
|
|||||||
import com.core.common.utils.AssignSeqUtil;
|
import com.core.common.utils.AssignSeqUtil;
|
||||||
import com.core.common.utils.MessageUtils;
|
import com.core.common.utils.MessageUtils;
|
||||||
import com.core.common.utils.SecurityUtils;
|
import com.core.common.utils.SecurityUtils;
|
||||||
|
import com.core.common.utils.StringUtils;
|
||||||
import com.openhis.administration.domain.ChargeItem;
|
import com.openhis.administration.domain.ChargeItem;
|
||||||
import com.openhis.administration.domain.EncounterDiagnosis;
|
import com.openhis.administration.domain.EncounterDiagnosis;
|
||||||
import com.openhis.administration.service.IChargeItemService;
|
import com.openhis.administration.service.IChargeItemService;
|
||||||
@@ -272,6 +273,11 @@ public class DoctorStationChineseMedicalAppServiceImpl implements IDoctorStation
|
|||||||
Long orgId = SecurityUtils.getLoginUser().getOrgId();
|
Long orgId = SecurityUtils.getLoginUser().getOrgId();
|
||||||
// 患者挂号对应的科室id
|
// 患者挂号对应的科室id
|
||||||
Long organizationId = adviceSaveParam.getOrganizationId();
|
Long organizationId = adviceSaveParam.getOrganizationId();
|
||||||
|
// 是否代煎
|
||||||
|
Integer sufferingFlag = adviceSaveParam.getSufferingFlag();
|
||||||
|
// 中药代煎定义id
|
||||||
|
Long sufferingDefinitionId =
|
||||||
|
iActivityDefinitionService.getAppointActivityDefinitionId(CommonConstants.BusinessName.SUFFERING_TCM);
|
||||||
// 保存时,校验库存
|
// 保存时,校验库存
|
||||||
if (is_save) {
|
if (is_save) {
|
||||||
List<AdviceSaveDto> needCheckList = medicineList.stream()
|
List<AdviceSaveDto> needCheckList = medicineList.stream()
|
||||||
@@ -300,9 +306,12 @@ public class DoctorStationChineseMedicalAppServiceImpl implements IDoctorStation
|
|||||||
// 删除费用项
|
// 删除费用项
|
||||||
iChargeItemService.deleteByServiceTableAndId(CommonConstants.TableName.MED_MEDICATION_REQUEST,
|
iChargeItemService.deleteByServiceTableAndId(CommonConstants.TableName.MED_MEDICATION_REQUEST,
|
||||||
adviceSaveDto.getRequestId());
|
adviceSaveDto.getRequestId());
|
||||||
|
// 删除代煎费
|
||||||
|
iChargeItemService.remove(new LambdaQueryWrapper<ChargeItem>()
|
||||||
|
.eq(ChargeItem::getPrescriptionNo, adviceSaveDto.getPrescriptionNo())
|
||||||
|
.eq(ChargeItem::getProductId, sufferingDefinitionId));
|
||||||
|
|
||||||
}
|
}
|
||||||
// 是否代煎
|
|
||||||
Integer sufferingFlag = adviceSaveParam.getSufferingFlag();
|
|
||||||
|
|
||||||
if (is_sign) {
|
if (is_sign) {
|
||||||
// 按groupId分组
|
// 按groupId分组
|
||||||
@@ -310,9 +319,16 @@ public class DoctorStationChineseMedicalAppServiceImpl implements IDoctorStation
|
|||||||
insertOrUpdateList.stream().collect(Collectors.groupingBy(AdviceSaveDto::getGroupId));
|
insertOrUpdateList.stream().collect(Collectors.groupingBy(AdviceSaveDto::getGroupId));
|
||||||
// 为每个分组生成唯一的处方号
|
// 为每个分组生成唯一的处方号
|
||||||
groupMap.forEach((groupId, groupList) -> {
|
groupMap.forEach((groupId, groupList) -> {
|
||||||
String prescriptionNo =
|
// 先查询当前groupId是否已经被签发生成过处方号
|
||||||
assignSeqUtil.getSeq(AssignSeqEnum.PRESCRIPTION_CHINESE_HERBAL_MEDICINE.getPrefix(), 8);
|
List<MedicationRequest> list = iMedicationRequestService
|
||||||
groupList.forEach(dto -> dto.setPrescriptionNo(prescriptionNo));
|
.list(new LambdaQueryWrapper<MedicationRequest>().eq(MedicationRequest::getGroupId, groupId));
|
||||||
|
if (!list.isEmpty() && StringUtils.isNotEmpty(list.get(0).getPrescriptionNo())) {
|
||||||
|
groupList.forEach(dto -> dto.setPrescriptionNo(list.get(0).getPrescriptionNo()));
|
||||||
|
} else {
|
||||||
|
String prescriptionNo =
|
||||||
|
assignSeqUtil.getSeq(AssignSeqEnum.PRESCRIPTION_CHINESE_HERBAL_MEDICINE.getPrefix(), 8);
|
||||||
|
groupList.forEach(dto -> dto.setPrescriptionNo(prescriptionNo));
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -326,13 +342,14 @@ public class DoctorStationChineseMedicalAppServiceImpl implements IDoctorStation
|
|||||||
medicationRequest.setId(adviceSaveDto.getRequestId()); // 主键id
|
medicationRequest.setId(adviceSaveDto.getRequestId()); // 主键id
|
||||||
medicationRequest.setStatusEnum(is_save ? RequestStatus.DRAFT.getValue() : RequestStatus.ACTIVE.getValue()); // 请求状态
|
medicationRequest.setStatusEnum(is_save ? RequestStatus.DRAFT.getValue() : RequestStatus.ACTIVE.getValue()); // 请求状态
|
||||||
if (is_sign) {
|
if (is_sign) {
|
||||||
medicationRequest.setGroupId(adviceSaveDto.getGroupId()); // 组号
|
|
||||||
medicationRequest.setPrescriptionNo(adviceSaveDto.getPrescriptionNo()); // 处方号
|
medicationRequest.setPrescriptionNo(adviceSaveDto.getPrescriptionNo()); // 处方号
|
||||||
medicationRequest.setSignCode(signCode);
|
medicationRequest.setSignCode(signCode);
|
||||||
}
|
}
|
||||||
// 只有保存时才处理的字段属性
|
// 保存时,处理数据(请求,发放,账单)
|
||||||
if (is_save) {
|
if (is_save) {
|
||||||
medicationRequest.setBusNo(assignSeqUtil.getSeq(AssignSeqEnum.MEDICATION_RES_NO.getPrefix(), 4));
|
medicationRequest.setBusNo(assignSeqUtil.getSeqByDay(AssignSeqEnum.MEDICATION_RES_NO.getPrefix(), 4));
|
||||||
|
medicationRequest.setGenerateSourceEnum(GenerateSource.DOCTOR_PRESCRIPTION.getValue()); // 生成来源
|
||||||
|
medicationRequest.setGroupId(adviceSaveDto.getGroupId()); // 组号
|
||||||
medicationRequest.setChineseHerbsDoseQuantity(chineseHerbsDoseQuantity); // 中药付数
|
medicationRequest.setChineseHerbsDoseQuantity(chineseHerbsDoseQuantity); // 中药付数
|
||||||
medicationRequest.setSufferingFlag(sufferingFlag); // 代煎标识
|
medicationRequest.setSufferingFlag(sufferingFlag); // 代煎标识
|
||||||
medicationRequest.setQuantity(adviceSaveDto.getQuantity().multiply(chineseHerbsDoseQuantity)); // 请求数量
|
medicationRequest.setQuantity(adviceSaveDto.getQuantity().multiply(chineseHerbsDoseQuantity)); // 请求数量
|
||||||
@@ -357,16 +374,20 @@ public class DoctorStationChineseMedicalAppServiceImpl implements IDoctorStation
|
|||||||
// medicationRequest.setDispensePerDuration(adviceSaveDto.getDispensePerDuration()); // 每次发药供应天数
|
// medicationRequest.setDispensePerDuration(adviceSaveDto.getDispensePerDuration()); // 每次发药供应天数
|
||||||
medicationRequest.setContentJson(adviceSaveDto.getContentJson()); // 请求内容json
|
medicationRequest.setContentJson(adviceSaveDto.getContentJson()); // 请求内容json
|
||||||
medicationRequest.setYbClassEnum(adviceSaveDto.getYbClassEnum());// 类别医保编码
|
medicationRequest.setYbClassEnum(adviceSaveDto.getYbClassEnum());// 类别医保编码
|
||||||
|
medicationRequest.setDosageInstruction(adviceSaveDto.getDosageInstruction()); // 用药说明 , 即煎法
|
||||||
}
|
}
|
||||||
iMedicationRequestService.saveOrUpdate(medicationRequest);
|
iMedicationRequestService.saveOrUpdate(medicationRequest);
|
||||||
if (is_save) {
|
if (is_save) {
|
||||||
// 处理药品发放
|
// 处理药品发放
|
||||||
iMedicationDispenseService.handleMedicationDispense(medicationRequest, adviceSaveDto.getDbOpType());
|
Long dispenseId =
|
||||||
|
iMedicationDispenseService.handleMedicationDispense(medicationRequest, adviceSaveDto.getDbOpType());
|
||||||
|
|
||||||
// 保存药品费用项
|
// 保存药品费用项
|
||||||
chargeItem = new ChargeItem();
|
chargeItem = new ChargeItem();
|
||||||
chargeItem.setId(adviceSaveDto.getChargeItemId()); // 费用项id
|
chargeItem.setId(adviceSaveDto.getChargeItemId()); // 费用项id
|
||||||
chargeItem.setStatusEnum(ChargeItemStatus.DRAFT.getValue()); // 默认-草稿
|
chargeItem.setStatusEnum(ChargeItemStatus.DRAFT.getValue()); // 默认-草稿
|
||||||
chargeItem.setBusNo(AssignSeqEnum.CHARGE_ITEM_NO.getPrefix().concat(medicationRequest.getBusNo()));
|
chargeItem.setBusNo(AssignSeqEnum.CHARGE_ITEM_NO.getPrefix().concat(medicationRequest.getBusNo()));
|
||||||
|
chargeItem.setGenerateSourceEnum(GenerateSource.DOCTOR_PRESCRIPTION.getValue()); // 生成来源
|
||||||
chargeItem.setPrescriptionNo(adviceSaveDto.getPrescriptionNo()); // 处方号
|
chargeItem.setPrescriptionNo(adviceSaveDto.getPrescriptionNo()); // 处方号
|
||||||
chargeItem.setPatientId(adviceSaveDto.getPatientId()); // 患者
|
chargeItem.setPatientId(adviceSaveDto.getPatientId()); // 患者
|
||||||
chargeItem.setContextEnum(adviceSaveDto.getAdviceType()); // 类型
|
chargeItem.setContextEnum(adviceSaveDto.getAdviceType()); // 类型
|
||||||
@@ -383,14 +404,14 @@ public class DoctorStationChineseMedicalAppServiceImpl implements IDoctorStation
|
|||||||
chargeItem.setAccountId(adviceSaveDto.getAccountId());// 关联账户ID
|
chargeItem.setAccountId(adviceSaveDto.getAccountId());// 关联账户ID
|
||||||
chargeItem.setConditionId(adviceSaveDto.getConditionId()); // 诊断id
|
chargeItem.setConditionId(adviceSaveDto.getConditionId()); // 诊断id
|
||||||
chargeItem.setEncounterDiagnosisId(adviceSaveDto.getEncounterDiagnosisId()); // 就诊诊断id
|
chargeItem.setEncounterDiagnosisId(adviceSaveDto.getEncounterDiagnosisId()); // 就诊诊断id
|
||||||
|
// chargeItem.setDispenseId(dispenseId); // 发放ID
|
||||||
|
|
||||||
chargeItem.setQuantityValue(medicationRequest.getQuantity()); // 数量
|
chargeItem.setQuantityValue(medicationRequest.getQuantity()); // 数量
|
||||||
chargeItem.setQuantityUnit(medicationRequest.getUnitCode()); // 单位
|
chargeItem.setQuantityUnit(medicationRequest.getUnitCode()); // 单位
|
||||||
chargeItem.setUnitPrice(adviceSaveDto.getUnitPrice()); // 单价
|
chargeItem.setUnitPrice(adviceSaveDto.getUnitPrice()); // 单价
|
||||||
// 计算总价,保留4位小数
|
// 计算总价,保留6位小数
|
||||||
BigDecimal qty = chargeItem.getQuantityValue();
|
BigDecimal qty = chargeItem.getQuantityValue();
|
||||||
chargeItem.setTotalPrice(qty.multiply(chargeItem.getUnitPrice()).setScale(4, RoundingMode.HALF_UP)); // 总价
|
chargeItem.setTotalPrice(qty.multiply(chargeItem.getUnitPrice()).setScale(6, RoundingMode.HALF_UP)); // 总价
|
||||||
chargeItem.setTotalPrice(adviceSaveDto.getTotalPrice()); // 总价
|
|
||||||
|
|
||||||
chargeItem.setTcmFlag(Whether.YES.getValue());// 中医标识
|
chargeItem.setTcmFlag(Whether.YES.getValue());// 中医标识
|
||||||
iChargeItemService.saveOrUpdate(chargeItem);
|
iChargeItemService.saveOrUpdate(chargeItem);
|
||||||
@@ -406,61 +427,63 @@ public class DoctorStationChineseMedicalAppServiceImpl implements IDoctorStation
|
|||||||
Long conditionId = medicineList.get(0).getConditionId();
|
Long conditionId = medicineList.get(0).getConditionId();
|
||||||
// 就诊诊断id
|
// 就诊诊断id
|
||||||
Long encounterDiagnosisId = medicineList.get(0).getEncounterDiagnosisId();
|
Long encounterDiagnosisId = medicineList.get(0).getEncounterDiagnosisId();
|
||||||
// 中药代煎定义id
|
// 中药付数
|
||||||
Long sufferingDefinitionId =
|
BigDecimal chineseHerbsDoseQuantity = medicineList.get(0).getChineseHerbsDoseQuantity();
|
||||||
iActivityDefinitionService.getAppointActivityDefinitionId(CommonConstants.BusinessName.SUFFERING_TCM);
|
// 处方号
|
||||||
// 签发时,生成中药代煎的账单,只生成一次
|
String prescriptionNo = insertOrUpdateList.get(0).getPrescriptionNo();
|
||||||
|
|
||||||
|
// 签发时,生成中药代煎的账单
|
||||||
if (Whether.YES.getValue().equals(sufferingFlag) && is_sign) {
|
if (Whether.YES.getValue().equals(sufferingFlag) && is_sign) {
|
||||||
BigDecimal quantity = new BigDecimal("1"); // 请求数量
|
BigDecimal quantity = chineseHerbsDoseQuantity; // 请求数量
|
||||||
|
|
||||||
AdviceBaseDto adviceBaseDto = new AdviceBaseDto();
|
AdviceBaseDto adviceBaseDto = new AdviceBaseDto();
|
||||||
adviceBaseDto.setAdviceDefinitionId(sufferingDefinitionId); // 医嘱定义id
|
adviceBaseDto.setAdviceDefinitionId(sufferingDefinitionId); // 医嘱定义id
|
||||||
// 当前是否已经生成了贵代煎账单
|
|
||||||
ChargeItem one = iChargeItemService.getOne(new LambdaQueryWrapper<ChargeItem>()
|
|
||||||
.eq(ChargeItem::getEncounterId, encounterId).eq(ChargeItem::getProductId, sufferingDefinitionId));
|
|
||||||
if (one == null) {
|
|
||||||
// 对应的诊疗医嘱信息
|
|
||||||
AdviceBaseDto activityAdviceBaseDto =
|
|
||||||
iDoctorStationAdviceAppService.getAdviceBaseInfo(adviceBaseDto, null, null, null, organizationId, 1,
|
|
||||||
1, Whether.NO.getValue(), List.of(1, 2, 3)).getRecords().get(0);
|
|
||||||
if (activityAdviceBaseDto != null) {
|
|
||||||
// 费用定价
|
|
||||||
AdvicePriceDto advicePriceDto = activityAdviceBaseDto.getPriceList().get(0);
|
|
||||||
if (advicePriceDto != null) {
|
|
||||||
// 生成账单
|
|
||||||
chargeItem = new ChargeItem();
|
|
||||||
chargeItem.setGenerateSourceEnum(ChargeItemGenerateSource.MEDICAL_ORDER_BINDING.getValue()); // 账单生成来源
|
|
||||||
chargeItem.setStatusEnum(ChargeItemStatus.DRAFT.getValue()); // 草稿
|
|
||||||
chargeItem.setBusNo(assignSeqUtil.getSeqByDay(AssignSeqEnum.CHARGE_ITEM_NO.getPrefix(), 4));
|
|
||||||
chargeItem.setPatientId(patientId); // 患者
|
|
||||||
chargeItem.setContextEnum(ChargeItemContext.ACTIVITY.getValue()); // 类型
|
|
||||||
chargeItem.setEncounterId(encounterId); // 就诊id
|
|
||||||
chargeItem.setDefinitionId(advicePriceDto.getDefinitionId()); // 费用定价ID
|
|
||||||
chargeItem.setEntererId(SecurityUtils.getLoginUser().getPractitionerId());// 开立人ID
|
|
||||||
chargeItem.setRequestingOrgId(orgId); // 开立科室
|
|
||||||
chargeItem.setEnteredDate(curDate); // 开立时间
|
|
||||||
chargeItem.setProductTable(activityAdviceBaseDto.getAdviceTableName());// 产品所在表
|
|
||||||
chargeItem.setProductId(activityAdviceBaseDto.getAdviceDefinitionId());// 收费项id
|
|
||||||
chargeItem.setAccountId(accountId);// 关联账户ID
|
|
||||||
chargeItem.setConditionId(conditionId); // 诊断id
|
|
||||||
chargeItem.setEncounterDiagnosisId(encounterDiagnosisId); // 就诊诊断id
|
|
||||||
|
|
||||||
chargeItem.setQuantityValue(quantity); // 数量
|
// 先删除中药代煎的账单
|
||||||
chargeItem.setQuantityUnit(activityAdviceBaseDto.getUnitCode()); // 单位
|
iChargeItemService.remove(new LambdaQueryWrapper<ChargeItem>()
|
||||||
chargeItem.setUnitPrice(advicePriceDto.getPrice()); // 单价
|
.eq(ChargeItem::getPrescriptionNo, prescriptionNo).eq(ChargeItem::getProductId, sufferingDefinitionId));
|
||||||
// 计算总价,保留4位小数
|
|
||||||
BigDecimal qty = quantity;
|
// 对应的诊疗医嘱信息
|
||||||
chargeItem
|
AdviceBaseDto activityAdviceBaseDto = iDoctorStationAdviceAppService.getAdviceBaseInfo(adviceBaseDto, null,
|
||||||
.setTotalPrice(qty.multiply(advicePriceDto.getPrice()).setScale(4, RoundingMode.HALF_UP)); // 总价
|
null, null, organizationId, 1, 1, Whether.NO.getValue(), List.of(3)).getRecords().get(0);
|
||||||
chargeItem.setTcmFlag(Whether.YES.getValue());// 中医标识
|
if (activityAdviceBaseDto != null) {
|
||||||
iChargeItemService.save(chargeItem);
|
// 费用定价
|
||||||
}
|
AdvicePriceDto advicePriceDto = activityAdviceBaseDto.getPriceList().get(0);
|
||||||
|
if (advicePriceDto != null) {
|
||||||
|
// 生成账单
|
||||||
|
chargeItem = new ChargeItem();
|
||||||
|
chargeItem.setGenerateSourceEnum(GenerateSource.DOCTOR_PRESCRIPTION.getValue()); // 生成来源
|
||||||
|
chargeItem.setPrescriptionNo(prescriptionNo); // 处方号
|
||||||
|
chargeItem.setStatusEnum(ChargeItemStatus.PLANNED.getValue()); // 收费状态
|
||||||
|
chargeItem.setBusNo(assignSeqUtil.getSeqByDay(AssignSeqEnum.CHARGE_ITEM_NO.getPrefix(), 4));
|
||||||
|
chargeItem.setGenerateSourceEnum(GenerateSource.DOCTOR_PRESCRIPTION.getValue()); // 生成来源
|
||||||
|
chargeItem.setPatientId(patientId); // 患者
|
||||||
|
chargeItem.setContextEnum(ChargeItemContext.ACTIVITY.getValue()); // 类型
|
||||||
|
chargeItem.setEncounterId(encounterId); // 就诊id
|
||||||
|
chargeItem.setDefinitionId(advicePriceDto.getDefinitionId()); // 费用定价ID
|
||||||
|
chargeItem.setEntererId(SecurityUtils.getLoginUser().getPractitionerId());// 开立人ID
|
||||||
|
chargeItem.setRequestingOrgId(orgId); // 开立科室
|
||||||
|
chargeItem.setEnteredDate(curDate); // 开立时间
|
||||||
|
chargeItem.setProductTable(activityAdviceBaseDto.getAdviceTableName());// 产品所在表
|
||||||
|
chargeItem.setProductId(activityAdviceBaseDto.getAdviceDefinitionId());// 收费项id
|
||||||
|
chargeItem.setAccountId(accountId);// 关联账户ID
|
||||||
|
chargeItem.setConditionId(conditionId); // 诊断id
|
||||||
|
chargeItem.setEncounterDiagnosisId(encounterDiagnosisId); // 就诊诊断id
|
||||||
|
|
||||||
|
chargeItem.setQuantityValue(quantity); // 数量
|
||||||
|
chargeItem.setQuantityUnit(activityAdviceBaseDto.getUnitCode()); // 单位
|
||||||
|
chargeItem.setUnitPrice(advicePriceDto.getPrice()); // 单价
|
||||||
|
// 计算总价,保留6位小数
|
||||||
|
BigDecimal qty = quantity;
|
||||||
|
chargeItem.setTotalPrice(qty.multiply(advicePriceDto.getPrice()).setScale(6, RoundingMode.HALF_UP)); // 总价
|
||||||
|
chargeItem.setTcmFlag(Whether.YES.getValue());// 中医标识
|
||||||
|
iChargeItemService.save(chargeItem);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (Whether.NO.getValue().equals(sufferingFlag)) {
|
} else if (Whether.NO.getValue().equals(sufferingFlag)) {
|
||||||
// 删除中药代煎的账单
|
// 删除中药代煎的账单
|
||||||
iChargeItemService.remove(new LambdaQueryWrapper<ChargeItem>().eq(ChargeItem::getEncounterId, encounterId)
|
iChargeItemService.remove(new LambdaQueryWrapper<ChargeItem>()
|
||||||
.eq(ChargeItem::getProductId, sufferingDefinitionId));
|
.eq(ChargeItem::getPrescriptionNo, prescriptionNo).eq(ChargeItem::getProductId, sufferingDefinitionId));
|
||||||
}
|
}
|
||||||
|
|
||||||
// 签发时,把草稿状态的账单更新为待收费[中医]
|
// 签发时,把草稿状态的账单更新为待收费[中医]
|
||||||
@@ -491,7 +514,8 @@ public class DoctorStationChineseMedicalAppServiceImpl implements IDoctorStation
|
|||||||
// 医嘱请求数据
|
// 医嘱请求数据
|
||||||
List<RequestBaseDto> requestBaseInfo = doctorStationChineseMedicalAppMapper.getTcmRequestBaseInfo(encounterId,
|
List<RequestBaseDto> requestBaseInfo = doctorStationChineseMedicalAppMapper.getTcmRequestBaseInfo(encounterId,
|
||||||
null, CommonConstants.TableName.MED_MEDICATION_REQUEST, CommonConstants.TableName.WOR_DEVICE_REQUEST,
|
null, CommonConstants.TableName.MED_MEDICATION_REQUEST, CommonConstants.TableName.WOR_DEVICE_REQUEST,
|
||||||
CommonConstants.TableName.WOR_SERVICE_REQUEST, practitionerId, Whether.NO.getCode());
|
CommonConstants.TableName.WOR_SERVICE_REQUEST, practitionerId, Whether.NO.getCode(),
|
||||||
|
GenerateSource.DOCTOR_PRESCRIPTION.getValue());
|
||||||
for (RequestBaseDto requestBaseDto : requestBaseInfo) {
|
for (RequestBaseDto requestBaseDto : requestBaseInfo) {
|
||||||
// 请求状态
|
// 请求状态
|
||||||
requestBaseDto
|
requestBaseDto
|
||||||
@@ -515,10 +539,10 @@ public class DoctorStationChineseMedicalAppServiceImpl implements IDoctorStation
|
|||||||
// 当前账号的参与者id
|
// 当前账号的参与者id
|
||||||
Long practitionerId = SecurityUtils.getLoginUser().getPractitionerId();
|
Long practitionerId = SecurityUtils.getLoginUser().getPractitionerId();
|
||||||
// 医嘱请求数据
|
// 医嘱请求数据
|
||||||
List<RequestBaseDto> requestBaseInfo =
|
List<RequestBaseDto> requestBaseInfo = doctorStationChineseMedicalAppMapper.getTcmRequestHistoryInfo(
|
||||||
doctorStationChineseMedicalAppMapper.getTcmRequestHistoryInfo(encounterId, patientId,
|
encounterId, patientId, CommonConstants.TableName.MED_MEDICATION_REQUEST,
|
||||||
CommonConstants.TableName.MED_MEDICATION_REQUEST, CommonConstants.TableName.WOR_DEVICE_REQUEST,
|
CommonConstants.TableName.WOR_DEVICE_REQUEST, CommonConstants.TableName.WOR_SERVICE_REQUEST, practitionerId,
|
||||||
CommonConstants.TableName.WOR_SERVICE_REQUEST, practitionerId, Whether.YES.getCode());
|
Whether.YES.getCode(), GenerateSource.DOCTOR_PRESCRIPTION.getValue());
|
||||||
for (RequestBaseDto requestBaseDto : requestBaseInfo) {
|
for (RequestBaseDto requestBaseDto : requestBaseInfo) {
|
||||||
// 请求状态
|
// 请求状态
|
||||||
requestBaseDto
|
requestBaseDto
|
||||||
|
|||||||
@@ -32,38 +32,40 @@ public class DoctorStationAdviceController {
|
|||||||
/**
|
/**
|
||||||
* 查询医嘱信息
|
* 查询医嘱信息
|
||||||
*
|
*
|
||||||
* @param adviceBaseDto 查询条件
|
* @param adviceBaseDto 查询条件
|
||||||
* @param searchKey 模糊查询关键字
|
* @param searchKey 模糊查询关键字
|
||||||
* @param locationId 药房id
|
* @param locationId 药房id
|
||||||
* @param adviceDefinitionIdParamList 医嘱定义id参数集合
|
* @param adviceDefinitionIdParamList 医嘱定义id参数集合
|
||||||
* @param adviceTypes 医嘱类型参数集合
|
* @param adviceTypes 医嘱类型参数集合
|
||||||
* @param organizationId 患者挂号对应的科室id
|
* @param organizationId 患者挂号对应的科室id
|
||||||
* @param pageNo 当前页
|
* @param pageNo 当前页
|
||||||
* @param pageSize 每页多少条
|
* @param pageSize 每页多少条
|
||||||
* @return 医嘱信息
|
* @return 医嘱信息
|
||||||
*/
|
*/
|
||||||
@GetMapping(value = "/advice-base-info")
|
@GetMapping(value = "/advice-base-info")
|
||||||
public R<?> getAdviceBaseInfo(AdviceBaseDto adviceBaseDto,
|
public R<?> getAdviceBaseInfo(AdviceBaseDto adviceBaseDto,
|
||||||
@RequestParam(value = "searchKey", defaultValue = "") String searchKey,
|
@RequestParam(value = "searchKey", defaultValue = "") String searchKey,
|
||||||
@RequestParam(value = "locationId", required = false) Long locationId,
|
@RequestParam(value = "locationId", required = false) Long locationId,
|
||||||
@RequestParam(value = "adviceDefinitionIdParamList", required = false) List<Long> adviceDefinitionIdParamList,
|
@RequestParam(value = "adviceDefinitionIdParamList", required = false) List<Long> adviceDefinitionIdParamList,
|
||||||
@RequestParam(value = "organizationId", defaultValue = "0") Long organizationId,
|
@RequestParam(value = "organizationId", defaultValue = "0") Long organizationId,
|
||||||
@RequestParam(value = "adviceTypes", defaultValue = "1,2,3") List<Integer> adviceTypes,
|
@RequestParam(value = "adviceTypes", defaultValue = "1,2,3") List<Integer> adviceTypes,
|
||||||
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
|
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
|
||||||
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) {
|
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) {
|
||||||
return R.ok(iDoctorStationAdviceAppService.getAdviceBaseInfo(adviceBaseDto, searchKey, locationId,
|
return R.ok(iDoctorStationAdviceAppService.getAdviceBaseInfo(adviceBaseDto, searchKey, locationId,
|
||||||
adviceDefinitionIdParamList, organizationId, pageNo, pageSize, Whether.NO.getValue(), adviceTypes));
|
adviceDefinitionIdParamList, organizationId, pageNo, pageSize, Whether.NO.getValue(), adviceTypes));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询诊疗绑定耗材信息
|
* 查询医嘱绑定信息
|
||||||
*
|
*
|
||||||
* @param activityId 诊疗id
|
* @param typeCode 1:用法绑东西 2:诊疗绑东西
|
||||||
* @return 诊疗绑定耗材信息
|
* @param itemNo 用法的code 或者 诊疗定义id
|
||||||
|
* @return 医嘱绑定信息
|
||||||
*/
|
*/
|
||||||
@GetMapping(value = "/activity-bind-device-info")
|
@GetMapping(value = "/order-bind-info")
|
||||||
public R<?> getActivityBindDevice(@RequestParam(value = "activityId") Long activityId) {
|
public R<?> getOrderBindInfo(@RequestParam(value = "typeCode") String typeCode,
|
||||||
return R.ok(iDoctorStationAdviceAppService.getActivityBindDevice(activityId));
|
@RequestParam(value = "itemNo") String itemNo) {
|
||||||
|
return R.ok(iDoctorStationAdviceAppService.getOrderBindInfo(typeCode, itemNo));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -43,6 +43,14 @@ public class ActivityBindDeviceDetailDto {
|
|||||||
*/
|
*/
|
||||||
private String unitCode;
|
private String unitCode;
|
||||||
|
|
||||||
|
/** 小数量 */
|
||||||
|
private BigDecimal minUnitCodeQuantity;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 小单位
|
||||||
|
*/
|
||||||
|
private String minUnitCode;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 耗材详细信息
|
* 耗材详细信息
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -1,28 +0,0 @@
|
|||||||
package com.openhis.web.doctorstation.dto;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import com.openhis.common.annotation.Dict;
|
|
||||||
import lombok.Data;
|
|
||||||
import lombok.experimental.Accessors;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 诊疗绑定耗材 dto
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@Accessors(chain = true)
|
|
||||||
public class ActivityBindDeviceDto {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 用于搭配Dict切面,无实际业务意义
|
|
||||||
*/
|
|
||||||
@Dict(dictCode = "test_field")
|
|
||||||
private String testField;
|
|
||||||
private String testField_dictText;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 诊疗绑定耗材详情
|
|
||||||
*/
|
|
||||||
private List<ActivityBindDeviceDetailDto> activityBindDeviceInfos;
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -20,6 +20,9 @@ public class AdviceBaseDto {
|
|||||||
/** 医嘱类型 */
|
/** 医嘱类型 */
|
||||||
private Integer adviceType; // 1:药品 , 2: 耗材 , 3:项目
|
private Integer adviceType; // 1:药品 , 2: 耗材 , 3:项目
|
||||||
|
|
||||||
|
/** 编号 */
|
||||||
|
private String busNo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 医嘱详细分类
|
* 医嘱详细分类
|
||||||
*/
|
*/
|
||||||
@@ -171,4 +174,9 @@ public class AdviceBaseDto {
|
|||||||
/** 限制使用范围 */
|
/** 限制使用范围 */
|
||||||
private String restrictedScope;
|
private String restrictedScope;
|
||||||
|
|
||||||
|
/** 用药说明 */
|
||||||
|
@Dict(dictCode = "dosage_instruction")
|
||||||
|
private String dosageInstruction;
|
||||||
|
private String dosageInstruction_dictText;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import java.math.BigDecimal;
|
|||||||
import com.core.common.utils.SecurityUtils;
|
import com.core.common.utils.SecurityUtils;
|
||||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||||
|
import com.openhis.common.annotation.Dict;
|
||||||
import com.openhis.common.enums.EncounterClass;
|
import com.openhis.common.enums.EncounterClass;
|
||||||
import com.openhis.common.enums.TherapyTimeType;
|
import com.openhis.common.enums.TherapyTimeType;
|
||||||
|
|
||||||
@@ -225,6 +226,9 @@ public class AdviceSaveDto {
|
|||||||
*/
|
*/
|
||||||
private Integer sufferingFlag;
|
private Integer sufferingFlag;
|
||||||
|
|
||||||
|
/** 用药说明 */
|
||||||
|
private String dosageInstruction;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 排序号
|
* 排序号
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -0,0 +1,43 @@
|
|||||||
|
package com.openhis.web.doctorstation.dto;
|
||||||
|
|
||||||
|
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 lombok.Data;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 医嘱绑定信息 详情dto
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@Accessors(chain = true)
|
||||||
|
public class OrderBindInfoDto {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 医嘱定义id
|
||||||
|
*/
|
||||||
|
@JsonSerialize(using = ToStringSerializer.class)
|
||||||
|
private Long orderDefinitionId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 医嘱定义名称
|
||||||
|
*/
|
||||||
|
private String orderDefinitionName;
|
||||||
|
|
||||||
|
/** 数量 */
|
||||||
|
private BigDecimal quantity;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 单位code
|
||||||
|
*/
|
||||||
|
private String unitCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 单位
|
||||||
|
*/
|
||||||
|
private String unitCodeName;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -119,4 +119,9 @@ public class PatientInfoDto {
|
|||||||
*/
|
*/
|
||||||
@JsonSerialize(using = ToStringSerializer.class)
|
@JsonSerialize(using = ToStringSerializer.class)
|
||||||
private Long jzPractitionerUserId;
|
private Long jzPractitionerUserId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 病历号
|
||||||
|
*/
|
||||||
|
private String busNo;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -170,4 +170,9 @@ public class RequestBaseDto {
|
|||||||
*/
|
*/
|
||||||
private Integer sortNumber;
|
private Integer sortNumber;
|
||||||
|
|
||||||
|
/** 用药说明 */
|
||||||
|
@Dict(dictCode = "dosage_instruction")
|
||||||
|
private String dosageInstruction;
|
||||||
|
private String dosageInstruction_dictText;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,7 +26,6 @@ public interface DoctorStationAdviceAppMapper {
|
|||||||
* @param medicationTableName 药品定义表名
|
* @param medicationTableName 药品定义表名
|
||||||
* @param deviceTableName 耗材定义表名
|
* @param deviceTableName 耗材定义表名
|
||||||
* @param activityTableName 诊疗定义表名
|
* @param activityTableName 诊疗定义表名
|
||||||
* @param singleUse 单次消耗类 (耗材只查这类)
|
|
||||||
* @param pricingFlag 划价标记
|
* @param pricingFlag 划价标记
|
||||||
* @param adviceDefinitionIdParamList 医嘱定义id参数集合
|
* @param adviceDefinitionIdParamList 医嘱定义id参数集合
|
||||||
* @param adviceTypes 医嘱类型参数集合
|
* @param adviceTypes 医嘱类型参数集合
|
||||||
@@ -36,8 +35,7 @@ public interface DoctorStationAdviceAppMapper {
|
|||||||
IPage<AdviceBaseDto> getAdviceBaseInfo(@Param("page") Page<AdviceBaseDto> page,
|
IPage<AdviceBaseDto> getAdviceBaseInfo(@Param("page") Page<AdviceBaseDto> page,
|
||||||
@Param("statusEnum") Integer statusEnum, @Param("organizationId") Long organizationId,
|
@Param("statusEnum") Integer statusEnum, @Param("organizationId") Long organizationId,
|
||||||
@Param("medicationTableName") String medicationTableName, @Param("deviceTableName") String deviceTableName,
|
@Param("medicationTableName") String medicationTableName, @Param("deviceTableName") String deviceTableName,
|
||||||
@Param("activityTableName") String activityTableName, @Param("singleUse") String singleUse,
|
@Param("activityTableName") String activityTableName, @Param("pricingFlag") Integer pricingFlag,
|
||||||
@Param("pricingFlag") Integer pricingFlag,
|
|
||||||
@Param("adviceDefinitionIdParamList") List<Long> adviceDefinitionIdParamList,
|
@Param("adviceDefinitionIdParamList") List<Long> adviceDefinitionIdParamList,
|
||||||
@Param("adviceTypes") List<Integer> adviceTypes,
|
@Param("adviceTypes") List<Integer> adviceTypes,
|
||||||
@Param(Constants.WRAPPER) QueryWrapper<AdviceBaseDto> queryWrapper);
|
@Param(Constants.WRAPPER) QueryWrapper<AdviceBaseDto> queryWrapper);
|
||||||
@@ -76,6 +74,16 @@ public interface DoctorStationAdviceAppMapper {
|
|||||||
*/
|
*/
|
||||||
List<AdviceInventoryDto> getMedLocationConfig(@Param("organizationId") Long organizationId);
|
List<AdviceInventoryDto> getMedLocationConfig(@Param("organizationId") Long organizationId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询耗材的取药科室
|
||||||
|
*
|
||||||
|
* @param encounterId 就诊id
|
||||||
|
* @param distributionCategoryCode 发放编码(耗材)
|
||||||
|
* @return 耗材的取药科室id
|
||||||
|
*/
|
||||||
|
Long getTakeDeviceLocationId(@Param("encounterId") Long encounterId,
|
||||||
|
@Param("distributionCategoryCode") String distributionCategoryCode);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询 费用定价子表
|
* 查询 费用定价子表
|
||||||
*
|
*
|
||||||
@@ -90,9 +98,11 @@ public interface DoctorStationAdviceAppMapper {
|
|||||||
* 查询 费用定价主表
|
* 查询 费用定价主表
|
||||||
*
|
*
|
||||||
* @param chargeItemDefinitionIdList 费用定价主表ID集合
|
* @param chargeItemDefinitionIdList 费用定价主表ID集合
|
||||||
|
* @param statusEnum 状态
|
||||||
* @return 费用定价子表
|
* @return 费用定价子表
|
||||||
*/
|
*/
|
||||||
List<AdvicePriceDto> getMainCharge(@Param("chargeItemDefinitionIdList") List<Long> chargeItemDefinitionIdList);
|
List<AdvicePriceDto> getMainCharge(@Param("chargeItemDefinitionIdList") List<Long> chargeItemDefinitionIdList,
|
||||||
|
@Param("statusEnum") Integer statusEnum);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询医嘱请求数据
|
* 查询医嘱请求数据
|
||||||
@@ -104,13 +114,14 @@ public interface DoctorStationAdviceAppMapper {
|
|||||||
* @param WOR_SERVICE_REQUEST 诊疗请求表名
|
* @param WOR_SERVICE_REQUEST 诊疗请求表名
|
||||||
* @param practitionerId 当前账号的参与者id
|
* @param practitionerId 当前账号的参与者id
|
||||||
* @param historyFlag 历史医嘱标记
|
* @param historyFlag 历史医嘱标记
|
||||||
|
* @param generateSourceEnum 生成来源
|
||||||
* @return 医嘱请求数据
|
* @return 医嘱请求数据
|
||||||
*/
|
*/
|
||||||
List<RequestBaseDto> getRequestBaseInfo(@Param("encounterId") Long encounterId, @Param("patientId") Long patientId,
|
List<RequestBaseDto> getRequestBaseInfo(@Param("encounterId") Long encounterId, @Param("patientId") Long patientId,
|
||||||
@Param("MED_MEDICATION_REQUEST") String MED_MEDICATION_REQUEST,
|
@Param("MED_MEDICATION_REQUEST") String MED_MEDICATION_REQUEST,
|
||||||
@Param("WOR_DEVICE_REQUEST") String WOR_DEVICE_REQUEST,
|
@Param("WOR_DEVICE_REQUEST") String WOR_DEVICE_REQUEST,
|
||||||
@Param("WOR_SERVICE_REQUEST") String WOR_SERVICE_REQUEST, @Param("practitionerId") Long practitionerId,
|
@Param("WOR_SERVICE_REQUEST") String WOR_SERVICE_REQUEST, @Param("practitionerId") Long practitionerId,
|
||||||
@Param("historyFlag") String historyFlag);
|
@Param("historyFlag") String historyFlag, @Param("generateSourceEnum") Integer generateSourceEnum);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询就诊费用性质
|
* 查询就诊费用性质
|
||||||
@@ -131,4 +142,15 @@ public interface DoctorStationAdviceAppMapper {
|
|||||||
List<ActivityBindDeviceDetailDto> getActivityBindDevice(@Param("activityId") String activityId,
|
List<ActivityBindDeviceDetailDto> getActivityBindDevice(@Param("activityId") String activityId,
|
||||||
@Param("status") Integer status, @Param("tableName") String tableName);
|
@Param("status") Integer status, @Param("tableName") String tableName);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询医嘱绑定信息
|
||||||
|
*
|
||||||
|
* @param typeCode 1:用法绑东西 2:诊疗绑东西
|
||||||
|
* @param status 状态
|
||||||
|
* @param itemNo 用法的code 或者 诊疗定义id
|
||||||
|
* @return 医嘱绑定信息
|
||||||
|
*/
|
||||||
|
List<OrderBindInfoDto> getOrderBindInfo(@Param("typeCode") String typeCode, @Param("status") Integer status,
|
||||||
|
@Param("itemNo") String itemNo);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,13 +32,14 @@ public interface DoctorStationChineseMedicalAppMapper {
|
|||||||
* @param WOR_SERVICE_REQUEST 诊疗请求表名
|
* @param WOR_SERVICE_REQUEST 诊疗请求表名
|
||||||
* @param practitionerId 当前账号的参与者id
|
* @param practitionerId 当前账号的参与者id
|
||||||
* @param historyFlag 历史医嘱标记
|
* @param historyFlag 历史医嘱标记
|
||||||
|
* @param generateSourceEnum 生成来源
|
||||||
* @return 中医医嘱请求数据
|
* @return 中医医嘱请求数据
|
||||||
*/
|
*/
|
||||||
List<RequestBaseDto> getTcmRequestBaseInfo(@Param("encounterId") Long encounterId,
|
List<RequestBaseDto> getTcmRequestBaseInfo(@Param("encounterId") Long encounterId,
|
||||||
@Param("patientId") Long patientId, @Param("MED_MEDICATION_REQUEST") String MED_MEDICATION_REQUEST,
|
@Param("patientId") Long patientId, @Param("MED_MEDICATION_REQUEST") String MED_MEDICATION_REQUEST,
|
||||||
@Param("WOR_DEVICE_REQUEST") String WOR_DEVICE_REQUEST,
|
@Param("WOR_DEVICE_REQUEST") String WOR_DEVICE_REQUEST,
|
||||||
@Param("WOR_SERVICE_REQUEST") String WOR_SERVICE_REQUEST, @Param("practitionerId") Long practitionerId,
|
@Param("WOR_SERVICE_REQUEST") String WOR_SERVICE_REQUEST, @Param("practitionerId") Long practitionerId,
|
||||||
@Param("historyFlag") String historyFlag);
|
@Param("historyFlag") String historyFlag, @Param("generateSourceEnum") Integer generateSourceEnum);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询中医医嘱历史请求数据
|
* 查询中医医嘱历史请求数据
|
||||||
@@ -50,13 +51,14 @@ public interface DoctorStationChineseMedicalAppMapper {
|
|||||||
* @param WOR_SERVICE_REQUEST 诊疗请求表名
|
* @param WOR_SERVICE_REQUEST 诊疗请求表名
|
||||||
* @param practitionerId 当前账号的参与者id
|
* @param practitionerId 当前账号的参与者id
|
||||||
* @param historyFlag 历史医嘱标记
|
* @param historyFlag 历史医嘱标记
|
||||||
|
* @param generateSourceEnum 生成来源
|
||||||
* @return 中医医嘱历史请求数据
|
* @return 中医医嘱历史请求数据
|
||||||
*/
|
*/
|
||||||
List<RequestBaseDto> getTcmRequestHistoryInfo(@Param("encounterId") Long encounterId,
|
List<RequestBaseDto> getTcmRequestHistoryInfo(@Param("encounterId") Long encounterId,
|
||||||
@Param("patientId") Long patientId, @Param("MED_MEDICATION_REQUEST") String MED_MEDICATION_REQUEST,
|
@Param("patientId") Long patientId, @Param("MED_MEDICATION_REQUEST") String MED_MEDICATION_REQUEST,
|
||||||
@Param("WOR_DEVICE_REQUEST") String WOR_DEVICE_REQUEST,
|
@Param("WOR_DEVICE_REQUEST") String WOR_DEVICE_REQUEST,
|
||||||
@Param("WOR_SERVICE_REQUEST") String WOR_SERVICE_REQUEST, @Param("practitionerId") Long practitionerId,
|
@Param("WOR_SERVICE_REQUEST") String WOR_SERVICE_REQUEST, @Param("practitionerId") Long practitionerId,
|
||||||
@Param("historyFlag") String historyFlag);
|
@Param("historyFlag") String historyFlag, @Param("generateSourceEnum") Integer generateSourceEnum);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询中医诊断id集合
|
* 查询中医诊断id集合
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package com.openhis.web.doctorstation.utils;
|
|||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.math.RoundingMode;
|
import java.math.RoundingMode;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@@ -9,25 +10,23 @@ import javax.annotation.Resource;
|
|||||||
|
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
||||||
import com.core.common.utils.AssignSeqUtil;
|
import com.core.common.utils.AssignSeqUtil;
|
||||||
import com.core.common.utils.SecurityUtils;
|
import com.core.common.utils.SecurityUtils;
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
import com.fasterxml.jackson.core.type.TypeReference;
|
import com.fasterxml.jackson.core.type.TypeReference;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
|
import com.fasterxml.jackson.databind.SerializationFeature;
|
||||||
|
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
|
||||||
import com.openhis.administration.domain.ChargeItem;
|
import com.openhis.administration.domain.ChargeItem;
|
||||||
import com.openhis.administration.service.IChargeItemService;
|
import com.openhis.administration.service.IChargeItemService;
|
||||||
import com.openhis.common.constant.CommonConstants;
|
import com.openhis.common.constant.CommonConstants;
|
||||||
import com.openhis.common.enums.*;
|
import com.openhis.common.enums.*;
|
||||||
import com.openhis.medication.domain.MedicationRequest;
|
|
||||||
import com.openhis.web.chargemanage.mapper.OutpatientRegistrationAppMapper;
|
import com.openhis.web.chargemanage.mapper.OutpatientRegistrationAppMapper;
|
||||||
import com.openhis.web.datadictionary.dto.ActivityChildJsonDto;
|
import com.openhis.web.datadictionary.dto.ActivityChildJsonDto;
|
||||||
import com.openhis.web.doctorstation.appservice.IDoctorStationAdviceAppService;
|
import com.openhis.web.doctorstation.appservice.IDoctorStationAdviceAppService;
|
||||||
import com.openhis.web.doctorstation.dto.*;
|
import com.openhis.web.doctorstation.dto.*;
|
||||||
import com.openhis.web.doctorstation.mapper.DoctorStationAdviceAppMapper;
|
import com.openhis.web.doctorstation.mapper.DoctorStationAdviceAppMapper;
|
||||||
import com.openhis.web.inhospitalnursestation.dto.MedicationRequestUseExe;
|
import com.openhis.web.inhospitalnursestation.dto.MedicationRequestUseExe;
|
||||||
import com.openhis.web.personalization.dto.ActivityDeviceDto;
|
|
||||||
import com.openhis.workflow.domain.DeviceRequest;
|
|
||||||
import com.openhis.workflow.domain.ServiceRequest;
|
import com.openhis.workflow.domain.ServiceRequest;
|
||||||
import com.openhis.workflow.service.IActivityDefinitionService;
|
import com.openhis.workflow.service.IActivityDefinitionService;
|
||||||
import com.openhis.workflow.service.IDeviceDispenseService;
|
import com.openhis.workflow.service.IDeviceDispenseService;
|
||||||
@@ -207,236 +206,6 @@ public class AdviceUtils {
|
|||||||
}).collect(Collectors.toList());
|
}).collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 药品请求为皮试或输液,开立对应的请求及账单
|
|
||||||
*/
|
|
||||||
public void generateActRequestByMedicationFlag(MedicationRequest medicationRequest, Long organizationId,
|
|
||||||
AdviceSaveDto adviceSaveDto) {
|
|
||||||
// 当前登录账号的科室id
|
|
||||||
Long orgId = SecurityUtils.getLoginUser().getOrgId();
|
|
||||||
// 皮试
|
|
||||||
boolean isSkinTest = Whether.YES.getValue().equals(medicationRequest.getSkinTestFlag());
|
|
||||||
// 输液
|
|
||||||
boolean isInfusion = Whether.YES.getValue().equals(medicationRequest.getInfusionFlag());
|
|
||||||
// 当前时间
|
|
||||||
Date curDate = new Date();
|
|
||||||
AdviceBaseDto adviceBaseDto;
|
|
||||||
ServiceRequest serviceRequest;
|
|
||||||
AdviceBaseDto activityAdviceBaseDto;
|
|
||||||
BigDecimal quantity;
|
|
||||||
ChargeItem chargeItem;
|
|
||||||
DeviceRequest deviceRequest;
|
|
||||||
// 生成皮试检查对应的请求和账单;生成皮试检查这个诊疗自身的请求,以及皮试检查诊疗绑定的耗材(包括发放)
|
|
||||||
if (isSkinTest) {
|
|
||||||
quantity = new BigDecimal("1"); // 请求数量
|
|
||||||
// 皮试检查的诊疗定义id
|
|
||||||
Long skinTestInspectionDefinitionId = iActivityDefinitionService
|
|
||||||
.getAppointActivityDefinitionId(CommonConstants.BusinessName.SKIN_TEST_INSPECTION);
|
|
||||||
if (skinTestInspectionDefinitionId != null) {
|
|
||||||
adviceBaseDto = new AdviceBaseDto();
|
|
||||||
adviceBaseDto.setAdviceDefinitionId(skinTestInspectionDefinitionId); // 医嘱定义id
|
|
||||||
// 对应的诊疗医嘱信息
|
|
||||||
activityAdviceBaseDto = iDoctorStationAdviceAppService.getAdviceBaseInfo(adviceBaseDto, null, null,
|
|
||||||
null, organizationId, 1, 1, Whether.NO.getValue(), List.of(1, 2, 3)).getRecords().get(0);
|
|
||||||
if (activityAdviceBaseDto != null) {
|
|
||||||
// 费用定价
|
|
||||||
AdvicePriceDto advicePriceDto = activityAdviceBaseDto.getPriceList().get(0);
|
|
||||||
if (advicePriceDto != null) {
|
|
||||||
// 生成诊疗请求,用于收费
|
|
||||||
serviceRequest = new ServiceRequest();
|
|
||||||
serviceRequest.setStatusEnum(RequestStatus.DRAFT.getValue());// 请求状态
|
|
||||||
serviceRequest.setBusNo(assignSeqUtil.getSeqByDay(AssignSeqEnum.SERVICE_RES_NO.getPrefix(), 4));
|
|
||||||
serviceRequest.setQuantity(quantity); // 请求数量
|
|
||||||
serviceRequest.setUnitCode(activityAdviceBaseDto.getUnitCode()); // 请求单位编码
|
|
||||||
serviceRequest.setCategoryEnum(Integer.valueOf(activityAdviceBaseDto.getCategoryCode())); // 请求类型
|
|
||||||
serviceRequest.setActivityId(activityAdviceBaseDto.getAdviceDefinitionId());// 诊疗定义id
|
|
||||||
serviceRequest.setPatientId(medicationRequest.getPatientId()); // 患者
|
|
||||||
serviceRequest.setRequesterId(SecurityUtils.getLoginUser().getPractitionerId()); // 开方医生
|
|
||||||
serviceRequest.setEncounterId(medicationRequest.getEncounterId()); // 就诊id
|
|
||||||
serviceRequest.setAuthoredTime(curDate); // 请求签发时间
|
|
||||||
serviceRequest.setOrgId(organizationId); // 执行科室
|
|
||||||
serviceRequest.setConditionId(adviceSaveDto.getConditionId()); // 诊断id
|
|
||||||
serviceRequest.setEncounterDiagnosisId(adviceSaveDto.getEncounterDiagnosisId()); // 就诊诊断id
|
|
||||||
iServiceRequestService.save(serviceRequest);
|
|
||||||
// 生成账单
|
|
||||||
chargeItem = new ChargeItem();
|
|
||||||
chargeItem.setGenerateSourceEnum(ChargeItemGenerateSource.MEDICAL_ORDER_BINDING.getValue()); // 账单生成来源
|
|
||||||
chargeItem.setStatusEnum(ChargeItemStatus.DRAFT.getValue()); // 收费状态
|
|
||||||
chargeItem.setBusNo(AssignSeqEnum.CHARGE_ITEM_NO.getPrefix().concat(serviceRequest.getBusNo()));
|
|
||||||
chargeItem.setPatientId(medicationRequest.getPatientId()); // 患者
|
|
||||||
chargeItem.setContextEnum(ChargeItemContext.ACTIVITY.getValue()); // 类型
|
|
||||||
chargeItem.setEncounterId(medicationRequest.getEncounterId()); // 就诊id
|
|
||||||
chargeItem.setDefinitionId(advicePriceDto.getDefinitionId()); // 费用定价ID
|
|
||||||
chargeItem.setEntererId(SecurityUtils.getLoginUser().getPractitionerId());// 开立人ID
|
|
||||||
chargeItem.setRequestingOrgId(orgId); // 开立科室
|
|
||||||
chargeItem.setEnteredDate(curDate); // 开立时间
|
|
||||||
chargeItem.setServiceTable(CommonConstants.TableName.WOR_SERVICE_REQUEST);// 医疗服务类型
|
|
||||||
chargeItem.setServiceId(serviceRequest.getId()); // 医疗服务ID
|
|
||||||
chargeItem.setProductTable(activityAdviceBaseDto.getAdviceTableName());// 产品所在表
|
|
||||||
chargeItem.setProductId(activityAdviceBaseDto.getAdviceDefinitionId());// 收费项id
|
|
||||||
chargeItem.setAccountId(adviceSaveDto.getAccountId());// 关联账户ID
|
|
||||||
chargeItem.setConditionId(adviceSaveDto.getConditionId()); // 诊断id
|
|
||||||
chargeItem.setEncounterDiagnosisId(adviceSaveDto.getEncounterDiagnosisId()); // 就诊诊断id
|
|
||||||
|
|
||||||
chargeItem.setQuantityValue(quantity); // 数量
|
|
||||||
chargeItem.setQuantityUnit(activityAdviceBaseDto.getUnitCode()); // 单位
|
|
||||||
chargeItem.setUnitPrice(advicePriceDto.getPrice()); // 单价
|
|
||||||
// 计算总价,保留4位小数
|
|
||||||
BigDecimal qty = quantity;
|
|
||||||
chargeItem
|
|
||||||
.setTotalPrice(qty.multiply(advicePriceDto.getPrice()).setScale(4, RoundingMode.HALF_UP)); // 总价
|
|
||||||
iChargeItemService.save(chargeItem);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// 查询皮试检查绑定的耗材id及请求数量
|
|
||||||
List<ActivityDeviceDto> tmpActivityList = outpatientRegistrationAppMapper.getTmpActivityList(
|
|
||||||
String.valueOf(skinTestInspectionDefinitionId), CommonConstants.TableName.ADM_DEVICE_DEFINITION);
|
|
||||||
for (ActivityDeviceDto activityDeviceDto : tmpActivityList) {
|
|
||||||
quantity = activityDeviceDto.getQuantity(); // 请求数量
|
|
||||||
adviceBaseDto = new AdviceBaseDto();
|
|
||||||
adviceBaseDto.setAdviceDefinitionId(activityDeviceDto.getDevActId());
|
|
||||||
// 对应的耗材医嘱信息
|
|
||||||
activityAdviceBaseDto = iDoctorStationAdviceAppService.getAdviceBaseInfo(adviceBaseDto, null, null,
|
|
||||||
null, organizationId, 1, 1, Whether.NO.getValue(), List.of(1, 2, 3)).getRecords().get(0);
|
|
||||||
// 库存信息
|
|
||||||
AdviceInventoryDto adviceInventoryDto = activityAdviceBaseDto.getInventoryList().get(0);
|
|
||||||
// 价格信息
|
|
||||||
AdvicePriceDto advicePriceDto = activityAdviceBaseDto.getPriceList().get(0);
|
|
||||||
if (adviceInventoryDto != null && advicePriceDto != null) {
|
|
||||||
// 耗材请求
|
|
||||||
deviceRequest = new DeviceRequest();
|
|
||||||
deviceRequest.setStatusEnum(RequestStatus.DRAFT.getValue()); // 请求状态
|
|
||||||
deviceRequest.setBusNo(assignSeqUtil.getSeqByDay(AssignSeqEnum.DEVICE_RES_NO.getPrefix(), 4));
|
|
||||||
deviceRequest.setQuantity(quantity); // 请求数量
|
|
||||||
deviceRequest.setUnitCode(activityAdviceBaseDto.getUnitCode()); // 请求单位编码
|
|
||||||
deviceRequest.setLotNumber(adviceInventoryDto.getLotNumber());// 产品批号
|
|
||||||
deviceRequest.setCategoryEnum(Integer.valueOf(activityAdviceBaseDto.getCategoryCode())); // 请求类型
|
|
||||||
deviceRequest.setDeviceDefId(activityAdviceBaseDto.getAdviceDefinitionId());// 耗材定义id
|
|
||||||
deviceRequest.setPatientId(medicationRequest.getPatientId()); // 患者
|
|
||||||
deviceRequest.setRequesterId(SecurityUtils.getLoginUser().getPractitionerId()); // 开方医生
|
|
||||||
deviceRequest.setOrgId(organizationId);// 开方人科室
|
|
||||||
deviceRequest.setReqAuthoredTime(curDate); // 请求开始时间
|
|
||||||
// 发放耗材房
|
|
||||||
deviceRequest.setPerformLocation(activityAdviceBaseDto.getLocationId());
|
|
||||||
deviceRequest.setEncounterId(medicationRequest.getEncounterId()); // 就诊id
|
|
||||||
deviceRequest.setConditionId(adviceSaveDto.getConditionId()); // 诊断id
|
|
||||||
deviceRequest.setEncounterDiagnosisId(adviceSaveDto.getEncounterDiagnosisId()); // 就诊诊断id
|
|
||||||
iDeviceRequestService.save(deviceRequest);
|
|
||||||
// 耗材发放
|
|
||||||
iDeviceDispenseService.handleDeviceDispense(deviceRequest, DbOpType.INSERT.getCode());
|
|
||||||
// 耗材账单
|
|
||||||
chargeItem = new ChargeItem();
|
|
||||||
chargeItem.setGenerateSourceEnum(ChargeItemGenerateSource.MEDICAL_ORDER_BINDING.getValue()); // 账单生成来源
|
|
||||||
chargeItem.setStatusEnum(ChargeItemStatus.DRAFT.getValue()); // 收费状态
|
|
||||||
chargeItem.setBusNo(AssignSeqEnum.CHARGE_ITEM_NO.getPrefix().concat(deviceRequest.getBusNo()));
|
|
||||||
chargeItem.setPatientId(medicationRequest.getPatientId()); // 患者
|
|
||||||
chargeItem.setContextEnum(ChargeItemContext.DEVICE.getValue()); // 类型
|
|
||||||
chargeItem.setEncounterId(medicationRequest.getEncounterId()); // 就诊id
|
|
||||||
chargeItem.setDefinitionId(advicePriceDto.getDefinitionId()); // 费用定价ID
|
|
||||||
chargeItem.setDefDetailId(advicePriceDto.getDefinitionDetailId()); // 定价子表主键
|
|
||||||
chargeItem.setEntererId(SecurityUtils.getLoginUser().getPractitionerId());// 开立人ID
|
|
||||||
chargeItem.setEnteredDate(curDate); // 开立时间
|
|
||||||
chargeItem.setServiceTable(CommonConstants.TableName.WOR_DEVICE_REQUEST);// 医疗服务类型
|
|
||||||
chargeItem.setServiceId(deviceRequest.getId()); // 医疗服务ID
|
|
||||||
chargeItem.setProductTable(activityAdviceBaseDto.getAdviceTableName());// 产品所在表
|
|
||||||
chargeItem.setProductId(activityAdviceBaseDto.getAdviceDefinitionId());// 收费项id
|
|
||||||
chargeItem.setAccountId(adviceSaveDto.getAccountId());// 关联账户ID
|
|
||||||
chargeItem.setConditionId(adviceSaveDto.getConditionId()); // 诊断id
|
|
||||||
chargeItem.setEncounterDiagnosisId(adviceSaveDto.getEncounterDiagnosisId()); // 就诊诊断id
|
|
||||||
|
|
||||||
chargeItem.setQuantityValue(quantity); // 数量
|
|
||||||
chargeItem.setQuantityUnit(activityAdviceBaseDto.getUnitCode()); // 单位
|
|
||||||
chargeItem.setUnitPrice(advicePriceDto.getPrice()); // 单价
|
|
||||||
// 计算总价,保留4位小数
|
|
||||||
BigDecimal qty = quantity;
|
|
||||||
chargeItem
|
|
||||||
.setTotalPrice(qty.multiply(advicePriceDto.getPrice()).setScale(4, RoundingMode.HALF_UP)); // 总价
|
|
||||||
iChargeItemService.save(chargeItem);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// 生成用法(输液)绑定的诊疗对应的请求和账单
|
|
||||||
if (isInfusion) {
|
|
||||||
// 分组id
|
|
||||||
Long groupId = medicationRequest.getGroupId();
|
|
||||||
// 执行次数
|
|
||||||
Integer executeNum = medicationRequest.getExecuteNum();
|
|
||||||
// 用法
|
|
||||||
String methodCode = medicationRequest.getMethodCode();
|
|
||||||
// 查询用法绑定的诊疗信息
|
|
||||||
List<ActivityDeviceDto> tmpActivityList = outpatientRegistrationAppMapper.getTmpActivityList(methodCode,
|
|
||||||
CommonConstants.TableName.WOR_ACTIVITY_DEFINITION);
|
|
||||||
for (ActivityDeviceDto activityDeviceDto : tmpActivityList) {
|
|
||||||
quantity = activityDeviceDto.getQuantity().multiply(new BigDecimal(executeNum)); // 请求数量
|
|
||||||
adviceBaseDto = new AdviceBaseDto();
|
|
||||||
adviceBaseDto.setAdviceDefinitionId(activityDeviceDto.getDevActId());
|
|
||||||
// 对应的诊疗医嘱信息
|
|
||||||
activityAdviceBaseDto = iDoctorStationAdviceAppService.getAdviceBaseInfo(adviceBaseDto, null, null,
|
|
||||||
null, organizationId, 1, 1, Whether.NO.getValue(), List.of(1, 2, 3)).getRecords().get(0);
|
|
||||||
if (activityAdviceBaseDto != null) {
|
|
||||||
// 费用定价
|
|
||||||
AdvicePriceDto advicePriceDto = activityAdviceBaseDto.getPriceList().get(0);
|
|
||||||
if (advicePriceDto != null) {
|
|
||||||
// 本次就诊,绑定的诊疗不重复带
|
|
||||||
ServiceRequest one = iServiceRequestService.getOne(new LambdaQueryWrapper<ServiceRequest>()
|
|
||||||
.eq(ServiceRequest::getEncounterId, medicationRequest.getEncounterId())
|
|
||||||
.eq(ServiceRequest::getActivityId, activityAdviceBaseDto.getAdviceDefinitionId()));
|
|
||||||
if (one == null) {
|
|
||||||
// 生成诊疗请求
|
|
||||||
serviceRequest = new ServiceRequest();
|
|
||||||
serviceRequest.setStatusEnum(RequestStatus.DRAFT.getValue());// 请求状态
|
|
||||||
serviceRequest
|
|
||||||
.setBusNo(assignSeqUtil.getSeqByDay(AssignSeqEnum.SERVICE_RES_NO.getPrefix(), 4));
|
|
||||||
serviceRequest.setQuantity(quantity); // 请求数量
|
|
||||||
serviceRequest.setUnitCode(activityAdviceBaseDto.getUnitCode()); // 请求单位编码
|
|
||||||
serviceRequest.setCategoryEnum(Integer.valueOf(activityAdviceBaseDto.getCategoryCode())); // 请求类型
|
|
||||||
serviceRequest.setActivityId(activityAdviceBaseDto.getAdviceDefinitionId());// 诊疗定义id
|
|
||||||
serviceRequest.setPatientId(medicationRequest.getPatientId()); // 患者
|
|
||||||
serviceRequest.setRequesterId(SecurityUtils.getLoginUser().getPractitionerId()); // 开方医生
|
|
||||||
serviceRequest.setEncounterId(medicationRequest.getEncounterId()); // 就诊id
|
|
||||||
serviceRequest.setAuthoredTime(curDate); // 请求签发时间
|
|
||||||
serviceRequest.setOrgId(organizationId); // 执行科室
|
|
||||||
serviceRequest.setGroupId(groupId); // 分组id
|
|
||||||
serviceRequest.setConditionId(adviceSaveDto.getConditionId()); // 诊断id
|
|
||||||
serviceRequest.setEncounterDiagnosisId(adviceSaveDto.getEncounterDiagnosisId()); // 就诊诊断id
|
|
||||||
iServiceRequestService.save(serviceRequest);
|
|
||||||
|
|
||||||
chargeItem = new ChargeItem();
|
|
||||||
chargeItem.setGenerateSourceEnum(ChargeItemGenerateSource.MEDICAL_ORDER_BINDING.getValue()); // 账单生成来源
|
|
||||||
chargeItem.setStatusEnum(ChargeItemStatus.DRAFT.getValue()); // 收费状态
|
|
||||||
chargeItem
|
|
||||||
.setBusNo(AssignSeqEnum.CHARGE_ITEM_NO.getPrefix().concat(serviceRequest.getBusNo()));
|
|
||||||
chargeItem.setPatientId(medicationRequest.getPatientId()); // 患者
|
|
||||||
chargeItem.setContextEnum(ChargeItemContext.ACTIVITY.getValue()); // 类型
|
|
||||||
chargeItem.setEncounterId(medicationRequest.getEncounterId()); // 就诊id
|
|
||||||
chargeItem.setDefinitionId(advicePriceDto.getDefinitionId()); // 费用定价ID
|
|
||||||
chargeItem.setEntererId(SecurityUtils.getLoginUser().getPractitionerId());// 开立人ID
|
|
||||||
chargeItem.setRequestingOrgId(orgId); // 开立科室
|
|
||||||
chargeItem.setEnteredDate(curDate); // 开立时间
|
|
||||||
chargeItem.setServiceTable(CommonConstants.TableName.WOR_SERVICE_REQUEST);// 医疗服务类型
|
|
||||||
chargeItem.setServiceId(serviceRequest.getId()); // 医疗服务ID
|
|
||||||
chargeItem.setProductTable(activityAdviceBaseDto.getAdviceTableName());// 产品所在表
|
|
||||||
chargeItem.setProductId(activityAdviceBaseDto.getAdviceDefinitionId());// 收费项id
|
|
||||||
chargeItem.setAccountId(adviceSaveDto.getAccountId());// 关联账户ID
|
|
||||||
chargeItem.setConditionId(adviceSaveDto.getConditionId()); // 诊断id
|
|
||||||
chargeItem.setEncounterDiagnosisId(adviceSaveDto.getEncounterDiagnosisId()); // 就诊诊断id
|
|
||||||
|
|
||||||
chargeItem.setQuantityValue(quantity); // 数量
|
|
||||||
chargeItem.setQuantityUnit(activityAdviceBaseDto.getUnitCode()); // 单位
|
|
||||||
chargeItem.setUnitPrice(advicePriceDto.getPrice()); // 单价
|
|
||||||
// 计算总价,保留4位小数
|
|
||||||
BigDecimal qty = quantity;
|
|
||||||
chargeItem.setTotalPrice(
|
|
||||||
qty.multiply(advicePriceDto.getPrice()).setScale(4, RoundingMode.HALF_UP)); // 总价
|
|
||||||
iChargeItemService.saveOrUpdate(chargeItem);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 处理诊疗子项信息
|
* 处理诊疗子项信息
|
||||||
*
|
*
|
||||||
@@ -451,6 +220,11 @@ public class AdviceUtils {
|
|||||||
// 当前登录账号的科室id
|
// 当前登录账号的科室id
|
||||||
Long orgId = SecurityUtils.getLoginUser().getOrgId();
|
Long orgId = SecurityUtils.getLoginUser().getOrgId();
|
||||||
ObjectMapper objectMapper = new ObjectMapper();
|
ObjectMapper objectMapper = new ObjectMapper();
|
||||||
|
// 注册 JavaTimeModule
|
||||||
|
objectMapper.registerModule(new JavaTimeModule());
|
||||||
|
objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
|
||||||
|
objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// 将JSON字符串转换为List<ActivityChildJsonDto>
|
// 将JSON字符串转换为List<ActivityChildJsonDto>
|
||||||
List<ActivityChildJsonDto> activityChildJsonDtoList =
|
List<ActivityChildJsonDto> activityChildJsonDtoList =
|
||||||
@@ -481,6 +255,7 @@ public class AdviceUtils {
|
|||||||
serviceRequest = new ServiceRequest();
|
serviceRequest = new ServiceRequest();
|
||||||
serviceRequest.setStatusEnum(RequestStatus.DRAFT.getValue());// 请求状态
|
serviceRequest.setStatusEnum(RequestStatus.DRAFT.getValue());// 请求状态
|
||||||
serviceRequest.setBusNo(assignSeqUtil.getSeqByDay(AssignSeqEnum.SERVICE_RES_NO.getPrefix(), 4));
|
serviceRequest.setBusNo(assignSeqUtil.getSeqByDay(AssignSeqEnum.SERVICE_RES_NO.getPrefix(), 4));
|
||||||
|
serviceRequest.setGenerateSourceEnum(GenerateSource.DOCTOR_PRESCRIPTION.getValue()); // 生成来源
|
||||||
serviceRequest.setQuantity(quantity); // 请求数量
|
serviceRequest.setQuantity(quantity); // 请求数量
|
||||||
serviceRequest.setUnitCode(activityAdviceBaseDto.getUnitCode()); // 请求单位编码
|
serviceRequest.setUnitCode(activityAdviceBaseDto.getUnitCode()); // 请求单位编码
|
||||||
serviceRequest.setCategoryEnum(Integer.valueOf(activityAdviceBaseDto.getCategoryCode())); // 请求类型
|
serviceRequest.setCategoryEnum(Integer.valueOf(activityAdviceBaseDto.getCategoryCode())); // 请求类型
|
||||||
@@ -498,10 +273,11 @@ public class AdviceUtils {
|
|||||||
if (TherapyTimeType.TEMPORARY.getValue().equals(therapyEnum)) {
|
if (TherapyTimeType.TEMPORARY.getValue().equals(therapyEnum)) {
|
||||||
// 生成账单
|
// 生成账单
|
||||||
chargeItem = new ChargeItem();
|
chargeItem = new ChargeItem();
|
||||||
chargeItem.setGenerateSourceEnum(ChargeItemGenerateSource.MEDICAL_ORDER_BINDING.getValue());
|
chargeItem.setGenerateSourceEnum(GenerateSource.DOCTOR_PRESCRIPTION.getValue());
|
||||||
chargeItem.setStatusEnum(ChargeItemStatus.DRAFT.getValue()); // 收费状态
|
chargeItem.setStatusEnum(ChargeItemStatus.DRAFT.getValue()); // 收费状态
|
||||||
chargeItem
|
chargeItem
|
||||||
.setBusNo(AssignSeqEnum.CHARGE_ITEM_NO.getPrefix().concat(serviceRequest.getBusNo()));
|
.setBusNo(AssignSeqEnum.CHARGE_ITEM_NO.getPrefix().concat(serviceRequest.getBusNo()));
|
||||||
|
chargeItem.setGenerateSourceEnum(GenerateSource.DOCTOR_PRESCRIPTION.getValue()); // 生成来源
|
||||||
chargeItem.setPatientId(activityChildrenJsonParams.getPatientId()); // 患者
|
chargeItem.setPatientId(activityChildrenJsonParams.getPatientId()); // 患者
|
||||||
chargeItem.setContextEnum(ChargeItemContext.ACTIVITY.getValue()); // 类型
|
chargeItem.setContextEnum(ChargeItemContext.ACTIVITY.getValue()); // 类型
|
||||||
chargeItem.setEncounterId(activityChildrenJsonParams.getEncounterId()); // 就诊id
|
chargeItem.setEncounterId(activityChildrenJsonParams.getEncounterId()); // 就诊id
|
||||||
@@ -521,7 +297,7 @@ public class AdviceUtils {
|
|||||||
// 计算总价,保留4位小数
|
// 计算总价,保留4位小数
|
||||||
BigDecimal qty = quantity;
|
BigDecimal qty = quantity;
|
||||||
chargeItem.setTotalPrice(
|
chargeItem.setTotalPrice(
|
||||||
qty.multiply(advicePriceDto.getPrice()).setScale(4, RoundingMode.HALF_UP)); // 总价
|
qty.multiply(advicePriceDto.getPrice()).setScale(6, RoundingMode.HALF_UP)); // 总价
|
||||||
chargeItemList.add(chargeItem);
|
chargeItemList.add(chargeItem);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ import com.openhis.administration.domain.Practitioner;
|
|||||||
import com.openhis.administration.service.IOrganizationService;
|
import com.openhis.administration.service.IOrganizationService;
|
||||||
import com.openhis.administration.service.IPatientService;
|
import com.openhis.administration.service.IPatientService;
|
||||||
import com.openhis.administration.service.IPractitionerService;
|
import com.openhis.administration.service.IPractitionerService;
|
||||||
import com.openhis.common.enums.ActivityDefCategory;
|
import com.openhis.common.enums.ActivityType;
|
||||||
import com.openhis.common.enums.AdministrativeGender;
|
import com.openhis.common.enums.AdministrativeGender;
|
||||||
import com.openhis.crosssystem.dto.LisApplyDto;
|
import com.openhis.crosssystem.dto.LisApplyDto;
|
||||||
import com.openhis.crosssystem.dto.LisApplyGroupDto;
|
import com.openhis.crosssystem.dto.LisApplyGroupDto;
|
||||||
@@ -32,7 +32,7 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
/**
|
/**
|
||||||
* 跨系统发送申请工具类
|
* 跨系统发送申请工具类
|
||||||
*
|
*
|
||||||
* @author GuoRui
|
* @author Thanking
|
||||||
* @date 2025-06-27
|
* @date 2025-06-27
|
||||||
*/
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@@ -93,7 +93,7 @@ public class DoctorStationSendApplyUtil {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 检验,发送LIS申请
|
// 检验,发送LIS申请
|
||||||
if (ActivityDefCategory.PROOF.getCode().equals(activityDefinition.getCategoryCode())) {
|
if (ActivityType.PROOF.getValue().equals(activityDefinition.getTypeEnum())) {
|
||||||
// LIS性别转换
|
// LIS性别转换
|
||||||
LisPatientSex lisPatientSex;
|
LisPatientSex lisPatientSex;
|
||||||
if (patient.getGenderEnum() == null) {
|
if (patient.getGenderEnum() == null) {
|
||||||
@@ -122,7 +122,7 @@ public class DoctorStationSendApplyUtil {
|
|||||||
crossSystemSendApplyUtil.sendApplyToLis(lisApplyDto);
|
crossSystemSendApplyUtil.sendApplyToLis(lisApplyDto);
|
||||||
|
|
||||||
// 检查,发送PACS申请
|
// 检查,发送PACS申请
|
||||||
} else if (ActivityDefCategory.TEST.getCode().equals(activityDefinition.getCategoryCode())) {
|
} else if (ActivityType.TEST.getValue().equals(activityDefinition.getTypeEnum())) {
|
||||||
// PACS性别转换
|
// PACS性别转换
|
||||||
PacsPatientSex pacsPatientSex;
|
PacsPatientSex pacsPatientSex;
|
||||||
if (patient.getGenderEnum() == null) {
|
if (patient.getGenderEnum() == null) {
|
||||||
@@ -152,5 +152,4 @@ public class DoctorStationSendApplyUtil {
|
|||||||
crossSystemSendApplyUtil.sendApplyToPacs(pacsApplyDto);
|
crossSystemSendApplyUtil.sendApplyToPacs(pacsApplyDto);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -70,11 +70,80 @@ public class PrescriptionUtils {
|
|||||||
allGroups.forEach(group -> {
|
allGroups.forEach(group -> {
|
||||||
finalGroups.addAll(splitByPriceLimit(group));
|
finalGroups.addAll(splitByPriceLimit(group));
|
||||||
});
|
});
|
||||||
// 2.5 分配处方号
|
|
||||||
assignPrescriptionNumbers(finalGroups, pharmaGroup.get(0).getPharmacologyCategoryCode());
|
/**
|
||||||
|
* 如下文字适用 2.5 前提条件: 当 groupedMedicines 和 ungroupedMedicines都不为空的情况下 可以得知 finalGroups
|
||||||
|
* 的size至少是2(有组号的集合,无组号的集合) 假设有组号的集合为 groupList1 (也可能还有groupList2,groupList3 ...) 假设无组号的集合为 noGroupList1
|
||||||
|
* (也可能还有noGroupList2,noGroupList3 ...) 注意:上述的groupList1和noGroupList1只是为了方便描述finalGroups的组成部分,实际并不存在这样的变量
|
||||||
|
*
|
||||||
|
* 需求:对finalGroups的数据结构进行重新整合(groupList1,groupList2,groupList3,noGroupList1,noGroupList2,noGroupList3
|
||||||
|
* 这些集合集合不可以被拆分) 当finalGroups里的集合size < MAX_SINGLE_PRESCRIPTION_NUM
|
||||||
|
* 时,groupList1,noGroupList1这些集合元素进行整合,保证每个重新组合的size依旧 <= MAX_SINGLE_PRESCRIPTION_NUM;
|
||||||
|
*/
|
||||||
|
|
||||||
|
// 2.5 重新整合小的分组(保持原有分组不被拆分)
|
||||||
|
List<List<AdviceSaveDto>> mergedGroups = mergeSmallGroups(finalGroups);
|
||||||
|
// 2.6 分配处方号
|
||||||
|
assignPrescriptionNumbers(mergedGroups, pharmaGroup.get(0).getPharmacologyCategoryCode());
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 合并小的分组(保持原有分组不被拆分)
|
||||||
|
*/
|
||||||
|
private List<List<AdviceSaveDto>> mergeSmallGroups(List<List<AdviceSaveDto>> groups) {
|
||||||
|
if (groups.size() <= 1) {
|
||||||
|
return groups;
|
||||||
|
}
|
||||||
|
List<List<AdviceSaveDto>> result = new ArrayList<>();
|
||||||
|
List<AdviceSaveDto> currentMergedGroup = new ArrayList<>();
|
||||||
|
for (List<AdviceSaveDto> group : groups) {
|
||||||
|
// 检查当前分组是否可以合并到现有组中
|
||||||
|
if (canMerge(currentMergedGroup, group)) {
|
||||||
|
currentMergedGroup.addAll(group);
|
||||||
|
} else {
|
||||||
|
// 如果不能合并,先保存当前合并组(如果不为空)
|
||||||
|
if (!currentMergedGroup.isEmpty()) {
|
||||||
|
result.add(new ArrayList<>(currentMergedGroup));
|
||||||
|
}
|
||||||
|
// 开始新的合并组
|
||||||
|
currentMergedGroup = new ArrayList<>(group);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 添加最后一个合并组
|
||||||
|
if (!currentMergedGroup.isEmpty()) {
|
||||||
|
result.add(currentMergedGroup);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 检查两个分组是否可以合并(合并后不超过最大限制)
|
||||||
|
*/
|
||||||
|
private boolean canMerge(List<AdviceSaveDto> currentGroup, List<AdviceSaveDto> newGroup) {
|
||||||
|
if (currentGroup.isEmpty()) {
|
||||||
|
return true; // 当前组合为空,可以直接添加
|
||||||
|
}
|
||||||
|
// 检查合并后的药品数量是否超过限制
|
||||||
|
int mergedSize = currentGroup.size() + newGroup.size();
|
||||||
|
if (mergedSize > MAX_SINGLE_PRESCRIPTION_NUM) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// 检查合并后的总金额是否超过限制
|
||||||
|
BigDecimal currentTotal = calculateTotalPrice(currentGroup);
|
||||||
|
BigDecimal newGroupTotal = calculateTotalPrice(newGroup);
|
||||||
|
BigDecimal mergedTotal = currentTotal.add(newGroupTotal);
|
||||||
|
return mergedTotal.compareTo(MAX_SINGLE_PRESCRIPTION_PRICE) <= 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 计算分组的总金额
|
||||||
|
*/
|
||||||
|
private BigDecimal calculateTotalPrice(List<AdviceSaveDto> medicines) {
|
||||||
|
return medicines.stream().map(medicine -> medicine.getUnitPrice().multiply(medicine.getQuantity()))
|
||||||
|
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 按药品种类上限拆分(仅用于无分组ID药品)
|
* 按药品种类上限拆分(仅用于无分组ID药品)
|
||||||
*/
|
*/
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user